mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
生产单xml导入问题修复:导入空柜体列表和板材对应修复
This commit is contained in:
+60
-46
@@ -117,7 +117,8 @@ public class DefaultOrderImportXmlParserHandler {
|
||||
|
||||
// todo 对编码去重,如果后期性能瓶颈需要改造到消费后用数据库
|
||||
private Set<String> groupCodeSet = new HashSet<>();
|
||||
private Map<String, Set<String>> roomBodyCodeMap = new HashMap<>();
|
||||
private Map<String, RoomXmlVO> roomMap = new HashMap<>();
|
||||
private Map<String, RoomBoxXmlVO> roomBodyMap = new HashMap<>();
|
||||
|
||||
/**
|
||||
* 补板用
|
||||
@@ -173,12 +174,6 @@ public class DefaultOrderImportXmlParserHandler {
|
||||
|
||||
private SnowFlakeGenerator snowFlakeGenerator;
|
||||
|
||||
private Map<String, Boolean> NOT_ASSIGNED_BODY_EXISTS_MAP = MapUtil.<String, Boolean>builder()
|
||||
.put("false%true", false)
|
||||
.put("true%true", false)
|
||||
.put("true%false", false)
|
||||
.build();
|
||||
|
||||
// 基础常量
|
||||
private static final String FIELD_AXISXROTATE = "axisXrotate";
|
||||
private static final String FIELD_AXISYROTATE = "axisYrotate";
|
||||
@@ -452,18 +447,14 @@ public class DefaultOrderImportXmlParserHandler {
|
||||
if (ObjectUtil.isNull(roomXml)) {
|
||||
roomXml = new RoomXmlVO();
|
||||
}
|
||||
// 每解析到一次room,设置一次全局roomcode给box列表用
|
||||
// room完接下来都认为是box,直到新的room出现
|
||||
roomXmlVO = roomXml;
|
||||
// 校验房间属性
|
||||
checkRoom(roomXmlVO);
|
||||
|
||||
// 每解析到一次room,设置一次全局roomcode给box列表用
|
||||
// room完接下来都认为是box,直到新的room出现
|
||||
String roomCode = StringUtils.isNotEmpty(roomXmlVO.getCode()) ? roomXmlVO.getCode() : NOT_ASSIGNED_CODE;
|
||||
|
||||
Set<String> bodyCodeSet = roomBodyCodeMap.get(roomCode);
|
||||
if (CollUtil.isEmpty(bodyCodeSet)) {
|
||||
roomBodyCodeMap.put(roomCode, new HashSet<>());
|
||||
}
|
||||
// 缓存房间
|
||||
roomMap.put(roomXmlVO.getCode(), roomXmlVO);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -511,16 +502,13 @@ public class DefaultOrderImportXmlParserHandler {
|
||||
|
||||
String bodyCode = boxXmlVO.getCode();
|
||||
String roomCode = roomXmlVO.getCode();
|
||||
String roomName = roomXmlVO.getName();
|
||||
|
||||
// 缓存roomCode+bodyCode
|
||||
Set<String> bodyCodeSet = roomBodyCodeMap.get(roomCode);
|
||||
if (CollUtil.isNotEmpty(bodyCodeSet)) {
|
||||
if (!bodyCodeSet.contains(bodyCode)) {
|
||||
bodyCodeSet.add(bodyCode);
|
||||
}
|
||||
} else {
|
||||
roomBodyCodeMap.put(roomCode, new HashSet<>() {{
|
||||
add(bodyCode);
|
||||
}});
|
||||
String roomBodyKey = bodyCode + roomCode;
|
||||
RoomBoxXmlVO roomBoxXmlVO = roomBodyMap.get(roomBodyKey);
|
||||
if (ObjectUtil.isNull(roomBoxXmlVO)) {
|
||||
roomBodyMap.put(roomBodyKey, boxXmlVO);
|
||||
}
|
||||
|
||||
// 添加到临时表
|
||||
@@ -529,7 +517,7 @@ public class DefaultOrderImportXmlParserHandler {
|
||||
.orderId(orderId)
|
||||
.taskId(taskId)
|
||||
.type(OrderImportTmpDataTypeEnum.BODY.getType())
|
||||
.roomName(roomXmlVO.getName())
|
||||
.roomName(roomName)
|
||||
.roomCode(roomCode)
|
||||
.bodyName(boxXmlVO.getName())
|
||||
.bodyCode(bodyCode)
|
||||
@@ -693,7 +681,7 @@ public class DefaultOrderImportXmlParserHandler {
|
||||
String boxCode = blockXmlVO.getBoxCode();
|
||||
String groupCodes = blockXmlVO.getGroupCodes();
|
||||
// 校验检查房间、柜体、加工组编号
|
||||
checkRoomBoxGroup(se, roomCode, blockXmlVO.getRoomName(), boxCode, blockXmlVO.getBoxName(), groupCodes);
|
||||
checkRoomBoxGroup(se, roomCode, boxCode, groupCodes);
|
||||
|
||||
blockXmlVO.setRoomCode(roomCode);
|
||||
blockXmlVO.setBoxCode(boxCode);
|
||||
@@ -794,7 +782,7 @@ public class DefaultOrderImportXmlParserHandler {
|
||||
String boxCode = edgingXmlVO.getBoxCode();
|
||||
String groupCodes = edgingXmlVO.getGroupCode();
|
||||
// 校验检查房间、柜体、加工组编号
|
||||
checkRoomBoxGroup(se, roomCode, edgingXmlVO.getRoomName(), boxCode, edgingXmlVO.getBoxName(), groupCodes);
|
||||
checkRoomBoxGroup(se, roomCode, boxCode, groupCodes);
|
||||
|
||||
// 设置全局参数
|
||||
String itemCode = edgingXmlVO.getItemCode();
|
||||
@@ -868,7 +856,7 @@ public class DefaultOrderImportXmlParserHandler {
|
||||
String boxCode = hardwareXmlVO.getBoxCode();
|
||||
String groupCodes = hardwareXmlVO.getGroupCode();
|
||||
// 校验检查房间、柜体、加工组编号
|
||||
checkRoomBoxGroup(se, roomCode, hardwareXmlVO.getRoomName(), boxCode, hardwareXmlVO.getBoxName(), groupCodes);
|
||||
checkRoomBoxGroup(se, roomCode, boxCode, groupCodes);
|
||||
|
||||
// 设置全局参数
|
||||
String itemCode = hardwareXmlVO.getItemCode();
|
||||
@@ -939,7 +927,7 @@ public class DefaultOrderImportXmlParserHandler {
|
||||
String boxCode = assemblyXmlVO.getBoxCode();
|
||||
String groupCodes = assemblyXmlVO.getGroupCode();
|
||||
// 校验检查房间、柜体、加工组编号
|
||||
checkRoomBoxGroup(se, roomCode, assemblyXmlVO.getRoomName(), boxCode, assemblyXmlVO.getBoxName(), groupCodes);
|
||||
checkRoomBoxGroup(se, roomCode, boxCode, groupCodes);
|
||||
|
||||
// 设置全局参数
|
||||
String itemCode = assemblyXmlVO.getItemCode();
|
||||
@@ -1276,7 +1264,7 @@ public class DefaultOrderImportXmlParserHandler {
|
||||
// 设置全局参数
|
||||
inPoints = true;
|
||||
// 从标签属性生成points对象
|
||||
if(inGroove) {
|
||||
if (inGroove) {
|
||||
groovePointXmlVOS = getJavaBeanFromXmlAttr(PointXmlVOS.class, attributes);
|
||||
} else {
|
||||
pointXmlVOS = getJavaBeanFromXmlAttr(PointXmlVOS.class, attributes);
|
||||
@@ -1291,7 +1279,7 @@ public class DefaultOrderImportXmlParserHandler {
|
||||
if (ObjectUtil.isNotNull(pointXmlVOS) && CollUtil.isEmpty(points)) {
|
||||
throw ServiceExceptionUtil.exception(ORDER_IMPORT_DETAIL_VALID_ERROR, inIslet ? "孤岛点阵列表不可为空" : "槽点坐标列表不可为空");
|
||||
}
|
||||
if(inGroove) {
|
||||
if (inGroove) {
|
||||
groovePointXmlVOS.setPointXmlVOList(ListUtil.toList(points));
|
||||
} else {
|
||||
pointXmlVOS.setPointXmlVOList(ListUtil.toList(points));
|
||||
@@ -1355,7 +1343,7 @@ public class DefaultOrderImportXmlParserHandler {
|
||||
// 从标签属性生成grooves对象
|
||||
isletXmlVOS = getJavaBeanFromXmlAttr(IsletXmlVOS.class, attributes);
|
||||
if (ObjectUtil.isNotNull(isletXmlVOS)) {
|
||||
isletXmlVOS.setIsletXmlVOList(new ArrayList<>());
|
||||
isletXmlVOS.setIsletXmlVOList(new ArrayList<>());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1643,11 +1631,35 @@ public class DefaultOrderImportXmlParserHandler {
|
||||
* @param boxCode
|
||||
* @param groupCodes
|
||||
*/
|
||||
private void checkRoomBoxGroup(StartElement se, String roomCode, String roomName, String boxCode, String boxName, String groupCodes) {
|
||||
private void checkRoomBoxGroup(StartElement se, String roomCode, String boxCode, String groupCodes) {
|
||||
boolean roomEmpty = StringUtil.equals(roomCode, NOT_ASSIGNED_CODE);
|
||||
boolean bodyEmpty = StringUtil.equals(boxCode, NOT_ASSIGNED_CODE);
|
||||
String existKey = roomEmpty + "%" + bodyEmpty;
|
||||
if ((roomEmpty || bodyEmpty) && NOT_ASSIGNED_BODY_EXISTS_MAP.containsKey(existKey) && !NOT_ASSIGNED_BODY_EXISTS_MAP.get(existKey)) {
|
||||
String roomBodyKey = roomCode + boxCode;
|
||||
|
||||
RoomBoxXmlVO roomBoxXmlVO = roomBodyMap.get(roomBodyKey);
|
||||
RoomXmlVO roomXml = roomMap.get(roomCode);
|
||||
// 板件列表存在柜体没有缓存的
|
||||
if (ObjectUtil.isNull(roomBoxXmlVO)) {
|
||||
|
||||
|
||||
|
||||
// 检查roomCode
|
||||
if (!bodyEmpty) {
|
||||
throw ServiceExceptionUtil.exception(ORDER_IMPORT_BODYCODE_NOT_EXIST_VALID_ERROR, se, boxCode);
|
||||
}
|
||||
|
||||
String roomName = NOT_ASSIGNED;
|
||||
String boxName = NOT_ASSIGNED;
|
||||
// 房间缓存了取房间名
|
||||
if (ObjectUtil.isNotNull(roomXml)) {
|
||||
roomName = roomXml.getName();
|
||||
} else {
|
||||
// 检查roomCode
|
||||
if (!roomEmpty) {
|
||||
throw ServiceExceptionUtil.exception(ORDER_IMPORT_ROOMCODE_NOT_EXIST_VALID_ERROR, se, roomCode);
|
||||
}
|
||||
}
|
||||
|
||||
cachedDataList.add(OrderImportTempDataDO.builder()
|
||||
.id((Long) snowFlakeGenerator.nextId(null))
|
||||
.orderId(orderId)
|
||||
@@ -1660,20 +1672,22 @@ public class DefaultOrderImportXmlParserHandler {
|
||||
.createTime(LocalDateTime.now())
|
||||
.sort(sort++)
|
||||
.build());
|
||||
// 添加到标识缓存map
|
||||
NOT_ASSIGNED_BODY_EXISTS_MAP.put(existKey, true);
|
||||
}
|
||||
|
||||
// 校验板件的房间、柜体、加工组编号
|
||||
Set<String> bodyCodeSet = roomBodyCodeMap.get(roomCode);
|
||||
if (CollUtil.isNotEmpty(bodyCodeSet)) {
|
||||
if (!bodyCodeSet.contains(boxCode) && !StringUtils.equals(NOT_ASSIGNED_CODE, boxCode)) {
|
||||
throw ServiceExceptionUtil.exception(ORDER_IMPORT_BODYCODE_NOT_EXIST_VALID_ERROR, se, boxCode);
|
||||
}
|
||||
} else if (!StringUtils.equals(NOT_ASSIGNED_CODE, roomCode)) {
|
||||
throw ServiceExceptionUtil.exception(ORDER_IMPORT_ROOMCODE_NOT_EXIST_VALID_ERROR, se, roomCode);
|
||||
}
|
||||
|
||||
// // 校验板件的房间、柜体、加工组编号
|
||||
// Set<String> bodyCodeSet = roomBodyCodeMap.get(roomCode);
|
||||
// if (ObjectUtil.isNull(bodyCodeSet)) {
|
||||
// // 房间不存在roomCode且不是未命名房间的抛出提示
|
||||
// if (!StringUtils.equals(NOT_ASSIGNED_CODE, roomCode)) {
|
||||
//
|
||||
// }
|
||||
// } else if (CollUtil.isNotEmpty(bodyCodeSet)) {
|
||||
// // 房间下柜体没有该boxCode且不是未命名柜体的抛出提示
|
||||
// if (!bodyCodeSet.contains(boxCode) && !StringUtils.equals(NOT_ASSIGNED_CODE, boxCode)) {
|
||||
//
|
||||
// }
|
||||
// }
|
||||
|
||||
if (StringUtils.isNotEmpty(groupCodes) && !groupCodeSet.contains(groupCodes)) {
|
||||
throw ServiceExceptionUtil.exception(ORDER_IMPORT_GROUPCODE_NOT_EXIST_VALID_ERROR, se, groupCodes);
|
||||
|
||||
+2
-2
@@ -11,10 +11,10 @@ import java.io.Serializable;
|
||||
@NoArgsConstructor
|
||||
public class RoomBoxXmlVO implements Serializable {
|
||||
|
||||
// 房间名称
|
||||
// 柜体名称
|
||||
private String name;
|
||||
|
||||
// 房间编号
|
||||
// 柜体编号
|
||||
private String code;
|
||||
|
||||
// 房间高度
|
||||
|
||||
Reference in New Issue
Block a user