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

---
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java |  557 +++++++++++++++++++++++--------------------------------
 1 files changed, 230 insertions(+), 327 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 91912bb..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
@@ -33,8 +33,15 @@
 import com.yuanchu.mom.utils.*;
 import com.yuanchu.mom.vo.*;
 import org.apache.commons.io.IOUtils;
+import org.apache.poi.ss.usermodel.Cell;
+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;
+import org.springframework.mock.web.MockMultipartFile;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -81,17 +88,25 @@
     @Resource
     private InsProductMapper insProductMapper;
     @Resource
+    private InsOrderUserMapper insOrderUserMapper;
+    @Resource
     private ShiftTimeMapper shiftTimeMapper;
     @Resource
     private PerformanceShiftMapper performanceShiftMapper;
     @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;
@@ -127,18 +142,6 @@
     private String imgUrl;
 
     @Resource
-    private InsBushingService insBushingService;
-
-    @Resource
-    private InsBushingMapper insBushingMapper;
-
-    @Resource
-    private InsFiberMapper insFiberMapper;
-
-    @Resource
-    private InsFibersMapper insFibersMapper;
-
-    @Resource
     private InsOrderFileMapper insOrderFileMapper;
 
     @Override
@@ -146,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);
         }
@@ -186,31 +185,6 @@
         if (Objects.isNull(entity)) {
             return false;
         }
-        /*璁ら闇�瑕佸垽鏂鏍峰搧鏄惁鍦ㄥ簱*/
-        //鏌ヨ鏍峰搧id(杩囨护娌℃湁妫�楠岄」鐩殑鏍峰搧)
-        List<Integer> sampleIds = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
-                .eq(InsSample::getInsOrderId, entity.getInsSampleId())).stream().map(InsSample::getId).collect(Collectors.toList());
-        for (Integer samId : sampleIds) {
-            //杩囨护娌℃湁妫�楠岄」鐩殑鏍峰搧id
-            if (ObjectUtils.isEmpty(insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
-                    .eq(InsProduct::getInsSampleId, samId)
-                    .eq(InsProduct::getState, 1)))) {
-                continue;
-            }
-            //鍏ュ簱娆℃暟
-            Long inCount = warehouseHistoryMapper.selectCount(Wrappers.<WarehouseHistory>lambdaQuery()
-                    .eq(WarehouseHistory::getState, 1)
-                    .eq(WarehouseHistory::getInsSampleId, samId));
-            //鍑哄簱娆℃暟
-            Long outCount = warehouseHistoryMapper.selectCount(Wrappers.<WarehouseHistory>lambdaQuery()
-                    .eq(WarehouseHistory::getState, 2)
-                    .eq(WarehouseHistory::getInsSampleId, samId));
-            if (inCount > 0 && inCount > outCount) {
-                continue;
-            } else {
-                throw new ErrorException("鎵�閫夌殑鏍峰搧搴撳瓨涓嶈冻,璇锋鏌ュ叆搴撳拰鍑哄簱璁板綍!");
-            }
-        }
         Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId(null);
         Integer userId = map1.get("userId");
         InsSampleUser insSampleUser = new InsSampleUser(entity.getInsSampleId().intValue(), userId, 0, entity.getSonLaboratory());
@@ -229,10 +203,6 @@
         }
         Map<String, Object> map = insOrderService.getInsOrderAndSample(id, laboratory);
         List<SampleProductDto> list = JSON.parseArray(JSON.toJSONString(map.get("sampleProduct")), SampleProductDto.class);
-        for (SampleProductDto samples : list) {
-            if (BeanUtil.isEmpty(samples.getInsProduct())) continue;
-            samples.setBushing(insBushingService.selectBushingBySampleId(samples.getId()));
-        }
         map.put("sampleProduct", list);
         return map;
     }
@@ -244,7 +214,7 @@
             case 0:
                 //鏍峰搧
                 insProducts = insSampleMapper.getInsProduct1(id, laboratory);
