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