From 683eb69efd14380e54b9299bde4b84fa30cac6bc Mon Sep 17 00:00:00 2001 From: lym <1994302445@qq.com> Date: Tue, 19 Nov 2024 14:04:35 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E4=BB=B6=E6=96=B0=E5=A2=9E=E3=80=81?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/order/OrderController.java | 208 ++--- .../admin/orderParts/vo/OrderPartsRespVO.java | 20 + .../dal/mysql/orderItem/OrderItemMapper.java | 5 +- .../service/order/OrderServiceImpl.java | 48 +- .../admin/api/webcad/ApiTypeRealize.java | 762 +++++++++--------- .../admin/files/excel/ExcelTypeRealize.java | 135 +++- .../admin/files/xml/XMLUtil.java | 208 ++--- .../mapper/orderItem/OrderItemMapper.xml | 193 +++-- 8 files changed, 898 insertions(+), 681 deletions(-) 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 973992b2e..7671b65ae 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 @@ -99,6 +99,10 @@ public class OrderController { @Resource private RedisLockUtil redisLockUtil; + private String lockKey = "order:1631:lock:"; + private String errKey = "api数据导入异常"; + private String errValue = "当前存在导入情况,请稍后"; + @PutMapping("/update") @Operation(summary = "更新生产单") @PreAuthorize("@ss.hasPermission('production:manager-list:edit')") @@ -200,7 +204,11 @@ public class OrderController { @PreAuthorize("@ss.hasPermission('production:manager-list:create')") public CommonResult getApiData(@RequestParam(value = "orderNo") String orderNo){ - redisLockUtil.lock(orderNo); + boolean isLocked = redisLockUtil.lock(lockKey); + if (!isLocked) { + log.error(errKey, errValue); + return success(errValue); + } try { Long orderId = (Long) identifierGenerator.nextId(null); Long organId = getUserOrganId(); @@ -237,10 +245,10 @@ public class OrderController { Long id = orderService.importApiData(listMap); return success(String.valueOf(id)); } catch (Exception e) { - log.error("api数据导入异常", e); + log.error(errKey, e); return success(e.getMessage()); } finally { - redisLockUtil.unlock(orderNo); + redisLockUtil.unlock(lockKey); } } @@ -269,115 +277,121 @@ public class OrderController { Boolean flag = true; String customOrderNoKey = "自定义单号"; - redisLockUtil.lock(file.getOriginalFilename()); - try { - if (type == 0) { //excel - excelReadUtil.setErr(0); - Map map = excelReadUtil.read(file); - list = (List) map.get("plate"); - mapOrder = (Map) map.get("orderPri"); + boolean isLocked = redisLockUtil.lock(lockKey); + if (!isLocked) { + log.error(errKey, errValue); - if (index == 0) { // 全部 - if (mapOrder != null) { - Map mapChange = excelReadUtil.changeOrderDO(mapOrder); - mapOrder = (Map) mapChange.get("file"); - orderDO = (OrderDO) mapChange.get("order"); - orderDO.setId((Long) snowFlakeGenerator.nextId(null)); - AtomicBoolean error = (AtomicBoolean) mapChange.get("error"); - flag = error.get(); + } else { + try { + if (type == 0) { //excel + excelReadUtil.setErr(0); + Map map = excelReadUtil.read(file); + list = (List) map.get("plate"); + mapOrder = (Map) map.get("orderPri"); + + if (index == 0) { // 全部 + if (mapOrder != null) { + Map mapChange = excelReadUtil.changeOrderDO(mapOrder); + mapOrder = (Map) mapChange.get("file"); + orderDO = (OrderDO) mapChange.get("order"); + orderDO.setId((Long) snowFlakeGenerator.nextId(null)); + AtomicBoolean error = (AtomicBoolean) mapChange.get("error"); + flag = error.get(); + } + } else { + orderDO = orderService.getOrder(orderId); + if (orderDO == null) { + mapOrder = new HashMap<>(); + mapOrder.put("自定义单号", "生产单号不存在"); + flag = false; + } } - } else { - orderDO = orderService.getOrder(orderId); - if (orderDO == null) { + + if (mapOrder == null) { mapOrder = new HashMap<>(); - mapOrder.put("自定义单号", "生产单号不存在"); + mapOrder.put(customOrderNoKey, "生产单内容解析为空"); flag = false; + }else if (orderDO == null) { + mapOrder.put(customOrderNoKey, "生产单内为空"); + flag = false; + } else if (orderDO.getCustomOrderNo() != null && !orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())) { + mapOrder.put(customOrderNoKey, mapOrder.get(customOrderNoKey) + customOrderNoKey + "重复"); + flag = false; + } else if ( excelReadUtil.isErr() > 0 ){ + flag = false; + } else if ( excelReadUtil.isErr() == 0 && flag ){ + if (list.size() == 0) { + orderDO.setStatus(OrderStatusEnum.EMPTY.getStatus()); + } else { + orderDO.setStatus(OrderStatusEnum.NEW_ORDER.getStatus()); + listMap = excelTypeRealize.changeDate(list, orderDO.getId()); + } } - } + if (!flag) { + ExcelWriterUtil.write(response, mapOrder, list, orderService.getSavePath() + File.separator + "order_add_excel_err.xlsx"); + return; + } + } else if (type == 1) { // json - if (mapOrder == null) { - mapOrder = new HashMap<>(); - mapOrder.put(customOrderNoKey, "生产单内容解析为空"); - flag = false; - }else if (orderDO == null) { - mapOrder.put(customOrderNoKey, "生产单内为空"); - flag = false; - } else if (orderDO.getCustomOrderNo() != null && !orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())) { - mapOrder.put(customOrderNoKey, mapOrder.get(customOrderNoKey) + customOrderNoKey + "重复"); - flag = false; - } else if ( excelReadUtil.isErr() > 0 ){ - flag = false; - } else if ( excelReadUtil.isErr() == 0 && flag ){ - if (list.size() == 0) { - orderDO.setStatus(OrderStatusEnum.EMPTY.getStatus()); + } else if (type == 2) { // xml + orderXmlVO = (OrderXmlVO) XMLUtil.read(file, OrderXmlVO.class); + + if (index == 0){ + 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.setStatus(OrderStatusEnum.NEW_ORDER.getStatus()); - listMap = excelTypeRealize.changeDate(list, orderDO.getId()); + orderDO = orderService.getOrder(orderId); + if (orderDO == null) { + orderXmlVO = new OrderXmlVO().setMemo("---< 生产单号不存在 >---"); + flag = false; + } + } + + // 生产数据格式验证 + if (orderXmlVO == null) { + orderXmlVO = new OrderXmlVO().setMemo("文件内容解析为空"); + flag = false; + } else if (orderDO == null) { + orderXmlVO = new OrderXmlVO().setMemo("生产单内容为空"); + flag = false; + } else if (orderDO.getCustomOrderNo() != null && !orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())) { + orderXmlVO.setOrderCode(orderXmlVO.getOrderCode() + "---< 自定义单号重复 >---"); + flag = false; + } else if (flag){ // 生产单的内容正确 + 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){ + String xmlStr = XmlBuilder.objectToXmlStr(orderXmlVO); + XMLUtil.writeErr(response, xmlStr, " order_add_xml_err.xml"); + return; } } - if (!flag) { + orderService.importExcelData(orderDO, index, listMap); + } catch (Exception e) { + log.error("文件导入异常", e); + if (type == 0) { ExcelWriterUtil.write(response, mapOrder, list, orderService.getSavePath() + File.separator + "order_add_excel_err.xlsx"); - return; - } - } else if (type == 1) { // json - - } else if (type == 2) { // xml - orderXmlVO = (OrderXmlVO) XMLUtil.read(file, OrderXmlVO.class); - - if (index == 0){ - 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("---< 生产单号不存在 >---"); - flag = false; - } - } - - // 生产数据格式验证 - if (orderXmlVO == null) { - orderXmlVO = new OrderXmlVO().setMemo("文件内容解析为空"); - flag = false; - } else if (orderDO == null) { - orderXmlVO = new OrderXmlVO().setMemo("生产单内容为空"); - flag = false; - } else if (orderDO.getCustomOrderNo() != null && !orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())) { - orderXmlVO.setOrderCode(orderXmlVO.getOrderCode() + "---< 自定义单号重复 >---"); - flag = false; - } else if (flag){ // 生产单的内容正确 - 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){ + } else if (type == 2) { String xmlStr = XmlBuilder.objectToXmlStr(orderXmlVO); XMLUtil.writeErr(response, xmlStr, " order_add_xml_err.xml"); - return; } + } finally { + redisLockUtil.unlock(lockKey); } - orderService.importExcelData(orderDO, index, listMap); - } catch (Exception e) { - log.error("文件导入异常", e); - if (type == 0) { - ExcelWriterUtil.write(response, mapOrder, list, orderService.getSavePath() + File.separator + "order_add_excel_err.xlsx"); - } else if (type == 2) { - String xmlStr = XmlBuilder.objectToXmlStr(orderXmlVO); - XMLUtil.writeErr(response, xmlStr, " order_add_xml_err.xml"); - } - } finally { - redisLockUtil.unlock(file.getOriginalFilename()); } + } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsRespVO.java index 155607dea..b1d17fab7 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsRespVO.java @@ -33,6 +33,14 @@ public class OrderPartsRespVO { @ExcelProperty("材质") private String material; + @Schema(description = "颜色", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("颜色") + private String color; + + @Schema(description = "配件主类", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("配件主类") + private String category; + @Schema(description = "配件类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @ExcelProperty("配件类型") private String type; @@ -41,6 +49,18 @@ public class OrderPartsRespVO { @ExcelProperty("型号") private String model; + @Schema(description = "宽度", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("宽度") + private Double width; + + @Schema(description = "长度", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("长度") + private Double length; + + @Schema(description = "厚度", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("厚度") + private Double thickness; + @Schema(description = "规格", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("规格") private String spec; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemMapper.java index cf569a13e..4b82617e9 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderItem/OrderItemMapper.java @@ -128,7 +128,6 @@ public interface OrderItemMapper extends BaseMapperX { @Param("bodyId") Set bodyId, @Param("groupId") Set groupId, @Param("goodsId") Set goodsId, @Param("organId") Long organId, @Param("deleted") Integer deleted); - List selectPartsNotId(@Param("orderId") Long orderId, @Param("roomId") Long roomId, - @Param("bodyId") Long bodyId, @Param("groupId") Long groupId, @Param("goodsId") Long goodsId, - @Param("organId") Long organId, @Param("deleted") Integer deleted); + Integer countPartsNotId(@Param("orderId") Long orderId, @Param("bodyId") Set bodyIds, @Param("goodsId") Long partsId, + @Param("organId") Long organId, @Param("deleted") Integer deleted); } \ No newline at end of file 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 ec9bfe307..b93d92879 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 @@ -292,13 +292,17 @@ public class OrderServiceImpl implements OrderService { if (!partsList.isEmpty()){ // // 判断是否含有重复的配件 -// List partsNot = new ArrayList<>(); -// for (Long partsId : partsList) { -// Long partNot = orderItemMapper.selectPartsNotId(partsId, getUserOrganId(), orderId); -// if (!groupIds.isEmpty()) { -// orderGroupMapper.updateDeletedGroup(groupIds, getUserOrganId(), orderId); -// } -// } + Iterator iterator = partsList.iterator(); + while (iterator.hasNext()) { + Long id = iterator.next(); // 配件id判断是否重复 + // 判断不符合删除配件的规则 + Integer partsCount = orderItemMapper.countPartsNotId(orderId, new HashSet<>(bodyIds), id, getUserOrganId(), 0); + if (partsCount > 0){ + iterator.remove(); + } + } + } + if (!partsList.isEmpty()) { orderPartsMapper.updateDeletedParts(partsList, getUserOrganId(),orderId); } @@ -731,7 +735,7 @@ public class OrderServiceImpl implements OrderService { return partsDOS; } - private Map> getPlateGoods(List goodsLists) { + private Map> getPlateGoods(List goodsLists) { // order_goods list Map> map = new HashMap<>(); List plateGoodLists = new ArrayList<>(); @@ -739,17 +743,15 @@ public class OrderServiceImpl implements OrderService { return Collections.emptyMap(); } for (GoodsDO goodsDO : goodsLists) { - PlateGoodDO plateGoodDO = null; - List plateGoodDOS = null; - if (goodsDO.getGoodsId() != null) { // 有goodsId + PlateGoodDO plateGoodDO = null; // plate + List plateGoodDOS = null; // plate list + if (goodsDO.getGoodsId() != null && !goodsDO.getGoodsId().isEmpty()) { // 有goodsId plateGoodDO = getPlateGood(goodsDO.getGoodsId(), OrganContextHolder.getOrganId()); } else { // 没有goodsId 其他信息匹配 plateGoodDOS = plateGoodMapper.selectGood(goodsDO.getGoodsName(), goodsDO.getMaterial(), goodsDO.getColor(), goodsDO.getTexture(), goodsDO.getWidth(), goodsDO.getThickness(), goodsDO.getHeight(), goodsDO.getBrand(), goodsDO.getSpec(), OrganContextHolder.getOrganId()); - long plateNo = idWorker.nextId(); - long obtainingTime = idWorker.obtainingTime(); - goodsDO.setGoodsId((obtainingTime) + Long.toString(plateNo).substring(2)); + } if (plateGoodDOS != null && !plateGoodDOS.isEmpty()) {//存在板材 @@ -757,7 +759,13 @@ public class OrderServiceImpl implements OrderService { } else if (plateGoodDO != null) { // 存在板材 goodsDO.setGoodsId(plateGoodDO.getGoodsId()); } else { // 不存在板材 - String goodsId = goodsDO.getGoodsId(); + + long plateNo = idWorker.nextId(); + long obtainingTime = idWorker.obtainingTime(); + + String goodsId = (obtainingTime) + Long.toString(plateNo).substring(2); + goodsDO.setGoodsId(goodsId); + Long plateGoods = (Long) identifierGenerator.nextId(null); @@ -765,11 +773,11 @@ public class OrderServiceImpl implements OrderService { .setId(plateGoods) .setGoodsId(goodsId); // 判断是否存在raw_goods_id - if (goodsDO.getGoodsId() != null) { - plateGoodDO.setGoodsId(goodsDO.getGoodsId()); - } else { - goodsDO.setGoodsId(plateGoodDO.getGoodsId()); - } +// if (goodsDO.getGoodsId() != null) { +// plateGoodDO.setGoodsId(goodsDO.getGoodsId()); +// } else { +// goodsDO.setGoodsId(plateGoodDO.getGoodsId()); +// } plateGoodLists.add(plateGoodDO); } 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 70ea4286b..69f6c9000 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 @@ -61,6 +61,9 @@ public class ApiTypeRealize { private static String PART_THICKNESS = "thickness"; private static String PART_COLOR = "color"; private static String PART_MATERIAL = "material"; + private static String PART_CATEGORY_ONE = "封边条"; + private static String PART_CATEGORY_TWO = "五金"; + private static String PART_CATEGORY_THREE = "组件"; /** * @param dataPlates: 板件生产信息 造型数据 * @param dataParts: 配件信息 @@ -93,7 +96,7 @@ public class ApiTypeRealize { // 商品信息数据 信息以全 - Map goodsInfoChange = rawGoodsInfoChange(dataGoods, orderId, organId); + Map goodsInfoChange = rawGoodsInfoChange(dataGoods, orderId, organId, token); Map rawGoodsDOS = (Map) goodsInfoChange.get(FieldConstants.RAW_GOODS); Map goodsDOS = (Map) goodsInfoChange.get(FieldConstants.GOODS); @@ -163,6 +166,8 @@ public class ApiTypeRealize { map.put(FieldConstants.ITEM, itemsList); if (bodyItemsPlates != null) { map.put(FieldConstants.BODY, new ArrayList<>(bodyItemsPlates.values())); + } else { + map.put(FieldConstants.BODY, new ArrayList<>(bodyInfoChange.values())); // Map bodyInfoChange } return map; @@ -374,7 +379,8 @@ public class ApiTypeRealize { */ public Map rawGoodsInfoChange(JSONObject dataRawGoods, Long orderId, - Long organId) { + Long organId, + String token) { JSONArray goodsLists = dataRawGoods.getJSONArray(ProduceApiConstants.LIST); if (goodsLists == null || goodsLists.isEmpty()) { @@ -386,44 +392,52 @@ public class ApiTypeRealize { Map goodsDOS = new HashMap<>(); - for (int i = 0; i < goodsLists.size(); i++) { - JSONObject goods = goodsLists.getJSONObject(i); - - RawGoodsDO rawGoodsDO = RawGoodsDO.builder() - .id((Long) identifierGenerator.nextId(null)) - .orderId(orderId) - .rawGoodsId(goods.getString(ProduceApiConstants.G_DOOR_ID)) - .goodsName(goods.getString(ProduceApiConstants.G_GOODS_NAME)) - .material(goods.getString(ProduceApiConstants.G_MATERIAL)) - .color(goods.getString(ProduceApiConstants.G_COLOR)) - .texture(getTexture( goods.getJSONObject(ProduceApiConstants.G_EXTRA_PROP))) - .thickness(goods.getDouble(ProduceApiConstants.G_THICKNESS)) - .brand(goods.getString(ProduceApiConstants.G_BRAND)) - .spec(goods.getString(ProduceApiConstants.G_SPEC)) - .organId(organId) - .build(); - rawGoodsDOS.put(goods.getLong(ProduceApiConstants.G_DOOR_ID), rawGoodsDO); - - GoodsDO goodsDO = GoodsDO.builder() - .id((Long) identifierGenerator.nextId(null)) - .orderId(orderId) - .rawGoodsId(String.valueOf(rawGoodsDO.getId())) - .goodsId(goods.getString(ProduceApiConstants.G_DOOR_ID)) // 先填这个,后面改 - .goodsName(goods.getString(ProduceApiConstants.G_GOODS_NAME)) - .material(goods.getString(ProduceApiConstants.G_MATERIAL)) - .color(goods.getString(ProduceApiConstants.G_COLOR)) - .texture(getTexture( goods.getJSONObject(ProduceApiConstants.G_EXTRA_PROP))) - .width(BigDecimal.valueOf(goods.getDouble(ProduceApiConstants.G_WIDTH))) - .height(BigDecimal.valueOf(goods.getDouble(ProduceApiConstants.G_HEIGHT))) - .thickness(BigDecimal.valueOf(goods.getDouble(ProduceApiConstants.G_THICKNESS))) - .brand(goods.getString(ProduceApiConstants.G_BRAND)) - .spec(goods.getString(ProduceApiConstants.G_SPEC)) - .organId(organId) - .build(); - goodsDOS.put(goods.getLong(ProduceApiConstants.G_DOOR_ID), goodsDO); + for (int i = 0; i < goodsLists.size(); i++) { + JSONObject goods = goodsLists.getJSONObject(i); + Long goodsId = goods.getLong(ProduceApiConstants.G_DOOR_ID); + String goodsSn = null; + if (goodsId != null) { + goodsSn = getGoodsSn(goods.getLong(ProduceApiConstants.G_DOOR_ID), token); } + RawGoodsDO rawGoodsDO = RawGoodsDO.builder() + .id((Long) identifierGenerator.nextId(null)) + .orderId(orderId) +// .rawGoodsId(goods.getString(ProduceApiConstants.G_DOOR_ID)) + .rawGoodsId(goodsSn) + .goodsName(goods.getString(ProduceApiConstants.G_GOODS_NAME)) + .material(goods.getString(ProduceApiConstants.G_MATERIAL)) + .color(goods.getString(ProduceApiConstants.G_COLOR)) + .texture(getTexture( goods.getJSONObject(ProduceApiConstants.G_EXTRA_PROP))) + .thickness(goods.getDouble(ProduceApiConstants.G_THICKNESS)) + .brand(goods.getString(ProduceApiConstants.G_BRAND)) + .spec(goods.getString(ProduceApiConstants.G_SPEC)) + .organId(organId) + .build(); + rawGoodsDOS.put(goods.getLong(ProduceApiConstants.G_DOOR_ID), rawGoodsDO); + + GoodsDO goodsDO = GoodsDO.builder() + .id((Long) identifierGenerator.nextId(null)) + .orderId(orderId) + .rawGoodsId(String.valueOf(rawGoodsDO.getId())) +// .goodsId(goods.getString(ProduceApiConstants.G_DOOR_ID)) // 先填这个,后面改 + .goodsId(goodsSn) + .goodsName(goods.getString(ProduceApiConstants.G_GOODS_NAME)) + .material(goods.getString(ProduceApiConstants.G_MATERIAL)) + .color(goods.getString(ProduceApiConstants.G_COLOR)) + .texture(getTexture( goods.getJSONObject(ProduceApiConstants.G_EXTRA_PROP))) + .width(BigDecimal.valueOf(goods.getDouble(ProduceApiConstants.G_WIDTH))) + .height(BigDecimal.valueOf(goods.getDouble(ProduceApiConstants.G_HEIGHT))) + .thickness(BigDecimal.valueOf(goods.getDouble(ProduceApiConstants.G_THICKNESS))) + .brand(goods.getString(ProduceApiConstants.G_BRAND)) + .spec(goods.getString(ProduceApiConstants.G_SPEC)) + .organId(organId) + .build(); + goodsDOS.put(goods.getLong(ProduceApiConstants.G_DOOR_ID), goodsDO); + + } + map.put(FieldConstants.RAW_GOODS, rawGoodsDOS); map.put(FieldConstants.GOODS, goodsDOS); @@ -447,27 +461,27 @@ public class ApiTypeRealize { } Map bodyInfos = new HashMap<>(); - for (int i = 0; i < bodyLists.size(); i++) { - JSONObject body = bodyLists.getJSONObject(i); - OrderBodyDO bodyInfo = OrderBodyDO.builder() - .id((Long) identifierGenerator.nextId(null)) - .orderId(orderId) - .roomId(Long.valueOf(body.getString(ProduceApiConstants.B_ROOM_ID))) - .roomName(body.getString(ProduceApiConstants.B_ROOM_NAME)) - .name(body.getString(ProduceApiConstants.B_NAME)) - .width(body.getDouble(ProduceApiConstants.B_WIDTH)) - .height(body.getDouble(ProduceApiConstants.B_HEIGHT)) - .depth(body.getDouble(ProduceApiConstants.B_DEPTH)) - .multiNum(0) - .plateNum(0) - .unregularNum(0) - .filename("") - .remark("") - .organId(organId) - .build(); - bodyInfos.put(body.getLong(ProduceApiConstants.B_BOX_ID), bodyInfo); + for (int i = 0; i < bodyLists.size(); i++) { + JSONObject body = bodyLists.getJSONObject(i); + OrderBodyDO bodyInfo = OrderBodyDO.builder() + .id((Long) identifierGenerator.nextId(null)) + .orderId(orderId) + .roomId(Long.valueOf(body.getString(ProduceApiConstants.B_ROOM_ID))) + .roomName(body.getString(ProduceApiConstants.B_ROOM_NAME)) + .name(body.getString(ProduceApiConstants.B_NAME)) + .width(body.getDouble(ProduceApiConstants.B_WIDTH)) + .height(body.getDouble(ProduceApiConstants.B_HEIGHT)) + .depth(body.getDouble(ProduceApiConstants.B_DEPTH)) + .multiNum(0) + .plateNum(0) + .unregularNum(0) + .filename("") + .remark("") + .organId(organId) + .build(); + bodyInfos.put(body.getLong(ProduceApiConstants.B_BOX_ID), bodyInfo); - } + } return bodyInfos; } @@ -489,9 +503,13 @@ public class ApiTypeRealize { private Map getPartsSize(JSONObject size, JSONObject spec) { Map map = new HashMap<>(); if (size != null && !size.isEmpty()) { - map.put(PART_WIDTH, size.getInteger(ProduceApiConstants.PD_WIDTH)); - map.put(PART_LENGTH, size.getInteger(ProduceApiConstants.PD_LENGTH)); - map.put(PART_THICKNESS, size.getInteger(ProduceApiConstants.PD_THICKNESS)); + map.put(PART_WIDTH, size.getDouble(ProduceApiConstants.PD_WIDTH)); + map.put(PART_LENGTH, size.getDouble(ProduceApiConstants.PD_LENGTH)); + map.put(PART_THICKNESS, size.getDouble(ProduceApiConstants.PD_THICKNESS)); + } else { + map.put(PART_WIDTH, 0.0); + map.put(PART_LENGTH, 0.0); + map.put(PART_THICKNESS, 0.0); } if (spec != null && !spec.isEmpty()) { map.put(PART_COLOR, spec.getString(ProduceApiConstants.PD_PARTS_SPEC_COLOR)); @@ -532,77 +550,104 @@ public class ApiTypeRealize { Long organId, String token) { - if (value == null || value.isEmpty()) { - return Collections.emptyMap(); - } - Map map = new HashMap<>(); Map partsInfos = new HashMap<>(); Map partsItem = new HashMap<>(); Map remarks = new HashMap<>(); - - JSONArray partsLists = value.getJSONArray(ProduceApiConstants.LIST); - for (int i = 0; i < partsLists.size(); i++) { - JSONObject parts = partsLists.getJSONObject(i); - Long partsId = (Long) identifierGenerator.nextId(null); - // 这边用的配件详情接口的数据,可能存在多种配件的goodsId相同 - // 配件长宽厚颜色赋值 - Map sizeMap = getPartsSize(parts.getJSONObject(ProduceApiConstants.PD_SIZE), parts.getJSONObject(ProduceApiConstants.PD_PARTS_SPEC_OB)); - // goods_id转换,需要调用接口 -// Long goodsId = goodsDOMap.get(parts.getLong(ProduceApiConstants.PD_GOODS_ID)) != null -// ? goodsDOMap.get(parts.getLong(ProduceApiConstants.PD_GOODS_ID)).getId() : parts.getLong(ProduceApiConstants.PD_GOODS_ID); - Long goodsId = parts.getLong(ProduceApiConstants.PD_GOODS_ID); - String goodsSn = null; - if (goodsId != null) { - goodsSn = getGoodsSn(parts.getLong(ProduceApiConstants.PD_GOODS_ID), token); - } - OrderPartsDO partsInfo = OrderPartsDO.builder() - .id(partsId) - .orderId(orderId) - .goodsId(goodsSn) - .name(parts.getString(ProduceApiConstants.PD_NAME)) -// .material(String.valueOf(goodsDOMap.get(parts.getLong(ProduceApiConstants.PD_GOODS_ID)) != null -// ? goodsDOMap.get(parts.getLong(ProduceApiConstants.PD_GOODS_ID)).getMaterial() : "")) - .material((String) sizeMap.get(PART_MATERIAL)) - .type(parts.getString(ProduceApiConstants.PD_OBJECT_TYPE)) - .model(parts.getString(ProduceApiConstants.PD_MODEL)) - .color((String) sizeMap.get(PART_COLOR)) - .width((Double) sizeMap.get(PART_WIDTH)) - .length((Double) sizeMap.get(PART_LENGTH)) - .thickness((Double) sizeMap.get(PART_THICKNESS)) - .spec(parts.getString(ProduceApiConstants.PD_SPEC)) - .brand(parts.getString(ProduceApiConstants.PD_BRAND)) - .factory(parts.getString(ProduceApiConstants.PD_FACTORY)) - .unit(parts.getString(ProduceApiConstants.PD_UNITS)) - .isComposite(parts.getBoolean(ProduceApiConstants.PD_IS_COMPOSITE)) - .remark(parts.getString(ProduceApiConstants.PD_REMARK)) - .organId(organId) - .build(); - remarks.put(parts.getLong(ProduceApiConstants.PD_ITEM_NO), partsRemarkChange(parts, orderId, partsId)); - partsInfos.put(parts.getLong(ProduceApiConstants.PD_ITEM_NO), partsInfo); - - // item 明细 - OrderItemDO item = OrderItemDO.builder() - .id((Long) identifierGenerator.nextId(null)) - .orderId(orderId) - .type(OrderItemTypeEnum.PARTS_ITEM.getStatus()) - .roomId(bodyInfos.get(parts.getLong(ProduceApiConstants.PD_BOX_ID)).getRoomId()) - .bodyId(bodyInfos.get(parts.getLong(ProduceApiConstants.PD_BOX_ID)).getId()) - .planId(0L) - .packageId(0L) - .groupId(0L) - .partsId(partsId) - .num(parts.getDouble(ProduceApiConstants.PD_NUM)) - .organId(organId) - .build(); - partsItem.put(parts.getLong(ProduceApiConstants.PD_ITEM_NO), item); - } - - map.put("partsInfos", partsInfos); map.put("partsItems", partsItem); map.put("remarks", remarks); + + if (value == null || value.isEmpty()) { + return map; + } + + + + JSONArray partsLists = value.getJSONArray(ProduceApiConstants.LIST); + for (int i = 0; i < partsLists.size(); i++) { + JSONObject parts = partsLists.getJSONObject(i); + Long partsId = (Long) identifierGenerator.nextId(null); + // 这边用的配件详情接口的数据,可能存在多种配件的goodsId相同 + // 配件长宽厚颜色赋值 + Map sizeMap = getPartsSize(parts.getJSONObject(ProduceApiConstants.PD_SIZE), parts.getJSONObject(ProduceApiConstants.PD_PARTS_SPEC_OB)); + // goods_id转换,需要调用接口 +// Long goodsId = goodsDOMap.get(parts.getLong(ProduceApiConstants.PD_GOODS_ID)) != null +// ? goodsDOMap.get(parts.getLong(ProduceApiConstants.PD_GOODS_ID)).getId() : parts.getLong(ProduceApiConstants.PD_GOODS_ID); + Long goodsId = parts.getLong(ProduceApiConstants.PD_GOODS_ID); + + String goodsSn = null; + Long key = parts.getLong(ProduceApiConstants.PD_ITEM_NO); + // goods_id不为0时,要判断是否有存相同的goods_id,为0时,新增一条order_parts + if (goodsId != 0) { + goodsSn = getGoodsSn(parts.getLong(ProduceApiConstants.PD_GOODS_ID), token); + key = goodsId; + } + + OrderPartsDO partsInfo = OrderPartsDO.builder() + .id(partsId) + .orderId(orderId) + .goodsId(goodsSn) + .name(parts.getString(ProduceApiConstants.PD_NAME)) +// .material(String.valueOf(goodsDOMap.get(parts.getLong(ProduceApiConstants.PD_GOODS_ID)) != null +// ? goodsDOMap.get(parts.getLong(ProduceApiConstants.PD_GOODS_ID)).getMaterial() : "")) + .material((String) sizeMap.get(PART_MATERIAL)) + .type(parts.getString(ProduceApiConstants.PD_OBJECT_TYPE)) + .model(parts.getString(ProduceApiConstants.PD_MODEL)) + .color((String) sizeMap.get(PART_COLOR)) + .width((Double) sizeMap.get(PART_WIDTH)) + .length((Double) sizeMap.get(PART_LENGTH)) + .thickness((Double) sizeMap.get(PART_THICKNESS)) + .spec(parts.getString(ProduceApiConstants.PD_SPEC)) + .brand(parts.getString(ProduceApiConstants.PD_BRAND)) + .factory(parts.getString(ProduceApiConstants.PD_FACTORY)) + .unit(parts.getString(ProduceApiConstants.PD_UNITS)) + .isComposite(parts.getBoolean(ProduceApiConstants.PD_IS_COMPOSITE)) + .remark(parts.getString(ProduceApiConstants.PD_REMARK)) + .organId(organId) + .build(); + + // 主分类赋值 + if (parts.getString(ProduceApiConstants.PD_OBJECT_TYPE).equals(PART_CATEGORY_ONE)) { + partsInfo.setCategory(PART_CATEGORY_ONE); + } else { + if (parts.getBoolean(ProduceApiConstants.PD_IS_COMPOSITE)) { + partsInfo.setCategory(PART_CATEGORY_THREE); + } else { + partsInfo.setCategory(PART_CATEGORY_TWO); + } + } + + // item 明细 + OrderItemDO item = OrderItemDO.builder() + .id((Long) identifierGenerator.nextId(null)) + .orderId(orderId) + .type(OrderItemTypeEnum.PARTS_ITEM.getStatus()) + .roomId(bodyInfos.get(parts.getLong(ProduceApiConstants.PD_BOX_ID)).getRoomId()) + .bodyId(bodyInfos.get(parts.getLong(ProduceApiConstants.PD_BOX_ID)).getId()) + .planId(0L) + .packageId(0L) + .groupId(0L) + .partsId(partsId) + .num(parts.getDouble(ProduceApiConstants.PD_NUM)) + .organId(organId) + .build(); + partsItem.put(parts.getLong(ProduceApiConstants.PD_ITEM_NO), item); + + if (partsInfos.get(goodsId) != null) { //有存,下一条 + partsId = partsInfos.get(goodsId).getId(); + partsItem.get(parts.getLong(ProduceApiConstants.PD_ITEM_NO)).setPartsId(partsId); + continue; + } + remarks.put(key, partsRemarkChange(parts, orderId, partsId)); + partsInfos.put(key, partsInfo); + } + + +// map.put("partsInfos", partsInfos); +// map.put("partsItems", partsItem); +// map.put("remarks", remarks); return map; } @@ -651,130 +696,130 @@ public class ApiTypeRealize { } - JSONArray plateLists = dataPlates.getJSONArray(ProduceApiConstants.LIST); - for (int i = 0; i < plateLists.size(); i++) { - long plateNo = idWorker.nextId(); - long obtainingTime = idWorker.obtainingTime(); + JSONArray plateLists = dataPlates.getJSONArray(ProduceApiConstants.LIST); + for (int i = 0; i < plateLists.size(); i++) { + long plateNo = idWorker.nextId(); + long obtainingTime = idWorker.obtainingTime(); - JSONObject plate = plateLists.getJSONObject(i); + JSONObject plate = plateLists.getJSONObject(i); - Integer type = Integer.valueOf(dictDataApi.parseDictData(DictTypeConstants.PLATE_TYPE, - plate.getString(ProduceApiConstants.BD_BOARD_TYPE)) - .getData().getValue()); - Long plateId = (Long) identifierGenerator.nextId(null); + Integer type = Integer.valueOf(dictDataApi.parseDictData(DictTypeConstants.PLATE_TYPE, + plate.getString(ProduceApiConstants.BD_BOARD_TYPE)) + .getData().getValue()); + Long plateId = (Long) identifierGenerator.nextId(null); - String remarkJson = plate.getString(ProduceApiConstants.BD_REMARK_JSON).replace("\"", "").trim(); - String remark = !remarkJson.trim().isEmpty() ? remarkJson : ""; + String remarkJson = plate.getString(ProduceApiConstants.BD_REMARK_JSON).replace("\"", "").trim(); + String remark = !remarkJson.trim().isEmpty() ? remarkJson : ""; - PlateDO plateInfo = PlateDO.builder() - .id(plateId) - .orderId(orderId) - .name(plate.getString(ProduceApiConstants.BD_BOARD_NAME)) - .plateNo((obtainingTime) + Long.toString(plateNo).substring(2)) - .type(type) - .goodsId(goodsDOMap.get(plate.getLong(ProduceApiConstants.BD_GOODS_ID)) != null ? - goodsDOMap.get(plate.getLong(ProduceApiConstants.BD_GOODS_ID)).getId() : plate.getLong(ProduceApiConstants.BD_GOODS_ID)) - .splitHeight(BigDecimal.valueOf(plate.getDouble(ProduceApiConstants.BD_SPLIT_HEIGHT))) - .splitThickness(BigDecimal.valueOf(plate.getDouble(ProduceApiConstants.BD_SPLIT_THICKNESS))) - .splitWidth(BigDecimal.valueOf(plate.getDouble(ProduceApiConstants.BD_SPLIT_WIDTH))) - .sealLeft(BigDecimal.valueOf(plate.getDouble(ProduceApiConstants.BD_SEALED_LEFT))) - .sealRight(BigDecimal.valueOf(plate.getDouble(ProduceApiConstants.BD_SEALED_RIGHT))) - .sealUp(BigDecimal.valueOf(plate.getDouble(ProduceApiConstants.BD_SEALED_UP))) - .sealDown(BigDecimal.valueOf(plate.getDouble(ProduceApiConstants.BD_SEALED_DOWN))) - .holeArrange(0) // 排孔类型 值无实际含义,默认初始化值 - .unregularPointCount(0)// 异形孔个数 值无实际含义,默认初始化值 - .frontHoleCount(plate.getInteger(ProduceApiConstants.BD_FRONT_HOLE_COUNT)) - .sideHoleCount(plate.getInteger(ProduceApiConstants.BD_BACK_HOLE_COUNT)) - .sideHoleCount(plate.getInteger(ProduceApiConstants.BD_SIDE_HOLE_COUNT)) - .frontModelCount(plate.getInteger(ProduceApiConstants.BD_FRONT_MODEL_COUNT)) - .backModelCount(plate.getInteger(ProduceApiConstants.BD_BACK_MODEL_COUNT)) - .isDoor(plate.getInteger(ProduceApiConstants.BD_OPEN_DOOR_TYPE) != 0) - .openDoorType(plate.getInteger(ProduceApiConstants.BD_OPEN_DOOR_TYPE)) - .isArcAcross(false) - .moduleTypeId(0L) - .isSculpt(plate.getBoolean(ProduceApiConstants.BD_IS_MODEL)) - .isSpecialShaped(plate.getBoolean(ProduceApiConstants.BD_IS_UN_REGULAR)) - .isCancel(false) - .filterType("") - .remark(remark) - .organId(organId) - .build(); - // item 明细 - OrderItemDO itemPlate = OrderItemDO.builder() - .id((Long) identifierGenerator.nextId(null)) - .orderId(orderId) - .type(OrderItemTypeEnum.PLATE_ITEM.getStatus()) - .roomId(bodyInfos.get(plate.getLong(ProduceApiConstants.BD_BOX_ID)).getRoomId()) - .bodyId(bodyInfos.get(plate.getLong(ProduceApiConstants.BD_BOX_ID)).getId()) - .planId(0L) - .packageId(0L) - .groupId(0L) - .partsId(0L) - .plateId(plateId) - .num(1.0) - .organId(organId) - .build(); + PlateDO plateInfo = PlateDO.builder() + .id(plateId) + .orderId(orderId) + .name(plate.getString(ProduceApiConstants.BD_BOARD_NAME)) + .plateNo((obtainingTime) + Long.toString(plateNo).substring(2)) + .type(type) + .goodsId(goodsDOMap.get(plate.getLong(ProduceApiConstants.BD_GOODS_ID)) != null ? + goodsDOMap.get(plate.getLong(ProduceApiConstants.BD_GOODS_ID)).getId() : plate.getLong(ProduceApiConstants.BD_GOODS_ID)) + .splitHeight(BigDecimal.valueOf(plate.getDouble(ProduceApiConstants.BD_SPLIT_HEIGHT))) + .splitThickness(BigDecimal.valueOf(plate.getDouble(ProduceApiConstants.BD_SPLIT_THICKNESS))) + .splitWidth(BigDecimal.valueOf(plate.getDouble(ProduceApiConstants.BD_SPLIT_WIDTH))) + .sealLeft(BigDecimal.valueOf(plate.getDouble(ProduceApiConstants.BD_SEALED_LEFT))) + .sealRight(BigDecimal.valueOf(plate.getDouble(ProduceApiConstants.BD_SEALED_RIGHT))) + .sealUp(BigDecimal.valueOf(plate.getDouble(ProduceApiConstants.BD_SEALED_UP))) + .sealDown(BigDecimal.valueOf(plate.getDouble(ProduceApiConstants.BD_SEALED_DOWN))) + .holeArrange(0) // 排孔类型 值无实际含义,默认初始化值 + .unregularPointCount(0)// 异形孔个数 值无实际含义,默认初始化值 + .frontHoleCount(plate.getInteger(ProduceApiConstants.BD_FRONT_HOLE_COUNT)) + .sideHoleCount(plate.getInteger(ProduceApiConstants.BD_BACK_HOLE_COUNT)) + .sideHoleCount(plate.getInteger(ProduceApiConstants.BD_SIDE_HOLE_COUNT)) + .frontModelCount(plate.getInteger(ProduceApiConstants.BD_FRONT_MODEL_COUNT)) + .backModelCount(plate.getInteger(ProduceApiConstants.BD_BACK_MODEL_COUNT)) + .isDoor(plate.getInteger(ProduceApiConstants.BD_OPEN_DOOR_TYPE) != 0) + .openDoorType(plate.getInteger(ProduceApiConstants.BD_OPEN_DOOR_TYPE)) + .isArcAcross(false) + .moduleTypeId(0L) + .isSculpt(plate.getBoolean(ProduceApiConstants.BD_IS_MODEL)) + .isSpecialShaped(plate.getBoolean(ProduceApiConstants.BD_IS_UN_REGULAR)) + .isCancel(false) + .filterType("") + .remark(remark) + .organId(organId) + .build(); + // item 明细 + OrderItemDO itemPlate = OrderItemDO.builder() + .id((Long) identifierGenerator.nextId(null)) + .orderId(orderId) + .type(OrderItemTypeEnum.PLATE_ITEM.getStatus()) + .roomId(bodyInfos.get(plate.getLong(ProduceApiConstants.BD_BOX_ID)).getRoomId()) + .bodyId(bodyInfos.get(plate.getLong(ProduceApiConstants.BD_BOX_ID)).getId()) + .planId(0L) + .packageId(0L) + .groupId(0L) + .partsId(0L) + .plateId(plateId) + .num(1.0) + .organId(organId) + .build(); - if (plateDetail != null){ - Long blockNo = plate.getLong(ProduceApiConstants.BD_BLOCK_NO); - PlateDetail plateDetailInfo = plateDetail.get(blockNo); + if (plateDetail != null){ + Long blockNo = plate.getLong(ProduceApiConstants.BD_BLOCK_NO); + PlateDetail plateDetailInfo = plateDetail.get(blockNo); - if (plateDetailInfo != null) { - plateDetailInfo.setPlateId(plateId) - .setExtraRemark(plate.getString(ProduceApiConstants.BD_EXTRA_REMARK).replace("\"", "").trim()) - .setSpecialRemarkDei(plate.getString(ProduceApiConstants.BD_SPECIAL_REMARK).replace("\"", "").trim()) - .setExtraHandleRemark(plate.getString(ProduceApiConstants.BD_EXTRA_HANDLE_REMARK).replace("\"", "").trim()) - .setDrillsRemark(plate.getString(ProduceApiConstants.BD_DRILLS_REMARK).replace("\"", "").trim()) - .setInfoRemark(plate.getString(ProduceApiConstants.BD_INFO_REMARK).replace("\"", "").trim()) - .setRemarkJsonDei(remarkJson); + if (plateDetailInfo != null) { + plateDetailInfo.setPlateId(plateId) + .setExtraRemark(plate.getString(ProduceApiConstants.BD_EXTRA_REMARK).replace("\"", "").trim()) + .setSpecialRemarkDei(plate.getString(ProduceApiConstants.BD_SPECIAL_REMARK).replace("\"", "").trim()) + .setExtraHandleRemark(plate.getString(ProduceApiConstants.BD_EXTRA_HANDLE_REMARK).replace("\"", "").trim()) + .setDrillsRemark(plate.getString(ProduceApiConstants.BD_DRILLS_REMARK).replace("\"", "").trim()) + .setInfoRemark(plate.getString(ProduceApiConstants.BD_INFO_REMARK).replace("\"", "").trim()) + .setRemarkJsonDei(remarkJson); - plateInfo.setHoleFace(plateDetailInfo.getTypographicFace()) - .setOffsetX(plateDetailInfo.getOffsetX()) - .setOffsetY(plateDetailInfo.getOffsetY()); - - if (plateDetailInfo.getThroughModelCount() != null - && plateDetailInfo.getThroughModelCount() > 0){ - plateInfo.setFilterType(plateInfo.getFilterType() + ",1"); - } - if (plateDetailInfo.getThroughHoleCount() != null - && plateDetailInfo.getThroughHoleCount() > 0){ - plateInfo.setFilterType(plateInfo.getFilterType() + ",2"); - } - if (plateDetailInfo.getHas2DModel() != null - && plateDetailInfo.getHas2DModel()){ - plateInfo.setFilterType(plateInfo.getFilterType() + ",4"); - } + plateInfo.setHoleFace(plateDetailInfo.getTypographicFace()) + .setOffsetX(plateDetailInfo.getOffsetX()) + .setOffsetY(plateDetailInfo.getOffsetY()); + if (plateDetailInfo.getThroughModelCount() != null + && plateDetailInfo.getThroughModelCount() > 0){ + plateInfo.setFilterType(plateInfo.getFilterType() + ",1"); + } + if (plateDetailInfo.getThroughHoleCount() != null + && plateDetailInfo.getThroughHoleCount() > 0){ + plateInfo.setFilterType(plateInfo.getFilterType() + ",2"); + } + if (plateDetailInfo.getHas2DModel() != null + && plateDetailInfo.getHas2DModel()){ + plateInfo.setFilterType(plateInfo.getFilterType() + ",4"); } - if (plateMap.get(blockNo) != null) { - JSONObject jsonObject = plateMap.get(blockNo); - if (plateDetailInfo != null){ - plateDetailInfo.setRemarkJson(jsonObject.getString(ProduceApiConstants.BG_REMARK_JSON).replace("\"", "").trim()) - .setSpecialRemark(jsonObject.getString(ProduceApiConstants.BG_SPECIAL_REMARK).replace("\"", "").trim()); - } - } } - if (plateMap != null){ - Long blockNo = plate.getLong(ProduceApiConstants.BD_BLOCK_NO); - if (plateMap.get(blockNo) != null) { - JSONObject jsonObject = plateMap.get(blockNo); - plateInfo.setHeight(BigDecimal.valueOf(jsonObject.getDouble(ProduceApiConstants.BG_HEIGHT))) - .setWidth(BigDecimal.valueOf(jsonObject.getDouble(ProduceApiConstants.BG_WIDTH))) - .setThickness(BigDecimal.valueOf(jsonObject.getDouble(ProduceApiConstants.BG_THICKNESS))) - .setArea(BigDecimal.valueOf(jsonObject.getDouble(ProduceApiConstants.BG_AREA))) - .setTexture(jsonObject.getInteger(ProduceApiConstants.BG_WAVE)) - .setIsRowHole(jsonObject.getBoolean(ProduceApiConstants.BG_IS_HOLE)); + if (plateMap.get(blockNo) != null) { + JSONObject jsonObject = plateMap.get(blockNo); + if (plateDetailInfo != null){ + plateDetailInfo.setRemarkJson(jsonObject.getString(ProduceApiConstants.BG_REMARK_JSON).replace("\"", "").trim()) + .setSpecialRemark(jsonObject.getString(ProduceApiConstants.BG_SPECIAL_REMARK).replace("\"", "").trim()); } } - - - platesInfos.put(plate.getLong(ProduceApiConstants.BD_ITEM_ID), plateInfo); - platesItem.put(plate.getLong(ProduceApiConstants.BD_ITEM_ID), itemPlate); - } + if (plateMap != null){ + Long blockNo = plate.getLong(ProduceApiConstants.BD_BLOCK_NO); + if (plateMap.get(blockNo) != null) { + JSONObject jsonObject = plateMap.get(blockNo); + plateInfo.setHeight(BigDecimal.valueOf(jsonObject.getDouble(ProduceApiConstants.BG_HEIGHT))) + .setWidth(BigDecimal.valueOf(jsonObject.getDouble(ProduceApiConstants.BG_WIDTH))) + .setThickness(BigDecimal.valueOf(jsonObject.getDouble(ProduceApiConstants.BG_THICKNESS))) + .setArea(BigDecimal.valueOf(jsonObject.getDouble(ProduceApiConstants.BG_AREA))) + .setTexture(jsonObject.getInteger(ProduceApiConstants.BG_WAVE)) + .setIsRowHole(jsonObject.getBoolean(ProduceApiConstants.BG_IS_HOLE)); + } + } + + + platesInfos.put(plate.getLong(ProduceApiConstants.BD_ITEM_ID), plateInfo); + platesItem.put(plate.getLong(ProduceApiConstants.BD_ITEM_ID), itemPlate); + + } + List platesList = platesItem.values().stream().toList(); List plateDOList = platesInfos.values().stream().toList(); @@ -842,83 +887,82 @@ public class ApiTypeRealize { Map plateDetails = new HashMap<>(); - // 获取 Orders 字段对应的数组 - JSONArray ordersArray = dataPlates.getJSONObject(ProduceApiConstants.VALUE).getJSONArray(ProduceApiConstants.OPD_ORDER); - if (ordersArray == null || ordersArray.isEmpty()) { - return Collections.emptyMap(); + // 获取 Orders 字段对应的数组 + JSONArray ordersArray = dataPlates.getJSONObject(ProduceApiConstants.VALUE).getJSONArray(ProduceApiConstants.OPD_ORDER); + if (ordersArray == null || ordersArray.isEmpty()) { + return Collections.emptyMap(); + } + + for (int i = 0; i < ordersArray.size(); i++) { + + JSONObject order = ordersArray.getJSONObject(i); + // 获取材料信息 + JSONArray materialJson = order.getJSONArray(ProduceApiConstants.BPD_MATERIALS); + if (materialJson == null || materialJson.isEmpty()) { + return plateDetails; } + for (int j = 0; j < materialJson.size(); j++) { + JSONObject material = materialJson.getJSONObject(j); - for (int i = 0; i < ordersArray.size(); i++) { + // 板件信息 + JSONArray blocks = material.getJSONArray(ProduceApiConstants.BPD_BLOCKS); + if (blocks == null || blocks.isEmpty()) { + return plateDetails; + } + for (int k = 0; k < blocks.size(); k++) { + JSONObject block = blocks.getJSONObject(k);// 每块板 - JSONObject order = ordersArray.getJSONObject(i); - // 获取材料信息 - JSONArray materialJson = order.getJSONArray(ProduceApiConstants.BPD_MATERIALS); - if (materialJson != null && !materialJson.isEmpty()) { - for (int j = 0; j < materialJson.size(); j++) { - JSONObject material = materialJson.getJSONObject(j); - - // 板件信息 - JSONArray blocks = material.getJSONArray(ProduceApiConstants.BPD_BLOCKS); - if (blocks != null && !blocks.isEmpty()) { - for (int k = 0; k < blocks.size(); k++) { - JSONObject block = blocks.getJSONObject(k);// 每块板 - - PlateDetail plateDetail = PlateDetail.builder() - .bodyNo(block.getString(ProduceApiConstants.BPD_BOX_NO)) - .plateNo(block.getString(ProduceApiConstants.BPD_BLOCK_NO)) - .name(block.getString(ProduceApiConstants.BPD_BLOCK_NAME)) - .customPlateNo(block.getString(ProduceApiConstants.BPD_CUSTOM_BLOCK_NO)) - .roomsName(block.getString(ProduceApiConstants.BPD_ROOM_NAME)) - .bodyName(block.getString(ProduceApiConstants.BPD_BOX_NAME)) - .group(block.getString(ProduceApiConstants.BPD_PROCESS_GROUP_NAME)) - .multiNum(1) - .plateWidth(block.getBigDecimal(ProduceApiConstants.BPD_WIDTH)) - .plateLength(block.getBigDecimal(ProduceApiConstants.BPD_LENGTH)) - .acreage(block.getBigDecimal(ProduceApiConstants.BPD_SIZE)) - .splitWidth(block.getBigDecimal(ProduceApiConstants.BPD_CUTTING_WIDTH)) - .splitLength(block.getBigDecimal(ProduceApiConstants.BPD_CUTTING_LENGTH)) - .sealAcreage(block.getBigDecimal(ProduceApiConstants.BPD_CUTTING_SIZE)) - .isUnRegular(block.getBoolean(ProduceApiConstants.BPD_IS_UN_REGULAR)) - .sealLeft(block.getBigDecimal(ProduceApiConstants.BPD_BORDER_LEFT)) - .sealRight(block.getBigDecimal(ProduceApiConstants.BPD_BORDER_RIGHT)) - .sealUp(block.getBigDecimal(ProduceApiConstants.BPD_BORDER_UPPER)) - .sealDown(block.getBigDecimal(ProduceApiConstants.BPD_BORDER_UNDER)) - .texture(block.getInteger(ProduceApiConstants.BPD_WAVE)) - .typographicFace(Integer.valueOf(block.getString(ProduceApiConstants.BPD_PLACE_FACE))) - .openDoorType(Integer.valueOf(block.getString(ProduceApiConstants.BPD_OPEN_DOOR_TYPE))) - .offsetX(block.getBigDecimal(ProduceApiConstants.BPD_OFFSET_X)) - .offsetY(block.getBigDecimal(ProduceApiConstants.BPD_OFFSET_Y)) - .pointDetail(getPointDetail(block, true)) - .rawPointDetail(getPointDetail(block, false)) - .holeDetail(getHoleDetail(block, true)) - .sideHoleDetail(getHoleDetail(block, false)) - .contourDetail(getModelDetail(block.getJSONArray(ProduceApiConstants.BPD_MODEL))) - .sideDetail(getModelDetail(block.getJSONArray(ProduceApiConstants.BPD_SIDE_MODEL))) - .build(); - - if (block.getJSONObject(ProduceApiConstants.BPD_EXTRA_REMARK) != null) { - JSONObject extraRemark = block.getJSONObject(ProduceApiConstants.BPD_EXTRA_REMARK).getJSONObject(ProduceApiConstants.BPD_EXTRA); - if (extraRemark != null) - plateDetail.setBoardType(extraRemark.getString(ProduceApiConstants.BPD_EXTRA_BOARD_TYPE)) - .setThroughHoleCount(Double.valueOf(extraRemark.getString(ProduceApiConstants.BPD_EXTRA_THROUGH_HOLE_COUNT))) - .setThroughModelCount(Double.valueOf(extraRemark.getString(ProduceApiConstants.BPD_EXTRA_THROUGH_MODEL_COUNT))) - .setHas2DModel(Boolean.valueOf(extraRemark.getString(ProduceApiConstants.BPD_EXTRA_HAS_2D_MODEL))) - .setHas3DModel(Boolean.valueOf(extraRemark.getString(ProduceApiConstants.BPD_EXTRA_HAS_3D_MODEL))) - .setPlateExtraRemark(block.getJSONObject(ProduceApiConstants.BPD_EXTRA_REMARK)) - .setSideRemark(remarkToMap(block)) - .setDrillsInfos(getDrillsInfo(block.getJSONObject(ProduceApiConstants.BPD_EXTRA_REMARK))); - } - plateDetails.put(block.getLong(ProduceApiConstants.BPD_BLOCK_NO), plateDetail); - } - } - } + PlateDetail plateDetail = PlateDetail.builder() + .bodyNo(block.getString(ProduceApiConstants.BPD_BOX_NO)) + .plateNo(block.getString(ProduceApiConstants.BPD_BLOCK_NO)) + .name(block.getString(ProduceApiConstants.BPD_BLOCK_NAME)) + .customPlateNo(block.getString(ProduceApiConstants.BPD_CUSTOM_BLOCK_NO)) + .roomsName(block.getString(ProduceApiConstants.BPD_ROOM_NAME)) + .bodyName(block.getString(ProduceApiConstants.BPD_BOX_NAME)) + .group(block.getString(ProduceApiConstants.BPD_PROCESS_GROUP_NAME)) + .multiNum(1) + .plateWidth(block.getBigDecimal(ProduceApiConstants.BPD_WIDTH)) + .plateLength(block.getBigDecimal(ProduceApiConstants.BPD_LENGTH)) + .acreage(block.getBigDecimal(ProduceApiConstants.BPD_SIZE)) + .splitWidth(block.getBigDecimal(ProduceApiConstants.BPD_CUTTING_WIDTH)) + .splitLength(block.getBigDecimal(ProduceApiConstants.BPD_CUTTING_LENGTH)) + .sealAcreage(block.getBigDecimal(ProduceApiConstants.BPD_CUTTING_SIZE)) + .isUnRegular(block.getBoolean(ProduceApiConstants.BPD_IS_UN_REGULAR)) + .sealLeft(block.getBigDecimal(ProduceApiConstants.BPD_BORDER_LEFT)) + .sealRight(block.getBigDecimal(ProduceApiConstants.BPD_BORDER_RIGHT)) + .sealUp(block.getBigDecimal(ProduceApiConstants.BPD_BORDER_UPPER)) + .sealDown(block.getBigDecimal(ProduceApiConstants.BPD_BORDER_UNDER)) + .texture(block.getInteger(ProduceApiConstants.BPD_WAVE)) + .typographicFace(Integer.valueOf(block.getString(ProduceApiConstants.BPD_PLACE_FACE))) + .openDoorType(Integer.valueOf(block.getString(ProduceApiConstants.BPD_OPEN_DOOR_TYPE))) + .offsetX(block.getBigDecimal(ProduceApiConstants.BPD_OFFSET_X)) + .offsetY(block.getBigDecimal(ProduceApiConstants.BPD_OFFSET_Y)) + .pointDetail(getPointDetail(block, true)) + .rawPointDetail(getPointDetail(block, false)) + .holeDetail(getHoleDetail(block, true)) + .sideHoleDetail(getHoleDetail(block, false)) + .contourDetail(getModelDetail(block.getJSONArray(ProduceApiConstants.BPD_MODEL))) + .sideDetail(getModelDetail(block.getJSONArray(ProduceApiConstants.BPD_SIDE_MODEL))) + .build(); + if (block.getJSONObject(ProduceApiConstants.BPD_EXTRA_REMARK) != null) { + JSONObject extraRemark = block.getJSONObject(ProduceApiConstants.BPD_EXTRA_REMARK).getJSONObject(ProduceApiConstants.BPD_EXTRA); + if (extraRemark != null) + plateDetail.setBoardType(extraRemark.getString(ProduceApiConstants.BPD_EXTRA_BOARD_TYPE)) + .setThroughHoleCount(Double.valueOf(extraRemark.getString(ProduceApiConstants.BPD_EXTRA_THROUGH_HOLE_COUNT))) + .setThroughModelCount(Double.valueOf(extraRemark.getString(ProduceApiConstants.BPD_EXTRA_THROUGH_MODEL_COUNT))) + .setHas2DModel(Boolean.valueOf(extraRemark.getString(ProduceApiConstants.BPD_EXTRA_HAS_2D_MODEL))) + .setHas3DModel(Boolean.valueOf(extraRemark.getString(ProduceApiConstants.BPD_EXTRA_HAS_3D_MODEL))) + .setPlateExtraRemark(block.getJSONObject(ProduceApiConstants.BPD_EXTRA_REMARK)) + .setSideRemark(remarkToMap(block)) + .setDrillsInfos(getDrillsInfo(block.getJSONObject(ProduceApiConstants.BPD_EXTRA_REMARK))); } -// System.out.println("板块 " + plateDetails); + plateDetails.put(block.getLong(ProduceApiConstants.BPD_BLOCK_NO), plateDetail); } + } - + } return plateDetails; @@ -936,14 +980,14 @@ public class ApiTypeRealize { return pointDetailList; } - for (int i = 0; i < pointsJson.size(); i++) { - JSONObject point = pointsJson.getJSONObject(i); - pointDetailList.add(PointDetail.builder() - .pointX(Double.valueOf(point.getString(ProduceApiConstants.BPD_POINTS_X))) - .pointY(Double.valueOf(point.getString(ProduceApiConstants.BPD_POINTS_Y))) - .curve(Double.valueOf(point.getString(ProduceApiConstants.BPD_POINTS_CURVE))) - .build()); - } + for (int i = 0; i < pointsJson.size(); i++) { + JSONObject point = pointsJson.getJSONObject(i); + pointDetailList.add(PointDetail.builder() + .pointX(Double.valueOf(point.getString(ProduceApiConstants.BPD_POINTS_X))) + .pointY(Double.valueOf(point.getString(ProduceApiConstants.BPD_POINTS_Y))) + .curve(Double.valueOf(point.getString(ProduceApiConstants.BPD_POINTS_CURVE))) + .build()); + } } else { // 含封边 JSONArray orgPointsJson = block.getJSONArray(ProduceApiConstants.BPD_ORG_POINTS); @@ -951,16 +995,16 @@ public class ApiTypeRealize { return pointDetailList; } - for (int i = 0; i < orgPointsJson.size(); i++) { - JSONObject rawPoint = orgPointsJson.getJSONObject(i); - pointDetailList.add(PointDetail.builder() - .pointX(Double.valueOf(rawPoint.getString(ProduceApiConstants.BPD_POINTS_X))) - .pointY(Double.valueOf(rawPoint.getString(ProduceApiConstants.BPD_POINTS_Y))) - .curve(Double.valueOf(rawPoint.getString(ProduceApiConstants.BPD_POINTS_CURVE))) - .sealSize(BigDecimal.valueOf(Double.valueOf(rawPoint.getString(ProduceApiConstants.BPD_POINTS_EDGE)))) - .build()); + for (int i = 0; i < orgPointsJson.size(); i++) { + JSONObject rawPoint = orgPointsJson.getJSONObject(i); + pointDetailList.add(PointDetail.builder() + .pointX(Double.valueOf(rawPoint.getString(ProduceApiConstants.BPD_POINTS_X))) + .pointY(Double.valueOf(rawPoint.getString(ProduceApiConstants.BPD_POINTS_Y))) + .curve(Double.valueOf(rawPoint.getString(ProduceApiConstants.BPD_POINTS_CURVE))) + .sealSize(BigDecimal.valueOf(Double.valueOf(rawPoint.getString(ProduceApiConstants.BPD_POINTS_EDGE)))) + .build()); - } + } } return pointDetailList; @@ -975,44 +1019,44 @@ public class ApiTypeRealize { if (holes == null || holes.isEmpty()) { return Collections.emptyList(); } - for (int i = 0; i < holes.size(); i++) { - JSONObject hole = holes.getJSONObject(i); - holeDetails.add(HoleDetail.builder() - .startX(Double.valueOf(hole.getString(ProduceApiConstants.BPD_HOLE_X))) - .startY(Double.valueOf(hole.getString(ProduceApiConstants.BPD_HOLE_Y))) - .faceType(hole.getInteger(ProduceApiConstants.BPD_HOLE_FACE)) - .radius(Double.parseDouble(hole.getString(ProduceApiConstants.BPD_HOLE_DIAMETER)) / 2) - .depth(Double.valueOf(hole.getString(ProduceApiConstants.BPD_HOLE_DEPTH))) - .build()); + for (int i = 0; i < holes.size(); i++) { + JSONObject hole = holes.getJSONObject(i); + holeDetails.add(HoleDetail.builder() + .startX(Double.valueOf(hole.getString(ProduceApiConstants.BPD_HOLE_X))) + .startY(Double.valueOf(hole.getString(ProduceApiConstants.BPD_HOLE_Y))) + .faceType(hole.getInteger(ProduceApiConstants.BPD_HOLE_FACE)) + .radius(Double.parseDouble(hole.getString(ProduceApiConstants.BPD_HOLE_DIAMETER)) / 2) + .depth(Double.valueOf(hole.getString(ProduceApiConstants.BPD_HOLE_DEPTH))) + .build()); } } else { JSONArray sideHoles = block.getJSONArray(ProduceApiConstants.BPD_SIDE_HOLES); if (sideHoles == null || sideHoles.isEmpty()) { return Collections.emptyList(); } - for (int i = 0; i < sideHoles.size(); i++) { - JSONObject hole = sideHoles.getJSONObject(i); - String[] startPoints = splitAndTrim(hole.getString(ProduceApiConstants.BPD_HOLE_START_POINT)); - String[] endPoints = splitAndTrim(hole.getString(ProduceApiConstants.BPD_HOLE_END_POINT)); - try { - holeDetails.add(HoleDetail.builder() - .startX(Double.valueOf(startPoints[X])) - .startY(Double.valueOf(startPoints[Y])) - .startZ(Double.valueOf(startPoints[Z])) - .endX(Double.valueOf(endPoints[X])) - .endY(Double.valueOf(endPoints[Y])) - .endZ(Double.valueOf(endPoints[Z])) - .faceType(2) - .direction(hole.getInteger(ProduceApiConstants.BPD_HOLE_DIRECTION)) - .radius(Double.parseDouble(hole.getString(ProduceApiConstants.BPD_HOLE_DIAMETER)) / 2) - .depth(Double.valueOf(hole.getString(ProduceApiConstants.BPD_HOLE_DEPTH))) - .build()); - } catch (Exception e) { + for (int i = 0; i < sideHoles.size(); i++) { + JSONObject hole = sideHoles.getJSONObject(i); + String[] startPoints = splitAndTrim(hole.getString(ProduceApiConstants.BPD_HOLE_START_POINT)); + String[] endPoints = splitAndTrim(hole.getString(ProduceApiConstants.BPD_HOLE_END_POINT)); + try { + holeDetails.add(HoleDetail.builder() + .startX(Double.valueOf(startPoints[X])) + .startY(Double.valueOf(startPoints[Y])) + .startZ(Double.valueOf(startPoints[Z])) + .endX(Double.valueOf(endPoints[X])) + .endY(Double.valueOf(endPoints[Y])) + .endZ(Double.valueOf(endPoints[Z])) + .faceType(2) + .direction(hole.getInteger(ProduceApiConstants.BPD_HOLE_DIRECTION)) + .radius(Double.parseDouble(hole.getString(ProduceApiConstants.BPD_HOLE_DIAMETER)) / 2) + .depth(Double.valueOf(hole.getString(ProduceApiConstants.BPD_HOLE_DEPTH))) + .build()); + } catch (Exception e) { // System.out.println("HoleDetail " + hole); - } - } + } + } return holeDetails; @@ -1175,15 +1219,15 @@ public class ApiTypeRealize { return null; } List drillsInfos = new ArrayList<>(); - for (int i = 0; i < drills.size(); i++) { - JSONObject drill = drills.getJSONObject(i); - drillsInfos.add(DrillsInfo.builder() - .name(drill.getString(ProduceApiConstants.BPD_DRILL_NAME)) - .type(drill.getString(ProduceApiConstants.BPD_DRILL_TYPE)) - .face(drill.getString(ProduceApiConstants.BPD_DRILL_FACE)) - .count(Double.valueOf(drill.getString(ProduceApiConstants.BPD_DRILL_COUNT))) - .build()); - } + for (int i = 0; i < drills.size(); i++) { + JSONObject drill = drills.getJSONObject(i); + drillsInfos.add(DrillsInfo.builder() + .name(drill.getString(ProduceApiConstants.BPD_DRILL_NAME)) + .type(drill.getString(ProduceApiConstants.BPD_DRILL_TYPE)) + .face(drill.getString(ProduceApiConstants.BPD_DRILL_FACE)) + .count(Double.valueOf(drill.getString(ProduceApiConstants.BPD_DRILL_COUNT))) + .build()); + } return drillsInfos; } @@ -1216,11 +1260,11 @@ public class ApiTypeRealize { return null; } Map map = new HashMap<>(); - for (int i = 0; i < jsonArray.size(); i++) { - if (jsonArray.getString(i) != null && !jsonArray.getString(i).isEmpty()) { - map.put(String.valueOf(i), jsonArray.getString(i)); - } + for (int i = 0; i < jsonArray.size(); i++) { + if (jsonArray.getString(i) != null && !jsonArray.getString(i).isEmpty()) { + map.put(String.valueOf(i), jsonArray.getString(i)); } + } 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 0df206bef..e915c7880 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 @@ -42,12 +42,15 @@ public class ExcelTypeRealize { private SnowFlakeGenerator snowFlakeGenerator; @Resource - SnowflakeIdWorker3rd idWorker; + private SnowflakeIdWorker3rd idWorker; @Resource private DictDataApi dictDataApi; final String NOT_ASSIGNED = "未命名"; + final String PLATE = "plate"; + final String PARTS = "parts"; + // 数据转换 + 错误验证 public Map changeDate(List excelVOS, Long orderId) { @@ -73,23 +76,21 @@ public class ExcelTypeRealize { HashMap> checkMap = classifyGoods(excelVOS); - Map> goodsIdMap = checkMap.get("plate").stream().collect( + Map> goodsIdMap = checkMap.get(PLATE).stream().collect( Collectors.groupingBy( excelVO -> excelVO.getGoodsId() != null ? excelVO.getGoodsId() : " ", Collectors.toList() )); goodsIdMap.forEach((key, value) -> { - if (value.get(0).getGoodsId() == null) { // 没有商品编号的 + if (key.equals(" ")) { // 没有商品编号的 value.get(0).getGoodsId() == null // 将相同条件的元素归为一个集合 Map, List> goodsMap = value.stream() .collect(Collectors.groupingBy( p -> Arrays.asList(p.getGoodsName(), - p.getGoodsName(), - p.getThickness(), p.getMaterial(), + p.getWave(), // 纹理 p.getColor(), p.getSpec(), - p.getWave(), // 纹理 p.getGoodsHeight(), p.getGoodsWidth(), p.getGoodsThickness(), @@ -131,6 +132,92 @@ public class ExcelTypeRealize { } }); + // 配件信息合集,添加生产单id,添加生产单配件设计端商品编码,配件信息写入order_parts + Map> partsIdMap = checkMap.get(PARTS).stream().collect( + Collectors.groupingBy( + excelVO -> excelVO.getGoodsId() != null ? excelVO.getGoodsId() : " ", + Collectors.toList() + )); + partsIdMap.forEach((key, value) -> { + if (key.equals(" ")) { // 没有商品编号的 value.get(0).getGoodsId() == null +// 将相同条件的元素归为一个集合 + Map, List> partsMap = value.stream() + .collect(Collectors.groupingBy( + p -> Arrays.asList(p.getGoodsName(), + p.getMaterial(), + p.getColor(), + p.getIsComposite(), + p.getCategory(), + p.getType(), + p.getFactory(), + p.getModel(), + p.getSpec(), + p.getGoodsHeight(), + p.getGoodsWidth(), + p.getGoodsThickness(), + p.getUnit(), + p.getBrand()), + Collectors.toList() + )); + + partsMap.forEach((partKey, partValue) -> { +// 配件信息集合,key不同,生成不同的id,写入order_parts表中 + Long partId = (Long) snowFlakeGenerator.nextId(null); + OrderPlateImportExcelVO part = partValue.get(0); + OrderPartsDO orderPartsDO = OrderPartsDO.builder().id(partId).orderId(orderId) + .color(part.getColor()).category(part.getCategory()).type(part.getType()) + .length(Double.valueOf(StringUtils.isEmpty(part.getGoodsHeight()) ? "0" : part.getGoodsHeight())) + .width(Double.valueOf(StringUtils.isEmpty(part.getGoodsWidth()) ? "0" : part.getGoodsWidth())) + .thickness(Double.valueOf(StringUtils.isEmpty(part.getGoodsThickness()) ? "0" : part.getGoodsThickness())) + .isComposite(Boolean.valueOf(part.getIsComposite())) + .name(part.getGoodsName()).material(part.getMaterial()) + .model(part.getModel()).spec(part.getSpec()).brand(part.getBrand()).factory(part.getFactory()) + .unit(part.getUnit()).price(0.0).isComposite(false).remark(remarkExtract(part.remarkJSON())).isComposite(false).build(); + orderPartsDOS.add(orderPartsDO); +// 赋值给板件未对应前order_raw_goods的id + StringBuilder remark = new StringBuilder(); + for (OrderPlateImportExcelVO reqVO : partValue) { + reqVO.setGoodId(partId); + String extractedRemark = remarkExtract(reqVO.remarkJSON()); + if (extractedRemark != null) { + remark.append(extractedRemark); + } + } + // 配件备注信息存储 + OrderPartsRemark orderPartsRemark = OrderPartsRemark.builder().partsId(partId).orderId(orderId) + .remark(String.valueOf(remark)).build(); + orderPartsRemarks.add(orderPartsRemark); + }); + } else { // 商品编码有的 +// 板材信息合集,添加生产单id,添加生产单板材设计端商品编码,板材信息写入order_raw_goods + Long partId = (Long) snowFlakeGenerator.nextId(null); + OrderPlateImportExcelVO part = value.get(0); + OrderPartsDO orderPartsDO = OrderPartsDO.builder().id(partId).orderId(orderId) + .color(part.getColor()).category(part.getCategory()).type(part.getType()).goodsId(part.getGoodsId()) + .length(Double.valueOf(StringUtils.isEmpty(part.getGoodsHeight()) ? "0" : part.getGoodsHeight())) + .width(Double.valueOf(StringUtils.isEmpty(part.getGoodsWidth()) ? "0" : part.getGoodsWidth())) + .thickness(Double.valueOf(StringUtils.isEmpty(part.getGoodsThickness()) ? "0" : part.getGoodsThickness())) + .isComposite(Boolean.valueOf(part.getIsComposite())) + .name(part.getGoodsName()).material(part.getMaterial()) + .model(part.getModel()).spec(part.getSpec()).brand(part.getBrand()).factory(part.getFactory()) + .unit(part.getUnit()).price(0.0).isComposite(false).remark(remarkExtract(part.remarkJSON())).isComposite(false).build(); + orderPartsDOS.add(orderPartsDO); +// 赋值给板件未对应前order_raw_goods的id + StringBuilder remark = new StringBuilder(); + for (OrderPlateImportExcelVO reqVO : value) { + reqVO.setGoodId(partId); + String extractedRemark = remarkExtract(reqVO.remarkJSON()); + if (extractedRemark != null) { + remark.append(extractedRemark); + } + } + // 配件备注信息存储 + OrderPartsRemark orderPartsRemark = OrderPartsRemark.builder().partsId(partId).orderId(orderId) + .remark(String.valueOf(remark)).build(); + orderPartsRemarks.add(orderPartsRemark); + } + }); + // 房间名称为条件进行分组 Map> roomCollect = excelVOS.stream().collect( @@ -239,23 +326,23 @@ 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); +// 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(partsId).groupId(synthesisTypeName != " " ? groupId : null) + .roomId(roomName != " " ? roomId : null).bodyId(bodyName != " " ? bodyId : null).partsId(combination.getGoodId()).groupId(synthesisTypeName != " " ? groupId : null) .num(Double.valueOf(combination.getGoodsNumber())).build(); orderItemDOS.add(orderItemDO); } @@ -382,8 +469,8 @@ public class ExcelTypeRealize { partsLists.add(detail); } } - map.put("plate", plateLists); - map.put("parts", partsLists); + map.put(PLATE, plateLists); + map.put(PARTS, partsLists); 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/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 a48c7d99b..671bf88b7 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 @@ -620,21 +620,21 @@ public class XMLUtil { isEmptyAndAdd(room::getCode, room::setCode, NOT_ASSIGNED_CODE); isEmptyAndAdd(room::getName, room::setName, NOT_ASSIGNED); - isEmptyAddAndPositiveNumberSize(room::getHeight, room::setHeight, "0", Double.class, "房间高度", 8, 3, flag); - isEmptyAddAndPositiveNumberSize(room::getLength, room::setLength, "0", Double.class, "房间长度", 8, 3, flag); - isEmptyAddAndPositiveNumberSize(room::getWidth, room::setWidth, "0", Double.class, "房间宽度", 8, 3, flag); - isEmptyAddAndPositiveNumber(room::getMultipleNumber, room::setMultipleNumber, "1", Integer.class, "房间成倍拆单数量", flag); - isEmptyAddAndPositiveNumber(room::getMultipleNo, room::setMultipleNo, "1", Integer.class, "房间成倍拆单序号", flag); - isEmptyAddAndNumber(room::getBasePointX, room::setBasePointX, "0", Double.class, "基点坐标X", flag); - isEmptyAddAndNumber(room::getBasePointY, room::setBasePointY, "0", Double.class, "基点坐标Y", flag); - isEmptyAddAndNumber(room::getBasePointZ, room::setBasePointZ, "0", Double.class, "基点坐标Z", flag); - isEmptyAddAndNumber(room::getAxisXrotate, room::setAxisXrotate, "0", Double.class, "绕X轴旋转角度", flag); - isEmptyAddAndNumber(room::getAxisYrotate, room::setAxisYrotate, "0", Double.class, "绕Y轴旋转角度", flag); - isEmptyAddAndNumber(room::getAxisZrotate, room::setAxisZrotate, "0", Double.class, "绕Z轴旋转角度", flag); + isEmptyAddAndPositiveNumberSize(room::getHeight, room::setHeight, "0", Double.class, "房间高度", 8, 3, flag); + isEmptyAddAndPositiveNumberSize(room::getLength, room::setLength, "0", Double.class, "房间长度", 8, 3, flag); + isEmptyAddAndPositiveNumberSize(room::getWidth, room::setWidth, "0", Double.class, "房间宽度", 8, 3, flag); + isEmptyAddAndPositiveNumber(room::getMultipleNumber, room::setMultipleNumber, "1", Integer.class, "房间成倍拆单数量", flag); + isEmptyAddAndPositiveNumber(room::getMultipleNo, room::setMultipleNo, "1", Integer.class, "房间成倍拆单序号", flag); + isEmptyAddAndNumber(room::getBasePointX, room::setBasePointX, "0", Double.class, "基点坐标X", flag); + isEmptyAddAndNumber(room::getBasePointY, room::setBasePointY, "0", Double.class, "基点坐标Y", flag); + isEmptyAddAndNumber(room::getBasePointZ, room::setBasePointZ, "0", Double.class, "基点坐标Z", flag); + isEmptyAddAndNumber(room::getAxisXrotate, room::setAxisXrotate, "0", Double.class, "绕X轴旋转角度", flag); + isEmptyAddAndNumber(room::getAxisYrotate, room::setAxisYrotate, "0", Double.class, "绕Y轴旋转角度", flag); + isEmptyAddAndNumber(room::getAxisZrotate, room::setAxisZrotate, "0", Double.class, "绕Z轴旋转角度", flag); - // 柜体数据格式验证 - if (room.getBoxXmlVOList() != null && room.getBoxXmlVOList().size() > 0) { - checkBoxList(room.getBoxXmlVOList(), flag); + // 柜体数据格式验证 + if (room.getBoxXmlVOList() != null && room.getBoxXmlVOList().size() > 0) { + checkBoxList(room.getBoxXmlVOList(), flag); } } @@ -706,7 +706,7 @@ public class XMLUtil { // 板材数据格式验证 public void checkPlates(List plateXmlVOList, AtomicBoolean flag) { for (PlateXmlVO plate : plateXmlVOList) { - isEmptyAndBack(plate::getItemCode, "板材名称", plate::setItemCode, flag); + isEmptyAndBack(plate::getName, "板材名称", plate::setName, flag); isEmptyAndBack(plate::getMaterial, "板材材质", plate::setMaterial, flag); // 纹理有效性判断 @@ -747,72 +747,72 @@ public class XMLUtil { if (blockXmlVOList.isEmpty()) { return; } - for (BlockXmlVO blockXmlVO : blockXmlVOList) { - isEmptyAndAdd(blockXmlVO::getName, blockXmlVO::setName, NOT_ASSIGNED); - isEmptyAddAndInvalid(blockXmlVO::getType, blockXmlVO::setType, "背板", DictTypeConstants.PLATE_TYPE, "板块类型", flag); - isEmptyAddAndInvalid(blockXmlVO::getOpenDirection, blockXmlVO::setOpenDirection, "非门板", DictTypeConstants.DOOR_OPENING_DIRECTIONS, "板块开门方向", flag); - isEmptyAddAndInvalid(blockXmlVO::getTexture, blockXmlVO::setTexture, "正纹", DictTypeConstants.GRAIN_TYPE, "板块设计纹路", flag); - isEmptyAddAndInvalid(blockXmlVO::getLayoutFace, blockXmlVO::setLayoutFace, "随意面", DictTypeConstants.TYPOGRAPHY_TYPE, "板块排版面", flag); - isEmptyAddAndInvalid(blockXmlVO::getCoatingType, blockXmlVO::setCoatingType, "双面", DictTypeConstants.COATING_TYPE, "板块设计饰面", flag); - isEmptyAndPositiveNumber(blockXmlVO::getLength, "板块长度", blockXmlVO::setLength, Double.class, 5, 3, flag); - isEmptyAndPositiveNumber(blockXmlVO::getWidth, "板块宽度", blockXmlVO::setWidth, Double.class, 5, 3, flag); - isEmptyAndPositiveNumber(blockXmlVO::getThickness, "板块厚度", blockXmlVO::setThickness, Double.class, 5, 3, flag); - isEmptyAndPositiveNumber(blockXmlVO::getCuttingLength, "板块开料长", blockXmlVO::setCuttingLength, Double.class, 5, 3, flag); - isEmptyAndPositiveNumber(blockXmlVO::getCuttingWidth, "板块开料宽", blockXmlVO::setCuttingWidth, Double.class, 5, 3, flag); - isEmptyAndPositiveNumber(blockXmlVO::getCuttingThickness, "板块开料厚", blockXmlVO::setCuttingThickness, Double.class, 5, 3, flag); - isEmptyAndPositiveNumber(blockXmlVO::getRawLength, "板块胚料长", blockXmlVO::setRawLength, Double.class, 5, 3, flag); - isEmptyAndPositiveNumber(blockXmlVO::getRawWidth, "板块胚料宽", blockXmlVO::setRawWidth, Double.class, 5, 3, flag); - isEmptyAndPositiveNumber(blockXmlVO::getRawThickness, "板块胚料厚", blockXmlVO::setRawThickness, Double.class, 5, 3, flag); - isEmptyAddAndInvalid(blockXmlVO::getUnit, blockXmlVO::setUnit, "mm", DictTypeConstants.UNIT_LENGTH, "小板长度单位", flag); - isEmptyAddAndPositiveNumber(blockXmlVO::getMultipleNumber, blockXmlVO::setMultipleNumber, "1", Integer.class, "小板成倍拆单数量", flag); - isEmptyAddAndPositiveNumber(blockXmlVO::getMultipleNo, blockXmlVO::setMultipleNo, "1", Integer.class, "小板成倍拆单序号", flag); - isEmptyAddAndInvalid(blockXmlVO::getUnregular, blockXmlVO::setUnregular, "否", DictTypeConstants.IS_NOT_MARK, "板块是否异形数据", flag); - isEmptyAddAndInvalid(blockXmlVO::getDrilling, blockXmlVO::setDrilling, "否", DictTypeConstants.IS_NOT_MARK, "板块是否钻孔数据", flag); - isEmptyAddAndInvalid(blockXmlVO::getSlotting, blockXmlVO::setSlotting, "否", DictTypeConstants.IS_NOT_MARK, "板块是否挖槽数据", flag); + for (BlockXmlVO blockXmlVO : blockXmlVOList) { + isEmptyAndAdd(blockXmlVO::getName, blockXmlVO::setName, NOT_ASSIGNED); + isEmptyAddAndInvalid(blockXmlVO::getType, blockXmlVO::setType, "背板", DictTypeConstants.PLATE_TYPE, "板块类型", flag); + isEmptyAddAndInvalid(blockXmlVO::getOpenDirection, blockXmlVO::setOpenDirection, "非门板", DictTypeConstants.DOOR_OPENING_DIRECTIONS, "板块开门方向", flag); + isEmptyAddAndInvalid(blockXmlVO::getTexture, blockXmlVO::setTexture, "正纹", DictTypeConstants.GRAIN_TYPE, "板块设计纹路", flag); + isEmptyAddAndInvalid(blockXmlVO::getLayoutFace, blockXmlVO::setLayoutFace, "随意面", DictTypeConstants.TYPOGRAPHY_TYPE, "板块排版面", flag); + isEmptyAddAndInvalid(blockXmlVO::getCoatingType, blockXmlVO::setCoatingType, "双面", DictTypeConstants.COATING_TYPE, "板块设计饰面", flag); + isEmptyAndPositiveNumber(blockXmlVO::getLength, "板块长度", blockXmlVO::setLength, Double.class, 5, 3, flag); + isEmptyAndPositiveNumber(blockXmlVO::getWidth, "板块宽度", blockXmlVO::setWidth, Double.class, 5, 3, flag); + isEmptyAndPositiveNumber(blockXmlVO::getThickness, "板块厚度", blockXmlVO::setThickness, Double.class, 5, 3, flag); + isEmptyAndPositiveNumber(blockXmlVO::getCuttingLength, "板块开料长", blockXmlVO::setCuttingLength, Double.class, 5, 3, flag); + isEmptyAndPositiveNumber(blockXmlVO::getCuttingWidth, "板块开料宽", blockXmlVO::setCuttingWidth, Double.class, 5, 3, flag); + isEmptyAndPositiveNumber(blockXmlVO::getCuttingThickness, "板块开料厚", blockXmlVO::setCuttingThickness, Double.class, 5, 3, flag); + isEmptyAndPositiveNumber(blockXmlVO::getRawLength, "板块胚料长", blockXmlVO::setRawLength, Double.class, 5, 3, flag); + isEmptyAndPositiveNumber(blockXmlVO::getRawWidth, "板块胚料宽", blockXmlVO::setRawWidth, Double.class, 5, 3, flag); + isEmptyAndPositiveNumber(blockXmlVO::getRawThickness, "板块胚料厚", blockXmlVO::setRawThickness, Double.class, 5, 3, flag); + isEmptyAddAndInvalid(blockXmlVO::getUnit, blockXmlVO::setUnit, "mm", DictTypeConstants.UNIT_LENGTH, "小板长度单位", flag); + isEmptyAddAndPositiveNumber(blockXmlVO::getMultipleNumber, blockXmlVO::setMultipleNumber, "1", Integer.class, "小板成倍拆单数量", flag); + isEmptyAddAndPositiveNumber(blockXmlVO::getMultipleNo, blockXmlVO::setMultipleNo, "1", Integer.class, "小板成倍拆单序号", flag); + isEmptyAddAndInvalid(blockXmlVO::getUnregular, blockXmlVO::setUnregular, "否", DictTypeConstants.IS_NOT_MARK, "板块是否异形数据", flag); + isEmptyAddAndInvalid(blockXmlVO::getDrilling, blockXmlVO::setDrilling, "否", DictTypeConstants.IS_NOT_MARK, "板块是否钻孔数据", flag); + isEmptyAddAndInvalid(blockXmlVO::getSlotting, blockXmlVO::setSlotting, "否", DictTypeConstants.IS_NOT_MARK, "板块是否挖槽数据", flag); - isEmptyAndAdd(blockXmlVO::getRoomCode, blockXmlVO::setRoomCode, NOT_ASSIGNED_CODE); - isEmptyAndAdd(blockXmlVO::getRoomName, blockXmlVO::setRoomName, NOT_ASSIGNED); - isEmptyAndAdd(blockXmlVO::getBoxCode, blockXmlVO::setBoxCode, NOT_ASSIGNED_CODE); - isEmptyAndAdd(blockXmlVO::getBoxName, blockXmlVO::setBoxName, NOT_ASSIGNED); + isEmptyAndAdd(blockXmlVO::getRoomCode, blockXmlVO::setRoomCode, NOT_ASSIGNED_CODE); + isEmptyAndAdd(blockXmlVO::getRoomName, blockXmlVO::setRoomName, NOT_ASSIGNED); + isEmptyAndAdd(blockXmlVO::getBoxCode, blockXmlVO::setBoxCode, NOT_ASSIGNED_CODE); + isEmptyAndAdd(blockXmlVO::getBoxName, blockXmlVO::setBoxName, NOT_ASSIGNED); - isEmptyAddAndNumber(blockXmlVO::getBasePointX, blockXmlVO::setBasePointX, "0", Double.class, "小板基点坐标X", flag); - isEmptyAddAndNumber(blockXmlVO::getBasePointY, blockXmlVO::setBasePointY, "0", Double.class, "小板基点坐标Y", flag); - isEmptyAddAndNumber(blockXmlVO::getBasePointZ, blockXmlVO::setBasePointZ, "0", Double.class, "小板基点坐标Z", flag); - isEmptyAddAndNumber(blockXmlVO::getAxisXrotate, blockXmlVO::setAxisXrotate, "0", Double.class, "小板绕X轴旋转角度", flag); - isEmptyAddAndNumber(blockXmlVO::getAxisYrotate, blockXmlVO::setAxisYrotate, "0", Double.class, "小板绕Y轴旋转角度", flag); - isEmptyAddAndNumber(blockXmlVO::getAxisZrotate, blockXmlVO::setAxisZrotate, "0", Double.class, "小板绕Z轴旋转角度", flag); + isEmptyAddAndNumber(blockXmlVO::getBasePointX, blockXmlVO::setBasePointX, "0", Double.class, "小板基点坐标X", flag); + isEmptyAddAndNumber(blockXmlVO::getBasePointY, blockXmlVO::setBasePointY, "0", Double.class, "小板基点坐标Y", flag); + isEmptyAddAndNumber(blockXmlVO::getBasePointZ, blockXmlVO::setBasePointZ, "0", Double.class, "小板基点坐标Z", flag); + isEmptyAddAndNumber(blockXmlVO::getAxisXrotate, blockXmlVO::setAxisXrotate, "0", Double.class, "小板绕X轴旋转角度", flag); + isEmptyAddAndNumber(blockXmlVO::getAxisYrotate, blockXmlVO::setAxisYrotate, "0", Double.class, "小板绕Y轴旋转角度", flag); + isEmptyAddAndNumber(blockXmlVO::getAxisZrotate, blockXmlVO::setAxisZrotate, "0", Double.class, "小板绕Z轴旋转角度", flag); - if (blockXmlVO.getOutlineXmlVO() != null) { - checkOutline(blockXmlVO.getOutlineXmlVO(), flag); - } - - if (blockXmlVO.getCuttingOutlineXmlVO() != null) { - checkCuttingOutline(blockXmlVO.getCuttingOutlineXmlVO(), flag); - } - - if (blockXmlVO.getRawOutlineXmlVO() != null && blockXmlVO.getRawOutlineXmlVO().getPointXmlVOList() != null && !blockXmlVO.getRawOutlineXmlVO().getPointXmlVOList().isEmpty()) { - checkRawOutline(blockXmlVO.getRawOutlineXmlVO(), flag); - } - - if (blockXmlVO.getHoleXmlVOS() != null) { - checkHoles(blockXmlVO.getHoleXmlVOS(), flag); - } - - if (blockXmlVO.getGrooveXmlVOS() != null) { - checkGrooves(blockXmlVO.getGrooveXmlVOS(), flag); - } - - if (blockXmlVO.getIsletXmlVOS() != null && blockXmlVO.getIsletXmlVOS().getIsletXmlVOList() != null && !blockXmlVO.getIsletXmlVOS().getIsletXmlVOList().isEmpty()) { - checkIslets(blockXmlVO.getIsletXmlVOS(), flag); - } - - if (blockXmlVO.getCorrelationXmlVOS() != null) { - checkCorrelations(blockXmlVO.getCorrelationXmlVOS(), flag); - } - + if (blockXmlVO.getOutlineXmlVO() != null) { + checkOutline(blockXmlVO.getOutlineXmlVO(), flag); } + + if (blockXmlVO.getCuttingOutlineXmlVO() != null) { + checkCuttingOutline(blockXmlVO.getCuttingOutlineXmlVO(), flag); + } + + if (blockXmlVO.getRawOutlineXmlVO() != null && blockXmlVO.getRawOutlineXmlVO().getPointXmlVOList() != null && !blockXmlVO.getRawOutlineXmlVO().getPointXmlVOList().isEmpty()) { + checkRawOutline(blockXmlVO.getRawOutlineXmlVO(), flag); + } + + if (blockXmlVO.getHoleXmlVOS() != null) { + checkHoles(blockXmlVO.getHoleXmlVOS(), flag); + } + + if (blockXmlVO.getGrooveXmlVOS() != null) { + checkGrooves(blockXmlVO.getGrooveXmlVOS(), flag); + } + + if (blockXmlVO.getIsletXmlVOS() != null && blockXmlVO.getIsletXmlVOS().getIsletXmlVOList() != null && !blockXmlVO.getIsletXmlVOS().getIsletXmlVOList().isEmpty()) { + checkIslets(blockXmlVO.getIsletXmlVOS(), flag); + } + + if (blockXmlVO.getCorrelationXmlVOS() != null) { + checkCorrelations(blockXmlVO.getCorrelationXmlVOS(), flag); + } + + } } private void checkCorrelations(CorrelationXmlVOS correlationXmlVOS, AtomicBoolean flag) { @@ -857,25 +857,25 @@ public class XMLUtil { return; } - PointXmlVOS pointXmlVOS = isletXmlVO.getPointXmlVOS(); - boolean index = isEmptyBackAndPositiveNumberAndBack(pointXmlVOS::getCount, "孤岛点阵数量 "+ pointXmlVOS.getCount(), pointXmlVOS::setCount, Integer.class, flag); + PointXmlVOS pointXmlVOS = isletXmlVO.getPointXmlVOS(); + boolean index = isEmptyBackAndPositiveNumberAndBack(pointXmlVOS::getCount, "孤岛点阵数量 "+ pointXmlVOS.getCount(), pointXmlVOS::setCount, Integer.class, flag); - if (index) { - if (pointXmlVOS.getPointXmlVOList() == null) { + if (index) { + if (pointXmlVOS.getPointXmlVOList() == null) { + pointXmlVOS.setCount("---< 孤岛点阵数量与孤岛点阵列表数量不一致 >---"); + flag.set(false); + } else if (pointXmlVOS.getPointXmlVOList().size() > 0) { + if (Integer.parseInt(pointXmlVOS.getCount()) != pointXmlVOS.getPointXmlVOList().size()) { pointXmlVOS.setCount("---< 孤岛点阵数量与孤岛点阵列表数量不一致 >---"); flag.set(false); - } else if (pointXmlVOS.getPointXmlVOList().size() > 0) { - if (Integer.parseInt(pointXmlVOS.getCount()) != pointXmlVOS.getPointXmlVOList().size()) { - pointXmlVOS.setCount("---< 孤岛点阵数量与孤岛点阵列表数量不一致 >---"); - flag.set(false); - } else { - for (PointXmlVO pointXmlVO : pointXmlVOS.getPointXmlVOList()) { - checkPointRemoveZ(pointXmlVO, flag, "孤岛"); - } + } else { + for (PointXmlVO pointXmlVO : pointXmlVOS.getPointXmlVOList()) { + checkPointRemoveZ(pointXmlVO, flag, "孤岛"); } } } + } } @@ -1063,21 +1063,21 @@ public class XMLUtil { flag.set(false); return; } - if (index) { - if (Integer.parseInt(outlineXmlVO.getCount()) != outlineXmlVO.getPointXmlVOList().size()) { - outlineXmlVO.setCount("---< 小板轮廓点阵数量与实际数量不一致 >---"); - flag.set(false); - return; - } + if (index) { + if (Integer.parseInt(outlineXmlVO.getCount()) != outlineXmlVO.getPointXmlVOList().size()) { + outlineXmlVO.setCount("---< 小板轮廓点阵数量与实际数量不一致 >---"); + flag.set(false); + return; + } - for (PointXmlVO pointXmlVO : outlineXmlVO.getPointXmlVOList()) { - isEmptyBackAndNumber(pointXmlVO::getPointX, pointXmlVO::setPointX, Double.class, "小板起点坐标X", flag); - isEmptyBackAndNumber(pointXmlVO::getPointY, pointXmlVO::setPointY, Double.class, "小板起点坐标Y", flag); - isEmptyBackAndNumber(pointXmlVO::getCurvature, pointXmlVO::setCurvature, Double.class, "小板轮廓边圆弧凹凸度", flag); - isEmptyBackAndNumber(pointXmlVO::getRadius, pointXmlVO::setRadius, Double.class, "小板轮廓边圆弧半径", flag); + for (PointXmlVO pointXmlVO : outlineXmlVO.getPointXmlVOList()) { + isEmptyBackAndNumber(pointXmlVO::getPointX, pointXmlVO::setPointX, Double.class, "小板起点坐标X", flag); + isEmptyBackAndNumber(pointXmlVO::getPointY, pointXmlVO::setPointY, Double.class, "小板起点坐标Y", flag); + isEmptyBackAndNumber(pointXmlVO::getCurvature, pointXmlVO::setCurvature, Double.class, "小板轮廓边圆弧凹凸度", flag); + isEmptyBackAndNumber(pointXmlVO::getRadius, pointXmlVO::setRadius, Double.class, "小板轮廓边圆弧半径", flag); - checkEdging(pointXmlVO, flag); + checkEdging(pointXmlVO, flag); // if (!(StringUtils.isEmpty(pointXmlVO.getItemCode()) && StringUtils.isEmpty(pointXmlVO.getEdgingName()) && // StringUtils.isEmpty(pointXmlVO.getEdgingColor()) && StringUtils.isEmpty(pointXmlVO.getEdgingMaterial()) && // (StringUtils.isEmpty(pointXmlVO.getEdgingThickness()) || pointXmlVO.getEdgingThickness().trim().equals("0")))) { @@ -1095,13 +1095,13 @@ public class XMLUtil { // // } - isEmptyAddAndPositiveNumber(pointXmlVO::getPreMilling, pointXmlVO::setPreMilling, "0", Double.class, "预铣/精修量", flag); - isEmptyAddAndNumber(pointXmlVO::getScale, pointXmlVO::setScale, "0", Double.class, "延展/收缩量", flag); - isEmptyAddAndPositiveNumber(pointXmlVO::getCount, pointXmlVO::setCount, "0", Double.class, "单边封边尺寸", flag); - isEmptyAddAndPositiveNumber(pointXmlVO::getCountUnit, pointXmlVO::setCountUnit, "m", String.class, "封边条长度单位", flag); + isEmptyAddAndPositiveNumber(pointXmlVO::getPreMilling, pointXmlVO::setPreMilling, "0", Double.class, "预铣/精修量", flag); + isEmptyAddAndNumber(pointXmlVO::getScale, pointXmlVO::setScale, "0", Double.class, "延展/收缩量", flag); + isEmptyAddAndPositiveNumber(pointXmlVO::getCount, pointXmlVO::setCount, "0", Double.class, "单边封边尺寸", flag); + isEmptyAddAndPositiveNumber(pointXmlVO::getCountUnit, pointXmlVO::setCountUnit, "m", String.class, "封边条长度单位", flag); - } } + } } // 板材中封边条的处理 diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemMapper.xml index 5f5f36656..d047e03ef 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemMapper.xml @@ -36,11 +36,12 @@ @@ -109,12 +132,12 @@ og.width as bigPlateWidth, og.spec as spec from order_item oi - join order_plate op on oi.plate_id = op.id and oi.organ_id = op.organ_id - join order_body ob on oi.body_id = ob.id and oi.organ_id = ob.organ_id - join order_goods og on op.goods_id = og.id and op.organ_id = og.organ_id - join plate p on og.goods_id = p.id and og.organ_id = p.organ_id + join order_plate op on oi.plate_id = op.id and oi.organ_id = op.organ_id + join order_body ob on oi.body_id = ob.id and oi.organ_id = ob.organ_id + join order_goods og on op.goods_id = og.id and op.organ_id = og.organ_id + join plate p on og.goods_id = p.id and og.organ_id = p.organ_id - oi.organ_id = #{organId} + oi.organ_id = #{organId} AND oi.order_id = #{reqVO.orderId} @@ -198,9 +221,9 @@ SUM(p.area) AS totalArea FROM order_item i - RIGHT JOIN + RIGHT JOIN order_plate p ON i.organ_id = p.organ_id AND i.order_id = p.order_id AND i.plate_id = p.id - RIGHT JOIN + RIGHT JOIN order_goods g ON i.organ_id = g.organ_id AND i.order_id = g.order_id AND p.goods_id = g.id WHERE i.order_id = #{orderId} AND i.organ_id = #{organId} AND p.deleted = #{deleted} @@ -211,71 +234,93 @@ + + \ No newline at end of file