cad拆单柜体、加工组板件数量错误问题修复

This commit is contained in:
gaoqr
2025-05-16 12:08:17 +08:00
parent ed49597be1
commit a0b2462f58
2 changed files with 49 additions and 53 deletions
@@ -152,8 +152,8 @@ public class WebCadOrderImportAsyncFactory {
// 柜体缓存
private Map<String, OrderBodyDO> bodyMap = new HashMap<>();
// 房间名+柜体名+加工组名:加工组id
private Map<String, Long> orderGroupMap = new HashMap<>();
// 房间名+柜体名+加工组名
private Map<String, OrderGroupDO> orderGroupMap = new HashMap<>();
// 板材缓存:{商品编号:order_goods}
private Map<String, Long> materialMap = new HashMap<>();
@@ -169,7 +169,6 @@ public class WebCadOrderImportAsyncFactory {
private List<PlateDO> plateDOS = new ArrayList<>();
private List<OrderItemDO> orderItemDOS = new ArrayList<>();
private List<OrderGroupDO> orderGroupDOS = new ArrayList<>();
private List<OrderPartsDO> orderPartsDOS = new ArrayList<>();
private List<OrderModelDO> orderModelDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
private List<RawGoodsDO> 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<List<OrderBodyDO>> bodyList = batchProcess(bodyMap.values().stream().toList());
List<List<OrderGroupDO>> groupList = batchProcess(orderGroupDOS);
List<List<OrderGroupDO>> 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();
@@ -136,8 +136,8 @@ public class WebCadOrderImportFactory {
// 柜体缓存
private Map<String, OrderBodyDO> bodyMap = new HashMap<>();
// 房间名+柜体名+加工组名:加工组id
private Map<String, Long> orderGroupMap = new HashMap<>();
// 房间名+柜体名+加工组名:加工组
private Map<String, OrderGroupDO> orderGroupMap = new HashMap<>();
// 板材缓存:{商品编号:order_goods}
private Map<String, Long> materialMap = new HashMap<>();
@@ -153,7 +153,6 @@ public class WebCadOrderImportFactory {
private List<PlateDO> plateDOS = new ArrayList<>();
private List<OrderItemDO> orderItemDOS = new ArrayList<>();
private List<OrderGroupDO> orderGroupDOS = new ArrayList<>();
private List<OrderPartsDO> orderPartsDOS = new ArrayList<>();
private List<OrderModelDO> orderModelDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
private List<RawGoodsDO> 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<List<OrderBodyDO>> bodyList = batchProcess(bodyMap.values().stream().toList());
List<List<OrderGroupDO>> groupList = batchProcess(orderGroupDOS);
List<List<OrderGroupDO>> 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();