From 42f57295f5fe64132c11a25f55cd25c3c8acf167 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期三, 28 八月 2024 15:35:55 +0800 Subject: [PATCH] 最新版本 --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java | 356 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 351 insertions(+), 5 deletions(-) diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java index e34a2ef..09d273b 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java @@ -9,11 +9,8 @@ import com.doumee.core.haikang.model.param.request.event.acs.EventAcsInfoRequest; import com.doumee.core.haikang.model.param.request.event.acs.EventAcsRequest; import com.doumee.core.haikang.model.param.request.event.acs.EventDeviceDataRequest; -import com.doumee.core.haikang.model.param.request.event.parks.EventParkInfoRequest; -import com.doumee.core.haikang.model.param.request.event.parks.EventParkRequest; -import com.doumee.core.haikang.model.param.request.event.visit.EventVisitDataRequest; -import com.doumee.core.haikang.model.param.request.event.visit.EventVisitInfoRequest; -import com.doumee.core.haikang.model.param.request.event.visit.EventVisitRequest; +import com.doumee.core.haikang.model.param.request.event.parks.*; +import com.doumee.core.haikang.model.param.request.event.visit.*; import com.doumee.core.utils.Constants; import com.doumee.core.utils.DESUtil; import com.doumee.core.utils.DateUtil; @@ -68,6 +65,12 @@ private VisitsJoinMapper visitsMapper; @Autowired private RetentionMapper retentionMapper; + @Autowired + private PlatformMapper platformMapper; + @Autowired + private PlatformDeviceMapper platformDeviceMapper; + private PlatformJobMapper platformJobMapper; + private PlatformLogMapper platformLogMapper; /** * 娴峰悍闂ㄧ浜嬩欢鎺ㄩ�� * @param param @@ -311,6 +314,175 @@ } + /** + * 娴峰悍璁垮浜嬩欢鎺ㄩ�� + * @param param + * @param response + * @return + */ + @Override + public String dealVisitEventIccm(EventVisitIccmRequest param, HttpServletResponse response){ + log.info("銆愭捣搴疯瀹簨浠舵帹閫併��==========寮�濮�=======锛歕n"+JSONObject.toJSONString(param)); + String result = null; + try { + if(param == null || param.getParams() == null || param.getParams().getEvents()==null){ + return null; + } + //闂ㄧ浜嬩欢闆嗗悎 + List<EventVisitIccmInfoRequest> events = param.getParams().getEvents(); + List<VisitEvent> list = new ArrayList<>(); + List<Integer> delRetentionLis = new ArrayList<>(); + List<Retention> retentionList = new ArrayList<>(); + for(EventVisitIccmInfoRequest request : events){ + if(request.getData() ==null || request.getData().getVisitorInvoices() ==null){ + continue; + } + if(request.getData().getVisitorInformationList() == null || request.getData().getVisitorInformationList().size() ==0){ + continue; + } + //娴峰悍璁垮璁板綍缂栫爜 + dealVisitDataByRequstIccm(request,delRetentionLis,retentionList,list); + } + if(list.size()>0){ + //鎻掑叆闂ㄧ璁板綍 + visitEventMapper.insert(list); + } + if(delRetentionLis.size()>0){ + //鍏堝垹闄ゅ師鏈夌殑鍦ㄥ満浜哄憳(鏅�氳瀹級 + retentionMapper.delete(new UpdateWrapper<Retention>().lambda() + .eq(Retention::getType,Constants.memberType.visitor) + .in(Retention::getMemberId,delRetentionLis)); + } + if(retentionList.size()>0){ + //鍐嶆彃鍏ユ渶鏂扮殑鍦ㄥ巶浜哄憳 + retentionMapper.insert(retentionList); + } + log.error("銆愭捣搴疯瀹簨浠舵帹閫併��========鎴愬姛======="); + }catch (Exception e){ + log.error("銆愭捣搴疯瀹簨浠舵帹閫併��========澶辫触=======锛歕n"+e.getMessage()); + } + saveInterfaceLog(param,"/business/hksync/push/visitIccm",result,true); + return null; + + } + + /** + * 鏍规嵁璁垮鎺ㄩ�佽瀹㈣褰曠紪鐮侊紝澶勭悊璁垮璁板綍銆佸湪鍦轰汉鍛樼瓑淇℃伅 + */ + private void dealVisitDataByRequstIccm(EventVisitIccmInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList,List<VisitEvent> list) { + + EventVisitIccmDataRequest model = request.getData(); + EventVisitIccmInvoiceParamRequest data = request.getData().getVisitorInvoices(); + MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>(); + queryWrapper.selectAll(Visits.class); + queryWrapper.selectAs(Member::getType,Visits::getMemberType); + queryWrapper.eq(Visits::getHkId,model.getVisitorInvoices().getInvoicesId() );//璁垮鍗曞彿 + queryWrapper.leftJoin(Member.class,Member::getId,Visits::getMemberId ); + queryWrapper.last("limit 1"); + Visits visits = visitsMapper.selectJoinOne(Visits.class,queryWrapper); + if(visits !=null){ + //濡傛灉浜哄憳淇℃伅瀛樺湪锛屽垯鍒犻櫎涔嬪墠鐨勬墍鏈夎繘鍦烘暟鎹紙鏃犺姝ゆ鎺ㄩ�佹槸杩涘巶杩樻槸鍑哄満鎺ㄩ�佷簨浠讹級 + delRetentionLis.add(visits.getMemberId()); + if(dataSyncConfig.getOrgUserDataOrigin() == DataSyncConfig.origin.hk){ + //濡傛灉鏄紛鍒╁ぇ灞忛」鐩紝涓嶅仛澶勭悊 + return; + } + Visits updateVistis = new Visits(); + updateVistis.setId(visits.getId()); + if (Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_ICCM_IN.getKey()) { + //濡傛灉鏄瀹㈢櫥璁帮紝褰曞叆浜哄憳鐨勫湪鍦烘暟鎹褰� + retentionList.add(getRetentionModelByVisitRequest(visits, request.getHappenTime(),request.getSrcType())); + //鏉ヨ鏃堕棿 + updateVistis.setStatus(Constants.VisitStatus.signin); + updateVistis.setInDate(DateUtil.getISO8601DateByStr(data.getBeginTime())); + updateVistis.setOutDate(DateUtil.getISO8601DateByStr(data.getFinishTime())); + //鏇存柊鏈�鏂版潵璁挎椂闂� + Member member = new Member(); + member.setLastVisitDate(updateVistis.getInDate()); + member.setId(visits.getMemberId()); + memberMapper.updateById(member); + }else if (Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_ICCM_OUT.getKey()) { + //濡傛灉鏄瀹㈢绂讳簨浠� + updateVistis.setStatus(Constants.VisitStatus.signout); + updateVistis.setInDate(DateUtil.getISO8601DateByStr(data.getBeginTime())); + updateVistis.setOutDate(DateUtil.getISO8601DateByStr(data.getFinishTime())); + updateVistis.setOutType(Constants.ZERO); + updateVistis.setOutInfo("璁垮姝e父绛剧"); + }else{ + //濡傛灉鏄瀹㈤�氳 + } + updateVistis.setEditDate(new Date()); + //鏇存柊璁垮鏉ヨ鎴栬�呯绂绘椂闂翠俊鎭� + visitsMapper.updateById(updateVistis) ; + } + } + private Retention getRetentionModelByVisitRequest(Visits visits, String happentTime,String srcType) { + Retention retention = new Retention(); + retention.setIsdeleted(Constants.ZERO); + retention.setCreateDate(DateUtil.getISO8601DateByStr(happentTime)); + retention.setClasses(visits.getClasses()); + retention.setCode(visits.getCode()); + retention.setIdcardNo(visits.getIdcardNo()); + retention.setIdcardDecode(visits.getIdcardDecode()); + retention.setName(visits.getName()); + retention.setBirthday(visits.getBirthday()); + retention.setType(visits.getMemberType()); + retention.setCompanyId(visits.getCompanyId()); + retention.setCompanyName(visits.getCompanyName()); + retention.setEventCode(srcType); + retention.setEventDate(retention.getCreateDate()); + retention.setFaceImg(visits.getFaceImg()); + retention.setImgurl(visits.getImgurl()); + retention.setPhone(visits.getPhone()); + retention.setMemberId(visits.getMemberId()); +// retention.setDeviceName(request.getSrcName()); +// retention.setDeviceIndex(request.getSrcIndex()); + + return retention; + } + private VisitEvent getVisitEventModelByRequest(EventVisitIccmInfoRequest request,EventVisitIccmDetailParamRequest detail) { + if(request.getData().getTargetPerson() ==null){ + request.getData().setTargetPerson(new EventVisitIccmTargetParamRequest()); + } + VisitEvent event = new VisitEvent(); + event.setIsdeleted(Constants.ZERO); + event.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); + event.setVisitorWorkUint(detail.getUnit()); + event.setVisitorId(detail.getVisitorId()); + event.setVisitorCode(detail.getAppointmentCode()); + event.setTimeout(request.getTimeout()); + event.setSvrIndexCode(request.getSrcIndex()); + event.setHappenTime(request.getHappenTime()); + event.setStatus(request.getStatus()); + event.setEndTime(request.getData().getVisitorInvoices().getFinishTime()); + event.setStartTime(request.getData().getVisitorInvoices().getBeginTime()); + event.setSrcType(request.getSrcType()); + event.setSrcParentIndex(request.getSrcParentIndex()); + event.setSrcName(request.getSrcName()); + event.setSrcIndex(request.getSrcIndex()); + event.setSex(detail.getSex()); + event.setPurpose(request.getData().getVisitorInvoices().getVisitReason()); + event.setPhone(detail.getPhone()); + event.setBeVisitedPersonId(request.getData().getVisitorInvoices().getVisitTargetId()); + event.setBeVisitedPersonName(request.getData().getTargetPerson().getName()); + event.setBeVisitedPersonOrg(request.getData().getTargetPerson().getOrgPathName()); + event.setBeVisitedPersonOrgId(request.getData().getTargetPerson().getName()); + event.setPhotoUrl(getHkImgUrl(detail.getFacePic())); + event.setPersonName(detail.getVisitorName()); + event.setCarNo(detail.getPlateNo()); + + event.setIdType(detail.getCertType()); + String idnum = detail.getCertNo(); + if(StringUtils.isNotBlank(idnum)){ + //韬唤璇佸彿瀛樺偍瀵嗘枃 + event.setIdNo(DESUtil.encrypt(Constants.EDS_PWD,idnum));//韬唤璇佸彿鍔犲瘑 + //鑴辨晱鎵嬫満鍙锋樉绀簄 + event.setIdcardDecode(Constants.getTuominStr(idnum)); + } + event.setEventType(request.getEventType()); + event.setEventId(request.getEventId()); + return event; + } /** * 鏍规嵁璁垮鎺ㄩ�佽瀹㈣褰曠紪鐮侊紝澶勭悊璁垮璁板綍銆佸湪鍦轰汉鍛樼瓑淇℃伅 */ @@ -603,5 +775,179 @@ interfaceLogMapper.insert(hkMonitoryLogDO); } + /** + * 澶勭悊鏈堝彴宸ヤ綔鐘舵�佷簨浠惰闃呭悗鎺ㄩ�佹暟鎹�昏緫閫昏緫 + * @param param + * @param response + * @return + */ + @Override + public String dealPlatformStatusEvent(EventPlatformRequest param, HttpServletResponse response){ + log.info("銆愭捣搴锋湀鍙板伐浣滅姸鎬佷簨浠舵帹閫併��========寮�濮�=========锛歕n"+JSONObject.toJSONString(param)); + String result = null; + try { + if(param == null || param.getParams() == null || param.getParams().getEvents()==null){ + return null; + } + //闂ㄧ浜嬩欢闆嗗悎 + List<EventPlatformInfoRequest> events = param.getParams().getEvents(); + List<Platform> list = new ArrayList<>(); + for(EventPlatformInfoRequest request : events){ + List<EventPlatformDataRequest> dataList = request.getData(); + if(dataList ==null || dataList.size()==0){ + continue; + } + Integer workStatus = 0; + for(EventPlatformDataRequest data : dataList){ + if( data.getHPWorkingStatus() ==null || data.getHPWorkingStatus().size() ==0){ + continue;//濡備綍鎺ㄩ�佺姸鎬侀泦鍚堜负绌猴紝涓嶅鐞嗚烦杩� + } + PlatformDevice model = platformDeviceMapper.selectOne(new QueryWrapper<PlatformDevice>().lambda() + .eq(PlatformDevice::getDeviceId,request.getSrcIndex()) + .eq(PlatformDevice::getIsdeleted,Constants.ZERO) + .last("limit 1")); + if(model ==null){ + continue;//鐩戞帶鐐规湭鍚屾锛岃烦杩囧鐞� + } + //鍚勮溅閬撹溅杈嗙姸鎬� + for(EventPlatformStatusInfoRequest status : data.getHPWorkingStatus()){ + + + } + break;//鍙鐞嗙涓�涓暟鎹姸鎬� + } + } + result = "鎴愬姛"; + log.error("銆愭捣搴锋湀鍙板伐浣滅姸鎬佷簨浠舵帹閫併��========鎴愬姛======="); + }catch (Exception e) { + result = "澶辫触"+e.getMessage(); + log.error("銆愭捣搴锋湀鍙板伐浣滅姸鎬佷簨浠舵帹閫併��========澶辫触=======锛歕n" + e.getMessage()); + }finally { + saveInterfaceLog(param,"/business/hksync/push/platform/workstatus",result,false);//涓嶈鏃ュ織 + } + return null; + } + /** + * 澶勭悊鏈堝彴杞﹁締鐘舵�佷簨浠惰闃呭悗鎺ㄩ�佹暟鎹�昏緫閫昏緫 + * @param param + * @param response + * @return + */ + @Override + public String dealPlatformCarsEvent(EventPlatformCarsRequest param, HttpServletResponse response){ + log.info("銆愭捣搴锋湀鍙拌溅杈嗙姸鎬佷簨浠舵帹閫併��========寮�濮�=========锛歕n"+JSONObject.toJSONString(param)); + String result = null; + try { + if(param == null || param.getParams() == null || param.getParams().getEvents()==null){ + return null; + } + //闂ㄧ浜嬩欢闆嗗悎 + List<EventPlatformCarsInfoRequest> events = param.getParams().getEvents(); + for(EventPlatformCarsInfoRequest request : events){ + if( request.getData() ==null || request.getData().size()==0){ + continue; + } + Integer workStatus = 0; + for(EventPlatformCarsDataRequest data : request.getData()){ + if( data.getHPVehicleStatus() ==null || data.getHPVehicleStatus().size() ==0){ + continue;//濡備綍鎺ㄩ�佺姸鎬侀泦鍚堜负绌猴紝涓嶅鐞嗚烦杩� + } + PlatformDevice model = platformDeviceMapper.selectOne(new QueryWrapper<PlatformDevice>().lambda() + .eq(PlatformDevice::getDeviceId,request.getSrcIndex()) + .eq(PlatformDevice::getIsdeleted,Constants.ZERO) + .last("limit 1")); + if(model ==null){ + continue;//鐩戞帶鐐规湭鍚屾锛岃烦杩囧鐞� + + } + //鍚勮溅閬撹溅杈嗙姸鎬� + for(EventPlatformCarsStatusInfoRequest status : data.getHPVehicleStatus()){ + if(StringUtils.isBlank(status.getPlateNo())){ + continue;//濡傛灉杞﹁締淇℃伅涓虹┖锛屼笉澶勭悊鐩存帴璺宠繃 + } + PlatformJob job = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda() + .eq(StringUtils.equals(status.getStockStatus(),"front"),PlatformJob::getCarCodeFront,status.getPlateNo() )//鍓嶈溅鐗屽彿 + .eq(!StringUtils.equals(status.getStockStatus(),"front"),PlatformJob::getCarCodeBack,status.getPlateNo() )//鍚庤溅鐗屽彿 + .eq(PlatformJob::getIsdeleted,Constants.ZERO ) + .last("limit 1 ")); + PlatformJob update = new PlatformJob(); + update.setId(job.getId()); + update.setEditDate(new Date()); + if(StringUtils.equals(status.getMotionStatus(),"leave")){ + //濡傛灉鏄溅杈嗙寮� + if(job ==null && !Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){ + continue;//濡傛灉娌℃煡鍒板搴旂殑浣滀笟鎴栬�呬綔涓氬苟闈炰綔涓氫腑锛屼笉鍋氫笟鍔″鐞� + } + //濡傛灉鏄鍦ㄤ綔涓氱殑鐘舵�侊紝鏍囪浣滀笟宸插畬鎴� + update.setStatus(Constants.PlatformJobStatus.DONE.getKey());//浣滀笟宸插畬鎴� + update.setDoneDate(update.getEditDate()); + + }else if(StringUtils.equals(status.getMotionStatus(),"enter")){ + //濡傛灉鏄溅杈嗚繘鍏� + if(job ==null || !Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.CALLED.getKey())){ + //璇存槑杞﹁締杩涢敊鏈堝彴 鎴栬�呰繕鏈彨鍙风姸鎬侊紝鍙戣捣璀﹀憡 + dealCarsInErrorPlatformBiz(job,status); + } + update.setStatus(Constants.PlatformJobStatus.WORKING.getKey());//寮�濮嬩綔涓� + }else{ + continue;//鍏朵粬鐘舵�佷笉澶勭悊锛岃烦杩� + } + platformJobMapper.updateById(update);//鏇存柊浣滀笟鐘舵�� + dealPlatformJobLogBiz(update,status);//璁板綍浣滀笟鏃ュ織 + } + break;//鍙鐞嗙涓�涓暟鎹姸鎬� + } + } + result = "鎴愬姛"; + log.error("銆愭捣搴锋湀鍙拌溅杈嗙姸鎬佷簨浠舵帹閫併��========鎴愬姛======="); + }catch (Exception e) { + result = "澶辫触"+e.getMessage(); + log.error("銆愭捣搴锋湀鍙拌溅杈嗙姸鎬佷簨浠舵帹閫併��========澶辫触=======锛歕n" + e.getMessage()); + }finally { + saveInterfaceLog(param,"/business/hksync/push/platform/workstatus",result,false);//涓嶈鏃ュ織 + } + return null; + } + + /** + * 璁板綍鏈堝彴浣滀笟鏃ュ織 + * @param job + * @param status + */ + private void dealPlatformJobLogBiz(PlatformJob job,EventPlatformCarsStatusInfoRequest status) { + PlatformLog log = new PlatformLog(); + log.setIsdeleted(Constants.ZERO); + log.setCreateDate(new Date()); + log.setEditDate(log.getCreateDate()); + log.setJobId(job.getId()); + log.setObjId(job.getId()+""); + if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.DONE.getKey())){ + //濡傛灉鏄綔涓氬畬鎴� +// log.setObjType(Constants.LOg); + //鏌ヨ鏈�鍚庝竴娆″紑濮嬩綔涓氱殑鏃ュ織 + PlatformLog lastBeginPlatform = platformLogMapper.selectOne(new QueryWrapper<PlatformLog>().lambda() + .eq(PlatformLog::getIsdeleted,Constants.ZERO) + .eq(PlatformLog::getObjType,Constants.PlatformJobStatus.WORKING.getKey()) + .eq(PlatformLog::getJobId,job.getJobId()) + .orderByDesc(PlatformLog::getCreateDate) + .last(" limit 1"); + + }else{ + //濡傛灉鏄綔涓氫腑 + log.setParam1(DateUtil.getDate(lastBeginPlatform.getCreateDate(),"yyyy-MM-dd HH:mm:ss")); +// log.setObjType(Constants.Jobl); + } + + platformLogMapper.insert(log); + } + + /** + * 澶勭悊杞﹁締杩涘叆閿欒鏈堝彴涓氬姟閫昏緫 + * @param model (鏈堝彴璁惧鍏宠仈淇℃伅锛� + * @param status + */ + private void dealCarsInErrorPlatformBiz( PlatformJob model,EventPlatformCarsStatusInfoRequest status) { + //TODO-----------------澶勭悊杞﹁締杩涘叆閿欒鏈堝彴涓氬姟閫昏緫 + } } -- Gitblit v1.9.3