From 97bb7a8832281eafe0ef947ea095258d355e52f5 Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期一, 30 十二月 2024 15:57:51 +0800 Subject: [PATCH] 无源器件的数采+电路模版查询 --- inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java | 505 ++++--------------------------------------------------- 1 files changed, 41 insertions(+), 464 deletions(-) diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java index 93888e0..ca5212b 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java @@ -17,6 +17,7 @@ import com.deepoove.poi.data.*; import com.deepoove.poi.data.style.*; import com.deepoove.poi.data.style.Style; +import com.deepoove.poi.data.style.TableStyle; import com.deepoove.poi.util.TableTools; import com.itextpdf.text.BadElementException; import com.itextpdf.text.DocumentException; @@ -25,10 +26,7 @@ import com.itextpdf.text.pdf.PdfStamper; import com.yuanchu.mom.common.GetLook; import com.yuanchu.mom.common.PrintChina; -import com.yuanchu.mom.dto.InsReportDto; -import com.yuanchu.mom.dto.InsReportDto1; -import com.yuanchu.mom.dto.ReportPageDto; -import com.yuanchu.mom.dto.SampleProductDto; +import com.yuanchu.mom.dto.*; import com.yuanchu.mom.exception.ErrorException; import com.yuanchu.mom.mapper.*; import com.yuanchu.mom.pojo.*; @@ -37,9 +35,13 @@ import com.yuanchu.mom.utils.JackSonUtil; import com.yuanchu.mom.utils.MatrixToImageWriter; import com.yuanchu.mom.utils.QueryWrappers; +import com.yuanchu.mom.utils.WordUtils; import com.yuanchu.mom.vo.Result; import org.apache.commons.io.IOUtils; +import org.apache.logging.log4j.util.Strings; import org.apache.poi.xwpf.usermodel.*; +import org.apache.poi.xwpf.usermodel.ParagraphAlignment; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; @@ -84,6 +86,9 @@ @Resource private InsReportMapper insReportMapper; + @Autowired + ProcessReportMapper1 processReportMapper; + @Value("${wordUrl}") private String wordUrl; @@ -97,10 +102,10 @@ private InsOrderMapper insOrderMapper; @Resource - private StandardMethodListMapper standardMethodListMapper; + private InsOrderStateMapper insOrderStateMapper; @Resource - private InsOrderStateMapper insOrderStateMapper; + WordUtils wordUtils; @Resource private InsProductMapper insProductMapper; @@ -110,6 +115,9 @@ @Resource private InsProductResult2Mapper insProductResult2Mapper; + + @Resource + private InsOrderUserMapper insOrderUserMapper; @Resource private InsSampleMapper insSampleMapper; @@ -132,19 +140,7 @@ map.put("head", PrintChina.printChina(ReportPageDto.class)); Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("pageInsReport"); if (map1.get("look") == 1) reportPageDto.setCreateUser(map1.get("userId")); - User user = userMapper.selectById(map1.get("userId"));//褰撳墠鐧诲綍鐨勪汉 - //鑾峰彇褰撳墠浜烘墍灞炲疄楠屽id - String departLimsId = user.getDepartLimsId(); - String laboratory = null; - if (ObjectUtils.isNotEmpty(departLimsId) && !departLimsId.equals("")) { - String[] split = departLimsId.split(","); - //鏌ヨ瀵瑰簲鏋舵瀯鍚嶇О(閫氫俊瀹為獙瀹�,鐢靛姏瀹為獙瀹�,妫�娴嬪姙) - String departLims = insOrderMapper.seldepLimsId(Integer.parseInt(split[split.length - 1])); - if (departLims.contains("瀹為獙瀹�")) { - laboratory = departLims; - } - } - map.put("body", insReportMapper.pageInsReport(page, QueryWrappers.queryWrappers(reportPageDto), laboratory)); + map.put("body", insReportMapper.pageInsReport(page, QueryWrappers.queryWrappers(reportPageDto))); return map; } @@ -241,15 +237,6 @@ } catch (Exception e) { throw new ErrorException("鎵句笉鍒版壒鍑嗕汉鐨勭鍚�"); } - //鑾峰彇鍦烘墍鐨勬姤鍛婁笓鐢ㄧ珷 - /* String sealUrl; - try { - String laboratory = insOrderMapper.selectById(insReport.getInsOrderId()).getLaboratory(); - sealUrl = insReportMapper.getLaboratoryByName(laboratory); - } catch (Exception e) { - throw new ErrorException("鎵句笉鍒版姤鍛婁笓鐢ㄧ珷"); - } - if (sealUrl == null) throw new ErrorException("鎵句笉鍒版姤鍛婁笓鐢ㄧ珷");*/ //绯荤粺鐢熸垚鎶ュ憡鍦板潃 String url = insReport.getUrl(); //鎵嬪姩涓婁紶鎶ュ憡鍦板潃 @@ -261,11 +248,10 @@ put("seal2", Pictures.ofLocal(imgUrl + "/" + sealUrl).create()); }}, finalUrl); wordToPdf(finalUrl, sealUrl); - - InsOrder insOrder = new InsOrder(); - insOrder.setId(insReportMapper.selectById(id).getInsOrderId()); - insOrder.setState(4); - insOrderMapper.updateById(insOrder); + /*鏂板cnas7.8鎶ュ憡缁撴灉*/ + ProcessReport processReport = new ProcessReport(); + processReport.setInsReportCode(insReport.getCode()); + processReportMapper.insert(processReport); return insReportMapper.updateById(insReport); } @@ -335,8 +321,7 @@ if (files != null) { for (File f : files) { // 鏍规嵁鏂囦欢鍚嶆煡璇d - String name = f.getName(); - InsReport insReport = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery().like(InsReport::getCode, f.getName().replace(".docx", "").replace("JCZX", "JCZX/"))); + InsReport insReport = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery().like(InsReport::getCode, f.getName().replace(".docx", ""))); if (ObjectUtils.isEmpty(insReport)) { throw new ErrorException("娌℃湁鎵惧埌 " + f.getName() + " 杩欎釜鏂囦欢瀵瑰簲鐨勬姤鍛婃暟鎹�"); } @@ -376,29 +361,37 @@ @Override @Transactional(rollbackFor = Exception.class) public int isReport(InsReportDto insReportDto) { - //鍏堝垽鏂璁㈠崟鏄惁鍙互鍘荤敓浜ф姤鍛� - Long count = insOrderStateMapper.selectCount(Wrappers.<InsOrderState>lambdaQuery().eq(InsOrderState::getInsOrderId, insReportDto.getId()).eq(InsOrderState::getInsState, 5)); + //鍏堝垽鏂璁㈠崟鏄惁鍙互鍘荤敓浜ф姤鍛�(鏄惁缁撴潫璇曢獙) + Long count = insOrderStateMapper.selectCount(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, insReportDto.getId()).eq(InsOrderState::getInsState, 5)); if (count > 0) { if (insReportDto.getState() == 1) { - generateReport(insReportDto.getId(), insReportDto.getInsReportDto1s()); - } else { - //缁撴潫璁㈠崟 - InsOrder insOrder = new InsOrder(); - insOrder.setId(insReportDto.getId()); - insOrder.setState(4); - insOrderMapper.updateById(insOrder); + List<InsReportDto1> insReportDto1s = insReportDto.getInsReportDto1s(); + for (InsReportDto1 insReportDto1 : insReportDto1s) { + if (ObjectUtils.isNotEmpty(insReportDto1.getInsReportDto2s())){ + wordUtils.generateReport(insReportDto.getId(), insReportDto1); + } + } } } else { - throw new ErrorException("璇ヨ鍗曡繕鏈粨鏉熻瘯楠�,鏃犳硶鐢熶骇鎶ュ憡!"); + throw new ErrorException("璇ヨ鍗曡繕鏈粨鏉熻瘯楠�,鏃犳硶鐢熸垚鎶ュ憡!"); } return 0; } //鏌ュ嚭璇ヨ鍗曚笅姣忎釜绔欑偣涓嬬殑妫�楠屾鏁� @Override - public List<InsOrderState> getInsOrderStateCount(Integer id) { - List<InsOrderState> insOrderStates = insOrderStateMapper.getInsOrderStateCount(id); - return insOrderStates; + public List<InsOrderStateDto> getInsOrderStateCount(Integer id) { + List<InsOrderStateDto> insOrderStateDtos = new ArrayList<>(); + List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, id)); + for (InsSample insSample : insSamples) { + InsOrderStateDto insOrderStateDto = new InsOrderStateDto(); + insOrderStateDto.setInsSample(insSample); + List<InsOrderState> insOrderStates = insOrderStateMapper.getInsOrderStateCount(id, insSample.getId()); + insOrderStateDto.setInsOrderStates(insOrderStates); + insOrderStateDtos.add(insOrderStateDto); + } + return insOrderStateDtos; } @@ -477,20 +470,6 @@ public String wordToPdf(String wordPath, String pdfPath, String sealUrl) { FileOutputStream os = null; try { - //鍑瘉 涓嶇劧鍒囨崲鍚庢湁姘村嵃 -// InputStream inputStream = this.getClass().getResourceAsStream("/lib/license.xml"); - /*String url; - try { - InputStream inputStream = this.getClass().getResourceAsStream("/lib/license.xml"); - File file = File.createTempFile("temp", ".tmp"); - OutputStream outputStream = new FileOutputStream(file); - IOUtils.copy(inputStream, outputStream); - url = file.getAbsolutePath(); - } catch (FileNotFoundException e) { - throw new ErrorException("鎵句笉鍒版ā鏉挎枃浠�"); - } catch (IOException e) { - throw new RuntimeException(e); - }*/ InputStream is = new ClassPathResource("/lib/license.xml").getInputStream(); License license = new License(); license.setLicense(is); @@ -503,24 +482,10 @@ os = new FileOutputStream(file); //瑕佽浆鎹㈢殑word鏂囦欢 com.aspose.words.Document doc = new com.aspose.words.Document(wordPath); - TableCollection tables = doc.getFirstSection().getBody().getTables(); - for (Table table : tables) { - RowCollection rows = table.getRows(); - table.setAllowAutoFit(false); - for (Row row : rows) { - CellCollection cells = row.getCells(); - for (Cell cell : cells) { - CellFormat cellFormat = cell.getCellFormat(); - cellFormat.setFitText(false); //璁剧疆鑷�傚簲鍏抽棴 - cellFormat.setWrapText(true); // 璁剧疆鑷姩鎹㈣ - } - } - } doc.save(os, SaveFormat.PDF); //娣诲姞楠戠紳绔� stamperCheckMarkPDF(pdfPath.replace(".pdf", "-1.pdf"), pdfPath, imgUrl + "/" + sealUrl); - } catch (Exception e) { e.printStackTrace(); @@ -593,394 +558,6 @@ over.addImage(img); } stamp.close(); - } - - //鐢熸垚鎶ュ憡 - private void generateReport(Integer orderId, List<InsReportDto1> insReportDto1s) { - LocalDateTime now = LocalDateTime.now(); - InsOrder insOrder = insOrderMapper.selectById(orderId); - //濮旀墭閮ㄩ棬 departLims - String departLims = userMapper.selectDepartLims(insOrder.getPrepareUser()); - //samples鏄繃婊ゆ帀娌℃湁妫�楠岄」鐩殑鏍峰搧 - List<SampleProductDto> samples = insSampleMapper.selectSampleProductListByOrderId(orderId); - String sampleCode = samples.get(0).getSampleCode(); - InsReport insReport = new InsReport(); - insReport.setCode(insOrder.getEntrustCode()); - insReport.setInsOrderId(orderId); - List<Map<String, Object>> tables = new ArrayList<>(); - Set<String> standardMethod = new HashSet<>(); - Set<String> deviceSet = new HashSet<>(); - Set<String> models = new HashSet<>(); - AtomicReference<Integer> productSize = new AtomicReference<>(0); - AtomicReference<Integer> productSize1 = new AtomicReference<>(0); - AtomicReference<Integer> productSize2 = new AtomicReference<>(0); - AtomicReference<Integer> productSize3 = new AtomicReference<>(0); - String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; - samples.forEach(s -> { - models.add(s.getModel()); - standardMethod.addAll(standardMethodListMapper.selectList(Wrappers.<StandardMethodList>lambdaQuery() - .in(StandardMethodList::getId,Arrays.stream(s.getStandardMethodListId().replaceAll("[\\[\\]]", "").split(",")) - .map(String::trim).map(Integer::parseInt).collect(Collectors.toList()))).stream().map(StandardMethodList::getCode).distinct().collect(Collectors.toList())); - //鎬绘暟 - Long productCount = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() - .eq(InsProduct::getInsSampleId, s.getId())); - productSize.set(productSize.get() + Integer.parseInt(productCount + "")); - //涓嶅垽瀹� - Long productCount1 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() - .eq(InsProduct::getInsSampleId, s.getId()) - .eq(InsProduct::getInsResult, 3)); - productSize1.set(productSize1.get() + Integer.parseInt(productCount1 + "")); - //涓嶅悎鏍� - Long productCount2 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() - .eq(InsProduct::getInsSampleId, s.getId()) - .eq(InsProduct::getInsResult, 0)); - productSize2.set(productSize2.get() + Integer.parseInt(productCount2 + "")); - //鍚堟牸 - Long productCount3 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() - .eq(InsProduct::getInsSampleId, s.getId()) - .eq(InsProduct::getInsResult, 1)); - productSize3.set(productSize3.get() + Integer.parseInt(productCount3 + "")); - //灏嗛」鐩寜鐓х珯鐐硅繘琛屽垎绫� - Map<String, List<InsProduct>> listMap = s.getInsProduct().stream().collect(Collectors.groupingBy(InsProduct::getLaboratory)); - // 鍒涘缓涓�涓� Map 灏嗙珯鐐瑰拰椤圭洰ID鐨勬槧灏勫叧绯� - Map<String, Set<Integer>> labToDeviceMap = new HashMap<>(); - // 鑾峰彇鎵�鏈夌珯鐐圭殑椤圭洰ID 鍒楄〃 - for (Map.Entry<String, List<InsProduct>> entry : listMap.entrySet()) { - Set<Integer> deviceIds = entry.getValue().stream() - .map(InsProduct::getId) - .collect(Collectors.toSet()); - labToDeviceMap.put(entry.getKey(), deviceIds); - } - for (InsReportDto1 insReportDto1 : insReportDto1s) { - String laboratory = insReportDto1.getLaboratory(); - if (!labToDeviceMap.containsKey(laboratory)) { - continue; - } - Set<Integer> deviceIds = labToDeviceMap.get(laboratory); - Integer num = insReportDto1.getNum(); - List<InsProductResult> insProductResults = insProductResultMapper.selectList( - Wrappers.<InsProductResult>lambdaQuery() - .eq(InsProductResult::getNum, num) - .in(InsProductResult::getInsProductId, deviceIds)); - 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); - } - } - } - List<InsProductResult2> insProductResult2s = insProductResult2Mapper.selectList( - Wrappers.<InsProductResult2>lambdaQuery() - .eq(InsProductResult2::getNum, num) - .in(InsProductResult2::getInsProductId, deviceIds)); - for (InsProductResult2 result2 : insProductResult2s) { - String equipValue = result2.getEquipValue(); - if (equipValue != null && !equipValue.isEmpty()) { - deviceSet.add(equipValue); - } - } - } - }); - String url; - try { - InputStream inputStream = this.getClass().getResourceAsStream("/static/report-template.docx"); - File file = File.createTempFile("temp", ".tmp"); - OutputStream outputStream = new FileOutputStream(file); - IOUtils.copy(inputStream, outputStream); - url = file.getAbsolutePath(); - } catch (FileNotFoundException e) { - throw new ErrorException("鎵句笉鍒版ā鏉挎枃浠�"); - } catch (IOException e) { - throw new RuntimeException(e); - } - StringBuilder standardMethod2 = new StringBuilder(); - for (String s : standardMethod) { - standardMethod2.append("銆�").append(s); - } - standardMethod2.replace(0, 1, ""); - tables.forEach(table -> { - table.put("tableSize", tables.size() + 1); - }); - List<Map<String, String>> deviceList = null; - if (deviceSet.size() != 0) { - deviceList = insOrderMapper.selectDeviceList(deviceSet); - } - Map<String, String> codeStr = new HashMap<>(); - codeStr.put("鎶ュ憡缂栧彿", insReport.getCode()); - codeStr.put("鏍峰搧鍚嶇О", insOrder.getSample()); - codeStr.put("瑙勬牸鍨嬪彿", samples.get(0).getModel()); - codeStr.put("鍙戞斁鏃ユ湡", now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); - String codePath; - try { - codePath = new MatrixToImageWriter().code(JackSonUtil.marshal(codeStr).replaceAll("\\{", "") - .replaceAll("}", "").replaceAll(",", "").replaceAll("\"", ""), twoCode); - } catch (Exception e) { - throw new RuntimeException(e); - } - String modelStr = ""; - for (String model : models) { - modelStr += "," + model; - } - String finalModelStr = modelStr; - String sampleEn = insSampleMapper.getSampleEn(insOrder.getSample()); - String orderType = insOrderMapper.getEnumLabelByValue(insOrder.getOrderType()); - String formType = insOrderMapper.getEnumLabelByValue(insOrder.getFormType()); - ConfigureBuilder builder = Configure.builder(); - builder.useSpringEL(true); - List<Map<String, String>> finalDeviceList = deviceList; - List<Map<String, String>> sampleList = insSampleMapper.selectSampleList(orderId); - Integer userId = insSampleUserMapper.selectOne(Wrappers.<InsSampleUser>lambdaQuery() - .eq(InsSampleUser::getInsSampleId, orderId).last("limit 1")).getUserId(); - String signatureUrl; - try { - signatureUrl = userMapper.selectById(userId).getSignatureUrl(); - } catch (Exception e) { - throw new ErrorException("鎵句笉鍒版楠屼汉鐨勭鍚�"); - } - if (ObjectUtils.isEmpty(signatureUrl) || signatureUrl.equals("")) { - throw new ErrorException("鎵句笉鍒版楠屼汉鐨勭鍚�"); - } - Custom custom = customMapper.selectById(insOrder.getCompanyId()); - - /*鑾峰彇闄勪欢鍥剧墖绫诲瀷*/ - List<Map<String, Object>> images = new ArrayList<>(); - List<InsOrderFile> insOrderFiles = insOrderFileMapper.selectList(Wrappers.<InsOrderFile>lambdaQuery().eq(InsOrderFile::getType, 1).eq(InsOrderFile::getInsOrderId, orderId)); - if (CollectionUtils.isNotEmpty(insOrderFiles)) { - insOrderFiles.forEach(insOrderFile -> { - Map<String, Object> image = new HashMap<>(); - PictureRenderData pictureRenderData = Pictures.ofLocal(imgUrl + "/" + insOrderFile.getFileUrl()).sizeInCm(17, 20).create(); - image.put("url", pictureRenderData); - image.put("report", insReport); - images.add(image); - }); - } - //濮旀墭浜哄拰鐢佃瘽瀛楁鍒ゆ柇 - if (ObjectUtils.isEmpty(insOrder.getPrepareUser())) { - insOrder.setPrepareUser("/"); - } - if (ObjectUtils.isEmpty(insOrder.getPhone())) { - insOrder.setPhone("/"); - } - //妫�楠岄」鐩殑鐜 - InsProduct insProduct = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getState, 1).eq(InsProduct::getInsSampleId, samples.get(0).getId())).get(0); - String environment = ""; - environment = (ObjectUtils.isNotEmpty(insProduct.getTemperature()) ? insProduct.getTemperature() + "鈩� " : "") + (ObjectUtils.isNotEmpty(insProduct.getHumidity()) ? insProduct.getHumidity() + "%" : ""); - String finalEnvironment = environment; - List<SampleProductDto> finalSamples = samples; - XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render( - new HashMap<String, Object>() {{ - put("order", insOrder); - put("report", insReport); - put("departLims", departLims); - put("sampleCode", sampleCode); - put("environment", finalEnvironment); - put("custom", custom); - put("sampleSize", finalSamples.size()); - put("tables", tables); - put("tableSize", tables.size() + 1); - put("standardMethod", (standardMethod2.toString().equals("null") ? "" : standardMethod2)); - put("deviceList", finalDeviceList); - put("sampleList", sampleList); - put("twoCode", Pictures.ofLocal(codePath).create()); - put("models", finalModelStr.replace(",", "")); - put("productSize", productSize); - put("productSize1", productSize1); - put("productSize2", productSize2); - put("productSize3", productSize3); - put("createTime", now.format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"))); - put("createTimeEn", monthNames[now.getMonthValue() - 1] + " " + now.getDayOfMonth() + ", " + now.getYear()); - put("insTime", insOrder.getInsTime().format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"))); - put("insTimeEn", monthNames[insOrder.getInsTime().getMonthValue() - 1] + " " + insOrder.getInsTime().getDayOfMonth() + ", " + insOrder.getInsTime().getYear()); - put("writeUrl", null); - put("insUrl", Pictures.ofLocal(imgUrl + "/" + signatureUrl).create()); - put("images", images); - put("examineUrl", null); - put("ratifyUrl", null); - put("sampleEn", sampleEn); - put("orderType", orderType); - put("getTime", insOrder.getExamineTime().format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"))); - put("getTimeEn", monthNames[insOrder.getExamineTime().getMonthValue() - 1] + " " + insOrder.getExamineTime().getDayOfMonth() + ", " + insOrder.getExamineTime().getYear()); - put("seal1", null); - put("seal2", null); - put("formTypeCh", formType); - put("formTypeEn", insOrder.getFormType()); - }}); - try { - String name = insReport.getCode().replace("/", "") + ".docx"; - template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name))); - insReport.setUrl("/word/" + name); - insReportMapper.insert(insReport); - insOrder.setInsState(5); - insOrderMapper.updateById(insOrder); - } catch (IOException e) { - throw new RuntimeException(e); - } - // 澶勭悊鍚堝苟鍗曞厓鏍肩殑闂 - String path = wordUrl + "/" + insReport.getCode().replace("/", "") + ".docx"; - try { - FileInputStream stream = new FileInputStream(path); - XWPFDocument document = new XWPFDocument(stream); - List<XWPFTable> xwpfTables = document.getTables(); - for (int i = 1; i < xwpfTables.size() - (deviceList == null ? 1 : 2); i++) { - Set<String> set1 = new HashSet<>(); - Map<String, Map<String, Integer>> maps = new HashMap<>(); - for (int j = 0; j < xwpfTables.get(i).getRows().size(); j++) { - for (int k = 0; k < xwpfTables.get(i).getRows().get(j).getTableCells().size(); k++) { - if (xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().indexOf("鈭�") > -1) { - String[] split = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("鈭�"); - if (set1.add(split[1])) { - Map<String, Integer> map = new HashMap<>(); - map.put("sr", j); - map.put("sc", k); - map.put("er", j + 0); - map.put("ec", k + 0); - maps.put(split[1], map); - } else { - Map<String, Integer> map1 = maps.get(split[1]); - if (j == map1.get("sr")) { - map1.put("ec", map1.get("ec") + 1); - } else if (k == map1.get("sc")) { - map1.put("er", map1.get("er") + 1); - } - } - String str = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("鈭�")[0]; - xwpfTables.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0); - xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setText(str); - xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); - xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getParagraphArray(0).setAlignment(org.apache.poi.xwpf.usermodel.ParagraphAlignment.CENTER); - } - } - } - List<String> list = new ArrayList<>(); - for (String s : maps.keySet()) { - list.add(s); - } - 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++) { - if (v.get("ec") > v.get("sc")) { - try { - TableTools.mergeCellsHorizonal(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec")); - } catch (Exception e) { - } - } - } - if (v.get("er") > v.get("sr")) { - try { - TableTools.mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er")); - } catch (Exception e) { - } - } - } - } - FileOutputStream fileOutputStream = new FileOutputStream(path); - document.write(fileOutputStream); - fileOutputStream.close(); - } catch (FileNotFoundException e) { - throw new RuntimeException(e); - } catch (IOException e) { - throw new RuntimeException(e); - } - //澶勭悊涓嫳鏂囨崲琛岀殑闂 - try { - FileInputStream stream1 = new FileInputStream(path); - XWPFDocument document1 = new XWPFDocument(stream1); - List<XWPFTable> xwpfTables1 = document1.getTables(); - for (int i = 1; i < xwpfTables1.size() - (deviceList == null ? 1 : 2); i++) { - for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) { - for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) { - if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) { - String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText(); - String[] split = text.split("@"); - xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0); - XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph(); - XWPFRun run = xwpfParagraph.createRun(); - run.setText(split[0]); - if (ObjectUtils.isNotNull(split[1])) { - run.addBreak(); - run.setText(split[1]); - } - xwpfParagraph.setAlignment(org.apache.poi.xwpf.usermodel.ParagraphAlignment.CENTER); - } - } - } - } - FileOutputStream fileOutputStream1 = new FileOutputStream(path); - document1.write(fileOutputStream1); - fileOutputStream1.close(); - } catch (FileNotFoundException e) { - throw new RuntimeException(e); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - - // 璁$畻琛岄珮鐨勬柟娉� - private int calculateRowHeight(RowRenderData rowRenderData) { - // 瀹炵幇璁$畻閫昏緫锛屽彲鑳介渶瑕佹牴鎹崟鍏冩牸鍐呭鍜屽瓧浣撶瓑鍙傛暟杩涜璁$畻 - int height = 0; - for (CellRenderData cell : rowRenderData.getCells()) { - int cellHeight = estimateCellHeight(cell); // 鏍规嵁鍐呭浼扮畻鍗曞厓鏍奸珮搴� - if (cellHeight > height) { - height = cellHeight; - } - } - return height; - } - - //鏍规嵁鍗曞厓鏍肩殑鏂囨湰鍐呭璁$畻瀹為檯琛岄珮 - private int estimateCellHeight(CellRenderData cellRenderData) { - // 鍋囪榛樿琛岄珮鏄�40 - int defaultHeight = 40; - // 鑾峰彇鍗曞厓鏍间腑鐨勬墍鏈夋钀� - List<ParagraphRenderData> paragraphs = cellRenderData.getParagraphs(); - int estimatedHeight = 0; - // 閬嶅巻娈佃惤锛屼及绠楁瘡涓钀界殑楂樺害 - for (ParagraphRenderData paragraph : paragraphs) { - List<RenderData> contents = paragraph.getContents(); - for (RenderData content : contents) { - if (content instanceof TextRenderData) { - TextRenderData text = (TextRenderData) content; - Style style = text.getStyle(); - // 鍋囪姣忚鏂囨湰鐨勯珮搴︿负瀛椾綋澶у皬鐨�1.2鍊� - Double fontSize = Objects.isNull(style.getFontSize()) ? 12.0 : style.getFontSize(); - int lines = (int) Math.ceil(text.getText().length() / 15.0); // 鍋囪姣忚绾�15涓瓧绗� - int textHeight = (int) (fontSize * 1.2 * lines); - // 绱姞娈佃惤鐨勯珮搴� - estimatedHeight += textHeight; - } - } - } - // 杩斿洖鏈�澶у�硷紝纭繚楂樺害涓嶄綆浜庨粯璁ら珮搴� - return Math.max(estimatedHeight, defaultHeight); - } - - private void getTemplateThing(Set<Integer> set, Map<Integer, String> map2, List<InsProduct> insProducts) { - for (InsProduct product : insProducts) { - if (product.getTemplateId() == null) { - product.setTemplate(new ArrayList<>()); - continue; - } - String thing = null; - if (product.getTemplateId() != null && set.add(product.getTemplateId())) { - map2.put(product.getTemplateId(), standardTemplateService.getStandTempThingById(product.getTemplateId()) + ""); - thing = map2.get(product.getTemplateId()); - } - if (StrUtil.isNotEmpty(thing)) { - JSONObject sheet = JSON.parseObject(JSON.toJSONString(JSON.parseArray(JSON.toJSONString(JSON.parseObject(thing).get("data"))).get(0))); - JSONObject config = JSON.parseObject(JSON.toJSONString(sheet.get("config"))); - List<JSONObject> cellData = JSON.parseArray(JSON.toJSONString(sheet.get("celldata")), JSONObject.class); - Map<String, Object> style = new HashMap<>(); - style.put("rowlen", config.get("rowlen")); - style.put("columnlen", config.get("columnlen")); - product.setTemplate(cellData); - product.setStyle(style); - product.setTemplateName(standardTemplateService.getStandTempNameById(product.getTemplateId())); - } - } } } -- Gitblit v1.9.3