From 23875dab418476d3b01bbd784a161c9f2b6b6ea1 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 19 九月 2024 16:25:12 +0800
Subject: [PATCH] 编号规则变更

---
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java |   98 +++++++++++++++++++++++++++++++++++-------------
 1 files changed, 71 insertions(+), 27 deletions(-)

diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java
index 3a719a9..cccbc18 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java
@@ -25,6 +25,8 @@
 import com.itextpdf.text.pdf.PdfStamper;
 import com.yuanchu.mom.common.GetLook;
 import com.yuanchu.mom.common.PrintChina;
+import com.yuanchu.mom.dto.InsReportDto;
+import com.yuanchu.mom.dto.InsReportDto1;
 import com.yuanchu.mom.dto.ReportPageDto;
 import com.yuanchu.mom.dto.SampleProductDto;
 import com.yuanchu.mom.exception.ErrorException;
@@ -95,10 +97,19 @@
     private InsOrderMapper insOrderMapper;
 
     @Resource
+    private StandardMethodListMapper standardMethodListMapper;
+
+    @Resource
     private InsOrderStateMapper insOrderStateMapper;
 
     @Resource
     private InsProductMapper insProductMapper;
+
+    @Resource
+    private InsProductResultMapper insProductResultMapper;
+
+    @Resource
+    private InsProductResult2Mapper insProductResult2Mapper;
 
     @Resource
     private InsSampleMapper insSampleMapper;
@@ -325,7 +336,7 @@
                 for (File f : files) {
                     // 鏍规嵁鏂囦欢鍚嶆煡璇d
                     String name = f.getName();
-                    InsReport insReport = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery().like(InsReport::getCode, f.getName().replace(".docx", "").replace("JCZX", "JCZX/")));
+                    InsReport insReport = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery().like(InsReport::getCode, f.getName().replace(".docx", "")));
                     if (ObjectUtils.isEmpty(insReport)) {
                         throw new ErrorException("娌℃湁鎵惧埌 " + f.getName() + " 杩欎釜鏂囦欢瀵瑰簲鐨勬姤鍛婃暟鎹�");
                     }
@@ -364,16 +375,16 @@
     //鏄惁闇�瑕佺敓鎴愭姤鍛�: 0涓嶉渶瑕�;1闇�瑕�
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int isReport(Integer id, Integer state) {
+    public int isReport(InsReportDto insReportDto) {
         //鍏堝垽鏂璁㈠崟鏄惁鍙互鍘荤敓浜ф姤鍛�
-        Long count = insOrderStateMapper.selectCount(Wrappers.<InsOrderState>lambdaQuery().eq(InsOrderState::getInsOrderId, id).eq(InsOrderState::getInsState, 5));
+        Long count = insOrderStateMapper.selectCount(Wrappers.<InsOrderState>lambdaQuery().eq(InsOrderState::getInsOrderId, insReportDto.getId()).eq(InsOrderState::getInsState, 5));
         if (count > 0) {
-            if (state == 1) {
-                generateReport(id);
+            if (insReportDto.getState() == 1) {
+                generateReport(insReportDto.getId(), insReportDto.getInsReportDto1s());
             } else {
                 //缁撴潫璁㈠崟
                 InsOrder insOrder = new InsOrder();
-                insOrder.setId(id);
+                insOrder.setId(insReportDto.getId());
                 insOrder.setState(4);
                 insOrderMapper.updateById(insOrder);
             }
@@ -381,6 +392,13 @@
             throw new ErrorException("璇ヨ鍗曡繕鏈粨鏉熻瘯楠�,鏃犳硶鐢熶骇鎶ュ憡!");
         }
         return 0;
+    }
+
+    //鏌ュ嚭璇ヨ鍗曚笅姣忎釜绔欑偣涓嬬殑妫�楠屾鏁�
+    @Override
+    public List<InsOrderState> getInsOrderStateCount(Integer id) {
+        List<InsOrderState> insOrderStates = insOrderStateMapper.getInsOrderStateCount(id);
+        return insOrderStates;
     }
 
 
@@ -578,19 +596,16 @@
     }
 
     //鐢熸垚鎶ュ憡
-    private void generateReport(Integer orderId) {
+    private void generateReport(Integer orderId, List<InsReportDto1> insReportDto1s) {
         LocalDateTime now = LocalDateTime.now();
         InsOrder insOrder = insOrderMapper.selectById(orderId);
         //濮旀墭閮ㄩ棬 departLims
         String departLims = userMapper.selectDepartLims(insOrder.getPrepareUser());
         //samples鏄繃婊ゆ帀娌℃湁妫�楠岄」鐩殑鏍峰搧
         List<SampleProductDto> samples = insSampleMapper.selectSampleProductListByOrderId(orderId);
-        if (samples.size()==0){
-            samples=insSampleMapper.selectSampleProductListByOrder2Id(orderId);
-        }
         String sampleCode = samples.get(0).getSampleCode();
         InsReport insReport = new InsReport();
-        insReport.setCode(insOrder.getEntrustCode());
+        insReport.setCode(insOrder.getEntrustCode().replace("WT","TXJC"));
         insReport.setInsOrderId(orderId);
         List<Map<String, Object>> tables = new ArrayList<>();
         Set<String> standardMethod = new HashSet<>();
@@ -603,39 +618,67 @@
         String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
         samples.forEach(s -> {
             models.add(s.getModel());
-            standardMethod.add(insOrderMapper.getStandardMethodCode(s.getStandardMethodListId()));
+            standardMethod.addAll(standardMethodListMapper.selectList(Wrappers.<StandardMethodList>lambdaQuery()
+                    .in(StandardMethodList::getId,Arrays.stream(s.getStandardMethodListId().replaceAll("[\\[\\]]", "").split(","))
+                            .map(String::trim).map(Integer::parseInt).collect(Collectors.toList()))).stream().map(aa->{return aa.getCode()+" "+aa.getName();}).distinct().collect(Collectors.toList()));
             //鎬绘暟
-            Long productCount = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsSampleId, s.getId()));
+            Long productCount = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
+                    .eq(InsProduct::getInsSampleId, s.getId()));
             productSize.set(productSize.get() + Integer.parseInt(productCount + ""));
             //涓嶅垽瀹�
             Long productCount1 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
                     .eq(InsProduct::getInsSampleId, s.getId())
-                    .eq(InsProduct::getInsResult,3));
+                    .eq(InsProduct::getInsResult, 3));
             productSize1.set(productSize1.get() + Integer.parseInt(productCount1 + ""));
             //涓嶅悎鏍�
             Long productCount2 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
                     .eq(InsProduct::getInsSampleId, s.getId())
