From a14a26c04bc5863248b9a9d387610a143c3a4efd Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期五, 27 九月 2024 08:51:34 +0800
Subject: [PATCH] 电路站点报告ing

---
 user-server/src/main/java/com/yuanchu/mom/controller/UserController.java               |    4 
 user-server/src/main/java/com/yuanchu/mom/service/impl/CustomServiceImpl.java          |    2 
 inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult2.java               |    2 
 user-server/src/main/java/com/yuanchu/mom/service/CustomService.java                   |    2 
 inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java                      |  215 ++++++++++++++++++++++++++
 inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrder.java                        |    3 
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java |  185 ++++++++++++++--------
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java     |    6 
 inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java    |   20 ++
 inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java          |   10 +
 10 files changed, 368 insertions(+), 81 deletions(-)

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 9b551c6..0772bc0 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
@@ -225,10 +225,24 @@
     }
 
     @ValueClassify("妫�楠屼换鍔�")
-    @ApiOperation(value = "鎵爜鎶ユ")
+    @ApiOperation(value = "鎵爜鎶ユ(鍏ュ簱)")
     @PostMapping("/scanInsOrderState")
-    public Result scanInsOrderState(String sonLaboratory,String sampleCode) {
-        return Result.success(insOrderPlanService.scanInsOrderState(sonLaboratory,sampleCode));
+    public Result scanInsOrderState(String sonLaboratory,String sampleCode,String trees) {
+        return Result.success(insOrderPlanService.scanInsOrderState(sonLaboratory,sampleCode,trees));
+    }
+
+    @ValueClassify("妫�楠屼换鍔�")
+    @ApiOperation(value = "鎵爜鍑哄簱")
+    @PostMapping("/outInsOrderState")
+    public Result outInsOrderState(String sonLaboratory,String sampleCode) {
+        return Result.success(insOrderPlanService.outInsOrderState(sonLaboratory,sampleCode));
+    }
+
+    @ValueAuth
+    @PostMapping("/preview")
+    @ApiOperation("棰勮鏂囦欢")
+    public Result<?> preview(Integer id)throws Exception {
+        return Result.success(insOrderPlanService.preview(id));
     }
 
 }
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrder.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrder.java
index f62df21..db2f535 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrder.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrder.java
@@ -249,5 +249,8 @@
     @ApiModelProperty("涓嬪彂瀵硅薄(闄や簡鍏朵粬鎴愬搧澶栬繖涓瓧娈靛繀閫�,鐢ㄤ簬浼佷笟寰俊鎺ㄩ��)")
     private Integer issueUser;
 
+    @ApiModelProperty("闆朵欢鍙�(鍏朵粬鎴愬搧杩欎釜瀛楁闇�瑕佸~鍐欑殑淇℃伅)")
+    private String partNo;
+
 
 }
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 e6c7390..d510e48 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
@@ -74,7 +74,7 @@
     @ApiModelProperty("鍊�")
     private String value;
 
