Commit 97e55806eaa48b9bf81677729bd27f3d3154141b

Authored by YunaiV
1 parent 173b403a

✨ feat(mes): 添加物料接收单状态枚举及相关功能

新增物料接收单的状态枚举,包含草稿、待质检、已完成和待入库状态。
同时更新相关的请求和响应对象,确保在物料接收流程中能够正确处理状态变更。
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialrequest/MesWmMaterialRequestLineController.java
@@ -102,7 +102,7 @@ public class MesWmMaterialRequestLineController { @@ -102,7 +102,7 @@ public class MesWmMaterialRequestLineController {
102 // 2. 构建结果 102 // 2. 构建结果
103 return BeanUtils.toBean(list, MesWmMaterialRequestLineRespVO.class, vo -> { 103 return BeanUtils.toBean(list, MesWmMaterialRequestLineRespVO.class, vo -> {
104 MapUtils.findAndThen(itemMap, vo.getItemId(), item -> 104 MapUtils.findAndThen(itemMap, vo.getItemId(), item ->
105 - vo.setItemCode(item.getCode()).setSpecification(item.getSpecification())); 105 + vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()));
106 MapUtils.findAndThen(unitMeasureMap, vo.getUnitMeasureId(), unit -> 106 MapUtils.findAndThen(unitMeasureMap, vo.getUnitMeasureId(), unit ->
107 vo.setUnitMeasureName(unit.getName())); 107 vo.setUnitMeasureName(unit.getName()));
108 }); 108 });
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialrequest/vo/line/MesWmMaterialRequestLineSaveReqVO.java
@@ -22,9 +22,6 @@ public class MesWmMaterialRequestLineSaveReqVO { @@ -22,9 +22,6 @@ public class MesWmMaterialRequestLineSaveReqVO {
22 @NotNull(message = "产品物料ID不能为空") 22 @NotNull(message = "产品物料ID不能为空")
23 private Long itemId; 23 private Long itemId;
24 24
25 - @Schema(description = "产品物料名称", example = "PVC 颗粒")  
26 - private String itemName;  
27 -  
28 @Schema(description = "计量单位ID", example = "1") 25 @Schema(description = "计量单位ID", example = "1")
29 private Long unitMeasureId; 26 private Long unitMeasureId;
30 27
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/materialrequest/MesWmMaterialRequestDO.java
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest; @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest;
3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; 3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
4 import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO; 4 import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
5 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; 5 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
  6 +import cn.iocoder.yudao.module.mes.enums.wm.MesWmMaterialRequestStatusEnum;
6 import com.baomidou.mybatisplus.annotation.KeySequence; 7 import com.baomidou.mybatisplus.annotation.KeySequence;
7 import com.baomidou.mybatisplus.annotation.TableId; 8 import com.baomidou.mybatisplus.annotation.TableId;
8 import com.baomidou.mybatisplus.annotation.TableName; 9 import com.baomidou.mybatisplus.annotation.TableName;
@@ -58,12 +59,10 @@ public class MesWmMaterialRequestDO extends BaseDO { @@ -58,12 +59,10 @@ public class MesWmMaterialRequestDO extends BaseDO {
58 * 完成时间 59 * 完成时间
59 */ 60 */
60 private LocalDateTime endTime; 61 private LocalDateTime endTime;
61 - // TODO @AI:枚举类;  
62 - // TODO @AI:字典;  
63 /** 62 /**
64 * 状态 63 * 状态
65 * 64 *
66 - * 0=草稿 1=备料中 2=待领料 3=已完成 4=已取消 65 + * 枚举 {@link MesWmMaterialRequestStatusEnum}
67 */ 66 */
68 private Integer status; 67 private Integer status;
69 /** 68 /**
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/materialrequest/MesWmMaterialRequestLineDO.java
@@ -40,11 +40,6 @@ public class MesWmMaterialRequestLineDO extends BaseDO { @@ -40,11 +40,6 @@ public class MesWmMaterialRequestLineDO extends BaseDO {
40 * 关联 {@link MesMdItemDO#getId()} 40 * 关联 {@link MesMdItemDO#getId()}
41 */ 41 */
42 private Long itemId; 42 private Long itemId;
43 - // TODO @AI:不用快照,读取就好了。  
44 - /**  
45 - * 产品物料名称(快照)  
46 - */  
47 - private String itemName;  
48 /** 43 /**
49 * 计量单位ID 44 * 计量单位ID
50 * 45 *
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmMaterialRequestStatusEnum.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.enums.wm;
  2 +
  3 +import cn.iocoder.yudao.framework.common.core.ArrayValuable;
  4 +import lombok.AllArgsConstructor;
  5 +import lombok.Getter;
  6 +
  7 +import java.util.Arrays;
  8 +
  9 +/**
  10 + * MES 领料申请单状态枚举
  11 + *
  12 + * @author 芋道源码
  13 + */
  14 +@Getter
  15 +@AllArgsConstructor
  16 +public enum MesWmMaterialRequestStatusEnum implements ArrayValuable<Integer> {
  17 +
  18 + PREPARE(0, "草稿"),
  19 + PREPARING(1, "备料中"),
  20 + WAITING(2, "待领料"),
  21 + FINISHED(3, "已完成"),
  22 + CANCELED(4, "已取消");
  23 +
  24 + public static final Integer[] ARRAYS = Arrays.stream(values()).map(MesWmMaterialRequestStatusEnum::getStatus).toArray(Integer[]::new);
  25 +
  26 + /**
  27 + * 状态值
  28 + */
  29 + private final Integer status;
  30 + /**
  31 + * 状态名
  32 + */
  33 + private final String name;
  34 +
  35 + @Override
  36 + public Integer[] array() {
  37 + return ARRAYS;
  38 + }
  39 +
  40 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialrequest/MesWmMaterialRequestLineService.java
@@ -6,6 +6,8 @@ import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.line.M @@ -6,6 +6,8 @@ import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.line.M
6 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest.MesWmMaterialRequestLineDO; 6 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest.MesWmMaterialRequestLineDO;
7 import jakarta.validation.Valid; 7 import jakarta.validation.Valid;
8 8
  9 +import java.util.List;
  10 +
9 /** 11 /**
10 * MES 领料申请单行 Service 接口 12 * MES 领料申请单行 Service 接口
11 */ 13 */
@@ -49,4 +51,19 @@ public interface MesWmMaterialRequestLineService { @@ -49,4 +51,19 @@ public interface MesWmMaterialRequestLineService {
49 */ 51 */
50 PageResult<MesWmMaterialRequestLineDO> getMaterialRequestLinePage(MesWmMaterialRequestLinePageReqVO pageReqVO); 52 PageResult<MesWmMaterialRequestLineDO> getMaterialRequestLinePage(MesWmMaterialRequestLinePageReqVO pageReqVO);
51 53
  54 + /**
  55 + * 获得指定领料申请单的所有行
  56 + *
  57 + * @param materialRequestId 领料申请单编号
  58 + * @return 领料申请单行列表
  59 + */
  60 + List<MesWmMaterialRequestLineDO> getMaterialRequestLineListByMaterialRequestId(Long materialRequestId);
  61 +
  62 + /**
  63 + * 根据领料申请单编号,删除所有行
  64 + *
  65 + * @param materialRequestId 领料申请单编号
  66 + */
  67 + void deleteMaterialRequestLineByMaterialRequestId(Long materialRequestId);
  68 +
52 } 69 }
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialrequest/MesWmMaterialRequestLineServiceImpl.java
1 package cn.iocoder.yudao.module.mes.service.wm.materialrequest; 1 package cn.iocoder.yudao.module.mes.service.wm.materialrequest;
2 2
  3 +import cn.hutool.core.util.ObjUtil;
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 5 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.line.MesWmMaterialRequestLinePageReqVO; 6 import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.line.MesWmMaterialRequestLinePageReqVO;
6 import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.line.MesWmMaterialRequestLineSaveReqVO; 7 import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.line.MesWmMaterialRequestLineSaveReqVO;
  8 +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest.MesWmMaterialRequestDO;
7 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest.MesWmMaterialRequestLineDO; 9 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest.MesWmMaterialRequestLineDO;
8 import cn.iocoder.yudao.module.mes.dal.mysql.wm.materialrequest.MesWmMaterialRequestLineMapper; 10 import cn.iocoder.yudao.module.mes.dal.mysql.wm.materialrequest.MesWmMaterialRequestLineMapper;
  11 +import cn.iocoder.yudao.module.mes.enums.wm.MesWmMaterialRequestStatusEnum;
9 import jakarta.annotation.Resource; 12 import jakarta.annotation.Resource;
  13 +import org.springframework.context.annotation.Lazy;
10 import org.springframework.stereotype.Service; 14 import org.springframework.stereotype.Service;
11 import org.springframework.validation.annotation.Validated; 15 import org.springframework.validation.annotation.Validated;
12 16
  17 +import java.util.List;
  18 +
13 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 19 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
14 -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_MATERIAL_REQUEST_LINE_NOT_EXISTS; 20 +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
15 21
16 /** 22 /**
17 * MES 领料申请单行 Service 实现类 23 * MES 领料申请单行 Service 实现类
@@ -23,9 +29,14 @@ public class MesWmMaterialRequestLineServiceImpl implements MesWmMaterialRequest @@ -23,9 +29,14 @@ public class MesWmMaterialRequestLineServiceImpl implements MesWmMaterialRequest
23 @Resource 29 @Resource
24 private MesWmMaterialRequestLineMapper materialRequestLineMapper; 30 private MesWmMaterialRequestLineMapper materialRequestLineMapper;
25 31
  32 + @Resource
  33 + @Lazy
  34 + private MesWmMaterialRequestService materialRequestService;
  35 +
26 @Override 36 @Override
27 public Long createMaterialRequestLine(MesWmMaterialRequestLineSaveReqVO createReqVO) { 37 public Long createMaterialRequestLine(MesWmMaterialRequestLineSaveReqVO createReqVO) {
28 - // TODO @AI:校验关联字段 38 + // 校验父单据存在且为草稿状态
  39 + validateMaterialRequestStatusDraft(createReqVO.getMaterialRequestId());
29 40
30 // 插入 41 // 插入
31 MesWmMaterialRequestLineDO line = BeanUtils.toBean(createReqVO, MesWmMaterialRequestLineDO.class); 42 MesWmMaterialRequestLineDO line = BeanUtils.toBean(createReqVO, MesWmMaterialRequestLineDO.class);
@@ -35,9 +46,10 @@ public class MesWmMaterialRequestLineServiceImpl implements MesWmMaterialRequest @@ -35,9 +46,10 @@ public class MesWmMaterialRequestLineServiceImpl implements MesWmMaterialRequest
35 46
36 @Override 47 @Override
37 public void updateMaterialRequestLine(MesWmMaterialRequestLineSaveReqVO updateReqVO) { 48 public void updateMaterialRequestLine(MesWmMaterialRequestLineSaveReqVO updateReqVO) {
38 - // 验证是否存在  
39 - validateMaterialRequestLineExists(updateReqVO.getId());  
40 - // TODO @AI:校验关联字段 49 + // 校验存在
  50 + MesWmMaterialRequestLineDO line = validateMaterialRequestLineExists(updateReqVO.getId());
  51 + // 校验父单据存在且为草稿状态
  52 + validateMaterialRequestStatusDraft(line.getMaterialRequestId());
41 53
42 // 更新 54 // 更新
43 MesWmMaterialRequestLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmMaterialRequestLineDO.class); 55 MesWmMaterialRequestLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmMaterialRequestLineDO.class);
@@ -46,7 +58,7 @@ public class MesWmMaterialRequestLineServiceImpl implements MesWmMaterialRequest @@ -46,7 +58,7 @@ public class MesWmMaterialRequestLineServiceImpl implements MesWmMaterialRequest
46 58
47 @Override 59 @Override
48 public void deleteMaterialRequestLine(Long id) { 60 public void deleteMaterialRequestLine(Long id) {
49 - // 验证是否存在 61 + // 校验存在
50 validateMaterialRequestLineExists(id); 62 validateMaterialRequestLineExists(id);
51 // 删除 63 // 删除
52 materialRequestLineMapper.deleteById(id); 64 materialRequestLineMapper.deleteById(id);
@@ -62,6 +74,16 @@ public class MesWmMaterialRequestLineServiceImpl implements MesWmMaterialRequest @@ -62,6 +74,16 @@ public class MesWmMaterialRequestLineServiceImpl implements MesWmMaterialRequest
62 return materialRequestLineMapper.selectPage(pageReqVO); 74 return materialRequestLineMapper.selectPage(pageReqVO);
63 } 75 }
64 76
  77 + @Override
  78 + public List<MesWmMaterialRequestLineDO> getMaterialRequestLineListByMaterialRequestId(Long materialRequestId) {
  79 + return materialRequestLineMapper.selectListByMaterialRequestId(materialRequestId);
  80 + }
  81 +
  82 + @Override
  83 + public void deleteMaterialRequestLineByMaterialRequestId(Long materialRequestId) {
  84 + materialRequestLineMapper.deleteByMaterialRequestId(materialRequestId);
  85 + }
  86 +
65 private MesWmMaterialRequestLineDO validateMaterialRequestLineExists(Long id) { 87 private MesWmMaterialRequestLineDO validateMaterialRequestLineExists(Long id) {
66 MesWmMaterialRequestLineDO line = materialRequestLineMapper.selectById(id); 88 MesWmMaterialRequestLineDO line = materialRequestLineMapper.selectById(id);
67 if (line == null) { 89 if (line == null) {
@@ -70,4 +92,18 @@ public class MesWmMaterialRequestLineServiceImpl implements MesWmMaterialRequest @@ -70,4 +92,18 @@ public class MesWmMaterialRequestLineServiceImpl implements MesWmMaterialRequest
70 return line; 92 return line;
71 } 93 }
72 94
  95 + /**
  96 + * 校验父领料申请单存在且为草稿状态
  97 + */
  98 + private void validateMaterialRequestStatusDraft(Long materialRequestId) {
  99 + // TODO @AI:对方提供下接口,更聚焦一点!
  100 + MesWmMaterialRequestDO materialRequest = materialRequestService.getMaterialRequest(materialRequestId);
  101 + if (materialRequest == null) {
  102 + throw exception(WM_MATERIAL_REQUEST_NOT_EXISTS);
  103 + }
  104 + if (ObjUtil.notEqual(MesWmMaterialRequestStatusEnum.PREPARE.getStatus(), materialRequest.getStatus())) {
  105 + throw exception(WM_MATERIAL_REQUEST_STATUS_INVALID);
  106 + }
  107 + }
  108 +
73 } 109 }
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialrequest/MesWmMaterialRequestService.java
@@ -55,32 +55,29 @@ public interface MesWmMaterialRequestService { @@ -55,32 +55,29 @@ public interface MesWmMaterialRequestService {
55 */ 55 */
56 PageResult<MesWmMaterialRequestDO> getMaterialRequestPage(MesWmMaterialRequestPageReqVO pageReqVO); 56 PageResult<MesWmMaterialRequestDO> getMaterialRequestPage(MesWmMaterialRequestPageReqVO pageReqVO);
57 57
58 - // TODO @AI:不用 0、1 这种状态,只写中文就行  
59 /** 58 /**
60 - * 提交领料申请单(0=草稿 → 1=备料中) 59 + * 提交领料申请单(草稿 → 备料中)
61 * 60 *
62 * @param id 编号 61 * @param id 编号
63 */ 62 */
64 void submitMaterialRequest(Long id); 63 void submitMaterialRequest(Long id);
65 64
66 - // TODO @AI:不用 0、1 这种状态,只写中文就行  
67 /** 65 /**
68 - * 审批领料申请单(1=备料中 → 2=待领料) 66 + * 审批领料申请单(备料中 → 待领料)
69 * 67 *
70 * @param id 编号 68 * @param id 编号
71 */ 69 */
72 void approveMaterialRequest(Long id); 70 void approveMaterialRequest(Long id);
73 71
74 - // TODO @AI:不用 0、1 这种状态,只写中文就行  
75 /** 72 /**
76 - * 完成领料申请单(2=待领料 → 3=已完成),内部调用 73 + * 完成领料申请单(待领料 → 已完成),内部调用
77 * 74 *
78 * @param id 编号 75 * @param id 编号
79 */ 76 */
80 void finishMaterialRequest(Long id); 77 void finishMaterialRequest(Long id);
81 78
82 /** 79 /**
83 - * 取消领料申请单(非已完成 → 4=已取消) 80 + * 取消领料申请单(非已完成 → 已取消)
84 * 81 *
85 * @param id 编号 82 * @param id 编号
86 */ 83 */
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialrequest/MesWmMaterialRequestServiceImpl.java
1 package cn.iocoder.yudao.module.mes.service.wm.materialrequest; 1 package cn.iocoder.yudao.module.mes.service.wm.materialrequest;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
  4 +import cn.hutool.core.util.ObjUtil;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 6 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
6 import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.MesWmMaterialRequestPageReqVO; 7 import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.MesWmMaterialRequestPageReqVO;
7 import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.MesWmMaterialRequestSaveReqVO; 8 import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.MesWmMaterialRequestSaveReqVO;
8 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest.MesWmMaterialRequestDO; 9 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest.MesWmMaterialRequestDO;
9 -import cn.iocoder.yudao.module.mes.dal.mysql.wm.materialrequest.MesWmMaterialRequestLineMapper;  
10 import cn.iocoder.yudao.module.mes.dal.mysql.wm.materialrequest.MesWmMaterialRequestMapper; 10 import cn.iocoder.yudao.module.mes.dal.mysql.wm.materialrequest.MesWmMaterialRequestMapper;
  11 +import cn.iocoder.yudao.module.mes.enums.wm.MesWmMaterialRequestStatusEnum;
11 import jakarta.annotation.Resource; 12 import jakarta.annotation.Resource;
12 import org.springframework.stereotype.Service; 13 import org.springframework.stereotype.Service;
13 import org.springframework.transaction.annotation.Transactional; 14 import org.springframework.transaction.annotation.Transactional;
@@ -20,7 +21,6 @@ import java.util.List; @@ -20,7 +21,6 @@ import java.util.List;
20 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 21 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
21 import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; 22 import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
22 23
23 -// TODO @AI:参考 /Users/yunai/Java/yudao-all-in-one/ruoyi-vue-pro/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java 风格,优化代码;  
24 /** 24 /**
25 * MES 领料申请单 Service 实现类 25 * MES 领料申请单 Service 实现类
26 */ 26 */
@@ -32,24 +32,26 @@ public class MesWmMaterialRequestServiceImpl implements MesWmMaterialRequestServ @@ -32,24 +32,26 @@ public class MesWmMaterialRequestServiceImpl implements MesWmMaterialRequestServ
32 private MesWmMaterialRequestMapper materialRequestMapper; 32 private MesWmMaterialRequestMapper materialRequestMapper;
33 33
34 @Resource 34 @Resource
35 - private MesWmMaterialRequestLineMapper materialRequestLineMapper; 35 + private MesWmMaterialRequestLineService materialRequestLineService;
36 36
37 @Override 37 @Override
38 public Long createMaterialRequest(MesWmMaterialRequestSaveReqVO createReqVO) { 38 public Long createMaterialRequest(MesWmMaterialRequestSaveReqVO createReqVO) {
  39 + // TODO @AI:校验关联数据;
  40 +
  41 + // 2. 插入
39 MesWmMaterialRequestDO materialRequest = BeanUtils.toBean(createReqVO, MesWmMaterialRequestDO.class); 42 MesWmMaterialRequestDO materialRequest = BeanUtils.toBean(createReqVO, MesWmMaterialRequestDO.class);
40 - materialRequest.setStatus(0); // 草稿 43 + materialRequest.setStatus(MesWmMaterialRequestStatusEnum.PREPARE.getStatus());
41 materialRequestMapper.insert(materialRequest); 44 materialRequestMapper.insert(materialRequest);
42 return materialRequest.getId(); 45 return materialRequest.getId();
43 } 46 }
44 47
45 @Override 48 @Override
46 public void updateMaterialRequest(MesWmMaterialRequestSaveReqVO updateReqVO) { 49 public void updateMaterialRequest(MesWmMaterialRequestSaveReqVO updateReqVO) {
47 - // 校验存在  
48 - MesWmMaterialRequestDO materialRequest = validateMaterialRequestExists(updateReqVO.getId());  
49 - // 只有草稿状态才允许修改  
50 - if (!materialRequest.getStatus().equals(0)) {  
51 - throw exception(WM_MATERIAL_REQUEST_STATUS_INVALID);  
52 - } 50 + // 1. 校验存在 + 草稿状态
  51 + validateMaterialRequestExistsAndDraft(updateReqVO.getId());
  52 + // TODO @AI:校验关联数据;
  53 +
  54 + // 2. 更新
53 MesWmMaterialRequestDO updateObj = BeanUtils.toBean(updateReqVO, MesWmMaterialRequestDO.class); 55 MesWmMaterialRequestDO updateObj = BeanUtils.toBean(updateReqVO, MesWmMaterialRequestDO.class);
54 materialRequestMapper.updateById(updateObj); 56 materialRequestMapper.updateById(updateObj);
55 } 57 }
@@ -57,15 +59,12 @@ public class MesWmMaterialRequestServiceImpl implements MesWmMaterialRequestServ @@ -57,15 +59,12 @@ public class MesWmMaterialRequestServiceImpl implements MesWmMaterialRequestServ
57 @Override 59 @Override
58 @Transactional(rollbackFor = Exception.class) 60 @Transactional(rollbackFor = Exception.class)
59 public void deleteMaterialRequest(Long id) { 61 public void deleteMaterialRequest(Long id) {
60 - // 校验存在  
61 - MesWmMaterialRequestDO materialRequest = validateMaterialRequestExists(id);  
62 - // 只有草稿状态才允许删除  
63 - if (!materialRequest.getStatus().equals(0)) {  
64 - throw exception(WM_MATERIAL_REQUEST_STATUS_INVALID);  
65 - }  
66 - // 级联删除行  
67 - materialRequestLineMapper.deleteByMaterialRequestId(id);  
68 - // 删除 62 + // 1. 校验存在 + 草稿状态
  63 + validateMaterialRequestExistsAndDraft(id);
  64 +
  65 + // 2.1 级联删除行
  66 + materialRequestLineService.deleteMaterialRequestLineByMaterialRequestId(id);
  67 + // 2.2 删除
69 materialRequestMapper.deleteById(id); 68 materialRequestMapper.deleteById(id);
70 } 69 }
71 70
@@ -81,42 +80,54 @@ public class MesWmMaterialRequestServiceImpl implements MesWmMaterialRequestServ @@ -81,42 +80,54 @@ public class MesWmMaterialRequestServiceImpl implements MesWmMaterialRequestServ
81 80
82 @Override 81 @Override
83 public void submitMaterialRequest(Long id) { 82 public void submitMaterialRequest(Long id) {
84 - MesWmMaterialRequestDO materialRequest = validateMaterialRequestExists(id);  
85 - // 0=草稿 → 1=备料中  
86 - if (!materialRequest.getStatus().equals(0)) {  
87 - throw exception(WM_MATERIAL_REQUEST_STATUS_INVALID);  
88 - }  
89 - materialRequestMapper.updateById(new MesWmMaterialRequestDO().setId(id).setStatus(1)); 83 + // 1. 校验存在 + 草稿状态
  84 + validateMaterialRequestExistsAndDraft(id);
  85 +
  86 + // 2. 草稿 → 备料中
  87 + materialRequestMapper.updateById(new MesWmMaterialRequestDO()
  88 + .setId(id).setStatus(MesWmMaterialRequestStatusEnum.PREPARING.getStatus()));
90 } 89 }
91 90
92 @Override 91 @Override
93 public void approveMaterialRequest(Long id) { 92 public void approveMaterialRequest(Long id) {
  93 + // 1.1 校验存在
94 MesWmMaterialRequestDO materialRequest = validateMaterialRequestExists(id); 94 MesWmMaterialRequestDO materialRequest = validateMaterialRequestExists(id);
95 - // 1=备料中 → 2=待领料  
96 - if (!materialRequest.getStatus().equals(1)) { 95 + // 1.2 校验状态:只有备料中才允许审批
  96 + if (ObjUtil.notEqual(MesWmMaterialRequestStatusEnum.PREPARING.getStatus(), materialRequest.getStatus())) {
97 throw exception(WM_MATERIAL_REQUEST_STATUS_INVALID); 97 throw exception(WM_MATERIAL_REQUEST_STATUS_INVALID);
98 } 98 }
99 - materialRequestMapper.updateById(new MesWmMaterialRequestDO().setId(id).setStatus(2)); 99 +
  100 + // 2. 备料中 → 待领料
  101 + materialRequestMapper.updateById(new MesWmMaterialRequestDO()
  102 + .setId(id).setStatus(MesWmMaterialRequestStatusEnum.WAITING.getStatus()));
100 } 103 }
101 104
102 @Override 105 @Override
103 public void finishMaterialRequest(Long id) { 106 public void finishMaterialRequest(Long id) {
  107 + // 1.1 校验存在
104 MesWmMaterialRequestDO materialRequest = validateMaterialRequestExists(id); 108 MesWmMaterialRequestDO materialRequest = validateMaterialRequestExists(id);
105 - // 2=待领料 → 3=已完成  
106 - if (!materialRequest.getStatus().equals(2)) { 109 + // 1.2 校验状态:只有待领料才允许完成
  110 + if (ObjUtil.notEqual(MesWmMaterialRequestStatusEnum.WAITING.getStatus(), materialRequest.getStatus())) {
107 throw exception(WM_MATERIAL_REQUEST_STATUS_INVALID); 111 throw exception(WM_MATERIAL_REQUEST_STATUS_INVALID);
108 } 112 }
109 - materialRequestMapper.updateById(new MesWmMaterialRequestDO().setId(id).setStatus(3)); 113 +
  114 + // 2. 待领料 → 已完成
  115 + materialRequestMapper.updateById(new MesWmMaterialRequestDO()
  116 + .setId(id).setStatus(MesWmMaterialRequestStatusEnum.FINISHED.getStatus()));
110 } 117 }
111 118
112 @Override 119 @Override
113 public void cancelMaterialRequest(Long id) { 120 public void cancelMaterialRequest(Long id) {
  121 + // 1.1 校验存在
114 MesWmMaterialRequestDO materialRequest = validateMaterialRequestExists(id); 122 MesWmMaterialRequestDO materialRequest = validateMaterialRequestExists(id);
115 - // 已完成不可取消  
116 - if (materialRequest.getStatus().equals(3)) { 123 + // 1.2 已完成不可取消
  124 + if (ObjUtil.equal(MesWmMaterialRequestStatusEnum.FINISHED.getStatus(), materialRequest.getStatus())) {
117 throw exception(WM_MATERIAL_REQUEST_STATUS_INVALID); 125 throw exception(WM_MATERIAL_REQUEST_STATUS_INVALID);
118 } 126 }
119 - materialRequestMapper.updateById(new MesWmMaterialRequestDO().setId(id).setStatus(4)); 127 +
  128 + // 2. 非已完成 → 已取消
  129 + materialRequestMapper.updateById(new MesWmMaterialRequestDO()
  130 + .setId(id).setStatus(MesWmMaterialRequestStatusEnum.CANCELED.getStatus()));
120 } 131 }
121 132
122 @Override 133 @Override
@@ -135,4 +146,15 @@ public class MesWmMaterialRequestServiceImpl implements MesWmMaterialRequestServ @@ -135,4 +146,15 @@ public class MesWmMaterialRequestServiceImpl implements MesWmMaterialRequestServ
135 return materialRequest; 146 return materialRequest;
136 } 147 }
137 148
  149 + /**
  150 + * 校验领料申请单存在且为草稿状态
  151 + */
  152 + private MesWmMaterialRequestDO validateMaterialRequestExistsAndDraft(Long id) {
  153 + MesWmMaterialRequestDO materialRequest = validateMaterialRequestExists(id);
  154 + if (ObjUtil.notEqual(MesWmMaterialRequestStatusEnum.PREPARE.getStatus(), materialRequest.getStatus())) {
  155 + throw exception(WM_MATERIAL_REQUEST_STATUS_INVALID);
  156 + }
  157 + return materialRequest;
  158 + }
  159 +
138 } 160 }