From 476740c4330135b38be6a32f54dbe1bbcd32476a Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期一, 13 一月 2025 13:20:56 +0800
Subject: [PATCH] Merge branch 'master' into cnas

---
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java |  179 ++++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 144 insertions(+), 35 deletions(-)

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 e1187dd..3a32619 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
@@ -17,10 +17,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yuanchu.mom.common.GetLook;
 import com.yuanchu.mom.common.PrintChina;
-import com.yuanchu.mom.dto.InsOrderPlanDTO;
-import com.yuanchu.mom.dto.InsProductResultDto;
-import com.yuanchu.mom.dto.SampleProductDto;
-import com.yuanchu.mom.dto.SubmitPlanDto;
+import com.yuanchu.mom.dto.*;
 import com.yuanchu.mom.exception.ErrorException;
 import com.yuanchu.mom.mapper.*;
 import com.yuanchu.mom.pojo.*;
@@ -128,6 +125,9 @@
 
     @Resource
     FuSheUtils fuSheUtils;
+
+    @Resource
+    DianLuUtils dianLuUtils;
 
     @Override
     public Map<String, Object> selectInsOrderPlanList(Page page, InsOrderPlanDTO insOrderPlanDTO) {
@@ -310,7 +310,8 @@
     }
 
     @Override
-    public int uploadFile(Integer orderId, MultipartFile file, String sonLaboratory, Integer sampleId) {
+    public Object uploadFile(Integer orderId, MultipartFile file, String sonLaboratory, Integer sampleId) {
+        InsOrder insOrder = insOrderMapper.selectById(orderId);
         String urlString;
         String pathName;
         String path;
@@ -344,15 +345,20 @@
             file.transferTo(new File(urlString));
             insOrderFile.setFileUrl(pathName);
             insOrderFileMapper.insert(insOrderFile);
-            //濡傛灉鏄緪灏勮瘯楠�(杩戝満/杩滅▼涓婁紶鐨刢sv鏂囦欢)
             String[] split = filename.split("\\.");
             if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("杩戝満") && split[split.length - 1].equals("csv")) {
                 fuSheUtils.getFuSheWord1(sonLaboratory, insOrderFile);
             } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("杩滃満") && split[split.length - 1].equals("xlsx")) {
                 fuSheUtils.getFuSheWord2(sonLaboratory, insOrderFile);
+            } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("鐢佃矾璇曢獙") && split[split.length - 1].equals("xlsx") && filename.contains("浜よ皟")) {
+                dianLuUtils.readDianLuFile1(sampleId, insOrderFile);
+            } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("鐢佃矾璇曢獙") && split[split.length - 1].equals("csv") && filename.contains("椹绘尝")) {
+                dianLuUtils.readDianLuFile2(sampleId, insOrderFile);
+            }else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("鐢佃矾璇曢獙") && split[split.length - 1].equals("csv") && insOrder.getSampleType().equals("鏃犳簮鍣ㄤ欢")) {
+                dianLuUtils.readDianLuFile3(sampleId, insOrderFile);
             }
         } catch (Exception e) {
-            System.err.println("闄勪欢涓婁紶閿欒");
+            throw new ErrorException(e.getMessage());
         }
         return 0;
     }
@@ -762,6 +768,8 @@
                 .in(InsProductResult2::getInsProductId, insProductResultDtos.getInsProductResult2s().stream().map(InsProductResult2::getInsProductId).distinct().collect(Collectors.toList()))
                 .eq(InsProductResult2::getNum, orderState.getNum())
                 .eq(InsProductResult2::getFrequency, insProductResultDtos.getFrequency()));
+        List<InsProductResult2> result2s = new ArrayList<>();
+        List<InsProductUser> insProductUsers = new ArrayList<>();
         for (InsProductResult2 insProductResult2 : insProductResultDtos.getInsProductResult2s()) {
             InsProduct insProduct = new InsProduct();
             insProduct.setId(insProductResult2.getInsProductId());//椤圭洰id
@@ -839,10 +847,13 @@
             }
             result2.setCreateUser(userId);
             result2.setUpdateUser(userId);
