From bed3eee53f72f47f49b493772a4525e6c6b3e7be Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期三, 31 七月 2024 09:05:37 +0800 Subject: [PATCH] 修复bug --- server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java | 783 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 760 insertions(+), 23 deletions(-) diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java index ea07eab..c8ea0c7 100644 --- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java +++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java @@ -1,20 +1,39 @@ package com.doumee.service.business.impl.hksync; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.doumee.config.DataSyncConfig; import com.doumee.config.SpringContextUtil; import com.doumee.core.haikang.model.HKConstants; +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.EventVisitRequest; -import com.doumee.dao.business.model.InterfaceLog; +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; +import com.doumee.dao.business.*; +import com.doumee.dao.business.join.VisitsJoinMapper; +import com.doumee.dao.business.model.*; +import com.doumee.dao.system.model.SystemUser; +import com.doumee.service.business.DeviceEventService; import com.doumee.service.business.InterfaceLogService; +import com.doumee.service.business.MemberService; +import com.github.yulichang.interfaces.MPJBaseJoin; +import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.hikvision.artemis.sdk.config.ArtemisConfig; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; import java.util.Date; +import java.util.List; /** * 璁垮鏉冮檺缁勪俊鎭〃Service瀹炵幇 @@ -26,7 +45,27 @@ public class HkSyncPushServiceImpl extends HkSyncBaseServiceImpl { @Autowired - private InterfaceLogService interfaceLogService; + private InterfaceLogMapper interfaceLogMapper; + @Autowired + private CarsMapper carsMapper; + @Autowired + private ParkBookMapper parkBookMapper; + @Autowired + private DeviceEventMapper deviceEventMapper; + @Autowired + private MemberMapper memberMapper; + @Autowired + private DeviceMapper deviceMapper; + @Autowired + private DataSyncConfig dataSyncConfig; + @Autowired + private CarEventMapper carEventMapper; + @Autowired + private VisitEventMapper visitEventMapper; + @Autowired + private VisitsJoinMapper visitsMapper; + @Autowired + private RetentionMapper retentionMapper; /** * 娴峰悍闂ㄧ浜嬩欢鎺ㄩ�� * @param param @@ -38,15 +77,232 @@ log.info("銆愭捣搴烽棬绂佷簨浠舵帹閫併��========寮�濮�=========锛歕n"+JSONObject.toJSONString(param)); String result = null; try { - - + if(param == null || param.getParams() == null || param.getParams().getEvents()==null){ + return null; + } + //闂ㄧ浜嬩欢闆嗗悎 + List<EventAcsInfoRequest> events = param.getParams().getEvents(); + List<DeviceEvent> list = new ArrayList<>(); + List<Integer> delRetentionLis = new ArrayList<>(); + List<Retention> retentionList = new ArrayList<>(); + for(EventAcsInfoRequest request : events){ + EventDeviceDataRequest model = request.getData(); + if(model ==null){ + continue; + } + //鏍规嵁鎺ㄩ�佷汉鍛樼紪鐮侊紝澶勭悊鍦ㄥ満銆佺鍦轰汉鍛樻暟鎹褰� + dealMemberDataByRequest(request,delRetentionLis,retentionList); + //灏佽闂ㄧ浜嬩欢淇℃伅琛ㄥ璞� + list.add(getDeviceEventModelByRequest(request)); + } + if(list.size()>0){ + //鎻掑叆闂ㄧ璁板綍 + deviceEventMapper.insertBatchSomeColumn(list); + } + if(delRetentionLis.size()>0){ + //鍏堝垹闄ゅ師鏈夌殑鍦ㄥ満浜哄憳(鍐呴儴浜哄憳锛� + retentionMapper.delete(new UpdateWrapper<Retention>().lambda() + .eq(Retention::getType,Constants.memberType.internal) + .in(Retention::getMemberId,delRetentionLis)); + } + if(retentionList.size()>0){ + //鍐嶆彃鍏ユ渶鏂扮殑鍦ㄥ巶浜哄憳 + retentionMapper.insertBatchSomeColumn(retentionList); + } log.error("銆愭捣搴烽棬绂佷簨浠舵帹閫併��========鎴愬姛======="); }catch (Exception e) { - log.error("銆愭捣搴烽棬绂佷簨浠舵帹閫併��========澶辫触=======锛歕n" + e.getMessage()); }finally { - saveInterfaceLog(param,"/business/hksync/push/acs",result); + saveInterfaceLog(param,"/business/hksync/push/acs",result,false);//涓嶈鏃ュ織 } + return null; + + } + + /** + * 鏍规嵁鎺ㄩ�佷汉鍛樼紪鐮侊紝澶勭悊鍦ㄥ満銆佺鍦轰汉鍛樻暟鎹褰� + * @param request + * @param delRetentionLis + * @param retentionList + */ + private void dealMemberDataByRequest(EventAcsInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList) { + //娴峰悍浜哄憳缂栫爜 + String userNo = request.getData().getExtEventPersonNo(); + if(StringUtils.isNotBlank(userNo)){ + Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getHkId,userNo).last("limit 1")); + if(member !=null){ + //濡傛灉浜哄憳淇℃伅瀛樺湪锛屽垯鍒犻櫎涔嬪墠鐨勬墍鏈夎繘鍦烘暟鎹紙鏃犺姝ゆ鎺ㄩ�佹槸杩涘巶杩樻槸鍑哄満鎺ㄩ�佷簨浠讹級 + Device d = deviceMapper.selectOne(new QueryWrapper<Device>().lambda() + .eq(Device::getDoorId,request.getSrcIndex()) + .eq(Device::getIsdeleted,Constants.ZERO) + .last("limit 1" )); + delRetentionLis.add(member.getId()); + if(!(Constants.equalsInteger(d.getIsEntrance(),Constants.ONE) && Constants.formatIntegerNum(request.getData().getExtEventInOut()) != Constants.ONE)){ + //濡傛灉鏄繘闂紝褰曞叆浜哄憳鐨勫湪鍦烘暟鎹褰� + retentionList.add(getRetentionModelByRequest(member,request)); + } + } + } + } + + public static String getHkImgUrl(String url){ + if(StringUtils.isBlank(url)){ + return null; + } + return HKConstants.IMG_INDEX+url; + } + /** + *灏佽闂ㄧ浜嬩欢淇℃伅琛ㄥ璞� + */ + private DeviceEvent getDeviceEventModelByRequest(EventAcsInfoRequest request) { + DeviceEvent event = new DeviceEvent(); + event.setIsdeleted(Constants.ZERO); + event.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); + event.setEventId(request.getEventId()); + event.setEventType(request.getEventType()); + event.setAccessChannel(request.getData().getExtAccessChannel()); + event.setUserType(request.getData().getUserType()); + event.setSvrIndexCode(request.getData().getSvrIndexCode()); + event.setStatus(request.getStatus()); + event.setExtEventType(request.getData().getExtEventType()!=null?request.getData().getExtEventType():null); + event.setSrcType(request.getSrcType()); + event.setSrcName(request.getSrcName()); + event.setSrcIndex(request.getSrcIndex()); + event.setSrcParentIndex(request.getSrcParentIndex()); + event.setSeq(request.getData().getSeq()); + event.setTimeout(request.getTimeout()); + event.setExtEventType(request.getData().getExtEventType()); + event.setHappenTime(request.getHappenTime()); + event.setExtReceiveTime(request.getData().getExtReceiveTime()); + event.setExtEventWhiteListNo(request.getData().getExtEventWhiteListNo()); + event.setExtEventWhiteListNo(request.getData().getExtEventWhiteListNo()); + event.setExtEventVerifyID(request.getData().getExtEventVerifyID()); + event.setExtEventRoleID(request.getData().getExtEventRoleID()); + event.setExtEventReportChannel(request.getData().getExtEventReportChannel()); + event.setExtEventReaderKind(request.getData().getExtEventReaderKind()); + event.setExtEventReaderID(request.getData().getExtEventReaderID()); + event.setExtEventPictureURL(getHkImgUrl(request.getData().getExtEventPictureURL())); + event.setExtEventPersonNo(request.getData().getExtEventPersonNo()); + event.setExtEventMainDevID(request.getData().getExtEventMainDevID()); + event.setExtEventLocalControllerID(request.getData().getExtEventLocalControllerID()); + event.setExtEventInOut(request.getData().getExtEventInOut()); + event.setExtEventIDCardPictureURL(getHkImgUrl(request.getData().getExtEventIDCardPictureURL())); + event.setExtEventEwipNum(request.getData().getExtEventSwipNum()); + event.setExtEventEubDevID(request.getData().getExtEventMainDevID()); + event.setExtEventDoorID(request.getData().getExtEventDoorID()); + event.setExtEventCode(request.getData().getExtEventCode()); + event.setExtEventCaseID(request.getData().getExtEventCaseID()); + event.setExtEventCardNo(request.getData().getExtEventCardNo()); + event.setExtEventAlarmOutID(request.getData().getExtEventAlarmOutID()); + event.setExtEventAlarmInID(request.getData().getExtEventAlarmInID()); + event.setExtAccessChannel(request.getData().getExtAccessChannel()); + //閫氶亾浜嬩欢淇℃伅 + if(request.getData().getExtEventCustomerNumInfo() !=null){ + event.setTotalTimes(request.getData().getExtEventCustomerNumInfo().getTotalTimes()); + event.setEntryTimes(request.getData().getExtEventCustomerNumInfo().getEntryTimes()); + event.setExitTimes(request.getData().getExtEventCustomerNumInfo().getExitTimes()); + event.setAccessChannel(request.getData().getExtEventCustomerNumInfo().getAccessChannel()); + } + if(request.getData().getExtEventIdentityCardInfo() !=null){ + //浜哄憳韬唤璇佷欢淇℃伅 + event.setBirth(request.getData().getExtEventIdentityCardInfo().getBirth()); + String idnum = request.getData().getExtEventIdentityCardInfo().getIdNum(); + if(StringUtils.isNotBlank(idnum)){ + //韬唤璇佸彿瀛樺偍瀵嗘枃 + event.setIdNum(DESUtil.encrypt(Constants.EDS_PWD,idnum));//韬唤璇佸彿鍔犲瘑 + //鑴辨晱鎵嬫満鍙锋樉绀簄 + event.setIdcardDecode(Constants.getTuominStr(idnum)); + } + event.setAddress(request.getData().getExtEventIdentityCardInfo().getAddress()); + event.setSex(request.getData().getExtEventIdentityCardInfo().getSex()); + event.setName(request.getData().getExtEventIdentityCardInfo().getName()); + event.setEndDate(request.getData().getExtEventIdentityCardInfo().getEndDate()); + event.setStartDate(request.getData().getExtEventIdentityCardInfo().getStartDate()); + event.setTermOfValidity(request.getData().getExtEventIdentityCardInfo().getTermOfValidity()); + } + return event; + } + + /** + * 杩涘巶瀵硅薄灏佽鎴愬湪鍦轰汉鍛� + * @param member + * @param request + * @return + */ + private Retention getRetentionModelByRequest(Member member, EventAcsInfoRequest request) { + Retention retention = new Retention(); + retention.setIsdeleted(Constants.ZERO); + retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); + retention.setClasses(member.getClasses()); + retention.setCode(member.getCode()); + retention.setIdcardNo(member.getIdcardNo()); + retention.setIdcardDecode(member.getIdcardDecode()); + retention.setName(member.getName()); + retention.setBirthday(member.getBirthday()); + retention.setType(member.getType()); + retention.setCompanyId(member.getCompanyId()); + retention.setCompanyName(member.getCompanyName()); + retention.setEventCode(request.getData().getExtEventCode()+""); + retention.setEventDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); + retention.setFaceImg(member.getFaceImg()); + retention.setImgurl(member.getImgurl()); + retention.setPhone(member.getPhone()); + retention.setMemberId(member.getId()); + retention.setDeviceName(request.getSrcName()); + retention.setDeviceIndex(request.getSrcIndex()); + + return retention; + } + + /** + * 娴峰悍璁垮浜嬩欢鎺ㄩ�� + * @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.insertBatchSomeColumn(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.insertBatchSomeColumn(retentionList); + } + log.error("銆愭捣搴疯瀹簨浠舵帹閫併��========鎴愬姛======="); + }catch (Exception e){ + + log.error("銆愭捣搴疯瀹簨浠舵帹閫併��========澶辫触=======锛歕n"+e.getMessage()); + } + saveInterfaceLog(param,"/business/hksync/push/visitIccm",result,true); return null; } @@ -61,15 +317,350 @@ log.info("銆愭捣搴疯瀹簨浠舵帹閫併��==========寮�濮�=======锛歕n"+JSONObject.toJSONString(param)); String result = null; try { - + if(param == null || param.getParams() == null || param.getParams().getEvents()==null){ + return null; + } + //闂ㄧ浜嬩欢闆嗗悎 + List<EventVisitInfoRequest> events = param.getParams().getEvents(); + List<VisitEvent> list = new ArrayList<>(); + List<Integer> delRetentionLis = new ArrayList<>(); + List<Retention> retentionList = new ArrayList<>(); + for(EventVisitInfoRequest request : events){ + if(request.getData() ==null ||StringUtils.isBlank(request.getData().getVisitorId())){ + continue; + } + //娴峰悍璁垮璁板綍缂栫爜 + if(StringUtils.isNotBlank(request.getData().getVisitorId())){ + //鏍规嵁璁垮鎺ㄩ�佽瀹㈣褰曠紪鐮侊紝澶勭悊璁垮璁板綍銆佸湪鍦轰汉鍛樼瓑淇℃伅 + dealVisitDataByRequst(request,delRetentionLis,retentionList); + } + //灏佽闂ㄧ浜嬩欢淇℃伅琛ㄥ璞� + list.add(getVisitEventModelByRequest(request)); + } + if(list.size()>0){ + //鎻掑叆闂ㄧ璁板綍 + visitEventMapper.insertBatchSomeColumn(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.insertBatchSomeColumn(retentionList); + } log.error("銆愭捣搴疯瀹簨浠舵帹閫併��========鎴愬姛======="); }catch (Exception e){ log.error("銆愭捣搴疯瀹簨浠舵帹閫併��========澶辫触=======锛歕n"+e.getMessage()); } - saveInterfaceLog(param,"/business/hksync/push/visit",result); + saveInterfaceLog(param,"/business/hksync/push/visit",result,true); return null; + } + + /** + * 鏍规嵁璁垮鎺ㄩ�佽瀹㈣褰曠紪鐮侊紝澶勭悊璁垮璁板綍銆佸湪鍦轰汉鍛樼瓑淇℃伅 + */ + private void dealVisitDataByRequstIccm(EventVisitIccmInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList,List<VisitEvent> list) { + EventVisitIccmInvoiceParamRequest data = request.getData().getVisitorInvoices(); + Integer memberId = null; + if(request.getData().getTargetPerson().getPersonId()!=null){ + Member m = memberMapper.selectOne(new QueryWrapper<Member>().lambda() + .eq(Member::getHkId,request.getData().getTargetPerson().getPersonId()) + .eq(Member::getIsdeleted,Constants.ZERO) + .last( "limit 1")); + if(m!=null){ + memberId = m.getId(); + } + } + for(EventVisitIccmDetailParamRequest model : request.getData().getVisitorInformationList()){ + + Visits updateVistis = new Visits(); + MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>(); + queryWrapper.selectAll(Visits.class); + queryWrapper.selectAs(Member::getType,Visits::getMemberType); + queryWrapper.eq(Visits::getHkId,model.getVisitorId() ); + 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; + } + 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.VisitIccmStatus.signin); + updateVistis.setInDate(DateUtil.getISO8601DateByStr(data.getBeginTime())); + updateVistis.setOutDate(DateUtil.getISO8601DateByStr(data.getFinishTime())); + updateVistis.setEditDate(new Date()); + //鏇存柊璁垮鏉ヨ鎴栬�呯绂绘椂闂翠俊鎭� + visitsMapper.updateById(updateVistis); + //鏇存柊鏈�鏂版潵璁挎椂闂� + 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.VisitIccmStatus.signout); + updateVistis.setInDate(DateUtil.getISO8601DateByStr(data.getBeginTime())); + updateVistis.setOutDate(DateUtil.getISO8601DateByStr(data.getFinishTime())); + updateVistis.setOutType(Constants.ZERO); + updateVistis.setOutInfo("璁垮姝e父绛剧"); + updateVistis.setEditDate(new Date()); + //鏇存柊璁垮鏉ヨ鎴栬�呯绂绘椂闂翠俊鎭� + visitsMapper.updateById(updateVistis); + }else{ + updateVistis.setStatus(visits.getStatus()); + } + }else{ + //鏂板璁垮鐧昏鏁版嵁 + addNewVisitInfo(request,model,updateVistis.getStatus()); + } + //灏佽闂ㄧ浜嬩欢淇℃伅琛ㄥ璞� + list.add(getVisitEventModelByRequest(request,model)); + } + } + + private void addNewVisitInfo(EventVisitIccmInfoRequest request, EventVisitIccmDetailParamRequest model,Integer status) { + try{ + Visits c = new Visits(); + c.setHkId(model.getVisitorId()); + c.setCode(model.getAppointmentCode()); + c.setName(model.getVisitorName()); + c.setHkStatus(Constants.ONE); + c.setHkDate(new Date()); + c.setIsdeleted(Constants.ZERO); + c.setCreateDate(c.getHkDate()); + c.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, model.getCertNo())); + c.setIdcardDecode(Constants.getTuominStr(model.getCertNo())); + c.setIdcardType( model.getCertType()); + c.setStarttime(DateUtil.getISO8601DateByStr2(request.getData().getVisitorInvoices().getBeginTime())); + c.setEndtime(DateUtil.getISO8601DateByStr2(request.getData().getVisitorInvoices().getFinishTime())); + c.setReason(request.getData().getVisitorInvoices().getVisitReason()); + c.setStatus(status); + c.setType(Constants.ONE); + if(StringUtils.isNotBlank(request.getData().getTargetPerson().getPersonId())){ + //琚闂汉 + Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getHkId + ,request.getData().getTargetPerson().getPersonId()).last("limit 1")); + c.setReceptMemberId(member!=null?member.getId():null); + } + c.setCompanyName(model.getUnit()); + c.setPhone(model.getPhone()); + c.setCarNos(model.getPlateNo()); + if(StringUtils.isNotBlank(model.getCertNo())){ + //琚闂汉 + Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda() + .eq(Member::getType,Constants.ONE) + .eq(Member::getIdcardNo , c.getIdcardNo()) + .last("limit 1")); + if(member == null){ + member = new Member(); + member.setName(model.getVisitorName()); + member.setPhone(model.getPhone()); + member.setSex(model.getSex()); + member.setIsdeleted(Constants.ZERO); + member.setType(Constants.ONE); + member.setIdcardNo(c.getIdcardNo()); + member.setIdcardDecode(c.getIdcardDecode()); + member.setVisitCompanyName(model.getUnit()); + member.setCreateDate(new Date()); + if(StringUtils.isNotBlank(model.getFacePic())){ + member.setImgurl(HKConstants.IMG_INDEX+model.getFacePic()); + member.setFaceServerIndexCode(model.getFaceDeviceId()); + } + memberMapper.insert(member); + }else{ + member.setIsdeleted(Constants.ZERO); + member.setEditDate(new Date()); + member.setName(model.getVisitorName()); + member.setPhone(model.getPhone()); + member.setSex(model.getSex()); + member.setVisitCompanyName(model.getUnit()); + if(StringUtils.isNotBlank(model.getFacePic())){ + member.setImgurl(HKConstants.IMG_INDEX+model.getFacePic()); + member.setFaceServerIndexCode(model.getFaceDeviceId()); + } + memberMapper.updateById(member); + } + c.setMemberId(member.getId()); + visitsMapper.insert(c); + } + }catch (Exception e){ + log.error("====================璁垮鎺ㄩ�佹柊澧炶瀹㈣褰曞け璐�:"+e.getMessage()); + } + } + + private void dealVisitDataByRequst(EventVisitInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList) { + EventVisitDataRequest model = request.getData(); + MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>(); + queryWrapper.selectAll(Visits.class); + queryWrapper.selectAs(Member::getType,Visits::getMemberType); + queryWrapper.eq(Visits::getHkId,model.getVisitorId() ); + 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_IN.getKey()){ + //濡傛灉鏄瀹㈢櫥璁帮紝褰曞叆浜哄憳鐨勫湪鍦烘暟鎹褰� + retentionList.add(getRetentionModelByVisitRequest(visits, request.getHappenTime(),request.getSrcType())); + //鏉ヨ鏃堕棿 + updateVistis.setStatus(Constants.VisitStatus.signin); + updateVistis.setInDate(DateUtil.getISO8601DateByStr(model.getStartTime())); + updateVistis.setOutDate(DateUtil.getISO8601DateByStr(model.getEndTime())); + //鏇存柊鏈�鏂版潵璁挎椂闂� + Member member = new Member(); + member.setLastVisitDate(updateVistis.getInDate()); + member.setId(visits.getMemberId()); + memberMapper.updateById(member); + }else { + //濡傛灉鏄瀹㈢绂讳簨浠� + updateVistis.setStatus(Constants.VisitStatus.signout); + updateVistis.setInDate(DateUtil.getISO8601DateByStr(model.getStartTime())); + updateVistis.setOutDate(DateUtil.getISO8601DateByStr(model.getEndTime())); + updateVistis.setOutType(Constants.ZERO); + updateVistis.setOutInfo("璁垮姝e父绛剧"); + } + updateVistis.setEditDate(new Date()); + //鏇存柊璁垮鏉ヨ鎴栬�呯绂绘椂闂翠俊鎭� + visitsMapper.updateById(updateVistis) ; + } + } + + 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; + } + private VisitEvent getVisitEventModelByRequest(EventVisitInfoRequest request) { + VisitEvent event = new VisitEvent(); + event.setIsdeleted(Constants.ZERO); + event.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); + event.setVisitorWorkUint(request.getData().getVisitorWorkUint()); + event.setVisitorId(request.getData().getVisitorId()); + event.setVisitorCode(request.getData().getVisitorCode()); + event.setTimeout(request.getTimeout()); + event.setSvrIndexCode(request.getData().getSvrIndexCode()); + event.setHappenTime(request.getHappenTime()); + event.setStatus(request.getStatus()); + event.setEndTime(request.getData().getEndTime()); + event.setStartTime(request.getData().getStartTime()); + event.setSrcType(request.getSrcType()); + event.setSrcParentIndex(request.getSrcParentIndex()); + event.setSrcName(request.getSrcName()); + event.setSrcIndex(request.getSrcIndex()); + event.setSignOrg(request.getData().getSignOrg()); + event.setSex(request.getData().getSex()); + event.setPurpose(request.getData().getPurpose()); + event.setPhone(request.getData().getPhone()); + event.setBeVisitedPersonId(request.getData().getBeVisitedPersonId()); + event.setBeVisitedPersonName(request.getData().getBeVisitedPersonName()); + event.setBeVisitedPersonOrg(request.getData().getBeVisitedPersonOrg()); + event.setBeVisitedPersonOrgId(request.getData().getBeVisitedPersonOrgId()); + event.setVisitorWorkUint(request.getData().getVisitorWorkUint()); + event.setPhotoUrl(getHkImgUrl(request.getData().getPhotoUrl())); + event.setPersonName(request.getData().getPersonName()); + event.setCarNo(request.getData().getCarNo()); + event.setCaptureUrl(request.getData().getCaptureUrl()); + if(StringUtils.isNotBlank(request.getData().getCaptureUrl())){ + event.setCaptureUrl(HKConstants.IMG_INDEX+request.getData().getCaptureUrl()); + } + if(StringUtils.isNotBlank(request.getData().getPhotoUrl())){ + + event.setPhotoUrl(HKConstants.IMG_INDEX+request.getData().getPhotoUrl()); + } + event.setIdType(request.getData().getIdType()); + String idnum =request.getData().getIdNo(); + 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; + } + + 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; } /** @@ -83,29 +674,175 @@ String result = null; log.info("銆愭捣搴峰仠杞﹀満浜嬩欢鎺ㄩ�併��========寮�濮�=========锛歕n"+JSONObject.toJSONString(param)); try { - - log.error("銆愭捣搴峰仠杞﹀満浜嬩欢鎺ㄩ�併��========鎴愬姛======="); + if(param == null || param.getParams() == null || param.getParams().getEvents()==null){ + return null; + } + //闂ㄧ浜嬩欢闆嗗悎 + List<EventParkInfoRequest> events = param.getParams().getEvents(); + List<CarEvent> list = new ArrayList<>(); + List<Retention> retentionList = new ArrayList<>(); + List<String> delRetentionList = new ArrayList<>(); + for(EventParkInfoRequest request : events){ + if(request.getData() ==null ||StringUtils.isBlank(request.getData().getPlateNo())){ + continue; + } + //灏佽浜嬩欢淇℃伅琛ㄥ璞� + list.add(getParkEventModelByRequest(request,delRetentionList,retentionList)); + } + if(list.size()>0){ + //鎻掑叆闂ㄧ璁板綍 + carEventMapper.insertBatchSomeColumn(list); + } + if(delRetentionList.size()>0){ + //鍏堝垹闄ゅ師鏈夌殑鍦ㄥ満浜哄憳(鍐呴儴浜哄憳锛� + retentionMapper.delete(new UpdateWrapper<Retention>().lambda() + .eq(Retention::getType,Constants.THREE) + .in(Retention::getCarNo,delRetentionList)); + } + if(retentionList.size()>0){ + //鍐嶆彃鍏ユ渶鏂扮殑鍦ㄥ巶浜哄憳 + retentionMapper.insertBatchSomeColumn(retentionList); + } + log.info("銆愭捣搴峰仠杞﹀満浜嬩欢鎺ㄩ�併��========鎴愬姛======="); }catch (Exception e){ log.error("銆愭捣搴峰仠杞﹀満浜嬩欢鎺ㄩ�併��========澶辫触=======锛歕n"+e.getMessage()); } - saveInterfaceLog(param,"/business/hksync/push/parks",result); + saveInterfaceLog(param,"/business/hksync/push/parks",result,false); return null; } + /** + * 鏍规嵁鎺ㄩ�佹暟鎹皝瑁呭仠杞︿簨浠跺璞′俊鎭� + * @param request + * @return + */ + private CarEvent getParkEventModelByRequest(EventParkInfoRequest request, List<String> delRetentionList , List<Retention> retentionList ) { + CarEvent event = new CarEvent(); + event.setIsdeleted(Constants.ZERO); + event.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); + event.setVehicleType(request.getData().getVehicleType()); + event.setVehicleColor(request.getData().getVehicleColor()); + event.setVehicleClass(request.getData().getVehicleClass()); + event.setTimestr(request.getData().getTime()); + event.setEventId(request.getEventId()); + event.setTimeout(request.getTimeout()); + event.setSvrIndex(request.getData().getSvrIndex()); + event.setSubModel(request.getData().getSubModel()); + event.setSubLogo(request.getData().getSubLogo()); + event.setStatus(request.getStatus()); + event.setSrcType(request.getSrcType()); + event.setSrcParentIndex(request.getSrcParentIndex()); + event.setSrcName(request.getSrcName()); + event.setSrcIndex(request.getSrcIndex()); + event.setRoadwayType(request.getData().getRoadwayType()); + event.setRoadwayName(request.getData().getRoadwayName()); + event.setRoadwayIndex(request.getData().getRoadwayIndex()); + event.setPlateType(request.getData().getPlateType()); + event.setTimeout(request.getTimeout()); + event.setPlateNos(request.getData().getPlateNo()); + event.setPlateColor(request.getData().getPlateColor()); + event.setPlateBelieve(request.getData().getPlateBelieve()); + event.setParkName(request.getData().getParkName()); + event.setParkIndex(request.getData().getParkIndex()); + event.setMainLogo(request.getData().getMainLogo()); + event.setInoutType(request.getData().getInoutType()); + event.setHappenTime(request.getHappenTime()); + event.setGateName(request.getData().getGateName()); + event.setGateIndex(request.getData().getGateIndex()); + event.setEventType(request.getEventType()); + event.setEventIndex(request.getData().getEventIndex()); + event.setEventCmd(request.getData().getEventCmd()); + event.setCardNo(request.getData().getCardNo()); + event.setCarAttributeName(request.getData().getCarAttributeName()); - private void saveInterfaceLog(Object param, String path,String result) { - InterfaceLog hkMonitoryLogDO=new InterfaceLog(); - hkMonitoryLogDO.setType(1); - hkMonitoryLogDO.setCreateDate(new Date()); - hkMonitoryLogDO.setIsdeleted(0); - if(param!=null){ - hkMonitoryLogDO.setRequest(JSONObject.toJSONString(param)); + if(request.getData().getInResult()!=null && request.getData().getInResult().getRlsResult() !=null ){ + //鏀捐鏂瑰紡 + event.setReleaseWay(request.getData().getInResult().getRlsResult().getReleaseWay()); + event.setReleaseAuth(request.getData().getInResult().getRlsResult().getReleaseAuth()); + event.setReleaseReason(request.getData().getInResult().getRlsResult().getReleaseReason()); + event.setReleaseResult(request.getData().getInResult().getRlsResult().getReleaseResult()); + event.setReleaseResultEx(request.getData().getInResult().getRlsResult().getReleaseResultEx()); } - hkMonitoryLogDO.setRepose(result); - hkMonitoryLogDO.setName(path); - hkMonitoryLogDO.setUrl(path); - interfaceLogService.create(hkMonitoryLogDO); + + if(request.getData().getPicUrl()!=null){ + //杞﹁締鍜屽拰杞︾墝鐓х墖 + event.setVehiclePicUrl(getHkImgUrl(request.getData().getPicUrl().getVehiclePicUrl())); + event.setPlatePicUrl(getHkImgUrl(request.getData().getPicUrl().getPlatePicUrl())); + } + if(StringUtils.isNotBlank(event.getPlateNos())){ + ParkBook cars = parkBookMapper.selectOne(new QueryWrapper<ParkBook>().lambda() + .eq(ParkBook::getCarCode,event.getPlateNos()) + .eq(ParkBook::getParkId,event.getParkIndex()) + .eq(ParkBook::getIsdeleted,Constants.ZERO ) + .last("limit 1" )); + Cars c = carsMapper.selectOne(new QueryWrapper<Cars>().lambda() + .eq(Cars::getCode,event.getPlateNos()) + .eq(Cars::getIsdeleted,Constants.ZERO) + .last("limit 1" )); + if(cars!=null || c!=null){ + //浼樺厛鏌ヨ鍐呴儴杞﹁締淇℃伅 + event.setMemberId(cars!=null?cars.getMemberId():(c!=null?c.getMemberId():null)); + }else{ + //鍘昏瀹俊鎭腑鏌ヨ + Visits visits = visitsMapper.selectOne(new QueryWrapper<Visits>().lambda() + .eq(Visits::getCarNos,event.getPlateNos()) + .eq(Visits::getIsdeleted,Constants.ZERO ) + .in(Visits::getStatus,Constants.VisitStatus.signin,Constants.VisitStatus.signout)//鏈�杩戜竴涓凡鍒拌揪鎴栬�呭凡绛剧 + .isNull(Visits::getParentId) + .orderByDesc(Visits::getId) + .last("limit 1" )); + if(visits!=null){ + //鏈�杩戜娇鐢ㄨ杞︾殑鐢宠浜猴紙宸插埌杈撅級 + event.setMemberId(visits.getMemberId()); + } + } + if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_IN.getKey()){ + //濡傛灉鏄叆鍘傛斁琛� + delRetentionList.add(event.getPlateNos()); + retentionList.add(getRetentionModelByParkRequest(request)); + }else if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_OUT.getKey()){ + //濡傛灉鏄嚭鍦烘斁琛� + delRetentionList.add(event.getPlateNos()); + } + } + + return event; + + } + + private Retention getRetentionModelByParkRequest(EventParkInfoRequest request) { + Retention retention = new Retention(); + retention.setIsdeleted(Constants.ZERO); + retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); + retention.setCarNo(request.getData().getPlateNo()); + retention.setType(Constants.THREE); +// retention.setDeviceName(request.getSrcName()); +// retention.setDeviceIndex(request.getSrcIndex()); + + return retention; + } + + private void saveInterfaceLog(Object param, String path,String result,boolean need) { + if(!need){ + return; + } + try { + InterfaceLog hkMonitoryLogDO=new InterfaceLog(); + hkMonitoryLogDO.setType(1); + hkMonitoryLogDO.setCreateDate(new Date()); + hkMonitoryLogDO.setIsdeleted(0); + if(param!=null){ + hkMonitoryLogDO.setRequest(JSONObject.toJSONString(param)); + } + hkMonitoryLogDO.setRepose(result); + hkMonitoryLogDO.setName(path); + hkMonitoryLogDO.setUrl(path); + interfaceLogMapper.insert(hkMonitoryLogDO); + }catch (Exception e){ + + } + } -- Gitblit v1.9.3