From 7538475dccf1eb3d6bbd861158461c8e10c639eb Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期二, 25 三月 2025 09:23:13 +0800 Subject: [PATCH] 远场表单居中 --- inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java | 971 ++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 649 insertions(+), 322 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 b64a4d0..268b1bf 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 @@ -1,24 +1,15 @@ package com.yuanchu.mom.utils; import cn.hutool.core.lang.UUID; -import com.deepoove.poi.XWPFTemplate; -import com.deepoove.poi.config.Configure; -import com.deepoove.poi.config.ConfigureBuilder; import com.deepoove.poi.data.*; import com.deepoove.poi.data.style.*; -import com.deepoove.poi.util.TableTools; -import com.opencsv.CSVReader; import com.yuanchu.mom.dto.Exceldata; -import com.yuanchu.mom.exception.ErrorException; import com.yuanchu.mom.mapper.InsOrderFileMapper; -import com.yuanchu.mom.mapper.InsOrderMapper; import com.yuanchu.mom.mapper.InsSampleMapper; -import com.yuanchu.mom.pojo.InsOrder; import com.yuanchu.mom.pojo.InsOrderFile; import com.yuanchu.mom.pojo.InsSample; -import org.apache.commons.io.IOUtils; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.apache.poi.openxml4j.util.ZipSecureFile; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; @@ -31,11 +22,11 @@ import javax.annotation.Resource; import java.io.*; +import java.math.BigDecimal; import java.util.*; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import java.util.stream.Collectors; +@Slf4j @Component public class FuSheUtils { @Value("${wordUrl}") @@ -47,6 +38,7 @@ @Resource InsSampleMapper insSampleMapper; + //杩戝満 public void getFuSheWord1(String sonLaboratory, InsOrderFile insOrderFile) { //璇诲彇excel鏂囦欢鍐呭 String excelFilePath = wordUrl + "/" + insOrderFile.getFileUrl(); // 鏇存柊涓轰綘鐨勬枃浠惰矾寰� @@ -59,7 +51,8 @@ Exceldata exceldata = new Exceldata(); Map<Integer, Object> project = new HashMap<>(); HashMap<String, Object> datas1 = new HashMap<>(); - Boolean exitLoop=false; + HashMap<String, Object> biaozhun = new HashMap<>(); + Boolean exitLoop = false; for (int i = 0; i < workbook.getNumberOfSheets(); i++) { String s = ""; Sheet sheet = workbook.getSheetAt(i); @@ -89,26 +82,55 @@ default: System.out.print("NULL\t"); } - } else { + } + else { switch (cell.getCellType()) { case STRING: - if (cell.getColumnIndex()==1) { - exitLoop=true; + if (cell.getColumnIndex() == 1) { + if (cell.getStringCellValue().equals("鎸囨爣")) { + for (Cell cell1 : row) { + switch (cell1.getCellType()) { + case STRING: + biaozhun.put(project.get(cell1.getColumnIndex()).toString(), cell1.getStringCellValue()); + break; + case NUMERIC: + System.out.print(cell1.getNumericCellValue() + "\t"); + break; + case BOOLEAN: + System.out.print(cell1.getBooleanCellValue() + "\t"); + break; + case FORMULA: + System.out.print(cell1.getCellFormula() + "\t"); + break; + default: + System.out.print("NULL\t"); + } + } + } + exitLoop = true; break; } - if (StringUtils.isNotEmpty(s)) { - datas.put(s, list); + String value = "zss"; + switch (row.getCell(1).getCellType()){ + case STRING: + value = cell.getStringCellValue(); + break; } - list = new ArrayList<>(); - s = cell.getStringCellValue(); - datas.put(s, cell.getStringCellValue()); - System.out.print(cell.getStringCellValue() + "\t"); + if (value.equals("zss")){ + if (StringUtils.isNotEmpty(s)) { + datas.put(s, list); + } + list = new ArrayList<>(); + s = cell.getStringCellValue(); + datas.put(s, cell.getStringCellValue()); + System.out.print(cell.getStringCellValue() + "\t"); + } break; case NUMERIC: - int columnIndex = cell.getColumnIndex(); - Object o = project.get(columnIndex); - map.put(o.toString(), cell.getNumericCellValue()); - System.out.print(cell.getNumericCellValue() + "\t"); + int columnIndex = cell.getColumnIndex(); + Object o = project.get(columnIndex); + map.put(o.toString(), cell.getNumericCellValue()); + System.out.print(cell.getNumericCellValue() + "\t"); break; case BOOLEAN: System.out.print(cell.getBooleanCellValue() + "\t"); @@ -120,8 +142,8 @@ System.out.print("NULL\t"); } } - if (exitLoop){ - exitLoop=false; + if (exitLoop) { + exitLoop = false; break; } if (map.isEmpty()) { @@ -130,6 +152,7 @@ } } } + list=list.stream().filter(map -> !map.isEmpty()).collect(Collectors.toList()); datas.put(s, list); map1.put(sheetName, datas); datas1.putAll(map1); @@ -146,7 +169,7 @@ for (Map<String, Object> number : hashMaps) { number.put("绔彛", s1); Double o = (Double) number.get("棰戠巼"); - if (o!=null) { + if (o != null) { floatList.add(o); } } @@ -161,7 +184,6 @@ } } 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()); @@ -182,7 +204,7 @@ } } System.out.println(map); - createWord(sonLaboratory, document, exceldata, map, insOrderFile); + createWord(sonLaboratory, document, exceldata, map, biaozhun, insOrderFile); } catch (IOException e) { e.printStackTrace(); } finally { @@ -200,151 +222,249 @@ } } + //杩滃満 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(); + 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<>(); + 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() > 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 if (value.equals("鎸囨爣")) { + for (Cell cell1 : row) { + switch (cell1.getCellType()) { + case STRING: + biaozhun.put(project.get(cell1.getColumnIndex()).toString(), cell1.getStringCellValue()); + break; + case NUMERIC: + System.out.print(cell1.getNumericCellValue() + "\t"); + break; + case BOOLEAN: + System.out.print(cell1.getBooleanCellValue() + "\t"); + break; + case FORMULA: + System.out.print(cell1.getCellFormula() + "\t"); + 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); + + 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 = 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(); + } + } } - - public void createWord(String sonLaboratory, XWPFDocument document, Exceldata exceldata, HashMap<String, Object> map, InsOrderFile insOrderFile) throws IOException { + //杩戝満 + public void createWord(String sonLaboratory, XWPFDocument document, Exceldata exceldata, HashMap<String, Object> map, HashMap<String, Object> bz, InsOrderFile insOrderFile) throws IOException { int size = 1; XWPFParagraph paragraphs = document.createParagraph(); XWPFRun runs = paragraphs.createRun(); @@ -396,7 +516,7 @@ XWPFParagraph paragraph18 = table1.getRow(1).getCell(0).getParagraphArray(0); paragraph18.setAlignment(ParagraphAlignment.CENTER); XWPFRun run18 = paragraph18.createRun(); - run18.setText("棰戞锛� " + result1 + "MHz " + "涓嬪�捐" + result); + run18.setText("涓嬪�捐" + result); List<String> collect = Arrays.stream(split).collect(Collectors.toList()); List<Map<String, Object>> list = new ArrayList<>(); // 瀵规墍鏈夌殑閿仛鍚� @@ -417,121 +537,238 @@ aggregatedMap.get(key).add(item); } } + int rowNum = 2; for (String s2 : aggregatedMap.keySet()) { if (s2.equals("绔彛") || s2.equals("棰戠巼")) { continue; } List<Map<String, Object>> mapList = aggregatedMap.get(s2); // 鍒涘缓涓�涓〃鏍� - XWPFTable table = document.createTable(row, cell); - table.setWidth("100%"); + int checkItemRowNum = row; + for (int i = 0; i < checkItemRowNum; i++) { + XWPFTableRow tableRow = table1.createRow(); + for (XWPFTableCell tableCell : tableRow.getTableCells()) { + // 璁剧疆鍗曞厓鏍煎唴瀹瑰眳涓榻� + for (XWPFParagraph paragraph : tableCell.getParagraphs()) { + paragraph.setAlignment(ParagraphAlignment.CENTER); + } + } + } //鍨傜洿 - mergeCellsVertically(table, 0, 0, row - 1); - mergeCellsVertically(table, 1, 0, row - 1); - mergeCellsVertically(table, 2, 0, row - 1); - mergeCellsVertically(table, 3, 0, row - 1); - mergeCellsVertically(table, 4, 0, 1); - mergeCellsVertically(table, cell - 1, 0, 1); - mergeCellsVertically(table, cell - 1, 2, row - 2); + mergeCellsVertically(table1, 0, rowNum, rowNum + checkItemRowNum - 1); + mergeCellsVertically(table1, 1, rowNum, rowNum + checkItemRowNum - 1); + mergeCellsVertically(table1, 2, rowNum, rowNum + checkItemRowNum - 1); + mergeCellsVertically(table1, 3, rowNum, rowNum + checkItemRowNum - 1); + mergeCellsVertically(table1, 4, rowNum, rowNum + 1); + mergeCellsVertically(table1, cell - 1, rowNum, rowNum + 1); + mergeCellsVertically(table1, cell - 1, rowNum + 2, rowNum + checkItemRowNum - 2); //姘村钩 - mergeCellsHorizontally(table, 0, 5, cell - 2); - mergeCellsHorizontally(table, row - 1, 5, cell - 2); - - table.setInsideHBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 鍐呴儴姘村钩杈规 - table.setInsideVBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 鍐呴儴鍨傜洿杈规 - table.setBottomBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 涓嬭竟妗� - table.setTopBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 涓婅竟妗� - table.setLeftBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 宸﹁竟妗� - table.setRightBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 鍙宠竟妗� + mergeCellsHorizontally(table1, rowNum, 5, cell - 2); + mergeCellsHorizontally(table1, rowNum + checkItemRowNum - 1, 5, cell - 2); // 璁剧疆鍗曞厓鏍兼枃鏈苟灞呬腑 - XWPFParagraph paragraph = table.getRow(0).getCell(0).getParagraphArray(0); + XWPFParagraph paragraph = table1.getRow(rowNum).getCell(0).getParagraphArray(0); paragraph.setAlignment(ParagraphAlignment.CENTER); XWPFRun run = paragraph.createRun(); run.setText(String.valueOf(size)); - XWPFParagraph paragraph1 = table.getRow(0).getCell(1).getParagraphArray(0); + XWPFParagraph paragraph1 = table1.getRow(rowNum).getCell(1).getParagraphArray(0); paragraph1.setAlignment(ParagraphAlignment.CENTER); XWPFRun run1 = paragraph1.createRun(); run1.setText(s2); - // 璋冪敤鏂规硶鎻愬彇绗竴涓嫭鍙峰唴鐨勫唴瀹� - String firstContent = extractFirstContentFromBrackets(s2); - if (firstContent != null) { - XWPFParagraph paragraph2 = table.getRow(0).getCell(2).getParagraphArray(0); - paragraph2.setAlignment(ParagraphAlignment.CENTER); - XWPFRun run2 = paragraph2.createRun(); - run2.setText(firstContent); + // 鍗曚綅 + XWPFParagraph paragraph2 = table1.getRow(rowNum).getCell(2).getParagraphArray(0); + XWPFRun run2 = paragraph2.createRun(); + if (s2.contains("澧炵泭")) { + run2.setText("dBi"); + } else if (s2.contains("娉㈢摚瀹藉害") || s2.contains("娉㈡潫瀹藉害") || s2.contains("涓嬪�捐")) { + run2.setText("掳"); + } else if (s2.contains("鍓嶅悗姣�") || s2.contains("浜ゅ弶鏋佸寲") || s2.contains("鏃佺摚鎶戝埗") || s2.contains("涓嬮檷") || s2.contains("闆剁偣濉厖") || s2.contains("鍓摚鐢靛钩")) { + run2.setText("dB"); + } else if (s2.contains("鏁堢巼") || s2.contains("鎵囧尯鍗犳瘮")) { + run2.setText("%"); } else { - System.out.println("娌℃湁鎵惧埌鎷彿鍐呯殑鍐呭銆�"); + run2.setText(""); } - XWPFParagraph paragraph3 = table.getRow(0).getCell(3).getParagraphArray(0); + XWPFParagraph paragraph3 = table1.getRow(rowNum).getCell(3).getParagraphArray(0); paragraph3.setAlignment(ParagraphAlignment.CENTER); XWPFRun run3 = paragraph3.createRun(); - run3.setText("/"); - XWPFParagraph paragraph4 = table.getRow(0).getCell(4).getParagraphArray(0); + String checkItemStandardStr = ""; + if (bz.get(s2) != null) { + run3.setText(bz.get(s2).toString()); + checkItemStandardStr = bz.get(s2).toString(); + } else { + run3.setText(""); + } + XWPFParagraph paragraph4 = table1.getRow(rowNum).getCell(4).getParagraphArray(0); paragraph4.setAlignment(ParagraphAlignment.CENTER); XWPFRun run4 = paragraph4.createRun(); run4.setText("棰戠巼锛圡Hz锛�"); - XWPFParagraph paragraph5 = table.getRow(0).getCell(5).getParagraphArray(0); + XWPFParagraph paragraph5 = table1.getRow(rowNum).getCell(5).getParagraphArray(0); paragraph5.setAlignment(ParagraphAlignment.CENTER); XWPFRun run5 = paragraph5.createRun(); run5.setText("绔彛"); - XWPFParagraph paragraph6 = table.getRow(0).getCell(cell - 1).getParagraphArray(0); + XWPFParagraph paragraph6 = table1.getRow(rowNum).getCell(cell - 1).getParagraphArray(0); paragraph6.setAlignment(ParagraphAlignment.CENTER); XWPFRun run6 = paragraph6.createRun(); - run6.setText("/"); - XWPFParagraph paragraph7 = table.getRow(2).getCell(cell - 1).getParagraphArray(0); - paragraph7.setAlignment(ParagraphAlignment.CENTER); - XWPFRun run7 = paragraph7.createRun(); - run7.setText("鍚堟牸"); - XWPFParagraph paragraph8 = table.getRow(row - 1).getCell(4).getParagraphArray(0); + run6.setText("鍒ゅ畾"); +// XWPFParagraph paragraph7 = table1.getRow(rowNum + 2 ).getCell(cell - 1).getParagraphArray(0); +// paragraph7.setAlignment(ParagraphAlignment.CENTER); +// XWPFRun run7 = paragraph7.createRun(); +// run7.setText("鍚堟牸"); + XWPFParagraph paragraph8 = table1.getRow(rowNum + checkItemRowNum - 1).getCell(4).getParagraphArray(0); paragraph8.setAlignment(ParagraphAlignment.CENTER); XWPFRun run8 = paragraph8.createRun(); run8.setText("骞冲潎鍊�"); - XWPFParagraph paragraph9 = table.getRow(row - 1).getCell(cell - 1).getParagraphArray(0); + XWPFParagraph paragraph9 = table1.getRow(rowNum + checkItemRowNum - 1).getCell(cell - 1).getParagraphArray(0); paragraph9.setAlignment(ParagraphAlignment.CENTER); XWPFRun run9 = paragraph9.createRun(); - run9.setText("/"); + run9.setText(""); for (int i = 0; i < collect.size(); i++) { String s3 = collect.get(i); if (s3.contains("绔彛")) { - XWPFParagraph paragraph10 = table.getRow(1).getCell(5 + i).getParagraphArray(0); + XWPFParagraph paragraph10 = table1.getRow(rowNum + 1).getCell(5 + i).getParagraphArray(0); paragraph10.setAlignment(ParagraphAlignment.CENTER); XWPFRun run10 = paragraph10.createRun(); run10.setText(s3); } } - Map<Double, List<Map<String, Object>>> group = mapList.stream() - .collect(Collectors.groupingBy(item -> (Double) item.get("棰戠巼"))); + Map<BigDecimal, List<Map<String, Object>>> group = mapList.stream() + .collect(Collectors.groupingBy(item -> { + BigDecimal value = new BigDecimal(String.valueOf(item.get("棰戠巼"))); + if (value.scale() <= 0 || value.stripTrailingZeros().scale() <= 0) { + // 娌℃湁灏忔暟閮ㄥ垎锛岃繑鍥炴暣鏁板瓧绗︿覆 + return new BigDecimal(value.intValue()); + } else { + // 鏈夊皬鏁伴儴鍒嗭紝杩斿洖鍘熷鍊肩殑瀛楃涓插舰寮� + return value; + } + })); group = new TreeMap<>(group); int hang = 2; Double count = 0.0; - for (Double aDouble : group.keySet()) { + // 瀹氫箟 鏄惁鍚堟牸鏍囪 + boolean passFlag = true; + // 瑙f瀽鍒ゅ畾鏉′欢骞惰В鏋愭瘮杈冩爣鍑嗗�� 0 鏃犻渶鍒ゅ畾 1 鍖洪棿鍒ゅ畾 2 灏忎簬绛変簬 3 澶т簬绛変簬 4 澶т簬 5 灏忎簬 + int checkType = 0; + double firstParam = 0.0; + double secondParam = 0.0 ; + checkItemStandardStr = checkItemStandardStr.trim(); + if(checkItemStandardStr.contains("~") ){ + checkType = 1; + String[] params = checkItemStandardStr.split("~"); + if(null != params && params.length == 2){ + firstParam = Double.valueOf(params[0]); + secondParam = Double.valueOf(params[1]); + } + } else if(checkItemStandardStr.contains("-") && !(checkItemStandardStr.contains("鈮�") || checkItemStandardStr.contains("鈮�") || checkItemStandardStr.contains(">") || checkItemStandardStr.contains("<"))){ + checkType = 1; + String[] params = checkItemStandardStr.split("-"); + if(null != params && params.length == 2){ + firstParam = Double.valueOf(params[0]); + secondParam = Double.valueOf(params[1]); + } + } else if (checkItemStandardStr.contains("鈮�")) { + checkType = 2; + String[] params = checkItemStandardStr.split("鈮�"); + if(null != params && params.length == 1){ + if(params[1].contains("%")){ + firstParam = Double.valueOf(params[1].substring(0,params[1].length()-1))/100; + }else{ + firstParam = Double.valueOf(params[1]); + } + } + }else if(checkItemStandardStr.contains("鈮�")){ + checkType = 3; + String[] params = checkItemStandardStr.split("鈮�"); + if(null != params && params.length == 2){ + if(params[1].contains("%")){ + firstParam = Double.valueOf(params[1].substring(0,params[1].length()-1))/100; + }else{ + firstParam = Double.valueOf(params[1]); + } + } + }else if(checkItemStandardStr.contains(">")){ + checkType = 4; + String[] params = checkItemStandardStr.split(">"); + if(null != params && params.length == 2){ + if(params[1].contains("%")){ + firstParam = Double.valueOf(params[1].substring(0,params[1].length()-1))/100; + }else{ + firstParam = Double.valueOf(params[1]); + } + } + }else if(checkItemStandardStr.contains("<")){ + checkType = 5; + String[] params = checkItemStandardStr.split("<"); + if(null != params && params.length == 2){ + if(params[1].contains("%")){ + firstParam = Double.valueOf(params[1].substring(0,params[1].length()-1))/100; + }else{ + firstParam = Double.valueOf(params[1]); + } + } + } + for (BigDecimal aDouble : group.keySet()) { List<Map<String, Object>> mapList1 = group.get(aDouble); for (Map<String, Object> stringObjectMap : mapList1) { String port = stringObjectMap.get("绔彛").toString(); for (int i = 5; i < cell - 1; i++) { - String text = table.getRow(1).getCell(i).getText(); + String text = table1.getRow(rowNum + 1).getCell(i).getText(); if (text.equals(port)) { - XWPFParagraph paragraph10 = table.getRow(hang).getCell(i).getParagraphArray(0); + XWPFParagraph paragraph10 = table1.getRow(hang + rowNum).getCell(i).getParagraphArray(0); paragraph10.setAlignment(ParagraphAlignment.CENTER); XWPFRun run10 = paragraph10.createRun(); - count = (Double) stringObjectMap.get(s2) + count; - String project = stringObjectMap.get(s2).toString(); - run10.setText(project); + double value = Double.parseDouble(stringObjectMap.get(s2).toString()); + count = value + count; + // 鏁版嵁鍒ゆ柇 + if(checkType == 1){ + if(!(value >= firstParam && value <= secondParam)){ + passFlag = false; + } + }else if(checkType == 2){ + if(value >= firstParam ){ + passFlag = false; + } + }else if(checkType == 3){ + if(value <= firstParam ){ + passFlag = false; + } + }else if(checkType == 4){ + if(value < firstParam ){ + passFlag = false; + } + }else if(checkType == 5){ + if(value > firstParam ){ + passFlag = false; + } + } + run10.setText(String.format("%.2f", value)); } } } - XWPFParagraph paragraph10 = table.getRow(hang).getCell(4).getParagraphArray(0); + XWPFParagraph paragraph10 = table1.getRow(hang+rowNum).getCell(4).getParagraphArray(0); paragraph10.setAlignment(ParagraphAlignment.CENTER); XWPFRun run10 = paragraph10.createRun(); run10.setText(String.valueOf(aDouble)); hang++; } - XWPFParagraph paragraph11 = table.getRow(row - 1).getCell(5).getParagraphArray(0); + // 姹囨�荤粨鏋� + if(checkType != 0){ + XWPFParagraph paragraph10 = table1.getRow(rowNum+2).getCell(cell - 1).getParagraphArray(0); + XWPFRun run10 = paragraph10.createRun(); + if(passFlag){ + run10.setText("鍚堟牸"); + }else { + run10.setText("涓嶅悎鏍�"); + } + } + + XWPFParagraph paragraph11 = table1.getRow(rowNum + checkItemRowNum - 1).getCell(5).getParagraphArray(0); paragraph11.setAlignment(ParagraphAlignment.CENTER); XWPFRun run11 = paragraph11.createRun(); double v = count / (Double.parseDouble(s1.toString()) * Double.parseDouble(i1.toString())); run11.setText(String.format("%.2f", v)); + rowNum += checkItemRowNum; size++; } } @@ -539,15 +776,17 @@ try { InsSample insSample = insSampleMapper.selectById(insOrderFile.getInsSampleId()); String[] split = insOrderFile.getFileName().split("\\."); - String name = insOrderFile.getFileName().substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length())); - FileOutputStream out = new FileOutputStream(wordUrl + "/" + UUID.randomUUID() + "_" + insSample.getSampleCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx"); + 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(UUID.randomUUID() + "_" + insSample.getSampleCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx"); + orderFile.setFileUrl(url); orderFile.setType(2); orderFile.setFileName(insSample.getSampleCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx"); orderFile.setSonLaboratory(sonLaboratory); @@ -557,12 +796,12 @@ } } + //杩滃満 public void createWord2(String sonLaboratory, XWPFDocument document, Exceldata exceldata, HashMap<String, Object> map, HashMap<String, Object> pj, HashMap<String, Object> bz, InsOrderFile insOrderFile) throws IOException { int size = 1; for (String s : map.keySet()) { Map<String, Object> dataRow = exceldata.getDataRow(); String result = s.substring(s.lastIndexOf("-") + 1); - String result1 = s.substring(0, s.lastIndexOf("-")); String o = map.get(s).toString(); String[] split = o.split(","); Integer s1 = Integer.parseInt(split[split.length - 1]); @@ -572,42 +811,48 @@ HashMap<String, Object> o2 = (HashMap<String, Object>) pj.get(result); XWPFTable table1 = document.createTable(2, cell); + table1.setWidth("100%"); mergeCellsHorizontally(table1, 1, 0, cell - 1); mergeCellsHorizontally(table1, 0, 4, cell - 2); XWPFParagraph paragraph12 = table1.getRow(0).getCell(0).getParagraphArray(0); + paragraph12.setAlignment(ParagraphAlignment.CENTER); XWPFRun run12 = paragraph12.createRun(); run12.setText("搴忓彿"); XWPFParagraph paragraph13 = table1.getRow(0).getCell(1).getParagraphArray(0); + paragraph13.setAlignment(ParagraphAlignment.CENTER); XWPFRun run13 = paragraph13.createRun(); run13.setText("妫�楠岄」鐩�"); XWPFParagraph paragraph14 = table1.getRow(0).getCell(2).getParagraphArray(0); + paragraph14.setAlignment(ParagraphAlignment.CENTER); XWPFRun run14 = paragraph14.createRun(); run14.setText("鍗曚綅"); XWPFParagraph paragraph15 = table1.getRow(0).getCell(3).getParagraphArray(0); + paragraph15.setAlignment(ParagraphAlignment.CENTER); XWPFRun run15 = paragraph15.createRun(); run15.setText("鏍囧噯瑕佹眰"); XWPFParagraph paragraph16 = table1.getRow(0).getCell(cell - 1).getParagraphArray(0); + paragraph16.setAlignment(ParagraphAlignment.CENTER); XWPFRun run16 = paragraph16.createRun(); run16.setText("妫�楠岀粨璁�"); XWPFParagraph paragraph17 = table1.getRow(0).getCell(4).getParagraphArray(0); + paragraph17.setAlignment(ParagraphAlignment.CENTER); XWPFRun run17 = paragraph17.createRun(); run17.setText("妫�楠岀粨鏋�"); XWPFParagraph paragraph18 = table1.getRow(1).getCell(0).getParagraphArray(0); XWPFRun run18 = paragraph18.createRun(); - run18.setText("棰戞锛� " + result1 + "MHz " + "涓嬪�捐" + result); + run18.setText("涓嬪�捐" + result); List<String> collect = Arrays.stream(split).collect(Collectors.toList()); - - int size1 = 0; + collect.sort((o1, o21) -> Integer.parseInt(o1.substring((o1.length() - 1))) - Integer.parseInt(o21.substring(o21.length() - 1))); List<Map<String, Object>> list = new ArrayList<>(); @@ -632,157 +877,253 @@ aggregatedMap.get(key).add(item); } } - - + // 鍒濆鍖栬鏁� + int rowNum = 2; for (String s2 : aggregatedMap.keySet()) { if (s2.equals("绔彛") || s2.equals("娴嬭瘯棰戠巼(MHZ)")) { continue; } List<Map<String, Object>> mapList = aggregatedMap.get(s2); - // 鍒涘缓涓�涓〃鏍� - - XWPFTable table = document.createTable(row, cell); - table.setWidth("100%"); - - - - - - /* // 鍚堝苟鍗曞厓鏍� - mergeCellsHorizontally(table, 0, 0, 7);*/ - - + int checkItemRowNum = row; + for (int i = 0; i < checkItemRowNum; i++) { + // 鍒涘缓鏂拌 骞惰缃眳涓� + XWPFTableRow tableRow = table1.createRow(); + for (XWPFTableCell tableCell : tableRow.getTableCells()) { + // 璁剧疆鍗曞厓鏍煎唴瀹瑰眳涓榻� + for (XWPFParagraph paragraph : tableCell.getParagraphs()) { + paragraph.setAlignment(ParagraphAlignment.CENTER); + } + } + } +// XWPFTable table = document.createTable(row, cell); //鍨傜洿 - mergeCellsVertically(table, 0, 0, row - 1); - mergeCellsVertically(table, 1, 0, row - 1); - mergeCellsVertically(table, 2, 0, row - 1); - mergeCellsVertically(table, 3, 0, row - 1); - mergeCellsVertically(table, 4, 0, 1); - mergeCellsVertically(table, cell - 1, 0, 1); - mergeCellsVertically(table, cell - 1, 2, row - 2); + mergeCellsVertically(table1, 0, rowNum, rowNum + checkItemRowNum - 1); + mergeCellsVertically(table1, 1, rowNum, rowNum + checkItemRowNum - 1); + mergeCellsVertically(table1, 2, rowNum, rowNum + checkItemRowNum - 1); + mergeCellsVertically(table1, 3, rowNum, rowNum + checkItemRowNum - 1); + mergeCellsVertically(table1, 4, rowNum, rowNum+1); + mergeCellsVertically(table1, cell - 1, rowNum, rowNum+1); + mergeCellsVertically(table1, cell - 1, rowNum+2, rowNum + checkItemRowNum - 1); //姘村钩 - mergeCellsHorizontally(table, 0, 5, cell - 2); - mergeCellsHorizontally(table, row - 1, 5, cell - 2); + mergeCellsHorizontally(table1, rowNum, 5, cell - 2); + mergeCellsHorizontally(table1, rowNum + checkItemRowNum - 1, 5, cell - 2); // 璁剧疆鍗曞厓鏍兼枃鏈苟灞呬腑 - XWPFParagraph paragraph = table.getRow(0).getCell(0).getParagraphArray(0); + XWPFParagraph paragraph = table1.getRow(rowNum).getCell(0).getParagraphArray(0); XWPFRun run = paragraph.createRun(); run.setText(String.valueOf(size)); - XWPFParagraph paragraph1 = table.getRow(0).getCell(1).getParagraphArray(0); + XWPFParagraph paragraph1 = table1.getRow(rowNum).getCell(1).getParagraphArray(0); XWPFRun run1 = paragraph1.createRun(); run1.setText(s2); - // 璋冪敤鏂规硶鎻愬彇绗竴涓嫭鍙峰唴鐨勫唴瀹� - String firstContent = extractFirstContentFromBrackets(s2); - if (firstContent != null) { - XWPFParagraph paragraph2 = table.getRow(0).getCell(2).getParagraphArray(0); - XWPFRun run2 = paragraph2.createRun(); - run2.setText(firstContent); + // 鍗曚綅 + XWPFParagraph paragraph2 = table1.getRow(rowNum).getCell(2).getParagraphArray(0); + XWPFRun run2 = paragraph2.createRun(); + if (s2.contains("澧炵泭")) { + run2.setText("dBi"); + } else if (s2.contains("娉㈢摚瀹藉害") || s2.contains("娉㈡潫瀹藉害") || s2.contains("涓嬪�捐")) { + run2.setText("掳"); + } else if (s2.contains("鍓嶅悗姣�") || s2.contains("浜ゅ弶鏋佸寲") || s2.contains("鏃佺摚鎶戝埗") || s2.contains("涓嬮檷") || s2.contains("闆剁偣濉厖") || s2.contains("鍓摚鐢靛钩")) { + run2.setText("dB"); + } else if (s2.contains("鏁堢巼") || s2.contains("鎵囧尯鍗犳瘮")) { + run2.setText("%"); } else { - System.out.println("娌℃湁鎵惧埌鎷彿鍐呯殑鍐呭銆�"); + run2.setText(""); } - XWPFParagraph paragraph3 = table.getRow(0).getCell(3).getParagraphArray(0); + // 瀹氫箟鏀规鏌ラ」鏍囧噯鍊� + String checkItemStandardStr = ""; + XWPFParagraph paragraph3 = table1.getRow(rowNum).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()); + checkItemStandardStr = bz.get(s2).toString(); + } else run3.setText(""); - XWPFParagraph paragraph4 = table.getRow(0).getCell(4).getParagraphArray(0); + + XWPFParagraph paragraph4 = table1.getRow(rowNum).getCell(4).getParagraphArray(0); + paragraph4.setAlignment(ParagraphAlignment.CENTER); XWPFRun run4 = paragraph4.createRun(); run4.setText("棰戠巼锛圡Hz锛�"); - XWPFParagraph paragraph5 = table.getRow(0).getCell(5).getParagraphArray(0); + XWPFParagraph paragraph5 = table1.getRow(rowNum).getCell(5).getParagraphArray(0); + paragraph5.setAlignment(ParagraphAlignment.CENTER); XWPFRun run5 = paragraph5.createRun(); run5.setText("绔彛"); - XWPFParagraph paragraph6 = table.getRow(0).getCell(cell - 1).getParagraphArray(0); + XWPFParagraph paragraph6 = table1.getRow(rowNum).getCell(cell - 1).getParagraphArray(0); + paragraph6.setAlignment(ParagraphAlignment.CENTER); XWPFRun run6 = paragraph6.createRun(); - run6.setText("/"); + run6.setText("鍒ゅ畾"); - XWPFParagraph paragraph7 = table.getRow(1).getCell(cell - 1).getParagraphArray(0); + XWPFParagraph paragraph7 = table1.getRow(rowNum+1).getCell(cell - 1).getParagraphArray(0); + paragraph7.setAlignment(ParagraphAlignment.CENTER); XWPFRun run7 = paragraph7.createRun(); run7.setText("鍚堟牸"); - XWPFParagraph paragraph8 = table.getRow(row - 1).getCell(4).getParagraphArray(0); + XWPFParagraph paragraph8 = table1.getRow(rowNum+checkItemRowNum - 1).getCell(4).getParagraphArray(0); + paragraph8.setAlignment(ParagraphAlignment.CENTER); XWPFRun run8 = paragraph8.createRun(); run8.setText("骞冲潎鍊�"); - XWPFParagraph paragraph9 = table.getRow(row - 1).getCell(cell - 1).getParagraphArray(0); + XWPFParagraph paragraph9 = table1.getRow(rowNum + checkItemRowNum - 1).getCell(cell - 1).getParagraphArray(0); + paragraph9.setAlignment(ParagraphAlignment.CENTER); XWPFRun run9 = paragraph9.createRun(); - run9.setText("/"); + run9.setText(""); - for (int i = 0; i < collect.size(); i++) { + for (int i = 0; i < collect.size() - 1; i++) { String s3 = collect.get(i); if (s3.contains("绔彛") || s3.contains("P")) { - XWPFParagraph paragraph10 = table.getRow(1).getCell(5 + i).getParagraphArray(0); + XWPFParagraph paragraph10 = table1.getRow(rowNum+1).getCell(5 + i).getParagraphArray(0); + paragraph10.setAlignment(ParagraphAlignment.CENTER); XWPFRun run10 = paragraph10.createRun(); run10.setText(s3); } } - Map<Integer, List<Map<String, Object>>> group = mapList.stream() - .collect(Collectors.groupingBy(item -> Integer.parseInt(item.get("娴嬭瘯棰戠巼(MHZ)").toString()))); + Map<BigDecimal, List<Map<String, Object>>> group = mapList.stream() + .collect(Collectors.groupingBy(item -> { + BigDecimal value = new BigDecimal(String.valueOf(item.get("娴嬭瘯棰戠巼(MHZ)"))); + if (value.scale() <= 0 || value.stripTrailingZeros().scale() <= 0) { + // 娌℃湁灏忔暟閮ㄥ垎锛岃繑鍥炴暣鏁板瓧绗︿覆 + return new BigDecimal(value.intValue()); + } else { + // 鏈夊皬鏁伴儴鍒嗭紝杩斿洖鍘熷鍊肩殑瀛楃涓插舰寮� + return value; + } + })); int hang = 2; Double count = 0.0; - for (Integer aDouble : group.keySet()) { + // 瀹氫箟 鏄惁鍚堟牸鏍囪 + boolean passFlag = true; + // 瑙f瀽鍒ゅ畾鏉′欢骞惰В鏋愭瘮杈冩爣鍑嗗�� 0 鏃犻渶鍒ゅ畾 1 鍖洪棿鍒ゅ畾 2 灏忎簬绛変簬 3 澶т簬绛変簬 + int checkType = 0; + double firstParam = 0.0; + double secondParam = 0.0 ; + checkItemStandardStr = checkItemStandardStr.trim(); + if(checkItemStandardStr.contains("~") ){ + checkType = 1; + String[] params = checkItemStandardStr.split("~"); + if(null != params && params.length == 2){ + firstParam = Double.valueOf(params[0]); + secondParam = Double.valueOf(params[1]); + } + } else if(checkItemStandardStr.contains("-") && !(checkItemStandardStr.contains("鈮�") || checkItemStandardStr.contains("鈮�") || checkItemStandardStr.contains(">") || checkItemStandardStr.contains("<"))){ + checkType = 1; + String[] params = checkItemStandardStr.split("-"); + if(null != params && params.length == 2){ + firstParam = Double.valueOf(params[0]); + secondParam = Double.valueOf(params[1]); + } + } else if (checkItemStandardStr.contains("鈮�")) { + checkType = 2; + String[] params = checkItemStandardStr.split("鈮�"); + if(null != params && params.length == 1){ + if(params[1].contains("%")){ + firstParam = Double.valueOf(params[1].substring(0,params[1].length()-1))/100; + }else{ + firstParam = Double.valueOf(params[1]); + } + } + }else if(checkItemStandardStr.contains("鈮�")){ + checkType = 3; + String[] params = checkItemStandardStr.split("鈮�"); + if(null != params && params.length == 2){ + if(params[1].contains("%")){ + firstParam = Double.valueOf(params[1].substring(0,params[1].length()-1))/100; + }else{ + firstParam = Double.valueOf(params[1]); + } + } + }else if(checkItemStandardStr.contains(">")){ + checkType = 4; + String[] params = checkItemStandardStr.split(">"); + if(null != params && params.length == 2){ + if(params[1].contains("%")){ + firstParam = Double.valueOf(params[1].substring(0,params[1].length()-1))/100; + }else{ + firstParam = Double.valueOf(params[1]); + } + } + }else if(checkItemStandardStr.contains("<")){ + checkType = 5; + String[] params = checkItemStandardStr.split("<"); + if(null != params && params.length == 2){ + if(params[1].contains("%")){ + firstParam = Double.valueOf(params[1].substring(0,params[1].length()-1))/100; + }else{ + firstParam = Double.valueOf(params[1]); + } + } + } + + for (BigDecimal aDouble : group.keySet()) { List<Map<String, Object>> mapList1 = group.get(aDouble); for (Map<String, Object> stringObjectMap : mapList1) { String port = stringObjectMap.get("绔彛").toString(); for (int i = 5; i < cell - 1; i++) { - String text = table.getRow(1).getCell(i).getText(); + String text = table1.getRow(rowNum+1).getCell(i).getText(); if (text.equals(port)) { - XWPFParagraph paragraph10 = table.getRow(hang).getCell(i).getParagraphArray(0); + XWPFParagraph paragraph10 = table1.getRow(hang+rowNum).getCell(i).getParagraphArray(0); XWPFRun run10 = paragraph10.createRun(); - count = Double.parseDouble(stringObjectMap.get(s2).toString()) + count; - String project = stringObjectMap.get(s2).toString(); - run10.setText(project); + double value = Double.parseDouble(stringObjectMap.get(s2).toString()); + count = value + count; + // 鏁版嵁鍒ゆ柇 + if(checkType == 1){ + if(!(value >= firstParam && value <= secondParam)){ + passFlag = false; + } + }else if(checkType == 2){ + if(value >= firstParam ){ + passFlag = false; + } + }else if(checkType == 3){ + if(value <= firstParam ){ + passFlag = false; + } + }else if(checkType == 4){ + if(value < firstParam ){ + passFlag = false; + } + }else if(checkType == 5){ + if(value > firstParam ){ + passFlag = false; + } + } + run10.setText(String.format("%.2f",value)); } } } - XWPFParagraph paragraph10 = table.getRow(hang).getCell(4).getParagraphArray(0); + XWPFParagraph paragraph10 = table1.getRow(hang+rowNum).getCell(4).getParagraphArray(0); XWPFRun run10 = paragraph10.createRun(); run10.setText(String.valueOf(aDouble)); - - hang++; } + // 姹囨�荤粨鏋� + if(checkType != 0){ + XWPFParagraph paragraph10 = table1.getRow(rowNum+2).getCell(cell - 1).getParagraphArray(0); + XWPFRun run10 = paragraph10.createRun(); + if(passFlag){ + run10.setText("鍚堟牸"); + }else { + run10.setText("涓嶅悎鏍�"); + } + } - XWPFParagraph paragraph11 = table.getRow(row - 1).getCell(5).getParagraphArray(0); + XWPFParagraph paragraph11 = table1.getRow(rowNum + checkItemRowNum - 1).getCell(5).getParagraphArray(0); XWPFRun run11 = paragraph11.createRun(); double v = count / (Double.parseDouble(s1.toString()) * Double.parseDouble(i1.toString())); - run11.setText(o2.get(s2).toString()); - + run11.setText(String.format("%.2f",(double)o2.get(s2))); + rowNum += checkItemRowNum; 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())); - FileOutputStream out = new FileOutputStream(wordUrl + "/" + UUID.randomUUID() + "_" + insSample.getSampleCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx"); - document.write(out); - out.close(); - document.close(); - InsOrderFile orderFile = new InsOrderFile(); - orderFile.setInsOrderId(insOrderFile.getInsOrderId()); - orderFile.setInsSampleId(insOrderFile.getInsSampleId()); - orderFile.setFileUrl(UUID.randomUUID() + "_" + insSample.getSampleCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx"); - orderFile.setType(2); - orderFile.setFileName(insSample.getSampleCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx"); - orderFile.setSonLaboratory(sonLaboratory); - insOrderFileMapper.insert(orderFile); - } catch (IOException e) { - e.printStackTrace(); - } - } @@ -808,20 +1149,6 @@ table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE); } } - } - - // 鎻愬彇绗竴涓嫭鍙峰唴鐨勫唴瀹� - public static String extractFirstContentFromBrackets(String str) { - // 瀹氫箟姝e垯琛ㄨ揪寮忥紝鍖归厤鎷彿鍐呯殑鍐呭锛屽悓鏃舵敮鎸佷腑鏂囧拰鑻辨枃鎷彿 - Pattern pattern = Pattern.compile("\\锛�(.*?)\\锛墊\\((.*?)\\)"); - Matcher matcher = pattern.matcher(str); - - // 鏌ユ壘绗竴涓尮閰嶇殑鍐呭 - if (matcher.find()) { - // 鑾峰彇鎷彿鍐呯殑鍐呭锛屽垽鏂槸涓枃鎷彿杩樻槸鑻辨枃鎷彿 - return matcher.group(1) != null ? matcher.group(1) : matcher.group(2); - } - return null; // 濡傛灉娌℃湁鎵惧埌鍖归厤椤癸紝鍒欒繑鍥瀗ull } } -- Gitblit v1.9.3