-            insProductResult2Mapper.insert(result2);
-            insProduct.setUpdateUser(userId);
-            insProductMapper.updateById(insProduct);
-            insProductUserMapper.insert(new InsProductUser(null, userId, LocalDateTime.now(), insProduct.getId()));
+            result2s.add(result2);
+            //insProductResult2Mapper.insert(result2);
+            //insProduct.setUpdateUser(userId);
+            //insProducts.add(insProduct);
+            //insProductMapper.updateById(insProduct);
+            insProductUsers.add(new InsProductUser(null, userId, LocalDateTime.now(), insProduct.getId()));
+            //insProductUserMapper.insert(new InsProductUser(null, userId, LocalDateTime.now(), insProduct.getId()));
             /*鏇存柊鏍峰搧鐨勬楠岀姸鎬�*/
             insSample.setInsState(1);
             Long l = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
@@ -858,8 +869,10 @@
                 //濡傛灉鎵�鏈夐」鐩兘鏈夌粨璁�,閭d箞璇ユ牱鍝佺姸鎬佸凡妫�
                 insSample.setInsState(2);
             }
-            insSampleMapper.updateById(insSample);
         }
+        insProductResult2Mapper.saveBatch(result2s);
+        insProductUserMapper.saveBatch(insProductUsers);
+        insSampleMapper.updateById(insSample);
         /*鍒ゆ柇璇ョ珯鐐圭殑妫�楠岄」鐩槸鍚﹀叏閮ㄥ凡妫�*/
         int count = insProductMapper.selectInsProductCountByOrderId(insSample.getInsOrderId());
         if (count == 0) {
@@ -870,6 +883,15 @@
                     .set(InsOrderState::getInsState, 2));
         }
         return list;
+    }
+
+    //鐢佃矾璇曢獙鐨勪繚瀛樻楠屽唴瀹�(杩斿洖/鎻愪氦)
+    @Override
+    public int saveInsContext2s(InsProductResultDtos insProductResultDtos) {
+        for (InsProductResultDto insProductResultDto : insProductResultDtos.getInsProductResultDtos()) {
+            saveInsContext2(insProductResultDto);
+        }
+       return  1;
     }
 
     //娓╂箍搴﹁瘯楠�+鍔熺巼璇曢獙鐨勪繚瀛樻楠屽唴瀹�
@@ -1042,7 +1064,10 @@
                     if (insOrder.getFormType().equals("鍘熺悊鏍锋満")) {
                         //鍑哄簱
                         try {
-                            outInsOrderState(laboratory, insSample.getSampleCode(), insOrder.getEntrustCode());
+                            List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, insSample.getInsOrderId()));
+                            for (InsSample sample : insSamples) {
+                                outInsOrderState(laboratory, sample.getSampleCode(), insOrder.getEntrustCode());
+                            }
                         } catch (Exception e) {
 
                         }
@@ -1093,6 +1118,7 @@
         InsOrderUser insOrderUser = new InsOrderUser();
         insOrderUser.setInsOrderStateId(orderState.getId());
         insOrderUser.setSubmitUser(getLook.selectPowerByMethodAndUserId(null).get("userId"));
+        insOrderUser.setInsTime(orderState.getInsTime());
         insOrderUser.setSubmitTime(LocalDateTime.now());
         insOrderUser.setNum(orderState.getNum());
         insOrderUser.setNote(ObjectUtils.isNotEmpty(submitPlanDto.getNote()) ? submitPlanDto.getNote() : null);
@@ -1157,22 +1183,6 @@
         info.setViewStatus(false);
         info.setJumpPath("b1-inspect-order-plan");
         informationNotificationService.addInformationNotification(info);
