From edd98c54519f1f36fb561bdc1cb7aa33c6d68530 Mon Sep 17 00:00:00 2001
From: 朱佳吉 <1527963051@qq.com>
Date: 星期二, 07 五月 2024 17:35:17 +0800
Subject: [PATCH] 通过pid获取检验单当前试验室所有项目是否有检验结果后进行判断检验单是否更改成"已检"状态

---
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java |   70 ++++++++++++++++++++++++++---------
 1 files changed, 52 insertions(+), 18 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 15ca9f6..b4b7cfd 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
@@ -6,6 +6,7 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -141,7 +142,6 @@
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public void saveInsContext(Map<String, Object> insContext) {
         Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
         CompletableFuture.supplyAsync(() -> {
@@ -173,7 +173,7 @@
                     }
                     result.setInsValue(JSON.toJSONString(iv));
                 }
-                if (jo.get("comValue") != null) {
+                if (jo.get("comValue") != null && !Objects.equals(jo.get("comValue"), "")) {
                     JSONArray jsonArray2 = JSON.parseArray(JSON.toJSONString(jo.get("comValue")));
                     List<Map<String, Object>> cv = new ArrayList<>();
                     for (Object o : jsonArray2) {
@@ -184,10 +184,13 @@
                     }
                     result.setComValue(JSON.toJSONString(cv));
                 }
-                JSONObject resValue = JSON.parseObject(JSON.toJSONString(jo.get("resValue")));
-                if (resValue.get("v") != null) {
-                    insProduct.setLastValue(JSON.parseObject(JSON.toJSONString(resValue.get("v"))).get("v") + "");
-                }
+                try {
+                    JSONObject resValue = JSON.parseObject(JSON.toJSONString(jo.get("resValue")));
+                    if (resValue.get("v") != null) {
+                        Object o = JSON.parseObject(JSON.toJSONString(resValue.get("v"))).get("v");
+                        insProduct.setLastValue(o==null?null:(o + ""));
+                    }
+                }catch (Exception e){}
                 if (jo.get("equipValue") != null) {
                     JSONArray jsonArray2 = JSON.parseArray(JSON.toJSONString(jo.get("equipValue")));
                     List<Map<String, Object>> ev = new ArrayList<>();
@@ -239,8 +242,32 @@
                 }
                 insSampleMapper.updateById(insSample);
             });
