重庆 配件管理 excel导入bug修改
This commit is contained in:
parent
22529abd22
commit
c4e57176ab
|
|
@ -1,6 +1,7 @@
|
||||||
package com.bonus.sgzb.base.controller;
|
package com.bonus.sgzb.base.controller;
|
||||||
|
|
||||||
import com.bonus.sgzb.base.domain.MaPartType;
|
import com.bonus.sgzb.base.domain.MaPartType;
|
||||||
|
import com.bonus.sgzb.base.domain.MapType;
|
||||||
import com.bonus.sgzb.base.service.ExcelService;
|
import com.bonus.sgzb.base.service.ExcelService;
|
||||||
import com.bonus.sgzb.base.service.IPartTypeService;
|
import com.bonus.sgzb.base.service.IPartTypeService;
|
||||||
import com.bonus.sgzb.common.core.utils.poi.ExcelUtil;
|
import com.bonus.sgzb.common.core.utils.poi.ExcelUtil;
|
||||||
|
|
@ -103,7 +104,7 @@ public class MaPartTypeController extends BaseController {
|
||||||
// 保存文件
|
// 保存文件
|
||||||
file.transferTo(filePath.toFile());
|
file.transferTo(filePath.toFile());
|
||||||
|
|
||||||
Map<String, Map<String, List<String>>> stringMapMap = excelService.readExcelFile(filePath.toString());
|
Map<String, Map<String, List<MapType>>> stringMapMap = excelService.readExcelFile(filePath.toString());
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
package com.bonus.sgzb.base.service;
|
package com.bonus.sgzb.base.service;
|
||||||
|
|
||||||
import org.springframework.stereotype.Service;
|
import com.bonus.sgzb.base.domain.MapType;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
public interface ExcelService {
|
public interface ExcelService {
|
||||||
Map<String, Map<String, List<String>>> readExcelFile(String filePath);
|
Map<String, Map<String, List<MapType>>> readExcelFile(String filePath);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,11 @@
|
||||||
package com.bonus.sgzb.base.service.impl;// ExcelServiceImpl.java
|
package com.bonus.sgzb.base.service.impl;// ExcelServiceImpl.java
|
||||||
import com.bonus.sgzb.base.domain.MaPartType;
|
import com.bonus.sgzb.base.domain.MaPartType;
|
||||||
|
import com.bonus.sgzb.base.domain.MapType;
|
||||||
import com.bonus.sgzb.base.mapper.ExcelMapper;
|
import com.bonus.sgzb.base.mapper.ExcelMapper;
|
||||||
import com.bonus.sgzb.base.service.ExcelService;
|
import com.bonus.sgzb.base.service.ExcelService;
|
||||||
import com.bonus.sgzb.common.security.utils.SecurityUtils;
|
import com.bonus.sgzb.common.security.utils.SecurityUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.apache.poi.ss.usermodel.*;
|
import org.apache.poi.ss.usermodel.*;
|
||||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
import org.apache.xmlbeans.impl.xb.xsdschema.Public;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
|
@ -21,14 +20,12 @@ public class ExcelServiceImpl implements ExcelService {
|
||||||
@Autowired
|
@Autowired
|
||||||
ExcelMapper excelMapper;
|
ExcelMapper excelMapper;
|
||||||
|
|
||||||
String fourthLevel = "";
|
|
||||||
String fifthLevel ="";
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 将读取的excel文件转为
|
* 将读取的excel文件转为
|
||||||
* */
|
* */
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Map<String, List<String>>> readExcelFile(String filePath) {
|
public Map<String, Map<String, List<MapType>>> readExcelFile(String filePath) {
|
||||||
|
|
||||||
FileInputStream excelFile = null;
|
FileInputStream excelFile = null;
|
||||||
Workbook workbook = null;
|
Workbook workbook = null;
|
||||||
|
|
@ -38,14 +35,7 @@ public class ExcelServiceImpl implements ExcelService {
|
||||||
Sheet datatypeSheet = workbook.getSheetAt(0);
|
Sheet datatypeSheet = workbook.getSheetAt(0);
|
||||||
Iterator<Row> iterator = datatypeSheet.iterator();
|
Iterator<Row> iterator = datatypeSheet.iterator();
|
||||||
|
|
||||||
Long id = null;
|
Map<String, Map<String, List<MapType>>> level3Relation = new HashMap<>();
|
||||||
Long id2 = null;
|
|
||||||
Long id3 = null;
|
|
||||||
String parentId = "";
|
|
||||||
boolean state1 = false;
|
|
||||||
boolean state2 = false;
|
|
||||||
boolean state3 = false;
|
|
||||||
Map<String, Map<String, List<String>>> level3Relation = new HashMap<>();
|
|
||||||
|
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
Row currentRow = iterator.next();
|
Row currentRow = iterator.next();
|
||||||
|
|
@ -66,20 +56,23 @@ public class ExcelServiceImpl implements ExcelService {
|
||||||
|
|
||||||
String firstLevel = getCellValueAsString(firstLevelCell);
|
String firstLevel = getCellValueAsString(firstLevelCell);
|
||||||
String secondLevel = getCellValueAsString(secondLevelCell);
|
String secondLevel = getCellValueAsString(secondLevelCell);
|
||||||
String thirdLevel = getCellValueAsString(thirdLevelCell);
|
|
||||||
fourthLevel = getCellValueAsString(fourthLevelCell);
|
MapType thirdLevel = new MapType();
|
||||||
fifthLevel = getCellValueAsString(fifthLevelCell);
|
thirdLevel.setPaName(getCellValueAsString(thirdLevelCell));
|
||||||
|
thirdLevel.setUnitId(getCellValueAsString(fourthLevelCell));
|
||||||
|
thirdLevel.setBuyPrice(getCellValueAsString(fifthLevelCell));
|
||||||
|
|
||||||
// 检查是否所有三个级别都是空白
|
// 检查是否所有三个级别都是空白
|
||||||
if (firstLevel.isEmpty() && secondLevel.isEmpty() && thirdLevel.isEmpty()) {
|
if (firstLevel.isEmpty() || secondLevel.isEmpty() || thirdLevel == null) {
|
||||||
continue; // 跳过这一行
|
continue; // 跳过这一行
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查是否已经存在相同的组合
|
// 检查是否已经存在相同的组合
|
||||||
boolean isDuplicate = false;
|
boolean isDuplicate = false;
|
||||||
for (String key : level3Relation.keySet()) {
|
for (String key : level3Relation.keySet()) {
|
||||||
Map<String, List<String>> secondLevelMap = level3Relation.get(key);
|
Map<String, List<MapType>> secondLevelMap = level3Relation.get(key);
|
||||||
for (String key2 : secondLevelMap.keySet()) {
|
for (String key2 : secondLevelMap.keySet()) {
|
||||||
List<String> thirdLevelList = secondLevelMap.get(key2);
|
List<MapType> thirdLevelList = secondLevelMap.get(key2);
|
||||||
if (key.equals(firstLevel) && key2.equals(secondLevel) && thirdLevelList.contains(thirdLevel)) {
|
if (key.equals(firstLevel) && key2.equals(secondLevel) && thirdLevelList.contains(thirdLevel)) {
|
||||||
isDuplicate = true;
|
isDuplicate = true;
|
||||||
break;
|
break;
|
||||||
|
|
@ -90,76 +83,13 @@ public class ExcelServiceImpl implements ExcelService {
|
||||||
|
|
||||||
if (!isDuplicate) {
|
if (!isDuplicate) {
|
||||||
// 如果不是重复项,则添加到映射中
|
// 如果不是重复项,则添加到映射中
|
||||||
Map<String, List<String>> secondLevelMap = level3Relation.computeIfAbsent(firstLevel, k -> new HashMap<>());
|
Map<String, List<MapType>> secondLevelMap = level3Relation.computeIfAbsent(firstLevel, k -> new HashMap<>());
|
||||||
List<String> thirdLevelList = secondLevelMap.computeIfAbsent(secondLevel, k -> new ArrayList<>());
|
List<MapType> thirdLevelList = secondLevelMap.computeIfAbsent(secondLevel, k -> new ArrayList<>());
|
||||||
thirdLevelList.add(thirdLevel);
|
thirdLevelList.add(thirdLevel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printLevel3Relation(level3Relation);
|
printLevel3Relation(level3Relation);
|
||||||
|
|
||||||
// 遍历外层Map
|
|
||||||
// for (Map.Entry<String, Map<String, List<String>>> entry1 : level3Relation.entrySet()) {
|
|
||||||
// String firstLevel = entry1.getKey(); // 获取第一层级的键
|
|
||||||
// parentId = excelMapper.selectPaName(firstLevel);
|
|
||||||
// boolean exist = true;
|
|
||||||
//
|
|
||||||
// if (StringUtils.isEmpty(parentId)) {
|
|
||||||
// //产生返回值并且进行判断是否是pa_name列已经有的,并且返回对应的pa_id
|
|
||||||
// MaPartType maPartType = new MaPartType();
|
|
||||||
// maPartType.setPaName(firstLevel);
|
|
||||||
// maPartType.setCreateBy(SecurityUtils.getLoginUser().getUserid().toString());
|
|
||||||
// excelMapper.insertPaName(maPartType);//如果第一层在数据库中查询不到则插入数据,并且读取到parent_id
|
|
||||||
// id = maPartType.getPaId();
|
|
||||||
// exist = false;
|
|
||||||
// } else {
|
|
||||||
// id = Long.valueOf(parentId);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// Map<String, List<String>> secondLevelMap = entry1.getValue(); // 获取对应于第一层级键的内层Map
|
|
||||||
// // 遍历内层Map
|
|
||||||
// for (Map.Entry<String, List<String>> entry2 : secondLevelMap.entrySet()) {
|
|
||||||
// String secondLevel = entry2.getKey(); // 获取第二层级的键
|
|
||||||
// // query (secondLevel, id),
|
|
||||||
// MaPartType level2MaPartType = excelMapper.selectTwoPaName(secondLevel,id);
|
|
||||||
// if (Objects.nonNull(level2MaPartType)){
|
|
||||||
// // if found, exist=true, loop level3
|
|
||||||
// exist = true;
|
|
||||||
// List<String> values = entry2.getValue();
|
|
||||||
// for (String value : values) {
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// //query level3 by name+parentId { value, level2MaPartType.id}, get exist of level3
|
|
||||||
// boolean flag = true;
|
|
||||||
// String state = excelMapper.selectThreePaName(value,level2MaPartType.getPaId());
|
|
||||||
// if (StringUtils.isNotBlank(state)){
|
|
||||||
// flag = false;
|
|
||||||
// }
|
|
||||||
// if (exist && flag) {
|
|
||||||
// MaPartType maPartType = new MaPartType();
|
|
||||||
// maPartType.setPaName(value);
|
|
||||||
// maPartType.setCreateBy(SecurityUtils.getLoginUser().getUserid().toString());
|
|
||||||
// maPartType.setUnitId(fourthLevel);
|
|
||||||
// maPartType.setBuyPrice(fifthLevel);
|
|
||||||
// maPartType.setParentId(id2);
|
|
||||||
// excelMapper.insertPaThreeName(maPartType);//第二层在数据库中查询不到则插入数据,则插入时候设置关联关系
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }else {
|
|
||||||
// // not found, exist=false, insert level2, then loop level3
|
|
||||||
// exist = false;
|
|
||||||
// MaPartType maPartType = new MaPartType();
|
|
||||||
// maPartType.setPaName(secondLevel);
|
|
||||||
// maPartType.setCreateBy(SecurityUtils.getLoginUser().getUserid().toString());
|
|
||||||
// maPartType.setUnitId(fourthLevel);
|
|
||||||
// maPartType.setBuyPrice(fifthLevel);
|
|
||||||
// maPartType.setParentId(id);
|
|
||||||
// excelMapper.insertPaTwoName(maPartType);//第二层在数据库中查询不到则插入数据,则插入时候设置关联关系
|
|
||||||
// id2 = maPartType.getPaId();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
return level3Relation;
|
return level3Relation;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|
@ -202,8 +132,8 @@ public class ExcelServiceImpl implements ExcelService {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void printLevel3Relation(Map<String, Map<String, List<String>>> level3Relation) {
|
private void printLevel3Relation(Map<String, Map<String, List<MapType>>> level3Relation) {
|
||||||
for (Map.Entry<String, Map<String, List<String>>> firstLevel : level3Relation.entrySet()) {
|
for (Map.Entry<String, Map<String, List<MapType>>> firstLevel : level3Relation.entrySet()) {
|
||||||
boolean outExist = true;
|
boolean outExist = true;
|
||||||
System.out.println("level_1: " + firstLevel.getKey());
|
System.out.println("level_1: " + firstLevel.getKey());
|
||||||
//TODO, sql查询:是否有此名字 + parentId=0, select * from ma_part_type where name=? and parent_id=0;
|
//TODO, sql查询:是否有此名字 + parentId=0, select * from ma_part_type where name=? and parent_id=0;
|
||||||
|
|
@ -225,8 +155,8 @@ public class ExcelServiceImpl implements ExcelService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loopInner(Map.Entry<String, Map<String, List<String>>> firstLevel, boolean outExist, long firstLevelId) {
|
private void loopInner(Map.Entry<String, Map<String, List<MapType>>> firstLevel, boolean outExist, long firstLevelId) {
|
||||||
for (Map.Entry<String, List<String>> secondLevel : firstLevel.getValue().entrySet()) {
|
for (Map.Entry<String, List<MapType>> secondLevel : firstLevel.getValue().entrySet()) {
|
||||||
System.out.println("\tlevel_2: " + secondLevel.getKey());
|
System.out.println("\tlevel_2: " + secondLevel.getKey());
|
||||||
//TODO, sql查询:是否有此名字 + parentId=firstLevelId, select * from ma_part_type where name=? and parent_id = firstLevelId;
|
//TODO, sql查询:是否有此名字 + parentId=firstLevelId, select * from ma_part_type where name=? and parent_id = firstLevelId;
|
||||||
MaPartType maPartType_level2 = excelMapper.selectMa(firstLevel.getKey(),firstLevelId);
|
MaPartType maPartType_level2 = excelMapper.selectMa(firstLevel.getKey(),firstLevelId);
|
||||||
|
|
@ -249,20 +179,20 @@ public class ExcelServiceImpl implements ExcelService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void looplevel3(Map.Entry<String, List<String>> secondLevel, boolean outExist, long secondLevelId) {
|
private void looplevel3(Map.Entry<String, List<MapType>> secondLevel, boolean outExist, long secondLevelId) {
|
||||||
for (String thirdLevel : secondLevel.getValue()) {
|
for (MapType thirdLevel : secondLevel.getValue()) {
|
||||||
System.out.println("\t\tlevel_3: " + thirdLevel);
|
System.out.println("\t\tlevel_3: " + thirdLevel);
|
||||||
//TODO, sql查询:是否有此名字 + parentId=secondLevelId, select * from ma_part_type where name=? and parent_id = secondLevelId;
|
//TODO, sql查询:是否有此名字 + parentId=secondLevelId, select * from ma_part_type where name=? and parent_id = secondLevelId;
|
||||||
MaPartType maPartType_level3 = excelMapper.selectMa(thirdLevel,secondLevelId);
|
MaPartType maPartType_level3 = excelMapper.selectMa(thirdLevel.getPaName(),secondLevelId);
|
||||||
//TODO, 以上返回 maPartType_level3
|
//TODO, 以上返回 maPartType_level3
|
||||||
if (Objects.nonNull(maPartType_level3)) {
|
if (Objects.nonNull(maPartType_level3)) {
|
||||||
if (!outExist) {
|
if (!outExist) {
|
||||||
//TODO insert
|
//TODO insert
|
||||||
MaPartType maPartType = new MaPartType();
|
MaPartType maPartType = new MaPartType();
|
||||||
maPartType.setPaName(thirdLevel);
|
maPartType.setPaName(thirdLevel.getPaName());
|
||||||
maPartType.setCreateBy(SecurityUtils.getLoginUser().getUserid().toString());
|
maPartType.setCreateBy(SecurityUtils.getLoginUser().getUserid().toString());
|
||||||
maPartType.setUnitId(fourthLevel);
|
maPartType.setUnitId(thirdLevel.getUnitId());
|
||||||
maPartType.setBuyPrice(fifthLevel);
|
maPartType.setBuyPrice(thirdLevel.getBuyPrice());
|
||||||
maPartType.setParentId(secondLevelId);
|
maPartType.setParentId(secondLevelId);
|
||||||
maPartType.setLevel("3");
|
maPartType.setLevel("3");
|
||||||
excelMapper.insertPaName(maPartType);//如果第一层在数据库中查询不到则插入数据,并且读取到parent_id
|
excelMapper.insertPaName(maPartType);//如果第一层在数据库中查询不到则插入数据,并且读取到parent_id
|
||||||
|
|
@ -270,10 +200,10 @@ public class ExcelServiceImpl implements ExcelService {
|
||||||
} else {
|
} else {
|
||||||
//TODO insert
|
//TODO insert
|
||||||
MaPartType maPartType = new MaPartType();
|
MaPartType maPartType = new MaPartType();
|
||||||
maPartType.setPaName(thirdLevel);
|
maPartType.setPaName(thirdLevel.getPaName());
|
||||||
maPartType.setCreateBy(SecurityUtils.getLoginUser().getUserid().toString());
|
maPartType.setCreateBy(SecurityUtils.getLoginUser().getUserid().toString());
|
||||||
maPartType.setUnitId(fourthLevel);
|
maPartType.setUnitId(thirdLevel.getUnitId());
|
||||||
maPartType.setBuyPrice(fifthLevel);
|
maPartType.setBuyPrice(thirdLevel.getBuyPrice());
|
||||||
maPartType.setParentId(secondLevelId);
|
maPartType.setParentId(secondLevelId);
|
||||||
maPartType.setLevel("3");
|
maPartType.setLevel("3");
|
||||||
excelMapper.insertPaName(maPartType);//如果第一层在数据库中查询不到则插入数据,并且读取到parent_id
|
excelMapper.insertPaName(maPartType);//如果第一层在数据库中查询不到则插入数据,并且读取到parent_id
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue