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);
|
}
|
}
|