Parcourir la source

feature: 数据同步
1.完善注释及代码格式化

luo.yibo@datuai.com il y a 1 an
Parent
commit
1ec3ba95f7

+ 24 - 0
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/controller/SyncTest.java

@@ -2,6 +2,8 @@ package org.dromara.server.sync.controller;
 
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.domain.R;
+import org.dromara.server.sync.service.SyncGraduateService;
+import org.dromara.server.sync.service.SyncHrService;
 import org.dromara.server.sync.service.SyncTrainService;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -22,6 +24,8 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/test")
 public class SyncTest {
     private final SyncTrainService syncTrainService;
+    private final SyncGraduateService syncGraduateService;
+    private final SyncHrService syncHrService;
 
     @GetMapping("/sync/trainee")
     public R<Void> syncTrainee() {
@@ -32,4 +36,24 @@ public class SyncTest {
     public R<Void> syncTrainClass() {
         return syncTrainService.syncTrainClass() ? R.ok() : R.fail();
     }
+
+    @GetMapping("/sync/graduate")
+    public R<Void> syncGraduate() {
+        return syncGraduateService.syncGraduate() ? R.ok() : R.fail();
+    }
+
+    @GetMapping("/sync/graduate/class")
+    public R<Void> syncGraduateClass() {
+        return syncGraduateService.syncGraduateClass() ? R.ok() : R.fail();
+    }
+
+    @GetMapping("/sync/teacher")
+    public R<Void> syncTeacher() {
+        return syncHrService.syncTeacher() ? R.ok() : R.fail();
+    }
+
+    @GetMapping("/sync/teacher/dept")
+    public R<Void> syncTeacherDept() {
+        return syncHrService.syncDept() ? R.ok() : R.fail();
+    }
 }

+ 58 - 34
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/SyncGraduateService.java

@@ -2,9 +2,11 @@ package org.dromara.server.sync.service;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
 import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.exception.ServiceException;
 import org.dromara.server.base.service.dept.strategy.SyncDeptStrategyContent;
 import org.dromara.server.base.service.user.strategy.SyncUserStrategyContent;
 import org.dromara.server.common.constant.DefaultConstants;
@@ -35,49 +37,69 @@ public class SyncGraduateService {
     private final SyncDeptStrategyContent syncDeptStrategyContent;
     private final SyncUserStrategyContent syncUserStrategyContent;
 
-    public void syncGraduateClass() {
+    /**
+     * 全量同步研究生班级
+     *
+     * @return Boolean
+     */
+    public Boolean syncGraduateClass() {
         HttpRequest req = CreateHttpRequest.createRequest();
         req.body(getQueryBodyForClass());
-
-        SyncFullDataBo dataBo = JSONUtil.toBean(req.execute().body(), SyncFullDataBo.class);
-
-        List<ResourceDept> resourceDeptlist = new ArrayList<>();
-        for (List<String> list : dataBo.getResponseParam().getResourceInfos().get(0).getDataInfo()) {
-            ResourceDept dept = new ResourceDept();
-            dept.setDept_id(list.get(0));
-            dept.setYear(Integer.valueOf(list.get(1)));
-            dept.setDept_name(list.get(2));
-            dept.setBeginDate(DateUtil.parse(list.get(3), "yyyy-MM-dd HH:mm:ss"));
-            dept.setEndDate(DateUtil.parse(list.get(4), "yyyy-MM-dd HH:mm:ss"));
-            dept.setDelFlag("ZC".equals(list.get(5)) ? "0" : "1");
-            resourceDeptlist.add(dept);
+        try (HttpResponse res = req.execute()) {
+            SyncFullDataBo dataBo = JSONUtil.toBean(res.body(), SyncFullDataBo.class);
+            List<ResourceDept> resourceDeptlist = new ArrayList<>();
+            for (List<String> list : dataBo.getResponseParam().getResourceInfos().get(0).getDataInfo()) {
+                ResourceDept dept = new ResourceDept();
+                dept.setDept_id(list.get(0));
+                dept.setYear(Integer.valueOf(list.get(1)));
+                dept.setDept_name(list.get(2));
+                dept.setBeginDate(DateUtil.parse(list.get(3), "yyyy-MM-dd HH:mm:ss"));
+                dept.setEndDate(DateUtil.parse(list.get(4), "yyyy-MM-dd HH:mm:ss"));
+                dept.setDelFlag("ZC".equals(list.get(5)) ? "0" : "1");
+                dept.setOperatorId(DefaultConstants.FULL_SYNC_ADMIN);
+                dept.setTenantId(DefaultConstants.TENANT_ID);
+                resourceDeptlist.add(dept);
+            }
+            log.info("[全量获取到的研究生班级数据]-共[{}]条-[{}]", resourceDeptlist.size(), JSONUtil.toJsonStr(dataBo));
+            syncDeptStrategyContent.syncDept(resourceDeptlist, SyncResourceConstants.GRADUATE_CLASS);
+            return true;
+        } catch (Exception e) {
+            throw new ServiceException(e.getMessage());
         }
-        log.info("[全量获取到的研究生班级数据]-共[{}]条-[{}]", resourceDeptlist.size(), JSONUtil.toJsonStr(dataBo));
-
-        //region 模拟测试数据
-        //List<ResourceDept> resourceDeptlist = new ArrayList<>();
-        //ResourceDept dept = new ResourceDept();
-        //dept.setDept_id("1e50c447513b4e88bad114470183b314");
-        //dept.setYear(2023);
-        //dept.setDept_name("2023级马克思硕士研究生班");
-        //dept.setBeginDate(DateUtil.parse("2023-09-08 00:00:00", "yyyy-MM-dd HH:mm:ss"));
-        //dept.setEndDate(DateUtil.parse("2026-09-08 00:00:00", "yyyy-MM-dd HH:mm:ss"));
-        //dept.setDelFlag("1");
-        //resourceDeptlist.add(dept);
-        //endregion
+        // region 模拟测试数据
+        // List<ResourceDept> resourceDeptlist = new ArrayList<>();
+        // ResourceDept dept = new ResourceDept();
+        // dept.setDept_id("1e50c447513b4e88bad114470183b314");
+        // dept.setYear(2023);
+        // dept.setDept_name("2023级马克思硕士研究生班");
+        // dept.setBeginDate(DateUtil.parse("2023-09-08 00:00:00", "yyyy-MM-dd HH:mm:ss"));
+        // dept.setEndDate(DateUtil.parse("2026-09-08 00:00:00", "yyyy-MM-dd HH:mm:ss"));
+        // dept.setDelFlag("1");
+        // resourceDeptlist.add(dept);
+        // syncDeptStrategyContent.syncDept(resourceDeptlist, SyncResourceConstants.GRADUATE_CLASS);
+        // endregion
 
-        syncDeptStrategyContent.syncDept(resourceDeptlist, SyncResourceConstants.GRADUATE_CLASS);
     }
 
-    public void syncGraduate() {
+    /**
+     * 全量同步研究生数据
+     *
+     * @return Boolean
+     */
+    public Boolean syncGraduate() {
         HttpRequest req = CreateHttpRequest.createRequest();
         req.body(getQueryBodyForGraduate());
 
-        SyncFullDataBo dataBo = JSONUtil.toBean(req.execute().body(), SyncFullDataBo.class);
-        List<ResourcePerson> resourcePersonList = getResourcePeople(dataBo);
-        log.info("[全量获取到的研究生数据]-共[{}]条-[{}]", resourcePersonList.size(), JSONUtil.toJsonStr(dataBo));
+        try (HttpResponse res = req.execute()) {
+            SyncFullDataBo dataBo = JSONUtil.toBean(res.body(), SyncFullDataBo.class);
+            List<ResourcePerson> resourcePersonList = getResourcePeople(dataBo);
+            log.info("[全量获取到的研究生数据]-共[{}]条-[{}]", resourcePersonList.size(), JSONUtil.toJsonStr(dataBo));
 
-        syncUserStrategyContent.syncUser(resourcePersonList, SyncResourceConstants.GRADUATE);
+            syncUserStrategyContent.syncUser(resourcePersonList, SyncResourceConstants.GRADUATE);
+            return true;
+        } catch (Exception e) {
+            throw new ServiceException(e.getMessage());
+        }
     }
 
     /**
@@ -96,8 +118,10 @@ public class SyncGraduateService {
             person.setSex(list.get(2));
             person.setPhone(list.get(3));
             person.setDeptId(list.get(5));
-            person.setPostCode(DefaultConstants.GRADUATE_CODE);
             person.setCategory("3");
+            person.setPostCode(DefaultConstants.GRADUATE_CODE);
+            person.setOperatorId(DefaultConstants.FULL_SYNC_ADMIN);
+            person.setTenantId(DefaultConstants.TENANT_ID);
             resourcePersonList.add(person);
         }
         return resourcePersonList;

+ 75 - 30
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/SyncHrService.java

@@ -1,9 +1,11 @@
 package org.dromara.server.sync.service;
 
 import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
 import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.exception.ServiceException;
 import org.dromara.server.base.service.dept.strategy.SyncDeptStrategyContent;
 import org.dromara.server.base.service.user.strategy.SyncUserStrategyContent;
 import org.dromara.server.common.constant.DefaultConstants;
@@ -11,6 +13,7 @@ import org.dromara.server.common.constant.SyncResourceConstants;
 import org.dromara.server.common.domain.bo.ResourceDept;
 import org.dromara.server.common.domain.bo.ResourcePerson;
 import org.dromara.server.common.domain.bo.SyncFullDataBo;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -35,32 +38,89 @@ public class SyncHrService {
 
     /**
      * 同步教职工部门数据,该方法将提供给定时任务调用
+     *
+     * @return boolean
      */
-    public void syncDept() {
+    public Boolean syncDept() {
         HttpRequest req = CreateHttpRequest.createRequest();
         req.body(getQueryBodyForDept());
 
-        SyncFullDataBo dataBo = JSONUtil.toBean(req.execute().body(), SyncFullDataBo.class);
+        try (HttpResponse res = req.execute()) {
+            SyncFullDataBo dataBo = JSONUtil.toBean(res.body(), SyncFullDataBo.class);
+            List<ResourceDept> resourceDeptlist = getResourceDeptList(dataBo);
+            log.info("[全量获取到的部门数据]-共[{}]条-[{}]", resourceDeptlist.size(), JSONUtil.toJsonStr(dataBo));
+            syncDeptStrategyContent.syncDept(resourceDeptlist, SyncResourceConstants.HR_DEPT);
+            return true;
+        } catch (Exception e) {
+            throw new ServiceException(e.getMessage());
+        }
+    }
+
+    /**
+     * 同步教职工数据
+     *
+     * @return boolean
+     */
+    public Boolean syncTeacher() {
+        HttpRequest req = CreateHttpRequest.createRequest();
+        req.body(getQueryBodyForTeacher());
+        try (HttpResponse res = req.execute()) {
+            SyncFullDataBo dataBo = JSONUtil.toBean(res.body(), SyncFullDataBo.class);
+            List<ResourcePerson> resourcePersonList = getResourcePeopleList(dataBo);
+            log.info("[全量获取到的教职工数据]-[共{}条]-[{}]", resourcePersonList.size(), JSONUtil.toJsonStr(dataBo));
+            syncUserStrategyContent.syncUser(resourcePersonList, SyncResourceConstants.TEACHER);
+            return true;
+        } catch (Exception e) {
+            throw new ServiceException(e.getMessage());
+        }
+        // region 模拟测试数据
+        // List<ResourcePerson> resourcePersonList = new ArrayList<>();
+        // ResourcePerson person = new ResourcePerson();
+        // person.setUserId("00314200");
+        // person.setDeptId("001001001000");
+        // person.setPostCode(DefaultConstants.TEACHER_CODE);
+        // person.setRealName("康重文");
+        // person.setSex("1");
+        // person.setPhone("13875850616");
+        // person.setCategory("1");
+        // person.setRemark("");
+        // person.setUserState("on");
+        // resourcePersonList.add(person);
+        // syncUserStrategyContent.syncUser(resourcePersonList, SyncResourceConstants.TEACHER);
+        // endregion
+
+    }
+
+    /**
+     * 全量部门数据转换
+     *
+     * @param dataBo 全量数据
+     * @return 部门数据
+     */
+
+    @NotNull
+    private static List<ResourceDept> getResourceDeptList(SyncFullDataBo dataBo) {
         List<ResourceDept> resourceDeptlist = new ArrayList<>();
         for (List<String> list : dataBo.getResponseParam().getResourceInfos().get(0).getDataInfo()) {
             ResourceDept dept = new ResourceDept();
             dept.setParent_id(list.get(0));
             dept.setDept_id(list.get(1));
             dept.setDept_name(list.get(2));
+            dept.setOperatorId(DefaultConstants.FULL_SYNC_ADMIN);
+            dept.setTenantId(DefaultConstants.TENANT_ID);
             resourceDeptlist.add(dept);
         }
-        log.info("[全量获取到的部门数据]-共[{}]条-[{}]", resourceDeptlist.size(), JSONUtil.toJsonStr(dataBo));
-        syncDeptStrategyContent.syncDept(resourceDeptlist, SyncResourceConstants.HR_DEPT);
+        return resourceDeptlist;
     }
 
     /**
-     * 同步教职工数据
+     * 全量人员数据转换
+     *
+     * @param dataBo 全量数据
+     * @return 转换结果
      */
-    public void syncTeacher() {
-        HttpRequest req = CreateHttpRequest.createRequest();
-        req.body(getQueryBodyForTeacher());
-
-        SyncFullDataBo dataBo = JSONUtil.toBean(req.execute().body(), SyncFullDataBo.class);
+    @NotNull
+    private static List<ResourcePerson> getResourcePeopleList(SyncFullDataBo dataBo) {
         List<ResourcePerson> resourcePersonList = new ArrayList<>();
         for (List<String> list : dataBo.getResponseParam().getResourceInfos().get(0).getDataInfo()) {
             ResourcePerson person = new ResourcePerson();
@@ -74,32 +134,16 @@ public class SyncHrService {
             person.setCategory("1");
             person.setRemark("");
             person.setUserState(list.get(16));
+            person.setOperatorId(DefaultConstants.FULL_SYNC_ADMIN);
+            person.setTenantId(DefaultConstants.TENANT_ID);
             resourcePersonList.add(person);
         }
-        log.info("[全量获取到的教职工数据]-[共{}条]-[{}]", resourcePersonList.size(), JSONUtil.toJsonStr(dataBo));
-
-        //region 模拟测试数据
-        //List<ResourcePerson> resourcePersonList = new ArrayList<>();
-        //ResourcePerson person = new ResourcePerson();
-        //person.setUserId("00314200");
-        //person.setDeptId("001001001000");
-        //person.setPostCode(DefaultConstants.TEACHER_CODE);
-        //person.setRealName("康重文");
-        //person.setSex("1");
-        //person.setPhone("13875850616");
-        //person.setCategory("1");
-        //person.setRemark("");
-        //person.setUserState("on");
-        //resourcePersonList.add(person);
-        //endregion
-
-
-        syncUserStrategyContent.syncUser(resourcePersonList, SyncResourceConstants.TEACHER);
-
+        return resourcePersonList;
     }
 
     /**
      * 生成部门查询body参数
+     *
      * @return body数据
      */
     private String getQueryBodyForDept() {
@@ -141,6 +185,7 @@ public class SyncHrService {
 
     /**
      * 生成教职工查询的body参数
+     *
      * @return body 数据
      */
     private String getQueryBodyForTeacher() {