liding
6 小时以前 51786b723d0a91d11476776d9ce50af7994dc4bd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.ruoyi.process.listener;
 
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.inspect.event.NewJuOrderPlacedEvent;
import com.ruoyi.inspect.pojo.InsOrder;
import com.ruoyi.inspect.service.InsOrderService;
import com.ruoyi.process.mapper.InspectionOrderMapper;
import com.ruoyi.process.pojo.InspectionOrder;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
 
import java.time.LocalDate;
 
/**
 * 新聚成品下单成功后,自动生成一条检验委托单。
 */
@Component
@AllArgsConstructor
public class NewJuOrderInspectionListener {
 
    private final InsOrderService insOrderService;
    private final InspectionOrderMapper inspectionOrderMapper;
 
    @EventListener
    public void onNewJuOrderPlaced(NewJuOrderPlacedEvent event) {
        InsOrder order = insOrderService.getById(event.getInsOrderId());
        if (order == null) {
            return;
        }
        // 幂等:同一成品订单已有检验委托单则跳过
        Long count = inspectionOrderMapper.selectCount(Wrappers.<InspectionOrder>lambdaQuery()
                .eq(InspectionOrder::getInsOrderId, order.getId()));
        if (count > 0) {
            return;
        }
        InspectionOrder inspectionOrder = new InspectionOrder();
        inspectionOrder.setInsOrderId(order.getId());
        inspectionOrder.setEntrustCode(order.getEntrustCode());
        // 试样名称优先取报告展示字段
        inspectionOrder.setSampleName(StringUtils.isNotBlank(order.getSampleView())
                ? order.getSampleView() : order.getSample());
        inspectionOrder.setProduction(order.getProduction());
        inspectionOrder.setQuantity(order.getTestQuantity());
        inspectionOrder.setCommissionDate(LocalDate.now());
        inspectionOrder.setCommissionUnit(order.getCompany());
        inspectionOrder.setCommissionUser(order.getPrepareUser());
        inspectionOrder.setCommissionPhone(order.getPhone());
        inspectionOrder.setSampleStatus("完好");
        // 是否留样语义转换:ins 0否/1是 -> cnas 1是/2否
        inspectionOrder.setIsLeave(Integer.valueOf(1).equals(order.getIsLeave()) ? 1 : 2);
        // 样品处置:1委托方取回/2检测方处置 -> processing 0委托单位取回/1实验室处理;未选时沿用旧字段
        if (Integer.valueOf(1).equals(order.getSampleDisposal())) {
            inspectionOrder.setProcessing(0);
        } else if (Integer.valueOf(2).equals(order.getSampleDisposal())) {
            inspectionOrder.setProcessing(1);
        } else {
            inspectionOrder.setProcessing(order.getProcessing());
        }
        // 报告交付方式:1自取 -> send 1,其余 0;未选时沿用旧字段
        if (order.getReportDelivery() != null) {
            inspectionOrder.setSend(Integer.valueOf(1).equals(order.getReportDelivery()) ? 1 : 0);
        } else {
            inspectionOrder.setSend(order.getSend());
        }
        // 报告文件与约定时间生成时为空,后续在检验委托单页面编辑/上传
        inspectionOrderMapper.insert(inspectionOrder);
    }
}