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 7708a2a2a..abef66198 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 @@ -152,8 +152,8 @@ public class WebCadOrderImportAsyncFactory { // 柜体缓存 private Map bodyMap = new HashMap<>(); - // 房间名+柜体名+加工组名:加工组id - private Map orderGroupMap = new HashMap<>(); + // 房间名+柜体名+加工组名 + private Map orderGroupMap = new HashMap<>(); // 板材缓存:{商品编号:order_goods} private Map materialMap = new HashMap<>(); @@ -169,7 +169,6 @@ public class WebCadOrderImportAsyncFactory { private List plateDOS = new ArrayList<>(); private List orderItemDOS = new ArrayList<>(); - private List orderGroupDOS = new ArrayList<>(); private List orderPartsDOS = new ArrayList<>(); private List orderModelDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER); private List rawGoodsDOS = new ArrayList<>(); @@ -594,6 +593,7 @@ public class WebCadOrderImportAsyncFactory { reader.startObject(); String boxName = null; + OrderBodyDO orderBodyDO = null; Integer count = 1; while (reader.hasNext()) { String key = reader.readString(); @@ -603,13 +603,22 @@ public class WebCadOrderImportAsyncFactory { // 获取缓存中的成本数量 count = roomBodyMap.get(roomName + boxName); + 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(0).plateNum(0).unregularNum(0).filename("无").remark("无").deleted(false).build(); + orderBodyDO.setCreator(operatorName); + orderBodyDO.setUpdater(operatorName); + orderBodyDO.setCreateTime(now); + orderBodyDO.setUpdateTime(now); + } else if ("blockList".equals(key)) { // Blocks.children.blockList开始 reader.startArray(); while (reader.hasNext()) { WebCadDataBlockReqVO block = reader.readObject(WebCadDataBlockReqVO.class); // 成倍创建 - multiCreateBodyPlate(count, roomId, roomName, boxName, block); + multiCreateBodyPlate(count, orderBodyDO, roomName, boxName, block); } reader.endArray(); } @@ -621,21 +630,12 @@ public class WebCadOrderImportAsyncFactory { * 成倍创建柜体板件 * * @param count - * @param roomId + * @param orderBodyDO * @param roomName * @param block */ - private void multiCreateBodyPlate(Integer count, Long roomId, String roomName, String boxName, WebCadDataBlockReqVO block) { + private void multiCreateBodyPlate(Integer count, OrderBodyDO orderBodyDO, String roomName, String boxName, WebCadDataBlockReqVO block) { for (int i = 0; i < count; i++) { - 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(0).plateNum(0).unregularNum(0).filename("无").remark("无").deleted(false).build(); - orderBodyDO.setCreator(operatorName); - orderBodyDO.setUpdater(operatorName); - orderBodyDO.setCreateTime(now); - orderBodyDO.setUpdateTime(now); - // 缓存成倍的柜体信息 String multiRoomBodyName = roomName + boxName + i; orderBodyDO.setMultiRoomBodyName(multiRoomBodyName); @@ -645,7 +645,6 @@ public class WebCadOrderImportAsyncFactory { if (plateNumReachThreshold) { continue; } - if (!plateNumReachThreshold) { // 创建板件相关数据:order_plate、order_item、es.orderModels createPlate(orderBodyDO, block); @@ -792,11 +791,11 @@ public class WebCadOrderImportAsyncFactory { for (Integer groupId : groupIds) { WebCadDataGroupInfoReqVO groupInfo = processGroupMap.get(groupId); String groupMapKey = orderBodyDO.getMultiRoomBodyName() + groupInfo.getGroupName(); - Long orderGroupId = orderGroupMap.get(groupMapKey); + OrderGroupDO orderGroupDO = orderGroupMap.get(groupMapKey); // 房间+柜体+加工组名称存在累加板件和异形数量,不存在新增groupDO和orderGroupMap缓存 - if (ObjectUtil.isNull(orderGroupId)) { - orderGroupId = (Long) snowFlakeGenerator.nextId(null); - OrderGroupDO orderGroupDO = OrderGroupDO + if (ObjectUtil.isNull(orderGroupDO)) { + Long orderGroupId = (Long) snowFlakeGenerator.nextId(null); + orderGroupDO = OrderGroupDO .builder() .id(orderGroupId) .organId(organId) @@ -820,9 +819,10 @@ public class WebCadOrderImportAsyncFactory { orderGroupDO.setCreateTime(now); orderGroupDO.setUpdateTime(now); - orderGroupMap.put(groupMapKey, orderGroupId); - orderGroupDOS.add(orderGroupDO); - orderInfoBatchInsertWithinThreshold(orderGroupMapper, orderGroupDOS, false); + orderGroupMap.put(groupMapKey, orderGroupDO); + } else { + orderGroupDO.setPlateNum(orderGroupDO.getPlateNum() + 1); + orderGroupDO.setUnregularNum(orderGroupDO.getUnregularNum() + BooleanUtil.toInt(block.isSpecialShape())); } OrderItemDO orderItemDO = OrderItemDO @@ -832,7 +832,7 @@ public class WebCadOrderImportAsyncFactory { .type(OrderItemTypeEnum.PLATE_ITEM.getStatus()) .roomId(roomId) .bodyId(bodyId) - .groupId(orderGroupId) + .groupId(orderGroupDO.getId()) .plateId(plateId) .packageId(0L) .partsId(0L) @@ -1416,11 +1416,11 @@ public class WebCadOrderImportAsyncFactory { for (Integer groupId : groupIds) { WebCadDataGroupInfoReqVO groupInfo = processGroupMap.get(groupId); String groupMapKey = orderBodyDO.getMultiRoomBodyName() + groupInfo.getGroupName(); - Long orderGroupId = orderGroupMap.get(groupMapKey); + OrderGroupDO orderGroupDO = orderGroupMap.get(groupMapKey); // 房间+柜体+加工组名称存在累加配件item,不存在新增groupDO和orderGroupMap缓存 - if (ObjectUtil.isNull(orderGroupId)) { - orderGroupId = (Long) snowFlakeGenerator.nextId(null); - OrderGroupDO orderGroupDO = OrderGroupDO + if (ObjectUtil.isNull(orderGroupDO)) { + Long orderGroupId = (Long) snowFlakeGenerator.nextId(null); + orderGroupDO = OrderGroupDO .builder() .id(orderGroupId) .organId(organId) @@ -1444,9 +1444,7 @@ public class WebCadOrderImportAsyncFactory { orderGroupDO.setCreateTime(now); orderGroupDO.setUpdateTime(now); - orderGroupMap.put(groupMapKey, orderGroupId); - orderGroupDOS.add(orderGroupDO); - orderInfoBatchInsertWithinThreshold(orderGroupMapper, orderGroupDOS, false); + orderGroupMap.put(groupMapKey, orderGroupDO); } OrderItemDO orderItemDO = OrderItemDO @@ -1456,7 +1454,7 @@ public class WebCadOrderImportAsyncFactory { .type(OrderItemTypeEnum.PLATE_ITEM.getStatus()) .roomId(roomId) .bodyId(bodyId) - .groupId(orderGroupId) + .groupId(orderGroupDO.getId()) .partsId(part.getImesPartsId()) .packageId(0L) .plateId(0L) @@ -1921,7 +1919,7 @@ public class WebCadOrderImportAsyncFactory { private void saveData() { // 分成1000一组 List> bodyList = batchProcess(bodyMap.values().stream().toList()); - List> groupList = batchProcess(orderGroupDOS); + List> groupList = batchProcess(orderGroupMap.values().stream().toList()); // 保存 saveBody(bodyList); @@ -2025,7 +2023,6 @@ public class WebCadOrderImportAsyncFactory { plateDOS.clear(); orderItemDOS.clear(); - orderGroupDOS.clear(); orderPartsDOS.clear(); orderModelDOS.clear(); rawGoodsDOS.clear(); 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 b8a4183fe..84e2cf5a6 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 @@ -136,8 +136,8 @@ public class WebCadOrderImportFactory { // 柜体缓存 private Map bodyMap = new HashMap<>(); - // 房间名+柜体名+加工组名:加工组id - private Map orderGroupMap = new HashMap<>(); + // 房间名+柜体名+加工组名:加工组 + private Map orderGroupMap = new HashMap<>(); // 板材缓存:{商品编号:order_goods} private Map materialMap = new HashMap<>(); @@ -153,7 +153,6 @@ public class WebCadOrderImportFactory { private List plateDOS = new ArrayList<>(); private List orderItemDOS = new ArrayList<>(); - private List orderGroupDOS = new ArrayList<>(); private List orderPartsDOS = new ArrayList<>(); private List orderModelDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER); private List rawGoodsDOS = new ArrayList<>(); @@ -1098,11 +1097,11 @@ public class WebCadOrderImportFactory { for (Integer groupId : groupIds) { WebCadDataGroupInfoReqVO groupInfo = processGroupMap.get(groupId); String groupMapKey = orderBodyDO.getMultiRoomBodyName() + groupInfo.getGroupName(); - Long orderGroupId = orderGroupMap.get(groupMapKey); + OrderGroupDO orderGroupDO = orderGroupMap.get(groupMapKey); // 房间+柜体+加工组名称存在累加板件和异形数量,不存在新增groupDO和orderGroupMap缓存 - if (ObjectUtil.isNull(orderGroupId)) { - orderGroupId = (Long) snowFlakeGenerator.nextId(null); - OrderGroupDO orderGroupDO = OrderGroupDO + if (ObjectUtil.isNull(orderGroupDO)) { + Long orderGroupId = (Long) snowFlakeGenerator.nextId(null); + orderGroupDO = OrderGroupDO .builder() .id(orderGroupId) .organId(organId) @@ -1126,8 +1125,10 @@ public class WebCadOrderImportFactory { orderGroupDO.setCreateTime(now); orderGroupDO.setUpdateTime(now); - orderGroupMap.put(groupMapKey, orderGroupId); - orderGroupDOS.add(orderGroupDO); + orderGroupMap.put(groupMapKey, orderGroupDO); + } else { + orderGroupDO.setPlateNum(orderGroupDO.getPlateNum() + 1); + orderGroupDO.setUnregularNum(orderGroupDO.getUnregularNum() + BooleanUtil.toInt(block.isSpecialShape())); } OrderItemDO orderItemDO = OrderItemDO @@ -1137,7 +1138,7 @@ public class WebCadOrderImportFactory { .type(OrderItemTypeEnum.PLATE_ITEM.getStatus()) .roomId(roomId) .bodyId(bodyId) - .groupId(orderGroupId) + .groupId(orderGroupDO.getId()) .plateId(plateId) .packageId(0L) .partsId(0L) @@ -1308,11 +1309,11 @@ public class WebCadOrderImportFactory { for (Integer groupId : groupIds) { WebCadDataGroupInfoReqVO groupInfo = processGroupMap.get(groupId); String groupMapKey = orderBodyDO.getMultiRoomBodyName() + groupInfo.getGroupName(); - Long orderGroupId = orderGroupMap.get(groupMapKey); + OrderGroupDO orderGroupDO = orderGroupMap.get(groupMapKey); // 房间+柜体+加工组名称存在累加配件item,不存在新增groupDO和orderGroupMap缓存 - if (ObjectUtil.isNull(orderGroupId)) { - orderGroupId = (Long) snowFlakeGenerator.nextId(null); - OrderGroupDO orderGroupDO = OrderGroupDO + if (ObjectUtil.isNull(orderGroupDO)) { + Long orderGroupId = (Long) snowFlakeGenerator.nextId(null); + orderGroupDO = OrderGroupDO .builder() .id(orderGroupId) .organId(organId) @@ -1336,8 +1337,7 @@ public class WebCadOrderImportFactory { orderGroupDO.setCreateTime(now); orderGroupDO.setUpdateTime(now); - orderGroupMap.put(groupMapKey, orderGroupId); - orderGroupDOS.add(orderGroupDO); + orderGroupMap.put(groupMapKey, orderGroupDO); } OrderItemDO orderItemDO = OrderItemDO @@ -1347,7 +1347,7 @@ public class WebCadOrderImportFactory { .type(OrderItemTypeEnum.PLATE_ITEM.getStatus()) .roomId(roomId) .bodyId(bodyId) - .groupId(orderGroupId) + .groupId(orderGroupDO.getId()) .partsId(part.getImesPartsId()) .packageId(0L) .plateId(0L) @@ -1799,7 +1799,7 @@ public class WebCadOrderImportFactory { private void saveData() { // 分成1000一组 List> bodyList = batchProcess(bodyMap.values().stream().toList()); - List> groupList = batchProcess(orderGroupDOS); + List> groupList = batchProcess(orderGroupMap.values().stream().toList()); // 保存 saveBody(bodyList); @@ -1926,7 +1926,6 @@ public class WebCadOrderImportFactory { plateDOS.clear(); orderItemDOS.clear(); - orderGroupDOS.clear(); orderPartsDOS.clear(); orderModelDOS.clear(); rawGoodsDOS.clear();