-        //  todo 浼佷笟寰俊娑堟伅鎺ㄩ�丂zss
-        HashMap<String, Object> map = new HashMap<>();
-        String account = userMapper.selectById(submitPlanDto.getVerifyUser()).getAccount();
-        map.put("touser", account);//鎺ユ敹娑堟伅鎴愬憳鐨勮处鍙�'ZT-031292'杩欑绫诲瀷(濡傛灉鏈夊涓敤'|'鍒嗛殧)
-        map.put("toparty", "");//鎺ユ敹閮ㄩ棬id
-        map.put("totag", "");//娑堟伅鏍囩id
-        map.put("msgtype", "text");//娑堟伅绫诲瀷 text:鏂囨湰
-        map.put("agentid", 1000517);//搴旂敤id
-        HashMap<String, Object> hashMap = new HashMap<>();
-        hashMap.put("content", "鎮ㄦ湁涓�鏉℃楠屼换鍔″緟澶嶆牳娑堟伅,璁㈠崟鍙锋槸锛�" + insOrder.getEntrustCode() + ",鏍峰搧鍚嶇О涓猴細" + insSample.getSample() +
-                ",璇峰墠寰�LIMS绯荤粺鏌ョ湅銆傝鐐瑰嚮<a href=\"https://ztwxlims.ztt.cn:7443/enter\">涓ぉ閫氫俊LIMS绯荤粺 </a>");
-        map.put("text", hashMap);//娑堟伅鍐呭
-        map.put("safe", 0);//鏄惁淇濆瘑娑堟伅.0鍚�
-        map.put("enable_id_trans", 0);//鏄惁寮�鍚痠d杞瘧.0鍚�
-        map.put("enable_duplicate_check", 0);//鏄惁寮�鍚噸澶嶆秷鎭鏌�.0鍚�
-        qywxApi.send(map);
         //澶嶆牳浜�--妫�楠屽崟鐩稿叧璐熻矗浜�
         InsSampleUser insSampleUser = new InsSampleUser();
         insSampleUser.setUserId(submitPlanDto.getVerifyUser());
@@ -1182,15 +1192,22 @@
         insSampleUserMapper.insert(insSampleUser);
         /*鐢熸垚鐢佃矾璇曢獙鐨勭珯鐐规姤鍛婂苟涓婁紶鍒伴檮浠朵腑*/
         if (submitPlanDto.getLaboratory().equals("鐢佃矾璇曢獙")) {
-            //wordUtils.generateWord(submitPlanDto.getTerm(), orderState);
-            //todo 鐢佃矾绔欑偣鎶ュ憡 姝e紡搴撻儴缃叉斁寮�
-            try {
+            if (!insOrder.getSampleType().equals("鏃犳簮鍣ㄤ欢")) {
                 wordUtils.generateWord(submitPlanDto.getTerm(), orderState);
-            } catch (Exception e) {
-                throw new ErrorException("鐢佃矾璇曢獙鐨勭珯鐐规姤鍛婄敓鎴愭湁璇�,璇疯仈绯诲紑鍙戜汉鍛樿皟鏁�!");
+            }else {
+                wordUtils.generateWord2(submitPlanDto.getTerm(), orderState);
             }
+            //todo 鐢佃矾绔欑偣鎶ュ憡 姝e紡搴撻儴缃叉斁寮�
+//            try {
+//                if (!insOrder.getSampleType().equals("鏃犳簮鍣ㄤ欢")) {
+//                    wordUtils.generateWord(submitPlanDto.getTerm(), orderState);
+//                }else {
+//                    wordUtils.generateWord2(submitPlanDto.getTerm(), orderState);
+//                }
+//            } catch (Exception e) {
+//                throw new ErrorException("鐢佃矾璇曢獙鐨勭珯鐐规姤鍛婄敓鎴愭湁璇�,璇疯仈绯诲紑鍙戜汉鍛樿皟鏁�!");
+//            }
         }
-
         /*鐢熸垚浜ч噺宸ユ椂*/
         //鏍¢獙濡傛灉杩欎釜浜鸿繖涓娴嬮」鐩凡缁忔坊鍔犺繃浜嗗垯涓嶉渶瑕佸啀鏂板
         //棣栧厛鍒ゆ柇褰撳墠浜虹殑褰撳墠鏃堕棿鏄惁鏄帓鐝椂闂村唴,濡傛灉涓嶆槸灏辨槸鍔犵彮
@@ -1239,9 +1256,101 @@
                 }
             }
         }
