From 57f3fa6428cea7f9270dc69ec780581d1152efec Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Tue, 9 Jun 2026 17:31:12 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81xml=E5=AF=BC=E5=85=A5=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E4=BF=AE=E5=A4=8D=E5=8F=AF=E7=94=A8=EF=BC=9B2?= =?UTF-8?q?=E3=80=81=E6=9C=AA=E6=8E=92=E5=8D=95=E8=AE=A2=E5=8D=95=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E6=94=AF=E6=8C=81pageSize=3D-1=E7=9A=84=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=85=A8=E9=83=A8=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../executor/enums/ErrorCodeConstants.java | 26 +++-- .../service/plan/PlanServiceImpl.java | 10 +- .../DefaultOrderImportXmlParserHandler.java | 2 + .../plan/dal/dataobject/order/OrderDO.java | 6 ++ .../dal/dataobject/orderBody/OrderBodyDO.java | 2 +- .../plan/dal/dataobject/plate/PlateDO.java | 1 - .../DefaultXmlOrderImportConsumer.java | 50 ++++++---- .../factory/DefaultXmlOrderImportFactory.java | 98 ++----------------- .../WebCadOrderImportAsyncFactory.java | 6 +- .../factory/WebCadOrderImportFactory.java | 6 +- 10 files changed, 75 insertions(+), 132 deletions(-) diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java index 442b6e22c..200016bea 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java @@ -77,22 +77,20 @@ public class ErrorCodeConstants { public static final ErrorCode CUSTOM_PLATENO_GENERATE_ORG_CUSTOM_PLATENO_SEQ_MODIFY_ERROR = new ErrorCode(1_003_030_004, "order.custom.plateno.generate.org.custom.plateno.seq.modify.error"); // ========== 订单导入 1_003_031 ========== - public static final ErrorCode ORDER_IMPORT_TYPE_NOT_SUPPORT = new ErrorCode(1_003_031_001, "不支持的订单导入类型:{}"); + public static final ErrorCode ORDER_IMPORT_TYPE_NOT_SUPPORT = new ErrorCode(1_003_031_001, "不支持的订单导入类型:{0}"); public static final ErrorCode ORDER_IMPORT_ORGAN_LOCK_ERROR = new ErrorCode(1_003_031_002, "组织下存在正在导入的订单,请稍后再试"); public static final ErrorCode ORDER_IMPORT_FILE_ANALYZE_ERROR = new ErrorCode(1_003_031_003, "订单导入文件解析失败,请检查文件类型和格式"); - public static final ErrorCode ORDER_IMPORT_ORDER_FIELD_EMPTY = new ErrorCode(1_003_031_004, "订单信息【{}】不能为空"); - public static final ErrorCode ORDER_IMPORT_ORDER_FIELD_LENGTH_ERROR = new ErrorCode(1_003_031_005, "订单信息【{}】长度不能超过【{}】个字符"); - public static final ErrorCode ORDER_IMPORT_ORDER_FIELD_MOBILE_FORMAT_ERROR = new ErrorCode(1_003_031_006, "订单信息【{}】手机号格式错误"); - public static final ErrorCode ORDER_IMPORT_ORDER_FIELD_DATE_FORMAT_ERROR = new ErrorCode(1_003_031_007, "订单信息【{}】日期格式错误"); - public static final ErrorCode ORDER_IMPORT_ORDER_NOT_EXISTS = new ErrorCode(1_003_031_008, "订单【{}】不存在"); - public static final ErrorCode ORDER_IMPORT_ORDER_CUSTOMERNO_EXISTS = new ErrorCode(1_003_031_009, "{}【{}】已存在"); - public static final ErrorCode ORDER_IMPORT_DETAIL_FIELD_EMPTY = new ErrorCode(1_003_031_010, "导入校验异常:第{}行,导入明细【{}】不能为空"); - public static final ErrorCode ORDER_IMPORT_DETAIL_FIELD_LENGTH_ERROR = new ErrorCode(1_003_031_011, "导入校验异常:第{}行,导入明细【{}】长度不能超过【{}】个字符"); - public static final ErrorCode ORDER_IMPORT_DETAIL_VALID_ERROR = new ErrorCode(1_003_031_012, "导入校验异常:{}"); - public static final ErrorCode ORDER_IMPORT_GROUPCODE_NOT_EXIST_VALID_ERROR = new ErrorCode(1_003_031_013, "导入校验异常:板件{}下加工组编码{}不存在于加工组编码列表中"); - public static final ErrorCode ORDER_IMPORT_ROOMCODE_NOT_EXIST_VALID_ERROR = new ErrorCode(1_003_031_014, "导入校验异常:板件{}下房间编码{}不存在于房间编码列表中"); - public static final ErrorCode ORDER_IMPORT_BODYCODE_NOT_EXIST_VALID_ERROR = new ErrorCode(1_003_031_015, "导入校验异常:板件{}下柜体编码{}不存在于柜体编码列表中"); - public static final ErrorCode ORDER_IMPORT_PLATEGOODS_NOT_EXIST_VALID_ERROR = new ErrorCode(1_003_031_016, "导入校验异常:第{}行的板材不存在,请确保板材管理中存在对应商品编号或商品(名称+材质+颜色+厚度+品牌)组合的板材后导入"); + public static final ErrorCode ORDER_IMPORT_ORDER_FIELD_EMPTY = new ErrorCode(1_003_031_004, "订单信息【{0}】不能为空"); + public static final ErrorCode ORDER_IMPORT_ORDER_FIELD_LENGTH_ERROR = new ErrorCode(1_003_031_005, "订单信息【{0}】长度不能超过【{1}】个字符"); + public static final ErrorCode ORDER_IMPORT_ORDER_FIELD_MOBILE_FORMAT_ERROR = new ErrorCode(1_003_031_006, "订单信息【{0}】手机号格式错误"); + public static final ErrorCode ORDER_IMPORT_ORDER_FIELD_DATE_FORMAT_ERROR = new ErrorCode(1_003_031_007, "订单信息【{0}】日期格式错误"); + public static final ErrorCode ORDER_IMPORT_ORDER_NOT_EXISTS = new ErrorCode(1_003_031_008, "订单【{0}】不存在"); + public static final ErrorCode ORDER_IMPORT_ORDER_CUSTOMERNO_EXISTS = new ErrorCode(1_003_031_009, "{0}【{1}】已存在"); + public static final ErrorCode ORDER_IMPORT_DETAIL_VALID_ERROR = new ErrorCode(1_003_031_012, "导入校验异常:{0}"); + public static final ErrorCode ORDER_IMPORT_GROUPCODE_NOT_EXIST_VALID_ERROR = new ErrorCode(1_003_031_013, "导入校验异常:板件{0}下加工组编码{1}不存在于加工组编码列表中"); + public static final ErrorCode ORDER_IMPORT_ROOMCODE_NOT_EXIST_VALID_ERROR = new ErrorCode(1_003_031_014, "导入校验异常:板件{0}下房间编码{1}不存在于房间编码列表中"); + public static final ErrorCode ORDER_IMPORT_BODYCODE_NOT_EXIST_VALID_ERROR = new ErrorCode(1_003_031_015, "导入校验异常:板件{0}下柜体编码{1}不存在于柜体编码列表中"); + public static final ErrorCode ORDER_IMPORT_PLATEGOODS_NOT_EXIST_VALID_ERROR = new ErrorCode(1_003_031_016, "导入校验异常:第{0}行的板材不存在,请确保板材管理中存在对应商品编号或商品(名称+材质+颜色+厚度+品牌)组合的板材后导入"); // ========== manage板材/配件 1_003_001_000 ========== public static final ErrorCode PARTS_NOT_EXISTS = new ErrorCode(1_003_001_000, "配件不存在"); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java index d0f3c2d8f..57c245e5f 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java @@ -81,6 +81,7 @@ import java.util.stream.Collectors; import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.DATA_DATA_ERROR; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.cf.imes.framework.common.pojo.PageParam.PAGE_SIZE_NONE; import static com.cf.imes.framework.common.util.json.JsonUtils.parseArray; import static com.cf.imes.framework.redis.constants.RedisKeyConstants.ORDER_PLAN_OPTIMIZE_KEY; import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; @@ -571,12 +572,17 @@ public class PlanServiceImpl implements PlanService { .likeIfPresent(FIELD_ADDRESS, pageReqVO.getConsigneeAddress()) .betweenIfPresent(FIELD_ORDER_DATE, LocalDateTimeUtils.generateTimeSection(pageReqVO.getCreateTime())) .eqIfPresent(FIELD_ORDER_TYPE, pageReqVO.getOrderType()); - PageDTO page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); + + Integer pageSize = pageReqVO.getPageSize(); + PageDTO page = new PageDTO<>(pageReqVO.getPageNo(), pageSize); // 查询满足未排单条件的顶级订单id IPage rootOrderIdList = planItemMapper.selectRootOrderIdList(page, queryWrapperX); long rootOrderIdListTotal = rootOrderIdList.getTotal(); - if (rootOrderIdListTotal == 0) { + if (PAGE_SIZE_NONE != pageSize && rootOrderIdListTotal == 0) { + return new PageResult<>(); + } + if (PAGE_SIZE_NONE == pageSize && rootOrderIdList.getRecords().isEmpty()) { return new PageResult<>(); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/DefaultOrderImportXmlParserHandler.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/DefaultOrderImportXmlParserHandler.java index 6fe05d4e1..608fa6425 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/DefaultOrderImportXmlParserHandler.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/DefaultOrderImportXmlParserHandler.java @@ -537,6 +537,7 @@ public class DefaultOrderImportXmlParserHandler { .createTime(LocalDateTime.now()) .detail(JsonUtils.zipString(JSON.toJSONString(boxXmlVO))) .sort(sort++) + .area(BigDecimal.ZERO) .build()); } @@ -1744,6 +1745,7 @@ public class DefaultOrderImportXmlParserHandler { .bodyName(boxName) .createTime(LocalDateTime.now()) .sort(sort++) + .area(BigDecimal.ZERO) .build()); roomBodyMap.put(roomBodyKey, RoomBoxXmlVO.builder() diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/order/OrderDO.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/order/OrderDO.java index f4cf35428..9ee727bba 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/order/OrderDO.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/order/OrderDO.java @@ -44,6 +44,12 @@ public class OrderDO extends BaseDO { * 父单号 */ private Long parentId; + + /** + * 根单号 + */ + private Long rootId; + /** * 源订单号 */ diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/orderBody/OrderBodyDO.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/orderBody/OrderBodyDO.java index 78d2e231c..7c8c0ae98 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/orderBody/OrderBodyDO.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/orderBody/OrderBodyDO.java @@ -100,5 +100,5 @@ public class OrderBodyDO extends BaseDO { /** * 成倍序号 */ - private int sort; + private int multiSort; } \ No newline at end of file diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/plate/PlateDO.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/plate/PlateDO.java index 5a197ff15..f38b24c01 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/plate/PlateDO.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/plate/PlateDO.java @@ -251,6 +251,5 @@ public class PlateDO extends BaseDO { /** * 造型数据 */ - @TableField(exist = false) private String modelData; } \ No newline at end of file diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/consumer/DefaultXmlOrderImportConsumer.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/consumer/DefaultXmlOrderImportConsumer.java index bfa0a5f5e..9f48811cf 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/consumer/DefaultXmlOrderImportConsumer.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/consumer/DefaultXmlOrderImportConsumer.java @@ -28,12 +28,10 @@ import com.cf.imes.module.plan.dal.mysql.orderImport.OrderImportTaskMapper; import com.cf.imes.module.plan.dal.mysql.orderImport.OrderImportTempDataMapper; import com.cf.imes.module.plan.dal.mysql.orderItem.OrderItemMapper; import com.cf.imes.module.plan.dal.mysql.orderParts.OrderPartsMapper; -import com.cf.imes.module.plan.dal.mysql.orderParts.PartsMapper; import com.cf.imes.module.plan.dal.mysql.plate.PlateGoodMapper; import com.cf.imes.module.plan.dal.mysql.plate.PlateMapper; import com.cf.imes.module.plan.dal.mysql.rawgoods.RawGoodsMapper; import com.cf.imes.module.plan.service.customplateno.CustomPlateNoGenerateService; -import com.cf.imes.module.plan.service.order.OrderInputProcessor; import com.cf.imes.module.plan.service.orderImport.OrderImportTaskService; import com.cf.imes.module.plan.service.orderImport.factory.DefaultXmlOrderImportFactory; import com.rabbitmq.client.Channel; @@ -42,9 +40,9 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.support.AmqpHeaders; import org.springframework.messaging.handler.annotation.Header; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; import jakarta.annotation.Resource; +import org.springframework.transaction.support.TransactionTemplate; import java.time.LocalDate; import java.util.Objects; @@ -110,21 +108,17 @@ public class DefaultXmlOrderImportConsumer { @Resource private PlateGoodMapper plateGoodMapper; - @Resource - private OrderInputProcessor orderInputProcessor; - - @Resource - private PartsMapper partsMapper; - @Resource private CustomPlateNoGenerateService customPlateNoGenerateService; @Resource private ChenfengCacheProperties chenfengCacheProperties; + @Resource + private TransactionTemplate transactionTemplate; + @RabbitListener(queues = RabbitMqConstants.ORDER_IMPORT_DEFAULT_XML_QUEUE) @DS("imes_prod") - @Transactional(rollbackFor = Exception.class) public void orderImport(String message, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) throws Exception { log.info("====================【订单默认xml导入收到消息:{}】====================", message); Long organId = null; @@ -153,16 +147,30 @@ public class DefaultXmlOrderImportConsumer { if (ObjectUtil.isNull(orderImportTaskDO)) { return; } - // 创建订单 - OrderDO orderDO = createOrder(taskId); - log.info("====================【订单默认xml导入处理临时数据开始】===================="); - // 创建工厂 - DefaultXmlOrderImportFactory defaultExcelOrderImportFactory = new DefaultXmlOrderImportFactory(taskId, orderDO, organId, orderImportTaskDO.getCreator(), - snowFlakeGenerator, idWorker, orderImportTaskMapper, orderImportTempDataMapper, orderMapper, goodsMapper, rawGoodsMapper, orderPartsMapper, - orderBodyMapper, orderGroupMapper, plateMapper, orderItemMapper, plateGoodMapper, orderInputProcessor, partsMapper, customPlateNoGenerateService); - // 解析临时表数据 - defaultExcelOrderImportFactory.analyzeTempData(); - log.info("====================【订单默认xml导入处理临时数据结束】===================="); + + Long finalOrganId = organId; + String creator = orderImportTaskDO.getCreator(); + transactionTemplate.execute(status -> { + try { + // 创建订单 + OrderDO orderDO = createOrder(taskId); + log.info("====================【订单默认xml导入处理临时数据开始】===================="); + // 创建工厂 + DefaultXmlOrderImportFactory defaultExcelOrderImportFactory = new DefaultXmlOrderImportFactory(taskId, orderDO, finalOrganId, creator, + snowFlakeGenerator, idWorker, orderImportTaskMapper, orderImportTempDataMapper, orderMapper, goodsMapper, rawGoodsMapper, orderPartsMapper, + orderBodyMapper, orderGroupMapper, plateMapper, orderItemMapper, plateGoodMapper, customPlateNoGenerateService); + // 解析临时表数据 + defaultExcelOrderImportFactory.analyzeTempData(); + log.info("====================【订单默认xml导入处理临时数据结束】===================="); + } catch (Exception e) { + + status.setRollbackOnly(); + + throw e; + } + + return null; + }); } catch (Exception e) { log.error( ORDER_IMPORT_FAIL.getMsg(), e); orderImportTaskService.updateImportTaskFail(orderImportTaskDO, e); @@ -203,6 +211,8 @@ public class DefaultXmlOrderImportConsumer { OrderDO newOrder = JSON.parseObject(orderTempDetail, OrderDO.class); Long orderId = (Long) snowFlakeGenerator.nextId(null); newOrder.setId(orderId); + // todo 后续可能有子单需求?目前只创建主单 + newOrder.setRootId(orderId); orderMapper.insert(newOrder); // 订单id更新到导入任务表 orderImportTaskMapper.update(new LambdaUpdateWrapper() diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/DefaultXmlOrderImportFactory.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/DefaultXmlOrderImportFactory.java index 1653fdfe9..7cb666d8e 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/DefaultXmlOrderImportFactory.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/DefaultXmlOrderImportFactory.java @@ -19,7 +19,6 @@ import com.cf.imes.framework.id.core.util.SnowflakeIdWorker3rd; import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator; import com.cf.imes.framework.mybatis.core.injector.BaseBatchMapper; import com.cf.imes.module.executor.enums.DictTypeConstants; -import com.cf.imes.module.executor.enums.OrderImportStatusEnum; import com.cf.imes.module.executor.enums.OrderImportTmpDataTypeEnum; import com.cf.imes.module.executor.enums.OrderItemTypeEnum; import com.cf.imes.module.plan.controller.admin.orderimport.vo.OrderImportTempDataReqVO; @@ -68,7 +67,6 @@ import com.cf.imes.module.plan.dal.elasticsearch.IContourData; import com.cf.imes.module.plan.dal.elasticsearch.IOriginModelingData; import com.cf.imes.module.plan.dal.elasticsearch.ModelDetail; import com.cf.imes.module.plan.dal.elasticsearch.OffSetList; -import com.cf.imes.module.plan.dal.elasticsearch.OrderPartsRemark; import com.cf.imes.module.plan.dal.elasticsearch.PartsInfo; import com.cf.imes.module.plan.dal.elasticsearch.Point; import com.cf.imes.module.plan.dal.elasticsearch.PointDetail; @@ -81,14 +79,12 @@ import com.cf.imes.module.plan.dal.mysql.orderImport.OrderImportTaskMapper; import com.cf.imes.module.plan.dal.mysql.orderImport.OrderImportTempDataMapper; import com.cf.imes.module.plan.dal.mysql.orderItem.OrderItemMapper; import com.cf.imes.module.plan.dal.mysql.orderParts.OrderPartsMapper; -import com.cf.imes.module.plan.dal.mysql.orderParts.PartsMapper; import com.cf.imes.module.plan.dal.mysql.plate.PlateGoodMapper; import com.cf.imes.module.plan.dal.mysql.plate.PlateMapper; import com.cf.imes.module.plan.dal.mysql.rawgoods.RawGoodsMapper; import com.cf.imes.module.plan.enums.ErrorCodeConstants; import com.cf.imes.module.plan.service.customplateno.CustomPlateNoGenerateService; import com.cf.imes.module.plan.service.customplateno.vo.CustomPlateNoGenerateConfigVO; -import com.cf.imes.module.plan.service.order.OrderInputProcessor; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.session.ResultContext; import org.apache.ibatis.session.ResultHandler; @@ -106,8 +102,6 @@ import java.util.stream.Collectors; import static com.cf.imes.module.executor.enums.OrderImportConstants.NOT_ASSIGNED; import static com.cf.imes.module.plan.enums.ErrorCodeConstants.ORDER_IMPORT_PLATE_GOODS_NOT_EXISTS; -import static com.cf.imes.module.plan.service.order.OrderInputProcessor.ORDER_PARTS_REMARK_MODEL; -import static com.cf.imes.module.plan.service.order.OrderInputProcessor.ORDER_PLATE_MODEL; /** * 默认xml导入订单工厂服务 @@ -146,9 +140,6 @@ public class DefaultXmlOrderImportFactory { private List plateDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER); private List orderItemDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER); private List plateGoodDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER); - private List orderModelDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER); - private List orderPartsRemarks = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER); -// private List partsDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER); private static final String EMPTY_STRING = new String(); private static final BigDecimal BIG_ZERO = new BigDecimal(0); @@ -194,10 +185,6 @@ public class DefaultXmlOrderImportFactory { private PlateGoodMapper plateGoodMapper; - private OrderInputProcessor orderInputProcessor; - - private PartsMapper partsMapper; - private String operatorName; private CustomPlateNoGenerateService customPlateNoGenerateService; @@ -219,8 +206,6 @@ public class DefaultXmlOrderImportFactory { PlateMapper plateMapper, OrderItemMapper orderItemMapper, PlateGoodMapper plateGoodMapper, - OrderInputProcessor orderInputProcessor, - PartsMapper partsMapper, CustomPlateNoGenerateService customPlateNoGenerateService) { this.taskId = taskId; this.orderDO = orderDO; @@ -240,8 +225,6 @@ public class DefaultXmlOrderImportFactory { this.plateMapper = plateMapper; this.orderItemMapper = orderItemMapper; this.plateGoodMapper = plateGoodMapper; - this.orderInputProcessor = orderInputProcessor; - this.partsMapper = partsMapper; this.customPlateNoGenerateService = customPlateNoGenerateService; batchId = (Long) snowFlakeGenerator.nextId(null); } @@ -299,9 +282,6 @@ public class DefaultXmlOrderImportFactory { // 完成所有流程后更新任务为导入成功 updateTaskSuccess(); } catch (Exception e) { - // 数据库数据回滚,此时删除 ES 里的数据 - orderInputProcessor.deleteByOrderIdBatch(orderId, batchId, ORDER_PLATE_MODEL); - orderInputProcessor.deleteByOrderIdBatch(orderId, batchId, ORDER_PARTS_REMARK_MODEL); throw e; } finally { clearAll(); @@ -320,6 +300,7 @@ public class DefaultXmlOrderImportFactory { String bodyCode = bodyDO.getBodyCode(); Map bodyTempMap = roomBodyMap.get(roomCode); + int bodySort = 1; if (MapUtil.isNotEmpty(bodyTempMap)) { OrderImportTempDataDO bodyTempData = bodyTempMap.get(bodyCode); if (ObjectUtil.isNotNull(bodyTempData)) { @@ -329,10 +310,13 @@ public class DefaultXmlOrderImportFactory { // 有房间没柜体,取房间id,后续操作增加房间下柜体 Map.Entry anyBody = bodyTempMap.entrySet().iterator().next(); bodyDO.setInnerRoomId(anyBody.getValue().getInnerRoomId()); + bodySort = bodyTempMap.size() + 1; } // 创建order_body OrderBodyDO orderBodyDO = createOrderBodyDO(bodyDO); + // 设置序号 + orderBodyDO.setMultiSort(bodySort); orderBodyDOS.add(orderBodyDO); // 批量插入orderGroup orderInfoBatchInsertWithinThreshold(orderBodyMapper, orderBodyDOS, false); @@ -511,6 +495,7 @@ public class DefaultXmlOrderImportFactory { bodyBasePoint = roomBodyTempDataDO.getBodyPosition(); } else { roomBodyTempDataDO.setPlateNum(roomBodyTempDataDO.getPlateNum() + 1); + roomBodyTempDataDO.setArea(roomBodyTempDataDO.getArea().add(area)); } } } @@ -666,20 +651,18 @@ public class DefaultXmlOrderImportFactory { orderModelDO.setOrganId(organId); orderModelDO.setCreator(operatorName); orderModelDO.setUpdater(operatorName); - orderModelDOS.add(orderModelDO); + + // 创建造型数据 + plateDO.setModelData(JsonUtils.zipString(JsonUtils.toJsonString(orderModelDO))); // 批量插入order_plate plateDOS.add(plateDO); orderInfoBatchInsertWithinThreshold(plateMapper, plateDOS, false); - // 批量插入造型数据 - orderModelsBatchInsertWithinThreshold(false); } } ); //最后批量插入一次,避免最后一页小于BATCH_THRESHOLD_NUMBER漏插入 orderInfoBatchInsertWithinThreshold(plateMapper, plateDOS, true); - // 批量插入造型数据 - orderModelsBatchInsertWithinThreshold(true); // 所有自定义板编号生成完成后更新配置到订单 customPlateNoGenerateService.updateCustomPlateNoGenerateConfig(plateNoGenerateConfigVO, orderDO); @@ -1271,8 +1254,6 @@ public class DefaultXmlOrderImportFactory { // 最后批量插入一次,避免最后一页小于BATCH_THRESHOLD_NUMBER漏插入 orderInfoBatchInsertWithinThreshold(orderPartsMapper, orderPartsDOS, true); orderInfoBatchInsertWithinThreshold(orderItemMapper, orderItemDOS, true); - // 批量插入配件备注 - orderPartsRemarksBatchInsertWithinThreshold(true); } /** @@ -1392,14 +1373,6 @@ public class DefaultXmlOrderImportFactory { // 缓存配件 orderPartsDOMap.put(itemCode, orderPartsDO); orderInfoBatchInsertWithinThreshold(orderPartsMapper, orderPartsDOS, false); - // 批量插入配件备注 - orderPartsRemarks.add(OrderPartsRemark.builder() - .partsId(partId) - .batchId(batchId) - .orderId(orderId) - .remark(partRemarkXmlVOList.toString()) - .build()); - orderPartsRemarksBatchInsertWithinThreshold(false); } /** @@ -1519,13 +1492,6 @@ public class DefaultXmlOrderImportFactory { // 缓存配件 orderPartsDOMap.put(itemCode, orderPartsDO); orderInfoBatchInsertWithinThreshold(orderPartsMapper, orderPartsDOS, false); - // 批量插入配件备注 - orderPartsRemarks.add(OrderPartsRemark.builder() - .partsId(partId) - .orderId(orderId) - .remark(partRemarkXmlVOList.toString()) - .build()); - orderPartsRemarksBatchInsertWithinThreshold(false); } /** @@ -1644,14 +1610,6 @@ public class DefaultXmlOrderImportFactory { // 缓存配件 orderPartsDOMap.put(itemCode, orderPartsDO); orderInfoBatchInsertWithinThreshold(orderPartsMapper, orderPartsDOS, false); - // 批量插入配件备注 - orderPartsRemarks.add(OrderPartsRemark.builder() - .partsId(partId) - .batchId(batchId) - .orderId(orderId) - .remark(partRemarkXmlVOList.toString()) - .build()); - orderPartsRemarksBatchInsertWithinThreshold(false); } private void writeBackToOrders() { @@ -1730,7 +1688,7 @@ public class DefaultXmlOrderImportFactory { .width(NumberUtil.parseDouble(roomBoxXmlVO.getWidth())) .height(NumberUtil.parseDouble(roomBoxXmlVO.getHeight())) .depth(NumberUtil.parseDouble(roomBoxXmlVO.getLength())) - .multiNum(0) + .multiNum(1) .unregularNum(0) .filename("无") .remark("无") @@ -1802,39 +1760,6 @@ public class DefaultXmlOrderImportFactory { } } - /** - * 每达到阈值就批量插入一次订单造型数据和压缩数据 - * - * @param isLast 是否最后一次插入,不是就需要清理list - */ - private void orderModelsBatchInsertWithinThreshold(boolean isLast) { - // 达到批量的阈值就做一次插入 - if (CollUtil.isNotEmpty(orderModelDOS) && (orderModelDOS.size() >= BATCH_THRESHOLD_NUMBER || isLast)) { - // 保存订单造型数据 - orderInputProcessor.batchSaveModel(orderModelDOS); - if (!isLast) { - // 存储完成清理 list - orderModelDOS.clear(); - } - } - } - - /** - * 每达到阈值就批量插入一次订单造型数据和压缩数据 - * - * @param isLast 是否最后一次插入,不是就需要清理list - */ - private void orderPartsRemarksBatchInsertWithinThreshold(boolean isLast) { - // 达到批量的阈值就做一次插入 - if (CollUtil.isNotEmpty(orderPartsRemarks) && (orderPartsRemarks.size() >= BATCH_THRESHOLD_NUMBER || isLast)) { - orderInputProcessor.batchSaveOrderPartsModel(orderPartsRemarks); - if (!isLast) { - // 存储完成清理 list - orderPartsRemarks = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER); - } - } - } - /** * 长度面积数值按单位转换 * @@ -1930,9 +1855,6 @@ public class DefaultXmlOrderImportFactory { plateDOS.clear(); orderItemDOS.clear(); plateGoodDOS.clear(); - orderModelDOS.clear(); - orderPartsRemarks.clear(); -// partsDOS.clear(); } /** @@ -1964,6 +1886,6 @@ public class DefaultXmlOrderImportFactory { * 更新为导入成功 */ private void updateTaskSuccess() { - orderImportTaskMapper.update(new LambdaUpdateWrapper().eq(OrderImportTaskDO::getId, taskId).set(OrderImportTaskDO::getImportStatus, OrderImportStatusEnum.IMPORT_SUCCESS.getStatus())); +// orderImportTaskMapper.update(new LambdaUpdateWrapper().eq(OrderImportTaskDO::getId, taskId).set(OrderImportTaskDO::getImportStatus, OrderImportStatusEnum.IMPORT_SUCCESS.getStatus())); } } diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/WebCadOrderImportAsyncFactory.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/WebCadOrderImportAsyncFactory.java index 5d07a11eb..e158e14f9 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/WebCadOrderImportAsyncFactory.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/WebCadOrderImportAsyncFactory.java @@ -709,7 +709,7 @@ public class WebCadOrderImportAsyncFactory { Long bodyId = (Long) snowFlakeGenerator.nextId(null); orderBodyDO = OrderBodyDO.builder().id(bodyId).orderId(orderId).organId(organId) .roomId(roomId).roomName(roomName).name(boxName).width(0.0).height(0.0) - .depth(0.0).multiNum(count).sort(i+1).plateNum(0).unregularNum(0).filename("无").remark("无").deleted(false).build(); + .depth(0.0).multiNum(count).multiSort(i+1).plateNum(0).unregularNum(0).filename("无").remark("无").deleted(false).build(); orderBodyDO.setCreator(operatorName); orderBodyDO.setUpdater(operatorName); orderBodyDO.setCreateTime(now); @@ -1478,7 +1478,7 @@ public class WebCadOrderImportAsyncFactory { Long bodyId = (Long) snowFlakeGenerator.nextId(null); orderBodyDO = OrderBodyDO.builder().id(bodyId).orderId(orderId).organId(organId) .roomId(roomId).roomName(roomName).name(bodyName).width(0.0).height(0.0) - .depth(0.0).multiNum(1).sort(1).plateNum(0).unregularNum(0).filename("无").remark("无").deleted(false).build(); + .depth(0.0).multiNum(1).multiSort(1).plateNum(0).unregularNum(0).filename("无").remark("无").deleted(false).build(); orderBodyDO.setCreator(operatorName); orderBodyDO.setUpdater(operatorName); orderBodyDO.setCreateTime(now); @@ -2667,7 +2667,7 @@ public class WebCadOrderImportAsyncFactory { ps.setString(18, orderBodyDO.getCreator()); ps.setString(19, orderBodyDO.getUpdater()); ps.setLong(20, cadViewFileId); - ps.setInt(21, orderBodyDO.getSort()); + ps.setInt(21, orderBodyDO.getMultiSort()); } @Override 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 db315a25e..8dfc80e60 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 @@ -893,7 +893,7 @@ public class WebCadOrderImportFactory { Long bodyId = (Long) snowFlakeGenerator.nextId(null); OrderBodyDO orderBodyDO = OrderBodyDO.builder().id(bodyId).orderId(orderId).organId(organId) .roomId(roomId).roomName(roomName).name(boxName).width(0.0).height(0.0) - .depth(0.0).multiNum(count).sort(i + 1).plateNum(0).unregularNum(0).filename("无").remark("无").deleted(false).build(); + .depth(0.0).multiNum(count).multiSort(i + 1).plateNum(0).unregularNum(0).filename("无").remark("无").deleted(false).build(); orderBodyDO.setCreator(operatorName); orderBodyDO.setUpdater(operatorName); orderBodyDO.setCreateTime(now); @@ -1682,7 +1682,7 @@ public class WebCadOrderImportFactory { Long bodyId = (Long) snowFlakeGenerator.nextId(null); orderBodyDO = OrderBodyDO.builder().id(bodyId).orderId(orderId).organId(organId) .roomId(roomId).roomName(roomName).name(bodyName).width(0.0).height(0.0) - .depth(0.0).multiNum(1).sort(1).plateNum(0).unregularNum(0).filename("无").remark("无").deleted(false).build(); + .depth(0.0).multiNum(1).multiSort(1).plateNum(0).unregularNum(0).filename("无").remark("无").deleted(false).build(); orderBodyDO.setCreator(operatorName); orderBodyDO.setUpdater(operatorName); orderBodyDO.setCreateTime(now); @@ -2443,7 +2443,7 @@ public class WebCadOrderImportFactory { ps.setString(18, orderBodyDO.getCreator()); ps.setString(19, orderBodyDO.getUpdater()); ps.setLong(20, cadViewFileId); - ps.setInt(21, orderBodyDO.getSort()); + ps.setInt(21, orderBodyDO.getMultiSort()); } @Override