Bläddra i källkod

bug修改与设备登记报警主机增加是否关联登记簿字段

jingyuanchao 1 år sedan
förälder
incheckning
e3796d9f50
17 ändrade filer med 231 tillägg och 79 borttagningar
  1. 28 0
      project_data/sql/0.0.9/soc/soc.sql
  2. 5 3
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysDevice.java
  3. 5 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/dto/ProtectionDTO.java
  4. 3 1
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/vo/ProtectionVO.java
  5. 10 4
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotAlarmSubsystem.java
  6. 5 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/dto/protection/ProtectionEditDto.java
  7. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/ProtectionMapper.java
  8. 3 3
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/IProtectionService.java
  9. 2 14
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java
  10. 61 6
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ProtectionServiceImpl.java
  11. 1 1
      soc-modules/soc-modules-core/src/main/resources/mapper/board/AppCockpitMapper.xml
  12. 4 0
      soc-modules/soc-modules-core/src/main/resources/mapper/device/ProtectionMapper.xml
  13. 51 13
      soc-modules/soc-modules-file/src/main/java/com/xunmei/file/utils/PdfUtil.java
  14. 11 17
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/VideoDiagnosisRecordServiceImpl.java
  15. 9 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/dto/SysWorkTimeDto.java
  16. 26 14
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysDeviceServiceImpl.java
  17. 5 1
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysWorkTimeMapper.xml

+ 28 - 0
project_data/sql/0.0.9/soc/soc.sql

@@ -0,0 +1,28 @@
+
+
+
+
+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_subsystem'
+                    AND column_name = 'in_book') THEN
+        alter table iot_alarm_subsystem
+            add in_book int default 0 null comment '是否关联登记簿,0否1是' after deleted;
+    END IF;
+
+
+END ??
+DELIMITER ;
+CALL schema_change();
+
+
+
+

+ 5 - 3
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysDevice.java

@@ -1,5 +1,6 @@
 package com.xunmei.system.api.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -10,10 +11,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
-import java.io.Serializable;
 import java.util.Date;
 
 /**
@@ -72,4 +70,8 @@ public class SysDevice extends BaseEntity {
 
     @ApiModelProperty(value = "是否高清")
     private String definition;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "是否关联登记簿",notes = "0否1是")
+    private Integer inBook;
 }

+ 5 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/dto/ProtectionDTO.java

@@ -1,5 +1,6 @@
 package com.xunmei.system.api.dto;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
@@ -29,4 +30,8 @@ public class ProtectionDTO {
      */
     Integer allHour;
     private Long deviceId;
+
+
+    @ApiModelProperty(value = "是否关联登记簿",notes = "0否1是")
+    private Integer inBook;
 }

+ 3 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/vo/ProtectionVO.java

@@ -2,6 +2,7 @@ package com.xunmei.system.api.vo;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.util.Date;
@@ -52,7 +53,8 @@ public class ProtectionVO {
     private String orgPath;
 
     private String orgName;
-
+    @ApiModelProperty(value = "是否关联登记簿",notes = "0否1是")
+    private Integer inBook;
 
     private Integer deleted;
 }

+ 10 - 4
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotAlarmSubsystem.java

@@ -1,16 +1,17 @@
 package com.xunmei.common.core.domain.iot.domain;
 
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
 /**
  * <p>
  * 报警控制器(子系统)表
@@ -108,4 +109,9 @@ public class IotAlarmSubsystem implements Serializable {
     private Integer source;
 
 
+    @TableField("in_book")
+    @ApiModelProperty(value = "是否关联登记簿",notes = "0否1是")
+    private Integer inBook;
+
+
 }

+ 5 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/dto/protection/ProtectionEditDto.java

@@ -1,9 +1,8 @@
 package com.xunmei.core.resumption.dto.protection;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotNull;
-
 
 @Data
 public class ProtectionEditDto {
@@ -30,4 +29,8 @@ public class ProtectionEditDto {
      * 是否24小时防区
      */
     Integer allHour;
