Browse Source

数据采集优化

java8
wenkuan.shi 1 year ago
parent
commit
ef66fc3ed3
  1. 2
      src/main/java/com/xujie/sys/modules/reader/entity/EquipmentFolderLocation.java
  2. 22
      src/main/java/com/xujie/sys/modules/reader/service/impl/EquipmentFolderDetailServiceImpl.java
  3. 98
      src/main/java/com/xujie/sys/modules/reader/service/impl/GetInformationForExcelServiceImpl.java

2
src/main/java/com/xujie/sys/modules/reader/entity/EquipmentFolderLocation.java

@ -51,4 +51,6 @@ public class EquipmentFolderLocation {
private int registerNumInspection;
private String registerNumInspectionColumntype;
private int unitId;
private String cuttingSymbol;
}

22
src/main/java/com/xujie/sys/modules/reader/service/impl/EquipmentFolderDetailServiceImpl.java

@ -20,7 +20,7 @@ import java.util.Map;
public class EquipmentFolderDetailServiceImpl extends ServiceImpl<EquipmentFolderDetailMapper, EquipmentFolderDetailEntity> implements EquipmentFolderDetailService {
public static void main(String[] args) {
String file = "D:\\桌面\\cs\\剥离力.xls";
String file = "D:\\桌面\\cs\\硬标-2.1.xls";
File excelFile = new File(file);
List<Map<Integer, String>> list = new ArrayList<>();
try {
@ -30,7 +30,7 @@ public class EquipmentFolderDetailServiceImpl extends ServiceImpl<EquipmentFolde
.sheet()
.doReadSync();
log.info("获取的内容: {}" ,list);
// log.info("获取的内容: {}" ,list);
} catch (Exception e) {
e.printStackTrace();
log.info("读取文件失败,文件为:" + file + "失败日志:" + e.getMessage());
@ -38,17 +38,11 @@ public class EquipmentFolderDetailServiceImpl extends ServiceImpl<EquipmentFolde
if (CollectionUtils.isEmpty(list)) {
log.info("读取的文件为空,或不是excel格式的");
}
List<String> values = new ArrayList<>();
boolean value=false;
// for (int i = 0; i < list.size(); i++) {
// if (StringUtils.isNotEmpty(list.get(i).get(3)) && list.get(i).get(3).equals("1")){
// value=true;
// }
// if (value){
// values.add(list.get(i).get(3));
// values.add(list.get(i).get(4));
// }
// }
// log.info("获取的内容为: {}" ,values);
String[] split = list.get(1).get(0).split("\t");
String[] split1 = list.get(1).get(0).split("\\s+");
log.info("获取的内容: {}" ,split);
log.info("获取的内容: {}" ,split1);
}
}

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

@ -131,8 +131,7 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
params.add(fileNo);
List<Map<String, Object>> resultList = procedureDao.getProcedureData("Equipment_batch_no", params);
Integer batchNo ;
Integer batchNo =null;
//在所有的数据新增玩之后 , 对应的获取批次号进行新增或者修改(数据第一次就新增)
if (CollectionUtils.isEmpty(resultList)) {
EquipmentFolderSortEntity equipmentFolderSortEntity = new EquipmentFolderSortEntity();
@ -144,6 +143,15 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
equipmentFolderSortService.save(equipmentFolderSortEntity);
//对应的批次号为1
batchNo = 1;
} else if ((Integer)resultList.get(0).get("batchNo")==null){
EquipmentFolderSortEntity equipmentFolderSortEntity = new EquipmentFolderSortEntity();
equipmentFolderSortEntity.setId((int)resultList.get(0).get("id"));
equipmentFolderSortEntity.setSite(equipmentFolderLocation.getSite());
equipmentFolderSortEntity.setBuNo(equipmentFolderLocation.getBuNo());
equipmentFolderSortEntity.setBatchNo(2);
equipmentFolderSortEntity.setFileNo(equipmentFolderLocation.getFileNo());
equipmentFolderSortEntity.setCreateDate(new Date());
equipmentFolderSortService.updateById(equipmentFolderSortEntity);
} else {
Date createDate = (Date)resultList.get(0).get("createDate");//获取最近新增一条信息的时间
Date date = new Date();
@ -295,7 +303,7 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
//判断什么时候开一开始获取数据的一个桥梁
boolean value = false;
//获取值
//获取值(根据某个字段对比或者从某一行开始获取值)
for (int i = 0; i < list.size(); i++) {
if (StringUtils.isNotEmpty(equipmentFolderLocation.getExcelCompareFieldsX())) {
if (equipmentFolderLocation.getExcelCompareFieldsY() == 0 && equipmentFolderLocation.getExcelCompareFieldsY() == null) {
@ -314,12 +322,22 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
equipmentDataDetail.setItemNo(equipmentFolderLocation.getItemNo());
equipmentDataDetail.setFileNo(equipmentFolderLocation.getFileNo());
equipmentDataDetail.setCreateDate(new Date());
insertByEntity(equipmentDataDetail, list.get(i), null);
//如果数据在一个单元格里面那么需要切割数据
if (StringUtils.isNotEmpty(equipmentFolderLocation.getCuttingSymbol())){
if (equipmentFolderLocation.getExcelCompareFieldsY()==null){
throw new RuntimeException("读取设备信息为配置");
}
String data = list.get(i).get(equipmentFolderLocation.getExcelCompareFieldsY()-1);
String[] split = data.split(equipmentFolderLocation.getCuttingSymbol());
insertByEntity(equipmentDataDetail, new HashMap<>(), split);
}else {
insertByEntity(equipmentDataDetail, list.get(i), null);
}
equipmentDataDetail.setNum(index);
equipmentDataDetails.add(equipmentDataDetail);
index++;
}
} else if (equipmentFolderLocation.getInitialLine() != null) {
} else if (equipmentFolderLocation.getInitialLine() != null & equipmentFolderLocation.getDataRow()==null) {
if (i == equipmentFolderLocation.getInitialLine() - 1) {
value = true;
}
@ -332,13 +350,76 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
equipmentDataDetail.setItemNo(equipmentFolderLocation.getItemNo());
equipmentDataDetail.setFileNo(equipmentFolderLocation.getFileNo());
equipmentDataDetail.setCreateDate(new Date());
insertByEntity(equipmentDataDetail, list.get(i), null);
if (StringUtils.isNotEmpty(equipmentFolderLocation.getCuttingSymbol())){
if (equipmentFolderLocation.getExcelCompareFieldsY()==null){
throw new RuntimeException("读取设备信息为配置");
}
String data = list.get(i).get(equipmentFolderLocation.getExcelCompareFieldsY()-1);
String[] split = data.split(equipmentFolderLocation.getCuttingSymbol());
insertByEntity(equipmentDataDetail, new HashMap<>(), split);
}else {
insertByEntity(equipmentDataDetail, list.get(i), null);
}
equipmentDataDetail.setNum(index);
equipmentDataDetails.add(equipmentDataDetail);
index++;
}
}
}
//从某一行开始获取多少行的值
if (equipmentFolderLocation.getDataRow()!=null && equipmentFolderLocation.getSkipLine()!=null){
List<Map<Integer, String>> record=new ArrayList<>();
Integer dataRow = equipmentFolderLocation.getDataRow();
Integer skipLine = equipmentFolderLocation.getSkipLine();
Integer initialLine = equipmentFolderLocation.getInitialLine();
while (initialLine < list.size()) {
// 取三个数据
if (initialLine + dataRow <= list.size()) {
List<Map<Integer, String>> threeItems = list.subList(initialLine, initialLine + dataRow);
record.addAll(threeItems); // 将取到的三个数据加入结果集合
} else {
for (int i = 1; i <= dataRow; i++) {
if (initialLine + i> list.size()){
dataRow=i-1;
if (dataRow!=0){
List<Map<Integer, String>> threeItems = list.subList(initialLine, initialLine + dataRow);
record.addAll(threeItems); // 将取到的三个数据加入结果集合
}
}
}
}
// 跳过两个数据
initialLine += dataRow+skipLine; // 跳过两个已取的数据继续下一个循环
}
for (int i = 0; i < record.size(); i++) {
EquipmentDataDetail equipmentDataDetail = new EquipmentDataDetail();
equipmentDataDetail.setEquipmentNo(equipmentFolderLocation.getEquipmentNo());
equipmentDataDetail.setBuNo(equipmentFolderLocation.getBuNo());
equipmentDataDetail.setSite(equipmentFolderLocation.getSite());
equipmentDataDetail.setBatchNo(batchNo);
equipmentDataDetail.setItemNo(equipmentFolderLocation.getItemNo());
equipmentDataDetail.setFileNo(equipmentFolderLocation.getFileNo());
equipmentDataDetail.setCreateDate(new Date());
if (StringUtils.isNotEmpty(equipmentFolderLocation.getCuttingSymbol())){
if (equipmentFolderLocation.getExcelCompareFieldsY()==null){
throw new RuntimeException("读取设备信息为配置");
}
String data = record.get(i).get(equipmentFolderLocation.getExcelCompareFieldsY()-1);
String[] split = data.split(equipmentFolderLocation.getCuttingSymbol());
insertByEntity(equipmentDataDetail, new HashMap<>(), split);
}else {
insertByEntity(equipmentDataDetail, record.get(i), null);
}
equipmentDataDetail.setNum(index);
equipmentDataDetails.add(equipmentDataDetail);
index++;
}
}
if (CollectionUtils.isNotEmpty(equipmentDataDetails)) {
equipmentDataDetails.get(equipmentDataDetails.size() - 1).setFileValue1(file);
} else {
@ -381,7 +462,7 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
}
for (String s : list) {
EquipmentDataDetail equipmentDataDetail = new EquipmentDataDetail();
String[] data = s.split("\t");
String[] data = s.split(equipmentFolderLocation.getCuttingSymbol());
equipmentDataDetail.setEquipmentNo(equipmentFolderLocation.getEquipmentNo());
equipmentDataDetail.setBuNo(equipmentFolderLocation.getBuNo());
equipmentDataDetail.setSite(equipmentFolderLocation.getSite());
@ -440,7 +521,7 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
}
//对数据进行切割封装
for (String info : list) {
String[] data = info.split("\t");
String[] data = info.split(equipmentFolderLocation.getCuttingSymbol());
EquipmentDataDetail equipmentDataDetail = new EquipmentDataDetail();
equipmentDataDetail.setEquipmentNo(equipmentFolderLocation.getEquipmentNo());
equipmentDataDetail.setBuNo(equipmentFolderLocation.getBuNo());
@ -494,6 +575,7 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
//保存数据到对应位置
private static void insertByEntity(EquipmentDataDetail equipmentDataDetail, Map<Integer, String> hashMap, String[] strings) {
if (!hashMap.isEmpty() && hashMap != null) {
if (hashMap.get(0) != null) {
equipmentDataDetail.setValue0(hashMap.get(0).trim());
}

Loading…
Cancel
Save