-    @ApiModelProperty("缁撹 0涓嶅悎鏍� 1鍚堟牸")
+    @ApiModelProperty("缁撹 0涓嶅悎鏍� 1鍚堟牸 3涓嶅垽瀹�")
     private Integer result;
 
     /**
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 9c750eb..94e9cb8 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
@@ -51,8 +51,14 @@
 
     int deleteInsContext(InsProductResultVo insProductResultVo);
 
-    //鎵爜鎶ユ
-    int scanInsOrderState(String sonLaboratory, String sampleCode);
+    //鎵爜鎶ユ(鍏ュ簱)
+    int scanInsOrderState(String sonLaboratory, String sampleCode,String trees);
+
+    //鎵爜鍑哄簱
+    int outInsOrderState(String sonLaboratory, String sampleCode);
 
     List<InsOrderUser> getInsOrderUserList(Integer insOrderStateId);
+
+    //棰勮鏂囦欢
+    Object preview(Integer id) throws Exception;
 }
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 c769d0c..7a7057f 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
@@ -37,6 +37,7 @@
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.apache.poi.xwpf.usermodel.*;
 import org.springframework.beans.factory.annotation.Value;
@@ -95,11 +96,17 @@
     @Resource
     private WarehouseHistoryMapper warehouseHistoryMapper;
 
+    @Resource
+    private WarehouseService warehouseService;
+
     @Value("${wordUrl}")
     private String wordUrl;
 
     @Value("${twoCode}")
     private String twoCode;
+
+    @Resource
+    WordUtils  wordUtils;
 
     @Resource
     private InsReportMapper insReportMapper;
@@ -142,13 +149,9 @@
         Map<String, Object> map = new HashMap<>();
         map.put("head", PrintChina.printChina(InsOrderPlanVO.class));
         Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId(null);
-        User user = userMapper.selectById(map1.get("userId"));//褰撳墠鐧诲綍鐨勪汉
-
         String laboratory = null;
         String userName = null;
-        Integer userId = null;
         if (ObjectUtil.isNotEmpty(insOrderPlanDTO.getUserId())) {
-            userId = map1.get("userId");
             userName = userMapper.selectById(map1.get("userId")).getName();
             insOrderPlanDTO.setUserId(null);
         }
@@ -340,7 +343,10 @@
 
     //鎵爜鎶ユ
     @Override
-    public int scanInsOrderState(String sonLaboratory, String sampleCode) {
+    public int scanInsOrderState(String sonLaboratory, String sampleCode, String trees) {
+        /*鏍峰搧鍏ュ簱*/
+        warehouseService.inWarehouse(trees, sampleCode);
+        /*鏂板妫�楠屼换鍔�*/
         //鍏堝垽鏂璁㈠崟鏄惁鏈夎繖涓珯鐐圭殑椤圭洰
         InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, sampleCode));
         List<Integer> sampleIds = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
@@ -367,9 +373,9 @@
                 orderState.setInsState(0);
                 orderState.setNum(orderState.getNum() + 1);//閫掑
                 insOrderStateMapper.updateById(orderState);
-            } else {
+            } /*else {
                 throw new ErrorException("璇ヨ鍗曠珯鐐圭殑浠诲姟宸插垱寤�,鏃犳硶鍐嶆鍒涘缓!");
-            }
+            }*/
         } else {
             InsOrderState insOrderState = new InsOrderState();
             insOrderState.setInsOrderId(insSample.getInsOrderId());
@@ -381,9 +387,90 @@
         return 1;
     }
 
