Browse Source

批量点位上报优化

ops-management-platform-backend-dev
gjh 4 days ago
parent
commit
c40242e434
  1. 1
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderInfo.java
  2. 79
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/listener/WorkOrderInfoListener.java
  3. 1
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IContractInfoService.java
  4. 2
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IWorkOrderInfoService.java
  5. 5
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ContractInfoServiceImpl.java
  6. 6
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java

1
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderInfo.java

@ -61,6 +61,7 @@ public class WorkOrderInfo extends TenantEntity {
/** /**
*报修时间 *报修时间
*/ */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date repairTime; private Date repairTime;
/** /**

79
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/listener/WorkOrderInfoListener.java

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

1
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IContractInfoService.java

@ -1,6 +1,7 @@
package org.dromara.platform.service; package org.dromara.platform.service;
import org.dromara.platform.domain.ContractInfo; import org.dromara.platform.domain.ContractInfo;
import org.dromara.platform.domain.WorkOrderInfo;
import org.dromara.platform.domain.vo.ContractInfoVo; import org.dromara.platform.domain.vo.ContractInfoVo;
import org.dromara.platform.domain.bo.ContractInfoBo; import org.dromara.platform.domain.bo.ContractInfoBo;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;

2
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IWorkOrderInfoService.java

@ -143,4 +143,6 @@ public interface IWorkOrderInfoService {
WorkOrderInfoDto getOverTimeCost(String workOrderId); WorkOrderInfoDto getOverTimeCost(String workOrderId);
void batchReviewOrder(WorkReviewInfoBo bo); void batchReviewOrder(WorkReviewInfoBo bo);
void addData(List<WorkOrderInfo> list);
} }

5
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ContractInfoServiceImpl.java

@ -14,9 +14,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.platform.domain.Attachment; import org.dromara.platform.domain.*;
import org.dromara.platform.domain.AttachmentSerializer;
import org.dromara.platform.domain.ProjectInfo;
import org.dromara.platform.domain.vo.ContractSelectVo; import org.dromara.platform.domain.vo.ContractSelectVo;
import org.dromara.platform.domain.vo.ProjectInfoVo; import org.dromara.platform.domain.vo.ProjectInfoVo;
import org.dromara.platform.domain.vo.ProjectSelectVo; import org.dromara.platform.domain.vo.ProjectSelectVo;
@ -24,7 +22,6 @@ import org.dromara.platform.service.IProjectInfoService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.platform.domain.bo.ContractInfoBo; import org.dromara.platform.domain.bo.ContractInfoBo;
import org.dromara.platform.domain.vo.ContractInfoVo; import org.dromara.platform.domain.vo.ContractInfoVo;
import org.dromara.platform.domain.ContractInfo;
import org.dromara.platform.mapper.ContractInfoMapper; import org.dromara.platform.mapper.ContractInfoMapper;
import org.dromara.platform.service.IContractInfoService; import org.dromara.platform.service.IContractInfoService;

6
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java

@ -175,6 +175,7 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
} }
}*/ }*/
LambdaQueryWrapper<WorkOrderInfo> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<WorkOrderInfo> lqw = buildQueryWrapper(bo);
lqw.orderByDesc(WorkOrderInfo::getRepairTime);
Page<WorkOrderInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<WorkOrderInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@ -1734,6 +1735,11 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
} }
@Override
public void addData(List<WorkOrderInfo> list) {
baseMapper.insert(list);
}
/** /**
* 截取超时后面的部分 * 截取超时后面的部分
*/ */

Loading…
Cancel
Save