From 6728f785fa35f0eb35ab4df7cf010b9411a55516 Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Mon, 17 Mar 2025 17:11:33 +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?=E6=95=B0=E6=8D=AE=E8=A1=A5=E5=85=85=E5=BC=82=E5=BD=A2=E3=80=81?= =?UTF-8?q?=E9=80=A0=E5=9E=8B=E3=80=81=E6=8E=92=E5=AD=94=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=88=A4=E6=96=AD=E8=B5=8B=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../factory/WebCadOrderImportFactory.java | 60 ++++++++++++++----- 1 file changed, 44 insertions(+), 16 deletions(-) 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 2e18459c8..5203f84a2 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 @@ -436,12 +436,26 @@ public class WebCadOrderImportFactory { // 基于房间名分组 Map> roomCollect = blockList.stream() .collect(Collectors.groupingBy(WebCadDataBlockReqVO::getRoomName, Collectors.toList())); - roomCollect.forEach((roomName, listRoom) -> { + for (Map.Entry> roomEntry : roomCollect.entrySet()) { + String roomName = roomEntry.getKey(); + List listRoom = roomEntry.getValue(); + Long roomId = (Long) snowFlakeGenerator.nextId(null); + // 检查当前单子中是否已有房间,是则使用相同房间id + List existRoomNameBodys = orderBodyMapper.selectList(new LambdaUpdateWrapper() + .eq(OrderBodyDO::getOrderId, orderId) + .eq(OrderBodyDO::getRoomName, roomName) + .eq(OrderBodyDO::getOrganId, organId)); + if (CollUtil.isNotEmpty(existRoomNameBodys)) { + roomId = existRoomNameBodys.get(0).getRoomId(); + } // 基于柜体名分组 Map> bodyCollect = listRoom.stream() .collect(Collectors.groupingBy(WebCadDataBlockReqVO::getCabinetName, Collectors.toList())); - bodyCollect.forEach((bodyName, listBody) -> { + for (Map.Entry> bodyEntry : bodyCollect.entrySet()) { + String bodyName = bodyEntry.getKey(); + List listBody = bodyEntry.getValue(); + String roomBodyKey = roomName + bodyName; WebCadDataDoubleRoomTreeReqVO.ChildrenDTO cadBody = roomBodyMap.get(roomBodyKey); @@ -470,8 +484,8 @@ public class WebCadOrderImportFactory { }); } } - }); - }); + } + } // 所有自定义板编号生成完成后更新配置到生产单 customPlateNoGenerateService.updateCustomPlateNoGenerateConfig(plateNoGenerateConfigVO, orderDO); // 批量插入板件 @@ -517,9 +531,16 @@ public class WebCadOrderImportFactory { * @param block */ private void createPlate(OrderBodyDO orderBodyDO, WebCadDataBlockReqVO block) { + WebCadDataBlockReqVO.InfoDTO blockInfo = block.getInfo(); + // 是否矩形,不是矩形那就是异形 + Boolean unRegular = !blockInfo.getIsRect(); + // 是否造型 + boolean isModel = (block.getFrontModelCount() + block.getBackModelCount()) > 0; + // 是否排孔 + boolean isRawHole = (block.getFrontHoleCount() + block.getBackHoleCount()) > 0; + orderBodyDO.setPlateNum(orderBodyDO.getPlateNum() + 1); - orderBodyDO.setUnregularNum(orderBodyDO.getUnregularNum() + BooleanUtil.toInt(block.getIsSpecialShape())); - Boolean isSpecialShape = block.getIsSpecialShape(); + orderBodyDO.setUnregularNum(orderBodyDO.getUnregularNum() + BooleanUtil.toInt(unRegular)); // 柜体长宽深 orderBodyDO.setWidth(block.getCabinetWidth()); @@ -530,8 +551,6 @@ public class WebCadOrderImportFactory { long plateNo = idWorker.nextId(); long obtainingTime = idWorker.obtainingTime(); - WebCadDataBlockReqVO.InfoDTO blockInfo = block.getInfo(); - String splitHeight = blockInfo.getSpliteHeight(); String spliteWidth = blockInfo.getSpliteWidth(); @@ -554,8 +573,9 @@ public class WebCadOrderImportFactory { .holeFace(block.getHoleFace()) .isDoor(block.getIsDoor()) .openDoorType(block.getOpenDoorType()) - .isSculpt(false) - .isSpecialShaped(isSpecialShape) + .isSpecialShaped(unRegular) + .isSculpt(isModel) + .isRowHole(isRawHole) .customPlateNoBuilder(new StringBuilder()) .holeArrange(block.getHoleArrange()) .unregularPointCount(block.getUnregularPointCount()) @@ -568,7 +588,6 @@ public class WebCadOrderImportFactory { .offsetY(BigDecimal.valueOf(block.getOffsetY())) .isArcAcross(block.getIsArcBase()) .moduleTypeId(0L) - .isRowHole(false) .isOptimized(false) .isCutted(0) .isCancel(false) @@ -616,7 +635,7 @@ public class WebCadOrderImportFactory { orderModelsBatchInsertWithinThreshold(false); // 遍历加工组信息,生成对应的加工组和item - analyzeBlockProcessGroup(orderBodyDO, block, plateId); + analyzeBlockProcessGroup(orderBodyDO, block, blockInfo, plateId); } /** @@ -664,10 +683,11 @@ public class WebCadOrderImportFactory { * @param block * @param plateId */ - private void analyzeBlockProcessGroup(OrderBodyDO orderBodyDO, WebCadDataBlockReqVO block, Long plateId) { + private void analyzeBlockProcessGroup(OrderBodyDO orderBodyDO, WebCadDataBlockReqVO block, WebCadDataBlockReqVO.InfoDTO infoDTO, Long plateId) { Long bodyId = orderBodyDO.getId(); Long roomId = orderBodyDO.getRoomId(); - Boolean isSpecialShape = block.getIsSpecialShape(); + // 是否矩形,不是矩形那就是异形 + Boolean unRegular = !infoDTO.getIsRect(); List groupInfos = block.getGroupInfos(); if (CollUtil.isNotEmpty(groupInfos)) { @@ -691,7 +711,7 @@ public class WebCadOrderImportFactory { .depth(groupInfo.getDepth()) .multiNum(0) .plateNum(1) - .unregularNum(BooleanUtil.toInt(isSpecialShape)) + .unregularNum(BooleanUtil.toInt(unRegular)) .filename("无") .remark("无") .deleted(false) @@ -705,7 +725,7 @@ public class WebCadOrderImportFactory { orderGroupDOS.add(orderGroupDO); } else { orderGroupDO.setPlateNum(orderGroupDO.getPlateNum() + 1); - orderGroupDO.setUnregularNum(orderGroupDO.getUnregularNum() + BooleanUtil.toInt(isSpecialShape)); + orderGroupDO.setUnregularNum(orderGroupDO.getUnregularNum() + BooleanUtil.toInt(unRegular)); } OrderItemDO orderItemDO = OrderItemDO @@ -770,6 +790,14 @@ public class WebCadOrderImportFactory { .collect(Collectors.groupingBy(WebCadDataPartsReqVO.BlockObjectListDTO::getRoomName, Collectors.toList())); roomCollect.forEach((roomName, listRoom) -> { Long roomId = (Long) snowFlakeGenerator.nextId(null); + // 检查当前单子中是否已有房间,是则使用相同房间id + List existRoomNameBodys = orderBodyMapper.selectList(new LambdaUpdateWrapper() + .eq(OrderBodyDO::getOrderId, orderId) + .eq(OrderBodyDO::getRoomName, roomName) + .eq(OrderBodyDO::getOrganId, organId)); + if (CollUtil.isNotEmpty(existRoomNameBodys)) { + roomId = existRoomNameBodys.get(0).getRoomId(); + } // 基于柜体名分组 Map> bodyCollect = listRoom.stream()