+    //鎵爜鍑哄簱
+    @Override
+    public int outInsOrderState(String sonLaboratory, String sampleCode) {
+        //鍒ゆ柇璇ユ牱鍝佺殑妫�楠屼换鍔℃槸鍚﹀凡缁忕粨鏉�(缁х画璇曢獙鎴栬�呮槸缁撴潫璇曢獙)
+        //鍏堝垽鏂璁㈠崟鏄惁鏈夎繖涓珯鐐圭殑椤圭洰
+        InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, sampleCode));
+        List<Integer> sampleIds = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
+                .eq(InsSample::getInsOrderId, insSample.getInsOrderId())).stream().map(InsSample::getId).collect(Collectors.toList());
+        List<String> collect = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+                .eq(InsProduct::getState, 1)
+                .in(InsProduct::getInsSampleId, sampleIds)).stream().map(InsProduct::getSonLaboratory).collect(Collectors.toList());
+        if (!collect.contains(sonLaboratory)) {
+            throw new ErrorException("璇ヨ鍗曟病鏈�" + sonLaboratory + "绔欑偣鐨勭浉鍏抽」鐩�,璇锋煡鐪嬩笅鍗曡鎯�!");
+        }
+        //鍒ゆ柇璇ヨ鍗曟槸鍚︾珯鐐逛换鍔℃湁(缁х画璇曢獙鎴栬�呮槸缁撴潫璇曢獙)
+        List<InsOrderState> orderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery()
+                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
+                .and(wrapper -> wrapper
+                        .eq(InsOrderState::getInsState, 5)
+                        .or()
+                        .eq(InsOrderState::getInsState, 6)
+                ));
+        if (CollectionUtils.isEmpty(orderStates)) {
+            throw new ErrorException("璇ユ牱鍝佺殑妫�楠屼换鍔¤繕娌℃湁缁撴潫璇曢獙,鏆傛椂鏃犳硶鍑哄簱!");
+        }
+        warehouseService.outWarehouse(sampleCode);
+        return 0;
+    }
+
     @Override
     public List<InsOrderUser> getInsOrderUserList(Integer insOrderStateId) {
         return insOrderUserMapper.getInsOrderUserList(insOrderStateId);
+    }
+
+    private static final String splitIdentifier = "@-@"; // 鑷畾涔夊敮涓�鏍囪瘑鍒嗗壊绗�
+
+    //棰勮鏂囦欢
+    @Override
+    public Object preview(Integer id) throws Exception {
+        InsOrderFile insOrderFile = insOrderFileMapper.selectById(id);
+        File file = new File(wordUrl + "/" + insOrderFile.getFileUrl());
+        StringBuilder stringBuilder = new StringBuilder();
+        // 鍒涘缓 reader
+        try (BufferedReader br = Files.newBufferedReader(file.toPath())) {
+            // CSV鏂囦欢鐨勫垎闅旂
+            String DELIMITER = ",";
+            // 鎸夎璇诲彇
+            String line;
+            while ((line = br.readLine()) != null) {
+                // 鍒嗗壊
+                String[] columns = line.split(DELIMITER);
+                // 鎵撳嵃琛�
+                stringBuilder.append(String.join(splitIdentifier, columns)).append("\n");
+            }
+        } catch (Exception ex) {
+            List<Object> list = new ArrayList<>();
+            //鍒涘缓宸ヤ綔绨垮璞�
+            XSSFWorkbook xssfWorkbook = new XSSFWorkbook(new FileInputStream(file));
+            //鑾峰彇宸ヤ綔绨夸笅sheet鐨勪釜鏁� 鍙鍙栫涓�涓猻heet
+            int sheetNum = xssfWorkbook.getNumberOfSheets();
+            //閬嶅巻宸ヤ綔绨夸腑鐨勬墍鏈夋暟鎹�
+            for (int i = 0; i < sheetNum; i++) {
+                Map<String, Object> map = new HashMap<>();
+                StringBuilder result = new StringBuilder();
+                XSSFSheet sheet = xssfWorkbook.getSheetAt(i);
+                //鑾峰彇鏈�鍚庝竴琛岀殑num锛屽嵆鎬昏鏁般�傛澶勪粠0寮�濮�
+                int maxRow = sheet.getLastRowNum();
+                for (int row = 0; row <= maxRow; row++) {
+                    //鑾峰彇鏈�鍚庡崟鍏冩牸num锛屽嵆鎬诲崟鍏冩牸鏁� ***娉ㄦ剰锛氭澶勪粠1寮�濮嬭鏁�***
+                    int maxRol = sheet.getRow(row).getLastCellNum();
+                    StringBuilder aLine = new StringBuilder();
+                    for (int rol = 0; rol < maxRol; rol++) {
+                        aLine.append(sheet.getRow(row).getCell(rol)).append(",");
+                    }
+                    String substring = aLine.substring(0, aLine.length() - 1);
+                    result.append(substring).append("\n");
+                }
+                map.put("sheetName", sheet.getSheetName());
+                map.put("content", result.toString());
+                list.add(map);
+            }
+            return list;
+        }
+        return stringBuilder.toString();
     }
 
 
@@ -662,6 +749,9 @@
                 int ressult = 1;
                 String valueStr = insProductResult2.getValue();
                 if (!insProduct.getAsk().contains(",")) {
+                    if (insProduct.getAsk().equals("/")) {
+                        ressult = 3; //涓嶅垽瀹�
+                    }
                     if (!isValueValid(valueStr, new String[]{insProduct.getAsk()})) {
                         ressult = 0; //涓嶅悎鏍�
                     }
@@ -673,7 +763,6 @@
                         String[] askSplit = s.split("掳");
                         String angleKey = askSplit[0];
                         String angleValue = askSplit[1];
-
                         for (int i = 0; i < angles.length; i++) {
                             if (angles[i].split("掳")[0].equals(angleKey)) {
                                 try {
@@ -692,7 +781,6 @@
                                 } finally {
                                     continue;
                                 }
-
                             }
                         }
                     }
