Commit a6c58825ec7334d4dc60ece70d5100bfd1c7bad4

Authored by YunaiV
1 parent 80f7f51c

✨ feat(mes): 移除多余的 material request

Showing 17 changed files with 0 additions and 1197 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialrequest/MesWmMaterialRequestController.java deleted
1   -package cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest;
2   -
3   -import cn.hutool.core.collection.CollUtil;
4   -import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
5   -import cn.iocoder.yudao.framework.common.pojo.CommonResult;
6   -import cn.iocoder.yudao.framework.common.pojo.PageParam;
7   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
8   -import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
9   -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
10   -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.MesWmMaterialRequestPageReqVO;
11   -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.MesWmMaterialRequestRespVO;
12   -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.MesWmMaterialRequestSaveReqVO;
13   -import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
14   -import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
15   -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest.MesWmMaterialRequestDO;
16   -import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService;
17   -import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
18   -import cn.iocoder.yudao.module.mes.service.wm.materialrequest.MesWmMaterialRequestService;
19   -import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
20   -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
21   -import io.swagger.v3.oas.annotations.Operation;
22   -import io.swagger.v3.oas.annotations.Parameter;
23   -import io.swagger.v3.oas.annotations.tags.Tag;
24   -import jakarta.annotation.Resource;
25   -import jakarta.servlet.http.HttpServletResponse;
26   -import jakarta.validation.Valid;
27   -import org.springframework.security.access.prepost.PreAuthorize;
28   -import org.springframework.validation.annotation.Validated;
29   -import org.springframework.web.bind.annotation.*;
30   -
31   -import java.io.IOException;
32   -import java.util.Collections;
33   -import java.util.List;
34   -import java.util.Map;
35   -
36   -import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
37   -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
38   -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
39   -import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
40   -
41   -@Tag(name = "管理后台 - MES 领料申请单")
42   -@RestController
43   -@RequestMapping("/mes/wm/material-request")
44   -@Validated
45   -public class MesWmMaterialRequestController {
46   -
47   - @Resource
48   - private MesWmMaterialRequestService materialRequestService;
49   - @Resource
50   - private MesMdWorkstationService workstationService;
51   - @Resource
52   - private MesProWorkOrderService workOrderService;
53   - @Resource
54   - private AdminUserApi adminUserApi;
55   -
56   - @PostMapping("/create")
57   - @Operation(summary = "创建领料申请单")
58   - @PreAuthorize("@ss.hasPermission('mes:wm-material-request:create')")
59   - public CommonResult<Long> createMaterialRequest(@Valid @RequestBody MesWmMaterialRequestSaveReqVO createReqVO) {
60   - return success(materialRequestService.createMaterialRequest(createReqVO));
61   - }
62   -
63   - @PutMapping("/update")
64   - @Operation(summary = "修改领料申请单")
65   - @PreAuthorize("@ss.hasPermission('mes:wm-material-request:update')")
66   - public CommonResult<Boolean> updateMaterialRequest(@Valid @RequestBody MesWmMaterialRequestSaveReqVO updateReqVO) {
67   - materialRequestService.updateMaterialRequest(updateReqVO);
68   - return success(true);
69   - }
70   -
71   - @DeleteMapping("/delete")
72   - @Operation(summary = "删除领料申请单")
73   - @Parameter(name = "id", description = "编号", required = true)
74   - @PreAuthorize("@ss.hasPermission('mes:wm-material-request:delete')")
75   - public CommonResult<Boolean> deleteMaterialRequest(@RequestParam("id") Long id) {
76   - materialRequestService.deleteMaterialRequest(id);
77   - return success(true);
78   - }
79   -
80   - @GetMapping("/get")
81   - @Operation(summary = "获得领料申请单")
82   - @Parameter(name = "id", description = "编号", required = true, example = "1024")
83   - @PreAuthorize("@ss.hasPermission('mes:wm-material-request:query')")
84   - public CommonResult<MesWmMaterialRequestRespVO> getMaterialRequest(@RequestParam("id") Long id) {
85   - MesWmMaterialRequestDO materialRequest = materialRequestService.getMaterialRequest(id);
86   - if (materialRequest == null) {
87   - return success(null);
88   - }
89   - return success(buildRespVOList(Collections.singletonList(materialRequest)).get(0));
90   - }
91   -
92   - @GetMapping("/page")
93   - @Operation(summary = "获得领料申请单分页")
94   - @PreAuthorize("@ss.hasPermission('mes:wm-material-request:query')")
95   - public CommonResult<PageResult<MesWmMaterialRequestRespVO>> getMaterialRequestPage(
96   - @Valid MesWmMaterialRequestPageReqVO pageReqVO) {
97   - PageResult<MesWmMaterialRequestDO> pageResult = materialRequestService.getMaterialRequestPage(pageReqVO);
98   - return success(new PageResult<>(buildRespVOList(pageResult.getList()), pageResult.getTotal()));
99   - }
100   -
101   - @GetMapping("/export-excel")
102   - @Operation(summary = "导出领料申请单 Excel")
103   - @PreAuthorize("@ss.hasPermission('mes:wm-material-request:export')")
104   - @ApiAccessLog(operateType = EXPORT)
105   - public void exportMaterialRequestExcel(@Valid MesWmMaterialRequestPageReqVO pageReqVO,
106   - HttpServletResponse response) throws IOException {
107   - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
108   - PageResult<MesWmMaterialRequestDO> pageResult = materialRequestService.getMaterialRequestPage(pageReqVO);
109   - ExcelUtils.write(response, "领料申请单.xls", "数据", MesWmMaterialRequestRespVO.class,
110   - buildRespVOList(pageResult.getList()));
111   - }
112   -
113   - @PutMapping("/submit")
114   - @Operation(summary = "提交领料申请单")
115   - @Parameter(name = "id", description = "编号", required = true)
116   - @PreAuthorize("@ss.hasPermission('mes:wm-material-request:update')")
117   - public CommonResult<Boolean> submitMaterialRequest(@RequestParam("id") Long id) {
118   - materialRequestService.submitMaterialRequest(id);
119   - return success(true);
120   - }
121   -
122   - @PutMapping("/approve")
123   - @Operation(summary = "审批领料申请单(开始备料)")
124   - @Parameter(name = "id", description = "编号", required = true)
125   - @PreAuthorize("@ss.hasPermission('mes:wm-material-request:update')")
126   - public CommonResult<Boolean> approveMaterialRequest(@RequestParam("id") Long id) {
127   - materialRequestService.approveMaterialRequest(id);
128   - return success(true);
129   - }
130   -
131   - @PutMapping("/finish")
132   - @Operation(summary = "完成领料申请单")
133   - @Parameter(name = "id", description = "编号", required = true)
134   - @PreAuthorize("@ss.hasPermission('mes:wm-material-request:update')")
135   - public CommonResult<Boolean> finishMaterialRequest(@RequestParam("id") Long id) {
136   - materialRequestService.finishMaterialRequest(id);
137   - return success(true);
138   - }
139   -
140   - @PutMapping("/cancel")
141   - @Operation(summary = "取消领料申请单")
142   - @Parameter(name = "id", description = "编号", required = true)
143   - @PreAuthorize("@ss.hasPermission('mes:wm-material-request:update')")
144   - public CommonResult<Boolean> cancelMaterialRequest(@RequestParam("id") Long id) {
145   - materialRequestService.cancelMaterialRequest(id);
146   - return success(true);
147   - }
148   -
149   - // ==================== 拼接 VO ====================
150   -
151   - private List<MesWmMaterialRequestRespVO> buildRespVOList(List<MesWmMaterialRequestDO> list) {
152   - if (CollUtil.isEmpty(list)) {
153   - return Collections.emptyList();
154   - }
155   - // 1. 获得关联数据
156   - Map<Long, MesMdWorkstationDO> workstationMap = workstationService.getWorkstationMap(
157   - convertSet(list, MesWmMaterialRequestDO::getWorkstationId));
158   - Map<Long, MesProWorkOrderDO> workOrderMap = workOrderService.getWorkOrderMap(
159   - convertSet(list, MesWmMaterialRequestDO::getWorkOrderId));
160   - Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
161   - convertSet(list, MesWmMaterialRequestDO::getUserId));
162   - // 2. 构建结果
163   - return BeanUtils.toBean(list, MesWmMaterialRequestRespVO.class, vo -> {
164   - findAndThen(workstationMap, vo.getWorkstationId(), ws ->
165   - vo.setWorkstationCode(ws.getCode()).setWorkstationName(ws.getName()));
166   - findAndThen(workOrderMap, vo.getWorkOrderId(), wo ->
167   - vo.setWorkOrderCode(wo.getCode()));
168   - findAndThen(userMap, vo.getUserId(), user ->
169   - vo.setUserNickname(user.getNickname()));
170   - });
171   - }
172   -
173   -}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialrequest/MesWmMaterialRequestLineController.java deleted
1   -package cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest;
2   -
3   -import cn.hutool.core.collection.CollUtil;
4   -import cn.iocoder.yudao.framework.common.pojo.CommonResult;
5   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
6   -import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
7   -import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
8   -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.line.MesWmMaterialRequestLinePageReqVO;
9   -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.line.MesWmMaterialRequestLineRespVO;
10   -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.line.MesWmMaterialRequestLineSaveReqVO;
11   -import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
12   -import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
13   -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest.MesWmMaterialRequestLineDO;
14   -import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
15   -import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
16   -import cn.iocoder.yudao.module.mes.service.wm.materialrequest.MesWmMaterialRequestLineService;
17   -import io.swagger.v3.oas.annotations.Operation;
18   -import io.swagger.v3.oas.annotations.Parameter;
19   -import io.swagger.v3.oas.annotations.tags.Tag;
20   -import jakarta.annotation.Resource;
21   -import jakarta.validation.Valid;
22   -import org.springframework.security.access.prepost.PreAuthorize;
23   -import org.springframework.validation.annotation.Validated;
24   -import org.springframework.web.bind.annotation.*;
25   -
26   -import java.util.Collections;
27   -import java.util.List;
28   -import java.util.Map;
29   -
30   -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
31   -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
32   -
33   -@Tag(name = "管理后台 - MES 领料申请单行")
34   -@RestController
35   -@RequestMapping("/mes/wm/material-request-line")
36   -@Validated
37   -public class MesWmMaterialRequestLineController {
38   -
39   - @Resource
40   - private MesWmMaterialRequestLineService materialRequestLineService;
41   - @Resource
42   - private MesMdItemService itemService;
43   - @Resource
44   - private MesMdUnitMeasureService unitMeasureService;
45   -
46   - @PostMapping("/create")
47   - @Operation(summary = "创建领料申请单行")
48   - @PreAuthorize("@ss.hasPermission('mes:wm-material-request:create')")
49   - public CommonResult<Long> createMaterialRequestLine(@Valid @RequestBody MesWmMaterialRequestLineSaveReqVO createReqVO) {
50   - return success(materialRequestLineService.createMaterialRequestLine(createReqVO));
51   - }
52   -
53   - @PutMapping("/update")
54   - @Operation(summary = "修改领料申请单行")
55   - @PreAuthorize("@ss.hasPermission('mes:wm-material-request:update')")
56   - public CommonResult<Boolean> updateMaterialRequestLine(@Valid @RequestBody MesWmMaterialRequestLineSaveReqVO updateReqVO) {
57   - materialRequestLineService.updateMaterialRequestLine(updateReqVO);
58   - return success(true);
59   - }
60   -
61   - @DeleteMapping("/delete")
62   - @Operation(summary = "删除领料申请单行")
63   - @Parameter(name = "id", description = "编号", required = true)
64   - @PreAuthorize("@ss.hasPermission('mes:wm-material-request:delete')")
65   - public CommonResult<Boolean> deleteMaterialRequestLine(@RequestParam("id") Long id) {
66   - materialRequestLineService.deleteMaterialRequestLine(id);
67   - return success(true);
68   - }
69   -
70   - @GetMapping("/get")
71   - @Operation(summary = "获得领料申请单行")
72   - @Parameter(name = "id", description = "编号", required = true, example = "1024")
73   - @PreAuthorize("@ss.hasPermission('mes:wm-material-request:query')")
74   - public CommonResult<MesWmMaterialRequestLineRespVO> getMaterialRequestLine(@RequestParam("id") Long id) {
75   - MesWmMaterialRequestLineDO line = materialRequestLineService.getMaterialRequestLine(id);
76   - if (line == null) {
77   - return success(null);
78   - }
79   - return success(buildRespVOList(Collections.singletonList(line)).get(0));
80   - }
81   -
82   - @GetMapping("/page")
83   - @Operation(summary = "获得领料申请单行分页")
84   - @PreAuthorize("@ss.hasPermission('mes:wm-material-request:query')")
85   - public CommonResult<PageResult<MesWmMaterialRequestLineRespVO>> getMaterialRequestLinePage(
86   - @Valid MesWmMaterialRequestLinePageReqVO pageReqVO) {
87   - PageResult<MesWmMaterialRequestLineDO> pageResult = materialRequestLineService.getMaterialRequestLinePage(pageReqVO);
88   - return success(new PageResult<>(buildRespVOList(pageResult.getList()), pageResult.getTotal()));
89   - }
90   -
91   - // ==================== 拼接 VO ====================
92   -
93   - private List<MesWmMaterialRequestLineRespVO> buildRespVOList(List<MesWmMaterialRequestLineDO> list) {
94   - if (CollUtil.isEmpty(list)) {
95   - return Collections.emptyList();
96   - }
97   - // 1. 获得关联数据
98   - Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
99   - convertSet(list, MesWmMaterialRequestLineDO::getItemId));
100   - Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
101   - convertSet(list, MesWmMaterialRequestLineDO::getUnitMeasureId));
102   - // 2. 构建结果
103   - return BeanUtils.toBean(list, MesWmMaterialRequestLineRespVO.class, vo -> {
104   - MapUtils.findAndThen(itemMap, vo.getItemId(), item ->
105   - vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()));
106   - MapUtils.findAndThen(unitMeasureMap, vo.getUnitMeasureId(), unit ->
107   - vo.setUnitMeasureName(unit.getName()));
108   - });
109   - }
110   -
111   -}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialrequest/vo/MesWmMaterialRequestPageReqVO.java deleted
1   -package cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageParam;
4   -import io.swagger.v3.oas.annotations.media.Schema;
5   -import lombok.Data;
6   -import lombok.EqualsAndHashCode;
7   -import org.springframework.format.annotation.DateTimeFormat;
8   -
9   -import java.time.LocalDateTime;
10   -
11   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
12   -
13   -@Schema(description = "管理后台 - MES 领料申请单分页 Request VO")
14   -@Data
15   -@EqualsAndHashCode(callSuper = true)
16   -public class MesWmMaterialRequestPageReqVO extends PageParam {
17   -
18   - @Schema(description = "工作站ID", example = "1")
19   - private Long workstationId;
20   -
21   - @Schema(description = "生产工单ID", example = "1")
22   - private Long workOrderId;
23   -
24   - @Schema(description = "需求人用户ID", example = "1")
25   - private Long userId;
26   -
27   - @Schema(description = "状态", example = "0")
28   - private Integer status;
29   -
30   - @Schema(description = "需求时间范围")
31   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
32   - private LocalDateTime[] requestTime;
33   -
34   -}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialrequest/vo/MesWmMaterialRequestRespVO.java deleted
1   -package cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo;
2   -
3   -import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
4   -import cn.idev.excel.annotation.ExcelProperty;
5   -import io.swagger.v3.oas.annotations.media.Schema;
6   -import lombok.Data;
7   -
8   -import java.time.LocalDateTime;
9   -
10   -@Schema(description = "管理后台 - MES 领料申请单 Response VO")
11   -@Data
12   -@ExcelIgnoreUnannotated
13   -public class MesWmMaterialRequestRespVO {
14   -
15   - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
16   - @ExcelProperty("编号")
17   - private Long id;
18   -
19   - @Schema(description = "工作站ID", example = "1")
20   - private Long workstationId;
21   -
22   - @Schema(description = "工作站编码", example = "WS0001")
23   - @ExcelProperty("工作站编码")
24   - private String workstationCode;
25   -
26   - @Schema(description = "工作站名称", example = "1#注塑工作站")
27   - @ExcelProperty("工作站名称")
28   - private String workstationName;
29   -
30   - @Schema(description = "生产工单ID", example = "1")
31   - private Long workOrderId;
32   -
33   - @Schema(description = "生产工单编码", example = "MO20260222001")
34   - @ExcelProperty("生产工单编码")
35   - private String workOrderCode;
36   -
37   - @Schema(description = "需求人用户ID", example = "1")
38   - private Long userId;
39   -
40   - @Schema(description = "需求人昵称", example = "管理员")
41   - @ExcelProperty("需求人昵称")
42   - private String userNickname;
43   -
44   - @Schema(description = "需求时间")
45   - @ExcelProperty("需求时间")
46   - private LocalDateTime requestTime;
47   -
48   - @Schema(description = "开始备料时间")
49   - @ExcelProperty("开始备料时间")
50   - private LocalDateTime startTime;
51   -
52   - @Schema(description = "完成时间")
53   - @ExcelProperty("完成时间")
54   - private LocalDateTime endTime;
55   -
56   - @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
57   - @ExcelProperty("状态")
58   - private Integer status;
59   -
60   - @Schema(description = "备注", example = "备注")
61   - @ExcelProperty("备注")
62   - private String remark;
63   -
64   - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
65   - @ExcelProperty("创建时间")
66   - private LocalDateTime createTime;
67   -
68   -}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialrequest/vo/MesWmMaterialRequestSaveReqVO.java deleted
1   -package cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.Data;
5   -
6   -import java.time.LocalDateTime;
7   -
8   -@Schema(description = "管理后台 - MES 领料申请单新增/修改 Request VO")
9   -@Data
10   -public class MesWmMaterialRequestSaveReqVO {
11   -
12   - @Schema(description = "编号", example = "1024")
13   - private Long id;
14   -
15   - @Schema(description = "工作站ID", example = "1")
16   - private Long workstationId;
17   -
18   - @Schema(description = "生产工单ID", example = "1")
19   - private Long workOrderId;
20   -
21   - @Schema(description = "需求人用户ID", example = "1")
22   - private Long userId;
23   -
24   - @Schema(description = "需求时间")
25   - private LocalDateTime requestTime;
26   -
27   - @Schema(description = "开始备料时间")
28   - private LocalDateTime startTime;
29   -
30   - @Schema(description = "完成时间")
31   - private LocalDateTime endTime;
32   -
33   - @Schema(description = "备注", example = "备注")
34   - private String remark;
35   -
36   - }
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialrequest/vo/line/MesWmMaterialRequestLinePageReqVO.java deleted
1   -package cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.line;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageParam;
4   -import io.swagger.v3.oas.annotations.media.Schema;
5   -import lombok.Data;
6   -import lombok.EqualsAndHashCode;
7   -
8   -@Schema(description = "管理后台 - MES 领料申请单行分页 Request VO")
9   -@Data
10   -@EqualsAndHashCode(callSuper = true)
11   -public class MesWmMaterialRequestLinePageReqVO extends PageParam {
12   -
13   - @Schema(description = "领料申请单ID", example = "1")
14   - private Long materialRequestId;
15   -
16   -}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialrequest/vo/line/MesWmMaterialRequestLineRespVO.java deleted
1   -package cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.line;
2   -
3   -import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
4   -import cn.idev.excel.annotation.ExcelProperty;
5   -import io.swagger.v3.oas.annotations.media.Schema;
6   -import lombok.Data;
7   -
8   -import java.math.BigDecimal;
9   -import java.time.LocalDateTime;
10   -
11   -@Schema(description = "管理后台 - MES 领料申请单行 Response VO")
12   -@Data
13   -@ExcelIgnoreUnannotated
14   -public class MesWmMaterialRequestLineRespVO {
15   -
16   - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
17   - @ExcelProperty("编号")
18   - private Long id;
19   -
20   - @Schema(description = "领料申请单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
21   - private Long materialRequestId;
22   -
23   - @Schema(description = "产品物料ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
24   - private Long itemId;
25   -
26   - @Schema(description = "产品物料编码", example = "IF2022082432")
27   - @ExcelProperty("物料编码")
28   - private String itemCode;
29   -
30   - @Schema(description = "产品物料名称", example = "PVC 颗粒")
31   - @ExcelProperty("物料名称")
32   - private String itemName;
33   -
34   - @Schema(description = "规格型号", example = "透明")
35   - @ExcelProperty("规格型号")
36   - private String specification;
37   -
38   - @Schema(description = "计量单位ID", example = "1")
39   - private Long unitMeasureId;
40   -
41   - @Schema(description = "计量单位名称", example = "公斤")
42   - @ExcelProperty("计量单位")
43   - private String unitMeasureName;
44   -
45   - @Schema(description = "需求数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "10.00")
46   - @ExcelProperty("需求数量")
47   - private BigDecimal quantity;
48   -
49   - @Schema(description = "备注", example = "备注")
50   - @ExcelProperty("备注")
51   - private String remark;
52   -
53   - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
54   - @ExcelProperty("创建时间")
55   - private LocalDateTime createTime;
56   -
57   -}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/materialrequest/vo/line/MesWmMaterialRequestLineSaveReqVO.java deleted
1   -package cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.line;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import jakarta.validation.constraints.DecimalMin;
5   -import jakarta.validation.constraints.NotNull;
6   -import lombok.Data;
7   -
8   -import java.math.BigDecimal;
9   -
10   -@Schema(description = "管理后台 - MES 领料申请单行新增/修改 Request VO")
11   -@Data
12   -public class MesWmMaterialRequestLineSaveReqVO {
13   -
14   - @Schema(description = "编号", example = "1024")
15   - private Long id;
16   -
17   - @Schema(description = "领料申请单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
18   - @NotNull(message = "领料申请单ID不能为空")
19   - private Long materialRequestId;
20   -
21   - @Schema(description = "产品物料ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
22   - @NotNull(message = "产品物料ID不能为空")
23   - private Long itemId;
24   -
25   - @Schema(description = "计量单位ID", example = "1")
26   - private Long unitMeasureId;
27   -
28   - @Schema(description = "需求数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "10.00")
29   - @NotNull(message = "需求数量不能为空")
30   - @DecimalMin(value = "0.01", message = "需求数量必须大于 0")
31   - private BigDecimal quantity;
32   -
33   - @Schema(description = "备注", example = "备注")
34   - private String remark;
35   -
36   - }
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/materialrequest/MesWmMaterialRequestDO.java deleted
1   -package cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest;
2   -
3   -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
4   -import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
5   -import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
6   -import cn.iocoder.yudao.module.mes.enums.wm.MesWmMaterialRequestStatusEnum;
7   -import com.baomidou.mybatisplus.annotation.KeySequence;
8   -import com.baomidou.mybatisplus.annotation.TableId;
9   -import com.baomidou.mybatisplus.annotation.TableName;
10   -import lombok.*;
11   -
12   -import java.time.LocalDateTime;
13   -
14   -/**
15   - * MES 领料申请单 DO
16   - */
17   -@TableName("mes_wm_material_request")
18   -@KeySequence("mes_wm_material_request_seq")
19   -@Data
20   -@EqualsAndHashCode(callSuper = true)
21   -@ToString(callSuper = true)
22   -@Builder
23   -@NoArgsConstructor
24   -@AllArgsConstructor
25   -public class MesWmMaterialRequestDO extends BaseDO {
26   -
27   - /**
28   - * 编号
29   - */
30   - @TableId
31   - private Long id;
32   - /**
33   - * 工作站ID
34   - *
35   - * 关联 {@link MesMdWorkstationDO#getId()}
36   - */
37   - private Long workstationId;
38   - /**
39   - * 生产工单ID
40   - *
41   - * 关联 {@link MesProWorkOrderDO#getId()}
42   - */
43   - private Long workOrderId;
44   - /**
45   - * 需求人用户ID
46   - *
47   - * 关联 system_users.id
48   - */
49   - private Long userId;
50   - /**
51   - * 需求时间
52   - */
53   - private LocalDateTime requestTime;
54   - /**
55   - * 开始备料时间
56   - */
57   - private LocalDateTime startTime;
58   - /**
59   - * 完成时间
60   - */
61   - private LocalDateTime endTime;
62   - /**
63   - * 状态
64   - *
65   - * 枚举 {@link MesWmMaterialRequestStatusEnum}
66   - */
67   - private Integer status;
68   - /**
69   - * 备注
70   - */
71   - private String remark;
72   -
73   -}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/materialrequest/MesWmMaterialRequestLineDO.java deleted
1   -package cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest;
2   -
3   -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
4   -import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
5   -import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
6   -import com.baomidou.mybatisplus.annotation.KeySequence;
7   -import com.baomidou.mybatisplus.annotation.TableId;
8   -import com.baomidou.mybatisplus.annotation.TableName;
9   -import lombok.*;
10   -
11   -import java.math.BigDecimal;
12   -
13   -/**
14   - * MES 领料申请单行 DO
15   - */
16   -@TableName("mes_wm_material_request_line")
17   -@KeySequence("mes_wm_material_request_line_seq")
18   -@Data
19   -@EqualsAndHashCode(callSuper = true)
20   -@ToString(callSuper = true)
21   -@Builder
22   -@NoArgsConstructor
23   -@AllArgsConstructor
24   -public class MesWmMaterialRequestLineDO extends BaseDO {
25   -
26   - /**
27   - * 编号
28   - */
29   - @TableId
30   - private Long id;
31   - /**
32   - * 领料申请单ID
33   - *
34   - * 关联 {@link MesWmMaterialRequestDO#getId()}
35   - */
36   - private Long materialRequestId;
37   - /**
38   - * 产品物料ID
39   - *
40   - * 关联 {@link MesMdItemDO#getId()}
41   - */
42   - private Long itemId;
43   - /**
44   - * 计量单位ID
45   - *
46   - * 关联 {@link MesMdUnitMeasureDO#getId()}
47   - */
48   - private Long unitMeasureId;
49   - /**
50   - * 需求数量
51   - */
52   - private BigDecimal quantity;
53   - /**
54   - * 备注
55   - */
56   - private String remark;
57   -
58   -}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/materialrequest/MesWmMaterialRequestLineMapper.java deleted
1   -package cn.iocoder.yudao.module.mes.dal.mysql.wm.materialrequest;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5   -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6   -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.line.MesWmMaterialRequestLinePageReqVO;
7   -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest.MesWmMaterialRequestLineDO;
8   -import org.apache.ibatis.annotations.Mapper;
9   -
10   -import java.util.List;
11   -
12   -/**
13   - * MES 领料申请单行 Mapper
14   - */
15   -@Mapper
16   -public interface MesWmMaterialRequestLineMapper extends BaseMapperX<MesWmMaterialRequestLineDO> {
17   -
18   - default PageResult<MesWmMaterialRequestLineDO> selectPage(MesWmMaterialRequestLinePageReqVO reqVO) {
19   - return selectPage(reqVO, new LambdaQueryWrapperX<MesWmMaterialRequestLineDO>()
20   - .eqIfPresent(MesWmMaterialRequestLineDO::getMaterialRequestId, reqVO.getMaterialRequestId())
21   - .orderByDesc(MesWmMaterialRequestLineDO::getId));
22   - }
23   -
24   - default List<MesWmMaterialRequestLineDO> selectListByMaterialRequestId(Long materialRequestId) {
25   - return selectList(MesWmMaterialRequestLineDO::getMaterialRequestId, materialRequestId);
26   - }
27   -
28   - default void deleteByMaterialRequestId(Long materialRequestId) {
29   - delete(MesWmMaterialRequestLineDO::getMaterialRequestId, materialRequestId);
30   - }
31   -
32   -}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/materialrequest/MesWmMaterialRequestMapper.java deleted
1   -package cn.iocoder.yudao.module.mes.dal.mysql.wm.materialrequest;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5   -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6   -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.MesWmMaterialRequestPageReqVO;
7   -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest.MesWmMaterialRequestDO;
8   -import org.apache.ibatis.annotations.Mapper;
9   -
10   -/**
11   - * MES 领料申请单 Mapper
12   - */
13   -@Mapper
14   -public interface MesWmMaterialRequestMapper extends BaseMapperX<MesWmMaterialRequestDO> {
15   -
16   - default PageResult<MesWmMaterialRequestDO> selectPage(MesWmMaterialRequestPageReqVO reqVO) {
17   - return selectPage(reqVO, new LambdaQueryWrapperX<MesWmMaterialRequestDO>()
18   - .eqIfPresent(MesWmMaterialRequestDO::getWorkstationId, reqVO.getWorkstationId())
19   - .eqIfPresent(MesWmMaterialRequestDO::getWorkOrderId, reqVO.getWorkOrderId())
20   - .eqIfPresent(MesWmMaterialRequestDO::getUserId, reqVO.getUserId())
21   - .eqIfPresent(MesWmMaterialRequestDO::getStatus, reqVO.getStatus())
22   - .betweenIfPresent(MesWmMaterialRequestDO::getRequestTime, reqVO.getRequestTime())
23   - .orderByDesc(MesWmMaterialRequestDO::getId));
24   - }
25   -
26   -}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmMaterialRequestStatusEnum.java deleted
1   -package cn.iocoder.yudao.module.mes.enums.wm;
2   -
3   -import cn.iocoder.yudao.framework.common.core.ArrayValuable;
4   -import cn.iocoder.yudao.module.mes.enums.MesOrderStatusConstants;
5   -import lombok.AllArgsConstructor;
6   -import lombok.Getter;
7   -
8   -import java.util.Arrays;
9   -
10   -/**
11   - * MES 领料申请单状态枚举
12   - *
13   - * @author 芋道源码
14   - */
15   -@Getter
16   -@AllArgsConstructor
17   -public enum MesWmMaterialRequestStatusEnum implements ArrayValuable<Integer> {
18   -
19   - PREPARE(MesOrderStatusConstants.PREPARE, "草稿"),
20   - PREPARING(MesOrderStatusConstants.APPROVING, "备料中"),
21   - WAITING(MesOrderStatusConstants.APPROVED, "待领料"),
22   - FINISHED(MesOrderStatusConstants.FINISHED, "已完成"),
23   - CANCELED(MesOrderStatusConstants.CANCELLED, "已取消");
24   -
25   - public static final Integer[] ARRAYS = Arrays.stream(values()).map(MesWmMaterialRequestStatusEnum::getStatus).toArray(Integer[]::new);
26   -
27   - /**
28   - * 状态值
29   - */
30   - private final Integer status;
31   - /**
32   - * 状态名
33   - */
34   - private final String name;
35   -
36   - @Override
37   - public Integer[] array() {
38   - return ARRAYS;
39   - }
40   -
41   -}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialrequest/MesWmMaterialRequestLineService.java deleted
1   -package cn.iocoder.yudao.module.mes.service.wm.materialrequest;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.line.MesWmMaterialRequestLinePageReqVO;
5   -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.line.MesWmMaterialRequestLineSaveReqVO;
6   -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest.MesWmMaterialRequestLineDO;
7   -import jakarta.validation.Valid;
8   -
9   -import java.util.List;
10   -
11   -/**
12   - * MES 领料申请单行 Service 接口
13   - */
14   -public interface MesWmMaterialRequestLineService {
15   -
16   - /**
17   - * 创建领料申请单行
18   - *
19   - * @param createReqVO 创建信息
20   - * @return 编号
21   - */
22   - Long createMaterialRequestLine(@Valid MesWmMaterialRequestLineSaveReqVO createReqVO);
23   -
24   - /**
25   - * 修改领料申请单行
26   - *
27   - * @param updateReqVO 修改信息
28   - */
29   - void updateMaterialRequestLine(@Valid MesWmMaterialRequestLineSaveReqVO updateReqVO);
30   -
31   - /**
32   - * 删除领料申请单行
33   - *
34   - * @param id 编号
35   - */
36   - void deleteMaterialRequestLine(Long id);
37   -
38   - /**
39   - * 获得领料申请单行
40   - *
41   - * @param id 编号
42   - * @return 领料申请单行
43   - */
44   - MesWmMaterialRequestLineDO getMaterialRequestLine(Long id);
45   -
46   - /**
47   - * 获得领料申请单行分页
48   - *
49   - * @param pageReqVO 分页参数
50   - * @return 领料申请单行分页
51   - */
52   - PageResult<MesWmMaterialRequestLineDO> getMaterialRequestLinePage(MesWmMaterialRequestLinePageReqVO pageReqVO);
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   -
69   -}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialrequest/MesWmMaterialRequestLineServiceImpl.java deleted
1   -package cn.iocoder.yudao.module.mes.service.wm.materialrequest;
2   -
3   -import cn.hutool.core.util.ObjUtil;
4   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
5   -import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
6   -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.line.MesWmMaterialRequestLinePageReqVO;
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;
9   -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest.MesWmMaterialRequestLineDO;
10   -import cn.iocoder.yudao.module.mes.dal.mysql.wm.materialrequest.MesWmMaterialRequestLineMapper;
11   -import cn.iocoder.yudao.module.mes.enums.wm.MesWmMaterialRequestStatusEnum;
12   -import jakarta.annotation.Resource;
13   -import org.springframework.context.annotation.Lazy;
14   -import org.springframework.stereotype.Service;
15   -import org.springframework.validation.annotation.Validated;
16   -
17   -import java.util.List;
18   -
19   -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
20   -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
21   -
22   -/**
23   - * MES 领料申请单行 Service 实现类
24   - */
25   -@Service
26   -@Validated
27   -public class MesWmMaterialRequestLineServiceImpl implements MesWmMaterialRequestLineService {
28   -
29   - @Resource
30   - private MesWmMaterialRequestLineMapper materialRequestLineMapper;
31   -
32   - @Resource
33   - @Lazy
34   - private MesWmMaterialRequestService materialRequestService;
35   -
36   - @Override
37   - public Long createMaterialRequestLine(MesWmMaterialRequestLineSaveReqVO createReqVO) {
38   - // 校验父单据存在且为草稿状态
39   - validateMaterialRequestStatusDraft(createReqVO.getMaterialRequestId());
40   -
41   - // 插入
42   - MesWmMaterialRequestLineDO line = BeanUtils.toBean(createReqVO, MesWmMaterialRequestLineDO.class);
43   - materialRequestLineMapper.insert(line);
44   - return line.getId();
45   - }
46   -
47   - @Override
48   - public void updateMaterialRequestLine(MesWmMaterialRequestLineSaveReqVO updateReqVO) {
49   - // 校验存在
50   - MesWmMaterialRequestLineDO line = validateMaterialRequestLineExists(updateReqVO.getId());
51   - // 校验父单据存在且为草稿状态
52   - validateMaterialRequestStatusDraft(line.getMaterialRequestId());
53   -
54   - // 更新
55   - MesWmMaterialRequestLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmMaterialRequestLineDO.class);
56   - materialRequestLineMapper.updateById(updateObj);
57   - }
58   -
59   - @Override
60   - public void deleteMaterialRequestLine(Long id) {
61   - // 校验存在
62   - validateMaterialRequestLineExists(id);
63   - // 删除
64   - materialRequestLineMapper.deleteById(id);
65   - }
66   -
67   - @Override
68   - public MesWmMaterialRequestLineDO getMaterialRequestLine(Long id) {
69   - return materialRequestLineMapper.selectById(id);
70   - }
71   -
72   - @Override
73   - public PageResult<MesWmMaterialRequestLineDO> getMaterialRequestLinePage(MesWmMaterialRequestLinePageReqVO pageReqVO) {
74   - return materialRequestLineMapper.selectPage(pageReqVO);
75   - }
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   -
87   - private MesWmMaterialRequestLineDO validateMaterialRequestLineExists(Long id) {
88   - MesWmMaterialRequestLineDO line = materialRequestLineMapper.selectById(id);
89   - if (line == null) {
90   - throw exception(WM_MATERIAL_REQUEST_LINE_NOT_EXISTS);
91   - }
92   - return line;
93   - }
94   -
95   - /**
96   - * 校验父领料申请单存在且为草稿状态
97   - */
98   - private void validateMaterialRequestStatusDraft(Long materialRequestId) {
99   - // TODO @AI:类似 itemReceiptService.validateItemReceiptEditable,后续可在 materialRequestService 封装 validateEditable 方法
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   -
109   -}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialrequest/MesWmMaterialRequestService.java deleted
1   -package cn.iocoder.yudao.module.mes.service.wm.materialrequest;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.MesWmMaterialRequestPageReqVO;
5   -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.MesWmMaterialRequestSaveReqVO;
6   -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest.MesWmMaterialRequestDO;
7   -import jakarta.validation.Valid;
8   -
9   -import java.util.Collection;
10   -import java.util.List;
11   -import java.util.Map;
12   -
13   -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
14   -
15   -/**
16   - * MES 领料申请单 Service 接口
17   - */
18   -public interface MesWmMaterialRequestService {
19   -
20   - /**
21   - * 创建领料申请单
22   - *
23   - * @param createReqVO 创建信息
24   - * @return 编号
25   - */
26   - Long createMaterialRequest(@Valid MesWmMaterialRequestSaveReqVO createReqVO);
27   -
28   - /**
29   - * 修改领料申请单
30   - *
31   - * @param updateReqVO 修改信息
32   - */
33   - void updateMaterialRequest(@Valid MesWmMaterialRequestSaveReqVO updateReqVO);
34   -
35   - /**
36   - * 删除领料申请单(级联删除行,仅草稿状态允许)
37   - *
38   - * @param id 编号
39   - */
40   - void deleteMaterialRequest(Long id);
41   -
42   - /**
43   - * 获得领料申请单
44   - *
45   - * @param id 编号
46   - * @return 领料申请单
47   - */
48   - MesWmMaterialRequestDO getMaterialRequest(Long id);
49   -
50   - /**
51   - * 获得领料申请单分页
52   - *
53   - * @param pageReqVO 分页参数
54   - * @return 领料申请单分页
55   - */
56   - PageResult<MesWmMaterialRequestDO> getMaterialRequestPage(MesWmMaterialRequestPageReqVO pageReqVO);
57   -
58   - /**
59   - * 提交领料申请单(草稿 → 备料中)
60   - *
61   - * @param id 编号
62   - */
63   - void submitMaterialRequest(Long id);
64   -
65   - /**
66   - * 审批领料申请单(备料中 → 待领料)
67   - *
68   - * @param id 编号
69   - */
70   - void approveMaterialRequest(Long id);
71   -
72   - /**
73   - * 完成领料申请单(待领料 → 已完成),内部调用
74   - *
75   - * @param id 编号
76   - */
77   - void finishMaterialRequest(Long id);
78   -
79   - /**
80   - * 取消领料申请单(非已完成 → 已取消)
81   - *
82   - * @param id 编号
83   - */
84   - void cancelMaterialRequest(Long id);
85   -
86   - /**
87   - * 按编号集合获得领料申请单列表
88   - *
89   - * @param ids 编号集合
90   - * @return 领料申请单列表
91   - */
92   - List<MesWmMaterialRequestDO> getMaterialRequestList(Collection<Long> ids);
93   -
94   - default Map<Long, MesWmMaterialRequestDO> getMaterialRequestMap(Collection<Long> ids) {
95   - return convertMap(getMaterialRequestList(ids), MesWmMaterialRequestDO::getId);
96   - }
97   -
98   -}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialrequest/MesWmMaterialRequestServiceImpl.java deleted
1   -package cn.iocoder.yudao.module.mes.service.wm.materialrequest;
2   -
3   -import cn.hutool.core.collection.CollUtil;
4   -import cn.hutool.core.util.ObjUtil;
5   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
6   -import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
7   -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.MesWmMaterialRequestPageReqVO;
8   -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialrequest.vo.MesWmMaterialRequestSaveReqVO;
9   -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialrequest.MesWmMaterialRequestDO;
10   -import cn.iocoder.yudao.module.mes.dal.mysql.wm.materialrequest.MesWmMaterialRequestMapper;
11   -import cn.iocoder.yudao.module.mes.enums.wm.MesWmMaterialRequestStatusEnum;
12   -import jakarta.annotation.Resource;
13   -import org.springframework.stereotype.Service;
14   -import org.springframework.transaction.annotation.Transactional;
15   -import org.springframework.validation.annotation.Validated;
16   -
17   -import java.util.Collection;
18   -import java.util.Collections;
19   -import java.util.List;
20   -
21   -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
22   -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
23   -
24   -/**
25   - * MES 领料申请单 Service 实现类
26   - */
27   -@Service
28   -@Validated
29   -public class MesWmMaterialRequestServiceImpl implements MesWmMaterialRequestService {
30   -
31   - @Resource
32   - private MesWmMaterialRequestMapper materialRequestMapper;
33   -
34   - @Resource
35   - private MesWmMaterialRequestLineService materialRequestLineService;
36   -
37   - @Override
38   - public Long createMaterialRequest(MesWmMaterialRequestSaveReqVO createReqVO) {
39   - // TODO DONE @AI:领料申请关联数据校验待领料模块完善后补充(仓库、物料等基础数据校验)
40   -
41   - // 2. 插入
42   - MesWmMaterialRequestDO materialRequest = BeanUtils.toBean(createReqVO, MesWmMaterialRequestDO.class);
43   - materialRequest.setStatus(MesWmMaterialRequestStatusEnum.PREPARE.getStatus());
44   - materialRequestMapper.insert(materialRequest);
45   - return materialRequest.getId();
46   - }
47   -
48   - @Override
49   - public void updateMaterialRequest(MesWmMaterialRequestSaveReqVO updateReqVO) {
50   - // 1. 校验存在 + 草稿状态
51   - validateMaterialRequestExistsAndDraft(updateReqVO.getId());
52   - // TODO DONE @AI:领料申请关联数据校验待领料模块完善后补充(仓库、物料等基础数据校验)
53   -
54   - // 2. 更新
55   - MesWmMaterialRequestDO updateObj = BeanUtils.toBean(updateReqVO, MesWmMaterialRequestDO.class);
56   - materialRequestMapper.updateById(updateObj);
57   - }
58   -
59   - @Override
60   - @Transactional(rollbackFor = Exception.class)
61   - public void deleteMaterialRequest(Long id) {
62   - // 1. 校验存在 + 草稿状态
63   - validateMaterialRequestExistsAndDraft(id);
64   -
65   - // 2.1 级联删除行
66   - materialRequestLineService.deleteMaterialRequestLineByMaterialRequestId(id);
67   - // 2.2 删除
68   - materialRequestMapper.deleteById(id);
69   - }
70   -
71   - @Override
72   - public MesWmMaterialRequestDO getMaterialRequest(Long id) {
73   - return materialRequestMapper.selectById(id);
74   - }
75   -
76   - @Override
77   - public PageResult<MesWmMaterialRequestDO> getMaterialRequestPage(MesWmMaterialRequestPageReqVO pageReqVO) {
78   - return materialRequestMapper.selectPage(pageReqVO);
79   - }
80   -
81   - @Override
82   - public void submitMaterialRequest(Long id) {
83   - // 1. 校验存在 + 草稿状态
84   - validateMaterialRequestExistsAndDraft(id);
85   -
86   - // 2. 草稿 → 备料中
87   - materialRequestMapper.updateById(new MesWmMaterialRequestDO()
88   - .setId(id).setStatus(MesWmMaterialRequestStatusEnum.PREPARING.getStatus()));
89   - }
90   -
91   - @Override
92   - public void approveMaterialRequest(Long id) {
93   - // 1.1 校验存在
94   - MesWmMaterialRequestDO materialRequest = validateMaterialRequestExists(id);
95   - // 1.2 校验状态:只有备料中才允许审批
96   - if (ObjUtil.notEqual(MesWmMaterialRequestStatusEnum.PREPARING.getStatus(), materialRequest.getStatus())) {
97   - throw exception(WM_MATERIAL_REQUEST_STATUS_INVALID);
98   - }
99   -
100   - // 2. 备料中 → 待领料
101   - materialRequestMapper.updateById(new MesWmMaterialRequestDO()
102   - .setId(id).setStatus(MesWmMaterialRequestStatusEnum.WAITING.getStatus()));
103   - }
104   -
105   - @Override
106   - public void finishMaterialRequest(Long id) {
107   - // 1.1 校验存在
108   - MesWmMaterialRequestDO materialRequest = validateMaterialRequestExists(id);
109   - // 1.2 校验状态:只有待领料才允许完成
110   - if (ObjUtil.notEqual(MesWmMaterialRequestStatusEnum.WAITING.getStatus(), materialRequest.getStatus())) {
111   - throw exception(WM_MATERIAL_REQUEST_STATUS_INVALID);
112   - }
113   -
114   - // 2. 待领料 → 已完成
115   - materialRequestMapper.updateById(new MesWmMaterialRequestDO()
116   - .setId(id).setStatus(MesWmMaterialRequestStatusEnum.FINISHED.getStatus()));
117   - }
118   -
119   - @Override
120   - public void cancelMaterialRequest(Long id) {
121   - // 1.1 校验存在
122   - MesWmMaterialRequestDO materialRequest = validateMaterialRequestExists(id);
123   - // 1.2 已完成不可取消
124   - if (ObjUtil.equal(MesWmMaterialRequestStatusEnum.FINISHED.getStatus(), materialRequest.getStatus())) {
125   - throw exception(WM_MATERIAL_REQUEST_STATUS_INVALID);
126   - }
127   -
128   - // 2. 非已完成 → 已取消
129   - materialRequestMapper.updateById(new MesWmMaterialRequestDO()
130   - .setId(id).setStatus(MesWmMaterialRequestStatusEnum.CANCELED.getStatus()));
131   - }
132   -
133   - @Override
134   - public List<MesWmMaterialRequestDO> getMaterialRequestList(Collection<Long> ids) {
135   - if (CollUtil.isEmpty(ids)) {
136   - return Collections.emptyList();
137   - }
138   - return materialRequestMapper.selectByIds(ids);
139   - }
140   -
141   - private MesWmMaterialRequestDO validateMaterialRequestExists(Long id) {
142   - MesWmMaterialRequestDO materialRequest = materialRequestMapper.selectById(id);
143   - if (materialRequest == null) {
144   - throw exception(WM_MATERIAL_REQUEST_NOT_EXISTS);
145   - }
146   - return materialRequest;
147   - }
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   -
160   -}