+
+        //  todo 浼佷笟寰俊娑堟伅鎺ㄩ�丂zss
+        HashMap<String, Object> map = new HashMap<>();
+        String account = userMapper.selectById(submitPlanDto.getVerifyUser()).getAccount();
+        map.put("touser", account);//鎺ユ敹娑堟伅鎴愬憳鐨勮处鍙�'ZT-031292'杩欑绫诲瀷(濡傛灉鏈夊涓敤'|'鍒嗛殧)
+        map.put("toparty", "");//鎺ユ敹閮ㄩ棬id
+        map.put("totag", "");//娑堟伅鏍囩id
+        map.put("msgtype", "text");//娑堟伅绫诲瀷 text:鏂囨湰
+        map.put("agentid", 1000517);//搴旂敤id
+        HashMap<String, Object> hashMap = new HashMap<>();
+        hashMap.put("content", "鎮ㄦ湁涓�鏉℃楠屼换鍔″緟澶嶆牳娑堟伅,璁㈠崟鍙锋槸锛�" + insOrder.getEntrustCode() + ",鏍峰搧鍚嶇О涓猴細" + insSample.getSample() +
+                ",璇峰墠寰�LIMS绯荤粺鏌ョ湅銆傝鐐瑰嚮<a href=\"https://ztwxlims.ztt.cn:7443/enter\">涓ぉ閫氫俊LIMS绯荤粺 </a>");
+        map.put("text", hashMap);//娑堟伅鍐呭
+        map.put("safe", 0);//鏄惁淇濆瘑娑堟伅.0鍚�
+        map.put("enable_id_trans", 0);//鏄惁寮�鍚痠d杞瘧.0鍚�
+        map.put("enable_duplicate_check", 0);//鏄惁寮�鍚噸澶嶆秷鎭鏌�.0鍚�
+        qywxApi.send(map);
         return 1;
     }
 
