| | |
| | | import com.doumee.core.utils.DateUtil; |
| | | import com.doumee.dao.business.DeviceMapper; |
| | | import com.doumee.dao.business.MemberCardMapper; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.dao.MemberMapper; |
| | | import com.doumee.dao.business.join.EmpowerJoinMapper; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Qualifier; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.concurrent.Executor; |
| | | |
| | | /** |
| | | * 海康门禁授权业务Service实现 |
| | |
| | | @Autowired |
| | | private MemberCardMapper memberCardMapper; |
| | | |
| | | @Autowired |
| | | @Qualifier("asyncExecutor") |
| | | private Executor asyncExecutor; |
| | | |
| | | /** |
| | | * 定时查询权限下发任务进度执行结果 |
| | | */ |
| | | @Override |
| | | public Integer syncEmpowerDetailData(Integer endId){ |
| | | log.error(""); |
| | | long startTime = System.currentTimeMillis(); |
| | | log.info("syncEmpowerDetailData执行开始, endId={}", endId); |
| | | // if(Constants.DEALING_HK_EMPOWER_DETAIL){ |
| | | // return ; |
| | | // } |
| | |
| | | //查询所有完成下载,待查询结果的数据记录 |
| | | List<Empower> list = getDealListDetail(endId); |
| | | if(list == null || list.size() ==0){ |
| | | log.info("syncEmpowerDetailData无待处理数据, 耗时{}ms", System.currentTimeMillis() - startTime); |
| | | return null; |
| | | } |
| | | Thread t1=new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | for(Empower c : list){ |
| | | TaskPersonDetailRequest param = new TaskPersonDetailRequest(); |
| | | asyncExecutor.execute(() -> { |
| | | try { |
| | | for(Empower c : list){ |
| | | AuthResultPageRequest param = new AuthResultPageRequest(); |
| | | param.setPageNo(1); |
| | | param.setPageSize(999); |
| | | param.setBusinessNo(c.getHkId()); |
| | | BaseResponse<AuthResultPageResponse> response =HKService.authResultPage(param); |
| | | |
| | | /* TaskPersonDetailRequest param = new TaskPersonDetailRequest(); |
| | | param.setPageNo(1); |
| | | param.setPageSize(10); |
| | | param.setPersonIds(new String[]{c.getMemberHkId()}); |
| | |
| | | rec.setResourceType(c.getDeviceType()); |
| | | param.setResourceInfo(rec); |
| | | //查询下发状态 |
| | | BaseResponse<TaskPersonDetailListResponse> response = HKService.taskPersoDetail(param); |
| | | BaseResponse<TaskPersonDetailListResponse> response = HKService.taskPersoDetail(param);*/ |
| | | if(response!=null |
| | | && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE) |
| | | && 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.getPersonDownloadDetail()!=null ) { |
| | | // TaskPersonDetailResponse model = response.getData().getList().get(0); |
| | | |
| | | AuthResultPageDetailResponse model = getAuthDetailByUserAndDevice(c,response.getData().getList()); |
| | | // if (model.getPersonDownloadDetail()!=null ) { |
| | | if (model!=null ) { |
| | | boolean isface = false;//是否人脸下发成功 |
| | | boolean iscard = false;//是否有卡片下发成功 |
| | | //更新已完成下载任务 |
| | | String remark = ""; |
| | | String cardInfo =""; |
| | | TaskPersonDetailCardFaceResponse d = model.getPersonDownloadDetail(); |
| | | if (d.getCards() != null && d.getCards().size() > 0) { |
| | | /* if (d.getCards() != null && d.getCards().size() > 0) { |
| | | for (TaskPersonDetailCardInfoResponse card : d.getCards()) { |
| | | if(StringUtils.equals(card.getErrorCode(),HKResponseCode.ReturnCode.RESPONSE_SUCCEE.getKey())){ |
| | | cardInfo += card.getId() + " "; |
| | |
| | | } |
| | | } |
| | | //如果返回下发成功 或者 人脸下发成功并且卡片下发成功 |
| | | boolean isSuccess =StringUtils.equals(model.getPersondownloadResult(), "0") || (iscard&&isface); |
| | | boolean isSuccess =StringUtils.equals(model.getPersondownloadResult(), "0") || (iscard&&isface);*/ |
| | | |
| | | if (Constants.equalsInteger(model.getDownCardStatus(),0)) { |
| | | cardInfo = "卡片下发未变更"; |
| | | }else if (Constants.equalsInteger(model.getDownCardStatus(),1)) { |
| | | cardInfo = "卡片下发成功"; |
| | | }else { |
| | | cardInfo = "卡片下发失败"; |
| | | } |
| | | |
| | | if ( Constants.equalsInteger(model.getDownFaceStatus(),0)) { |
| | | remark = "人脸下发未变更!"; |
| | | } else if (Constants.equalsInteger(model.getDownFaceStatus(),1)) { |
| | | remark = "人脸下发成功!"; |
| | | }else{ |
| | | remark = "人脸下发失败!"; |
| | | } |
| | | //下发成功或者未变更 |
| | | boolean isSuccess = Constants.equalsInteger(model.getDownPersonStatus(),1)|| Constants.equalsInteger(model.getDownPersonStatus(),0) ; |
| | | empowerMapper.update(null, new UpdateWrapper<Empower>() |
| | | .lambda() |
| | | .eq(Empower::getId, c.getId()) |
| | | .set(Empower::getRemark, remark) |
| | | .set(Empower::getRemark,cardInfo+ remark) |
| | | .set(Empower::getEditDate,new Date()) |
| | | .set(Empower::getSendInfo, remark) |
| | | .set(Empower::getSendInfo,cardInfo+remark) |
| | | .set(Empower::getSendStatus, isSuccess?Constants.EmpowerStatus.pass:Constants.EmpowerStatus.fail)); |
| | | if(isSuccess && Constants.equalsInteger(c.getMemberDeleted(), Constants.ONE)&& Constants.equalsInteger(c.getIsdeleted(), Constants.ONE) ){ |
| | | //如果是删除权限成功,检查是否删除人员 |
| | |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | log.error("syncEmpowerDetailData执行异常", e); |
| | | } |
| | | } |
| | | }); |
| | | t1.start(); |
| | | log.info("syncEmpowerDetailData执行结束, 耗时{}ms", System.currentTimeMillis() - startTime); |
| | | return list.get(list.size()-1).getId(); |
| | | |
| | | } |
| | | |
| | | private AuthResultPageDetailResponse getAuthDetailByUserAndDevice(Empower c, List<AuthResultPageDetailResponse> list) { |
| | | for(AuthResultPageDetailResponse t : list){ |
| | | if(StringUtils.equals(t.getPersonId(),c.getMemberHkId()) && StringUtils.equals(t.getDeviceIndexCode(),c.getDeviceIndexCode())){ |
| | | return t; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | |
| | | */ |
| | | @Override |
| | | public Integer syncEmpowerResultData(Integer endId){ |
| | | // if(Constants.DEALING_HK_EMPOWER_RESULT){ |
| | | // return null ; |
| | | // } |
| | | // Constants.DEALING_HK_EMPOWER_RESULT=true; |
| | | long startTime = System.currentTimeMillis(); |
| | | log.info("syncEmpowerResultData执行开始, endId={}", endId); |
| | | //查询所有执行中得数据 |
| | | List<Empower> list = getIngTaskListResult(Constants.formatIntegerNum(endId)); |
| | | if(list == null || list.size() ==0){ |
| | | log.info("syncEmpowerResultData无待处理数据, 耗时{}ms", System.currentTimeMillis() - startTime); |
| | | return null; |
| | | } |
| | | Thread t1=new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | asyncExecutor.execute(() -> { |
| | | try { |
| | | for(Empower c : list){ |
| | | TaskProgressRequest param = new TaskProgressRequest(); |
| | |
| | | } |
| | | } |
| | | }catch (Exception e1){ |
| | | e1.printStackTrace(); |
| | | }finally { |
| | | Constants.DEALING_HK_EMPOWER_RESULT =false; |
| | | log.error("syncEmpowerResultData执行异常", e1); |
| | | } |
| | | } |
| | | }); |
| | | t1.start(); |
| | | }); |
| | | log.info("syncEmpowerResultData执行结束, 耗时{}ms", System.currentTimeMillis() - startTime); |
| | | return list.get(list.size()-1).getId(); |
| | | |
| | | } |
| | |
| | | */ |
| | | @Override |
| | | public Integer syncEmpowerFailData(Integer endId) { |
| | | long startTime = System.currentTimeMillis(); |
| | | log.info("syncEmpowerFailData执行开始, endId={}", endId); |
| | | List<Empower> allList =getAllFailDealList( endId); |
| | | if(allList!=null && allList.size()>0){ |
| | | Date date = new Date(); |
| | |
| | | } |
| | | return allList.get(allList.size()-1).getId(); |
| | | } |
| | | log.info("syncEmpowerFailData执行结束, 耗时{}ms", System.currentTimeMillis() - startTime); |
| | | return null; |
| | | } |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public Integer syncEmpowerData(Integer endId) { |
| | | // if(Constants.DEALING_HK_EMPOWER){ |
| | | // return null ; |
| | | // } |
| | | // Constants.DEALING_HK_EMPOWER =true; |
| | | long startTime = System.currentTimeMillis(); |
| | | log.info("syncEmpowerData执行开始, endId={}", endId); |
| | | //先删除所有需要取消授权的数据 |
| | | if(empowerMapper.selectCount(new QueryWrapper<Empower>().lambda() |
| | | .eq(Empower::getSendStatus,Constants.EmpowerStatus.ing)) > 1000){ |
| | | //如果当前任务大于1000个(大概10个任务) |
| | | log.info("syncEmpowerData任务队列已满(>1000), 跳过, 耗时{}ms", System.currentTimeMillis() - startTime); |
| | | return endId; |
| | | } |
| | | List<Empower> allList =getAllWaitDealList( endId); |
| | | if(allList !=null && allList.size()>0){ |
| | | //查询所有需要同步的数据,重新下发最新人员权限即可 |
| | | Thread t1=new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | dealAllListTask(allList); |
| | | }catch (Exception e){ |
| | | log.info("======================下发授权异常:"+e.getMessage()); |
| | | e.printStackTrace(); |
| | | } |
| | | asyncExecutor.execute(() -> { |
| | | try { |
| | | dealAllListTask(allList); |
| | | }catch (Exception e){ |
| | | log.error("======================下发授权异常", e); |
| | | } |
| | | }); |
| | | t1.start(); |
| | | log.info("syncEmpowerData提交{}条数据, 耗时{}ms", allList.size(), System.currentTimeMillis() - startTime); |
| | | return allList.get(allList.size()-1).getId(); |
| | | } |
| | | log.info("syncEmpowerData无待处理数据, 耗时{}ms", System.currentTimeMillis() - startTime); |
| | | return null; |
| | | } |
| | | @Override |
| | |
| | | List<Empower> faceErrorList = new ArrayList<>(); |
| | | for(Empower c : list) { |
| | | //向任务添加人员、设备信息数据 |
| | | if((Constants.equalsInteger(c.getMemberDeleted(),Constants.ONE) && |
| | | if((Constants.equalsInteger(c.getIsdeleted(),Constants.ZERO) && |
| | | Constants.equalsInteger(c.getMemberDeleted(),Constants.ONE) && |
| | | Constants.equalsInteger(c.getMemberHkStatus(),Constants.ONE)) |
| | | || Constants.equalsInteger(c.getDeviceDeleted(),1)){ |
| | | //如果人員或者設備删除,取消下发 |
| | |
| | | continue; |
| | | } |
| | | if(Constants.equalsInteger(c.getMemberDeleted(),Constants.ONE) |
| | | && Constants.equalsInteger(c.getIsdeleted(),1)){ |
| | | && Constants.equalsInteger(c.getMemberHkStatus(),Constants.ONE) |
| | | && Constants.equalsInteger(c.getIsdeleted(),Constants.ZERO)){ |
| | | //如果人员已离职,新增授权无需下发,取消下发 |
| | | cacenList.add(c); |
| | | continue; |
| | |
| | | if(list ==null || list.size()==0){ |
| | | return; |
| | | } |
| | | // clearAllEmpowerFirst(list); |
| | | // clearAllEmpowerFirst(list); |
| | | Date date = new Date(); |
| | | //创建任务 |
| | | String taskId = hkTaskAddtion(); |
| | |
| | | queryWrapper.selectAs(Device::getChannelNo,Empower::getDeviceChannelNo); |
| | | queryWrapper.selectAs(Member::getHkId,Empower::getMemberHkId); |
| | | queryWrapper.selectAs(Member::getFaceStatus,Empower::getMemberFaceStatus); |
| | | queryWrapper.selectAs(Member::getHkStatus,Empower::getMemberFaceStatus); |
| | | queryWrapper.selectAs(Device::getOnline,Empower::getMemberHkStatus); |
| | | queryWrapper.selectAs(Member::getHkStatus,Empower::getMemberHkStatus); |
| | | queryWrapper.selectAs(Device::getOnline,Empower::getDeviceOnline); |
| | | queryWrapper.selectAs(Device::getIsdeleted,Empower::getDeviceDeleted); |
| | | queryWrapper.selectAs(Member::getIsdeleted,Empower::getMemberDeleted); |
| | | queryWrapper.selectAs(Device::getHkId,Empower::getDeviceIndexCode); |