@@ -918,8 +1006,7 @@
                     .set(InsOrderUser::getTell, tell));
             switch (type) {
                 case 0:
-                    /*鍐嶆璇曢獙:璇ュ崟瀛愰��鍥炲埌妫�楠岀姸鎬�(鎺掑簭鏀规垚褰撳墠鐨勬渶鍚�),娆℃暟閫掑(淇濈暀浠ュ墠鐨勬暟鎹�)锛�*/
-                    //鏇存柊鍘熸潵鐨勬楠屼换鍔�
+                    //鍐嶆璇曢獙:璇ュ崟瀛愰��鍥炲埌妫�楠岀姸鎬�(鎺掑簭鏀规垚褰撳墠鐨勬渶鍚�),娆℃暟閫掑(淇濈暀浠ュ墠鐨勬暟鎹�)锛�
                     insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
                             .eq(InsOrderState::getId, record.getId())
                             .set(InsOrderState::getInsTime, now)
@@ -930,7 +1017,7 @@
                             .set(InsOrderState::getCreateTime, LocalDateTime.now()));
                     break;
                 case 1:
-                    //缁х画璇曢獙:鍒欑户缁皢妫�楠屼换鍔¤浆鎺ヨ嚦涓嬩竴绔欑偣锛�
+                    //缁х画璇曢獙:璇ョ珯鐐逛换鍔$粨鏉�(鍙互鍐嶆鎵爜妫�楠�)锛�
                     insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
                             .eq(InsOrderState::getInsOrderId, orderId)
                             .eq(InsOrderState::getLaboratory, laboratory)
@@ -940,7 +1027,7 @@
                             .set(InsOrderState::getVerifyUser, userId));
                     break;
                 case 2:
-                    //缁撴潫璇曢獙:姝ゅ鎵樺崟鍋滄璇曢獙锛岀洿鎺ョ敓鎴愭渶缁堟姤鍛婂拰璐圭敤缁熻銆�
+                    //缁撴潫璇曢獙:姝ゅ鎵樺崟鍋滄璇曢獙(鏃犳硶鍐嶆妫�楠�)銆�
                     insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
                             .eq(InsOrderState::getInsOrderId, orderId)
                             .eq(InsOrderState::getLaboratory, laboratory)
@@ -957,52 +1044,7 @@
                     break;
             }
         }
-        /*澶嶆牳瀹屾垚涔嬪悗鐢熸垚浠栬嚜宸辩殑绔欑偣鎶ュ憡(浠呴檺杈愬皠璇曢獙妫�娴�(杩戝満,杩滃満)鍜岀數璺瘯楠�)*/
-        /*switch (laboratory) {
-            case "杩戝満":
-                uploadFile(orderId, null);
-                break;
-            case "杩滃満":
-                uploadFile(orderId, null);
-                break;
-            case "鐢佃矾璇曢獙":
-                uploadFile(orderId, generateExcelFile(orderId,laboratory));
-                break;
-            default:
-                break;
-        }*/
         return 1;
-    }
-
-    //鐢熸垚鐢佃矾璇曢獙鐨別xcel鏂囦欢
-    private MultipartFile generateExcelFile(Integer orderId, String laboratory) throws IOException {
-        // 鍒涘缓涓�涓猈orkbook瀵硅薄
-        Workbook workbook = new XSSFWorkbook();
-
-        // 鍒涘缓绗竴涓猄heet
-        Sheet sheet1 = workbook.createSheet("Sheet1");
-        Row row1 = sheet1.createRow(0);
-        Cell cell1 = row1.createCell(0);
-        cell1.setCellValue("Hello, Sheet1");
-
-        // 鍒涘缓绗簩涓猄heet
-        Sheet sheet2 = workbook.createSheet("Sheet2");
-        Row row2 = sheet2.createRow(0);
-        Cell cell2 = row2.createCell(0);
-        cell2.setCellValue("Hello, Sheet2");
-
-        // 灏哤orkbook鍐欏叆鍒板瓧鑺傛暟缁勪腑
-        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-        workbook.write(outputStream);
-        workbook.close();
-
-        byte[] excelBytes = outputStream.toByteArray();
-
-        // 鍒涘缓MultipartFile瀵硅薄
-        MultipartFile multipartFile = new MockMultipartFile(
-                "file", "example.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", new ByteArrayInputStream(excelBytes));
-
-        return multipartFile;
     }
 
     private void getTemplateThing(Set<Integer> set, Map<Integer, String> map2, List<InsProduct> insProducts) {
@@ -1094,15 +1136,15 @@
                 .set(InsOrderState::getInsTime, LocalDateTime.now())
                 .set(InsOrderState::getInsState, 3)
                 .set(InsOrderState::getVerifyUser, verifyUser));
