Selaa lähdekoodia

Merge remote-tracking branch 'remotes/origin/V0.0.7.409' into V0.0.8

zhulu 1 vuosi sitten
vanhempi
commit
bafc500219
28 muutettua tiedostoa jossa 606 lisäystä ja 110 poistoa
  1. 65 0
      project_data/sql/0.0.7.409/soc/soc.sql
  2. 1 1
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/enums/ElectricityMeterAttributes.java
  3. 10 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmData.java
  4. 18 4
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java
  5. 4 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/controller/ResumptionReportController.java
  6. 4 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/service/ResumptionReportService.java
  7. 171 65
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/service/impl/ResumptionReportServiceImpl.java
  8. 7 5
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmDataAppController.java
  9. 17 3
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmDataController.java
  10. 12 9
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotBoardController.java
  11. 27 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/alarmData/AppAlarmPageDto.java
  12. 12 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/alarmData/dealAlarmDto.java
  13. 4 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotAlarmDataMapper.java
  14. 2 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotCommonSensorMapper.java
  15. 3 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IIotCommonSensorService.java
  16. 7 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotAlarmDataService.java
  17. 3 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotBoardService.java
  18. 38 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotAlarmDataServiceImpl.java
  19. 95 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotBoardServiceImpl.java
  20. 7 7
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotCommonSensorServiceImpl.java
  21. 4 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarm/IotAlarmDataVo.java
  22. 18 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarmData/AppAlarmDataPageVo.java
  23. 38 1
      soc-modules/soc-modules-iot/src/main/resources/mapper/IotAlarmDataMapper.xml
  24. 7 0
      soc-modules/soc-modules-iot/src/main/resources/mapper/IotSensorMapper.xml
  25. 27 8
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmDataServiceImpl.java
  26. 2 2
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/SecurityWorkExport.java
  27. 2 0
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysOrgMapper.xml
  28. 1 1
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysRoleMapper.xml

+ 65 - 0
project_data/sql/0.0.7.409/soc/soc.sql

