生产相关异常错误从system移到executor

This commit is contained in:
gaoqr
2025-11-13 11:55:20 +08:00
parent 513243c5eb
commit 39eaf87fca
12 changed files with 106 additions and 145 deletions
@@ -52,7 +52,7 @@ public class ErrorCodeConstants {
public static final ErrorCode ORDER_PROCESS_EXISTS = new ErrorCode(1_003_119_002, "该生产单工序组已经存在");
public static final ErrorCode PROCESS_GROUP_NOT_EXISTS = new ErrorCode(1_003_029_003, "工序组不存在");
public static final ErrorCode ORDER_BODY_NOT_EXISTS = new ErrorCode(1_003_029_004, "当前柜体不存在");
public static final ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_003_029_005, "生产单中未用到此板材");
public static final ErrorCode RAW_GOODS_NOT_USED_IN_ORDER = new ErrorCode(1_003_029_005, "生产单中未用到此板材");
public static final ErrorCode ORDER_NOT_FOUND = new ErrorCode(1_003_029_006, "生产单不存在");
public static final ErrorCode APP_TOKEN_ERROR = new ErrorCode(1_003_029_007, "token获取失败");
public static final ErrorCode PLATE_PLAN_DATA_ERROR = new ErrorCode(1_003_029_008, "接口数据获取,板件明细源数据缺少,请确定接口数据正确");
@@ -114,4 +114,58 @@ public class ErrorCodeConstants {
public static final ErrorCode PLATE_IMPORT_INTERRUPT_ERROR = new ErrorCode(1_003_005_001, "配件导入异常中断,请稍后再试");
public static final ErrorCode PLATE_ATTRIBUTE_NOT_EXIST = new ErrorCode(1_003_005_002,"商品编码:{},商品名称:{},材质:{},颜色:{},厚度{} 的板材不存在,请在板材管理里创建对应板材再进行导入");
//=========== 包裹信息 1-003-006-000 ============
public static final ErrorCode THE_CURRENT_PACKAGE_TYPE_IS_INCORRECT = new ErrorCode(1_003_006_000, "当前包裹类型错误");
public static final ErrorCode NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE = new ErrorCode(1_003_006_001, "已经是{}一条了");
//=========== 生产信息 1-003-007-000 ============
public static final ErrorCode ORDER_DATE_ERROR = new ErrorCode(1_003_007_000, "生产单信息不存在,请重新进入或切换生产单");
public static final ErrorCode ORDER_PLATE_ERROR = new ErrorCode(1_003_007_001, "生产单对应的板材数据为空,请检查是否为空单或重新导入生产单");
public static final ErrorCode ORDER_PLAN_DATE_ERROR = new ErrorCode(1_003_007_002, "排单信息不存在,请重新进入或切换排单");
public static final ErrorCode ORDER_PLAN_OPTIMIZE_ERROR = new ErrorCode(1_003_007_003, "当前排单对应的优化数据为空,请重新进行优化");
public static final ErrorCode ORDER_PLATE_MODEL_DATE_ERROR = new ErrorCode(1_003_007_004, "生产单对应的板材造型数据为空,请重新导入生产单");
public static final ErrorCode ORDER_PLAN_PLATE_ERROR = new ErrorCode(1_003_007_005, "当前排单对应的板材数据有异常,请查看板材信息");
public static final ErrorCode ORDER_PLAN_ERROR = new ErrorCode(1_003_007_006, "当前排单对应的生产单数据为空,请删掉排单并重新创建排单");
public static final ErrorCode ORDER_PLAN_PLATE_MODEL_DATE_ERROR = new ErrorCode(1_003_007_007, "当前排单对应的板材造型数据为空,请重新导入生产单并排单");
public static final ErrorCode ORDER_GOODS_DATA_ERROR = new ErrorCode(1_003_007_008, "当前大板数据异常,请重新导入该生产单");
public static final ErrorCode ORDER_PACK_DATA_NULL_ERROR = new ErrorCode(1_003_007_009, "当前包裹数据为空,请重新查看包裹数据");
public static final ErrorCode ORDER_PLAN_NO_OPTIMIZE_UPDATE_ERROR = new ErrorCode(1_003_007_010, "当前排单还未保存优化结果,无法对开料结果进行修改");
public static final ErrorCode ORDER_NO_DATA_ERROR = new ErrorCode(1_003_007_011, "生产单信息为空,请检查生产单信息");
public static final ErrorCode ORDER_PACK_ERROR = new ErrorCode(1_003_007_012, "当前生产单信息有误,请重新选择包裹");
public static final ErrorCode ORDER_PACK_DATA_ERROR = new ErrorCode(1_003_007_013, "当前包裹信息有误,请重新选择包裹");
public static final ErrorCode ADVANCED_SCREENING_CONFIG_ERROR = new ErrorCode(1_003_007_014, "当前筛选的配置有误,请重新进行配置");
public static final ErrorCode PLAN_GOODS_DATA_ERROR = new ErrorCode(1_003_007_015, "当前排单未保存大板和小板信息,请重新进行排单");
public static final ErrorCode PLAN_PLATE_IS_CUTTED = new ErrorCode(1_003_007_016, "当前删除的小板中已有小板开料,无法删除!");
public static final ErrorCode PROCESS_CONFIG_DEFAULT_DATA_ERROR = new ErrorCode(1_003_007_017, "当前组织没有默认的加工方案组,请在系统配置中进行配置");
public static final ErrorCode THIS_PROCESS_CONFIG_DATA_ERROR = new ErrorCode(1_003_007_018, "当前选择的加工方案组配置有误,请选择其他方案组或重新配置该方案组");
public static final ErrorCode CREAT_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_003_007_019, "当前选择部分小板已排单,请重新查询未排单信息后再次创建排单");
public static final ErrorCode PLAN_PLATE_DATA_ERROR = new ErrorCode(1_003_007_020, "当前排单没有选择板材数据,请进行选择");
public static final ErrorCode DELETE_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_003_007_021, "当前删除的小板信息有误,请检查小板是否存在或重新创建排单");
public static final ErrorCode PLAN_PLATE_OPTIMIZE_DATA_ERROR = new ErrorCode(1_003_007_022, "当前排单对应的优化数据异常,请重新进行优化");
public static final ErrorCode THIS_ORDER_PLATE_DATA_ERROR = new ErrorCode(1_003_007_023, "当前选择的生产单数据为空,请检查生产单信息或者重新导入生产单");
public static final ErrorCode THIS_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_003_007_024, "当前排单对应的板材数据为空,请重新进行排单或检查生产单对应的板材信息");
public static final ErrorCode PLAN_PROCESS_CONFIG_IS_NULL = new ErrorCode(1_003_007_025, "排单:{} 对应的方案组为空,请进行配置");
public static final ErrorCode PLAN_PROCESS_CONFIG_ALL_IS_NULL = new ErrorCode(1_003_007_026, "当前所选排单对应的方案组配置均为空,请重新进行方案组配置");
public static final ErrorCode THIS_PLAN_PROCESS_SCHEME_IS_LOCK = new ErrorCode(1_003_007_027, "当前排单已被锁定,无法修改方案组,请解锁后再进行修改");
public static final ErrorCode THIS_PLAN_OPTIMIZE_DATA_ERROR = new ErrorCode(1_003_007_028, "当前排单已全部开料,无法进行再次优化");
public static final ErrorCode THIS_PLAN_PLATE_IS_CUT = new ErrorCode(1_003_007_029, "当前排单已有板材开料,无法修改");
public static final ErrorCode THIS_ORDER_NOT_PLATE_DATA = new ErrorCode(1_003_007_030, "当前生产单无板材数据,无法进行用板量计算");
public static final ErrorCode THIS_PLAN_SCHEME_DATA_ERROR = new ErrorCode(1_003_007_031, "当前方案组的优化信息有误,请重新选择方案组或重新导入排单再进行优化");
public static final ErrorCode PLAN_SORT_DATA_ERROR = new ErrorCode(1_003_007_032, "已无可进行排序的数据,无法进行排序");
public static final ErrorCode THIS_PLATE_IS_OPTIMIZE = new ErrorCode(1_003_007_033, "小板:{},已开料,无法删除,请重新选择小板再删除");
public static final ErrorCode PART_PACK_DATA_ERROR = new ErrorCode(1_003_007_034, "当前包裹数据为空,无法进行操作,请删除包裹");
public static final ErrorCode ORDER_PLAN_DATA_ERROR = new ErrorCode(1_003_007_035, "生产单/排单数据有误,请查看对应的数据");
public static final ErrorCode ORDER_PLAN_CREATE_PLATE_NUM_REACH_THRESHOLD_ERROR = new ErrorCode(1_003_007_036, "达到排单板件上限{}片,请减少选择板件数量后创建排单");
//=========== 板材信息 1-003-008-000 ============
public static final ErrorCode PLATE_EXISTS = new ErrorCode(1_003_008_000, "商品编号已存在");
public static final ErrorCode REMAIN_PLATE_NOT_EXISTS = new ErrorCode(1_003_008_001, "板材不存在");
public static final ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_003_008_002, "设计板材不存在");
public static final ErrorCode RAW_GOODS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_003_008_003, "生产板材导入数据不可以为空");
public static final ErrorCode PLATE_ID_NULL_ERROR = new ErrorCode(1_003_008_004, "板材标识代号禁止空");
public static final ErrorCode PLATE_GOODS_ID_NOT_SAME = new ErrorCode(1_003_008_005, "板材商品编号存在,请重新命名商品编号");
public static final ErrorCode PLATE_IS_SOURCE = new ErrorCode(1_003_008_006, "小板:{} 为源小板,无法删除");
public static final ErrorCode PLATE_ATTR_GROUP_EXISTS = new ErrorCode(1_003_008_007, "当前名称、材质、颜色、厚度、品牌的组合已存在,请检查后提交");
}
@@ -63,7 +63,7 @@ public class GoodsServiceImpl implements GoodsService {
}
// 校验
if (rawGoodsService.getRawGoods(createReqVO.getRawGoodsId()) == null) {
throw exception(RAW_GOODS_NOT_EXISTS);
throw exception(RAW_GOODS_NOT_USED_IN_ORDER);
}
});
// 一次性插入数据库
@@ -31,7 +31,6 @@ import com.cf.imes.module.executor.dal.mysql.pack.OrderPrepackagedMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.system.api.setting.SettingApi;
import com.cf.imes.module.system.api.setting.dto.PackageConfigDTO;
import com.cf.imes.module.system.enums.ErrorCodeConstants;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -53,7 +52,17 @@ import java.util.Objects;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.framework.common.util.string.SearchUtil.insertSeparator;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.*;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_DATE_ERROR;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_NO_DATA_ERROR;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_PACK_DATA_ERROR;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_PACK_DATA_NULL_ERROR;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_PACK_ERROR;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PART_PACK_DATA_ERROR;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.THE_CURRENT_PACKAGE_TYPE_IS_INCORRECT;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_PLATE_ERROR;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.CURRENTLY_NO_CONFIGURATION_AVAILABLE;
@Service
@Validated
@@ -197,7 +206,7 @@ public class PackServiceImpl implements PackService {
OrderDO orderDO = ordersMapper.selectById(reqVO.getOrderId());
AssertUtils.notEmpty(orderDO,ORDER_DATE_ERROR);
AssertUtils.notEmpty(orderDO, ORDER_DATE_ERROR);
orderPackageVOS.forEach(m -> {
m.setCustomOrderNo(orderDO.getCustomOrderNo());
@@ -322,7 +331,7 @@ public class PackServiceImpl implements PackService {
OrderPackageDO orderPackageDO = orderPackageMapper.selectByPackId(reqVO.getPackId(),reqVO.getOrderId(), getUserOrganId());
AssertUtils.notEmpty(orderPackageDO,ORDER_PACK_DATA_ERROR);
AssertUtils.notEmpty(orderPackageDO, ORDER_PACK_DATA_ERROR);
List<OrderItemDO> orderItemDOS = orderItemMapper.selectPackList(reqVO.getPackId(), reqVO.getOrderId(), getUserOrganId());
List<Long> partsList = orderItemDOS.stream().map(OrderItemDO::getPartsId).distinct().toList();
@@ -380,13 +389,13 @@ public class PackServiceImpl implements PackService {
OrderPackageDO packageDO = orderPackageMapper.selectById(packageID);
AssertUtils.notEmpty(packageDO,ORDER_PACK_DATA_NULL_ERROR );
AssertUtils.notEmpty(packageDO, ORDER_PACK_DATA_NULL_ERROR);
Long orderId = packageDO.getOrderId();
OrderDO orderDO = ordersMapper.selectById(orderId);
AssertUtils.notEmpty(orderDO,ORDER_NO_DATA_ERROR);
AssertUtils.notEmpty(orderDO, ORDER_NO_DATA_ERROR);
orderDO.setPackaged(OrderPackageStatusEnum.UNPACKED.getStatus());
@@ -444,7 +453,7 @@ public class PackServiceImpl implements PackService {
OrderPackageDO orderPackageDO = orderPackageMapper.selectByPackId(packageVO.getPackId(),packageVO.getOrderId(), getUserOrganId());
AssertUtils.notEmpty(orderPackageDO,ORDER_PACK_DATA_ERROR);
AssertUtils.notEmpty(orderPackageDO, ORDER_PACK_DATA_ERROR);
List<OrderItemDO> orderItemDOS = orderItemMapper.selectPackList(packageVO.getPackId(), packageVO.getOrderId(), getUserOrganId());
List<Long> plateList = orderItemDOS.stream().map(OrderItemDO::getPlateId).distinct().toList();
@@ -881,7 +890,7 @@ public class PackServiceImpl implements PackService {
private void validateOrdersExists(Long orderId, Long packId) {
OrderDO orderDO = ordersMapper.selectById(orderId);
AssertUtils.notEmpty(orderDO,ORDER_PACK_ERROR);
AssertUtils.notEmpty(orderDO, ORDER_PACK_ERROR);
if(packId != null){
OrderPackageDO orderPackageDO = orderPackageMapper.selectById(packId);
@@ -967,7 +976,7 @@ public class PackServiceImpl implements PackService {
// 查询板材的总量
List<PackRespVO> packRespVOList = orderPlateMapper.selectPackPlateNum(orderIds, getUserOrganId());
AssertUtils.notEmpty(packRespVOList, ErrorCodeConstants.ORDER_PLATE_ERROR);
AssertUtils.notEmpty(packRespVOList, ORDER_PLATE_ERROR);
for (PackRespVO packRespVO : packRespVOList) {
packRespVO.setTotalPieceCount((long) packRespVO.getPlateIdList().size());
@@ -16,7 +16,7 @@ import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.PLATE_ATTR_GROUP_EXISTS;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_ATTR_GROUP_EXISTS;
@Slf4j
public final class PlateExcelListener<T> extends ExcelListener<PlateImportExcelVO> {
@@ -43,12 +43,14 @@ import java.util.stream.Collectors;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_ATTR_GROUP_EXISTS;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_EXISTS;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_GOODS_ID_NOT_SAME;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_ID_NULL_ERROR;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_IMPORT_INTERRUPT_ERROR;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_IMPORT_QUERY_INTERRUPT_ERROR;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.REMAIN_PLATE_NOT_EXISTS;
import static com.cf.imes.module.executor.framework.executor.config.ExecutorThreadPoolConfiguration.EXECUTOR_IMPOT_THREAD_POOL_TASK_EXECUTOR;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.PLATE_ATTR_GROUP_EXISTS;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.PLATE_GOODS_ID_NOT_SAME;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.REMAIN_PLATE_NOT_EXISTS;
/**
* 板材信息表 plate_{N} Service 实现类
@@ -108,7 +110,7 @@ public class PlateManageServiceImpl implements PlateManageService {
// 校验存在
Long organId = getOrganId(BASE_PLATE_UPDATE_PERMISSION, getLoginUserId(), updateReqVO.getOrganId());
if (updateReqVO.getId() == null) {
throw exception(ErrorCodeConstants.PLATE_NOT_EXISTS);
throw exception(PLATE_ID_NULL_ERROR);
}
validatePlateExists(updateReqVO.getId(), organId);
PlateGoodDO updateObj = BeanUtils.toBean(updateReqVO, PlateGoodDO.class);
@@ -412,7 +414,7 @@ public class PlateManageServiceImpl implements PlateManageService {
// 当前组织中板材是否存在
private void validateGoodExists(String goodsId, Long organId) {
if (plateGoodMapper.selectByGoodID(goodsId, organId, false) != null) {
throw exception(ErrorCodeConstants.PLATE_EXISTS);
throw exception(PLATE_EXISTS);
}
}
@@ -21,9 +21,9 @@ import java.util.List;
import java.util.Set;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.REMAIN_PLATE_NOT_EXISTS;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.REMAIN_PLATE_COUNT_MAX;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.REMAIN_PLATE_ID_NOT_EXISTS;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.REMAIN_PLATE_NOT_EXISTS;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.REMAIN_PLATE_STATUS_NO_USED;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.REMAIN_PLATE_STATUS_USED;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.REMAIN_PLATE_USR_TYPE;
@@ -101,7 +101,6 @@ import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.ge
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*;
import static com.cf.imes.module.executor.enums.EsIndexEnum.*;
import static com.cf.imes.module.infra.enums.ErrorCodeConstants.FILE_NOT_EXISTS;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.ORDER_PLAN_DATA_ERROR;
/**
* 生产单表 order_{N} Service 实现类
@@ -1509,7 +1508,7 @@ public class OrderServiceImpl implements OrderService {
}
AssertUtils.notEmpty(orderIds,ORDER_PLAN_DATA_ERROR);
AssertUtils.notEmpty(orderIds, ORDER_PLAN_DATA_ERROR);
// 生产单信息
@@ -436,7 +436,7 @@ public class PlateServiceImpl implements PlateService {
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
public PlateImportRespVO importPlatesList(List<PlateSaveReqVO> importPlates, Long orderId) {
if (CollUtil.isEmpty(importPlates)) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.RAW_GOODS_IMPORT_LIST_IS_EMPTY);
throw ServiceExceptionUtil.exception(RAW_GOODS_IMPORT_LIST_IS_EMPTY);
}
PlateImportRespVO respVO = PlateImportRespVO.builder().createPlates(new ArrayList<PlateSaveReqVO>())
.updatePlates(new ArrayList<>()).failurePlates(new LinkedHashMap<>()).build();
@@ -6,7 +6,6 @@ import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsImportRespVO;
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsPageReqVO;
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsSaveReqVO;
import com.cf.imes.module.system.enums.ErrorCodeConstants;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@@ -22,7 +21,8 @@ import com.cf.imes.module.executor.dal.mysql.rawgoods.RawGoodsMapper;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.RAW_GOODS_NOT_EXISTS;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.RAW_GOODS_IMPORT_LIST_IS_EMPTY;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.RAW_GOODS_NOT_EXISTS;
/**
* 生产单设计商品表 order_raw_goods_{N} Service 实现类
@@ -82,7 +82,7 @@ public class RawGoodsServiceImpl implements RawGoodsService {
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
public RawGoodsImportRespVO importRawGoodsList(List<RawGoodsSaveReqVO> importRawGoods, Long orderId) {
if (CollUtil.isEmpty(importRawGoods)) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.RAW_GOODS_IMPORT_LIST_IS_EMPTY);
throw ServiceExceptionUtil.exception(RAW_GOODS_IMPORT_LIST_IS_EMPTY);
}
RawGoodsImportRespVO respVO = RawGoodsImportRespVO.builder().createRawGoods(new ArrayList<>())
.updateRawGoods(new ArrayList<>()).failureRawGoods(new LinkedHashMap<>()).build();
@@ -5,18 +5,15 @@ import com.cf.imes.module.executor.dal.mysql.remainplaten.RemainPlateMapper;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import com.cf.imes.module.executor.controller.admin.remainplate.vo.*;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.common.util.object.BeanUtils;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.REMAIN_PLATE_NOT_EXISTS;
/**
* 生产单余料板表 order_remain_plate_{N} Service 实现类