Browse Source

设备信息、报警信息查询修改

wangli 4 years ago
parent
commit
3b198eabad

+ 45 - 5
sms_water/src/main/java/com/huaxu/controller/AlarmDetailsController.java

@@ -12,6 +12,7 @@ import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.Pagination;
 import com.huaxu.model.ResultStatus;
 import com.huaxu.service.AlarmDetailsService;
+import com.huaxu.service.SceneService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -23,6 +24,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -40,6 +42,9 @@ public class AlarmDetailsController {
     @Autowired
     private AlarmDetailsService alarmDetailsService;
 
+    @Autowired
+    private SceneService sceneService;
+
     @Value("${SMS.sys_excel_path}")
     private String baseDir;
 
@@ -52,12 +57,13 @@ public class AlarmDetailsController {
     @RequestMapping(value="selectPage" , method = RequestMethod.GET)
     @ApiOperation(value = "分页查询报警详情信息")
     public AjaxMessage<Pagination<AlarmDetailsDto>> selectPage(
-            @ApiParam(value = "查询:场景名称/设备名称") @RequestParam(required = false) String condition,
+            @ApiParam(value = "查询:设备名称") @RequestParam(required = false) String condition,
             @ApiParam(value = "报警类型") @RequestParam(required = false) String alarmType,
             @ApiParam(value = "处理状态") @RequestParam(required = false) Integer opState,
+            @ApiParam(value = "所属场景id") @RequestParam(required = false)  Integer sceneId,
             @ApiParam(value = "查询:开始时间") @RequestParam(required = false) String startTime,
             @ApiParam(value = "查询:结束时间") @RequestParam(required = false) String endTime,
-            @ApiParam(value = "数据类型:1 实时报警 0 历史报警" ,required = false) @RequestParam(required = false) Integer state,
+            @ApiParam(value = "数据类型:1 实时报警 0 历史报警") @RequestParam(required = false) Integer state,
             @ApiParam(value = "页数,非必传,默认第一页",  defaultValue = "1") @RequestParam(required = false, defaultValue = "1") Integer pageNum,
             @ApiParam(value = "条数,非必传,默认10条",  defaultValue = "10") @RequestParam(required = false, defaultValue = "10") Integer pageSize
     ){
@@ -88,6 +94,12 @@ public class AlarmDetailsController {
             orderItem.setColumn("t.date_create");
             iPage.orders().add(orderItem);
         }
+        if(sceneId != null) {
+            alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(sceneId.longValue()));
+            if(alarmDetailsDto.getSceneIds() == null || alarmDetailsDto.getSceneIds().size() == 0){
+                return new AjaxMessage<>(ResultStatus.OK, new Pagination<>(iPage));
+            }
+        }
         iPage = alarmDetailsService.selectPage(iPage,alarmDetailsDto);
         Pagination<AlarmDetailsDto> pages = new Pagination<>(iPage);
         return new AjaxMessage<>(ResultStatus.OK, pages);
@@ -131,6 +143,7 @@ public class AlarmDetailsController {
             @ApiParam(value = "查询:场景名称/设备名称") @RequestParam(required = false) String condition,
             @ApiParam(value = "报警类型") @RequestParam(required = false) String alarmType,
             @ApiParam(value = "处理状态") @RequestParam(required = false) Integer opState,
+            @ApiParam(value = "所属场景id") @RequestParam(required = false)  Integer sceneId,
             @ApiParam(value = "查询:开始时间yyyy-MM-dd") @RequestParam(required = false) String startTime,
             @ApiParam(value = "查询:结束时间yyyy-MM-dd") @RequestParam(required = false) String endTime,
             @ApiParam(value = "页数,非必传,默认第一页",  defaultValue = "1") @RequestParam(required = false, defaultValue = "1") Integer pageNum,
@@ -161,6 +174,12 @@ public class AlarmDetailsController {
             orderItem.setColumn("t.date_create");
             iPage.orders().add(orderItem);
         }
+        if(sceneId != null) {
+            alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(sceneId.longValue()));
+            if(alarmDetailsDto.getSceneIds() == null || alarmDetailsDto.getSceneIds().size() == 0){
+                return new AjaxMessage<>(ResultStatus.OK, new Pagination<>(iPage));
+            }
+        }
         iPage = alarmDetailsService.selectHistoryPage(iPage,alarmDetailsDto);
         Pagination<AlarmDetailsHistoryDto> pages = new Pagination<>(iPage);
         return new AjaxMessage<>(ResultStatus.OK, pages);
@@ -172,6 +191,7 @@ public class AlarmDetailsController {
             @ApiParam(value = "查询:场景名称/设备名称") @RequestParam(required = false) String condition,
             @ApiParam(value = "报警类型") @RequestParam(required = false) String alarmType,
             @ApiParam(value = "处理状态") @RequestParam(required = false) Integer opState,
+            @ApiParam(value = "所属场景id") @RequestParam(required = false)  Integer sceneId,
             @ApiParam(value = "查询:开始时间yyyy-MM-dd") @RequestParam(required = false) String startTime,
             @ApiParam(value = "查询:结束时间yyyy-MM-dd") @RequestParam(required = false) String endTime
 
@@ -193,8 +213,14 @@ public class AlarmDetailsController {
             alarmDetailsDto.setStartTime(new Date());
             alarmDetailsDto.setEndTime(new Date());
         }
-
-        String filePath = EasyExcelUtil.excelWrite(baseDir, AlarmDetailsHistoryDto.class, "历史报警",alarmDetailsService.selectHistoryList(alarmDetailsDto) );
+        if(sceneId != null) {
+            alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(sceneId.longValue()));
+            if(alarmDetailsDto.getSceneIds() == null || alarmDetailsDto.getSceneIds().size() == 0){
+                String filePath = EasyExcelUtil.excelWrite(baseDir, AlarmDetailsHistoryDto.class, "历史报警", new ArrayList<>());
+                return new AjaxMessage<>(ResultStatus.OK, filePath);
+            }
+        }
+        String filePath = EasyExcelUtil.excelWrite(baseDir, AlarmDetailsHistoryDto.class, "历史报警", alarmDetailsService.selectHistoryList(alarmDetailsDto));
         return new AjaxMessage<>(ResultStatus.OK, filePath);
     }
 
@@ -207,6 +233,7 @@ public class AlarmDetailsController {
             @ApiParam(value = "查询:场景名称/设备名称") @RequestParam(required = false) String condition,
             @ApiParam(value = "报警类型") @RequestParam(required = false) String alarmType,
             @ApiParam(value = "处理状态") @RequestParam(required = false) Integer opState,
+            @ApiParam(value = "所属场景id") @RequestParam(required = false)  Integer sceneId,
             @ApiParam(value = "查询:开始时间yyyy-MM-dd") @RequestParam(required = false) String startTime,
             @ApiParam(value = "查询:结束时间yyyy-MM-dd") @RequestParam(required = false) String endTime,
             @ApiParam(value = "页数,非必传,默认第一页",  defaultValue = "1") @RequestParam(required = false, defaultValue = "1") Integer pageNum,
@@ -238,6 +265,12 @@ public class AlarmDetailsController {
             orderItem.setColumn("t.date_create");
             iPage.orders().add(orderItem);
         }
+        if(sceneId != null) {
+            alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(sceneId.longValue()));
+            if(alarmDetailsDto.getSceneIds() == null || alarmDetailsDto.getSceneIds().size() == 0){
+                return new AjaxMessage<>(ResultStatus.OK, new Pagination<>(iPage));
+            }
+        }
         iPage = alarmDetailsService.selectRealTimePage(iPage,alarmDetailsDto);
         Pagination<AlarmDetailsRealTimeDto> pages = new Pagination<>(iPage);
         return new AjaxMessage<>(ResultStatus.OK, pages);
@@ -249,6 +282,7 @@ public class AlarmDetailsController {
             @ApiParam(value = "查询:场景名称/设备名称") @RequestParam(required = false) String condition,
             @ApiParam(value = "报警类型") @RequestParam(required = false) String alarmType,
             @ApiParam(value = "处理状态") @RequestParam(required = false) Integer opState,
+            @ApiParam(value = "所属场景id") @RequestParam(required = false)  Integer sceneId,
             @ApiParam(value = "查询:开始时间yyyy-MM-dd") @RequestParam(required = false) String startTime,
             @ApiParam(value = "查询:结束时间yyyy-MM-dd") @RequestParam(required = false) String endTime
     ){
@@ -269,7 +303,13 @@ public class AlarmDetailsController {
             alarmDetailsDto.setStartTime(new Date());
             alarmDetailsDto.setEndTime(new Date());
         }
-
+        if(sceneId != null) {
+            alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(sceneId.longValue()));
+            if(alarmDetailsDto.getSceneIds() == null || alarmDetailsDto.getSceneIds().size() == 0){
+                String filePath = EasyExcelUtil.excelWrite(baseDir, AlarmDetailsHistoryDto.class, "历史报警", new ArrayList<>());
+                return new AjaxMessage<>(ResultStatus.OK, filePath);
+            }
+        }
         String filePath = EasyExcelUtil.excelWrite(baseDir, AlarmDetailsRealTimeDto.class, "实时报警",alarmDetailsService.selectRealTimeList(alarmDetailsDto) );
         return new AjaxMessage<>(ResultStatus.OK, filePath);
     }