+    @Override
+    public int cancelSubmitPlan(Integer orderStateId) {
+        InsOrderState orderState = insOrderStateMapper.selectById(orderStateId);
+        InsOrder insOrder = insOrderMapper.selectById(orderState.getInsOrderId());
+        InsSample insSample = insSampleMapper.selectById(orderState.getInsSampleId());
+        /*鍒犻櫎璁板綍妫�楠屼换鍔℃瘡娆$殑澶囨敞淇℃伅*/
+        insOrderUserMapper.delete(Wrappers.<InsOrderUser>lambdaQuery()
+        .eq(InsOrderUser::getInsOrderStateId,orderState.getId())
+        .eq(InsOrderUser::getNum,orderState.getNum()));
+        //鎾ら攢鎻愪氦
+        insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
+                .eq(InsOrderState::getInsOrderId, orderState.getInsOrderId())
+                .eq(InsOrderState::getInsSampleId, orderState.getInsSampleId())
+                .eq(InsOrderState::getLaboratory, orderState.getLaboratory())
+                .set(InsOrderState::getInsState, 2));
+        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+        //LIMS绯荤粺娑堟伅鎺ㄩ��
+        InformationNotification info = new InformationNotification();
+        info.setCreateUser(insProductMapper.selectUserById(userId).get("name"));
+        info.setMessageType("2");
+        info.setTheme("澶嶆牳鎾ら攢閫氱煡");
+        info.setContent("鎮ㄦ湁涓�鏉℃楠屼换鍔″緟澶嶆牳宸叉挙閿�鐨勬秷鎭�,璁㈠崟鍙锋槸锛�" + insOrder.getEntrustCode() + ",鏍峰搧鍚嶇О涓猴細" + insSample.getSample());
+        info.setSenderId(userId);
+        info.setConsigneeId(orderState.getVerifyUser());
+        info.setViewStatus(false);
+        info.setJumpPath("b1-inspect-order-plan");
+        informationNotificationService.addInformationNotification(info);
+        //鍒犻櫎澶嶆牳浜�--妫�楠屽崟鐩稿叧璐熻矗浜�
+        insSampleUserMapper.delete(Wrappers.<InsSampleUser>lambdaQuery()
+        .eq(InsSampleUser::getState,1)
+        .eq(InsSampleUser::getSonLaboratory,orderState.getLaboratory())
+        .eq(InsSampleUser::getUserId,orderState.getVerifyUser())
+        .eq(InsSampleUser::getInsSampleId,orderState.getInsSampleId()));
+        //鍒犻櫎鐢熸垚鐨勬姤鍛�
+        if (orderState.getLaboratory().equals("鐢佃矾璇曢獙")) {
+            List<InsOrderFile> insOrderFiles = insOrderFileMapper.selectList(Wrappers.<InsOrderFile>lambdaQuery()
+                    .eq(InsOrderFile::getType, 2)
+                    .like(InsOrderFile::getFileName,"鐢佃矾鍙傛暟.docx")
+                    .eq(InsOrderFile::getInsOrderId, insOrder.getId())
+                    .eq(InsOrderFile::getInsSampleId, orderState.getInsSampleId())
+                    .eq(InsOrderFile::getSonLaboratory, orderState.getLaboratory()));
+            for (InsOrderFile insOrderFile : insOrderFiles) {
+                File file = new File(wordUrl + "/" + insOrderFile.getFileUrl());
+                file.delete();
+                insOrderFileMapper.deleteById(insOrderFile.getId());
+            }
+        }
+
+        /*鍒犻櫎鐢熸垚浜ч噺宸ユ椂*/
+        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsSampleId, insSample.getId()));
+        List<Integer> productIds = insProducts.stream().map(InsProduct::getId).distinct().collect(Collectors.toList());
+        auxiliaryOutputWorkingHoursMapper.delete(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
+                .eq(AuxiliaryOutputWorkingHours::getSample,insSample.getSampleCode())
+                .in(AuxiliaryOutputWorkingHours::getInsProductId,productIds)
+                .eq(AuxiliaryOutputWorkingHours::getNum,orderState.getNum()));
+
+        //  todo 浼佷笟寰俊娑堟伅鎺ㄩ�丂zss
+        HashMap<String, Object> map = new HashMap<>();
+        String account = userMapper.selectById(orderState.getVerifyUser()).getAccount();
+        map.put("touser", account);//鎺ユ敹娑堟伅鎴愬憳鐨勮处鍙�'ZT-031292'杩欑绫诲瀷(濡傛灉鏈夊涓敤'|'鍒嗛殧)
+        map.put("toparty", "");//鎺ユ敹閮ㄩ棬id
+        map.put("totag", "");//娑堟伅鏍囩id
+        map.put("msgtype", "text");//娑堟伅绫诲瀷 text:鏂囨湰
+        map.put("agentid", 1000517);//搴旂敤id
+        HashMap<String, Object> hashMap = new HashMap<>();
+        hashMap.put("content", "鎮ㄦ湁涓�鏉″鏍哥殑娑堟伅宸叉挙閿�,璁㈠崟鍙锋槸锛�" + insOrder.getEntrustCode() + ",鏍峰搧鍚嶇О涓猴細" + insSample.getSample() +
+                ",璇峰墠寰�LIMS绯荤粺鏌ョ湅銆傝鐐瑰嚮<a href=\"https://ztwxlims.ztt.cn:7443/enter\">涓ぉ閫氫俊LIMS绯荤粺 </a>");
+        map.put("text", hashMap);//娑堟伅鍐呭
+        map.put("safe", 0);//鏄惁淇濆瘑娑堟伅.0鍚�
+        map.put("enable_id_trans", 0);//鏄惁寮�鍚痠d杞瘧.0鍚�
+        map.put("enable_duplicate_check", 0);//鏄惁寮�鍚噸澶嶆秷鎭鏌�.0鍚�
+        qywxApi.send(map);
+        return 0;
+    }
+
     public static String getWeek(String dayStr) {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         try {

--
Gitblit v1.9.3