zouyu
9 天以前 56e6e0bf18c39a933aec78762b636fdf2efa8d68
cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java
@@ -51,7 +51,7 @@
     * @param device
     * @return
     */
    public static Map<String, Object> dataAcquisitionEntrance(List<DataConfig> dataConfig, Device device, String entrustCode, String sampleCode, String ip, String cableTag, String dbUserName, String dbPassword,String dbTable) {
    public static Map<String, Object> dataAcquisitionEntrance(List<DataConfig> dataConfig, Device device, String entrustCode,String lotBatchNo, String sampleCode, String ip, String cableTag, String dbUserName, String dbPassword,String dbTable) {
        // 判断是否是影像测量仪
        if (device.getManagementNumber().equals("JCZX-ZB-OP07001")) {
            if (device.getFileType().equals(".xlsx")) {
@@ -90,6 +90,8 @@
                "&dbFileName=" + dbFileName +
                "&dbUserName=" + dbUserName +
                "&dbPassword=" + dbPassword +
                "&lotBatchNo=" + lotBatchNo +
                "&cableTag=" + cableTag +
                "&dbTable=" + dbTable;
        System.out.println("请求的 URL: " + http);
        String result = null;
@@ -126,11 +128,12 @@
                case ".docx":
                    map = analysisString(data, userMap, device, entrustCode, sampleCode);
                    break;
                case ".xls":
                case ".xlsx":
                    map = analysisList(data, userMap, device, entrustCode, sampleCode);
                    break;
                case ".xls":
                    map = analysisTxt(data, userMap, device, entrustCode, sampleCode);
                case ".pngInExcel":
                    map = analysisPngInExcel(data, userMap, device, entrustCode, sampleCode);
                    break;
                case ".txt":
                    map = analysisTxt(data, userMap, device, entrustCode, sampleCode);
@@ -277,7 +280,7 @@
        // 从 JSON 数据中提取 data 数组
        JSONArray dataList = JSONArray.parseArray(jsonObject.get("data").toString());
        dataConfig.forEach((k, v) -> {
            AtomicInteger numberOfDataEntries = new AtomicInteger();
            AtomicInteger numberOfDataEntries = new AtomicInteger(0);
            List<Object> list = new ArrayList<>();
            for (int config = 0; config < v.size(); config++) {
//                String refery = v.get(config).getRefery();
@@ -295,15 +298,15 @@
            List<Object> result = new ArrayList<>();
            for (int i = 0; i < numberOfDataEntries.get(); i++) {
                String aggregate = "";
                for (int j = 0; j < v.size(); j++) {
                    int index;
                    if (j == 0) {
                        index = i;
                    } else {
                        index = numberOfDataEntries.get() + i;
                    }
                    aggregate += list.get(index).toString() + ",";
                }
//                for (int j = 0; j < v.size(); j++) {
//                    int index;
//                    if (j == 0) {
//                        index = i;
//                    } else {
//                        index = numberOfDataEntries.get() + i;
//                    }
//                }
                aggregate += list.get(i).toString() + ",";
                int lastIndex = aggregate.lastIndexOf(",");
                String substring = aggregate.substring(0, lastIndex);
                result.add(substring);
@@ -569,6 +572,45 @@
    }
    /**
     * 解析excel中识别到的图片内容
     *
     * @param data       采集到的文件字符串
     * @param dataConfig 用户配置好的x,y轴定位数据与参照物
     * @return
     */
    private static Map<String, Object> analysisPngInExcel(String data, Map<String, List<DataConfig>> dataConfig,
                                                   Device device, String entrustCode, String sampleCode) {
        Map<String, Object> map = new HashMap<>();
        //处理data
        Map<String,List<Object>> dataMap = new HashMap<>();
        String[] rows = data.split("\n");
        String[] headRow = rows[0].split(" ");//获取表头列表
        for (int i = 0; i < headRow.length; i++) {
            //数据最多五条
            List<Object> vals = new ArrayList<>();
            for (int j = 1; j <= 5; j++) {
                String[] cols = rows[j].split(" ");
                vals.add(cols[i]);
            }
            dataMap.put(headRow[i],vals);
        }
        dataConfig.forEach((k, v) -> {
            List<Object> list = new ArrayList<>();
            v.stream().sorted(Comparator.comparing(DataConfig::getX)).forEach(config->{
                for (Map.Entry<String, List<Object>> entry : dataMap.entrySet()) {
                    if(entry.getKey().contains(config.getReferx())){
                        list.addAll(entry.getValue());
                    }
                }
            });
            // 进行公式计算
            Object resultValue = calculationFormula(list, v.get(0), k, device);
            map.put(k, resultValue);
        });
        return map;
    }
    /**
     * @param data       采集到的文件字符串
     * @param dataConfig 用户配置好的x,y轴定位数据与参照物
     * @return