Quellcode durchsuchen

需求变更-报警设置修改

yuejiaying vor 4 Jahren
Ursprung
Commit
88fa7a09b5

+ 9 - 2
sms_water/src/main/java/com/huaxu/controller/AlarmSettingController.java

@@ -6,6 +6,7 @@ import com.huaxu.common.StringUtils;
 import com.huaxu.dto.AlarmSettingDto;
 import com.huaxu.entity.AlarmSetting;
 import com.huaxu.entity.GisSetting;
+import com.huaxu.entity.SceneEntity;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.LoginUser;
 import com.huaxu.model.Pagination;
@@ -80,13 +81,19 @@ public class AlarmSettingController {
     @ApiOperation(value = "批量增加报警配置信息",notes = "alarmType 为参数报警或状态报警")
     public AjaxMessage<Boolean> insertBatch(@ApiParam(value = "报警配置列表", required = true) @RequestBody List<AlarmSetting> listAlarmSetting) {
         LoginUser currentUser = UserUtil.getCurrentUser();
+        SceneEntity sceneEntity=new  SceneEntity();
+        if(listAlarmSetting.size()>0){
+             sceneEntity=sceneService.findParentSceneById(listAlarmSetting.get(0).getSceneId());
+        }
         for (AlarmSetting alarm:listAlarmSetting) {
-            if(!(alarm.getAlarmType().equals("参数报警")||alarm.getAlarmType().equals("状态报警"))||alarm.getDeviceId()==null||
+            if(!(alarm.getAlarmType().equals("参数报警")||alarm.getAlarmType().equals("状态报警"))||alarm.getDeviceId()==null||alarm.getSceneId()==null||
                     (alarm.getAlarmType().equals("参数报警")&&(alarm.getAttributeId()==null|| StringUtils.isEmpty(alarm.getAlarmCondition())||alarm.getAlarmValue()==null))||
                     (alarm.getAlarmType().equals("状态报警")&&(StringUtils.isEmpty(alarm.getAlarmCondition())||alarm.getAlarmValue()==null))){
                 return new AjaxMessage<>(ResultStatus.PARAM_ERROR);
             }
-
+            alarm.setSceneName(sceneEntity.getSceneName());
+            alarm.setParentSceneId(sceneEntity.getParentSceneId());
+            alarm.setParentSceneName(sceneEntity.getParentSceneName());
             alarm.setCreateBy(currentUser.getUsername());
             alarm.setTenantId(currentUser.getTenantId());
             alarm.setStatus(1);

+ 2 - 0
sms_water/src/main/java/com/huaxu/dao/SceneMapper.java

@@ -39,5 +39,7 @@ public interface SceneMapper extends BaseMapper<SceneEntity> {
 
     List<SceneEntity> findByParentId(@Param(value = "scene")SceneEntity sceneEntity);
 
+    SceneEntity findParentSceneById(@Param(value = "id")Long id);
+
     /**删除相关方法  使用mybatis-plus集成的 **/
 }

+ 0 - 10
sms_water/src/main/java/com/huaxu/dto/AlarmSettingDto.java

@@ -32,21 +32,11 @@ public class AlarmSettingDto extends AlarmSetting {
      */
     @ApiModelProperty(value = "所属部门名称")
     private String deptOrgName;
-    /**
-     * 场景id
-     */
-    @ApiModelProperty(value = "场景id")
-    private Long sceneId;
     /**
      * 场景id
      */
     @ApiModelProperty(value = "场景id及所有下级id")
     private List<Long> sceneIds;
-    /**
-     * 场景名称
-     */
-    @ApiModelProperty(value = "场景名称")
-    private String sceneName;
     /**
      * 设备类型
      */

+ 20 - 0
sms_water/src/main/java/com/huaxu/entity/AlarmSetting.java

@@ -34,6 +34,26 @@ public class AlarmSetting implements Serializable {
      */
     @ApiModelProperty(value = "租户标识")
     private String tenantId;
+    /**
+     * 一级场景id
+     */
+    @ApiModelProperty(value = "一级场景")
+    private Long parentSceneId;
+    /**
+     * 一级场景名称
+     */
+    @ApiModelProperty(value = "一级场景名称")
+    private String parentSceneName;
+    /**
+     * 场景id
+     */
+    @ApiModelProperty(value = "场景id")
+    private Long sceneId;
+    /**
+     * 场景名称
+     */
+    @ApiModelProperty(value = "场景名称")
+    private String sceneName;
     /**
      * 设备编号
      */

+ 4 - 0
sms_water/src/main/java/com/huaxu/entity/SceneEntity.java

@@ -144,4 +144,8 @@ public class SceneEntity implements Serializable {
     @ApiModelProperty(value = "场景图片", position = 100)
     @TableField(exist = false)
     private List<SceneImageEntity> sceneImages;
+
+    /** 一级场景名称 */
+    @ApiModelProperty(value = "一级场景名称",hidden = true)
+    private String parentSceneName;
 }

+ 7 - 0
sms_water/src/main/java/com/huaxu/service/SceneService.java

@@ -357,4 +357,11 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
         List<SceneEntity> sceneTree = getSceneTree(sceneEntities, Long.valueOf(0), 1);
         return sceneTree;
     }
+
+    /**
+     * 根据场景id查询一级场景信息
+     */
+    public SceneEntity findParentSceneById(Long id) {
+        return sceneMapper.findParentSceneById(id);
+    }
 }

+ 92 - 84
sms_water/src/main/java/com/huaxu/service/impl/OnlineMonitorImpl.java

@@ -20,6 +20,7 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -188,6 +189,7 @@ public class OnlineMonitorImpl implements OnlineMonitorService {
                 byte[] bytes = redisUtil.get(("sms_water_"+monData.getDeviceCode()).getBytes());
                 if(bytes != null && bytes.length>0){
                     MonitorDataEntity monitorDataEntity= (MonitorDataEntity) ByteArrayUtils.bytesToObject(bytes).get();
+                    SimpleDateFormat formatdate = new SimpleDateFormat("YYYY-MM-dd");//日期算换格式
                     monDataCol.setCollectDate(monitorDataEntity.getCollectDate());
                     //筛选该设备相同属性的值
                     List<MonitorDataValueEntity>  attributeEntities=monitorDataEntity.getDataValues().stream().filter((MonitorDataValueEntity m)
@@ -214,30 +216,32 @@ public class OnlineMonitorImpl implements OnlineMonitorService {
                         byte[] bytes = redisUtil.get(("sms_water_"+monitorData.getDeviceCode()).getBytes());
                         if(bytes != null && bytes.length>0) {
                             MonitorDataEntity monitorDataEntity = (MonitorDataEntity) ByteArrayUtils.bytesToObject(bytes).get();
-                            //筛选该设备相同属性的值
-                            List<MonitorDataValueEntity> attributeEntities = monitorDataEntity.getDataValues().stream().filter((MonitorDataValueEntity m)
-                                    -> m.getAttributeId().equals(monitorData.getAttributeId())).collect(Collectors.toList());
-                            MonitorDataValueEntity  attributeEntity=attributeEntities.size()>0?attributeEntities.get(0):null;
-                            if (attributeEntity != null) {
-                                Double attributeValue =0d;
-                                if(attributeEntity.getDataValue() != null && monitorData.getLatestValue() != null){
-                                    attributeValue=attributeEntity.getDataValue() - monitorData.getLatestValue();
-                                }else if(attributeEntity.getDataValue() != null && monitorData.getLatestValue() == null) {
-                                    attributeValue=attributeEntity.getDataValue();
-                                }
-                                switch (monitorData.getAttributeType()) {
-                                    case "3":
-                                        monDataCol.setYieldWaterUsage(monDataCol.getYieldWaterUsage() != null ? monDataCol.getYieldWaterUsage() + attributeValue : attributeValue);
-                                        break;
-                                    case "4":
-                                        monDataCol.setIntakeWaterUsage(monDataCol.getIntakeWaterUsage() != null ? monDataCol.getIntakeWaterUsage() + attributeValue : attributeValue);
-                                        break;
-                                    case "5":
-                                        monDataCol.setPowerUsage(monDataCol.getPowerUsage() != null ? monDataCol.getPowerUsage() + attributeValue : attributeValue);
-                                        break;
-                                    case "6":
-                                        monDataCol.setDrugUsage(monDataCol.getDrugUsage() != null ? monDataCol.getDrugUsage() + attributeValue : attributeValue);
-                                        break;
+                            SimpleDateFormat formatdate = new SimpleDateFormat("YYYY-MM-dd");//日期算换格式
+                            //计算今日数据
+                            if(formatdate.format(new Date()).equals(monitorDataEntity.getCollectDate())) {
+                                //筛选该设备相同属性的值
+                                List<MonitorDataValueEntity> attributeEntities = monitorDataEntity.getDataValues().stream().filter((MonitorDataValueEntity m)
+                                        -> m.getAttributeId().equals(monitorData.getAttributeId())).collect(Collectors.toList());
+                                MonitorDataValueEntity  attributeEntity=attributeEntities.size()>0?attributeEntities.get(0):null;
+                                if (attributeEntity != null) {
+                                    Double attributeValue =0d;
+                                    if(attributeEntity.getDataValue() != null && monitorData.getLatestValue() != null){
+                                        attributeValue=attributeEntity.getDataValue() - monitorData.getLatestValue();
+                                    }
+                                    switch (monitorData.getAttributeType()) {
+                                        case "3":
+                                            monDataCol.setYieldWaterUsage(monDataCol.getYieldWaterUsage() != null ? monDataCol.getYieldWaterUsage() + attributeValue : attributeValue);
+                                            break;
+                                        case "4":
+                                            monDataCol.setIntakeWaterUsage(monDataCol.getIntakeWaterUsage() != null ? monDataCol.getIntakeWaterUsage() + attributeValue : attributeValue);
+                                            break;
+                                        case "5":
+                                            monDataCol.setPowerUsage(monDataCol.getPowerUsage() != null ? monDataCol.getPowerUsage() + attributeValue : attributeValue);
+                                            break;
+                                        case "6":
+                                            monDataCol.setDrugUsage(monDataCol.getDrugUsage() != null ? monDataCol.getDrugUsage() + attributeValue : attributeValue);
+                                            break;
+                                    }
                                 }
                             }
                         }
@@ -260,65 +264,70 @@ public class OnlineMonitorImpl implements OnlineMonitorService {
                         byte[] bytes = redisUtil.get(("sms_water_"+monitorData.getDeviceCode()).getBytes());
                         if(bytes != null && bytes.length>0) {
                             MonitorDataEntity monitorDataEntity = (MonitorDataEntity) ByteArrayUtils.bytesToObject(bytes).get();
-                            monDataCol.setCollectDate(monitorDataEntity.getCollectDate());
-                            //筛选该设备相同属性的值
-                            List<MonitorDataValueEntity> attributeEntities = monitorDataEntity.getDataValues().stream().filter((MonitorDataValueEntity m)
-                                    -> m.getAttributeId().equals(monitorData.getAttributeId())).collect(Collectors.toList());
-                            MonitorDataValueEntity  attributeEntity=attributeEntities.size()>0?attributeEntities.get(0):null;
-                            if (attributeEntity != null) {
-                                Double attributeValue =0d;
-                                if(attributeEntity.getDataValue() != null && monitorData.getLatestValue() != null){
-                                    attributeValue=attributeEntity.getDataValue() - monitorData.getLatestValue();
-                                }else if(attributeEntity.getDataValue() != null && monitorData.getLatestValue() == null) {
-                                    attributeValue=attributeEntity.getDataValue();
-                                }
-                                //实时数据
-                                monitorData.setDataValue(attributeEntity.getDataValue());
-                                monitorData.setUnit(attributeEntity.getUnit());
-                                switch (monitorData.getAttributeType()) {
-                                    case "3"://供水量or出水量
-                                        monDataCol.setYieldWaterUsage(monDataCol.getYieldWaterUsage() != null ? monDataCol.getYieldWaterUsage() + attributeValue : attributeValue);
-                                        break;
-                                    case "4"://取水量or进水量
-                                        monDataCol.setIntakeWaterUsage(monDataCol.getIntakeWaterUsage() != null ? monDataCol.getIntakeWaterUsage() + attributeValue : attributeValue);
-                                        break;
-                                    case "5"://耗电量
-                                        monDataCol.setPowerUsage(monDataCol.getPowerUsage() != null ? monDataCol.getPowerUsage() + attributeValue : attributeValue);
-                                        break;
-                                    case "6"://耗药量
-                                        monDataCol.setDrugUsage(monDataCol.getDrugUsage() != null ? monDataCol.getDrugUsage() + attributeValue : attributeValue);
-                                        break;
-                                    case "7"://取水PHor进水PH
-                                        monDataCol.setIntakePh(monitorData);
-                                        break;
-                                    case "8"://供水PHor出水PH
-                                        monDataCol.setYieldPh(monitorData);
-                                        break;
-                                    case "9"://取水浊度or进水浊度
-                                        monDataCol.setIntakeTurbidity(monitorData);
-                                        break;
-                                    case "10"://供水浊度or出水浊度
-                                        monDataCol.setYieldTurbidity(monitorData);
-                                        break;
-                                    case "11"://余氯
-                                        monDataCol.setResidualChlorine(monitorData);
-                                        break;
-                                    case "12"://水位
-                                        monDataCol.setWaterLevel(monitorData);
-                                        break;
-                                    case "13"://压力
-                                        monDataCol.setPressure(monitorData);
-                                        break;
-                                    case "14"://瞬时流量
-                                        monDataCol.setInstantFlow(monitorData);
-                                        break;
-                                    case "2"://水泵状态
-                                        DecimalFormat decimalFormat = new DecimalFormat("###################.###########");//去掉末尾小数点
-                                        String specsValue = attributeEntity.getDataValue() == null ? null : decimalFormat.format(attributeEntity.getDataValue());
-                                        monitorData.setSpecsName(specsValue == null ? null : deviceAttributeSpecsService.selectSpecsName(attributeEntity.getAttributeId(), specsValue));
-                                        pumpStatus.add(monitorData);
-                                        monDataCol.setPumpStatus(pumpStatus);
-                                        break;
+                                monDataCol.setCollectDate(monitorDataEntity.getCollectDate());
+                                //筛选该设备相同属性的值
+                                List<MonitorDataValueEntity> attributeEntities = monitorDataEntity.getDataValues().stream().filter((MonitorDataValueEntity m)
+                                        -> m.getAttributeId().equals(monitorData.getAttributeId())).collect(Collectors.toList());
+                                MonitorDataValueEntity  attributeEntity=attributeEntities.size()>0?attributeEntities.get(0):null;
+                                if (attributeEntity != null) {
+                                    //实时数据
+                                    monitorData.setDataValue(attributeEntity.getDataValue());
+                                    monitorData.setUnit(attributeEntity.getUnit());
+                                    SimpleDateFormat formatdate = new SimpleDateFormat("YYYY-MM-dd");//日期算换格式
+                                    //计算今日数据
+                                    if(formatdate.format(new Date()).equals(monitorDataEntity.getCollectDate())) {
+                                        Double attributeValue =0d;
+                                        if(attributeEntity.getDataValue() != null && monitorData.getLatestValue() != null){
+                                            attributeValue=attributeEntity.getDataValue() - monitorData.getLatestValue();
+                                        }
+                                        switch (monitorData.getAttributeType()) {
+                                            case "3"://供水量or出水量
+                                                monDataCol.setYieldWaterUsage(monDataCol.getYieldWaterUsage() != null ? monDataCol.getYieldWaterUsage() + attributeValue : attributeValue);
+                                                break;
+                                            case "4"://取水量or进水量
+                                                monDataCol.setIntakeWaterUsage(monDataCol.getIntakeWaterUsage() != null ? monDataCol.getIntakeWaterUsage() + attributeValue : attributeValue);
+                                                break;
+                                            case "5"://耗电量
+                                                monDataCol.setPowerUsage(monDataCol.getPowerUsage() != null ? monDataCol.getPowerUsage() + attributeValue : attributeValue);
+                                                break;
+                                            case "6"://耗药量
+                                                monDataCol.setDrugUsage(monDataCol.getDrugUsage() != null ? monDataCol.getDrugUsage() + attributeValue : attributeValue);
+                                                break;
+                                        }
+                                    }
+                                    switch (monitorData.getAttributeType()) {
+                                        case "7"://取水PHor进水PH
+                                            monDataCol.setIntakePh(monitorData);
+                                            break;
+                                        case "8"://供水PHor出水PH
+                                            monDataCol.setYieldPh(monitorData);
+                                            break;
+                                        case "9"://取水浊度or进水浊度
+                                            monDataCol.setIntakeTurbidity(monitorData);
+                                            break;
+                                        case "10"://供水浊度or出水浊度
+                                            monDataCol.setYieldTurbidity(monitorData);
+                                            break;
+                                        case "11"://余氯
+                                            monDataCol.setResidualChlorine(monitorData);
+                                            break;
+                                        case "12"://水位
+                                            monDataCol.setWaterLevel(monitorData);
+                                            break;
+                                        case "13"://压力
+                                            monDataCol.setPressure(monitorData);
+                                            break;
+                                        case "14"://瞬时流量
+                                            monDataCol.setInstantFlow(monitorData);
+                                            break;
+                                        case "2"://水泵状态
+                                            DecimalFormat decimalFormat = new DecimalFormat("###################.###########");//去掉末尾小数点
+                                            String specsValue = attributeEntity.getDataValue() == null ? null : decimalFormat.format(attributeEntity.getDataValue());
+                                            monitorData.setSpecsName(specsValue == null ? null : deviceAttributeSpecsService.selectSpecsName(attributeEntity.getAttributeId(), specsValue));
+                                            pumpStatus.add(monitorData);
+                                            monDataCol.setPumpStatus(pumpStatus);
+                                            break;
+                                    }
                                 }
                             }
                         }
@@ -326,5 +335,4 @@ public class OnlineMonitorImpl implements OnlineMonitorService {
                 }
             }
         }
-    }
 }

+ 3 - 3
sms_water/src/main/resources/mapper/AlarmSettingMapper.xml

@@ -32,7 +32,7 @@
     <!-- 外联表  -->
     <sql id="leftJoins">
         left join sms_device t2 on t1.device_id=t2.id and t2.status =1
-        left join sms_scene t3 on t2.scene_id=t3.id and t3.status =1
+        left join sms_scene t3 on t1.scene_id=t3.id and t3.status =1
         left join sms_device_attribute t4 on t1.attribute_id=t4.id and t4.status =1
         left join sms_device_type t5 on t2.device_type_id=t5.id and t5.status =1
      </sql>
@@ -53,10 +53,10 @@
                 and t4.name like CONCAT('%',#{alarm.attributeName},'%')
             </if>
             <if test="alarm.sceneId != null ">
-                and t2.scene_id = #{alarm.sceneId}
+                and t1.scene_id = #{alarm.sceneId}
             </if>
             <if test="alarm.sceneIds != null and alarm.sceneIds.size()>0">
-                and t2.scene_id in
+                and t1.scene_id in
                 <foreach item="item" index="index" collection="alarm.sceneIds" open="("
                          separator="," close=")">
                     #{item}

+ 1 - 1
sms_water/src/main/resources/mapper/OnlineMonitorMapper.xml

@@ -241,7 +241,7 @@
         left join (
             select b1.device_id,b1.attribute_id,max(latest_value) latest_value
             from sms_day_report b1
-            where b1.year = year(now() + interval-1 day) and b1.year = month(now() + interval-1 day) and b1.day = day(now() + interval-1 day)
+            where b1.year = year(now() + interval-1 day) and b1.month = month(now() + interval-1 day) and b1.day = day(now() + interval-1 day)
                 <if test="sceneIds != null and sceneIds.size() > 0">
                     and b1.parent_scene_id  in
                     <foreach collection="sceneIds" item="item" open="(" close=")" separator=",">

+ 7 - 0
sms_water/src/main/resources/mapper/SceneMapper.xml

@@ -300,4 +300,11 @@
         </where>
         order by  a.date_create
     </select>
+    <!--根据场景id查询一级场景信息-->
+    <select id="findParentSceneById" resultType="com.huaxu.entity.SceneEntity">
+        select t1.*,t2.id parentsceneid,t2.scene_name parentscenename
+        from sms_scene t1
+        left join sms_scene t2 on substring_index(substring_index(t1.parent_scene_ids, ',', 2), ',', -1)=t2.id
+        where t1.id=#{id}
+    </select>
 </mapper>