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 |  416 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 380 insertions(+), 36 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 c8884e4..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
@@ -3,6 +3,7 @@
 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;
@@ -10,9 +11,7 @@
 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.visit.*;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DESUtil;
 import com.doumee.core.utils.DateUtil;
@@ -28,7 +27,6 @@
 import com.hikvision.artemis.sdk.config.ArtemisConfig;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
-import org.checkerframework.checker.units.qual.C;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -49,9 +47,17 @@
     @Autowired
     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
@@ -107,7 +113,7 @@
         }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;
 
@@ -126,8 +132,12 @@
             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.formatIntegerNum(request.getData().getExtEventInOut()) == Constants.ONE){
+                if(!(Constants.equalsInteger(d.getIsEntrance(),Constants.ONE) && Constants.formatIntegerNum(request.getData().getExtEventInOut()) != Constants.ONE)){
                     //濡傛灉鏄繘闂紝褰曞叆浜哄憳鐨勫湪鍦烘暟鎹褰�
                     retentionList.add(getRetentionModelByRequest(member,request));
                 }
@@ -149,14 +159,16 @@
         event.setIsdeleted(Constants.ZERO);
         event.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime()));
         event.setEventId(request.getEventId());
-        event.setEventType( request.getData().getExtEventType()!=null?request.getData().getExtEventType()+"":null);
+        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());
@@ -220,7 +232,7 @@
     private Retention getRetentionModelByRequest(Member member, EventAcsInfoRequest request) {
         Retention retention = new Retention();
         retention.setIsdeleted(Constants.ZERO);
-        retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getData().getExtReceiveTime()));
+        retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime()));
         retention.setClasses(member.getClasses());
         retention.setCode(member.getCode());
         retention.setIdcardNo(member.getIdcardNo());
@@ -231,7 +243,7 @@
         retention.setCompanyId(member.getCompanyId());
         retention.setCompanyName(member.getCompanyName());
         retention.setEventCode(request.getData().getExtEventCode()+"");
-        retention.setEventDate(DateUtil.getISO8601DateByStr(request.getData().getExtReceiveTime()));
+        retention.setEventDate(DateUtil.getISO8601DateByStr(request.getHappenTime()));
         retention.setFaceImg(member.getFaceImg());
         retention.setImgurl(member.getImgurl());
         retention.setPhone(member.getPhone());
@@ -242,6 +254,58 @@
         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;
+
+    }
     /**
      * 娴峰悍璁垮浜嬩欢鎺ㄩ��
      * @param param
@@ -292,7 +356,7 @@
 
             log.error("銆愭捣搴疯瀹簨浠舵帹閫併��========澶辫触=======锛歕n"+e.getMessage());
         }
-        saveInterfaceLog(param,"/business/hksync/push/visit",result);
+        saveInterfaceLog(param,"/business/hksync/push/visit",result,true);
         return  null;
 
     }
@@ -300,25 +364,177 @@
     /**
      *  鏍规嵁璁垮鎺ㄩ�佽瀹㈣褰曠紪鐮侊紝澶勭悊璁垮璁板綍銆佸湪鍦轰汉鍛樼瓑淇℃伅
      */
+    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));
+                retentionList.add(getRetentionModelByVisitRequest(visits, request.getHappenTime(),request.getSrcType()));
                 //鏉ヨ鏃堕棿
-                updateVistis.setOutDate(DateUtil.getISO8601DateByStr(model.getStartTime()));
+                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父绛剧");
@@ -329,6 +545,49 @@
         }
     }
 
+    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);
@@ -338,7 +597,9 @@
         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());
@@ -347,8 +608,23 @@
         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)){
@@ -359,16 +635,14 @@
         }
         event.setEventType(request.getEventType());
         event.setEventId(request.getEventId());
-        event.setHappenTime(event.getHappenTime());
-
         return event;
     }
 
-    private Retention getRetentionModelByVisitRequest(Visits visits, EventVisitInfoRequest request) {
+    private Retention getRetentionModelByVisitRequest(Visits visits, String happentTime,String srcType) {
         Retention retention = new Retention();
         retention.setIsdeleted(Constants.ZERO);
-        retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime()));
-        retention.setClasses(visits.getMemberClasses());
+        retention.setCreateDate(DateUtil.getISO8601DateByStr(happentTime));
+        retention.setClasses(visits.getClasses());
         retention.setCode(visits.getCode());
         retention.setIdcardNo(visits.getIdcardNo());
         retention.setIdcardDecode(visits.getIdcardDecode());
@@ -377,14 +651,14 @@
         retention.setType(visits.getMemberType());
         retention.setCompanyId(visits.getCompanyId());
         retention.setCompanyName(visits.getCompanyName());
-        retention.setEventCode(request.getEventType()+"");
+        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());
+//        retention.setDeviceName(request.getSrcName());
+//        retention.setDeviceIndex(request.getSrcIndex());
 
         return retention;
     }
@@ -406,23 +680,35 @@
             //闂ㄧ浜嬩欢闆嗗悎
             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));
+                list.add(getParkEventModelByRequest(request,delRetentionList,retentionList));
             }
             if(list.size()>0){
                 //鎻掑叆闂ㄧ璁板綍
                 carEventMapper.insertBatchSomeColumn(list);
             }
-            log.error("銆愭捣搴峰仠杞﹀満浜嬩欢鎺ㄩ�併��========鎴愬姛=======");
+            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;
     }
 
@@ -431,7 +717,7 @@
      * @param request
      * @return
      */
-    private CarEvent getParkEventModelByRequest(EventParkInfoRequest request) {
+    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()));
@@ -439,8 +725,9 @@
         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.getSrcIndex());
+        event.setSvrIndex(request.getData().getSvrIndex());
         event.setSubModel(request.getData().getSubModel());
         event.setSubLogo(request.getData().getSubLogo());
         event.setStatus(request.getStatus());
@@ -468,6 +755,7 @@
         event.setEventCmd(request.getData().getEventCmd());
         event.setCardNo(request.getData().getCardNo());
         event.setCarAttributeName(request.getData().getCarAttributeName());
+
         if(request.getData().getInResult()!=null && request.getData().getInResult().getRlsResult() !=null ){
             //鏀捐鏂瑰紡
             event.setReleaseWay(request.getData().getInResult().getRlsResult().getReleaseWay());
@@ -482,23 +770,79 @@
             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 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));
+    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;
         }
-        hkMonitoryLogDO.setRepose(result);
-        hkMonitoryLogDO.setName(path);
-        hkMonitoryLogDO.setUrl(path);
-        interfaceLogMapper.insert(hkMonitoryLogDO);
+        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