|
|
|
@ -37,13 +37,22 @@ public class TagExcelUtil {
|
|
|
|
|
try (Workbook workbook = WorkbookFactory.create(is)) {
|
|
|
|
|
Sheet sheet = workbook.getSheetAt(0);
|
|
|
|
|
|
|
|
|
|
// 解析订单信息
|
|
|
|
|
Map<String, String> orderInfo = parseOrderInfo(sheet);
|
|
|
|
|
result.put("orderInfo", orderInfo);
|
|
|
|
|
Row row = sheet.getRow(0);
|
|
|
|
|
Cell cellI1 = row.getCell(8); // I列是第9列(索引8)
|
|
|
|
|
Cell cellJ1 = row.getCell(9); // J列是第10列(索引9)
|
|
|
|
|
boolean isInventoryFlag = validateCells(cellI1, cellJ1);//桌面读写器盘点模板
|
|
|
|
|
|
|
|
|
|
// 解析标签数据
|
|
|
|
|
List<Map<String, String>> tagList = parseTagList(sheet);
|
|
|
|
|
result.put("tagList", tagList);
|
|
|
|
|
if (isInventoryFlag) {
|
|
|
|
|
List<Map<String, String>> tagList = parseTagList(sheet, 1);
|
|
|
|
|
result.put("tagList", tagList);
|
|
|
|
|
} else {
|
|
|
|
|
// 解析订单信息
|
|
|
|
|
Map<String, String> orderInfo = parseOrderInfo(sheet);
|
|
|
|
|
result.put("orderInfo", orderInfo);
|
|
|
|
|
// 解析标签数据
|
|
|
|
|
List<Map<String, String>> tagList = parseTagList(sheet, 7);
|
|
|
|
|
result.put("tagList", tagList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
@ -52,6 +61,22 @@ public class TagExcelUtil {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 校验单元格值是否符合要求
|
|
|
|
|
*
|
|
|
|
|
* @param cellI1 I1单元格
|
|
|
|
|
* @param cellJ1 J1单元格
|
|
|
|
|
* @return 校验结果
|
|
|
|
|
*/
|
|
|
|
|
private static boolean validateCells(Cell cellI1, Cell cellJ1) {
|
|
|
|
|
// 获取单元格值并转换为字符串
|
|
|
|
|
String valueI1 = getCellStringValue(cellI1);
|
|
|
|
|
String valueJ1 = getCellStringValue(cellJ1);
|
|
|
|
|
|
|
|
|
|
// 校验是否满足条件
|
|
|
|
|
return "EPC".equalsIgnoreCase(valueI1) && "TID".equalsIgnoreCase(valueJ1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 解析订单信息(前5行)
|
|
|
|
|
*/
|
|
|
|
@ -115,21 +140,25 @@ public class TagExcelUtil {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 解析标签数据列表(从第8行开始)
|
|
|
|
|
*
|
|
|
|
|
* @param sheet sheet
|
|
|
|
|
* @param startRow (从第8行开始)
|
|
|
|
|
* @return ArrayList
|
|
|
|
|
*/
|
|
|
|
|
private static List<Map<String, String>> parseTagList(Sheet sheet) {
|
|
|
|
|
private static List<Map<String, String>> parseTagList(Sheet sheet, int startRow) {
|
|
|
|
|
List<Map<String, String>> tagList = new ArrayList<>();
|
|
|
|
|
try {
|
|
|
|
|
// 获取表头
|
|
|
|
|
Row headerRow = sheet.getRow(6);
|
|
|
|
|
Row headerRow = sheet.getRow(startRow - 1);
|
|
|
|
|
List<String> headers = new ArrayList<>();
|
|
|
|
|
for (Cell cell : headerRow) {
|
|
|
|
|
headers.add(getCellStringValue(cell));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 解析数据行
|
|
|
|
|
int startRow = 7;
|
|
|
|
|
Row row;
|
|
|
|
|
while ((row = sheet.getRow(startRow)) != null) {
|
|
|
|
|
int thisStartRow = startRow;
|
|
|
|
|
while ((row = sheet.getRow(thisStartRow)) != null) {
|
|
|
|
|
Map<String, String> tagData = new HashMap<>();
|
|
|
|
|
boolean hasData = false;
|
|
|
|
|
|
|
|
|
@ -146,7 +175,7 @@ public class TagExcelUtil {
|
|
|
|
|
} else {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
startRow++;
|
|
|
|
|
thisStartRow++;
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.error("解析标签数据失败", e);
|
|
|
|
@ -245,8 +274,9 @@ public class TagExcelUtil {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 检查原始字符串是否以目标字符串匹配(支持通配符'*'匹配)
|
|
|
|
|
*
|
|
|
|
|
* @param originalField 原始字符串(待检查的字符串)
|
|
|
|
|
* @param checkField 目标字符串(可包含通配符'*',表示该位置任意字符均匹配)
|
|
|
|
|
* @param checkField 目标字符串(可包含通配符'*',表示该位置任意字符均匹配)
|
|
|
|
|
* @return 返回匹配结果
|
|
|
|
|
*/
|
|
|
|
|
public static boolean startsWithCheck(String originalField, String checkField) {
|
|
|
|
|