Browse Source

组数

java8
wenkuan.shi 2 years ago
parent
commit
0917fc8cd4
  1. 3
      src/main/java/com/xujie/sys/modules/reader/entity/EquipmentDataDetail.java
  2. 68
      src/main/java/com/xujie/sys/modules/reader/service/impl/GetInformationForExcelServiceImpl.java
  3. 6
      src/main/resources/mapper/reader/GetInformationForExcelMapper.xml

3
src/main/java/com/xujie/sys/modules/reader/entity/EquipmentDataDetail.java

@ -36,5 +36,8 @@ public class EquipmentDataDetail {
private int batchNo;
//文件编号
private String fileNo;
//文件复制之后的路径
private String fileValue1;
//第几住数据
private int groupValue;
}

68
src/main/java/com/xujie/sys/modules/reader/service/impl/GetInformationForExcelServiceImpl.java

@ -67,7 +67,6 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
log.info("线程池中断异常");
//中断异常先不做处理
}
}
@ -167,7 +166,6 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
//创建一个list用来存储所有的txt文件路径
List<String> txtName = new ArrayList<>();
for (String file : excelFiles) {
//找到.的索引
int dotIndex = file.lastIndexOf(".");
String s = file.substring(dotIndex + 1);
@ -204,7 +202,8 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
}
//txt(tff)不为空就做新增
if (CollectionUtils.isNotEmpty(tffName)) {
List<EquipmentDataDetail> equipmentDataDetails = saveTxt(tffName, excel, batchNo);
String timestamp1 = String.valueOf(System.currentTimeMillis());
List<EquipmentDataDetail> equipmentDataDetails = saveTxt(tffName, excel, batchNo,timestamp1);
//新增数据
saveInformation(equipmentDataDetails);
for (String s : tffName) {
@ -212,21 +211,22 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
//找到\\的最后索引
int dotIndex = s.lastIndexOf("\\");
String name = s.substring(dotIndex + 1);
String timestamp1 = String.valueOf(System.currentTimeMillis());
deleteBypath(s, excel.getBackupFolderPath(), index+timestamp1 + "$" + name);
deleteBypath(s, excel.getBackupFolderPath(), index + timestamp1 + "$" + name);
index++;
}
}
//txt文件不为空就做新增
if (CollectionUtils.isNotEmpty(txtName)) {
List<EquipmentDataDetail> equipmentDataDetails1 = saveTxtFile(txtName, excel, batchNo);
String timestamp1 = String.valueOf(System.currentTimeMillis());
List<EquipmentDataDetail> equipmentDataDetails1 = saveTxtFile(txtName, excel, batchNo,timestamp1);
saveInformation(equipmentDataDetails1);
for (String s : txtName) {
int index=1;
//找到\\的最后索引
int dotIndex = s.lastIndexOf("\\");
String name = s.substring(dotIndex + 1);
String timestamp1 = String.valueOf(System.currentTimeMillis());
deleteBypath(s, excel.getBackupFolderPath(), timestamp1 + "$" + name);
deleteBypath(s, excel.getBackupFolderPath(), index + timestamp1 + "$" + name);
index++;
}
}
}
@ -267,16 +267,10 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
}
//对tff文件进行操作
private List<EquipmentDataDetail> saveTxt(List<String> fileName, EquipmentFolderLocation excel, Integer batchNo) {
private List<EquipmentDataDetail> saveTxt(List<String> fileName, EquipmentFolderLocation excel, Integer batchNo,String timestamp1) {
List<EquipmentDataDetail> equipmentDataDetails = new ArrayList<>();
// //查询EquipmentFolderDetail表,判断是否对添加的值进行校验判断是否insert
// LambdaQueryWrapper<EquipmentFolderDetailEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
// lambdaQueryWrapper.eq(EquipmentFolderDetailEntity::getBuNo, excel.getBuNo())
// .eq(EquipmentFolderDetailEntity::getSite, excel.getSite())
// .eq(EquipmentFolderDetailEntity::getEquipmentNo, excel.getEquipmentNo());
// List<EquipmentFolderDetailEntity> entityList = equipmentFolderDetailService.list(lambdaQueryWrapper);
int index = 1;
int group = 1;
for (String s : fileName) {
int startLine = 15; // 第一次读取开始的行数
int firstReadLines = 41;
@ -317,6 +311,14 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
}
}
//获取复制之后的文件路径
//找到\\的最后索引
int num =1;
int dotIndex = s.lastIndexOf("\\");
String name = s.substring(dotIndex + 1);
String file =excel.getBackupFolderPath()+"\\"+num + timestamp1 + "$" + name;
num++;
//对数据进行切割封装
for (String info : list) {
String[] data = info.split("\t");
@ -329,6 +331,7 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
equipmentDataDetail.setFileNo(excel.getFileNo());
equipmentDataDetail.setCreateDate(new Date());
equipmentDataDetail.setValue0(data[0]);
if (data.length > 1) {
equipmentDataDetail.setValue1(data[1]);
}
@ -356,7 +359,13 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
if (data.length > 9) {
equipmentDataDetail.setValue9(data[9]);
}
equipmentDataDetail.setGroupValue(group);
if (StringUtils.equals(data[0],"1000.000")){
group++;
}
equipmentDataDetail.setNum(index);
equipmentDataDetail.setFileValue1(file);
equipmentDataDetails.add(equipmentDataDetail);
index++;
}
@ -586,13 +595,6 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
//对excel(csv)文件进行操作
public List<EquipmentDataDetail> saveExcel(List<String> fileName, EquipmentFolderLocation excel, Integer batchNo, String timestamp1) {
List<EquipmentDataDetail> equipmentDataDetails = new ArrayList<>();
//查询EquipmentFolderDetail表,判断是否对添加的值进行校验判断是否insert
LambdaQueryWrapper<EquipmentFolderDetailEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(EquipmentFolderDetailEntity::getBuNo, excel.getBuNo())
.eq(EquipmentFolderDetailEntity::getSite, excel.getSite())
.eq(EquipmentFolderDetailEntity::getEquipmentNo, excel.getEquipmentNo());
List<EquipmentFolderDetailEntity> entityList = equipmentFolderDetailService.list(lambdaQueryWrapper);
//获取每个excel下的所有关于Test的两个值并保存
int index = 1;
for (String s : fileName) {
@ -686,7 +688,7 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
}
//对txt文件进行操作
public List<EquipmentDataDetail> saveTxtFile(List<String> fileName, EquipmentFolderLocation excel, Integer batchNo) {
public List<EquipmentDataDetail> saveTxtFile(List<String> fileName, EquipmentFolderLocation excel, Integer batchNo,String timestamp1) {
int index = 1;
List<EquipmentDataDetail> detailList = new ArrayList<>();
//查询EquipmentFolderDetail表,判断是否对添加的值进行校验判断是否insert
@ -712,6 +714,13 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
}
}
//获取复制之后的文件路径
//找到\\的最后索引
int num =1;
int dotIndex = name.lastIndexOf("\\");
String byName = name.substring(dotIndex + 1);
String file =excel.getBackupFolderPath()+"\\"+num + timestamp1 + "$" + byName;
num++;
for (String s : list) {
EquipmentDataDetail equipmentDataDetail = new EquipmentDataDetail();
@ -733,9 +742,8 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
if (data.length > 3) {
equipmentDataDetail.setValue3(data[3]);
}
equipmentDataDetail.setNum(index);
equipmentDataDetail.setFileValue1(file);
detailList.add(equipmentDataDetail);
index++;
}
@ -856,9 +864,9 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
} else {
// 创建一个固定大小的线程池这里假设有10个线程
ExecutorService executor = Executors.newFixedThreadPool(equipmentDataDetails.size() / 100);
ExecutorService executor = Executors.newFixedThreadPool(equipmentDataDetails.size() / 80);
int startList = 0;
int endList = 100;
int endList = 80;
for (int i = startList; i < equipmentDataDetails.size(); i = startList) {
if (endList > equipmentDataDetails.size()) {
@ -869,8 +877,8 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
//批量新增
getInformationForExcelMapper.saveByExcels(details);
});
startList = startList + 100;
endList = endList + 100;
startList = startList + 80;
endList = endList + 80;
}
executor.shutdown();
try {

6
src/main/resources/mapper/reader/GetInformationForExcelMapper.xml

@ -22,12 +22,14 @@
<result column="file_no" jdbcType="VARCHAR" property="fileNo" />
<result column="photo_value1" jdbcType="VARCHAR" property="fileNo" />
<result column="num" jdbcType="INTEGER" property="num" />
<result column="file_value1" jdbcType="INTEGER" property="fileValue1" />
<result column="group_value" jdbcType="INTEGER" property="groupValue" />
</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,batch_no,file_no,photo_value1,num)
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,batch_no,file_no,photo_value1,num,file_value1,group_value)
values
<foreach collection="list" item="item" index="index" 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},#{item.batchNo},#{item.fileNo},#{item.photoValue1},#{item.num})
(#{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},#{item.batchNo},#{item.fileNo},#{item.photoValue1},#{item.num},#{item.fileValue1},#{item.groupValue})
</foreach>
</insert>
</mapper>
Loading…
Cancel
Save