Commit b481fedb authored by hongguangwu's avatar hongguangwu

MVP1.6.2-工资原表识别-优化

parent dac28f7c
...@@ -194,6 +194,10 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand ...@@ -194,6 +194,10 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
String idCardValue = null; String idCardValue = null;
// 数据行是否被确认,true否 // 数据行是否被确认,true否
boolean dataRowFlag; boolean dataRowFlag;
// 超过极限空白列maxNullColumNum,只循环表头 true:未超越
boolean nullFlag = true;
// 极限空白表头列,超过阈值,将不继续循环列
int maxTitleNullColumNum = 50;
HSSFCell cell; HSSFCell cell;
// 循环每个sheet // 循环每个sheet
for (int i = 0; i < sheetNum; i++) { for (int i = 0; i < sheetNum; i++) {
...@@ -213,6 +217,7 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand ...@@ -213,6 +217,7 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
nullColumn = -1; nullColumn = -1;
preNullColumn = -1; preNullColumn = -1;
nullColumnNum = 0; nullColumnNum = 0;
nullFlag = true;
idCardValue = null; idCardValue = null;
contentMap = new HashMap<>(); contentMap = new HashMap<>();
...@@ -267,12 +272,30 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand ...@@ -267,12 +272,30 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
if (Common.isNotNull(cellValue)) { if (Common.isNotNull(cellValue)) {
titleMap.put(String.valueOf(cellNum), cellValue); titleMap.put(String.valueOf(cellNum), cellValue);
} }
contentMap.put(String.valueOf(cellNum), cellValue); if (nullFlag) {
if (dataRowFlag) { contentMap.put(String.valueOf(cellNum), cellValue);
if (Common.isEmpty(cellValue)) { if (dataRowFlag) {
if (titleMap.get(String.valueOf(cellNum)) != null) { if (Common.isEmpty(cellValue)) {
columnVo.setContent(titleMap.get(String.valueOf(cellNum))); if (titleMap.get(String.valueOf(cellNum)) != null) {
columnVo.setContent(titleMap.get(String.valueOf(cellNum)));
} else {
if (preNullColumn == -1 || preNullColumn + 1 == cellNum) {
if (nullColumn == -1) {
nullColumn = cellNum;
}
preNullColumn = cellNum;
nullColumnNum++;
}
columnVo.setContent("空白列" + cellNum);
}
} else { } else {
nullColumn = -1;
preNullColumn = -1;
nullColumnNum = 0;
}
columnList.add(columnVo);
} else {
if (Common.isEmpty(cellValue)) {
if (preNullColumn == -1 || preNullColumn + 1 == cellNum) { if (preNullColumn == -1 || preNullColumn + 1 == cellNum) {
if (nullColumn == -1) { if (nullColumn == -1) {
nullColumn = cellNum; nullColumn = cellNum;
...@@ -280,14 +303,24 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand ...@@ -280,14 +303,24 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
preNullColumn = cellNum; preNullColumn = cellNum;
nullColumnNum++; nullColumnNum++;
} }
columnVo.setContent("空白列" + cellNum); } else {
nullColumn = -1;
preNullColumn = -1;
nullColumnNum = 0;
} }
} else {
nullColumn = -1;
preNullColumn = -1;
nullColumnNum = 0;
} }
columnList.add(columnVo); if (nullColumnNum >= maxNullColumNum) {
for (int num = maxNullColumNum - 1; num >= 0; num--) {
if (dataRowFlag) {
columnList.remove(nullColumn + num);
}
contentMap.remove(String.valueOf(nullColumn + num));
}
nullFlag = false;
}
if (idCardColumn != -1 && cellNum == idCardColumn) {
idCardValue = cellValue;
}
} else { } else {
if (Common.isEmpty(cellValue)) { if (Common.isEmpty(cellValue)) {
if (preNullColumn == -1 || preNullColumn + 1 == cellNum) { if (preNullColumn == -1 || preNullColumn + 1 == cellNum) {
...@@ -302,18 +335,10 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand ...@@ -302,18 +335,10 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
preNullColumn = -1; preNullColumn = -1;
nullColumnNum = 0; nullColumnNum = 0;
} }
} // 表头Map超过50,跳出当前行的列循环
if (nullColumnNum >= maxNullColumNum) { if (nullColumnNum >= maxTitleNullColumNum) {
for (int num = maxNullColumNum - 1; num >= 0; num--) { break;
if (dataRowFlag) {
columnList.remove(nullColumn + num);
}
contentMap.remove(String.valueOf(nullColumn + num));
} }
break;
}
if (idCardColumn != -1 && cellNum == idCardColumn) {
idCardValue = cellValue;
} }
} }
if (!dataRowFlag) { if (!dataRowFlag) {
...@@ -404,6 +429,10 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand ...@@ -404,6 +429,10 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
String idCardValue = null; String idCardValue = null;
// 数据行是否被确认,true否 // 数据行是否被确认,true否
boolean dataRowFlag; boolean dataRowFlag;
// 超过极限空白列maxNullColumNum,只循环表头 true:未超越
boolean nullFlag = true;
// 极限空白表头列,超过阈值,将不继续循环列
int maxTitleNullColumNum = 50;
XSSFCell cell; XSSFCell cell;
// 循环每个sheet // 循环每个sheet
for (int i = 0; i < sheetNum; i++) { for (int i = 0; i < sheetNum; i++) {
...@@ -423,6 +452,7 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand ...@@ -423,6 +452,7 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
nullColumn = -1; nullColumn = -1;
preNullColumn = -1; preNullColumn = -1;
nullColumnNum = 0; nullColumnNum = 0;
nullFlag = true;
idCardValue = null; idCardValue = null;
contentMap = new HashMap<>(); contentMap = new HashMap<>();
...@@ -477,12 +507,30 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand ...@@ -477,12 +507,30 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
if (Common.isNotNull(cellValue)) { if (Common.isNotNull(cellValue)) {
titleMap.put(String.valueOf(cellNum), cellValue); titleMap.put(String.valueOf(cellNum), cellValue);
} }
contentMap.put(String.valueOf(cellNum), cellValue); if (nullFlag) {
if (dataRowFlag) { contentMap.put(String.valueOf(cellNum), cellValue);
if (Common.isEmpty(cellValue)) { if (dataRowFlag) {
if (titleMap.get(String.valueOf(cellNum)) != null) { if (Common.isEmpty(cellValue)) {
columnVo.setContent(titleMap.get(String.valueOf(cellNum))); if (titleMap.get(String.valueOf(cellNum)) != null) {
columnVo.setContent(titleMap.get(String.valueOf(cellNum)));
} else {
if (preNullColumn == -1 || preNullColumn + 1 == cellNum) {
if (nullColumn == -1) {
nullColumn = cellNum;
}
preNullColumn = cellNum;
nullColumnNum++;
}
columnVo.setContent("空白列" + cellNum);
}
} else { } else {
nullColumn = -1;
preNullColumn = -1;
nullColumnNum = 0;
}
columnList.add(columnVo);
} else {
if (Common.isEmpty(cellValue)) {
if (preNullColumn == -1 || preNullColumn + 1 == cellNum) { if (preNullColumn == -1 || preNullColumn + 1 == cellNum) {
if (nullColumn == -1) { if (nullColumn == -1) {
nullColumn = cellNum; nullColumn = cellNum;
...@@ -490,14 +538,24 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand ...@@ -490,14 +538,24 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
preNullColumn = cellNum; preNullColumn = cellNum;
nullColumnNum++; nullColumnNum++;
} }
columnVo.setContent("空白列" + cellNum); } else {
nullColumn = -1;
preNullColumn = -1;
nullColumnNum = 0;
} }
} else {
nullColumn = -1;
preNullColumn = -1;
nullColumnNum = 0;
} }
columnList.add(columnVo); if (nullColumnNum >= maxNullColumNum) {
for (int num = maxNullColumNum - 1; num >= 0; num--) {
if (dataRowFlag) {
columnList.remove(nullColumn + num);
}
contentMap.remove(String.valueOf(nullColumn + num));
}
nullFlag = false;
}
if (idCardColumn != -1 && cellNum == idCardColumn) {
idCardValue = cellValue;
}
} else { } else {
if (Common.isEmpty(cellValue)) { if (Common.isEmpty(cellValue)) {
if (preNullColumn == -1 || preNullColumn + 1 == cellNum) { if (preNullColumn == -1 || preNullColumn + 1 == cellNum) {
...@@ -512,18 +570,10 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand ...@@ -512,18 +570,10 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
preNullColumn = -1; preNullColumn = -1;
nullColumnNum = 0; nullColumnNum = 0;
} }
} // 表头Map超过50,跳出当前行的列循环
if (nullColumnNum >= maxNullColumNum) { if (nullColumnNum >= maxTitleNullColumNum) {
for (int num = maxNullColumNum - 1; num >= 0; num--) { break;
if (dataRowFlag) {
columnList.remove(nullColumn + num);
}
contentMap.remove(String.valueOf(nullColumn + num));
} }
break;
}
if (idCardColumn != -1 && cellNum == idCardColumn) {
idCardValue = cellValue;
} }
} }
if (!dataRowFlag) { if (!dataRowFlag) {
...@@ -686,7 +736,9 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand ...@@ -686,7 +736,9 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
&& !"银行卡号".equals(title.getContent()) && !"银行卡号".equals(title.getContent())
&& !"手机号码".equals(title.getContent()) && !"手机号码".equals(title.getContent())
&& !"计税月份".equals(title.getContent())) { && !"计税月份".equals(title.getContent())) {
return R.failed("表头与导入的不一致,第" + title.getLineNum() + "列表头【" + title.getContent() + "】未找到配置,请先配置表头!");
return R.failed("未找到对应配置的表头,请核实导入的原表信息后,重新尝试!");
//return R.failed("表头与导入的不一致,第" + title.getLineNum() + "列表头【" + title.getContent() + "】未找到配置,请先配置表头!");
} }
} else if (!title.getContent().equals(detailMap.get(String.valueOf(title.getLineNum())).getExcelName()) } else if (!title.getContent().equals(detailMap.get(String.valueOf(title.getLineNum())).getExcelName())
&& (!"是否新员工(默认否)".equals(title.getContent()) && (!"是否新员工(默认否)".equals(title.getContent())
...@@ -698,10 +750,12 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand ...@@ -698,10 +750,12 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
|| !"手机号码".equals(title.getContent()) || !"手机号码".equals(title.getContent())
|| !"计税月份".equals(title.getContent())) || !"计税月份".equals(title.getContent()))
) { ) {
return R.failed("表头与导入的不一致,第" + (i + 1) + "列应为【" + detailMap.get(String.valueOf(title.getLineNum())).getExcelName() + "】,实际为【" + title.getContent() + "】"); return R.failed("未找到对应配置的表头,请核实导入的原表信息后,重新尝试!!");
//return R.failed("表头与导入的不一致,第" + (i + 1) + "列应为【" + detailMap.get(String.valueOf(title.getLineNum())).getExcelName() + "】,实际为【" + title.getContent() + "】");
} }
} else if (detailMap.get(String.valueOf(title.getLineNum())) != null && Common.isNotNull(detailMap.get(String.valueOf(title.getLineNum())).getExcelName())) { } else if (detailMap.get(String.valueOf(title.getLineNum())) != null && Common.isNotNull(detailMap.get(String.valueOf(title.getLineNum())).getExcelName())) {
return R.failed("表头与导入的不一致,第" + (i + 1) + "列应为【" + detailMap.get(String.valueOf(title.getLineNum())).getExcelName() + "】,实际为空!"); return R.failed("未找到对应配置的表头,请核实导入的原表信息后,重新尝试!!!");
//return R.failed("表头与导入的不一致,第" + (i + 1) + "列应为【" + detailMap.get(String.valueOf(title.getLineNum())).getExcelName() + "】,实际为空!");
} }
} }
} else { } else {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment