Commit 97e55806eaa48b9bf81677729bd27f3d3154141b
1 parent
173b403a
✨ feat(mes): 添加物料接收单状态枚举及相关功能
新增物料接收单的状态枚举,包含草稿、待质检、已完成和待入库状态。 同时更新相关的请求和响应对象,确保在物料接收流程中能够正确处理状态变更。
Showing
9 changed files
with
162 additions
and
59 deletions
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 | } |