From 22d3a8dc4185c5461bee9e42a9f4a2775ff448e6 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期二, 10 九月 2024 17:28:17 +0800
Subject: [PATCH] 报告更改+再次试验

---
 inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult2.java               |   10 
 inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java                   |    5 
 inspect-server/src/main/resources/mapper/InsSampleMapper.xml                           |  713 ++++++++++++++++-----
 user-server/src/main/java/com/yuanchu/mom/mapper/UserMapper.java                       |    2 
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java    |  458 +++++++++++++
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java |  700 +-------------------
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java     |   19 
 user-server/src/main/resources/mapper/UserMapper.xml                                   |    4 
 framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java                            |    2 
 inspect-server/src/main/java/com/yuanchu/mom/dto/SampleProductDto.java                 |    3 
 inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java       |    7 
 inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResultVo.java                |    3 
 inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java                    |    1 
 inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java               |    9 
 inspect-server/src/main/resources/static/report-template.docx                          |    0 
 inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java    |   19 
 inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult.java                |    5 
 user-server/src/main/java/com/yuanchu/mom/service/impl/UserServiceImp.java             |    1 
 inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java          |    4 
 inspect-server/src/main/java/com/yuanchu/mom/service/InsReportService.java             |    3 
 20 files changed, 1,115 insertions(+), 853 deletions(-)

diff --git a/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java b/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java
index 54eaa1d..cc724a9 100644
--- a/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java
+++ b/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java
@@ -33,7 +33,7 @@
         String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
         String date2 = LocalDate.now().format(DateTimeFormatter.ofPattern(patten));
         int num;
-        num = systemLogMapper.countRowsByNow3(tableName, companyId, laboratory, LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"))) + 1;
+        num = systemLogMapper.countRowsByNow3(tableName, companyId, laboratory, LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) + 1;
         String nums = num + "";
         if (nums.length() == 1) nums = "00" + num;
         else if (nums.length() == 2) nums = "0" + num;
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
index 163e9c3..7dde23f 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
@@ -138,9 +138,9 @@
     @ApiOperation(value = "淇濆瓨妫�楠屽唴瀹�")
     @PostMapping("/saveInsContext")
     @ValueAuth
-    public Result<?> saveInsContext(String param) {
+    public Result<?> saveInsContext(String param,Integer num) {
         Map<String, Object> param2 = JSON.parseObject(param, Map.class);
-        insOrderPlanService.saveInsContext(param2);
+        insOrderPlanService.saveInsContext(param2,num);
         return Result.success();
     }
 
@@ -215,13 +215,6 @@
         return Result.success(insOrderPlanService.deleteInsContext(insProductResultVo));
     }
 
-    @ApiOperation(value = "鐢佃矾璇曢獙鐨勫垹闄や簰璋�")
-    @PostMapping("/deleteInsContext2")
-    @ValueAuth
-    public Result<?> deleteInsContext2(String frequency,Integer productId,String often) {
-        return Result.success(insOrderPlanService.deleteInsContext2(frequency,productId,often));
-    }
-
     @ApiOperation(value = "鐢佃矾璇曢獙鐐瑰嚮妫�楠岄�夋嫨鐗堟湰")
     @PostMapping("/chooseVersion")
     @ValueAuth
@@ -231,4 +224,12 @@
         orderState.setVersion(version);
         return Result.success(insOrderStateService.updateById(orderState));
     }
+
+    @ValueClassify("妫�楠屼换鍔�")
+    @PostMapping("/getInsProduct2")
+    @ApiOperation("鏌ョ湅妫�楠屽巻鍙�")
+    public Result<?> getInsProduct2(Integer id, Integer type, String laboratory, HttpServletRequest request,Integer num) {
+        return Result.success(insOrderPlanService.getInsProduct2(id, type, laboratory, request,num));
+    }
+
 }
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java
index ccfdb62..8a05af5 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java
@@ -148,4 +148,11 @@
     public Result upAll(MultipartFile file) throws IOException {
         return Result.success(insReportService.upAll(file));
     }
+
+    @ValueClassify("鎶ュ憡缂栧埗")
+    @ApiOperation(value = "鍒ゆ柇鏄惁鐢熸垚鎬绘姤鍛�")
+    @PostMapping("/isReport")
+    public Result isReport(Integer id,Integer state) {
+        return Result.success(insReportService.isReport(id,state));
+    }
 }
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/dto/SampleProductDto.java b/inspect-server/src/main/java/com/yuanchu/mom/dto/SampleProductDto.java
index 9755b70..bef9b77 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/dto/SampleProductDto.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/dto/SampleProductDto.java
@@ -22,4 +22,7 @@
     //妫�楠屼汉
     private String checkName;
 
+    //娆℃暟(妫�楠屾鏁�)
+    private Integer num1;
+
 }
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java
index 55f7297..28d3c7e 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java
@@ -30,22 +30,29 @@
     IPage<InsOrderPlanTaskSwitchVo> inspectionOrderDetailsTaskSwitching(Page page, @Param("ew") QueryWrapper<InsOrderPlanDTO> ew, @Param("userId") Integer userId, @Param("sonLaboratory") String sonLaboratory, @Param("laboratory") String laboratory);
 
     List<SampleProductDto> selectSampleProductListByOrderId(Integer id);
+    List<SampleProductDto> selectSampleProductListByOrder2Id(Integer id);
 
     List<SampleProductDto> selectSampleProductListByOrderId2(Integer id);
+    List<SampleProductDto> selectSampleProductListByOrder2Id2(Integer id);
 
     List<SampleProductDto3> selectSampleProductListByOrderId3(List<Integer> ids);
 
     List<SampleProductDto> getInsOrderAndSample(Integer id, String laboratory);
+    List<SampleProductDto> getInsOrderAndSample2(Integer id, String laboratory);
 
     String getSampleEn(String sample);
 
-    List<InsProduct> getInsProduct1(Integer id, String laboratory);
+    List<InsProduct> getInsProduct1(@Param("id") Integer id, @Param("laboratory") String laboratory);
+    List<InsProduct> getIns2Product1(@Param("id") Integer id, @Param("laboratory") String laboratory);
+    List<InsProduct> get2InsProduct1(@Param("id") Integer id, @Param("laboratory") String laboratory, @Param("num") Integer num);
 
     List<Map<String, Object>> getReportModel(@Param("orderId") Integer orderId, @Param("id") Integer id, @Param("laboratory") String laboratory);
 
     SampleVo getDetailById(Integer sampleId);
 
     String selMethodById(Integer sampleId);
+
+    List<Map<String, String>> selectSampleList(Integer orderId);
 }
 
 
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java
index 0b435c1..49df4e4 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java
@@ -87,4 +87,9 @@
      * 閽堝鐢佃矾璇曢獙閫夋嫨鐨勭増鏈�
      */
     private Integer version;
+
+    /**
+     * 娆℃暟(妫�娴嬫鏁�)
+     */
+    private Integer num;
 }
\ No newline at end of file
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult.java
index c6b89b4..c2a2087 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult.java
@@ -58,4 +58,9 @@
     @TableField(fill = FieldFill.INSERT_UPDATE)
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime updateTime;
+
+    /**
+     * 娆℃暟(妫�娴嬫鏁�)
+     */
+    private Integer num;
 }
\ No newline at end of file
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult2.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult2.java
index faac854..e6c7390 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult2.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult2.java
@@ -59,9 +59,10 @@
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime updateTime;
 
-    @ApiModelProperty("棰戠巼")
+    @ApiModelProperty("棰戞")
     private String frequency;
-    @ApiModelProperty("棰戠巼")
+
+    @ApiModelProperty("棰戠偣")
     private String often;
 
     @ApiModelProperty("绔彛")
@@ -75,4 +76,9 @@
 
     @ApiModelProperty("缁撹 0涓嶅悎鏍� 1鍚堟牸")
     private Integer result;
+
+    /**
+     * 娆℃暟(妫�娴嬫鏁�)
+     */
+    private Integer num;
 }
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
index 600e748..0bd7690 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
@@ -23,7 +23,7 @@
     boolean claimInsOrderPlan(InsOrderPlanDTO entity);
 
     //鏅�氱殑淇濆瓨妫�楠屽唴瀹�
-    void saveInsContext(Map<String, Object> insContext);
+    void saveInsContext(Map<String, Object> insContext,Integer num);
 
     //鐢佃矾璇曢獙鐨勪繚瀛樻楠屽唴瀹�
     List<Integer> saveInsContext2(InsProductResultDto insProductResultDtos);
@@ -37,6 +37,7 @@
     int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode);
 
     List<InsProduct> getInsProduct(Integer id, Integer type, String laboratory, HttpServletRequest request);
+    List<InsProduct> getInsProduct2(Integer id, Integer type, String laboratory, HttpServletRequest request,Integer num);
 
     List<String> checkSubmitPlan(Integer orderId, String laboratory);
 
@@ -52,5 +53,4 @@
 
     int deleteInsContext(InsProductResultVo insProductResultVo);
 
-    int deleteInsContext2(String frequency, Integer productId, String often);
 }
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/InsReportService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/InsReportService.java
index 069c45c..0a8c896 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/InsReportService.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/InsReportService.java
@@ -38,4 +38,7 @@
     String downAll(String ids);
 
     int upAll(MultipartFile file) throws IOException;
