From 17cbd5b9f612f3d29f02f2722357ea334ede2b41 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 31 七月 2025 19:17:43 +0800
Subject: [PATCH] 提交再次试验需要将检验项目的结论重置为null
---
inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java | 559 +++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 391 insertions(+), 168 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 919a9ca..f52260a 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,16 @@
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.baomidou.mybatisplus.core.toolkit.ObjectUtils;
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 +23,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}")
@@ -96,47 +88,50 @@
switch (cell.getCellType()) {
case STRING:
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 (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");
-// }
-// }
-// }else {
-// 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");
@@ -158,6 +153,7 @@
}
}
}
+ list=list.stream().filter(map -> !map.isEmpty()).collect(Collectors.toList());
datas.put(s, list);
map1.put(sheetName, datas);
datas1.putAll(map1);
@@ -210,8 +206,8 @@
}
System.out.println(map);
createWord(sonLaboratory, document, exceldata, map, biaozhun, insOrderFile);
- } catch (IOException e) {
- e.printStackTrace();
+ } catch (Exception e) {
+// e.printStackTrace();
} finally {
// 鍏抽棴璧勬簮
try {
@@ -238,8 +234,6 @@
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<>();
@@ -255,14 +249,10 @@
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:
@@ -281,8 +271,7 @@
default:
System.out.print("NULL\t");
}
- }
- else if (row.getRowNum() > 2) {
+ } else if (row.getRowNum() > 2) {
if (cell.getColumnIndex() == 0 && StringUtils.isNotEmpty(cell.getStringCellValue())) {
if (map2.size() != 0) {
map2.put(port, list);
@@ -327,8 +316,7 @@
}
}
- }
- else if (value.equals("鎸囨爣")) {
+ } else if (value.equals("鎸囨爣")) {
for (Cell cell1 : row) {
switch (cell1.getCellType()) {
case STRING:
@@ -347,8 +335,7 @@
System.out.print("NULL\t");
}
}
- }
- else {
+ } else {
biaoji = true;
}
break;
@@ -365,7 +352,6 @@
default:
System.out.print("NULL\t");
}
-
}
}
if (biaoji) {
@@ -373,7 +359,6 @@
break;
}
}
-
if (map1.size() != 0) {
list.add(map1);
}
@@ -401,6 +386,9 @@
for (Map<String, Object> number : hashMaps) {
number.put("绔彛", s1);
Double o = (Double) number.get("娴嬭瘯棰戠巼(MHZ)");
+ if (ObjectUtils.isNull(o)){
+ o = (Double) number.get("娴嬮噺棰戠巼(MHz)");
+ }
floatList.add(o.intValue());
}
Integer maxValue = Collections.max(floatList);
@@ -415,17 +403,12 @@
}
}
-
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()) {
@@ -466,8 +449,8 @@
orderFile.setSonLaboratory(sonLaboratory);
insOrderFileMapper.insert(orderFile);
- } catch (IOException e) {
- e.printStackTrace();
+ } catch (Exception e) {
+// e.printStackTrace();
} finally {
// 鍏抽棴璧勬簮
try {
@@ -537,7 +520,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<>();
// 瀵规墍鏈夌殑閿仛鍚�
@@ -558,44 +541,46 @@
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);
// 鍗曚綅
- XWPFParagraph paragraph2 = table.getRow(0).getCell(2).getParagraphArray(0);
+ XWPFParagraph paragraph2 = table1.getRow(rowNum).getCell(2).getParagraphArray(0);
XWPFRun run2 = paragraph2.createRun();
if (s2.contains("澧炵泭")) {
run2.setText("dBi");
@@ -608,77 +593,186 @@
} else {
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();
+ String checkItemStandardStr = "";
if (bz.get(s2) != null) {
run3.setText(bz.get(s2).toString());
- }else run3.setText("");
- XWPFParagraph paragraph4 = table.getRow(0).getCell(4).getParagraphArray(0);
+ 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++;
}
}
@@ -712,7 +806,6 @@
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]);
@@ -722,40 +815,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());
+ collect.remove(collect.size() - 1);
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<>();
@@ -766,7 +867,7 @@
Map<String, List<Map<String, Object>>> o1 = (Map<String, List<Map<String, Object>>>) dataRow.get(result);
for (String s2 : collect) {
- if (s2.contains("绔彛") || s2.contains("P")) {
+ if (s2.contains("绔彛") || s2.contains("P") || s2.contains("骞挎挱") || s2.contains("涓氬姟")) {
List<Map<String, Object>> mapList = o1.get(s2);
list.addAll(mapList);
}
@@ -781,42 +882,49 @@
aggregatedMap.get(key).add(item);
}
}
-
-
+ // 鍒濆鍖栬鏁�
+ int rowNum = 2;
for (String s2 : aggregatedMap.keySet()) {
- if (s2.equals("绔彛") || s2.equals("娴嬭瘯棰戠巼(MHZ)")) {
+ if (s2.equals("绔彛") || s2.equals("娴嬭瘯棰戠巼(MHZ)") || s2.equals("娴嬮噺棰戠巼(MHz)")) {
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);
+ }
+ }
+ }
+// 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);
// 鍗曚綅
- XWPFParagraph paragraph2 = table.getRow(0).getCell(2).getParagraphArray(0);
+ XWPFParagraph paragraph2 = table1.getRow(rowNum).getCell(2).getParagraphArray(0);
XWPFRun run2 = paragraph2.createRun();
if (s2.contains("澧炵泭")) {
run2.setText("dBi");
@@ -831,86 +939,202 @@
}
- XWPFParagraph paragraph3 = table.getRow(0).getCell(3).getParagraphArray(0);
- paragraph3.setAlignment(ParagraphAlignment.CENTER);
+ // 瀹氫箟鏀规鏌ラ」鏍囧噯鍊�
+ String checkItemStandardStr = "";
+ XWPFParagraph paragraph3 = table1.getRow(rowNum).getCell(3).getParagraphArray(0);
XWPFRun run3 = paragraph3.createRun();
if (bz.get(s2) != null) {
run3.setText(bz.get(s2).toString());
- }else run3.setText("");
+ 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++) {
String s3 = collect.get(i);
- if (s3.contains("绔彛") || s3.contains("P")) {
- XWPFParagraph paragraph10 = table.getRow(1).getCell(5 + i).getParagraphArray(0);
+ if (s3.contains("绔彛") || s3.contains("P") || s3.contains("骞挎挱") || s3.contains("涓氬姟")) {
+ 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()
+ Map<BigDecimal, List<Map<String, Object>>> group = mapList.stream()
.collect(Collectors.groupingBy(item -> {
- Double aDouble = (Double) item.get("娴嬭瘯棰戠巼(MHZ)");
- return aDouble.intValue();
+ BigDecimal value=BigDecimal.ZERO;
+ if (item.containsKey("娴嬭瘯棰戠巼(MHZ)")) {
+ value = new BigDecimal(String.valueOf(item.get("娴嬭瘯棰戠巼(MHZ)")));
+ }
+ else if (item.containsKey("娴嬮噺棰戠巼(MHz)")){
+ 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("~") || checkItemStandardStr.contains("锝�") ){
+ checkType = 1;
+ String[] params = checkItemStandardStr.split("~");
+ if (checkItemStandardStr.contains("锝�")) {
+ 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++;
}
}
@@ -940,6 +1164,5 @@
}
}
}
-
}
--
Gitblit v1.9.3