Просмотр исходного кода

新增 获取水肥机状态信息接口

zhaiyifei 8 месяцев назад
Родитель
Сommit
320d12432c

+ 32 - 21
src/main/java/com/yunfeiyun/agmp/iotm/device/sf/service/impl/IotRunHaoSfServiceImpl.java

@@ -112,24 +112,30 @@ public class IotRunHaoSfServiceImpl extends IIotSfCommService {
     /**
      * 获取灌区和电磁阀的绑定关系数据
      */
-    private Map<String, List<String>> getGroupValveMap(){
+    private Map<String, List<String>> getGroupValveMap(JSONObject dataJson){
         Map<String, List<String>> groupValveMap = new HashMap<>();
-
-        List<String> valveList = new ArrayList<>();
-        valveList.add("Btn-fa1");
-        valveList.add("Btn-fa2");
-
-        List<String> valveList2 = new ArrayList<>();
-        valveList2.add("Btn-fa3");
-
-        groupValveMap.put("Btn-qx01", valveList);
-        groupValveMap.put("Btn-qx02", valveList2);
-
+        for (String key : dataJson.keySet()) {
+            if(!key.startsWith("Btn-fx")){
+                continue;
+            }
+            String groupIndexString = dataJson.getString(key);
+            int groupIndex = 0;
+            try{
+                groupIndex = (int) Math.round(Double.parseDouble(groupIndexString));
+                String groupKey = "Btn-qx" + String.format("%02d", groupIndex);
+                if(!groupValveMap.containsKey(groupKey)){
+                    List<String> valveList = new ArrayList<>();
+                    groupValveMap.put(groupKey, valveList);
+                }
+                String suffix = key.split("Btn-fx")[1];
+                String valveKey = "Btn-fa" + Integer.valueOf(suffix);
+                groupValveMap.get(groupKey).add(valveKey);
+            }catch (Exception e){}
+        }
         return groupValveMap;
 
     }
 
-
     /**
      * 获取未配置的灌区元素列表
      *
@@ -169,10 +175,13 @@ public class IotRunHaoSfServiceImpl extends IIotSfCommService {
         params.put("devBid", devBid);
 
         IotRunHaoSfdata iotRunHaoSfdata = (IotRunHaoSfdata) mongoService.findOne(IotRunHaoSfdata.class, params, "sfdataCreatedDate", "desc");
-        Map<String, List<String>> groupValveMap = getGroupValveMap();
+
         List<IotSfElementfactorAlreadyListResVo> resultList = new ArrayList<>();
         if (iotRunHaoSfdata != null) {
             JSONObject dataJson = iotRunHaoSfdata.getSfdataContent();
+            //获取灌区和电磁阀的绑定关系
+            Map<String, List<String>> groupValveMap = getGroupValveMap(dataJson);
+
             for (String key : dataJson.keySet()) {
                 if(sfCodeSet.contains(key)){
                     continue;
@@ -185,6 +194,7 @@ public class IotRunHaoSfServiceImpl extends IIotSfCommService {
                 BeanUtils.copyProperties(elementFactor, resVo);
 
                 List<String> valveList = groupValveMap.get(key);
+                // 灌区内配置过电磁阀
                 if(valveList != null && !valveList.isEmpty()){
                     List<IotSfElementfactorAlreadyListResVo> childrenList = new ArrayList<>();
                     for(String valve : valveList){
@@ -234,7 +244,7 @@ public class IotRunHaoSfServiceImpl extends IIotSfCommService {
             throw new IotBizException(IotErrorCode.INVALID_DEVICE_ID.getCode(), "设备不存在");
         }
 
-        // 获取已经配置的灌区元素列表
+        // 获取已经配置的阀门元素列表
         List<IotSfElementfactor> elementfactorList = iotSfElementfactorService.selectIotSfElementfactorListByValve(reqVo);
         Set<String> sfCodeSet = new java.util.HashSet<>();
         for (IotSfElementfactor elementfactor : elementfactorList) {
@@ -247,14 +257,16 @@ public class IotRunHaoSfServiceImpl extends IIotSfCommService {
         params.put("devBid", devBid);
 
         IotRunHaoSfdata iotRunHaoSfdata = (IotRunHaoSfdata) mongoService.findOne(IotRunHaoSfdata.class, params, "sfdataCreatedDate", "desc");
-        Map<String, List<String>> groupValveMap = getGroupValveMap();
-        Set<String> valveSet = new HashSet<>();
-        for (List<String> valveList : groupValveMap.values()) {
-            valveSet.addAll(valveList);
-        }
         List<IotSfElementfactor> resultList = new ArrayList<>();
         if (iotRunHaoSfdata != null) {
             JSONObject dataJson = iotRunHaoSfdata.getSfdataContent();
+            //获取灌区和电磁阀的绑定关系 获取已经配置的阀门
+            Map<String, List<String>> groupValveMap = getGroupValveMap(dataJson);
+            Set<String> valveSet = new HashSet<>();
+            for (List<String> valveList : groupValveMap.values()) {
+                valveSet.addAll(valveList);
+            }
+
             for (String key : dataJson.keySet()) {
                 if(sfCodeSet.contains(key) || valveSet.contains(key)){
                     continue;
@@ -334,7 +346,6 @@ public class IotRunHaoSfServiceImpl extends IIotSfCommService {
                         parentInfo.getChildrenList().add(lsliVo);
                     }
                 }
-
             }
         }