| | |
| | | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.MesWmProductIssuePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.MesWmProductIssueSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskIssueDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueDetailDO; |
| | |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmProductIssueStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockReserveBizTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.task.MesProTaskIssueService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.task.MesProTaskService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; |
| | |
| | | @Resource |
| | | private MesProTaskIssueMapper taskIssueMapper; |
| | | @Resource |
| | | private MesMdItemService mdmItemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesWmTransactionService wmTransactionService; |
| | | @Resource |
| | |
| | | validateProductIssueSaveData(createReqVO); |
| | | |
| | | // 2. 从 task 自动带入 workOrderId 和 workstationId |
| | | MesProTaskDO task = taskService.validateTaskExists(createReqVO.getTaskId()); |
| | | if (createReqVO.getWorkOrderId() == null) { |
| | | MesProTaskDO task = createReqVO.getTaskId() != null ? taskService.validateTaskExists(createReqVO.getTaskId()) : null; |
| | | if (task != null && createReqVO.getWorkOrderId() == null) { |
| | | createReqVO.setWorkOrderId(task.getWorkOrderId()); |
| | | } |
| | | if (createReqVO.getWorkstationId() == null) { |
| | | if (task != null && createReqVO.getWorkstationId() == null) { |
| | | createReqVO.setWorkstationId(task.getWorkstationId()); |
| | | } |
| | | |
| | |
| | | validateProductIssueSaveData(updateReqVO); |
| | | |
| | | // 2. 从 task 自动带入 workOrderId 和 workstationId |
| | | MesProTaskDO task = taskService.validateTaskExists(updateReqVO.getTaskId()); |
| | | if (updateReqVO.getWorkOrderId() == null) { |
| | | MesProTaskDO task = updateReqVO.getTaskId() != null ? taskService.validateTaskExists(updateReqVO.getTaskId()) : null; |
| | | if (task != null && updateReqVO.getWorkOrderId() == null) { |
| | | updateReqVO.setWorkOrderId(task.getWorkOrderId()); |
| | | } |
| | | if (updateReqVO.getWorkstationId() == null) { |
| | | if (task != null && updateReqVO.getWorkstationId() == null) { |
| | | updateReqVO.setWorkstationId(task.getWorkstationId()); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | // 批量查询物料信息(获取 unitMeasureId) |
| | | Map<Long, MesMdItemDO> itemMap = mdmItemService.getItemMap( |
| | | Map<Long, MesMdmItemDO> itemMap = mdmItemService.getItemMap( |
| | | CollectionUtils.convertSet(lines, MesWmProductIssueLineDO::getItemId)); |
| | | |
| | | // 获取明细列表,用于提取 batchCode |
| | |
| | | } |
| | | |
| | | // 获取物料单位 |
| | | MesMdItemDO item = itemMap.get(line.getItemId()); |
| | | MesMdmItemDO item = itemMap.get(line.getItemId()); |
| | | Long unitMeasureId = item != null ? item.getUnitMeasureId() : null; |
| | | |
| | | // 获取批次号:取该行第一个明细的 batchCode |
| | |
| | | */ |
| | | private void validateProductIssueSaveData(MesWmProductIssueSaveReqVO reqVO) { |
| | | validateCodeUnique(reqVO.getId(), reqVO.getCode()); |
| | | // 校验 task 存在 |
| | | MesProTaskDO task = taskService.validateTaskExists(reqVO.getTaskId()); |
| | | // 校验 task 关联的工单已确认 |
| | | Long workOrderId = reqVO.getWorkOrderId() != null ? reqVO.getWorkOrderId() : task.getWorkOrderId(); |
| | | // 校验 task 存在(生产任务非必填,未选时跳过) |
| | | MesProTaskDO task = reqVO.getTaskId() != null ? taskService.validateTaskExists(reqVO.getTaskId()) : null; |
| | | // 校验关联的工单已确认 |
| | | Long workOrderId = reqVO.getWorkOrderId() != null ? reqVO.getWorkOrderId() : (task != null ? task.getWorkOrderId() : null); |
| | | if (workOrderId != null) { |
| | | workOrderService.validateWorkOrderConfirmed(workOrderId); |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public List<MesWmProductIssueDO> getFinishedIssuesByWorkOrderId(Long workOrderId) { |
| | | return issueMapper.selectListByWorkOrderIdAndStatus(workOrderId, MesWmProductIssueStatusEnum.FINISHED.getStatus()); |
| | | } |
| | | |
| | | } |