From 5ae5596b024929f6ecd857411e7c2d64c1c96aca Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期五, 25 十月 2024 17:23:25 +0800 Subject: [PATCH] 总报告调试 --- inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java | 153 ++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 122 insertions(+), 31 deletions(-) diff --git a/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java b/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java index e28d68e..3a383e1 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java @@ -19,13 +19,12 @@ import org.apache.commons.io.IOUtils; import org.apache.poi.openxml4j.util.ZipSecureFile; import org.apache.poi.xwpf.usermodel.*; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHMerge; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTVMerge; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge; import org.springframework.beans.factory.annotation.Value; -import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Component; -import org.springframework.web.multipart.MultipartFile; - import javax.annotation.Resource; import java.io.*; import java.nio.file.Files; @@ -144,8 +143,7 @@ if (inspectionItemSubclass.contains("浜掕皟")) { aa += (angles + 1) * portRow * often; } - } - else { + } else { if (inspectionItemSubclass.contains("鐢靛帇椹绘尝姣�")) { aa += (angles + 1) * portRow; } @@ -233,8 +231,7 @@ paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); - } - else { + } else { if (insOrderState.getVersion() == 1) { //闈炵數璋冪増鏈�(绠�鍗曠増) if (inspectionItemSubclass.contains("鐢靛帇椹绘尝姣�") && i <= 2 * portRow) { @@ -613,8 +610,7 @@ cells.add(cellRenderData); } } - } - else { + } else { //鐢佃皟鐗堟湰(澶嶆潅鐗�) if (inspectionItemSubclass.contains("鐢靛帇椹绘尝姣�") && i <= (angles + 1) * portRow) { cc = (angles + 1) * portRow; @@ -1675,10 +1671,12 @@ .in(InsProductResult::getInsProductId, productIds)); for (InsProductResult insProductResult : insProductResults) { List<JSONObject> jsonObjects = JSON.parseArray(insProductResult.getEquipValue(), JSONObject.class); - for (JSONObject jsonObject : jsonObjects) { - String value = jsonObject.getString("v"); - if (value != null && !value.isEmpty()) { - deviceSet.add(value); + if (ObjectUtils.isNotEmpty(jsonObjects)) { + for (JSONObject jsonObject : jsonObjects) { + String value = jsonObject.getString("v"); + if (value != null && !value.isEmpty()) { + deviceSet.add(value); + } } } } @@ -1707,10 +1705,104 @@ if (strings.contains("杩戝満") || strings.contains("杩滃満")) { Map<String, String> table = new HashMap<>(); table.put("indexs", indexs + ""); + indexs += 1; table.put("term", "杈愬皠鏂瑰悜鍥惧弬鏁�"); table.put("result", "涓嶅垽瀹�"); tables.add(table); /*杈愬皠鐨勮瘯楠岃〃*/ + List<InsOrderFile> insOrderFiles = insOrderFileMapper.selectList(Wrappers.<InsOrderFile>lambdaQuery() + .eq(InsOrderFile::getInsOrderId, orderId) + .like(InsOrderFile::getFileName, "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�") + .and(wrapper -> wrapper + .eq(InsOrderFile::getSonLaboratory, "杩滃満") + .or() + .eq(InsOrderFile::getSonLaboratory, "杩戝満") + )); + if (insOrderFiles.size() > 0) { + int aa = 0; + for (InsOrderFile insOrderFile : insOrderFiles) { + try { + XWPFDocument circuitParamsDoc = new XWPFDocument(new FileInputStream(wordUrl + "/" + insOrderFile.getFileUrl())); + // 閬嶅巻鐢佃矾鍙傛暟鏂囦欢鐨勬墍鏈夊厓绱狅紝娈佃惤鍜岃〃鏍� + for (IBodyElement element : circuitParamsDoc.getBodyElements()) { + Map<String, Object> table3 = new HashMap<>(); + TableRenderData tableData = new TableRenderData(); + List<RowRenderData> rows = new ArrayList<>(); + if (element instanceof XWPFTable) { + aa += 1; + XWPFTable tab = (XWPFTable) element; + List<XWPFTableRow> row = tab.getRows(); + for (int i = 0; i < row.size(); i++) { + RowRenderData rowRenderData = new RowRenderData(); + List<CellRenderData> cells = new ArrayList<>(); + List<XWPFTableCell> cell = row.get(i).getTableCells(); + for (int j = 0; j < cell.size(); j++) { + CellRenderData cellRenderData = new CellRenderData(); + List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>(); + ParagraphRenderData paragraphRenderData = new ParagraphRenderData(); + List<RenderData> renderData = new ArrayList<>(); + TextRenderData textRenderData = new TextRenderData(); + CTTcPr tcPr = cell.get(j).getCTTc().getTcPr(); + if (tcPr != null) { + //鍚堝苟鍒� + CTHMerge hMerge = tcPr.getHMerge(); + if (ObjectUtils.isNotEmpty(hMerge)) { + if (STMerge.RESTART.equals(hMerge.getVal()) || STMerge.CONTINUE.equals(hMerge.getVal())) { + int index = j; + String text = null; + while (text == null || text.equals("")) { + if (index < 0) { + text = "/"; + } + text = cell.get(index).getText(); + index--; + } + textRenderData.setText(text + "鈭�88" + aa + i); + } + } + //鍚堝苟琛� + CTVMerge vMerge = tcPr.getVMerge(); + if (ObjectUtils.isNotEmpty(vMerge)) { + if (STMerge.RESTART.equals(vMerge.getVal()) || STMerge.CONTINUE.equals(vMerge.getVal())) { + int index = i; + String text = null; + while (text == null || text.equals("")) { + if (index < 0) { + text = "/"; + break; + } + text = row.get(index).getCell(j).getText(); + index--; + } + if (text.equals("鍚堟牸")|| text.equals("涓嶅悎鏍�")){ + textRenderData.setText(text + "鈭�25" + aa + j); + }else { + textRenderData.setText(text + "鈭�22" + aa + j); + } + } + } + } else { + textRenderData.setText(cell.get(j).getText()); + } + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + rowRenderData.setCells(cells); + rows.add(rowRenderData); + } + tableData.setRows(rows); + table3.put("table3", tableData); + tables3.add(table3); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } } if (strings.contains("鐢佃矾璇曢獙")) { strings.remove("鐢佃矾璇曢獙"); @@ -1853,8 +1945,7 @@ Map<String, Object> table4 = new HashMap<>(); table4.put("table4", tableRenderData); tables4.add(table4); - } - else { + } else { Map<String, String> table = new HashMap<>(); table.put("indexs", indexs + ""); table.put("term", "鐢佃矾鍙傛暟"); @@ -1871,13 +1962,12 @@ for (InsReportDto1 insReportDto1 : insReportDto1s) { InsOrderUser insOrderUser = insOrderUserMapper.selectById(insReportDto1.getInsOrderUsersId()); InsOrderState orderState = insOrderStateMapper.selectById(insOrderUser.getInsOrderStateId()); - if (orderState.getLaboratory().equals("鐢佃矾璇曢獙")){ + if (orderState.getLaboratory().equals("鐢佃矾璇曢獙")) { orderState.setNum(insOrderUser.getNum()); - getWord1(insOrderUser.getTerm(),orderState,insSamples,tables2); + getWord1(insOrderUser.getTerm(), orderState, insSamples, tables2); } } - } - else { + } else { //濡傛灉鍙湁鐜璇曢獙娌℃湁鐢佃矾璇曢獙 strings.remove("杩戝満"); strings.remove("杩滃満"); @@ -2078,6 +2168,11 @@ environment = (ObjectUtils.isNotEmpty(insProduct.getTemperature()) ? insProduct.getTemperature() + "鈩� " : "") + (ObjectUtils.isNotEmpty(insProduct.getHumidity()) ? insProduct.getHumidity() + "%" : ""); String finalEnvironment = environment; List<SampleProductDto> finalSamples = samples; + String title3 = ""; + if (tables3.size() > 0) { + title3 = "杈愬皠鏂瑰悜鍥惧弬鏁�"; + } + String finalTitle = title3; XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render( new HashMap<String, Object>() {{ put("order", insOrder); @@ -2091,6 +2186,7 @@ put("deviceList", finalDeviceList); put("tables", tables); put("tables2", tables2); + put("title3", finalTitle); put("tables3", tables3); put("tables4", tables4); put("sampleList", sampleList); @@ -2129,8 +2225,8 @@ } catch (IOException e) { throw new RuntimeException(e); } - // 澶勭悊鍚堝苟鍗曞厓鏍肩殑闂 String path = wordUrl + "/" + insReport.getCode().replace("/", "") + ".docx"; + // 澶勭悊鍚堝苟鍗曞厓鏍肩殑闂 try { ZipSecureFile.setMinInflateRatio(0.0001); FileInputStream stream = new FileInputStream(path); @@ -2166,17 +2262,14 @@ } } } - // 鍗曞厓鏍兼帓搴�, 閬垮厤鏍煎紡閿欎贡 List<Map.Entry<String, Map<String, Integer>>> entries = new ArrayList<>(maps.entrySet()); entries.sort((o1, o2) -> o1.getValue().get("sc") - o2.getValue().get("sc")); - // 鎸夌収椤哄簭娣诲姞杩涢泦鍚� List<String> list = new ArrayList<>(); for (Map.Entry<String, Map<String, Integer>> entry : entries) { list.add(entry.getKey()); } - for (int a = list.size() - 1; a >= 0; a--) { Map<String, Integer> v = maps.get(list.get(a)); for (int j = 0; j < v.get("er") - v.get("sr") + 1; j++) { @@ -2184,6 +2277,7 @@ try { TableTools.mergeCellsHorizonal(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec")); } catch (Exception e) { + System.out.println("鍚堝苟鍑洪敊"); } } } @@ -2191,6 +2285,7 @@ try { TableTools.mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er")); } catch (Exception e) { + System.out.println("鍚堝苟鍑洪敊"); } } } @@ -2239,9 +2334,8 @@ } - //鐢佃矾鎶ュ憡鐢ㄤ簬鎬绘姤鍛婄殑鏂规硶 - private void getWord1(String term, InsOrderState insOrderState,List<InsSample> insSamples,List<Map<String, Object>> tables2){ + private void getWord1(String term, InsOrderState insOrderState, List<InsSample> insSamples, List<Map<String, Object>> tables2) { AtomicInteger lable = new AtomicInteger(1); AtomicInteger index = new AtomicInteger(); String title = term + "鐢佃矾鍙傛暟"; @@ -2290,8 +2384,7 @@ if (inspectionItemSubclass.contains("浜掕皟")) { aa += (angles + 1) * portRow * often; } - } - else { + } else { if (inspectionItemSubclass.contains("鐢靛帇椹绘尝姣�")) { aa += (angles + 1) * portRow; } @@ -2379,8 +2472,7 @@ paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); - } - else { + } else { if (insOrderState.getVersion() == 1) { //闈炵數璋冪増鏈�(绠�鍗曠増) if (inspectionItemSubclass.contains("鐢靛帇椹绘尝姣�") && i <= 2 * portRow) { @@ -2759,8 +2851,7 @@ cells.add(cellRenderData); } } - } - else { + } else { //鐢佃皟鐗堟湰(澶嶆潅鐗�) if (inspectionItemSubclass.contains("鐢靛帇椹绘尝姣�") && i <= (angles + 1) * portRow) { cc = (angles + 1) * portRow; -- Gitblit v1.9.3