+
+
+    @ApiModelProperty(value = "是否关联登记簿",notes = "0否1是")
+    private Integer inBook;
 }

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/ProtectionMapper.java

@@ -22,6 +22,8 @@ public interface ProtectionMapper extends BaseMapper<IotAlarmSubsystem> {
 
 
     String getHostName(String hostCode);
+
+    void updateInBookStatus(@Param("orgId") Long orgId, @Param("id") Long id);
 //    MePage<pageSensorVo> pageSensorList(@Param("mePage") MePage<pageSensorVo> mePage, @Param("request") pageSensorDto request);
 //
 //    MePage<ProtectionPageVo4Mybatis> pageByMybatis(@Param("request") ProtectionPageDto4Mybatis request, MePage<ProtectionPageVo4Mybatis> mePage);

+ 3 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/IProtectionService.java

@@ -1,11 +1,10 @@
 package com.xunmei.core.resumption.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.xunmei.common.core.domain.iot.domain.IotAlarmSubsystemLog;
+import com.xunmei.common.core.domain.iot.domain.IotAlarmSubsystem;
 import com.xunmei.common.core.domain.panel.dto.PanelListDto;
 import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
-import com.xunmei.common.core.domain.iot.domain.IotAlarmSubsystem;
 import com.xunmei.core.resumption.dto.protection.ProtectionEditDto;
 import com.xunmei.core.resumption.dto.protection.ProtectionLogPageDto;
 import com.xunmei.core.resumption.dto.protection.ProtectionPageDto;
@@ -16,6 +15,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -51,7 +51,7 @@ public interface IProtectionService extends IService<IotAlarmSubsystem> {
 
     void export(ProtectionPageDto pageDto, HttpServletResponse response) throws Exception;
 
-    List<IotAlarmSubsystemLog> selectDataByOrgId(Long orgId, Date date);
+    List<Map<String, List<Map<String,Object>>>> selectDataByOrgId(Long orgId, Date date);
 //    MePage<pageSensorVo> pageSensorList(pageSensorDto request);
 
 //    MePage<ProtectionPageVo4Mybatis> pageByMybatis(ProtectionPageDto4Mybatis request);

+ 2 - 14
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java

@@ -16,7 +16,6 @@ import com.xunmei.common.core.constant.*;
 import com.xunmei.common.core.domain.DateRange;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.compensate.dto.CompensateDto;
-import com.xunmei.common.core.domain.iot.domain.IotAlarmSubsystemLog;
 import com.xunmei.common.core.domain.registerbook.domain.CoreRegisterBookPdf;
 import com.xunmei.common.core.domain.reminder.domain.CoreReminderSchedule;
 import com.xunmei.common.core.domain.reminder.vo.CoreReminderConfigurationFullVo;
@@ -1434,19 +1433,8 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
         data.put("questions", getListQuestionPdfVo(taskIds));
 
         //布撤防数据
-        List<IotAlarmSubsystemLog> protectionList = protectionService.selectDataByOrgId(orgId, date);
-        if (ObjectUtil.isEmpty(protectionList)) {
-            return data;
-        }
-        List<Map<String, Object>> list = new ArrayList<>();
-        for (IotAlarmSubsystemLog subsystemLog : protectionList) {
-            Map<String, Object> map = new HashMap<>();
-            map.put("date", DateUtil.format(subsystemLog.getStatusChangeTime(),"yyyy-MM-dd HH:mm:ss"));
-            //布防状态,0:撤防,1:布防
-            map.put("status", subsystemLog.getStatus());
-            list.add(map);
-        }
-        data.put("protection", list);
+        List<Map<String, List<Map<String, Object>>>> mapList = protectionService.selectDataByOrgId(orgId, date);
+        data.put("protection", mapList);
 
         return data;
     }

+ 61 - 6
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ProtectionServiceImpl.java

@@ -6,20 +6,21 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.excel.EasyExcel;
+import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.iot.domain.IotAlarmSubsystem;
+import com.xunmei.common.core.domain.iot.domain.IotAlarmSubsystemLog;
 import com.xunmei.common.core.domain.panel.dto.PanelListDto;
 import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.enums.iot.DeviceSourceEnum;
 import com.xunmei.common.core.utils.bean.BeanUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
-import com.xunmei.common.core.domain.iot.domain.IotAlarmSubsystem;
-import com.xunmei.common.core.domain.iot.domain.IotAlarmSubsystemLog;
 import com.xunmei.core.resumption.dto.protection.ProtectionEditDto;
 import com.xunmei.core.resumption.dto.protection.ProtectionLogPageDto;
 import com.xunmei.core.resumption.dto.protection.ProtectionPageDto;
@@ -127,6 +128,7 @@ public class ProtectionServiceImpl extends ServiceImpl<ProtectionMapper, IotAlar
             throw new RuntimeException("防区名称重复");
         }
         IotAlarmSubsystem protection = new IotAlarmSubsystem();