+
+    //鏄惁鐢熸垚鎬绘姤鍛�
+    int isReport(Integer id,Integer state);
 }
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
index 58ded93..91912bb 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
@@ -244,6 +244,34 @@
             case 0:
                 //鏍峰搧
                 insProducts = insSampleMapper.getInsProduct1(id, laboratory);
+                if (insProducts.size()==0){
+                    insProducts = insSampleMapper.getIns2Product1(id, laboratory);
+                }
+                break;
+            case 1:
+                //鍏夌氦甯�
+                break;
+            case 2:
+                //鍏夌氦
+                break;
+            case 3:
+                //濂楃
+                break;
+        }
+        Set<Integer> set = new HashSet<>();
+        Map<Integer, String> map2 = new HashMap<>();
+        if (BeanUtil.isEmpty(insProducts)) return null;
+        getTemplateThing(set, map2, insProducts);
+        return insProducts;
+    }
+
+    @Override
+    public List<InsProduct> getInsProduct2(Integer id, Integer type, String laboratory, HttpServletRequest request,Integer num) {
+        List<InsProduct> insProducts = new ArrayList<>();
+        switch (type) {
+            case 0:
+                //鏍峰搧
+                insProducts = insSampleMapper.get2InsProduct1(id, laboratory,num);
                 break;
             case 1:
                 //鍏夌氦甯�
@@ -515,20 +543,13 @@
     public int deleteInsContext(InsProductResultVo insProductResultVo) {
         return insProductResult2Mapper.delete(Wrappers.<InsProductResult2>lambdaQuery()
                 .eq(InsProductResult2::getFrequency, insProductResultVo.getFrequency())
+                .eq(InsProductResult2::getNum, insProductResultVo.getNum())
                 .in(InsProductResult2::getInsProductId, insProductResultVo.getProductIds()));
     }
 
-    @Override
-    public int deleteInsContext2(String frequency, Integer productId, String often) {
-        return insProductResult2Mapper.delete(Wrappers.<InsProductResult2>lambdaQuery()
-                .eq(InsProductResult2::getFrequency, frequency)
-                .eq(InsProductResult2::getInsProductId, productId)
-                .eq(InsProductResult2::getOften, often));
-    }
-
 
     @Override
-    public void saveInsContext(Map<String, Object> insContext) {
+    public void saveInsContext(Map<String, Object> insContext,Integer num) {
         Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
         CompletableFuture.supplyAsync(() -> {
             insContext.forEach((k, v) -> {
@@ -544,6 +565,7 @@
                     result = results.get(0);
                 }
                 result.setInsProductId(Integer.parseInt(k));
+                result.setNum(num);
                 //妫�楠屽��
                 if (jo.get("insValue") != null) {
                     JSONArray jsonArray = JSON.parseArray(JSON.toJSONString(jo.get("insValue")));
@@ -744,23 +766,30 @@
     //鐢佃矾璇曢獙鐨勪繚瀛樻楠屽唴瀹�
     @Override
     public List<Integer> saveInsContext2(InsProductResultDto insProductResultDtos) {
-        if (ObjectUtils.isEmpty(insProductResultDtos.getFrequency())){
+        if (ObjectUtils.isEmpty(insProductResultDtos.getFrequency())) {
             throw new ErrorException("棰戠巼涓嶈兘涓虹┖");
         }
         Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
         //鏌ヨ妫�楠屽崟淇℃伅
         InsOrder insOrder = insOrderMapper.selectById(insProductResultDtos.getOrderId());
+        InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
+                .eq(InsOrderState::getInsOrderId, insProductResultDtos.getOrderId())
+                .eq(InsOrderState::getLaboratory, insProductResultDtos.getSonLaboratory())
+                .orderByDesc(InsOrderState::getId)
+                .last("LIMIT 1"));// 纭繚鍙彇涓�鏉¤褰�
         //鏌ヨ鏍峰搧淇℃伅
         InsSample insSample = insSampleMapper.selectById(insProductResultDtos.getSampleId());
         List<Integer> list = new ArrayList<>();
         /*鏂板妫�楠岄」鐩楠屽�艰褰曡〃(閲囧彇鍏堝垹鍚庡)*/
         insProductResult2Mapper.delete(Wrappers.<InsProductResult2>lambdaQuery()
                 .in(InsProductResult2::getInsProductId, insProductResultDtos.getInsProductResult2s().stream().map(InsProductResult2::getInsProductId).distinct().collect(Collectors.toList()))
+                .eq(InsProductResult2::getNum, orderState.getNum())
                 .eq(InsProductResult2::getFrequency, insProductResultDtos.getFrequency()));
         for (InsProductResult2 insProductResult2 : insProductResultDtos.getInsProductResult2s()) {
             InsProduct insProduct = new InsProduct();
             insProduct.setId(insProductResult2.getInsProductId());//椤圭洰id
             InsProductResult2 result2 = new InsProductResult2();
+            result2.setNum(orderState.getNum());
             result2.setInsProductId(insProductResult2.getInsProductId());
             //棰戠巼
             result2.setFrequency(insProductResultDtos.getFrequency());
@@ -818,8 +847,8 @@
                                         ressult = 0; // 涓嶅悎鏍�
                                         break;
                                     }
-                                }catch (Exception e) {
-                                }finally {
+                                } catch (Exception e) {
+                                } finally {
                                     continue;
                                 }
 
@@ -1036,7 +1065,7 @@
         /*type=0  鍐嶆璇曢獙; type=1 缁х画璇曢獙 ; type=2 缁撴潫璇曢獙*/
         switch (type) {
             case 0:
-                /*鍐嶆璇曢獙:璇ュ崟瀛愰��鍥炲埌妫�楠岀姸鎬�(鎺掑簭鏀规垚褰撳墠鐨勬渶鍚�)锛�*/
+                /*鍐嶆璇曢獙:璇ュ崟瀛愰��鍥炲埌妫�楠岀姸鎬�(鎺掑簭鏀规垚褰撳墠鐨勬渶鍚�),娆℃暟閫掑(淇濈暀浠ュ墠鐨勬暟鎹�)锛�*/
                 //鏇存柊鍘熸潵鐨勬楠屼换鍔�
                 // 鏌ヨ鏍规嵁 id 鍊掑簭鎺掑垪鐨勭涓�鏉¤褰�
                 InsOrderState record = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
@@ -1052,6 +1081,7 @@
                             .set(InsOrderState::getInsState, 4)
                             .set(InsOrderState::getVerifyTell, tell)
                             .set(InsOrderState::getVerifyUser, userId)
+                            .set(InsOrderState::getNum, record.getNum() + 1)//娆℃暟鍔�1
                             .set(InsOrderState::getCreateTime, LocalDateTime.now()));
                 }
                 break;
@@ -1110,6 +1140,7 @@
                     insOrderState.setInsOrderId(orderId);
                     insOrderState.setLaboratory(minElement);
                     insOrderState.setInsState(0);
+                    insOrderState.setNum(1);//鍒濆鏄涓�娆�
                     insOrderStateMapper.insert(insOrderState);
                 } else {
                     //濡傛灉缁х画璇曢獙娌℃湁鍏朵粬绔欑偣鐨勬楠屼换鍔¢偅灏辩粨鏉熻瘯楠�
@@ -1125,629 +1156,9 @@
                         .set(InsOrderState::getInsState, 5)
                         .set(InsOrderState::getVerifyTell, tell)
                         .set(InsOrderState::getVerifyUser, userId));
-                /*鐢熸垚鎶ュ憡*/
-                generateReport(orderId);
                 break;
         }
         return 1;
-    }
-
-    //鐢熸垚鎶ュ憡
-    private void generateReport(Integer orderId) {
-        LocalDateTime now = LocalDateTime.now();
-        InsOrder insOrder = insOrderMapper.selectById(orderId);
-        Map<String, String> user = insProductMapper.selectUserById(insOrder.getUserId());
-        //samples鏄繃婊ゆ帀娌℃湁妫�楠岄」鐩殑鏍峰搧
-        List<SampleProductDto> samples = insSampleMapper.selectSampleProductListByOrderId(orderId);
-        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);
-        String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
-        AtomicReference<String> resultCh = new AtomicReference<>("");
-        AtomicReference<String> resultEn = new AtomicReference<>("");
-        /*鍩虹鎶ュ憡(7鍒�)*/
-        samples.forEach(a -> {
-            Set<Integer> set = new HashSet<>();
-            Map<Integer, String> map2 = new HashMap<>();
-            Long productCount = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsSampleId, a.getId()));
-            productSize.set(productSize.get() + Integer.parseInt(productCount + ""));
-            models.add(a.getModel());
-            standardMethod.add(baseMapper.getStandardMethodCode(a.getStandardMethodListId()));
-            getTemplateThing(set, map2, a.getInsProduct());
-            for (InsProduct b : a.getInsProduct()) {
-                if (b.getInsProductResult() != null) {
-                    List<JSONObject> jsonObjects = JSON.parseArray(b.getInsProductResult().getEquipValue(), JSONObject.class);
-                    for (JSONObject jsonObject : jsonObjects) {
-                        if (!"".equals(jsonObject.get("v") + "")) {
-                            deviceSet.add(jsonObject.get("v") + "");
-                        }
-                    }
-                }
-            }
-            AtomicInteger index = new AtomicInteger();
-            Set<String> itemSet = new HashSet<>();
-            List<RowRenderData> rows = new ArrayList<>();
-            //琛ㄦ牸鐨勮鏁�
-            for (int i = 0; i < 3 + a.getInsProduct().size(); i++) {
-                RowRenderData rowRenderData = new RowRenderData();
-                RowStyle rowStyle = new RowStyle();
-                rowStyle.setHeight(40);
-                rowRenderData.setRowStyle(rowStyle);
-                List<CellRenderData> cells = new ArrayList<>();
-                if (i >= 2 && i < 2 + a.getInsProduct().size()) {
-                    if (itemSet.add(a.getInsProduct().get(i - 2).getInspectionItem())) {
-                        index.getAndIncrement();
-                    }
-                }
-                //鍒楁暟
-                for (int j = 0; j < 7; j++) {
-                    CellRenderData cellRenderData = new CellRenderData();
-                    CellStyle cellStyle = new CellStyle();
-                    cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
-                    cellRenderData.setCellStyle(cellStyle);
-                    List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
-                    ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
-                    ParagraphStyle paragraphStyle = new ParagraphStyle();
-                    paragraphStyle.setAlign(ParagraphAlignment.CENTER);
-                    paragraphRenderData.setParagraphStyle(paragraphStyle);
-                    List<RenderData> renderData = new ArrayList<>();
-                    TextRenderData textRenderData = new TextRenderData();
-                    Style style = new Style();
-                    style.setFontFamily("瀹嬩綋");
-                    style.setColor("000000");
-                    textRenderData.setStyle(style);
-                    if (i == 0) {
-                        //绗竴琛�
-                        if (j == 0 || j == 1) {
-                            //绗竴鍒楀拰绗簩鍒�
-                            textRenderData.setText("鏍峰搧缂栧彿@Sample number鈭�1");
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        } else if (j == 2 || j == 3) {
-                            //绗笁鍒楀拰绗洓鍒�
-                            textRenderData.setText(a.getSampleCode() + "鈭�2");
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        } else if (j == 4) {
-                            //绗簲鍒�
-                            textRenderData.setText("瑙勬牸鍨嬪彿@Type");
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        } else {
-                            //绗叚鍒楀拰绗竷鍒�
-                            textRenderData.setText(a.getModel() + "鈭�3");
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        }
-                    } else if (i == 1) {
-                        //绗簩琛�
-                        if (j == 0) {
-                            //绗竴鍒�
-                            textRenderData.setText("搴忓彿@No.");
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        } else if (j == 1 || j == 2) {
-                            //绗簩鍒楀拰绗笁鍒�
-                            textRenderData.setText("妫�娴嬮」鐩瓳Testing item鈭�4");
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        } else if (j == 3) {
-                            //绗洓鍒�
-                            textRenderData.setText("鍗曚綅@Unit");
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        } else if (j == 4) {
-                            //绗簲鍒�
-                            textRenderData.setText("鏍囧噯瑕佹眰@Requirement");
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        } else if (j == 5) {
-                            //绗叚鍒�
-                            textRenderData.setText("妫�楠岀粨鏋淍Test result");
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        } else {
-                            //绗竷鍒�
-                            textRenderData.setText("缁撹@Conclusion");
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        }
-                    } else if (i == 2 + a.getInsProduct().size()) {
-                        //鏈�鍚庝竴琛�
-                        if (j == 0 || j == 1) {
-                            //绗竴鍒楀拰绗簩鍒�
-                            textRenderData.setText("澶囨敞鈭�5");
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        } else {
-                            //鍏朵綑鍒�
-                            textRenderData.setText("鈥溾垰鈥濊〃绀洪」鐩悎鏍硷紝鈥溍椻�濊〃绀洪」鐩笉鍚堟牸銆侤鈥溾垰鈥� indicates test item is qualified,鈥溍椻�� indicates test item is not qualified 鈭�6");
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        }
-                    } else {
-                        //鍏朵綑琛�
-                        if (j == 0) {
-                            //绗竴鍒�
-                            textRenderData.setText(index + "鈭�2" + index);
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        } else if (j == 1) {
-                            //绗簩鍒�
-                            if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemSubclass())) {
-                                if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemEn())) {
-                                    textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "@" + a.getInsProduct().get(i - 2).getInspectionItemEn() + "鈭�3" + index);
-                                } else {
-                                    textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "鈭�3" + index);
-                                }
-                            } else {
-                                if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemEn())) {
-                                    textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "@" + a.getInsProduct().get(i - 2).getInspectionItemEn() + "鈭�3" + index);
-                                } else {
-                                    textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "鈭�3" + index);
-                                }
-                            }
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        } else if (j == 2) {
-                            //绗笁鍒�
-                            if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemSubclass())) {
-                                if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemSubclassEn())) {
-                                    textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItemSubclass() + "@" + a.getInsProduct().get(i - 2).getInspectionItemSubclassEn());
-                                } else {
-                                    textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItemSubclass());
-                                }
-                            } else {
-                                if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemEn())) {
-                                    textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "@" + a.getInsProduct().get(i - 2).getInspectionItemEn() + "鈭�3" + index);
-                                } else {
-                                    textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "鈭�3" + index);
-                                }
-                            }
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        } else if (j == 3) {
-                            //绗洓鍒�
-                            textRenderData.setText(ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getUnit()) ? a.getInsProduct().get(i - 2).getUnit() : "");
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        } else if (j == 4) {
-                            //绗簲鍒�
-                            textRenderData.setText(a.getInsProduct().get(i - 2).getTell());
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        } else if (j == 5) {
-                            //绗叚鍒�
-                            textRenderData.setText(a.getInsProduct().get(i - 2).getLastValue());
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        } else {
-                            //绗竷鍒�
-                            if (ObjectUtils.isEmpty(a.getInsProduct().get(i - 2).getInsResult())) {
-                                textRenderData.setText("-");
-                            } else if (a.getInsProduct().get(i - 2).getInsResult() == 1) {
-                                textRenderData.setText("鈭�");
-                            } else if (a.getInsProduct().get(i - 2).getInsResult() == 0) {
-                                textRenderData.setText("脳");
-                            } else {
-                                textRenderData.setText("-");
-                            }
-                            renderData.add(textRenderData);
-                            paragraphRenderData.setContents(renderData);
-                            paragraphRenderDataList.add(paragraphRenderData);
-                            cellRenderData.setParagraphs(paragraphRenderDataList);
-                            cells.add(cellRenderData);
-                        }
-                    }
-                }
-                rowRenderData.setCells(cells);
-                if (rowRenderData.getCells().size() != 0) {
-                    rows.add(rowRenderData);
-                }
-            }
-            TableRenderData tableRenderData = new TableRenderData();
-            tableRenderData.setRows(rows);
-
-            List<TableRenderData> tables1 = new ArrayList<>();
-            tableRenderData.setRows(new ArrayList<>());
-            int totalHeight = 0;
-            int pageHeightLimit = 450; // 鍋囪姣忛〉鐨勯珮搴﹂檺鍒朵负500鍗曚綅
-            int rowHeight = 0;
-            List<RowRenderData> firstTwoRows = new ArrayList<>(); // 淇濆瓨鍓嶄袱琛屼互渚垮鍒跺埌鏂拌〃鏍�
-            List<RowRenderData> endRows = new ArrayList<>(); // 淇濆瓨鏈�鍚庝竴琛屽娉ㄤ互渚垮鍒跺埌鏂拌〃鏍�
-            // 淇濆瓨鍓嶄袱琛屼互渚垮鍒跺埌鏂拌〃鏍�
-            if (rows.size() >= 3) {
-                firstTwoRows.add(rows.get(0));
-                firstTwoRows.add(rows.get(1));
-                endRows.add(rows.get(rows.size() - 1));
-            }
-            for (RowRenderData row : rows) {
-                rowHeight = calculateRowHeight(row); // 鑷畾涔夋柟娉曡绠楄楂�
-                if (totalHeight + rowHeight > pageHeightLimit) {
-                    tableRenderData.getRows().addAll(endRows);
-                    // 鍒涘缓鏂拌〃鏍煎苟澶嶅埗鍓嶄袱琛�
-                    TableRenderData newTableRenderData = new TableRenderData();
-                    newTableRenderData.setRows(new ArrayList<>(firstTwoRows));
-                    //璁剧疆鏍峰紡
-                    TableStyle tableStyle = new TableStyle();
-                    tableStyle.setColWidths(new int[]{650, 1600, 2000, 750, 2800, 1100, 1100});
-                    tableStyle.setWidth("10000");
-                    tableStyle.setAlign(TableRowAlign.CENTER);
-                    BorderStyle borderStyle = new BorderStyle();
-                    borderStyle.setColor("000000");
-                    borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
-                    borderStyle.setSize(14);
-                    tableStyle.setLeftBorder(borderStyle);
-                    tableStyle.setTopBorder(borderStyle);
-                    tableStyle.setRightBorder(borderStyle);
-                    tableStyle.setBottomBorder(borderStyle);
-                    tableRenderData.setTableStyle(tableStyle);
-                    newTableRenderData.setTableStyle(tableStyle);
-                    tables1.add(tableRenderData);
-                    tableRenderData = newTableRenderData;
-                    totalHeight = 0;
-                }
-                totalHeight += rowHeight;
-                tableRenderData.getRows().add(row);
-            }
-            if (!tableRenderData.getRows().isEmpty()) {
-                //璁剧疆鏍峰紡
-                TableStyle tableStyle = new TableStyle();
-                tableStyle.setColWidths(new int[]{650, 1600, 2000, 750, 2800, 1100, 1100});
-                tableStyle.setWidth("10000");
-                tableStyle.setAlign(TableRowAlign.CENTER);
-                BorderStyle borderStyle = new BorderStyle();
-                borderStyle.setColor("000000");
-                borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
-                borderStyle.setSize(14);
-                tableStyle.setLeftBorder(borderStyle);
-                tableStyle.setTopBorder(borderStyle);
-                tableStyle.setRightBorder(borderStyle);
-                tableStyle.setBottomBorder(borderStyle);
-                tableRenderData.setTableStyle(tableStyle);
-                tables1.add(tableRenderData);
-            }
-            tables1.forEach(table -> {
-                Map<String, Object> tableMap = new HashMap<>();
-                tableMap.put("table", table);
-                tableMap.put("report", insReport);
-                tables.add(tableMap);
-            });
-        });
-
-        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;
-        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());
-        if (!resultCh.get().equals("")) {
-            resultCh.set("渚濇嵁濮旀墭瑕佹眰锛�" + resultCh.get().replaceFirst("銆�", "") + "绛夋墍妫�椤圭洰涓嶇鍚堣姹傦紝鍏朵綑鎵�妫�椤圭洰鍧囩鍚堣姹傘��");
-            resultEn.set("According to commissioned requirements," + resultEn.get().replaceFirst("銆�", "") + " these inspected items do not meet the requirements, all other inspected items meet the requirements.");
-        } else {
-            resultCh.set("渚濇嵁濮旀墭瑕佹眰锛屾墍妫�椤圭洰鍧囩鍚堣姹傘��");
-            resultEn.set("According to commissioned requirements, all the tested items meet the requirements.");
-        }
-
-        /*鑾峰彇闄勪欢鍥剧墖绫诲瀷*/
-        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;
-        XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
-                new HashMap<String, Object>() {{
-                    put("order", insOrder);
-                    put("report", insReport);
-                    put("environment", finalEnvironment);
-                    put("custom", custom);
-                    put("sampleSize", samples.size());
-                    put("tables", tables);
-                    put("tableSize", tables.size() + 1);
-                    put("standardMethod", (standardMethod2.toString().equals("null") ? "" : standardMethod2));
-                    put("deviceList", finalDeviceList);
-                    put("twoCode", Pictures.ofLocal(codePath).create());
-                    put("models", finalModelStr.replace(",", ""));
-                    put("productSize", productSize);
-                    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());
-                    put("resultCh", resultCh.get());
-                    put("resultEn", resultEn.get());
-                }});
-        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(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(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) {
@@ -1777,7 +1188,13 @@
 
     @Override
     public int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode) {
-        List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId).select(InsSample::getId));
+        List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
+                .eq(InsSample::getInsOrderId, orderId).select(InsSample::getId));
+        InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
+                .eq(InsOrderState::getInsOrderId, orderId)
+                .eq(InsOrderState::getLaboratory, laboratory)
+                .orderByDesc(InsOrderState::getId)
+                .last("LIMIT 1"));// 纭繚鍙彇涓�鏉¤褰�
         List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList());
         List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                 .in(InsProduct::getInsSampleId, ids)