@@ -0,0 +1,65 @@
+
+DELIMITER ??
+DROP PROCEDURE IF EXISTS schema_change ??
+CREATE PROCEDURE schema_change () BEGIN
+
+
+	IF NOT EXISTS(SELECT *
+                  FROM information_schema.columns
+                  WHERE table_schema = DATABASE()
+                    AND table_name = 'iot_alarm_data'
+                    AND column_name = 'do_by_user') THEN
+        ALTER TABLE `iot_alarm_data`
+            ADD COLUMN `do_by_user` varchar(255) NULL COMMENT '告警处置人处理人' AFTER `do_type`;
+    END IF;
+
+    IF NOT EXISTS(SELECT *
+                  FROM information_schema.columns
+                  WHERE table_schema = DATABASE()
+                    AND table_name = 'iot_alarm_data'
+                    AND column_name = 'do_content') THEN
+        ALTER TABLE `iot_alarm_data`
+            ADD COLUMN `do_content` varchar(255) NULL COMMENT '告警处置内容' AFTER `do_by_user`;
+    END IF;
+
+
+END ??
+DELIMITER ;
+CALL schema_change ();
+
+DELETE from `sys_dict_type` WHERE  `dict_type`='alarm_deal_type';
+DELETE from `sys_dict_data` WHERE  `dict_type`='alarm_deal_type';
+INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ('告警处置类型', 'alarm_deal_type', '0', '超级管理员', '2024-04-02 18:02:13', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (5, '误报', '2', 'alarm_deal_type', NULL, 'default', 'N', '0', '超级管理员', '2024-04-02 18:03:16', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, '正常报警', '3', 'alarm_deal_type', NULL, 'default', 'N', '0', '超级管理员', '2024-04-02 18:03:35', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (3, '报修', '4', 'alarm_deal_type', NULL, 'default', 'N', '0', '超级管理员', '2024-04-02 18:03:46', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (4, '测试', '5', 'alarm_deal_type', NULL, 'default', 'N', '0', '超级管理员', '2024-04-02 18:03:56', '', NULL, NULL);
+
+delete from `iot_alarm_system_field` WHERE  `source_type`='41881';
+INSERT INTO `iot_alarm_system_field` (`source_type`, `source_type_des`, `sys_field_code`, `name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (41881, '盗情', '41881', '被盗告警', '{\"0\": \"正常\",\"1\": \"告警\"}', '{\"EQUALS\": \"等于\"}', 'ENUM', '枚举', NULL, 1, '2022-07-26 16:14:26', NULL, '2022-07-26 16:14:30', NULL);
+
+
+delete from `sys_dict_data` WHERE  `dict_value`='41881' AND `dict_type`='sensor_device_type';
+INSERT INTO `sys_dict_data`(`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (700, '防盗传感器', '41881', 'sensor_device_type', NULL, 'default', 'N', '0', NULL, now(), NULL, NULL, NULL);
+
+delete from `sys_dict_data` WHERE  `dict_value`='41881' AND `dict_type`='app_sensor_device_type';
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 6, '被盗', '41881', 'app_sensor_device_type', NULL, 'default', 'N', '0', '超级管理员', '2024-03-04 16:23:49', '', NULL, NULL);
+
+delete from `sys_dict_type` WHERE  `dict_type`='alarm_deal_status';
+INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ('告警处置状态', 'alarm_deal_status', '0', '超级管理员', '2024-04-08 09:38:40', '', NULL, NULL);
+
+delete from `sys_dict_data` WHERE  `dict_type`='alarm_deal_status';
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 0, '未处置', '0', 'alarm_deal_status', NULL, 'default', 'N', '0', '超级管理员', '2024-04-08 09:39:03', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 1, '已处置', '1', 'alarm_deal_status', NULL, 'default', 'N', '0', '超级管理员', '2024-04-08 09:39:12', '', NULL, NULL);
+
+-- 给'泉州','宁德' 下辖网点未设置过角色的人员 新增 “网点安全员”角色
+INSERT INTO sys_user_role (user_id,role_id,create_by,create_time)
+SELECT u.id as user_id,122 as role_id, '超级管理员' create_by, NOW() as create_time
+FROM
+    sys_org org
+        INNER JOIN sys_user u ON org.id = u.org_id
+        LEFT JOIN sys_user_role ur ON u.id =ur.user_id
+WHERE
+        org.type = 4
+  AND org.affiliated_area IN ('泉州','宁德')
+  AND ur.user_id IS null

+ 1 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/enums/ElectricityMeterAttributes.java

@@ -25,7 +25,7 @@ public enum ElectricityMeterAttributes {
     METER_ATTRIBUTES_4("红外告警", null, "{\"0\":\"正常\",\"1\":\"告警\"}"),
     METER_ATTRIBUTES_5("可燃气体告警", null, "{\"0\":\"正常\",\"1\":\"告警\"}"),
     METER_ATTRIBUTES_6("门磁开关状态", null, "{\"0\":\"开门\",\"1\":\"关门\"}"),
-    ;
+    METER_ATTRIBUTES_7("被盗告警", null, "{\"0\":\"正常\",\"1\":\"告警\"}");
 
     private String text;
 

+ 10 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/mediator/domain/IotAlarmData.java

@@ -104,12 +104,22 @@ public class IotAlarmData extends BaseEntity {
 
     @ApiModelProperty(value = "处理时间")
     @TableField("do_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime doTime;
 
     @ApiModelProperty(value = "处理方式:0:为处理,1:(暂无)2:误报,3:正常告警,4:报修")
     @TableField("do_type")
     private Integer doType;
 
+    @ApiModelProperty(value = "处置人")
+    @TableField("do_by_user")
+    private String doByUser;
+
+
+    @ApiModelProperty(value = "处置内容")
+    @TableField("do_content")
+    private String doContent;
+
     @ApiModelProperty(value = "是否需要发送短信")
     @TableField(exist = false)
     private Boolean smsType;

+ 18 - 4
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java

@@ -1085,9 +1085,14 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
             if (sysConfig == null || ObjectUtil.isEmpty(sysConfig.getConfigValue())) {
                 return true;
             }
+
+            DateRange range = DateUtils.getStartAndEnd(new Date(), CycleCommonEnum.QUARTERLY);
+
             final Long count = coreDrillTaskMapper.selectCount(new LambdaQueryWrapper<CoreDrillTask>()
                     .in(CoreDrillTask::getRecStatus, Arrays.asList(DrillRecStatus.HS_EXCELLENT_CASE.getCode(), DrillRecStatus.REC_REGION_EXCELLENT_CASE.getCode()))
-                    .likeRight(CoreDrillTask::getOrgPath, sysOrg.getPath()));
+                    .likeRight(CoreDrillTask::getOrgPath, sysOrg.getPath())
+                    .ge(CoreDrillTask::getStartDate,range.getStartTime())
+                    .le(CoreDrillTask::getEndDate,range.getEndTime()));
             //如果 小于设置推荐上限则返回true,反之false
             return count < Integer.parseInt(sysConfig.getConfigValue());
         }
@@ -1099,9 +1104,12 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
             if (sysConfig == null || ObjectUtil.isEmpty(sysConfig.getConfigValue())) {
                 return true;
             }
+            DateRange range = DateUtils.getStartAndEnd(new Date(), CycleCommonEnum.QUARTERLY);
             final int count = coreDrillTaskMapper.selectCount(new LambdaQueryWrapper<CoreDrillTask>()
                     .in(CoreDrillTask::getRecStatus, Arrays.asList(DrillRecStatus.REGION_EXCELLENT_CASE.getCode(), DrillRecStatus.REC_PROVINCE_EXCELLENT_CASE.getCode()))
-                    .likeRight(CoreDrillTask::getOrgPath, sysOrg.getPath())).intValue();
+                    .likeRight(CoreDrillTask::getOrgPath, sysOrg.getPath())
+                    .ge(CoreDrillTask::getStartDate,range.getStartTime())
+                    .le(CoreDrillTask::getEndDate,range.getEndTime())).intValue();
             //如果 小于设置推荐上限则返回true,反之false
             return count < Integer.parseInt(sysConfig.getConfigValue());
         }
@@ -1128,9 +1136,12 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
             SysOrg sysOrg = sysOrgList.stream().filter(org -> ObjectUtil.equal(org.getType(), OrgTypeEnum.HANG_SHE.getCode()))
                     .findFirst().orElseThrow(() -> new SystemException(ErrorMsgConstants.QUERY_ORG_DATA_ERROR));
 
+            DateRange range = DateUtils.getStartAndEnd(new Date(), CycleCommonEnum.QUARTERLY);
             List<CoreDrillTask> coreDrillTasks = coreDrillTaskMapper.selectList(new LambdaQueryWrapper<CoreDrillTask>()
                     .eq(CoreDrillTask::getRecStatus, DrillRecStatus.REC_REGION_EXCELLENT_CASE.getCode())
-                    .likeRight(CoreDrillTask::getOrgPath, sysOrg.getPath()).select(CoreDrillTask::getId, CoreDrillTask::getOrgId));
+                    .likeRight(CoreDrillTask::getOrgPath, sysOrg.getPath())
+                    .ge(CoreDrillTask::getStartDate,range.getStartTime())
+                    .le(CoreDrillTask::getEndDate,range.getEndTime()).select(CoreDrillTask::getId, CoreDrillTask::getOrgId));
             List<Long> list = coreDrillTasks.stream().map(CoreDrillTask::getId).collect(Collectors.toList());
             //判断重复推优评优
             if ((!list.contains(drillTask.getId())) && coreDrillTasks.size() >= Integer.parseInt(sysConfig.getConfigValue())) {
@@ -1146,9 +1157,12 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
             SysOrg sysOrg = sysOrgList.stream().filter(org -> ObjectUtil.equal(org.getType(), OrgTypeEnum.BAN_SHI_CHU.getCode()))
                     .findFirst().orElseThrow(() -> new SystemException(ErrorMsgConstants.QUERY_ORG_DATA_ERROR));
 
+            DateRange range = DateUtils.getStartAndEnd(new Date(), CycleCommonEnum.QUARTERLY);
             List<CoreDrillTask> coreDrillTasks = coreDrillTaskMapper.selectList(new LambdaQueryWrapper<CoreDrillTask>()
                     .eq(CoreDrillTask::getRecStatus, DrillRecStatus.REC_PROVINCE_EXCELLENT_CASE.getCode())
-                    .likeRight(CoreDrillTask::getOrgPath, sysOrg.getPath()).select(CoreDrillTask::getId, CoreDrillTask::getOrgId));
+                    .likeRight(CoreDrillTask::getOrgPath, sysOrg.getPath())
+                    .ge(CoreDrillTask::getStartDate,range.getStartTime())
+                    .le(CoreDrillTask::getEndDate,range.getEndTime()).select(CoreDrillTask::getId, CoreDrillTask::getOrgId));
             List<Long> list = coreDrillTasks.stream().map(CoreDrillTask::getId).collect(Collectors.toList());
             //判断重复推优评优
             if ((!list.contains(drillTask.getId())) && coreDrillTasks.size() >= Integer.parseInt(sysConfig.getConfigValue())) {

+ 4 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/controller/ResumptionReportController.java

@@ -28,6 +28,8 @@ import java.time.LocalDate;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeoutException;
 
 /**
  * @author :LuoWei
@@ -47,7 +49,7 @@ public class ResumptionReportController {
     @RequiresPermissions("core:resumptionReport:export")
     @Log(title = "履职报表导出", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(ResumptionDTO request, HttpServletResponse response) throws IOException {
+    public void export(ResumptionDTO request, HttpServletResponse response) throws IOException, ExecutionException, InterruptedException, TimeoutException {
         if (null == request.getSearchTime()) {
             LocalDate currentDate = LocalDate.now();
             if (null == request.getCycle() || request.getCycle() == 1) {
@@ -62,7 +64,7 @@ public class ResumptionReportController {
     @ApiOperation(value = "每日安全保卫履职-日报表")
     @RequiresPermissions("core:resumptionReport:list")
     @GetMapping("/list")
-    public AjaxResult list(ResumptionDTO resumptionDTO) {
+    public AjaxResult list(ResumptionDTO resumptionDTO) throws ExecutionException, InterruptedException, TimeoutException {
         if (null == resumptionDTO.getSearchTime()) {
             LocalDate currentDate = LocalDate.now();
             if (null == resumptionDTO.getCycle() || resumptionDTO.getCycle() == 1) {

+ 4 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/service/ResumptionReportService.java

@@ -8,15 +8,17 @@ import com.xunmei.core.reportForms.resumption.vo.ResumptionDayVO;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeoutException;
 
 /**
  * @author :LuoWei
  * @date : 2023/11/8
  */
 public interface ResumptionReportService {
-    List<ResumptionDayVO> report(ResumptionDTO resumptionDTO);
+    List<ResumptionDayVO> report(ResumptionDTO resumptionDTO) throws ExecutionException, InterruptedException, TimeoutException;
 
-    void export(ResumptionDTO resumptionDTO, HttpServletResponse response) throws IOException;
+    void export(ResumptionDTO resumptionDTO, HttpServletResponse response) throws IOException, ExecutionException, InterruptedException, TimeoutException;
 
     void intrusionTestExport(ResumptionDTO resumptionDTO, HttpServletResponse response)throws IOException;
 

+ 171 - 65
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/service/impl/ResumptionReportServiceImpl.java

@@ -3,6 +3,10 @@ package com.xunmei.core.reportForms.resumption.service.impl;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.excel.EasyExcel;
 import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingPlan;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
+import com.xunmei.common.core.enums.edu.EduTrainingPlanStatus;
+import com.xunmei.common.core.thread.ThreadPoolConfig;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.edu.service.impl.ValueCellWriteHandler;
@@ -17,6 +21,8 @@ import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
@@ -24,6 +30,14 @@ import java.io.IOException;
 import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static org.bouncycastle.asn1.x500.style.RFC4519Style.o;
 
 /**
  * @author :LuoWei
@@ -38,8 +52,12 @@ public class ResumptionReportServiceImpl implements ResumptionReportService {
     @Autowired
     private ResumptionReportMapper resumptionReportMapper;
 
+    @Autowired
+    @Qualifier(ThreadPoolConfig.SOC_EXECUTOR)
+    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
+
     @Override
-    public List<ResumptionDayVO> report(ResumptionDTO resumptionDTO) {
+    public List<ResumptionDayVO> report(ResumptionDTO resumptionDTO) throws ExecutionException, InterruptedException, TimeoutException {
         if (null == resumptionDTO.getOrgId()) {
             resumptionDTO.setOrgId(SecurityUtils.getLoginUser().getOrgId());
         }
@@ -57,78 +75,166 @@ public class ResumptionReportServiceImpl implements ResumptionReportService {
             return Collections.emptyList();
         }
         List<ResumptionDayVO> resumptionDayVOS = new ArrayList<>();
+//        sysOrgs.forEach(o -> {
+//            ResumptionDayVO resumptionDayVO = new ResumptionDayVO();
+////            SysOrg sysOrg1;
+////            if (sysOrg.getType() < 3 || sysOrg.getShortName().endsWith("地区行社") || sysOrg.getType() == 9) {
+////                sysOrg1 = orgService.selectOrgById(o.getParentId(), SecurityConstants.INNER);
+////            } else {
+////                sysOrg1 = orgService.selectOrgById(orgService.selectOrgById(o.getParentId(), SecurityConstants.INNER).getParentId(), SecurityConstants.INNER);
+////                if (-1 == sysOrg1.getShortName().indexOf("地区行社")) {
+////                    sysOrg1 = orgService.selectOrgById(orgService.selectOrgById(orgService.selectOrgById(o.getParentId(), SecurityConstants.INNER).getParentId(), SecurityConstants.INNER).getParentId(), SecurityConstants.INNER);
+////                }
+////            }
+//            resumptionDayVO.setCity(o.getAffiliatedArea());
+//            resumptionDayVO.setOrgName(o.getShortName());
+//            Integer integer = monitorAccessReportMapper.selectNetworkNumberByPath(o.getPath());
+//            ResumptionDayVO resumptionDayVO1 =null;
+//            ResumptionDayVO resumptionDayVO2 =null;
+//            ResumptionDayVO resumptionDayVO3 =null;
+//
+//            if(o.getType()!=4) {
+//                //营业前
+//                resumptionDayVO1 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 1, null, resumptionDTO.getSearchTime(), o.getPath());
+//                //营业中
+//                resumptionDayVO2 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 2, null, resumptionDTO.getSearchTime(), o.getPath());
+//                //后
+//                resumptionDayVO3 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 3, null, resumptionDTO.getSearchTime(), o.getPath());
+//            }
+//            if (o.getType() == 4) {
+//                integer = 1;
+//                resumptionDayVO1 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 1, o.getId(), resumptionDTO.getSearchTime(), null);
+//                resumptionDayVO2 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 2, o.getId(), resumptionDTO.getSearchTime(), null);
+//                resumptionDayVO3 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 3, o.getId(), resumptionDTO.getSearchTime(), null);
+//            }
+//
+//            resumptionDayVO.setNetworkNumber(integer);
+//
+//            resumptionDayVO.setFrontRate(resumptionDayVO1.getFrontRate());
+//            resumptionDayVO.setFrontAbnormalNumber(resumptionDayVO1.getFrontAbnormalNumber());
+//            resumptionDayVO.setFrontPlanNumber(resumptionDayVO1.getFrontPlanNumber());
+//            resumptionDayVO.setFrontRealityNumber(resumptionDayVO1.getFrontRealityNumber());
+//
+//            resumptionDayVO.setCentreRate(resumptionDayVO2.getFrontRate());
+//            resumptionDayVO.setCentreAbnormalNumber(resumptionDayVO2.getFrontAbnormalNumber());
+//            resumptionDayVO.setCentrePlanNumber(resumptionDayVO2.getFrontPlanNumber());
+//            resumptionDayVO.setCentreRealityNumber(resumptionDayVO2.getFrontRealityNumber());
+//
+//            resumptionDayVO.setAfterRate(resumptionDayVO3.getFrontRate());
+//            resumptionDayVO.setAfterAbnormalNumber(resumptionDayVO3.getFrontAbnormalNumber());
+//            resumptionDayVO.setAfterPlanNumber(resumptionDayVO3.getFrontPlanNumber());
+//            resumptionDayVO.setAfterRealityNumber(resumptionDayVO3.getFrontRealityNumber());
+//            Integer totalPlan = resumptionDayVO3.getFrontPlanNumber() + resumptionDayVO2.getFrontPlanNumber() + resumptionDayVO1.getFrontPlanNumber();
+//            //总计实际履职次数
+//            Integer totalReality = resumptionDayVO3.getFrontRealityNumber() + resumptionDayVO2.getFrontRealityNumber() + resumptionDayVO1.getFrontRealityNumber();
+//            //总计隐患问题数
+//            Integer totalAbnormal = resumptionDayVO3.getFrontAbnormalNumber() + resumptionDayVO2.getFrontAbnormalNumber() + resumptionDayVO1.getFrontAbnormalNumber();
+//            //总计已整改数量
+//            Integer totalRealityRectificationNumber = resumptionDayVO3.getTotalRealityRectificationNumber() + resumptionDayVO2.getTotalRealityRectificationNumber() + resumptionDayVO1.getTotalRealityRectificationNumber();
+//            //总计应履职次数
+//            resumptionDayVO.setTotalPlanNumber(totalPlan);
+//            resumptionDayVO.setTotalRealityNumber(totalReality);
+//            Double i = 0d;
+//            if (totalReality != 0 && totalPlan != 0) {
+//                i = (double) totalReality / totalPlan * 100;
+//            }
+//            resumptionDayVO.setTotalRate(String.format("%.2f", i) + "%");
+//            resumptionDayVO.setTotalAbnormalNumber(totalAbnormal);
+//            Double n = 0d;
+//            if (totalAbnormal != 0 && totalRealityRectificationNumber != 0) {
+//                n = (double) totalRealityRectificationNumber / totalAbnormal * 100;
+//            }
+//            resumptionDayVO.setTotalRealityRectificationRate(String.format("%.2f", n) + "%");
+//            resumptionDayVO.setTotalRealityRectificationNumber(totalRealityRectificationNumber);
+//            resumptionDayVOS.add(resumptionDayVO);
+//        });
+
+        List<CompletableFuture<ResumptionDayVO>> completableFutureList=new ArrayList<>();
         sysOrgs.forEach(o -> {
-            ResumptionDayVO resumptionDayVO = new ResumptionDayVO();
-            SysOrg sysOrg1;
-            if (sysOrg.getType() < 3 || sysOrg.getShortName().endsWith("地区行社") || sysOrg.getType() == 9) {
-                sysOrg1 = orgService.selectOrgById(o.getParentId(), SecurityConstants.INNER);
-            } else {
-                sysOrg1 = orgService.selectOrgById(orgService.selectOrgById(o.getParentId(), SecurityConstants.INNER).getParentId(), SecurityConstants.INNER);
-                if (-1 == sysOrg1.getShortName().indexOf("地区行社")) {
-                    sysOrg1 = orgService.selectOrgById(orgService.selectOrgById(orgService.selectOrgById(o.getParentId(), SecurityConstants.INNER).getParentId(), SecurityConstants.INNER).getParentId(), SecurityConstants.INNER);
-                }
-            }
-            resumptionDayVO.setCity(sysOrg1.getShortName().indexOf("地区行社") == -1 ? sysOrg1.getShortName().substring(0, 2) : sysOrg1.getShortName().split("地区行社")[0]);
-            resumptionDayVO.setOrgName(o.getShortName());
-            Integer integer = monitorAccessReportMapper.selectNetworkNumberByPath(o.getPath());
+            CompletableFuture<ResumptionDayVO> getOneOrgResumptionDayVO = CompletableFuture.supplyAsync(() ->
+                    getOneOrgResumptionDayVO(o,resumptionDTO),threadPoolTaskExecutor
+            );
+            completableFutureList.add(getOneOrgResumptionDayVO);
+        });
+
+        CompletableFuture<Void> allQueries = CompletableFuture.allOf(completableFutureList.toArray(new CompletableFuture[0]));
+
+        allQueries.get(10L, TimeUnit.SECONDS);
+
+        completableFutureList.forEach(x->{
+            resumptionDayVOS.add(x.join());
+        });
+        return resumptionDayVOS;
+    }
+
+    private ResumptionDayVO getOneOrgResumptionDayVO(SysOrg org,ResumptionDTO resumptionDTO)
+    {
+        ResumptionDayVO resumptionDayVO = new ResumptionDayVO();
+        resumptionDayVO.setCity(org.getAffiliatedArea());
+        resumptionDayVO.setOrgName(org.getShortName());
+        Integer integer = monitorAccessReportMapper.selectNetworkNumberByPath(org.getPath());
+        ResumptionDayVO resumptionDayVO1 =null;
+        ResumptionDayVO resumptionDayVO2 =null;
+        ResumptionDayVO resumptionDayVO3 =null;
+
+        if(org.getType()!=4) {
             //营业前
-            ResumptionDayVO resumptionDayVO1 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 1, null, resumptionDTO.getSearchTime(), o.getPath());
+            resumptionDayVO1 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 1, null, resumptionDTO.getSearchTime(), org.getPath());
             //营业中
-            ResumptionDayVO resumptionDayVO2 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 2, null, resumptionDTO.getSearchTime(), o.getPath());
+            resumptionDayVO2 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 2, null, resumptionDTO.getSearchTime(), org.getPath());
             //后
-            ResumptionDayVO resumptionDayVO3 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 3, null, resumptionDTO.getSearchTime(), o.getPath());
-            if (o.getType() == 4) {
-                integer = 1;
-                resumptionDayVO1 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 1, o.getId(), resumptionDTO.getSearchTime(), o.getPath());
-                resumptionDayVO2 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 2, o.getId(), resumptionDTO.getSearchTime(), o.getPath());
-                resumptionDayVO3 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 3, o.getId(), resumptionDTO.getSearchTime(), o.getPath());
-            }
+            resumptionDayVO3 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 3, null, resumptionDTO.getSearchTime(), org.getPath());
+        }
+        if (org.getType() == 4) {
+            integer = 1;
+            resumptionDayVO1 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 1, org.getId(), resumptionDTO.getSearchTime(), null);
+            resumptionDayVO2 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 2, org.getId(), resumptionDTO.getSearchTime(), null);
+            resumptionDayVO3 = resumptionReportMapper.selectReport(resumptionDTO.getCycle(), 3, org.getId(), resumptionDTO.getSearchTime(), null);
+        }
 
-            resumptionDayVO.setNetworkNumber(integer);
-
-            resumptionDayVO.setFrontRate(resumptionDayVO1.getFrontRate());
-            resumptionDayVO.setFrontAbnormalNumber(resumptionDayVO1.getFrontAbnormalNumber());
-            resumptionDayVO.setFrontPlanNumber(resumptionDayVO1.getFrontPlanNumber());
-            resumptionDayVO.setFrontRealityNumber(resumptionDayVO1.getFrontRealityNumber());
-
-            resumptionDayVO.setCentreRate(resumptionDayVO2.getFrontRate());
-            resumptionDayVO.setCentreAbnormalNumber(resumptionDayVO2.getFrontAbnormalNumber());
-            resumptionDayVO.setCentrePlanNumber(resumptionDayVO2.getFrontPlanNumber());
-            resumptionDayVO.setCentreRealityNumber(resumptionDayVO2.getFrontRealityNumber());
-
-            resumptionDayVO.setAfterRate(resumptionDayVO3.getFrontRate());
-            resumptionDayVO.setAfterAbnormalNumber(resumptionDayVO3.getFrontAbnormalNumber());
-            resumptionDayVO.setAfterPlanNumber(resumptionDayVO3.getFrontPlanNumber());
-            resumptionDayVO.setAfterRealityNumber(resumptionDayVO3.getFrontRealityNumber());
-            Integer totalPlan = resumptionDayVO3.getFrontPlanNumber() + resumptionDayVO2.getFrontPlanNumber() + resumptionDayVO1.getFrontPlanNumber();
-            //总计实际履职次数
-            Integer totalReality = resumptionDayVO3.getFrontRealityNumber() + resumptionDayVO2.getFrontRealityNumber() + resumptionDayVO1.getFrontRealityNumber();
-            //总计隐患问题数
-            Integer totalAbnormal = resumptionDayVO3.getFrontAbnormalNumber() + resumptionDayVO2.getFrontAbnormalNumber() + resumptionDayVO1.getFrontAbnormalNumber();
-            //总计已整改数量
-            Integer totalRealityRectificationNumber = resumptionDayVO3.getTotalRealityRectificationNumber() + resumptionDayVO2.getTotalRealityRectificationNumber() + resumptionDayVO1.getTotalRealityRectificationNumber();
-            //总计应履职次数
-            resumptionDayVO.setTotalPlanNumber(totalPlan);
-            resumptionDayVO.setTotalRealityNumber(totalReality);
-            Double i = 0d;
-            if (totalReality != 0 && totalPlan != 0) {
-                i = (double) totalReality / totalPlan * 100;
-            }
-            resumptionDayVO.setTotalRate(String.format("%.2f", i) + "%");
-            resumptionDayVO.setTotalAbnormalNumber(totalAbnormal);
-            Double n = 0d;
-            if (totalAbnormal != 0 && totalRealityRectificationNumber != 0) {
-                n = (double) totalRealityRectificationNumber / totalAbnormal * 100;
-            }
-            resumptionDayVO.setTotalRealityRectificationRate(String.format("%.2f", n) + "%");
-            resumptionDayVO.setTotalRealityRectificationNumber(totalRealityRectificationNumber);
-            resumptionDayVOS.add(resumptionDayVO);
-        });
-        return resumptionDayVOS;
+        resumptionDayVO.setNetworkNumber(integer);
+
+        resumptionDayVO.setFrontRate(resumptionDayVO1.getFrontRate());
+        resumptionDayVO.setFrontAbnormalNumber(resumptionDayVO1.getFrontAbnormalNumber());
+        resumptionDayVO.setFrontPlanNumber(resumptionDayVO1.getFrontPlanNumber());
+        resumptionDayVO.setFrontRealityNumber(resumptionDayVO1.getFrontRealityNumber());
+
+        resumptionDayVO.setCentreRate(resumptionDayVO2.getFrontRate());
+        resumptionDayVO.setCentreAbnormalNumber(resumptionDayVO2.getFrontAbnormalNumber());
+        resumptionDayVO.setCentrePlanNumber(resumptionDayVO2.getFrontPlanNumber());
+        resumptionDayVO.setCentreRealityNumber(resumptionDayVO2.getFrontRealityNumber());
+
+        resumptionDayVO.setAfterRate(resumptionDayVO3.getFrontRate());
+        resumptionDayVO.setAfterAbnormalNumber(resumptionDayVO3.getFrontAbnormalNumber());
+        resumptionDayVO.setAfterPlanNumber(resumptionDayVO3.getFrontPlanNumber());
+        resumptionDayVO.setAfterRealityNumber(resumptionDayVO3.getFrontRealityNumber());
+        Integer totalPlan = resumptionDayVO3.getFrontPlanNumber() + resumptionDayVO2.getFrontPlanNumber() + resumptionDayVO1.getFrontPlanNumber();
+        //总计实际履职次数
+        Integer totalReality = resumptionDayVO3.getFrontRealityNumber() + resumptionDayVO2.getFrontRealityNumber() + resumptionDayVO1.getFrontRealityNumber();
+        //总计隐患问题数
+        Integer totalAbnormal = resumptionDayVO3.getFrontAbnormalNumber() + resumptionDayVO2.getFrontAbnormalNumber() + resumptionDayVO1.getFrontAbnormalNumber();
+        //总计已整改数量
+        Integer totalRealityRectificationNumber = resumptionDayVO3.getTotalRealityRectificationNumber() + resumptionDayVO2.getTotalRealityRectificationNumber() + resumptionDayVO1.getTotalRealityRectificationNumber();
+        //总计应履职次数
+        resumptionDayVO.setTotalPlanNumber(totalPlan);
+        resumptionDayVO.setTotalRealityNumber(totalReality);
+        Double i = 0d;
+        if (totalReality != 0 && totalPlan != 0) {
+            i = (double) totalReality / totalPlan * 100;
+        }
+        resumptionDayVO.setTotalRate(String.format("%.2f", i) + "%");
+        resumptionDayVO.setTotalAbnormalNumber(totalAbnormal);
+        Double n = 0d;
+        if (totalAbnormal != 0 && totalRealityRectificationNumber != 0) {
+            n = (double) totalRealityRectificationNumber / totalAbnormal * 100;
+        }
+        resumptionDayVO.setTotalRealityRectificationRate(String.format("%.2f", n) + "%");
+        resumptionDayVO.setTotalRealityRectificationNumber(totalRealityRectificationNumber);
+        return resumptionDayVO;
     }
 
     @Override
-    public void export(ResumptionDTO resumptionDTO, HttpServletResponse response) throws IOException {
+    public void export(ResumptionDTO resumptionDTO, HttpServletResponse response) throws IOException, ExecutionException, InterruptedException, TimeoutException {
         String orgName = null;
         if (null != resumptionDTO.getOrgId()) {
             SysOrg sysOrg = orgService.selectSysOrgById(resumptionDTO.getOrgId(), SecurityConstants.INNER);

+ 7 - 5
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmDataAppController.java

@@ -4,19 +4,15 @@ package com.xunmei.iot.controller;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.iot.dto.alarmData.AppAlarmPageDto;
+import com.xunmei.iot.dto.alarmData.dealAlarmDto;
 import com.xunmei.iot.service.IotAlarmDataService;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
 import com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo;
-import com.xunmei.iot.vo.sensor.SensorAppVo;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import org.yaml.snakeyaml.reader.StreamReader;
 
-import javax.servlet.ServletInputStream;
 import javax.servlet.http.HttpServletRequest;
-import java.io.InputStreamReader;
-import java.util.Arrays;
 
 @RestController
 @RequestMapping("/iot_alarm_data/app")
@@ -37,6 +33,12 @@ public class IotAlarmDataAppController {
         return AjaxResult.success(vo);
     }
 
+    @ApiOperation("处置告警")
+    @PutMapping
+    AjaxResult dealAlarm(@RequestBody dealAlarmDto requestDto) {
+        return AjaxResult.success(this.iotAlarmDataService.dealAlarm(requestDto));
+    }
+
     @ApiOperation("告警中心角标")
     @GetMapping({"/badge/{orgId}"})
     AjaxResult badge(@PathVariable("orgId") Long orgId) {

+ 17 - 3
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmDataController.java

@@ -1,14 +1,14 @@
 package com.xunmei.iot.controller;
 
 
+import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.iot.dto.alarmData.dealAlarmDto;
 import com.xunmei.iot.service.IotAlarmDataService;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 @RestController
 @RequestMapping("/iot_alarm_data")
@@ -23,4 +23,18 @@ public class IotAlarmDataController {
 
         return iotAlarmDataService.selectListPage(requestDto);
     }
+
+    @ApiOperation("告警详情")
+    @GetMapping({"/detail/{id}"})
+    AjaxResult detail(@PathVariable("id") Long id) {
+        IotAlarmDataVo vo = this.iotAlarmDataService.getDetail(id);
+        return AjaxResult.success(vo);
+    }
+
+    @ApiOperation("处置告警")
+    @PutMapping
+    AjaxResult dealAlarm(@RequestBody dealAlarmDto requestDto) {
+        return AjaxResult.success(this.iotAlarmDataService.dealAlarm(requestDto));
+    }
+
 }

+ 12 - 9
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotBoardController.java

@@ -2,21 +2,16 @@ package com.xunmei.iot.controller;
 
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.domain.PageDto;
-import com.xunmei.common.core.web.page.TableDataInfo;
-import com.xunmei.iot.dto.dvrDisk.DvrDiskAlarmHistoryPageDto;
-import com.xunmei.iot.dto.dvrDisk.DvrDiskAppPageDto;
-import com.xunmei.iot.dto.dvrDisk.DvrDiskPageDto;
 import com.xunmei.iot.service.IotBoardService;
-import com.xunmei.iot.service.IotDvsDiskService;
 import com.xunmei.iot.vo.board.IotBoardOverviewVo;
-import com.xunmei.iot.vo.dvrDisk.DvrDiskAlarmHistoryPageVo;
-import com.xunmei.iot.vo.dvrDisk.DvrDiskAppPageVo;
-import com.xunmei.iot.vo.dvrDisk.DvrDiskPageVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeoutException;
@@ -38,4 +33,12 @@ class IotBoardController {
         IotBoardOverviewVo vo = this.iotBoardService.overview(request.getOrgId());
         return AjaxResult.success(vo);
     }
+
+
+    @ApiOperation("分页")
+    @PostMapping({"/iot/app"})
+    AjaxResult iotOverview(@RequestBody final PageDto request)  throws ExecutionException, InterruptedException, TimeoutException {
+        return AjaxResult.success(this.iotBoardService.iotOverview(request.getOrgId()));
+    }
+
 }

+ 27 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/alarmData/AppAlarmPageDto.java

@@ -1,8 +1,16 @@
 package com.xunmei.iot.dto.alarmData;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonInclude;
 import com.xunmei.common.core.web.domain.PageDto;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 @Data
 public class AppAlarmPageDto extends PageDto {
     private String deviceName;
@@ -10,4 +18,23 @@ public class AppAlarmPageDto extends PageDto {
     private Integer alarmType;
 
     private  Integer state;
+
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private Map<String, Object> params;
+
+    @ApiModelProperty(value = "告警时间")
+    private List<String> alarmTime;
+
+    private Date startTime;
+
+    private Date endTime;
+
+    private Integer isDo;
+
+    public Map<String, Object> getParams() {
+        if (params == null) {
+            params = new HashMap<>();
+        }
+        return params;
+    }
 }

+ 12 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/alarmData/dealAlarmDto.java

@@ -0,0 +1,12 @@
+package com.xunmei.iot.dto.alarmData;
+
+import lombok.Data;
+
+@Data
+public class dealAlarmDto {
+    private Long id;
+
+    private Integer doType;
+
+    private  String doContent;
+}

+ 4 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotAlarmDataMapper.java

@@ -9,6 +9,8 @@ import com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 @Mapper
 public interface IotAlarmDataMapper extends BaseMapper<IotAlarmData> {
     Page<IotAlarmDataVo> selectPageList(@Param("page") Page<IotAlarmDataVo> page, @Param("param") IotAlarmDataVo param);
@@ -18,4 +20,6 @@ public interface IotAlarmDataMapper extends BaseMapper<IotAlarmData> {
     IotAlarmDataVo detail(Long id);
 
     Integer appBadge(Long orgId);
+
+    List<IotAlarmData> selectAlarmDataListByOrgPath(@Param("orgPath") String orgPath, @Param("dataType") Integer dataType);
 }

+ 2 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotCommonSensorMapper.java

@@ -38,4 +38,6 @@ public interface IotCommonSensorMapper extends BaseMapper<IotSensor> {
     Page<SensorAppPageVo> selectAppPageData(Page<SensorAppPageVo> pageRequest, @Param("request") SensorAppPageDto request);
 
     SensorAppStateVo stateStatistic(@Param("request") SensorAppPageDto request);
+
+    List<IotSensor> selectListSensor(@Param("orgPath") String orgPath);
 }

+ 3 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IIotCommonSensorService.java

@@ -11,6 +11,7 @@ import com.xunmei.iot.vo.sensor.SensorAppVo;
 import com.xunmei.iot.vo.sensor.SensorPageVo;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
  * <p>
@@ -35,4 +36,6 @@ public interface IIotCommonSensorService extends IService<IotSensor> {
     SensorAppVo appDetail(Long id);
 
     Integer badge(Long orgId);
+
+    List<IotSensor> selectSensorListByOrgPath(String path);
 }

+ 7 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotAlarmDataService.java

@@ -4,9 +4,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.iot.dto.alarmData.AppAlarmPageDto;
+import com.xunmei.iot.dto.alarmData.dealAlarmDto;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
 import com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo;
 
+import java.util.List;
+
 public interface IotAlarmDataService extends IService<IotAlarmData> {
 
     /**
@@ -20,5 +23,9 @@ public interface IotAlarmDataService extends IService<IotAlarmData> {
 
     IotAlarmDataVo getDetail(Long id);
 
+    Integer dealAlarm(dealAlarmDto requestDto);
+
     Integer appBadge(Long orgId);
+
+    List<IotAlarmData> selectAlarmDataListByOrgPath(String orgPath,Integer dataType);
 }

+ 3 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotBoardService.java

@@ -2,9 +2,12 @@ package com.xunmei.iot.service;
 
 import com.xunmei.iot.vo.board.IotBoardOverviewVo;
 
+import java.util.Map;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeoutException;
 
 public interface IotBoardService {
     IotBoardOverviewVo overview(Long orgId)  throws ExecutionException, InterruptedException, TimeoutException;
+
+    Map<String, Object> iotOverview(Long orgId);
 }

+ 38 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotAlarmDataServiceImpl.java

@@ -6,7 +6,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
 import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.iot.dto.alarmData.AppAlarmPageDto;
+import com.xunmei.iot.dto.alarmData.dealAlarmDto;
 import com.xunmei.iot.mapper.IotAlarmDataMapper;
 import com.xunmei.iot.service.IotAlarmDataService;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
@@ -18,6 +20,7 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.List;
 
 @Service
 public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, IotAlarmData> implements IotAlarmDataService {
@@ -49,6 +52,15 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
             request.getParams().put("endAlarmEndTime",endAlarmEndTime);
         }
 
+        if(ObjectUtil.isNotEmpty(request.getAlarmDealTime()) && request.getAlarmDealTime().size() > 0){
+            LocalDateTime dealAlarmStartTime =LocalDateTime.parse(request.getAlarmDealTime().get(0), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            LocalDateTime dealAlarmEndTime =LocalDateTime.parse(request.getAlarmDealTime().get(1), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            request.getParams().put("dealAlarmStartTime",dealAlarmStartTime);
+            request.getParams().put("dealAlarmEndTime",dealAlarmEndTime);
+        }
+
+
+
         if(request.getCheckSub() && ObjectUtil.isNotEmpty(request.getOrgId())){
             SysOrg org = orgService.selectSysOrgById(request.getOrgId(), SecurityConstants.INNER);
             request.setOrgPath(org.getPath());
@@ -70,6 +82,12 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
             request.setOrgPath(org.getPath());
             request.setOrgId(null);
         }
+        if(ObjectUtil.isNotEmpty(request.getAlarmTime()) && request.getAlarmTime().size() > 0){
+            LocalDateTime alarmStartTime =LocalDateTime.parse(request.getAlarmTime().get(0), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            LocalDateTime alarmEndTime =LocalDateTime.parse(request.getAlarmTime().get(1), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            request.getParams().put("alarmStartTime",alarmStartTime);
+            request.getParams().put("alarmEndTime",alarmEndTime);
+        }
 
         page=baseMapper.selectAppPageList(page,request);
 
@@ -84,9 +102,29 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
     }
 
     @Override
+    public Integer dealAlarm(dealAlarmDto requestDto) {
+        IotAlarmData iotAlarmData = baseMapper.selectById(requestDto.getId());
+//        BeanHelper.copyProperties(requestDto,iotAlarmData);
+        iotAlarmData.setDoType(requestDto.getDoType());
+        iotAlarmData.setDoContent(requestDto.getDoContent());
+        iotAlarmData.setDoByUser(SecurityUtils.getUsername());
+        iotAlarmData.setDoTime(LocalDateTime.now());
+        iotAlarmData.setIsDo(1);
+        baseMapper.updateById(iotAlarmData);
+        return null;
+    }
+
+    @Override
     public Integer appBadge(Long orgId){
         Integer count=baseMapper.appBadge(orgId);
 
         return  count;
     }
+
+    @Override
+    public List<IotAlarmData> selectAlarmDataListByOrgPath(String orgPath,Integer dataType) {
+
+
+        return baseMapper.selectAlarmDataListByOrgPath(orgPath,dataType);
+    }
 }

+ 95 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotBoardServiceImpl.java

@@ -2,8 +2,12 @@ package com.xunmei.iot.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.iot.domain.IotSensor;
+import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
 import com.xunmei.common.core.thread.ThreadPoolConfig;
 import com.xunmei.iot.mapper.IotBoardMapper;
+import com.xunmei.iot.service.IIotCommonSensorService;
+import com.xunmei.iot.service.IotAlarmDataService;
 import com.xunmei.iot.service.IotBoardService;
 import com.xunmei.iot.vo.board.IotBoardOverviewItemVo;
 import com.xunmei.iot.vo.board.IotBoardOverviewVo;
@@ -14,10 +18,15 @@ import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
+import java.util.stream.Collectors;
+
+import static com.xunmei.system.api.enums.ElectricityMeterAttributes.METER_ATTRIBUTES_4;
 
 @Service
 public class IotBoardServiceImpl implements IotBoardService {
@@ -123,4 +132,90 @@ public class IotBoardServiceImpl implements IotBoardService {
 
         return vo;
     }
+
+    @Resource
+    IIotCommonSensorService sensorService;
+    @Resource
+    IotAlarmDataService alarmDataService;
+
+    @Override
+    public Map<String, Object> iotOverview(Long orgId) {
+        Map<String, Object> dataMap = new HashMap<>();
+        List<Map<String, Object>> resultList = new ArrayList<>();
+        SysOrg org = remoteOrgService.selectOrgById(orgId, SecurityConstants.INNER);
+        List<IotSensor> list = sensorService.selectSensorListByOrgPath(org.getPath());
+        HashMap<String, Object> map = new HashMap<>();
+        dataMap.put("sensor", map);
+        dataMap.put("resultData", resultList);
+        map.put("key", "传感器设备");
+        map.put("sensorNums", list.size());
+        map.put("normal", 0);
+        map.put("alarm", 0);
+        List<String> alarmTypeList = new ArrayList<>();
+        Collections.addAll(alarmTypeList,"水浸告警", "温湿度告警", "烟感告警", "燃气告警", "门磁告警", "盗情告警");
+        if (ObjectUtil.isEmpty(list)) {
+            buildEmptyData(resultList,alarmTypeList);
+            return dataMap;
+        }
+        Map<Integer, Long> collect = list.stream().collect(Collectors.groupingBy(IotSensor::getState, Collectors.counting()));
+        collect.forEach((k, v) -> {
+            if (ObjectUtil.equal(0, k)) {
+                map.put("normal", v.intValue());
+            }
+            if (ObjectUtil.equal(1, k)) {
+                map.put("alarm", v.intValue());
+            }
+        });
+        List<IotAlarmData> alarmDataList = alarmDataService.selectAlarmDataListByOrgPath(org.getPath(), 0);
+        if (ObjectUtil.isEmpty(alarmDataList)) {
+            buildEmptyData(resultList,alarmTypeList);
+            return dataMap;
+        }
+        //屏蔽红外
+        alarmDataList.removeIf(d -> ObjectUtil.equal(METER_ATTRIBUTES_4.getText(), d.getSourceTypeDes()));
+        Map<Object, List<IotAlarmData>> dataList = alarmDataList.stream().collect(Collectors.groupingBy(IotAlarmData::getSourceType));
+        for (Map.Entry<Object, List<IotAlarmData>> listEntry : dataList.entrySet()) {
+            List<IotAlarmData> value = listEntry.getValue();
+            Map<String, Object> hashMap = new HashMap<>();
+            long currentAlarm = value.stream().filter(d -> ObjectUtil.isNull(d.getEndTime())).count();
+            long unDealAlarm = value.stream().filter(d -> ObjectUtil.isNull(d.getDoTime())).count();
+            long needAlarm = value.stream().anyMatch(d -> ObjectUtil.isNull(d.getEndTime()) && ObjectUtil.isNull(d.getDoTime())) ? 1 : 0;
+
+            hashMap.put("key", value.get(0).getSourceTypeDes());
+            hashMap.put("historyAlarm", value.size());
+            hashMap.put("currentAlarm", (int) currentAlarm);
+            hashMap.put("unDealAlarm", (int) unDealAlarm);
+            hashMap.put("needAlarm", (int) needAlarm);
+            resultList.add(hashMap);
+        }
+        List<String> keyList = resultList.stream().map(m -> m.get("key")).distinct().map(String::valueOf).collect(Collectors.toList());
+
+        for (String type : alarmTypeList) {
+           if (!keyList.contains(type)){
+                Map<String, Object> hashMap = new HashMap<>();
+                hashMap.put("key", type);
+                hashMap.put("historyAlarm", 0);
+                hashMap.put("currentAlarm", 0);
+                hashMap.put("unDealAlarm", 0);
+                hashMap.put("needAlarm", 0);
+                resultList.add(hashMap);
+
+           }
+        }
+
+        return dataMap;
+    }
+
+    private void buildEmptyData(List<Map<String, Object>> resultList, List<String> alarmType) {
+        for (String s : alarmType) {
+            Map<String, Object> hashMap = new HashMap<>();
+            hashMap.put("key", s);
+            hashMap.put("historyAlarm", 0);
+            hashMap.put("currentAlarm", 0);
+            hashMap.put("unDealAlarm", 0);
+            hashMap.put("needAlarm", 0);
+            resultList.add(hashMap);
+        }
+
+    }
 }

+ 7 - 7
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotCommonSensorServiceImpl.java

@@ -1,13 +1,13 @@
 package com.xunmei.iot.service.impl;
 
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.CacheConstants;
 import com.xunmei.common.core.constant.DictConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
@@ -19,16 +19,11 @@ import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.redis.utils.RedisUtils;
 import com.xunmei.common.security.utils.DictUtils;
 import com.xunmei.iot.dto.sensor.SensorAppPageDto;
-import com.xunmei.iot.vo.sensor.SensorAppStateVo;
 import com.xunmei.iot.dto.sensor.SensorPageDto;
 import com.xunmei.iot.mapper.IotCommonSensorMapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.iot.mapper.MediatorCategoryMapper;
 import com.xunmei.iot.service.IIotCommonSensorService;
-import com.xunmei.iot.vo.sensor.SensorAppPageVo;
-import com.xunmei.iot.vo.sensor.SensorAppVo;
-import com.xunmei.iot.vo.sensor.SensorExportVo;
-import com.xunmei.iot.vo.sensor.SensorPageVo;
+import com.xunmei.iot.vo.sensor.*;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.vo.SysOrgVO;
@@ -174,6 +169,11 @@ public class IotCommonSensorServiceImpl extends ServiceImpl<IotCommonSensorMappe
         return count.intValue();
     }
 
+    @Override
+    public List<IotSensor> selectSensorListByOrgPath(String orgPath) {
+        return baseMapper.selectListSensor(orgPath);
+    }
+
     private void dealAppPageParam(SensorAppPageDto request) {
         final SysOrg sysOrg = orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER);
         if (ObjectUtil.equal(Boolean.TRUE, request.getCheckSub())) {

+ 4 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarm/IotAlarmDataVo.java

@@ -26,7 +26,11 @@ public class IotAlarmDataVo extends IotAlarmData {
     @ApiModelProperty(value = "告警恢复时间")
     private List<String> alarmEndTime;
 
+    @ApiModelProperty(value = "告警处置时间")
+    private List<String> alarmDealTime;
+
     @ApiModelProperty(value = "机构path")
     private String orgPath;
 
+
 }

+ 18 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarmData/AppAlarmDataPageVo.java

@@ -18,6 +18,9 @@ public class AppAlarmDataPageVo {
     @ApiModelProperty(value = "设备名称")
     private String deviceName;
 
+    @ApiModelProperty(value = "报警源类型")
+    private String sourceType;
+
     @ApiModelProperty(value = "报警源类型(设备类型) 中文")
     private String sourceTypeDes;
 
@@ -28,4 +31,19 @@ public class AppAlarmDataPageVo {
     @ApiModelProperty(value = "告警结束时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime endTime;
+
+    @ApiModelProperty(value = "告警处置时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime doTime;
+
+    @ApiModelProperty(value = "告警处理方式:0:未 处理,1:(暂无)2:误报,3:正常告警,4:报修")
+    private Integer doType;
+
+    @ApiModelProperty(value = "告警处置用户")
+    private String doByUser;
+
+    @ApiModelProperty(value = "告警处置内容")
+    private String doContent;
+
+
 }

+ 38 - 1
soc-modules/soc-modules-iot/src/main/resources/mapper/IotAlarmDataMapper.xml

@@ -20,7 +20,7 @@
         <if test="param.orgPath != null and param.orgPath != ''">
             and b.path like concat(#{param.orgPath},'%')
         </if>
-        <if test="param.dataType != null and param.dataType != ''">
+        <if test="param.dataType != null">
             and a.data_type = #{param.dataType}
         </if>
         <if test="param.deviceType != null and param.deviceType != ''">
@@ -38,14 +38,32 @@
         <if test="param.params.endAlarmEndTime != null">
             and a.end_time &lt;= #{param.params.endAlarmEndTime}
         </if>
+        <if test="param.params.dealAlarmStartTime != null">
+            and a.do_time &gt;= #{param.params.dealAlarmStartTime}
+        </if>
+        <if test="param.params.dealAlarmEndTime != null">
+            and a.do_time &lt;= #{param.params.dealAlarmEndTime}
+        </if>
+        <if test="param.isDo != null and param.isDo != ''">
+            and a.is_do = #{param.isDo}
+        </if>
+        <if test="param.isDo == 0">
+            and a.is_do is null
+        </if>
+        order by a.end_time ,a.time desc
     </select>
     <select id="selectAppPageList" resultType="com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo">
         SELECT
         a.id,
         a.device_name,
+        a.source_type,
         a.source_type_des,
         a.time as start_time,
         a.end_time,
+        a.do_time,
+        a.do_type,
+        a.do_by_user,
+        a.do_content,
         b.short_name AS org_name
         FROM
         iot_alarm_data a
@@ -69,6 +87,18 @@
         <if test="param.state==1">
             and a.end_time is null
         </if>
+        <if test="param.params != null and param.params.alarmStartTime != null">
+            and a.time &gt;= #{param.params.alarmStartTime}
+        </if>
+        <if test="param.params != null and param.params.alarmEndTime != null">
+            and a.time &lt;= #{param.params.alarmEndTime}
+        </if>
+        <if test="param.isDo != null and param.isDo != ''">
+            and a.is_do = #{param.isDo}
+        </if>
+        <if test="param.isDo == 0">
+            and a.is_do is null
+        </if>
         order by a.end_time ,a.time desc
     </select>
     <select id="detail" resultType="com.xunmei.iot.vo.alarm.IotAlarmDataVo">
@@ -85,4 +115,11 @@
         FROM iot_alarm_data a
         where a.org_id = #{orgId} and a.end_time is null
     </select>
+
+    <select id="selectAlarmDataListByOrgPath" resultType="com.xunmei.common.core.domain.mediator.domain.IotAlarmData">
+        select d.* from iot_alarm_data d inner join sys_org o on d.org_id = o.id where o.path like concat(#{orgPath},'%') and o.deleted = 0
+        <if test="dataType != null">
+            and d.data_type = #{dataType}
+        </if>
+    </select>
 </mapper>

+ 7 - 0
soc-modules/soc-modules-iot/src/main/resources/mapper/IotSensorMapper.xml

@@ -129,4 +129,11 @@
             and s.state_update_time <![CDATA[<=]]>  #{request.endTime}
         </if>
     </select>
+
+    <select id="selectListSensor" resultType="com.xunmei.common.core.domain.iot.domain.IotSensor">
+        SELECT id,org_id,org_path,device_name,device_type,device_code,ifnull(a.state,0) as state
+        FROM
+        iot_sensor a
+        where  a.org_path like  concat(#{orgPath},'%') and a.deleted=0
+    </select>
 </mapper>

+ 27 - 8
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmDataServiceImpl.java

@@ -69,7 +69,6 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
 
     @Autowired
     private RemoteSmsService remoteSmsService;
-
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void dealSensorData(IotSensor iotSensor) throws Exception {
@@ -95,6 +94,11 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
 
         //获取该设备对应的规则
         int weekDay = DateUtil.thisDayOfWeek() - 1;
+        // 0 代表星期天, 规则表中星期天存的为7,需要做一下转换
+        if(weekDay==0)
+        {
+            weekDay =7;
+        }
         System.out.println(weekDay);
         QueryWrapper<IotAlarmRuleExpress> ruleExpress = new QueryWrapper<>();
         ruleExpress.lambda().eq(IotAlarmRuleExpress::getRuleId, iotAlarmRuleSource.getRuleId())
@@ -148,14 +152,22 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
                 iotSensor.setStateStartTime(LocalDateTime.now());
                 iotSensorMapper.updateById(iotSensor);
             }
-
         }
         if (isExpress && !isAlarm) {
             //报警恢复
             if( alarms.size() != 0){
-                IotAlarmData iotAlarmData = alarms.get(0);
-                iotAlarmData.setEndTime(LocalDateTime.now());
-                this.updateById(iotAlarmData);
+                if(alarms.size()>1)
+                {
+                    for (IotAlarmData oldAlarm : alarms) {
+                        oldAlarm.setEndTime(LocalDateTime.now());
+                        this.updateById(oldAlarm);
+                    }
+                }
+                else {
+                    IotAlarmData iotAlarmData = alarms.get(0);
+                    iotAlarmData.setEndTime(LocalDateTime.now());
+                    this.updateById(iotAlarmData);
+                }
             }
 
             if (ObjectUtil.notEqual(iotSensor.getState(),0)) {
@@ -326,7 +338,8 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
         //此处认为大于,大于等于,小于,小于等于 规则中传感器上报值与规则中的设定值皆为数字,
         //所以在判断此类规则的时候将值转为了BigDecimal进行判断; parseInt会在有小数的时候报错
         if (AlarmRuleExpressOperateEnum.EQUALS.getText().equals(operator)) {
-            if (sensorValue.equals(settingValue)) {
+            // sensorValue 存在为null的情况, deviceType和 infos.name 不对应的情况
+            if (ObjectUtil.equal(sensorValue,settingValue)) {
                 //对上了
                 iotAlarmData = builderAlarm(sensorValue, field, express, iotSensor);
             }
@@ -375,7 +388,13 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
         IotAlarmData iotAlarmData = new IotAlarmData();
         iotAlarmData.setAlarmValue("异常");
         iotAlarmData.setTime(LocalDateTime.now());
-        iotAlarmData.setDeviceName(deviceName + "-" + channelName);
+        if(ObjectUtil.equal(deviceName,channelName)){
+            iotAlarmData.setDeviceName(channelName);
+        }
+        else
+        {
+            iotAlarmData.setDeviceName(deviceName + "-" + channelName);
+        }
         iotAlarmData.setRuleId(1L);
         iotAlarmData.setSourceType(diagnosisType);
         iotAlarmData.setSourceTypeDes(AlarmVideoTypeEnum.getTextByValue(diagnosisType) + "告警");
@@ -392,7 +411,7 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
 
     private IotAlarmData builderAlarm(String sensorValue, IotAlarmSystemField field, IotAlarmRuleExpress express, IotSensor iotSensor) {
         IotAlarmData iotAlarmData = new IotAlarmData();
-        iotAlarmData.setAlarmValue(sensorValue + field.getUnit() == null ? "" : field.getUnit());
+        iotAlarmData.setAlarmValue(sensorValue + (field.getUnit() == null ? "" : field.getUnit()));
         iotAlarmData.setTime(LocalDateTime.now());
         iotAlarmData.setDeviceName(iotSensor.getDeviceName());
         iotAlarmData.setRuleId(express.getRuleId());

+ 2 - 2
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/SecurityWorkExport.java

@@ -55,7 +55,7 @@ public class SecurityWorkExport {
     private Integer departureReachNumber;
     @ExcelProperty(value = {"自助设备", "自助设备总数"}, index = 17)
     private Integer selfServiceDevicesTotal;
-    @ExcelProperty(value = {"自助设备", "在行大堂式机具"}, index = 18)
+    @ExcelProperty(value = {"自助设备", "在行大堂式机具"}, index = 18)
     private Integer onLineLobbyImplement;
     @ExcelProperty(value = {"自助设备", "在行式穿墙式机具"}, index = 19)
     private Integer onLineThroughWalls;
@@ -85,7 +85,7 @@ public class SecurityWorkExport {
     private String isAlone;
     @ExcelProperty(value = {"机构及人员配备", "部门负责人、一般管理人员和监控中心负责人为专职人数"}, index = 32)
     private Integer managerFullTime;
-    @ExcelProperty(value = {"机构及人员配备", "部门负责人、一般管理人员和监控中心负责人为兼职人数"}, index = 33)
+    @ExcelProperty(value = {"机构及人员配备", "部门负责人、一般管理人员和监控中心负责人为兼职人数"}, index = 33)
     private Integer managerPartTime;
     @ExcelProperty(value = {"机构及人员配备", "部门负责人、一般管理人员和监控中心负责人安保持证人数"}, index = 34)
     private Integer managerCertificate;

+ 2 - 0
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysOrgMapper.xml

@@ -837,6 +837,7 @@ and
                 LEFT JOIN sys_org_extend b ON a.org_id = b.org_id
         WHERE c.type=4
           and c.deleted = 0
+          and c.is_lock = 0
           and c.path like concat(#{orgPath}, '%')
         GROUP BY
             a.org_id
@@ -1249,6 +1250,7 @@ and a.org_path LIKE concat(#{orgPath}, '%')
          is_lock=0 AND
             type = #{type}
           AND deleted = 0
+          AND is_lock = 0
           <if test="path != null">
               AND path LIKE concat(#{path}, '%')
           </if>

+ 1 - 1
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysRoleMapper.xml

@@ -254,7 +254,7 @@
     </delete>
 
     <select id="selectUserByRoleNameAndOrgId" resultType="com.xunmei.system.api.domain.SysUser">
-        select u.id, u.username
+        select u.id, u.username,u.phone
         from sys_user u
                  inner join sys_org o on u.org_id = o.id
                  inner join sys_user_role ur on u.id = ur.user_id