From e05875fa75605595b192fca04e598598cb2f2931 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期五, 13 九月 2024 17:45:07 +0800
Subject: [PATCH] 代码优化+检验下单新增字段下发至对象

---
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java |  272 +++++++++++++-----------------------------------------
 1 files changed, 67 insertions(+), 205 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..ea2c45c 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,14 @@
 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.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;
@@ -127,18 +133,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
@@ -229,10 +223,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 +234,7 @@
             case 0:
                 //鏍峰搧
                 insProducts = insSampleMapper.getInsProduct1(id, laboratory);
-                if (insProducts.size()==0){
+                if (insProducts.size() == 0) {
                     insProducts = insSampleMapper.getIns2Product1(id, laboratory);
                 }
                 break;
@@ -266,12 +256,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 +346,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());
@@ -549,7 +363,7 @@
 
 
     @Override
-    public void saveInsContext(Map<String, Object> insContext,Integer num) {
+    public void saveInsContext(Map<String, Object> insContext, Integer num) {
         Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
         CompletableFuture.supplyAsync(() -> {
             insContext.forEach((k, v) -> {
@@ -557,6 +371,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 +550,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++) {
@@ -1024,7 +840,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<>();
@@ -1158,7 +974,52 @@
                         .set(InsOrderState::getVerifyUser, userId));
                 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) {
@@ -1204,10 +1065,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;
@@ -1247,7 +1105,11 @@
         /*濡傛灉鏄疌绫昏鍗曚笖鏄笅鍙戝埌璐ㄩ噺閮�,鍒欑洿鎺ュ鏍搁�氳繃(缁撴潫璇曢獙)*/
         InsOrder insOrder = insOrderMapper.selectById(orderId);
         if (insOrder.getOrderType().equals("C") && insOrder.getDepartmentLims().equals("璐ㄩ噺閮�")) {
-            verifyPlan(orderId, laboratory, 2, null);
+            try {
+                verifyPlan(orderId, laboratory, 2, null);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
         } else {
             Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
             //LIMS绯荤粺娑堟伅鎺ㄩ��

--
Gitblit v1.9.3