From c0fd46ed9c7ddf7a3ea4e6a972474e9a62c68a1a Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期一, 22 七月 2024 19:59:10 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java                     |    2 
 cnas-server/src/main/resources/mapper/DeviceMapper.xml                                 |    5 
 cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceConfigDtoPage.java                 |   66 ++++++
 cnas-server/src/main/java/com/yuanchu/mom/dto/DataConfigDto.java                       |   15 +
 cnas-server/src/main/resources/mapper/DataConfigMapper.xml                             |   23 ++
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java |    6 
 cnas-server/src/main/java/com/yuanchu/mom/mapper/DataConfigMapper.java                 |    6 
 cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java          |   38 +++
 cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java                   |  322 +++++++++++++++++---------------
 cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java             |   58 +++-
 cnas-server/src/main/java/com/yuanchu/mom/service/DeviceService.java                   |    5 
 inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java    |    9 
 cnas-server/src/main/java/com/yuanchu/mom/service/DataConfigService.java               |    6 
 cnas-server/src/main/java/com/yuanchu/mom/pojo/Device.java                             |    3 
 cnas-server/src/main/java/com/yuanchu/mom/service/impl/DataConfigServiceImpl.java      |   19 +
 inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java          |    3 
 16 files changed, 400 insertions(+), 186 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 6fecd36..6a73257 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,12 +8,10 @@
 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;
 import com.yuanchu.mom.service.DeviceService;
-import com.yuanchu.mom.utils.DataAcquisition;
 import com.yuanchu.mom.utils.JackSonUtil;
 import com.yuanchu.mom.vo.Result;
 import io.swagger.annotations.Api;
@@ -28,9 +26,11 @@
 import java.io.File;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 璁惧(DeviceController)琛ㄦ帶鍒跺眰
@@ -167,18 +167,10 @@
     @ValueClassify("璁惧")
     @ApiOperation("/鏁伴噰-鏁版嵁閲囬泦")
     @GetMapping("/dataCollection")
-    public Result<?> text(HttpServletRequest request, @RequestParam("managementNumber") String managementNumber,
+    public Result<?> dataAcquisition(HttpServletRequest request, @RequestParam("id") Integer id,
                           @RequestParam("entrustCode") String entrustCode,
                           @RequestParam("sampleCode") String sampleCode) {
-        Device device = deviceService.getOne(Wrappers.<Device>lambdaQuery()
-                .eq(Device::getManagementNumber, managementNumber));
-        if (ObjectUtils.isEmpty(device.getFileType()) || ObjectUtils.isEmpty(device.getCollectUrl())) {
-            throw new ErrorException("鏈粰璇ワ細" + device.getDeviceName() + "璁惧閰嶇疆閲囬泦璺緞鎴栨枃浠跺悗缂�锛�");
-        }
-        List<DataConfig> list = dataConfigService.list(Wrappers.<DataConfig>lambdaQuery()
-                .eq(DataConfig::getDeviceId, device.getId())
-                .orderBy(false, false, DataConfig::getId));
-        return DataAcquisition.dataAcquisitionEntrance(request,list, device, entrustCode, sampleCode);
+        return deviceService.dataAcquisition(request, id, entrustCode, sampleCode);
     }
 
     @ValueAuth
@@ -200,26 +192,54 @@
     @ValueClassify("璁惧")
     @ApiOperation(value = "缁存姢鏁伴噰閰嶇疆")
     @PostMapping("/saveDataAcquisitionConfiguration")
-    public Result<?> saveDataAcquisitionConfiguration(@RequestBody DataConfigDto dataConfigList) {
-        dataConfigService.saveOrUpdateBatch(dataConfigList.getDataConfigList());
+    public Result<?> saveDataAcquisitionConfiguration(@RequestParam(value = "deviceId") Integer deviceId, @RequestBody DataConfigDto dataConfigList) {
+        if (dataConfigList.getIsDevice()) {
+            Device device = new Device();
+            device.setId(deviceId);
+            device.setCollectUrl(dataConfigList.getCollectUrl());
+            device.setStorageUrl(dataConfigList.getStorageUrl());
+            device.setIp(dataConfigList.getIp());
+            device.setFileType(device.getFileType());
+            deviceService.updateById(device);
+        } else {
+            dataConfigService.saveOrUpdateBatch(dataConfigList.getDataConfigList());
+        }
         return Result.success();
     }
+
+//    @ValueClassify("璁惧")
+//    @ApiOperation(value = "鏌ヨ鏁伴噰閰嶇疆")
+//    @GetMapping("/queryDataAcquisitionConfiguration")
+//    public Result<?> queryDataAcquisitionConfiguration(@RequestParam("deviceId") Integer deviceId, @RequestParam("insProductItem") String insProductItem) {
+//        List<DataConfig> list = dataConfigService.list(Wrappers.<DataConfig>lambdaQuery()
+//                .eq(DataConfig::getDeviceId, deviceId)
+//                .eq(DataConfig::getInsProductItem, insProductItem));
+//        return Result.success(list);
+//    }
 
     @ValueClassify("璁惧")
     @ApiOperation(value = "鏌ヨ鏁伴噰閰嶇疆")
     @GetMapping("/queryDataAcquisitionConfiguration")
-    public Result<?> queryDataAcquisitionConfiguration(@RequestParam("deviceId") Integer deviceId, @RequestParam("insProductItem") String insProductItem) {
-        List<DataConfig> list = dataConfigService.list(Wrappers.<DataConfig>lambdaQuery()
+    public Result<?> queryDataAcquisitionConfiguration(@RequestParam("deviceId") Integer deviceId,
+                                                       @RequestParam("isDevice") Boolean isDevice,
+                                                       @RequestParam(value = "insProductItem", required = false) String insProductItem) {
+        if (isDevice) {
+            List<DataConfig> list = dataConfigService.list(Wrappers.<DataConfig>lambdaQuery()
                 .eq(DataConfig::getDeviceId, deviceId)
                 .eq(DataConfig::getInsProductItem, insProductItem));
-        return Result.success(list);
+            return Result.success(list);
+        } else {
+            return Result.success(dataConfigService.selectDataConfigList(deviceId));
+        }
     }
 
     @ValueClassify("璁惧")
     @ApiOperation(value = "鍒犻櫎鏁伴噰閰嶇疆")
     @DeleteMapping("/deleteDataAcquisitionConfiguration")
-    public Result<?> deleteDataAcquisitionConfiguration(@RequestParam("id") Integer id) {
-        dataConfigService.removeById(id);
+    public Result<?> deleteDataAcquisitionConfiguration(@RequestParam("ids") String ids) {
+        List<String> split = Arrays.asList(ids.split(","));
+        List<String> collect = split.stream().distinct().collect(Collectors.toList());
+        dataConfigService.removeBatchByIds(collect);
         return Result.success();
     }
 }
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DataConfigDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DataConfigDto.java
index 2f60a45..d3fafcc 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/dto/DataConfigDto.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DataConfigDto.java
@@ -1,6 +1,7 @@
 package com.yuanchu.mom.dto;
 
 import com.yuanchu.mom.pojo.DataConfig;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.util.List;
@@ -9,4 +10,18 @@
 public class DataConfigDto {
 
     private List<DataConfig> dataConfigList;
+
+    private Boolean isDevice;
+
+    @ApiModelProperty("鏂囦欢鍚庣紑")
+    private String fileType;
+
+    @ApiModelProperty("閲囬泦鍦板潃")
+    private String collectUrl;
+
+    @ApiModelProperty("瀛樺偍鍦板潃")
+    private String storageUrl;
+
+    @ApiModelProperty("璁惧IP")
+    private String ip;
 }
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
new file mode 100644
index 0000000..779fce1
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceConfigDtoPage.java
@@ -0,0 +1,66 @@
+package com.yuanchu.mom.dto;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.yuanchu.mom.annotation.ValueTableShow;
+import com.yuanchu.mom.common.OrderBy;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class DeviceConfigDtoPage extends OrderBy {
+
+    @ValueTableShow(2)
+    @ApiModelProperty(value = "璁惧鍚嶇О")
+    private String deviceName;
+
+    @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ValueTableShow(3)
+    @ApiModelProperty(value = "鏂囦欢鍚庣紑")
+    private String fileType;
+
+    @ValueTableShow(4)
+    @ApiModelProperty(value = "閲囬泦鍦板潃")
+    private String collectUrl;
+
+    @ValueTableShow(5)
+    @ApiModelProperty(value = "瀛樺偍鍦板潃")
+    private String storageUrl;
+
+    @ValueTableShow(6)
+    @ApiModelProperty(value = "IP鍦板潃")
+    private String ip;
+
+    @ValueTableShow(7)
+    @ApiModelProperty(value = "妫�楠岄」")
+    private String inspectionItem;
+
+    @ValueTableShow(8)
+    @ApiModelProperty(value = "妫�楠岄」瀛愰」")
+    private String inspectionItemSubClass;
+
+    @ValueTableShow(9)
+    @ApiModelProperty(value = "鍏紡")
+    private String formula;
+
+    @ValueTableShow(10)
+    @ApiModelProperty(value = "鍙傜収X")
+    private String referx;
+
+    @ValueTableShow(11)
+    @ApiModelProperty(value = "X")
+    private String x;
+
+    @ValueTableShow(12)
+    @ApiModelProperty(value = "鍙傜収Y")
+    private String refery;
+
+    @ValueTableShow(13)
+    @ApiModelProperty(value = "Y")
+    private String y;
+
+    private Integer id;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DataConfigMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DataConfigMapper.java
index c7184eb..277160f 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DataConfigMapper.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DataConfigMapper.java
@@ -1,7 +1,10 @@
 package com.yuanchu.mom.mapper;
 
-import com.yuanchu.mom.pojo.DataConfig;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.dto.DeviceConfigDtoPage;
+import com.yuanchu.mom.pojo.DataConfig;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,5 @@
  */
 public interface DataConfigMapper extends BaseMapper<DataConfig> {
 
+    List<DeviceConfigDtoPage> selectDataConfigList(Integer deviceId);
 }
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 b84efc7..8635854 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
@@ -32,5 +32,7 @@
     List<Device> selectDevicePrincipal();
 
     IPage<DeviceDto> selectDeviceParameterPage(Page page, @Param("ew") QueryWrapper<DeviceDto> queryWrappers);
+
+    List<String> getInspectionItemSubclass(@Param("id") Integer id);
 }
 
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/Device.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/Device.java
index 3421f3d..0f143a9 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/pojo/Device.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/Device.java
@@ -131,4 +131,7 @@
     @ApiModelProperty("鏄惁涓烘暟閲囪澶�")
     @TableField(exist = false)
     private Boolean isItADataAcquisitionDevice;
+
+    @ApiModelProperty("璁惧IP")
+    private String ip;
 }
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DataConfigService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DataConfigService.java
index 5ca0df5..96133f1 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/service/DataConfigService.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DataConfigService.java
@@ -1,7 +1,10 @@
 package com.yuanchu.mom.service;
 
-import com.yuanchu.mom.pojo.DataConfig;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.dto.DeviceConfigDtoPage;
+import com.yuanchu.mom.pojo.DataConfig;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,5 @@
  */
 public interface DataConfigService extends IService<DataConfig> {
 
+    List<DeviceConfigDtoPage> selectDataConfigList(Integer deviceId);
 }
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceService.java
index 9268eda..2ae0473 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceService.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceService.java
@@ -3,9 +3,10 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yuanchu.mom.dto.DeviceDto;
-import com.yuanchu.mom.dto.DeviceDto1;
 import com.yuanchu.mom.pojo.Device;
+import com.yuanchu.mom.vo.Result;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.Map;
 
@@ -33,4 +34,6 @@
     List<Device> selectDeviceByCategory(String inspectionItem, String inspectionItemSubclass);
 
     Device selectDeviceByCode(String code);
+
+    Result<?> dataAcquisition(HttpServletRequest request, Integer id, String entrustCode, String sampleCode);
 }
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DataConfigServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DataConfigServiceImpl.java
index 766cf89..8035161 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DataConfigServiceImpl.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DataConfigServiceImpl.java
@@ -1,10 +1,15 @@
 package com.yuanchu.mom.service.impl;
 
-import com.yuanchu.mom.pojo.DataConfig;
-import com.yuanchu.mom.mapper.DataConfigMapper;
-import com.yuanchu.mom.service.DataConfigService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.dto.DeviceConfigDtoPage;
+import com.yuanchu.mom.mapper.DataConfigMapper;
+import com.yuanchu.mom.pojo.DataConfig;
+import com.yuanchu.mom.service.DataConfigService;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * <p>
@@ -15,6 +20,14 @@
  * @since 2024-07-13 12:23:00
  */
 @Service
+@AllArgsConstructor
 public class DataConfigServiceImpl extends ServiceImpl<DataConfigMapper, DataConfig> implements DataConfigService {
 
+    private GetLook getLook;
+
+    private DataConfigMapper dataConfigMapper;
+    @Override
+    public List<DeviceConfigDtoPage> selectDataConfigList(Integer deviceId) {
+        return dataConfigMapper.selectDataConfigList(deviceId);
+    }
 }
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 38e1c96..79c8bf5 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
@@ -8,15 +8,22 @@
 import com.yuanchu.mom.common.GetLook;
 import com.yuanchu.mom.common.PrintChina;
 import com.yuanchu.mom.dto.DeviceDto;
+import com.yuanchu.mom.exception.ErrorException;
 import com.yuanchu.mom.mapper.DeviceMapper;
 import com.yuanchu.mom.mapper.StructureItemParameterMapper;
+import com.yuanchu.mom.pojo.DataConfig;
 import com.yuanchu.mom.pojo.Device;
 import com.yuanchu.mom.pojo.StructureItemParameter;
+import com.yuanchu.mom.service.DataConfigService;
 import com.yuanchu.mom.service.DeviceService;
+import com.yuanchu.mom.utils.DataAcquisition;
 import com.yuanchu.mom.utils.QueryWrappers;
+import com.yuanchu.mom.vo.Result;
 import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -34,6 +41,9 @@
     private DeviceMapper deviceMapper;
 
     private StructureItemParameterMapper structureItemParameterMapper;
+
+    @Autowired
+    private DataConfigService dataConfigService;
 
     @Override
     public Map<String, Object> selectDeviceParameter(Page page, DeviceDto itemParameter) {
@@ -123,5 +133,31 @@
     public Device selectDeviceByCode(String code) {
         return deviceMapper.selectOne(Wrappers.<Device>lambdaQuery().eq(Device::getFactoryNo, code).last("limit 1"));
     }
-}
 
+    @Override
+    public Result<?> dataAcquisition(HttpServletRequest request, Integer id, String entrustCode, String sampleCode) {
+        String ipAddress = request.getRemoteAddr();
+        // 闃叉鍥炵幆鍦板潃鍙樹负IPv6
+        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 (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));
+        });
+        String frequency = DataAcquisition.createFrequency(entrustCode, sampleCode);
+        hashMap.put("frequency", frequency);
+        return Result.success(hashMap);
+    }
+}
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 99e3fd7..d89a644 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
@@ -9,7 +9,6 @@
 import com.yuanchu.mom.exception.ErrorException;
 import com.yuanchu.mom.pojo.DataConfig;
 import com.yuanchu.mom.pojo.Device;
-import com.yuanchu.mom.vo.Result;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.*;
@@ -27,17 +26,16 @@
 
     private static final String splitIdentifier = "@-@"; // 鑷畾涔夊敮涓�鏍囪瘑鍒嗗壊绗�
 
+    public static final String frequency = "frequency";
     /**
      * 鏁伴噰鍏ュ彛
+     *
      * @param request
      * @param dataConfig
      * @param device
      * @return
      */
-    public static Result<?> dataAcquisitionEntrance(HttpServletRequest request, List<DataConfig> dataConfig, Device device, String entrustCode, String sampleCode) {
-        String ipAddress = request.getRemoteAddr();
-        // 闃叉鍥炵幆鍦板潃鍙樹负IPv6
-        String ip = ipAddress.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ipAddress;
+    public static Map<String, String> dataAcquisitionEntrance(HttpServletRequest request, 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 {
@@ -45,7 +43,7 @@
         } catch (IORuntimeException e) {
             throw new ErrorException("鎵�鍦ㄧ數鑴戞湭瀹夎鎴栨湭鍚姩锛歀IMS鏂囦欢閲囬泦鍣紒");
         }
-        JSONObject jsonObject =  JSON.parseObject(result);
+        JSONObject jsonObject = JSON.parseObject(result);
         if (Objects.equals(jsonObject.get("code"), 1)) {
             if (ObjectUtils.isEmpty(jsonObject.get("msg"))) {
                 throw new ErrorException("鏈煡璇㈠埌鏁版嵁锛屽彲鑳芥枃浠惰矾寰勯厤缃敊璇紒");
@@ -88,7 +86,7 @@
             if (ObjectUtils.isNotEmpty(device.getStorageUrl())) {
                 String s = HTTP + ip + MOVEFILE + "?startFilePath=" + device.getCollectUrl() + "&endFilePath=" + device.getStorageUrl();
                 String storageUrlResult = HttpUtil.get(s);
-                JSONObject storageUrlResultJson =  JSON.parseObject(storageUrlResult);
+                JSONObject storageUrlResultJson = JSON.parseObject(storageUrlResult);
                 if (Objects.equals(storageUrlResultJson.get("code"), 1)) {
                     if (ObjectUtils.isEmpty(storageUrlResultJson.get("msg"))) {
                         throw new ErrorException("瀛樺偍鍦板潃閿欒锛屽彲鑳芥枃浠惰矾寰勯厤缃敊璇紒");
@@ -97,10 +95,31 @@
                     }
                 }
             }
-            return Result.success(map);
+            return map;
         }
     }
 
+    public static String createFrequency(String entrustCode, String sampleCode) {
+        String key = frequency + ":" + entrustCode + ":" + sampleCode;
+        boolean b = RedisUtil.hasKey(key);
+        String frequencyValue;
+        if (b) {
+            long incr = RedisUtil.incr(key, 1);
+            frequencyValue = String.valueOf(incr);
+        } else {
+            RedisUtil.set(key, 1);
+            frequencyValue = "1";
+        }
+        return frequencyValue;
+    }
+
+    /**
+     * 闇�瑕侀�氳繃X,Y杞村畾浣�
+     *
+     * @param data
+     * @param dataConfig
+     * @return
+     */
     private static Map<String, String> analysisDb(String data, Map<String, List<DataConfig>> dataConfig) {
         JSONObject jsonObject = JSON.parseObject(data);
         JSONArray dataList = JSONArray.parseArray(jsonObject.get("data").toString());
@@ -109,12 +128,9 @@
         dataConfig.forEach((k, v) -> {
             List<Object> list = new ArrayList<>();
             for (int config = 0; config < v.size(); config++) {
-                String referx = v.get(config).getReferx();
-                if(ObjectUtils.isEmpty(v.get(config).getX()) && ObjectUtils.isEmpty(v.get(config).getY())) {
-                    throw new ErrorException("鏈粰" + k + "杩涜鏁伴噰閰嶇疆x锛寉锛�");
-                }
-                int x = Integer.parseInt(v.get(config).getX());
-                int y = Integer.parseInt(v.get(config).getY());
+                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)) {
@@ -124,16 +140,32 @@
                 JSONObject jsonObject1 = JSON.parseObject(dataList.get(y).toString());
                 Object o = jsonObject1.get(key);
                 if (ObjectUtils.isNotEmpty(o)) {
-                    list.add(o);
+                    // 灏忔暟鐐硅繘涓変綅
+                    double v1 = 0;
+                    try {
+                        v1 = Double.parseDouble(o.toString());
+                        double v2 = v1 / 1000;
+                        list.add(v2);
+                    } catch (NumberFormatException e) {
+                        list.add(o);
+                    }
+
                 }
             }
             // 杩涜鍏紡璁$畻
-            String resultValue = calculationFormula(list, v.get(0));
+            String resultValue = calculationFormula(list, v.get(0), k);
             map.put(k, resultValue);
         });
         return map;
     }
 
+    /**
+     * 闇�瑕侀�氳繃X,Y杞村畾浣�
+     *
+     * @param data
+     * @param dataConfig
+     * @return
+     */
     private static Map<String, String> analysisMdb(String data, Map<String, List<DataConfig>> dataConfig, String entrustCode, String sampleCode) {
         JSONObject jsonObject = JSON.parseObject(data);
         JSONArray dataList = JSONArray.parseArray(jsonObject.get("data").toString());
@@ -142,8 +174,8 @@
         dataConfig.forEach((k, v) -> {
             List<Object> list = new ArrayList<>();
             for (int config = 0; config < v.size(); config++) {
-                String referx = v.get(config).getReferx();
-                int x = Integer.parseInt(v.get(config).getX());
+                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)) {
@@ -161,16 +193,18 @@
                 }
             }
             // 杩涜鍏紡璁$畻
-            String resultValue = calculationFormula(list, v.get(0));
+            String resultValue = calculationFormula(list, v.get(0), k);
             map.put(k, resultValue);
         });
         return map;
     }
 
     private static Pattern SPATTERN = Pattern.compile("([-+])?\\d+(\\.\\d+)?");
