13 changed files with 298 additions and 0 deletions
-
10src/main/java/com/xujie/sys/common/utils/TaskUtils.java
-
24src/main/java/com/xujie/sys/modules/reader/controller/GetInformationForExcelController.java
-
9src/main/java/com/xujie/sys/modules/reader/dao/EquipmentFolderLocationMapper.java
-
13src/main/java/com/xujie/sys/modules/reader/dao/GetInformationForExcelMapper.java
-
35src/main/java/com/xujie/sys/modules/reader/entity/EquipmentDataDetail.java
-
19src/main/java/com/xujie/sys/modules/reader/entity/EquipmentFolderLocation.java
-
19src/main/java/com/xujie/sys/modules/reader/listener/ExceListener.java
-
7src/main/java/com/xujie/sys/modules/reader/service/EquipmentFolderLocationService.java
-
9src/main/java/com/xujie/sys/modules/reader/service/GetInformationForExcelService.java
-
11src/main/java/com/xujie/sys/modules/reader/service/impl/EquipmentFolderLocationServiceImpl.java
-
112src/main/java/com/xujie/sys/modules/reader/service/impl/GetInformationForExcelServiceImpl.java
-
1src/main/resources/application-dev.yml
-
29src/main/resources/mapper/reader/GetInformationForExcelMapper.xml
@ -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(); |
|||
} |
|||
} |
|||
@ -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<EquipmentFolderLocation> { |
|||
} |
|||
@ -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<EquipmentDataDetail> { |
|||
void saveByExcels(@Param("list") List<EquipmentDataDetail> equipmentDataDetails); |
|||
} |
|||
@ -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; |
|||
|
|||
|
|||
} |
|||
@ -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; |
|||
|
|||
} |
|||
@ -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<Object> { |
|||
|
|||
private boolean skipFlag = false; // 是否跳过该行 |
|||
private boolean endFlag = false; // 是否结束读取 |
|||
|
|||
@Override |
|||
public void invoke(Object data, AnalysisContext analysisContext) { |
|||
} |
|||
|
|||
@Override |
|||
public void doAfterAllAnalysed(AnalysisContext analysisContext) { |
|||
|
|||
} |
|||
} |
|||
@ -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<EquipmentFolderLocation> { |
|||
} |
|||
@ -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<EquipmentDataDetail> { |
|||
//将excel数据新增 |
|||
void saveByExcel(); |
|||
} |
|||
@ -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<EquipmentFolderLocationMapper, EquipmentFolderLocation> implements EquipmentFolderLocationService { |
|||
} |
|||
@ -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<GetInformationForExcelMapper, EquipmentDataDetail> implements GetInformationForExcelService { |
|||
@Autowired |
|||
private EquipmentFolderLocationService equipmentFolderLocationService; |
|||
|
|||
@Autowired |
|||
private GetInformationForExcelMapper getInformationForExcelMapper; |
|||
|
|||
@Override |
|||
@Transactional(rollbackFor = Exception.class) |
|||
public void saveByExcel() { |
|||
//获取每一个文件夹路径 |
|||
List<EquipmentFolderLocation> 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<EquipmentDataDetail> equipmentDataDetails =new ArrayList<>(); |
|||
//获取文件夹下所有文件 |
|||
List<File> files=getExcelFiles(folderFiler); |
|||
//创建一个list用来存储所有的的excel文件路径 |
|||
List<String> fileName = new ArrayList<>(); |
|||
for (File file : files) { |
|||
fileName.add(folderFiler+"\\"+file.getName()); |
|||
} |
|||
//获取每个excel下的所有关于Test的两个值并保存 |
|||
for (String s : fileName) { |
|||
File excelFile = new File(s); |
|||
List<Map<Integer,String>> 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<list.size();i++) { |
|||
if (list.get(i).get(0).equals("TEST")){ |
|||
EquipmentDataDetail equipmentDataDetail = new EquipmentDataDetail(); |
|||
equipmentDataDetail.setEquipmentNo(excel.getEquipmentNo()); |
|||
equipmentDataDetail.setBuNo(excel.getBuNo()); |
|||
equipmentDataDetail.setSite(excel.getSite()); |
|||
equipmentDataDetail.setItemNo(excel.getItemNo()); |
|||
equipmentDataDetail.setValue0(list.get(i).get(1)); |
|||
equipmentDataDetail.setValue1(list.get(i).get(3)); |
|||
equipmentDataDetails.add(equipmentDataDetail); |
|||
} |
|||
} |
|||
} |
|||
//批量新增 |
|||
getInformationForExcelMapper.saveByExcels(equipmentDataDetails); |
|||
} |
|||
|
|||
private static List<File> getExcelFiles(String folderFiler) { |
|||
//创建本地文件夹路径 |
|||
File file = new File(folderFiler); |
|||
//获取本地文件夹下所有excel表格 |
|||
File[] files = file.listFiles(); |
|||
List<File> excelFiles=new ArrayList<>(); |
|||
if (file !=null){ |
|||
for (File file1 : files) { |
|||
if (file1.isFile()){ |
|||
excelFiles.add(file1); |
|||
} |
|||
} |
|||
} |
|||
return excelFiles; |
|||
} |
|||
} |
|||
@ -0,0 +1,29 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.xujie.sys.modules.reader.dao.GetInformationForExcelMapper"> |
|||
<resultMap id="BaseResultMap" type="com.xujie.sys.modules.reader.entity.EquipmentDataDetail"> |
|||
<result column="site" jdbcType="VARCHAR" property="site" /> |
|||
<result column="bu_no" jdbcType="VARCHAR" property="buNo" /> |
|||
<result column="equipment_no" jdbcType="VARCHAR" property="equipmentNo" /> |
|||
<result column="item_no" jdbcType="VARCHAR" property="itemNo" /> |
|||
<result column="value0" jdbcType="VARCHAR" property="value0" /> |
|||
<result column="value1" jdbcType="VARCHAR" property="value1" /> |
|||
<result column="value2" jdbcType="VARCHAR" property="value2" /> |
|||
<result column="value3" jdbcType="VARCHAR" property="value3" /> |
|||
<result column="value4" jdbcType="VARCHAR" property="value4" /> |
|||
<result column="value5" jdbcType="VARCHAR" property="value5" /> |
|||
<result column="value6" jdbcType="VARCHAR" property="value6" /> |
|||
<result column="value7" jdbcType="VARCHAR" property="value7" /> |
|||
<result column="value8" jdbcType="VARCHAR" property="value8" /> |
|||
<result column="value9" jdbcType="VARCHAR" property="value9" /> |
|||
<result column="create_date" jdbcType="VARCHAR" property="createDate" /> |
|||
<result column="create_by" jdbcType="VARCHAR" property="createBy" /> |
|||
</resultMap> |
|||
<insert id="saveByExcels" parameterType="com.xujie.sys.modules.reader.entity.EquipmentDataDetail"> |
|||
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 |
|||
<foreach collection="list" item="item" index="inder" separator=","> |
|||
(#{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}) |
|||
</foreach> |
|||
</insert> |
|||
</mapper> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue