From 21dedbb10f307260ac6fd77b826fc9158160c2bb Mon Sep 17 00:00:00 2001
From: Crunchy <3114200645@qq.com>
Date: 星期三, 24 七月 2024 15:20:22 +0800
Subject: [PATCH] 数采bug调整

---
 cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java                     |    3 
 cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java          |   35 +++++++----
 cnas-server/src/main/resources/mapper/DeviceMapper.xml                                 |    8 +-
 cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java                   |   50 +++++-----------
 cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceConfigDtoPage.java                 |    2 
 inspect-server/src/main/resources/mapper/InsOrderMapper.xml                            |   12 +++-
 cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java             |   13 +++-
 cnas-server/src/main/resources/mapper/DataConfigMapper.xml                             |    3 
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java |    5 -
 inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderMapper.java                |    4 +
 cnas-server/src/main/java/com/yuanchu/mom/pojo/DataConfig.java                         |   10 +++
 11 files changed, 79 insertions(+), 66 deletions(-)

diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java
index 96f6c17..262ec8b 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java
@@ -8,6 +8,7 @@
 import com.yuanchu.mom.annotation.ValueClassify;
 import com.yuanchu.mom.dto.DataConfigDto;
 import com.yuanchu.mom.dto.DeviceDto;
+import com.yuanchu.mom.exception.ErrorException;
 import com.yuanchu.mom.pojo.DataConfig;
 import com.yuanchu.mom.pojo.Device;
 import com.yuanchu.mom.service.DataConfigService;
@@ -194,7 +195,11 @@
     @PostMapping("/saveDataAcquisitionConfiguration")
     public Result<?> saveDataAcquisitionConfiguration(@RequestParam(value = "deviceId") Integer deviceId, @RequestBody DataConfigDto dataConfigList) {
         if (dataConfigList.getIsDevice()) {
-            System.out.println();
+            Device one = deviceService.getOne(Wrappers.<Device>lambdaQuery()
+                    .eq(Device::getIp, dataConfigList.getIp()));
+            if (ObjectUtils.isNotEmpty(one)) {
+                throw new ErrorException("璇P锛�" + dataConfigList.getIp() + "宸茬粡缁戝畾浜嗚澶囷細" + one.getDeviceName());
+            }
             Device device = new Device();
             device.setId(deviceId);
             device.setCollectUrl(dataConfigList.getCollectUrl());
@@ -223,11 +228,13 @@
     @GetMapping("/queryDataAcquisitionConfiguration")
     public Result<?> queryDataAcquisitionConfiguration(@RequestParam("deviceId") Integer deviceId,
                                                        @RequestParam("isDevice") Boolean isDevice,
-                                                       @RequestParam(value = "insProductItem", required = false) String insProductItem) {
+                                                       @RequestParam(value = "inspectionItem", required = false) String inspectionItem,
+                                                       @RequestParam(value = "inspectionItemSubclass", required = false) String inspectionItemSubclass) {
         if (isDevice) {
             List<DataConfig> list = dataConfigService.list(Wrappers.<DataConfig>lambdaQuery()
                 .eq(DataConfig::getDeviceId, deviceId)
-                .eq(DataConfig::getInsProductItem, insProductItem));
+                .eq(DataConfig::getInspectionItem, inspectionItem)
+                .eq(DataConfig::getInspectionItemSubclass, inspectionItemSubclass));
             return Result.success(list);
         } else {
             return Result.success(dataConfigService.selectDataConfigList(deviceId));
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceConfigDtoPage.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceConfigDtoPage.java
index 779fce1..311ff58 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceConfigDtoPage.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceConfigDtoPage.java
@@ -40,7 +40,7 @@
 
     @ValueTableShow(8)
     @ApiModelProperty(value = "妫�楠岄」瀛愰」")
-    private String inspectionItemSubClass;
+    private String inspectionItemSubclass;
 
     @ValueTableShow(9)
     @ApiModelProperty(value = "鍏紡")
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java
index 8635854..572a1aa 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java
@@ -9,6 +9,7 @@
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 璁惧(Device)琛ㄦ暟鎹簱璁块棶灞�
@@ -33,6 +34,6 @@
 
     IPage<DeviceDto> selectDeviceParameterPage(Page page, @Param("ew") QueryWrapper<DeviceDto> queryWrappers);
 
-    List<String> getInspectionItemSubclass(@Param("id") Integer id);
+    List<Map<String, Object>> getInspectionItemSubclass(@Param("id") Integer id);
 }
 
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DataConfig.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DataConfig.java
index a501281..50ac66b 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DataConfig.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DataConfig.java
@@ -1,6 +1,7 @@
 package com.yuanchu.mom.pojo;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
@@ -50,6 +51,13 @@
     @ApiModelProperty("璁惧id")
     private Integer deviceId;
 
-    @ApiModelProperty("妫�楠岄」鐩悕绉�")
+    @ApiModelProperty("妫�楠岄」鐩�")
+    private String inspectionItem;
+
+    @ApiModelProperty("妫�楠岄」瀛愰」")
+    private String inspectionItemSubclass;
+
+    @TableField(exist = false)
+    @ApiModelProperty("妫�楠岄」瀛愰」")
     private String insProductItem;
 }
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
index d8609a0..453ff9a 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
@@ -136,23 +136,30 @@
         String ip =  ipAddress.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ipAddress;
         List<Device> device = baseMapper.selectList(Wrappers.<Device>lambdaQuery()
                 .eq(Device::getIp, ip));
+        if(device.size() > 1) {
+            throw new ErrorException("IP锛�" + ip + "閰嶇疆浜嗚澶囧涓澶囷紝鏃犳硶杩涜鏁伴噰锛�");
+        }
         if (ObjectUtils.isEmpty(device)) {
             throw new ErrorException("鏈粰璇P锛�" + ip + "閰嶇疆璁惧锛屾棤娉曡繘琛屾暟閲囷紒");
         }
-        List<String> inspectionItemSubclass = baseMapper.getInspectionItemSubclass(id);
-        Map<String, String> hashMap = new HashMap<>();
-        device.forEach(i -> {
-            if (ObjectUtils.isEmpty(i.getFileType()) || ObjectUtils.isEmpty(i.getCollectUrl())) {
-                throw new ErrorException("鏈粰璇ワ細" + i.getDeviceName() + "璁惧閰嶇疆閲囬泦璺緞鎴栨枃浠跺悗缂�锛�");
-            }
-            List<DataConfig> list = dataConfigService.list(Wrappers.<DataConfig>lambdaQuery()
-                    .eq(DataConfig::getDeviceId, i.getId())
-                    .in(DataConfig::getInsProductItem, inspectionItemSubclass)
-                    .orderBy(false, false, DataConfig::getId));
-            hashMap.putAll(DataAcquisition.dataAcquisitionEntrance(request, list, i, entrustCode, sampleCode, ip));
+        List<Map<String, Object>> inspectionItemSubclass = baseMapper.getInspectionItemSubclass(id);
+        if (ObjectUtils.isEmpty(device.get(0).getFileType()) || ObjectUtils.isEmpty(device.get(0).getCollectUrl())) {
+            throw new ErrorException("鏈粰璇ワ細" + device.get(0).getDeviceName() + "璁惧閰嶇疆閲囬泦璺緞鎴栨枃浠跺悗缂�锛�");
+        }
+        List<DataConfig> list1 = new ArrayList<>();
+        inspectionItemSubclass.forEach(i -> {
+             List<DataConfig> list = dataConfigService.list(Wrappers.<DataConfig>lambdaQuery()
+                .eq(DataConfig::getDeviceId, device.get(0).getId())
+                .eq(DataConfig::getInspectionItem, i.get("inspection_item"))
+                .eq(DataConfig::getInspectionItemSubclass, i.get("inspection_item_subclass"))
+                .orderBy(false, false, DataConfig::getId));
+            list1.addAll(list);
         });
-        String frequency = DataAcquisition.createFrequency(entrustCode, sampleCode);
-        hashMap.put("frequency", frequency);
-        return Result.success(hashMap);
+        Map<String, String> map = DataAcquisition.dataAcquisitionEntrance(list1, device.get(0), entrustCode, sampleCode, ip);
+        if (ObjectUtils.isNotEmpty(map)) {
+            String frequency = DataAcquisition.createFrequency(entrustCode, sampleCode);
+            map.put("frequency", frequency);
+        }
+        return Result.success(map);
     }
 }
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java b/cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java
index d4e249a..3f15b84 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java
@@ -10,7 +10,6 @@
 import com.yuanchu.mom.pojo.DataConfig;
 import com.yuanchu.mom.pojo.Device;
 
-import javax.servlet.http.HttpServletRequest;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -30,12 +29,11 @@
     /**
      * 鏁伴噰鍏ュ彛
      *
-     * @param request
      * @param dataConfig
      * @param device
      * @return
      */
-    public static Map<String, String> dataAcquisitionEntrance(HttpServletRequest request, List<DataConfig> dataConfig, Device device, String entrustCode, String sampleCode, String ip) {
+    public static Map<String, String> dataAcquisitionEntrance(List<DataConfig> dataConfig, Device device, String entrustCode, String sampleCode, String ip) {
         String http = HTTP + ip + GETFILE + "?filePath=" + device.getCollectUrl() + "&fileExtension=" + device.getFileType();
         String result = null;
         try {
@@ -54,7 +52,11 @@
         } else {
             String data = jsonObject.get("data").toString();
             // 鑰冭檻鍒颁竴涓娴嬮」鍙兘浼氬瓨鍦ㄥ涓暟閲囬厤缃紝鎵�浠ラ渶瑕佽繘琛屽垎缁�
-            Map<String, List<DataConfig>> userMap = dataConfig.stream().collect(Collectors.groupingBy(DataConfig::getInsProductItem));
+            Map<String, List<DataConfig>> userMap = dataConfig.stream()
+                    .peek(i -> i.setInsProductItem(
+                            i.getInspectionItem().equals(i.getInspectionItemSubclass()) ? i.getInspectionItem() + "," : i.getInspectionItem() + "," + i.getInspectionItemSubclass()
+                    ))
+                    .collect(Collectors.groupingBy(DataConfig::getInsProductItem));
             Map<String, String> map;
             switch (device.getFileType()) {
                 case ".docx":
@@ -73,7 +75,7 @@
                     map = analysisMdb(data, userMap, entrustCode, sampleCode);
                     break;
                 case ".db":
-                    map = analysisDb(data, userMap);
+                    map = analysisDb(data, userMap, entrustCode, sampleCode);
                     break;
                 case ".png":
                     map = readPngString(data, userMap);
@@ -113,7 +115,7 @@
      * @param dataConfig
      * @return
      */
-    private static Map<String, String> analysisDb(String data, Map<String, List<DataConfig>> dataConfig) {
+    private static Map<String, String> analysisDb(String data, Map<String, List<DataConfig>> dataConfig, String entrustCode, String sampleCode) {
         JSONObject jsonObject = JSON.parseObject(data);
         JSONArray dataList = JSONArray.parseArray(jsonObject.get("data").toString());
         JSONArray columnList = JSONArray.parseArray(jsonObject.get("column").toString());
@@ -122,27 +124,14 @@
             List<Object> list = new ArrayList<>();
             for (int config = 0; config < v.size(); config++) {
                 String referx = getRefer(v.get(config).getReferx());
-                int x = getXOrY(v.get(config).getX(), k, "X");
-                int y = getXOrY(v.get(config).getY(), k, "Y");
-                String key = "";
-                for (int i = 0; i < columnList.size(); i++) {
-                    if (columnList.get(i).equals(referx)) {
-                        key = columnList.get(i + x).toString();
+                for (int i = 0; i < dataList.size(); i++) {
+                    JSONObject jsonObject1 = JSON.parseObject(dataList.get(i).toString());
+                    if (entrustCode.equals(jsonObject1.get("ExtInfo_Value1"))) {
+                        Object o = jsonObject1.get(referx);
+                        if (ObjectUtils.isNotEmpty(o)) {
+                            list.add(o);
+                        }
                     }
-                }
-                JSONObject jsonObject1 = JSON.parseObject(dataList.get(y).toString());
-                Object o = jsonObject1.get(key);
-                if (ObjectUtils.isNotEmpty(o)) {
-                    // 灏忔暟鐐硅繘涓変綅
-                    double v1 = 0;
-                    try {
-                        v1 = Double.parseDouble(o.toString());
-                        double v2 = v1 / 1000;
-                        list.add(v2);
-                    } catch (NumberFormatException e) {
-                        list.add(o);
-                    }
-
                 }
             }
             // 杩涜鍏紡璁$畻
@@ -168,17 +157,10 @@
             List<Object> list = new ArrayList<>();
             for (int config = 0; config < v.size(); config++) {
                 String referx = getRefer(v.get(config).getReferx());
-                int x = getXOrY(v.get(config).getX(), k, "X");
-                String key = "";
-                for (int i = 0; i < columnList.size(); i++) {
-                    if (columnList.get(i).equals(referx)) {
-                        key = columnList.get(i + x).toString();
-                    }
-                }
                 for (int i = 0; i < dataList.size(); i++) {
                     JSONObject jsonObject1 = JSON.parseObject(dataList.get(i).toString());
                     if (entrustCode.equals(jsonObject1.get("OrderNumber")) && sampleCode.equals(jsonObject1.get("SampleNumber"))) {
-                        Object o = jsonObject1.get(key);
+                        Object o = jsonObject1.get(referx);
                         if (ObjectUtils.isNotEmpty(o)) {
                             list.add(o);
                         }
diff --git a/cnas-server/src/main/resources/mapper/DataConfigMapper.xml b/cnas-server/src/main/resources/mapper/DataConfigMapper.xml
index 7701b02..e8b009f 100644
--- a/cnas-server/src/main/resources/mapper/DataConfigMapper.xml
+++ b/cnas-server/src/main/resources/mapper/DataConfigMapper.xml
@@ -32,7 +32,8 @@
                  left join device_data_config ddc on ddc.device_id = d.id and
                                                      if(ip.inspection_item_subclass is not null and
                                                         ip.inspection_item_subclass != '', ip.inspection_item_subclass,
-                                                        ip.inspection_item) = ddc.ins_product_item
+                                                        ip.inspection_item) = ddc.inspection_item_subclass and
+                                                     ip.inspection_item = ddc.inspection_item
         where d.id = #{deviceId}
     </select>
 </mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceMapper.xml b/cnas-server/src/main/resources/mapper/DeviceMapper.xml
index 60660a3..be1391a 100644
--- a/cnas-server/src/main/resources/mapper/DeviceMapper.xml
+++ b/cnas-server/src/main/resources/mapper/DeviceMapper.xml
@@ -3,7 +3,6 @@
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.yuanchu.mom.mapper.DeviceMapper">
-
     <select id="selectDeviceParameter" resultType="com.yuanchu.mom.pojo.Device">
         select * from(
         select id,
@@ -118,9 +117,10 @@
         </if>
     </select>
 
-    <select id="getInspectionItemSubclass" resultType="java.lang.String">
-        SELECT if(ip.inspection_item_subclass is not null and ip.inspection_item_subclass != '',
-                  ip.inspection_item_subclass, ip.inspection_item) inspection_item_subclass FROM ins_product ip
+    <select id="getInspectionItemSubclass" resultType="map">
+        SELECT ip.inspection_item, if(ip.inspection_item_subclass is not null and ip.inspection_item_subclass != '',
+                                      ip.inspection_item_subclass, ip.inspection_item) inspection_item_subclass
+        FROM ins_product ip
         where ip.ins_sample_id = #{id}
     </select>
 </mapper>
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderMapper.java
index 57a0348..a093759 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderMapper.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderMapper.java
@@ -54,5 +54,7 @@
 
     String seldepLimsId(int depLimsId);
 
-    Map<String, Object> getDeviceMessage(@Param("ip")String ip, @Param("inspectionItem") String inspectionItem);
+    Map<String, Object> getDeviceMessage(@Param("ip")String ip,
+                                         @Param("inspectionItem") String inspectionItem,
+                                         @Param("inspectionItemSubclass") String inspectionItemSubclass);
 }
\ No newline at end of file
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 8c51007..1042321 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
@@ -219,8 +219,8 @@
         // 闃叉鍥炵幆鍦板潃鍙樹负IPv6
         String ip =  ipAddress.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ipAddress;
         insProducts.forEach(i -> {
-            Map<String, Object> devices = baseMapper.getDeviceMessage(ip, i.getInspectionItem());
-            if (ObjectUtils.isNotEmpty(devices)) {
+            Map<String, Object> devices = baseMapper.getDeviceMessage(ip, i.getInspectionItem(), i.getInspectionItemSubclass());
+            if (ObjectUtils.isNotEmpty(devices) && (ObjectUtils.isNotEmpty(devices.get("file_type")) || ObjectUtils.isNotEmpty(devices.get("collect_url")))) {
                 InsProductResult insProductResult = i.getInsProductResult();
                 List<Object> list = new ArrayList<>();
                 Map<Object, Object> hashMap = new HashMap<>();
@@ -237,7 +237,6 @@
         });
         return insProducts;
     }
-
     @Override
     public List<String> checkSubmitPlan(Integer orderId, String laboratory) {
         List<String> collect = new ArrayList<>();
diff --git a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
index 6f450e0..d17440c 100644
--- a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
@@ -458,10 +458,16 @@
     </select>
 
     <select id="getDeviceMessage" resultType="java.util.Map">
-        select d.*
-        from device d, structure_item_parameter sip
+        select d.device_name, d.management_number
+        FROM
+            device d,
+            structure_item_parameter sip
         where d.ip = #{ip}
           and sip.inspection_item = #{inspectionItem}
-        limit 1
+            <if test="inspectionItemSubclass != '' and inspectionItemSubclass != null">
+                and sip.inspection_item_subclass = #{inspectionItemSubclass}
+            </if>
+          and d.device_status = 0
+          and d.ins_product_ids is not null
     </select>
 </mapper>

--
Gitblit v1.9.3