luowei vor 2 Jahren
Ursprung
Commit
19e2d970ba

+ 3 - 6
project_data/sql/0.0.2/soc/soc.sql

@@ -133,12 +133,9 @@ BEGIN
         ALTER TABLE `sync_fjnx_org_business_relation`
             ADD COLUMN `tree_show_parent_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '机构树上显示的父级编码' AFTER `business_parent_code`;
     END IF;
- IF  EXISTS( SELECT *
-      FROM INFORMATION_SCHEMA.COLUMNS
-      WHERE TABLE_NAME = 'core_protection'
-      AND COLUMN_NAME = 'device_id') THEN
-ALTER TABLE core_protection MODIFY device_id bigint
-END IF;
+
+ALTER TABLE core_protection MODIFY device_id bigint;
+
 
     IF NOT EXISTS(SELECT *
                   FROM information_schema.columns

+ 8 - 4
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteProtectionService.java

@@ -1,13 +1,13 @@
 package com.xunmei.system.api;
 
+import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.constant.ServiceNameConstants;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.dto.ProtectionDTO;
-import com.xunmei.system.api.factory.RemoteOrgFallbackFactory;
 import com.xunmei.system.api.factory.RemoteProtectionFallbackFactory;
+import com.xunmei.system.api.vo.ProtectionVO;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * @author :LuoWei
@@ -17,5 +17,9 @@ import org.springframework.web.bind.annotation.RequestBody;
 @FeignClient(contextId = "remoteProtectionService", value = ServiceNameConstants.CORE_SERVICE, fallbackFactory = RemoteProtectionFallbackFactory.class)
 public interface RemoteProtectionService {
     @PostMapping("/resumption/protection/addByDevice")
-    public AjaxResult addByDevice(@RequestBody ProtectionDTO editDto);
+    public AjaxResult addByDevice(@RequestBody ProtectionDTO editDto, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+    @GetMapping("/resumption/protection/getByDeviceId")
+    public ProtectionVO getByDeviceId(@RequestParam("deviceId")Long deviceId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+    @GetMapping("/resumption/protection/delByDeviceId")
+    public int delByDeviceId(@RequestParam("deviceId")Long deviceId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 }

+ 13 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteProtectionFallbackFactory.java

@@ -4,6 +4,7 @@ import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.RemoteProtectionService;
 import com.xunmei.system.api.dto.ProtectionDTO;
+import com.xunmei.system.api.vo.ProtectionVO;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
@@ -22,9 +23,20 @@ public class RemoteProtectionFallbackFactory implements FallbackFactory<RemotePr
         return new RemoteProtectionService(){
 
             @Override
-            public AjaxResult addByDevice(ProtectionDTO editDto) {
+            public AjaxResult addByDevice(ProtectionDTO editDto, String source) {
                 return null;
             }
+
+            @Override
+            public ProtectionVO getByDeviceId(Long deviceId, String source) {
+                return null;
+            }
+
+            @Override
+            public int delByDeviceId(Long deviceId, String source) {
+                return 0;
+            }
+
         };
     }
 }

+ 58 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/vo/ProtectionVO.java

@@ -0,0 +1,58 @@
+package com.xunmei.system.api.vo;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author :LuoWei
+ * @date : 2023/9/27
+ */
+@Data
+public class ProtectionVO {
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    /**
+     * 设备
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long deviceId;
+
+    /**
+     * 防区的唯一标识
+     */
+    private String code;
+
+
+    private String alarmHostCode;
+
+    /**
+     * 防区的名称
+     */
+    private String name;
+
+    /**
+     * 布防状态
+     */
+    private String status;
+
+    /**
+     * 布撤防时间
+     */
+    private Date statusUpdateTime;
+
+    private Integer allHour;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long orgId;
+
+    private String orgPath;
+
+    private String orgName;
+
+
+    private Integer deleted;
+}

+ 17 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ProtectionController.java

@@ -1,5 +1,6 @@
 package com.xunmei.core.resumption.controller;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.common.core.web.controller.BaseController;
 import com.xunmei.common.core.web.domain.AjaxResult;
@@ -12,6 +13,8 @@ import com.xunmei.core.resumption.dto.protection.ProtectionLogPageDto;
 import com.xunmei.core.resumption.dto.protection.ProtectionPageDto;
 import com.xunmei.core.resumption.service.IProtectionService;
 import com.xunmei.system.api.Eto.RoleConditionEto;
+import com.xunmei.system.api.dto.ProtectionDTO;
+import com.xunmei.system.api.vo.ProtectionVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -56,8 +59,20 @@ class ProtectionController extends BaseController {
     }
     @InnerAuth
     @PostMapping("/addByDevice")
-    public AjaxResult addByDevice(@RequestBody ProtectionEditDto editDto) {
-        return success(protectionService.edit(editDto));
+    public AjaxResult addByDevice(@RequestBody ProtectionDTO protectionDTO) {
+        ProtectionEditDto dto=new ProtectionEditDto();
+        BeanUtil.copyProperties(protectionDTO, dto);
+        return success(protectionService.edit(dto));
+    }
+    @InnerAuth
+    @GetMapping("/getByDeviceId")
+    public ProtectionVO getByDeviceId(Long deviceId){
+      return   protectionService.getByDeviceId(deviceId);
+    }
+    @InnerAuth
+    @GetMapping("/delByDeviceId")
+    public int delByDeviceId(Long deviceId){
+        return protectionService.delByDeviceId(deviceId);
     }
     @ApiOperation(value = "防区详情")
     @GetMapping("{id}")

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

@@ -6,7 +6,7 @@ import lombok.Data;
 @Data
 public class ProtectionEditDto {
     Long id;
-
+Long deviceId;
     /**
      * 所属机构
      */

+ 0 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/dto/protection/ProtectionPageDto.java

@@ -2,7 +2,6 @@ package com.xunmei.core.resumption.dto.protection;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.xunmei.common.core.web.domain.PageDto;
-import com.xunmei.core.resumption.domain.Protection;
 import com.xunmei.core.resumption.vo.protection.ProtectionPageVo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;

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

@@ -10,6 +10,7 @@ import com.xunmei.core.resumption.dto.protection.ProtectionEditDto;
 import com.xunmei.core.resumption.dto.protection.ProtectionLogPageDto;
 import com.xunmei.core.resumption.dto.protection.ProtectionPageDto;
 import com.xunmei.core.resumption.vo.protection.ProtectionLogPageVo;
+import com.xunmei.system.api.vo.ProtectionVO;
 
 import java.util.Date;
 import java.util.List;
@@ -31,9 +32,9 @@ public interface IProtectionService extends IService<Protection> {
     Protection get(Long id);
 
     Long edit(ProtectionEditDto dto);
-
+    ProtectionVO getByDeviceId(Long deviceId);
     boolean del(Long id);
-
+int delByDeviceId(Long deviceId);
     TableDataInfo history(ProtectionLogPageDto request);
 
     Date updateStatus(Long protectionId, String status);

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

@@ -6,11 +6,13 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 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.domain.panel.dto.PanelListDto;
 import com.xunmei.common.core.domain.panel.vo.PanelListVo;
+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.core.resumption.domain.Protection;
@@ -23,6 +25,7 @@ import com.xunmei.core.resumption.mapper.ProtectionMapper;
 import com.xunmei.core.resumption.service.IProtectionService;
 import com.xunmei.core.resumption.vo.protection.ProtectionLogPageVo;
 import com.xunmei.core.resumption.vo.protection.ProtectionPageVo;
+import com.xunmei.system.api.vo.ProtectionVO;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -100,10 +103,16 @@ public class ProtectionServiceImpl extends ServiceImpl<ProtectionMapper, Protect
         if (dto.getId() != null) {
             protection = getById(dto.getId());
             BeanUtil.copyProperties(dto, protection);
+            if (null!=dto.getDeviceId()){
+                protection.setAlarmHostCode(dto.getDeviceId());
+            }
             updateById(protection);
         } else {
             BeanUtil.copyProperties(dto, protection);
             protection.setStatus("2");
+            if (null!=dto.getDeviceId()){
+                protection.setAlarmHostCode(dto.getDeviceId());
+            }
             save(protection);
         }
 
@@ -112,6 +121,17 @@ public class ProtectionServiceImpl extends ServiceImpl<ProtectionMapper, Protect
     }
 
     @Override
+    public ProtectionVO getByDeviceId(Long deviceId) {
+        QueryWrapper queryWrapper=new QueryWrapper();
+        queryWrapper.eq("deleted",0);
+        queryWrapper.eq("device_id",deviceId);
+        Protection protection = baseMapper.selectOne(queryWrapper);
+        ProtectionVO protectionVO=new ProtectionVO();
+        BeanUtils.copyProperties(protection,protectionVO);
+        return protectionVO;
+    }
+
+    @Override
     public boolean del(Long id) {
         int count = baseMapper.update(null, new LambdaUpdateWrapper<Protection>()
                 .eq(Protection::getId, id)
@@ -119,6 +139,14 @@ public class ProtectionServiceImpl extends ServiceImpl<ProtectionMapper, Protect
         return count > 0;
     }
 
+    @Override
+    public int delByDeviceId(Long deviceId) {
+        int count =     baseMapper.update(null, new LambdaUpdateWrapper<Protection>()
+                .eq(Protection::getDeviceId, deviceId)
+                .set(Protection::getDeleted, 1));
+        return count;
+    }
+
 
     @Override
     public TableDataInfo history(ProtectionLogPageDto request) {

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

@@ -4,6 +4,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import com.alibaba.nacos.common.utils.CollectionUtils;
+import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
@@ -11,6 +12,7 @@ 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.ProtectionDTO;
+import com.xunmei.system.api.vo.ProtectionVO;
 import com.xunmei.system.mapper.SysOrgMapper;
 import com.xunmei.system.vo.area.AccessType;
 import com.xunmei.system.vo.area.HostVO;
@@ -202,7 +204,7 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
             protectionDTO.setOrgPath(sysOrg.getPath());
             protectionDTO.setAllHour(0);
             protectionDTO.setDeviceId(sysDevice.getId());
-            remoteProtectionService.addByDevice(protectionDTO);
+            remoteProtectionService.addByDevice(protectionDTO, SecurityConstants.INNER);
         }
         return insert;
     }
@@ -220,11 +222,17 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
         SysOrg sysOrg = orgService.selectSysOrgById(sysDevice.getOrgId());
         sysDevice.setOrgName(sysOrg.getShortName());
         if (sysDevice.getDeviceType().equals("1")){
+            ProtectionVO byDeviceId = remoteProtectionService.getByDeviceId(sysDevice.getId(), SecurityConstants.INNER);
             ProtectionDTO protectionDTO=new ProtectionDTO();
-            protectionDTO.setId(sysDevice.getId());
+            if (null!=byDeviceId){
+                protectionDTO.setId(byDeviceId.getId());
+            }
+            protectionDTO.setDeviceId(sysDevice.getId());
             protectionDTO.setName(sysDevice.getDeviceName());
             protectionDTO.setOrgPath(sysOrg.getPath());
-            remoteProtectionService.addByDevice(protectionDTO);
+            protectionDTO.setOrgId(sysOrg.getId());
+            protectionDTO.setAllHour(0);
+            remoteProtectionService.addByDevice(protectionDTO,SecurityConstants.INNER);
         }
         return sysDeviceMapper.updateById(sysDevice);
     }
@@ -248,6 +256,9 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
                 throw new ServiceException("主机" + sysDevice.getDeviceName() + "已关联摄像头,不能删除");
             }
         }
+        for (int i=0;i<ids.length;i++){
+            remoteProtectionService.delByDeviceId(ids[i],SecurityConstants.INNER);
+        }
         return sysDeviceMapper.deleteBatchIds(Arrays.asList((ids)));
     }