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