From 3a86c9c6879971051ab1e01a5b9b88eed27e55db Mon Sep 17 00:00:00 2001 From: lishuai <260038442@qq.com> Date: 星期五, 15 十二月 2023 17:57:29 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java | 201 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 201 insertions(+), 0 deletions(-) diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java new file mode 100644 index 0000000..9aea7de --- /dev/null +++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java @@ -0,0 +1,201 @@ +package com.doumee.service.business.impl.hksync; + +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.core.constants.ResponseStatus; +import com.doumee.core.exception.BusinessException; +import com.doumee.core.haikang.model.HKConstants; +import com.doumee.core.haikang.model.param.BaseResponse; +import com.doumee.core.haikang.model.param.request.OrgAddRequest; +import com.doumee.core.haikang.model.param.request.OrgDelRequest; +import com.doumee.core.haikang.model.param.request.ParkListRequest; +import com.doumee.core.haikang.model.param.respose.OrgOrUserAddResponse; +import com.doumee.core.haikang.model.param.respose.OrgOrUserAddSuccessResponse; +import com.doumee.core.haikang.model.param.respose.OrgUpdateFailureResponse; +import com.doumee.core.haikang.model.param.respose.ParkListResponse; +import com.doumee.core.haikang.service.HKService; +import com.doumee.core.utils.Constants; +import com.doumee.core.utils.DateUtil; +import com.doumee.dao.business.CompanyMapper; +import com.doumee.dao.business.ParksMapper; +import com.doumee.dao.business.join.CompanyJoinMapper; +import com.doumee.dao.business.model.Company; +import com.doumee.dao.business.model.Parks; +import com.github.yulichang.query.MPJQueryWrapper; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.apache.commons.lang3.StringUtils; +import org.checkerframework.checker.units.qual.C; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.UUID; + +/** + * 娴峰悍鍋滆溅搴撳悓姝ervice瀹炵幇 + * @author 姹熻箘韫� + * @date 2023/11/30 15:33 + */ +@Service +public class HkSyncOrgUserServiceImpl extends HkSyncBaseServiceImpl { + + @Autowired + private CompanyMapper companyMapper; + @Autowired + private SystemDictDataBiz systemDictDataBiz; + + /** + * 鍚屾娴峰悍缁勭粐淇℃伅 + * @return + */ + @Override + public void syncOrgData(){ + if(Constants.DEALING_HK_ORG){ + return ; + } + Constants.DEALING_HK_ORG =true; + try { + //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑浼佷笟鏁版嵁 + String rootOrgId = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_ROOTORG_CODE).getCode(); + List<Company> list = companyMapper.selectList(new QueryWrapper<Company>() + .select("*,(select b.hk_id from company b where company.erp_parent_id = b.id limit 1) as hkParentId") + .lambda() + .eq(Company::getHkStatus,Constants.ZERO) + .orderByDesc(Company::getErpDate)); + if(list ==null || list.size()==0){ + return; + } + Date date = new Date(); + List<OrgAddRequest> addList = new ArrayList<>(); + List<Company> updateList = new ArrayList<>(); + List<Integer> delIds = new ArrayList<>(); + List<String> delHKIds = new ArrayList<>(); + for(Company c : list){ + if(StringUtils.isBlank(c.getErpParentId())){ + //濡傛灉鏄痚rp椤跺眰缁勭粐锛岄粯璁ゅ啀娴峰悍鏍圭粍缁囦笅鍒涘缓缁勭粐 + c.setHkParentId(rootOrgId); + } + if(StringUtils.isBlank(c.getHkParentId())){ + //濡傛灉涓婄骇娴峰悍閮ㄩ棬杩樻病鍚屾锛屽垯姝ゆ涓嶅鐞� + continue; + } + if(StringUtils.isBlank(c.getHkId())){ + //濡傛灉鏂板鍚屾鏁告摎 + if(Constants.equalsInteger(Constants.ONE,c.getIsdeleted())){ + //鍒犻櫎鐨勭粍缁囷紝涓嶅仛澶勭悊,娴峰悍鐘舵�佹洿鏂颁负涓嶅鐞嗭紝涓嬫涓嶅啀澶勭悊杩欎釜璁板綍 + c.setHkStatus(Constants.TWO); + companyMapper.updateById(c); + continue ; + } + OrgAddRequest m = getOrgAddModel(c,rootOrgId); + addList.add(m); + c.setHkId(m.getOrgIndexCode()); + updateList.add(c); + }else{ + //鍒犻櫎鐨勬暟鎹紝杩涜鍒犻櫎 + delIds.add(c.getId()); + delHKIds.add(c.getHkId()); + //鍒犻櫎娴峰悍鍘熸湁鐨勬暟鎹紝鍐嶆柊澧炵粍缁� + OrgAddRequest m = getOrgAddModel(c,rootOrgId); + addList.add(m); + c.setHkId(m.getOrgIndexCode()); + updateList.add(c); + } + } + //澶勭悊鍒犻櫎鏁版嵁 + doHkDeleteOrg(delIds,delHKIds,date); + //澶勭悊鏂板鏁版嵁 + doHkAddOrg(updateList,addList); + }catch (Exception e){ + e.printStackTrace(); + }finally { + Constants.DEALING_HK_ORG =false; + } + + } + + /** + * 澶勭悊鎵归噺鏂板鐨勬捣搴锋暟鎹紝鏇存柊鍚屾鏁版嵁鐘舵�� + * @param updateList + * @param addList + */ + private void doHkAddOrg(List<Company> updateList, List<OrgAddRequest> addList) { + Date date = new Date(); + BaseResponse<OrgOrUserAddResponse> result = HKService.addBatchOrg(addList); + if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){ + OrgOrUserAddResponse data = result.getData(); + if(data.getSuccesses()!=null && data.getSuccesses().size()>0){ + //澶勭悊鏂板鎴愬姛鐨勬暟鎹紝淇敼娴峰悍鍚屾鐘舵�� + for(OrgOrUserAddSuccessResponse r :data.getSuccesses()){ + Integer index = getCompanyId(updateList,r.getOrgIndexCode()); + if(index!=null){ + companyMapper.update(null,new UpdateWrapper<Company>().lambda() + .set(Company::getHkStatus,Constants.ONE) + .set(Company::getHkDate,date) + .set(Company::getHkId,r.getOrgIndexCode()) + .eq(Company::getId, index) ); + } + } + } + } + } + + private Integer getCompanyId(List<Company> updateList, String orgIndexCode) { + if(updateList!=null && StringUtils.isNotBlank(orgIndexCode)){ + for(Company c : updateList){ + if(StringUtils.equals(c.getHkId(),orgIndexCode)){ + return c.getId(); + } + } + } + return null; + } + + private OrgAddRequest getOrgAddModel(Company c,String rootOrgId) { + OrgAddRequest model = new OrgAddRequest(); + model.setOrgIndexCode(HKConstants.RES_INDEX+UUID.randomUUID().toString()); + model.setOrgName(c.getName()); + model.setOrgCode(c.getCode()); + model.setOrgIndexCode(c.getHkParentId()); + return model; + + } + + /** + * 瀵规捣搴峰垹闄ょ粍缁囦俊鎭� + * @param delIds + * @param date + */ + private void doHkDeleteOrg(List<Integer> delIds,List<String> delHkIds, Date date) { + OrgDelRequest request = new OrgDelRequest(); + request.setIndexCodes((String[]) delHkIds.toArray()); + BaseResponse<List<OrgUpdateFailureResponse>> result = HKService.delBatchOrg(request); + if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){ + List<String> fIds = new ArrayList<>(); + if(result.getData()!=null){ + for(OrgUpdateFailureResponse r : result.getData()){ + fIds.add(r.getOrgIndexCode());//鍒犻櫎澶辫触鐨勬暟鎹泦鍚� + } + } + //鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛� + companyMapper.update(null,new UpdateWrapper<Company>().lambda() + .set(Company::getHkStatus,Constants.ONE) + .set(Company::getHkDate,date) + .in(Company::getId, delIds) + .notIn(fIds.size()>0,Company::getHkId, fIds)); + } + } + + /** + * 鍚屾娴峰悍浜哄憳淇℃伅 + * @return + */ + @Override + public void syncUserData(){ + + } + +} -- Gitblit v1.9.3