jiangping
2023-12-06 69676cf96655ea6235a5e228c18783916d4edb55
海康接口对接开发
已添加4个文件
已删除6个文件
已修改16个文件
已重命名1个文件
941 ■■■■ 文件已修改
.idea/libraries/Maven__commons_net_commons_net_3_8_0.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/DoorRoleController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PrivilegeGroupInfoResponse.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PrivilegeGroupListResponse.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PrivilegeGroupResponse.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/DeviceRoleMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/DoorRoleMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/ParksMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Cars.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Company.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DeviceRole.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DoorRole.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Empower.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/MemberCard.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ParkBook.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Parks.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/DoorRoleService.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/HkSyncService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DoorRoleServiceImpl.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDeviceServiceImpl.java 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPrivilegeServiceImpl.java 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/Maven__commons_net_commons_net_3_8_0.xml
ÎļþÒÑɾ³ý
server/dmvisit_admin/src/main/java/com/doumee/api/business/DoorRoleController.java
@@ -6,8 +6,6 @@
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageWrap;
import com.doumee.core.model.PageData;
import com.doumee.dao.business.model.DoorRole;
import com.doumee.service.business.DoorRoleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;    
server/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java
@@ -4,6 +4,7 @@
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest;
import com.doumee.core.haikang.model.param.request.ParkListRequest;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageData;
@@ -34,12 +35,20 @@
    private HkSyncService hkSyncService;
    @PreventRepeat
    @ApiOperation("全量同步门禁设备接口")
    @ApiOperation("【海康】全量同步门禁设备接口")
    @PostMapping("/getDevices")
    @RequiresPermissions("business:hksync:device")
    public ApiResponse getDevices(@RequestBody AcsDeviceListRequest param) {
        hkSyncService.syncHkDevices(param);
        return ApiResponse.success(null);
        String result = hkSyncService.syncHkDevices(param);
        return ApiResponse.success(result);
    }
    @PreventRepeat
    @ApiOperation("【海康】全量同步停车库接口")
    @PostMapping("/getDevices")
    @RequiresPermissions("business:hksync:park")
    public ApiResponse getDevices(@RequestBody ParkListRequest param) {
        String result = hkSyncService.syncHkParks(param);
        return ApiResponse.success(result);
    }
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PrivilegeGroupInfoResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.core.haikang.model.param.respose;
import lombok.Data;
@Data
public class PrivilegeGroupInfoResponse {
    private String  privilegeGroupId;//    string    False    æƒé™ç»„ID, ç”¨äºŽè®¿å®¢ç™»è®°æ—¶å¯¹è®¿å®¢æŽˆæƒ
    private String privilegeGroupName;//    string    False    æƒé™ç»„名称
    private String remark;//    string    False    æè¿°
    private Integer isDefault    ;//number    False    æ˜¯å¦æ˜¯é»˜è®¤æƒé™ç»„0: æ˜¯1: å¦
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PrivilegeGroupListResponse.java
@@ -8,8 +8,8 @@
public class PrivilegeGroupListResponse {
    private String  privilegeGroupId;//    string    False    æƒé™ç»„ID, ç”¨äºŽè®¿å®¢ç™»è®°æ—¶å¯¹è®¿å®¢æŽˆæƒ
    private String privilegeGroupName;//    string    False    æƒé™ç»„名称
    private String remark;//    string    False    æè¿°
    private Integer isDefault    ;//number    False    æ˜¯å¦æ˜¯é»˜è®¤æƒé™ç»„0: æ˜¯1: å¦
    private int total;//    number    False    æŸ¥è¯¢æ•°æ®è®°å½•总数
    private int pageSize;//    number    False    æ¯é¡µè®°å½•总数
    private int pageNo    ;// number    False    å½“前页码
    private List<PrivilegeGroupInfoResponse> list    ;// object[]    False    æƒé™ç»„对象列表
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PrivilegeGroupResponse.java
ÎļþÒÑɾ³ý
server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -403,13 +403,13 @@
     *访客权限组列表查询(分页)
     * @return
     */
    public  BaseResponse<PrivilegeGroupResponse>   privilegeGroup(PrivilegeGroupRequest param){
    public  BaseResponse<PrivilegeGroupListResponse>   privilegeGroup(PrivilegeGroupRequest param){
        log.error("【海康访客权限组列表查询】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.privilegeGroup(JSONObject.toJSONString(param));
            TypeReference typeReference =
                    new TypeReference< BaseResponse<PrivilegeGroupResponse> >(){};
            BaseResponse<PrivilegeGroupResponse>   result = JSONObject.parseObject(res, typeReference.getType());
                    new TypeReference< BaseResponse<PrivilegeGroupListResponse> >(){};
            BaseResponse<PrivilegeGroupListResponse>   result = JSONObject.parseObject(res, typeReference.getType());
            log.error("【海康访客权限组列表查询】================成功====\n"+res);
            return  result;
        }catch (Exception e){
server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -31,6 +31,11 @@
         String activity_looknum = "looknum";
         String activity_signup = "signup";
    }
    public interface DOOR_ROLE_TYPE{
         int lw = 0;
         int fk = 1;
         int nb = 2;
    }
    public static final String SUCCESS_STR = "SUCCESS" ;
    //开门时间有效期(分钟)
server/dmvisit_service/src/main/java/com/doumee/dao/business/DeviceRoleMapper.java
@@ -3,10 +3,13 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.DeviceRole;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2023/11/30 15:33
 */
public interface DeviceRoleMapper extends BaseMapper<DeviceRole> {
    void insertBatchSomeColumn(List<DeviceRole> addList);
}
server/dmvisit_service/src/main/java/com/doumee/dao/business/DoorRoleMapper.java
ÎļþÒÑɾ³ý
server/dmvisit_service/src/main/java/com/doumee/dao/business/ParksMapper.java
@@ -3,10 +3,13 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.Parks;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2023/11/30 15:33
 */
public interface ParksMapper extends BaseMapper<Parks> {
    void insertBatchSomeColumn(List<Parks> addList);
}
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Cars.java
@@ -53,7 +53,7 @@
    @ApiModelProperty(value = "预约标识", example = "1")
    @ExcelColumn(name="预约标识")
    private Integer hkId;
    private String hkId;
    @ApiModelProperty(value = "排序码", example = "1")
    @ExcelColumn(name="排序码")
@@ -69,7 +69,7 @@
    @ApiModelProperty(value = "海康标识", example = "1")
    @ExcelColumn(name="海康标识")
    private Integer hkId2;
    private String hkId2;
    @ApiModelProperty(value = "海康同步状态 0未同步 1已同步", example = "1")
    @ExcelColumn(name="海康同步状态 0未同步 1已同步")
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Company.java
@@ -104,7 +104,7 @@
    @ApiModelProperty(value = "海康标识")
    @ExcelColumn(name="海康标识")
    private Integer hkId;
    private String hkId;
    @ApiModelProperty(value = "海康同步状态 0未同步 1已同步")
    @ExcelColumn(name="海康同步状态 0未同步 1已同步")
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DeviceRole.java
@@ -55,13 +55,13 @@
    @ExcelColumn(name="名称")
    private String name;
    @ApiModelProperty(value = "是否默认 0否 1是", example = "1")
    @ExcelColumn(name="是否默认 0否 1是")
    @ApiModelProperty(value = "是否是默认权限组0: æ˜¯1: å¦", example = "1")
    @ExcelColumn(name="是否是默认权限组0: æ˜¯1: å¦")
    private Integer isDefault;
    @ApiModelProperty(value = "类型 0劳务访客 1普通访客 2内部人员")
    @ExcelColumn(name="类型 0劳务访客 1普通访客 2内部人员")
    private String type;
    private Integer type;
    @ApiModelProperty(value = "可使用门禁编码集合,多个英文逗号隔开")
    @ExcelColumn(name="可使用门禁编码集合,多个英文逗号隔开")
@@ -83,4 +83,18 @@
    @ExcelColumn(name="状态 0禁用 1启用")
    private Integer status;
    @ApiModelProperty(value = "海康标识", example = "1")
    @ExcelColumn(name="海康标识")
    private String hkId;
    @ApiModelProperty(value = "海康同步状态 0未同步 1已同步", example = "1")
    @ExcelColumn(name="海康同步状态 0未同步 1已同步")
    private Integer hkStatus;
    @ApiModelProperty(value = "海康最近同步时间")
    @ExcelColumn(name="海康最近同步时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date hkDate;
}
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DoorRole.java
ÎļþÒÑɾ³ý
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Empower.java
@@ -53,7 +53,7 @@
    @ApiModelProperty(value = "预约标识", example = "1")
    @ExcelColumn(name="预约标识")
    private Integer hkId;
    private String hkId;
    @ApiModelProperty(value = "排序码", example = "1")
    @ExcelColumn(name="排序码")
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
@@ -134,7 +134,7 @@
    @ApiModelProperty(value = "海康标识", example = "1")
    @ExcelColumn(name="海康标识")
    private Integer hkId;
    private String hkId;
    @ApiModelProperty(value = "海康同步状态 0未同步 1已同步 2同步失败 ", example = "1")
    @ExcelColumn(name="海康同步状态 0未同步 1已同步 2同步失败")
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/MemberCard.java
@@ -65,7 +65,7 @@
    @ApiModelProperty(value = "海康标识", example = "1")
    @ExcelColumn(name="海康标识")
    private Integer hkId;
    private String hkId;
    @ApiModelProperty(value = "海康同步状态 0未同步 1已同步", example = "1")
    @ExcelColumn(name="海康同步状态 0未同步 1已同步")
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ParkBook.java
@@ -53,7 +53,7 @@
    @ApiModelProperty(value = "预约标识", example = "1")
    @ExcelColumn(name="预约标识")
    private Integer hkId;
    private String hkId;
    @ApiModelProperty(value = "排序码", example = "1")
    @ExcelColumn(name="排序码")
@@ -95,7 +95,7 @@
    @ApiModelProperty(value = "海康标识", example = "1")
    @ExcelColumn(name="海康标识")
    private Integer hkId2;
    private String hkId2;
    @ApiModelProperty(value = "海康同步状态 0待下发 1下发成功 2下发失败 3取消下发", example = "1")
    @ExcelColumn(name="海康同步状态 0待下发 1下发成功 2下发失败 3取消下发")
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Parks.java
@@ -53,11 +53,11 @@
    @ApiModelProperty(value = "题目")
    @ExcelColumn(name="题目")
    private String title;
    private String name;
    @ApiModelProperty(value = "海康标识", example = "1")
    @ExcelColumn(name="海康标识")
    private Integer hkId;
    private String hkId;
    @ApiModelProperty(value = "海康同步状态 0未同步 1已同步", example = "1")
    @ExcelColumn(name="海康同步状态 0未同步 1已同步")
server/dmvisit_service/src/main/java/com/doumee/service/business/DoorRoleService.java
ÎļþÒÑɾ³ý
server/dmvisit_service/src/main/java/com/doumee/service/business/HkSyncService.java
@@ -1,6 +1,8 @@
package com.doumee.service.business;
import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest;
import com.doumee.core.haikang.model.param.request.ParkListRequest;
import com.doumee.core.haikang.model.param.request.PrivilegeGroupRequest;
/**
 * åœè½¦åœºäº‹ä»¶æŽ¨é€è®°å½•表Service定义
@@ -8,5 +10,25 @@
 * @date 2023/11/30 15:33
 */
public interface HkSyncService {
    /**
     * åŒæ­¥æµ·åº·é—¨ç¦è®¾å¤‡
     * @param param
     * @return
     */
    String syncHkDevices(AcsDeviceListRequest param);
    /**
     * åŒæ­¥æµ·åº·åœè½¦åº“
     * @param param
     * @return
     */
    String syncHkParks(ParkListRequest param);
    /**
     * åŒæ­¥æµ·åº·è®¿å®¢æƒé™ç»„
     * @param param
     * @return
     */
    String syncPrivilege(PrivilegeGroupRequest param);
}
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DoorRoleServiceImpl.java
ÎļþÒÑɾ³ý
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package com.doumee.service.business.impl.hksync;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest;
import com.doumee.core.haikang.model.param.request.ParkListRequest;
import com.doumee.core.haikang.model.param.request.PrivilegeGroupRequest;
import com.doumee.core.haikang.model.param.respose.AcsDeviceInfoResponse;
import com.doumee.core.haikang.model.param.respose.AcsDeviceListResponse;
import com.doumee.core.haikang.model.param.respose.ParkListResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.DeviceMapper;
import com.doumee.dao.business.ParksMapper;
import com.doumee.dao.business.model.Device;
import com.doumee.dao.business.model.Parks;
import com.doumee.service.business.HkSyncService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * è®¾å¤‡ä¿¡æ¯è¡¨Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2023/11/30 15:33
 */
@Service
public class HkSyncBaseServiceImpl implements HkSyncService {
    @Autowired
    public HKService hkService;
    /**
     * åŒæ­¥æµ·åº·åœè½¦åº“数据
     * @param param
     * @return
     */
    @Override
//    @Async
    public   String syncHkParks(ParkListRequest param){
        return null;
    }
    /**
     * åŒæ­¥æµ·åº·é—¨ç¦è®¾å¤‡æ•°æ®
     * @param param
     * @return
     */
    @Override
//    @Async
    public String syncHkDevices(AcsDeviceListRequest param){
        return null;
    }
    @Override
//    @Async
    public String syncPrivilege(PrivilegeGroupRequest param){
        return null;
    }
}
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDeviceServiceImpl.java
ÎļþÃû´Ó server/dmvisit_service/src/main/java/com/doumee/service/business/impl/HkSyncServiceImpl.java ÐÞ¸Ä
@@ -1,32 +1,25 @@
package com.doumee.service.business.impl;
package com.doumee.service.business.impl.hksync;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest;
import com.doumee.core.haikang.model.param.request.ParkListRequest;
import com.doumee.core.haikang.model.param.respose.AcsDeviceInfoResponse;
import com.doumee.core.haikang.model.param.respose.AcsDeviceListResponse;
import com.doumee.core.haikang.model.param.respose.ParkListResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.DeviceMapper;
import com.doumee.dao.business.ParksMapper;
import com.doumee.dao.business.model.Device;
import com.doumee.service.business.DeviceService;
import com.doumee.service.business.HkSyncService;
import com.doumee.dao.business.model.Parks;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -37,13 +30,16 @@
 * @date 2023/11/30 15:33
 */
@Service
public class HkSyncServiceImpl implements HkSyncService {
public class HkSyncDeviceServiceImpl extends HkSyncBaseServiceImpl {
    @Autowired
    private DeviceMapper deviceMapper;
    @Autowired
    private HKService hkService;
    /**
     * åŒæ­¥æµ·åº·é—¨ç¦è®¾å¤‡æ•°æ®
     * @param param
     * @return
     */
    @Override
//    @Async
    public String syncHkDevices(AcsDeviceListRequest param){
@@ -56,10 +52,11 @@
        List<Device> allList = deviceMapper.selectList(null);
        boolean hasNext = true;
        int curTotal = 0;
        int curPage = 1;
        while (hasNext){
            //分页遍历循环查询所有门禁设备数据
            param = new AcsDeviceListRequest();
            param.setPageNo(1);
            param.setPageNo(curPage);
            param.setPageSize(10000);
            BaseResponse<AcsDeviceListResponse> response = hkService.acsDeviceList(param);
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
@@ -70,11 +67,17 @@
            if(curTotal >= r.getTotal()){
                hasNext = false;
            }
            List<AcsDeviceInfoResponse> tlist = r.getList();
            if(r.getList() == null || r.getList().size()==0){
                hasNext =false;
            }else{
                allHkList.addAll(r.getList());
            }
            curPage++;
        }
        //判断获取删除的门禁设备,逻辑删除
        getAddAndEditList(allList,allHkList,addList,editList,date);
        getDeleteList(allList,allHkList,deleteList,date);
        /**
         * èŽ·å–å¢žåˆ æ”¹æ•°æ®é›†åˆ
         */
        getDataChangeList(allList,allHkList,addList,editList,deleteList,date);
        if(deleteList.size()>0){
            //逻辑删除
            for(Device d : deleteList){
@@ -89,25 +92,27 @@
                deviceMapper.updateById(d);
            }
        }
        return "同步门禁数据:新增【"+addList.size()+"】条,更新【"+editList.size()+"】条,删除【"+deleteList.size()+"】条";
        return "同步数据:新增【"+addList.size()+"】条,更新【"+editList.size()+"】条,删除【"+deleteList.size()+"】条";
    }
    private void getAddAndEditList(List<Device> allList, List<AcsDeviceInfoResponse> allHkList, List<Device> addList, List<Device> editList, Date date) {
    private void getDataChangeList(List<Device> allList, List<AcsDeviceInfoResponse> allHkList, List<Device> addList, List<Device> editList,List<Device> deleteList, Date date) {
        if(allHkList!=null && allHkList.size()>0){
            for(AcsDeviceInfoResponse device : allHkList){
                Device model = getExistedDevice(device,allList);
                if(model !=null){
                    //如果已存在,则更新数据
                    model =  initDeviceByHkData(model,device,date);
                    model =  initDataByHkData(model,device,date);
                    editList.add(model);
                }else{
                    //如果不存在,则新增数据
                    model = new Device();
                    model =  initDeviceByHkData(model,device,date);
                    model =  initDataByHkData(model,device,date);
                    addList.add(model);
                }
            }
        }
        //判断获取删除的门禁设备,逻辑删除
        getDeleteList(allList,allHkList,deleteList,date);
    }
    /**
@@ -117,7 +122,7 @@
     * @param date
     * @return
     */
    private Device initDeviceByHkData(Device model, AcsDeviceInfoResponse device,Date date) {
    private Device initDataByHkData(Device model, AcsDeviceInfoResponse device,Date date) {
        model.setIsdeleted(Constants.ZERO);
        model.setIp(device.getIp());
        model.setHkDate(date);
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,152 @@
package com.doumee.service.business.impl.hksync;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest;
import com.doumee.core.haikang.model.param.request.ParkListRequest;
import com.doumee.core.haikang.model.param.respose.AcsDeviceInfoResponse;
import com.doumee.core.haikang.model.param.respose.AcsDeviceListResponse;
import com.doumee.core.haikang.model.param.respose.ParkListResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.DeviceMapper;
import com.doumee.dao.business.ParksMapper;
import com.doumee.dao.business.model.Device;
import com.doumee.dao.business.model.Parks;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * æµ·åº·åœè½¦åº“同步Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2023/11/30 15:33
 */
@Service
public class HkSyncParkServiceImpl extends HkSyncBaseServiceImpl {
    @Autowired
    private ParksMapper parksMapper;
    /**
     * åŒæ­¥æµ·åº·åœè½¦åº“数据
     * @param param
     * @return
     */
    @Override
//    @Async
    public   String syncHkParks(ParkListRequest param){
        List<Parks> deleteList = new ArrayList<>();
        List<Parks> addList = new ArrayList<>();
        List<Parks> editList = new ArrayList<>();
        Date date = new Date();
        //查询全部当前数据
        List<Parks> allList = parksMapper.selectList(null);
            //分页遍历循环查询所有门禁设备数据
        param = new ParkListRequest();
        BaseResponse<List<ParkListResponse>> response = hkService.parkList(param);
        if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~");
        }
        List<ParkListResponse> allHkList = response.getData();
         // èŽ·å–å¢žåˆ æ”¹æ•°æ®é›†åˆ
        getDataChangeList(allList,allHkList,addList,editList,deleteList,date);
        if(deleteList.size()>0){
            //逻辑删除
            for(Parks d : deleteList){
                parksMapper.updateById(d);
            }
        }
        if(addList.size()>0){
            parksMapper.insertBatchSomeColumn(addList);
        }
        if(editList.size()>0){
            for(Parks d : editList){
                parksMapper.updateById(d);
            }
        }
        return "同步数据:新增【"+addList.size()+"】条,更新【"+editList.size()+"】条,删除【"+deleteList.size()+"】条";
    }
    private void getDataChangeList(List<Parks> allList, List<ParkListResponse> allHkList, List<Parks> addList, List<Parks> editList,List<Parks> deleteList, Date date) {
        if(allHkList!=null && allHkList.size()>0){
            for(ParkListResponse device : allHkList){
                Parks model = getExistedData(device,allList);
                if(model !=null){
                    //如果已存在,则更新数据
                    model =  initModelByHkData(model,device,date);
                    editList.add(model);
                }else{
                    //如果不存在,则新增数据
                    model = new Parks();
                    model =  initModelByHkData(model,device,date);
                    addList.add(model);
                }
            }
        }
        //判断获取删除的门禁设备,逻辑删除
        getDeleteList(allList,allHkList,deleteList,date);
    }
    /**
     * åˆå§‹åŒ–海康入库数据
     * @param model
     * @param device
     * @param date
     * @return
     */
    private Parks initModelByHkData(Parks model, ParkListResponse device,Date date) {
        model.setIsdeleted(Constants.ZERO);
        model.setName(device.getParkName());
        model.setHkDate(date);
        model.setCreateDate(DateUtil.StringToDate2(device.getCreateTime()));
        model.setEditDate(DateUtil.StringToDate2(device.getUpdateTime()));
        model.setHkId(device.getParkIndexCode());
        model.setHkStatus(Constants.ONE);
        return  model;
    }
    private Parks getExistedData(ParkListResponse data, List<Parks> allList) {
        if(allList.size()>0){
            for(Parks r : allList){
                if(StringUtils.equals(r.getHkId(), data.getParkIndexCode())){
                    //表示未删除
                    return  r;
                }
            }
        }
        return  null;
    }
    private void getDeleteList(List<Parks> allList, List<ParkListResponse> allHkList,List<Parks> deleteList ,Date date) {
        if(allList!=null && allList.size()>0){
            for(Parks data : allList){
                if(isDeletedDevice(data,allHkList)){
                    data.setIsdeleted(Constants.ONE);
                    data.setEditDate(date);
                    deleteList.add(data);
                }
            }
        }
    }
    private boolean isDeletedDevice(Parks device, List<ParkListResponse> allHkList) {
        if(allHkList.size()>0){
            for(ParkListResponse r : allHkList){
                if(StringUtils.equals(device.getHkId(), r.getParkIndexCode())){
                    //表示未删除
                    return  false;
                }
            }
        }
        return  true;
    }
}
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPrivilegeServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,173 @@
package com.doumee.service.business.impl.hksync;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.PrivilegeGroupRequest;
import com.doumee.core.haikang.model.param.respose.AcsDeviceInfoResponse;
import com.doumee.core.haikang.model.param.respose.PrivilegeGroupInfoResponse;
import com.doumee.core.haikang.model.param.respose.PrivilegeGroupListResponse;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.DeviceRoleMapper;
import com.doumee.dao.business.model.Device;
import com.doumee.dao.business.model.DeviceRole;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * è®¿å®¢æƒé™ç»„信息表Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2023/11/30 15:33
 */
@Service
public class HkSyncPrivilegeServiceImpl extends HkSyncBaseServiceImpl {
    @Autowired
    private DeviceRoleMapper DeviceRoleMapper;
    /**
     * åŒæ­¥æµ·åº·è®¿å®¢ç»„权限数据
     * @param param
     * @return
     */
    @Override
//    @Async
    public String syncPrivilege(PrivilegeGroupRequest param){
        List<DeviceRole> deleteList = new ArrayList<>();
        List<DeviceRole> addList = new ArrayList<>();
        List<DeviceRole> editList = new ArrayList<>();
        List<PrivilegeGroupInfoResponse> allHkList = new ArrayList<>();
        Date date = new Date();
        //查询全部现有数据,只管理同步 è®¿å®¢ç»„
        List<Integer> types = new ArrayList<>();
        types.add(Constants.DOOR_ROLE_TYPE.fk);
        types.add(Constants.DOOR_ROLE_TYPE.lw);
        List<DeviceRole> allList = DeviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda().in(DeviceRole::getType,types));
        boolean hasNext = true;
        int curTotal = 0;
        int curPage = 1;
        while (hasNext){
            //分页遍历循环查询所有门禁设备数据
            param = new PrivilegeGroupRequest();
            param.setPageNo(curPage);
            param.setPageSize(10000);
            BaseResponse<PrivilegeGroupListResponse> response = hkService.privilegeGroup(param);
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~");
            }
            PrivilegeGroupListResponse r = response.getData();
            curTotal += 10000;
            if(curTotal >= r.getTotal()){
                hasNext = false;
            }
            if(r.getList() == null || r.getList().size()==0){
                hasNext =false;
            }else{
                allHkList.addAll(r.getList());
            }
            curPage ++;
        }
        /**
         * èŽ·å–å¢žåˆ æ”¹æ•°æ®é›†åˆ
         */
        getDataChangeList(allList,allHkList,addList,editList,deleteList,date);
        if(deleteList.size()>0){
            //逻辑删除
            for(DeviceRole d : deleteList){
                DeviceRoleMapper.updateById(d);
            }
        }
        if(addList.size()>0){
            DeviceRoleMapper.insertBatchSomeColumn(addList);
        }
        if(editList.size()>0){
            for(DeviceRole d : editList){
                DeviceRoleMapper.updateById(d);
            }
        }
        return "同步数据:新增【"+addList.size()+"】条,更新【"+editList.size()+"】条,删除【"+deleteList.size()+"】条";
    }
    private void getDataChangeList(List<DeviceRole> allList, List<PrivilegeGroupInfoResponse> allHkList, List<DeviceRole> addList, List<DeviceRole> editList,List<DeviceRole> deleteList, Date date) {
        if(allHkList!=null && allHkList.size()>0){
            for(PrivilegeGroupInfoResponse device : allHkList){
                DeviceRole model = getExistedData(device,allList);
                if(model !=null){
                    //如果已存在,则更新数据
                    model =  initDataByHkData(model,device,date);
                    editList.add(model);
                }else{
                    //如果不存在,则新增数据
                    model = new DeviceRole();
                    model =  initDataByHkData(model,device,date);
                    addList.add(model);
                }
            }
        }
        //判断获取删除的门禁设备,逻辑删除
        getDeleteList(allList,allHkList,deleteList,date);
    }
    /**
     * åˆå§‹åŒ–海康入库数据
     * @param model
     * @param device
     * @param date
     * @return
     */
    private DeviceRole initDataByHkData(DeviceRole model, PrivilegeGroupInfoResponse device,Date date) {
        model.setIsdeleted(Constants.ZERO);
        model.setHkId(device.getPrivilegeGroupId());
        model.setName(device.getPrivilegeGroupName());
        model.setHkStatus(Constants.ONE);
        model.setIsdeleted(Constants.ONE);
        model.setIsDefault(device.getIsDefault());
        model.setType(Constants.ZERO);
        return  model;
    }
    private DeviceRole getExistedData(PrivilegeGroupInfoResponse device, List<DeviceRole> allList) {
        if(allList.size()>0){
            for(DeviceRole r : allList){
                if(StringUtils.equals(r.getHkId(), device.getPrivilegeGroupId())){
                    //表示未删除
                    return  r;
                }
            }
        }
        return  null;
    }
    private void getDeleteList(List<DeviceRole> allList, List<PrivilegeGroupInfoResponse> allHkList,List<DeviceRole> deleteList ,Date date) {
        if(allList!=null && allList.size()>0){
            for(DeviceRole device : allList){
                if(isDeletedData(device,allHkList)){
                    device.setIsdeleted(Constants.ONE);
                    device.setEditDate(date);
                    deleteList.add(device);
                }
            }
        }
    }
    private boolean isDeletedData(DeviceRole device, List<PrivilegeGroupInfoResponse> allHkList) {
        if(allHkList.size()>0){
            for(PrivilegeGroupInfoResponse r : allHkList){
                if(StringUtils.equals(device.getHkId(), r.getPrivilegeGroupId())){
                    //表示未删除
                    return  false;
                }
            }
        }
        return  true;
    }
}