+        Long id=dto.getId();
         if (dto.getId() != null) {
             protection = getById(dto.getId());
             BeanUtil.copyProperties(dto, protection);
@@ -135,6 +137,11 @@ public class ProtectionServiceImpl extends ServiceImpl<ProtectionMapper, IotAlar
             BeanUtil.copyProperties(dto, protection);
             protection.setStatus(ProtectionStatus.UNKNOWN.ordinal());
             save(protection);
+            id=protection.getId();
+        }
+        //一个机构下仅允许存在一个子系统关联登记簿
+        if (ObjectUtil.equal(dto.getInBook(),1)){
+            baseMapper.updateInBookStatus(dto.getOrgId(),id);
         }
 
         return protection.getId();
@@ -255,12 +262,60 @@ public class ProtectionServiceImpl extends ServiceImpl<ProtectionMapper, IotAlar
     }
 
     @Override
-    public List<IotAlarmSubsystemLog> selectDataByOrgId(Long orgId, Date date) {
+    public List<Map<String, List<Map<String, Object>>>> selectDataByOrgId(Long orgId, Date date) {
+        // 一个防区对应 布撤防历史(我知道这这个结构写的很烂,但是时间有限,先这样吧)
+        List<Map<String, List<Map<String, Object>>>> resultList = new ArrayList<>();
+
+        List<IotAlarmSubsystem> list = lambdaQuery()
+                .eq(IotAlarmSubsystem::getOrgId, orgId)
+                .eq(IotAlarmSubsystem::getDeleted, 0)
+                .list();
+        if (ObjectUtil.isEmpty(list)) {
+            return resultList;
+        }
+        for (IotAlarmSubsystem subsystem : list) {
+            Map<String, List<Map<String, Object>>> map = new HashMap<>();
+            map.put(JSON.toJSONString(subsystem), new ArrayList<>());
+            resultList.add(map);
+        }
+        List<Long> protectionIdList = list.stream().map(IotAlarmSubsystem::getId).collect(Collectors.toList());
         LambdaQueryWrapper<IotAlarmSubsystemLog> wrapper = new LambdaQueryWrapper<IotAlarmSubsystemLog>();
         wrapper.eq(IotAlarmSubsystemLog::getOrgId, orgId)
-                .between(IotAlarmSubsystemLog::getStatusChangeTime, DateUtil.beginOfDay(date), DateUtil.endOfDay(date))
-                .orderByDesc(IotAlarmSubsystemLog::getStatusChangeTime);
-        return protectionLogMapper.selectList(wrapper);
+                .in(IotAlarmSubsystemLog::getProtectionId, protectionIdList)
+                .between(IotAlarmSubsystemLog::getStatusChangeTime, DateUtil.beginOfDay(date), DateUtil.endOfDay(date));
+        List<IotAlarmSubsystemLog> logList = protectionLogMapper.selectList(wrapper);
+        if (ObjectUtil.isEmpty(logList)) {
+            return resultList;
+        }
+        for (Map<String, List<Map<String, Object>>> subsystemListMap : resultList) {
+            for (Map.Entry<String, List<Map<String, Object>>> listEntry : subsystemListMap.entrySet()) {
+                IotAlarmSubsystem subsystem = JSON.parseObject(listEntry.getKey(), IotAlarmSubsystem.class);
+                List<IotAlarmSubsystemLog> subsystemLogList = logList.stream().filter(r -> ObjectUtil.equal(r.getProtectionId(), subsystem.getId())).collect(Collectors.toList());
+                if (subsystemLogList.isEmpty()) {
+                    continue;
+                }
+                //布防状态,0:撤防,1:布防
+                Optional<IotAlarmSubsystemLog> optional = subsystemLogList.stream().filter(r -> ObjectUtil.equal(r.getStatus(), 1)).max(Comparator.comparing(IotAlarmSubsystemLog::getStatusChangeTime));
+                if (optional.isPresent()){
+                    IotAlarmSubsystemLog log = optional.get();
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("status", log.getStatus());
+                    map.put("date", DateUtil.format(log.getStatusChangeTime(), "yyyy-MM-dd HH:mm:ss"));
+                    listEntry.getValue().add(map);
+                }
+                optional = subsystemLogList.stream().filter(r -> ObjectUtil.equal(r.getStatus(), 0)).min(Comparator.comparing(IotAlarmSubsystemLog::getStatusChangeTime));
+                if (optional.isPresent()){
+                    IotAlarmSubsystemLog log = optional.get();
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("status", log.getStatus());
+                    map.put("date", DateUtil.format(log.getStatusChangeTime(), "yyyy-MM-dd HH:mm:ss"));
+                    listEntry.getValue().add(map);
+                }
+            }
+        }
+
+
+        return resultList;
     }
 }
 