-                if (insProducts.size()==0){
+                if (insProducts.size() == 0) {
                     insProducts = insSampleMapper.getIns2Product1(id, laboratory);
                 }
                 break;
@@ -266,12 +236,15 @@
     }
 
     @Override
-    public List<InsProduct> getInsProduct2(Integer id, Integer type, String laboratory, HttpServletRequest request,Integer num) {
+    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);
+                insProducts = insSampleMapper.get2InsProduct1(id, laboratory, num);
+                if (insProducts.size() == 0) {
+                    throw new ErrorException("褰撳墠妫�楠屾暟鎹繕娌℃湁淇濆瓨,淇濆瓨涔嬪悗鏈夋暟鎹巻鍙�");
+                }
                 break;
             case 1:
                 //鍏夌氦甯�
@@ -353,185 +326,6 @@
         }
     }
 
-    //鍒囨崲璁板綍妯$増鏌ヨ妫�楠屽唴瀹�
-    @Override
-    public Map<String, Object> getReportModel(Integer sampleId) {
-        Map<String, Object> map = new HashMap<>();
-        //鍏堟煡鍑哄绠�
-        List<InsBushing> insBushings = insBushingMapper.selectList(Wrappers.<InsBushing>lambdaQuery().eq(InsBushing::getInsSampleId, sampleId));
-        List<InsFibers> fibers = new ArrayList<>();
-        List<InsFiber> fiber = new ArrayList<>();
-        List<InsBushing> bush = new ArrayList<>();
-        for (InsBushing insBushing : insBushings) {
-            //鍐嶆煡璇㈠嚭鎵�鏈夌殑鍏夌氦甯�
-            List<InsFibers> insFibers = insFibersMapper.selectList(Wrappers.<InsFibers>lambdaQuery().eq(InsFibers::getInsBushingId, insBushing.getId()));
-            List<InsFiber> insFiberList = insFiberMapper.selectList(Wrappers.<InsFiber>lambdaQuery().eq(InsFiber::getInsBushingId, insBushing.getId()));
-            if (CollectionUtils.isNotEmpty(insFibers)) {
-                for (InsFibers insFiber : insFibers) {
-                    List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsFibersId, insFiber.getId()));
-                    List<Integer> collect = insProducts.stream().map(InsProduct::getInsResult)
-                            .filter(sm -> ObjectUtils.isNotEmpty(sm) && sm != 2).collect(Collectors.toList());
-                    if (insProducts.size() == collect.size()) {
-                        insFiber.setState(1);//宸叉楠�
-                    } else {
-                        insFiber.setState(0);//鏈楠�
-                    }
-                }
-                fibers.addAll(insFibers);
-                //鏌ュ嚭鍏夌氦甯︿笅鎵�鏈夌殑鍏夌氦
-                List<InsFiber> fiberList = insFiberMapper.selectList(Wrappers.<InsFiber>lambdaQuery().in(InsFiber::getInsFibersId, insFibers.stream().map(InsFibers::getId).collect(Collectors.toList())));
-                for (InsFiber insFiber : fiberList) {
-                    List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsFiberId, insFiber.getId()));
-                    List<Integer> collect = insProducts.stream().map(InsProduct::getInsResult)
-                            .filter(sm -> ObjectUtils.isNotEmpty(sm) && sm != 2).collect(Collectors.toList());
-                    if (insProducts.size() == collect.size()) {
-                        insFiber.setState(1);//宸叉楠�
-                    } else {
-                        insFiber.setState(0);//鏈楠�
-                    }
-                }
-                fiber.addAll(fiberList);
-            }
-            //濡傛灉濂楃涓嬫病鏈夊厜绾ゅ甫灏卞彧鏈夊厜绾や簡
-            else if (CollectionUtils.isNotEmpty(insFiberList)) {
-                for (InsFiber insFiber : insFiberList) {
-                    List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsFiberId, insFiber.getId()));
-                    List<Integer> collect = insProducts.stream().map(InsProduct::getInsResult)
-                            .filter(sm -> ObjectUtils.isNotEmpty(sm) && sm != 2).collect(Collectors.toList());
-                    if (insProducts.size() == collect.size()) {
-                        insFiber.setState(1);//宸叉楠�
-                    } else {
-                        insFiber.setState(0);//鏈楠�
-                    }
-                }
-                fiber.addAll(insFiberList);
-            }
-            //濡傛灉鍏夌氦甯﹀拰鍏夌氦閮芥病鏈夊氨鍙湁濂楃(鏉惧绠�)
-            else {
-                List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
-                        .eq(InsProduct::getInsBushId, insBushing.getId()));
-                List<Integer> collect = insProducts.stream()
-                        .map(InsProduct::getInsResult)
-                        .filter(sm -> ObjectUtils.isNotEmpty(sm) && sm != 2).collect(Collectors.toList());
-                if (insProducts.size() == collect.size()) {
-                    insBushing.setState(1);//宸叉楠�
-                } else {
-                    insBushing.setState(0);//鏈楠�
-                }
-                bush.add(insBushing);
-            }
-        }
-        map.put("鍏夌氦甯�", fibers);
-        map.put("鍏夌氦", fiber);
-        map.put("濂楃", bush);
-        return map;
-    }
-
-    //娓╁害寰幆鏌ョ湅鍒楄〃鏁版嵁(鍖呮嫭閫氳繃鏍峰搧id,寰幆娆℃暟,娓╁害,寰幆娆℃暟杩涜绛涢��)
-    @Override
-    public Map<String, Object> temCycle(Integer sampleId, String inspectionItem, String inspectionItemSubclass) {
-        Map<String, Object> map = new HashMap<>();
-        //鏍峰搧淇℃伅
-        SampleVo sampleVo = insSampleMapper.getDetailById(sampleId);
-        map.put("sampleVo", sampleVo);
-        List<ProductVo> productVos = new ArrayList<>();
-        //鍏堟煡鍑鸿繖涓牱鍝佷笅鏈夊摢浜涚鑹叉爣,鍏夌氦甯�,鍏夌氦鑹叉爣
-        //鍏堟煡鍑哄绠�
-        List<InsBushing> insBushings = insBushingMapper.selectList(Wrappers.<InsBushing>lambdaQuery().eq(InsBushing::getInsSampleId, sampleId));
-        if (insBushings.size() > 0) {
-            //閫氫俊--娓╁害寰幆
-            for (InsBushing insBushing : insBushings) {
-                //鍐嶆煡璇㈠嚭鎵�鏈夌殑鍏夌氦甯�
-                List<InsFibers> insFibers = insFibersMapper.selectList(Wrappers.<InsFibers>lambdaQuery().eq(InsFibers::getInsBushingId, insBushing.getId()));
-                if (CollectionUtils.isNotEmpty(insFibers)) {
-                    for (InsFibers insFiber : insFibers) {
-                        //鏌ュ嚭鍏夌氦甯︿笅鎵�鏈夌殑鍏夌氦
-                        List<InsFiber> fiberList = insFiberMapper.selectList(Wrappers.<InsFiber>lambdaQuery().eq(InsFiber::getInsFibersId, insFiber.getId()));
-                        for (InsFiber fiber : fiberList) {
-                            //鍐嶆牴鎹叧鑱旂殑鍏夌氦閰嶇疆鐨刬d鍜屽惊鐜鏁板拰娓╁害鍜屾牱鍝乮d杩涜鏌ヨ妫�楠岄」鐩�
-                            List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
-                                    .eq(InsProduct::getInsSampleId, sampleId)
-                                    .eq(InsProduct::getInspectionItem, inspectionItem)
-                                    .eq(InsProduct::getInspectionItemSubclass, inspectionItemSubclass)
-                                    .eq(InsProduct::getInsFiberId, fiber.getId()));
-                            for (InsProduct insProduct : insProducts) {
-                                InsProductResult insProductResult = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery()
-                                        .eq(InsProductResult::getInsProductId, insProduct.getId()));
-                                ProductVo productVo = new ProductVo();
-                                productVo.setCode(insFiber.getCode());
-                                productVo.setColor(fiber.getColor());
-                                productVo.setBushColor(insBushing.getColor());
-                                if (ObjectUtils.isNotEmpty(insProductResult)) {
-                                    insProduct.setInsProductResult(insProductResult);
-                                }
-                                //姹傚悓绛夋潯浠朵笅1娆″惊鐜�20搴﹀父娓╃殑璁$畻鍊�
-                                InsProductResult insProductResult1 = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, insProductMapper.selectOne(Wrappers.<InsProduct>lambdaQuery()
-                                        .eq(InsProduct::getInsSampleId, sampleId)
-                                        .eq(InsProduct::getInspectionItem, "1")
-                                        .eq(InsProduct::getInspectionItemSubclass, "20鈩�(甯告俯)")
-                                        .eq(InsProduct::getInspectionItemClass, insProduct.getInspectionItemClass())
-                                        .eq(InsProduct::getInsFiberId, fiber.getId())).getId()));
-                                if (ObjectUtils.isNotEmpty(insProductResult1) && !insProductResult1.getComValue().equals("[]")) {
-                                    insProduct.setComplue(insProductResult1.getComValue().split(":")[1].split("\"")[1]);
-                                }
-                                productVo.setInsProduct(insProduct);
-                                productVos.add(productVo);
-                            }
-                        }
-                    }
-                } else {
-                    //濡傛灉濂楃涓嬫病鏈夊厜绾ゅ甫灏卞彧鏈夊厜绾や簡
-                    List<InsFiber> insFiberList = insFiberMapper.selectList(Wrappers.<InsFiber>lambdaQuery().eq(InsFiber::getInsBushingId, insBushing.getId()));
-                    for (InsFiber fiber : insFiberList) {
-                        //鍐嶆牴鎹叧鑱旂殑鍏夌氦閰嶇疆鐨刬d鍜屽惊鐜鏁板拰娓╁害鍜屾牱鍝乮d杩涜鏌ヨ妫�楠岄」鐩�
-                        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
-                                .eq(InsProduct::getInsSampleId, sampleId)
-                                .eq(InsProduct::getInspectionItem, inspectionItem)
-                                .eq(InsProduct::getInspectionItemSubclass, inspectionItemSubclass)
-                                .eq(InsProduct::getInsFiberId, fiber.getId()));
-                        for (InsProduct insProduct : insProducts) {
-                            InsProductResult insProductResult = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, insProduct.getId()));
-                            ProductVo productVo = new ProductVo();
-                            productVo.setCode("-");
-                            productVo.setColor(fiber.getColor());
-                            productVo.setBushColor(fiber.getBushColor());
-                            insProduct.setInsProductResult(insProductResult);
-                            //姹傚悓绛夋潯浠朵笅1娆″惊鐜�20搴﹀父娓╃殑璁$畻鍊�
-                            InsProductResult insProductResult1 = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, insProductMapper.selectOne(Wrappers.<InsProduct>lambdaQuery()
-                                    .eq(InsProduct::getInsSampleId, sampleId)
-                                    .eq(InsProduct::getInspectionItem, "1")
-                                    .eq(InsProduct::getInspectionItemSubclass, "20鈩�(甯告俯)")
-                                    .eq(InsProduct::getInspectionItemClass, insProduct.getInspectionItemClass())
-                                    .eq(InsProduct::getInsFiberId, fiber.getId())).getId()));
-                            if (ObjectUtils.isNotEmpty(insProductResult1) && !insProductResult1.getComValue().equals("[]")) {
-                                insProduct.setComplue(insProductResult1.getComValue().split(":")[1].split("\"")[1]);
-                            }
-                            productVo.setInsProduct(insProduct);
-                            productVos.add(productVo);
-                        }
-                    }
-                }
-            }
-            productVos = productVos.stream().sorted(Comparator.comparing(productVo -> productVo.getInsProduct().getInspectionItemClass())).collect(Collectors.toList());
-        } else {
-            //鐢靛姏--鐑惊鐜拰娓╁崌璇曢獙
-            List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
-                    .eq(InsProduct::getInsSampleId, sampleId)
-                    .eq(InsProduct::getInspectionItem, inspectionItem));
-            for (InsProduct insProduct : insProducts) {
-                InsProductResult insProductResult = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, insProduct.getId()));
-                ProductVo productVo = new ProductVo();
-                if (ObjectUtils.isNotEmpty(insProductResult)) {
-                    insProduct.setInsProductResult(insProductResult);
-                }
-                productVo.setInsProduct(insProduct);
-                productVos.add(productVo);
-            }
-        }
-        map.put("productVos", productVos);
-        return map;
-    }
-
     @Override
     public List<String> upPlanUser2(Integer orderId) {
         List<Integer> sampleId = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId)).stream().map(InsSample::getId).collect(Collectors.toList());
