From b4fd3ac09d2e3d2fde1eb5c4663620c573cd3997 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期一, 09 十二月 2024 10:13:17 +0800
Subject: [PATCH] 远场的报告解析
---
inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java | 426 ++++++++++++++++++++++++++++++++--------------------
1 files changed, 262 insertions(+), 164 deletions(-)
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java b/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java
index eb50374..154acef 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java
@@ -59,7 +59,7 @@
Exceldata exceldata = new Exceldata();
Map<Integer, Object> project = new HashMap<>();
HashMap<String, Object> datas1 = new HashMap<>();
- Boolean exitLoop=false;
+ Boolean exitLoop = false;
for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
String s = "";
Sheet sheet = workbook.getSheetAt(i);
@@ -92,8 +92,8 @@
} else {
switch (cell.getCellType()) {
case STRING:
- if (cell.getColumnIndex()==1) {
- exitLoop=true;
+ if (cell.getColumnIndex() == 1) {
+ exitLoop = true;
break;
}
if (StringUtils.isNotEmpty(s)) {
@@ -120,8 +120,8 @@
System.out.print("NULL\t");
}
}
- if (exitLoop){
- exitLoop=false;
+ if (exitLoop) {
+ exitLoop = false;
break;
}
if (map.isEmpty()) {
@@ -146,7 +146,7 @@
for (Map<String, Object> number : hashMaps) {
number.put("绔彛", s1);
Double o = (Double) number.get("棰戠巼");
- if (o!=null) {
+ if (o != null) {
floatList.add(o);
}
}
@@ -203,144 +203,256 @@
public void getFuSheWord2(String sonLaboratory, InsOrderFile insOrderFile) {
//璇诲彇excel鏂囦欢鍐呭
String excelFilePath = wordUrl + "/" + insOrderFile.getFileUrl(); // 鏇存柊涓轰綘鐨勬枃浠惰矾寰�
- String fileEncoding = "GBK"; // 鎴栧叾浠栫紪鐮佹牸寮忥紝濡侴BK, ISO-8859-1 绛�
- Exceldata exceldata = new Exceldata();
- HashMap<Integer, Object> project = new HashMap<>();
- HashMap<String, Object> biaozhun = new HashMap<>();
- HashMap<String, Object> pingjunzhi = new HashMap<>();
- HashMap<String, Object> datas1 = new HashMap<>();
- HashMap<String, Object> map2 = new HashMap<>();
- List<Map<String, Object>> list = new ArrayList<>();
- XWPFDocument document = new XWPFDocument();
- String jiaodu = "";
- String port = "";
- try (CSVReader reader = new CSVReader(new InputStreamReader(new FileInputStream(excelFilePath), fileEncoding))) {
- List<String[]> records = reader.readAll();
- for (int i = 0; i < records.size(); i++) {
- HashMap<String, Object> map1 = new HashMap<>();
- HashMap<String, Object> pingjun = new HashMap<>();
- String[] record = records.get(i);
-
- for (int i1 = 0; i1 < record.length; i1++) {
- String value = record[i1];
- if (i == 0) {
- project.put(i1, value);
- }
- if (i == 1) {
- biaozhun.put(project.get(i1).toString(), value);
- }
- if (i > 2) {
- if (i1 == 0 && StringUtils.isNotEmpty(value)) {
-
- if (map2.size() != 0) {
- map2.put(port, list);
- datas1.put(jiaodu, map2);
- map2 = new HashMap<>();
- }
- datas1.put(value, "");
- jiaodu = value;
- } else if (i1 == 1 && StringUtils.isNotEmpty(value)) {
- if (list.size() != 0) {
- map2.put(port, list);
- list = new ArrayList<>();
- }
- map2.put(value, "");
- port = value;
- } else if (StringUtils.isNotEmpty(value)) {
- if (value.equals("鏈�澶у��") || value.equals("鏈�灏忓��") || value.equals("鎸囨爣") || value.equals("绫诲埆")) {
- break;
- } else if (value.equals("骞冲潎鍊�")) {
- for (int i2 = 0; i2 < record.length; i2++) {
- String value1 = record[i2];
- if (value1.equals("骞冲潎鍊�")) {
- continue;
- }
- pingjun.put(project.get(i2).toString(), value1);
- }
- break;
- }
- map1.put(project.get(i1).toString(), value);
- }
- }
- System.out.print(value + " ");
- }
- if (map1.size() != 0) {
- list.add(map1);
- }
- if (pingjun.size() != 0) {
- pingjunzhi.put(jiaodu, pingjun);
- }
- if (i == records.size() - 1) {
- map2.put(port, list);
- datas1.put(jiaodu, map2);
- }
- System.out.println();
- }
- System.out.println("-----------------");
- } catch (Exception e) {
- e.printStackTrace();
- }
- exceldata.setProject(project);
- exceldata.setDataRow(datas1);
- System.out.println(exceldata);
-
-
- HashMap<String, Object> map = new HashMap<>();
- for (String s : datas1.keySet()) {
- Map<String, List<HashMap<String, Object>>> numbers = (Map<String, List<HashMap<String, Object>>>) datas1.get(s);
- for (String s1 : numbers.keySet()) {
- List<HashMap<String, Object>> hashMaps = numbers.get(s1);
-
- List<Integer> floatList = new ArrayList<>();
- for (Map<String, Object> number : hashMaps) {
- number.put("绔彛", s1);
- floatList.add(Integer.parseInt((String) number.get("娴嬭瘯棰戠巼(MHZ)")));
- }
- Integer maxValue = Collections.max(floatList);
- Integer minValue = Collections.min(floatList);
-
- if (map.get(minValue + "-" + maxValue + "-" + s) == null) {
- map.put(minValue + "-" + maxValue + "-" + s, s1);
- } else {
- Object o = map.get(minValue + "-" + maxValue + "-" + s);
- map.put(minValue + "-" + maxValue + "-" + s, s1 + "," + o);
- }
- }
-
- }
- System.out.println(map);
-
- int size = map.size();
- for (String s1 : map.keySet()) {
- String o = map.get(s1).toString();
-
- List<String> collect = Arrays.stream(o.split(",")).collect(Collectors.toList());
- int size1 = -1;
-
- for (String s : datas1.keySet()) {
- Map<String, List<HashMap<String, Object>>> o1 = (Map<String, List<HashMap<String, Object>>>) datas1.get(s);
- for (String s3 : o1.keySet()) {
- List<HashMap<String, Object>> numbers = o1.get(s3);
- for (String s2 : collect) {
- if (s3.equals(s2)) {
- if (numbers.size() > size1) {
- size1 = numbers.size();
- }
- }
- }
- map.put(s1, o + "," + size1);
- }
- }
-
- }
- System.out.println(map);
+ FileInputStream fileInputStream = null;
+ Workbook workbook = null;
try {
- createWord2(sonLaboratory, document, exceldata, map, pingjunzhi, biaozhun, insOrderFile);
+ fileInputStream = new FileInputStream(new File(excelFilePath));
+ workbook = new XSSFWorkbook(fileInputStream); // 瀵逛簬 .xlsx 鏂囦欢
+ XWPFDocument document = new XWPFDocument();
+
+ Boolean exitLoop = false;
+ for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
+ Exceldata exceldata = new Exceldata();
+ HashMap<Integer, Object> project = new HashMap<>();
+ HashMap<String, Object> biaozhun = new HashMap<>();
+ HashMap<String, Object> pingjunzhi = new HashMap<>();
+ HashMap<String, Object> datas1 = new HashMap<>();
+ HashMap<String, Object> map2 = new HashMap<>();
+ List<Map<String, Object>> list = new ArrayList<>();
+ String jiaodu = "";
+ String port = "";
+ Integer count = 0;
+ Sheet sheet = workbook.getSheetAt(i);
+ Boolean biaoji = false;
+ int lastRowNum = sheet.getLastRowNum();
+ for (Row row : sheet) {
+
+ count++;
+ HashMap<String, Object> map1 = new HashMap<>();
+ HashMap<String, Object> pingjun = new HashMap<>();
+
+ HashMap<String, Object> map = new HashMap<>();
+ for (Cell cell : row) {
+
+ if (row.getRowNum() == 0) {
+ switch (cell.getCellType()) {
+ case STRING:
+ project.put(cell.getColumnIndex(), cell.getStringCellValue());
+ System.out.print(cell.getStringCellValue() + "\t");
+ break;
+ case NUMERIC:
+ System.out.print(cell.getNumericCellValue() + "\t");
+ break;
+ case BOOLEAN:
+ System.out.print(cell.getBooleanCellValue() + "\t");
+ break;
+ case FORMULA:
+ System.out.print(cell.getCellFormula() + "\t");
+ break;
+ default:
+ System.out.print("NULL\t");
+ }
+ } else if (row.getRowNum() == 1) {
+
+ switch (cell.getCellType()) {
+ case STRING:
+ biaozhun.put(project.get(cell.getColumnIndex()).toString(), cell.getStringCellValue());
+ break;
+ case NUMERIC:
+ System.out.print(cell.getNumericCellValue() + "\t");
+ break;
+ case BOOLEAN:
+ System.out.print(cell.getBooleanCellValue() + "\t");
+ break;
+ case FORMULA:
+ System.out.print(cell.getCellFormula() + "\t");
+ break;
+ default:
+ System.out.print("NULL\t");
+ }
+ } else if (row.getRowNum() > 2) {
+
+ if (cell.getColumnIndex() == 0 && StringUtils.isNotEmpty(cell.getStringCellValue())) {
+
+ if (map2.size() != 0) {
+ map2.put(port, list);
+ datas1.put(jiaodu, map2);
+ map2 = new HashMap<>();
+ }
+ datas1.put(cell.getStringCellValue(), "");
+ jiaodu = cell.getStringCellValue();
+ } else if (cell.getColumnIndex() == 1 && StringUtils.isNotEmpty(cell.getStringCellValue())) {
+ if (list.size() != 0) {
+ map2.put(port, list);
+ list = new ArrayList<>();
+ }
+ map2.put(cell.getStringCellValue(), "");
+ port = cell.getStringCellValue();
+
+ } else {
+ switch (cell.getCellType()) {
+ case STRING:
+ String value = cell.getStringCellValue();
+ if (value.equals("avg")) {
+ for (Cell cell1 : row) {
+ switch (cell1.getCellType()) {
+ case STRING:
+
+ break;
+ case NUMERIC:
+ pingjun.put(project.get(cell1.getColumnIndex()).toString(), cell1.getNumericCellValue());
+ System.out.print(cell1.getNumericCellValue() + "\t");
+ break;
+ case BOOLEAN:
+ System.out.print(cell1.getBooleanCellValue() + "\t");
+ break;
+ case FORMULA:
+ String cellFormula = cell1.getCellFormula();
+ Double numericCellValue = cell1.getNumericCellValue();
+ pingjun.put(project.get(cell1.getColumnIndex()).toString(), cell1.getNumericCellValue());
+ System.out.print(cellFormula);
+ break;
+ default:
+ System.out.print("NULL\t");
+ }
+
+ }
+ } else {
+ biaoji = true;
+ }
+ break;
+ case NUMERIC:
+ map1.put(project.get(cell.getColumnIndex()).toString(), cell.getNumericCellValue());
+ System.out.print(cell.getNumericCellValue() + "\t");
+ break;
+ case BOOLEAN:
+ System.out.print(cell.getBooleanCellValue() + "\t");
+ break;
+ case FORMULA:
+ System.out.print(cell.getCellFormula() + "\t");
+ break;
+ default:
+ System.out.print("NULL\t");
+ }
+
+ }
+ }
+ if (biaoji) {
+ biaoji = false;
+ break;
+ }
+ }
+
+ if (map1.size() != 0) {
+ list.add(map1);
+ }
+ if (pingjun.size() != 0) {
+ pingjunzhi.put(jiaodu, pingjun);
+ }
+
+ if (count == lastRowNum + 1) {
+ map2.put(port, list);
+ datas1.put(jiaodu, map2);
+ }
+ System.out.println();
+ }
+ exceldata.setProject(project);
+ exceldata.setDataRow(datas1);
+ System.out.println(exceldata);
+
+
+ HashMap<String, Object> map = new HashMap<>();
+ for (String s : datas1.keySet()) {
+ Map<String, List<HashMap<String, Object>>> numbers = (Map<String, List<HashMap<String, Object>>>) datas1.get(s);
+ for (String s1 : numbers.keySet()) {
+ List<HashMap<String, Object>> hashMaps = numbers.get(s1);
+
+ List<Integer> floatList = new ArrayList<>();
+ for (Map<String, Object> number : hashMaps) {
+ number.put("绔彛", s1);
+ Double o = (Double) number.get("娴嬭瘯棰戠巼(MHZ)");
+ floatList.add(o.intValue());
+ }
+ Integer maxValue = Collections.max(floatList);
+ Integer minValue = Collections.min(floatList);
+
+ if (map.get(minValue + "-" + maxValue + "-" + s) == null) {
+ map.put(minValue + "-" + maxValue + "-" + s, s1);
+ } else {
+ Object o = map.get(minValue + "-" + maxValue + "-" + s);
+ map.put(minValue + "-" + maxValue + "-" + s, s1 + "," + o);
+ }
+ }
+
+ }
+
+ System.out.println(map);
+
+
+ int size = map.size();
+ for (String s1 : map.keySet()) {
+ String o = map.get(s1).toString();
+
+ List<String> collect = Arrays.stream(o.split(",")).collect(Collectors.toList());
+ int size1 = -1;
+
+ for (String s : datas1.keySet()) {
+ Map<String, List<HashMap<String, Object>>> o1 = (Map<String, List<HashMap<String, Object>>>) datas1.get(s);
+ for (String s3 : o1.keySet()) {
+ List<HashMap<String, Object>> numbers = o1.get(s3);
+ for (String s2 : collect) {
+ if (s3.equals(s2)) {
+ if (numbers.size() > size1) {
+ size1 = numbers.size();
+ }
+ }
+ }
+ map.put(s1, o + "," + size1);
+ }
+ }
+
+ }
+ System.out.println(map);
+
+ createWord2(sonLaboratory, document, exceldata, map, pingjunzhi, biaozhun, insOrderFile);
+
+ }
+ // 杈撳嚭鍒版枃浠�
+ InsSample insSample = insSampleMapper.selectById(insOrderFile.getInsSampleId());
+ String[] split = insOrderFile.getFileName().split("\\.");
+ String name = insOrderFile.getFileName().replace("#", "&").substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length()));
+ String url = UUID.randomUUID() + "_" + insSample.getSampleCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx";
+ url.replace("#", "&");
+ FileOutputStream out = new FileOutputStream(wordUrl + "/" + url);
+ document.write(out);
+ out.close();
+ document.close();
+ InsOrderFile orderFile = new InsOrderFile();
+ orderFile.setInsOrderId(insOrderFile.getInsOrderId());
+ orderFile.setInsSampleId(insOrderFile.getInsSampleId());
+ orderFile.setFileUrl(url);
+ orderFile.setType(2);
+ orderFile.setFileName(insSample.getSampleCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx");
+ orderFile.setSonLaboratory(sonLaboratory);
+ insOrderFileMapper.insert(orderFile);
+
} catch (IOException e) {
e.printStackTrace();
- }
+ } finally {
+ // 鍏抽棴璧勬簮
+ try {
+ if (workbook != null) {
+ workbook.close();
+ }
+ if (fileInputStream != null) {
+ fileInputStream.close();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
}
@@ -539,7 +651,7 @@
try {
InsSample insSample = insSampleMapper.selectById(insOrderFile.getInsSampleId());
String[] split = insOrderFile.getFileName().split("\\.");
- String name = insOrderFile.getFileName().replace('#','&').substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length()));
+ String name = insOrderFile.getFileName().replace('#', '&').substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length()));
String url = UUID.randomUUID() + "_" + insSample.getSampleCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx";
url.replace("#", "&");
FileOutputStream out = new FileOutputStream(wordUrl + "/" + url);
@@ -608,6 +720,7 @@
List<String> collect = Arrays.stream(split).collect(Collectors.toList());
+ collect.sort((o1, o21) -> Integer.parseInt(o1.substring((o1.length() - 1))) - Integer.parseInt(o21.substring(o21.length() - 1)));
int size1 = 0;
@@ -689,7 +802,10 @@
XWPFParagraph paragraph3 = table.getRow(0).getCell(3).getParagraphArray(0);
XWPFRun run3 = paragraph3.createRun();
- run3.setText(bz.get(s2).toString());
+ if (bz.get(s2) != null) {
+ run3.setText(bz.get(s2).toString());
+ }
+
XWPFParagraph paragraph4 = table.getRow(0).getCell(4).getParagraphArray(0);
XWPFRun run4 = paragraph4.createRun();
@@ -726,7 +842,10 @@
}
Map<Integer, List<Map<String, Object>>> group = mapList.stream()
- .collect(Collectors.groupingBy(item -> Integer.parseInt(item.get("娴嬭瘯棰戠巼(MHZ)").toString())));
+ .collect(Collectors.groupingBy(item -> {
+ Double aDouble = (Double) item.get("娴嬭瘯棰戠巼(MHZ)");
+ return aDouble.intValue();
+ }));
int hang = 2;
@@ -762,28 +881,7 @@
size++;
}
}
- // 杈撳嚭鍒版枃浠�
- try {
- InsSample insSample = insSampleMapper.selectById(insOrderFile.getInsSampleId());
- String[] split = insOrderFile.getFileName().split("\\.");
- String name = insOrderFile.getFileName().replace("#", "&").substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length()));
- String url = UUID.randomUUID() + "_" + insSample.getSampleCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx";
- url.replace("#", "&");
- FileOutputStream out = new FileOutputStream(wordUrl + "/" + url);
- document.write(out);
- out.close();
- document.close();
- InsOrderFile orderFile = new InsOrderFile();
- orderFile.setInsOrderId(insOrderFile.getInsOrderId());
- orderFile.setInsSampleId(insOrderFile.getInsSampleId());
- orderFile.setFileUrl(url);
- orderFile.setType(2);
- orderFile.setFileName(insSample.getSampleCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx");
- orderFile.setSonLaboratory(sonLaboratory);
- insOrderFileMapper.insert(orderFile);
- } catch (IOException e) {
- e.printStackTrace();
- }
+
}
--
Gitblit v1.9.3