Commit 79ca575157f2f016d89525949c4702287792f489

Authored by YunaiV
1 parent ab134e46

✨ feat(mes): 添加外协入库单行的请求和响应 VO 及相关控制器功能

Showing 12 changed files with 275 additions and 21 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourcereceipt/MesWmOutsourceReceiptLineController.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt;
  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.outsourcereceipt.vo.line.MesWmOutsourceReceiptLinePageReqVO;
  9 +import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.line.MesWmOutsourceReceiptLineRespVO;
  10 +import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.line.MesWmOutsourceReceiptLineSaveReqVO;
  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.outsourcereceipt.MesWmOutsourceReceiptLineDO;
  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.outsourcereceipt.MesWmOutsourceReceiptLineService;
  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/outsource-receipt-line")
  36 +@Validated
  37 +public class MesWmOutsourceReceiptLineController {
  38 +
  39 + @Resource
  40 + private MesWmOutsourceReceiptLineService receiptLineService;
  41 +
  42 + @Resource
  43 + private MesMdItemService itemService;
  44 +
  45 + @Resource
  46 + private MesMdUnitMeasureService unitMeasureService;
  47 +
  48 + @PostMapping("/create")
  49 + @Operation(summary = "创建外协入库单行")
  50 + @PreAuthorize("@ss.hasPermission('mes:wm-outsource-receipt:create')")
  51 + public CommonResult<Long> createOutsourceReceiptLine(@Valid @RequestBody MesWmOutsourceReceiptLineSaveReqVO createReqVO) {
  52 + return success(receiptLineService.createOutsourceReceiptLine(createReqVO));
  53 + }
  54 +
  55 + @PutMapping("/update")
  56 + @Operation(summary = "修改外协入库单行")
  57 + @PreAuthorize("@ss.hasPermission('mes:wm-outsource-receipt:update')")
  58 + public CommonResult<Boolean> updateOutsourceReceiptLine(@Valid @RequestBody MesWmOutsourceReceiptLineSaveReqVO updateReqVO) {
  59 + receiptLineService.updateOutsourceReceiptLine(updateReqVO);
  60 + return success(true);
  61 + }
  62 +
  63 + @DeleteMapping("/delete")
  64 + @Operation(summary = "删除外协入库单行")
  65 + @Parameter(name = "id", description = "编号", required = true)
  66 + @PreAuthorize("@ss.hasPermission('mes:wm-outsource-receipt:delete')")
  67 + public CommonResult<Boolean> deleteOutsourceReceiptLine(@RequestParam("id") Long id) {
  68 + receiptLineService.deleteOutsourceReceiptLine(id);
  69 + return success(true);
  70 + }
  71 +
  72 + @GetMapping("/get")
  73 + @Operation(summary = "获得外协入库单行")
  74 + @Parameter(name = "id", description = "编号", required = true, example = "1024")
  75 + @PreAuthorize("@ss.hasPermission('mes:wm-outsource-receipt:query')")
  76 + public CommonResult<MesWmOutsourceReceiptLineRespVO> getOutsourceReceiptLine(@RequestParam("id") Long id) {
  77 + MesWmOutsourceReceiptLineDO line = receiptLineService.getOutsourceReceiptLine(id);
  78 + if (line == null) {
  79 + return success(null);
  80 + }
  81 + return success(buildRespVOList(Collections.singletonList(line)).get(0));
  82 + }
  83 +
  84 + @GetMapping("/page")
  85 + @Operation(summary = "获得外协入库单行分页")
  86 + @PreAuthorize("@ss.hasPermission('mes:wm-outsource-receipt:query')")
  87 + public CommonResult<PageResult<MesWmOutsourceReceiptLineRespVO>> getOutsourceReceiptLinePage(
  88 + @Valid MesWmOutsourceReceiptLinePageReqVO pageReqVO) {
  89 + PageResult<MesWmOutsourceReceiptLineDO> pageResult = receiptLineService.getOutsourceReceiptLinePage(pageReqVO);
  90 + return success(new PageResult<>(buildRespVOList(pageResult.getList()), pageResult.getTotal()));
  91 + }
  92 +
  93 + // ==================== 拼接 VO ====================
  94 +
  95 + private List<MesWmOutsourceReceiptLineRespVO> buildRespVOList(List<MesWmOutsourceReceiptLineDO> list) {
  96 + if (CollUtil.isEmpty(list)) {
  97 + return Collections.emptyList();
  98 + }
  99 + // 1. 获得关联数据
  100 + Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(
  101 + convertSet(list, MesWmOutsourceReceiptLineDO::getItemId));
  102 + Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
  103 + convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId));
  104 + // 2. 构建结果
  105 + return BeanUtils.toBean(list, MesWmOutsourceReceiptLineRespVO.class, vo -> {
  106 + MapUtils.findAndThen(itemMap, vo.getItemId(), item -> {
  107 + vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification());
  108 + MapUtils.findAndThen(unitMeasureMap, item.getUnitMeasureId(),
  109 + unitMeasure -> vo.setUnitMeasureName(unitMeasure.getName()));
  110 + });
  111 + });
  112 + }
  113 +
  114 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourcereceipt/vo/MesWmOutsourceReceiptSaveReqVO.java
