From b7e371ffa872fc931cefef3c86e510efd85c9a19 Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Mon, 10 Mar 2025 14:21:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Ewebcad=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E5=8D=95=E5=AF=BC=E5=85=A5=EF=BC=9A=E8=A1=A5=E5=85=85=E6=96=B0?= =?UTF-8?q?=E5=A2=9Eraw=5Fgoods=E3=80=81order=5Fgoods?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/plan/enums/ErrorCodeConstants.java | 2 + .../webcad/vo/WebCadDataBlockReqVO.java | 2 +- .../WebCadOrderImportServiceImpl.java | 15 +++- .../factory/WebCadOrderImportFactory.java | 86 +++++++++++++++++-- 4 files changed, 98 insertions(+), 7 deletions(-) diff --git a/cf-module-prod-plan/cf-module-prod-plan-api/src/main/java/com/cf/imes/module/plan/enums/ErrorCodeConstants.java b/cf-module-prod-plan/cf-module-prod-plan-api/src/main/java/com/cf/imes/module/plan/enums/ErrorCodeConstants.java index 163b52115..871d10e80 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-api/src/main/java/com/cf/imes/module/plan/enums/ErrorCodeConstants.java +++ b/cf-module-prod-plan/cf-module-prod-plan-api/src/main/java/com/cf/imes/module/plan/enums/ErrorCodeConstants.java @@ -16,4 +16,6 @@ public class ErrorCodeConstants { public static final ErrorCode WEBCAD_ORDER_IMPORT_ROOMBODY_EMPTY_ERROR = new ErrorCode(1_005_000_006, "导入失败:房间柜体列表不能为空"); public static final ErrorCode WEBCAD_ORDER_IMPORT_ORGANID_EMPTY_ERROR = new ErrorCode(1_005_000_007, "导入失败:无法获取机构信息,请检查cadtoken是否配置正确"); public static final ErrorCode WEBCAD_ORDER_IMPORT_FAILED = new ErrorCode(1_005_000_008, "导入失败:请检查拆单数据"); + public static final ErrorCode WEBCAD_ORDER_IMPORT_PLATE_NOT_EXIST_ERROR = new ErrorCode(1_005_000_009, "导入失败:板材对应失败,板材库中不存在对应板材【{}】"); + public static final ErrorCode WEBCAD_ORDER_IMPORT_SEAL_NOT_EXIST_ERROR = new ErrorCode(1_005_000_010, "导入失败:封边条对应失败,配件库中不存在对应封边条【{}】"); } diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/controller/admin/orderImport/webcad/vo/WebCadDataBlockReqVO.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/controller/admin/orderImport/webcad/vo/WebCadDataBlockReqVO.java index 3756581ed..2c571cfa4 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/controller/admin/orderImport/webcad/vo/WebCadDataBlockReqVO.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/controller/admin/orderImport/webcad/vo/WebCadDataBlockReqVO.java @@ -57,7 +57,7 @@ public class WebCadDataBlockReqVO { private Double cabinetHeight; private BoadrData boardData; - private String plateGoodsId; + private Long plateGoodsId; private String goodsId; private List groupInfos = new ArrayList<>(); diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/WebCadOrderImportServiceImpl.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/WebCadOrderImportServiceImpl.java index a55b68039..f62c40f27 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/WebCadOrderImportServiceImpl.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/WebCadOrderImportServiceImpl.java @@ -10,13 +10,16 @@ import com.cf.imes.framework.redis.config.ChenfengCacheProperties; import com.cf.imes.framework.redis.constants.RedisKeyConstants; import com.cf.imes.framework.redis.util.RedisLockUtil; import com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo.WebCadDataReqVO; +import com.cf.imes.module.plan.dal.mysql.goods.GoodsMapper; import com.cf.imes.module.plan.dal.mysql.order.OrderMapper; import com.cf.imes.module.plan.dal.mysql.orderBody.OrderBodyMapper; import com.cf.imes.module.plan.dal.mysql.orderGroup.OrderGroupMapper; import com.cf.imes.module.plan.dal.mysql.orderItem.OrderItemMapper; import com.cf.imes.module.plan.dal.mysql.orderParts.OrderPartsMapper; import com.cf.imes.module.plan.dal.mysql.orderParts.PartsMapper; +import com.cf.imes.module.plan.dal.mysql.plate.PlateGoodMapper; import com.cf.imes.module.plan.dal.mysql.plate.PlateMapper; +import com.cf.imes.module.plan.dal.mysql.rawgoods.RawGoodsMapper; import com.cf.imes.module.plan.service.customplateno.CustomPlateNoGenerateService; import com.cf.imes.module.plan.service.order.OrderInputProcessor; import com.cf.imes.module.plan.service.orderImport.factory.WebCadOrderImportFactory; @@ -79,6 +82,15 @@ public class WebCadOrderImportServiceImpl implements WebCadOrderImportService { @Resource private ChenfengCacheProperties chenfengCacheProperties; + @Resource + private GoodsMapper goodsMapper; + + @Resource + private RawGoodsMapper rawGoodsMapper; + + @Resource + private PlateGoodMapper plateGoodMapper; + @Override public void webCadOrderImport(WebCadDataReqVO webCadDataReqVO) { Long organId = OrganContextHolder.getOrganId(); @@ -93,7 +105,8 @@ public class WebCadOrderImportServiceImpl implements WebCadOrderImportService { if (!lockResult) { throw new ServiceException(ORDER_IMPORT_ORGAN_LOCK_ERROR); } - WebCadOrderImportFactory webCadOrderImportFactory = new WebCadOrderImportFactory(organId, orderMapper, snowFlakeGenerator, orderBodyMapper, plateMapper, orderItemMapper, orderGroupMapper, idWorker, orderInputProcessor, partsMapper, orderPartsMapper, customPlateNoGenerateService); + WebCadOrderImportFactory webCadOrderImportFactory = new WebCadOrderImportFactory(organId, orderMapper, snowFlakeGenerator, orderBodyMapper, plateMapper, orderItemMapper, orderGroupMapper, + idWorker, orderInputProcessor, partsMapper, orderPartsMapper, goodsMapper, rawGoodsMapper, plateGoodMapper, customPlateNoGenerateService); webCadOrderImportFactory.analyzeTempData(webCadDataReqVO); } catch (ServiceException se) { throw se; diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/WebCadOrderImportFactory.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/WebCadOrderImportFactory.java index bc4513132..9a6e63029 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/WebCadOrderImportFactory.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/factory/WebCadOrderImportFactory.java @@ -22,6 +22,7 @@ import com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo.WebCadData import com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo.WebCadDataPartsReqVO; import com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo.WebCadDataProcessGroupReqVO; import com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo.WebCadDataReqVO; +import com.cf.imes.module.plan.dal.dataobject.goods.GoodsDO; import com.cf.imes.module.plan.dal.dataobject.order.OrderDO; import com.cf.imes.module.plan.dal.dataobject.orderBody.OrderBodyDO; import com.cf.imes.module.plan.dal.dataobject.orderGroup.OrderGroupDO; @@ -30,13 +31,18 @@ import com.cf.imes.module.plan.dal.dataobject.orderParts.OrderPartsDO; import com.cf.imes.module.plan.dal.dataobject.orderParts.PartsDO; import com.cf.imes.module.plan.dal.dataobject.ordermodel.OrderModelDO; import com.cf.imes.module.plan.dal.dataobject.plate.PlateDO; +import com.cf.imes.module.plan.dal.dataobject.plate.PlateGoodDO; +import com.cf.imes.module.plan.dal.dataobject.rawgoods.RawGoodsDO; +import com.cf.imes.module.plan.dal.mysql.goods.GoodsMapper; import com.cf.imes.module.plan.dal.mysql.order.OrderMapper; import com.cf.imes.module.plan.dal.mysql.orderBody.OrderBodyMapper; import com.cf.imes.module.plan.dal.mysql.orderGroup.OrderGroupMapper; import com.cf.imes.module.plan.dal.mysql.orderItem.OrderItemMapper; import com.cf.imes.module.plan.dal.mysql.orderParts.OrderPartsMapper; import com.cf.imes.module.plan.dal.mysql.orderParts.PartsMapper; +import com.cf.imes.module.plan.dal.mysql.plate.PlateGoodMapper; import com.cf.imes.module.plan.dal.mysql.plate.PlateMapper; +import com.cf.imes.module.plan.dal.mysql.rawgoods.RawGoodsMapper; import com.cf.imes.module.plan.service.customplateno.CustomPlateNoGenerateService; import com.cf.imes.module.plan.service.customplateno.vo.CustomPlateNoGenerateConfigVO; import com.cf.imes.module.plan.service.order.OrderInputProcessor; @@ -52,7 +58,9 @@ import java.util.Map; import java.util.stream.Collectors; import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_MATERIALS_EMPTY_ERROR; +import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_PLATE_NOT_EXIST_ERROR; import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_ROOMBODY_EMPTY_ERROR; +import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_SEAL_NOT_EXIST_ERROR; import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_NOT_EXISTS_ERROR; /** @@ -88,6 +96,12 @@ public class WebCadOrderImportFactory { private OrderPartsMapper orderPartsMapper; + private GoodsMapper goodsMapper; + + private RawGoodsMapper rawGoodsMapper; + + private PlateGoodMapper plateGoodMapper; + private CustomPlateNoGenerateService customPlateNoGenerateService; private Long organId; @@ -116,6 +130,8 @@ public class WebCadOrderImportFactory { private List orderGroupDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER); private List orderPartsDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER); private List orderModelDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER); + private List rawGoodsDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER); + private List goodsDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER); private static String PART_CATEGORY_ONE = "封边条"; @@ -134,6 +150,9 @@ public class WebCadOrderImportFactory { OrderInputProcessor orderInputProcessor, PartsMapper partsMapper, OrderPartsMapper orderPartsMapper, + GoodsMapper goodsMapper, + RawGoodsMapper rawGoodsMapper, + PlateGoodMapper plateGoodMapper, CustomPlateNoGenerateService customPlateNoGenerateService) { this.organId = organId; this.orderMapper = orderMapper; @@ -146,6 +165,9 @@ public class WebCadOrderImportFactory { this.orderInputProcessor = orderInputProcessor; this.partsMapper = partsMapper; this.orderPartsMapper = orderPartsMapper; + this.goodsMapper = goodsMapper; + this.rawGoodsMapper = rawGoodsMapper; + this.plateGoodMapper = plateGoodMapper; this.customPlateNoGenerateService = customPlateNoGenerateService; } @@ -212,14 +234,65 @@ public class WebCadOrderImportFactory { throw new ServiceException(WEBCAD_ORDER_IMPORT_MATERIALS_EMPTY_ERROR); } for (WebCadDataMaterialReqVO materialReqVO : materialReqVOS) { + String plateGoodsId = materialReqVO.getId(); + String plateGoodsGoodsId = materialReqVO.getGoodsId(); + PlateGoodDO plateGoodDO = plateGoodMapper.selectById(plateGoodsId); + if (ObjectUtil.isNull(plateGoodDO)) { + throw ServiceExceptionUtil.exception(WEBCAD_ORDER_IMPORT_PLATE_NOT_EXIST_ERROR, plateGoodsId); + } + // 创建设计端商品 + Long rawGoodsId = (Long) snowFlakeGenerator.nextId(null); + RawGoodsDO rawGoodsDO = RawGoodsDO.builder() + .id(rawGoodsId) + .orderId(orderId) + .rawGoodsId(plateGoodsGoodsId) + .goodsName(plateGoodDO.getGoodsName()) + .material(plateGoodDO.getMaterial()) + .texture(plateGoodDO.getTexture()) + .color(plateGoodDO.getColor()) + .colorBlack(StringUtils.isNotEmpty(plateGoodDO.getColorBlack()) ? plateGoodDO.getColorBlack() : EMPTY_STRING) + .thickness(plateGoodDO.getThickness()) + .spec(plateGoodDO.getSpec()) + .brand(plateGoodDO.getBrand()) + .price(0.00) + .deleted(false) + .build(); + Long orderGoodsId = (Long) snowFlakeGenerator.nextId(null); + + // 创建生产单商品 + GoodsDO goodsDO = GoodsDO.builder() + .id(orderGoodsId) + .orderId(orderId) + .rawGoodsId(String.valueOf(rawGoodsId)) + .goodsId(plateGoodsGoodsId) + .goodsName(plateGoodDO.getGoodsName()) + .material(plateGoodDO.getMaterial()) + .texture(plateGoodDO.getTexture()) + .color(plateGoodDO.getColor()) + .colorBlack(StringUtils.isNotEmpty(plateGoodDO.getColorBlack()) ? plateGoodDO.getColorBlack() : EMPTY_STRING) + .width(BigDecimal.valueOf(plateGoodDO.getWidth())) + .height(BigDecimal.valueOf(plateGoodDO.getHeight())) + .thickness(BigDecimal.valueOf(plateGoodDO.getThickness())) + .spec(plateGoodDO.getSpec()) + .brand(plateGoodDO.getBrand()) + .remark(EMPTY_STRING) + .planId(0L) + .price(0.00) + .deleted(false) + .build(); + + goodsDOS.add(goodsDO); + rawGoodsDOS.add(rawGoodsDO); for (Integer blockIndex : materialReqVO.getOrginIds()) { - // blockIndex序号获取对应板件 + // blockIndex序号获取对应板件a WebCadDataBlockReqVO webCadDataBlockReqVO = blockReqVOS.get(blockIndex - 1); // 把板材的id和goodsId赋给cad板件 - webCadDataBlockReqVO.setGoodsId(materialReqVO.getGoodsId()); - webCadDataBlockReqVO.setPlateGoodsId(materialReqVO.getId()); + webCadDataBlockReqVO.setGoodsId(plateGoodsGoodsId); + webCadDataBlockReqVO.setPlateGoodsId(orderGoodsId); } } + orderInfoBatchInsertWithinThreshold(rawGoodsMapper, rawGoodsDOS, true); + orderInfoBatchInsertWithinThreshold(goodsMapper, goodsDOS, true); } /** @@ -419,7 +492,7 @@ public class WebCadOrderImportFactory { .name(block.getName()) .plateNo(obtainingTime + Long.toString(plateNo).substring(2)) .type(block.getType()) - .goodsId(NumberUtil.parseLong(block.getPlateGoodsId())) + .goodsId(block.getPlateGoodsId()) .width(BigDecimal.valueOf(block.getWidth())) .height(BigDecimal.valueOf(block.getHeight())) .thickness(BigDecimal.valueOf(block.getThickness())) @@ -785,12 +858,15 @@ public class WebCadOrderImportFactory { String factory = part.getFactory(); if (PART_CATEGORY_ONE.equals(partType)) { // 封边对应查询配件库中的封边条配件,使用配件库的model、spec、brand、factory - PartsDO partsDO = partsMapper.selectById(part.getPartId()); + String sealPartId = part.getPartId(); + PartsDO partsDO = partsMapper.selectById(sealPartId); if (ObjectUtil.isNotNull(partsDO)) { model = partsDO.getModel(); spec = partsDO.getSpec(); brand = partsDO.getBrand(); factory = partsDO.getFactory(); + } else { + throw ServiceExceptionUtil.exception(WEBCAD_ORDER_IMPORT_SEAL_NOT_EXIST_ERROR, sealPartId); } }