From c40242e4347abd197af67994528f2866c6b51450 Mon Sep 17 00:00:00 2001 From: gjh <1421wake> Date: Tue, 24 Jun 2025 15:24:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E7=82=B9=E4=BD=8D=E4=B8=8A?= =?UTF-8?q?=E6=8A=A5=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/domain/WorkOrderInfo.java | 1 + .../listener/WorkOrderInfoListener.java | 79 ++++++++++++------- .../service/IContractInfoService.java | 1 + .../service/IWorkOrderInfoService.java | 2 + .../service/impl/ContractInfoServiceImpl.java | 5 +- .../impl/WorkOrderInfoServiceImpl.java | 6 ++ 6 files changed, 62 insertions(+), 32 deletions(-) diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderInfo.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderInfo.java index 2b11df7..ee2866a 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderInfo.java +++ b/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; /** diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/listener/WorkOrderInfoListener.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/listener/WorkOrderInfoListener.java index 5868867..990fb49 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/listener/WorkOrderInfoListener.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/listener/WorkOrderInfoListener.java @@ -1,18 +1,27 @@ package org.dromara.platform.listener; +import cn.hutool.core.bean.BeanUtil; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.read.listener.ReadListener; import jakarta.annotation.Resource; 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.vo.ContractSelectVo; import org.dromara.platform.domain.vo.WorkOrderInfoVo; import org.dromara.platform.mapper.ContractInfoMapper; import org.dromara.platform.service.IContractInfoService; import org.dromara.platform.service.IWorkOrderInfoService; import org.springframework.beans.BeanUtils; +import org.springframework.context.annotation.Bean; +import java.time.LocalDate; import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * 自定义监听器读数据 @@ -21,13 +30,16 @@ import java.util.List; */ @Slf4j public class WorkOrderInfoListener implements ReadListener { + private List list = new ArrayList<>(); @Resource private IWorkOrderInfoService workOrderInfoService; @Resource private IContractInfoService contractInfoService; + // 为什么会失效 + private List contractNames; + - private List list = new ArrayList<>(); /** * 自己定义一个缓冲量 */ @@ -38,6 +50,15 @@ public class WorkOrderInfoListener implements ReadListener { IContractInfoService contractInfoService) { this.workOrderInfoService = workOrderInfoService; this.contractInfoService = contractInfoService; + contractNames = loadContractNames(); + } + + // 获取系统中全部合同名称 + private List loadContractNames() { + List contractSelectVoList = contractInfoService.getNames(); + return contractSelectVoList.stream() + .map(ContractSelectVo::getContractName) + .toList(); } /** @@ -48,27 +69,30 @@ public class WorkOrderInfoListener implements ReadListener { */ @Override public void invoke(WorkOrderInfoVo workOrderInfoVo, AnalysisContext analysisContext) { - WorkOrderInfoBo bo = new WorkOrderInfoBo(); - BeanUtils.copyProperties(workOrderInfoVo, bo,"id"); + WorkOrderInfo info = new WorkOrderInfo(); + BeanUtils.copyProperties(workOrderInfoVo, info,"id"); + String unit = contractInfoService.getIoCompany(info.getContractName()); + if (unit != null){ + info.setMaintenanceUnit(unit); + } + info.setRepairTime(new Date()); - // TODO 这里需要优化的 改成批量查询 VO转entity - // 读取一行数据就添加到集合 - //list.add(bo); - //list.forEach(item -> { - String unit = contractInfoService.getIoCompany(bo.getContractName()); - bo.setMaintenanceUnit(unit); - workOrderInfoService.insertByBo(bo); - //}); - // 判断是否到达缓存量了 -// if (list.size() >= BATCH_COUNT) { -// list = new ArrayList<>(BATCH_COUNT); -// //list.forEach(workOrderInfoService::insertByBo); -// list.forEach(item -> { -// String unit = contractInfoService.getIoCompany(item.getContractName()); -// item.setMaintenanceUnit(unit); -// workOrderInfoService.insertByBo(item); -// }); -// } + // 如果用户填写的合同名称与系统中的合同名称匹配则进行派遣操作 + if (contractNames.contains(info.getContractName())){ + list.add(info); + // 判断是否到达缓存量了 + if (list.size() >= BATCH_COUNT){ + // 操作数据库 + list.forEach(item -> { + WorkOrderInfoBo convert = BeanUtil.copyProperties(item, WorkOrderInfoBo.class); + workOrderInfoService.insertByBo(convert); + }); + // 清空集合,并准备下一批数据的批量插入 + list = new ArrayList<>(BATCH_COUNT); + } + }else { + log.error("点位:{} 上报失败--->合同名称不存在:{}",info.getFaultLocation(),info.getContractName()); + } } /** @@ -78,12 +102,11 @@ public class WorkOrderInfoListener implements ReadListener { */ @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { -// if (list.size() > 0) { -// list.forEach(item -> { -// String unit = contractInfoService.getIoCompany(item.getContractName()); -// item.setMaintenanceUnit(unit); -// workOrderInfoService.insertByBo(item); -// }); -// } + if (list.size()>0){ + list.forEach(item -> { + WorkOrderInfoBo convert = BeanUtil.copyProperties(item, WorkOrderInfoBo.class); + workOrderInfoService.insertByBo(convert); + }); + } } } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IContractInfoService.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IContractInfoService.java index 5ed5e6b..3abcca4 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IContractInfoService.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IContractInfoService.java @@ -1,6 +1,7 @@ package org.dromara.platform.service; import org.dromara.platform.domain.ContractInfo; +import org.dromara.platform.domain.WorkOrderInfo; import org.dromara.platform.domain.vo.ContractInfoVo; import org.dromara.platform.domain.bo.ContractInfoBo; import org.dromara.common.mybatis.core.page.TableDataInfo; diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IWorkOrderInfoService.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IWorkOrderInfoService.java index ddb729c..b60cc42 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IWorkOrderInfoService.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IWorkOrderInfoService.java @@ -143,4 +143,6 @@ public interface IWorkOrderInfoService { WorkOrderInfoDto getOverTimeCost(String workOrderId); void batchReviewOrder(WorkReviewInfoBo bo); + + void addData(List list); } diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ContractInfoServiceImpl.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ContractInfoServiceImpl.java index 3c09a07..70847f7 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ContractInfoServiceImpl.java +++ b/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 lombok.RequiredArgsConstructor; import org.dromara.common.satoken.utils.LoginHelper; -import org.dromara.platform.domain.Attachment; -import org.dromara.platform.domain.AttachmentSerializer; -import org.dromara.platform.domain.ProjectInfo; +import org.dromara.platform.domain.*; import org.dromara.platform.domain.vo.ContractSelectVo; import org.dromara.platform.domain.vo.ProjectInfoVo; import org.dromara.platform.domain.vo.ProjectSelectVo; @@ -24,7 +22,6 @@ import org.dromara.platform.service.IProjectInfoService; import org.springframework.stereotype.Service; import org.dromara.platform.domain.bo.ContractInfoBo; import org.dromara.platform.domain.vo.ContractInfoVo; -import org.dromara.platform.domain.ContractInfo; import org.dromara.platform.mapper.ContractInfoMapper; import org.dromara.platform.service.IContractInfoService; diff --git a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java index 3fd374c..3990b94 100644 --- a/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java +++ b/ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java @@ -175,6 +175,7 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { } }*/ LambdaQueryWrapper lqw = buildQueryWrapper(bo); + lqw.orderByDesc(WorkOrderInfo::getRepairTime); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } @@ -1734,6 +1735,11 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { } + @Override + public void addData(List list) { + baseMapper.insert(list); + } + /** * 截取“超时”后面的部分 */