Commit bcad0a896f93c0178d76a75112bb4fd5370ff970

Authored by YunaiV
1 parent 6c2da289

feat(mes): 移除不必要的字段,优化流转卡和工序记录的校验逻辑,添加工序记录列表组件

yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/card/vo/MesProCardSaveReqVO.java
@@ -29,12 +29,6 @@ public class MesProCardSaveReqVO { @@ -29,12 +29,6 @@ public class MesProCardSaveReqVO {
29 @NotNull(message = "产品物料不能为空") 29 @NotNull(message = "产品物料不能为空")
30 private Long itemId; 30 private Long itemId;
31 31
32 - @Schema(description = "规格型号", example = "100x200mm")  
33 - private String specification;  
34 -  
35 - @Schema(description = "单位编号", example = "300")  
36 - private Long unitMeasureId;  
37 -  
38 @Schema(description = "流转数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") 32 @Schema(description = "流转数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00")
39 @NotNull(message = "流转数量不能为空") 33 @NotNull(message = "流转数量不能为空")
40 private BigDecimal transferedQuantity; 34 private BigDecimal transferedQuantity;
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/card/MesProCardDO.java
@@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.pro.card; @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.pro.card;
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.md.unitmeasure.MesMdUnitMeasureDO;  
6 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; 5 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
7 import com.baomidou.mybatisplus.annotation.KeySequence; 6 import com.baomidou.mybatisplus.annotation.KeySequence;
8 import com.baomidou.mybatisplus.annotation.TableId; 7 import com.baomidou.mybatisplus.annotation.TableId;
@@ -52,16 +51,6 @@ public class MesProCardDO extends BaseDO { @@ -52,16 +51,6 @@ public class MesProCardDO extends BaseDO {
52 */ 51 */
53 private Long itemId; 52 private Long itemId;
54 /** 53 /**
55 - * 规格型号  
56 - */  
57 - private String specification;  
58 - /**  
59 - * 单位编号  
60 - *  
61 - * 关联 {@link MesMdUnitMeasureDO#getId()}  
62 - */  
63 - private Long unitMeasureId;  
64 - /**  
65 * 条码地址 54 * 条码地址
66 * 55 *
67 * TODO @芋艿:条码生成功能,需等条码模块(wm_barcode)迁移后再对接 56 * TODO @芋艿:条码生成功能,需等条码模块(wm_barcode)迁移后再对接
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/cal/team/MesCalTeamShiftService.java
@@ -27,7 +27,6 @@ public interface MesCalTeamShiftService { @@ -27,7 +27,6 @@ public interface MesCalTeamShiftService {
27 */ 27 */
28 List<MesCalTeamShiftDO> getTeamShiftList(MesCalTeamShiftListReqVO reqVO); 28 List<MesCalTeamShiftDO> getTeamShiftList(MesCalTeamShiftListReqVO reqVO);
29 29
30 - // TODO @AI:评审下,为什么不调用!  
31 /** 30 /**
32 * 根据排班计划编号删除所有排班记录 31 * 根据排班计划编号删除所有排班记录
33 * 32 *
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/checkrecord/MesDvCheckRecordLineServiceImpl.java
@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.mes.controller.admin.dv.checkrecord.vo.line.MesDv @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.mes.controller.admin.dv.checkrecord.vo.line.MesDv
7 import cn.iocoder.yudao.module.mes.dal.dataobject.dv.checkrecord.MesDvCheckRecordLineDO; 7 import cn.iocoder.yudao.module.mes.dal.dataobject.dv.checkrecord.MesDvCheckRecordLineDO;
8 import cn.iocoder.yudao.module.mes.dal.mysql.dv.checkrecord.MesDvCheckRecordLineMapper; 8 import cn.iocoder.yudao.module.mes.dal.mysql.dv.checkrecord.MesDvCheckRecordLineMapper;
9 import jakarta.annotation.Resource; 9 import jakarta.annotation.Resource;
  10 +import org.springframework.context.annotation.Lazy;
10 import org.springframework.stereotype.Service; 11 import org.springframework.stereotype.Service;
11 import org.springframework.validation.annotation.Validated; 12 import org.springframework.validation.annotation.Validated;
12 13
@@ -27,9 +28,16 @@ public class MesDvCheckRecordLineServiceImpl implements MesDvCheckRecordLineServ @@ -27,9 +28,16 @@ public class MesDvCheckRecordLineServiceImpl implements MesDvCheckRecordLineServ
27 @Resource 28 @Resource
28 private MesDvCheckRecordLineMapper checkRecordLineMapper; 29 private MesDvCheckRecordLineMapper checkRecordLineMapper;
29 30
  31 + @Resource
  32 + @Lazy
  33 + private MesDvCheckRecordService checkRecordService;
  34 +
30 @Override 35 @Override
31 public Long createCheckRecordLine(MesDvCheckRecordLineSaveReqVO createReqVO) { 36 public Long createCheckRecordLine(MesDvCheckRecordLineSaveReqVO createReqVO) {
32 - // TODO @AI:校验下存在 37 + // 1. 校验点检记录存在
  38 + checkRecordService.validateCheckRecordExists(createReqVO.getRecordId());
  39 +
  40 + // 2. 插入
33 MesDvCheckRecordLineDO line = BeanUtils.toBean(createReqVO, MesDvCheckRecordLineDO.class); 41 MesDvCheckRecordLineDO line = BeanUtils.toBean(createReqVO, MesDvCheckRecordLineDO.class);
34 checkRecordLineMapper.insert(line); 42 checkRecordLineMapper.insert(line);
35 return line.getId(); 43 return line.getId();
@@ -37,11 +45,12 @@ public class MesDvCheckRecordLineServiceImpl implements MesDvCheckRecordLineServ @@ -37,11 +45,12 @@ public class MesDvCheckRecordLineServiceImpl implements MesDvCheckRecordLineServ
37 45
38 @Override 46 @Override
39 public void updateCheckRecordLine(MesDvCheckRecordLineSaveReqVO updateReqVO) { 47 public void updateCheckRecordLine(MesDvCheckRecordLineSaveReqVO updateReqVO) {
40 - // TODO @AI:校验下存在  
41 - // 校验存在 48 + // 1.1 校验行存在
42 validateCheckRecordLineExists(updateReqVO.getId()); 49 validateCheckRecordLineExists(updateReqVO.getId());
  50 + // 1.2 校验点检记录存在
  51 + checkRecordService.validateCheckRecordExists(updateReqVO.getRecordId());
43 52
44 - // 更新 53 + // 2. 更新
45 MesDvCheckRecordLineDO updateObj = BeanUtils.toBean(updateReqVO, MesDvCheckRecordLineDO.class); 54 MesDvCheckRecordLineDO updateObj = BeanUtils.toBean(updateReqVO, MesDvCheckRecordLineDO.class);
46 checkRecordLineMapper.updateById(updateObj); 55 checkRecordLineMapper.updateById(updateObj);
47 } 56 }
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonConfigServiceImpl.java
@@ -6,10 +6,13 @@ import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.config.MesProAn @@ -6,10 +6,13 @@ import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.config.MesProAn
6 import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.config.MesProAndonConfigSaveReqVO; 6 import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.config.MesProAndonConfigSaveReqVO;
7 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonConfigDO; 7 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonConfigDO;
8 import cn.iocoder.yudao.module.mes.dal.mysql.pro.andon.MesProAndonConfigMapper; 8 import cn.iocoder.yudao.module.mes.dal.mysql.pro.andon.MesProAndonConfigMapper;
  9 +import cn.iocoder.yudao.module.system.api.permission.RoleApi;
  10 +import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
9 import jakarta.annotation.Resource; 11 import jakarta.annotation.Resource;
10 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
11 import org.springframework.validation.annotation.Validated; 13 import org.springframework.validation.annotation.Validated;
12 14
  15 +import java.util.Collections;
13 import java.util.List; 16 import java.util.List;
14 17
15 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 18 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -27,11 +30,17 @@ public class MesProAndonConfigServiceImpl implements MesProAndonConfigService { @@ -27,11 +30,17 @@ public class MesProAndonConfigServiceImpl implements MesProAndonConfigService {
27 @Resource 30 @Resource
28 private MesProAndonConfigMapper andonConfigMapper; 31 private MesProAndonConfigMapper andonConfigMapper;
29 32
  33 + @Resource
  34 + private AdminUserApi adminUserApi;
  35 + @Resource
  36 + private RoleApi roleApi;
  37 +
30 @Override 38 @Override
31 public Long createAndonConfig(MesProAndonConfigSaveReqVO createReqVO) { 39 public Long createAndonConfig(MesProAndonConfigSaveReqVO createReqVO) {
32 - // TODO @AI:userid、roleid 存在; 40 + // 1. 校验处置人/角色存在
  41 + validateHandlerUserAndRole(createReqVO);
33 42
34 - // 插入 43 + // 2. 插入
35 MesProAndonConfigDO config = BeanUtils.toBean(createReqVO, MesProAndonConfigDO.class); 44 MesProAndonConfigDO config = BeanUtils.toBean(createReqVO, MesProAndonConfigDO.class);
36 andonConfigMapper.insert(config); 45 andonConfigMapper.insert(config);
37 return config.getId(); 46 return config.getId();
@@ -39,11 +48,12 @@ public class MesProAndonConfigServiceImpl implements MesProAndonConfigService { @@ -39,11 +48,12 @@ public class MesProAndonConfigServiceImpl implements MesProAndonConfigService {
39 48
40 @Override 49 @Override
41 public void updateAndonConfig(MesProAndonConfigSaveReqVO updateReqVO) { 50 public void updateAndonConfig(MesProAndonConfigSaveReqVO updateReqVO) {
42 - // 校验存在 51 + // 1.1 校验存在
43 validateAndonConfigExists(updateReqVO.getId()); 52 validateAndonConfigExists(updateReqVO.getId());
44 - // TODO @AI:userid、roleid 存在; 53 + // 1.2 校验处置人/角色存在
  54 + validateHandlerUserAndRole(updateReqVO);
45 55
46 - // 更新 56 + // 2. 更新
47 MesProAndonConfigDO updateObj = BeanUtils.toBean(updateReqVO, MesProAndonConfigDO.class); 57 MesProAndonConfigDO updateObj = BeanUtils.toBean(updateReqVO, MesProAndonConfigDO.class);
48 andonConfigMapper.updateById(updateObj); 58 andonConfigMapper.updateById(updateObj);
49 } 59 }
@@ -81,4 +91,15 @@ public class MesProAndonConfigServiceImpl implements MesProAndonConfigService { @@ -81,4 +91,15 @@ public class MesProAndonConfigServiceImpl implements MesProAndonConfigService {
81 return andonConfigMapper.selectList(); 91 return andonConfigMapper.selectList();
82 } 92 }
83 93
  94 + // ==================== 校验方法 ====================
  95 +
  96 + private void validateHandlerUserAndRole(MesProAndonConfigSaveReqVO reqVO) {
  97 + if (reqVO.getHandlerUserId() != null) {
  98 + adminUserApi.validateUser(reqVO.getHandlerUserId());
  99 + }
  100 + if (reqVO.getHandlerRoleId() != null) {
  101 + roleApi.validRoleList(Collections.singleton(reqVO.getHandlerRoleId()));
  102 + }
  103 + }
  104 +
84 } 105 }
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/card/MesProCardProcessServiceImpl.java
@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.mes.controller.admin.pro.card.vo.process.MesProCa @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.mes.controller.admin.pro.card.vo.process.MesProCa
7 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.card.MesProCardProcessDO; 7 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.card.MesProCardProcessDO;
8 import cn.iocoder.yudao.module.mes.dal.mysql.pro.card.MesProCardProcessMapper; 8 import cn.iocoder.yudao.module.mes.dal.mysql.pro.card.MesProCardProcessMapper;
9 import jakarta.annotation.Resource; 9 import jakarta.annotation.Resource;
  10 +import org.springframework.context.annotation.Lazy;
10 import org.springframework.stereotype.Service; 11 import org.springframework.stereotype.Service;
11 import org.springframework.validation.annotation.Validated; 12 import org.springframework.validation.annotation.Validated;
12 13
@@ -25,9 +26,16 @@ public class MesProCardProcessServiceImpl implements MesProCardProcessService { @@ -25,9 +26,16 @@ public class MesProCardProcessServiceImpl implements MesProCardProcessService {
25 @Resource 26 @Resource
26 private MesProCardProcessMapper cardProcessMapper; 27 private MesProCardProcessMapper cardProcessMapper;
27 28
  29 + @Resource
  30 + @Lazy
  31 + private MesProCardService cardService;
  32 +
28 @Override 33 @Override
29 public Long createCardProcess(MesProCardProcessSaveReqVO createReqVO) { 34 public Long createCardProcess(MesProCardProcessSaveReqVO createReqVO) {
30 - // TODO @AI:card 存在,通过 cardService 的 validateCardExists() 方法校验 35 + // 1. 校验流转卡存在
  36 + cardService.validateCardExists(createReqVO.getCardId());
  37 +
  38 + // 2. 插入
31 MesProCardProcessDO cardProcess = BeanUtils.toBean(createReqVO, MesProCardProcessDO.class); 39 MesProCardProcessDO cardProcess = BeanUtils.toBean(createReqVO, MesProCardProcessDO.class);
32 cardProcessMapper.insert(cardProcess); 40 cardProcessMapper.insert(cardProcess);
33 return cardProcess.getId(); 41 return cardProcess.getId();
@@ -35,9 +43,10 @@ public class MesProCardProcessServiceImpl implements MesProCardProcessService { @@ -35,9 +43,10 @@ public class MesProCardProcessServiceImpl implements MesProCardProcessService {
35 43
36 @Override 44 @Override
37 public void updateCardProcess(MesProCardProcessSaveReqVO updateReqVO) { 45 public void updateCardProcess(MesProCardProcessSaveReqVO updateReqVO) {
38 - // 1. 校验存在 46 + // 1.1 校验存在
39 validateCardProcessExists(updateReqVO.getId()); 47 validateCardProcessExists(updateReqVO.getId());
40 - // TODO @AI:card 存在,通过 cardService 的 validateCardExists() 方法校验 48 + // 1.2 校验流转卡存在
  49 + cardService.validateCardExists(updateReqVO.getCardId());
41 50
42 // 2. 更新 51 // 2. 更新
43 MesProCardProcessDO updateObj = BeanUtils.toBean(updateReqVO, MesProCardProcessDO.class); 52 MesProCardProcessDO updateObj = BeanUtils.toBean(updateReqVO, MesProCardProcessDO.class);
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/card/MesProCardService.java
@@ -36,6 +36,13 @@ public interface MesProCardService { @@ -36,6 +36,13 @@ public interface MesProCardService {
36 void deleteCard(Long id); 36 void deleteCard(Long id);
37 37
38 /** 38 /**
  39 + * 校验生产流转卡存在
  40 + *
  41 + * @param id 编号
  42 + */
  43 + void validateCardExists(Long id);
  44 +
  45 + /**
39 * 获得生产流转卡 46 * 获得生产流转卡
40 * 47 *
41 * @param id 编号 48 * @param id 编号
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/card/MesProCardServiceImpl.java
@@ -84,7 +84,8 @@ public class MesProCardServiceImpl implements MesProCardService { @@ -84,7 +84,8 @@ public class MesProCardServiceImpl implements MesProCardService {
84 84
85 // ==================== 校验方法 ==================== 85 // ==================== 校验方法 ====================
86 86
87 - private void validateCardExists(Long id) { 87 + @Override
  88 + public void validateCardExists(Long id) {
88 if (cardMapper.selectById(id) == null) { 89 if (cardMapper.selectById(id) == null) {
89 throw exception(PRO_CARD_NOT_EXISTS); 90 throw exception(PRO_CARD_NOT_EXISTS);
90 } 91 }