From 0aa2dd71fa4b989838f89aff2cac82950a70097f Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期四, 22 八月 2024 18:10:48 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit
---
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromSelfServiceImpl.java | 337 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 337 insertions(+), 0 deletions(-)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromSelfServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromSelfServiceImpl.java
new file mode 100644
index 0000000..d310af4
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromSelfServiceImpl.java
@@ -0,0 +1,337 @@
+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.TimeRangeListRequest;
+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.dao.business.MemberMapper;
+import com.doumee.dao.business.dao.CompanyMapper;
+import com.doumee.dao.business.model.Company;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.vo.CompanyTree;
+import com.doumee.dao.system.SystemUserMapper;
+import com.doumee.dao.system.model.SystemUser;
+import com.doumee.service.business.MemberService;
+import com.doumee.service.business.impl.MemberServiceImpl;
+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;
+
+/**
+ * 娴峰悍缁勭粐浜哄憳閫氳繃姝ervice瀹炵幇(鑷缁存姢鎯呭喌锛�
+ * @author 姹熻箘韫�
+ * @date 2023/11/30 15:33
+ */
+@Service
+@Slf4j
+public class HkSyncOrgUserFromSelfServiceImpl extends HkSyncBaseServiceImpl {
+ @Autowired
+ private CompanyMapper companyMapper;
+
+ @Autowired
+ private SystemDictDataBiz systemDictDataBiz;
+ @Autowired
+ private MemberMapper memberMapper;
+ @Autowired
+ private SystemUserMapper systemUserMapper;
+
+ @Autowired
+ private DataSyncConfig dataSyncConfig;
+
+ @Autowired
+ private RedisTemplate<String, Object> redisTemplate;
+
+ /**
+ * 鍚屾娴峰悍缁勭粐淇℃伅鍒颁笟鍔$郴缁�
+ */
+ @Override
+ @Transactional
+ public void syncOrgData(LoginUserInfo user ){
+ if(Constants.DEALING_HK_ORG){
+ return ;
+ }
+ Constants.DEALING_HK_ORG =true;
+ try {
+ if( Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.self){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝褰撳墠涓嶆敮鎸佺粍缁囧悓姝ユ搷浣渵");
+ }
+ TimeRangeListRequest param = null;
+ //鑾峰彇ERP缁勭粐淇℃伅锛堝叏閲忓悓姝ワ級
+ boolean hasNext = true;
+ int curTotal = 0;
+ int curPage = 1;
+
+ List<Company> allHkList = new ArrayList<>();
+ while (hasNext){
+ //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+ param = new TimeRangeListRequest();
+ 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(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+ }
+ if(response.getData() == null || response.getData().getTotal() ==0){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.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.update(null,new UpdateWrapper<Company>().lambda()
+ .eq(Company::getType,Constants.ONE)
+ .eq(Company::getIsdeleted,Constants.ZERO)
+ .set(Company::getIsdeleted,Constants.ONE));//娓呯┖鍘熸湁鏁版嵁
+ companyMapper.insert(allHkList);//鎻掑叆鏂版暟鎹�
+ dealTreePathInfo(allHkList);//澶勭悊鏍戝舰缁撴灉鏁版嵁
+ }catch (BusinessException e){
+ throw e;
+ }catch (Exception e){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+ }finally {
+ Constants.DEALING_HK_ORG =false;
+ }
+ }
+
+ private void dealTreePathInfo(List<Company> allHkList) {
+ List<Company> tree = new CompanyTree(allHkList,DataSyncConfig.origin.hk).buildTree();
+ if(tree!=null || tree.size()>0){
+ for(Company t : tree){
+ t.setCompanyPath(t.getId()+"/");
+ t.setCompanyNamePath(t.getName());
+ companyMapper.updateById(t);
+ dealChildParentId(t,t.getChildList());
+ }
+ }
+ }
+
+ private void dealChildParentId(Company t, List<Company> childList) {
+ if(childList ==null || childList.size()==0){
+ return;
+ }
+ for(Company c : childList){
+ c.setParentId(t.getId());
+ c.setCompanyPath(t.getCompanyPath()+c.getId()+"/");
+ c.setCompanyNamePath(t.getCompanyNamePath()+"/"+c.getName());
+ companyMapper.updateById(c);
+ if(t.getChildList()!=null || t.getChildList().size()==0){
+ //閫掑綊澶勭悊瀛愰泦
+ dealChildParentId(c,c.getChildList());
+ }
+ }
+ }
+
+ 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.setEditor(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(LoginUserInfo user){
+ if(Constants.DEALING_HK_USER){
+ return ;
+ }
+ Constants.DEALING_HK_USER =true;
+ try {
+ if( Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.self){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝褰撳墠涓嶆敮鎸佺粍缁囧悓姝ユ搷浣渵");
+ }
+ List<Company> companies = companyMapper.selectList(new QueryWrapper<>());
+ if(companies == null || companies.size() == 0){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璇峰厛鍚屾浼佷笟缁勭粐淇℃伅~");
+ }
+ TimeRangeListRequest param = new TimeRangeListRequest();
+ //鑾峰彇ERP缁勭粐淇℃伅锛堝叏閲忓悓姝ワ級
+ boolean hasNext = true;
+ int curTotal = 0;
+ int curPage = 1;
+ List<Member> allHkList = new ArrayList<>();
+ List<SystemUser> allUserList = new ArrayList<>();
+ while (hasNext){
+ //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+ param = new TimeRangeListRequest();
+ 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(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+ }
+ if(response.getData() == null || response.getData().getTotal() ==0){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.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.update(null,new UpdateWrapper<Member>().lambda()
+ .eq(Member::getType,Constants.TWO)
+ .eq(Member::getIsdeleted,Constants.ZERO)
+ .set(Member::getIsdeleted,Constants.ONE));//娓呯┖鍘熸湁鏁版嵁
+ systemUserMapper.update(null,new UpdateWrapper<SystemUser>().lambda()
+ .eq(SystemUser::getType,Constants.TWO)
+ .eq(SystemUser::getDeleted,Boolean.FALSE)
+ .set(SystemUser::getDeleted,Boolean.TRUE));//娓呯┖鍘熸湁鏁版嵁
+ memberMapper.insert(allHkList);//鎻掑叆鏂版暟鎹�
+ for(Member c :allHkList){
+ allUserList.add(MemberServiceImpl.createSystemUser(c,systemDictDataBiz));//鍒涘缓鐧婚檰璐﹀彿
+ }
+ systemUserMapper.insert(allUserList);
+ }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.setWorkStatus(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.setEditor(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;
+ }
+
+}
--
Gitblit v1.9.3