From d589bf94e8f1863336d23fdd951049622b64db68 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期五, 22 十一月 2024 16:36:43 +0800
Subject: [PATCH] csv文件调整
---
inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java | 406 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 394 insertions(+), 12 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 4ac1c70..37056aa 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
@@ -6,6 +6,7 @@
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;
@@ -27,8 +28,6 @@
import javax.annotation.Resource;
import java.io.*;
-import java.nio.file.Files;
-import java.nio.file.Paths;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -45,7 +44,7 @@
@Resource
InsOrderMapper insOrderMapper;
- public void getFuSheWord(String sonLaboratory, InsOrderFile insOrderFile) {
+ public void getFuSheWord1(String sonLaboratory, InsOrderFile insOrderFile) {
//璇诲彇excel鏂囦欢鍐呭
String excelFilePath = wordUrl + "/" + insOrderFile.getFileUrl(); // 鏇存柊涓轰綘鐨勬枃浠惰矾寰�
FileInputStream fileInputStream = null;
@@ -57,6 +56,7 @@
Exceldata exceldata = new Exceldata();
Map<Integer, Object> project = new HashMap<>();
HashMap<String, Object> datas1 = new HashMap<>();
+ Boolean exitLoop=false;
for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
String s = "";
Sheet sheet = workbook.getSheetAt(i);
@@ -86,9 +86,14 @@
default:
System.out.print("NULL\t");
}
- } else {
+ }
+ else {
switch (cell.getCellType()) {
case STRING:
+ if (cell.getColumnIndex()==1) {
+ exitLoop=true;
+ break;
+ }
if (StringUtils.isNotEmpty(s)) {
datas.put(s, list);
}
@@ -113,6 +118,10 @@
System.out.print("NULL\t");
}
}
+ if (exitLoop){
+ exitLoop=false;
+ break;
+ }
if (map.isEmpty()) {
list.add(map);
}
@@ -126,7 +135,6 @@
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);
@@ -136,15 +144,17 @@
for (Map<String, Object> number : hashMaps) {
number.put("绔彛", s1);
Double o = (Double) number.get("棰戠巼");
- floatList.add(o);
+ if (o!=null) {
+ floatList.add(o);
+ }
}
Double maxValue = Collections.max(floatList);
Double minValue = Collections.min(floatList);
- if (map.get(minValue + "-" + maxValue + "-" + s) == null) {
- map.put(minValue + "-" + maxValue + "-" + s, s1);
+ 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);
+ Object o = map.get(minValue + "," + maxValue + "," + s);
+ map.put(minValue + "," + maxValue + "," + s, s1 + "," + o);
}
}
}
@@ -188,6 +198,149 @@
}
}
+ 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);
+
+ try {
+ createWord2(sonLaboratory,document,exceldata, map,pingjunzhi,biaozhun,insOrderFile);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+
public void createWord(String sonLaboratory, XWPFDocument document, Exceldata exceldata, HashMap<String, Object> map, InsOrderFile insOrderFile) throws IOException {
int size = 1;
@@ -197,8 +350,8 @@
runs.setText("杈愬皠鏂瑰悜鍥惧弬鏁�");
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 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]);
@@ -401,6 +554,235 @@
}
}
+ 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]);
+ Integer i1 = split.length - 1;
+ int row = 3 + s1;
+ int cell = 6 + i1;
+ HashMap<String,Object> o2 =(HashMap<String,Object>) pj.get(result);
+
+ XWPFTable table1 = document.createTable(2, cell);
+
+ mergeCellsHorizontally(table1, 1, 0, cell - 1);
+ mergeCellsHorizontally(table1, 0, 4, cell - 2);
+
+ XWPFParagraph paragraph12 = table1.getRow(0).getCell(0).getParagraphArray(0);
+ XWPFRun run12 = paragraph12.createRun();
+ run12.setText("搴忓彿");
+
+ XWPFParagraph paragraph13 = table1.getRow(0).getCell(1).getParagraphArray(0);
+ XWPFRun run13 = paragraph13.createRun();
+ run13.setText("妫�楠岄」鐩�");
+
+ XWPFParagraph paragraph14 = table1.getRow(0).getCell(2).getParagraphArray(0);
+ XWPFRun run14 = paragraph14.createRun();
+ run14.setText("鍗曚綅");
+
+ XWPFParagraph paragraph15 = table1.getRow(0).getCell(3).getParagraphArray(0);
+ XWPFRun run15 = paragraph15.createRun();
+ run15.setText("鏍囧噯瑕佹眰");
+
+ XWPFParagraph paragraph16 = table1.getRow(0).getCell(cell-1).getParagraphArray(0);
+ XWPFRun run16 = paragraph16.createRun();
+ run16.setText("妫�楠岀粨璁�");
+
+ XWPFParagraph paragraph17 = table1.getRow(0).getCell(4).getParagraphArray(0);
+ XWPFRun run17 = paragraph17.createRun();
+ run17.setText("妫�楠岀粨鏋�");
+
+ XWPFParagraph paragraph18 = table1.getRow(1).getCell(0).getParagraphArray(0);
+ XWPFRun run18 = paragraph18.createRun();
+ run18.setText("棰戞锛� "+result1+"MHz "+"涓嬪�捐"+result);
+
+
+
+ List<String> collect = Arrays.stream(split).collect(Collectors.toList());
+
+ int size1 = 0;
+
+ List<Map<String, Object>> list = new ArrayList<>();
+
+
+ // 瀵规墍鏈夌殑閿仛鍚�
+ Map<String, List<Map<String, Object>>> aggregatedMap = new HashMap<>();
+
+ 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")) {
+ List<Map<String, Object>> mapList = o1.get(s2);
+ list.addAll(mapList);
+ }
+ }
+
+ // 閬嶅巻姣忎竴涓」鐩�
+ for (Map<String, Object> item : list) {
+ for (String key : item.keySet()) {
+ // 濡傛灉璇ラ敭鍦� aggregatedMap 涓笉瀛樺湪锛屽垯鍒涘缓涓�涓柊鐨� List
+ aggregatedMap.putIfAbsent(key, new ArrayList<>());
+ // 灏嗗綋鍓嶉」鐩坊鍔犲埌瀵瑰簲閿殑 List 涓�
+ aggregatedMap.get(key).add(item);
+ }
+ }
+
+
+ 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);*/
+
+
+ //鍨傜洿
+ 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);
+ //姘村钩
+ mergeCellsHorizontally(table, 0, 5, cell - 2);
+ mergeCellsHorizontally(table, row - 1, 5, cell - 2);
+
+ // 璁剧疆鍗曞厓鏍兼枃鏈苟灞呬腑
+ XWPFParagraph paragraph = table.getRow(0).getCell(0).getParagraphArray(0);
+ XWPFRun run = paragraph.createRun();
+ run.setText(String.valueOf(size));
+
+
+ XWPFParagraph paragraph1 = table.getRow(0).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);
+ } else {
+ System.out.println("娌℃湁鎵惧埌鎷彿鍐呯殑鍐呭銆�");
+ }
+
+
+
+ XWPFParagraph paragraph3 = table.getRow(0).getCell(3).getParagraphArray(0);
+ XWPFRun run3 = paragraph3.createRun();
+ run3.setText(bz.get(s2).toString());
+
+ XWPFParagraph paragraph4 = table.getRow(0).getCell(4).getParagraphArray(0);
+ XWPFRun run4 = paragraph4.createRun();
+ run4.setText("棰戠巼锛圡Hz锛�");
+
+ XWPFParagraph paragraph5 = table.getRow(0).getCell(5).getParagraphArray(0);
+ XWPFRun run5 = paragraph5.createRun();
+ run5.setText("绔彛");
+
+ XWPFParagraph paragraph6 = table.getRow(0).getCell(cell - 1).getParagraphArray(0);
+ XWPFRun run6 = paragraph6.createRun();
+ run6.setText("/");
+
+ XWPFParagraph paragraph7 = table.getRow(1).getCell(cell - 1).getParagraphArray(0);
+ XWPFRun run7 = paragraph7.createRun();
+ run7.setText("鍚堟牸");
+
+
+ XWPFParagraph paragraph8 = table.getRow(row - 1).getCell(4).getParagraphArray(0);
+ XWPFRun run8 = paragraph8.createRun();
+ run8.setText("骞冲潎鍊�");
+
+ XWPFParagraph paragraph9 = table.getRow(row - 1).getCell(cell - 1).getParagraphArray(0);
+ XWPFRun run9 = paragraph9.createRun();
+ 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);
+ 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()) ));
+
+
+ int hang = 2;
+ Double count = 0.0;
+ for (Integer 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();
+ if (text.equals(port)) {
+ XWPFParagraph paragraph10 = table.getRow(hang).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);
+ }
+ }
+ }
+ XWPFParagraph paragraph10 = table.getRow(hang).getCell(4).getParagraphArray(0);
+ XWPFRun run10 = paragraph10.createRun();
+ run10.setText(String.valueOf(aDouble));
+
+
+ hang++;
+ }
+
+ XWPFParagraph paragraph11 = table.getRow(row-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());
+
+ size++;
+ }
+ }
+
+
+ // 杈撳嚭鍒版枃浠�
+ try {
+ InsOrder insOrder = insOrderMapper.selectById(insOrderFile.getInsOrderId());
+ 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 + "/" + insOrder.getEntrustCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx");
+ document.write(out);
+ out.close();
+ document.close();
+ InsOrderFile orderFile = new InsOrderFile();
+ orderFile.setInsOrderId(insOrderFile.getInsOrderId());
+ orderFile.setFileUrl(insOrder.getEntrustCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx");
+ orderFile.setType(2);
+ orderFile.setFileName(insOrder.getEntrustCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx");
+ orderFile.setSonLaboratory(sonLaboratory);
+ insOrderFileMapper.insert(orderFile);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+
// 姘村钩鍚堝苟鍗曞厓鏍�
private static void mergeCellsHorizontally(XWPFTable table, int row, int fromCol, int toCol) {
--
Gitblit v1.9.3