server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/BaseListPageResponse.java
ÎļþÃû´Ó server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/UserListPageResponse.java ÐÞ¸Ä @@ -5,10 +5,10 @@ import java.util.List; @Data public class OrgListPageResponse { public class BaseListPageResponse<T> { private int total;// number False æ¥è¯¢æ°æ®è®°å½æ»æ° private int pageSize;// number False æ¯é¡µè®°å½æ»æ° private int pageNo ;// number False å½å页ç private List<OrgListResponse> list ;// object[] False æéç»å¯¹è±¡å表 private List<T> list ;// object[] False æéç»å¯¹è±¡å表 } server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AppointmentListRequest.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package com.doumee.core.haikang.model.param.request; import lombok.Data; @Data public class OrgUserListRequest { private String startTime ;//string True éå¯¹æ´æ°æ¶é´çæ¥è¯¢å¼å§æ¥æï¼IOS8601æ ¼å¼ï¼åèéå½B ISO8601æ¶é´æ ¼å¼è¯´æ private String endTime;// string False éå¯¹æ´æ°æ¶é´çæ¥è¯¢æªæ¢æ¥æï¼IOS8601æ ¼å¼ï¼åèéå½B ISO8601æ¶é´æ ¼å¼è¯´æ private Integer pageNo ;//integer True 页ç ,pageNoâ¥1 private Integer pageSize;// integer True åé¡µå¤§å° } server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/VisitingInfoRequest.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ package com.doumee.core.haikang.model.param.respose; import lombok.Data; import java.util.List; @Data public class VisitingInfoResponse { private String receptionistId;// string False 被访人IDï¼ä» è·å人åå表v2 æ¥å£è·åè¿ååæ°personId private String receptionistName ;//string False 被访人å§åï¼æ¯æä¸è±æå符ï¼ä¸è½å å« â / \ : * ? " < > private String visitorName ;//string False 访客å§åï¼é¿åº¦ä¸è¶ è¿32ï¼æ¯æä¸è±æå符ï¼ä¸è½å å« â / \ : * ? " < > private String phoneNo;// string False 访客èç³»çµè¯å»ºè®®å¡«åææºå·ç private Integer visitorStatus;// number False 5ï¼è¶ æèªå¨ç¾ç¦»6ï¼å·²ç¾ç¦»7ï¼è¶ ææªç¾ç¦»8ï¼å·²å°è¾¾ private String visitStartTimeBegin;// string False æ¥è®¿æ¶é´æ¥è¯¢æ¶é´æ®µæ¡ä»¶çå¼å§æ¶é´ï¼æ¶é´åæ°é满足ISO8601æ ¼å¼ï¼ private String visitStartTimeEnd;// string False æ¥è®¿æ¶é´æ¥è¯¢æ¶é´æ®µæ¡ä»¶çç»ææ¶é´ï¼æ¶é´åæ°é满足ISO8601æ ¼å¼ï¼yyyy-MM-ddTHH:mm:ss+å½åæ¶åºï¼ private String visitEndTimeBegin;// string False ç¦»å¼æ¶é´æ¥è¯¢æ¶é´æ®µæ¡ä»¶çå¼å§æ¶é´ï¼æ¶é´åæ°é满足ISO8601æ ¼å¼ï¼ private String visitEndTimeEnd ;//string False ç¦»å¼æ¶é´æ¥è¯¢æ¶é´æ®µæ¡ä»¶çç»ææ¶é´ï¼æ¶é´åæ°é满足ISO8601æ ¼å¼ï¼yyyy-MM-ddTHH:mm:ss+å½åæ¶åºï¼ private Integer pageNo ;//number True pageNoè¦æ±å¤§äº0ä¸è¶ è¿2147483647 private Integer pageSize;// number True pageSizeè¦æ±å¤§äº0ä¸ä¸è¶ è¿1000 private String cardNo ;//string False å¡å·ï¼8-20使°åã大å忝 private String orderId ;//string False 访客记å½ID private String QRCode ;//string False 访客äºç»´ç å 容,æ¯æå¨æäºç»´ç æåå²çæ¬æ¥å£è¿åçéæäºç»´ç } server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AppointmentInfoResponse.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ package com.doumee.core.haikang.model.param.respose; import lombok.Data; import java.util.List; @Data public class UserInfoResponse { private String personId ;//string False 人åID private String personName ;//string False å§å private Integer gender ;//number False private String orgIndexCode;// string False æå±ç»ç»å¯ä¸æ è¯ç private String phoneNo;// string False èç³»çµè¯ private String jobNo;// string False å·¥å· private Integer certificateType;// number False è¯ä»¶ç±»å111:身份è¯414:æ¤ç §113:æ·å£ç°¿335:驾驶è¯131:å·¥ä½è¯133:å¦çè¯990:å ¶ä» ; private String certificateNo ;//string False è¯ä»¶å·ç ä¸ä¸²æ°åå符串 private String createTime ;//string False å建æ¶é´ è¦æ±éµå®ISO8601æ åï¼å¦2018-07-26T21:30:08.000+08:00 表示å京æ¶é´2017å¹´7æ26æ¥21æ¶30å08ç§ private String updateTime;// string False æ´æ°æ¶é´ è¦æ±éµå®ISO8601æ åï¼å¦2018-07-26T21:30:08.000+08:00 表示å京æ¶é´2017å¹´7æ26æ¥21æ¶30å08ç§ private String orgPath;// string False æå±ç»ç»ç®å½ï¼@è¿è¡åå²ï¼ä¾å¦ @root000000@ private String orgPathName;// string False æå±ç»ç»åç§°ï¼@è¿è¡åå²ï¼å¦@é»è®¤é¨é¨@ private List<UserPhotoResponse> personPhoto;// object False 人åå¾çä¿¡æ¯ } server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AppointmentResInfoResponse.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,55 @@ package com.doumee.core.haikang.model.param.respose; import lombok.Data; import java.util.List; import java.util.Map; @Data public class AppointmentInfoResponse { private String appointRecordId ;//string False é¢çº¦è®°å½IDï¼å¯ä½ä¸ºä¿®æ¹é¢çº¦ç便® private String receptionistId ;//string False 被访人å¯ä¸æ è¯ private String receptionistName ;//string False 被访人å§åï¼æ¯æä¸è±æå符ï¼ä¸è½å å« â / \ : * ? " < > private String receptionistCode ;//string False 被访人æå±ç»ç»ç¼ç private String visitStartTime ;//string False æ¶é´åæ°é满足ISO8601æ ¼å¼ï¼ yyyy-MM-ddTHH:mm:ss+å½åæ¶åºï¼ private String visitEndTime ;//string False æ¶é´åæ°é满足ISO8601æ ¼å¼ï¼ yyyy-MM-ddTHH:mm:ss+å½åæ¶åºï¼ é¢è®¡ç¦»å¼æ¶é´å¿ é¡»æäºå½åæ¶é´åé¢è®¡æ¥è®¿æ¶é´ private String visitPurpose ;//string False æ¥è®¿äºç± private String visitorName ;//string False 访客å§å private String visitorWorkUnit ;//string False æ¥è®¿åä½ private String visitorAddress ;//string False 访客ä½å private String visitorId ;//string False 访客Id private String verificationCode ;//string False 访客éªè¯ç ï¼ç¨äºè®¿å®¢å¨è®¿å®¢æºç»è®°çåè¯ private String QRCode ;//string False 卿äºç»´ç ï¼å¦éè¦ä½¿ç¨ï¼å¯å°è®¿å®¢äºç»´ç å 容转æäºç»´ç å¾çå³å¯ private Integer gender;// integer False 1-ç·, 2-女 private String phoneNo ;//string False èç³»çµè¯å»ºè®®å¡«åææºå·ç ï¼ä» æ¯æçº¯æ°åã private String plateNo ;//string False 访客车çå· private Integer certificateType ;// integer False è¯ä»¶ç±»åï¼è¯¦è§éå½A.11 è¯ä»¶ç±»å private String certificateNo ;//string False è¯ä»¶å·ï¼æ ¼å¼ä¸ºï¼1~20个æ°åãåæ¯ç»æ private String picUri ;//string False è¿åå¾ççç¸å¯¹Uriï¼éè¦è°ç¨è·å访客记å½ä¸çå¾çæ¥å£ï¼æ¥è·åå¾ççæ°æ® private String svrIndexCode ;//string False ä¸picUrié 对è¾åºçåæ®µä¿¡æ¯ï¼ç¨äºâè·å访客记å½çå¾çâæ¥å£çè¾å ¥åæ° /** * 访客åç¶æ, * 0:å¾ å®¡æ ¸ã * 1ï¼æ£å¸¸ã * 2ï¼è¿å°ã * 3ï¼å¤±æã * 4ï¼å®¡æ ¸éåã * 9ï¼å®¡æ ¸å¤±æã * 10ï¼é约ä¸ã * 11:é约失æ */ private Integer visitorStatus ;//integer False private String certAddr ;//string False è¯ä»¶å°å private String certIssuer ;//string False åè¯æºå ³ private Integer nation ;//integer False private String birthplace ;//string False ç±è´¯ private String orderId ;//string False 访客记å½å¯ä¸æ è¯ï¼ç¨äºå·²é¢çº¦ç»è®°ã访客ç¾ç¦»çæä½ private List<Map<String,Object>> designatedResources;// object False æéä¸åæå®çèµæºç¹éå private String[] privilegeGroupNames;// string[] False æéç»åç§°éå private String identityUri ;//string False è¯ä»¶ç §,å¾ççç¸å¯¹URL private String identitySvrCode ;//string False è¯ä»¶ç §å¯¹åºå¾çæå¡å¨serviceNodes } server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/OrgListPageResponse.java
ÎļþÒÑɾ³ý server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/OrgTimeRangetListPageResponse.java
ÎļþÒÑɾ³ý server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/UserTimeRangeListPageResponse.java
ÎļþÒÑɾ³ý server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitingInfoResponse.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,51 @@ package com.doumee.core.haikang.model.param.respose; import lombok.Data; import java.util.List; import java.util.Map; @Data public class AppointmentInfoResponse { private String appointRecordId ;//string False é¢çº¦è®°å½IDï¼å¯ä½ä¸ºä¿®æ¹é¢çº¦ç便® private String receptionistId ;//string False 被访人å¯ä¸æ è¯ private String receptionistName ;//string False 被访人å§åï¼æ¯æä¸è±æå符ï¼ä¸è½å å« â / \ : * ? " < > private String receptionistCode ;//string False 被访人æå±ç»ç»ç¼ç private String visitStartTime ;//string False æ¶é´åæ°é满足ISO8601æ ¼å¼ï¼ yyyy-MM-ddTHH:mm:ss+å½åæ¶åºï¼ private String visitEndTime ;//string False æ¶é´åæ°é满足ISO8601æ ¼å¼ï¼ yyyy-MM-ddTHH:mm:ss+å½åæ¶åºï¼ é¢è®¡ç¦»å¼æ¶é´å¿ é¡»æäºå½åæ¶é´åé¢è®¡æ¥è®¿æ¶é´ private String visitPurpose ;//string False æ¥è®¿äºç± private String visitorName ;//string False 访客å§å private String visitorWorkUnit ;//string False æ¥è®¿åä½ private String visitorAddress ;//string False 访客ä½å private String visitorId ;//string False 访客Id private String verificationCode ;//string False 访客éªè¯ç ï¼ç¨äºè®¿å®¢å¨è®¿å®¢æºç»è®°çåè¯ private String QRCode ;//string False 卿äºç»´ç ï¼å¦éè¦ä½¿ç¨ï¼å¯å°è®¿å®¢äºç»´ç å 容转æäºç»´ç å¾çå³å¯ private Integer gender;// integer False 1-ç·, 2-女 private String phoneNo ;//string False èç³»çµè¯å»ºè®®å¡«åææºå·ç ï¼ä» æ¯æçº¯æ°åã private String plateNo ;//string False 访客车çå· private Integer certificateType ;// integer False è¯ä»¶ç±»åï¼è¯¦è§éå½A.11 è¯ä»¶ç±»å private String certificateNo ;//string False è¯ä»¶å·ï¼æ ¼å¼ä¸ºï¼1~20个æ°åãåæ¯ç»æ private String picUri ;//string False è¿åå¾ççç¸å¯¹Uriï¼éè¦è°ç¨è·å访客记å½ä¸çå¾çæ¥å£ï¼æ¥è·åå¾ççæ°æ® private String svrIndexCode ;//string False ä¸picUrié 对è¾åºçåæ®µä¿¡æ¯ï¼ç¨äºâè·å访客记å½çå¾çâæ¥å£çè¾å ¥åæ° /** * 访客åç¶æ, * 0:å¾ å®¡æ ¸ã * 1ï¼æ£å¸¸ã * 2ï¼è¿å°ã * 3ï¼å¤±æã * 4ï¼å®¡æ ¸éåã * 9ï¼å®¡æ ¸å¤±æã * 10ï¼é约ä¸ã * 11:é约失æ */ private Integer visitorStatus ;//integer False private String certAddr ;//string False è¯ä»¶å°å private String certIssuer ;//string False åè¯æºå ³ private Integer nation ;//integer False private String birthplace ;//string False ç±è´¯ private String orderId ;//string False 访客记å½å¯ä¸æ è¯ï¼ç¨äºå·²é¢çº¦ç»è®°ã访客ç¾ç¦»çæä½ private List<AppointmentResInfoResponse> designatedResources;// object False æéä¸åæå®çèµæºç¹éå private String[] privilegeGroupNames;// string[] False æéç»åç§°éå private String identityUri ;//string False è¯ä»¶ç §,å¾ççç¸å¯¹URL private String identitySvrCode ;//string False è¯ä»¶ç §å¯¹åºå¾çæå¡å¨serviceNodes } server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java
ÎļþÃû´Ó server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserFERPServiceImpl.java ÐÞ¸Ä @@ -3,12 +3,11 @@ 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.config.DataSyncConfig; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.erp.model.openapi.request.UserUpdateRequest; import com.doumee.core.erp.model.openapi.request.erp.UserFailRequest; import com.doumee.core.exception.BusinessException; import com.doumee.core.haikang.model.HKConstants; import com.doumee.core.haikang.model.HKTools; import com.doumee.core.haikang.model.param.BaseResponse; import com.doumee.core.haikang.model.param.request.*; import com.doumee.core.haikang.model.param.respose.*; @@ -18,12 +17,10 @@ import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.ImageBase64Util; import com.doumee.dao.business.*; import com.doumee.dao.business.join.CompanyJoinMapper; import com.doumee.dao.business.join.MemberJoinMapper; import com.doumee.dao.business.model.*; import com.doumee.service.business.ERPSyncService; import com.doumee.service.business.impl.hksync.HkSyncBaseServiceImpl; import com.github.yulichang.query.MPJQueryWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; @@ -41,7 +38,7 @@ */ @Service @Slf4j public class HkSyncOrgUserServiceImpl extends HkSyncBaseServiceImpl { public class HkSyncOrgUserFERPServiceImpl extends HkSyncBaseServiceImpl { @Autowired private CompanyMapper companyMapper; @@ -61,13 +58,15 @@ private ERPSyncService erpSyncService; @Autowired private SystemDictDataBiz systemDictDataBiz; @Autowired private DataSyncConfig dataSyncConfig; /** * åæ¥æµ·åº·ç»ç»ä¿¡æ¯,æ ¹æ®erp忥ç»ç»ç»æï¼å®æ¶æ£æ¥éè¦ä¸åå°æµ·åº·çç»ç»ä¿¡æ¯ */ @Override public void syncOrgData(){ if(Constants.DEALING_HK_ORG){ if(Constants.DEALING_HK_ORG || Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.erp){ return ; } Constants.DEALING_HK_ORG =true; @@ -258,7 +257,7 @@ */ @Override public void syncUserData(){ if(Constants.DEALING_HK_USER){ if(Constants.DEALING_HK_USER || Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.erp){ return ; } Constants.DEALING_HK_USER =true; @@ -266,7 +265,7 @@ //æ¥è¯¢ææéè¦åæ¥çä¼ä¸æ°æ® List<Member> list = memberMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>() .selectAll(Member.class ) .selectAs(Company::getHkId,Member::getCompanyHkId) .selectAs(Company::getHkId,Member::getHkOrgId) .isNotNull(Member::getFaceImg) .leftJoin(Company.class,Company::getId,Member::getCompanyId) .eq(Member::getHkStatus,Constants.ZERO) @@ -426,7 +425,7 @@ } CardInfoRequest cr = new CardInfoRequest(); cr.setCardNo(m.getCode()); cr.setOrgIndexCode(member.getCompanyHkId()); cr.setOrgIndexCode(member.getHkOrgId()); cr.setPersonId(member.getHkId()); cr.setCardType(m.getType()); param.getCardList().add(cr); @@ -648,7 +647,7 @@ private UserAddRequest getUserAddModel(Member c,String path,int type) { UserAddRequest model = new UserAddRequest(); model.setOrgIndexCode(c.getCompanyHkId()); model.setOrgIndexCode(c.getHkOrgId()); model.setJobNo(c.getCode()); model.setCertificateNo(DESUtil.decrypt(Constants.EDS_PWD, c.getIdcardNo())); model.setCertificateType(HKConstants.CertificateType.SHENFENZHENG.getKey()+""); server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFHKServiceImpl.java
ÎļþÒÑɾ³ý server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromHKServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,273 @@ package com.doumee.service.business.impl.hksync.fhk; 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.config.DataSyncConfig; 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.respose.*; 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; import com.doumee.dao.business.*; import com.doumee.dao.business.model.*; 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; import java.util.*; /** * 海康ç»ç»äººåéè¿æ¥Serviceå®ç° * @author æ±è¹è¹ * @date 2023/11/30 15:33 */ @Service @Slf4j public class HkSyncOrgUserForHKServiceImpl extends HkSyncBaseServiceImpl { @Autowired private CompanyMapper companyMapper; @Autowired private MemberMapper memberMapper; @Autowired private DataSyncConfig dataSyncConfig; @Autowired private SystemDictDataBiz systemDictDataBiz; @Autowired private RedisTemplate<String, Object> redisTemplate; /** * åæ¥æµ·åº·ç»ç»ä¿¡æ¯å°ä¸å¡ç³»ç» */ @Override @Transactional public void syncOrgData(){ if(Constants.DEALING_HK_ORG){ return ; } Constants.DEALING_HK_ORG =true; try { if( Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.hk){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对ä¸èµ·ï¼å½å䏿¯æç»ç»åæ¥æä½~"); } LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); OrgUserListRequest param = new OrgUserListRequest(); //è·åERPç»ç»ä¿¡æ¯ï¼å ¨éåæ¥ï¼ boolean hasNext = true; int curTotal = 0; int curPage = 1; List<Company> allHkList = new ArrayList<>(); while (hasNext){ //å页éåå¾ªç¯æ¥è¯¢ææé¨ç¦è®¾å¤æ°æ® param = new OrgUserListRequest(); param.setPageNo(curPage); param.setPageSize(100); BaseResponse<BaseListPageResponse<OrgInfoResponse>> response = HKService.orgAllList(param); if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对ä¸èµ·ï¼æµ·åº·åæ¥æ°æ®å¤±è´¥~"); } BaseListPageResponse<OrgInfoResponse> r = response.getData(); curTotal += 100; if(curTotal >= r.getTotal()){ hasNext = false; } if(r.getList() == null || r.getList().size()==0){ hasNext =false; }else{ allHkList.addAll(getNewOrgModelBYList(r.getList(),user.getId())); } curPage++; } if(allHkList .size() == 0){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"æªåæ¥å°ä»»ä½ç»ç»ä¿¡æ¯ï¼"); } companyMapper.delete(new UpdateWrapper<>());//æ¸ ç©ºåææ°æ® companyMapper.insertBatchSomeColumn(allHkList);//æå ¥æ°æ°æ® }catch (BusinessException e){ throw e; }catch (Exception e){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对ä¸èµ·ï¼æµ·åº·åæ¥æ°æ®å¤±è´¥~"); }finally { Constants.DEALING_HK_ORG =false; } } private List<Company> getNewOrgModelBYList(List<OrgInfoResponse> list, Integer userid) { List<Company> newList = new ArrayList<>(); if(list == null || list.size()==0){ return newList; } for(OrgInfoResponse model :list){ Company c = new Company(); c.setHkId(model.getOrgIndexCode()); c.setCode(model.getOrgNo()); c.setName(model.getOrgName()); c.setHkStatus(Constants.ONE); c.setHkDate(new Date()); c.setIsdeleted(Constants.ZERO); c.setCreateDate(c.getHkDate()); c.setEditDate(DateUtil.getISO8601DateByStr(model.getUpdateTime())); c.setCreator(userid); c.setStatus(Constants.ZERO); c.setType(Constants.ONE); if(!StringUtils.equals(model.getOrgIndexCode(),systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_ROOTORG_CODE).getCode())){ c.setHkParentId(model.getParentOrgIndexCode()); } newList.add(c); } return newList; } /** * åæ¥æµ·åº·äººåä¿¡æ¯ * @return */ @Override public void syncUserData(){ if(Constants.DEALING_HK_USER){ return ; } Constants.DEALING_HK_USER =true; try { if( Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.hk){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对ä¸èµ·ï¼å½å䏿¯æç»ç»åæ¥æä½~"); } LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); List<Company> companies = companyMapper.selectList(new QueryWrapper<>()); if(companies == null || companies.size() == 0){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对ä¸èµ·ï¼è¯·å 忥ä¼ä¸ç»ç»ä¿¡æ¯~"); } OrgUserListRequest param = new OrgUserListRequest(); //è·åERPç»ç»ä¿¡æ¯ï¼å ¨éåæ¥ï¼ boolean hasNext = true; int curTotal = 0; int curPage = 1; List<Member> allHkList = new ArrayList<>(); while (hasNext){ //å页éåå¾ªç¯æ¥è¯¢ææé¨ç¦è®¾å¤æ°æ® param = new OrgUserListRequest(); param.setPageNo(curPage); param.setPageSize(100); BaseResponse<BaseListPageResponse<UserInfoResponse>> response = HKService.userAllList(param); if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对ä¸èµ·ï¼æµ·åº·åæ¥æ°æ®å¤±è´¥~"); } BaseListPageResponse<UserInfoResponse> r = response.getData(); curTotal += 100; if(curTotal >= r.getTotal()){ hasNext = false; } if(r.getList() == null || r.getList().size()==0){ hasNext =false; }else{ allHkList.addAll(getNewUserModelBYList(r.getList(),companies,user.getId())); } curPage++; } if(allHkList .size() == 0){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"æªåæ¥å°ä»»ä½ç»ç»ä¿¡æ¯ï¼"); } memberMapper.delete(new UpdateWrapper<>());//æ¸ ç©ºåææ°æ® memberMapper.insertBatchSomeColumn(allHkList);//æå ¥æ°æ°æ® }catch (BusinessException e){ throw e; }catch (Exception e){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对ä¸èµ·ï¼æµ·åº·åæ¥æ°æ®å¤±è´¥~"); }finally { Constants.DEALING_HK_USER =false; } } private List<Member> getNewUserModelBYList(List<UserInfoResponse> list, List<Company> companies,Integer userid) { List<Member> newList = new ArrayList<>(); if(list == null || list.size()==0){ return newList; } for(UserInfoResponse model :list){ Member c = new Member(); String encryptIdNo = DESUtil.encrypt(Constants.EDS_PWD,model.getCertificateNo()); c.setIdcardNo(encryptIdNo); c.setIdcardDecode(Constants.getTuominStr(model.getCertificateNo())); c.setIdcardType(getIdcardTypeByHk(model.getCertificateType())); c.setCode(model.getJobNo()); c.setPhone(model.getPhoneNo()); c.setHkId(model.getPersonId()); c.setName(model.getPersonName()); c.setHkStatus(Constants.ONE); c.setHkDate(new Date()); c.setCanVisit(Constants.ZERO); c.setHighCheckor(Constants.ZERO); c.setSex(model.getGender()); c.setIsdeleted(Constants.ZERO); c.setCreateDate(c.getHkDate()); c.setEditDate(DateUtil.getISO8601DateByStr(model.getUpdateTime())); c.setCreator(userid); c.setStatus(Constants.ZERO); c.setType(Constants.TWO); c.setCompanyId(getCompanyId(companies,model.getOrgIndexCode())); if(model.getPersonPhoto()!=null && model.getPersonPhoto().size()>0){ c.setFaceId(model.getPersonPhoto().get(0).getPersonPhotoIndexCode()); c.setFaceImg(HKConstants.IMG_INDEX+model.getPersonPhoto().get(0).getPicUri()); c.setFaceServerIndexCode(model.getPersonPhoto().get(0).getServerIndexCode()); } newList.add(c); } return newList; } private Integer getCompanyId(List<Company> companies, String orgIndexCode) { if(companies == null){ return null; } for(Company c : companies){ if(StringUtils.equals(c.getHkId(),orgIndexCode)){ return c.getId(); } } return null; } /** * //è¯ä»¶ç±»å111:身份è¯414:æ¤ç §113:æ·å£ç°¿335:驾驶è¯131:å·¥ä½è¯133:å¦çè¯990:å ¶ä» ; * // è¯ä»¶ç±»å 0èº«ä»½è¯ 1港澳è¯ä»¶ 2æ¤ç § * @param certificateType * @return */ private Integer getIdcardTypeByHk(Integer certificateType) { if(Constants.equalsInteger(certificateType,HKConstants.CertificateType.SHENFENZHENG.getKey())){ return 0; }else if(Constants.equalsInteger(certificateType,HKConstants.CertificateType.HUZHAO.getKey())){ return 2; }else if(Constants.equalsInteger(certificateType,HKConstants.CertificateType.JIASHIZHENG.getKey())){ return 3; }else if(Constants.equalsInteger(certificateType,HKConstants.CertificateType.XUESHENGZHENG.getKey())){ return 4; }else if(Constants.equalsInteger(certificateType,HKConstants.CertificateType.GONGXUOZHENG.getKey())){ return 5; }else if(Constants.equalsInteger(certificateType,HKConstants.CertificateType.GONGXUOZHENG.getKey())){ return 6; }else if(Constants.equalsInteger(certificateType,HKConstants.CertificateType.HUKOUBEN.getKey())){ return 7; }else if(Constants.equalsInteger(certificateType,HKConstants.CertificateType.QITA.getKey())){ return 8; } return null; } } server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncVisitFromHKServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,189 @@ package com.doumee.service.business.impl.hksync.fhk; 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.config.DataSyncConfig; 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.AppointmentListRequest; import com.doumee.core.haikang.model.param.request.OrgUserListRequest; 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.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; import com.doumee.core.utils.Utils; 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; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * æå海康访客信æ¯éè¿æ¥Serviceå®ç° * @author æ±è¹è¹ * @date 2023/11/30 15:33 */ @Service @Slf4j public class HkSyncVistFromHKServiceImpl extends HkSyncBaseServiceImpl { @Autowired private CompanyMapper companyMapper; @Autowired private MemberMapper memberMapper; @Autowired private VisitsMapper visitsMapper; @Autowired private DataSyncConfig dataSyncConfig; @Autowired private SystemDictDataBiz systemDictDataBiz; /** * åæ¥æµ·åº·ç»ç»ä¿¡æ¯å°ä¸å¡ç³»ç» */ @Override @Transactional public void syncVistAppointData(){ if(Constants.DEALING_FROM_HK_VISIT){ return ; } Constants.DEALING_FROM_HK_VISIT =true; 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; //æ¥è¯¢ä»å¤©ç param.setVisitStartTimeBegin(DateUtil.getISO8601Timestamp( Utils.Date.getStart(new Date()))); List<Visits> allHkList = new ArrayList<>(); while (hasNext){ //å页éåå¾ªç¯æ¥è¯¢ææé¨ç¦è®¾å¤æ°æ® param.setPageNo(curPage); param.setPageSize(100); BaseResponse<BaseListPageResponse<AppointmentInfoResponse>> response = HKService.appointmentRecords(param); if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对ä¸èµ·ï¼æµ·åº·åæ¥æ°æ®å¤±è´¥~"); } BaseListPageResponse<AppointmentInfoResponse> r = response.getData(); curTotal += 100; if(curTotal >= r.getTotal()){ hasNext = false; } if(r.getList() == null || r.getList().size()==0){ hasNext =false; }else{ allHkList.addAll(getNewVisitModelBYList(r.getList())); } curPage++; } if(allHkList .size() == 0){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"æªåæ¥å°ä»»ä½ç»ç»ä¿¡æ¯ï¼"); } //æ¸ ç©ºåææ°æ® visitsMapper.delete(new UpdateWrapper<Visits>().lambda().apply("to_days(create_date)=to_days(now())" )); 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> getNewVisitModelBYList(List<AppointmentInfoResponse> list ) { List<Visits> newList = new ArrayList<>(); if(list == null || list.size()==0){ return newList; } for(AppointmentInfoResponse model :list){ Visits c = new Visits(); c.setHkId(model.getAppointRecordId()); 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.setStarttime(DateUtil.getISO8601DateByStr(model.getVisitStartTime())); c.setEndtime(DateUtil.getISO8601DateByStr(model.getVisitEndTime())); c.setReason(model.getVisitPurpose()); c.setStatus(model.getVisitorStatus()); c.setType(Constants.ONE); if(StringUtils.isNotBlank(model.getReceptionistId())){ //被访é®äºº Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getHkId,model.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,DESUtil.encrypt(Constants.EDS_PWD, model.getCertificateNo())) .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.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; } }