@@ -547,9 +341,141 @@
                 .in(InsProductResult2::getInsProductId, insProductResultVo.getProductIds()));
     }
 
+    //鎵爜鎶ユ
+    @Override
+    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()
+                .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())
+                .eq(InsOrderState::getInsState, 5));
+        if (CollectionUtils.isNotEmpty(orderStates)) {
+            throw new ErrorException("璇ヨ鍗曠珯鐐圭殑浠诲姟宸茬粡缁撴潫璇曢獙,鏃犳硶鍐嶆杩涜璇曢獙!");
+        }
+        InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
+                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
+                .eq(InsOrderState::getLaboratory, sonLaboratory));
+        if (ObjectUtils.isNotEmpty(orderState)) {
+            //缁х画璇曢獙
+            if (orderState.getInsState() == 6) {
+                orderState.setInsState(0);
+                orderState.setNum(orderState.getNum() + 1);//閫掑
+                insOrderStateMapper.updateById(orderState);
+            } /*else {
+                throw new ErrorException("璇ヨ鍗曠珯鐐圭殑浠诲姟宸插垱寤�,鏃犳硶鍐嶆鍒涘缓!");
+            }*/
+        } else {
+            InsOrderState insOrderState = new InsOrderState();
+            insOrderState.setInsOrderId(insSample.getInsOrderId());
+            insOrderState.setLaboratory(sonLaboratory);
+            insOrderState.setInsState(0);
+            insOrderState.setNum(1);//鍒濆鏄涓�娆�
+            insOrderStateMapper.insert(insOrderState);
+        }
+        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 void saveInsContext(Map<String, Object> insContext,Integer num) {
+    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();
+    }
+
+
+    @Override
+    public void saveInsContext(Map<String, Object> insContext, Integer num) {
         Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
         CompletableFuture.supplyAsync(() -> {
             insContext.forEach((k, v) -> {
@@ -557,6 +483,7 @@
                 InsProduct insProduct = new InsProduct();
                 insProduct.setId(Integer.parseInt(k));
                 List<InsProductResult> results = insProductResultMapper.selectList(Wrappers.<InsProductResult>lambdaQuery()
+                        .eq(InsProductResult::getNum, num)
                         .eq(InsProductResult::getInsProductId, insProduct.getId()));
                 InsProductResult result;
                 if (CollectionUtils.isEmpty(results)) {
@@ -735,6 +662,7 @@
                 insSampleMapper.updateById(insSample);
                 /*鏍¢獙涓�涓媟esult琛�*/
                 List<InsProductResult> insProductResults = insProductResultMapper.selectList(Wrappers.<InsProductResult>lambdaQuery()
+                        .eq(InsProductResult::getNum, num)
                         .eq(InsProductResult::getInsProductId, insProduct.getId()));
                 if (insProductResults.size() > 1) {
                     for (int i = 1; i < insProductResults.size(); i++) {
@@ -821,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; //涓嶅悎鏍�
                     }
@@ -832,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 {
@@ -851,7 +781,6 @@
                                 } finally {
                                     continue;
                                 }
-
                             }
                         }
                     }
@@ -1024,7 +953,7 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int verifyPlan(Integer orderId, String laboratory, Integer type, String tell) {
+    public int verifyPlan(Integer orderId, String laboratory, Integer type, String tell) throws IOException {
         LocalDateTime now = LocalDateTime.now();
         Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
         List<InsUnPass> insUnPasses = new ArrayList<>();
@@ -1063,18 +992,21 @@
         }
         insUnPassService.saveBatch(insUnPasses);
         /*type=0  鍐嶆璇曢獙; type=1 缁х画璇曢獙 ; type=2 缁撴潫璇曢獙*/
-        switch (type) {
-            case 0:
-                /*鍐嶆璇曢獙:璇ュ崟瀛愰��鍥炲埌妫�楠岀姸鎬�(鎺掑簭鏀规垚褰撳墠鐨勬渶鍚�),娆℃暟閫掑(淇濈暀浠ュ墠鐨勬暟鎹�)锛�*/
-                //鏇存柊鍘熸潵鐨勬楠屼换鍔�
-                // 鏌ヨ鏍规嵁 id 鍊掑簭鎺掑垪鐨勭涓�鏉¤褰�
-                InsOrderState record = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
-                        .eq(InsOrderState::getInsOrderId, orderId)
-                        .eq(InsOrderState::getLaboratory, laboratory)
-                        .orderByDesc(InsOrderState::getId)
-                        .last("LIMIT 1")); // 纭繚鍙彇涓�鏉¤褰�
-                if (record != null) {
-                    // 鑾峰彇鍒扮涓�鏉¤褰曠殑 id 鍚庯紝鎵ц鏇存柊鎿嶄綔
+        // 鏌ヨ鏍规嵁 id 鍊掑簭鎺掑垪鐨勭涓�鏉¤褰�
+        InsOrderState record = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
+                .eq(InsOrderState::getInsOrderId, orderId)
+                .eq(InsOrderState::getLaboratory, laboratory)
+                .orderByDesc(InsOrderState::getId)
+                .last("LIMIT 1")); // 纭繚鍙彇涓�鏉¤褰�
+        if (record != null) {
+            //鏇存柊璁板綍
+            insOrderUserMapper.update(null, Wrappers.<InsOrderUser>lambdaUpdate()
+                    .eq(InsOrderUser::getInsOrderStateId, record.getId())
+                    .eq(InsOrderUser::getNum, record.getNum())
+                    .set(InsOrderUser::getTell, tell));
+            switch (type) {
+                case 0:
+                    //鍐嶆璇曢獙:璇ュ崟瀛愰��鍥炲埌妫�楠岀姸鎬�(鎺掑簭鏀规垚褰撳墠鐨勬渶鍚�),娆℃暟閫掑(淇濈暀浠ュ墠鐨勬暟鎹�)锛�
                     insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
                             .eq(InsOrderState::getId, record.getId())
                             .set(InsOrderState::getInsTime, now)
@@ -1083,80 +1015,34 @@
                             .set(InsOrderState::getVerifyUser, userId)
                             .set(InsOrderState::getNum, record.getNum() + 1)//娆℃暟鍔�1
                             .set(InsOrderState::getCreateTime, LocalDateTime.now()));
-                }
-                break;
-            case 1:
-                //缁х画璇曢獙:鍒欑户缁皢妫�楠屼换鍔¤浆鎺ヨ嚦涓嬩竴绔欑偣锛�
-                insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
-                        .eq(InsOrderState::getInsOrderId, orderId)
-                        .eq(InsOrderState::getLaboratory, laboratory)
-                        .set(InsOrderState::getInsTime, now)
-                        .set(InsOrderState::getInsState, 6)
-                        .set(InsOrderState::getVerifyTell, tell)
-                        .set(InsOrderState::getVerifyUser, userId));
-                //杞帴鑷充笅涓�绔欑偣,闇�瑕佸厛鍒ゆ柇鏄惁杩樻湁鍏朵綑璇曢獙瀹�,濡傛灉鏈夊叾浣欒瘯楠屽闇�瑕佸皢璁㈠崟涓嬪彂
-                List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
-                        .eq(InsSample::getInsOrderId, orderId).select(InsSample::getId));
-                List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList());
-                List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
-                        .in(InsProduct::getInsSampleId, ids)
-                        .eq(InsProduct::getState, 1));
-                List<Integer> list = new ArrayList<>();
-                list.add(4);
-                list.add(5);
-                list.add(6);
-                List<InsOrderState> insOrderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery()
-                        .eq(InsOrderState::getInsOrderId, orderId)
-                        .in(InsOrderState::getInsState, list));
-                List<String> strings = insOrderStates.stream().map(InsOrderState::getLaboratory).distinct().collect(Collectors.toList());
-                //闄ゅ幓褰撳墠澶嶆牳鐨勮瘯楠屽鍜屽凡缁忓鏍哥殑璇曢獙瀹�
-                List<String> collect = insProducts.stream()
-                        .map(InsProduct::getSonLaboratory)
-                        .distinct()
-                        .filter(s -> !s.equals(laboratory))
-                        .filter(s -> !strings.contains(s))
-                        .collect(Collectors.toList());
-                if (collect.size() > 0) {
-                    //瑕佸垽鏂墿浣欒瘯楠屽涓摢涓渶绌洪棽灏卞畨鎺掔粰鍝釜
-                    Map<String, Long> dataCounts = new HashMap<>();
-                    for (String sonLaboratory : collect) {
-                        Long count = insOrderStateMapper.selectCount(Wrappers.<InsOrderState>lambdaQuery()
-                                .eq(InsOrderState::getLaboratory, sonLaboratory)
-                                .ne(InsOrderState::getInsState, 4)
-                                .ne(InsOrderState::getInsState, 5)
-                                .ne(InsOrderState::getInsState, 6));
-                        dataCounts.put(sonLaboratory, count);
+                    break;
+                case 1:
+                    //缁х画璇曢獙:璇ョ珯鐐逛换鍔$粨鏉�(鍙互鍐嶆鎵爜妫�楠�)锛�
+                    insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
+                            .eq(InsOrderState::getInsOrderId, orderId)
+                            .eq(InsOrderState::getLaboratory, laboratory)
+                            .set(InsOrderState::getInsTime, now)
+                            .set(InsOrderState::getInsState, 6)
+                            .set(InsOrderState::getVerifyTell, tell)
+                            .set(InsOrderState::getVerifyUser, userId));
+                    break;
+                case 2:
+                    //缁撴潫璇曢獙:姝ゅ鎵樺崟鍋滄璇曢獙(鏃犳硶鍐嶆妫�楠�)銆�
+                    insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
+                            .eq(InsOrderState::getInsOrderId, orderId)
+                            .eq(InsOrderState::getLaboratory, laboratory)
+                            .set(InsOrderState::getInsTime, now)
+                            .set(InsOrderState::getInsState, 5)
+                            .set(InsOrderState::getVerifyTell, tell)
+                            .set(InsOrderState::getVerifyUser, userId));
+                    //濡傛灉璁㈠崟绫诲瀷鏄師鐞嗘牱鏈�,鍒欒璁㈠崟鐩存帴闂幆
+                    InsOrder insOrder = insOrderMapper.selectById(orderId);
+                    if (insOrder.getFormType().equals("鍘熺悊鏍锋満")) {
+                        insOrder.setState(4);
+                        insOrderMapper.updateById(insOrder);
                     }