-                    .eq(InsProduct::getInsResult,0));
+                    .eq(InsProduct::getInsResult, 0));
             productSize2.set(productSize2.get() + Integer.parseInt(productCount2 + ""));
             //鍚堟牸
             Long productCount3 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
                     .eq(InsProduct::getInsSampleId, s.getId())
-                    .eq(InsProduct::getInsResult,1));
+                    .eq(InsProduct::getInsResult, 1));
             productSize3.set(productSize3.get() + Integer.parseInt(productCount3 + ""));
-            for (InsProduct b : s.getInsProduct()) {
-                if (b.getInsProductResult() != null) {
-                    List<JSONObject> jsonObjects = JSON.parseArray(b.getInsProductResult().getEquipValue(), JSONObject.class);
+            //灏嗛」鐩寜鐓х珯鐐硅繘琛屽垎绫�
+            Map<String, List<InsProduct>> listMap = s.getInsProduct().stream().collect(Collectors.groupingBy(InsProduct::getLaboratory));
+            // 鍒涘缓涓�涓� Map 灏嗙珯鐐瑰拰椤圭洰ID鐨勬槧灏勫叧绯�
+            Map<String, Set<Integer>> labToDeviceMap = new HashMap<>();
+            // 鑾峰彇鎵�鏈夌珯鐐圭殑椤圭洰ID 鍒楄〃
+            for (Map.Entry<String, List<InsProduct>> entry : listMap.entrySet()) {
+                Set<Integer> deviceIds = entry.getValue().stream()
+                        .map(InsProduct::getId)
+                        .collect(Collectors.toSet());
+                labToDeviceMap.put(entry.getKey(), deviceIds);
+            }
+            for (InsReportDto1 insReportDto1 : insReportDto1s) {
+                String laboratory = insReportDto1.getLaboratory();
+                if (!labToDeviceMap.containsKey(laboratory)) {
+                    continue;
+                }
+                Set<Integer> deviceIds = labToDeviceMap.get(laboratory);
+                Integer num = insReportDto1.getNum();
+                List<InsProductResult> insProductResults = insProductResultMapper.selectList(
+                        Wrappers.<InsProductResult>lambdaQuery()
+                                .eq(InsProductResult::getNum, num)
+                                .in(InsProductResult::getInsProductId, deviceIds));
+                for (InsProductResult insProductResult : insProductResults) {
+                    List<JSONObject> jsonObjects = JSON.parseArray(insProductResult.getEquipValue(), JSONObject.class);
                     for (JSONObject jsonObject : jsonObjects) {
-                        if (!"".equals(jsonObject.get("v") + "")) {
-                            deviceSet.add(jsonObject.get("v") + "");
+                        String value = jsonObject.getString("v");
+                        if (value != null && !value.isEmpty()) {
+                            deviceSet.add(value);
                         }
                     }
                 }
-                if (b.getInsProductResult2() != null) {
-                    for (InsProductResult2 jsonObject : b.getInsProductResult2()) {
-                        if (jsonObject.getEquipValue() != null) {
-                            deviceSet.add(jsonObject.getEquipValue());
-                        }
+                List<InsProductResult2> insProductResult2s = insProductResult2Mapper.selectList(
+                        Wrappers.<InsProductResult2>lambdaQuery()
+                                .eq(InsProductResult2::getNum, num)
+                                .in(InsProductResult2::getInsProductId, deviceIds));
+                for (InsProductResult2 result2 : insProductResult2s) {
+                    String equipValue = result2.getEquipValue();
+                    if (equipValue != null && !equipValue.isEmpty()) {
+                        deviceSet.add(equipValue);
                     }
                 }
             }
@@ -654,8 +697,9 @@
         }
         StringBuilder standardMethod2 = new StringBuilder();
         for (String s : standardMethod) {
-            standardMethod2.append("銆�").append(s);
+            standardMethod2.append("锛沑n").append(s);
         }
+        standardMethod2.append("锛沑n").append("GB/T 9410-2008 銆婄Щ鍔ㄩ�氫俊澶╃嚎閫氱敤鎶�鏈鑼冦��");
         standardMethod2.replace(0, 1, "");
         tables.forEach(table -> {
             table.put("tableSize", tables.size() + 1);

--
Gitblit v1.9.3