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 | 257 +++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 247 insertions(+), 10 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 128d9b6..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
@@ -11,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;
@@ -263,6 +261,58 @@
* @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
+ * @param response
+ * @return
+ */
+ @Override
public String dealVisitEvent(EventVisitRequest param, HttpServletResponse response){
log.info("銆愭捣搴疯瀹簨浠舵帹閫併��==========寮�濮�=======锛歕n"+JSONObject.toJSONString(param));
String result = null;
@@ -314,6 +364,143 @@
/**
* 鏍规嵁璁垮鎺ㄩ�佽瀹㈣褰曠紪鐮侊紝澶勭悊璁垮璁板綍銆佸湪鍦轰汉鍛樼瓑淇℃伅
*/
+ 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<>();
@@ -334,7 +521,7 @@
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.setStatus(Constants.VisitStatus.signin);
updateVistis.setInDate(DateUtil.getISO8601DateByStr(model.getStartTime()));
@@ -358,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);
@@ -408,10 +638,10 @@
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.setCreateDate(DateUtil.getISO8601DateByStr(happentTime));
retention.setClasses(visits.getClasses());
retention.setCode(visits.getCode());
retention.setIdcardNo(visits.getIdcardNo());
@@ -421,7 +651,7 @@
retention.setType(visits.getMemberType());
retention.setCompanyId(visits.getCompanyId());
retention.setCompanyName(visits.getCompanyName());
- retention.setEventCode(request.getSrcType()+"");
+ retention.setEventCode(srcType);
retention.setEventDate(retention.getCreateDate());
retention.setFaceImg(visits.getFaceImg());
retention.setImgurl(visits.getImgurl());
@@ -473,7 +703,7 @@
//鍐嶆彃鍏ユ渶鏂扮殑鍦ㄥ巶浜哄憳
retentionMapper.insertBatchSomeColumn(retentionList);
}
- log.error("銆愭捣搴峰仠杞﹀満浜嬩欢鎺ㄩ�併��========鎴愬姛=======");
+ log.info("銆愭捣搴峰仠杞﹀満浜嬩欢鎺ㄩ�併��========鎴愬姛=======");
}catch (Exception e){
log.error("銆愭捣搴峰仠杞﹀満浜嬩欢鎺ㄩ�併��========澶辫触=======锛歕n"+e.getMessage());
@@ -543,11 +773,18 @@
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" ));
- if(cars!=null){
- event.setMemberId(cars.getMemberId());
+ 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 )
--
Gitblit v1.9.3