|
@ -3,26 +3,17 @@ package org.dromara.platform.listener; |
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
import com.alibaba.excel.context.AnalysisContext; |
|
|
import com.alibaba.excel.context.AnalysisContext; |
|
|
import com.alibaba.excel.read.listener.ReadListener; |
|
|
import com.alibaba.excel.read.listener.ReadListener; |
|
|
import jakarta.annotation.Resource; |
|
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import org.dromara.common.core.utils.MapstructUtils; |
|
|
import org.dromara.common.core.utils.StringUtils; |
|
|
import org.dromara.platform.domain.PointInfo; |
|
|
|
|
|
import org.dromara.platform.domain.WorkOrderInfo; |
|
|
import org.dromara.platform.domain.WorkOrderInfo; |
|
|
import org.dromara.platform.domain.bo.WorkOrderInfoBo; |
|
|
import org.dromara.platform.domain.bo.WorkOrderInfoBo; |
|
|
import org.dromara.platform.domain.vo.ContractSelectVo; |
|
|
import org.dromara.platform.domain.vo.ContractSelectVo; |
|
|
import org.dromara.platform.domain.vo.WorkOrderInfoVo; |
|
|
import org.dromara.platform.domain.vo.WorkOrderInfoVo; |
|
|
import org.dromara.platform.mapper.ContractInfoMapper; |
|
|
|
|
|
import org.dromara.platform.service.IContractInfoService; |
|
|
import org.dromara.platform.service.IContractInfoService; |
|
|
import org.dromara.platform.service.IWorkOrderInfoService; |
|
|
import org.dromara.platform.service.IWorkOrderInfoService; |
|
|
import org.springframework.beans.BeanUtils; |
|
|
import org.springframework.beans.BeanUtils; |
|
|
import org.springframework.context.annotation.Bean; |
|
|
|
|
|
|
|
|
|
|
|
import java.time.LocalDate; |
|
|
import java.util.*; |
|
|
import java.util.ArrayList; |
|
|
|
|
|
import java.util.Collections; |
|
|
|
|
|
import java.util.Date; |
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 自定义监听器读数据 |
|
|
* 自定义监听器读数据 |
|
@ -37,6 +28,8 @@ public class WorkOrderInfoListener implements ReadListener<WorkOrderInfoVo> { |
|
|
// 合同名称列表
|
|
|
// 合同名称列表
|
|
|
private final List<String> contractNames; |
|
|
private final List<String> contractNames; |
|
|
|
|
|
|
|
|
|
|
|
private final Set<String> faultLocationList; |
|
|
|
|
|
|
|
|
// 服务依赖由外部传入
|
|
|
// 服务依赖由外部传入
|
|
|
private final IWorkOrderInfoService workOrderInfoService; |
|
|
private final IWorkOrderInfoService workOrderInfoService; |
|
|
private final IContractInfoService contractInfoService; |
|
|
private final IContractInfoService contractInfoService; |
|
@ -49,6 +42,7 @@ public class WorkOrderInfoListener implements ReadListener<WorkOrderInfoVo> { |
|
|
this.workOrderInfoService = workOrderInfoService; |
|
|
this.workOrderInfoService = workOrderInfoService; |
|
|
this.contractInfoService = contractInfoService; |
|
|
this.contractInfoService = contractInfoService; |
|
|
this.contractNames = loadContractNames(); |
|
|
this.contractNames = loadContractNames(); |
|
|
|
|
|
this.faultLocationList = workOrderInfoService.getFaultLocationList(null); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private List<String> loadContractNames() { |
|
|
private List<String> loadContractNames() { |
|
@ -61,36 +55,52 @@ public class WorkOrderInfoListener implements ReadListener<WorkOrderInfoVo> { |
|
|
@Override |
|
|
@Override |
|
|
public void invoke(WorkOrderInfoVo workOrderInfoVo, AnalysisContext analysisContext) { |
|
|
public void invoke(WorkOrderInfoVo workOrderInfoVo, AnalysisContext analysisContext) { |
|
|
try { |
|
|
try { |
|
|
|
|
|
|
|
|
WorkOrderInfo info = new WorkOrderInfo(); |
|
|
WorkOrderInfo info = new WorkOrderInfo(); |
|
|
BeanUtils.copyProperties(workOrderInfoVo, info, "id"); |
|
|
BeanUtils.copyProperties(workOrderInfoVo, info, "id"); |
|
|
|
|
|
|
|
|
String contractName = info.getContractName(); |
|
|
String contractName = info.getContractName(); |
|
|
if (contractName == null || contractName.trim().isEmpty()) { |
|
|
|
|
|
throw new IllegalArgumentException("合同名称为空"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (contractNames.contains(contractName)) { |
|
|
if (StringUtils.isBlank(contractName)) { |
|
|
String unit = contractInfoService.getIoCompany(contractName); |
|
|
int rowNum = analysisContext.readRowHolder().getRowIndex(); |
|
|
if (unit != null) { |
|
|
String errorMsg = String.format("第 %d 行数据导入失败:合同名称为空 故障地点: %s", |
|
|
info.setMaintenanceUnit(unit); |
|
|
rowNum, workOrderInfoVo.getFaultLocation()); |
|
|
} |
|
|
errorMessages.add(errorMsg); |
|
|
info.setRepairTime(new Date()); |
|
|
return; |
|
|
// 创建工单
|
|
|
} |
|
|
WorkOrderInfoBo convert = BeanUtil.copyProperties(info, WorkOrderInfoBo.class); |
|
|
|
|
|
workOrderInfoService.insertByBo(convert); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!contractNames.contains(contractName)) { |
|
|
|
|
|
int rowNum = analysisContext.readRowHolder().getRowIndex(); |
|
|
|
|
|
String errorMsg = String.format("第 %d 行数据导入失败:合同名称不存在:%s 故障地点: %s", |
|
|
|
|
|
rowNum, contractName, workOrderInfoVo.getFaultLocation()); |
|
|
|
|
|
errorMessages.add(errorMsg); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} else { |
|
|
/* if (faultLocationList.contains(info.getFaultLocation())) { |
|
|
throw new IllegalArgumentException("合同名称不存在:" + contractName); |
|
|
int rowNum = analysisContext.readRowHolder().getRowIndex(); |
|
|
|
|
|
String errorMsg = String.format("第 %d 行数据导入失败:该点位正在维修 故障地点: %s", |
|
|
|
|
|
rowNum, workOrderInfoVo.getFaultLocation()); |
|
|
|
|
|
errorMessages.add(errorMsg); |
|
|
|
|
|
return; |
|
|
|
|
|
}*/ |
|
|
|
|
|
|
|
|
|
|
|
String unit = contractInfoService.getIoCompany(contractName); |
|
|
|
|
|
if (unit != null) { |
|
|
|
|
|
info.setMaintenanceUnit(unit); |
|
|
} |
|
|
} |
|
|
|
|
|
info.setRepairTime(new Date()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WorkOrderInfoBo convert = BeanUtil.copyProperties(info, WorkOrderInfoBo.class); |
|
|
|
|
|
workOrderInfoService.insertByBo(convert); |
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
} catch (Exception e) { |
|
|
int rowNum = analysisContext.readRowHolder().getRowIndex(); |
|
|
int rowNum = analysisContext.readRowHolder().getRowIndex(); |
|
|
String errorMsg = String.format("第 %d 行数据导入失败:%s", rowNum, e.getMessage()); |
|
|
String errorMsg = String.format("第 %d 行数据导入失败:系统异常 - %s 故障地点: %s", |
|
|
log.error(errorMsg, e); |
|
|
rowNum, e.getMessage(), workOrderInfoVo.getFaultLocation()); |
|
|
errorMessages.add(errorMsg); |
|
|
errorMessages.add(errorMsg); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|