yaowanxin
6 小时以前 b1c6c32fdcee89f97c05bd21f4fb0b95f4009764
修改方法
已修改4个文件
111 ■■■■ 文件已修改
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceCollectionDto.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/Device.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/dto/DeviceCollectionDto.java
@@ -25,4 +25,10 @@
    @ApiModelProperty(value = "采集的检验项id")
    private List<Integer> itemIds;
    //数据库用户名
    @ApiModelProperty(value = "数据库用户名")
    private String dbUserName;
    //数据库密码
    @ApiModelProperty(value = "数据库密码")
    private String dbPassword;
}
cnas-device/src/main/java/com/ruoyi/device/pojo/Device.java
@@ -134,5 +134,10 @@
    @ApiModelProperty("产地")
    private String origin;
    //数据库用户名
    @ApiModelProperty("数据库用户名")
    private String dbUserName;
    //数据库密码
    @ApiModelProperty("数据库密码")
    private String dbPassword;
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
@@ -35,6 +35,7 @@
import lombok.AllArgsConstructor;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -194,6 +195,8 @@
    @Override
    public Result<?> dataAcquisition(HttpServletRequest request, DeviceCollectionDto dto) {
        // 查询检验项
        List<Integer> itemIds = dto.getItemIds();
        if (CollectionUtils.isEmpty(itemIds)) {
@@ -234,7 +237,12 @@
        // 数采返回信息
        Map<String, Object> map = new HashMap<>();
        for (Device device : deviceList) {
            Device device1 = deviceMapper.selectById(device.getId());
            dto.setDbUserName(device1.getDbUserName());
            dto.setDbPassword(device1.getDbPassword());
            String ip = device.getIp();
            // 根据检验项获取config
            List<DataConfig> list = dataConfigService.list(Wrappers.<DataConfig>lambdaQuery()
                    .in(DataConfig::getStructureItemParameterId, itemParameterIds)
@@ -244,16 +252,10 @@
            // 判断设备是否是数字直桥JCZX-ZB-ER02022
            if (device.getManagementNumber().equals("JCZX-ZB-ER02022")) {
                map.putAll(dataCollectBridge(list, device, dto.getEntrustCode()));
//                list:包含设备配置信息的 DataConfig 列表。
//                device:当前的设备对象。
//                dto.getEntrustCode():从 DeviceCollectionDto 对象中获取的委托编码
            } else {
                map.putAll(DataAcquisition.dataAcquisitionEntrance(list, device, dto.getEntrustCode(), dto.getEntrustCode(), ip, insProducts.get(0).getCableTag()));
//                list:包含设备配置信息的 DataConfig 列表。
//                device:当前的设备对象。
//                dto.getEntrustCode():委托编码,此处传入两次。
//                ip:当前设备的 IP 地址。
//                insProducts.get(0).getCableTag():从 insProducts 列表的第一个元素中获取的电缆标签
                map.putAll(DataAcquisition.dataAcquisitionEntrance(list, device, dto.getEntrustCode(), dto.getEntrustCode(), ip, insProducts.get(0).getCableTag(),dto.getDbUserName(),dto.getDbPassword()));
            }
        }
cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java
@@ -43,7 +43,7 @@
     * @param device
     * @return
     */
    public static Map<String, Object> dataAcquisitionEntrance(List<DataConfig> dataConfig, Device device, String entrustCode, String sampleCode, String ip, String cableTag) {
    public static Map<String, Object> dataAcquisitionEntrance(List<DataConfig> dataConfig, Device device, String entrustCode, String sampleCode, String ip, String cableTag, String dbUserName, String dbPassword) {
        // 判断是否是影像测量仪
        if (device.getManagementNumber().equals("JCZX-ZB-OP07001")) {
            if (device.getFileType().equals(".xlsx")) {
@@ -76,7 +76,9 @@
                "&sampleCode=" + sampleCode +
                "&mdbEntrustCode=" + device.getEntrustCode() +
                "&mdbSampleCode=" + device.getSampleCode() +
                "&dbFileName=" + device.getDbFileName();
                "&dbFileName=" + device.getDbFileName()+
                "&dbUserName=" + dbUserName +
                "&dbPassword=" + dbPassword;
        System.out.println("请求的 URL: " + http);
        String result = null;
        try {
@@ -134,7 +136,8 @@
                    }
                    break;
                case ".db":
                    map = analysisDb(data, userMap, device);
                    map = analysisDb1(data, userMap, device);
//                    map = analysisDb(data, userMap, device);
                    break;
                case ".png":
                    map = readPngString(data, userMap, device);
@@ -187,6 +190,56 @@
        return "1";
    }
    private static Map<String, Object> analysisDb1(String data, Map<String, List<DataConfig>> dataConfig, Device device) {
        JSONObject jsonObject = JSON.parseObject(data);
        Map<String, Object> map = new HashMap<>();
        if (jsonObject.isEmpty()) {
            return map;
        }
        // 从 JSON 数据中提取 data 数组
        JSONArray dataList = JSONArray.parseArray(jsonObject.get("data").toString());
        dataConfig.forEach((k, v) -> {
            AtomicInteger numberOfDataEntries = new AtomicInteger();
            List<Object> list = new ArrayList<>();
            for (int config = 0; config < v.size(); config++) {
                String refery = getRefer(v.get(config).getRefery());
                for (int i = 0; i < dataList.size(); i++) {
                    JSONObject jsonObject1 = JSON.parseObject(dataList.get(i).toString());
                    if (ObjectUtils.isNotEmpty(jsonObject1.get(refery))) {
                        numberOfDataEntries.addAndGet(1);
                        list.add(jsonObject1.get(refery));
                    }
//                    Object o = jsonObject1.get(refery);
//                    if (ObjectUtils.isNotEmpty(o)) {
//                        numberOfDataEntries.addAndGet(1);
//                        list.add(o);
//                    }
                }
            }
            // 拼接数采配置
            List<Object> result = new ArrayList<>();
            for (int i = 0; i < numberOfDataEntries.get(); i++) {
                StringBuilder aggregate = new StringBuilder();
                for (int j = 0; j < v.size(); j++) {
                    int index;
                    if (j == 0) {
                        index = i;
                    } else {
                        index = numberOfDataEntries.get() + i;
                    }
                    aggregate.append(list.get(index).toString()).append(",");
                }
                if (aggregate.length() > 0) {
                    aggregate.setLength(aggregate.length() - 1);
                }
                result.add(aggregate.toString());
            }
            // 进行公式计算
            Object resultValue = calculationFormula(result, v.get(0), k, device);
            map.put(k, resultValue);
        });
        return map;
    }
    /**
     * 需要通过X,Y轴定位
@@ -195,17 +248,20 @@
     * @param dataConfig
     * @return
     */
    private static Map<String, Object> analysisDb(String data, Map<String, List<DataConfig>> dataConfig, Device device) {
        JSONObject jsonObject = JSON.parseObject(data);
        Map<String, Object> map = new HashMap<>();
        if (jsonObject.isEmpty()) {
            return map;
        }
        // 从 JSON 数据中提取 data 数组
        JSONArray dataList = JSONArray.parseArray(jsonObject.get("data").toString());
        dataConfig.forEach((k, v) -> {
            AtomicInteger numberOfDataEntries = new AtomicInteger();
            List<Object> list = new ArrayList<>();
            for (int config = 0; config < v.size(); config++) {
//                String refery = v.get(config).getRefery();
                String refery = getRefer(v.get(config).getRefery());
                for (int i = 0; i < dataList.size(); i++) {
                    JSONObject jsonObject1 = JSON.parseObject(dataList.get(i).toString());
@@ -783,7 +839,7 @@
                continue;
            }
            // 最终结果
//            List<Object> result = new ArrayList<>();
            List<Object> result = new ArrayList<>();
            // 通过\n将字符串分割为行
            String[] aColumnY = data.replaceAll(" ", "").split("\n");
            Integer end = null;
@@ -807,7 +863,7 @@
                            }
                            try {
//                                System.out.println("----------");
                                list.add(split1[j]);
                                result.add(split1[j]);
                            } catch (Exception e) {
                                throw new ErrorException(k + ":X轴定位超出!");
@@ -831,7 +887,7 @@
                            if (aLineX[j].contains(referx)) {
                                try {
//                                    System.out.println("77777777777777");
                                    list.add(aLineX[j + x]);
                                    result.add(aLineX[j + x]);
                                } catch (Exception e) {
                                    throw new ErrorException(k + ":X轴定位超出!");
                                }
@@ -848,7 +904,7 @@
                        if (aLineX[j].contains(referx)) {
                            try {
//                                System.out.println("4444444444444444");
                                list.add(aLineX[j + x]);
                                result.add(aLineX[j + x]);
                            } catch (Exception e) {
                                throw new ErrorException(k + ":X轴定位超出!");
                            }
@@ -856,11 +912,11 @@
                    }
                }
            }
            // 防止计算公式的时候出现:[null] 这种数据
//            if (ObjectUtils.isNotEmpty(result)) {
//             防止计算公式的时候出现:[null] 这种数据
            if (ObjectUtils.isNotEmpty(result)) {
//                String formatProcessing = getFormatProcessing(result);
//                list.addAll(result);
//            }
                list.addAll(result);
            }
        }
        return list;
    }