Commit f5e61242ce56951b2b7be3e737aa6b7a655bc7d5

Authored by YunaiV
1 parent 62699136

✨ feat(mes): 移除生产退料单数量校验逻辑及相关接口

yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnissue/MesWmReturnIssueController.java
... ... @@ -142,14 +142,6 @@ public class MesWmReturnIssueController {
142 142 return success(true);
143 143 }
144 144  
145   - @GetMapping("/check-quantity")
146   - @Operation(summary = "校验生产退料单数量", description = "校验每行明细数量之和是否等于行退料数量")
147   - @Parameter(name = "id", description = "编号", required = true)
148   - @PreAuthorize("@ss.hasPermission('mes:wm-return-issue:query')")
149   - public CommonResult<Boolean> checkReturnIssueQuantity(@RequestParam("id") Long id) {
150   - return success(issueService.checkReturnIssueQuantity(id));
151   - }
152   -
153 145 // ==================== 拼接 VO ====================
154 146  
155 147 private List<MesWmReturnIssueRespVO> buildRespVOList(List<MesWmReturnIssueDO> list) {
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueService.java
... ... @@ -85,12 +85,4 @@ public interface MesWmReturnIssueService {
85 85 */
86 86 void cancelReturnIssue(Long id);
87 87  
88   - /**
89   - * 校验生产退料单的数量:每行明细数量之和是否等于行退料数量
90   - *
91   - * @param id 编号
92   - * @return 是否全部一致
93   - */
94   - Boolean checkReturnIssueQuantity(Long id);
95   -
96 88 }
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueServiceImpl.java
... ... @@ -8,12 +8,14 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
8 8 import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
9 9 import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.MesWmReturnIssuePageReqVO;
10 10 import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.MesWmReturnIssueSaveReqVO;
  11 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
11 12 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueDO;
12 13 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueDetailDO;
13 14 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueLineDO;
14 15 import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnissue.MesWmReturnIssueMapper;
15 16 import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum;
16 17 import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnIssueStatusEnum;
  18 +import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
17 19 import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService;
18 20 import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
19 21 import jakarta.annotation.Resource;
... ... @@ -23,6 +25,7 @@ import org.springframework.validation.annotation.Validated;
23 25  
24 26 import java.math.BigDecimal;
25 27 import java.util.List;
  28 +import java.util.Map;
26 29  
27 30 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
28 31 import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
... ... @@ -45,6 +48,8 @@ public class MesWmReturnIssueServiceImpl implements MesWmReturnIssueService {
45 48 private MesMdWorkstationService workstationService;
46 49 @Resource
47 50 private MesProWorkOrderService workOrderService;
  51 + @Resource
  52 + private MesMdItemService itemService;
48 53  
49 54 @Override
50 55 @Transactional(rollbackFor = Exception.class)
... ... @@ -133,12 +138,33 @@ public class MesWmReturnIssueServiceImpl implements MesWmReturnIssueService {
133 138 @Override
134 139 @Transactional(rollbackFor = Exception.class)
135 140 public void stockReturnIssue(Long id) {
136   - // 校验存在 + 待上架状态
  141 + // 1.1 校验存在 + 待上架状态
137 142 MesWmReturnIssueDO issue = validateReturnIssueExists(id);
138 143 if (ObjUtil.notEqual(MesWmReturnIssueStatusEnum.APPROVING.getStatus(), issue.getStatus())) {
139 144 throw exception(WM_RETURN_ISSUE_NOT_APPROVING);
140 145 }
141   - // 入库上架(待上架 → 待执行退料)
  146 + // 1.2 检查每个行的明细数量是否完成上架
  147 + List<MesWmReturnIssueLineDO> lines = issueLineService.getReturnIssueLineListByIssueId(id);
  148 + if (CollUtil.isNotEmpty(lines)) {
  149 + // 批量查询所有明细
  150 + List<MesWmReturnIssueDetailDO> allDetails = issueDetailService.getReturnIssueDetailListByIssueId(id);
  151 + Map<Long, List<MesWmReturnIssueDetailDO>> detailMap = CollectionUtils.convertMultiMap(
  152 + allDetails, MesWmReturnIssueDetailDO::getLineId);
  153 + // 检查每行的明细数量
  154 + for (MesWmReturnIssueLineDO line : lines) {
  155 + List<MesWmReturnIssueDetailDO> details = detailMap.getOrDefault(line.getId(), List.of());
  156 + BigDecimal totalDetailQuantity = CollectionUtils.getSumValue(details,
  157 + MesWmReturnIssueDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO);
  158 + // 对比行数量与明细总数量,不满足直接抛出
  159 + if (line.getQuantity().compareTo(totalDetailQuantity) > 0) {
  160 + MesMdItemDO item = itemService.validateItemExists(line.getItemId());
  161 + throw exception(WM_RETURN_ISSUE_DETAIL_QUANTITY_MISMATCH,
  162 + item.getCode() + " " + item.getName() + " 未完成上架");
  163 + }
  164 + }
  165 + }
  166 +
  167 + // 2. 入库上架(待上架 → 待执行退料)
142 168 issueMapper.updateById(new MesWmReturnIssueDO()
143 169 .setId(id).setStatus(MesWmReturnIssueStatusEnum.APPROVED.getStatus()));
144 170 }
... ... @@ -185,20 +211,6 @@ public class MesWmReturnIssueServiceImpl implements MesWmReturnIssueService {
185 211 }
186 212  
187 213 @Override
188   - public Boolean checkReturnIssueQuantity(Long id) {
189   - List<MesWmReturnIssueLineDO> lines = issueLineService.getReturnIssueLineListByIssueId(id);
190   - for (MesWmReturnIssueLineDO line : lines) {
191   - List<MesWmReturnIssueDetailDO> details = issueDetailService.getReturnIssueDetailListByLineId(line.getId());
192   - BigDecimal totalDetailQty = CollectionUtils.getSumValue(details,
193   - MesWmReturnIssueDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO);
194   - if (line.getQuantity() != null && totalDetailQty.compareTo(line.getQuantity()) != 0) {
195   - return false;
196   - }
197   - }
198   - return true;
199   - }
200   -
201   - @Override
202 214 public MesWmReturnIssueDO validateReturnIssueExists(Long id) {
203 215 MesWmReturnIssueDO issue = issueMapper.selectById(id);
204 216 if (issue == null) {
... ...