This commit is contained in:
lym
2025-01-15 15:32:17 +08:00
11 changed files with 131 additions and 55 deletions
@@ -84,7 +84,7 @@ public interface ESDocumentService {
* @param tClass 返回的类型 * @param tClass 返回的类型
* @param map 修改内容的map * @param map 修改内容的map
*/ */
<T> Result updateById(String idxName, String docId, Class<T> tClass, Map<String,Object> map) throws IOException; <T> Result updateById(String idxName, String docId, Class<T> tClass, Map<String,Object> map) throws IOException, ElasticsearchException;
/** /**
* 根据文档id查找文档,返回类型是ObjectNode * 根据文档id查找文档,返回类型是ObjectNode
@@ -196,7 +196,7 @@ public class ESDocumentServiceImpl implements ESDocumentService {
* 把年龄改成35 * 把年龄改成35
*/ */
@Override @Override
public <T> Result updateById(String idxName, String docId, Class<T> tClass, Map<String, Object> map) throws IOException { public <T> Result updateById(String idxName, String docId, Class<T> tClass, Map<String, Object> map) throws IOException, ElasticsearchException {
UpdateResponse<T> response = elasticsearchClient.update(e -> e.index(idxName).id(docId).doc(map), tClass); UpdateResponse<T> response = elasticsearchClient.update(e -> e.index(idxName).id(docId).doc(map), tClass);
return response.result(); return response.result();
} }
@@ -31,6 +31,7 @@ public class CuttingStatusRespVO {
private Integer cutedType; private Integer cutedType;
@Schema(description = "取消开料的大板编号") @Schema(description = "取消开料的大板编号")
@NotNull(message = "取消开料的大板编号不能为空")
private List<Integer> goodsNo; private List<Integer> goodsNo;
} }
@@ -16,10 +16,6 @@ import java.util.List;
public class NoPlanFilterPlateReqVO { public class NoPlanFilterPlateReqVO {
// @Schema(description = "机台ID",requiredMode = Schema.RequiredMode.REQUIRED)
// private Long machineId;
@Schema(description = "生产单ID",requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "生产单ID",requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "生产单ID不能为空") @NotEmpty(message = "生产单ID不能为空")
private List<Long> orderIds; private List<Long> orderIds;
@@ -30,18 +26,4 @@ public class NoPlanFilterPlateReqVO {
private List<String> goodsIdList; private List<String> goodsIdList;
// @Schema(description = "实际优化的大板ID-这个只用于混单传入实际优化的大板ID")
// private String goodsId;
//
//
// @Schema(description = "板材过滤条件-传没有勾选的")
// @Size(max = 7,message = "板材过滤条件数量不正确")
// private List<String> filter;
//
//
// @Schema(description = "是否混单", requiredMode = Schema.RequiredMode.REQUIRED, example = "false")
// @NotNull(message = "混单的判断条件不能为空")
// private Boolean isMix;
} }
@@ -149,7 +149,7 @@ public interface GoodsMapper extends BaseMapperX<GoodsDO> {
IPage<PlateResList> selectPlanGoodsListByPlanId(@Param("page") IPage<PlateResList> page, @Param(Constants.WRAPPER) Wrapper<GoodsDO> wrapper); IPage<PlateResList> selectPlanGoodsListByPlanId(@Param("page") IPage<PlateResList> page, @Param(Constants.WRAPPER) Wrapper<GoodsDO> wrapper);
List<GoodsReqVO> selectGoodsAndRemainPlate(@Param("ids") List<Long> ids,@Param("organId") Long organId); List<GoodsReqVO> selectGoodsAndRemainPlate(@Param("orderIds") List<Long> orderIds,@Param("goodsIdList") List<String> goodsIdList,@Param("organId") Long organId);
@@ -206,16 +206,4 @@ public interface GoodsMapper extends BaseMapperX<GoodsDO> {
List<OrderGoodsPlateIds> selectPlateGoodIds(@Param("orderIds") List<Long> orderIds, @Param("organId") Long organId); List<OrderGoodsPlateIds> selectPlateGoodIds(@Param("orderIds") List<Long> orderIds, @Param("organId") Long organId);
default List<GoodsDO> selectOrderGoodsList(List<Long> orderIds, List<String> goodsIds, Long organId) {
return selectList(new LambdaQueryWrapperX<GoodsDO>()
.eq(GoodsDO::getOrganId, organId)
.eq(GoodsDO::getDeleted, false)
// .eq(GoodsDO::getPlanId,0)
.in(GoodsDO::getOrderId,orderIds)
.in(GoodsDO::getGoodsId,goodsIds)
.select(GoodsDO::getId));
}
} }
@@ -176,6 +176,8 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
List<PlateDetailRespVO> selectPlateListByGoodsIds(@Param("orderIds") List<Long> orderIds,@Param("goodsIdList") List<Long> goodsIdList, @Param("organId") Long organId); List<PlateDetailRespVO> selectPlateListByGoodsIds(@Param("orderIds") List<Long> orderIds,@Param("goodsIdList") List<Long> goodsIdList, @Param("organId") Long organId);
List<PlateDetailRespVO> selectNoPlanPlate(@Param("orderIds") List<Long> orderIds, @Param("organId") Long organId);
// 批量删除 // 批量删除
default int deleteBatch(Collection<?> orderId) { default int deleteBatch(Collection<?> orderId) {
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import co.elastic.clients.elasticsearch.ElasticsearchClient; import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.ElasticsearchException;
import co.elastic.clients.elasticsearch._types.SortOrder; import co.elastic.clients.elasticsearch._types.SortOrder;
import co.elastic.clients.elasticsearch._types.aggregations.Aggregate; import co.elastic.clients.elasticsearch._types.aggregations.Aggregate;
import co.elastic.clients.elasticsearch.core.SearchRequest; import co.elastic.clients.elasticsearch.core.SearchRequest;
@@ -27,11 +28,13 @@ import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.es.core.service.ESDocumentService; import com.cf.imes.framework.es.core.service.ESDocumentService;
import com.cf.imes.framework.mybatis.core.query.QueryWrapperX; import com.cf.imes.framework.mybatis.core.query.QueryWrapperX;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRemark; import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRemark;
import com.cf.imes.module.executor.controller.admin.plan.bo.*; import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds;
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderSource;
import com.cf.imes.module.executor.controller.admin.plan.bo.PlanProcessSchemeList;
import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessGroupList;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.*; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.*;
import com.cf.imes.module.executor.controller.admin.plan.vo.*; import com.cf.imes.module.executor.controller.admin.plan.vo.*;
import com.cf.imes.module.executor.dal.dataobject.goods.CutedBoardInfo; import com.cf.imes.module.executor.dal.dataobject.goods.CutedBoardInfo;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
import com.cf.imes.module.executor.dal.dataobject.goods.OptimizeBoardModelDO; import com.cf.imes.module.executor.dal.dataobject.goods.OptimizeBoardModelDO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO; import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
@@ -448,9 +451,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
if(OrderPlateCutStatusEnum.NOCUTTING.getStatus().equals(cutedType)){ if(OrderPlateCutStatusEnum.NOCUTTING.getStatus().equals(cutedType)){
planDO.setStatus(PlanStatusEnum.OPENING.getStatus()); planDO.setStatus(PlanStatusEnum.OPENING.getStatus());
planDO.setProduceTime(null);
if(goodsNum.equals(0L)){ if(goodsNum.equals(0L)){
planDO.setStatus(PlanStatusEnum.PUTINTOPRODUCTION.getStatus()); planDO.setStatus(PlanStatusEnum.NOCUTTING.getStatus());
} }
planMapper.updateById(planDO); planMapper.updateById(planDO);
@@ -461,7 +465,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
orderIds.removeAll(orderIdList); orderIds.removeAll(orderIdList);
if(CollUtil.isNotEmpty(orderIds)){ if(CollUtil.isNotEmpty(orderIds)){
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds); List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
AssertUtils.notEmpty(orderDOS,ORDER_PLAN_ERROR);
orderDOS.forEach(f->f.setStatus(OrderStatusEnum.SORTED.getStatus())); orderDOS.forEach(f->f.setStatus(OrderStatusEnum.SORTED.getStatus()));
orderMapper.updateBatch(orderDOS); orderMapper.updateBatch(orderDOS);
} }
@@ -477,6 +484,8 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
planDO.setStatus(PlanStatusEnum.OPENING.getStatus()); planDO.setStatus(PlanStatusEnum.OPENING.getStatus());
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds); List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
AssertUtils.notEmpty(orderDOS,ORDER_PLAN_ERROR);
orderDOS.forEach(f->f.setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus())); orderDOS.forEach(f->f.setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus()));
planMapper.updateById(planDO); planMapper.updateById(planDO);
@@ -914,23 +923,20 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
@Override @Override
public OrderSource getNoPlanPlateData(NoPlanFilterPlateReqVO reqVO) { public OrderSource getNoPlanPlateData(NoPlanFilterPlateReqVO reqVO) {
List<Long> orderIds = reqVO.getOrderIds(); List<Long> orderIds = Optional.ofNullable(reqVO.getOrderIds()).orElseThrow(() -> new ServiceException(THIS_ORDER_PLATE_DATA_ERROR));
List<GoodsDO> goodsDOS = goodsMapper.selectOrderGoodsList(orderIds, reqVO.getGoodsIdList(), getUserOrganId()); List<String> goodsIdList = Optional.ofNullable(reqVO.getGoodsIdList()).orElseThrow(() -> new ServiceException(THIS_ORDER_PLATE_DATA_ERROR));
AssertUtils.notEmpty(goodsDOS,ORDER_GOODS_DATA_ERROR); List<GoodsReqVO> goodsReqVOS = goodsMapper.selectGoodsAndRemainPlate(orderIds,goodsIdList, getUserOrganId());
List<Long> ids = goodsDOS.stream().map(GoodsDO::getId).toList();
List<GoodsReqVO> goodsReqVOS = goodsMapper.selectGoodsAndRemainPlate(ids, getUserOrganId());
AssertUtils.notEmpty(goodsReqVOS,ORDER_GOODS_DATA_ERROR); AssertUtils.notEmpty(goodsReqVOS,ORDER_GOODS_DATA_ERROR);
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds); List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
List<PlateDetailRespVO> plateDetailRespVOS = plateMapper.selectPlateListByGoodsIds(orderIds,ids,getUserOrganId());
List<PlateDetailRespVO> plateDetailRespVOS = plateMapper.selectNoPlanPlate(orderIds,getUserOrganId());
for (PlateDetailRespVO plateDetailsRespVO : plateDetailRespVOS) { for (PlateDetailRespVO plateDetailsRespVO : plateDetailRespVOS) {
StringBuilder name = new StringBuilder(); StringBuilder name = new StringBuilder();
@@ -1476,9 +1482,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
if(OrderPlateCutStatusEnum.NOCUTTING.getStatus().equals(cutedType)){ if(OrderPlateCutStatusEnum.NOCUTTING.getStatus().equals(cutedType)){
// 开料的大板数量
Long cutedBoardNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBoardNumber()).orElseThrow(()-> new ServiceException(UPDATE_NO_PLAN_PLATE_DATA_ERROR)); Long cutedBoardNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBoardNumber()).orElseThrow(()-> new ServiceException(UPDATE_NO_PLAN_PLATE_DATA_ERROR));
// 开料的小板数量
Long cutedBlockNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBlockNumber()).orElseThrow(()-> new ServiceException(UPDATE_NO_PLAN_PLATE_DATA_ERROR)); Long cutedBlockNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBlockNumber()).orElseThrow(()-> new ServiceException(UPDATE_NO_PLAN_PLATE_DATA_ERROR));
cutedBoardNumber -= goodsNo.size(); cutedBoardNumber -= goodsNo.size();
@@ -1496,8 +1503,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
if(OrderPlateCutStatusEnum.OPENED.getStatus().equals(cutedType)){ if(OrderPlateCutStatusEnum.OPENED.getStatus().equals(cutedType)){
// 开料的大板数量
long cutedBoardNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBoardNumber()).orElse(0L); long cutedBoardNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBoardNumber()).orElse(0L);
// 开料的小板数量
long cutedBlockNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBlockNumber()).orElse(0L); long cutedBlockNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBlockNumber()).orElse(0L);
cutedBoardNumber += goodsNo.size(); cutedBoardNumber += goodsNo.size();
@@ -1519,7 +1528,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
esDocumentService.updateById(ORDER_OPTIMIZE_PLATE_MODEL, optimizeBoardModelDO.getId(), HashMap.class, objectObjectHashMap); esDocumentService.updateById(ORDER_OPTIMIZE_PLATE_MODEL, optimizeBoardModelDO.getId(), HashMap.class, objectObjectHashMap);
} catch (IOException e) { } catch (IOException | ElasticsearchException e) {
log.error(e.getMessage()); log.error(e.getMessage());
throw new ServiceException(ES_DATA_ERROR); throw new ServiceException(ES_DATA_ERROR);
} }
@@ -1527,6 +1536,8 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<PlateDO> plateDOS = plateMapper.selectPlateByPlateNo(orderIds, planNo, getUserOrganId()); List<PlateDO> plateDOS = plateMapper.selectPlateByPlateNo(orderIds, planNo, getUserOrganId());
AssertUtils.notEmpty(plateDOS,THIS_PLAN_PLATE_DATA_ERROR);
plateDOS.forEach(f->{ plateDOS.forEach(f->{
f.setIsCutted(cutedType); f.setIsCutted(cutedType);
}); });
@@ -204,18 +204,21 @@
resultType="com.cf.imes.module.executor.controller.admin.plan.vo.GoodsReqVO"> resultType="com.cf.imes.module.executor.controller.admin.plan.vo.GoodsReqVO">
select select
og.*, og.*
orp.id as remainId
from order_goods og from order_goods og
left join order_remain_plate orp on og.organ_id = orp.organ_id and og.id = orp.goods_id
where og.organ_id = #{organId} where og.organ_id = #{organId}
and og.deleted = false and og.deleted = false
and og.id in and og.order_id in
<foreach collection="ids" item="ids" open="(" close=")" separator=","> <foreach collection="orderIds" item="orderIds" open="(" close=")" separator=",">
#{ids} #{orderIds}
</foreach> </foreach>
and og.goods_id in
<foreach collection="goodsIdList" item="goodsIdList" open="(" close=")" separator=",">
#{goodsIdList}
</foreach>
</select> </select>
@@ -456,8 +456,8 @@
from orders o from orders o
left join order_plate op on o.organ_id = op.organ_id and o.id = op.order_id left join order_plate op on o.organ_id = op.organ_id and o.id = op.order_id
left join order_plan_item opi on op.organ_id = opi.organ_id and op.order_id = opi.order_id and op.id = opi.plate_id
left join order_goods og on op.organ_id = og.organ_id and op.order_id = og.order_id and op.goods_id = og.id left join order_goods og on op.organ_id = og.organ_id and op.order_id = og.order_id and op.goods_id = og.id
left join order_plan_item opi on op.organ_id = opi.organ_id and op.order_id = opi.order_id and op.id = opi.plate_id
${ew.customSqlSegment} ${ew.customSqlSegment}
@@ -454,6 +454,94 @@
<select id="selectNoPlanPlate" resultMap="PlateDetialMap">
select distinct
oi.body_id as bodyId,
oi.group_id as groupId,
oi.room_id as roomId,
og.name as groupName,
ob.name as bodyName,
ob.room_name as roomName,
ogs.goods_id as plateGoodsId,
ogs.goods_name as goodsName,
ogs.color as color,
ogs.material as material,
op.id as plateId,
op.order_id as orderId,
op.name as name,
op.plate_no as plateNo,
op.custom_plate_no as customPlateNo,
op.type as type,
op.goods_id as goodsId,
op.width as width,
op.height as height,
op.thickness as thickness,
op.split_width as splitWidth,
op.split_height as splitHeight,
op.split_thickness as splitThickness,
op.seal_left as sealLeft,
op.seal_right as sealRight,
op.seal_up as sealUp,
op.seal_down as sealDown,
op.area as area,
op.texture as texture,
op.hole_face as holeFace,
op.hole_arrange as holeArrange,
op.unregular_point_count as unregularPointCount,
op.front_hole_count as frontHoleCount,
op.back_hole_count as backHoleCount,
op.side_hole_count as sideHoleCount,
op.front_model_count as frontModelCount,
op.back_model_count as backModelCount,
op.is_door as isDoor,
op.open_door_type as openDoorType,
op.offset_x as offsetX,
op.offset_y as offsetY,
op.is_arc_across as isArcAcross,
op.module_type_id as moduleTypeId,
op.is_special_shaped as isSpecialShaped,
op.is_sculpt as isSculpt,
op.is_row_hole as hasHole,
op.remark as remark,
op.filter_type as filterType,
op.is_cancel as isCancel,
op.is_row_hole as hasHole
from order_plate op
left join order_goods ogs on op.organ_id = ogs.organ_id and op.order_id = ogs.order_id and op.goods_id = ogs.id
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.plate_id
left join order_group og on oi.organ_id = og.organ_id and oi.order_id = og.order_id and oi.group_id = og.id
left join order_body ob on oi.organ_id = ob.organ_id and oi.order_id = ob.order_id and oi.body_id = ob.id
left join order_plan_item opi on op.organ_id = opi.organ_id and op.order_id = opi.order_id and op.id = opi.plate_id
where op.organ_id = #{organId}
and op.deleted = false
and op.order_id in
<foreach collection="orderIds" item="orderIds" open="(" close=")" separator=",">
#{orderIds}
</foreach>
and opi.plan_id is null
</select>
<resultMap id="PlatePageMap" type="com.cf.imes.module.executor.controller.admin.plan.vo.PlatePage"> <resultMap id="PlatePageMap" type="com.cf.imes.module.executor.controller.admin.plan.vo.PlatePage">
<result property="orderId" column="orderId"/> <result property="orderId" column="orderId"/>
@@ -326,7 +326,6 @@ public class ErrorCodeConstants {
public static final ErrorCode PLAN_BODY_DATA_ERROR = new ErrorCode(1_002_041_019, "当前排单的生产单对应的柜体数据异常,请查看柜体数据或联系客服"); public static final ErrorCode PLAN_BODY_DATA_ERROR = new ErrorCode(1_002_041_019, "当前排单的生产单对应的柜体数据异常,请查看柜体数据或联系客服");
public static final ErrorCode CREATE_PLAN_DATA_ERROR = new ErrorCode(1_002_041_020, "排单优化数据异常,请重新进行优化或者删除排单然后重新创建排单"); public static final ErrorCode CREATE_PLAN_DATA_ERROR = new ErrorCode(1_002_041_020, "排单优化数据异常,请重新进行优化或者删除排单然后重新创建排单");
public static final ErrorCode PLAN_MIXED_ORDER_ERROR = new ErrorCode(1_002_041_021, "当前选择的混排板材条件:' {} ' 不相同,无法混排,请重新选择板材进行排单!"); public static final ErrorCode PLAN_MIXED_ORDER_ERROR = new ErrorCode(1_002_041_021, "当前选择的混排板材条件:' {} ' 不相同,无法混排,请重新选择板材进行排单!");
public static final ErrorCode BRANCHING_SETTING_ERROR = new ErrorCode(1_002_041_022, "当前分线配置有误,请重新进行保存");
public static final ErrorCode BRANCHING_DEFAULT_SETTING_ERROR = new ErrorCode(1_002_041_023, "当前组织智能分线无默认配置,请进行配置"); public static final ErrorCode BRANCHING_DEFAULT_SETTING_ERROR = new ErrorCode(1_002_041_023, "当前组织智能分线无默认配置,请进行配置");
public static final ErrorCode ADVANCED_SCREENING_CONFIG_ERROR = new ErrorCode(1_002_041_024, "当前筛选的配置有误,请重新进行配置"); public static final ErrorCode ADVANCED_SCREENING_CONFIG_ERROR = new ErrorCode(1_002_041_024, "当前筛选的配置有误,请重新进行配置");
public static final ErrorCode CONFIG_DATA_ERROR = new ErrorCode(1_002_041_025, "当前配置为空,保存失败,请添加配置后再保存"); public static final ErrorCode CONFIG_DATA_ERROR = new ErrorCode(1_002_041_025, "当前配置为空,保存失败,请添加配置后再保存");
@@ -342,6 +341,8 @@ public class ErrorCodeConstants {
public static final ErrorCode PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_035, "当前排单没有选择板材数据,请进行选择"); public static final ErrorCode PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_035, "当前排单没有选择板材数据,请进行选择");
public static final ErrorCode DELETE_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_036, "当前删除的小板信息有误,请检查小板是否存在或重新创建排单"); public static final ErrorCode DELETE_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_036, "当前删除的小板信息有误,请检查小板是否存在或重新创建排单");
public static final ErrorCode PLAN_PLATE_OPTIMIZE_DATA_ERROR = new ErrorCode(1_002_041_037, "当前排单对应的优化数据异常,请重新进行优化"); public static final ErrorCode PLAN_PLATE_OPTIMIZE_DATA_ERROR = new ErrorCode(1_002_041_037, "当前排单对应的优化数据异常,请重新进行优化");
public static final ErrorCode THIS_ORDER_PLATE_DATA_ERROR = new ErrorCode(1_002_041_038, "当前选择的生产单数据为空,请检查生产单信息或稍后重试");
public static final ErrorCode THIS_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_039, "当前排单对应的板材数据为空,请重新进行排单或检查生产单对应的板材信息");