|
@ -1,18 +1,27 @@ |
|
|
package org.dromara.platform.listener; |
|
|
package org.dromara.platform.listener; |
|
|
|
|
|
|
|
|
|
|
|
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 jakarta.annotation.Resource; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
|
import org.dromara.common.core.utils.MapstructUtils; |
|
|
|
|
|
import org.dromara.platform.domain.PointInfo; |
|
|
|
|
|
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.WorkOrderInfoVo; |
|
|
import org.dromara.platform.domain.vo.WorkOrderInfoVo; |
|
|
import org.dromara.platform.mapper.ContractInfoMapper; |
|
|
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.ArrayList; |
|
|
import java.util.ArrayList; |
|
|
|
|
|
import java.util.Date; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 自定义监听器读数据 |
|
|
* 自定义监听器读数据 |
|
@ -21,13 +30,16 @@ import java.util.List; |
|
|
*/ |
|
|
*/ |
|
|
@Slf4j |
|
|
@Slf4j |
|
|
public class WorkOrderInfoListener implements ReadListener<WorkOrderInfoVo> { |
|
|
public class WorkOrderInfoListener implements ReadListener<WorkOrderInfoVo> { |
|
|
|
|
|
private List<WorkOrderInfo> list = new ArrayList<>(); |
|
|
@Resource |
|
|
@Resource |
|
|
private IWorkOrderInfoService workOrderInfoService; |
|
|
private IWorkOrderInfoService workOrderInfoService; |
|
|
|
|
|
|
|
|
@Resource |
|
|
@Resource |
|
|
private IContractInfoService contractInfoService; |
|
|
private IContractInfoService contractInfoService; |
|
|
|
|
|
// 为什么会失效
|
|
|
|
|
|
private List<String> contractNames; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private List<WorkOrderInfoBo> list = new ArrayList<>(); |
|
|
|
|
|
/** |
|
|
/** |
|
|
* 自己定义一个缓冲量 |
|
|
* 自己定义一个缓冲量 |
|
|
*/ |
|
|
*/ |
|
@ -38,6 +50,15 @@ public class WorkOrderInfoListener implements ReadListener<WorkOrderInfoVo> { |
|
|
IContractInfoService contractInfoService) { |
|
|
IContractInfoService contractInfoService) { |
|
|
this.workOrderInfoService = workOrderInfoService; |
|
|
this.workOrderInfoService = workOrderInfoService; |
|
|
this.contractInfoService = contractInfoService; |
|
|
this.contractInfoService = contractInfoService; |
|
|
|
|
|
contractNames = loadContractNames(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 获取系统中全部合同名称
|
|
|
|
|
|
private List<String> loadContractNames() { |
|
|
|
|
|
List<ContractSelectVo> contractSelectVoList = contractInfoService.getNames(); |
|
|
|
|
|
return contractSelectVoList.stream() |
|
|
|
|
|
.map(ContractSelectVo::getContractName) |
|
|
|
|
|
.toList(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -48,27 +69,30 @@ public class WorkOrderInfoListener implements ReadListener<WorkOrderInfoVo> { |
|
|
*/ |
|
|
*/ |
|
|
@Override |
|
|
@Override |
|
|
public void invoke(WorkOrderInfoVo workOrderInfoVo, AnalysisContext analysisContext) { |
|
|
public void invoke(WorkOrderInfoVo workOrderInfoVo, AnalysisContext analysisContext) { |
|
|
WorkOrderInfoBo bo = new WorkOrderInfoBo(); |
|
|
WorkOrderInfo info = new WorkOrderInfo(); |
|
|
BeanUtils.copyProperties(workOrderInfoVo, bo,"id"); |
|
|
BeanUtils.copyProperties(workOrderInfoVo, info,"id"); |
|
|
|
|
|
String unit = contractInfoService.getIoCompany(info.getContractName()); |
|
|
|
|
|
if (unit != null){ |
|
|
|
|
|
info.setMaintenanceUnit(unit); |
|
|
|
|
|
} |
|
|
|
|
|
info.setRepairTime(new Date()); |
|
|
|
|
|
|
|
|
// TODO 这里需要优化的 改成批量查询 VO转entity
|
|
|
// 如果用户填写的合同名称与系统中的合同名称匹配则进行派遣操作
|
|
|
// 读取一行数据就添加到集合
|
|
|
if (contractNames.contains(info.getContractName())){ |
|
|
//list.add(bo);
|
|
|
list.add(info); |
|
|
//list.forEach(item -> {
|
|
|
// 判断是否到达缓存量了
|
|
|
String unit = contractInfoService.getIoCompany(bo.getContractName()); |
|
|
if (list.size() >= BATCH_COUNT){ |
|
|
bo.setMaintenanceUnit(unit); |
|
|
// 操作数据库
|
|
|
workOrderInfoService.insertByBo(bo); |
|
|
list.forEach(item -> { |
|
|
//});
|
|
|
WorkOrderInfoBo convert = BeanUtil.copyProperties(item, WorkOrderInfoBo.class); |
|
|
// 判断是否到达缓存量了
|
|
|
workOrderInfoService.insertByBo(convert); |
|
|
// if (list.size() >= BATCH_COUNT) {
|
|
|
}); |
|
|
// list = new ArrayList<>(BATCH_COUNT);
|
|
|
// 清空集合,并准备下一批数据的批量插入
|
|
|
// //list.forEach(workOrderInfoService::insertByBo);
|
|
|
list = new ArrayList<>(BATCH_COUNT); |
|
|
// list.forEach(item -> {
|
|
|
} |
|
|
// String unit = contractInfoService.getIoCompany(item.getContractName());
|
|
|
}else { |
|
|
// item.setMaintenanceUnit(unit);
|
|
|
log.error("点位:{} 上报失败--->合同名称不存在:{}",info.getFaultLocation(),info.getContractName()); |
|
|
// workOrderInfoService.insertByBo(item);
|
|
|
} |
|
|
// });
|
|
|
|
|
|
// }
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -78,12 +102,11 @@ public class WorkOrderInfoListener implements ReadListener<WorkOrderInfoVo> { |
|
|
*/ |
|
|
*/ |
|
|
@Override |
|
|
@Override |
|
|
public void doAfterAllAnalysed(AnalysisContext analysisContext) { |
|
|
public void doAfterAllAnalysed(AnalysisContext analysisContext) { |
|
|
// if (list.size() > 0) {
|
|
|
if (list.size()>0){ |
|
|
// list.forEach(item -> {
|
|
|
list.forEach(item -> { |
|
|
// String unit = contractInfoService.getIoCompany(item.getContractName());
|
|
|
WorkOrderInfoBo convert = BeanUtil.copyProperties(item, WorkOrderInfoBo.class); |
|
|
// item.setMaintenanceUnit(unit);
|
|
|
workOrderInfoService.insertByBo(convert); |
|
|
// workOrderInfoService.insertByBo(item);
|
|
|
}); |
|
|
// });
|
|
|
} |
|
|
// }
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|