| | |
| | | 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.HKResponseCode; |
| | | import com.doumee.core.haikang.model.param.BaseResponse; |
| | | import com.doumee.core.haikang.model.param.request.*; |
| | | import com.doumee.core.haikang.model.param.respose.*; |
| | |
| | | //查询下发状态 |
| | | BaseResponse<TaskPersonDetailListResponse> response = HKService.taskPersoDetail(param); |
| | | if(response!=null |
| | | && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE) && response.getData()!=null |
| | | ){ |
| | | if (response.getData().getList() != null |
| | | && response.getData().getList().size() > 0) { |
| | | && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE) |
| | | && response.getData()!=null |
| | | && response.getData().getList() != null |
| | | && response.getData().getList().size() > 0 |
| | | &&response.getData().getList().get(0) !=null){ |
| | | TaskPersonDetailResponse model = response.getData().getList().get(0); |
| | | if (model != null && StringUtils.equals(model.getPersondownloadResult(), "0")) { |
| | | if (model.getPersonDownloadDetail()!=null ) { |
| | | boolean isface = false;//是否人脸下发成功 |
| | | boolean iscard = false;//是否有卡片下发成功 |
| | | //更新已完成下载任务 |
| | | String remark = ""; |
| | | String cardInfo = "卡片下发失败"; |
| | | TaskPersonDetailCardFaceResponse d = model.getPersonDownloadDetail(); |
| | | if (d.getCards() != null && d.getCards().size() > 0) { |
| | | cardInfo = "卡片:【"; |
| | | for (TaskPersonDetailCardInfoResponse card : d.getCards()) { |
| | | if(StringUtils.equals(card.getErrorCode(),HKResponseCode.ReturnCode.RESPONSE_SUCCEE.getKey())){ |
| | | cardInfo += card.getId() + " "; |
| | | iscard=true; |
| | | } |
| | | cardInfo += "】下发成功"; |
| | | } |
| | | if(iscard){ |
| | | cardInfo = "卡片【"+cardInfo+"】下发成功"; |
| | | } |
| | | } |
| | | if (d.getFaces() == null || d.getFaces().size() == 0) { |
| | | remark = cardInfo + ", 不支持人脸设备!"; |
| | | remark = cardInfo + ", 无人脸下发!"; |
| | | } else { |
| | | if(d.getFaces().get(0).getErrorCode() !=null && d.getFaces().get(0).getErrorCode().equals(HKConstants.RESPONSE_SUCCEE)){ |
| | | isface=true; |
| | | remark = "" + cardInfo + ",人脸下发成功!"; |
| | | }else{ |
| | | isface=false; |
| | | if(d.getFaces().get(0).getErrorCode()!=null && |
| | | (d.getFaces().get(0).getErrorCode().equals(HKResponseCode.ReturnCode.RESPONSE_FACE_ERROR.getKey()) || |
| | | d.getFaces().get(0).getErrorCode().equals(HKResponseCode.ReturnCode.RESPONSE_FACE_ERROR2.getKey()))){ |
| | | //如果人脸不合格 |
| | | memberMapper.update(null,new UpdateWrapper<Member>().lambda() |
| | | .eq(Member::getId,c.getMemberId()) |
| | | .set(Member::getFaceStatus,Constants.THREE) |
| | | .set(Member::getEditDate,new Date()) |
| | | ); |
| | | remark = "" + cardInfo + ",人脸建模失败!"; |
| | | }else if(d.getFaces().get(0).getErrorCode()!=null && d.getFaces().get(0).getErrorCode().equals(HKResponseCode.ReturnCode.RESPONSE_DEVICE_NOFAVOR.getKey())){ |
| | | //如果设备不支持人脸下发 |
| | | isface=true;//此情况不要考虑人脸下发结果 |
| | | remark = "" + cardInfo + ",设备不支持人脸下发!"; |
| | | }else{ |
| | | remark = "" + cardInfo + ",人脸下发失败!"; |
| | | } |
| | | } |
| | | } |
| | | //如果返回下发成功 或者 人脸下发成功并且卡片下发成功 |
| | | boolean isSuccess =StringUtils.equals(model.getPersondownloadResult(), "0") || (iscard&&isface); |
| | | empowerMapper.update(null, new UpdateWrapper<Empower>() |
| | | .lambda() |
| | | .eq(Empower::getId, c.getId()) |
| | | .set(Empower::getRemark, remark) |
| | | .set(Empower::getEditDate,new Date()) |
| | | .set(Empower::getSendInfo, remark) |
| | | .set(Empower::getSendStatus, Constants.EmpowerStatus.pass)); |
| | | if(Constants.equalsInteger(c.getMemberDeleted(), Constants.ONE)&& Constants.equalsInteger(c.getIsdeleted(), Constants.ONE) ){ |
| | | .set(Empower::getSendStatus, isSuccess?Constants.EmpowerStatus.pass:Constants.EmpowerStatus.fail)); |
| | | if(isSuccess && Constants.equalsInteger(c.getMemberDeleted(), Constants.ONE)&& Constants.equalsInteger(c.getIsdeleted(), Constants.ONE) ){ |
| | | //如果是删除权限成功,检查是否删除人员 |
| | | checkDelMemberTask(c.getMemberId(),c.getMemberHkId()); |
| | | } |
| | | } else { |
| | | empowerMapper.update(null, new UpdateWrapper<Empower>() |
| | | .lambda() |
| | | .eq(Empower::getId, c.getId()) |
| | | .set(Empower::getRemark, "下发失败") |
| | | .set(Empower::getSendInfo, "下发失败") |
| | | .set(Empower::getSendStatus, Constants.EmpowerStatus.fail)); |
| | | continue; |
| | | } |
| | | } else { |
| | | } |
| | | //所有异常情况都标记为下发失败 |
| | | //如果是已删除的数据,下发失败(防止设备离线),则尝试重新下发任务 |
| | | if(Constants.equalsInteger(c.getIsdeleted(), Constants.ONE) ){ |
| | | empowerMapper.update(null, new UpdateWrapper<Empower>() |
| | |
| | | empowerMapper.update(null, new UpdateWrapper<Empower>() |
| | | .lambda() |
| | | .eq(Empower::getId, c.getId()) |
| | | .set(Empower::getEditDate,new Date()) |
| | | .set(Empower::getRemark, "下发失败") |
| | | .set(Empower::getTryNum,Constants.formatIntegerNum(c.getTryNum())+1) |
| | | .set(Empower::getSendInfo, "下发失败") |
| | | .set(Empower::getSendStatus, Constants.EmpowerStatus.fail)); |
| | | } |
| | | } |
| | | }else if(response!=null && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_DOWNLOAD_ERROR) ){ |
| | | empowerMapper.update(null, new UpdateWrapper<Empower>() |
| | | .lambda() |
| | | .eq(Empower::getId, c.getId()) |
| | | .set(Empower::getRemark, "下发失败") |
| | | // .set(Empower::getFailFlag, Constants.ONE)//无需重发(下载任务不存在) |
| | | .set(Empower::getTryNum,Constants.formatIntegerNum(c.getTryNum())+1) |
| | | .set(Empower::getSendInfo, "下发失败") |
| | | .set(Empower::getSendStatus, Constants.EmpowerStatus.fail)); |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | |
| | | }finally { |
| | | // Constants.DEALING_HK_EMPOWER_DETAIL=false; |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | }); |
| | |
| | | .lambda() |
| | | .eq(Empower::getHkId,c.getHkId() ) |
| | | .set(Empower::getSendInfo,"任务已下载完成" ) |
| | | .set(Empower::getRemark,"任务已下载完成" ) |
| | | .set(Empower::getSendStatus,Constants.EmpowerStatus.downloaded) ); |
| | | |
| | | } |
| | |
| | | List<Integer> noIds = new ArrayList<>(); |
| | | for(Empower empower:allList){ |
| | | //如果是删除的权限下发,查询是否伺候有下发成功的数据,如果有,则不处理 |
| | | if(empower.getId().equals(392479)){ |
| | | System.out.println("============================"); |
| | | } |
| | | // int flag= empowerMapper.selectCount(new QueryWrapper<Empower>().lambda() |
| | | // .eq(Empower::getMemberId,empower.getMemberId()) |
| | | // .eq(Empower::getDeviceId,empower.getDeviceId() ) |
| | |
| | | List<Empower> allList =getAllWaitDealList( endId); |
| | | if(allList !=null && allList.size()>0){ |
| | | //查询所有需要同步的数据,重新下发最新人员权限即可 |
| | | // dealNewListTask(getDealList(Constants.ZERO,endId)); |
| | | List<Empower> dellist = new ArrayList<>(); |
| | | List<Empower> addlist = new ArrayList<>(); |
| | | for(Empower e : allList){ |
| | | if(Constants.equalsInteger(e.getIsdeleted(),Constants.ONE)){ |
| | | dellist.add(e); |
| | | }else { |
| | | addlist.add(e); |
| | | } |
| | | } |
| | | Thread t1=new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | if(dellist!=null &&dellist.size()>0) { |
| | | dealDelListTask(dellist); |
| | | } |
| | | if(addlist!=null &&addlist.size()>0) { |
| | | dealNewListTask(addlist); |
| | | } |
| | | dealAllListTask(allList); |
| | | } |
| | | }); |
| | | t1.start(); |
| | |
| | | .set(Empower::getEditDate,date) |
| | | .in(Empower::getId,successList)); |
| | | } |
| | | |
| | | if(errorList.size()>0){ |
| | | empowerMapper.update(null,new UpdateWrapper<Empower>() |
| | | .lambda() |
| | | .set(Empower::getSendStatus,Constants.EmpowerStatus.fail) |
| | |
| | | .set(Empower::getRemark, "添加下发任务数据刪除授权失败") |
| | | .set(Empower::getEditDate,date) |
| | | .in(Empower::getId,errorList)); |
| | | |
| | | } |
| | | } |
| | | public class TaskRuner implements Runnable{ |
| | | private List<Empower> list ; |
| | |
| | | public void setList(List<Empower> list) { |
| | | this.list = list; |
| | | } |
| | | } |
| | | private void dealAllListTask(List<Empower> list) { |
| | | //按照父级申请分批处理每次申请数据 |
| | | if(list ==null || list.size()==0){ |
| | | return; |
| | | } |
| | | // clearAllEmpowerFirst(list); |
| | | Date date = new Date(); |
| | | //创建任务 |
| | | String taskId = hkTaskAddtion(); |
| | | List<Empower> successList = new ArrayList<>(); |
| | | List<Empower> errorList = new ArrayList<>(); |
| | | List<Empower> waitList = new ArrayList<>(); |
| | | List<Empower> faceErrorList = new ArrayList<>(); |
| | | for(Empower c : list) { |
| | | //向任务添加人员、设备信息数据 |
| | | if(c.getDeviceOnline() !=null && Constants.equalsInteger(c.getDeviceOnline(),0)){ |
| | | waitList.add(c); |
| | | continue; |
| | | } |
| | | if( Constants.equalsInteger(c.getMemberFaceStatus(),Constants.THREE)){ |
| | | faceErrorList.add(c); |
| | | continue; |
| | | } |
| | | HKConstants.OPERA_TYPE flag = HKConstants.OPERA_TYPE.ADD; |
| | | if(Constants.equalsObject(c.getIsdeleted(),Constants.ONE)){ |
| | | flag = HKConstants.OPERA_TYPE.DEL; |
| | | } |
| | | if(addTaskData(c,taskId,flag.getKey())){ |
| | | successList.add(c); |
| | | }else{ |
| | | errorList.add(c); |
| | | } |
| | | } |
| | | if(successList.size()>0){ |
| | | //开始执行下发 |
| | | boolean status = startTask(taskId); |
| | | for(Empower model : successList){ |
| | | Empower update = new Empower(); |
| | | update.setId(model.getId()); |
| | | update.setSendDate(date); |
| | | update.setEditDate(date); |
| | | update.setHkId(taskId); |
| | | update.setRemark(status?"下发任务成功":"下发任务失败"); |
| | | update.setSendInfo(status?"下发任务成功":"下发任务失败"); |
| | | //下发中 |
| | | update.setSendStatus(status?Constants.EmpowerStatus.ing:Constants.EmpowerStatus.fail); |
| | | empowerMapper.updateById(update); |
| | | } |
| | | } |
| | | |
| | | if(errorList.size()>0){ |
| | | for(Empower model : errorList){ |
| | | Empower update = new Empower(); |
| | | update.setId(model.getId()); |
| | | update.setSendDate(date); |
| | | update.setEditDate(date); |
| | | update.setHkId(taskId); |
| | | update.setSendStatus(Constants.EmpowerStatus.fail); |
| | | update.setRemark( "添加下发任务数据失败"); |
| | | update.setSendInfo( "添加下发任务数据失败"); |
| | | empowerMapper.updateById(update); |
| | | } |
| | | } |
| | | if(waitList.size()>0){ |
| | | for(Empower model : waitList){ |
| | | Empower update = new Empower(); |
| | | update.setId(model.getId()); |
| | | update.setSendDate(date); |
| | | update.setEditDate(date); |
| | | update.setHkId(taskId); |
| | | update.setSendStatus(Constants.EmpowerStatus.fail); |
| | | update.setRemark( "设备状态异常,等待重新下发"); |
| | | update.setSendInfo( "设备状态异常,等待重新下发"); |
| | | empowerMapper.updateById(update); |
| | | } |
| | | } |
| | | if(faceErrorList.size()>0){ |
| | | for(Empower model : faceErrorList){ |
| | | Empower update = new Empower(); |
| | | update.setId(model.getId()); |
| | | update.setSendDate(date); |
| | | update.setEditDate(date); |
| | | update.setHkId(taskId); |
| | | update.setSendStatus(Constants.EmpowerStatus.fail); |
| | | update.setRemark( "人脸建模失败,等待更换人脸后重新下发"); |
| | | update.setSendInfo( "人脸建模失败,等待更换人脸后重新下发"); |
| | | empowerMapper.updateById(update); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | private void dealNewListTask(List<Empower> list) { |
| | | //按照父级申请分批处理每次申请数据 |
| | |
| | | } |
| | | } |
| | | |
| | | if(errorList.size()>0){ |
| | | for(Empower model : errorList){ |
| | | Empower update = new Empower(); |
| | | update.setId(model.getId()); |
| | |
| | | update.setSendInfo( "添加下发任务数据失败"); |
| | | empowerMapper.updateById(update); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | queryWrapper.selectAll(Empower.class); |
| | | queryWrapper.selectAs(Device::getChannelNo,Empower::getDeviceChannelNo); |
| | | queryWrapper.selectAs(Member::getHkId,Empower::getMemberHkId); |
| | | queryWrapper.selectAs(Member::getFaceStatus,Empower::getMemberFaceStatus); |
| | | queryWrapper.selectAs(Device::getOnline,Empower::getDeviceOnline); |
| | | queryWrapper.selectAs(Device::getHkId,Empower::getDeviceIndexCode); |
| | | queryWrapper.selectAs(Device::getResourceType,Empower::getDeviceType); |
| | | queryWrapper.leftJoin(Device.class,Device::getId,Empower::getDeviceId); |
| | |
| | | MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>(); |
| | | queryWrapper.select(Empower::getId,Empower::getMemberId,Empower::getDeviceId,Empower::getIsdeleted); |
| | | queryWrapper.select(" (select count(1) from empower ee where ee.member_id=t.MEMBER_ID and ee.device_id =t.DEVICE_ID and ee.id>t.id) as tempCouunt"); |
| | | queryWrapper.leftJoin(Member.class,Member::getId,Empower::getMemberId); |
| | | queryWrapper.leftJoin(Device.class,Device::getId,Empower::getDeviceId); |
| | | queryWrapper.ne(Member::getFaceStatus,Constants.THREE);//人脸建模没有失败过的 |
| | | queryWrapper.ne(Device::getOnline,Constants.ZERO+"");//非离线 |
| | | queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.fail); |
| | | queryWrapper.gt(Empower::getId,endId); |
| | | queryWrapper.orderByAsc(Empower::getId ); |