Forráskód Böngészése

feature: 全量同步模拟测试

luo.yibo@datuai.com 1 éve
szülő
commit
6eb529f843
15 módosított fájl, 334 hozzáadás és 219 törlés
  1. 5 6
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/mq/PushKafkaData.java
  2. 7 9
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java
  3. 0 6
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mq/PushKafkaData.java
  4. 0 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
  5. 84 0
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/util/GraduateUtils.java
  6. 9 3
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/util/TeacherUtils.java
  7. 1 1
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/util/TrainUtils.java
  8. 0 5
      ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/controller/v1/ConsumeController.java
  9. 1 1
      ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/cloud/TeacherEventStrategyImpl.java
  10. 1 1
      ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/cloud/TrainEventStrategyImpl.java
  11. 78 0
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/controller/SyncHand.java
  12. 86 31
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/controller/SyncTest.java
  13. 4 14
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/SyncGraduateService.java
  14. 30 57
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/SyncHrService.java
  15. 28 84
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/SyncTrainService.java

+ 5 - 6
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/mq/PushKafkaData.java

@@ -3,8 +3,8 @@ package org.dromara.backstage.mq;
 import cn.hutool.core.util.ObjectUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.dubbo.config.annotation.DubboReference;
-import org.dromara.backstage.api.RemotePtParameterService;
+import org.dromara.common.core.config.DefaultConfig;
+import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.message.kafka.producer.KafkaNormalProducer;
 import org.springframework.stereotype.Service;
 
