Commit 3320fa804782ee518a072b66260cb089520dc590
1 parent
2a901c12
✨ feat(workorder): 添加工单状态字段并更新相关逻辑
在 MesProWorkOrderPageReqVO 中新增工单状态字段,并在相关的 Mapper 和 Service 中更新查询逻辑以支持该字段。同时,新增批次编号字段到 MesWmMaterialStockPageReqVO,并更新相关逻辑以确保数据一致性。
Showing
12 changed files
with
75 additions
and
46 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/vo/MesProWorkOrderPageReqVO.java
| @@ -35,6 +35,9 @@ public class MesProWorkOrderPageReqVO extends PageParam { | @@ -35,6 +35,9 @@ public class MesProWorkOrderPageReqVO extends PageParam { | ||
| 35 | @Schema(description = "客户编号", example = "300") | 35 | @Schema(description = "客户编号", example = "300") |
| 36 | private Long clientId; | 36 | private Long clientId; |
| 37 | 37 | ||
| 38 | + @Schema(description = "工单状态", example = "1") | ||
| 39 | + private Integer status; | ||
| 40 | + | ||
| 38 | @Schema(description = "需求日期") | 41 | @Schema(description = "需求日期") |
| 39 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 42 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 40 | private LocalDateTime[] requestDate; | 43 | private LocalDateTime[] requestDate; |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialstock/vo/MesWmMaterialStockPageReqVO.java
| @@ -21,6 +21,9 @@ public class MesWmMaterialStockPageReqVO extends PageParam { | @@ -21,6 +21,9 @@ public class MesWmMaterialStockPageReqVO extends PageParam { | ||
| 21 | @Schema(description = "批次号", example = "B20260101") | 21 | @Schema(description = "批次号", example = "B20260101") |
| 22 | private String batchCode; | 22 | private String batchCode; |
| 23 | 23 | ||
| 24 | + @Schema(description = "批次编号", example = "1") | ||
| 25 | + private Long batchId; | ||
| 26 | + | ||
| 24 | @Schema(description = "仓库编号", example = "1") | 27 | @Schema(description = "仓库编号", example = "1") |
| 25 | private Long warehouseId; | 28 | private Long warehouseId; |
| 26 | 29 |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/workorder/MesProWorkOrderMapper.java
| @@ -26,6 +26,7 @@ public interface MesProWorkOrderMapper extends BaseMapperX<MesProWorkOrderDO> { | @@ -26,6 +26,7 @@ public interface MesProWorkOrderMapper extends BaseMapperX<MesProWorkOrderDO> { | ||
| 26 | .likeIfPresent(MesProWorkOrderDO::getOrderSourceCode, reqVO.getOrderSourceCode()) | 26 | .likeIfPresent(MesProWorkOrderDO::getOrderSourceCode, reqVO.getOrderSourceCode()) |
| 27 | .eqIfPresent(MesProWorkOrderDO::getProductId, reqVO.getProductId()) | 27 | .eqIfPresent(MesProWorkOrderDO::getProductId, reqVO.getProductId()) |
| 28 | .eqIfPresent(MesProWorkOrderDO::getClientId, reqVO.getClientId()) | 28 | .eqIfPresent(MesProWorkOrderDO::getClientId, reqVO.getClientId()) |
| 29 | + .eqIfPresent(MesProWorkOrderDO::getStatus, reqVO.getStatus()) | ||
| 29 | .betweenIfPresent(MesProWorkOrderDO::getRequestDate, reqVO.getRequestDate()) | 30 | .betweenIfPresent(MesProWorkOrderDO::getRequestDate, reqVO.getRequestDate()) |
| 30 | .orderByDesc(MesProWorkOrderDO::getId)); | 31 | .orderByDesc(MesProWorkOrderDO::getId)); |
| 31 | } | 32 | } |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/materialstock/MesWmMaterialStockMapper.java
| @@ -26,6 +26,7 @@ public interface MesWmMaterialStockMapper extends BaseMapperX<MesWmMaterialStock | @@ -26,6 +26,7 @@ public interface MesWmMaterialStockMapper extends BaseMapperX<MesWmMaterialStock | ||
| 26 | .inIfPresent(MesWmMaterialStockDO::getItemTypeId, itemTypeIds) | 26 | .inIfPresent(MesWmMaterialStockDO::getItemTypeId, itemTypeIds) |
| 27 | .inIfPresent(MesWmMaterialStockDO::getItemId, itemIds) | 27 | .inIfPresent(MesWmMaterialStockDO::getItemId, itemIds) |
| 28 | .likeIfPresent(MesWmMaterialStockDO::getBatchCode, reqVO.getBatchCode()) | 28 | .likeIfPresent(MesWmMaterialStockDO::getBatchCode, reqVO.getBatchCode()) |
| 29 | + .eqIfPresent(MesWmMaterialStockDO::getBatchId, reqVO.getBatchId()) | ||
| 29 | .eqIfPresent(MesWmMaterialStockDO::getWarehouseId, reqVO.getWarehouseId()) | 30 | .eqIfPresent(MesWmMaterialStockDO::getWarehouseId, reqVO.getWarehouseId()) |
| 30 | .eqIfPresent(MesWmMaterialStockDO::getLocationId, reqVO.getLocationId()) | 31 | .eqIfPresent(MesWmMaterialStockDO::getLocationId, reqVO.getLocationId()) |
| 31 | .eqIfPresent(MesWmMaterialStockDO::getAreaId, reqVO.getAreaId()) | 32 | .eqIfPresent(MesWmMaterialStockDO::getAreaId, reqVO.getAreaId()) |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
| @@ -51,6 +51,8 @@ public interface ErrorCodeConstants { | @@ -51,6 +51,8 @@ public interface ErrorCodeConstants { | ||
| 51 | ErrorCode WM_BATCH_MOLD_REQUIRED = new ErrorCode(1_040_717_011, "批次配置要求模具不能为空"); | 51 | ErrorCode WM_BATCH_MOLD_REQUIRED = new ErrorCode(1_040_717_011, "批次配置要求模具不能为空"); |
| 52 | ErrorCode WM_BATCH_LOT_NUMBER_REQUIRED = new ErrorCode(1_040_717_012, "批次配置要求生产批号不能为空"); | 52 | ErrorCode WM_BATCH_LOT_NUMBER_REQUIRED = new ErrorCode(1_040_717_012, "批次配置要求生产批号不能为空"); |
| 53 | ErrorCode WM_BATCH_QUALITY_STATUS_REQUIRED = new ErrorCode(1_040_717_013, "批次配置要求质量状态不能为空"); | 53 | ErrorCode WM_BATCH_QUALITY_STATUS_REQUIRED = new ErrorCode(1_040_717_013, "批次配置要求质量状态不能为空"); |
| 54 | + ErrorCode WM_BATCH_NOT_EXISTS = new ErrorCode(1_040_717_014, "批次不存在"); | ||
| 55 | + ErrorCode WM_BATCH_ITEM_MISMATCH = new ErrorCode(1_040_717_015, "批次不属于当前物料"); | ||
| 54 | 56 | ||
| 55 | // ========== MES 基础数据-客户(1-040-103-000) ========== | 57 | // ========== MES 基础数据-客户(1-040-103-000) ========== |
| 56 | ErrorCode MD_CLIENT_NOT_EXISTS = new ErrorCode(1_040_103_000, "客户不存在"); | 58 | ErrorCode MD_CLIENT_NOT_EXISTS = new ErrorCode(1_040_103_000, "客户不存在"); |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonRecordServiceImpl.java
| @@ -50,7 +50,7 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService { | @@ -50,7 +50,7 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService { | ||
| 50 | MesProAndonConfigDO config = andonConfigService.validateAndonConfigExists(createReqVO.getConfigId()); | 50 | MesProAndonConfigDO config = andonConfigService.validateAndonConfigExists(createReqVO.getConfigId()); |
| 51 | workstationService.validateWorkstationExists(createReqVO.getWorkstationId()); | 51 | workstationService.validateWorkstationExists(createReqVO.getWorkstationId()); |
| 52 | if (createReqVO.getWorkOrderId() != null) { | 52 | if (createReqVO.getWorkOrderId() != null) { |
| 53 | - workOrderService.validateWorkOrderExists(createReqVO.getWorkOrderId()); | 53 | + workOrderService.validateWorkOrderConfirmed(createReqVO.getWorkOrderId()); |
| 54 | } | 54 | } |
| 55 | if (createReqVO.getProcessId() != null) { | 55 | if (createReqVO.getProcessId() != null) { |
| 56 | processService.validateProcessExists(createReqVO.getProcessId()); | 56 | processService.validateProcessExists(createReqVO.getProcessId()); |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchService.java
| @@ -69,10 +69,12 @@ public interface MesWmBatchService { | @@ -69,10 +69,12 @@ public interface MesWmBatchService { | ||
| 69 | List<MesWmBatchDO> getBackwardBatchList(String code); | 69 | List<MesWmBatchDO> getBackwardBatchList(String code); |
| 70 | 70 | ||
| 71 | /** | 71 | /** |
| 72 | - * 获取批次列表 | 72 | + * 校验批次存在,并校验批次与物料的归属关系 |
| 73 | * | 73 | * |
| 74 | - * @return 批次列表 | 74 | + * @param batchId 批次ID |
| 75 | + * @param itemId 物料ID | ||
| 76 | + * @return 批次记录 | ||
| 75 | */ | 77 | */ |
| 76 | - List<MesWmBatchDO> getBatchList(); | 78 | + MesWmBatchDO validateBatchExists(Long batchId, Long itemId); |
| 77 | 79 | ||
| 78 | } | 80 | } |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java
| @@ -237,8 +237,15 @@ public class MesWmBatchServiceImpl implements MesWmBatchService { | @@ -237,8 +237,15 @@ public class MesWmBatchServiceImpl implements MesWmBatchService { | ||
| 237 | } | 237 | } |
| 238 | 238 | ||
| 239 | @Override | 239 | @Override |
| 240 | - public List<MesWmBatchDO> getBatchList() { | ||
| 241 | - return batchMapper.selectList(); | 240 | + public MesWmBatchDO validateBatchExists(Long batchId, Long itemId) { |
| 241 | + MesWmBatchDO batch = batchMapper.selectById(batchId); | ||
| 242 | + if (batch == null) { | ||
| 243 | + throw exception(WM_BATCH_NOT_EXISTS); | ||
| 244 | + } | ||
| 245 | + if (ObjUtil.notEqual(batch.getItemId(), itemId)) { | ||
| 246 | + throw exception(WM_BATCH_ITEM_MISMATCH); | ||
| 247 | + } | ||
| 248 | + return batch; | ||
| 242 | } | 249 | } |
| 243 | 250 | ||
| 244 | } | 251 | } |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptDetailServiceImpl.java
| @@ -6,8 +6,6 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutso | @@ -6,8 +6,6 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutso | ||
| 6 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourcereceipt.MesWmOutsourceReceiptDetailMapper; | 6 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourcereceipt.MesWmOutsourceReceiptDetailMapper; |
| 7 | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; | 7 | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| 8 | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; | 8 | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| 9 | -import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; | ||
| 10 | -import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService; | ||
| 11 | import jakarta.annotation.Resource; | 9 | import jakarta.annotation.Resource; |
| 12 | import org.springframework.stereotype.Service; | 10 | import org.springframework.stereotype.Service; |
| 13 | import org.springframework.validation.annotation.Validated; | 11 | import org.springframework.validation.annotation.Validated; |
| @@ -31,28 +29,12 @@ public class MesWmOutsourceReceiptDetailServiceImpl implements MesWmOutsourceRec | @@ -31,28 +29,12 @@ public class MesWmOutsourceReceiptDetailServiceImpl implements MesWmOutsourceRec | ||
| 31 | private MesMdItemService itemService; | 29 | private MesMdItemService itemService; |
| 32 | 30 | ||
| 33 | @Resource | 31 | @Resource |
| 34 | - private MesWmWarehouseService warehouseService; | ||
| 35 | - | ||
| 36 | - @Resource | ||
| 37 | - private MesWmWarehouseLocationService locationService; | ||
| 38 | - | ||
| 39 | - @Resource | ||
| 40 | private MesWmWarehouseAreaService areaService; | 32 | private MesWmWarehouseAreaService areaService; |
| 41 | 33 | ||
| 42 | @Override | 34 | @Override |
| 43 | public Long createOutsourceReceiptDetail(MesWmOutsourceReceiptDetailSaveReqVO createReqVO) { | 35 | public Long createOutsourceReceiptDetail(MesWmOutsourceReceiptDetailSaveReqVO createReqVO) { |
| 44 | - // 校验物料存在 | ||
| 45 | - itemService.validateItemExists(createReqVO.getItemId()); | ||
| 46 | - // 校验仓库、库区、库位存在 | ||
| 47 | - if (createReqVO.getWarehouseId() != null) { | ||
| 48 | - warehouseService.validateWarehouseExists(createReqVO.getWarehouseId()); | ||
| 49 | - } | ||
| 50 | - if (createReqVO.getLocationId() != null) { | ||
| 51 | - locationService.validateWarehouseLocationExists(createReqVO.getLocationId()); | ||
| 52 | - } | ||
| 53 | - if (createReqVO.getAreaId() != null) { | ||
| 54 | - areaService.validateWarehouseAreaExists(createReqVO.getAreaId()); | ||
| 55 | - } | 36 | + // 校验数据 |
| 37 | + validateDetailSaveData(createReqVO); | ||
| 56 | 38 | ||
| 57 | // 插入 | 39 | // 插入 |
| 58 | MesWmOutsourceReceiptDetailDO detail = BeanUtils.toBean(createReqVO, MesWmOutsourceReceiptDetailDO.class); | 40 | MesWmOutsourceReceiptDetailDO detail = BeanUtils.toBean(createReqVO, MesWmOutsourceReceiptDetailDO.class); |
| @@ -64,18 +46,8 @@ public class MesWmOutsourceReceiptDetailServiceImpl implements MesWmOutsourceRec | @@ -64,18 +46,8 @@ public class MesWmOutsourceReceiptDetailServiceImpl implements MesWmOutsourceRec | ||
| 64 | public void updateOutsourceReceiptDetail(MesWmOutsourceReceiptDetailSaveReqVO updateReqVO) { | 46 | public void updateOutsourceReceiptDetail(MesWmOutsourceReceiptDetailSaveReqVO updateReqVO) { |
| 65 | // 校验存在 | 47 | // 校验存在 |
| 66 | validateOutsourceReceiptDetailExists(updateReqVO.getId()); | 48 | validateOutsourceReceiptDetailExists(updateReqVO.getId()); |
| 67 | - // 校验物料存在 | ||
| 68 | - itemService.validateItemExists(updateReqVO.getItemId()); | ||
| 69 | - // 校验仓库、库区、库位存在 | ||
| 70 | - if (updateReqVO.getWarehouseId() != null) { | ||
| 71 | - warehouseService.validateWarehouseExists(updateReqVO.getWarehouseId()); | ||
| 72 | - } | ||
| 73 | - if (updateReqVO.getLocationId() != null) { | ||
| 74 | - locationService.validateWarehouseLocationExists(updateReqVO.getLocationId()); | ||
| 75 | - } | ||
| 76 | - if (updateReqVO.getAreaId() != null) { | ||
| 77 | - areaService.validateWarehouseAreaExists(updateReqVO.getAreaId()); | ||
| 78 | - } | 49 | + // 校验数据 |
| 50 | + validateDetailSaveData(updateReqVO); | ||
| 79 | 51 | ||
| 80 | // 更新 | 52 | // 更新 |
| 81 | MesWmOutsourceReceiptDetailDO updateObj = BeanUtils.toBean(updateReqVO, MesWmOutsourceReceiptDetailDO.class); | 53 | MesWmOutsourceReceiptDetailDO updateObj = BeanUtils.toBean(updateReqVO, MesWmOutsourceReceiptDetailDO.class); |
| @@ -115,6 +87,16 @@ public class MesWmOutsourceReceiptDetailServiceImpl implements MesWmOutsourceRec | @@ -115,6 +87,16 @@ public class MesWmOutsourceReceiptDetailServiceImpl implements MesWmOutsourceRec | ||
| 115 | detailMapper.deleteByLineId(lineId); | 87 | detailMapper.deleteByLineId(lineId); |
| 116 | } | 88 | } |
| 117 | 89 | ||
| 90 | + /** | ||
| 91 | + * 校验保存时的关联数据 | ||
| 92 | + */ | ||
| 93 | + private void validateDetailSaveData(MesWmOutsourceReceiptDetailSaveReqVO reqVO) { | ||
| 94 | + // 校验物料存在 | ||
| 95 | + itemService.validateItemExists(reqVO.getItemId()); | ||
| 96 | + // 校验仓库、库区、库位的层级关系 | ||
| 97 | + areaService.validateWarehouseAreaExists(reqVO.getWarehouseId(), reqVO.getLocationId(), reqVO.getAreaId()); | ||
| 98 | + } | ||
| 99 | + | ||
| 118 | private void validateOutsourceReceiptDetailExists(Long id) { | 100 | private void validateOutsourceReceiptDetailExists(Long id) { |
| 119 | if (detailMapper.selectById(id) == null) { | 101 | if (detailMapper.selectById(id) == null) { |
| 120 | throw exception(WM_OUTSOURCE_RECEIPT_DETAIL_NOT_EXISTS); | 102 | throw exception(WM_OUTSOURCE_RECEIPT_DETAIL_NOT_EXISTS); |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineServiceImpl.java
| @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPac | @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPac | ||
| 7 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageLineDO; | 7 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageLineDO; |
| 8 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.packages.MesWmPackageLineMapper; | 8 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.packages.MesWmPackageLineMapper; |
| 9 | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; | 9 | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| 10 | +import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; | ||
| 10 | import jakarta.annotation.Resource; | 11 | import jakarta.annotation.Resource; |
| 11 | import org.springframework.context.annotation.Lazy; | 12 | import org.springframework.context.annotation.Lazy; |
| 12 | import org.springframework.stereotype.Service; | 13 | import org.springframework.stereotype.Service; |
| @@ -33,13 +34,13 @@ public class MesWmPackageLineServiceImpl implements MesWmPackageLineService { | @@ -33,13 +34,13 @@ public class MesWmPackageLineServiceImpl implements MesWmPackageLineService { | ||
| 33 | private MesWmPackageService packageService; | 34 | private MesWmPackageService packageService; |
| 34 | @Resource | 35 | @Resource |
| 35 | private MesMdItemService itemService; | 36 | private MesMdItemService itemService; |
| 37 | + @Resource | ||
| 38 | + private MesProWorkOrderService workOrderService; | ||
| 36 | 39 | ||
| 37 | @Override | 40 | @Override |
| 38 | public Long createPackageLine(MesWmPackageLineSaveReqVO createReqVO) { | 41 | public Long createPackageLine(MesWmPackageLineSaveReqVO createReqVO) { |
| 39 | - // 校验装箱单状态为草稿 | ||
| 40 | - packageService.validatePackageStatusDraft(createReqVO.getPackageId()); | ||
| 41 | - // 校验产品物料存在 | ||
| 42 | - itemService.validateItemExists(createReqVO.getItemId()); | 42 | + // 校验数据 |
| 43 | + validateLineSaveData(createReqVO); | ||
| 43 | 44 | ||
| 44 | // 插入 | 45 | // 插入 |
| 45 | MesWmPackageLineDO line = BeanUtils.toBean(createReqVO, MesWmPackageLineDO.class); | 46 | MesWmPackageLineDO line = BeanUtils.toBean(createReqVO, MesWmPackageLineDO.class); |
| @@ -51,10 +52,9 @@ public class MesWmPackageLineServiceImpl implements MesWmPackageLineService { | @@ -51,10 +52,9 @@ public class MesWmPackageLineServiceImpl implements MesWmPackageLineService { | ||
| 51 | public void updatePackageLine(MesWmPackageLineSaveReqVO updateReqVO) { | 52 | public void updatePackageLine(MesWmPackageLineSaveReqVO updateReqVO) { |
| 52 | // 校验存在 | 53 | // 校验存在 |
| 53 | MesWmPackageLineDO line = validatePackageLineExists(updateReqVO.getId()); | 54 | MesWmPackageLineDO line = validatePackageLineExists(updateReqVO.getId()); |
| 54 | - // 校验装箱单状态为草稿 | ||
| 55 | - packageService.validatePackageStatusDraft(line.getPackageId()); | ||
| 56 | - // 校验产品物料存在 | ||
| 57 | - itemService.validateItemExists(updateReqVO.getItemId()); | 55 | + // 校验数据 |
| 56 | + updateReqVO.setPackageId(line.getPackageId()); | ||
| 57 | + validateLineSaveData(updateReqVO); | ||
| 58 | 58 | ||
| 59 | // 更新 | 59 | // 更新 |
| 60 | MesWmPackageLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmPackageLineDO.class); | 60 | MesWmPackageLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmPackageLineDO.class); |
| @@ -93,6 +93,20 @@ public class MesWmPackageLineServiceImpl implements MesWmPackageLineService { | @@ -93,6 +93,20 @@ public class MesWmPackageLineServiceImpl implements MesWmPackageLineService { | ||
| 93 | 93 | ||
| 94 | // ========== 校验方法 ========== | 94 | // ========== 校验方法 ========== |
| 95 | 95 | ||
| 96 | + /** | ||
| 97 | + * 校验保存时的关联数据 | ||
| 98 | + */ | ||
| 99 | + private void validateLineSaveData(MesWmPackageLineSaveReqVO reqVO) { | ||
| 100 | + // 校验装箱单状态为草稿 | ||
| 101 | + packageService.validatePackageStatusDraft(reqVO.getPackageId()); | ||
| 102 | + // 校验产品物料存在 | ||
| 103 | + itemService.validateItemExists(reqVO.getItemId()); | ||
| 104 | + // 校验工单已确认 | ||
| 105 | + if (reqVO.getWorkOrderId() != null) { | ||
| 106 | + workOrderService.validateWorkOrderConfirmed(reqVO.getWorkOrderId()); | ||
| 107 | + } | ||
| 108 | + } | ||
| 109 | + | ||
| 96 | private MesWmPackageLineDO validatePackageLineExists(Long id) { | 110 | private MesWmPackageLineDO validatePackageLineExists(Long id) { |
| 97 | MesWmPackageLineDO line = packageLineMapper.selectById(id); | 111 | MesWmPackageLineDO line = packageLineMapper.selectById(id); |
| 98 | if (line == null) { | 112 | if (line == null) { |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesLineServiceImpl.java
| @@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnsales.MesWmReturnSalesLine | @@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnsales.MesWmReturnSalesLine | ||
| 12 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum; | 12 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum; |
| 13 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnSalesStatusEnum; | 13 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnSalesStatusEnum; |
| 14 | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; | 14 | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| 15 | +import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService; | ||
| 15 | import jakarta.annotation.Resource; | 16 | import jakarta.annotation.Resource; |
| 16 | import org.springframework.context.annotation.Lazy; | 17 | import org.springframework.context.annotation.Lazy; |
| 17 | import org.springframework.stereotype.Service; | 18 | import org.springframework.stereotype.Service; |
| @@ -43,6 +44,8 @@ public class MesWmReturnSalesLineServiceImpl implements MesWmReturnSalesLineServ | @@ -43,6 +44,8 @@ public class MesWmReturnSalesLineServiceImpl implements MesWmReturnSalesLineServ | ||
| 43 | @Resource | 44 | @Resource |
| 44 | private MesMdItemService itemService; | 45 | private MesMdItemService itemService; |
| 45 | @Resource | 46 | @Resource |
| 47 | + private MesWmBatchService batchService; | ||
| 48 | + @Resource | ||
| 46 | @Lazy | 49 | @Lazy |
| 47 | private MesWmReturnSalesDetailService returnSalesDetailService; | 50 | private MesWmReturnSalesDetailService returnSalesDetailService; |
| 48 | 51 | ||
| @@ -153,6 +156,10 @@ public class MesWmReturnSalesLineServiceImpl implements MesWmReturnSalesLineServ | @@ -153,6 +156,10 @@ public class MesWmReturnSalesLineServiceImpl implements MesWmReturnSalesLineServ | ||
| 153 | if (Boolean.TRUE.equals(item.getBatchFlag()) && batchId == null) { | 156 | if (Boolean.TRUE.equals(item.getBatchFlag()) && batchId == null) { |
| 154 | throw exception(MD_ITEM_BATCH_REQUIRED); | 157 | throw exception(MD_ITEM_BATCH_REQUIRED); |
| 155 | } | 158 | } |
| 159 | + // 校验批次存在且属于当前物料 | ||
| 160 | + if (batchId != null) { | ||
| 161 | + batchService.validateBatchExists(batchId, itemId); | ||
| 162 | + } | ||
| 156 | } | 163 | } |
| 157 | 164 | ||
| 158 | @Override | 165 | @Override |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnvendor/MesWmReturnVendorLineServiceImpl.java
| @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.line.MesW | @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.line.MesW | ||
| 7 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorLineDO; | 7 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorLineDO; |
| 8 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnvendor.MesWmReturnVendorLineMapper; | 8 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnvendor.MesWmReturnVendorLineMapper; |
| 9 | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; | 9 | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| 10 | +import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService; | ||
| 10 | import jakarta.annotation.Resource; | 11 | import jakarta.annotation.Resource; |
| 11 | import org.springframework.context.annotation.Lazy; | 12 | import org.springframework.context.annotation.Lazy; |
| 12 | import org.springframework.stereotype.Service; | 13 | import org.springframework.stereotype.Service; |
| @@ -36,6 +37,8 @@ public class MesWmReturnVendorLineServiceImpl implements MesWmReturnVendorLineSe | @@ -36,6 +37,8 @@ public class MesWmReturnVendorLineServiceImpl implements MesWmReturnVendorLineSe | ||
| 36 | private MesWmReturnVendorDetailService returnVendorDetailService; | 37 | private MesWmReturnVendorDetailService returnVendorDetailService; |
| 37 | @Resource | 38 | @Resource |
| 38 | private MesMdItemService itemService; | 39 | private MesMdItemService itemService; |
| 40 | + @Resource | ||
| 41 | + private MesWmBatchService batchService; | ||
| 39 | 42 | ||
| 40 | @Override | 43 | @Override |
| 41 | public Long createReturnVendorLine(MesWmReturnVendorLineSaveReqVO createReqVO) { | 44 | public Long createReturnVendorLine(MesWmReturnVendorLineSaveReqVO createReqVO) { |
| @@ -108,6 +111,10 @@ public class MesWmReturnVendorLineServiceImpl implements MesWmReturnVendorLineSe | @@ -108,6 +111,10 @@ public class MesWmReturnVendorLineServiceImpl implements MesWmReturnVendorLineSe | ||
| 108 | returnVendorService.validateReturnVendorExistsAndPrepare(reqVO.getReturnId()); | 111 | returnVendorService.validateReturnVendorExistsAndPrepare(reqVO.getReturnId()); |
| 109 | // 校验物料存在 | 112 | // 校验物料存在 |
| 110 | itemService.validateItemExists(reqVO.getItemId()); | 113 | itemService.validateItemExists(reqVO.getItemId()); |
| 114 | + // 校验批次存在且属于当前物料 | ||
| 115 | + if (reqVO.getBatchId() != null) { | ||
| 116 | + batchService.validateBatchExists(reqVO.getBatchId(), reqVO.getItemId()); | ||
| 117 | + } | ||
| 111 | } | 118 | } |
| 112 | 119 | ||
| 113 | } | 120 | } |