+
     /**
-     * 瑙f瀽String鏁版嵁
-     * @param data 閲囬泦鍒扮殑鏂囦欢瀛楃涓�
+     * 鍙渶X杞�
+     *
+     * @param data       閲囬泦鍒扮殑鏂囦欢瀛楃涓�
      * @param dataConfig 鐢ㄦ埛閰嶇疆濂界殑x,y杞村畾浣嶆暟鎹笌鍙傜収鐗�
      * @return
      */
@@ -179,15 +213,15 @@
         dataConfig.forEach((k, v) -> {
             List<Object> list = new ArrayList<>();
             for (int config = 0; config < v.size(); config++) {
-                String referx = v.get(config).getReferx();
-                String xResult = null;
+                String referx = getRefer(v.get(config).getReferx());
+                String result = null;
                 // 閫氳繃\n灏嗗瓧绗︿覆鍒嗗壊涓鸿
                 String[] aColumnY = data.split("\n");
                 List<String> list1 = new ArrayList<>();
                 // 璇ュ惊鐜緱鍑虹敤鎴烽厤缃殑y杞�
                 for (int i = 0; i < aColumnY.length; i++) {
                     String addDataWithSpaces = referx.replaceAll("", " ");
-                    int x = Integer.parseInt(v.get(config).getX());
+                    int x = getXOrY(v.get(config).getX(), k, "X");
                     if (aColumnY[i].contains(addDataWithSpaces)) {
                         Matcher matcher = SPATTERN.matcher(aColumnY[i]);
                         while (matcher.find()) {
@@ -196,15 +230,15 @@
                         }
                     }
                     if (ObjectUtils.isNotEmpty(list1)) {
-                        xResult = list1.get(x);
+                        result = list1.get(x);
                     }
                 }
-                if (ObjectUtils.isNotEmpty(xResult)) {
-                    list.add(xResult);
+                if (ObjectUtils.isNotEmpty(result)) {
+                    list.add(result);
                 }
             }
             // 杩涜鍏紡璁$畻
-            String resultValue = calculationFormula(list, v.get(0));
+            String resultValue = calculationFormula(list, v.get(0), k);
             map.put(k, resultValue);
         });
         return map;
@@ -212,185 +246,171 @@
 
     /**
      * 浠庢枃浠朵腑鎻愬彇鍑烘潵鐨勬枃瀛楋紝濡傛灉鏈夊叕寮忥紝杩涜鍏紡璁$畻锛屽惁鍒欏彇鍒楄〃绗竴涓��
-     * @param list 鎻愬彇鍑虹殑鏁板瓧
+     *
+     * @param list       鎻愬彇鍑虹殑鏁板瓧
      * @param dataConfig 瀛樺偍鍏紡鐨勫璞�
      * @return
      */
-    private static String calculationFormula(List<Object> list, DataConfig dataConfig) {
+    private static String calculationFormula(List<Object> list, DataConfig dataConfig, String insProductItem) {
+        if (list.size() == 0) {
+            return null;
+        }
         // 濡傛灉涓嶄负绌猴紝杩涜鍏紡璁$畻
         if (ObjectUtils.isNotEmpty(dataConfig.getFormula())) {
 
             return null;
-        // 鍚﹀垯锛氭病鏈夊叕寮忎唬琛ㄤ笉闇�瑕佽绠楋紝鐩存帴鎻愬彇List閲岄潰鐨勬暟鎹�
+            // 鍚﹀垯锛氭病鏈夊叕寮忎唬琛ㄤ笉闇�瑕佽绠楋紝鐩存帴鎻愬彇List閲岄潰鐨勬暟鎹�
         } else {
             // 杩欓噷鍙細鍙栧垪琛ㄧ涓�涓暟鎹�
-            if (list.size() > 0) {
+            if (list.size() > 1) {
+                throw new ErrorException("鏈粰锛�" + insProductItem + " 閰嶇疆鍏紡锛屽彲鏄嵈閲囬泦鍒颁簡" + list.size() + "涓�硷紒鍒嗗埆涓猴細" + list);
+            } else {
                 return list.get(0).toString();
             }
-            return null;
         }
     }
 
     /**
      * 瑙f瀽String鏁版嵁
-     * @param data 閲囬泦鍒扮殑鏂囦欢瀛楃涓�
+     *
+     * @param data       閲囬泦鍒扮殑鏂囦欢瀛楃涓�
      * @param dataConfig 鐢ㄦ埛閰嶇疆濂界殑x,y杞村畾浣嶆暟鎹笌鍙傜収鐗�
      * @return
      */
     private static Map<String, String> analysisTxt(String data, Map<String, List<DataConfig>> dataConfig) {
         Map<String, String> map = new HashMap<>();
         dataConfig.forEach((k, v) -> {
-            List<Object> list = new ArrayList<>();
-            for (int config = 0; config < v.size(); config++) {
-                String referx = v.get(config).getReferx();
-                String refery = v.get(config).getRefery();
-                String xResult = null;
-                String yResult = null;
-                // 閫氳繃\n灏嗗瓧绗︿覆鍒嗗壊涓鸿
-                String[] aColumnY = data.split("\n");
-                // 璇ュ惊鐜緱鍑虹敤鎴烽厤缃殑y杞�
-                for (int i = 0; i < aColumnY.length; i++) {
-                    // 寰楀嚭鐢ㄦ埛閰嶇疆鐨剎杞�
-                    String[] aLineX = aColumnY[i].split(",");
-                    for (int j = 0; j < aLineX.length; j++) {
-                        if (ObjectUtils.isNotEmpty(referx) && aLineX[j].contains(referx)) {
-                            int x = Integer.parseInt(v.get(config).getX());
-                            try {
-                                xResult = aLineX[j + x];
-                            } catch (Exception e) {
-                                throw new ErrorException("鏁伴噰閰嶇疆X杞磋秴鍑猴紒");
-                            }
-                        }
-                        if (ObjectUtils.isNotEmpty(refery) && aLineX[j].contains(refery)) {
-                            int y = Integer.parseInt(v.get(config).getY());
-                            try {
-                                String[] split = aColumnY[i + y].split(",");
-                                yResult = split[split.length - 1];
-                            } catch (Exception e) {
-                                throw new ErrorException("鏁伴噰閰嶇疆Y杞磋秴鍑猴紒");
-                            }
-                        }
-                    }
-                }
-                if (ObjectUtils.isEmpty(xResult) && ObjectUtils.isEmpty(yResult)) {
-                    throw new ErrorException("鍙傜収鐗╀负锛�" + referx + "涓�" + refery + "鏈彇鍒板�硷紒璇锋鏌ユ暟閲囬厤缃紒");
-                }
-                list.add(yResult);
-                list.add(xResult);
-            }
+            List<Object> list = analyzeData(data, v, k, ",");
             // 杩涜鍏紡璁$畻
-            String resultValue = calculationFormula(list, v.get(0));
+            String resultValue = calculationFormula(list, v.get(0), k);
             map.put(k, resultValue);
         });
         return map;
     }
 
     /**
-     * 瑙f瀽String鏁版嵁
-     * @param data 閲囬泦鍒扮殑鏂囦欢瀛楃涓�
+     * @param data       閲囬泦鍒扮殑鏂囦欢瀛楃涓�
      * @param dataConfig 鐢ㄦ埛閰嶇疆濂界殑x,y杞村畾浣嶆暟鎹笌鍙傜収鐗�
      * @return
      */
     private static Map<String, String> analysisString(String data, Map<String, List<DataConfig>> dataConfig) {
-        String processingDataAfterSpaces = data.replaceAll("  +", splitIdentifier).replaceAll("\r", "");
+        String processingDataAfterSpaces = data
+                .replaceAll("  +", splitIdentifier)
+                .replaceAll("\r", "")
+                .replaceAll(" ", "");
         Map<String, String> map = new HashMap<>();
         dataConfig.forEach((k, v) -> {
-            List<Object> list = new ArrayList<>();
-            for (int config = 0; config < v.size(); config++) {
-                String referx = v.get(config).getReferx();
-                String xResult = null;
-                // 閫氳繃\n灏嗗瓧绗︿覆鍒嗗壊涓鸿
-                String[] aColumnY = processingDataAfterSpaces.split("\n");
-                // 璇ュ惊鐜緱鍑虹敤鎴烽厤缃殑y杞�
-                for (int i = 0; i < aColumnY.length; i++) {
-                    // 寰楀嚭鐢ㄦ埛閰嶇疆鐨剎杞�
-                    String[] aLineX = aColumnY[i].split(splitIdentifier);
-                    for (int j = 0; j < aLineX.length; j++) {
-                        if (ObjectUtils.isNotEmpty(referx) && aLineX[j].replaceAll(" ", "").contains(referx.replaceAll(" ", ""))) {
-                            int x = Integer.parseInt(v.get(config).getX());
-                            try {
-                                xResult = aLineX[j + x];
-                            } catch (Exception e) {
-                                throw new ErrorException("鏁伴噰閰嶇疆X杞磋秴鍑猴紒");
-                            }
-                        }
-                    }
-                }
-                if (ObjectUtils.isEmpty(xResult)) {
-                    throw new ErrorException("鍙傜収鐗╀负锛�" + referx + "鏈彇鍒板�硷紒璇锋鏌ユ暟閲囬厤缃紒");
-                }
-                // 缁撴灉鍖呭惈鐗规畩瀛楃锛岄渶瑕佸墧闄ゆ帀
-                if(xResult.contains("=")) {
-                    String[] split = xResult.split("=");
-                    list.add(split[split.length - 1]);
-                } else if (xResult.contains(":")) {
-                    String[] split = xResult.split(":");
-                    list.add(split[split.length - 1].replaceAll("%", ""));
-                } else {
-                    list.add(xResult);
-                }
-            }
+            List<Object> list = analyzeData(processingDataAfterSpaces, v, k, splitIdentifier);
             // 杩涜鍏紡璁$畻
-            String resultValue = calculationFormula(list, v.get(0));
+            String resultValue = calculationFormula(list, v.get(0), k);
             map.put(k, resultValue);
         });
         return map;
     }
 
     /**
-     * 瑙f瀽String鏁版嵁
-     * @param data 閲囬泦鍒扮殑鏂囦欢瀛楃涓�
+     * 鍙朮锛孻涓や釜瀹氫綅
+     *
+     * @param data       閲囬泦鍒扮殑鏂囦欢瀛楃涓�
      * @param dataConfig 鐢ㄦ埛閰嶇疆濂界殑x,y杞村畾浣嶆暟鎹笌鍙傜収鐗�
      * @return
      */
     public static Map<String, String> analysisList(String data, Map<String, List<DataConfig>> dataConfig) {
         Map<String, String> map = new HashMap<>();
         dataConfig.forEach((k, v) -> {
-            List<Object> list = new ArrayList<>();
-            for (int config = 0; config < v.size(); config++) {
-                String referx = v.get(config).getReferx();
-                String refery = v.get(config).getRefery();
-                String xResult = null;
-                String yResult = null;
-                // 閫氳繃\n灏嗗瓧绗︿覆鍒嗗壊涓鸿
-                String[] aColumnY = data.split("\n");
-                // 璇ュ惊鐜緱鍑虹敤鎴烽厤缃殑y杞�
-                for (int i = 0; i < aColumnY.length; i++) {
-                    // 寰楀嚭鐢ㄦ埛閰嶇疆鐨剎杞�
-                    String[] aLineX = aColumnY[i].split(splitIdentifier);
-                    for (int j = 0; j < aLineX.length; j++) {
-                        if (ObjectUtils.isNotEmpty(referx) && referx.equals(aLineX[j])) {
-                            int x = Integer.parseInt(v.get(config).getX());
-                            try {
-                                xResult = aLineX[j + x];
-                            } catch (Exception e) {
-                                throw new ErrorException("鏁伴噰閰嶇疆X杞磋秴鍑猴紒");
+            // 鐢ㄦ埛鍙兘缁欎竴涓瓙椤圭洰閰嶇疆浜嗗涓厤缃紝鍗充竴涓」鐩彇澶氫釜鍊硷紝鎵�浠ラ渶瑕佸惊鐜�
+            List<Object> list = analyzeData(data, v, k, splitIdentifier);
+            // 杩涜鍏紡璁$畻
+            String resultValue = calculationFormula(list, v.get(0), k);
+            map.put(k, resultValue);
+        });
+        return map;
+    }
+
+    // 鐢变簬鍦ㄦ柟娉曚腑浼氬ぇ閲忕殑鍒ゆ柇锛屾墍浠ュ仛涓�涓柟娉�
+    private static int getXOrY(String value, String k, String tips) {
+        try {
+            return Integer.parseInt(value);
+        } catch (NumberFormatException e) {
+            throw new ErrorException(k + "锛氭湭閰嶇疆" + tips + "鍧愭爣杞寸殑鍊硷紒");
+        }
+    }
+
+    // 闃叉鍙傜収鐗╀负绌烘姤閿欙紝杩涜鍒ゆ柇濡傛灉涓虹┖璧嬪�肩┖瀛楃
+    private static String getRefer(String refer) {
+        return ObjectUtils.isNotEmpty(refer) ? refer.replaceAll(" ", "") : "";
+    }
+
+    public static List<Object> analyzeData(String data, List<DataConfig> v, String k, String split) {
+        List<Object> list = new ArrayList<>();
+        for (int config = 0; config < v.size(); config++) {
+            // 鍙栦袱涓敤鎴烽厤缃殑鍙傜収鐗�
+            String referx = getRefer(v.get(config).getReferx());
+            String refery = getRefer(v.get(config).getRefery());
+            // 鏈�缁堢粨鏋�
+            String result = null;
+            // 閫氳繃\n灏嗗瓧绗︿覆鍒嗗壊涓鸿
+            String[] aColumnY = data.replaceAll(" ", "").split("\n");
+            Integer end = null;
+            // 閲囬泦鏁版嵁锛歒杞�
+            for (int i = 0; i < aColumnY.length; i++) {
+                // 鍙杧鐨勫�硷紝闃叉鎶ラ敊
+                int x = getXOrY(v.get(config).getX(), k, "X");
+                // 濡傛灉Y涓嶺鐢ㄦ埛閮介厤缃簡鍒欐墽琛�
+                if (ObjectUtils.isNotEmpty(refery)) {
+                    // 鍙朰鍧愭爣鍊�
+                    int y = getXOrY(v.get(config).getY(), k, "Y");
+                    // 缂撳瓨Y鐨勭粨鏉熷��
+                    if (ObjectUtils.isEmpty(end) && aColumnY[i].contains(refery)) {
+                        end = i + y;
+                    }
+                    // 鍒ゆ柇鏄惁鍦ㄥ弬鐓х墿涓鸿捣鍒帮紝Y鍧愭爣鍊间负鏈�缁堣寖鍥�
+                    if (ObjectUtils.isNotEmpty(end) && i <= end) {
+                        String[] aLineX = aColumnY[i].split(split);
+                        for (int j = 0; j < aLineX.length; j++) {
+                            if (aLineX[j].contains(referx)) {
+                                try {
+                                    result = aLineX[j + x];
+                                } catch (Exception e) {
+                                    throw new ErrorException(k + "锛歑杞村畾浣嶈秴鍑猴紒");
+                                }
+                                break;
                             }
                         }
-                        if (ObjectUtils.isNotEmpty(refery) && refery.equals(aLineX[j])) {
-                            int y = Integer.parseInt(v.get(config).getY());
-                            String aColumnData = aColumnY[i + y]; // 鑾峰彇鍒扮Y琛岀殑鏁版嵁
+                    }
+                    // 濡傛灉鍙厤缃簡X锛屽垯鎵ц涓嬮潰鐨勪唬鐮�
+                } else if (aColumnY[i].contains(referx) && ObjectUtils.isEmpty(refery)) {
+                    String[] aLineX = aColumnY[i].split(split);
+                    for (int j = 0; j < aLineX.length; j++) {
+                        if (aLineX[j].contains(referx)) {
                             try {
-                                yResult = aColumnData.split(splitIdentifier)[j];
+                                result = aLineX[j + x];
                             } catch (Exception e) {
-                                throw new ErrorException("鏁伴噰閰嶇疆Y杞磋秴鍑猴紒");
+                                throw new ErrorException(k + "锛歑杞村畾浣嶈秴鍑猴紒");
                             }
                         }
                     }
                 }
-                if (ObjectUtils.isEmpty(xResult) || ObjectUtils.isEmpty(yResult)) {
-                    throw new ErrorException("X杞存垨Y杞存湭鍙栧埌鍊硷紒璇锋鏌ユ暟閲囬厤缃紒");
-                }
-                if(xResult.equals(yResult)) {
-                    list.add(xResult);
-                } else {
-                    throw new ErrorException("X杞翠笌Y杞村彇寰楃殑鏁版嵁涓嶇浉鍚岋紒璇锋鏌ユ暟閲囬厤缃紒");
-                }
             }
-            // 杩涜鍏紡璁$畻
-            String resultValue = calculationFormula(list, v.get(0));
-            map.put(k, resultValue);
-        });
-        return map;
+            // 闃叉璁$畻鍏紡鐨勬椂鍊欏嚭鐜帮細[null] 杩欑鏁版嵁
+            if (ObjectUtils.isNotEmpty(result)) {
+                String formatProcessing = getFormatProcessing(result);
+                list.add(formatProcessing);
+            }
+        }
+        return list;
+    }
+
+    public static String getFormatProcessing(String value) {
+        value = value.replaceAll("%", "");
+        if(value.contains("=")){
+            String[] split = value.split("=");
+            return split[split.length - 1];
+        } else if(value.contains(":")) {
+            String[] split = value.split(":");
+            return split[split.length - 1];
+        } else {
+            return value;
+        }
     }
 }
diff --git a/cnas-server/src/main/resources/mapper/DataConfigMapper.xml b/cnas-server/src/main/resources/mapper/DataConfigMapper.xml
index 135e544..7701b02 100644
--- a/cnas-server/src/main/resources/mapper/DataConfigMapper.xml
+++ b/cnas-server/src/main/resources/mapper/DataConfigMapper.xml
@@ -12,4 +12,27 @@
         <result column="y" property="y" />
     </resultMap>
 
+    <select id="selectDataConfigList" resultType="com.yuanchu.mom.dto.DeviceConfigDtoPage">
+        SELECT d.device_name,
+               d.file_type,
+               d.collect_url,
+               d.storage_url,
+               d.ip,
+               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,
+               ddc.formula,
+               ddc.referx,
+               ddc.refery,
+               ddc.x,
+               ddc.y,
+               ddc.id
+        FROM device d
+                 left join structure_item_parameter ip on FIND_IN_SET(ip.id, d.ins_product_ids)
+                 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
+        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 6eaebf9..40bcc1f 100644
--- a/cnas-server/src/main/resources/mapper/DeviceMapper.xml
+++ b/cnas-server/src/main/resources/mapper/DeviceMapper.xml
@@ -117,4 +117,9 @@
             ${ew.customSqlSegment}
         </if>
     </select>
+
+    <select id="getInspectionItemSubclass" resultType="java.lang.String">
+        SELECT ip.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/controller/InsOrderPlanController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
index d53cc19..bc840f3 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
@@ -15,10 +15,7 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.HashMap;
@@ -111,8 +108,8 @@
     @ValueClassify("妫�楠屼换鍔�")
     @ApiOperation(value = "妫�楠屼换鍔℃彁浜�")
     @PostMapping("/submitPlan")
-    public Result<?> submitPlan(Integer orderId, String laboratory, Integer verifyUser) {
-        int num = insOrderPlanService.submitPlan(orderId, laboratory, verifyUser);
+    public Result<?> submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode, String sampleCode) {
+        int num = insOrderPlanService.submitPlan(orderId, laboratory, verifyUser, entrustCode, sampleCode);
         return num == 1 ? Result.success() : Result.fail("鎻愪氦澶辫触锛岄儴鍒嗛」鐩繕鏈繘琛屾楠�");
     }
 
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
index 4aa76b8..510fa39 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
@@ -2,7 +2,6 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.mom.dto.InsOrderPlanDTO;
-import com.yuanchu.mom.dto.InsProductDto;
 import com.yuanchu.mom.pojo.InsOrderFile;
 import com.yuanchu.mom.pojo.InsProduct;
 import org.springframework.web.multipart.MultipartFile;
@@ -28,7 +27,7 @@
 
     int verifyPlan(Integer orderId, String laboratory, Integer type, String tell);
 
-    int submitPlan(Integer orderId, String laboratory, Integer verifyUser);
+    int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode, String sampleCode);
 
     List<InsProduct> getInsProduct(Integer id, Integer type, String laboratory);
 
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 8d61c07..a4fd33f 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,6 +33,7 @@
 import com.yuanchu.mom.utils.JackSonUtil;
 import com.yuanchu.mom.utils.MatrixToImageWriter;
 import com.yuanchu.mom.utils.QueryWrappers;
+import com.yuanchu.mom.utils.RedisUtil;
 import com.yuanchu.mom.vo.InsOrderPlanTaskSwitchVo;
 import com.yuanchu.mom.vo.InsOrderPlanVO;
 import com.yuanchu.mom.vo.ProductVo;
@@ -3387,7 +3388,7 @@
     }
 
     @Override
-    public int submitPlan(Integer orderId, String laboratory, Integer verifyUser) {
+    public int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode, String sampleCode) {
         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()
@@ -3476,6 +3477,9 @@
             }
             return null;
         });
+        // 鍒犻櫎鏁伴噰閲囬泦娆℃暟
+        String key = "frequency" + ":" + entrustCode + ":" + sampleCode;
+        RedisUtil.del(key);
         return 1;
     }
 

--
Gitblit v1.9.3