From 651a0e8cc97a4679f3f80073adb3d9067af276a3 Mon Sep 17 00:00:00 2001
From: nidapeng <jp@doumee.com>
Date: 星期四, 07 三月 2024 17:55:45 +0800
Subject: [PATCH] 整理
---
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java | 175 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 171 insertions(+), 4 deletions(-)
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
index 4a44285..4c5b975 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
@@ -1,10 +1,15 @@
package com.doumee.service.business.impl.hksync;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
+import com.doumee.core.haikang.model.param.BaseListPageResponse;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.*;
+import com.doumee.core.haikang.model.param.request.event.visit.EventVisitInfoRequest;
import com.doumee.core.haikang.model.param.respose.*;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.utils.Constants;
@@ -13,9 +18,11 @@
import com.doumee.core.utils.ImageBase64Util;
import com.doumee.core.wx.wxPlat.WxPlatNotice;
import com.doumee.dao.business.DeviceRoleMapper;
+import com.doumee.dao.business.RetentionMapper;
import com.doumee.dao.business.join.VisitsJoinMapper;
import com.doumee.dao.business.model.DeviceRole;
import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.Retention;
import com.doumee.dao.business.model.Visits;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
@@ -36,6 +43,8 @@
@Autowired
private VisitsJoinMapper visitsMapper;
@Autowired
+ private RetentionMapper retentionMapper;
+ @Autowired
private SystemDictDataBiz systemDictDataBiz;
@Autowired
private DeviceRoleMapper deviceRoleMapper;
@@ -44,6 +53,146 @@
/**
* 鍚屾娴峰悍璁垮淇℃伅,鏍规嵁erp鍚屾缁勭粐缁撴灉锛屽畾鏃舵鏌ラ渶瑕佷笅鍙戝埌娴峰悍鐨勭粍缁囦俊鎭�
*/
+ @Override
+ public void getOutTimeVisitRecord(){
+ if(Constants.DEALING_HK_VISIT_EXPIRE){
+ return ;
+ }
+ Constants.DEALING_HK_VISIT_EXPIRE =true;
+ try {
+ //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑鏁版嵁
+ List<Visits> list = getExpireVisitList();
+ //鎸夌収鐖剁骇鐢宠鍒嗘壒澶勭悊姣忔鐢宠鏁版嵁
+ if(list ==null || list.size()==0){
+ return;
+ }
+ Date date = new Date();
+ for(Visits c : list) {
+ //鍙戣捣娴峰悍棰勭害鎺ュ彛锛堥渶瑕佺櫥璁帮級锛屾牴鎹绾﹁繑鍥炴帴鍙e皝瑁呯敵璇疯褰曟洿鏂板瓧娈�
+ AppointmentInfoResponse model = getVisitRecord(c.getHkId());
+ if(model == null){
+ Visits update = new Visits();
+ //宸插け鏁�
+ update.setStatus(Constants.VisitStatus.invalid);
+ update.setEditDate(date);
+ update.setId(c.getId());
+ update.setRemark("棰勭害宸茶娓呴櫎");
+ visitsMapper.updateById(update);
+ continue;
+ }
+ /**
+ * * 0锛氬緟瀹℃牳锛堥绾﹀緟瀹℃壒锛夈��
+ * * 1锛氭甯革紙棰勭害鎴愬姛鎴栭绾﹀鎵规垚鍔熷悗<鏈櫥璁�>锛氬綋鍓嶆椂闂存湭瓒呰繃棰勮鏉ヨ鏃堕棿锛夈��
+ * * 2锛氳繜鍒帮紙棰勭害鎴愬姛鎴栭绾﹀鎵规垚鍔熷悗<鏈櫥璁�>锛氬綋鍓嶆椂闂磋秴杩囬璁℃潵璁挎椂闂达紝浣嗘湭瓒呰繃棰勮绂诲紑鏃堕棿锛夈��
+ * * 3锛氬け鏁堬紙棰勭害鎴愬姛鎴栭绾﹀鎵规垚鍔熷悗<鏈櫥璁�>锛氬綋鍓嶆椂闂村凡瓒呰繃棰勮绂诲紑鏃堕棿锛夈��
+ * * 4锛氬鏍搁��鍥烇紙棰勭害寰呭鎵癸紝瀹℃壒浜哄憳瀹℃壒閫�鍥烇級銆�
+ * * 5锛氳秴鏈熻嚜鍔ㄧ绂伙紙瓒呮湡鏈绂昏褰曡瀹紝鐢卞悗鍙颁换鍔″畾鏃跺鐞嗙绂伙級銆�
+ * * 6锛氬凡绛剧锛堣瀹㈢绂伙級銆�
+ * * 7锛氳秴鏈熸湭绛剧锛堣瀹㈢櫥璁帮紝褰撳墠鏃堕棿宸茶秴杩囬璁$寮�鏃堕棿锛岃繕鏈繘琛岀绂伙級銆�
+ * * 8锛氬凡鍒拌揪锛涳紙璁垮鐧昏锛屽綋鍓嶆椂闂存湭瓒呰繃棰勮绂诲紑鏃堕棿锛夈��
+ * * 9锛氬鏍稿け鏁堬紙棰勭害寰呭鎵癸紝涓�鐩村埌褰撳墠鏃堕棿瓒呰繃棰勮绂诲紑鏃堕棿锛岃繕鏈鎵归�氳繃锛夈��
+ * * 10锛氶個绾︿腑锛堝憳宸ュ彂璧烽個绾︼紝璁垮杩樻湭搴旈個锛夈��
+ * * 11锛氶個绾﹀け鏁堬紙鍛樺伐鍙戣捣閭�绾︼紝涓�鐩村埌褰撳墠鏃堕棿瓒呰繃棰勮绂诲紑鏃堕棿锛岃瀹㈣繕鏈簲閭�锛�
+ */
+ if (model.getVisitorStatus()!=null && ",3,4,11,".contains( "," +model.getVisitorStatus()+"," )){
+ //瀵圭浉搴旂姸鎬佷笅鐨勬暟鎹繘琛屻�愬凡澶辨晥銆戝鐞�
+ Visits update = new Visits();
+ //宸插け鏁�
+ update.setStatus(Constants.VisitStatus.invalid);
+ update.setEditDate(date);
+ update.setId(c.getId());
+ update.setInDate(DateUtil.getISO8601DateByStr2(model.getVisitStartTime()));
+ update.setOutDate(DateUtil.getISO8601DateByStr2(model.getVisitEndTime()));
+ update.setRemark("瓒呮椂鏈櫥璁�");
+ visitsMapper.updateById(update);
+ }
+ if (model.getVisitorStatus()!=null && ",5,6,".contains( "," +model.getVisitorStatus()+"," )){
+ // 瀵圭浉搴旂姸鎬佷笅鐨勬暟鎹繘琛屻�愬凡绛剧銆戝鐞�
+ if(!Constants.equalsInteger(c.getStatus(),Constants.VisitStatus.signout)){
+ Visits update = new Visits();
+ //宸插け鏁�
+ update.setStatus(Constants.VisitStatus.invalid);
+ update.setEditDate(date);
+ update.setId(c.getId());
+ update.setInDate(DateUtil.getISO8601DateByStr2(model.getVisitStartTime()));
+ update.setOutDate(DateUtil.getISO8601DateByStr2(model.getVisitEndTime()));
+ update.setRemark("宸茬绂�");
+ visitsMapper.updateById(update);
+
+ //鍏堝垹闄ゅ師鏈夌殑鍦ㄥ満浜哄憳(鏅�氳瀹級
+ retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
+ .eq(Retention::getType,Constants.memberType.visitor)
+ .eq(Retention::getMemberId,c.getMemberId()));
+ }
+ }
+ if (model.getVisitorStatus()!=null&& ",7,8,".contains( "," +model.getVisitorStatus()+"," )){
+ //濡傛灉宸茬櫥璁�
+ if(!Constants.equalsInteger(c.getStatus(),Constants.VisitStatus.signin)){
+ Visits update = new Visits();
+ //宸插け鏁�
+ update.setStatus(Constants.VisitStatus.signin);
+ update.setEditDate(date);
+ update.setId(c.getId());
+ update.setInDate(DateUtil.getISO8601DateByStr2(model.getVisitStartTime()));
+ update.setOutDate(DateUtil.getISO8601DateByStr2(model.getVisitEndTime()));
+ update.setRemark("瓒呮椂鏈鍒�");
+ visitsMapper.updateById(update);
+ //鍏堝垹闄ゅ師鏈夌殑鍦ㄥ満浜哄憳(鏅�氳瀹級
+ retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
+ .eq(Retention::getType,Constants.memberType.visitor)
+ .eq(Retention::getMemberId,c.getMemberId()));
+ //鍐嶆彃鍏ユ渶鏂扮殑鍦ㄥ巶浜哄憳
+ retentionMapper.insert(getRetentionModelByVisitRequest(c,update.getInDate()));
+ }
+ }
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }finally {
+ Constants.DEALING_HK_VISIT_EXPIRE =false;
+ }
+ }
+
+ private Retention getRetentionModelByVisitRequest(Visits visits,Date date) {
+ Retention retention = new Retention();
+ retention.setIsdeleted(Constants.ZERO);
+ retention.setCreateDate(date);
+ 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.setEventDate(retention.getCreateDate());
+ retention.setFaceImg(visits.getFaceImg());
+ retention.setImgurl(visits.getImgurl());
+ retention.setPhone(visits.getPhone());
+ retention.setMemberId(visits.getMemberId());
+
+ return retention;
+ }
+
+ public AppointmentInfoResponse getVisitRecord(String orderId){
+ //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+ if(StringUtils.isBlank(orderId)){
+ return null;
+ }
+ AppointmentListRequest param = new AppointmentListRequest();
+ param.setPageNo(1);
+ param.setPageSize(1);
+ param.setOrderId(orderId);
+ BaseResponse<BaseListPageResponse<AppointmentInfoResponse>> response = HKService.appointmentRecords(param);
+ if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) ){
+ return null;
+ }
+ if(response.getData() == null || response.getData().getList() == null|| response.getData().getList().size() ==0){
+ return null;
+ }
+ return response.getData().getList().get(0);
+ }
@Override
public void syncVisitData(){
if(Constants.DEALING_HK_VISIT){
@@ -121,6 +270,7 @@
private void getUpdateModelByResponse( Visits c,Date date,String type,List<DeviceRole> roleList,String path ) {
String code = null;
String id = null;
+ String qrcode = null;
//鍙戣捣娴峰悍棰勭害鎺ュ彛
if(StringUtils.equals(type,"0")){
//锛堥渶瑕佺櫥璁帮級
@@ -135,9 +285,12 @@
}
BaseResponse<VisitAppointmentResponse> response = HKService.visitAppiontment(request);
code =response!=null ?response.getCode():null;
- id = (response!=null && response.getData()!=null
+ if((response!=null && response.getData()!=null
&& response.getData().getAppointmentInfoList() !=null
- && response.getData().getAppointmentInfoList().size()>0)?response.getData().getAppointmentInfoList().get(0).getOrderId():null;
+ && response.getData().getAppointmentInfoList().size()>0)){
+ id =response.getData().getAppointmentInfoList().get(0).getOrderId();
+ qrcode =response.getData().getAppointmentInfoList().get(0).getQRCode();
+ }
}else{
//鍏嶇櫥璁�
VisitAppointmentMDJRequest request =getHkMDJRequestPara(c,roleList,path);
@@ -151,16 +304,20 @@
}
BaseResponse<VisitAppointmentMDJResponse> response = HKService.visitAppiontmentMDJ(request );
code =response!=null ?response.getCode():null;
- id = (response!=null && response.getData()!=null)?response.getData().getOrderId():null;
+ if(response!=null && response.getData()!=null){
+ id = response.getData().getOrderId();
+ qrcode =response.getData().getQRCode();
+ }
}
if (code!= null && id!=null) {
//娴峰悍涓嬪彂鎴愬姛
c.setHkId( id);//棰勭害鏍囪瘑
+ c.setQrcode(qrcode);
c.setRemark("涓嬪彂娴峰悍鎴愬姛锛併��"+type+"銆�");
c.setStatus(Constants.VisitStatus.xfSuccess);//涓嬪彂娴峰悍鎴愬姛
} else {
- //娴峰悍涓嬪彂鎴愬姛
+ //娴峰悍涓嬪彂澶辫触
c.setRemark("涓嬪彂娴峰悍澶辫触锛併��"+type+"銆�");
c.setStatus(Constants.VisitStatus.xfFail);//涓嬪彂娴峰悍澶辫触
}
@@ -292,5 +449,15 @@
List<Visits> list = visitsMapper.selectJoinList(Visits.class,queryWrapper);
return list;
}
+ private List<Visits> getExpireVisitList() {
+ MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
+ queryWrapper.selectAll(Visits.class)
+ .selectAs(Member::getType,Visits::getMemberType)
+ .leftJoin(Member.class,Member::getId,Visits::getMemberId);
+ queryWrapper.in(Visits::getStatus, Arrays.asList(new Integer[]{Constants.VisitStatus.xfSuccess,Constants.VisitStatus.signin}) );
+ List<Visits> list = visitsMapper.selectJoinList(Visits.class,queryWrapper);
+ return list;
+ }
+
}
--
Gitblit v1.9.3