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