From 60c31bf63747fc4068e6de30ab0225d29cd88385 Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Fri, 14 Mar 2025 16:22:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Ewebcad=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E5=8D=95=E5=AF=BC=E5=85=A5=EF=BC=9Acad=E6=8B=86=E5=8D=95?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=95=B0=E6=8D=AE=E7=A9=BA=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=A4=84=E7=90=86=E3=80=81=E4=BB=A3=E7=A0=81=E8=A7=84=E8=8C=83?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/plan/enums/ErrorCodeConstants.java | 12 ++- .../webcad/vo/WebCadDataOrderReqVO.java | 66 +-------------- .../factory/WebCadOrderImportFactory.java | 80 +++++++++++-------- 3 files changed, 54 insertions(+), 104 deletions(-) diff --git a/cf-module-prod-plan/cf-module-prod-plan-api/src/main/java/com/cf/imes/module/plan/enums/ErrorCodeConstants.java b/cf-module-prod-plan/cf-module-prod-plan-api/src/main/java/com/cf/imes/module/plan/enums/ErrorCodeConstants.java index 3028fc803..0ebe238cd 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-api/src/main/java/com/cf/imes/module/plan/enums/ErrorCodeConstants.java +++ b/cf-module-prod-plan/cf-module-prod-plan-api/src/main/java/com/cf/imes/module/plan/enums/ErrorCodeConstants.java @@ -12,11 +12,9 @@ public class ErrorCodeConstants { public static final ErrorCode ORDER_IMPORT_ORGANID_NOT_EXISTS = new ErrorCode(1_005_000_001, "不存在组织id,导入终止"); public static final ErrorCode ORDER_IMPORT_FAIL = new ErrorCode(1_005_000_002, "导入失败"); public static final ErrorCode WEBCAD_ORDER_NOT_EXISTS_ERROR = new ErrorCode(1_005_000_004, "导入失败:生产单号【{}】不存在"); - public static final ErrorCode WEBCAD_ORDER_IMPORT_MATERIALS_EMPTY_ERROR = new ErrorCode(1_005_000_005, "导入失败:板材对应列表不能为空"); - public static final ErrorCode WEBCAD_ORDER_IMPORT_ROOMBODY_EMPTY_ERROR = new ErrorCode(1_005_000_006, "导入失败:房间柜体列表不能为空"); - public static final ErrorCode WEBCAD_ORDER_IMPORT_ORGANID_EMPTY_ERROR = new ErrorCode(1_005_000_007, "导入失败:无法获取机构信息,请检查cadtoken是否配置正确"); - public static final ErrorCode WEBCAD_ORDER_IMPORT_FAILED = new ErrorCode(1_005_000_008, "导入失败:请检查拆单数据"); - public static final ErrorCode WEBCAD_ORDER_IMPORT_PLATE_NOT_EXIST_ERROR = new ErrorCode(1_005_000_009, "导入失败:板材对应失败,板材库中不存在对应板材【{}】"); - public static final ErrorCode WEBCAD_ORDER_IMPORT_SEAL_NOT_EXIST_ERROR = new ErrorCode(1_005_000_010, "导入失败:封边条对应失败,配件库中不存在对应封边条【{}】"); - public static final ErrorCode WEBCAD_ORDER_IMPORT_SAVEDATA_ERROR = new ErrorCode(1_005_000_011, "导入失败:数据保存异常,请检查拆单数据"); + public static final ErrorCode WEBCAD_ORDER_IMPORT_ORGANID_EMPTY_ERROR = new ErrorCode(1_005_000_005, "导入失败:无法获取机构信息,请检查cadtoken是否配置正确"); + public static final ErrorCode WEBCAD_ORDER_IMPORT_FAILED = new ErrorCode(1_005_000_006, "导入失败:请检查拆单数据"); + public static final ErrorCode WEBCAD_ORDER_IMPORT_PLATE_NOT_EXIST_ERROR = new ErrorCode(1_005_000_007, "导入失败:板材对应失败,板材库中不存在对应板材【{}】"); + public static final ErrorCode WEBCAD_ORDER_IMPORT_SEAL_NOT_EXIST_ERROR = new ErrorCode(1_005_000_008, "导入失败:封边条对应失败,配件库中不存在对应封边条【{}】"); + public static final ErrorCode WEBCAD_ORDER_IMPORT_SAVEDATA_ERROR = new ErrorCode(1_005_000_009, "导入失败:数据保存异常,请检查拆单数据"); } diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/controller/admin/orderImport/webcad/vo/WebCadDataOrderReqVO.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/controller/admin/orderImport/webcad/vo/WebCadDataOrderReqVO.java index bbaae200b..ee092d0eb 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/controller/admin/orderImport/webcad/vo/WebCadDataOrderReqVO.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/controller/admin/orderImport/webcad/vo/WebCadDataOrderReqVO.java @@ -3,14 +3,9 @@ package com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotNull; -import java.time.LocalDate; - -import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY; - /** * @author Gqr * @since 2025/3/3 17:40 @@ -22,65 +17,6 @@ public class WebCadDataOrderReqVO { * 生产单号 */ @JsonProperty(value = "OrderNo") + @NotNull(message = "生产单号不能为空") private String OrderNo; - - /** - * 自定义单号 - */ - @JsonProperty(value = "CustomOrderNo") - private String CustomOrderNo; - - /** - * 客户 - */ - @JsonProperty(value = "CustomName") - private String CustomName; - - /** - * 状态 - */ - @JsonProperty(value = "Status") - private int Status; - - /** - * 经销商 - */ - @JsonProperty(value = "SalePerson") - private String SalePerson; - - /** - * 订单日期 - */ - @JsonProperty(value = "OrderDate") - @NotNull(message = "订单日期不能为空") - private String OrderDate; - - /** - * 交付日期 - */ - @NotNull(message = "交付日期不能为空") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) - @JsonProperty(value = "DeliveryDate") - private LocalDate DeliveryDate; - - @JsonProperty(value = "Consigee") - private String Consigee; - - @JsonProperty(value = "ConsigeePhone") - private String ConsigeePhone; - - @JsonProperty(value = "ConsigeeAddress") - private String ConsigeeAddress; - - /** - * 拆单员 - */ - @JsonProperty(value = "Splitter") - private String Splitter; - - /** - * 备注 - */ - @JsonProperty(value = "Remark") - private String Remark; } diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/WebCadOrderImportFactory.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/WebCadOrderImportFactory.java index 2c7517243..2f949503a 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/WebCadOrderImportFactory.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/WebCadOrderImportFactory.java @@ -66,9 +66,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; -import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_MATERIALS_EMPTY_ERROR; import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_PLATE_NOT_EXIST_ERROR; -import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_ROOMBODY_EMPTY_ERROR; import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_SAVEDATA_ERROR; import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_SEAL_NOT_EXIST_ERROR; import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_NOT_EXISTS_ERROR; @@ -265,7 +263,7 @@ public class WebCadOrderImportFactory { */ private void analyzeMaterials(List materialReqVOS, List blockReqVOS) { if (CollUtil.isEmpty(materialReqVOS)) { - throw new ServiceException(WEBCAD_ORDER_IMPORT_MATERIALS_EMPTY_ERROR); + return; } for (WebCadDataMaterialReqVO materialReqVO : materialReqVOS) { String plateGoodsId = materialReqVO.getId(); @@ -411,7 +409,7 @@ public class WebCadOrderImportFactory { */ private void analyzeRoomBody(List douleRoomTree) { if (CollUtil.isEmpty(douleRoomTree)) { - throw new ServiceException(WEBCAD_ORDER_IMPORT_ROOMBODY_EMPTY_ERROR); + return; } for (WebCadDataDoubleRoomTreeReqVO room : douleRoomTree) { String roomName = room.getName(); @@ -432,6 +430,9 @@ public class WebCadOrderImportFactory { * @param blockList */ private void analyzeBlockList(List blockList) { + if (CollUtil.isEmpty(blockList)) { + return; + } // 基于房间名分组 Map> roomCollect = blockList.stream() .collect(Collectors.groupingBy(WebCadDataBlockReqVO::getRoomName, Collectors.toList())); @@ -643,8 +644,6 @@ public class WebCadOrderImportFactory { private void analyzeBlockProcessGroup(OrderBodyDO orderBodyDO, WebCadDataBlockReqVO block, Long plateId) { Long bodyId = orderBodyDO.getId(); Long roomId = orderBodyDO.getRoomId(); - String roomName = orderBodyDO.getRoomName(); - String bodyName = orderBodyDO.getName(); Boolean isSpecialShape = block.getIsSpecialShape(); List groupInfos = block.getGroupInfos(); @@ -728,7 +727,14 @@ public class WebCadOrderImportFactory { * @param parts */ private void analyzeParts(WebCadDataPartsReqVO parts) { + if (ObjectUtil.isNull(parts)) { + return; + } List blockObjectList = parts.getBlockObjectList(); + if (CollUtil.isEmpty(blockObjectList)) { + return; + } + // 配件对应列表 matchLeftEdge(parts, blockObjectList); @@ -756,21 +762,32 @@ public class WebCadOrderImportFactory { // 房间+柜体不在成倍缓存中, 再检查bodyMap, 再没有创建房间,缓存房间到bodyMap createPartsUnknownBody(roomId, roomName, bodyName, listBody); } else { - // 成倍数量 - Integer bodyMultipleNum = cadBody.getCount(); - for (int j = 0; j < bodyMultipleNum; j++) { - // 获取板材已经创建的柜体,缓存key:房间名+柜体名+成倍序号 - OrderBodyDO orderBodyDO = bodyMap.get(roomNameKey + j); - // 解析配件的加工组,创建对应的orderItem - for (WebCadDataPartsReqVO.BlockObjectListDTO part : listBody) { - analyzePartProcessGroup(orderBodyDO, part); - } - } + multipleCreateProcessGroup(cadBody, roomNameKey, listBody); } } }); } + /** + * 成倍创建配件加工组和item + * + * @param cadBody + * @param roomNameKey + * @param listBody + */ + private void multipleCreateProcessGroup(WebCadDataDoubleRoomTreeReqVO.ChildrenDTO cadBody, String roomNameKey, List listBody) { + // 成倍数量 + Integer bodyMultipleNum = cadBody.getCount(); + for (int j = 0; j < bodyMultipleNum; j++) { + // 获取板材已经创建的柜体,缓存key:房间名+柜体名+成倍序号 + OrderBodyDO orderBodyDO = bodyMap.get(roomNameKey + j); + // 解析配件的加工组,创建对应的orderItem + for (WebCadDataPartsReqVO.BlockObjectListDTO part : listBody) { + analyzePartProcessGroup(orderBodyDO, part); + } + } + } + /** * 创建不需要成倍的房间柜体以及其下的板件 * @@ -803,8 +820,6 @@ public class WebCadOrderImportFactory { private void analyzePartProcessGroup(OrderBodyDO orderBodyDO, WebCadDataPartsReqVO.BlockObjectListDTO part) { Long bodyId = orderBodyDO.getId(); Long roomId = orderBodyDO.getRoomId(); - String roomName = orderBodyDO.getRoomName(); - String bodyName = orderBodyDO.getName(); // 遍历加工组信息,生成对应的orderItem List groupInfos = part.getGroupInfos(); @@ -953,17 +968,17 @@ public class WebCadOrderImportFactory { .color(EMPTY_STRING) .category(type) .type(type) - .goodsId(StringUtils.isNotEmpty(goodsId) ? goodsId : EMPTY_STRING) + .goodsId(getEmpty(goodsId)) .length(NumberUtil.parseDouble(part.getHeight())) .width(NumberUtil.parseDouble(part.getWidth())) .thickness(NumberUtil.parseDouble(part.getThickness())) .isComposite(part.getIsComposite()) .name(part.getName()) .material(EMPTY_STRING) - .model(StringUtils.isNotEmpty(model) ? model : EMPTY_STRING) - .spec(StringUtils.isNotEmpty(spec) ? spec : EMPTY_STRING) - .brand(StringUtils.isNotEmpty(brand) ? brand : EMPTY_STRING) - .factory(StringUtils.isNotEmpty(factory) ? factory : EMPTY_STRING) + .model(getEmpty(model)) + .spec(getEmpty(spec)) + .brand(getEmpty(brand)) + .factory(getEmpty(factory)) .unit(part.getUnit()) .price(0.0) .subparts(EMPTY_STRING) @@ -1018,6 +1033,16 @@ public class WebCadOrderImportFactory { orderInfoBatchInsertWithinThreshold(orderPartsMapper, orderPartsDOS, true); } + /** + * value为空返回EMPTY_STRING + * + * @param value + * @return + */ + private String getEmpty(String value) { + return StringUtils.isNotEmpty(value) ? value : EMPTY_STRING; + } + /** * 配件对应 * @@ -1112,15 +1137,6 @@ public class WebCadOrderImportFactory { } } -// /** -// * 数据保存入库 -// */ -// private void saveData() { -// orderInfoBatchInsertWithinThreshold(orderBodyMapper, bodyMap.values().stream().toList(), true); -// orderInfoBatchInsertWithinThreshold(orderItemMapper, orderItemDOS, true); -// orderInfoBatchInsertWithinThreshold(orderGroupMapper, orderGroupDOS, true); -// } - /** * 数据保存入库