-        /*濡傛灉鏄疌绫昏鍗曚笖鏄笅鍙戝埌璐ㄩ噺閮�,鍒欑洿鎺ュ鏍搁�氳繃(缁撴潫璇曢獙)*/
-        InsOrder insOrder = insOrderMapper.selectById(orderId);
-        if (insOrder.getOrderType().equals("C") && insOrder.getDepartmentLims().equals("璐ㄩ噺閮�")) {
-            try {
-                verifyPlan(orderId, laboratory, 2, null);
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        } else {
+        /*杩欎釜鎯呭喌鍏堝叧闂�----濡傛灉鏄疌绫昏鍗曚笖鏄笅鍙戝埌璐ㄩ噺閮�,鍒欑洿鎺ュ鏍搁�氳繃(缁撴潫璇曢獙)*/
+//        InsOrder insOrder = insOrderMapper.selectById(orderId);
+//        if (insOrder.getOrderType().equals("C") && insOrder.getDepartmentLims().equals("璐ㄩ噺閮�")) {
+//            try {
+//                verifyPlan(orderId, laboratory, 2, null);
+//            } catch (IOException e) {
+//                e.printStackTrace();
+//            }
+//        } else {
             Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
             //LIMS绯荤粺娑堟伅鎺ㄩ��
             InformationNotification info = new InformationNotification();
@@ -1130,7 +1172,7 @@
             map.put("enable_id_trans", 0);//鏄惁寮�鍚痠d杞瘧.0鍚�
             map.put("enable_duplicate_check", 0);//鏄惁寮�鍚噸澶嶆秷鎭鏌�.0鍚�
             qywxApi.send(map);*/
-        }
+//        }
         //澶嶆牳浜�--妫�楠屽崟鐩稿叧璐熻矗浜�
         InsSampleUser insSampleUser = new InsSampleUser();
         insSampleUser.setUserId(verifyUser);
@@ -1153,6 +1195,11 @@
             }
             return null;
         });
+        /*鐢熸垚鐢佃矾璇曢獙鐨勭珯鐐规姤鍛婂苟涓婁紶鍒伴檮浠朵腑*/
+        /*if (laboratory.equals("鐢佃矾璇曢獙")) {
+            MultipartFile file = wordUtils.generateWord(note, term, orderState);
+            uploadFile(orderId,file);
+        }*/
         // 鍒犻櫎鏁伴噰閲囬泦娆℃暟
         String key = "frequency" + ":" + entrustCode + ":*";
         RedisUtil.delsLike(key);
@@ -1194,4 +1241,6 @@
                 return "鏈煡";
         }
     }
