From 98e52a2d1a05276e11d2e5c99ec05e670228fbd6 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期一, 18 十二月 2023 18:21:20 +0800 Subject: [PATCH] 海康接口对接开发 --- server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java | 127 ++++++++++++++++++++++++++++++++++-------- 1 files changed, 102 insertions(+), 25 deletions(-) diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java index b9aa525..174a8be 100644 --- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java +++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java @@ -10,6 +10,7 @@ import com.doumee.core.haikang.model.param.respose.*; import com.doumee.core.haikang.service.HKService; import com.doumee.core.utils.Constants; +import com.doumee.core.utils.DESUtil; import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.ImageBase64Util; import com.doumee.dao.business.CompanyMapper; @@ -57,6 +58,8 @@ return ; } Constants.DEALING_HK_VISIT =true; + String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() + +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); List<DeviceRole> roleList = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda() .eq(DeviceRole::getType, Constants.ONE)); //鏍囪鏄惁璧板厤鐧昏棰勭害 @@ -64,9 +67,9 @@ String applyLwType =systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.MDJ_LW_REQUIRED).getCode(); try { //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑鏁版嵁 - List<Visits> alllist = getVisitList(); + List<Visits> list = getVisitList(); //鎸夌収鐖剁骇鐢宠鍒嗘壒澶勭悊姣忔鐢宠鏁版嵁 - List<Visits> list = getParentList(alllist); +// List<Visits> list = getParentList(alllist); if(list ==null || list.size()==0){ return; } @@ -74,7 +77,7 @@ for(Visits c : list) { //鍙戣捣娴峰悍棰勭害鎺ュ彛锛堥渶瑕佺櫥璁帮級锛屾牴鎹绾﹁繑鍥炴帴鍙e皝瑁呯敵璇疯褰曟洿鏂板瓧娈� String type = Constants.equalsInteger(c.getType(),Constants.ONE)?applyType:applyLwType; - getUpdateModelByResponse(c,date,type,roleList); + getUpdateModelByResponse(c,date,type,roleList,path); visitsMapper.updateById(c); } }catch (Exception e){ @@ -117,69 +120,143 @@ * @param date * @param type 0闇�瑕佺櫥璁� 1鍏嶇櫥璁� */ - private void getUpdateModelByResponse( Visits c,Date date,String type,List<DeviceRole> roleList ) { + private void getUpdateModelByResponse( Visits c,Date date,String type,List<DeviceRole> roleList,String path ) { String code = null; String id = null; //鍙戣捣娴峰悍棰勭害鎺ュ彛 if(StringUtils.equals(type,"0")){ //锛堥渶瑕佺櫥璁帮級 - BaseResponse<VisitAppointmentResponse> response = HKService.visitAppiontment(getHkRequestPara(c,roleList)); + VisitAppointmentRequest request = getHkRequestPara(c,roleList,path); + if(request == null){ + //娴峰悍涓嬪彂鎴愬姛 + c.setStatus(Constants.VisitStatus.xfFail);//涓嬪彂娴峰悍澶辫触 + c.setRemark("涓嬪彂娴峰悍鍙傛暟涓嶆纭紒"); + c.setHkStatus(Constants.ONE); + c.setHkDate(date); + return; + } + BaseResponse<VisitAppointmentResponse> response = HKService.visitAppiontment(request); + code =response!=null ?response.getCode():null; + id = (response!=null && response.getData()!=null + && response.getData().getAppointmentInfoList() !=null + && response.getData().getAppointmentInfoList().size()>0)?response.getData().getAppointmentInfoList().get(0).getOrderId():null; }else{ //鍏嶇櫥璁� - BaseResponse<VisitAppointmentMDJResponse> response = HKService.visitAppiontmentMDJ(getHkMDJRequestPara(c) ); + VisitAppointmentMDJRequest request =getHkMDJRequestPara(c,roleList,path); + if(request == null){ + //娴峰悍涓嬪彂鎴愬姛 + c.setStatus(Constants.VisitStatus.xfFail);//涓嬪彂娴峰悍澶辫触 + c.setRemark("涓嬪彂娴峰悍鍏嶇櫥璁板弬鏁颁笉姝g‘锛�"); + c.setHkStatus(Constants.ONE); + c.setHkDate(date); + return; + } + BaseResponse<VisitAppointmentMDJResponse> response = HKService.visitAppiontmentMDJ(request ); + code =response!=null ?response.getCode():null; + id = (response!=null && response.getData()!=null)?response.getData().getOrderId():null; } if (code!= null && id!=null) { //娴峰悍涓嬪彂鎴愬姛 c.setHkId( id);//棰勭害鏍囪瘑 + c.setRemark("涓嬪彂娴峰悍鎴愬姛锛併��"+type+"銆�"); c.setStatus(Constants.VisitStatus.xfSuccess);//涓嬪彂娴峰悍鎴愬姛 } else { //娴峰悍涓嬪彂鎴愬姛 + c.setRemark("涓嬪彂娴峰悍澶辫触锛併��"+type+"銆�"); c.setStatus(Constants.VisitStatus.xfFail);//涓嬪彂娴峰悍澶辫触 } c.setHkStatus(Constants.ONE); c.setHkDate(date); } - private VisitAppointmentMDJRequest getHkMDJRequestPara(Visits c) { - return null; - } - - private VisitAppointmentRequest getHkRequestPara(Visits c,List<DeviceRole> roleList ) { - VisitAppointmentRequest request = new VisitAppointmentRequest(); + /** + * 鍏嶇櫥璁版帴鍙e弬鏁� + * @param c + * @return + */ + private VisitAppointmentMDJRequest getHkMDJRequestPara(Visits c,List<DeviceRole> roleList,String path) { + VisitAppointmentMDJRequest request = new VisitAppointmentMDJRequest(); + VisitAppointmentVistorRequest info =getRequestInfoByVisit(c,path); + if(info == null ){ + //浜鸿劯涓虹┖锛屼笉鑳借繘琛屾帹閫� + return null; + } request.setVisitStartTime(DateUtil.getISO8601Timestamp(c.getStarttime())); request.setVisitEndTime(DateUtil.getISO8601Timestamp(c.getEndtime())); request.setReceptionistId(c.getReceptMemberHkId());//琚浜烘捣搴风紪鐮� request.setVisitPurpose(c.getReason()); - request.setVisitorPermissionSet(new VisitAppointmentPermissonRequest()); + request.setVisitorInfo(info); + request.setVisitorPermissionSet(getVisitPermissonRequest(roleList,c)); + return request; + } + + /** + * 璁垮鏉冮檺缁� + * @param roleList + * @param c + * @return + */ + private VisitAppointmentPermissonRequest getVisitPermissonRequest(List<DeviceRole> roleList, Visits c) { + VisitAppointmentPermissonRequest p = new VisitAppointmentPermissonRequest(); //鑾峰彇鏉冮檺缁勯泦鍚� String[] roles = getHkRoles(c.getDoors(),roleList); if(roles==null || roles.length ==0){ //浣跨敤榛樿璁垮鏉冮檺缁� - request.getVisitorPermissionSet().setDefaultPrivilegeGroupFlag(Constants.ONE+""); + p.setDefaultPrivilegeGroupFlag(Constants.ONE+""); }else{ //鎸囧畾鏈夋晥娴峰悍璁垮鏉冮檺缁勬暟鎹� - request.getVisitorPermissionSet().setDefaultPrivilegeGroupFlag(Constants.ZERO+""); - request.getVisitorPermissionSet().setPrivilegeGroupIds(roles); + p.setDefaultPrivilegeGroupFlag(Constants.ZERO+""); + p.setPrivilegeGroupIds(roles); } + return p; + } + + private VisitAppointmentRequest getHkRequestPara(Visits c,List<DeviceRole> roleList,String path ) { + VisitAppointmentRequest request = new VisitAppointmentRequest(); + //鐢宠浜轰俊鎭� + VisitAppointmentVistorRequest info =getRequestInfoByVisit(c,path); + if(info == null ){ + //浜鸿劯涓虹┖锛屼笉鑳借繘琛屾帹閫� + return null; + } + request.setVisitStartTime(DateUtil.getISO8601Timestamp(c.getStarttime())); + request.setVisitEndTime(DateUtil.getISO8601Timestamp(c.getEndtime())); + request.setReceptionistId(c.getReceptMemberHkId());//琚浜烘捣搴风紪鐮� + request.setVisitPurpose(c.getReason()); + //鑾峰彇鏉冮檺缁勯泦鍚� + request.setVisitorPermissionSet(getVisitPermissonRequest(roleList,c)); List<VisitAppointmentVistorRequest> infolist = new ArrayList<>(); - //鐢宠浜� - infolist.add(getRequestInfoByVisit(c)); - if(c.getVisitsList() != null){ - //闅忚浜� - for(Visits v : c.getVisitsList()){ - infolist.add(getRequestInfoByVisit(v)); - } - } + infolist.add(info); request.setVisitorInfoList(infolist); return request; } - private VisitAppointmentVistorRequest getRequestInfoByVisit(Visits c) { + private VisitAppointmentVistorRequest getRequestInfoByVisit(Visits c,String path) { VisitAppointmentVistorRequest info = new VisitAppointmentVistorRequest(); + //浜鸿劯鏁版嵁 + if(StringUtils.isBlank(c.getName()) + ||StringUtils.isBlank(c.getPhone()) + || StringUtils.isBlank(c.getFaceImg()) ){ + return null; + } + if(StringUtils.isNotBlank(c.getFaceImg())){ + info.setVisitorPhoto(ImageBase64Util.Image2Base64(path+c.getFaceImg())); + } + if(info.getVisitorPhoto() == null){ + return null; + } info.setVisitorName(c.getName()); info.setVisitorWorkUnit(c.getCompanyName()); info.setPhoneNo(c.getPhone()); + info.setPlateNo(c.getCarNos()); + if(Constants.equalsInteger(c.getIdcardType(),Constants.ZERO)){ + info.setCertificateType(HKConstants.CertificateType.SHENFENZHENG.getKey()+""); + info.setCertificateNo(DESUtil.decrypt(Constants.EDS_PWD, c.getIdcardNo())); + } else if(Constants.equalsInteger(c.getIdcardType(),Constants.TWO)){ + info.setCertificateType(HKConstants.CertificateType.HUZHAO.getKey()+""); + info.setCertificateNo(DESUtil.decrypt(Constants.EDS_PWD, c.getIdcardNo())); + } return info; } -- Gitblit v1.9.3