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