jiangping
2024-01-09 d7e663d304a2ccb565a24362b116ddaa9da9941a
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
@@ -57,20 +57,88 @@
               return;
           }
           for(Empower c : list){
               AuthItemListRequest param = new AuthItemListRequest();
               TaskPersonDetailRequest param = new TaskPersonDetailRequest();
               param.setPageNo(1);
               param.setPageSize(100);
               param.setPersonIds(new ArrayList<>());
               AuthItemListPersonRequest p = new AuthItemListPersonRequest();
               p.setPersonIds(c.getMemberHkId());
               param.getPersonIds().add(p);
//               param.setPersonIds(new ArrayList<>());
               param.setPersonIds(new String[]{c.getMemberHkId()});
               param.setTaskId(c.getHkId());
               TaskDataAdditionResourceRequest rec = new TaskDataAdditionResourceRequest();
               rec.setResourceIndexCode(c.getDeviceIndexCode());
               rec.setResourceType(c.getDeviceType());
               rec.setChannelNos(c.getDeviceChannelNo().split(","));
               param.setResourceInfos(rec);
//               rec.setChannelNos(c.getDeviceChannelNo().split(","));
               param.setResourceInfo(rec);
               //查询下发状态
               BaseResponse<TaskPersonDetailListResponse> response = HKService.taskPersoDetail(param);
               if(response!=null
                       && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)
                       && response.getData()!=null
                       && response.getData().getList() != null
                       && response.getData().getList().size()>0 ){
                   TaskPersonDetailResponse model = response.getData().getList().get(0);
                   if(model != null && StringUtils.equals(model.getPersondownloadResult(),"0")){
                       //更新已完成下载任务
                       String remark = "";
                       String cardInfo = "卡片下发失败";
                       TaskPersonDetailCardFaceResponse d = model.getPersonDownloadDetail();
                        if(d.getCards() !=null && d.getCards().size()>0){
                            cardInfo = "卡片:【" ;
                            for(TaskPersonDetailCardInfoResponse card : d.getCards()){
                                cardInfo +=card.getId()+" ";
                            }
                            cardInfo += "】下发成功";
                        }
                       if(d.getFaces() == null || d.getFaces().size() ==0){
                           remark  = cardInfo+", 不支持人脸设备!";
                       }else{
                           remark = ""+cardInfo+",人脸下发成功!";
                       }
                       empowerMapper.update(null,new UpdateWrapper<Empower>()
                               .lambda()
                               .eq(Empower::getId,c.getId() )
                               .set(Empower::getRemark,remark )
                               .set(Empower::getSendInfo,remark )
                               .set(Empower::getSendStatus,Constants.EmpowerStatus.pass) );
                   }
               }
           }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            Constants.DEALING_HK_EMPOWER_DETAIL=false;
        }
    }
    public  void syncEmpowerDetailDataOld(){
        if(Constants.DEALING_HK_EMPOWER_DETAIL){
            return   ;
        }
        Constants.DEALING_HK_EMPOWER_DETAIL = true;
        try {
            //查询所有完成下载,待查询结果的数据记录
            List<Empower>  list = getDealListDetail();
           if(list == null || list.size() ==0){
               return;
           }
           for(Empower c : list){
               AuthItemListRequest param = new AuthItemListRequest();
               param.setPageNo(1);
               param.setPageSize(100);
//               param.setPersonIds(new ArrayList<>());
               param.setPersonIds(new String[]{c.getMemberHkId()});
               param.setQueryType(c.getDeviceType());
               TaskDataAdditionResourceRequest rec = new TaskDataAdditionResourceRequest();
               rec.setResourceIndexCode(c.getDeviceIndexCode());
               rec.setResourceType(c.getDeviceType());
//               rec.setChannelNos(c.getDeviceChannelNo().split(","));
               List<TaskDataAdditionResourceRequest> resourceRequests = new ArrayList<>();
               resourceRequests.add(rec);
//               param.setResourceInfos(resourceRequests);
               //查询已下载
               param.setPersonStatus(new Integer[]{3});
//               param.setPersonStatus(new Integer[]{3});
               //查询下发状态
               BaseResponse<AuthItemListResponse> response = HKService.authItemList(param);
               if(response!=null
@@ -81,9 +149,8 @@
                   //更新已完成下载任务
                   empowerMapper.update(null,new UpdateWrapper<Empower>()
                           .lambda()
                           .eq(Empower::getHkId,c.getHkId() )
                           .eq(Empower::getId,c.getId() )
                           .set(Empower::getSendStatus,Constants.EmpowerStatus.pass) );
               }
           }
        }catch (Exception e){
@@ -147,8 +214,8 @@
        Constants.DEALING_HK_EMPOWER =true;
        try {
            //先删除所有需要取消授权的数据
//            dealDelListTask(getDealList(Constants.ONE));
            //查询所有需要同步的数据
            dealDelListTask(getDealList(Constants.ONE));
            //查询所有需要同步的数据,重新下发最新人员权限即可
            dealNewListTask(getDealList(Constants.ZERO));
        }catch (Exception e){
            e.printStackTrace();
@@ -184,9 +251,11 @@
                update.setSendDate(date);
                update.setEditDate(date);
                update.setHkId(taskId);
                update.setRemark(status?"下发任务成功":"下发任务失败");
                update.setRemark(status?"下发任务执行成功":"下发任务执行失败");
                update.setSendInfo(status?"下发任务执行成功":"下发任务执行失败");
                //下发中
                update.setSendStatus(status?Constants.EmpowerStatus.ing:Constants.EmpowerStatus.fail);
                empowerMapper.updateById(update);
            }
        }
        for(Empower model : errorList){
@@ -196,6 +265,7 @@
            update.setEditDate(date);
            update.setHkId(taskId);
            update.setSendStatus(Constants.EmpowerStatus.fail);
            update.setSendInfo( "添加下发任务数据刪除授权失败");
            update.setRemark( "添加下发任务数据刪除授权失败");
            empowerMapper.updateById(update);
        }
@@ -206,7 +276,7 @@
        if(list ==null || list.size()==0){
            return;
        }
        clearAllEmpowerFirst(list);
//        clearAllEmpowerFirst(list);
        Date date = new Date();
        //创建任务
        String taskId = hkTaskAddtion();
@@ -230,6 +300,7 @@
                update.setEditDate(date);
                update.setHkId(taskId);
                update.setRemark(status?"下发任务成功":"下发任务失败");
                update.setSendInfo(status?"下发任务成功":"下发任务失败");
                //下发中
                update.setSendStatus(status?Constants.EmpowerStatus.ing:Constants.EmpowerStatus.fail);
                empowerMapper.updateById(update);
@@ -244,6 +315,7 @@
            update.setHkId(taskId);
            update.setSendStatus(Constants.EmpowerStatus.fail);
            update.setRemark( "添加下发任务数据失败");
            update.setSendInfo( "添加下发任务数据失败");
            empowerMapper.updateById(update);
        }
