gaoluyang
10 小时以前 cea8396d93b31fe6037a0558febcabb2169363a8
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueController.java
@@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.mes.controller.admin.wm.productissue;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
@@ -11,12 +12,13 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.MesWmProductIssuePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.MesWmProductIssueRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.MesWmProductIssueSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.md.client.MesMdClientDO;
import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
import cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO;
import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueDO;
import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService;
import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService;
import cn.iocoder.yudao.module.mes.service.pro.task.MesProTaskService;
import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
@@ -55,7 +57,7 @@
    @Resource
    private MesProTaskService taskService;
    @Resource
    private MesMdClientService clientService;
    private CrmCustomerApi customerApi;
    @PostMapping("/create")
    @Operation(summary = "创建领料出库单")
@@ -171,19 +173,29 @@
                convertSet(list, MesWmProductIssueDO::getWorkOrderId));
        Map<Long, MesProTaskDO> taskMap = taskService.getTaskMap(
                convertSet(list, MesWmProductIssueDO::getTaskId));
        Map<Long, MesMdClientDO> clientMap = clientService.getClientMap(
        Map<Long, CrmCustomerRespDTO> clientMap = customerApi.getCustomerMap(
                convertSet(workOrderMap.values(), MesProWorkOrderDO::getClientId));
        // 2. 构建结果
        return BeanUtils.toBean(list, MesWmProductIssueRespVO.class, vo -> {
            MapUtils.findAndThen(workstationMap, vo.getWorkstationId(),
                    workstation -> vo.setWorkstationName(workstation.getName()));
            MapUtils.findAndThen(taskMap, vo.getTaskId(), task ->
                    vo.setTaskCode(task.getCode()).setTaskName(task.getName()));
            MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(), workOrder -> {
                vo.setWorkOrderCode(workOrder.getCode());
                MapUtils.findAndThen(clientMap, workOrder.getClientId(), client ->
                        vo.setClientCode(client.getCode()).setClientName(client.getName()));
            });
            // 工作站名称以单据上的文本为准(支持手工填写);为空时才按编号反查,兼容历史数据
            if (StrUtil.isEmpty(vo.getWorkstationName())) {
                MapUtils.findAndThen(workstationMap, vo.getWorkstationId(),
                        workstation -> vo.setWorkstationName(workstation.getName()));
            }
            // 生产任务编码同理;taskName 不落库,仍按编号反查
            if (StrUtil.isEmpty(vo.getTaskCode())) {
                MapUtils.findAndThen(taskMap, vo.getTaskId(), task ->
                        vo.setTaskCode(task.getCode()).setTaskName(task.getName()));
            }
            // 生产工单编号同理
            if (StrUtil.isEmpty(vo.getWorkOrderCode())) {
                MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(), workOrder ->
                        vo.setWorkOrderCode(workOrder.getCode()));
            }
            // 客户名称:仍按 workOrderId → workOrder.clientId 反查;手填单没有工单编号时保持为空
            MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(), workOrder ->
                    MapUtils.findAndThen(clientMap, workOrder.getClientId(), client ->
                            vo.setClientName(client.getName())));
        });
    }