@@ -13,12 +13,11 @@ import org.springframework.stereotype.Service;
 @Service
 public class PushKafkaData {
     private final KafkaNormalProducer kafkaNormalProducer;
-    @DubboReference
-    private final RemotePtParameterService remotePtParameterService;
+    private final DefaultConfig defaultConfig;
 
     public void sendKafkaMessage(String topic, String eventType, String sender, Object data){
-        String pushData = remotePtParameterService.getPtParameterByKey("PUSH_MQ_DATA");
-        if (ObjectUtil.isNotEmpty(pushData) && ObjectUtil.equals(pushData, "1")) {
+        String pushData = defaultConfig.getLocationFlag();
+        if (ObjectUtil.isNotEmpty(pushData) && ObjectUtil.equals(pushData, DefaultConstants.CLOUD_FLAG)) {
             kafkaNormalProducer.sendKafkaMessage(topic, eventType, sender, data);
         }
     }

+ 7 - 9
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java

@@ -48,6 +48,7 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
 
     /**
      * 查询部门树
+     *
      * @return 部门树Id列表
      */
     @Override
@@ -58,6 +59,7 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
 
     /**
      * 根据部门Id查询子部门Id列表
+     *
      * @param parentId 部门Id
      * @return 子部门Id列表
      */
@@ -75,14 +77,8 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
      */
     @Override
     public RemoteDeptVo selectDeptByOtherId(String otherId, String tenantId) {
-        String cacheKey = tenantId + "_dept:" + otherId;
-        RemoteDeptVo remoteDeptVo = RedisUtils.getCacheObject(cacheKey);
-        if (!ObjectUtil.isNotEmpty(remoteDeptVo)) {
-            SysDeptVo deptVo = sysDeptService.selectVoByOtherId(otherId);
-            remoteDeptVo = MapstructUtils.convert(deptVo, RemoteDeptVo.class);
-            RedisUtils.setCacheObject(cacheKey, remoteDeptVo, Duration.ofHours(2));
-        }
-        return remoteDeptVo;
+        SysDeptVo deptVo = sysDeptService.selectVoByOtherId(otherId);
+        return MapstructUtils.convert(deptVo, RemoteDeptVo.class);
     }
 
     /**
@@ -178,13 +174,14 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
     public List<RemoteDeptVo> selectDoingClass(Date doingDate) {
         List<SysDeptVo> list = sysDeptService.selectDoingClass(doingDate);
         if (CollectionUtil.isNotEmpty(list)) {
-           return MapstructUtils.convert(list, RemoteDeptVo.class);
+            return MapstructUtils.convert(list, RemoteDeptVo.class);
         }
         return null;
     }
 
     /**
      * 根据部门Id查询部门信息
+     *
      * @param deptId 部门Id
      * @return 部门信息
      */
@@ -199,6 +196,7 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
 
     /**
      * 更改部门人员对应关系中的报到状态
+     *
      * @param deptId 部门Id
      * @param userId 人员Id
      * @return 更新成功与否

+ 0 - 6
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mq/PushKafkaData.java

@@ -14,14 +14,8 @@ import org.springframework.stereotype.Service;
 public class PushKafkaData {
     private final KafkaNormalProducer kafkaNormalProducer;
     private final DefaultConfig defaultConfig;
-    // @DubboReference
-    // private final RemotePtParameterService remotePtParameterService;
 
     public void sendKafkaMessage(String topic, String eventType, String sender, Object data){
-        // String pushData = remotePtParameterService.getPtParameterByKey("PUSH_MQ_DATA");
-        // if (ObjectUtil.isNotEmpty(pushData) && ObjectUtil.equals(pushData, "1")) {
-        //     kafkaNormalProducer.sendKafkaMessage(topic, eventType, sender, data);
-        // }
         String pushData = defaultConfig.getLocationFlag();
         if (ObjectUtil.isNotEmpty(pushData) && ObjectUtil.equals(pushData, DefaultConstants.CLOUD_FLAG)) {
             kafkaNormalProducer.sendKafkaMessage(topic, eventType, sender, data);

+ 0 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java

@@ -287,7 +287,6 @@ public class SysDeptServiceImpl implements ISysDeptService {
         int count = this.insertDept(bo);
         if (count > 0) {
             SysDeptVo vo = baseMapper.selectVoById(bo.getDeptId());
-            //sendCloudConsume(vo);
             kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.DEPT, EventSenderEnum.SYSTEM.code(), vo);
             return vo;
         }

+ 84 - 0
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/util/GraduateUtils.java

@@ -0,0 +1,84 @@
+package org.dromara.server.base.util;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONObject;
+import org.dromara.common.core.config.DefaultConfig;
+import org.dromara.common.core.constant.DefaultConstants;
+import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.server.common.domain.bo.ResourceDept;
+import org.dromara.server.common.domain.bo.ResourcePerson;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * name: GraduateUtils
+ * package: org.dromara.server.mq.event.kafka.impl.train
+ * description: 研究生辅助工具类
+ * date: 2024-10-26 13:33:32 13:33
+ *
+ * @author luoyibo
+ * @version 0.1
+ * @since JDK 1.8
+ */
+public class GraduateUtils {
+    private static final DefaultConfig defaultConfig;
+
+    static {
+        defaultConfig = SpringUtils.getBean(DefaultConfig.class);
+    }
+    /**
+     * 研究生班级处理
+     *
+     * @param data 班级数据
+     * @return 处理结果
+     */
+    public static List<ResourceDept> getSycClass(JSONObject data) {
+        List<ResourceDept> resourceDeptlist = new ArrayList<>();
+        ResourceDept dept = new ResourceDept();
+        dept.setDept_id(data.get("Id").toString());
+        dept.setDept_name(data.get("class_name").toString());
+        dept.setYear(Integer.valueOf(data.get("years").toString()));
+        dept.setBeginDate(DateUtil.parse(data.get("opening_time").toString(), DefaultConstants.DATE_TIME_FORMAT));
+        dept.setEndDate(DateUtil.parse(data.get("close_time").toString(), DefaultConstants.DATE_TIME_FORMAT));
+        dept.setDelFlag("ZC".equals(data.get("status").toString())?"0":"2");
+        dept.setOperatorId(DefaultConstants.KAFKA_SYNC_ADMIN);
+        if (ObjectUtil.isNotEmpty(data.get("tenantId"))) {
+            dept.setTenantId(data.get("tenantId").toString());
+        } else {
+            dept.setTenantId(defaultConfig.getTenantId());
+        }
+        resourceDeptlist.add(dept);
+
+        return resourceDeptlist;
+    }
+
+    /**
+     * 处理研究生信息
+     *
+     * @param data 教职工
+     * @return 结果
+     */
+    public static List<ResourcePerson> getSyncGraduate(JSONObject data) {
+        List<ResourcePerson> resourcePersonList = new ArrayList<>();
+        ResourcePerson person = new ResourcePerson();
+        person.setUserId(data.getStr("commonId"));
+        person.setRealName(data.get("stu_name").toString());
+        person.setSex(data.get("sex").toString());
+        person.setPhone(data.get("phone").toString());
+        person.setIdNumber(data.getStr("id_card"));
+        person.setDeptId(data.getStr("class_id"));
+        person.setDelFlag("ZC".equals(data.get("status").toString())?"0":"2");
+        person.setCategory(DefaultConstants.CATEGORY_GRADUATE);
+        person.setOperatorId(DefaultConstants.KAFKA_SYNC_ADMIN);
+        person.setPostCode(DefaultConstants.GRADUATE_CODE);
+        if (ObjectUtil.isNotEmpty(data.get("tenantId"))) {
+            person.setTenantId(data.get("tenantId").toString());
+        } else {
+            person.setTenantId(defaultConfig.getTenantId());
+        }
+        resourcePersonList.add(person);
+        return resourcePersonList;
+    }
+}

+ 9 - 3
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/utils/TeacherUtils.java → ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/util/TeacherUtils.java

@@ -1,4 +1,4 @@
-package org.dromara.server.mq.event.kafka.impl.utils;
+package org.dromara.server.base.util;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -73,8 +73,14 @@ public class TeacherUtils {
         dept.setParent_id(data.get("parent_id").toString());
         dept.setDept_id(data.get("dept_id").toString());
         dept.setDept_name(data.get("dept_name").toString());
-        dept.setDept_num(data.get("dept_num").toString());
-        dept.setTenantId(defaultConfig.getTenantId());
+        if (ObjectUtil.isNotEmpty(data.get("dept_num"))) {
+            dept.setDept_num(data.get("dept_num").toString());
+        }
+        if (ObjectUtil.isNotEmpty(data.get("tenant_code"))) {
+            dept.setTenantId(data.get("tenant_code").toString());
+        } else {
+            dept.setTenantId(defaultConfig.getTenantId());
+        }
         dept.setOperatorId(DefaultConstants.KAFKA_SYNC_ADMIN);
         resourceDeptlist.add(dept);
 

+ 1 - 1
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/utils/TrainUtils.java → ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/util/TrainUtils.java

@@ -1,4 +1,4 @@
-package org.dromara.server.mq.event.kafka.impl.utils;
+package org.dromara.server.base.util;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;

+ 0 - 5
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/controller/v1/ConsumeController.java

@@ -151,10 +151,6 @@ public class ConsumeController {
             if (ObjectUtil.equals(defaultConfig.getLocationFlag(), DefaultConstants.LOCAL_FLAG)) {
                 baseBusiness.sendCloudConsume(cloudConsumeBo);
             }
-            //String cloudConsume = remotePtParameterService.getPtParameterByKey("PUSH_CLOUD_CONSUME");
-            //if(ObjectUtil.equals(cloudConsume,"1")){
-            //    baseBusiness.sendCloudConsume(cloudConsumeBo);
-            //}
         } else if (Objects.equals(type, "uploadRecord")) {
             errorInfo = consumeBusiness.postOrder(bo, mac, xfPwd);
         } else {
@@ -169,5 +165,4 @@ public class ConsumeController {
         }
         return recordConvertStrategy.reConvert(bo, "YC");
     }
-
 }

+ 1 - 1
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/cloud/TeacherEventStrategyImpl.java

@@ -7,11 +7,11 @@ import org.dromara.common.message.kafka.constant.EventSenderConstants;
 import org.dromara.common.message.kafka.constant.EventTypeConstants;
 import org.dromara.server.base.service.dept.strategy.SyncDeptStrategyContent;
 import org.dromara.server.base.service.user.strategy.SyncUserStrategyContent;
+import org.dromara.server.base.util.TeacherUtils;
 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.mq.event.kafka.IYktEventStrategy;
-import org.dromara.server.mq.event.kafka.impl.utils.TeacherUtils;
 import org.springframework.stereotype.Service;
 
 import java.util.List;

+ 1 - 1
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/cloud/TrainEventStrategyImpl.java

@@ -7,11 +7,11 @@ import org.dromara.common.message.kafka.constant.EventSenderConstants;
 import org.dromara.common.message.kafka.constant.EventTypeConstants;
 import org.dromara.server.base.service.dept.strategy.SyncDeptStrategyContent;
 import org.dromara.server.base.service.user.strategy.SyncUserStrategyContent;
+import org.dromara.server.base.util.TrainUtils;
 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.mq.event.kafka.IYktEventStrategy;
-import org.dromara.server.mq.event.kafka.impl.utils.TrainUtils;
 import org.springframework.stereotype.Service;
 
 import java.util.List;

+ 78 - 0
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/controller/SyncHand.java

@@ -0,0 +1,78 @@
+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;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName SyncTest
+ * @Description 手工全量数据同步
+ * @Author luoyibo
+ * @Date 2024-11-15 22:29
+ * @Version 1.0
+ * @since jdk17
+ */
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/hand")
+public class SyncHand {
+    private final SyncTrainService syncTrainService;
+    private final SyncGraduateService syncGraduateService;
+    private final SyncHrService syncHrService;
+
+    /**
+     * 培训学员同步
+     * @return 同步结果
+     */
+    @GetMapping("/sync/trainee")
+    public R<Void> syncTrainee() {
+        return syncTrainService.syncTrainee() ? R.ok() : R.fail();
+    }
+    /**
+     * 培训班同步
+     * @return 同步结果
+     */
+    @GetMapping("/sync/train/class")
+    public R<Void> syncTrainClass() {
+        return syncTrainService.syncTrainClass() ? R.ok() : R.fail();
+    }
+    /**
+     * 研究生同步
+     * @return 同步结果
+     */
+    @GetMapping("/sync/graduate")
+    public R<Void> syncGraduate() {
+        return syncGraduateService.syncGraduate() ? R.ok() : R.fail();
+    }
+    /**
+     * 培研究生班级同步
+     * @return 同步结果
+     */
+    @GetMapping("/sync/graduate/class")
+    public R<Void> syncGraduateClass() {
+        return syncGraduateService.syncGraduateClass() ? R.ok() : R.fail();
+    }
+    /**
+     * 教职工同步
+     * @return 同步结果
+     */
+    @GetMapping("/sync/teacher")
+    public R<Void> syncTeacher() {
+        return syncHrService.syncTeacher() ? R.ok() : R.fail();
+    }
+    /**
+     * 教职工部门同步
+     * @return 同步结果
+     */
+    @GetMapping("/sync/teacher/dept")
+    public R<Void> syncTeacherDept() {
+        return syncHrService.syncDept() ? R.ok() : R.fail();
+    }
+}

+ 86 - 31
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/controller/SyncTest.java

@@ -1,20 +1,29 @@
 package org.dromara.server.sync.controller;
 
+import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
-import org.dromara.backstage.api.RemotePtParameterService;
+import lombok.extern.slf4j.Slf4j;
 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.dromara.server.base.service.dept.strategy.SyncDeptStrategyContent;
+import org.dromara.server.base.service.user.strategy.SyncUserStrategyContent;
+import org.dromara.server.base.util.GraduateUtils;
+import org.dromara.server.base.util.TeacherUtils;
+import org.dromara.server.base.util.TrainUtils;
+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.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * @ClassName SyncTest
- * @Description TODO
+ * @Description 数据同步测试
  * @Author luoyibo
  * @Date 2024-11-15 22:29
  * @Version 1.0
@@ -22,48 +31,94 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @Validated
 @RestController
+@Slf4j
 @RequiredArgsConstructor
 @RequestMapping("/test")
 public class SyncTest {
-    private final SyncTrainService syncTrainService;
-    private final SyncGraduateService syncGraduateService;
-    private final SyncHrService syncHrService;
-    private final RemotePtParameterService remotePtParameterService;
-
-    @GetMapping("/sync/trainee")
-    public R<Void> syncTrainee() {
-        return syncTrainService.syncTrainee() ? R.ok() : R.fail();
-    }
+    private final SyncDeptStrategyContent syncDeptStrategyContent;
+    private final SyncUserStrategyContent syncUserStrategyContent;
 
+    /**
+     * 培训班同步测试
+     * @param data 班级数据
+     * @return 同步结果
+     */
     @GetMapping("/sync/train/class")
-    public R<Void> syncTrainClass() {
-        return syncTrainService.syncTrainClass() ? R.ok() : R.fail();
+    public R<Void> syncTrainClass(@RequestBody Map<String, Object> data) {
+        List<ResourceDept> resourceDeptlist = TrainUtils.getSycClass(JSONUtil.parseObj(data));
+        log.info("[教务同步测试->班级同步]-[班级信息:{}]", JSONUtil.toJsonStr(resourceDeptlist));
+        syncDeptStrategyContent.syncDept(resourceDeptlist, SyncResourceConstants.TRAIN_CLASS);
+
+        return R.ok();
     }
 
-    @GetMapping("/sync/graduate")
-    public R<Void> syncGraduate() {
-        return syncGraduateService.syncGraduate() ? R.ok() : R.fail();
+    /**
+     * 培训学员同步测试
+     * @param data 学员信息
+     * @return 同步结果
+     */
+    @GetMapping("/sync/trainee")
+    public R<Void> syncTrainee(@RequestBody Map<String, Object> data) {
+        List<ResourcePerson> resourcePersonList = TrainUtils.getSyncTrainee(JSONUtil.parseObj(data));
+        log.info("[教务同步测试->学员同步]-[学员信息:{}]", JSONUtil.toJsonStr(resourcePersonList));
+        syncUserStrategyContent.syncUser(resourcePersonList, SyncResourceConstants.TRAINEE);
+
+        return R.ok();
     }
 
+    /**
+     * 研究生班级同步测试
+     * @param data 研究生班级数据
+     * @return 同步结果
+     */
     @GetMapping("/sync/graduate/class")
-    public R<Void> syncGraduateClass() {
-        return syncGraduateService.syncGraduateClass() ? R.ok() : R.fail();
+    public R<Void> syncGraduateClass(@RequestBody Map<String, Object> data) {
+        List<ResourceDept> resourceDeptlist = GraduateUtils.getSycClass(JSONUtil.parseObj(data));
+        log.info("[研究生同步测试->班级同步]-[班级信息:{}]", JSONUtil.toJsonStr(resourceDeptlist));
+        syncDeptStrategyContent.syncDept(resourceDeptlist, SyncResourceConstants.GRADUATE_CLASS);
+
+        return R.ok();
     }
 
-    @GetMapping("/sync/teacher")
-    public R<Void> syncTeacher() {
-        return syncHrService.syncTeacher() ? R.ok() : R.fail();
+    /**
+     * 研究生同步测试
+     * @param data 研究生数据
+     * @return 同步结果
+     */
+    @GetMapping("/sync/graduate")
+    public R<Void> syncGraduate(@RequestBody Map<String, Object> data) {
+        List<ResourcePerson> resourcePersonList = GraduateUtils.getSyncGraduate(JSONUtil.parseObj(data));
+        log.info("[研究生同步测试->研究生同步]-[研究生信息:{}]", JSONUtil.toJsonStr(resourcePersonList));
+        syncUserStrategyContent.syncUser(resourcePersonList, SyncResourceConstants.GRADUATE);
+
+        return R.ok();
     }
 
+    /**
+     * 教职工部门同步测试
+     * @param data 教职工部门数据
+     * @return 同步测试
+     */
     @GetMapping("/sync/teacher/dept")
-    public R<Void> syncTeacherDept() {
-        return syncHrService.syncDept() ? R.ok() : R.fail();
+    public R<Void> syncTeacherDept(@RequestBody Map<String, Object> data) {
+        List<ResourceDept> resourceDeptlist = TeacherUtils.getSyncDept(JSONUtil.parseObj(data));
+        log.info("[业中同步测试->部门同步]-[部门信息:{}]", JSONUtil.toJsonStr(resourceDeptlist));
+        syncDeptStrategyContent.syncDept(resourceDeptlist, SyncResourceConstants.HR_DEPT);
+
+        return R.ok();
     }
 
-    @GetMapping("/cache/{code}")
-    public R<String> cacheTest(@PathVariable("code") String code){
-        String pushData = remotePtParameterService.getPtParameterByKey(code);
+    /**
+     * 教职工同步测试
+     * @param data 教职工数据
+     * @return 同步结果
+     */
+    @GetMapping("/sync/teacher")
+    public R<Void> syncTeacher(@RequestBody Map<String, Object> data) {
+        List<ResourcePerson> resourcePersonList = TeacherUtils.getSyncTeacher(JSONUtil.parseObj(data));
+        log.info("[业中同步测试->人员同步]-[人员信息:{}]", JSONUtil.toJsonStr(resourcePersonList));
+        syncUserStrategyContent.syncUser(resourcePersonList, SyncResourceConstants.TEACHER);
 
-        return R.ok(pushData);
+        return R.ok();
     }
 }

+ 4 - 14
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/SyncGraduateService.java

@@ -1,6 +1,7 @@
 package org.dromara.server.sync.service;
 
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.http.HttpRequest;
 import cn.hutool.http.HttpResponse;
 import cn.hutool.json.JSONUtil;
@@ -66,24 +67,10 @@ public class SyncGraduateService {
             ISyncDeptStrategy syncDeptStrategy = SpringUtils.getBean(SyncResourceConstants.GRADUATE_CLASS, ISyncDeptStrategy.class);
             syncDeptStrategy.syncDept(resourceDeptlist);
 
-            // eventStrategy.doMsgHandle(eventType, eventMsg);
             return true;
         } catch (Exception e) {
             throw new ServiceException(e.getMessage());
         }
-        // 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
-
     }
 
     /**
@@ -123,6 +110,9 @@ public class SyncGraduateService {
             person.setRealName(list.get(1));
             person.setSex(list.get(2));
             person.setPhone(list.get(3));
+            if (ObjectUtil.isNotEmpty(list.get(4))) {
+                person.setIdNumber(list.get(4));
+            }
             person.setDeptId(list.get(5));
             person.setCategory(DefaultConstants.CATEGORY_GRADUATE);
             person.setPostCode(DefaultConstants.GRADUATE_CODE);

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

@@ -1,10 +1,14 @@
 package org.dromara.server.sync.service;
 
+import cn.hutool.core.util.ObjectUtil;
 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.config.DefaultConfig;
 import org.dromara.common.core.constant.DefaultConstants;
+import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.utils.SpringUtils;
 import org.dromara.server.base.service.dept.strategy.ISyncDeptStrategy;
 import org.dromara.server.base.service.user.strategy.ISyncUserStrategy;
@@ -41,35 +45,21 @@ public class SyncHrService {
      */
     public Boolean syncDept() {
         HttpRequest req = CreateHttpRequest.createRequest();
-        //req.body(getQueryBodyForDept());
+        req.body(getQueryBodyForDept());
 
-        // 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));
-        // ISyncDeptStrategy syncDeptStrategy = SpringUtils.getBean(SyncResourceConstants.HR_DEPT, ISyncDeptStrategy.class);
-        // syncDeptStrategy.syncDelDept(resourceDeptlist);
-        //     return true;
-        // } catch (Exception e) {
-        //     throw new ServiceException(e.getMessage());
-        // }
-        //region 模拟测试数据
-        List<ResourceDept> resourceDeptlist = new ArrayList<>();
-        ResourceDept dept = new ResourceDept();
-        dept.setParent_id("001000000000");
-        dept.setDept_id("1850785191038996481");
-        dept.setDept_name("双向同步测试部门");
-        dept.setOperatorId(DefaultConstants.FULL_SYNC_ADMIN);
-        dept.setTenantId(defaultConfig.getTenantId());
-        resourceDeptlist.add(dept);
+        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));
 
-        ISyncDeptStrategy syncDeptStrategy = SpringUtils.getBean(SyncResourceConstants.HR_DEPT, ISyncDeptStrategy.class);
-        syncDeptStrategy.syncDept(resourceDeptlist);
+            ISyncDeptStrategy syncDeptStrategy = SpringUtils.getBean(SyncResourceConstants.HR_DEPT, ISyncDeptStrategy.class);
+            syncDeptStrategy.syncDept(resourceDeptlist);
 
-        // syncDeptStrategyContent.syncDept(resourceDeptlist, SyncResourceConstants.HR_DEPT);
-        return true;
-        //endregion
+            return true;
 
+        } catch (Exception e) {
+            throw new ServiceException(e.getMessage());
+        }
     }
 
     /**
@@ -79,38 +69,20 @@ public class SyncHrService {
      */
     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));
-        // ISyncUserStrategy syncUserStrategy = SpringUtils.getBean(SyncResourceConstants.TEACHER, ISyncUserStrategy.class);
-        // syncUserStrategy.syncUser(resourcePersonList);
-        //    return true;
-        //} catch (Exception e) {
-        //    throw new ServiceException(e.getMessage());
-        //}
-        // region 模拟测试数据
-         List<ResourcePerson> resourcePersonList = new ArrayList<>();
-         ResourcePerson person = new ResourcePerson();
-         person.setUserId("1850785191038996482");
-         person.setDeptId("1850785191038996481");
-         person.setPostCode(DefaultConstants.TEACHER_CODE);
-         person.setRealName("双向同步测试人员");
-         person.setSex("1");
-         person.setPhone("18938022014");
-         person.setCategory("1");
-         person.setRemark("");
-         person.setUserState("on");
-         person.setTenantId(defaultConfig.getTenantId());
-         person.setOperatorId(DefaultConstants.FULL_SYNC_ADMIN);
-         resourcePersonList.add(person);
+        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));
+
+            ISyncUserStrategy syncUserStrategy = SpringUtils.getBean(SyncResourceConstants.TEACHER, ISyncUserStrategy.class);
+            syncUserStrategy.syncUser(resourcePersonList);
 
