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 abef66198..482eb7ad4 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 @@ -589,11 +589,17 @@ public class WebCadOrderImportAsyncFactory { orderModelsBatchInsertWithinThreshold(true); } + /** + * 解析柜体下板件列表 + * + * @param reader + * @param roomName + * @param roomId + */ private void analyzeBlockBodyList(JSONReader reader, String roomName, Long roomId) { reader.startObject(); String boxName = null; - OrderBodyDO orderBodyDO = null; Integer count = 1; while (reader.hasNext()) { String key = reader.readString(); @@ -603,22 +609,13 @@ 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, orderBodyDO, roomName, boxName, block); + multiCreateBodyPlate(count, roomId, roomName, boxName, block); } reader.endArray(); } @@ -630,26 +627,34 @@ public class WebCadOrderImportAsyncFactory { * 成倍创建柜体板件 * * @param count - * @param orderBodyDO + * @param roomId * @param roomName * @param block */ - private void multiCreateBodyPlate(Integer count, OrderBodyDO orderBodyDO, String roomName, String boxName, WebCadDataBlockReqVO block) { + private void multiCreateBodyPlate(Integer count, Long roomId, String roomName, String boxName, WebCadDataBlockReqVO block) { for (int i = 0; i < count; i++) { // 缓存成倍的柜体信息 String multiRoomBodyName = roomName + boxName + i; - orderBodyDO.setMultiRoomBodyName(multiRoomBodyName); - bodyMap.put(multiRoomBodyName, orderBodyDO); + OrderBodyDO orderBodyDO = bodyMap.get(multiRoomBodyName); + if (ObjectUtil.isNull(orderBodyDO)) { + 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); + + orderBodyDO.setMultiRoomBodyName(multiRoomBodyName); + bodyMap.put(multiRoomBodyName, orderBodyDO); + } // 达到阈值了不再创建板件 - if (plateNumReachThreshold) { - continue; - } if (!plateNumReachThreshold) { // 创建板件相关数据:order_plate、order_item、es.orderModels createPlate(orderBodyDO, block); } - } } @@ -673,9 +678,6 @@ public class WebCadOrderImportAsyncFactory { // 是否排孔 boolean isRawHole = (block.getFrontHoleCount() + block.getBackHoleCount()) > 0; - orderBodyDO.setPlateNum(orderBodyDO.getPlateNum() + 1); - orderBodyDO.setUnregularNum(orderBodyDO.getUnregularNum() + BooleanUtil.toInt(isSpecialShape)); - // 柜体长宽深 orderBodyDO.setWidth(block.getCabinetWidth()); orderBodyDO.setHeight(block.getCabinetHeight()); @@ -762,6 +764,10 @@ public class WebCadOrderImportAsyncFactory { plateNumReachThreshold = true; return; } + // 更新房间下板件和异形的数量 + orderBodyDO.setPlateNum(orderBodyDO.getPlateNum() + 1); + orderBodyDO.setUnregularNum(orderBodyDO.getUnregularNum() + BooleanUtil.toInt(isSpecialShape)); + plateDOS.add(plateDO); orderPlateBatchInsertWithinThreshold(plateDOS, false);