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