xiaoyi
昨天 8782476e9cb4480be5da588888d08022b7942d0c
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/MesWmBatchController.java
@@ -12,6 +12,10 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchSalesTargetRespVO;
import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
import cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO;
import cn.iocoder.yudao.module.aftersales.api.AfterSaleTicketApi;
import cn.iocoder.yudao.module.aftersales.api.dto.AfterSaleTicketRespDTO;
import cn.iocoder.yudao.module.srm.api.certificate.SrmSupplierCertificateApi;
import cn.iocoder.yudao.module.srm.api.certificate.dto.SrmSupplierCertificateRespDTO;
import cn.iocoder.yudao.module.srm.api.supplier.SrmSupplierApi;
import cn.iocoder.yudao.module.srm.api.supplier.dto.SrmSupplierRespDTO;
import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
@@ -44,9 +48,12 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -66,6 +73,10 @@
    private MdmUnitMeasureApi mdmUnitMeasureApi;
    @Resource
    private SrmSupplierApi srmSupplierApi;
    @Resource
    private SrmSupplierCertificateApi srmSupplierCertificateApi;
    @Resource
    private AfterSaleTicketApi afterSaleTicketApi;
    @Resource
    private CrmCustomerApi customerApi;
    @Resource
@@ -132,6 +143,42 @@
        return success(buildSalesTargetRespVOList(list));
    }
    @GetMapping("/certificates")
    @Operation(summary = "批次原材料合规证书",
            description = "按批次的采购来源供应商查询合规证书;证书过期标记由 SRM 判定")
    @Parameter(name = "code", description = "批次编码", required = true, example = "BATCH20250314001")
    @PreAuthorize("@ss.hasPermission('mes:wm-batch:query')")
    public CommonResult<List<SrmSupplierCertificateRespDTO>> getCertificateList(@RequestParam("code") @Valid String code) {
        List<SrmSupplierCertificateRespDTO> result = new ArrayList<>();
        Set<Long> vendorIds = batchService.getPurchaseSourceList(code).stream()
                .map(MesWmBatchPurchaseSourceRespVO::getVendorId)
                .filter(Objects::nonNull).collect(Collectors.toSet());
        for (Long vendorId : vendorIds) {
            List<SrmSupplierCertificateRespDTO> list =
                    srmSupplierCertificateApi.getCertificatesBySupplierId(vendorId).getCheckedData();
            if (list != null) result.addAll(list);
        }
        return success(result);
    }
    @GetMapping("/aftersales")
    @Operation(summary = "批次售后故障记录",
            description = "按批次销售去向关联的销售订单号查询售后工单,用于质量追溯延伸到售后环节")
    @Parameter(name = "code", description = "批次编码", required = true, example = "BATCH20250314001")
    @PreAuthorize("@ss.hasPermission('mes:wm-batch:query')")
    public CommonResult<List<AfterSaleTicketRespDTO>> getAfterSaleList(@RequestParam("code") @Valid String code) {
        List<AfterSaleTicketRespDTO> result = new ArrayList<>();
        Set<String> saleOrderNos = batchService.getSalesTargetList(code).stream()
                .map(MesWmBatchSalesTargetRespVO::getSalesOrderCode)
                .filter(Objects::nonNull).filter(s -> !s.isBlank()).collect(Collectors.toSet());
        for (String saleOrderNo : saleOrderNos) {
            List<AfterSaleTicketRespDTO> list =
                    afterSaleTicketApi.getTicketsBySaleOrderNo(saleOrderNo).getCheckedData();
            if (list != null) result.addAll(list);
        }
        return success(result);
    }
    @GetMapping("/process-trace")
    @Operation(summary = "批次工序流转(产出/投入事件)")
    @Parameter(name = "code", description = "批次编码", required = true, example = "BATCH20250314001")