-            return null;
+            return insContext.keySet().stream().findFirst().orElse(null);
         }).thenAccept(res -> {
+            if(res!=null){
+                int pId = Integer.parseInt(res.replaceAll("\\D+", ""));
+                InsProduct insProduct = insProductMapper.selectById(pId);
+                // 閫氳繃pId 鑾峰彇褰撳墠鏍锋湰id
+                int sampleId = insProductMapper.selectById(pId).getInsSampleId();
+                // 閫氳繃鏍锋湰id鑾峰彇璁㈠崟id
+                int orderId = insSampleMapper.selectById(sampleId).getInsOrderId();
+                // 閫氳繃璁㈠崟id鏌ユ壘鎵�鏈夋牱鏈琲d
+                List<Integer> sampleIds = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId)).stream().map(InsSample::getId).collect(Collectors.toList());
+                // 閫氳繃妫�鏌ユ瘡涓�涓牱鏈琲d鏌ュ埌灞炰簬妫�楠岄」缁撹 is null鐨勬暟閲�
+                Long count = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery().in(InsProduct::getInsSampleId, sampleIds).isNull(InsProduct::getInsResult).eq(InsProduct::getSonLaboratory, insProduct.getSonLaboratory()));
+                // is null鐨勬暟閲忎负0鏄皢璁㈠崟鐘舵�佽〃鐨勭姸鎬佹敼涓哄凡妫�楠�
+                List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().in(InsProduct::getInsSampleId, sampleIds).isNull(InsProduct::getInsResult).eq(InsProduct::getSonLaboratory, insProduct.getSonLaboratory()));
+                insProducts.forEach(insProduct1 -> {
+                    System.out.println(insProduct1.getInsResult());
+                    System.out.println(insProduct1.getId());
+                });
+                if (count == 0) {
+                    insOrderStateMapper.update(new InsOrderState(), Wrappers.<InsOrderState>lambdaUpdate()
+                            .eq(InsOrderState::getInsOrderId, orderId)
+                            .eq(InsOrderState::getLaboratory, insProduct.getSonLaboratory())
+                            .set(InsOrderState::getInsState, 2));
+                }
+            }
         }).exceptionally(e -> {
             e.printStackTrace();
             return null;
@@ -276,16 +303,16 @@
             List<Map<String, Object>> tables = new ArrayList<>();
             Set<String> standardMethod = new HashSet<>();
             Set<String> deviceSet = new HashSet<>();
-            AtomicReference<String> models = new AtomicReference<>("");
+            Set<String> models = new HashSet<>();
             AtomicReference<Integer> productSize = new AtomicReference<>(0);
             String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
             samples.forEach(a -> {
+                models.add(a.getModel());
                 Set<String> templateSet = new HashSet<>();
                 getTemplateThing(set, map2, a);
                 for (InsProduct b : a.getInsProduct()) {
-                    models.set(models.get()+b.getModel());
                     standardMethod.add(b.getMethodS());
-                    productSize.set(productSize.get()+1);
+                    productSize.set(productSize.get() + 1);
                     if (b.getInsProductResult() != null) {
                         List<JSONObject> jsonObjects = JSON.parseArray(b.getInsProductResult().getEquipValue(), JSONObject.class);
                         for (JSONObject jsonObject : jsonObjects) {
@@ -379,6 +406,7 @@
                             if ("鍙傛暟".equals(v.get("v"))) delSet.add(jo1.get("c") + "");
                         }
                     }
+                    // TODO: 2024/5/5 涓嬪垪寰幆缂哄皯word鍚堝苟鍗曞厓鏍肩殑鎿嶄綔
                     for (int i = 0; i < temp.size(); i++) {
                         JSONObject jo1 = temp.get(i);
                         TextRenderData textRenderData = new TextRenderData();
@@ -509,7 +537,8 @@
             String url;
             try {
                 InputStream inputStream = this.getClass().getResourceAsStream("/static/report-template.docx");
-                File file = File.createTempFile("temp", ".tmp");OutputStream outputStream = new FileOutputStream(file);
+                File file = File.createTempFile("temp", ".tmp");
+                OutputStream outputStream = new FileOutputStream(file);
                 IOUtils.copy(inputStream, outputStream);
                 url = file.getAbsolutePath();
             } catch (FileNotFoundException e) {
@@ -525,8 +554,7 @@
             tables.forEach(table -> {
                 table.put("tableSize", tables.size() + 1);
             });
-//            List<Map<String, String>> deviceList = insOrderMapper.selectDeviceList(deviceSet);
-            List<Map<String, String>> deviceList = new ArrayList<>();
+            List<Map<String, String>> deviceList = insOrderMapper.selectDeviceList(deviceSet);
             Map<String, String> codeStr = new HashMap<>();
             codeStr.put("鎶ュ憡缂栧彿", insReport.getCode());
             codeStr.put("鏍峰搧鍚嶇О", insOrder.getSample());
@@ -539,6 +567,11 @@
             } catch (Exception e) {
                 throw new RuntimeException(e);
             }
+            String modelStr = "";
+            for (String model : models) {
+                modelStr += "," + model;
+            }
+            String finalModelStr = modelStr;
             ConfigureBuilder builder = Configure.builder();
             builder.useSpringEL(true);
             XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
@@ -553,19 +586,19 @@
                         put("standardMethod", standardMethod2);
                         put("deviceList", deviceList);
                         put("twoCode", Pictures.ofLocal(codePath).create());
-                        put("models", models);
+                        put("models", finalModelStr.replace(",", ""));
                         put("productSize", productSize);
                         put("createTime", now.format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�")));
-                        put("createTimeEn", monthNames[now.getMonthValue()-1]+" "+now.getDayOfMonth()+", "+now.getYear());
+                        put("createTimeEn", monthNames[now.getMonthValue() - 1] + " " + now.getDayOfMonth() + ", " + now.getYear());
                         put("insTime", insOrder.getInsTime().format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�")));
-                        put("insTimeEn", monthNames[insOrder.getInsTime().getMonthValue()-1]+" "+now.getDayOfMonth()+", "+now.getYear());
+                        put("insTimeEn", monthNames[insOrder.getInsTime().getMonthValue() - 1] + " " + now.getDayOfMonth() + ", " + now.getYear());
                         put("writeUrl", null);
                         put("insUrl", null);
                         put("examineUrl", null);
                         put("ratifyUrl", null);
                     }});
             try {
-                String name = now.format(DateTimeFormatter.ofPattern("yy_MM_dd&HH_mm_ss")) + ".docx";
+                String name = insReport.getCode().replace("/", "") + ".docx";
                 template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
                 insReport.setUrl("/word/" + name);
                 insReportMapper.insert(insReport);
@@ -585,7 +618,7 @@
                 product.setTemplate(new ArrayList<>());
                 continue;
             }
-            if (set.add(product.getTemplateId())) {
+            if (product.getTemplateId() != null && set.add(product.getTemplateId())) {
                 map2.put(product.getTemplateId(), standardTemplateService.getStandTempThingById(product.getTemplateId()) + "");
             }
             String thing = map2.get(product.getTemplateId());
@@ -598,6 +631,7 @@
                 style.put("columnlen", config.get("columnlen"));
                 product.setTemplate(cellData);
                 product.setStyle(style);
+                product.setTemplateName(standardTemplateService.getStandTempNameById(product.getTemplateId()));
             }
         }
     }

--
Gitblit v1.9.3