-                    // 鏌ユ壘鏁版嵁閲忔渶灏戠殑鍏冪礌
-                    String minElement = null;
-                    Long minCount = Long.MAX_VALUE;
-                    for (Map.Entry<String, Long> entry : dataCounts.entrySet()) {
-                        if (entry.getValue() < minCount) {
-                            minCount = entry.getValue();
-                            minElement = entry.getKey();
-                        }
-                    }
-                    InsOrderState insOrderState = new InsOrderState();
-                    insOrderState.setInsOrderId(orderId);
-                    insOrderState.setLaboratory(minElement);
-                    insOrderState.setInsState(0);
-                    insOrderState.setNum(1);//鍒濆鏄涓�娆�
-                    insOrderStateMapper.insert(insOrderState);
-                } else {
-                    //濡傛灉缁х画璇曢獙娌℃湁鍏朵粬绔欑偣鐨勬楠屼换鍔¢偅灏辩粨鏉熻瘯楠�
-                    verifyPlan(orderId, laboratory, 2, tell);
-                }
-                break;
-            case 2:
-                //缁撴潫璇曢獙:姝ゅ鎵樺崟鍋滄璇曢獙锛岀洿鎺ョ敓鎴愭渶缁堟姤鍛婂拰璐圭敤缁熻銆�
-                insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
-                        .eq(InsOrderState::getInsOrderId, orderId)
-                        .eq(InsOrderState::getLaboratory, laboratory)
-                        .set(InsOrderState::getInsTime, now)
-                        .set(InsOrderState::getInsState, 5)
-                        .set(InsOrderState::getVerifyTell, tell)
-                        .set(InsOrderState::getVerifyUser, userId));
-                break;
+                    break;
+            }
         }
         return 1;
     }