+
+
 }
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 58e6d5f..efcae29 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
@@ -124,7 +124,7 @@
     public int upInsOrder(Integer orderId, Integer sampleId, String appointed, Integer userId, String sonLaboratory) {
         InsOrder insOrder = new InsOrder();
         insOrder.setId(orderId);
-        insOrder.setAppointed(LocalDate.parse(appointed));
+        //insOrder.setAppointed(LocalDate.parse(appointed));
         insOrder.setSendTime(LocalDateTime.now());
         insOrderMapper.updateById(insOrder);
         //淇敼鎴愬彧缁欏綋鍓嶉�夋嫨鐨勮瘯楠屽涓嬪彂鍗曞瓙
@@ -271,9 +271,9 @@
         if (insOrder.getState() == 1) {
             //瀹℃牳閫氳繃鎵嶄細鐢熸垚濮旀墭缂栧彿
             insOrder.setEntrustCode(giveCode.giveCode2("WT-", "ins_order", "-", "yyMMdd"));
-            int day = insProductService.selectOrderManDay(insOrder.getId());//棰勮瀹屾垚鏃堕棿
             //纭畾璁㈠崟鐨勪笅鍙戞椂闂村拰绾﹀畾鏃堕棿
-            insOrder.setAppointed(LocalDate.parse(LocalDateTime.now().plusHours(day).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))));
+            //int day = insProductService.selectOrderManDay(insOrder.getId());//棰勮瀹屾垚鏃堕棿
+            //insOrder.setAppointed(LocalDate.parse(LocalDateTime.now().plusHours(day).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))));
             insOrder.setSendTime(LocalDateTime.now());
             /*todo 鏍规嵁璁㈠崟绫诲瀷鍒ゆ柇鏄惁闇�瑕佹帹閫佷紒涓氬井淇� @zss*/
             if (!order.getFormType().equals("鍏朵粬鎴愬搧")) {
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java b/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java
new file mode 100644
index 0000000..b0e467e
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java
@@ -0,0 +1,215 @@
+package com.yuanchu.mom.utils;
+
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.yuanchu.mom.controller.InsOrderPlanController;
+import com.yuanchu.mom.mapper.*;
+import com.yuanchu.mom.pojo.InsOrderState;
+import com.yuanchu.mom.pojo.InsProduct;
+import com.yuanchu.mom.pojo.InsProductResult2;
+import com.yuanchu.mom.pojo.InsSample;
+import com.yuanchu.mom.service.impl.InsOrderPlanServiceImpl;
+import org.apache.poi.xwpf.usermodel.*;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+@Component
+public class WordUtils {
+
+    @Resource
+    private InsOrderMapper insOrderMapper;
+
+    @Resource
+    private InsOrderStateMapper insOrderStateMapper;
+
+    @Resource
+    private InsSampleMapper insSampleMapper;
+
+    @Resource
+    private InsProductMapper insProductMapper;
+
+    @Resource
+    private InsProductResult2Mapper insProductResult2Mapper;
+
+    private void writeText(XWPFParagraph xwpfParagraph, String text, Integer size, String bold) {
+        // 鍒涘缓鏂扮殑鏂囨湰杩愯
+        XWPFRun run = xwpfParagraph.createRun();
+        // 璁剧疆鏂扮殑鏁版嵁
+        run.setText(text);
+        if (ObjectUtils.isNotEmpty(size)) {
+            run.setFontSize(size);
+        }
+        if (ObjectUtils.isNotEmpty(bold)) {
+            run.setBold(true);
+        }
+    }
+
+    //鐢熸垚鐢佃矾璇曢獙鐨勭珯鐐规姤鍛�
+    public MultipartFile generateWord(String note, String term, InsOrderState insOrderState) {
+        AtomicInteger index = new AtomicInteger();
+        // 鍒涘缓涓�涓┖鐨刉ord鏂囨。
+        XWPFDocument document = new XWPFDocument();
+        //鍒涘缓涓�涓钀芥爣棰�
+        XWPFParagraph paragraph = document.createParagraph();
+        writeText(paragraph, term + "鐢佃矾鍙傛暟", 20, "鍔犵矖");
+
+        //鏌ヨ鏍峰搧
+        List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, insOrderState.getInsOrderId()));
+        insSamples.forEach(insSample -> {
+            //鏌ヨ椤圭洰
+            List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+                    .eq(InsProduct::getInsSampleId, insSample.getId())
+                    .eq(InsProduct::getSonLaboratory, "鐢佃矾璇曢獙"));
+            //鑾峰彇鏈�澶х鍙f暟閲�,瑙掑害鏁伴噺,棰戞鏁伴噺
+            List<InsProductResult2> insProductResult2s = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery()
+                    .eq(InsProductResult2::getNum, insOrderState.getNum())
+                    .in(InsProductResult2::getInsProductId, insProducts.stream().map(InsProduct::getId).collect(Collectors.toList())));
+            int ports = 0;
+            int angles = 0;
+            for (InsProductResult2 insProductResult2 : insProductResult2s) {
+                if (insProductResult2.getPort().split(",").length > ports) {
+                    ports = insProductResult2.getPort().split(",").length;
+                }
+                if (insProductResult2.getAngle().split(",").length > angles) {
+                    angles = insProductResult2.getAngle().split(",").length;
+                }
+            }
+            List<String> frequencyses = insProductResult2s.stream().map(InsProductResult2::getFrequency).distinct().collect(Collectors.toList());
+            int frequencys = frequencyses.size();
+            List<String> inspectionItemSubclass = insProducts.stream().map(InsProduct::getInspectionItemSubclass).collect(Collectors.toList());
+            //鍏堝垽鏂槸1绠�鍗曠増杩樻槸0澶嶆潅鐗�
+            if (insOrderState.getVersion() == 1) {
+                //(鍒楁暟鏄鍙f暟+6,琛屾暟鏄�(椹绘尝姣�*2+闅旂搴�+浜掕皟*(瑙掑害+1)+1)*棰戞+1)
+                int portRow = ports % 8 == 0 ? ports / 8 : ports / 8 + 1;
+                //琛屾暟
+                int rows = 0;
+                if (inspectionItemSubclass.contains("鐢靛帇椹绘尝姣�")) {
+                    rows += 2 * portRow;
+                }
+                if (inspectionItemSubclass.contains("鍚屾瀬鍖栭殧绂诲害")) {
+                    rows += 1 * portRow;
+                }
+                if (inspectionItemSubclass.contains("寮傛瀬鍖栭殧绂诲害")) {
+                    rows += 1 * portRow;
+                }
+                if (inspectionItemSubclass.contains("浜掕皟")) {
+                    rows += (angles + 1) * portRow;
+                }
+                //鍒楁暟
+                int cols = ports > 8 ? 14 : ports + 6;
+                //鍒涘缓涓�涓〃鏍�
+                XWPFTable table = document.createTable((rows + 1) * frequencys + 1, cols);
+                // 濉厖琛ㄦ牸鍐呭
+                for (int rowIndex = 0; rowIndex < (rows + 1) * frequencys + 1; rowIndex++) {
+                    XWPFTableRow row = table.getRow(rowIndex);
+                    for (int colIndex = 0; colIndex < cols; colIndex++) {
+                        XWPFTableCell cell = row.getCell(colIndex);
+                        if (rowIndex == 0) {
+                            //绗竴琛�
+                            if (colIndex == 0) {
+                                //绗竴鍒�
+                                cell.setText("搴忓彿");
+                            } else if (colIndex == 1) {
+                                //绗簩鍒�
+                                cell.setText("妫�楠岄」鐩�");
+                            } else if (colIndex == 2) {
+                                //绗笁鍒�
+                                cell.setText("鍗曚綅");
+                            } else if (colIndex == 3) {
+                                //绗洓鍒�
+                                cell.setText("鏍囧噯涓庤姹�");
+                            } else if (colIndex == cols - 1) {
+                                //鏈�鍚庝竴鍒�
+                                cell.setText("妫�楠岀粨璁�");
+                            } else if (colIndex == 4){
+                                //鍏朵綑鍒�
+                                cell.setText("妫�楠岀粨鏋�");
+                            }
+                        }
+                        else if (rowIndex == 1 || rowIndex % (rows + 1) == 1) {
+                            if (colIndex==0) {
+                                //棰戞鎵�鍦ㄨ
+                                cell.setText("棰戞锛�" + frequencyses.get(rowIndex / (rows + 1)));
+                            }
+                        }
+                        else {
+                            //portRow绔彛琛屾暟
+                            if (inspectionItemSubclass.contains("鐢靛帇椹绘尝姣�")) {
+
+                            }
+                            if (inspectionItemSubclass.contains("鍚屾瀬鍖栭殧绂诲害")) {
+
+                            }
+                            if (inspectionItemSubclass.contains("寮傛瀬鍖栭殧绂诲害")) {
+
+                            }
+                            if (inspectionItemSubclass.contains("浜掕皟")) {
+
+                            }
+                        }
+                    }
+                    if (rowIndex == 0) {
+                        //绗竴琛岀殑妯悜鍚堝苟
+                        mergeCellsHorizontal(row, 4, cols - 2);
+                    } else if (rowIndex == 1 || rowIndex % (rows + 1) == 1) {
+                        //棰戞琛岀殑妯悜鍚堝苟
+                        mergeCellsHorizontal(row, 0, cols - 1);
+                    }
+                }
+            } else {
+
+            }
+        });
+        // 鍐欏叆鍒版枃浠�
+        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        try {
+            document.write(outputStream);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        byte[] bytes = outputStream.toByteArray();
+        return new MockMultipartFile(term + "鐢佃矾鍙傛暟", term + "鐢佃矾鍙傛暟.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", bytes);
+    }
+
+    // 绔栧悜鍚堝苟鍗曞厓鏍�
+    private static void mergeCellsVertical(XWPFTable table, int columnIndex, int fromRow, int toRow) {
+        for (int rowIndex = fromRow; rowIndex <= toRow; rowIndex++) {
+            if (rowIndex == fromRow) {
+                // 绗竴涓崟鍏冩牸淇濈暀锛岃涓哄悎骞惰捣濮�
+                CTTcPr tcPr = table.getRow(rowIndex).getCell(columnIndex).getCTTc().addNewTcPr();
+                tcPr.addNewVMerge().setVal(STMerge.RESTART);
+            } else {
+                // 闈炵涓�涓崟鍏冩牸璁句负鍚堝苟缁х画
+                CTTcPr tcPr = table.getRow(rowIndex).getCell(columnIndex).getCTTc().addNewTcPr();
+                tcPr.addNewVMerge().setVal(STMerge.CONTINUE);
+            }
+        }
+    }
+
+    // 妯悜鍚堝苟鍗曞厓鏍�
+    private static void mergeCellsHorizontal(XWPFTableRow row, int fromCell, int toCell) {
+        for (int cellIndex = fromCell; cellIndex <= toCell; cellIndex++) {
+            if (cellIndex == fromCell) {
+                // 绗竴涓崟鍏冩牸淇濈暀锛岃涓哄悎骞惰捣濮�
+                CTTcPr tcPr = row.getCell(cellIndex).getCTTc().addNewTcPr();
+                tcPr.addNewHMerge().setVal(STMerge.RESTART);
+            } else {
+                // 闈炵涓�涓崟鍏冩牸璁句负鍚堝苟缁х画
+                CTTcPr tcPr = row.getCell(cellIndex).getCTTc().addNewTcPr();
+                tcPr.addNewHMerge().setVal(STMerge.CONTINUE);
+            }
+        }
+    }
+
+}
diff --git a/user-server/src/main/java/com/yuanchu/mom/controller/UserController.java b/user-server/src/main/java/com/yuanchu/mom/controller/UserController.java
index ed6f090..dd6bf5b 100644
--- a/user-server/src/main/java/com/yuanchu/mom/controller/UserController.java
+++ b/user-server/src/main/java/com/yuanchu/mom/controller/UserController.java
@@ -153,8 +153,8 @@
     @ValueClassify("瀹㈡埛绠$悊")
     @ApiOperation(value = "鍒犻櫎瀹㈡埛淇℃伅")
     @PostMapping("/delCustomById")