+ 19 - 1
sms_water/src/main/java/com/huaxu/controller/DeviceController.java

@@ -10,6 +10,7 @@ import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.Pagination;
 import com.huaxu.model.ResultStatus;
 import com.huaxu.service.DeviceService;
+import com.huaxu.service.SceneService;
 import com.huaxu.util.OrgInfoUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -17,6 +18,7 @@ import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -33,6 +35,9 @@ public class DeviceController {
     private DeviceService deviceService;
     @Autowired
     private OrgInfoUtil orgInfoUtil;
+    @Autowired
+    private SceneService sceneService;
+
 
     @RequestMapping(value="get" , method = RequestMethod.GET)
     @ApiOperation(value = "查询单个设备信息")
@@ -56,6 +61,7 @@ public class DeviceController {
         deviceDto.setCompanyOrgId(companyOrgId);
         deviceDto.setDeptOrgId(deptOrgId);
         deviceDto.setSceneId(sceneId);
+
         deviceDto.setEnableState(enableState);
 
         IPage<DeviceDto> iPage = new Page<>(pageNum, pageSize);
@@ -65,7 +71,14 @@ public class DeviceController {
             orderItem.setColumn("d.date_create");
             iPage.orders().add(orderItem);
         }
+        if(sceneId != null) {
+            deviceDto.setSceneIds(sceneService.findByParentIdsLike(sceneId.longValue()));
+            if(deviceDto.getSceneIds() == null || deviceDto.getSceneIds().size() == 0){
+                return new AjaxMessage<>(ResultStatus.OK, new Pagination<>(iPage));
+            }
+        }
         iPage = deviceService.selectPage(iPage,deviceDto);
+
         Pagination<DeviceDto> pages = new Pagination<>(iPage);
         for(DeviceDto device : pages.getList()){
             device.setCompanyOrgName(orgInfoUtil.getOrgName(device.getCompanyOrgId()));
@@ -89,7 +102,12 @@ public class DeviceController {
         deviceDto.setDeptOrgId(deptOrgId);
         deviceDto.setSceneId(sceneId);
         deviceDto.setEnableState(enableState);
-
+        if(sceneId != null) {
+            deviceDto.setSceneIds(sceneService.findByParentIdsLike(sceneId.longValue()));
+            if(deviceDto.getSceneIds() == null || deviceDto.getSceneIds().size() == 0){
+                return new AjaxMessage<>(ResultStatus.OK, new ArrayList<>());
+            }
+        }
         return new AjaxMessage<>(ResultStatus.OK, deviceService.selectList(deviceDto));
     }
 

+ 7 - 1
sms_water/src/main/java/com/huaxu/dto/AlarmDetailsDto.java

@@ -45,7 +45,7 @@ public class AlarmDetailsDto extends AlarmDetailsEntity {
     @ApiModelProperty(value ="报警规则")
     private String alermRule;
 
-    @ApiModelProperty(value ="查询条件:场景名称/设备名称",hidden = true)
+    @ApiModelProperty(value ="查询条件:设备名称",hidden = true)
     private String condition;
 
     @ApiModelProperty(value = "开始时间",hidden = true)
@@ -53,6 +53,10 @@ public class AlarmDetailsDto extends AlarmDetailsEntity {
     @ApiModelProperty(value = "结束时间" ,hidden = true)
     private Date endTime;
 
+    @ApiModelProperty(value = "场景ids" ,hidden = true )
+    private List<Long> sceneIds;
+
+
     @ApiModelProperty(value ="权限",hidden = true)
     @JsonIgnore
     private List<ProgramItem> programItems;
@@ -65,4 +69,6 @@ public class AlarmDetailsDto extends AlarmDetailsEntity {
     @ApiModelProperty(value = "用户类型(-9999 超管 -999普通用户 2普通用户)",hidden = true)
     @JsonIgnore
     private String userType;
+
+
 }

+ 1 - 1
sms_water/src/main/java/com/huaxu/dto/DeviceCheckAlarmDto.java

@@ -36,7 +36,7 @@ public class DeviceCheckAlarmDto {
     private String unit; //属性单位
 
     public Boolean checkdeviceOffLine(){
-        if(this.lastUpdateTime != null && this.alarmValue != null
+        if(this.duration != null && this.alarmValue != null
               &&  StringUtils.isNotBlank(this.alarmCondition)){
             String expression =this.duration+this.alarmCondition+this.alarmValue;
            try{

+ 3 - 0
sms_water/src/main/java/com/huaxu/dto/DeviceDto.java

@@ -39,6 +39,9 @@ public class DeviceDto extends DeviceEntity {
     @ApiModelProperty(value = "所属部门")
     private String deptOrgName;
 
+    @ApiModelProperty(value = "场景ids" ,hidden = true )
+    private List<Long> sceneIds;
+
     @ApiModelProperty(value ="权限",hidden = true)
     @JsonIgnore
     private List<ProgramItem> programItems;

+ 50 - 10
sms_water/src/main/resources/mapper/AlarmDetailMapper.xml

@@ -104,8 +104,9 @@
         <include refid="alarmDetailJoins"/>
         where  a.`STATUS` = 1
         <if test="alarmDetailsDto.condition != null and alarmDetailsDto.condition != ''">
-            and (s.SCENE_NAME like concat('%', #{alarmDetailsDto.condition},'%') or d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%') )
+            and d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%')
         </if>
+
         <if test="alarmDetailsDto.tenantId != null and alarmDetailsDto.tenantId != ''">
             and a.TENANT_ID = #{alarmDetailsDto.tenantId}
         </if>
@@ -121,6 +122,12 @@
         <if test="alarmDetailsDto.endTime != null">
             and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
         </if>
+        <if test="alarmDetailsDto.sceneIds != null and deviceDto.sceneIds.size() > 0">
+            and d.SCENE_ID  in
+            <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         <if test="alarmDetailsDto.userType!=null and alarmDetailsDto.userType!=-999 and alarmDetailsDto.userType!=-9999 and  alarmDetailsDto.programItems != null and alarmDetailsDto.programItems.size() > 0">
             <if test="alarmDetailsDto.permissonType == 5 or alarmDetailsDto.permissonType == 2">
                 and ( a.DEPT_ORG_ID in
@@ -182,7 +189,7 @@
             <if test="deptOrgId != null ">
                 DEPT_ORG_ID  = #{deptOrgId},
             </if>
-            <if test="alarmType != null ">
+            <if test="alarmType != null and alarmType != ''">
                 ALARM_TYPE  = #{alarmType},
             </if>
             <if test="attributeId != null ">
@@ -259,7 +266,7 @@
         <include refid="alarmDetailJoins"/>
         where  a.`STATUS` = 1
         <if test="alarmDetailsDto.condition != null and alarmDetailsDto.condition != ''">
-            and (s.SCENE_NAME like concat('%', #{alarmDetailsDto.condition},'%') or d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%') )
+            and  d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%')
         </if>
         <if test="alarmDetailsDto.tenantId != null and alarmDetailsDto.tenantId != ''">
             and a.TENANT_ID = #{alarmDetailsDto.tenantId}
@@ -279,6 +286,12 @@
         <if test="alarmDetailsDto.endTime != null">
             and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
         </if>
+        <if test="alarmDetailsDto.sceneIds != null and deviceDto.sceneIds.size() > 0">
+            and d.SCENE_ID  in
+            <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         <if test="alarmDetailsDto.userType!=null and alarmDetailsDto.userType!=-999 and alarmDetailsDto.userType!=-9999 and  alarmDetailsDto.programItems != null and alarmDetailsDto.programItems.size() > 0">
             <if test="alarmDetailsDto.permissonType == 5 or alarmDetailsDto.permissonType == 2">
                 and ( a.DEPT_ORG_ID in
@@ -317,7 +330,7 @@
         <include refid="alarmDetailJoins"/>
         where  a.`STATUS` = 1 and a.state = 1
         <if test="alarmDetailsDto.condition != null and alarmDetailsDto.condition != ''">
-            and (s.SCENE_NAME like concat('%', #{alarmDetailsDto.condition},'%') or d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%') )
+            and  d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%')
         </if>
         <if test="alarmDetailsDto.tenantId != null and alarmDetailsDto.tenantId != ''">
             and a.TENANT_ID = #{alarmDetailsDto.tenantId}
@@ -334,6 +347,12 @@
         <if test="alarmDetailsDto.endTime != null">
             and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
         </if>
+        <if test="alarmDetailsDto.sceneIds != null and deviceDto.sceneIds.size() > 0">
+            and d.SCENE_ID  in
+            <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         <if test="alarmDetailsDto.userType!=null and alarmDetailsDto.userType!=-999 and alarmDetailsDto.userType!=-9999 and  alarmDetailsDto.programItems != null and alarmDetailsDto.programItems.size() > 0">
             <if test="alarmDetailsDto.permissonType == 5 or alarmDetailsDto.permissonType == 2">
                 and ( a.DEPT_ORG_ID in
@@ -372,7 +391,7 @@
         <include refid="alarmDetailJoins"/>
         where  a.`STATUS` = 1 and a.state = 0
         <if test="alarmDetailsDto.condition != null and alarmDetailsDto.condition != ''">
-            and (s.SCENE_NAME like concat('%', #{alarmDetailsDto.condition},'%') or d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%') )
+            and d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%')
         </if>
         <if test="alarmDetailsDto.tenantId != null and alarmDetailsDto.tenantId != ''">
             and a.TENANT_ID = #{alarmDetailsDto.tenantId}
@@ -389,6 +408,12 @@
         <if test="alarmDetailsDto.endTime != null">
             and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
         </if>
+        <if test="alarmDetailsDto.sceneIds != null and deviceDto.sceneIds.size() > 0">
+            and d.SCENE_ID  in
+            <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         <if test="alarmDetailsDto.userType!=null and alarmDetailsDto.userType!=-999 and alarmDetailsDto.userType!=-9999 and  alarmDetailsDto.programItems != null and alarmDetailsDto.programItems.size() > 0">
             <if test="alarmDetailsDto.permissonType == 5 or alarmDetailsDto.permissonType == 2">
                 and ( a.DEPT_ORG_ID in
@@ -427,7 +452,7 @@
         <include refid="alarmDetailJoins"/>
         where  a.`STATUS` = 1 and a.state = 1
         <if test="alarmDetailsDto.condition != null and alarmDetailsDto.condition != ''">
-            and (s.SCENE_NAME like concat('%', #{alarmDetailsDto.condition},'%') or d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%') )
+            and  d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%')
         </if>
         <if test="alarmDetailsDto.tenantId != null and alarmDetailsDto.tenantId != ''">
             and a.TENANT_ID = #{alarmDetailsDto.tenantId}
@@ -444,6 +469,12 @@
         <if test="alarmDetailsDto.endTime != null">
             and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
         </if>
+        <if test="alarmDetailsDto.sceneIds != null and deviceDto.sceneIds.size() > 0">
+            and d.SCENE_ID  in
+            <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         <if test="alarmDetailsDto.userType!=null and alarmDetailsDto.userType!=-999 and alarmDetailsDto.userType!=-9999 and  alarmDetailsDto.programItems != null and alarmDetailsDto.programItems.size() > 0">
             <if test="alarmDetailsDto.permissonType == 5 or alarmDetailsDto.permissonType == 2">
                 and ( a.DEPT_ORG_ID in
@@ -482,7 +513,7 @@
         <include refid="alarmDetailJoins"/>
         where  a.`STATUS` = 1 and a.state = 0
         <if test="alarmDetailsDto.condition != null and alarmDetailsDto.condition != ''">
-            and (s.SCENE_NAME like concat('%', #{alarmDetailsDto.condition},'%') or d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%') )
+            and d.DEVICE_NAME like concat('%', #{alarmDetailsDto.condition},'%')
         </if>
         <if test="alarmDetailsDto.tenantId != null and alarmDetailsDto.tenantId != ''">
             and a.TENANT_ID = #{alarmDetailsDto.tenantId}
@@ -499,6 +530,12 @@
         <if test="alarmDetailsDto.endTime != null">
             and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
         </if>
+        <if test="alarmDetailsDto.sceneIds != null and deviceDto.sceneIds.size() > 0">
+            and d.SCENE_ID  in
+            <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         <if test="alarmDetailsDto.userType!=null and alarmDetailsDto.userType!=-999 and alarmDetailsDto.userType!=-9999 and  alarmDetailsDto.programItems != null and alarmDetailsDto.programItems.size() > 0">
             <if test="alarmDetailsDto.permissonType == 5 or alarmDetailsDto.permissonType == 2">
                 and ( a.DEPT_ORG_ID in
@@ -539,7 +576,7 @@
             ,a.ALARM_TYPE as "alarmType"
             ,a.ATTRIBUTE_ID as "attributeId"
             ,d.LAST_UPDATE_TIME as "lastUpdateTime"
-            ,timestampdiff(MINUTE,d.LAST_UPDATE_TIME,now()) as "duration"
+            ,timestampdiff(MINUTE,ifnull(d.LAST_UPDATE_TIME,d.DATE_CREATE),now()) AS "duration"
 
             ,a.ALARM_CONDITION as "alarmCondition"
             ,a.ALARM_VALUE as "alarmValue"
@@ -550,10 +587,13 @@
 		    ,da.`NAME` as "attributeName"
         </if>
         from sms_device d
-        left join sms_alarm_setting a on a.DEVICE_ID =d.ID and a.ALARM_TYPE =#{alarmType}
+        left join sms_alarm_setting a on a.DEVICE_ID =d.ID and a.ALARM_TYPE =#{alarmType} and a.ALARM_VALUE is not null
         <if test="deviceCode != null">
             left join sms_device_attribute da on da.id=a.ATTRIBUTE_ID
-            where d.DEVICE_CODE=#{deviceCode}
+        </if>
+        where  a.ALARM_VALUE is not null and a.ALARM_CONDITION is not null
+        <if test="deviceCode != null">
+            d.DEVICE_CODE=#{deviceCode}
         </if>
     </select>
 

+ 10 - 10
sms_water/src/main/resources/mapper/DeviceMapper.xml

@@ -63,15 +63,15 @@
         <if test="deviceDto.deptOrgId != null ">
             and d.DEPT_ORG_ID =#{deviceDto.deptOrgId}
         </if>
-        <if test="deviceDto.sceneId != null ">
-            and d.SCENE_ID =#{deviceDto.sceneId}
+        <if test="deviceDto.sceneIds != null and deviceDto.sceneIds.size() > 0">
+            and d.SCENE_ID  in
+            <foreach collection="deviceDto.sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
         </if>
         <if test="deviceDto.enableState != null ">
             and d.ENABLE_STATE =#{deviceDto.enableState}
         </if>
-        <if test="deviceDto.sceneName != null and deviceDto.sceneName != ''">
-            and s.SCENE_NAME like concat('%', #{sceneName},'%')
-        </if>
 
         <if test="deviceDto.userType!=null and deviceDto.userType!=-999 and deviceDto.userType!=-9999 and  deviceDto.programItems != null and deviceDto.programItems.size() > 0">
             <if test="deviceDto.permissonType == 5 or deviceDto.permissonType == 2">
@@ -208,15 +208,15 @@
         <if test="deviceDto.deptOrgId != null ">
             and d.DEPT_ORG_ID =#{deviceDto.deptOrgId}
         </if>
-        <if test="deviceDto.sceneId != null ">
-            and d.SCENE_ID =#{deviceDto.sceneId}
+        <if test="deviceDto.sceneIds != null and deviceDto.sceneIds.size() > 0">
+            and d.SCENE_ID  in
+            <foreach collection="deviceDto.sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
         </if>
         <if test="deviceDto.enableState != null ">
             and d.ENABLE_STATE =#{deviceDto.enableState}
         </if>
-        <if test="deviceDto.sceneName != null and deviceDto.sceneName != ''">
-            and s.SCENE_NAME like concat('%', #{sceneName},'%')
-        </if>
         <if test="deviceDto.userType!=null and deviceDto.userType!=-999 and deviceDto.userType!=-9999 and  deviceDto.programItems != null and deviceDto.programItems.size() > 0">
             <if test="deviceDto.permissonType == 5 or deviceDto.permissonType == 2">
                 and ( d.DEPT_ORG_ID in