@@ -1187,7 +1073,7 @@
     }
 
     @Override
-    public int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode) {
+    public int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode, String note, String term) {
         List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
                 .eq(InsSample::getInsOrderId, orderId).select(InsSample::getId));
         InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
@@ -1195,6 +1081,15 @@
                 .eq(InsOrderState::getLaboratory, laboratory)
                 .orderByDesc(InsOrderState::getId)
                 .last("LIMIT 1"));// 纭繚鍙彇涓�鏉¤褰�
+        /*璁板綍妫�楠屼换鍔℃瘡娆$殑澶囨敞淇℃伅*/
+        InsOrderUser insOrderUser = new InsOrderUser();
+        insOrderUser.setInsOrderStateId(orderState.getId());
+        insOrderUser.setSubmitUser(getLook.selectPowerByMethodAndUserId(null).get("userId"));
+        insOrderUser.setSubmitTime(LocalDateTime.now());
+        insOrderUser.setNum(orderState.getNum());
+        insOrderUser.setNote(ObjectUtils.isNotEmpty(note) ? note : null);
+        insOrderUser.setTerm(ObjectUtils.isNotEmpty(term) ? term : null);
+        insOrderUserMapper.insert(insOrderUser);
         List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList());
         List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                 .in(InsProduct::getInsSampleId, ids)
@@ -1204,10 +1099,7 @@
                         .isNull(InsProduct::getInsResult)
                         .or()
                         .eq(InsProduct::getInsResult, 2)
-                )
-                .isNull(InsProduct::getInsFiberId)
-                .isNull(InsProduct::getInsFibersId));
-        insProducts.addAll(insProductMapper.selectFiberInsProduct(ids, laboratory));
+                ));
         if (insProducts.size() > 0) {
             String str = "";
             int count = 0;
@@ -1244,11 +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("璐ㄩ噺閮�")) {
-            verifyPlan(orderId, laboratory, 2, null);
-        } 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();
@@ -1276,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);
@@ -1299,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);
@@ -1340,4 +1241,6 @@
                 return "鏈煡";
         }
     }
+
+
 }

--
Gitblit v1.9.3