From 47d1d450d13755ab419923d53752c55b25a736bf Mon Sep 17 00:00:00 2001 From: lym <1994302445@qq.com> Date: Fri, 29 Nov 2024 16:24:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E6=9D=BF=E7=BC=96=E5=8F=B7=EF=BC=8C28=E6=97=A5=E7=89=88xml?= =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../executor/enums/ErrorCodeConstants.java | 1 + .../service/order/OrderServiceImpl.java | 81 ++++---- .../deviseData/structure/FieldConstants.java | 1 + .../admin/api/webcad/ApiTypeRealize.java | 13 +- .../admin/files/excel/ExcelTypeRealize.java | 59 ++---- .../admin/files/xml/VO/BlockXmlVO.java | 4 +- .../admin/files/xml/XMLUtil.java | 174 ++++++++++++------ .../admin/files/xml/XmlTypeRealize.java | 65 ++++--- 8 files changed, 224 insertions(+), 174 deletions(-) diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java index 31f75df7e..b452c75e9 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java @@ -40,6 +40,7 @@ public class ErrorCodeConstants { // ========== 生产单 TODO 补充编号 ========== public static final ErrorCode PHONE_NOT_LAWFUL = new ErrorCode(1_001_116_000, "手机号不合法"); public static final ErrorCode CUSTOM_ORDER_EXISTS = new ErrorCode(1_001_117_000, "自定义生产单号存在"); + public static final ErrorCode ORDER_EXISTS = new ErrorCode(1_001_117_000, "api导入生产单已存在"); public static final ErrorCode ORDER_PROCESS_NOT_EXISTS = new ErrorCode(1_001_119_001, "工序组不存在"); public static final ErrorCode ORDER_PROCESS_EXISTS = new ErrorCode(1_001_119_002, "该生产单工序组已经存在"); public static final ErrorCode PROCESS_GROUP_NOT_EXISTS = new ErrorCode(1_002_029_003, "工序组不存在"); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java index f2fe61310..17fa56535 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java @@ -50,6 +50,7 @@ import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper; import com.cf.imes.module.executor.dal.mysql.rawgoods.RawGoodsMapper; import com.cf.imes.module.executor.enums.OrderDeletedEnum; import com.cf.imes.module.executor.enums.OrderStatusEnum; +import com.cf.imes.module.executor.service.customplateno.CustomPlateNoGenerateService; import com.cf.imes.module.executor.service.plan.PlanService; import com.cf.imes.module.executor.util.deviseData.structure.FieldConstants; import com.cf.imes.module.executor.util.deviseData.structure.PlateDetail; @@ -135,6 +136,9 @@ public class OrderServiceImpl implements OrderService { @Resource private PartsMapper partsMapper; + @Resource + private CustomPlateNoGenerateService customPlateNoGenerateService; + private static final String SUBMIT_STATE = "1"; // 空订单 原生产系统 @@ -148,10 +152,6 @@ public class OrderServiceImpl implements OrderService { @Resource private PlanService planService; - // 重复使用的常量 - private static final String PLATE_GOODS_LIST_KEY = "plateGoodDOLists"; - private static final String GOODSDO_KEY = "goodsDO"; - @Override public void updateOrder(OrderSaveReqVO updateReqVO) { // 校验存在, 生产单未删除 @@ -383,8 +383,13 @@ public class OrderServiceImpl implements OrderService { @Override @Transactional(rollbackFor = Exception.class) public Long importApiData(Map listMap) { - OrderDO order = (OrderDO) listMap.get("orderDO"); + OrderDO order = (OrderDO) listMap.get(FieldConstants.ORDER); if (order != null) { + //判断是否已经导入 +// if (!validateOrderNoExists(order.getApiOrderId(), OrganContextHolder.getOrganId())) { +// throw exception(ORDER_EXISTS); +// } + validateCustomOrderNoExists(order.getCustomOrderNo()); String nickName = SecurityFrameworkUtils.getLoginUser().getNickname(); if (order.getSalesman() == null || order.getSalesman().equals("")) { @@ -393,25 +398,25 @@ public class OrderServiceImpl implements OrderService { if (order.getSplitter() == null || order.getSplitter().equals("")) { order.setSplitter(nickName); } - orderMapper.insert(order); } - List goodsDO = (List) listMap.get(GOODSDO_KEY); - List rawGoodsDO = (List) listMap.get("rawGoodsDO"); - List bodyDO = (List) listMap.get("bodyDO"); - List groupDO = (List) listMap.get("groupDO"); - List partsDO = (List) listMap.get("partsDO"); + List goodsDO = (List) listMap.get(FieldConstants.GOODS); + List rawGoodsDO = (List) listMap.get(FieldConstants.RAW_GOODS); + List bodyDO = (List) listMap.get(FieldConstants.BODY); + List groupDO = (List) listMap.get(FieldConstants.GROUP); + List partsDO = (List) listMap.get(FieldConstants.PARTS); List plateDO = (List) listMap.get(FieldConstants.PLATE); - List plateDetail = (List) listMap.get("plateDetail"); - List itemDO = (List) listMap.get("itemDO"); - List partsRemark = (List) listMap.get("partsRemark"); + List plateDetail = (List) listMap.get(FieldConstants.PLATE_DETAIL); + List itemDO = (List) listMap.get(FieldConstants.ITEM); + List partsRemark = (List) listMap.get(FieldConstants.PARTS_REMARK); Map> map = getPlateGoods(goodsDO);// 检验商品板材信息是否存在 - goodsDO = (List) map.get(GOODSDO_KEY); - List plateGoodDOS = (List) map.get(PLATE_GOODS_LIST_KEY); + goodsDO = (List) map.get(FieldConstants.GOODS); + List plateGoodDOS = (List) map.get(FieldConstants.PLATE_GOODS_LIST_KEY); // 配件信息 List partsDOS = getPartsGoods(partsDO); - + customPlateNoGenerateService.generateCustomPlateNo(order, plateDO); + orderMapper.insert(order); orderInputProcessor.batchInsert(rawGoodsDO, bodyDO, groupDO, partsDO, plateDO, itemDO, goodsDO, plateGoodDOS, partsDOS); List orderModelDOs = BeanUtils.toBean(plateDetail, OrderModelDO.class); @@ -443,28 +448,27 @@ public class OrderServiceImpl implements OrderService { @Override @Transactional(rollbackFor = Exception.class) public void importExcelData(OrderDO orderDO, Integer index, Map listMap) { - insertOrder(orderDO, index); + if (!Objects.equals(orderDO.getStatus(), OrderStatusEnum.NEW_ORDER.getStatus())) { return; } - List rawGoodsDO = (List) listMap.get("rawGoodsDOS"); - List goodsDO = (List) listMap.get("goodsDOS"); + List rawGoodsDO = (List) listMap.get(FieldConstants.RAW_GOODS); + List goodsDO = (List) listMap.get(FieldConstants.GOODS); - List bodyDO = (List) listMap.get("orderBodyDOS"); - List groupDO = (List) listMap.get("orderGroupDOS"); - List plateDO = (List) listMap.get("plateDOS"); - List partsDO = (List) listMap.get("orderPartsDOS"); - List itemDO = (List) listMap.get("orderItemDOS"); -// List orderModelDOS = (List) listMap.get("orderModelDOS"); - List orderPartsRemarks = (List) listMap.get("orderPartsRemarks"); - List plateDetail = (List) listMap.get("plateDetail"); + List bodyDO = (List) listMap.get(FieldConstants.BODY); + List groupDO = (List) listMap.get(FieldConstants.GROUP); + List plateDO = (List) listMap.get(FieldConstants.PLATE); + List partsDO = (List) listMap.get(FieldConstants.PARTS); + List itemDO = (List) listMap.get(FieldConstants.ITEM); + List orderPartsRemarks = (List) listMap.get(FieldConstants.PARTS_REMARK); + List plateDetail = (List) listMap.get(FieldConstants.PLATE_DETAIL); // 板材库匹配 Map> map = getPlateGoods(goodsDO);// 检验商品板材信息是否存在 excel - goodsDO = (List) map.get(GOODSDO_KEY); - List plateGoodDOS = (List) map.get(PLATE_GOODS_LIST_KEY); + goodsDO = (List) map.get(FieldConstants.GOODS); + List plateGoodDOS = (List) map.get(FieldConstants.PLATE_GOODS_LIST_KEY); // 配件库匹配 List partsDOList = getPartsGoods(partsDO); @@ -483,17 +487,14 @@ public class OrderServiceImpl implements OrderService { updateOrder(BeanUtils.toBean(orderDO, OrderSaveReqVO.class)); } } + + customPlateNoGenerateService.generateCustomPlateNo(orderDO, plateDO); + insertOrder(orderDO, index); orderInputProcessor.batchInsert(rawGoodsDO, bodyDO, groupDO, partsDO, plateDO, itemDO, goodsDO, plateGoodDOS, partsDOList); -// if (orderModelDOS != null && !orderModelDOS.isEmpty()) { -// orderInputProcessor.batchSaveModel(orderModelDOS); -// } + if (plateDetail != null && !plateDetail.isEmpty()){ List orderModelDOs = BeanUtils.toBean(plateDetail, OrderModelDO.class); -// if (!orderModelDOs.isEmpty()) { -// orderModelDOs.forEach(orderModelDO -> orderModelDO.setOrderId(orderDO.getId())); -// System.out.println("----" + orderModelDOs); orderInputProcessor.batchSaveModel(orderModelDOs); -// } } if (orderPartsRemarks != null && !orderPartsRemarks.isEmpty()) { orderInputProcessor.batchSaveOrderPartsModel(orderPartsRemarks); @@ -782,8 +783,8 @@ public class OrderServiceImpl implements OrderService { } } - map.put(GOODSDO_KEY, goodsLists); - map.put(PLATE_GOODS_LIST_KEY, plateGoodLists); + map.put(FieldConstants.GOODS, goodsLists); + map.put(FieldConstants.PLATE_GOODS_LIST_KEY, plateGoodLists); return map; } @@ -867,7 +868,7 @@ public class OrderServiceImpl implements OrderService { } // 判断是否已经导入 - private Boolean validateOrderNoExists(String orderNo, Long organId) { + private boolean validateOrderNoExists(String orderNo, Long organId) { if (orderMapper.selectCount(new LambdaQueryWrapper() .eq(OrderDO::getApiOrderId, orderNo) .eq(OrderDO::getDeleted, false) diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/FieldConstants.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/FieldConstants.java index 3c8a64581..03d11a2be 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/FieldConstants.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/FieldConstants.java @@ -16,5 +16,6 @@ public class FieldConstants { public static final String PLATE_DETAIL = "plateDetail"; public static final String PARTS_REMARK = "partsRemark"; + public static final String PLATE_GOODS_LIST_KEY = "plateGoodDOLists"; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java index eef4c1704..f8a8dae4e 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java @@ -14,12 +14,10 @@ import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO; import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO; import com.cf.imes.module.executor.enums.*; -import com.cf.imes.module.executor.service.customplateno.CustomPlateNoGenerateService; import com.cf.imes.module.executor.util.fileConversion.admin.SnowflakeIdWorker3rd; import com.cf.imes.module.executor.util.deviseData.structure.*; import com.cf.imes.module.system.api.dict.DictDataApi; import lombok.extern.slf4j.Slf4j; -import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -50,8 +48,6 @@ public class ApiTypeRealize { @Resource private ApiDataAchieve apiDataAchieve; - @Resource - private CustomPlateNoGenerateService customPlateNoGenerateService; private static final Integer X = 0; private static final Integer Y = 1; @@ -144,7 +140,7 @@ public class ApiTypeRealize { Map orderPlatesDO = (Map) platesDO.get("platesInfos"); if (orderPlatesDO != null) { // 需要添加自定义板编号 - plateAddGroupName(orderGroupDO, groupLists, orderPlatesDO); +// plateAddGroupName(orderGroupDO, groupLists, orderPlatesDO); map.put(FieldConstants.PLATE, new ArrayList<>(orderPlatesDO.values())); } @@ -782,8 +778,9 @@ public class ApiTypeRealize { .filterType("") .remark(remark) .organId(organId) -// .roomName(bodyInfos.get(plate.getLong(ProduceApiConstants.BD_BOX_ID)).getRoomName()) -// .bodyName(bodyInfos.get(plate.getLong(ProduceApiConstants.BD_BOX_ID)).getName()) + .roomName(bodyInfos.get(plate.getLong(ProduceApiConstants.BD_BOX_ID)).getRoomName()) + .bodyName(bodyInfos.get(plate.getLong(ProduceApiConstants.BD_BOX_ID)).getName()) + .customPlateNo(new StringBuilder()) .build(); // item 明细 OrderItemDO itemPlate = OrderItemDO.builder() @@ -913,7 +910,7 @@ public class ApiTypeRealize { map.put(Long.valueOf(blockNo), block); } } - System.out.println("map 板材 " + map); +// System.out.println("map 板材 " + map); return map; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelTypeRealize.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelTypeRealize.java index fe388c400..31441ef49 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelTypeRealize.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelTypeRealize.java @@ -17,6 +17,7 @@ import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO; import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO; import com.cf.imes.module.executor.enums.OrderItemTypeEnum; import com.cf.imes.module.executor.service.customplateno.CustomPlateNoGenerateService; +import com.cf.imes.module.executor.util.deviseData.structure.FieldConstants; import com.cf.imes.module.executor.util.deviseData.structure.PlateDetail; import com.cf.imes.module.executor.util.fileConversion.admin.SnowflakeIdWorker3rd; import com.cf.imes.module.system.api.dict.DictDataApi; @@ -49,8 +50,6 @@ public class ExcelTypeRealize { @Resource private DictDataApi dictDataApi; - @Resource - private CustomPlateNoGenerateService customPlateNoGenerateService; final String NOT_ASSIGNED = "未命名"; final String PLATE = "plate"; @@ -63,19 +62,18 @@ public class ExcelTypeRealize { return null; } -// List excelVOS = (List) list; + long startTime = System.currentTimeMillis(); + Map map = new HashMap<>(); Long organId = OrganContextHolder.getOrganId(); ArrayList rawGoodsDOS = new ArrayList<>(); ArrayList goodsDOS = new ArrayList<>(); - ArrayList plateGoodDOS = new ArrayList<>(); ArrayList orderBodyDOS = new ArrayList<>(); ArrayList orderGroupDOS = new ArrayList<>(); ArrayList plateDOS = new ArrayList<>(); ArrayList orderPartsDOS = new ArrayList<>(); ArrayList orderItemDOS = new ArrayList<>(); - ArrayList orderModuleExtraDOS = new ArrayList<>(); ArrayList plateDetail = new ArrayList<>(); ArrayList orderPartsRemarks = new ArrayList<>(); @@ -316,9 +314,9 @@ public class ExcelTypeRealize { .isSpecialShaped(false) .isSculpt(false) .remark(remarkExtract(combination.remarkJSON())) -// .roomName(roomName) -// .bodyName(bodyName) -// .processGroupName(combinationName) + .roomName(roomName) + .bodyName(bodyName) + .customPlateNo(new StringBuilder()) .build(); plateDOS.add(plateDO); @@ -334,22 +332,6 @@ public class ExcelTypeRealize { } else { //配件 - -// Long partsId = (Long) snowFlakeGenerator.nextId(null); -// OrderPartsDO orderPartsDO = OrderPartsDO.builder().id(partsId).orderId(orderId).goodsId(combination.getGoodsId()) -// .color(combination.getColor()).category(combination.getCategory()).type(combination.getType()) -// .length(Double.valueOf(StringUtils.isEmpty(combination.getGoodsHeight()) ? "0" : combination.getGoodsHeight())) -// .width(Double.valueOf(StringUtils.isEmpty(combination.getGoodsWidth()) ? "0" : combination.getGoodsWidth())) -// .thickness(Double.valueOf(StringUtils.isEmpty(combination.getGoodsThickness()) ? "0" : combination.getGoodsThickness())) -// .isComposite(Boolean.valueOf(combination.getIsComposite())) -// .name(combination.getGoodsName()).material(combination.getMaterial()).type(combination.getGoodType()) -// .model(combination.getModel()).spec(combination.getSpec()).brand(combination.getBrand()).factory(combination.getFactory()) -// .unit(combination.getUnit()).price(0.0).isComposite(false).remark(remarkExtract(combination.remarkJSON())).isComposite(false).build(); -// orderPartsDOS.add(orderPartsDO); -// // 配件备注信息存储 -// OrderPartsRemark orderPartsRemark = OrderPartsRemark.builder().partsId(partsId).orderId(orderId) -// .remark(remarkExtract(combination.remarkJSON())).build(); -// orderPartsRemarks.add(orderPartsRemark); OrderItemDO orderItemDO = OrderItemDO.builder().orderId(orderId).type(OrderItemTypeEnum.PARTS_ITEM.getStatus()) .roomId(roomName != " " ? roomId : null).bodyId(bodyName != " " ? bodyId : null).partsId(combination.getGoodId()).groupId(synthesisTypeName != " " ? groupId : null) .num(Double.valueOf(combination.getGoodsNumber())).build(); @@ -365,26 +347,23 @@ public class ExcelTypeRealize { }); }); orderBodyDO.setPlateNum(Integer.valueOf(plateCountByCabinetName[0].intValue())); -// if (orderBodyDO.getName() != null && !orderBodyDO.getName().trim().isEmpty()) { orderBodyDOS.add(orderBodyDO); -// } -// System.out.println(" ban-num " + plateCountByCabinetName[0]); }); }); - // 添加板材自定义板编号 -// customPlateNoGenerateService.generateCustomPlateNo(plateDOS); - map.put("rawGoodsDOS", rawGoodsDOS); - map.put("goodsDOS", goodsDOS); - map.put("plateGoodDOS", plateGoodDOS); - map.put("orderBodyDOS", orderBodyDOS); - map.put("orderGroupDOS", orderGroupDOS); - map.put("plateDOS", plateDOS); - map.put("orderPartsDOS", orderPartsDOS); - map.put("orderItemDOS", orderItemDOS); - map.put("orderModuleExtraDOS", orderModuleExtraDOS); - map.put("plateDetail", plateDetail); - map.put("orderPartsRemarks", orderPartsRemarks); + map.put(FieldConstants.RAW_GOODS, rawGoodsDOS); + map.put(FieldConstants.GOODS, goodsDOS); + map.put(FieldConstants.BODY, orderBodyDOS); + map.put(FieldConstants.GROUP, orderGroupDOS); + map.put(FieldConstants.PLATE, plateDOS); + map.put(FieldConstants.PARTS, orderPartsDOS); + map.put(FieldConstants.ITEM, orderItemDOS); + map.put(FieldConstants.PLATE_DETAIL, plateDetail); + map.put(FieldConstants.PARTS_REMARK, orderPartsRemarks); + long endTime = System.currentTimeMillis(); + long duration = endTime - startTime; + + System.out.println("方法运行耗时 excel 转换: " + duration + " 毫秒"); return map; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/BlockXmlVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/BlockXmlVO.java index 9db7fe517..d6c8b6706 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/BlockXmlVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/BlockXmlVO.java @@ -136,8 +136,8 @@ public class BlockXmlVO implements Serializable { private String boxCode; // 加工组号 - @XmlAttribute(name = "groupCode") - private String groupCode; + @XmlAttribute(name = "groupCodes") + private String groupCodes; // 柜体名称 @XmlAttribute(name = "groupName") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XMLUtil.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XMLUtil.java index d46c89914..bc54ef69d 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XMLUtil.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XMLUtil.java @@ -25,6 +25,8 @@ import java.time.temporal.ChronoUnit; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; import java.util.function.Supplier; @@ -72,9 +74,8 @@ public class XMLUtil { } // XML转为JAVA对象 - Object odfBody = XmlBuilder.xmlStrToOject(clazz, builder.toString()); - return odfBody; + return XmlBuilder.xmlStrToOject(clazz, builder.toString()); } catch (IOException e) { log.error("Error reading the file: " + file.getOriginalFilename(), e); } catch (Exception e) { @@ -186,53 +187,131 @@ public class XMLUtil { long startTime = System.currentTimeMillis(); AtomicBoolean error = new AtomicBoolean(true); - RoomXmlVOS roomXmlVOS = orderXmlVO.getRoomXmlVOS(); - if (roomXmlVOS != null) { - checkRoom(roomXmlVOS, error); - } + // 创建一个 CompletableFuture 来表示所有任务的组合 + CompletableFuture allTasks = CompletableFuture.allOf( + checkRoomAsync(orderXmlVO.getRoomXmlVOS(), error), + checkModulesAsync(orderXmlVO.getModuleXmlVOS(), error), + checkGroupsAsync(orderXmlVO.getGroupXmlVOS(), error), + checkMaterialsAsync(orderXmlVO.getMaterialXmlVO(), error) + ); - ModuleXmlVOS moduleXmlVOS = orderXmlVO.getModuleXmlVOS(); - if (moduleXmlVOS != null) { - checkModules(moduleXmlVOS, error); - } - - GroupXmlVOS grooveXmlVOS = orderXmlVO.getGroupXmlVOS(); - if (grooveXmlVOS != null) { - checkGroups(grooveXmlVOS, error); - } - - MaterialXmlVO materialXmlVO = orderXmlVO.getMaterialXmlVO(); - if (materialXmlVO != null) { - PlateXmlVOS plateXmlVOS = materialXmlVO.getPlateXmlVOS(); - - Map map = extractPlateDate(plateXmlVOS); - if (map != null) { - // 判断板块和归属code是否相匹配 - } - - if (plateXmlVOS != null && plateXmlVOS.getPlateXmlVOList().size() > 0) { - checkPlates(plateXmlVOS.getPlateXmlVOList(), error); - } - - AccessoryXmlVO accessoryXmlVO = materialXmlVO.getAccessoryXmlVO(); //配件 - if (accessoryXmlVO != null) { - checkEdgings(accessoryXmlVO.getEdgingXmlVOS(), error); - checkHardwares(accessoryXmlVO.getHardwareXmlVOS(), error); - } - - AssemblieXmlVOS assemblieXmlVOS = materialXmlVO.getAssemblieXmlVOS(); // 组件 - if (assemblieXmlVOS != null && assemblieXmlVOS.getAssemblyXmlVOList() != null && assemblieXmlVOS.getAssemblyXmlVOList().size() > 0) { - checkAssemblies(assemblieXmlVOS, error); - } + try { + // 等待所有任务完成 + allTasks.get(); + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + return false; // 如果有异常发生,返回 false } long endTime = System.currentTimeMillis(); long duration = endTime - startTime; - System.out.println("方法运行耗时: " + duration + " 毫秒"); + System.out.println("方法运行耗时 xml: " + duration + " 毫秒"); return error.get(); } + private CompletableFuture checkRoomAsync(RoomXmlVOS roomXmlVOS, AtomicBoolean error) { + return CompletableFuture.runAsync(() -> { + if (roomXmlVOS != null) { + checkRoom(roomXmlVOS, error); + } + }); + } + + private CompletableFuture checkModulesAsync(ModuleXmlVOS moduleXmlVOS, AtomicBoolean error) { + return CompletableFuture.runAsync(() -> { + if (moduleXmlVOS != null) { + checkModules(moduleXmlVOS, error); + } + }); + } + + private CompletableFuture checkGroupsAsync(GroupXmlVOS groupXmlVOS, AtomicBoolean error) { + return CompletableFuture.runAsync(() -> { + if (groupXmlVOS != null) { + checkGroups(groupXmlVOS, error); + } + }); + } + + private CompletableFuture checkMaterialsAsync(MaterialXmlVO materialXmlVO, AtomicBoolean error) { + return CompletableFuture.runAsync(() -> { + if (materialXmlVO != null) { + PlateXmlVOS plateXmlVOS = materialXmlVO.getPlateXmlVOS(); + + Map map = extractPlateDate(plateXmlVOS); + if (map != null) { + // 判断板块和归属code是否相匹配 + } + + if (plateXmlVOS != null && !plateXmlVOS.getPlateXmlVOList().isEmpty()) { + checkPlates(plateXmlVOS.getPlateXmlVOList(), error); + } + + AccessoryXmlVO accessoryXmlVO = materialXmlVO.getAccessoryXmlVO(); // 配件 + if (accessoryXmlVO != null) { + checkEdgings(accessoryXmlVO.getEdgingXmlVOS(), error); + checkHardwares(accessoryXmlVO.getHardwareXmlVOS(), error); + } + + AssemblieXmlVOS assemblieXmlVOS = materialXmlVO.getAssemblieXmlVOS(); // 组件 + if (assemblieXmlVOS != null && assemblieXmlVOS.getAssemblyXmlVOList() != null && !assemblieXmlVOS.getAssemblyXmlVOList().isEmpty()) { + checkAssemblies(assemblieXmlVOS, error); + } + } + }); + } +// public Boolean checkVO(OrderXmlVO orderXmlVO) { +// long startTime = System.currentTimeMillis(); +// AtomicBoolean error = new AtomicBoolean(true); +// +// RoomXmlVOS roomXmlVOS = orderXmlVO.getRoomXmlVOS(); +// if (roomXmlVOS != null) { +// checkRoom(roomXmlVOS, error); +// } +// +// ModuleXmlVOS moduleXmlVOS = orderXmlVO.getModuleXmlVOS(); +// if (moduleXmlVOS != null) { +// checkModules(moduleXmlVOS, error); +// } +// +// GroupXmlVOS grooveXmlVOS = orderXmlVO.getGroupXmlVOS(); +// if (grooveXmlVOS != null) { +// checkGroups(grooveXmlVOS, error); +// } +// +// MaterialXmlVO materialXmlVO = orderXmlVO.getMaterialXmlVO(); +// if (materialXmlVO != null) { +// PlateXmlVOS plateXmlVOS = materialXmlVO.getPlateXmlVOS(); +// +// Map map = extractPlateDate(plateXmlVOS); +// if (map != null) { +// // 判断板块和归属code是否相匹配 +// } +// +// if (plateXmlVOS != null && !plateXmlVOS.getPlateXmlVOList().isEmpty()) { +// checkPlates(plateXmlVOS.getPlateXmlVOList(), error); +// } +// +// AccessoryXmlVO accessoryXmlVO = materialXmlVO.getAccessoryXmlVO(); //配件 +// if (accessoryXmlVO != null) { +// checkEdgings(accessoryXmlVO.getEdgingXmlVOS(), error); +// checkHardwares(accessoryXmlVO.getHardwareXmlVOS(), error); +// } +// +// AssemblieXmlVOS assemblieXmlVOS = materialXmlVO.getAssemblieXmlVOS(); // 组件 +// if (assemblieXmlVOS != null && assemblieXmlVOS.getAssemblyXmlVOList() != null && !assemblieXmlVOS.getAssemblyXmlVOList().isEmpty()) { +// checkAssemblies(assemblieXmlVOS, error); +// } +// } +// +// long endTime = System.currentTimeMillis(); +// long duration = endTime - startTime; +// +// System.out.println("方法运行耗时 xml: " + duration + " 毫秒"); +// return error.get(); +// } + /** * @@ -1139,19 +1218,6 @@ public class XMLUtil { } } - // 数据格式+数据正数判断 - private Boolean checkNumber(String numberStr, Class targetType) { - boolean error = true; - if (ToolUtil.convertToType(numberStr, targetType)) { - if (!ToolUtil.checkNumber(numberStr)) { - error = false; - } - } else { - error = false; - } - return error; - } - // point 验证 private void checkPointRemoveZ(PointXmlVO pointXmlVO, AtomicBoolean flag, String name) { @@ -1186,7 +1252,7 @@ public class XMLUtil { code.put(ROOM_CODE, blockXmlVO.getRoomCode()); code.put(BODY_CODE, blockXmlVO.getBoxCode()); code.put(MODULE_CODE, blockXmlVO.getModuleCode()); - code.put(GROUP_CODE, blockXmlVO.getGroupCode()); + code.put(GROUP_CODE, blockXmlVO.getGroupCodes()); map.put(blockXmlVO.getProductionCode(), code); // 生产编号 } } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XmlTypeRealize.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XmlTypeRealize.java index 10a24cdbc..c32238441 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XmlTypeRealize.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XmlTypeRealize.java @@ -410,19 +410,28 @@ public class XmlTypeRealize { List partDOList = new ArrayList<>(partsDOInfos.values()); List partRemarks = new ArrayList<>(orderPartsRemarks.values()); - map.put("rawGoodsDOS", rawGoodsDOs); - map.put("goodsDOS", goodsDOs); - map.put("orderBodyDOS", orderBodyDOList); - map.put("orderGroupDOS", groupDOList); - map.put("plateDOS", plateDOs); - map.put("orderPartsDOS", partDOList); - map.put("orderItemDOS", itemDOList); - map.put("plateDetail", plateDetail); - map.put("orderPartsRemarks", partRemarks); + map.put(FieldConstants.RAW_GOODS, rawGoodsDOs); + map.put(FieldConstants.GOODS, goodsDOs); + map.put(FieldConstants.BODY, orderBodyDOList); + map.put(FieldConstants.GROUP, groupDOList); + map.put(FieldConstants.PLATE, plateDOs); + map.put(FieldConstants.PARTS, partDOList); + map.put(FieldConstants.ITEM, itemDOList); + map.put(FieldConstants.PLATE_DETAIL, plateDetail); + map.put(FieldConstants.PARTS_REMARK, partRemarks); return map; } + // groupCodes提取code + private String[] getGroupCode(String groupCode) { + if (groupCode == null) { + return new String[]{}; + } + groupCode = groupCode.replaceAll("\\[|\\]", ""); + return groupCode.split(","); + } + // id得到 private Map getId(PositionVO positionVO, Map> roomInfos, Map groupInfos, Double plateNum, Double unregularNum, Long orderId, Long organId) { @@ -766,10 +775,18 @@ public class XmlTypeRealize { } - public List plateInfoChange(List plateDetails, Long organId, Long orderId, Long goodsId, BlockXmlVOS blockXmlVOS, - List plateDOs, Map orderItemMap, Map partsDO, - Map> roomInfos, Map groupInfos, - Map> boxBasePositionMap, Map roomBasePositions) { + public List plateInfoChange(List plateDetails, + Long organId, + Long orderId, + Long goodsId, + BlockXmlVOS blockXmlVOS, + List plateDOs, + Map orderItemMap, + Map partsDO, + Map> roomInfos, + Map groupInfos, + Map> boxBasePositionMap, + Map roomBasePositions) { if (blockXmlVOS != null && blockXmlVOS.getBlockXmlVOList() == null || blockXmlVOS.getBlockXmlVOList().isEmpty()) { @@ -808,7 +825,7 @@ public class XmlTypeRealize { .boxName(blockXmlVO.getBoxName()) .boxCode(blockXmlVO.getBoxCode()) .groupName(blockXmlVO.getGroupName()) - .groupCode(blockXmlVO.getGroupCode()) + .groupCode(blockXmlVO.getGroupCodes()) .moduleName(blockXmlVO.getModuleName()) .moduleCode(blockXmlVO.getModuleCode()) .build(); @@ -850,6 +867,9 @@ public class XmlTypeRealize { .isDoor(doorType != 0) .openDoorType(doorType) .isSpecialShaped(convertToBoolean(blockXmlVO.getUnregular())) + .roomName(positionVO.getRoomName()) + .bodyName(positionVO.getBoxName()) + .customPlateNo(new StringBuilder()) .build(); orderItemMap.put(blockXmlVO.getProductionCode(), OrderItemDO.builder() @@ -886,7 +906,7 @@ public class XmlTypeRealize { .roomsName(blockXmlVO.getRoomName()) .bodyNo(blockXmlVO.getBoxCode()) .bodyName(blockXmlVO.getBoxName()) - .groupNo(blockXmlVO.getGroupCode()) + .groupNo(blockXmlVO.getGroupCodes()) .groupName(blockXmlVO.getGroupName()) .has2DModel(false) .has3DModel(false) @@ -942,21 +962,6 @@ public class XmlTypeRealize { } - -// private void addIslandDetail(PlateDetail plateDetail, IsletXmlVOS isletXmlVOS) { -// if (isletXmlVOS != null && ObjectUtils.allNull(isletXmlVOS)) { -// if (isletXmlVOS.getIsletXmlVOList() != null && !isletXmlVOS.getIsletXmlVOList().isEmpty()) { -// for (IsletXmlVO isletXmlVO : isletXmlVOS.getIsletXmlVOList()) { -// ModelDetail modelDetail = ModelDetail.builder() -// .id(Integer.valueOf(isletXmlVO.getId())) -//// .parentId(Integer.valueOf(isletXmlVO.getSubIDs())) -// .pointList(addPointDetail(isletXmlVO.getPointXmlVOS())).build(); -// plateDetail.getContourDetail().add(modelDetail); -// } -// } -// } -// } - // 小板关联配件添加 private void addParts(PlateDetail plateDetail, CorrelationXmlVOS correlationXmlVOS, Map partsDOMap) { List partsInfos = new ArrayList<>();