nidapeng
2024-03-08 384370341c75c0a8ae371f307dffcc83b5258a43
整理
已修改6个文件
207 ■■■■ 文件已修改
server/dmvisit_admin/src/main/java/com/doumee/api/business/DeviceController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Device.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceEventServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDeviceServiceImpl.java 157 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/DeviceController.java
@@ -69,14 +69,14 @@
    @ApiOperation("分页查询")
    @PostMapping("/page")
    //@RequiresPermissions("business:device:query")
    @RequiresPermissions("business:device:query")
    public ApiResponse<PageData<Device>> findPage (@RequestBody PageWrap<Device> pageWrap) {
        return ApiResponse.success(deviceService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    //@RequiresPermissions("business:device:exportExcel")
    @RequiresPermissions("business:device:exportExcel")
    public void exportExcel (@RequestBody PageWrap<Device> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(Device.class).export(deviceService.findPage(pageWrap).getRecords(), "设备信息表", response);
    }
@@ -90,7 +90,7 @@
    @ApiOperation("获取门禁集合-提供给门禁组")
    @PostMapping("/getList")
    //@RequiresPermissions("business:device:query")
    @RequiresPermissions("business:device:query")
    public ApiResponse findList(@RequestBody Device device) {
        return ApiResponse.success(deviceService.findIdAndNameList(device));
    }
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Device.java
@@ -135,4 +135,31 @@
    @ExcelColumn(name="状态 0禁用 1启用")
    private Integer status;
    @ApiModelProperty(value = "门禁点区域名称")
    @ExcelColumn(name="门禁点区域名称")
    private String regionName;
    @ApiModelProperty(value = "门禁点区域路径名称")
    @ExcelColumn(name="门禁点区域路径名称")
    private String regionPathName;
    @ApiModelProperty(value = "门禁点编号")
    @ExcelColumn(name="门禁点编号")
    private String doorNo;
    @ApiModelProperty(value = "门禁点安装位置")
    @ExcelColumn(name="门禁点安装位置")
    private String installLocation;
    @ApiModelProperty(value = "门禁点唯一码")
    @ExcelColumn(name="门禁点唯一码")
    private String doorId;
    @ApiModelProperty(value = "门禁点名称")
    @ExcelColumn(name="门禁点名称")
    private String doorName;
}
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceEventServiceImpl.java
@@ -258,7 +258,7 @@
            queryWrapper.lambda().eq(DeviceEvent::getIssuingAuthority, pageWrap.getModel().getIssuingAuthority());
        }
        if (pageWrap.getModel().getName() != null) {
            queryWrapper.lambda().eq(DeviceEvent::getName, pageWrap.getModel().getName());
            queryWrapper.lambda().like(DeviceEvent::getName, pageWrap.getModel().getName());
        }
        if (pageWrap.getModel().getSex() != null) {
            queryWrapper.lambda().eq(DeviceEvent::getSex, pageWrap.getModel().getSex());
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java
@@ -105,7 +105,7 @@
    @Override
    public List<Device> findIdAndNameList(Device param) {
        LambdaQueryWrapper<Device> wrapper = new LambdaQueryWrapper<>(param);
        wrapper.select(Device::getId, Device::getName);
        wrapper.select(Device::getId, Device::getName, Device::getDoorName,Device::getRegionPathName, Device::getRegionName);
        if(null != param.getType() && null != param.getIsdeleted() && null != param.getHkStatus()) {
            wrapper.eq(Device::getType,param.getType())
                   .eq(Device::getIsdeleted,param.getIsdeleted())
@@ -143,7 +143,16 @@
            queryWrapper.lambda().eq(Device::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getName() != null) {
            queryWrapper.lambda().eq(Device::getName, pageWrap.getModel().getName());
            queryWrapper.lambda().like(Device::getName, pageWrap.getModel().getName());
        }
        if (pageWrap.getModel().getDoorName() != null) {
            queryWrapper.lambda().like(Device::getDoorName, pageWrap.getModel().getDoorName());
        }
        if (pageWrap.getModel().getRegionPathName() != null) {
            queryWrapper.lambda().like(Device::getRegionPathName, pageWrap.getModel().getRegionPathName());
        }
        if (pageWrap.getModel().getRegionName() != null) {
            queryWrapper.lambda().like(Device::getRegionName, pageWrap.getModel().getRegionName());
        }
        if (pageWrap.getModel().getHkId() != null) {
            queryWrapper.lambda().eq(Device::getHkId, pageWrap.getModel().getHkId());
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDeviceServiceImpl.java
@@ -52,38 +52,15 @@
            List<Device> deleteList = new ArrayList<>();
            List<Device> addList = new ArrayList<>();
            List<Device> editList = new ArrayList<>();
            List<AcsDeviceInfoResponse> allHkList = new ArrayList<>();
            Date date = new Date();
            //查询全部门禁设备数据
            List<Device> allList = deviceMapper.selectList(null);
            boolean hasNext = true;
            int curTotal = 0;
            int curPage = 1;
            while (hasNext){
                //分页遍历循环查询所有门禁设备数据
                param = new AcsDeviceListRequest();
                param.setPageNo(curPage);
                param.setPageSize(100);
                BaseResponse<AcsDeviceListResponse> response = HKService.acsDeviceList(param);
                if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                    throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~");
                }
                AcsDeviceListResponse r = response.getData();
                curTotal += 100;
                if(curTotal >= r.getTotal()){
                    hasNext = false;
                }
                if(r.getList() == null || r.getList().size()==0){
                    hasNext =false;
                }else{
                    allHkList.addAll(r.getList());
                }
                curPage++;
            }
            List<DoorsInfoResponse> allDoors = getAllDoorList();
            List<AcsDeviceInfoResponse> allHkList = getAllDeViceList();
            /**
             * 获取增删改数据集合
             */
            getDataChangeList(allList,allHkList,addList,editList,deleteList,date);
            getDataChangeList(allList,allDoors,allHkList,addList,editList,deleteList,date);
            if(deleteList.size()>0){
                //逻辑删除
                for(Device d : deleteList){
@@ -105,6 +82,36 @@
        }finally {
            Constants.DEALING_HK_SYNCDEVICE =false;
        }
    }
    private List<AcsDeviceInfoResponse> getAllDeViceList() {
        AcsDeviceListRequest param = new AcsDeviceListRequest();
        List<AcsDeviceInfoResponse> allHkList = new ArrayList<>();
        boolean hasNext = true;
        int curTotal = 0;
        int curPage = 1;
        while (hasNext){
            //分页遍历循环查询所有门禁设备数据
            param = new AcsDeviceListRequest();
            param.setPageNo(curPage);
            param.setPageSize(100);
            BaseResponse<AcsDeviceListResponse> response = HKService.acsDeviceList(param);
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~");
            }
            AcsDeviceListResponse r = response.getData();
            curTotal += 100;
            if(curTotal >= r.getTotal()){
                hasNext = false;
            }
            if(r.getList() == null || r.getList().size()==0){
                hasNext =false;
            }else{
                allHkList.addAll(r.getList());
            }
            curPage++;
        }
        return allHkList;
    }
    public  List<DoorsInfoResponse>  getAllDoorList(){
@@ -137,6 +144,68 @@
        return  allDoorList;
    }
    private void getDataChangeList(List<Device> allList, List<DoorsInfoResponse> hkDoorList , List<AcsDeviceInfoResponse> allHkList, List<Device> addList, List<Device> editList,List<Device> deleteList, Date date) {
        if(hkDoorList!=null && hkDoorList.size()>0){
            //获取海康全部门禁组数据
            for(DoorsInfoResponse device : hkDoorList){
                Device model = getExistedDoor(device,allList);
                if(model !=null){
                    //如果已存在,则更新数据
                    model =  initDoorDataByHkData(model,device,date,allHkList);
                    editList.add(model);
                }else{
                    //如果不存在,则新增数据
                    model = new Device();
                    model =  initDoorDataByHkData(model,device,date,allHkList);
                    addList.add(model);
                }
            }
        }
        //判断获取删除的门禁设备,逻辑删除
        getDeleteDoorList(allList,hkDoorList,deleteList,date);
    }
    private Device initDoorDataByHkData(Device model, DoorsInfoResponse door, Date date, List<AcsDeviceInfoResponse> allHkList) {
        AcsDeviceInfoResponse device = getDeviceByDoorid(door.getParentIndexCode(),allHkList);
        model.setIsdeleted(Constants.ZERO);
        model.setIp(device.getIp());
        model.setHkDate(date);
        model.setCreateDate(DateUtil.getISO8601DateByStr(device.getCreateTime()));
        model.setEditDate(DateUtil.getISO8601DateByStr(device.getUpdateTime()));
        model.setNo(device.getDevSerialNum());
        model.setHkId(device.getIndexCode());
        model.setName(device.getName());
        model.setHkStatus(Constants.ONE);
        model.setManufature(device.getManufacturer());
        model.setType(Constants.ZERO);
//        model.setNo(device.getDevSerialNum());
//        model.setChannelNo(getChannelNo(device.getIndexCode(),hkDoorList,model));
        model.setChannelNo(door.getChannelNo());
        model.setChannelInfo(door.getName());
        model.setResourceType(device.getResourceType());
        model.setDevTypeCode(device.getDevTypeCode());
        model.setDevTypeDesc(device.getDevTypeDesc());
        model.setManufature(device.getManufacturer());
        model.setPort(device.getPort());
        model.setRemark(JSONObject.toJSONString(device));
        model.setDoorId(door.getIndexCode());
        model.setDoorName(door.getName());
        model.setRegionName(door.getRegionName());
        model.setRegionPathName(door.getRegionPathName());
        model.setDoorNo(door.getDoorNo());
        return  model;
    }
    private AcsDeviceInfoResponse getDeviceByDoorid(String indexCode, List<AcsDeviceInfoResponse> allHkList ) {
        if(allHkList!=null && allHkList.size()>0){
            for(AcsDeviceInfoResponse info : allHkList){
                if(StringUtils.equals(indexCode,info.getIndexCode())){
                 return info;
                }
            }
        }
        return new AcsDeviceInfoResponse();
    }
    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){
            //获取海康全部门禁组数据
@@ -212,6 +281,17 @@
        return str;
    }
    private Device getExistedDoor(DoorsInfoResponse device, List<Device> allList) {
        if(allList.size()>0){
            for(Device r : allList){
                if(StringUtils.equals(r.getDoorId(), device.getIndexCode())){
                    //表示未删除
                    return  r;
                }
            }
        }
        return  null;
    }
    private Device getExistedDevice(AcsDeviceInfoResponse device, List<Device> allList) {
        if(allList.size()>0){
            for(Device r : allList){
@@ -235,7 +315,30 @@
            }
        }
    }
    private void getDeleteDoorList(List<Device> allList,  List<DoorsInfoResponse> allHkList,List<Device> deleteList ,Date date) {
        if(allList!=null && allList.size()>0){
            for(Device device : allList){
                if(isDeletedDoorDevice(device,allHkList)){
                    device.setIsdeleted(Constants.ONE);
                    device.setEditDate(date);
                    deleteList.add(device);
                }
            }
        }
    }
    private boolean isDeletedDoorDevice(Device device, List<DoorsInfoResponse> allHkList) {
        if(allHkList.size()>0){
            for(DoorsInfoResponse r : allHkList){
                if(StringUtils.equals(device.getDoorId(), r.getIndexCode())){
                    //表示未删除
                    return  false;
                }
            }
        }
        return  true;
    }
    private boolean isDeletedDevice(Device device, List<AcsDeviceInfoResponse> allHkList) {
        if(allHkList.size()>0){
            for(AcsDeviceInfoResponse r : allHkList){
@@ -248,5 +351,5 @@
        return  true;
    }
}
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java
@@ -228,7 +228,7 @@
            List<String> fIds = new ArrayList<>();
            if(result.getData()!=null){
                for(OrgUpdateFailureResponse r : result.getData()){
                    if(!r.getCode().equals("0x00052102")){
                    if(r.getCode().equals("0x00052102")){
                        //不存在的也算删除成功
                        fIds.add(r.getOrgIndexCode());//删除失败的数据集合
                    }