@@ -1804,6 +1221,7 @@
                 //鐢佃矾璇曢獙鐨勬楠岄」鐩�,闇�瑕佸湪鎻愪氦鐨勬椂鍊欏啀鍘昏祴鍊煎悎鏍间笌涓嶅悎鏍�
                 if (product.getInspectionItem().equals("鐢佃矾璇曢獙")) {
                     List<Integer> collect = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery()
+                            .eq(InsProductResult2::getNum, orderState.getNum())
                             .eq(InsProductResult2::getInsProductId, product.getId())).stream().map(InsProductResult2::getResult).distinct().collect(Collectors.toList());
                     if (collect.contains(0)) {
                         product.setInsResult(0);//涓嶅悎鏍�
@@ -1871,6 +1289,7 @@
             List<Integer> ips = insProducts.stream().map(InsProduct::getId).distinct().collect(Collectors.toList());
             for (Integer ip : ips) {
                 List<InsProductResult> insProductResults = insProductResultMapper.selectList(Wrappers.<InsProductResult>lambdaQuery()
+                        .eq(InsProductResult::getNum, orderState.getNum())
                         .eq(InsProductResult::getInsProductId, ip));
                 if (insProductResults.size() > 1) {
                     for (int i = 1; i < insProductResults.size(); i++) {
@@ -1884,19 +1303,6 @@
         String key = "frequency" + ":" + entrustCode + ":*";
         RedisUtil.delsLike(key);
         return 1;
-    }
-
-    // 鑾峰彇涓や釜localDateTime鐨勬瘡涓�澶�
-    public static List<LocalDateTime> getLocalDateTimesBetween(LocalDateTime start, LocalDateTime end) {
-        List<LocalDateTime> localDateTimes = new ArrayList<>();
-        LocalDate currentDate = start.toLocalDate();
-        LocalDateTime currentLocalDateTime = start;
-        while (!currentDate.isAfter(end.toLocalDate())) {
-            localDateTimes.add(currentLocalDateTime);
-            currentLocalDateTime = currentLocalDateTime.plusDays(1);
-            currentDate = currentDate.plusDays(1);
-        }
-        return localDateTimes;
     }
 
     public static String getWeek(String dayStr) {
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
index bafa574..8b7e91f 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
@@ -144,6 +144,7 @@
         insOrderState.setInsOrderId(orderId);
         insOrderState.setLaboratory(sonLaboratory);
         insOrderState.setInsState(0);
+        insOrderState.setNum(1);//鍒濆鏄涓�娆�
         insOrderStateMapper.insert(insOrderState);
         //杩欓噷鏄湪缁欏垎閰嶇殑鎸囧畾鐨勪汉鍜岃瘯楠屽涓嬪彂妫�楠屼汉
         if (userId != null) {
@@ -381,6 +382,9 @@
         Map<String, Object> map = new HashMap<>();
         InsOrder insOrder = insOrderMapper.selectById(id);
         List<SampleProductDto> list = insSampleMapper.selectSampleProductListByOrderId2(id);
+        if (list.size()==0){
+            list = insSampleMapper.selectSampleProductListByOrder2Id2(id);
+        }
         map.put("insOrder", insOrder);
         map.put("sampleProduct", list);
         return map;
@@ -393,20 +397,10 @@
         insOrder.setExamineTime(LocalDateTime.now());
         if (insOrder.getState() == 1) {
             //瀹℃牳閫氳繃鎵嶄細鐢熸垚濮旀墭缂栧彿
-            String code = baseMapper.selLaboratoryCode(insOrder.getLaboratory());
-            if (StringUtils.isEmpty(code)) {
-                code = "";
-            }
             Custom custom = customMapper.selectById(order.getCompanyId());
             System.out.println("=============" + custom.getCompany());
             System.out.println("-------------" + order.getCompany());
-            String code2 = custom.getCode2();
-            if (!custom.getCompany().equals(order.getCompany())) {
-                Custom one = customMapper.selectOne(Wrappers.<Custom>lambdaQuery().eq(Custom::getCompany, order.getCompany()));
-                insOrder.setCompanyId(one.getId());
-                code2 = one.getCode2();
-            }
-            insOrder.setEntrustCode(giveCode.giveCode2("JCZX/" + code + "-" + code2 + "-", insOrder.getCompanyId(), insOrder.getLaboratory(), "ins_order", "", "yyMM"));
+            insOrder.setEntrustCode(giveCode.giveCode2("TXJC-", insOrder.getCompanyId(), insOrder.getLaboratory(), "ins_order", "", "yyMMdd"));
             //绯荤粺鏌ヨ绔欑偣浠诲姟鍒嗗竷鎯呭喌,灏嗘楠屼换鍔′笅鍙戣嚦鏈�灏戠殑绔欏彴
             List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
                     .eq(InsSample::getInsOrderId, insOrder.getId()).select(InsSample::getId));
@@ -493,6 +487,9 @@
         Map<String, Object> map = new HashMap<>();
         InsOrder insOrder = insOrderMapper.selectById2(id);
         List<SampleProductDto> list = insSampleMapper.getInsOrderAndSample(id, laboratory);
+        if (list.size()==0){
+            list=insSampleMapper.getInsOrderAndSample2(id, laboratory);
+        }
         for (SampleProductDto sampleProductDto : list) {
             List<Integer> ids = sampleProductDto.getInsProduct().stream().map(InsProduct::getId).collect(Collectors.toList());
             List<InsProductUser> insProductUsers = insProductUserMapper.selectList(Wrappers.<InsProductUser>lambdaQuery()
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 abf4187..3a719a9 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
@@ -1,12 +1,23 @@
 package com.yuanchu.mom.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.aspose.words.*;
+import com.aspose.words.Document;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.deepoove.poi.XWPFTemplate;
-import com.deepoove.poi.data.Pictures;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.config.ConfigureBuilder;
+import com.deepoove.poi.data.*;
+import com.deepoove.poi.data.style.*;
+import com.deepoove.poi.data.style.Style;
+import com.deepoove.poi.util.TableTools;
 import com.itextpdf.text.BadElementException;
 import com.itextpdf.text.DocumentException;
 import com.itextpdf.text.pdf.PdfContentByte;
@@ -15,16 +26,18 @@
 import com.yuanchu.mom.common.GetLook;
 import com.yuanchu.mom.common.PrintChina;
 import com.yuanchu.mom.dto.ReportPageDto;
+import com.yuanchu.mom.dto.SampleProductDto;
 import com.yuanchu.mom.exception.ErrorException;
-import com.yuanchu.mom.mapper.InsOrderMapper;
-import com.yuanchu.mom.mapper.InsReportMapper;
-import com.yuanchu.mom.mapper.UserMapper;
-import com.yuanchu.mom.pojo.InsOrder;
-import com.yuanchu.mom.pojo.InsReport;
-import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.mapper.*;
+import com.yuanchu.mom.pojo.*;
 import com.yuanchu.mom.service.InsReportService;
+import com.yuanchu.mom.service.StandardTemplateService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.utils.MatrixToImageWriter;
 import com.yuanchu.mom.utils.QueryWrappers;
 import com.yuanchu.mom.vo.Result;
+import org.apache.commons.io.IOUtils;
+import org.apache.poi.xwpf.usermodel.*;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.stereotype.Service;
@@ -44,6 +57,8 @@
 import java.util.*;
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
@@ -73,8 +88,32 @@
     @Value("${file.path}")
     private String imgUrl;
 
+    @Value("${twoCode}")
+    private String twoCode;
+
     @Resource
     private InsOrderMapper insOrderMapper;
+
+    @Resource
+    private InsOrderStateMapper insOrderStateMapper;
+
+    @Resource
+    private InsProductMapper insProductMapper;
+
+    @Resource
+    private InsSampleMapper insSampleMapper;
+
+    @Resource
+    private InsSampleUserMapper insSampleUserMapper;
+
+    @Resource
+    private CustomMapper customMapper;
+
+    @Resource
+    private InsOrderFileMapper insOrderFileMapper;
+
+    @Resource
+    private StandardTemplateService standardTemplateService;
 
     @Override
     public Map<String, Object> pageInsReport(Page page, ReportPageDto reportPageDto) {
@@ -94,7 +133,7 @@
                 laboratory = departLims;
             }
         }
-        map.put("body", insReportMapper.pageInsReport(page, QueryWrappers.queryWrappers(reportPageDto),laboratory));
+        map.put("body", insReportMapper.pageInsReport(page, QueryWrappers.queryWrappers(reportPageDto), laboratory));
         return map;
     }
 
@@ -171,7 +210,7 @@
     //鎵瑰噯
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int ratifyReport(Integer id, Integer isRatify, String ratifyTell,String sealUrl) {
+    public int ratifyReport(Integer id, Integer isRatify, String ratifyTell, String sealUrl) {
         InsReport insReport = insReportMapper.selectById(id);
         insReport.setIsRatify(isRatify);
         if (ObjectUtils.isNotEmpty(ratifyTell)) {
@@ -303,8 +342,7 @@
                         // 澶嶅埗鏂囦欢鍒版寚瀹氳矾寰�
                         Files.copy(f.toPath(), new File(urlString).toPath(), StandardCopyOption.REPLACE_EXISTING);
                         inReport("/word/" + pathName, insReport.getId());
-                    }
-                    catch (IOException e) {
+                    } catch (IOException e) {
                         throw new ErrorException("鏂囦欢涓婁紶澶辫触");
                     }
                 }
@@ -319,6 +357,28 @@
             if (unzipDir.exists()) {
                 deleteDirectory(unzipDir); // 鍒犻櫎鏃х殑涓存椂鏂囦欢澶�
             }
+        }
+        return 0;
+    }
+
+    //鏄惁闇�瑕佺敓鎴愭姤鍛�: 0涓嶉渶瑕�;1闇�瑕�
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int isReport(Integer id, Integer state) {
+        //鍏堝垽鏂璁㈠崟鏄惁鍙互鍘荤敓浜ф姤鍛�
+        Long count = insOrderStateMapper.selectCount(Wrappers.<InsOrderState>lambdaQuery().eq(InsOrderState::getInsOrderId, id).eq(InsOrderState::getInsState, 5));
+        if (count > 0) {
+            if (state == 1) {
+                generateReport(id);
+            } else {
+                //缁撴潫璁㈠崟
+                InsOrder insOrder = new InsOrder();
+                insOrder.setId(id);
+                insOrder.setState(4);
+                insOrderMapper.updateById(insOrder);
+            }
+        } else {
+            throw new ErrorException("璇ヨ鍗曡繕鏈粨鏉熻瘯楠�,鏃犳硶鐢熶骇鎶ュ憡!");
         }
         return 0;
     }
@@ -425,6 +485,19 @@
             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);
 
             //娣诲姞楠戠紳绔�
@@ -503,6 +576,369 @@
         }
         stamp.close();
     }
+
+    //鐢熸垚鎶ュ憡
+    private void generateReport(Integer orderId) {
+        LocalDateTime now = LocalDateTime.now();
+        InsOrder insOrder = insOrderMapper.selectById(orderId);
+        //濮旀墭閮ㄩ棬 departLims
+        String departLims = userMapper.selectDepartLims(insOrder.getPrepareUser());
+        //samples鏄繃婊ゆ帀娌℃湁妫�楠岄」鐩殑鏍峰搧
+        List<SampleProductDto> samples = insSampleMapper.selectSampleProductListByOrderId(orderId);
+        if (samples.size()==0){
+            samples=insSampleMapper.selectSampleProductListByOrder2Id(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.add(insOrderMapper.getStandardMethodCode(s.getStandardMethodListId()));
+            //鎬绘暟
+            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 + ""));
+            for (InsProduct b : s.getInsProduct()) {
+                if (b.getInsProductResult() != null) {
+                    List<JSONObject> jsonObjects = JSON.parseArray(b.getInsProductResult().getEquipValue(), JSONObject.class);
+                    for (JSONObject jsonObject : jsonObjects) {
+                        if (!"".equals(jsonObject.get("v") + "")) {
+                            deviceSet.add(jsonObject.get("v") + "");
+                        }
+                    }
+                }
+                if (b.getInsProductResult2() != null) {
+                    for (InsProductResult2 jsonObject : b.getInsProductResult2()) {
+                        if (jsonObject.getEquipValue() != null) {
+                            deviceSet.add(jsonObject.getEquipValue());
+                        }
+                    }
+                }
+            }
+        });
+        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()));
+            }
+        }
+    }
 }
 
 
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java
index a7bbee6..562ad63 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java
@@ -52,5 +52,6 @@
 
     private Integer sort;
     private Integer version;