-    public Result<?> delCustomById(Integer id) {
-        return Result.success(customService.delCustomById(id));
+    public Result<?> delCustomById(Long id) {
+        return Result.success(customService.removeById(id));
     }
     @ValueClassify("瀹㈡埛绠$悊")
     @ApiOperation(value = "鏂板瀹㈡埛淇℃伅")
diff --git a/user-server/src/main/java/com/yuanchu/mom/service/CustomService.java b/user-server/src/main/java/com/yuanchu/mom/service/CustomService.java
index deff15f..2f31e96 100644
--- a/user-server/src/main/java/com/yuanchu/mom/service/CustomService.java
+++ b/user-server/src/main/java/com/yuanchu/mom/service/CustomService.java
@@ -16,7 +16,7 @@
 
     Map<String, Object> selectCustomPageList(IPage<Custom> page, Custom custom);
 
-    int delCustomById(Integer id);
+    int delCustomById(Long id);
 
     int addCustom(Custom custom);
 
diff --git a/user-server/src/main/java/com/yuanchu/mom/service/impl/CustomServiceImpl.java b/user-server/src/main/java/com/yuanchu/mom/service/impl/CustomServiceImpl.java
index acc4995..db8d859 100644
--- a/user-server/src/main/java/com/yuanchu/mom/service/impl/CustomServiceImpl.java
+++ b/user-server/src/main/java/com/yuanchu/mom/service/impl/CustomServiceImpl.java
@@ -41,7 +41,7 @@
     }
 
     @Override
-    public int delCustomById(Integer id) {
+    public int delCustomById(Long id) {
         return customMapper.deleteById(id);
     }
 

--
Gitblit v1.9.3