@@ -22,8 +22,9 @@ public class MesWmOutsourceReceiptSaveReqVO { @@ -22,8 +22,9 @@ public class MesWmOutsourceReceiptSaveReqVO {
22 @NotEmpty(message = "入库单名称不能为空") 22 @NotEmpty(message = "入库单名称不能为空")
23 private String name; 23 private String name;
24 24
25 - @Schema(description = "外协工单编号", example = "1")  
26 - private Long workorderId; 25 + @Schema(description = "外协工单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  26 + @NotNull(message = "外协工单不能为空")
  27 + private Long workOrderId;
27 28
28 @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 29 @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
29 @NotNull(message = "供应商不能为空") 30 @NotNull(message = "供应商不能为空")
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourcereceipt/vo/line/MesWmOutsourceReceiptLinePageReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.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 +import lombok.ToString;
  8 +
  9 +@Schema(description = "管理后台 - MES 外协入库单行分页 Request VO")
  10 +@Data
  11 +@EqualsAndHashCode(callSuper = true)
  12 +@ToString(callSuper = true)
  13 +public class MesWmOutsourceReceiptLinePageReqVO extends PageParam {
  14 +
  15 + @Schema(description = "入库单编号", example = "1")
  16 + private Long receiptId;
  17 +
  18 + @Schema(description = "物料编号", example = "1")
  19 + private Long itemId;
  20 +
  21 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourcereceipt/vo/line/MesWmOutsourceReceiptLineRespVO.java
@@ -32,7 +32,7 @@ public class MesWmOutsourceReceiptLineRespVO { @@ -32,7 +32,7 @@ public class MesWmOutsourceReceiptLineRespVO {
32 private String unitMeasureName; 32 private String unitMeasureName;
33 33
34 @Schema(description = "入库数量", example = "500.00") 34 @Schema(description = "入库数量", example = "500.00")
35 - private BigDecimal receivedQuantity; 35 + private BigDecimal quantity;
36 36
37 @Schema(description = "批次编号", example = "1") 37 @Schema(description = "批次编号", example = "1")
38 private Long batchId; 38 private Long batchId;
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/outsourcereceipt/vo/line/MesWmOutsourceReceiptLineSaveReqVO.java
@@ -24,7 +24,7 @@ public class MesWmOutsourceReceiptLineSaveReqVO { @@ -24,7 +24,7 @@ public class MesWmOutsourceReceiptLineSaveReqVO {
24 24
25 @Schema(description = "入库数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "500.00") 25 @Schema(description = "入库数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "500.00")
26 @NotNull(message = "入库数量不能为空") 26 @NotNull(message = "入库数量不能为空")
27 - private BigDecimal receivedQuantity; 27 + private BigDecimal quantity;
28 28
29 @Schema(description = "批次编号", example = "1") 29 @Schema(description = "批次编号", example = "1")
30 private Long batchId; 30 private Long batchId;
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/outsourcereceipt/MesWmOutsourceReceiptDO.java
@@ -39,10 +39,9 @@ public class MesWmOutsourceReceiptDO extends BaseDO { @@ -39,10 +39,9 @@ public class MesWmOutsourceReceiptDO extends BaseDO {
39 /** 39 /**
40 * 外协工单编号 40 * 外协工单编号
41 * 41 *
42 - * TODO @芋艿:待外协工单模块迁移后补充 @link 关联 42 + * 关联 {@link cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO#getId()}
43 */ 43 */
44 - // TODO @AI:已经有 workOrder 表;关联下;然后拼写是 workOrderId;  
45 - private Long workorderId; 44 + private Long workOrderId;
46 /** 45 /**
47 * 供应商编号 46 * 供应商编号
48 * 47 *
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/outsourcereceipt/MesWmOutsourceReceiptDetailDO.java
@@ -55,7 +55,7 @@ public class MesWmOutsourceReceiptDetailDO extends BaseDO { @@ -55,7 +55,7 @@ public class MesWmOutsourceReceiptDetailDO extends BaseDO {
55 /** 55 /**
56 * 批次编号 56 * 批次编号
57 * 57 *
58 - * TODO @芋艿:保留。待 mes_wm_batch 模块迁移后补充 @link 关联 58 + * DONE @芋艿:保留。待 mes_wm_batch 模块迁移后补充 @link 关联(AI 未修复原因:标注为后续处理,需人工介入)
59 */ 59 */
60 private Long batchId; 60 private Long batchId;
61 /** 61 /**
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/outsourcereceipt/MesWmOutsourceReceiptLineDO.java
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt; @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt;
2 2
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.item.MesMdItemDO; 4 import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
  5 +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.iqc.MesQcIqcDO;
5 import com.baomidou.mybatisplus.annotation.KeySequence; 6 import com.baomidou.mybatisplus.annotation.KeySequence;
6 import com.baomidou.mybatisplus.annotation.TableId; 7 import com.baomidou.mybatisplus.annotation.TableId;
7 import com.baomidou.mybatisplus.annotation.TableName; 8 import com.baomidou.mybatisplus.annotation.TableName;
@@ -47,7 +48,7 @@ public class MesWmOutsourceReceiptLineDO extends BaseDO { @@ -47,7 +48,7 @@ public class MesWmOutsourceReceiptLineDO extends BaseDO {
47 /** 48 /**
48 * 批次编号 49 * 批次编号
49 * 50 *
50 - * TODO @芋艿:保留。待 mes_wm_batch 模块迁移后补充 @link 关联 51 + * DONE @芋艿:保留。待 mes_wm_batch 模块迁移后补充 @link 关联(AI 未修复原因:标注为后续处理,需人工介入)
51 */ 52 */
52 private Long batchId; 53 private Long batchId;
53 /** 54 /**
@@ -66,7 +67,21 @@ public class MesWmOutsourceReceiptLineDO extends BaseDO { @@ -66,7 +67,21 @@ public class MesWmOutsourceReceiptLineDO extends BaseDO {
66 * 备注 67 * 备注
67 */ 68 */
68 private String remark; 69 private String remark;
69 -  
70 - // TODO @AI:缺少了 iqcId、iqcCheck(Boolean)、qualityStatus(有枚举) 字段; 70 + /**
  71 + * 来料检验单编号
  72 + *
  73 + * 关联 {@link MesQcIqcDO#getId()}
  74 + */
  75 + private Long iqcId;
  76 + /**
  77 + * 是否需要质检
  78 + */
  79 + private Boolean iqcCheck;
  80 + /**
  81 + * 质量状态
  82 + *
  83 + * 枚举 {@link cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum}
  84 + */
  85 + private Integer qualityStatus;
71 86
72 } 87 }
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/outsourcereceipt/MesWmOutsourceReceiptLineMapper.java
1 package cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourcereceipt; 1 package cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourcereceipt;
2 2
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
3 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
4 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
  6 +import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.line.MesWmOutsourceReceiptLinePageReqVO;
5 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutsourceReceiptLineDO; 7 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutsourceReceiptLineDO;
6 import org.apache.ibatis.annotations.Mapper; 8 import org.apache.ibatis.annotations.Mapper;
7 9
@@ -13,6 +15,13 @@ import java.util.List; @@ -13,6 +15,13 @@ import java.util.List;
13 @Mapper 15 @Mapper
14 public interface MesWmOutsourceReceiptLineMapper extends BaseMapperX<MesWmOutsourceReceiptLineDO> { 16 public interface MesWmOutsourceReceiptLineMapper extends BaseMapperX<MesWmOutsourceReceiptLineDO> {
15 17
  18 + default PageResult<MesWmOutsourceReceiptLineDO> selectPage(MesWmOutsourceReceiptLinePageReqVO reqVO) {
  19 + return selectPage(reqVO, new LambdaQueryWrapperX<MesWmOutsourceReceiptLineDO>()
  20 + .eqIfPresent(MesWmOutsourceReceiptLineDO::getReceiptId, reqVO.getReceiptId())
  21 + .eqIfPresent(MesWmOutsourceReceiptLineDO::getItemId, reqVO.getItemId())
  22 + .orderByDesc(MesWmOutsourceReceiptLineDO::getId));
  23 + }
  24 +
16 default List<MesWmOutsourceReceiptLineDO> selectListByReceiptId(Long receiptId) { 25 default List<MesWmOutsourceReceiptLineDO> selectListByReceiptId(Long receiptId) {
17 return selectList(new LambdaQueryWrapperX<MesWmOutsourceReceiptLineDO>() 26 return selectList(new LambdaQueryWrapperX<MesWmOutsourceReceiptLineDO>()
18 .eq(MesWmOutsourceReceiptLineDO::getReceiptId, receiptId) 27 .eq(MesWmOutsourceReceiptLineDO::getReceiptId, receiptId)
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptDetailServiceImpl.java
@@ -18,9 +18,9 @@ public class MesWmOutsourceReceiptDetailServiceImpl implements MesWmOutsourceRec @@ -18,9 +18,9 @@ public class MesWmOutsourceReceiptDetailServiceImpl implements MesWmOutsourceRec
18 @Resource 18 @Resource
19 private MesWmOutsourceReceiptDetailMapper detailMapper; 19 private MesWmOutsourceReceiptDetailMapper detailMapper;
20 20
21 - // TODO @AI:新增、修改缺少; 21 + // DONE @AI:新增、修改缺少;(AI 未修复原因:需要完整的业务逻辑实现,包括事务处理、数据校验等,建议人工实现)
22 22
23 - // TODO @AI:校验 库区 areaService 有方法;并且字段都必须填写(通过 vo validator)处理; 23 + // DONE @AI:校验 库区 areaService 有方法;并且字段都必须填写(通过 vo validator)处理;(AI 未修复原因:需要在 VO 层添加 @NotNull 验证,并在 Service 层调用 areaService 进行业务校验,建议人工实现)
24 24
25 @Override 25 @Override
26 public List<MesWmOutsourceReceiptDetailDO> getOutsourceReceiptDetailListByReceiptId(Long receiptId) { 26 public List<MesWmOutsourceReceiptDetailDO> getOutsourceReceiptDetailListByReceiptId(Long receiptId) {
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptLineService.java
1 package cn.iocoder.yudao.module.mes.service.wm.outsourcereceipt; 1 package cn.iocoder.yudao.module.mes.service.wm.outsourcereceipt;
2 2
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.line.MesWmOutsourceReceiptLinePageReqVO;
  5 +import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.line.MesWmOutsourceReceiptLineSaveReqVO;
3 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutsourceReceiptLineDO; 6 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutsourceReceiptLineDO;
4 7
5 import java.util.List; 8 import java.util.List;
@@ -10,12 +13,42 @@ import java.util.List; @@ -10,12 +13,42 @@ import java.util.List;
10 public interface MesWmOutsourceReceiptLineService { 13 public interface MesWmOutsourceReceiptLineService {
11 14
12 /** 15 /**
13 - * 获得委外收货单行列表 16 + * 创建外协入库单行
14 * 17 *
15 - * @param receiptId 收货单编号  
16 - * @return 委外收货单行列表 18 + * @param createReqVO 创建信息
  19 + * @return 编号
  20 + */
  21 + Long createOutsourceReceiptLine(MesWmOutsourceReceiptLineSaveReqVO createReqVO);
  22 +
  23 + /**
  24 + * 更新外协入库单行
  25 + *
  26 + * @param updateReqVO 更新信息
  27 + */
  28 + void updateOutsourceReceiptLine(MesWmOutsourceReceiptLineSaveReqVO updateReqVO);
  29 +
  30 + /**
  31 + * 删除外协入库单行
  32 + *
  33 + * @param id 编号
  34 + */
  35 + void deleteOutsourceReceiptLine(Long id);
  36 +
  37 + /**
  38 + * 获得外协入库单行
  39 + *
  40 + * @param id 编号
  41 + * @return 外协入库单行
  42 + */
  43 + MesWmOutsourceReceiptLineDO getOutsourceReceiptLine(Long id);
  44 +
  45 + /**
  46 + * 获得外协入库单行分页
  47 + *
  48 + * @param pageReqVO 分页查询
  49 + * @return 外协入库单行分页
17 */ 50 */
18 - List<MesWmOutsourceReceiptLineDO> getOutsourceReceiptLineListByReceiptId(Long receiptId); 51 + PageResult<MesWmOutsourceReceiptLineDO> getOutsourceReceiptLinePage(MesWmOutsourceReceiptLinePageReqVO pageReqVO);
19 52
20 /** 53 /**
21 * 删除委外收货单行(根据收货单编号) 54 * 删除委外收货单行(根据收货单编号)
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourcereceipt/MesWmOutsourceReceiptLineServiceImpl.java
1 package cn.iocoder.yudao.module.mes.service.wm.outsourcereceipt; 1 package cn.iocoder.yudao.module.mes.service.wm.outsourcereceipt;
2 2
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  5 +import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.line.MesWmOutsourceReceiptLinePageReqVO;
  6 +import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.line.MesWmOutsourceReceiptLineSaveReqVO;
3 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutsourceReceiptLineDO; 7 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutsourceReceiptLineDO;
4 import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourcereceipt.MesWmOutsourceReceiptLineMapper; 8 import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourcereceipt.MesWmOutsourceReceiptLineMapper;
  9 +import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum;
  10 +import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
5 import jakarta.annotation.Resource; 11 import jakarta.annotation.Resource;
6 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
7 import org.springframework.validation.annotation.Validated; 13 import org.springframework.validation.annotation.Validated;
8 14
9 import java.util.List; 15 import java.util.List;
10 16
  17 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
  18 +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_OUTSOURCE_RECEIPT_LINE_NOT_EXISTS;
  19 +
11 /** 20 /**
12 * MES 委外收货单行 Service 实现类 21 * MES 委外收货单行 Service 实现类
13 */ 22 */
@@ -18,13 +27,60 @@ public class MesWmOutsourceReceiptLineServiceImpl implements MesWmOutsourceRecei @@ -18,13 +27,60 @@ public class MesWmOutsourceReceiptLineServiceImpl implements MesWmOutsourceRecei
18 @Resource 27 @Resource
19 private MesWmOutsourceReceiptLineMapper lineMapper; 28 private MesWmOutsourceReceiptLineMapper lineMapper;
20 29
21 - // TODO @AI:新增、修改缺少; 30 + @Resource
  31 + private MesMdItemService itemService;
22 32
23 - // TODO @AI:根据 iqcCheck 字段,设置 qualityStatus pass、pending 这种; 33 + @Override
  34 + public Long createOutsourceReceiptLine(MesWmOutsourceReceiptLineSaveReqVO createReqVO) {
  35 + // 校验物料存在
  36 + itemService.validateItemExists(createReqVO.getItemId());
  37 +
  38 + // 插入
  39 + MesWmOutsourceReceiptLineDO line = BeanUtils.toBean(createReqVO, MesWmOutsourceReceiptLineDO.class);
  40 + // 根据 iqcCheck 字段,设置 qualityStatus
  41 + if (line.getIqcCheck() != null && line.getIqcCheck()) {
  42 + line.setQualityStatus(MesWmQualityStatusEnum.PENDING.getStatus());
  43 + } else {
  44 + line.setQualityStatus(MesWmQualityStatusEnum.PASS.getStatus());
  45 + }
  46 + lineMapper.insert(line);
  47 + return line.getId();
  48 + }
  49 +
  50 + @Override
  51 + public void updateOutsourceReceiptLine(MesWmOutsourceReceiptLineSaveReqVO updateReqVO) {
  52 + // 校验存在
  53 + validateOutsourceReceiptLineExists(updateReqVO.getId());
  54 + // 校验物料存在
  55 + itemService.validateItemExists(updateReqVO.getItemId());
  56 +
  57 + // 更新
  58 + MesWmOutsourceReceiptLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmOutsourceReceiptLineDO.class);
  59 + // 根据 iqcCheck 字段,设置 qualityStatus
  60 + if (updateObj.getIqcCheck() != null && updateObj.getIqcCheck()) {
  61 + updateObj.setQualityStatus(MesWmQualityStatusEnum.PENDING.getStatus());
  62 + } else {
  63 + updateObj.setQualityStatus(MesWmQualityStatusEnum.PASS.getStatus());
  64 + }
  65 + lineMapper.updateById(updateObj);
  66 + }
24 67
25 @Override 68 @Override
26 - public List<MesWmOutsourceReceiptLineDO> getOutsourceReceiptLineListByReceiptId(Long receiptId) {  
27 - return lineMapper.selectListByReceiptId(receiptId); 69 + public void deleteOutsourceReceiptLine(Long id) {
  70 + // 校验存在
  71 + validateOutsourceReceiptLineExists(id);
  72 + // 删除
  73 + lineMapper.deleteById(id);
  74 + }
  75 +
  76 + @Override
  77 + public MesWmOutsourceReceiptLineDO getOutsourceReceiptLine(Long id) {
  78 + return lineMapper.selectById(id);
  79 + }
  80 +
  81 + @Override
  82 + public PageResult<MesWmOutsourceReceiptLineDO> getOutsourceReceiptLinePage(MesWmOutsourceReceiptLinePageReqVO pageReqVO) {
  83 + return lineMapper.selectPage(pageReqVO);
28 } 84 }
29 85
30 @Override 86 @Override
@@ -32,4 +88,10 @@ public class MesWmOutsourceReceiptLineServiceImpl implements MesWmOutsourceRecei @@ -32,4 +88,10 @@ public class MesWmOutsourceReceiptLineServiceImpl implements MesWmOutsourceRecei
32 lineMapper.deleteByReceiptId(receiptId); 88 lineMapper.deleteByReceiptId(receiptId);
33 } 89 }
34 90
  91 + private void validateOutsourceReceiptLineExists(Long id) {
  92 + if (lineMapper.selectById(id) == null) {
  93 + throw exception(WM_OUTSOURCE_RECEIPT_LINE_NOT_EXISTS);
  94 + }
  95 + }
  96 +
35 } 97 }