+ 1 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/board/AppCockpitMapper.xml

@@ -5,7 +5,7 @@
         SELECT sum(IF(o.type = 3, 1, 0))                  as hangsheCount,
                sum(IF(o.type = 4, 1, 0))                  as bankingCount,
                sum(IF(o.type = 6, 1, 0))                  as centerStoreCount,
-               sum(o.type = 8 || oe.business_library = 1) as bankingStoreCount,
+               sum(o.type = 4 and oe.business_library = 1) as bankingStoreCount,
                sum(IF(o.type = 5, 1, 0))                  as offlineATMCount,
                sum(oe.self_service_bank = 1)              as onlineATMCount,
                sum(oe.lobby_equipment)                    as lobbyDeviceCount,

+ 4 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/device/ProtectionMapper.xml

@@ -50,6 +50,10 @@
         from iot_device
         where equipment_code = #{hostCode} and deleted=0
     </select>
+
+    <update id="updateInBookStatus">
+        update iot_alarm_subsystem set in_book=0 where org_id=#{orgId}  and id != #{id}
+    </update>
     <!--    <select id="pageLog" resultType="com.xunmei.core.resumption.vo.protection.ProtectionLogPageVo">-->
     <!--        select a.id, a.name as name,a.status as status,a.status_update_time,a.status_updator_name-->
     <!--        from iot_alarm_subsystem_log a-->

+ 51 - 13
soc-modules/soc-modules-file/src/main/java/com/xunmei/file/utils/PdfUtil.java

@@ -4,15 +4,18 @@ package com.xunmei.file.utils;
 import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson2.JSON;
 import com.lowagie.text.*;
 import com.lowagie.text.pdf.*;
 import com.xunmei.common.core.constant.DictConstants;
+import com.xunmei.common.core.domain.iot.domain.IotAlarmSubsystem;
 import com.xunmei.common.security.utils.DictUtils;
 import com.xunmei.file.vo.ItextPdfTableVo;
 import com.xunmei.system.api.domain.AccessDataVo;
 import com.xunmei.system.api.domain.CheckDataVo;
 import com.xunmei.system.api.domain.SafeCheckTaskRegisterBookVo;
 import com.xunmei.system.api.domain.SysDictData;
+import io.netty.util.internal.StringUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FileUtils;
 import org.springframework.context.ApplicationContext;