-        ISyncUserStrategy syncUserStrategy = SpringUtils.getBean(SyncResourceConstants.TEACHER, ISyncUserStrategy.class);
-        syncUserStrategy.syncUser(resourcePersonList);
+            return true;
 
-         return true;
-        // endregion
+        } catch (Exception e) {
+            throw new ServiceException(e.getMessage());
+        }
     }
 
     /**
@@ -119,7 +91,6 @@ public class SyncHrService {
      * @param dataBo 全量数据
      * @return 部门数据
      */
-
     @NotNull
     private List<ResourceDept> getResourceDeptList(SyncFullDataBo dataBo) {
         List<ResourceDept> resourceDeptlist = new ArrayList<>();
@@ -152,7 +123,9 @@ public class SyncHrService {
             person.setRealName(list.get(0));
             person.setSex(list.get(1));
             person.setPhone(list.get(3));
-            person.setIdNumber(list.get(5));
+            if (ObjectUtil.isNotEmpty(list.get(5))) {
+                person.setIdNumber(list.get(5));
+            }
             person.setRemark("");
             person.setUserState(list.get(16));
             person.setCategory(DefaultConstants.CATEGORY_TEACHER);

+ 28 - 84
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/SyncTrainService.java

@@ -43,62 +43,41 @@ public class SyncTrainService {
 
     /**
      * 全量同步教务培训班级信息
+     *
      * @return Boolean
      */
     public Boolean syncTrainClass() {
-        // HttpRequest req = CreateHttpRequest.createRequest();
-        // req.body(getQueryBodyForClass());
-        // 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 = convertClassToDept(list);
-        //         resourceDeptlist.add(dept);
-        //     }
-        //     log.info("[全量获取到的培训班级数据]-[{}]条-[{}]", resourceDeptlist.size(), JSONUtil.toJsonStr(dataBo));
-        // ISyncDeptStrategy syncDeptStrategy = SpringUtils.getBean(SyncResourceConstants.TRAIN_CLASS, ISyncDeptStrategy.class);
-        // syncDeptStrategy.syncDelDept(resourceDeptlist);
-        //     syncDeptStrategyContent.syncDept(resourceDeptlist, SyncResourceConstants.TRAIN_CLASS);
-        //     return true;
-        // } catch (Exception e) {
-        //     log.error(e.getMessage());
-        //     throw new ServiceException(e.getMessage());
-        // }
+        HttpRequest req = CreateHttpRequest.createRequest();
+        req.body(getQueryBodyForClass());
+        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 = convertClassToDept(list);
+                resourceDeptlist.add(dept);
+            }
+            log.info("[全量获取到的培训班级数据]-[{}]条-[{}]", resourceDeptlist.size(), JSONUtil.toJsonStr(dataBo));
 
-        // region 模拟测试数据
-        List<ResourceDept> resourceDeptlist = new ArrayList<>();
-        ResourceDept dept = new ResourceDept();
-        resourceDeptlist.add(dept);
-        dept.setDept_id("1000");
-        dept.setDept_name("一卡通测试班级2025001");
-        dept.setYear(2025);
-        dept.setSemester("上学期");
+            ISyncDeptStrategy syncDeptStrategy = SpringUtils.getBean(SyncResourceConstants.TRAIN_CLASS, ISyncDeptStrategy.class);
+            syncDeptStrategy.syncDept(resourceDeptlist);
 
-        dept.setPayBegin(DateUtil.parse("2025-01-03 00:00:00"));
-        dept.setCheckDate(DateUtil.parseDate("2025-01-03 00:00:00"));
-        dept.setBeginDate(DateUtil.parseDate("2025-01-04 00:00:00"));
-        dept.setEndDate(DateUtil.parse("2025-01-30 00:00:00", "yyyy-MM-dd HH:mm:ss"));
-        dept.setPayEnd(DateUtil.parse("2025-01-30 00:00:00", "yyyy-MM-dd HH:mm:ss"));
-        dept.setChooseRoom("0");
-        dept.setCanEat("1");
-        dept.setPayCheck("0");
-        dept.setPlanCount(100);
-        // dept.setDept_num("9");
-        dept.setTenantId(defaultConfig.getTenantId());
-        ISyncDeptStrategy syncDeptStrategy = SpringUtils.getBean(SyncResourceConstants.TRAIN_CLASS, ISyncDeptStrategy.class);
-        syncDeptStrategy.syncDept(resourceDeptlist);
-        return true;
-        // endregion
+            return true;
+
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            throw new ServiceException(e.getMessage());
+        }
     }
 
     /**
      * 全量同步教务学员信息
+     *
      * @return Boolean
      */
     public Boolean syncTrainee() {
         HttpRequest req = CreateHttpRequest.createRequest();
         req.body(getQueryBodyForTrainee());
-         //获取到培训学员数据
+        // 获取到培训学员数据
         try (HttpResponse res = req.execute()) {
             SyncFullDataBo traineeDataBo = JSONUtil.toBean(res.body(), SyncFullDataBo.class);
             List<ResourcePerson> resourcePersonList = getResourcePeople(traineeDataBo);
@@ -112,55 +91,19 @@ public class SyncTrainService {
                 getResourcePeople(resourcePersonDeptList, resourcePersonList);
                 log.info("[全量获取到的培训学员数据]-[{}]条-[{}]", resourcePersonList.size(), JSONUtil.toJsonStr(traineeDataBo));
 
-                // syncUserStrategyContent.syncUser(resourcePersonList, SyncResourceConstants.TRAINEE);
                 ISyncUserStrategy syncUserStrategy = SpringUtils.getBean(SyncResourceConstants.TRAINEE, ISyncUserStrategy.class);
                 syncUserStrategy.syncUser(resourcePersonList);
+
                 return true;
+
             } catch (Exception e) {
-                log.error(e.getMessage());
+                log.error("[全量同步学员失败]-[{0}]", e);
                 throw new ServiceException(e.getMessage());
             }
         } catch (Exception e) {
-            log.error(e.getMessage());
+            log.error("[全量同步学员失败]-[{0}]", e);
             throw new ServiceException(e.getMessage());
         }
-
-        // region 模拟测试数据
-        // List<ResourcePerson> resourcePersonList = new ArrayList<>();
-        // ResourcePerson person = new ResourcePerson();
-        // person.setTenantId(DefaultConstants.TENANT_ID);
-        // person.setUserId("1853987345201864705");
-        // person.setDeptId("1853708079319863298");
-        // person.setPostCode(DefaultConstants.TRAINEE_CODE);
-        // person.setRealName("伍小明");
-        // person.setSex("1");
-        // person.setPhone("13787789560");
-        // person.setIdNumber("mog4/k8a/4miVCVw63+2cfegRpc7YmBK");
-        // person.setCategory("2");
-        // person.setOperatorId(DefaultConstants.FULL_SYNC_ADMIN);
-        // resourcePersonList.add(person);
-        //
-        // List<ResourcePersonDept> resourcePersonDeptList = new ArrayList<>();
-        // ResourcePersonDept personDept = new ResourcePersonDept();
-        // personDept.setUserId("1853987345201864705");
-        // personDept.setDeptId("1853708079319863298");
-        // personDept.setPostCode(DefaultConstants.TRAINEE_CODE);
-        // personDept.setDelFlag("0");
-        // resourcePersonDeptList.add(personDept);
-
-         //personDept = new ResourcePersonDept();
-         //personDept.setUserId("1799827959791554562");
-         //personDept.setDeptId("ffe051b8cf2e45ddb899d596108699d7");
-         //personDept.setPostCode(DefaultConstants.TRAINEE_CODE);
-         //personDept.setDelFlag("0");
-         //resourcePersonDeptList.add(personDept);
-         //getResourcePeople(resourcePersonDeptList, resourcePersonList);
-         //
-        // ISyncUserStrategy syncUserStrategy = SpringUtils.getBean(SyncResourceConstants.TRAINEE, ISyncUserStrategy.class);
-        // syncUserStrategy.syncUser(resourcePersonList);
-         //
-         //return true;
-        // endregion
     }
 
     /**
@@ -521,7 +464,6 @@ public class SyncTrainService {
         dept.setDept_name(list.get(1));
         dept.setYear(Integer.valueOf(list.get(4)));
         dept.setSemester("0".equals(list.get(5)) ? "上学期" : "下学期");
-
         dept.setPayBegin(DateUtil.parseDate(list.get(16)));
         dept.setCheckDate(DateUtil.parseDate(list.get(16)));
         dept.setBeginDate(DateUtil.parseDate(list.get(17)));
@@ -530,7 +472,9 @@ public class SyncTrainService {
         dept.setChooseRoom("0");
         dept.setCanEat("1");
         dept.setPayCheck(list.get(27));
-        dept.setPlanCount(Integer.parseInt(list.get(10)));
+        if (ObjectUtil.isNotEmpty(list.get(10))) {
+            dept.setPlanCount(Integer.parseInt(list.get(10)));
+        }
         dept.setDept_num(list.get(34));
         // TODO 2024-11-15 luoyibo 这处租户Id原则上是从全量接口获取,暂时设置为默认值
         dept.setTenantId(defaultConfig.getTenantId());