diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/DictTypeConstants.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/DictTypeConstants.java index 693d813c1..6339ff61c 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/DictTypeConstants.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/DictTypeConstants.java @@ -22,4 +22,5 @@ public interface DictTypeConstants { // ========== 单位 模块 ========== String UNIT_LENGTH = "length_unit"; // 长度单位 String UNIT_AREA = "area_unit"; // 面积单位 + String UNIT_NUMBER = "area_number"; // 个数单位 } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java index debcee335..f4ba81877 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java @@ -6,6 +6,7 @@ import com.cf.imes.framework.common.pojo.CommonResult; import com.cf.imes.framework.common.pojo.PageParam; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.util.object.BeanUtils; +import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator; import com.cf.imes.framework.operatelog.core.annotations.OperateLog; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.executor.controller.admin.order.vo.order.*; @@ -20,10 +21,12 @@ import com.cf.imes.module.executor.util.ExcelWriterUtil; import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataAchieve; import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiTypeRealize; import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.ExcelReadUtil; +import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.ExcelTypeRealize; import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderPlateImportExcelVO; import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.VO.OrderXmlVO; import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.XMLUtil; import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.XmlBuilder; +import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.XmlTypeRealize; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; @@ -41,6 +44,7 @@ import java.io.File; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.concurrent.ExecutionException; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -87,7 +91,14 @@ public class OrderController { @Resource private XMLUtil xmlUtil; + @Resource + private ExcelTypeRealize excelTypeRealize; + @Resource + private SnowFlakeGenerator snowFlakeGenerator; + + @Resource + private XmlTypeRealize xmlTypeRealize; @PutMapping("/update") @Operation(summary = "更新生产单") @PreAuthorize("@ss.hasPermission('production:manager-list:edit')") @@ -229,46 +240,6 @@ public class OrderController { } } -// public CommonResult test(@RequestParam(value = "orderNo") String orderNo) -// throws InterruptedException, ExecutionException { -// -// Long orderId = (Long) identifierGenerator.nextId(null); -// Long organId = getUserOrganId(); -// -// JSONObject oauth = apiDataAchieve.getApiToken(organId).get(); -// String token = oauth.getJSONObject("info").getString("access_token"); -// String shopId = oauth.getJSONObject("info").getString("shop_id"); -// JSONObject order = apiDataAchieve.getApiOrder(token, shopId, orderNo).get(); -// if (!order.getString("err_code").equals("0")) { -// throw exception(PLATE_PLAN_DATA_ERROR); -// } -// if (order.getJSONArray("data") == null) { -// throw exception(PLATE_PLAN_DATA_NULL); -// } -// JSONObject dataPlates = apiDataAchieve.getApiPlateProData(token, orderNo).get(); -// JSONObject dataParts = apiDataAchieve.getApiPartsMessage(token, orderNo).get(); -// JSONObject dataBody = apiDataAchieve.getApiBodyMessage(token, orderNo).get(); -// JSONObject dataGoods = apiDataAchieve.getApiGoodsMessage(token, orderNo).get(); -// JSONObject plate = apiDataAchieve.getApiPlateDetailMessage(token, orderNo).get(); -// JSONObject dataModule = apiDataAchieve.getApiGroupMessage(token, orderNo).get(); -// JSONObject block = apiDataAchieve.getApiBlocksMessage(token, orderNo).get(); -// -// CompletableFuture.runAsync(() -> { -// try { -// DynamicDataSourceContextHolder.push("slave"); -// orderService.importApiData(order,dataPlates,dataParts,dataBody,dataGoods,plate,dataModule,block,orderNo, orderId, organId); -// DynamicDataSourceContextHolder.clear(); -// } catch (Exception e) { -// -// log.error(" 1: ", e); -// } -// }, asyncExecutor).exceptionally(e -> { -// log.error("error", e); -// return null; -// }); -// -// return success(orderId); -// } @PostMapping("/importFile") @Operation(summary = "生产单文件导入新增/导入板材") @@ -287,6 +258,7 @@ public class OrderController { HttpServletResponse response) throws Exception { List list = null; OrderXmlVO orderXmlVO = null; + Map> listMap = null; OrderDO orderDO = null; Map mapOrder = null; @@ -304,6 +276,7 @@ public class OrderController { Map mapChange = excelReadUtil.changeOrderDO(mapOrder); mapOrder = (Map) mapChange.get("file"); orderDO = (OrderDO) mapChange.get("order"); + orderDO.setId((Long) snowFlakeGenerator.nextId(null)); flag = (Boolean) mapChange.get("error"); } } else { @@ -332,6 +305,7 @@ public class OrderController { orderDO.setStatus(OrderStatusEnum.EMPTY.getStatus()); } else { orderDO.setStatus(OrderStatusEnum.NEW_ORDER.getStatus()); + listMap = excelTypeRealize.changeDate(list, orderDO.getId()); } } if (!flag) { @@ -347,12 +321,13 @@ public class OrderController { if (orderXmlVO != null) { mapOrder = xmlUtil.changeDate(orderXmlVO, getUserOrganId()); // 生产单数据格式验证 orderDO = (OrderDO) mapOrder.get("order"); + orderDO.setId((Long) snowFlakeGenerator.nextId(null)); flag = (Boolean) mapOrder.get("error"); } } else { orderDO = orderService.getOrder(orderId); if (orderDO == null) { - orderXmlVO = new OrderXmlVO().setMemo("生产单号不存在"); + orderXmlVO = new OrderXmlVO().setMemo("---< 生产单号不存在 >---"); flag = false; } } @@ -365,14 +340,17 @@ public class OrderController { orderXmlVO = new OrderXmlVO().setMemo("生产单内容为空"); flag = false; } else if (orderDO.getCustomOrderNo() != null && !orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())) { - orderXmlVO.setOrderCode(orderXmlVO.getOrderCode() + "自定义单号重复"); + orderXmlVO.setOrderCode(orderXmlVO.getOrderCode() + "---< 自定义单号重复 >---"); flag = false; } else if (flag){ // 生产单的内容正确 - if (orderXmlVO.getMaterialXmlVO().getPlateXmlVOS().getPlateXmlVOList().size() == 0) { + if (orderXmlVO.getMaterialXmlVO() == null || orderXmlVO.getMaterialXmlVO().getPlateXmlVOS() == null || + orderXmlVO.getMaterialXmlVO().getPlateXmlVOS().getPlateXmlVOList() == null || + orderXmlVO.getMaterialXmlVO().getPlateXmlVOS().getPlateXmlVOList().size() == 0) { orderDO.setStatus(OrderStatusEnum.EMPTY.getStatus()); } else { orderDO.setStatus(OrderStatusEnum.NEW_ORDER.getStatus()); flag = xmlUtil.checkVO(orderXmlVO); + listMap = xmlTypeRealize.goodsInfoChange(orderXmlVO, orderDO.getId(), getUserOrganId()); } } if (!flag){ @@ -381,7 +359,7 @@ public class OrderController { return; } } - orderService.importExcelData(orderDO, type , index, list, orderXmlVO); + orderService.importExcelData(orderDO, index, listMap); } catch (Exception e) { log.error("文件导入异常", e); if (type == 0) { diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/ordermodel/OrderModelDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/ordermodel/OrderModelDO.java index 849fddde0..2de67235b 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/ordermodel/OrderModelDO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/ordermodel/OrderModelDO.java @@ -2,10 +2,7 @@ package com.cf.imes.module.executor.dal.dataobject.ordermodel; import com.alibaba.fastjson.JSONObject; import com.cf.imes.framework.es.core.dal.ESDocument; -import com.cf.imes.module.executor.util.deviseData.structure.BasePosition; -import com.cf.imes.module.executor.util.deviseData.structure.HoleDetail; -import com.cf.imes.module.executor.util.deviseData.structure.ModelDetail; -import com.cf.imes.module.executor.util.deviseData.structure.PointDetail; +import com.cf.imes.module.executor.util.deviseData.structure.*; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; @@ -48,6 +45,8 @@ public class OrderModelDO extends ESDocument { @Schema(description = "小板类型") private String boardType; + @Schema(description = "板件配件信息") + private List partsInfos; @Schema(description = "开料长") private BigDecimal splitLength; @@ -69,8 +68,14 @@ public class OrderModelDO extends ESDocument { private List pointDetail; @Schema(description = "原始点明细列表") private List rawPointDetail; + @Schema(description = "坯料点明细") + private List basePointDetail ; //坯料点明细 + @Schema(description = "holes数量集合 count=孔数量 countFaceA=正面垂直孔数量] countFaceB=反面垂直孔数量] countSide=水平侧孔数量] countSideL=左侧孔数量] countSideR=右侧孔数量 countSideU=上侧孔数量 countSideD=下侧孔数量 countBevelled=斜面孔数量 countLocking=偏心轮/锁定孔数量 countBuildIn=预埋件/插入孔数量 countHinge=铰链孔数量 countThrough=通孔(对穿孔)/挖穿孔数量]") + private Map holeCount;//孔类型数量集合 @Schema(description = "孔明细列表") private List holeDetail; + @Schema(description = "凹槽数量集合") + private Map contourCount;//凹槽数量集合 @Schema(description = "造型明细(凹槽)") private List contourDetail; @Schema(description = "造型明细(孤岛,现在是xml数据格式添加)") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java index 4a2cb3393..9f9d2f55f 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java @@ -101,15 +101,11 @@ public interface OrderService { * @date 2024/3/30 */ Long importApiData(Map> listMap); - void importApiData(JSONObject order, JSONObject dataPlates, JSONObject dataParts - , JSONObject dataBody, JSONObject dataGoods - , JSONObject plates, JSONObject dataModule - , JSONObject dataBlocks, String orderNo,Long orderId, Long organId); /** * 文件数据导入 */ - void importExcelData(OrderDO orderDO, Integer type, Integer index, List list, OrderXmlVO orderXmlVO); + void importExcelData(OrderDO orderDO, Integer index, Map> mapOrder); /** * 生产导入文件模板下载 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 484947b3c..cbcb5aae2 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 @@ -520,34 +520,10 @@ public class OrderServiceImpl implements OrderService { } @Override -// @Async @Transactional(rollbackFor = Exception.class) - public void importApiData(JSONObject order, JSONObject dataPlates, JSONObject dataParts - , JSONObject dataBody, JSONObject dataGoods - , JSONObject plates, JSONObject dataModule - , JSONObject dataBlocks, String orderNo,Long orderId, Long organId) { -// RequestContextHolder.setRequestAttributes(requestAttributes); - - String nickName = SecurityFrameworkUtils.getLoginUser().getNickname(); - Map> listMap = apiTypeRealize.apiPlateDataChange( - order, - dataPlates,//板件生产信息 - dataParts,// 配件信息 - dataBody, // 柜体信息 - dataGoods, // 商品信息 - plates, // 板件明细 - dataModule,// 加工组信息 - dataBlocks,// 板材数据 - orderNo,// 原始板编号 - orderId, - organId); - - List orderDOS = (List) listMap.get("orderDO"); - if (orderDOS != null && orderDOS.size() > 0) { - OrderDO orderDO = orderDOS.get(0); - validateCustomOrderNoExists(orderDO.getCustomOrderNo()); - - orderDO.setCreator(nickName).setUpdater(nickName); + public void importExcelData(OrderDO orderDO, Integer index, Map> listMap) { + if (index == 0) { + String nickName = Objects.requireNonNull(SecurityFrameworkUtils.getLoginUser()).getNickname(); if (orderDO.getSalesman() == null || orderDO.getSalesman().equals("")) { orderDO.setSalesman(nickName); } @@ -556,61 +532,7 @@ public class OrderServiceImpl implements OrderService { } orderMapper.insert(orderDO); } - List goodsDO = (List) listMap.get("goodsDO"); - 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 plateDO = (List) listMap.get("platesDO"); - List plateDetail = (List) listMap.get("plateDetail"); - List itemDO = (List) listMap.get("itemDO"); - List partsRemark = (List) listMap.get("partsRemark"); - - Map> map = getPlateGoods(goodsDO);// 检验商品板材信息是否存在 - goodsDO = (List) map.get("goodsDO"); - List plateGoodDOS = (List) map.get("plateGoodDOLists"); - - - orderInputProcessor.batchInsert(rawGoodsDO, bodyDO, groupDO, partsDO, plateDO, itemDO, goodsDO, plateGoodDOS); - List orderModelDOs = BeanUtils.toBean(plateDetail, OrderModelDO.class); - - if (orderModelDOs.size() > 0) { - orderModelDOs.forEach(orderModelDO -> orderModelDO.setOrderId(orderDOS.get(0).getId())); - orderInputProcessor.batchSaveModel(orderModelDOs); - } - if (partsRemark.size() > 0) { - orderInputProcessor.batchSaveOrderPartsModel(partsRemark); - } - - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void importExcelData(OrderDO orderDO, Integer type, Integer index, List list, OrderXmlVO orderXmlVO) { - if (index == null || index == 0) { - orderDO.setId((Long) snowFlakeGenerator.nextId(null)); - String nickName = SecurityFrameworkUtils.getLoginUser().getNickname(); - if (orderDO.getSalesman() == null || orderDO.getSalesman().equals("")) { - orderDO.setSalesman(nickName); - } - if (orderDO.getSplitter() == null || orderDO.getSplitter().equals("")) { - orderDO.setSplitter(nickName); - } - orderMapper.insert(orderDO); - } - Map> listMap = null; - - if (type == 0){ - if (list != null && list.size() > 0) { - listMap = excelTypeRealize.changeDate(list, orderDO.getId()); - } - } else if (type == 1) { - - } else if (type == 2) { - if (orderXmlVO != null) { - listMap = xmlTypeRealize.goodsInfoChange(orderXmlVO, orderDO.getId(), getUserOrganId()); - } - } + if (Objects.equals(orderDO.getStatus(), OrderStatusEnum.NEW_ORDER.getStatus())) { List rawGoodsDO = (List) listMap.get("rawGoodsDOS"); List goodsDO = (List) listMap.get("goodsDOS"); @@ -628,17 +550,17 @@ public class OrderServiceImpl implements OrderService { List plateGoodDOS = (List) map.get("plateGoodDOLists"); - if (index != null && index != 0) { + if (index != 0) { roomCabinetProcessGroupMatch(orderDO.getId(), bodyDO, itemDO); - if (orderDO.getStatus() == OrderStatusEnum.EMPTY.getStatus()) { + if (Objects.equals(orderDO.getStatus(), OrderStatusEnum.EMPTY.getStatus())) { orderDO.setStatus(OrderStatusEnum.NEW_ORDER.getStatus()); updateOrder(BeanUtils.toBean(orderDO, OrderSaveReqVO.class)); } - if (orderDO.getStatus() == OrderStatusEnum.FINISH_PRODUCTION.getStatus()) { + if (Objects.equals(orderDO.getStatus(), OrderStatusEnum.FINISH_PRODUCTION.getStatus())) { orderDO.setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus()); updateOrder(BeanUtils.toBean(orderDO, OrderSaveReqVO.class)); } - if (orderDO.getPackaged() == OrderPackageStatusEnum.PACKAGED.getStatus()) { + if (Objects.equals(orderDO.getPackaged(), OrderPackageStatusEnum.PACKAGED.getStatus())) { orderDO.setPackaged(OrderPackageStatusEnum.PACKAGING.getStatus()); updateOrder(BeanUtils.toBean(orderDO, OrderSaveReqVO.class)); } @@ -657,6 +579,7 @@ public class OrderServiceImpl implements OrderService { if (orderPartsRemarks != null && orderPartsRemarks.size() > 0) { orderInputProcessor.batchSaveOrderPartsModel(orderPartsRemarks); } + } } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/OffSetList.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/OffSetList.java index 2c5338460..7b22d358e 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/OffSetList.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/OffSetList.java @@ -36,6 +36,4 @@ public class OffSetList { @Schema(description = "二维刀路的属性-刀的半径") private Double radius; - @Schema(description = "面向类型(0正面, 1反面, 2侧面)") - private String faceType; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/PartsInfo.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/PartsInfo.java index e6f8a2083..827d88379 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/PartsInfo.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/PartsInfo.java @@ -14,43 +14,12 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class PartsInfo { - private String id; // 配件标识 + private Long id; // 配件标识 private String name; // 配件名称 - -// 配件所属信息 - private String roomName; //房间名称 - private String bodyName; //柜体名 - private Integer bodyNo; // 柜体编号 - - -// 柜体成倍拆单的倍数 - private Integer multiNum; - // 单个配件的数量 private Double partNum; -// 商品信息 - private String goodsNo; // 商品编码 - private Long goodId; // 商品对应标识 - private String material; //材质 - private String color; //颜色 - private String factory; //商品生产厂商 - private String brand; //商品品牌 - private String model; //商品型号 - private String unit; //商品单位 - private Double price; // 配件价格 - - private Boolean isComposite; // 是否为配件 - private String groupName; // 组件名称 - private String processGroup; // 五金加工组 - private String objectType; // 五金类型 - private String objectSpecExtras; // 五金额外规格 - private Double goodsNumber; //产品数量为特殊处理,板件和配件都有数量 - - private String doorRemark; // 门板组件铰链备注 - private String hingeRemark; // 门板组件拉手备注 - private String remark; - private String specialRemark; // 特殊备注(Json字符串) - +// 配件数量单位 + private String unit; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/PlateDetail.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/PlateDetail.java index 51bdb5a22..153fbac83 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/PlateDetail.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/PlateDetail.java @@ -19,6 +19,10 @@ import java.util.Map; @AllArgsConstructor @NoArgsConstructor public class PlateDetail{ +// 组织id + private Long organId; +// 生产单id + private Long orderId; // 板名称 private String name; // 板id @@ -39,6 +43,8 @@ public class PlateDetail{ private String roomNo; // 房间号 private String bodyName; //柜体名 private String bodyNo; // 柜体号 + private String groupName; //加工组号 + private String groupNo; // 加工组名称 // 柜体 长 宽 深 private Double width; private Double height; @@ -95,8 +101,11 @@ public class PlateDetail{ private BasePosition plateBasePosition; // 板件基准点坐标 private List pointDetail ; //点明细,表示小板外围轮廓的几个转折点(不含封边) private List rawPointDetail ; //原始点明细(含封边) + private List basePointDetail ; //坯料点明细 + private Map holeCount;//孔类型数量集合 private List holeDetail ; //孔明细,表示板上的孔 + private Map contourCount;//凹槽数量集合 private List contourDetail ; //造型明细(凹槽) private List isletsDetail ; //造型明细(孤岛) diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/PointDetail.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/PointDetail.java index dc08afd60..24f36eceb 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/PointDetail.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/PointDetail.java @@ -33,4 +33,7 @@ public class PointDetail { // 点的封边尺寸 @Schema(description = "点的封边尺寸,封边尺寸,封边的厚度,长同边长") private BigDecimal sealSize; + + @Schema(description = "加工工艺") + private String process; } 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/PositionVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/PositionVO.java index 89d14e4c3..2bf71b0fd 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/PositionVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/PositionVO.java @@ -1,12 +1,20 @@ package com.cf.imes.module.executor.util.fileConversion.admin.files.xml; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlAttribute; /** * xml中房间、柜体、加工组的位置信息 */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor public class PositionVO { @Schema(name = "房间名称") 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/AssemblyXmlVO.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/AssemblyXmlVO.java index 01f5907fc..9b1e55fb9 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/AssemblyXmlVO.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/AssemblyXmlVO.java @@ -99,6 +99,10 @@ public class AssemblyXmlVO implements Serializable { @XmlAttribute(name = "groupCode") private String groupCode; + // 加工组名称 + @XmlAttribute(name = "groupName") + private String groupName; + // 模块名称 @XmlAttribute(name = "moduleName") private String moduleName; 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 ab2976392..8d99dee9d 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 @@ -139,6 +139,10 @@ public class BlockXmlVO implements Serializable { @XmlAttribute(name = "groupCode") private String groupCode; + // 柜体名称 + @XmlAttribute(name = "groupName") + private String groupName; + // 模块名称 @XmlAttribute(name = "moduleName") private String moduleName; 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/EdgingXmlVO.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/EdgingXmlVO.java index c38ec8913..933a947e5 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/EdgingXmlVO.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/EdgingXmlVO.java @@ -1,6 +1,7 @@ package com.cf.imes.module.executor.util.fileConversion.admin.files.xml.VO; import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @@ -8,6 +9,7 @@ import javax.xml.bind.annotation.*; import java.io.Serializable; @Data +@Builder @AllArgsConstructor @NoArgsConstructor @XmlRootElement(name = "Edging") 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/ExtraVO.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/ExtraVO.java index 146d789e7..3ad1516be 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/ExtraVO.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/ExtraVO.java @@ -39,6 +39,6 @@ public class ExtraVO { private List edgeRemarks; @Schema(description ="封边备注" ) - private List rectSealDetail; + private List rectSealDetail; } 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/HardwareXmlVO.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/HardwareXmlVO.java index 49eb4d426..c9744e94b 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/HardwareXmlVO.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/HardwareXmlVO.java @@ -99,6 +99,10 @@ public class HardwareXmlVO implements Serializable { @XmlAttribute(name = "groupCode") private String groupCode; + // 加工组名称 + @XmlAttribute(name = "groupName") + private String groupName; + // 模块名称 @XmlAttribute(name = "moduleName") private String moduleName; 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/PointXmlVO.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/PointXmlVO.java index 566e92a21..bf3f4c128 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/PointXmlVO.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/PointXmlVO.java @@ -85,4 +85,12 @@ public class PointXmlVO implements Serializable { // 边备注信息 @XmlAttribute(name = "remark") private String remark; + + // 单边封边尺寸 + @XmlAttribute(name = "count") + private String count; + + // 封边尺寸单位 + @XmlAttribute(name = "countUnit") + private String countUnit; } 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/RectSealVO.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/RectSealVO.java index 575754cba..14d0ec52d 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/RectSealVO.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/RectSealVO.java @@ -16,15 +16,15 @@ import lombok.NoArgsConstructor; public class RectSealVO { @Schema(description ="点id" ) - private String PointID; + private String pointID; @Schema(description ="预留边" ) - private String ReservedEdge; + private String reservedEdge; @Schema(description ="封边颜色" ) - private String SealColor; + private String sealColor; @Schema(description ="封边尺寸" ) - private String SealSize; + private String sealSize; } 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 210994638..e708a54aa 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 @@ -33,6 +33,9 @@ public class XMLUtil { final String POSITIVE_ERR = "数据需为正数"; final String LONG_ERR = "数据长度不符合(共8位整数位5位,小数位3位)"; + final String NOT_ASSIGNED = "未命名"; + final String NOT_ASSIGNED_CODE = "未命编号"; + @Resource private DictDataApi dictDataApi; @@ -247,6 +250,24 @@ public class XMLUtil { assemblyXmlVO.setUnit("---< 组件数量单位不能为空 >---"); flag = false; } + if (StringUtils.isEmpty(assemblyXmlVO.getRoomCode())) { + assemblyXmlVO.setRoomCode(NOT_ASSIGNED_CODE); + } + if (StringUtils.isEmpty(assemblyXmlVO.getRoomName())) { + assemblyXmlVO.setRoomName(NOT_ASSIGNED); + } + if (StringUtils.isEmpty(assemblyXmlVO.getBoxCode())) { + assemblyXmlVO.setBoxCode(NOT_ASSIGNED_CODE); + } + if (StringUtils.isEmpty(assemblyXmlVO.getBoxName())) { + assemblyXmlVO.setBoxName(NOT_ASSIGNED); + } +// if (StringUtils.isEmpty(assemblyXmlVO.getGroupCode())) { +// assemblyXmlVO.setGroupCode(NOT_ASSIGNED_CODE); +// } +// if (StringUtils.isEmpty(assemblyXmlVO.getGroupName())) { +// assemblyXmlVO.setGroupName(NOT_ASSIGNED); +// } } } } @@ -254,6 +275,24 @@ public class XMLUtil { private void checkHardwares(HardwareXmlVOS hardwareXmlVOS, Boolean flag) { if (hardwareXmlVOS != null && hardwareXmlVOS.getHardwareXmlVOList().size() > 0) { for (HardwareXmlVO hardwareXmlVO : hardwareXmlVOS.getHardwareXmlVOList()) { + if (StringUtils.isEmpty(hardwareXmlVO.getRoomCode())) { + hardwareXmlVO.setRoomCode(NOT_ASSIGNED_CODE); + } + if (StringUtils.isEmpty(hardwareXmlVO.getRoomName())) { + hardwareXmlVO.setRoomName(NOT_ASSIGNED); + } + if (StringUtils.isEmpty(hardwareXmlVO.getBoxCode())) { + hardwareXmlVO.setBoxCode(NOT_ASSIGNED_CODE); + } + if (StringUtils.isEmpty(hardwareXmlVO.getBoxName())) { + hardwareXmlVO.setBoxName(NOT_ASSIGNED); + } +// if (StringUtils.isEmpty(hardwareXmlVO.getGroupCode())) { +// hardwareXmlVO.setGroupCode(NOT_ASSIGNED_CODE); +// } +// if (StringUtils.isEmpty(hardwareXmlVO.getGroupName())) { +// hardwareXmlVO.setGroupName(NOT_ASSIGNED); +// } if (StringUtils.isEmpty(hardwareXmlVO.getName())) { hardwareXmlVO.setName("---< 五金名称不能为空 >---"); flag = false; @@ -290,6 +329,24 @@ public class XMLUtil { private void checkEdgings(EdgingXmlVOS edgingXmlVOS, Boolean flag) { if (edgingXmlVOS != null && edgingXmlVOS.getEdgingXmlVOList().size() > 0) { for (EdgingXmlVO edgingXmlVO : edgingXmlVOS.getEdgingXmlVOList()) { + if (StringUtils.isEmpty(edgingXmlVO.getRoomCode())) { + edgingXmlVO.setRoomCode(NOT_ASSIGNED_CODE); + } + if (StringUtils.isEmpty(edgingXmlVO.getRoomName())) { + edgingXmlVO.setRoomName(NOT_ASSIGNED); + } + if (StringUtils.isEmpty(edgingXmlVO.getBoxCode())) { + edgingXmlVO.setBoxCode(NOT_ASSIGNED_CODE); + } + if (StringUtils.isEmpty(edgingXmlVO.getBoxName())) { + edgingXmlVO.setBoxName(NOT_ASSIGNED); + } +// if (StringUtils.isEmpty(edgingXmlVO.getGroupCode())) { +// edgingXmlVO.setGroupCode(NOT_ASSIGNED_CODE); +// } +// if (StringUtils.isEmpty(edgingXmlVO.getGroupName())) { +// edgingXmlVO.setGroupName(NOT_ASSIGNED); +// } if (StringUtils.isEmpty(edgingXmlVO.getName())) { edgingXmlVO.setName("---< 封边条名称不能为空 >---"); flag = false; @@ -365,6 +422,12 @@ public class XMLUtil { } } for (RoomXmlVO room : roomXmlVOS.getRoomXmlVOList()) { + if (StringUtils.isEmpty(room.getName())) { + room.setName(NOT_ASSIGNED); + } + if (StringUtils.isEmpty(room.getCode())) { + room.setCode(NOT_ASSIGNED_CODE); + } if (room != null) { if (!StringUtils.isEmpty(room.getHeight())) { Boolean flag = checkNumber(room.getHeight().trim(), Double.class); @@ -557,6 +620,12 @@ public class XMLUtil { } else { box.setAxisZrotate("0"); } + if (StringUtils.isEmpty(box.getName())) { + box.setName(NOT_ASSIGNED); + } + if (StringUtils.isEmpty(box.getCode())) { + box.setCode(NOT_ASSIGNED_CODE); + } } } @@ -582,6 +651,12 @@ public class XMLUtil { // 模块数据格式验证 public void checkModuleList(List moduleXmlVOSList, Boolean error) { for (ModuleXmlVO module : moduleXmlVOSList) { + if (StringUtils.isEmpty(module.getName())) { + module.setName(NOT_ASSIGNED); + } + if (StringUtils.isEmpty(module.getCode())) { + module.setCode(NOT_ASSIGNED_CODE); + } if (!StringUtils.isEmpty(module.getLength())) { Boolean flag = checkNumber(module.getLength().trim(), Double.class); if (!flag) { @@ -633,6 +708,12 @@ public class XMLUtil { // 加工组数据格式验证 public void checkGroupList(List groupXmlVOList, Boolean error) { for (GroupXmlVO group : groupXmlVOList) { + if (StringUtils.isEmpty(group.getName())) { + group.setName(NOT_ASSIGNED); + } + if (StringUtils.isEmpty(group.getCode())) { + group.setCode(NOT_ASSIGNED_CODE); + } if (!StringUtils.isEmpty(group.getLength())) { Boolean flag = checkNumber(group.getLength().trim(), Double.class); if (!flag) { @@ -1050,12 +1131,24 @@ public class XMLUtil { error = false; } } + if (StringUtils.isEmpty(blockXmlVO.getRoomCode())) { + blockXmlVO.setRoomCode(NOT_ASSIGNED_CODE); + } if (StringUtils.isEmpty(blockXmlVO.getRoomName())) { - blockXmlVO.setRoomName("未命名"); + blockXmlVO.setRoomName(NOT_ASSIGNED); + } + if (StringUtils.isEmpty(blockXmlVO.getBoxCode())) { + blockXmlVO.setBoxCode(NOT_ASSIGNED_CODE); } if (StringUtils.isEmpty(blockXmlVO.getBoxName())) { - blockXmlVO.setBoxName("未命名"); + blockXmlVO.setBoxName(NOT_ASSIGNED); } +// if (StringUtils.isEmpty(blockXmlVO.getGroupCode())) { +// blockXmlVO.setGroupCode(NOT_ASSIGNED_CODE); +// } +// if (StringUtils.isEmpty(blockXmlVO.getGroupName())) { +// blockXmlVO.setGroupName(NOT_ASSIGNED); +// } if (!StringUtils.isEmpty(blockXmlVO.getBasePointX())) { if (!ToolUtil.convertToType(blockXmlVO.getBasePointX(), Double.class)) { blockXmlVO.setBasePointX(blockXmlVO.getBasePointX() + "---< " + TYPE_ERR + " >---"); @@ -1149,23 +1242,19 @@ public class XMLUtil { if (correlationXmlVOS.getCorrelationXmlVOList() != null && correlationXmlVOS.getCorrelationXmlVOList().size() > 0) { for (CorrelationXmlVO correlationXmlVO : correlationXmlVOS.getCorrelationXmlVOList()) { if (StringUtils.isEmpty(correlationXmlVO.getItemCode())) { - if (StringUtils.isEmpty(correlationXmlVO.getName())) { - correlationXmlVO.setName("---< 关联配件(五金)/组件名称不可为空 >---"); + if (StringUtils.isEmpty(correlationXmlVO.getItemCode())) { + correlationXmlVO.setName("---< 关联配件(五金)/组件物料编码 >---"); error = false; } - if (StringUtils.isEmpty(correlationXmlVO.getUnitCount())) { - correlationXmlVO.setUnitCount("---< 关联配件(五金)/组件单位不可为空 >---"); - error = false; - } - if (!StringUtils.isEmpty(correlationXmlVO.getCount())) { - if (!checkNumber(correlationXmlVO.getCount(), Integer.class)) { - correlationXmlVO.setCount(correlationXmlVO.getCount() + "---< " + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); - error = false; - } - } else { - correlationXmlVO.setCount("---< 关联配件(五金)/组件数量不可为空 >---"); + } + if (!StringUtils.isEmpty(correlationXmlVO.getCount())) { + if (!checkNumber(correlationXmlVO.getCount(), Integer.class)) { + correlationXmlVO.setCount(correlationXmlVO.getCount() + "---< " + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); error = false; } + } else { + correlationXmlVO.setCount("---< 关联配件(五金)/组件数量不可为空 >---"); + error = false; } } } @@ -1251,6 +1340,8 @@ public class XMLUtil { holeXmlVOS.setCount(holeXmlVOS.getCount() + "---< " + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); error = false; } + } else { + holeXmlVOS.setCount("0"); } if (!StringUtils.isEmpty(holeXmlVOS.getCountFaceA())) { Boolean flag = checkNumber(holeXmlVOS.getCountFaceA().trim(), Integer.class); @@ -1258,6 +1349,8 @@ public class XMLUtil { holeXmlVOS.setCountFaceA(holeXmlVOS.getCountFaceA() + "---< " + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); error = false; } + } else { + holeXmlVOS.setCountFaceA("0"); } if (!StringUtils.isEmpty(holeXmlVOS.getCountFaceB())) { Boolean flag = checkNumber(holeXmlVOS.getCountFaceB().trim(), Integer.class); @@ -1265,6 +1358,8 @@ public class XMLUtil { holeXmlVOS.setCountFaceB(holeXmlVOS.getCountFaceB() + "---< " + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); error = false; } + } else { + holeXmlVOS.setCountFaceB("0"); } if (!StringUtils.isEmpty(holeXmlVOS.getCountSide())) { Boolean flag = checkNumber(holeXmlVOS.getCountSide().trim(), Integer.class); @@ -1272,6 +1367,8 @@ public class XMLUtil { holeXmlVOS.setCountSide(holeXmlVOS.getCountSide() + "---< " + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); error = false; } + } else { + holeXmlVOS.setCountSide("0"); } if (!StringUtils.isEmpty(holeXmlVOS.getCountSideL())) { Boolean flag = checkNumber(holeXmlVOS.getCountSideL().trim(), Integer.class); @@ -1279,6 +1376,8 @@ public class XMLUtil { holeXmlVOS.setCountSideL(holeXmlVOS.getCountSideL() + "---< " + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); error = false; } + } else { + holeXmlVOS.setCountSideL("0"); } if (!StringUtils.isEmpty(holeXmlVOS.getCountSideR())) { Boolean flag = checkNumber(holeXmlVOS.getCountSideR().trim(), Integer.class); @@ -1286,6 +1385,8 @@ public class XMLUtil { holeXmlVOS.setCountSideR(holeXmlVOS.getCountSideR() + "---< " + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); error = false; } + } else { + holeXmlVOS.setCountSideR("0"); } if (!StringUtils.isEmpty(holeXmlVOS.getCountSideU())) { Boolean flag = checkNumber(holeXmlVOS.getCountSideU().trim(), Integer.class); @@ -1293,6 +1394,8 @@ public class XMLUtil { holeXmlVOS.setCountSideU(holeXmlVOS.getCountSideU() + "---< " + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); error = false; } + } else { + holeXmlVOS.setCountSideU("0"); } if (!StringUtils.isEmpty(holeXmlVOS.getCountSideD())) { Boolean flag = checkNumber(holeXmlVOS.getCountSideD().trim(), Integer.class); @@ -1300,6 +1403,8 @@ public class XMLUtil { holeXmlVOS.setCountSideD(holeXmlVOS.getCountSideD() + "---< " + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); error = false; } + } else { + holeXmlVOS.setCountSideD("0"); } if (!StringUtils.isEmpty(holeXmlVOS.getCountBevelled())) { Boolean flag = checkNumber(holeXmlVOS.getCountBevelled().trim(), Integer.class); @@ -1307,6 +1412,8 @@ public class XMLUtil { holeXmlVOS.setCountBevelled(holeXmlVOS.getCountBevelled() + "---< " + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); error = false; } + } else { + holeXmlVOS.setCountBevelled("0"); } if (!StringUtils.isEmpty(holeXmlVOS.getCountLocking())) { Boolean flag = checkNumber(holeXmlVOS.getCountLocking().trim(), Integer.class); @@ -1314,6 +1421,8 @@ public class XMLUtil { holeXmlVOS.setCountLocking(holeXmlVOS.getCountLocking() + "---< " + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); error = false; } + } else { + holeXmlVOS.setCountLocking("0"); } if (!StringUtils.isEmpty(holeXmlVOS.getCountBuildIn())) { Boolean flag = checkNumber(holeXmlVOS.getCountBuildIn().trim(), Integer.class); @@ -1321,6 +1430,8 @@ public class XMLUtil { holeXmlVOS.setCountBuildIn(holeXmlVOS.getCountBuildIn() + "---< " + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); error = false; } + } else { + holeXmlVOS.setCountBuildIn("0"); } if (!StringUtils.isEmpty(holeXmlVOS.getCountHinge())) { Boolean flag = checkNumber(holeXmlVOS.getCountHinge().trim(), Integer.class); @@ -1328,6 +1439,8 @@ public class XMLUtil { holeXmlVOS.setCountHinge(holeXmlVOS.getCountHinge() + "---< " + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); error = false; } + } else { + holeXmlVOS.setCountHinge("0"); } if (!StringUtils.isEmpty(holeXmlVOS.getCountThrough())) { Boolean flag = checkNumber(holeXmlVOS.getCountThrough().trim(), Integer.class); @@ -1335,6 +1448,8 @@ public class XMLUtil { holeXmlVOS.setCountThrough(holeXmlVOS.getCountThrough() + "---< " + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); error = false; } + } else { + holeXmlVOS.setCountThrough("0"); } if (holeXmlVOS.getHoleXmlVOList() != null && holeXmlVOS.getHoleXmlVOList().size() > 0) { for (HoleXmlVO holeXmlVO : holeXmlVOS.getHoleXmlVOList()) { @@ -1964,6 +2079,23 @@ public class XMLUtil { error = false; } } + if (StringUtils.isEmpty(pointXmlVO.getCount())) { + pointXmlVO.setCount("0"); + } else { + if (!checkNumber(pointXmlVO.getCount().trim(), Double.class)) { + pointXmlVO.setRadius("---< " + pointXmlVO.getRadius() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(pointXmlVO.getCountUnit())) { + pointXmlVO.setCountUnit("m"); + } else { + DictDataRespDTO dictData = dictDataApi.parseDictData(DictTypeConstants.UNIT_LENGTH, pointXmlVO.getCountUnit().trim()).getData(); + if (dictData == null) { + pointXmlVO.setCountUnit(pointXmlVO.getCountUnit() + "---< " + "封边条长度单位无效 >---"); + error = false; + } + } } } 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 05fc77466..4738426b5 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 @@ -24,10 +24,7 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @@ -46,6 +43,7 @@ public class XmlTypeRealize { private DictDataApi dictDataApi; final String NOT_ASSIGNED = "未命名"; + final String NOT_ASSIGNED_CODE = "未命编号"; @Resource private SnowFlakeGenerator snowFlakeGenerator; @@ -103,7 +101,27 @@ public class XmlTypeRealize { for (RoomXmlVO roomXmlVO : roomXmlVOS.getRoomXmlVOList()) { Map bodyInfos = new HashMap<>(); Long roomId = (Long) snowFlakeGenerator.nextId(null); + if (roomXmlVO.getName() == null && roomXmlVO.getCode() == null) { + roomXmlVO.setName(NOT_ASSIGNED); + roomXmlVO.setCode(NOT_ASSIGNED_CODE); + } + if (roomXmlVO.getCode() == null && roomXmlVO.getName() != null){ + roomXmlVO.setCode(NOT_ASSIGNED_CODE + roomXmlVO.getName()); + } + if (roomXmlVO.getCode() != null && roomXmlVO.getName() == null){ + roomXmlVO.setCode(NOT_ASSIGNED + roomXmlVO.getCode()); + } for (BoxXmlVO boxXmlVO : roomXmlVO.getBoxXmlVOList()) { + if (boxXmlVO.getName() == null && boxXmlVO.getCode() == null) { + boxXmlVO.setName(NOT_ASSIGNED); + boxXmlVO.setCode(NOT_ASSIGNED_CODE); + } + if (boxXmlVO.getCode() == null && boxXmlVO.getName() != null){ + boxXmlVO.setCode(NOT_ASSIGNED_CODE + boxXmlVO.getName()); + } + if (boxXmlVO.getCode() != null && boxXmlVO.getName() == null){ + boxXmlVO.setCode(NOT_ASSIGNED + boxXmlVO.getCode()); + } OrderBodyDO orderBodyDO = OrderBodyDO.builder() .id((Long) identifierGenerator.nextId(null)) .organId(organId) @@ -130,12 +148,23 @@ public class XmlTypeRealize { Map groupInfos = new HashMap<>(); if (groupXmlVOS != null && groupXmlVOS.getGroupXmlVOList() != null && groupXmlVOS.getGroupXmlVOList().size() > 0) { for (GroupXmlVO groupXmlVO : groupXmlVOS.getGroupXmlVOList()) { + if (groupXmlVO.getName() == null && groupXmlVO.getCode() == null) { + groupXmlVO.setName(NOT_ASSIGNED); + groupXmlVO.setCode(NOT_ASSIGNED_CODE); + } + if (groupXmlVO.getCode() == null && groupXmlVO.getName() != null){ + groupXmlVO.setCode(NOT_ASSIGNED_CODE + " + " + groupXmlVO.getName()); + } + if (groupXmlVO.getCode() != null && groupXmlVO.getName() == null){ + groupXmlVO.setCode(NOT_ASSIGNED + " + " + groupXmlVO.getCode()); + } OrderGroupDO groupDO = OrderGroupDO.builder() .id((Long) identifierGenerator.nextId(null)) .organId(organId) .orderId(orderId) .bodyId(0L) .groupTypeId(0L) + .groupTypeId(0L) .name(groupXmlVO.getName()) .height(Double.parseDouble(groupXmlVO.getHeight())) .width(Double.parseDouble(groupXmlVO.getWidth())) @@ -169,7 +198,7 @@ public class XmlTypeRealize { Map groupInfos = groupInfoChange(orderXmlVO.getGroupXmlVOS(), orderId, organId); // groupInfos 这个在跟着一起变 Map itemInfos = new HashMap<>(); - Map partsInfos = new HashMap<>(); +// Map partsInfos = new HashMap<>(); Map orderPartsRemarks = new HashMap<>(); Map partsDOInfos = new HashMap<>(); @@ -181,13 +210,153 @@ public class XmlTypeRealize { AssemblieXmlVOS assemblieXmlVOS = materialXmlVO.getAssemblieXmlVOS(); AccessoryXmlVO accessoryXmlVO = materialXmlVO.getAccessoryXmlVO(); // 配件 - Map> partAllInfo = goodsInfoChange(accessoryXmlVO, assemblieXmlVOS, orderId, organId, roomInfos, groupInfos); - itemInfos.putAll(partAllInfo.get("orderItemMap")); - partsInfos.putAll(partAllInfo.get("orderPartsMap")); - orderPartsRemarks.putAll(partAllInfo.get("orderPartsRemarks")); - partsDOInfos.putAll(partAllInfo.get("orderPartsDOMap")); + Map> edgingMap; + Map> hardwareMap; + Map> assemblyMap; + if (accessoryXmlVO.getEdgingXmlVOS() != null && accessoryXmlVO.getEdgingXmlVOS().getEdgingXmlVOList() != null && accessoryXmlVO.getEdgingXmlVOS().getEdgingXmlVOList().size() > 0) { + List edgingList = accessoryXmlVO.getEdgingXmlVOS().getEdgingXmlVOList(); + edgingList.forEach(edgingXmlVO -> { + if (edgingXmlVO.getRoomName() == null && edgingXmlVO.getRoomCode() == null) { + edgingXmlVO.setRoomName(NOT_ASSIGNED); + edgingXmlVO.setRoomCode(NOT_ASSIGNED_CODE); + } + if (edgingXmlVO.getRoomCode() == null && edgingXmlVO.getRoomName() != null){ + edgingXmlVO.setRoomCode(NOT_ASSIGNED_CODE + " + " + edgingXmlVO.getRoomName()); + } + if (edgingXmlVO.getRoomCode() != null && edgingXmlVO.getRoomName() == null){ + edgingXmlVO.setRoomName(NOT_ASSIGNED + " + " + edgingXmlVO.getRoomCode()); + } - // 板材 小板 + if (edgingXmlVO.getBoxName() == null && edgingXmlVO.getBoxCode() == null) { + edgingXmlVO.setBoxName(NOT_ASSIGNED); + edgingXmlVO.setBoxCode(NOT_ASSIGNED_CODE); + } + if (edgingXmlVO.getBoxCode() == null && edgingXmlVO.getBoxName() != null){ + edgingXmlVO.setBoxCode(NOT_ASSIGNED_CODE + " + " + edgingXmlVO.getBoxName()); + } + if (edgingXmlVO.getBoxCode() != null && edgingXmlVO.getBoxName() == null){ + edgingXmlVO.setBoxName(NOT_ASSIGNED + " + " + edgingXmlVO.getBoxCode()); + } +// if (edgingXmlVO.getGroupCode() == null && edgingXmlVO.getGroupName() != null){ +// edgingXmlVO.setGroupCode(NOT_ASSIGNED_CODE + " + " + edgingXmlVO.getGroupName()); +// } +// if (edgingXmlVO.getGroupCode() != null && edgingXmlVO.getGroupName() == null){ +// edgingXmlVO.setGroupName(NOT_ASSIGNED + " + " + edgingXmlVO.getGroupCode()); +// } + }); + // 以itemCode为条件进行分组,成map + edgingMap = edgingList.stream().collect(Collectors.groupingBy(EdgingXmlVO::getItemCode)); + // 遍历map + edgingMap.forEach((key, value) -> { + if (key == null) { // 没有itemCode + Map> edgingMapWithNull = value.stream().collect(Collectors.groupingBy(edgingXmlVO -> + edgingXmlVO.getManufacturer() + edgingXmlVO.getBrand() + edgingXmlVO.getName() + edgingXmlVO.getMaterial() + + edgingXmlVO.getSpecs() + edgingXmlVO.getColor() + edgingXmlVO.getWidth() + edgingXmlVO.getThickness())); + + edgingMap.putAll(edgingMapWithNull); + + } + }); + } else { + edgingMap = null; + } + if (accessoryXmlVO.getHardwareXmlVOS() != null && accessoryXmlVO.getHardwareXmlVOS().getHardwareXmlVOList() != null && accessoryXmlVO.getHardwareXmlVOS().getHardwareXmlVOList().size() > 0) { + List hardwareXmlVOS = accessoryXmlVO.getHardwareXmlVOS().getHardwareXmlVOList(); + hardwareXmlVOS.forEach(hardwareXmlVO -> { + if (hardwareXmlVO.getRoomName() == null && hardwareXmlVO.getRoomCode() == null) { + hardwareXmlVO.setRoomName(NOT_ASSIGNED); + hardwareXmlVO.setRoomCode(NOT_ASSIGNED_CODE); + } + if (hardwareXmlVO.getRoomCode() == null && hardwareXmlVO.getRoomName() != null){ + hardwareXmlVO.setRoomCode(NOT_ASSIGNED_CODE + " + " + hardwareXmlVO.getRoomName()); + } + if (hardwareXmlVO.getRoomCode() != null && hardwareXmlVO.getRoomName() == null){ + hardwareXmlVO.setRoomName(NOT_ASSIGNED + " + " + hardwareXmlVO.getRoomCode()); + } + if (hardwareXmlVO.getBoxName() == null && hardwareXmlVO.getBoxCode() == null) { + hardwareXmlVO.setBoxName(NOT_ASSIGNED); + hardwareXmlVO.setBoxCode(NOT_ASSIGNED_CODE); + } + if (hardwareXmlVO.getBoxCode() == null && hardwareXmlVO.getBoxName() != null){ + hardwareXmlVO.setBoxCode(NOT_ASSIGNED_CODE + " + " + hardwareXmlVO.getBoxName()); + } + if (hardwareXmlVO.getBoxCode() != null && hardwareXmlVO.getBoxName() == null){ + hardwareXmlVO.setBoxName(NOT_ASSIGNED + " + " + hardwareXmlVO.getBoxCode()); + } +// if (hardwareXmlVO.getGroupCode() == null && hardwareXmlVO.getGroupName() != null){ +// hardwareXmlVO.setGroupCode(NOT_ASSIGNED_CODE + " + " + hardwareXmlVO.getGroupName()); +// } +// if (hardwareXmlVO.getGroupCode() != null && hardwareXmlVO.getGroupName() == null){ +// hardwareXmlVO.setGroupName(NOT_ASSIGNED + " + " + hardwareXmlVO.getGroupCode()); +// } + }); + // 以itemCode为条件进行分组,成map + hardwareMap = hardwareXmlVOS.stream().collect(Collectors.groupingBy(HardwareXmlVO::getItemCode)); + // 遍历map + hardwareMap.forEach((key, value) -> { + if (key == null) { //没有itemCode + Map> hardwareMapWithNull = value.stream().collect(Collectors.groupingBy(hardwareXmlVO -> + hardwareXmlVO.getManufacturer() + hardwareXmlVO.getBrand() + hardwareXmlVO.getName() + hardwareXmlVO.getMaterial() + + hardwareXmlVO.getSpecs() + hardwareXmlVO.getColor() + hardwareXmlVO.getType())); + + hardwareMap.putAll(hardwareMapWithNull); + } + }); + } else { + hardwareMap = null; + } + if (assemblieXmlVOS.getAssemblyXmlVOList() != null && assemblieXmlVOS.getAssemblyXmlVOList().size() > 0) { + List assemblyList = assemblieXmlVOS.getAssemblyXmlVOList(); + assemblyList.forEach(assemblyXmlVO -> { + if (assemblyXmlVO.getRoomName() == null && assemblyXmlVO.getRoomCode() == null) { + assemblyXmlVO.setRoomName(NOT_ASSIGNED); + assemblyXmlVO.setRoomCode(NOT_ASSIGNED_CODE); + } + if (assemblyXmlVO.getRoomCode() == null && assemblyXmlVO.getRoomName() != null){ + assemblyXmlVO.setRoomCode(NOT_ASSIGNED_CODE + " + " + assemblyXmlVO.getRoomName()); + } + if (assemblyXmlVO.getRoomCode() != null && assemblyXmlVO.getRoomName() == null){ + assemblyXmlVO.setRoomName(NOT_ASSIGNED + " + " + assemblyXmlVO.getRoomCode()); + } + if (assemblyXmlVO.getBoxName() == null && assemblyXmlVO.getBoxCode() == null) { + assemblyXmlVO.setBoxName(NOT_ASSIGNED); + assemblyXmlVO.setBoxCode(NOT_ASSIGNED_CODE); + } + if (assemblyXmlVO.getBoxCode() == null && assemblyXmlVO.getBoxName() != null){ + assemblyXmlVO.setBoxCode(NOT_ASSIGNED_CODE + " + " + assemblyXmlVO.getBoxName()); + } + if (assemblyXmlVO.getBoxCode() != null && assemblyXmlVO.getBoxName() == null){ + assemblyXmlVO.setBoxName(NOT_ASSIGNED + " + " + assemblyXmlVO.getBoxCode()); + } +// if (assemblyXmlVO.getGroupCode() == null && assemblyXmlVO.getGroupName() != null){ +// assemblyXmlVO.setGroupCode(NOT_ASSIGNED_CODE + " + " + assemblyXmlVO.getGroupName()); +// } +// if (assemblyXmlVO.getGroupCode() != null && assemblyXmlVO.getGroupName() == null){ +// assemblyXmlVO.setGroupName(NOT_ASSIGNED + " + " + assemblyXmlVO.getGroupCode()); +// } + }); + assemblyMap = assemblieXmlVOS.getAssemblyXmlVOList().stream().collect(Collectors.groupingBy(AssemblyXmlVO::getItemCode)); + assemblyMap.forEach((key, value) -> { + if (key == null) { // 没有itemCode + Map> assemblyMapWithNull = value.stream().collect(Collectors.groupingBy(assemblyXmlVO -> + assemblyXmlVO.getManufacturer() + assemblyXmlVO.getBrand() + assemblyXmlVO.getName() + assemblyXmlVO.getMaterial() + + assemblyXmlVO.getSpecs() + assemblyXmlVO.getColor() + assemblyXmlVO.getType())); + + assemblyMap.putAll(assemblyMapWithNull); + } + }); + } else { + assemblyMap = null; + } + Map> partInfoAll = goodsInfoChange(organId, orderId, edgingMap, hardwareMap, assemblyMap, roomInfos, groupInfos); + +// Map> partAllInfo = goodsInfoChange(accessoryXmlVO, assemblieXmlVOS, orderId, organId, roomInfos, groupInfos); + itemInfos.putAll(partInfoAll.get("orderItemMap")); +// partsInfos.putAll(partInfoAll.get("orderPartsMap")); + orderPartsRemarks.putAll(partInfoAll.get("orderPartsRemarks")); + partsDOInfos.putAll(partInfoAll.get("orderPartsDOMap")); + + // 板材 if (plateXmlVOS.getPlateXmlVOList() != null && plateXmlVOS.getPlateXmlVOList().size() > 0) { for (PlateXmlVO plateXmlVO : plateXmlVOS.getPlateXmlVOList()) { if (StringUtils.equals(plateXmlVO.getGrained().trim(), "无")) { @@ -234,7 +403,9 @@ public class XmlTypeRealize { goodsDOs.add(goodsDO); // 小板信息 - plateDetail = plateInfoChange(plateXmlVO.getBlockXmlVOS(), orderId, goodsDO.getId(), organId, roomInfos, groupInfos, partsInfos, itemInfos, plateDOs, boxBasePositions, roomBasePositions); +// plateDetail = plateInfoChange(plateXmlVO.getBlockXmlVOS(), orderId, goodsDO.getId(), organId, roomInfos, groupInfos, partsInfos, itemInfos, plateDOs, boxBasePositions, roomBasePositions); + plateDetail = plateInfoChange(organId, orderId, goodsId, plateXmlVO.getBlockXmlVOS(), plateDOs, itemInfos, partsDOInfos, roomInfos, groupInfos, boxBasePositions, roomBasePositions); + } } @@ -242,7 +413,6 @@ public class XmlTypeRealize { } // 取map中的值 - System.out.println(" roomInfos " + roomInfos); List orderBodyDOList = roomInfos.values().stream() .flatMap(innerMap -> innerMap.values().stream()) .collect(Collectors.toList()); @@ -262,239 +432,211 @@ public class XmlTypeRealize { map.put("orderItemDOS", itemDOList); map.put("plateDetail", plateDetail); map.put("orderPartsRemarks", partRemarks); + System.out.println(" orderBodyDOS " + orderBodyDOList); + System.out.println(" orderPartsDOS " + partDOList); return map; } // id得到 - private Map getId(String roomNo, String BoxNo, Map> roomInfos, - String groupNo, Map groupInfos, Double plateNum, - Double unregularNum, Long orderId, Long organId) { + private Map getId(PositionVO positionVO, Map> roomInfos, Map groupInfos, + Double plateNum, Double unregularNum, Long orderId, Long organId) { Map map = new HashMap<>(); - Map bodyMap = roomInfos.get(roomNo); - OrderBodyDO bodyDO; - if (bodyMap == null) { - bodyMap = new HashMap<>(); - roomInfos.put(roomNo, bodyMap); - } - if (bodyMap.containsKey(BoxNo)) { - bodyDO = bodyMap.get(BoxNo); + OrderGroupDO orderGroupDO; + + String roomNo = positionVO.getRoomCode(); // + Map bodyMap = roomInfos.computeIfAbsent(roomNo, k -> new HashMap<>()); + + String boxNo = positionVO.getBoxCode(); + OrderBodyDO bodyDO = bodyMap.get(boxNo); + if (bodyDO != null) { bodyDO.setPlateNum((int) (bodyDO.getPlateNum() + plateNum + unregularNum)) .setUnregularNum((int) (bodyDO.getUnregularNum() + unregularNum)); } else { Long roomId = (Long) identifierGenerator.nextId(null); + if (!bodyMap.isEmpty()) { + Set keys = bodyMap.keySet(); + String key = keys.iterator().next(); + OrderBodyDO value = bodyMap.get(key); + roomId = value.getRoomId(); + } bodyDO = OrderBodyDO.builder() .id((Long) identifierGenerator.nextId(null)) .organId(organId) .orderId(orderId) .roomId(roomId) - .roomName(NOT_ASSIGNED) - .name(NOT_ASSIGNED) + .roomName(positionVO.getRoomName()) + .name(positionVO.getBoxName()) .width(0.0) .height(0.0) .depth(0.0) .plateNum((int) Math.round(plateNum)) .unregularNum((int) Math.round(unregularNum)) .build(); - bodyMap.put(BoxNo, bodyDO); + bodyMap.put(boxNo, bodyDO); + } - } - Long roomId = bodyDO.getRoomId(); Long bodyId = bodyDO.getId(); + Long groupId; // 加工组 - OrderGroupDO orderGroupDO = groupInfos.get(groupNo); - Long groupId = 0L; - if (orderGroupDO != null) { + if ((positionVO.getGroupCode() != null && !positionVO.getGroupCode().isEmpty()) + || (positionVO.getGroupName() != null && !positionVO.getGroupName().isEmpty())) { + orderGroupDO = groupInfos.get(positionVO.getGroupCode()); + if (orderGroupDO != null) { + orderGroupDO.setBodyId(bodyId).setPlateNum((int) (orderGroupDO.getPlateNum() + plateNum)) + .setUnregularNum((int) (orderGroupDO.getUnregularNum() + unregularNum)); + } else { + orderGroupDO = OrderGroupDO.builder() + .id((Long) identifierGenerator.nextId(null)) + .organId(organId) + .orderId(orderId) + .bodyId(bodyId) + .name(positionVO.getGroupName()) + .width(0.0) + .height(0.0) + .depth(0.0) + .multiNum(0) + .plateNum((int) Math.round(plateNum)) + .unregularNum((int) Math.round(unregularNum)) + .build(); + groupInfos.put(positionVO.getGroupCode(), orderGroupDO); + } groupId = orderGroupDO.getId(); - orderGroupDO.setBodyId(bodyId).setPlateNum((int) (orderGroupDO.getPlateNum() + plateNum)) - .setUnregularNum((int) (orderGroupDO.getUnregularNum() + unregularNum)); + } else { + groupId = 0L; } - map.put("roomId", roomId); + + map.put("roomId", bodyDO.getRoomId()); map.put("bodyId", bodyId); map.put("groupId", groupId); return map; } - // 配件信息转换 - public Map> goodsInfoChange(AccessoryXmlVO accessoryXmlVO, AssemblieXmlVOS assemblieXmlVOS, Long orderId, Long organId, - Map> roomInfos, Map groupInfos) { + + public Map> goodsInfoChange(Long organId, Long orderId, Map> edgingMp, Map> hardwareMp, + Map> assemblyMp, + Map> roomInfos, Map groupInfos) { //这里的配件不存在String为null的情况 + Map> map = new HashMap<>(); - Map orderPartsMap = new HashMap<>(); Map orderItemMap = new HashMap<>(); Map orderPartsDOMap = new HashMap<>(); Map orderPartsRemarks = new HashMap<>(); - if (accessoryXmlVO != null) { - if (accessoryXmlVO.getEdgingXmlVOS() != null && accessoryXmlVO.getEdgingXmlVOS().getEdgingXmlVOList() != null && accessoryXmlVO.getEdgingXmlVOS().getEdgingXmlVOList().size() > 0) { - EdgingXmlVOS edgingXmlVOS = accessoryXmlVO.getEdgingXmlVOS(); - // 以itemCode为条件进行分组,成map - Map> edgingMap = edgingXmlVOS.getEdgingXmlVOList().stream().collect(Collectors.groupingBy(EdgingXmlVO::getItemCode)); - // 遍历map - edgingMap.forEach((key, value) -> { - if (key == null) { // 没有itemCode - Map> edgingMapWithNull = value.stream().collect(Collectors.groupingBy(edgingXmlVO -> - edgingXmlVO.getManufacturer() + edgingXmlVO.getBrand() + edgingXmlVO.getName() + edgingXmlVO.getMaterial() + - edgingXmlVO.getSpecs() + edgingXmlVO.getColor() + edgingXmlVO.getWidth() + edgingXmlVO.getThickness())) ; - edgingMapWithNull.forEach((term, list) -> { + if (edgingMp != null) { + for (String key : edgingMp.keySet()) { + Long partsId = (Long) identifierGenerator.nextId(null); + EdgingXmlVO edgingXmlVO = edgingMp.get(key).get(0); + orderPartsDOMap.put(key, OrderPartsDO.builder() + .id(partsId) + .organId(organId) + .orderId(orderId) + .goodsId(edgingXmlVO.getItemCode()) + .name(edgingXmlVO.getName()) + .material(edgingXmlVO.getMaterial()) + .type("封边条") + .brand(edgingXmlVO.getBrand()) + .spec(edgingXmlVO.getSpecs()) + .unit(edgingXmlVO.getUnit()) + .isComposite(false) + .build()); - }); + // 属性相同的配件的集合,可能存在房间 柜体 加工组 不同 + Map> edgingGroupById = edgingMp.get(key).stream().collect( + Collectors.groupingBy( + edgingVO -> edgingVO.getRoomCode() + edgingVO.getBoxCode() + edgingVO.getGroupCode() + )); + List finalRemarkXmlVOS = new ArrayList<>(); + edgingGroupById.forEach((keysCode, value) -> { + PositionVO positionVO = PositionVO.builder() + .roomName(value.get(0).getRoomName()) + .roomCode(value.get(0).getRoomCode()) + .boxName(value.get(0).getBoxName()) + .boxCode(value.get(0).getBoxCode()) + .groupName(value.get(0).getGroupName()) + .groupCode(value.get(0).getGroupCode()) + .moduleName(value.get(0).getModuleName()) + .moduleCode(value.get(0).getModuleCode()) + .build(); + double partsNum = 0.0; + Map idMap = getId(positionVO, roomInfos, groupInfos, 0.0, 0.0, orderId, organId); + for (EdgingXmlVO edgingVO : value) { + partsNum = partsNum + Double.parseDouble(edgingVO.getCount()); + + if (edgingVO.getRemarkXmlVOS() != null && edgingVO.getRemarkXmlVOS().getRemarkXmlVOList() != null && edgingVO.getRemarkXmlVOS().getRemarkXmlVOList().size() > 0) { + finalRemarkXmlVOS.addAll(edgingVO.getRemarkXmlVOS().getRemarkXmlVOList()); + } } + orderItemMap.put(key, OrderItemDO.builder() + .id((Long) identifierGenerator.nextId(null)) + .organId(organId) + .orderId(orderId) + .type(2) + .partsId(partsId) + .groupId(idMap.get("groupId")) + .roomId(idMap.get("roomId")) + .bodyId(idMap.get("bodyId")) + .num(partsNum) + .build()); }); - for (EdgingXmlVO edgingXmlVO : edgingXmlVOS.getEdgingXmlVOList()) { - Map idMap = getId(edgingXmlVO.getRoomCode(), edgingXmlVO.getBoxCode(), roomInfos, edgingXmlVO.getGroupCode(), groupInfos, 0.0, 0.0, orderId, organId); - - Long partsId = (Long) identifierGenerator.nextId(null); - orderPartsMap.put(edgingXmlVO.getItemCode(), OrderPartsAddVO.builder() - .id(partsId) - .organId(organId) - .orderId(orderId) - .goodsId(edgingXmlVO.getItemCode()) - .factory(edgingXmlVO.getManufacturer()) - .brand(edgingXmlVO.getBrand()) - .name(edgingXmlVO.getName()) - .material(edgingXmlVO.getMaterial()) - .spec(edgingXmlVO.getSpecs()) - .unit(edgingXmlVO.getUnit()) - .width(BigDecimal.valueOf(Double.parseDouble(edgingXmlVO.getWidth()))) - .length(BigDecimal.valueOf(Double.parseDouble(edgingXmlVO.getLength()))) - .thickness(BigDecimal.valueOf(Double.parseDouble(edgingXmlVO.getThickness()))) - .warehouse(edgingXmlVO.getWarehouse()) - .shelf(edgingXmlVO.getShelf()) - .color(edgingXmlVO.getColor()) - .isComposite(false) - .num(Double.valueOf(edgingXmlVO.getCount())) - .build()); - - orderItemMap.put(edgingXmlVO.getItemCode(), OrderItemDO.builder() - .id((Long) identifierGenerator.nextId(null)) - .organId(organId) - .orderId(orderId) - .type(2) + if (finalRemarkXmlVOS.size() > 0) { + orderPartsRemarks.put(key, OrderPartsRemark.builder() .partsId(partsId) - .groupId(idMap.get("groupId")) - .roomId(idMap.get("roomId")) - .bodyId(idMap.get("bodyId")) - .num(Double.valueOf(edgingXmlVO.getCount())) - .build()); - orderPartsDOMap.put(edgingXmlVO.getItemCode(), OrderPartsDO.builder() - .id(partsId) - .organId(organId) .orderId(orderId) - .name(edgingXmlVO.getName()) - .material(edgingXmlVO.getMaterial()) - .type("封边条") - .brand(edgingXmlVO.getBrand()) - .spec(edgingXmlVO.getSpecs()) - .unit(edgingXmlVO.getUnit()) - .isComposite(false) + .remark(finalRemarkXmlVOS.toString()) .build()); - - if (edgingXmlVO.getRemarkXmlVOS() != null && edgingXmlVO.getRemarkXmlVOS().getRemarkXmlVOList() != null && edgingXmlVO.getRemarkXmlVOS().getRemarkXmlVOList().size() > 0) { - orderPartsRemarks.put(edgingXmlVO.getItemCode(), OrderPartsRemark.builder() - .partsId(partsId) - .orderId(orderId) - .remark(edgingXmlVO.getRemarkXmlVOS().toString()) - .build()); - } } - } - if (accessoryXmlVO.getHardwareXmlVOS() != null && accessoryXmlVO.getHardwareXmlVOS().getHardwareXmlVOList() != null && accessoryXmlVO.getHardwareXmlVOS().getHardwareXmlVOList().size() > 0) { - HardwareXmlVOS hardwareXmlVOS = accessoryXmlVO.getHardwareXmlVOS(); - for (HardwareXmlVO hardwareXmlVO : hardwareXmlVOS.getHardwareXmlVOList()) { - Map idMap = getId(hardwareXmlVO.getRoomCode(), hardwareXmlVO.getBoxCode(), roomInfos, hardwareXmlVO.getGroupCode(), groupInfos, 0.0, 0.0, orderId, organId); - - Long partsId = (Long) identifierGenerator.nextId(null); - orderPartsMap.put(hardwareXmlVO.getItemCode(), OrderPartsAddVO.builder() - .id(partsId) - .organId(organId) - .type(hardwareXmlVO.getType()) - .orderId(orderId) - .goodsId(hardwareXmlVO.getItemCode()) - .factory(hardwareXmlVO.getManufacturer()) - .brand(hardwareXmlVO.getBrand()) - .name(hardwareXmlVO.getName()) - .material(hardwareXmlVO.getMaterial()) - .spec(hardwareXmlVO.getSpecs()) - .unit(hardwareXmlVO.getUnit()) - .width(BigDecimal.valueOf(Double.parseDouble(hardwareXmlVO.getWidth()))) - .length(BigDecimal.valueOf(Double.parseDouble(hardwareXmlVO.getLength()))) - .thickness(BigDecimal.valueOf(Double.parseDouble(hardwareXmlVO.getThickness()))) - .warehouse(hardwareXmlVO.getWarehouse()) - .shelf(hardwareXmlVO.getShelf()) - .color(hardwareXmlVO.getColor()) - .num(Double.valueOf(hardwareXmlVO.getCount())) - .roomId(hardwareXmlVO.getRoomCode()) - .bodyId(hardwareXmlVO.getBoxCode()) - .isComposite(false) - .build()); - orderItemMap.put(hardwareXmlVO.getItemCode(), OrderItemDO.builder() - .id((Long) identifierGenerator.nextId(null)) - .organId(organId) - .orderId(orderId) - .type(2) - .partsId(partsId) - .groupId(idMap.get("groupId")) - .roomId(idMap.get("roomId")) - .bodyId(idMap.get("bodyId")) - .num(Double.valueOf(hardwareXmlVO.getCount())) - .build()); - orderPartsDOMap.put(hardwareXmlVO.getItemCode(), OrderPartsDO.builder() - .id(partsId) - .organId(organId) - .orderId(orderId) - .name(hardwareXmlVO.getName()) - .material(hardwareXmlVO.getMaterial()) - .type(hardwareXmlVO.getType()) - .brand(hardwareXmlVO.getBrand()) - .spec(hardwareXmlVO.getSpecs()) - .unit(hardwareXmlVO.getUnit()) - .isComposite(false) - .build()); - if (hardwareXmlVO.getRemarkXmlVOS() != null && hardwareXmlVO.getRemarkXmlVOS().getRemarkXmlVOList() != null && hardwareXmlVO.getRemarkXmlVOS().getRemarkXmlVOList().size() > 0) { - orderPartsRemarks.put(hardwareXmlVO.getItemCode(), OrderPartsRemark.builder() - .partsId(partsId) - .orderId(orderId) - .remark(hardwareXmlVO.getRemarkXmlVOS().toString()) - .build()); - } - } } } - if (assemblieXmlVOS != null && assemblieXmlVOS.getAssemblyXmlVOList() != null && assemblieXmlVOS.getAssemblyXmlVOList().size() > 0) { - for (AssemblyXmlVO assemblyXmlVO : assemblieXmlVOS.getAssemblyXmlVOList()) { + if (hardwareMp != null) { // 五金 + for (String key : hardwareMp.keySet()) { + Long partsId = (Long) identifierGenerator.nextId(null); + HardwareXmlVO hardwareXmlVO = hardwareMp.get(key).get(0); + orderPartsDOMap.put(key, OrderPartsDO.builder() + .id(partsId) + .organId(organId) + .orderId(orderId) + .goodsId(hardwareXmlVO.getItemCode()) + .name(hardwareXmlVO.getName()) + .material(hardwareXmlVO.getMaterial()) + .type(hardwareXmlVO.getType()) + .brand(hardwareXmlVO.getBrand()) + .spec(hardwareXmlVO.getSpecs()) + .unit(hardwareXmlVO.getUnit()) + .isComposite(false) + .build()); - if (assemblyXmlVO != null && assemblyXmlVO.toString().length() > 0) { - Map idMap = getId(assemblyXmlVO.getRoomCode(), assemblyXmlVO.getBoxCode(), roomInfos, assemblyXmlVO.getGroupCode(), groupInfos, 0.0, 0.0, orderId, organId); + // 属性相同的配件的集合,可能存在房间 柜体 加工组 不同 + Map> hardwareGroupById = hardwareMp.get(key).stream().collect( + Collectors.groupingBy( + hardwareVO -> hardwareVO.getRoomCode() + hardwareVO.getBoxCode() + hardwareVO.getGroupCode() + )); + List finalRemarkXmlVOS = new ArrayList<>(); + hardwareGroupById.forEach((keysCode, value) -> { + PositionVO positionVO = PositionVO.builder() + .roomName(value.get(0).getRoomName()) + .roomCode(value.get(0).getRoomCode()) + .boxName(value.get(0).getBoxName()) + .boxCode(value.get(0).getBoxCode()) + .groupName(value.get(0).getGroupName()) + .groupCode(value.get(0).getGroupCode()) + .moduleName(value.get(0).getModuleName()) + .moduleCode(value.get(0).getModuleCode()) + .build(); - Long partsId = (Long) identifierGenerator.nextId(null); - orderPartsMap.put(assemblyXmlVO.getItemCode(), OrderPartsAddVO.builder() - .id(partsId) - .organId(organId) - .orderId(orderId) - .type(assemblyXmlVO.getType()) - .goodsId(assemblyXmlVO.getItemCode()) - .factory(assemblyXmlVO.getManufacturer()) - .brand(assemblyXmlVO.getBrand()) - .name(assemblyXmlVO.getName()) - .material(assemblyXmlVO.getMaterial()) - .spec(assemblyXmlVO.getSpecs()) - .color(assemblyXmlVO.getColor()) - .length(BigDecimal.valueOf(Double.parseDouble(assemblyXmlVO.getLength()))) - .width(BigDecimal.valueOf(Double.parseDouble(assemblyXmlVO.getWidth()))) - .thickness(BigDecimal.valueOf(Double.parseDouble(assemblyXmlVO.getHeight()))) - .num(Double.valueOf(assemblyXmlVO.getCount())) - .unit((assemblyXmlVO.getUnit())) - .warehouse(assemblyXmlVO.getWarehouse()) - .shelf(assemblyXmlVO.getShelf()) - .roomId(assemblyXmlVO.getRoomCode()) - .bodyId(assemblyXmlVO.getBoxCode()) - .isComposite(true) - .build()); - orderItemMap.put(assemblyXmlVO.getItemCode(), OrderItemDO.builder() + double partsNum = 0.0; + Map idMap = getId(positionVO, roomInfos, groupInfos, 0.0, 0.0, orderId, organId); + for (HardwareXmlVO hardwareVO : value) { + partsNum = partsNum + Double.parseDouble(hardwareVO.getCount()); + + if (hardwareVO.getRemarkXmlVOS() != null && hardwareVO.getRemarkXmlVOS().getRemarkXmlVOList() != null && hardwareVO.getRemarkXmlVOS().getRemarkXmlVOList().size() > 0) { + finalRemarkXmlVOS.addAll(hardwareVO.getRemarkXmlVOS().getRemarkXmlVOList()); + } + } + orderItemMap.put(key, OrderItemDO.builder() .id((Long) identifierGenerator.nextId(null)) .organId(organId) .orderId(orderId) @@ -503,40 +645,100 @@ public class XmlTypeRealize { .groupId(idMap.get("groupId")) .roomId(idMap.get("roomId")) .bodyId(idMap.get("bodyId")) - .num(Double.valueOf(assemblyXmlVO.getCount())) + .num(partsNum) .build()); - orderPartsDOMap.put(assemblyXmlVO.getItemCode(), OrderPartsDO.builder() - .id(partsId) - .organId(organId) + }); + + if (finalRemarkXmlVOS.size() > 0) { + orderPartsRemarks.put(key, OrderPartsRemark.builder() + .partsId(partsId) .orderId(orderId) - .name(assemblyXmlVO.getName()) - .material(assemblyXmlVO.getMaterial()) - .type(assemblyXmlVO.getType()) - .brand(assemblyXmlVO.getBrand()) - .spec(assemblyXmlVO.getSpecs()) - .unit(assemblyXmlVO.getUnit()) - .isComposite(true) + .remark(finalRemarkXmlVOS.toString()) .build()); - if (assemblyXmlVO.getRemarkXmlVOS() != null && assemblyXmlVO.getRemarkXmlVOS().getRemarkXmlVOList() != null && assemblyXmlVO.getRemarkXmlVOS().getRemarkXmlVOList().size() > 0) { - orderPartsRemarks.put(assemblyXmlVO.getItemCode(), OrderPartsRemark.builder() - .partsId(partsId) - .orderId(orderId) - .remark(assemblyXmlVO.getRemarkXmlVOS().toString()) - .build()); - } } + } } + + if (assemblyMp != null) { // 组件 + for (String key : assemblyMp.keySet()) { + Long partsId = (Long) identifierGenerator.nextId(null); + AssemblyXmlVO assemblyXmlVO = assemblyMp.get(key).get(0); + orderPartsDOMap.put(key, OrderPartsDO.builder() + .id(partsId) + .organId(organId) + .orderId(orderId) + .goodsId(assemblyXmlVO.getItemCode()) + .name(assemblyXmlVO.getName()) + .material(assemblyXmlVO.getMaterial()) + .type(assemblyXmlVO.getType()) + .brand(assemblyXmlVO.getBrand()) + .spec(assemblyXmlVO.getSpecs()) + .unit(assemblyXmlVO.getUnit()) + .isComposite(true) + .build()); + + // 属性相同的配件的集合,可能存在房间 柜体 加工组 不同 + Map> assemblyGroupById = assemblyMp.get(key).stream().collect( + Collectors.groupingBy( + assemblyVO -> assemblyVO.getRoomCode() + assemblyVO.getBoxCode() + assemblyVO.getGroupCode() + )); + List finalRemarkXmlVOS = new ArrayList<>(); + assemblyGroupById.forEach((keysCode, value) -> { + PositionVO positionVO = PositionVO.builder() + .roomName(value.get(0).getRoomName()) + .roomCode(value.get(0).getRoomCode()) + .boxName(value.get(0).getBoxName()) + .boxCode(value.get(0).getBoxCode()) + .groupName(value.get(0).getGroupName()) + .groupCode(value.get(0).getGroupCode()) + .moduleName(value.get(0).getModuleName()) + .moduleCode(value.get(0).getModuleCode()) + .build(); + + double partsNum = 0.0; + Map idMap = getId(positionVO, roomInfos, groupInfos, 0.0, 0.0, orderId, organId); + for (AssemblyXmlVO assemblyVO : value) { + partsNum = partsNum + Double.parseDouble(assemblyVO.getCount()); + + if (assemblyVO.getRemarkXmlVOS() != null && assemblyVO.getRemarkXmlVOS().getRemarkXmlVOList() != null && assemblyVO.getRemarkXmlVOS().getRemarkXmlVOList().size() > 0) { + finalRemarkXmlVOS.addAll(assemblyVO.getRemarkXmlVOS().getRemarkXmlVOList()); + } + } + orderItemMap.put(key, OrderItemDO.builder() + .id((Long) identifierGenerator.nextId(null)) + .organId(organId) + .orderId(orderId) + .type(2) + .partsId(partsId) + .groupId(idMap.get("groupId")) + .roomId(idMap.get("roomId")) + .bodyId(idMap.get("bodyId")) + .num(partsNum) + .build()); + }); + + if (finalRemarkXmlVOS.size() > 0) { + orderPartsRemarks.put(key, OrderPartsRemark.builder() + .partsId(partsId) + .orderId(orderId) + .remark(finalRemarkXmlVOS.toString()) + .build()); + } + + } + } + map.put("orderItemMap", orderItemMap); - map.put("orderPartsMap", orderPartsMap); map.put("orderPartsDOMap", orderPartsDOMap); map.put("orderPartsRemarks", orderPartsRemarks); return map; } - public List plateInfoChange(BlockXmlVOS blockXmlVOS, Long orderId, Long goodsId, Long organId, + + public List plateInfoChange(Long organId, Long orderId, Long goodsId, BlockXmlVOS blockXmlVOS, + List plateDOs, Map orderItemMap, Map partsDO, Map> roomInfos, Map groupInfos, - Map partsMap, Map orderItemMap, List plateDOs, Map> boxBasePositionMap, Map roomBasePositions) { List plateDetails = new ArrayList<>(); @@ -546,13 +748,20 @@ public class XmlTypeRealize { long plateNo = idWorker.nextId(); long obtainingTime = idWorker.obtainingTime(); Long plateId = (Long) identifierGenerator.nextId(null); - BigDecimal area = BigDecimal.valueOf((Double.parseDouble(blockXmlVO.getWidth()) / 1000) * (Double.parseDouble(blockXmlVO.getLength()) / 1000)); + + // 成品面积 + Double length = changeUnit(blockXmlVO.getLength(), blockXmlVO.getUnit(),DictTypeConstants.UNIT_LENGTH); + Double width = changeUnit(blockXmlVO.getWidth(), blockXmlVO.getUnit(),DictTypeConstants.UNIT_LENGTH); + BigDecimal area = BigDecimal.valueOf((length / 1000) * (width / 1000)); + // 开料面积 - BigDecimal sealAcreage = BigDecimal.valueOf((Double.parseDouble(blockXmlVO.getCuttingWidth()) / 1000) * (Double.parseDouble(blockXmlVO.getCuttingLength()) / 1000)); + Double lengthCutting = changeUnit(blockXmlVO.getCuttingWidth(), blockXmlVO.getUnit(),DictTypeConstants.UNIT_LENGTH); + Double widthCutting = changeUnit(blockXmlVO.getCuttingLength(), blockXmlVO.getUnit(),DictTypeConstants.UNIT_LENGTH); + BigDecimal cuttingAcreage = BigDecimal.valueOf((lengthCutting / 1000) * (widthCutting / 1000)); // 开门类型获取 int doorType = Integer.parseInt(dictDataApi.parseDictData(DictTypeConstants.DOOR_OPENING_DIRECTIONS, blockXmlVO.getOpenDirection()).getData().getValue()); - // 板材获取 + // 板材数量获取 double plateNum = 0.0; double unregularNum = 0.0; if (convertToBoolean(blockXmlVO.getUnregular())) { @@ -560,7 +769,18 @@ public class XmlTypeRealize { } else { plateNum = 1.0; } - Map idMap = getId(blockXmlVO.getRoomCode(), blockXmlVO.getBoxCode(), roomInfos, blockXmlVO.getGroupCode(), groupInfos, plateNum, unregularNum, orderId, organId); + PositionVO positionVO = PositionVO.builder() + .roomName(blockXmlVO.getRoomName()) + .roomCode(blockXmlVO.getRoomCode()) + .boxName(blockXmlVO.getBoxName()) + .boxCode(blockXmlVO.getBoxCode()) + .groupName(blockXmlVO.getGroupName()) + .groupCode(blockXmlVO.getGroupCode()) + .moduleName(blockXmlVO.getModuleName()) + .moduleCode(blockXmlVO.getModuleCode()) + .build(); +// Map idMap = getId(blockXmlVO.getRoomCode(), blockXmlVO.getBoxCode(), roomInfos, blockXmlVO.getGroupCode(), groupInfos, plateNum, unregularNum, orderId, organId); + Map idMap = getId(positionVO, roomInfos, groupInfos, plateNum, unregularNum, orderId, organId); // 出错 null // 柜体基点坐标 BasePosition boxBasePoint = null; @@ -575,14 +795,15 @@ public class XmlTypeRealize { if (roomBasePositions.get(blockXmlVO.getRoomCode()) != null){ roomBasePoint = roomBasePositions.get(blockXmlVO.getRoomCode()); } + // 板类型 + int plateType = Integer.parseInt(dictDataApi.parseDictData(DictTypeConstants.PLATE_TYPE, blockXmlVO.getType()).getData().getValue()); PlateDO plateDO = PlateDO.builder() .id(plateId) .organId(organId) .orderId(orderId) .name(blockXmlVO.getName()) .plateNo((obtainingTime) + Long.toString(plateNo).substring(2)) - .type(dictDataApi.parseDictData(DictTypeConstants.PLATE_TYPE, - blockXmlVO.getType()).getData() == null ? 2 : Integer.valueOf(dictDataApi.parseDictData(DictTypeConstants.PLATE_TYPE, blockXmlVO.getType()).getData().getValue())) + .type(plateType) .goodsId(goodsId) .width(BigDecimal.valueOf(Double.parseDouble(blockXmlVO.getWidth()))) .height(BigDecimal.valueOf(Double.parseDouble(blockXmlVO.getLength()))) @@ -602,7 +823,7 @@ public class XmlTypeRealize { .id((Long) identifierGenerator.nextId(null)) .organId(organId) .orderId(orderId) - .type(2) + .type(1) .plateId(plateId) .groupId(idMap.get("groupId")) .roomId(idMap.get("roomId")) @@ -621,10 +842,18 @@ public class XmlTypeRealize { .axisZrotate(Double.valueOf(blockXmlVO.getAxisZrotate())) .build(); PlateDetail plateDetail = PlateDetail.builder() + .organId(organId) + .orderId(orderId) .plateId(plateId) .plateNo(plateDO.getPlateNo()) .name(plateDO.getName()) .customPlateNo(blockXmlVO.getDesignCode()) + .roomNo(blockXmlVO.getRoomCode()) + .roomsName(blockXmlVO.getRoomName()) + .bodyNo(blockXmlVO.getBoxCode()) + .bodyName(blockXmlVO.getBoxName()) + .groupNo(blockXmlVO.getGroupCode()) + .groupName(blockXmlVO.getGroupName()) .texture(plateDO.getTexture()) .typographicFace(plateDO.getHoleFace()) .openDoorType(plateDO.getOpenDoorType()) @@ -638,9 +867,11 @@ public class XmlTypeRealize { .plateBasePosition(plateBasePosition) .splitLength(BigDecimal.valueOf(Long.parseLong(blockXmlVO.getCuttingLength()))) .splitWidth(BigDecimal.valueOf(Long.parseLong(blockXmlVO.getCuttingWidth()))) - .sealAcreage(sealAcreage) + .sealAcreage(cuttingAcreage) .pointDetail(new ArrayList<>()) .rawPointDetail(new ArrayList<>()) + .basePointDetail(new ArrayList<>()) + .holeCount(new HashMap<>()) .holeDetail(new ArrayList<>()) .contourDetail(new ArrayList<>()) .sideHoleDetail(new ArrayList<>()) @@ -649,15 +880,18 @@ public class XmlTypeRealize { .isUnRegular(plateDO.getIsSpecialShaped()) .build(); // 小板、es 封边值 - addSealEdge(plateDO, plateDetail, blockXmlVO.getOutlineXmlVO(), partsMap); + addSealEdge(plateDO, plateDetail, blockXmlVO.getOutlineXmlVO(), partsDO, roomInfos, groupInfos, orderItemMap); // 偏移量 不含封边 addPointDetail(plateDO, plateDetail, blockXmlVO.getCuttingOutlineXmlVO()); + addPointDetail(plateDO, plateDetail, blockXmlVO.getRawOutlineXmlVO()); // 孔数据 addHole(plateDO, plateDetail, blockXmlVO.getHoleXmlVOS()); // 造型数据 (槽) addContourDetail(plateDO, plateDetail, blockXmlVO.getGrooveXmlVOS()); // 造型数据(孤岛) addIslandDetail(plateDetail, blockXmlVO.getIsletXmlVOS()); + // 小板关联配件 + addParts(plateDetail, blockXmlVO.getCorrelationXmlVOS(),partsDO); // 小板备注信息 addRemark(plateDO, plateDetail, blockXmlVO); @@ -670,6 +904,8 @@ public class XmlTypeRealize { return plateDetails; } + + private void addIslandDetail(PlateDetail plateDetail, IsletXmlVOS isletXmlVOS) { if (isletXmlVOS != null && ObjectUtils.allNull(isletXmlVOS)) { if (isletXmlVOS.getIsletXmlVOList() != null && isletXmlVOS.getIsletXmlVOList().size() > 0) { @@ -684,6 +920,33 @@ public class XmlTypeRealize { } } + // 小板关联配件添加 + private void addParts(PlateDetail plateDetail, CorrelationXmlVOS correlationXmlVOS, Map partsDOMap) { + List partsInfos = new ArrayList<>(); + if (correlationXmlVOS != null && correlationXmlVOS.getCorrelationXmlVOList() != null && correlationXmlVOS.getCorrelationXmlVOList().size() > 0) { + for (CorrelationXmlVO correlationXmlVO : correlationXmlVOS.getCorrelationXmlVOList()) { + String partCode; + if (correlationXmlVO.getItemCode() == null) { + partCode = correlationXmlVO.getName() + correlationXmlVO.getColor() + correlationXmlVO.getMaterial() + correlationXmlVO.getSpecs() + + correlationXmlVO.getMaterial() + correlationXmlVO.getBrand() + correlationXmlVO.getType(); + } else { + partCode = correlationXmlVO.getItemCode(); + } + // 获取配件信息 + OrderPartsDO orderPartsDO = (OrderPartsDO) partsDOMap.get(partCode); + // 板件上面添加配件信息 + partsInfos.add(PartsInfo.builder() + .id(orderPartsDO.getId()) + .name(correlationXmlVO.getName()) + .partNum(Double.valueOf(correlationXmlVO.getCount())) + .unit(correlationXmlVO.getUnit()) + .build()); + + } + plateDetail.setPartsInfos(partsInfos); + } + } + // 是否转换布尔值 public Boolean convertToBoolean(String str) { Boolean isTrue = false; @@ -699,46 +962,109 @@ public class XmlTypeRealize { } // 封边值相关信息添加 (原始点明细) - private void addSealEdge(PlateDO plateDO, PlateDetail plateDetail, OutlineXmlVO outlineXmlVO, Map edgIng) { + private void addSealEdge(PlateDO plateDO, PlateDetail plateDetail, OutlineXmlVO outlineXmlVO, Map partsDOMap, + Map> roomInfos, Map groupInfos, Map orderItemMap) { BigDecimal sealLeft = BigDecimal.valueOf(0); BigDecimal sealRight = BigDecimal.valueOf(0); BigDecimal sealUp = BigDecimal.valueOf(0); BigDecimal sealDown = BigDecimal.valueOf(0); - BigDecimal size = BigDecimal.valueOf(0); if (outlineXmlVO != null && outlineXmlVO.getPointXmlVOList() != null && outlineXmlVO.getPointXmlVOList().size() > 0) { + ExtraVO extraVO = ExtraVO.builder() + .edgeRemarks(new ArrayList()) + .rectSealDetail(new ArrayList()) + .build(); + int indexId = 0; for (PointXmlVO pointXmlVO : outlineXmlVO.getPointXmlVOList()) { - Double x = Double.parseDouble(pointXmlVO.getPointX()); - Double y = Double.parseDouble(pointXmlVO.getPointY()); - OrderPartsAddVO edging = (OrderPartsAddVO) edgIng.get(pointXmlVO.getItemCode()); - if (edging != null) { - size = edging.getThickness(); - } + if (!(pointXmlVO.getItemCode() == null && pointXmlVO.getEdgingName() == null && pointXmlVO.getEdgingColor() == null + && pointXmlVO.getEdgingMaterial() == null && (pointXmlVO.getEdgingThickness() == null || pointXmlVO.getEdgingThickness().trim().equals("0")))) { + double x = Double.parseDouble(pointXmlVO.getPointX()); + double y = Double.parseDouble(pointXmlVO.getPointY()); + BigDecimal size = new BigDecimal(pointXmlVO.getEdgingThickness()); + // 封边条信息获取 + String item = pointXmlVO.getItemCode(); + if (StringUtils.isEmpty(item)){ + item = pointXmlVO.getEdgingName() + pointXmlVO.getEdgingColor() + pointXmlVO.getEdgingMaterial() + pointXmlVO.getEdgingWidth() + pointXmlVO.getEdgingThickness(); + } + String kItem = item; + partsDOMap.forEach((k, v) -> { + if (StringUtils.isEmpty(kItem)) { + Long partId = (Long) identifierGenerator.nextId(null); + if (k.contains(kItem)){ // 存在 + OrderPartsDO orderPartsDO = (OrderPartsDO) v; + partId = orderPartsDO.getId(); + } + // 则表明配件需要新加,item需要新加,body和group需要修改或是新增 + OrderPartsDO orderPartsDO = OrderPartsDO.builder() + .id(partId) + .name(pointXmlVO.getEdgingName()) + .type("封边条") + .organId(plateDO.getOrganId()) + .orderId(plateDO.getOrderId()) + .material(pointXmlVO.getEdgingMaterial()) + .unit(pointXmlVO.getCountUnit()) + .isComposite(false) + .build(); + partsDOMap.put(kItem, orderPartsDO); + PositionVO positionVO = PositionVO.builder() + .roomName(plateDetail.getRoomsName()) + .roomCode(plateDetail.getRoomNo()) + .boxName(plateDetail.getBodyName()) + .boxCode(plateDetail.getBodyNo()) + .groupName(plateDetail.getGroupName()) + .groupCode(plateDetail.getGroupNo()) + .build(); + // 存在,直接添加item、body、group + Map idMap = getId(positionVO, roomInfos, groupInfos, 0.0, 0.0, plateDO.getOrderId(), plateDO.getOrganId()); + // 封边总长度单位换算 + Double count = changeUnit(pointXmlVO.getCount(), pointXmlVO.getCountUnit(),DictTypeConstants.UNIT_LENGTH); + orderItemMap.put(kItem, OrderItemDO.builder() + .id((Long) identifierGenerator.nextId(null)) + .organId(plateDO.getOrganId()) + .orderId(plateDO.getOrderId()) + .type(2) + .partsId(orderPartsDO.getId()) + .groupId(idMap.get("groupId")) + .roomId(idMap.get("roomId")) + .bodyId(idMap.get("bodyId")) + .num(count) + .build()); + } - if (!plateDO.getIsSpecialShaped()) { - if (x == 0 && y == 0) { - sealDown = size; - } - if (x != 0 && y == 0) { - sealRight = size; - } - if (x != 0 && y != 0) { - sealUp = size; - } - if (x == 0 && y != 0) { - sealLeft = size; - } - } + }); - plateDetail.getRawPointDetail().add(PointDetail.builder() + if (!plateDO.getIsSpecialShaped()) { + if (x == 0 && y == 0) { + sealDown = size; + } + if (x != 0 && y == 0) { + sealRight = size; + } + if (x != 0 && y != 0) { + sealUp = size; + } + if (x == 0 && y != 0) { + sealLeft = size; + } + } + + plateDetail.getRawPointDetail().add(PointDetail.builder() // .id(pointXmlVO.getId()) - .pointX(x) - .pointY(y) - .curve(Double.parseDouble(pointXmlVO.getCurvature())) - .radius(Double.parseDouble(pointXmlVO.getRadius())) - .sealSize(size) - .build()); -// plateDetail.getSideRemark().put(pointXmlVO.getId(), pointXmlVO.getRemark()); + .pointX(x) + .pointY(y) + .curve(Double.parseDouble(pointXmlVO.getCurvature())) + .radius(Double.parseDouble(pointXmlVO.getRadius())) + .sealSize(size) + .build()); + extraVO.getEdgeRemarks().add(pointXmlVO.getRemark()); + extraVO.getRectSealDetail().add(RectSealVO.builder() + .pointID(String.valueOf(indexId)) + .reservedEdge(pointXmlVO.getScale()) + .sealColor(pointXmlVO.getEdgingColor()) + .sealSize(pointXmlVO.getEdgingThickness()) + .build()); + } + } } plateDetail.setSealUp(sealUp).setSealDown(sealDown).setSealLeft(sealLeft).setSealRight(sealRight); @@ -759,6 +1085,34 @@ public class XmlTypeRealize { .pointY(Double.parseDouble(pointXmlVO.getPointY())) .curve(Double.parseDouble(pointXmlVO.getCurvature())) .radius(Double.parseDouble(pointXmlVO.getRadius())) + .process(pointXmlVO.getProcess()) + .build()); + } + } + } + } + + // 坯料 + private void addPointDetail(PlateDO plateDO, PlateDetail plateDetail, RawOutlineXmlVO rawOutlineXmlVO) { + if (rawOutlineXmlVO != null) { + if (rawOutlineXmlVO.getReferenceOffsetX() == null) { + rawOutlineXmlVO.setReferenceOffsetX("0"); + } + if (rawOutlineXmlVO.getReferenceOffsetY() == null) { + rawOutlineXmlVO.setReferenceOffsetY("0"); + } + plateDO.setOffsetX(BigDecimal.valueOf(Double.parseDouble(rawOutlineXmlVO.getReferenceOffsetX()))). + setOffsetY(BigDecimal.valueOf(Double.parseDouble(rawOutlineXmlVO.getReferenceOffsetY()))); + plateDetail.setOffsetX(plateDO.getOffsetX()).setOffsetY(plateDO.getOffsetY()); + if (rawOutlineXmlVO.getPointXmlVOList() != null && rawOutlineXmlVO.getPointXmlVOList().size() > 0) { + for (PointXmlVO pointXmlVO : rawOutlineXmlVO.getPointXmlVOList()) { + plateDetail.getBasePointDetail().add(PointDetail.builder() +// .id(pointXmlVO.getId()) + .pointX(Double.parseDouble(pointXmlVO.getPointX())) + .pointY(Double.parseDouble(pointXmlVO.getPointY())) + .curve(Double.parseDouble(pointXmlVO.getCurvature())) + .radius(Double.parseDouble(pointXmlVO.getRadius())) + .process(pointXmlVO.getProcess()) .build()); } } @@ -768,6 +1122,21 @@ public class XmlTypeRealize { // 孔 private void addHole(PlateDO plateDO, PlateDetail plateDetail, HoleXmlVOS holeXmlVOS) { if (holeXmlVOS != null && holeXmlVOS.getHoleXmlVOList() != null && holeXmlVOS.getHoleXmlVOList().size() > 0) { + Map holeCountMap = new HashMap<>(); + holeCountMap.put("count",Integer.valueOf(holeXmlVOS.getCount())); + holeCountMap.put("countFaceA", Integer.valueOf(holeXmlVOS.getCountFaceA())); + holeCountMap.put("countFaceB", Integer.valueOf(holeXmlVOS.getCountFaceB())); + holeCountMap.put("countSide", Integer.valueOf(holeXmlVOS.getCountSide())); + holeCountMap.put("countSideL", Integer.valueOf(holeXmlVOS.getCountSideL())); + holeCountMap.put("countSideD", Integer.valueOf(holeXmlVOS.getCountSideD())); + holeCountMap.put("countSideR", Integer.valueOf(holeXmlVOS.getCountSideR())); + holeCountMap.put("countSideU", Integer.valueOf(holeXmlVOS.getCountSideU())); + holeCountMap.put("countBevelled", Integer.valueOf(holeXmlVOS.getCountBevelled())); + holeCountMap.put("countLocking", Integer.valueOf(holeXmlVOS.getCountLocking())); + holeCountMap.put("countBuildIn", Integer.valueOf(holeXmlVOS.getCountBuildIn())); + holeCountMap.put("countHinge", Integer.valueOf(holeXmlVOS.getCountHinge())); + holeCountMap.put("countThrough", Integer.valueOf(holeXmlVOS.getCountThrough())); + plateDetail.getHoleCount().putAll(holeCountMap); plateDO.setFrontHoleCount(Integer.valueOf(holeXmlVOS.getCountFaceA())). setBackHoleCount(Integer.valueOf(holeXmlVOS.getCountFaceB())). setSideHoleCount(Integer.valueOf(holeXmlVOS.getCountSide())); @@ -809,6 +1178,23 @@ public class XmlTypeRealize { // 造型 private void addContourDetail(PlateDO plateDO, PlateDetail plateDetail, GrooveXmlVOS grooveXmlVOS) { if (grooveXmlVOS != null && ObjectUtils.allNull(grooveXmlVOS)) { + Map contourCount = new HashMap<>(); + contourCount.put("count",Integer.valueOf(grooveXmlVOS.getCount())); + contourCount.put("countFaceA", Integer.valueOf(grooveXmlVOS.getCountFaceA())); + contourCount.put("countFaceB", Integer.valueOf(grooveXmlVOS.getCountFaceB())); + contourCount.put("countSide", Integer.valueOf(grooveXmlVOS.getCountSide())); + contourCount.put("countSideL", Integer.valueOf(grooveXmlVOS.getCountSideL())); + contourCount.put("countSideD", Integer.valueOf(grooveXmlVOS.getCountSideD())); + contourCount.put("countSideR", Integer.valueOf(grooveXmlVOS.getCountSideR())); + contourCount.put("countSideU", Integer.valueOf(grooveXmlVOS.getCountSideU())); + contourCount.put("countBevelled", Integer.valueOf(grooveXmlVOS.getCountBevelled())); + contourCount.put("countRectangle", Integer.valueOf(grooveXmlVOS.getCountRectangle())); + contourCount.put("count2V", Integer.valueOf(grooveXmlVOS.getCount2V())); + contourCount.put("count3D", Integer.valueOf(grooveXmlVOS.getCount3D())); + contourCount.put("countThrough", Integer.valueOf(grooveXmlVOS.getCountThrough())); + plateDetail.getHoleCount().putAll(contourCount); + plateDetail.setHas2DModel(Integer.parseInt(grooveXmlVOS.getCount2V()) > 0); + plateDetail.setHas3DModel(Integer.parseInt(grooveXmlVOS.getCount3D()) > 0); plateDO.setFrontModelCount(Integer.valueOf(grooveXmlVOS.getCountFaceA())). setBackModelCount(Integer.valueOf(grooveXmlVOS.getCountFaceB())); if (grooveXmlVOS.getCountThrough() != null && Integer.parseInt(grooveXmlVOS.getCountThrough()) > 0) { @@ -897,4 +1283,11 @@ public class XmlTypeRealize { plateDO.setRemark(JSONObject.toJSONString(plateDetail.getPlateRemark())); } } + + // 长度面积数值按单位转换 + public Double changeUnit(String lengthStr, String unit, String type) { + DictDataRespDTO dictData = dictDataApi.parseDictData(type, unit).getData(); + Double length = Double.parseDouble(lengthStr); + return length * Double.parseDouble(dictData.getValue()); + } }