@@ -256,8 +328,8 @@
        //创建任务
        String taskId = hkTaskAddtion();
        for(Empower c : list) {
            //向任务添加人员、设备信息数据
            addTaskDataAll(c,taskId,allDevice);
            //向任务刪除人员的所有设备信息数据
            addTaskDataAllDel(c.getHkId(),taskId,allDevice);
        }
        startTask(taskId);
    }
@@ -268,6 +340,8 @@
                ||StringUtils.isBlank(c.getDeviceType())
                ||StringUtils.isBlank(c.getDeviceIndexCode())){
            //必填参数校验
            c.setSendInfo("设备信息不支持授权下发,检查人员是否已下发海康或者设备是否【设备类型、通道号】是否完善");
            c.setRemark("设备信息不支持授权下发,检查人员是否已下发海康或者设备是否【设备类型、通道号】是否完善");
            return  false;
        }
        TaskDataAdditionRequest param = new TaskDataAdditionRequest();
@@ -285,77 +359,33 @@
        pinfo.setStartTime(DateUtil.getISO8601Timestamp(c.getStartTime()));
        pinfo.setOperatorType(type);
        pinfo.setPersonId(c.getMemberHkId());
        personInfos.add(pinfo);//
        param.setResourceInfos(resourceInfos);
        param.setPersonInfos(personInfos);
        //--------------卡片添加----------
      /*  if(StringUtils.isNotBlank(c.getCardNos())){
            List<TaskDataAdditionCardRequest> cards = new ArrayList<>();
            for(String s : c.getCardNos().split(",")){
                TaskDataAdditionCardRequest tc = new TaskDataAdditionCardRequest();
                tc.setCard(s);
                tc.setStatus(HKConstants.OPERA_TYPE.ADD.getKey());
                tc.setCardType(HKConstants.CARD_TYPE.NORMAL.getKey());
                cards.add(tc);
            }
            param.setCards(cards);
        }*/
        BaseResponse response =  HKService.taskDataAddition(param);
        if(response!=null
                && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)){
            return true;
        }else{
            return  false;
        }
    }
    private boolean addTaskDataAll(Empower c,String taskId,List<Device> deviceList) {
        if(StringUtils.isBlank(c.getMemberHkId() )
                ||StringUtils.isBlank(c.getDeviceChannelNo())
                ||StringUtils.isBlank(c.getDeviceType())
                ||StringUtils.isBlank(c.getDeviceIndexCode())){
            //必填参数校验
            return  false;
        }
        TaskDataAdditionRequest param = new TaskDataAdditionRequest();
        param.setTaskId(taskId);
        List<TaskDataAdditionResourceRequest> resourceInfos = new ArrayList<>();//   object[]   True   资源对象
        for(Device d:deviceList){
            TaskDataAdditionResourceRequest res = new TaskDataAdditionResourceRequest();
            res.setChannelNos(d.getChannelNo().split(","));
            res.setResourceType(d.getResourceType());
            res.setResourceIndexCode(c.getDeviceIndexCode());
            resourceInfos.add(res);
        }
        List<TaskDataAdditionPersonRequest> personInfos = new ArrayList<>();
        TaskDataAdditionPersonRequest pinfo = new TaskDataAdditionPersonRequest();
        pinfo.setName(c.getMemberName());
        pinfo.setEndTime(DateUtil.getISO8601Timestamp(c.getEndTime()));
        pinfo.setStartTime(DateUtil.getISO8601Timestamp(c.getStartTime()));
        pinfo.setOperatorType(HKConstants.OPERA_TYPE.DEL.getKey());
        pinfo.setPersonId(c.getMemberHkId());
        param.setResourceInfos(resourceInfos);
        param.setPersonInfos(personInfos);
        BaseResponse response =  HKService.taskDataAddition(param);
        if(response!=null
                && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)){
            return true;
        }else{
            c.setRemark("添加人员、设备通道权限下发数据失败"+(response!=null?response.getMsg():""));
            c.setSendInfo("添加人员、设备通道权限下发数据失败"+(response!=null?response.getMsg():""));
            return  false;
        }
    }
    private boolean startTask(String taskId) {
        TaskProgressRequest param = new TaskProgressRequest();
        param.setTaskId(taskId);
        BaseResponse response =  HKService.taskStart(param);
        if(response!=null
                && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)){
            return true;
        }else{
            return  false;
        }
    }
    private String hkTaskAddtion() {
        TaskAdditionRequest param = new TaskAdditionRequest();
        param.setTaskType(HKConstants.TASK_TYPE.FACE.getKey());
        BaseResponse<TaskAdditionResponse> response = HKService.taskAddition(param);
        if(response!=null
                && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)
                && response.getData()!=null
                && StringUtils.isNotBlank(response.getData().getTaskId())){
            return  response.getData().getTaskId();
        }else{
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "海康创建下载任务失败==================");
        }
    }
    private List<Empower> getDealList(int del ) {
        MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
@@ -367,7 +397,7 @@
        queryWrapper.leftJoin(Device.class,Device::getId,Empower::getDeviceId);
        queryWrapper.leftJoin(Member.class,Member::getId,Empower::getMemberId);
        queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.wait);
//        queryWrapper.eq( Empower::getIsdeleted,del);
        queryWrapper.eq( Empower::getIsdeleted,del);
//        queryWrapper.last("limit 100");//每次限制下发100个
        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
        return list;
@@ -379,9 +409,11 @@
        queryWrapper.selectAs(Member::getHkId,Empower::getMemberHkId);
        queryWrapper.leftJoin(Member.class,Member::getId,Empower::getMemberId);
        queryWrapper.selectAs(Device::getHkId,Empower::getDeviceIndexCode);
        queryWrapper.selectAs(Device::getDevTypeCode,Empower::getDeviceType);
        queryWrapper.selectAs(Device::getResourceType,Empower::getDeviceType);
        queryWrapper.leftJoin(Device.class,Device::getId,Empower::getDeviceId);
        queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.downloaded);
        queryWrapper.orderByAsc(Empower::getSendDate);
        queryWrapper.isNotNull(Empower::getMemberHkId) ;
        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
        return list;
    }