gaoluyang
14 小时以前 bc9d77f6061a5c7f7deceaabc7c5ed6c17ad8c2f
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueServiceImpl.java
@@ -8,7 +8,7 @@
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;
@@ -20,8 +20,8 @@
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;
@@ -72,7 +72,7 @@
    @Resource
    private MesProTaskIssueMapper taskIssueMapper;
    @Resource
    private MesMdItemService mdmItemService;
    private MesMdmItemService mdmItemService;
    @Resource
    private MesWmTransactionService wmTransactionService;
    @Resource
@@ -91,11 +91,11 @@
        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());
        }
@@ -115,11 +115,11 @@
        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());
        }
@@ -275,7 +275,7 @@
        }
        // 批量查询物料信息(获取 unitMeasureId)
        Map<Long, MesMdItemDO> itemMap = mdmItemService.getItemMap(
        Map<Long, MesMdmItemDO> itemMap = mdmItemService.getItemMap(
                CollectionUtils.convertSet(lines, MesWmProductIssueLineDO::getItemId));
        // 获取明细列表,用于提取 batchCode
@@ -291,7 +291,7 @@
            }
            // 获取物料单位
            MesMdItemDO item = itemMap.get(line.getItemId());
            MesMdmItemDO item = itemMap.get(line.getItemId());
            Long unitMeasureId = item != null ? item.getUnitMeasureId() : null;
            // 获取批次号:取该行第一个明细的 batchCode
@@ -398,10 +398,10 @@
     */
    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);
        }
@@ -410,4 +410,9 @@
        }
    }
    @Override
    public List<MesWmProductIssueDO> getFinishedIssuesByWorkOrderId(Long workOrderId) {
        return issueMapper.selectListByWorkOrderIdAndStatus(workOrderId, MesWmProductIssueStatusEnum.FINISHED.getStatus());
    }
}