cad拆单柜体板件数量错误问题修复

This commit is contained in:
gaoqr
2025-05-19 16:45:06 +08:00
parent 3e3a488641
commit 164a0a1857
@@ -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);