Browse Source

refactor(environment-hj212-service): 重构监测数据处理逻辑

- 修改 PsMonitorSz 类,增加监测因子、实时数据和数据标记字段
- 移除 PsMonitorSzMapper 中的 selectMonitorId 方法
- 重构 PsMonitorSzServiceImpl 中的 pushMonitorData 方法,使用批量插入
- 更新 PsMonitorSzService 接口,移除 selectMonitorId 方法
- 重构 MonitorDatasynch 中的 setPsMonitorSz 方法,返回监测数据列表- 更新 PsMonitorSzMapper.xml,移除 selectMonitorId SQL 语句
林仔 1 year ago
parent
commit
3e65479697

+ 10 - 4
environment-hj212-service/src/main/java/com/zksy/environmentHJ212/domain/po/PsMonitorSz.java

@@ -8,6 +8,7 @@ import io.swagger.annotations.ApiModel;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 /**
@@ -43,14 +44,19 @@ public class PsMonitorSz extends Model<PsMonitorSz> {
     private LocalDateTime sampleTime;
 
     /**
-     * 温度。单位:摄氏度
+     * 监测因子
      */
-    private Double temp;
+    private String code;
 
     /**
-     * 湿度。单位:%
+     * 实时数据
      */
-    private Double humidity;
+    private BigDecimal realTime;
+
+    /**
+     * 数据标记
+     */
+    private String flag;
 
     /**
      * 数据获取时间

+ 0 - 1
environment-hj212-service/src/main/java/com/zksy/environmentHJ212/mapper/PsMonitorSzMapper.java

@@ -13,5 +13,4 @@ import org.apache.ibatis.annotations.Param;
  * @since 2021-06-08
  */
 public interface PsMonitorSzMapper extends BaseMapper<PsMonitorSz> {
-    Integer selectMonitorId(@Param("mn") String mn);
 }

+ 0 - 2
environment-hj212-service/src/main/java/com/zksy/environmentHJ212/service/PsMonitorSzService.java

@@ -13,7 +13,5 @@ import com.zksy.environmentHJ212.domain.po.PsMonitorSz;
  * @since 2021-06-08
  */
 public interface PsMonitorSzService extends IService<PsMonitorSz> {
-    Integer selectMonitorId(String mn);
-
     void pushMonitorData(String oldDataStr,String[] dataArr,String ipPort);
 }

+ 6 - 25
environment-hj212-service/src/main/java/com/zksy/environmentHJ212/service/impl/PsMonitorSzServiceImpl.java

@@ -7,10 +7,12 @@ import com.zksy.environmentHJ212.mapper.PsMonitorSzMapper;
 import com.zksy.environmentHJ212.service.PsMonitorSzService;
 import com.zksy.environmentHJ212.utils.MonitorDatasynch;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
@@ -25,32 +27,11 @@ import java.util.UUID;
 @Slf4j
 @Service
 public class PsMonitorSzServiceImpl extends ServiceImpl<PsMonitorSzMapper, PsMonitorSz> implements PsMonitorSzService {
-    @Override
-    public Integer selectMonitorId(String mn) {
-        return this.baseMapper.selectMonitorId(mn);
-    }
-
+    @Autowired
+    private PsMonitorSzService service;
     @Override
     public void pushMonitorData(String oldDataStr, String[] dataArr, String ipPort) {
-        Map map = new HashMap<>();
-        Map keyMap = new HashMap();
-        PsMonitorSz monitordata = null;
-        MonitorDatasynch.setPsMonitorSz(map, dataArr, keyMap, "-Rtd",monitordata);
-        if (map.size() > 0) {
-            monitordata = JSON.parseObject(JSON.toJSONString(map), PsMonitorSz.class);
-            monitordata.setId(UUID.randomUUID().toString().replace("-", ""));
-            // 入库时间
-            monitordata.setRecordTime(LocalDateTime.now());
-            monitordata.setRemark(oldDataStr);
-            log.info("处理数据");
-
-            monitordata.setIpport(ipPort);
-            if (monitordata != null && monitordata.getSampleTime() != null) {
-                //Integer monitorId = serverHandler.psMonitorSzService.selectMonitorId(psMonitorSz.getMn());
-                monitordata.setMonitorid(123456789);
-                // 添加数据
-                this.baseMapper.insert(monitordata);
-            }
-        }
+        List<PsMonitorSz>  psMonitorSzList =MonitorDatasynch.setPsMonitorSz(oldDataStr, dataArr,ipPort);
+        service.saveBatch(psMonitorSzList);
     }
 }

+ 59 - 53
environment-hj212-service/src/main/java/com/zksy/environmentHJ212/utils/MonitorDatasynch.java

@@ -104,73 +104,79 @@ public class MonitorDatasynch {
         return response;
     }
 
