新增webcad生产单导入:补充新增raw_goods、order_goods

This commit is contained in:
gaoqr
2025-03-10 14:21:20 +08:00
parent e0de135f71
commit b7e371ffa8
4 changed files with 98 additions and 7 deletions
@@ -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, "导入失败:封边条对应失败,配件库中不存在对应封边条【{}】");
}
@@ -57,7 +57,7 @@ public class WebCadDataBlockReqVO {
private Double cabinetHeight;
private BoadrData boardData;
private String plateGoodsId;
private Long plateGoodsId;
private String goodsId;
private List<GroupInfo> groupInfos = new ArrayList<>();
@@ -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;
@@ -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<OrderGroupDO> orderGroupDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
private List<OrderPartsDO> orderPartsDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
private List<OrderModelDO> orderModelDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
private List<RawGoodsDO> rawGoodsDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
private List<GoodsDO> 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);
}
}