@@ -240,25 +243,60 @@ public class PdfUtil {
         PdfUtil.createPDFCell(tableFont, table, "布撤防情况", Element.ALIGN_MIDDLE, 10, 1);
 
         PdfUtil.createPDFCell(tableFont, table, "序号", Element.ALIGN_MIDDLE, 2, 1);
-        PdfUtil.createPDFCell(tableFont, table, "布撤防状态", Element.ALIGN_MIDDLE, 4, 1);
-        PdfUtil.createPDFCell(tableFont, table, "时间", Element.ALIGN_MIDDLE, 4, 1);
+        PdfUtil.createPDFCell(tableFont, table, "控制器", Element.ALIGN_MIDDLE, 3, 1);
+        PdfUtil.createPDFCell(tableFont, table, "状态", Element.ALIGN_MIDDLE, 2, 1);
+        PdfUtil.createPDFCell(tableFont, table, "时间", Element.ALIGN_MIDDLE, 3, 1);
 
-        final List<HashMap> protectionList = (List<HashMap>) data.get("protection");
+        List<Map<String, List<Map<String, Object>>>> protectionList = (List<Map<String, List<Map<String, Object>>>>) data.get("protection");
         if (ObjectUtil.isEmpty(protectionList)) {
             PdfUtil.createPDFCell(tableFont, table, "/", Element.ALIGN_MIDDLE, 2, 1);
-            PdfUtil.createPDFCell(tableFont, table, "/", Element.ALIGN_MIDDLE, 4, 1);
-            PdfUtil.createPDFCell(tableFont, table, "/", Element.ALIGN_MIDDLE, 4, 1);
+            PdfUtil.createPDFCell(tableFont, table, "/", Element.ALIGN_MIDDLE, 3, 1);
+            PdfUtil.createPDFCell(tableFont, table, "/", Element.ALIGN_MIDDLE, 2, 1);
+            PdfUtil.createPDFCell(tableFont, table, "/", Element.ALIGN_MIDDLE, 3, 1);
             document.add(table);
-
         } else {
             for (int i = 0; i < protectionList.size(); i++) {
-                PdfUtil.createPDFCell(tableFont, table, String.valueOf(i+1), Element.ALIGN_MIDDLE, 2, 1);
-                HashMap<String,Object> hashMap = protectionList.get(i);
-                Integer status = (Integer) hashMap.get("status");
-                String date = (String) hashMap.get("date");
-                String text = ObjectUtil.equal(1, status) ? "布防" : "撤防";//布防状态,0:撤防,1:布防
-                PdfUtil.createPDFCell(tableFont, table, text, Element.ALIGN_MIDDLE, 4, 1);
-                PdfUtil.createPDFCell(tableFont, table, date, Element.ALIGN_MIDDLE, 4, 1);
+                Map<String, List<Map<String, Object>>> listMap = protectionList.get(i);
+                for (Map.Entry<String, List<Map<String, Object>>> listEntry : listMap.entrySet()) {
+                    IotAlarmSubsystem subsystem = JSON.parseObject(listEntry.getKey(),IotAlarmSubsystem.class);
+                    List<Map<String, Object>> value = listEntry.getValue();
+                    //布防状态,0:撤防,1:布防
+                    if (value.isEmpty()) {
+                        // 序号
+                        PdfUtil.createPDFCell(tableFont, table, String.valueOf(i + 1), Element.ALIGN_MIDDLE, 2, 1);
+                        //子系统名称
+                        PdfUtil.createPDFCell(tableFont, table, subsystem.getName(), Element.ALIGN_MIDDLE, 3, 1);
+                        //状态
+                        PdfUtil.createPDFCell(tableFont, table, StringUtil.EMPTY_STRING, Element.ALIGN_MIDDLE, 2, 1);
+                        // 时间
+                        PdfUtil.createPDFCell(tableFont, table, StringUtil.EMPTY_STRING, Element.ALIGN_MIDDLE, 3, 1);
+                    } else {
+                        // 序号
+                        PdfUtil.createPDFCell(tableFont, table, String.valueOf(i + 1), Element.ALIGN_MIDDLE, 2, 2);
+                        //子系统名称
+                        PdfUtil.createPDFCell(tableFont, table, subsystem.getName(), Element.ALIGN_MIDDLE, 3, 2);
+                        //状态
+                        PdfUtil.createPDFCell(tableFont, table, "撤防", Element.ALIGN_MIDDLE, 2, 1);
+                        Optional<Map<String, Object>> statusOptional1 = value.stream().filter(r -> {
+                            Integer status = (Integer) r.get("status");
+                            return ObjectUtil.equal(0,status);
+                        }).findFirst();
+                        String cfStatus = statusOptional1.isPresent() ? String.valueOf(statusOptional1.get().get("date")) : StringUtil.EMPTY_STRING;
+                        // 撤防时间
+                        PdfUtil.createPDFCell(tableFont, table, cfStatus, Element.ALIGN_MIDDLE, 3, 1);
+
+
+                        PdfUtil.createPDFCell(tableFont, table, "布防", Element.ALIGN_MIDDLE, 2, 1);
+                        Optional<Map<String, Object>> statusOptional = value.stream().filter(r -> {
+                            Integer status = (Integer) r.get("status");
+                            return ObjectUtil.equal(1,status);
+                        }).findFirst();
+                        String bfStatus = statusOptional.isPresent() ? String.valueOf(statusOptional.get().get("date")) : StringUtil.EMPTY_STRING;
+                        // 布防时间
+                        PdfUtil.createPDFCell(tableFont, table, bfStatus, Element.ALIGN_MIDDLE, 3, 1);
+                    }
+                }
+
             }
         }
 

+ 11 - 17
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/VideoDiagnosisRecordServiceImpl.java

@@ -2,31 +2,25 @@ package com.xunmei.mediator.api.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.Constants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.iot.domain.IotDevice;
 import com.xunmei.common.core.domain.iot.domain.IotDvrChannel;
-import com.xunmei.common.core.domain.mediator.domain.IotAlarmCode;
 import com.xunmei.common.core.domain.video.MediatorVideoDiagnosisRecord;
 import com.xunmei.common.core.utils.IDHelper;
 import com.xunmei.mediator.api.mapper.IotAlarmCodeMapper;
 import com.xunmei.mediator.api.mapper.MediatorCategoryMapper;
 import com.xunmei.mediator.api.mapper.VideoDiagnosisRecordMapper;
 import com.xunmei.mediator.api.service.*;
-import com.xunmei.mediator.api.service.IIotDeviceService;
-import com.xunmei.mediator.api.service.IIotDvrChannelService;
-import com.xunmei.mediator.api.service.IVideoDiagnosisLogService;
-import com.xunmei.mediator.api.service.IVideoDiagnosisRecordService;
 import com.xunmei.mediator.domain.dto.redis.RedisKey;
-import com.xunmei.system.api.dto.protection.ReceiveErrorDto;
 import com.xunmei.mediator.domain.dto.videoDiagnosis.VideoDiagnosisDetailInfoVo;
 import com.xunmei.mediator.domain.dto.videoDiagnosis.VideoDiagnosisDto;
 import com.xunmei.mediator.util.CheckDataUtil;
 import com.xunmei.mediator.util.RedisUtil;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.dto.protection.ReceiveErrorDto;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -293,15 +287,15 @@ public class VideoDiagnosisRecordServiceImpl extends ServiceImpl<VideoDiagnosisR
         }
 
         // TODO 25号版本先关闭视频类告警, 523版本通过 系统参数控制