-    public static PsMonitorSz setPsMonitorSz(Map map, String[] dataArr, Map keyMap, String resultStr, PsMonitorSz monitordata) {
-        Pattern pattern = Pattern.compile("^[aw]{1}[0-9]{1,5}$");
-        fieldMap.keySet().forEach(item -> {
-            String aa = item;
-            if (pattern.matcher(item).matches()) {
-                aa = item + resultStr;
-            } else {
-                aa = item;
+    public static List<PsMonitorSz> setPsMonitorSz(String oldDataStr,String[] dataArr,String ipPort) {
+        ArrayList<String> arrayList = new ArrayList<>();
+        List<PsMonitorSz> psMonitorSzList = new ArrayList<>();
+        for (String param : dataArr) {
+            System.out.println("param = " + param);
+            String String = "&&";
+            boolean contains = param.contains(String);
+            if (contains) {
+                param = param.replace(String, ",");
+
             }
-            keyMap.put(aa, fieldMap.get(item));
-        });
-        for (String str : dataArr) {
-            // 判断对应值是有包含&&符号,如有就替换为空字符
-            if (str.contains("&&")) {
-                str = str.replace("&&", "");
+            if (param.contains(",")) {
+                arrayList.add(param);
             }
-            List<String> dtList = new ArrayList<>();
-            if (str.contains(",")) {
-                // 通过,符号截取同项目不同数据值的数据。
-                String[] split = str.split(",");
-                dtList = Arrays.asList(split);
-            } else {
-                dtList.add(str);
+
+        }
+        ArrayList<String> objects = new ArrayList<>();
+        for (String entity : arrayList) {
+            String substring = null;
+            if (entity.contains("-")) {
+                substring = entity.substring(0, entity.indexOf("-"));
+            }
+            if (StringUtils.isBlank(substring)) {
+                continue;
             }
-            for (String item : dtList) {
-                if (item.contains("=")) {
-                    int index = item.indexOf("=");
-                    int lastIndex = item.lastIndexOf("=");
-                    // 判断是否有多个数据值
-                    if (index == lastIndex) {
-                        // 判断=符号,是否是最后一个字符
-                        if (index + 1 != item.length()) {
-                            String key = item.substring(0, index);// 011-Rtd
-                            String val = item.substring(index + 1); // 35.570
-                            // 替换字段键
-                            if (keyMap.containsKey(key)) {
-                                if ("DataTime".equals(key)) {
-                                    map.put(keyMap.get(key), DateTimeUtil.parseDateTime(val));
-                                } else {
-                                    map.put(keyMap.get(key), val);
+            if (entity.startsWith(substring)) {
+                objects.add(substring);
+                String[] split = entity.split(",");
+
+                PsMonitorSz psMonitorSz = new PsMonitorSz();
+                psMonitorSz.setRemark(oldDataStr);
+                for (String parameters : split) {
+
+                    String[] split1 = parameters.split("=");
+                    psMonitorSz.setCode(substring);
+                    if (parameters.startsWith(substring + "-Rtd=")) {
+                        psMonitorSz.setRealTime(new BigDecimal(split1[1]));
+                    }
+                    if (parameters.startsWith(substring + "-Flag=")) {
+                        psMonitorSz.setFlag(split1[1]);
+                    }
+                    psMonitorSz.setRecordTime(LocalDateTime.now());
+                    psMonitorSz.setId(UUID.randomUUID().toString().replace("-", ""));
+                    for (String comParams : dataArr) {
+                        if (comParams.contains("&&") && !comParams.contains(",")) {
+                            String replace = comParams.replace("&&", ",");
+                            String[] split2 = replace.split(",");
+                            if (split2.length>1) {
+                                String dateString = split2[1];
+                                if (dateString.startsWith("DataTime=")) {
+                                    psMonitorSz.setSampleTime(DateTimeUtil.parseDateTime(dateString.split("=")[1]));
                                 }
                             }
                         }
-                    } else {
-                        // 判断=符号,是否是最后一个字符
-                        if (lastIndex + 1 != item.length()) {
-                            String key = item.substring(index + 1, lastIndex);
-                            String val = item.substring(lastIndex + 1);
-                            // 替换字段键
-                            if (keyMap.containsKey(key)) {
-                                if ("DataTime".equals(key)) {
-                                    map.put(keyMap.get(key), DateTimeUtil.parseDateTime(val));
-                                } else {
-                                    map.put(keyMap.get(key), val);
-                                }
-                            }
+                        String[] comsplit1 = comParams.split("=");
+                        String paraname = comsplit1[0];
+                        String value = comsplit1[1];
+                        if (paraname.equals("MN")) {
+                            psMonitorSz.setMn(value);
+                        }
+                        if (paraname.equals("Flag")) {
+                            psMonitorSz.setFlag(value);
                         }
                     }
                 }
+                psMonitorSz.setIpport(ipPort);
+                psMonitorSzList.add(psMonitorSz);
             }
         }
-
-        return monitordata;
+        return psMonitorSzList;
     }
 
     public static List<MinuteDataInfo> minuteDataInfoData(String oldDataStr,String[] dataArr) {
-        Pattern pattern = Pattern.compile("^[aw]{1}[0-9]{1,5}$");
         ArrayList<String> arrayList = new ArrayList<>();
         List<MinuteDataInfo> minuteDataInfolist = new ArrayList<>();
         for (String param : dataArr) {

+ 0 - 4
environment-hj212-service/src/main/resources/mapper/PsMonitorSzMapper.xml

@@ -24,8 +24,4 @@
         FID, MONITORID, SAMPLE_TIME, TEMP, HUMIDITY, RECORD_TIME, REPOR_UNIT, REPORT_DATE, REMARK, CN, ST, MN
     </sql>
 
-    <select id="selectMonitorId" resultType="java.lang.Integer">
-        select monitorid from ps_monitor_sz where mn=#{mn}
-    </select>
-
 </mapper>