From 2859d9a14fe43e33b9e3a8c6a80bc5357bb67086 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=87=E5=AE=BD=20=E5=8F=B2?= Date: Thu, 30 May 2024 15:04:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AF=8F=E5=8D=81=E7=A7=92=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B9=E4=B8=8B=E7=9A=84excel=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=B9=B6=E4=BF=9D=E5=AD=98=E5=88=B0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xujie/sys/common/utils/TaskUtils.java | 10 ++ .../GetInformationForExcelController.java | 24 ++++ .../dao/EquipmentFolderLocationMapper.java | 9 ++ .../dao/GetInformationForExcelMapper.java | 13 ++ .../reader/entity/EquipmentDataDetail.java | 35 ++++++ .../entity/EquipmentFolderLocation.java | 19 +++ .../modules/reader/listener/ExceListener.java | 19 +++ .../EquipmentFolderLocationService.java | 7 ++ .../GetInformationForExcelService.java | 9 ++ .../EquipmentFolderLocationServiceImpl.java | 11 ++ .../GetInformationForExcelServiceImpl.java | 112 ++++++++++++++++++ src/main/resources/application-dev.yml | 1 + .../reader/GetInformationForExcelMapper.xml | 29 +++++ 13 files changed, 298 insertions(+) create mode 100644 src/main/java/com/xujie/sys/modules/reader/controller/GetInformationForExcelController.java create mode 100644 src/main/java/com/xujie/sys/modules/reader/dao/EquipmentFolderLocationMapper.java create mode 100644 src/main/java/com/xujie/sys/modules/reader/dao/GetInformationForExcelMapper.java create mode 100644 src/main/java/com/xujie/sys/modules/reader/entity/EquipmentDataDetail.java create mode 100644 src/main/java/com/xujie/sys/modules/reader/entity/EquipmentFolderLocation.java create mode 100644 src/main/java/com/xujie/sys/modules/reader/listener/ExceListener.java create mode 100644 src/main/java/com/xujie/sys/modules/reader/service/EquipmentFolderLocationService.java create mode 100644 src/main/java/com/xujie/sys/modules/reader/service/GetInformationForExcelService.java create mode 100644 src/main/java/com/xujie/sys/modules/reader/service/impl/EquipmentFolderLocationServiceImpl.java create mode 100644 src/main/java/com/xujie/sys/modules/reader/service/impl/GetInformationForExcelServiceImpl.java create mode 100644 src/main/resources/mapper/reader/GetInformationForExcelMapper.xml diff --git a/src/main/java/com/xujie/sys/common/utils/TaskUtils.java b/src/main/java/com/xujie/sys/common/utils/TaskUtils.java index a938256b..738b14a8 100644 --- a/src/main/java/com/xujie/sys/common/utils/TaskUtils.java +++ b/src/main/java/com/xujie/sys/common/utils/TaskUtils.java @@ -2,6 +2,7 @@ package com.xujie.sys.common.utils; import com.xujie.sys.modules.pms.service.EamService; +import com.xujie.sys.modules.reader.service.GetInformationForExcelService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; @@ -16,9 +17,18 @@ public class TaskUtils { @Autowired private EamService eamService; + @Autowired + private GetInformationForExcelService getInformationForExcelService; + // 添加定时任务 @Scheduled(cron = "${task.data.eamWorkPlanTime}") // 每天0点执行 public void doTask() { eamService.eamWorkPlanTask(); } + + //添加定時任務 + @Scheduled(cron = "${task.data.getExcelInformation}" ) //每五秒执行 + public void getExcel(){ + getInformationForExcelService.saveByExcel(); + } } diff --git a/src/main/java/com/xujie/sys/modules/reader/controller/GetInformationForExcelController.java b/src/main/java/com/xujie/sys/modules/reader/controller/GetInformationForExcelController.java new file mode 100644 index 00000000..e8b757ca --- /dev/null +++ b/src/main/java/com/xujie/sys/modules/reader/controller/GetInformationForExcelController.java @@ -0,0 +1,24 @@ +package com.xujie.sys.modules.reader.controller; + +import com.xujie.sys.common.utils.R; +import com.xujie.sys.modules.reader.service.GetInformationForExcelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RequestMapping("getInformation") +@RestController +@Slf4j +public class GetInformationForExcelController { + + @Autowired + private GetInformationForExcelService getInformationForExcelService; + + @PostMapping("acquireExcel") + public R acquireExcel() { + getInformationForExcelService.saveByExcel(); + return R.ok(); + } +} diff --git a/src/main/java/com/xujie/sys/modules/reader/dao/EquipmentFolderLocationMapper.java b/src/main/java/com/xujie/sys/modules/reader/dao/EquipmentFolderLocationMapper.java new file mode 100644 index 00000000..14770aba --- /dev/null +++ b/src/main/java/com/xujie/sys/modules/reader/dao/EquipmentFolderLocationMapper.java @@ -0,0 +1,9 @@ +package com.xujie.sys.modules.reader.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xujie.sys.modules.reader.entity.EquipmentFolderLocation; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface EquipmentFolderLocationMapper extends BaseMapper { +} diff --git a/src/main/java/com/xujie/sys/modules/reader/dao/GetInformationForExcelMapper.java b/src/main/java/com/xujie/sys/modules/reader/dao/GetInformationForExcelMapper.java new file mode 100644 index 00000000..884c5fef --- /dev/null +++ b/src/main/java/com/xujie/sys/modules/reader/dao/GetInformationForExcelMapper.java @@ -0,0 +1,13 @@ +package com.xujie.sys.modules.reader.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xujie.sys.modules.reader.entity.EquipmentDataDetail; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface GetInformationForExcelMapper extends BaseMapper { + void saveByExcels(@Param("list") List equipmentDataDetails); +} diff --git a/src/main/java/com/xujie/sys/modules/reader/entity/EquipmentDataDetail.java b/src/main/java/com/xujie/sys/modules/reader/entity/EquipmentDataDetail.java new file mode 100644 index 00000000..787bd6be --- /dev/null +++ b/src/main/java/com/xujie/sys/modules/reader/entity/EquipmentDataDetail.java @@ -0,0 +1,35 @@ +package com.xujie.sys.modules.reader.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("Equipment_data_detail") +public class EquipmentDataDetail { + + private String site; + + private String buNo; + //设备编号 + private String equipmentNo; + //项目号 + private String itemNo; + private String value0; + private String value1; + private String value2; + private String value3; + private String value4; + private String value5; + private String value6; + private String value7; + private String value8; + private String value9; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private String createDate; + private Date createBy; + + +} diff --git a/src/main/java/com/xujie/sys/modules/reader/entity/EquipmentFolderLocation.java b/src/main/java/com/xujie/sys/modules/reader/entity/EquipmentFolderLocation.java new file mode 100644 index 00000000..80f19fe0 --- /dev/null +++ b/src/main/java/com/xujie/sys/modules/reader/entity/EquipmentFolderLocation.java @@ -0,0 +1,19 @@ +package com.xujie.sys.modules.reader.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +@Data +@TableName("Equipment_folder_location") +public class EquipmentFolderLocation { + //主键id + private Integer id; + //文件夹路径 + private String folderPath; + //设备号 + private String equipmentNo; + private String site; + private String buNo; + private String itemNo; + +} diff --git a/src/main/java/com/xujie/sys/modules/reader/listener/ExceListener.java b/src/main/java/com/xujie/sys/modules/reader/listener/ExceListener.java new file mode 100644 index 00000000..1ac4899a --- /dev/null +++ b/src/main/java/com/xujie/sys/modules/reader/listener/ExceListener.java @@ -0,0 +1,19 @@ +package com.xujie.sys.modules.reader.listener; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +public class ExceListener extends AnalysisEventListener { + + private boolean skipFlag = false; // 是否跳过该行 + private boolean endFlag = false; // 是否结束读取 + + @Override + public void invoke(Object data, AnalysisContext analysisContext) { + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + + } +} diff --git a/src/main/java/com/xujie/sys/modules/reader/service/EquipmentFolderLocationService.java b/src/main/java/com/xujie/sys/modules/reader/service/EquipmentFolderLocationService.java new file mode 100644 index 00000000..b3f339f9 --- /dev/null +++ b/src/main/java/com/xujie/sys/modules/reader/service/EquipmentFolderLocationService.java @@ -0,0 +1,7 @@ +package com.xujie.sys.modules.reader.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.xujie.sys.modules.reader.entity.EquipmentFolderLocation; + +public interface EquipmentFolderLocationService extends IService { +} diff --git a/src/main/java/com/xujie/sys/modules/reader/service/GetInformationForExcelService.java b/src/main/java/com/xujie/sys/modules/reader/service/GetInformationForExcelService.java new file mode 100644 index 00000000..3f0228da --- /dev/null +++ b/src/main/java/com/xujie/sys/modules/reader/service/GetInformationForExcelService.java @@ -0,0 +1,9 @@ +package com.xujie.sys.modules.reader.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.xujie.sys.modules.reader.entity.EquipmentDataDetail; + +public interface GetInformationForExcelService extends IService { + //将excel数据新增 + void saveByExcel(); +} diff --git a/src/main/java/com/xujie/sys/modules/reader/service/impl/EquipmentFolderLocationServiceImpl.java b/src/main/java/com/xujie/sys/modules/reader/service/impl/EquipmentFolderLocationServiceImpl.java new file mode 100644 index 00000000..2f3736ea --- /dev/null +++ b/src/main/java/com/xujie/sys/modules/reader/service/impl/EquipmentFolderLocationServiceImpl.java @@ -0,0 +1,11 @@ +package com.xujie.sys.modules.reader.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xujie.sys.modules.reader.dao.EquipmentFolderLocationMapper; +import com.xujie.sys.modules.reader.entity.EquipmentFolderLocation; +import com.xujie.sys.modules.reader.service.EquipmentFolderLocationService; +import org.springframework.stereotype.Service; + +@Service +public class EquipmentFolderLocationServiceImpl extends ServiceImpl implements EquipmentFolderLocationService { +} diff --git a/src/main/java/com/xujie/sys/modules/reader/service/impl/GetInformationForExcelServiceImpl.java b/src/main/java/com/xujie/sys/modules/reader/service/impl/GetInformationForExcelServiceImpl.java new file mode 100644 index 00000000..d1d61034 --- /dev/null +++ b/src/main/java/com/xujie/sys/modules/reader/service/impl/GetInformationForExcelServiceImpl.java @@ -0,0 +1,112 @@ +package com.xujie.sys.modules.reader.service.impl; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.support.ExcelTypeEnum; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xujie.sys.modules.reader.dao.GetInformationForExcelMapper; +import com.xujie.sys.modules.reader.entity.EquipmentDataDetail; +import com.xujie.sys.modules.reader.entity.EquipmentFolderLocation; +import com.xujie.sys.modules.reader.service.EquipmentFolderLocationService; +import com.xujie.sys.modules.reader.service.GetInformationForExcelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +@Service +@Slf4j +public class GetInformationForExcelServiceImpl extends ServiceImpl implements GetInformationForExcelService { + @Autowired + private EquipmentFolderLocationService equipmentFolderLocationService; + + @Autowired + private GetInformationForExcelMapper getInformationForExcelMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveByExcel() { + //获取每一个文件夹路径 + List locationList = equipmentFolderLocationService.list(); + //创建线程池 + ExecutorService executorService = Executors.newFixedThreadPool(locationList.size());//线程池的最大数量为文件夹的个数 + for (EquipmentFolderLocation excel : locationList) { + String folderFiler = excel.getFolderPath(); + executorService.submit(()->{ + saveInformation(folderFiler,excel); + }); + } + //关闭线程 + executorService.shutdown(); + try { + executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); // 等待所有任务完成 + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + log.info("线程池中断异常"); + //中断异常先不做处理 + } + } + + private void saveInformation(String folderFiler,EquipmentFolderLocation excel) { + List equipmentDataDetails =new ArrayList<>(); + //获取文件夹下所有文件 + List files=getExcelFiles(folderFiler); + //创建一个list用来存储所有的的excel文件路径 + List fileName = new ArrayList<>(); + for (File file : files) { + fileName.add(folderFiler+"\\"+file.getName()); + } + //获取每个excel下的所有关于Test的两个值并保存 + for (String s : fileName) { + File excelFile = new File(s); + List> list=new ArrayList<>(); + try{ + list = EasyExcel.read(excelFile) + .excelType(ExcelTypeEnum.XLSX) + .headRowNumber(0) + .sheet() + .doReadSync(); + }catch (Exception e){ + log.info("读取文件失败,文件为:"+s+"失败日志:"+e.getMessage()); + } + //获取TEST后面的两个值 + for (int i=0;i getExcelFiles(String folderFiler) { + //创建本地文件夹路径 + File file = new File(folderFiler); + //获取本地文件夹下所有excel表格 + File[] files = file.listFiles(); + List excelFiles=new ArrayList<>(); + if (file !=null){ + for (File file1 : files) { + if (file1.isFile()){ + excelFiles.add(file1); + } + } + } + return excelFiles; + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index a4cfa041..e34efbef 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -46,6 +46,7 @@ task: data: site: 2,3 #事业部 eamWorkPlanTime: 0 0 0 * * ? #点检、维保计划自动生成,每天0点执行 + getExcelInformation: 0/10 * * * * ? #每五秒读取一次文件 #--------------------------------------------接口地址和开关控制------------------------------------------------- diff --git a/src/main/resources/mapper/reader/GetInformationForExcelMapper.xml b/src/main/resources/mapper/reader/GetInformationForExcelMapper.xml new file mode 100644 index 00000000..8fa1acb2 --- /dev/null +++ b/src/main/resources/mapper/reader/GetInformationForExcelMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + insert into Equipment_data_detail(site,bu_no,equipment_no,item_no,value0,value1,value2,value3,value4,value5,value6,value7,value8,value9,create_date,create_by) + values + + (#{item.site},#{item.buNo},#{item.equipmentNo},#{item.itemNo},#{item.value0},#{item.value1},#{item.value2},#{item.value3},#{item.value4},#{item.value5},#{item.value6},#{item.value7},#{item.value8},#{item.value9},#{item.createDate},#{item.createBy}) + + +