From 995436f56f93874f19b8094fe5537e96d413b6fd Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 30 七月 2024 18:07:49 +0800
Subject: [PATCH] 修复bug
---
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncVisitFromHKServiceImpl.java | 184 ++++++++++++++++++++++++++++++++++++++++------
1 files changed, 160 insertions(+), 24 deletions(-)
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncVisitFromHKServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncVisitFromHKServiceImpl.java
index d8251d0..f5150c9 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncVisitFromHKServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncVisitFromHKServiceImpl.java
@@ -10,12 +10,10 @@
import com.doumee.core.haikang.model.param.BaseListPageResponse;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.AppointmentListRequest;
-import com.doumee.core.haikang.model.param.request.OrgUserListRequest;
+import com.doumee.core.haikang.model.param.respose.AppointmentIccmInfoResponse;
import com.doumee.core.haikang.model.param.respose.AppointmentInfoResponse;
-import com.doumee.core.haikang.model.param.respose.OrgInfoResponse;
-import com.doumee.core.haikang.model.param.respose.UserInfoResponse;
+import com.doumee.core.haikang.model.param.respose.AppointmentVisitorInfoResponse;
import com.doumee.core.haikang.service.HKService;
-import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DESUtil;
import com.doumee.core.utils.DateUtil;
@@ -23,15 +21,12 @@
import com.doumee.dao.business.CompanyMapper;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.VisitsMapper;
-import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Visits;
import com.doumee.service.business.impl.hksync.HkSyncBaseServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
-import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -46,7 +41,7 @@
*/
@Service
@Slf4j
-public class HkSyncVistFromHKServiceImpl extends HkSyncBaseServiceImpl {
+public class HkSyncVisitFromHKServiceImpl extends HkSyncBaseServiceImpl {
@Autowired
private CompanyMapper companyMapper;
@Autowired
@@ -64,11 +59,7 @@
*/
@Override
@Transactional
- public void syncVistAppointData(){
- if(Constants.DEALING_FROM_HK_VISIT){
- return ;
- }
- Constants.DEALING_FROM_HK_VISIT =true;
+ public void syncVistAppointDataIccm(Date date){
try {
if( Constants.formatIntegerNum(dataSyncConfig.getVisitorDataOrigin()) != DataSyncConfig.origin.hk){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝褰撳墠涓嶆敮鎸佹捣搴锋暟鎹悓姝ユ搷浣渵");
@@ -79,7 +70,71 @@
int curTotal = 0;
int curPage = 1;
//鏌ヨ浠婂ぉ鐨�
- param.setVisitStartTimeBegin(DateUtil.getISO8601Timestamp( Utils.Date.getStart(new Date())));
+ Date start =Utils.Date.getStart(date);
+ Date end = Utils.Date.getEnd(new Date());
+ param.setVisitStartTimeBegin(DateUtil.getISO8601Timestamp2( start));
+ param.setVisitStartTimeEnd(DateUtil.getISO8601Timestamp2( end));
+
+ List<Visits> allHkList = new ArrayList<>();
+ while (hasNext){
+ //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+ param.setPageNo(curPage);
+ param.setPageSize(100);
+ BaseResponse<BaseListPageResponse<AppointmentIccmInfoResponse>> response = HKService.appointmentRecordsIccm(param);
+ if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) ){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+ }
+ if(response.getData() == null || response.getData().getTotal() ==0){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈悓姝ュ埌浠讳綍淇℃伅锛�");
+ }
+ BaseListPageResponse<AppointmentIccmInfoResponse> r = response.getData();
+ curTotal += 100;
+ if(curTotal >= r.getTotal()){
+ hasNext = false;
+ }
+ if(r.getList() == null || r.getList().size()==0){
+ hasNext =false;
+ }else{
+ allHkList.addAll(getNewVisitModelBYListIccm(r.getList()));
+ }
+ curPage++;
+ }
+ if(allHkList .size() == 0){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈悓姝ュ埌浠讳綍淇℃伅锛�");
+ }
+ //娓呯┖鍘熸湁褰撳ぉ鐨勬暟鎹�
+ visitsMapper.delete(new UpdateWrapper<Visits>().lambda()
+ .ge(Visits::getStarttime,start)
+ .eq(Visits::getType,Constants.ONE)
+ .le(Visits::getStarttime,end));
+ visitsMapper.insertBatchSomeColumn(allHkList);//鎻掑叆鏂版暟鎹�
+ }catch (BusinessException e){
+ throw e;
+ }
+ }
+ /**
+ * 鍚屾娴峰悍缁勭粐淇℃伅鍒颁笟鍔$郴缁�
+ */
+ @Override
+ @Transactional
+ public void syncVistAppointData(Date date){
+ try {
+ if( Constants.formatIntegerNum(dataSyncConfig.getVisitorDataOrigin()) != DataSyncConfig.origin.hk){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝褰撳墠涓嶆敮鎸佹捣搴锋暟鎹悓姝ユ搷浣渵");
+ }
+ AppointmentListRequest param = new AppointmentListRequest();
+ //鑾峰彇ERP缁勭粐淇℃伅锛堝叏閲忓悓姝ワ級
+ boolean hasNext = true;
+ int curTotal = 0;
+ int curPage = 1;
+ //鏌ヨ浠婂ぉ鐨�
+ Date start =Utils.Date.getStart(date);
+ Date end = new Date();
+ if(DateUtil.daysBetweenDates(end,start) >1){
+ end = Utils.Date.getEnd(date);
+ }
+ param.setVisitStartTimeBegin(DateUtil.getISO8601Timestamp2( start));
+ param.setVisitStartTimeEnd(DateUtil.getISO8601Timestamp2( end));
List<Visits> allHkList = new ArrayList<>();
while (hasNext){
@@ -87,8 +142,11 @@
param.setPageNo(curPage);
param.setPageSize(100);
BaseResponse<BaseListPageResponse<AppointmentInfoResponse>> response = HKService.appointmentRecords(param);
- if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
+ if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) ){
throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+ }
+ if(response.getData() == null || response.getData().getTotal() ==0){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈悓姝ュ埌浠讳綍淇℃伅锛�");
}
BaseListPageResponse<AppointmentInfoResponse> r = response.getData();
curTotal += 100;
@@ -103,20 +161,97 @@
curPage++;
}
if(allHkList .size() == 0){
- throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈悓姝ュ埌浠讳綍缁勭粐淇℃伅锛�");
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈悓姝ュ埌浠讳綍淇℃伅锛�");
}
- //娓呯┖鍘熸湁鏁版嵁
- visitsMapper.delete(new UpdateWrapper<Visits>().lambda().apply("to_days(create_date)=to_days(now())" ));
+ //娓呯┖鍘熸湁褰撳ぉ鐨勬暟鎹�
+ visitsMapper.delete(new UpdateWrapper<Visits>().lambda()
+ .ge(Visits::getStarttime,start)
+ .eq(Visits::getType,Constants.ONE)
+ .le(Visits::getStarttime,end));
visitsMapper.insertBatchSomeColumn(allHkList);//鎻掑叆鏂版暟鎹�
}catch (BusinessException e){
throw e;
- }catch (Exception e){
- throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
- }finally {
- Constants.DEALING_FROM_HK_VISIT =false;
}
}
+ private List<Visits> getNewVisitModelBYListIccm(List<AppointmentIccmInfoResponse> list ) {
+ List<Visits> newList = new ArrayList<>();
+ if(list == null || list.size()==0){
+ return newList;
+ }
+ for(AppointmentIccmInfoResponse data :list){
+ if(data.getVisitorList()==null || data.getVisitorList().size() ==0){
+ continue;
+ }
+ for(AppointmentVisitorInfoResponse model : data.getVisitorList()){
+ Visits c = new Visits();
+ c.setHkId(model.getVisitorId());
+ c.setCode(model.getQrCode());
+ 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.getCertificateNo()));
+ c.setIdcardDecode(Constants.getTuominStr(model.getCertificateNo()));
+ c.setIdcardType(Integer.parseInt(model.getCertificateType()));
+ c.setStarttime(DateUtil.getISO8601DateByStr2(data.getVisitStartTime()));
+ c.setEndtime(DateUtil.getISO8601DateByStr2(data.getVisitEndTime()));
+ c.setReason(data.getVisitPurpose());
+ c.setStatus(model.getVisitorStatus());
+ c.setType(Constants.ONE);
+ if(StringUtils.isNotBlank(data.getReceptionistId())){
+ //琚闂汉
+ Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getHkId,data.getReceptionistId()).last("limit 1"));
+ c.setReceptMemberId(member!=null?member.getId():null);
+ }
+ c.setCompanyName(model.getVisitorWorkUnit());
+ c.setPhone(model.getPhoneNo());
+ c.setCarNos(model.getPlateNo());
+ if(StringUtils.isNotBlank(model.getCertificateNo())){
+ //琚闂汉
+ 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.getPhoneNo());
+ member.setSex(model.getGender());
+ member.setIsdeleted(Constants.ZERO);
+ member.setType(Constants.ONE);
+ member.setIdcardNo(c.getIdcardNo());
+ member.setIdcardDecode(c.getIdcardDecode());
+ member.setVisitCompanyName(model.getVisitorWorkUnit());
+ member.setCreateDate(new Date());
+ if(StringUtils.isNotBlank(model.getPicUri())){
+ member.setImgurl(HKConstants.IMG_INDEX+model.getPicUri());
+ member.setFaceServerIndexCode(model.getSvrIndexCode());
+ }
+ memberMapper.insert(member);
+ }else{
+ member.setIsdeleted(Constants.ZERO);
+ member.setEditDate(new Date());
+ member.setName(model.getVisitorName());
+ member.setPhone(model.getPhoneNo());
+ member.setSex(model.getGender());
+ member.setVisitCompanyName(model.getVisitorWorkUnit());
+ if(StringUtils.isNotBlank(model.getPicUri())){
+ member.setFaceServerIndexCode(model.getSvrIndexCode());
+ member.setImgurl(HKConstants.IMG_INDEX+model.getPicUri());
+ }
+ memberMapper.updateById(member);
+ }
+ c.setMemberId(member.getId());
+
+ }
+ newList.add(c);
+ }
+
+ }
+ return newList;
+ }
private List<Visits> getNewVisitModelBYList(List<AppointmentInfoResponse> list ) {
List<Visits> newList = new ArrayList<>();
if(list == null || list.size()==0){
@@ -131,8 +266,8 @@
c.setHkDate(new Date());
c.setIsdeleted(Constants.ZERO);
c.setCreateDate(c.getHkDate());
- c.setStarttime(DateUtil.getISO8601DateByStr(model.getVisitStartTime()));
- c.setEndtime(DateUtil.getISO8601DateByStr(model.getVisitEndTime()));
+ c.setStarttime(DateUtil.getISO8601DateByStr2(model.getVisitStartTime()));
+ c.setEndtime(DateUtil.getISO8601DateByStr2(model.getVisitEndTime()));
c.setReason(model.getVisitPurpose());
c.setStatus(model.getVisitorStatus());
c.setType(Constants.ONE);
@@ -186,4 +321,5 @@
}
+
}
--
Gitblit v1.9.3