Quellcode durchsuchen

Merge remote-tracking branch 'origin/V0.0.2' into V0.0.2

jingyuanchao vor 2 Jahren
Ursprung
Commit
293de50c6f

+ 1 - 0
project_data/sql/0.0.2/quartz/quartz.sql

@@ -1,3 +1,4 @@
+delete from sys_job where job_id in(129,128,125);
 INSERT INTO `sys_job`(`job_id`, `job_name`, `job_group`, `invoke_target`, `cron_expression`, `misfire_policy`, `concurrent`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (129, '恶劣天气预警', 'DEFAULT', 'WeatherTask.getDataFromApi', '0 0 7,10,14,17 * * ? *', '1', '1', '0', '超级管理员', '2023-09-25 11:46:50', '', NULL);
 INSERT INTO `sys_job` VALUES (128, '履职临期提醒(除了每日的)', 'DEFAULT', 'CoreMessageSendTask.resumptionRemind', '0 0 0 * * ?', '1', '1', '0', '超级管理员', '2023-09-22 17:03:31', '', '2023-09-22 20:29:13');
 INSERT INTO `sys_job` VALUES (125, '消息发送管理(每日凌晨零点)', 'DEFAULT', 'CoreMessageSendTask.messageSendTask', '0 0 0 * * ? *', '1', '1', '0', '超级管理员', '2023-09-21 12:30:22', '超级管理员', '2023-09-22 19:04:39');

+ 18 - 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
@@ -187,6 +184,7 @@ INSERT INTO `sync_fjnx_org_business_relation` (`id`, `org_code`, `business_paren
 -- 新增演练任务推荐状态字典
 delete from sys_dict_type where dict_type='drill_task_rec_status';
 delete from sys_dict_data where dict_type='drill_task_rec_status';
+delete from sys_dict_data where dict_type='science_protection';
 INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark) VALUES ( '演练任务推荐状态', 'drill_task_rec_status', '0', '超级管理员', now(), '', 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 (0, '正常案例', '0', 'drill_task_rec_status', null, 'default', 'N', '0', '超级管理员', now(), '超级管理员', now(), 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 (0, '行社优秀案例', '1', 'drill_task_rec_status', null, 'default', 'N', '0', '超级管理员', now(), '超级管理员', now(), null);
@@ -194,6 +192,18 @@ INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_cla
 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, '地区优秀案例', '3', 'drill_task_rec_status', null, 'default', 'N', '0', '超级管理员', now(), '', 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 (0, '已推荐省级优秀案例', '4', 'drill_task_rec_status', null, 'default', 'N', '0', '超级管理员', now(), '', 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 (0, '省级优秀案例', '5', 'drill_task_rec_status', null, 'default', 'N', '0', '超级管理员', now(), '', 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, '淋浴式灭火器', '5', 'fire_fighting', null, 'default', 'N', '0', '超级管理员', now(), '', 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 (6, '防毒面具', '6', 'fire_fighting', null, 'default', 'N', '0', '超级管理员', now(), '', 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, '硬盘录像机', '0', 'science_protection', null, 'default', 'N', '0', '超级管理员', now(), '', 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, '报警主机', '1', 'science_protection', null, 'default', 'N', '0', '超级管理员', now(), '', 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, '摄像机', '2', 'science_protection', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+
+
 -- 新增演练任务状态字典
 delete from sys_dict_type where dict_type='drill_task_status';
 delete from sys_dict_data where dict_type='drill_task_status';
@@ -1430,6 +1440,8 @@ alter table core_drill_dictionary auto_increment = 10000;
 -- 用户导出管理人员
 delete from `sys_menu` where `menu_name` ='用户导出管理人员';
 INSERT INTO `sys_menu`(`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (00000000000000002358, '用户导出管理人员', 100, 9, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:user:exportManager', '1', NULL, NULL, '演示安全检查', '2023-09-27 16:10:58', '', NULL, '');
+-- 修改用户性别类型
+ALTER TABLE sys_user MODIFY gender VARCHAR(50);
 
 ALTER TABLE `core_protection` 
 MODIFY COLUMN `device_id` bigint NULL DEFAULT NULL COMMENT '设备ID' AFTER `id`,

+ 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;
+}

+ 3 - 3
soc-auth/pom.xml

@@ -58,7 +58,7 @@
             <artifactId>soc-common-swagger</artifactId>
             <version>0.0.1-SNAPSHOT</version>
         </dependency>
-<!--        <dependency>
+        <dependency>
             <groupId>log4j</groupId>
             <artifactId>log4j</artifactId>
             <version>1.2.16</version>
@@ -73,8 +73,8 @@
             <artifactId>unionAPI</artifactId>
             <version>1.0.0</version>
             <scope>system</scope>
-            <systemPath>${project.basedir}/src/main/resources/lib/newUnionAPI_fjnx.jar</systemPath>
-        </dependency>-->
+            <systemPath>${project.basedir}/src/main/resources/lib/fjnx.jar</systemPath>
+        </dependency>
     </dependencies>
 
     <build>

+ 5 - 59
soc-auth/src/main/java/com/xunmei/auth/service/FJNXLoginService.java

@@ -3,24 +3,17 @@ package com.xunmei.auth.service;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.http.HttpRequest;
 import cn.hutool.http.HttpUtil;
-import cn.hutool.json.JSON;
 import cn.hutool.json.JSONObject;
+import com.union.api.TUnionTransInfo;
+import com.union.api.UnionEsscAPI;
 import com.xunmei.auth.form.LoginBody;
-import com.xunmei.common.core.constant.Constants;
-import com.xunmei.common.core.constant.SecurityConstants;
-import com.xunmei.common.core.domain.R;
-import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.utils.StringUtils;
-import com.xunmei.system.api.RemoteUserService;
-import com.xunmei.system.api.model.LoginUser;
 import io.netty.util.internal.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.stereotype.Component;
 
-import javax.annotation.Resource;
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -241,7 +234,7 @@ public class FJNXLoginService{
         //对登录用户的密码进行加密
         UnionEsscAPI shortApi = new UnionEsscAPI(ipList,portList,5,appCode,appCode,"");
         String pass = StringUtil.toHexString(login.getPassword().getBytes());
-        TunionTransInfo transInfo = shortApi.unionAPIServiceE160(1,secretName,"",0,1,pass,"",1);
+        TUnionTransInfo transInfo = shortApi.unionAPIServiceE160(1,secretName,"",0,1,pass,"",1);
 
         if(ObjectUtil.isNull(transInfo)){
             return null;
@@ -253,7 +246,7 @@ public class FJNXLoginService{
             return null;
         }
 
-        if(ObjectUtil.isNull(transInfo.getResponseBoby())){
+        if(ObjectUtil.isNull(transInfo.getReturnBody())){
             logger.error("密码加密失败,数据为空");
             return null;
         }
@@ -263,7 +256,7 @@ public class FJNXLoginService{
 
         JSONObject object = new JSONObject();
         object.accumulate("loginName",login.getUsername());
-        object.accumulate("pass",transInfo.getResponseBoby().getData());
+        object.accumulate("pass",transInfo.getReturnBody().getData());
         object.accumulate("type",1);
         object.accumulate("systemCode",1);
         object.accumulate("passwordType",1);
@@ -290,51 +283,4 @@ public class FJNXLoginService{
         logger.error("登录失败,{}",jsonObject.getStr("message"));
         return  null;
     }
-
-/**
- * ----------------------------------------------------------------------------------------------------------------------
- * 以下代码需要在现场环境删除,且重新引入使用的变量和类
- * ---------------------------------------------------------------------------------------------------------------------
- */
-    /**
-     * 内部类只为代码不报错,打包前请删除,需要到内网引入响应的jar
-     */
-    //TODO
-    private class UnionEsscAPI {
-        public UnionEsscAPI(List<String> ipList, List<Integer> portList, int i, String appCode, String appCode1, String s) {
-        }
-
-        public TunionTransInfo unionAPIServiceE160(int i, String secretName, String s, int i1, int i2, String pass, String s1, int i3) {
-            return null;
-        }
-    }
-
-    /**
-     * 内部类只为代码不报错,打包前请删除,需要到内网引入响应的jar
-     */
-    //TODO
-    private class TunionTransInfo{
-
-        public int getIsSuccess() {
-            return  0;
-        }
-
-        public Object getResponseCode() {
-            return null;
-        }
-
-        public Object getResponseRemark() {
-            return null;
-        }
-
-        public ResponseBoby getResponseBoby() {
-            return null;
-        }
-
-        private class  ResponseBoby{
-            public Object getData(){
-                return null;
-            }
-        }
-    }
 }

BIN
soc-auth/src/main/resources/lib/fjnx.jar


+ 0 - 0
soc-auth/src/main/resources/lib/newUnionAPI_fjnx.jar


+ 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)));
     }