Commit f5e61242ce56951b2b7be3e737aa6b7a655bc7d5
1 parent
62699136
✨ feat(mes): 移除生产退料单数量校验逻辑及相关接口
Showing
3 changed files
with
28 additions
and
32 deletions
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,14 +142,6 @@ public class MesWmReturnIssueController { | ||
| 142 | return success(true); | 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 | // ==================== 拼接 VO ==================== | 145 | // ==================== 拼接 VO ==================== |
| 154 | 146 | ||
| 155 | private List<MesWmReturnIssueRespVO> buildRespVOList(List<MesWmReturnIssueDO> list) { | 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,12 +85,4 @@ public interface MesWmReturnIssueService { | ||
| 85 | */ | 85 | */ |
| 86 | void cancelReturnIssue(Long id); | 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,12 +8,14 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||
| 8 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; | 8 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; |
| 9 | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.MesWmReturnIssuePageReqVO; | 9 | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.MesWmReturnIssuePageReqVO; |
| 10 | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.MesWmReturnIssueSaveReqVO; | 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 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueDO; | 12 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueDO; |
| 12 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueDetailDO; | 13 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueDetailDO; |
| 13 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueLineDO; | 14 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueLineDO; |
| 14 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnissue.MesWmReturnIssueMapper; | 15 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnissue.MesWmReturnIssueMapper; |
| 15 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum; | 16 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum; |
| 16 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnIssueStatusEnum; | 17 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnIssueStatusEnum; |
| 18 | +import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; | ||
| 17 | import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService; | 19 | import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService; |
| 18 | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; | 20 | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; |
| 19 | import jakarta.annotation.Resource; | 21 | import jakarta.annotation.Resource; |
| @@ -23,6 +25,7 @@ import org.springframework.validation.annotation.Validated; | @@ -23,6 +25,7 @@ import org.springframework.validation.annotation.Validated; | ||
| 23 | 25 | ||
| 24 | import java.math.BigDecimal; | 26 | import java.math.BigDecimal; |
| 25 | import java.util.List; | 27 | import java.util.List; |
| 28 | +import java.util.Map; | ||
| 26 | 29 | ||
| 27 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 30 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 28 | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; | 31 | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; |
| @@ -45,6 +48,8 @@ public class MesWmReturnIssueServiceImpl implements MesWmReturnIssueService { | @@ -45,6 +48,8 @@ public class MesWmReturnIssueServiceImpl implements MesWmReturnIssueService { | ||
| 45 | private MesMdWorkstationService workstationService; | 48 | private MesMdWorkstationService workstationService; |
| 46 | @Resource | 49 | @Resource |
| 47 | private MesProWorkOrderService workOrderService; | 50 | private MesProWorkOrderService workOrderService; |
| 51 | + @Resource | ||
| 52 | + private MesMdItemService itemService; | ||
| 48 | 53 | ||
| 49 | @Override | 54 | @Override |
| 50 | @Transactional(rollbackFor = Exception.class) | 55 | @Transactional(rollbackFor = Exception.class) |
| @@ -133,12 +138,33 @@ public class MesWmReturnIssueServiceImpl implements MesWmReturnIssueService { | @@ -133,12 +138,33 @@ public class MesWmReturnIssueServiceImpl implements MesWmReturnIssueService { | ||
| 133 | @Override | 138 | @Override |
| 134 | @Transactional(rollbackFor = Exception.class) | 139 | @Transactional(rollbackFor = Exception.class) |
| 135 | public void stockReturnIssue(Long id) { | 140 | public void stockReturnIssue(Long id) { |
| 136 | - // 校验存在 + 待上架状态 | 141 | + // 1.1 校验存在 + 待上架状态 |
| 137 | MesWmReturnIssueDO issue = validateReturnIssueExists(id); | 142 | MesWmReturnIssueDO issue = validateReturnIssueExists(id); |
| 138 | if (ObjUtil.notEqual(MesWmReturnIssueStatusEnum.APPROVING.getStatus(), issue.getStatus())) { | 143 | if (ObjUtil.notEqual(MesWmReturnIssueStatusEnum.APPROVING.getStatus(), issue.getStatus())) { |
| 139 | throw exception(WM_RETURN_ISSUE_NOT_APPROVING); | 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 | issueMapper.updateById(new MesWmReturnIssueDO() | 168 | issueMapper.updateById(new MesWmReturnIssueDO() |
| 143 | .setId(id).setStatus(MesWmReturnIssueStatusEnum.APPROVED.getStatus())); | 169 | .setId(id).setStatus(MesWmReturnIssueStatusEnum.APPROVED.getStatus())); |
| 144 | } | 170 | } |
| @@ -185,20 +211,6 @@ public class MesWmReturnIssueServiceImpl implements MesWmReturnIssueService { | @@ -185,20 +211,6 @@ public class MesWmReturnIssueServiceImpl implements MesWmReturnIssueService { | ||
| 185 | } | 211 | } |
| 186 | 212 | ||
| 187 | @Override | 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 | public MesWmReturnIssueDO validateReturnIssueExists(Long id) { | 214 | public MesWmReturnIssueDO validateReturnIssueExists(Long id) { |
| 203 | MesWmReturnIssueDO issue = issueMapper.selectById(id); | 215 | MesWmReturnIssueDO issue = issueMapper.selectById(id); |
| 204 | if (issue == null) { | 216 | if (issue == null) { |