吴羡
3 天以前 3a83be3db09481c3719e6b86bc6265bcd431422a
cnas-process/src/main/java/com/ruoyi/process/listener/NewJuOrderInspectionListener.java
@@ -1,6 +1,10 @@
package com.ruoyi.process.listener;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.basic.mapper.StandardMethodMapper;
import com.ruoyi.basic.mapper.StandardTreeMapper;
import com.ruoyi.basic.pojo.StandardMethod;
import com.ruoyi.basic.pojo.StandardTree;
import com.ruoyi.inspect.event.NewJuOrderPlacedEvent;
import com.ruoyi.inspect.mapper.InsOrderStandardTemplateMapper;
import com.ruoyi.inspect.mapper.InsSampleMapper;
@@ -33,6 +37,8 @@
    private final InspectionOrderDetailMapper inspectionOrderDetailMapper;
    private final InsSampleMapper insSampleMapper;
    private final InsOrderStandardTemplateMapper insOrderStandardTemplateMapper;
    private final StandardTreeMapper standardTreeMapper;
    private final StandardMethodMapper standardMethodMapper;
    @EventListener
    public void onNewJuOrderPlaced(NewJuOrderPlacedEvent event) {
@@ -67,11 +73,11 @@
                ? order.getSampleView() : order.getSample());
        inspectionOrder.setProduction(order.getProduction());
        inspectionOrder.setQuantity(order.getTestQuantity());
        inspectionOrder.setCommissionDate(LocalDate.now());
        inspectionOrder.setCommissionDate(order.getSampleDate() != null ? order.getSampleDate() : LocalDate.now());
        inspectionOrder.setCommissionUnit(order.getCompany());
        inspectionOrder.setCommissionUser(order.getPrepareUser());
        inspectionOrder.setCommissionPhone(order.getPhone());
        inspectionOrder.setSampleStatus("完好");
        inspectionOrder.setSampleStatus(order.getSampleStatus());
        // 是否留样语义转换:ins 0否/1是 -> cnas 1是/2否
        inspectionOrder.setIsLeave(Integer.valueOf(1).equals(order.getIsLeave()) ? 1 : 2);
        // 样品处置:1委托方取回/2检测方处置 -> processing 0委托单位取回/1实验室处理;未选时沿用旧字段
@@ -102,7 +108,7 @@
        detail.setSampleName(inspectionOrder.getSampleName());
        detail.setQuantity(order.getTestQuantity());
        detail.setSampleStatus(inspectionOrder.getSampleStatus());
        detail.setTestStandard(order.getSample());
        detail.setRemark(order.getRemark());
        List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
                .eq(InsSample::getInsOrderId, order.getId())
@@ -110,15 +116,39 @@
        if (!samples.isEmpty()) {
            detail.setSampleNumber(samples.get(0).getSampleCode());
        }
        String testItem = insOrderStandardTemplateMapper.selectList(
                        Wrappers.<InsOrderStandardTemplate>lambdaQuery()
                                .eq(InsOrderStandardTemplate::getInsOrderId, order.getId())
                                .orderByAsc(InsOrderStandardTemplate::getSort, InsOrderStandardTemplate::getId))
                .stream()
        List<InsOrderStandardTemplate> templates = insOrderStandardTemplateMapper.selectList(
                Wrappers.<InsOrderStandardTemplate>lambdaQuery()
                        .eq(InsOrderStandardTemplate::getInsOrderId, order.getId())
                        .orderByAsc(InsOrderStandardTemplate::getSort, InsOrderStandardTemplate::getId));
        detail.setTestStandard(resolveTestStandard(order, templates));
        detail.setTestItem(templates.stream()
                .map(InsOrderStandardTemplate::getName)
                .filter(StringUtils::isNotBlank)
                .collect(Collectors.joining("、"));
        detail.setTestItem(testItem);
                .collect(Collectors.joining("、")));
        inspectionOrderDetailMapper.insert(detail);
    }
    /**
     * 检测依据显示“标准号+标准名称”,优先取标准方法,取不到时回退到模板快照编号。
     */
    private String resolveTestStandard(InsOrder order, List<InsOrderStandardTemplate> templates) {
        if (order.getStandardTreeId() != null) {
            StandardTree tree = standardTreeMapper.selectById(order.getStandardTreeId());
            if (tree != null && tree.getStandardMethodId() != null) {
                StandardMethod method = standardMethodMapper.selectById(tree.getStandardMethodId());
                if (method != null) {
                    String combined = (StringUtils.trimToEmpty(method.getCode()) + " "
                            + StringUtils.trimToEmpty(method.getName())).trim();
                    if (StringUtils.isNotBlank(combined)) {
                        return combined;
                    }
                }
            }
        }
        return templates.stream()
                .map(InsOrderStandardTemplate::getNumber)
                .filter(StringUtils::isNotBlank)
                .distinct()
                .collect(Collectors.joining("、"));
    }
}