-//        TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
-//            @Override
-//            public void afterCommit() {
-//                try {
-//                    iotAlarmDataService.dealVideoDiagnosisData(videoDiagnosis);
-//                } catch (Exception e) {
-//                    throw new RuntimeException(e);
-//                }
-//            }
-//        });
+        TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
+            @Override
+            public void afterCommit() {
+                try {
+                    iotAlarmDataService.dealVideoDiagnosisData(videoDiagnosis);
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        });
     }
 }

+ 9 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/dto/SysWorkTimeDto.java

@@ -1,9 +1,18 @@
 package com.xunmei.system.dto;
 
 import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 @Data
 public class SysWorkTimeDto extends SysWorkTime {
 //    private String OrgName;
+
+
+    @ApiModelProperty(value = "机构所属地区")
+    private String affiliatedArea;
+
+    @ApiModelProperty(value = "机构所属行社")
+    private String affiliatedBank;
+
 }

+ 26 - 14
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysDeviceServiceImpl.java

@@ -1,23 +1,28 @@
 package com.xunmei.system.service.impl;
 
-import java.io.IOException;
-import java.net.URLEncoder;
-import java.util.*;
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.nacos.common.utils.CollectionUtils;
-import com.xunmei.common.core.constant.Constants;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.DateUtils;
+import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.system.api.RemoteMediatorService;
 import com.xunmei.system.api.RemoteProtectionService;
 import com.xunmei.system.api.domain.SysDevice;
 import com.xunmei.system.api.domain.SysOrg;