+    private Integer num1;
 
 }
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResultVo.java b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResultVo.java
index 68711b1..1711e37 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResultVo.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResultVo.java
@@ -8,6 +8,9 @@
 //鍒犻櫎棰戞
 public class InsProductResultVo {
 
+    //娆℃暟
+    private Integer num;
+
     //棰戞
     private String frequency;
 
diff --git a/inspect-server/src/main/resources/mapper/InsSampleMapper.xml b/inspect-server/src/main/resources/mapper/InsSampleMapper.xml
index 6c68844..3a94afe 100644
--- a/inspect-server/src/main/resources/mapper/InsSampleMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsSampleMapper.xml
@@ -27,7 +27,7 @@
     <select id="findInsSampleAndOrder" resultType="com.yuanchu.mom.vo.InsOrderPlanVO">
         select * from(select * from(
         SELECT
-        a.*,ios.ins_state,ios.verify_tell,verify_user,ios.id orderStateId,ios.create_time,ios.sort,sort_time,version
+        a.*,ios.ins_state,ios.verify_tell,verify_user,ios.id orderStateId,ios.create_time,ios.sort,sort_time,version,ios.num num1
         FROM
         (
         SELECT
@@ -161,158 +161,21 @@
 
     <select id="selectSampleProductListByOrderId" resultMap="sampleDto">
         select isa.*,
-        ip.id ip_id,
-        inspection_item,
-        inspection_item_en,
-        inspection_item_class,
-        inspection_item_class_en,
-        inspection_item_subclass,
-        inspection_item_subclass_en,
-        ip.factory ip_factory,
-        ip.laboratory ip_laboratory,
-        ip.sample_type ip_sample_type,
-        ip.sample ip_sample,
-        ip.model ip_model,
-        son_laboratory,
-        ip.unit ip_unit,
-        price,
-        man_hour,
-        man_hour_group,
-        inspection_item_type,
-        inspection_value_type,
-        device_group,
-        checkout_number,
-        section,
-        value_type,
-        method,
-        man_day,
-        bsm,
-        ask,
-        tell,
-        `last_value`,
-        ip.ins_result ip_ins_result,
-        state,
-        ins_sample_id,
-        ip.create_user ip_create_user,
-        ip.update_user ip_update_user,
-        ip.create_time ip_create_time,
-        ip.update_time ip_update_time,
-        template_id,
-        ipr.ins_value,
-        ipr.com_value,
-        ipr.equip_value,
-        ipr2.frequency,
-        ipr2.often,
-        ipr2.port,
-        ipr2.angle,
-        ipr2.value,
-        ipr2.result,
-        ipr2.equip_value equipValue2,
-        ipr2.equip_name equipName2,
-        ip.method_s
-        from ins_sample isa
-        left join ins_product ip on isa.id = ip.ins_sample_id
-        left join ins_product_result ipr on ip.id = ipr.ins_product_id
-        left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
-        where ins_order_id = #{id}
-        and state = 1
-        -- and ins_fiber_id is null
-        -- and ins_fibers_id is null
-        and <!--isa.sample_code NOT REGEXP '/'-->
-        isa.id in(select id1 from (select is2.id id1 ,ip.id from ins_sample is2 left join ins_product ip on is2.id =
-        ip.ins_sample_id where ip.id is not null)s )
-        order by case when man_hour_group is NULL then 1
-        when man_hour_group ='' then 1 else 0 end,
-        CASE
-        WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴�
-        WHEN man_hour_group REGEXP '[0-9]+' THEN CAST(SUBSTRING(man_hour_group, 2)AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒�
-        ,id asc
-    </select>
-    <select id="getInsOrderAndSample" resultMap="sampleDto">
-        select isa.*,
-               ip.id          ip_id,
+               ios.num          num1,
+               ip.id            ip_id,
                inspection_item,
                inspection_item_en,
                inspection_item_class,
                inspection_item_class_en,
                inspection_item_subclass,
                inspection_item_subclass_en,
-               ip.factory     ip_factory,
-               ip.laboratory  ip_laboratory,
-               ip.sample_type ip_sample_type,
-               ip.sample      ip_sample,
-               ip.model       ip_model,
+               ip.factory       ip_factory,
+               ip.laboratory    ip_laboratory,
+               ip.sample_type   ip_sample_type,
+               ip.sample        ip_sample,
+               ip.model         ip_model,
                son_laboratory,
-               ip.unit        ip_unit,
-               price,
-               man_hour,
-               man_hour_group,
-               inspection_item_type,
-               inspection_value_type,
-               device_group,
-               checkout_number,
-               section,
-               value_type,
-               method,
-               man_day,
-               bsm,
-               ask,
-               `last_value`,
-               ip.ins_result  ip_ins_result,
-               state,
-               ins_sample_id,
-               ip.create_user ip_create_user,
-               ip.update_user ip_update_user,
-               ip.create_time ip_create_time,
-               ip.update_time ip_update_time,
-               template_id,
-               ipr.ins_value,
-               ipr.com_value,
-               ipr.equip_value,
-               ipr.equip_name,
-               ipr2.frequency,
-               ipr2.often,
-               ipr2.port,
-               ipr2.angle,
-               ipr2.value,
-               ipr2.result,
-               ipr2.equip_value equipValue2,
-               ipr2.equip_name equipName2,
-               ip.method_s,
-               ip.tell,
-               ip.dic,
-               ip.temperature,
-               ip.humidity
-        from ins_sample isa
-                 left join ins_product ip on isa.id = ip.ins_sample_id
-                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
-                 left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
-        where ins_order_id = #{id}
-          and state = 1
-          and ip.son_laboratory = #{laboratory}
-    </select>
-    <select id="getSampleEn" resultType="java.lang.String">
-        select name_en
-        from `center-lims`.product
-        where name = #{sample}
-        limit 1
-    </select>
-    <select id="selectSampleProductListByOrderId2" resultMap="sampleDto">
-        select isa.*,
-               ip.id          ip_id,
-               inspection_item,
-               inspection_item_en,
-               inspection_item_subclass,
-               inspection_item_subclass_en,
-               inspection_item_class,
-               inspection_item_class_en,
-               ip.factory     ip_factory,
-               ip.laboratory  ip_laboratory,
-               ip.sample_type ip_sample_type,
-               ip.sample      ip_sample,
-               ip.model       ip_model,
-               son_laboratory,
-               ip.unit        ip_unit,
+               ip.unit          ip_unit,
                price,
                man_hour,
                man_hour_group,
@@ -328,13 +191,13 @@
                ask,
                tell,
                `last_value`,
-               ip.ins_result  ip_ins_result,
+               ip.ins_result    ip_ins_result,
                state,
                ins_sample_id,
-               ip.create_user ip_create_user,
-               ip.update_user ip_update_user,
-               ip.create_time ip_create_time,
-               ip.update_time ip_update_time,
+               ip.create_user   ip_create_user,
+               ip.update_user   ip_update_user,
+               ip.create_time   ip_create_time,
+               ip.update_time   ip_update_time,
                template_id,
                ipr.ins_value,
                ipr.com_value,
@@ -346,13 +209,380 @@
                ipr2.value,
                ipr2.result,
                ipr2.equip_value equipValue2,
-               ipr2.equip_name equipName2,
+               ipr2.equip_name  equipName2,
                ip.method_s
         from ins_sample isa
+                 left join ins_order_state ios on isa.ins_order_id = ios.ins_order_id
                  left join ins_product ip on isa.id = ip.ins_sample_id
                  left join ins_product_result ipr on ip.id = ipr.ins_product_id
                  left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
-        where ins_order_id = #{id}
+        where isa.ins_order_id = #{id}
+          and state = 1
+          and ios.laboratory = #{laboratory}
+          and (ipr2.num = ios.num or ipr2.num is null)
+          and (ipr.num = ios.num or ipr.num is null)
+          and isa.id in (select id1
+                         from (select is2.id id1, ip.id
+                               from ins_sample is2
+                                        left join ins_product ip on is2.id =
+                                                                    ip.ins_sample_id
+                               where ip.id is not null) s)
+        order by case
+                     when man_hour_group is NULL then 1
+                     when man_hour_group = '' then 1
+                     else 0 end,
+                 CASE
+                     WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴�
+                     WHEN man_hour_group REGEXP '[0-9]+'
+                         THEN CAST(SUBSTRING(man_hour_group, 2) AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒�
+                , id asc
+    </select>
+    <select id="selectSampleProductListByOrder2Id" resultMap="sampleDto">
+        select isa.*,
+               ios.num          num1,
+               ip.id            ip_id,
+               inspection_item,
+               inspection_item_en,
+               inspection_item_class,
+               inspection_item_class_en,
+               inspection_item_subclass,
+               inspection_item_subclass_en,
+               ip.factory       ip_factory,
+               ip.laboratory    ip_laboratory,
+               ip.sample_type   ip_sample_type,
+               ip.sample        ip_sample,
+               ip.model         ip_model,
+               son_laboratory,
+               ip.unit          ip_unit,
+               price,
+               man_hour,
+               man_hour_group,
+               inspection_item_type,
+               inspection_value_type,
+               device_group,
+               checkout_number,
+               section,
+               value_type,
+               method,
+               man_day,
+               bsm,
+               ask,
+               tell,
+               `last_value`,
+               ip.ins_result    ip_ins_result,
+               state,
+               ins_sample_id,
+               ip.create_user   ip_create_user,
+               ip.update_user   ip_update_user,
+               ip.create_time   ip_create_time,
+               ip.update_time   ip_update_time,
+               template_id,
+               ipr.ins_value,
+               ipr.com_value,
+               ipr.equip_value,
+               ipr2.frequency,
+               ipr2.often,
+               ipr2.port,
+               ipr2.angle,
+               ipr2.value,
+               ipr2.result,
+               ipr2.equip_value equipValue2,
+               ipr2.equip_name  equipName2,
+               ip.method_s
+        from ins_sample isa
+                 left join ins_order_state ios on isa.ins_order_id = ios.ins_order_id
+                 left join ins_product ip on isa.id = ip.ins_sample_id
+                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
+                 left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
+        where isa.ins_order_id = #{id}
+          and state = 1
+          and ios.laboratory = #{laboratory}
+          and isa.id in (select id1
+                         from (select is2.id id1, ip.id
+                               from ins_sample is2
+                                        left join ins_product ip on is2.id =
+                                                                    ip.ins_sample_id
+                               where ip.id is not null) s)
+        order by case
+                     when man_hour_group is NULL then 1
+                     when man_hour_group = '' then 1
+                     else 0 end,
+                 CASE
+                     WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴�
+                     WHEN man_hour_group REGEXP '[0-9]+'
+                         THEN CAST(SUBSTRING(man_hour_group, 2) AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒�
+                , id asc
+    </select>
+    <select id="getInsOrderAndSample" resultMap="sampleDto">
+        select isa.*,
+               ios.num          num1,
+               ip.id            ip_id,
+               inspection_item,
+               inspection_item_en,
+               inspection_item_class,
+               inspection_item_class_en,
+               inspection_item_subclass,
+               inspection_item_subclass_en,
+               ip.factory       ip_factory,
+               ip.laboratory    ip_laboratory,
+               ip.sample_type   ip_sample_type,
+               ip.sample        ip_sample,
+               ip.model         ip_model,
+               son_laboratory,
+               ip.unit          ip_unit,
+               price,
+               man_hour,
+               man_hour_group,
+               inspection_item_type,
+               inspection_value_type,
+               device_group,
+               checkout_number,
+               section,
+               value_type,
+               method,
+               man_day,
+               bsm,
+               ask,
+               `last_value`,
+               ip.ins_result    ip_ins_result,
+               state,
+               ins_sample_id,
+               ip.create_user   ip_create_user,
+               ip.update_user   ip_update_user,
+               ip.create_time   ip_create_time,
+               ip.update_time   ip_update_time,
+               template_id,
+               ipr.ins_value,
+               ipr.com_value,
+               ipr.equip_value,
+               ipr.equip_name,
+               ipr2.frequency,
+               ipr2.often,
+               ipr2.port,
+               ipr2.angle,
+               ipr2.value,
+               ipr2.result,
+               ipr2.equip_value equipValue2,
+               ipr2.equip_name  equipName2,
+               ip.method_s,
+               ip.tell,
+               ip.dic,
+               ip.temperature,
+               ip.humidity
+        from ins_sample isa
+                 left join ins_order_state ios on isa.ins_order_id = ios.ins_order_id
+                 left join ins_product ip on isa.id = ip.ins_sample_id
+                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
+                 left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
+        where isa.ins_order_id = #{id}
+          and state = 1
+          and ip.son_laboratory = #{laboratory}
+          and ios.laboratory = #{laboratory}
+          and (ipr2.num = ios.num or ipr2.num is null)
+          and (ipr.num = ios.num or ipr.num is null)
+    </select>
+    <select id="getInsOrderAndSample2" resultMap="sampleDto">
+        select isa.*,
+               ios.num          num1,
+               ip.id            ip_id,
+               inspection_item,
+               inspection_item_en,
+               inspection_item_class,
+               inspection_item_class_en,
+               inspection_item_subclass,
+               inspection_item_subclass_en,
+               ip.factory       ip_factory,
+               ip.laboratory    ip_laboratory,
+               ip.sample_type   ip_sample_type,
+               ip.sample        ip_sample,
+               ip.model         ip_model,
+               son_laboratory,
+               ip.unit          ip_unit,
+               price,
+               man_hour,
+               man_hour_group,
+               inspection_item_type,
+               inspection_value_type,
+               device_group,
+               checkout_number,
+               section,
+               value_type,
+               method,
+               man_day,
+               bsm,
+               ask,
+               `last_value`,
+               ip.ins_result    ip_ins_result,
+               state,
+               ins_sample_id,
+               ip.create_user   ip_create_user,
+               ip.update_user   ip_update_user,
+               ip.create_time   ip_create_time,
+               ip.update_time   ip_update_time,
+               template_id,
+               ipr.ins_value,
+               ipr.com_value,
+               ipr.equip_value,
+               ipr.equip_name,
+               ipr2.frequency,
+               ipr2.often,
+               ipr2.port,
+               ipr2.angle,
+               ipr2.value,
+               ipr2.result,
+               ipr2.equip_value equipValue2,
+               ipr2.equip_name  equipName2,
+               ip.method_s,
+               ip.tell,
+               ip.dic,
+               ip.temperature,
+               ip.humidity
+        from ins_sample isa
+                 left join ins_order_state ios on isa.ins_order_id = ios.ins_order_id
+                 left join ins_product ip on isa.id = ip.ins_sample_id
+                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
+                 left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
+        where isa.ins_order_id = #{id}
+          and state = 1
+          and ip.son_laboratory = #{laboratory}
+          and ios.laboratory = #{laboratory}
+    </select>
+    <select id="getSampleEn" resultType="java.lang.String">
+        select name_en
+        from `center-lims`.product
+        where name = #{sample}
+        limit 1
+    </select>
+    <select id="selectSampleProductListByOrderId2" resultMap="sampleDto">
+        select isa.*,
+               ios.num          num1,
+               ip.id            ip_id,
+               inspection_item,
+               inspection_item_en,
+               inspection_item_subclass,
+               inspection_item_subclass_en,
+               inspection_item_class,
+               inspection_item_class_en,
+               ip.factory       ip_factory,
+               ip.laboratory    ip_laboratory,
+               ip.sample_type   ip_sample_type,
+               ip.sample        ip_sample,
+               ip.model         ip_model,
+               son_laboratory,
+               ip.unit          ip_unit,
+               price,
+               man_hour,
+               man_hour_group,
+               inspection_item_type,
+               inspection_value_type,
+               device_group,
+               checkout_number,
+               section,
+               value_type,
+               method,
+               man_day,
+               bsm,
+               ask,
+               tell,
+               `last_value`,
+               ip.ins_result    ip_ins_result,
+               state,
+               ins_sample_id,
+               ip.create_user   ip_create_user,
+               ip.update_user   ip_update_user,
+               ip.create_time   ip_create_time,
+               ip.update_time   ip_update_time,
+               template_id,
+               ipr.ins_value,
+               ipr.com_value,
+               ipr.equip_value,
+               ipr2.frequency,
+               ipr2.often,
+               ipr2.port,
+               ipr2.angle,
+               ipr2.value,
+               ipr2.result,
+               ipr2.equip_value equipValue2,
+               ipr2.equip_name  equipName2,
+               ip.method_s
+        from ins_sample isa
+                 left join ins_order_state ios on isa.ins_order_id = ios.ins_order_id
+                 left join ins_product ip on isa.id = ip.ins_sample_id
+                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
+                 left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
+        where isa.ins_order_id = #{id}
+          and ip.standard_method_list_id is not null
+          and state = 1
+          and (ipr2.num = ios.num or ipr2.num is null)
+          and (ipr.num = ios.num or ipr.num is null)
+        order by case
+                     when man_hour_group is NULL then 1
+                     when man_hour_group = '' then 1
+                     else 0 end,
+                 CASE
+                     WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴�
+                     WHEN man_hour_group REGEXP '[0-9]+'
+                         THEN CAST(SUBSTRING(man_hour_group, 2) AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒�
+                , id asc
+    </select>
+    <select id="selectSampleProductListByOrder2Id2" resultMap="sampleDto">
+        select isa.*,
+               ios.num          num1,
+               ip.id            ip_id,
+               inspection_item,
+               inspection_item_en,
+               inspection_item_subclass,
+               inspection_item_subclass_en,
+               inspection_item_class,
+               inspection_item_class_en,
+               ip.factory       ip_factory,
+               ip.laboratory    ip_laboratory,
+               ip.sample_type   ip_sample_type,
+               ip.sample        ip_sample,
+               ip.model         ip_model,
+               son_laboratory,
+               ip.unit          ip_unit,
+               price,
+               man_hour,
+               man_hour_group,
+               inspection_item_type,
+               inspection_value_type,
+               device_group,
+               checkout_number,
+               section,
+               value_type,
+               method,
+               man_day,
+               bsm,
+               ask,
+               tell,
+               `last_value`,
+               ip.ins_result    ip_ins_result,
+               state,
+               ins_sample_id,
+               ip.create_user   ip_create_user,
+               ip.update_user   ip_update_user,
+               ip.create_time   ip_create_time,
+               ip.update_time   ip_update_time,
+               template_id,
+               ipr.ins_value,
+               ipr.com_value,
+               ipr.equip_value,
+               ipr2.frequency,
+               ipr2.often,
+               ipr2.port,
+               ipr2.angle,
+               ipr2.value,
+               ipr2.result,
+               ipr2.equip_value equipValue2,
+               ipr2.equip_name  equipName2,
+               ip.method_s
+        from ins_sample isa
+                 left join ins_order_state ios on isa.ins_order_id = ios.ins_order_id
+                 left join ins_product ip on isa.id = ip.ins_sample_id
+                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
+                 left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
+        where isa.ins_order_id = #{id}
           and ip.standard_method_list_id is not null
           and state = 1
         order by case
@@ -365,7 +595,6 @@
                          THEN CAST(SUBSTRING(man_hour_group, 2) AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒�
                 , id asc
     </select>
-
     <select id="selectSampleProductListByOrderId3" resultMap="sampleDto3">
         select isa.id,
         sample_code,
@@ -399,20 +628,20 @@
     </select>
 
     <select id="getInsProduct1" resultMap="product">
-        select ip.id          ip_id,
+        select ip.id            ip_id,
                inspection_item,
                inspection_item_en,
                inspection_item_class,
                inspection_item_class_en,
                inspection_item_subclass,
                inspection_item_subclass_en,
-               ip.factory     ip_factory,
-               ip.laboratory  ip_laboratory,
-               ip.sample_type ip_sample_type,
-               ip.sample      ip_sample,
-               ip.model       ip_model,
+               ip.factory       ip_factory,
+               ip.laboratory    ip_laboratory,
+               ip.sample_type   ip_sample_type,
+               ip.sample        ip_sample,
+               ip.model         ip_model,
                son_laboratory,
-               ip.unit        ip_unit,
+               ip.unit          ip_unit,
                price,
                man_hour,
                man_hour_group,
@@ -427,13 +656,13 @@
                bsm,
                ask,
                `last_value`,
-               ip.ins_result  ip_ins_result,
+               ip.ins_result    ip_ins_result,
                state,
                ins_sample_id,
-               ip.create_user ip_create_user,
-               ip.update_user ip_update_user,
-               ip.create_time ip_create_time,
-               ip.update_time ip_update_time,
+               ip.create_user   ip_create_user,
+               ip.update_user   ip_update_user,
+               ip.create_time   ip_create_time,
+               ip.update_time   ip_update_time,
                template_id,
                ipr.ins_value,
                ipr.com_value,
@@ -446,11 +675,13 @@
                ipr2.value,
                ipr2.result,
                ipr2.equip_value equipValue2,
-               ipr2.equip_name equipName2,
+               ipr2.equip_name  equipName2,
                ip.method_s,
                ip.tell,
                ip.dic
         from ins_product ip
+                 left join ins_sample isa on ip.ins_sample_id = isa.id
+                 left join ins_order_state ios on ios.ins_order_id = isa.ins_order_id
                  left join ins_product_result ipr on ip.id = ipr.ins_product_id
                  left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
         where ins_sample_id = #{id}
@@ -458,7 +689,145 @@
           and ip.son_laboratory = #{laboratory}
           and ins_fiber_id is null
           and ins_fibers_id is null
-          and standard_method_list_id is not null
+          and ip.standard_method_list_id is not null
+          and ios.laboratory = #{laboratory}
+          and (ipr2.num = ios.num or ipr2.num is null)
+          and (ipr.num = ios.num or ipr.num is null)
+        order by ipr.id, ipr2.id
+    </select>
+    <select id="getIns2Product1" resultMap="product">
+        select ip.id            ip_id,
+               inspection_item,
+               inspection_item_en,
+               inspection_item_class,
+               inspection_item_class_en,
+               inspection_item_subclass,
+               inspection_item_subclass_en,
+               ip.factory       ip_factory,
+               ip.laboratory    ip_laboratory,
+               ip.sample_type   ip_sample_type,
+               ip.sample        ip_sample,
+               ip.model         ip_model,
+               son_laboratory,
+               ip.unit          ip_unit,
+               price,
+               man_hour,
+               man_hour_group,
+               inspection_item_type,
+               inspection_value_type,
+               device_group,
+               checkout_number,
+               section,
+               value_type,
+               method,
+               man_day,
+               bsm,
+               ask,
+               `last_value`,
+               ip.ins_result    ip_ins_result,
+               state,
+               ins_sample_id,
+               ip.create_user   ip_create_user,
+               ip.update_user   ip_update_user,
+               ip.create_time   ip_create_time,
+               ip.update_time   ip_update_time,
+               template_id,
+               ipr.ins_value,
+               ipr.com_value,
+               ipr.equip_value,
+               ipr.equip_name,
+               ipr2.frequency,
+               ipr2.often,
+               ipr2.port,
+               ipr2.angle,
+               ipr2.value,
+               ipr2.result,
+               ipr2.equip_value equipValue2,
+               ipr2.equip_name  equipName2,
+               ip.method_s,
+               ip.tell,
+               ip.dic
+        from ins_product ip
+                 left join ins_sample isa on ip.ins_sample_id = isa.id
+                 left join ins_order_state ios on ios.ins_order_id = isa.ins_order_id
+                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
+                 left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
+        where ins_sample_id = #{id}
+          and state = 1
+          and ip.son_laboratory = #{laboratory}
+          and ins_fiber_id is null
+          and ins_fibers_id is null
+          and ip.standard_method_list_id is not null
+          and ios.laboratory = #{laboratory}
+        order by ipr.id, ipr2.id
+    </select>
+    <select id="get2InsProduct1" resultMap="product">
+        select ip.id            ip_id,
+               inspection_item,
+               inspection_item_en,
+               inspection_item_class,
+               inspection_item_class_en,
+               inspection_item_subclass,
+               inspection_item_subclass_en,
+               ip.factory       ip_factory,
+               ip.laboratory    ip_laboratory,
+               ip.sample_type   ip_sample_type,
+               ip.sample        ip_sample,
+               ip.model         ip_model,
+               son_laboratory,
+               ip.unit          ip_unit,
+               price,
+               man_hour,
+               man_hour_group,
+               inspection_item_type,
+               inspection_value_type,
+               device_group,
+               checkout_number,
+               section,
+               value_type,
+               method,
+               man_day,
+               bsm,
+               ask,
+               `last_value`,
+               ip.ins_result    ip_ins_result,
+               state,
+               ins_sample_id,
+               ip.create_user   ip_create_user,
+               ip.update_user   ip_update_user,
+               ip.create_time   ip_create_time,
+               ip.update_time   ip_update_time,
+               template_id,
+               ipr.ins_value,
+               ipr.com_value,
+               ipr.equip_value,
+               ipr.equip_name,
+               ipr2.frequency,
+               ipr2.often,
+               ipr2.port,
+               ipr2.angle,
+               ipr2.value,
+               ipr2.result,
+               ipr2.equip_value equipValue2,
+               ipr2.equip_name  equipName2,
+               ip.method_s,
+               ip.tell,
+               ip.dic
+        from ins_product ip
+                 left join ins_sample isa on ip.ins_sample_id = isa.id
+                 left join ins_order_state ios on ios.ins_order_id = isa.ins_order_id
+                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
+                 left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
+        where ins_sample_id = #{id}
+          and state = 1
+          and ip.son_laboratory = #{laboratory}
+          and ins_fiber_id is null
+          and ins_fibers_id is null
+          and ip.standard_method_list_id is not null
+          and ios.laboratory = #{laboratory}
+          and ipr2.num = #{num}
+          and ipr.num = #{num}
+        order by ipr.id, ipr2.id
     </select>
 
     <select id="getReportModel" resultType="java.util.Map">
@@ -486,6 +855,7 @@
         <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
         <result property="standardMethodListId" column="standard_method_list_id"/>
         <result property="unit" column="unit"/>
+        <result property="num1" column="num1"/>
         <collection property="insProduct" resultMap="product"/>
     </resultMap>
 
@@ -618,4 +988,11 @@
         from standard_method
         where id = (select standard_method_list_id from ins_sample where id = #{sampleId})
     </select>
+    <select id="selectSampleList" resultType="java.util.Map">
+        select DISTINCT sample_code
+        from ins_sample
+                 left join ins_product ip on ins_sample.id = ip.ins_sample_id
+        where ins_order_id = #{orderId}
+          and ip.id is not null
+    </select>
 </mapper>
diff --git a/inspect-server/src/main/resources/static/report-template.docx b/inspect-server/src/main/resources/static/report-template.docx
index d87f13e..9c46fcd 100644
--- a/inspect-server/src/main/resources/static/report-template.docx
+++ b/inspect-server/src/main/resources/static/report-template.docx
Binary files differ
diff --git a/user-server/src/main/java/com/yuanchu/mom/mapper/UserMapper.java b/user-server/src/main/java/com/yuanchu/mom/mapper/UserMapper.java
index 1d0ad90..1daf064 100644
--- a/user-server/src/main/java/com/yuanchu/mom/mapper/UserMapper.java
+++ b/user-server/src/main/java/com/yuanchu/mom/mapper/UserMapper.java
@@ -24,4 +24,6 @@
     User getCustom(Integer userId);
 
     List<User> getUser();
+
+    String selectDepartLims(String prepareUser);
 }
diff --git a/user-server/src/main/java/com/yuanchu/mom/service/impl/UserServiceImp.java b/user-server/src/main/java/com/yuanchu/mom/service/impl/UserServiceImp.java
index f47fbe9..2ff6b56 100644
--- a/user-server/src/main/java/com/yuanchu/mom/service/impl/UserServiceImp.java
+++ b/user-server/src/main/java/com/yuanchu/mom/service/impl/UserServiceImp.java
@@ -162,7 +162,6 @@
                 user.setPhone(person.getPhoneNumber());
                 user.setEmail(person.getCompanyEmail());
                 user.setIsCustom(person.getCompanyId().equals("SC2463") ? 0 : 1);
-//                user.setPassword(DigestUtils.md5DigestAsHex(headerToken.getPassword(person.getEmployeeID()).getBytes()));
                 user.setPassword(DigestUtils.md5DigestAsHex("zttZTT123!".getBytes()));
                 user.setCompany(BeanUtil.isNotEmpty(custom) ? (custom.getId() + "") : companyName);
                 user.setAddress("鏈~鍐�");
diff --git a/user-server/src/main/resources/mapper/UserMapper.xml b/user-server/src/main/resources/mapper/UserMapper.xml
index 2ba5d0e..2dee8aa 100644
--- a/user-server/src/main/resources/mapper/UserMapper.xml
+++ b/user-server/src/main/resources/mapper/UserMapper.xml
@@ -48,4 +48,8 @@
         select * from user where state = 1
         # where  depart_lims_id=FIND_IN_SET(depart_lims_id, (select  GROUP_CONCAT(id SEPARATOR ',') from department_lims where department_lims.name like '%瀹為獙瀹�'))
     </select>
+    <select id="selectDepartLims" resultType="java.lang.String">
+        select name from department_lims
+        where  id= (select  SUBSTRING_INDEX(SUBSTRING_INDEX(depart_lims_id, ',', -2), ',', 1) AS depart_lims_id  from user where name=#{prepareUser})
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3