-import com.xunmei.system.api.dto.*;
+import com.xunmei.system.api.dto.ProtectionDTO;
+import com.xunmei.system.api.dto.SysDeviceInnerListDto;
 import com.xunmei.system.api.vo.ProtectionVO;
+import com.xunmei.system.mapper.SysDeviceMapper;
 import com.xunmei.system.mapper.SysOrgMapper;
+import com.xunmei.system.service.ISysDeviceService;
+import com.xunmei.system.service.ISysOrgService;
 import com.xunmei.system.util.DeviceExport;
 import com.xunmei.system.vo.area.AccessType;
 import com.xunmei.system.vo.area.HostVO;
@@ -26,16 +31,14 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
-import com.xunmei.system.service.ISysOrgService;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.xunmei.common.core.web.page.TableDataInfo;
-import com.xunmei.system.mapper.SysDeviceMapper;
-import com.xunmei.system.service.ISysDeviceService;
 
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
 
 /**
  * 【请填写功能名称】Service业务层处理
@@ -124,7 +127,15 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
      */
     @Override
     public SysDevice selectSysDeviceById(Long id) {
-        return sysDeviceMapper.selectById(id);
+        SysDevice sysDevice = sysDeviceMapper.selectById(id);
+        if (ObjectUtil.equal(sysDevice.getDeviceType(), "1")) {
+            ProtectionVO byDeviceId = remoteProtectionService.getByDeviceId(id, SecurityConstants.INNER);
+            if (byDeviceId != null) {
+                sysDevice.setInBook(byDeviceId.getInBook());
+            }
+        }
+
+        return sysDevice;
     }
 
     @Override
@@ -287,6 +298,7 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
             protectionDTO.setOrgPath(sysOrg.getPath());
             protectionDTO.setOrgId(sysOrg.getId());
             protectionDTO.setAllHour(0);
+            protectionDTO.setInBook(sysDevice.getInBook());
             remoteProtectionService.addByDevice(protectionDTO, SecurityConstants.INNER);
         }
         SysDevice sysDevice1 = this.checkName(sysDevice.getOrgId(), sysDevice.getDeviceName());

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

@@ -126,6 +126,8 @@
     <select id="selectByPage" resultType="com.xunmei.system.dto.SysWorkTimeDto">
         SELECT
             t.*,
+            o.affiliated_bank as affiliatedBank,
+            o.affiliated_area as affiliatedArea,
             o.short_name as orgName
         FROM
             sys_work_time t
@@ -135,11 +137,13 @@
     <select id="selectNoWorkTimeByPage" resultType="com.xunmei.system.dto.SysWorkTimeDto">
         SELECT
         o1.short_name as orgName,
+        c.affiliated_bank as affiliatedBank,
+        c.affiliated_area as affiliatedArea,
         c.*
         FROM
             sys_org o1 LEFT JOIN
             (
-                select  t.*
+                select  t.*,o.affiliated_bank,o.affiliated_area
                 from sys_org o
                  left join sys_work_time t on t.org_id = o.id
                  ${ew.customSqlSegment}