Browse Source

feature: 全量同步模拟测试
1.自动生成培训班排序号

luo.yibo@datuai.com 1 year ago
parent
commit
13eb9d32d8
14 changed files with 89 additions and 109 deletions
  1. 39 3
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java
  2. 1 1
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DefaultConstants.java
  3. 18 7
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java
  4. 7 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
  5. 8 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
  6. 0 38
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/mq/KafkaNormalProducer.java
  7. 0 17
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/mq/constant/CloudConsumeEventConstants.java
  8. 0 17
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/mq/constant/PushConsumeEventConstants.java
  9. 0 14
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/consume/ConsumeUtils.java
  10. 9 3
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/dept/SyncRemoteDeptService.java
  11. 2 2
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/dept/strategy/impl/HrDeptStrategyImpl.java
  12. 2 2
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/util/EncryptorUtil.java
  13. 0 1
      ruoyi-server/ruoyi-server-base/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  14. 3 3
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/SyncTrainService.java

+ 39 - 3
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java

@@ -23,20 +23,35 @@ public interface RemoteDeptService {
      */
     String selectDeptNameByIds(String deptIds);
 
-    List<Tree<Long>>deptTree();
+    /**
+     * 查询部门树
+     * @return 部门树Id列表
+     */
+    List<Tree<Long>> deptTree();
 
-    //根据部门id查询子部门列表
+    /**
+     * 根据部门Id查询子部门Id列表
+     * @param parentId 部门Id
+     * @return 子部门Id列表
+     */
     List<Long> selectDeptAndChildrenDeptById(Long parentId);
 
     /**
      * 根据第三方对接的唯一标识符查询对应的部门信息
      *
      * @param otherId  第三方对接的唯一标识符
-     * @param tenantId
+     * @param tenantId 租户编号
      * @return 部门信息
      */
     RemoteDeptVo selectDeptByOtherId(String otherId, String tenantId);
 
+    /**
+     * 根据第三方对接的唯一标识符查询对应的部门信息(包括已删除的)
+     *
+     * @param otherId  第三方对接的唯一标识符
+     * @param tenantId 租户编号
+     * @return 部门信息
+     */
     RemoteDeptVo selectVoAllByOtherId(String otherId, String tenantId);
 
     /**
@@ -63,15 +78,36 @@ public interface RemoteDeptService {
      */
     R<Object> deleteDeptByOtherId(String otherId);
 
+    /**
+     * 根据父节点Id和名称查询部门
+     *
+     * @param parentId 父节点
+     * @param deptName 名称
+     * @return 部门信息
+     */
     RemoteDeptVo selectDeptByParentIdAndName(Long parentId, String deptName);
 
     /**
      * 查询指定日期正在进行的班级
+     *
      * @param doingDate 指定日期
      * @return 班级清单
      */
     List<RemoteDeptVo> selectDoingClass(Date doingDate);
 
+    /**
+     * 根据部门Id查询部门信息
+     * @param deptId 部门Id
+     * @return 部门信息
+     */
     RemoteDeptVo selectDeptById(Long deptId);
+
+    /**
+     * 更改部门人员对应关系中的报到状态
+     *
+     * @param deptId 部门Id
+     * @param userId 人员Id
+     * @return 更新成功与否
+     */
     Boolean updateCheckInStatus(Long deptId, Long userId);
 }

+ 1 - 1
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DefaultConstants.java

@@ -59,7 +59,7 @@ public interface DefaultConstants {
     /**
      * 根据部门Id(学校)
      */
-    Long PARENT_DEPT_ID = 100L;
+    Long ROOT_DEPT_ID = 100L;
 
     /**
      * 研究生年份父部门Id(研究生部)

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

@@ -46,14 +46,9 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
         return sysDeptService.selectDeptNameByIds(deptIds);
     }
 
-    /*
-     *
+    /**
      * 查询部门树
-     *
-     * date 2024-08-05 22:07:32 22:07
-     * @author: luoyibo
-     * @param
-     * @return
+     * @return 部门树Id列表
      */
     @Override
     public List<Tree<Long>> deptTree() {
@@ -61,6 +56,11 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
         return sysDeptService.selectDeptTreeList(dept);
     }
 
+    /**
+     * 根据部门Id查询子部门Id列表
+     * @param parentId 部门Id
+     * @return 子部门Id列表
+     */
     @Override
     public List<Long> selectDeptAndChildrenDeptById(Long parentId) {
         return sysDeptService.selectDeptAndChildrenDeptById(parentId);
@@ -183,6 +183,11 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
         return null;
     }
 
+    /**
+     * 根据部门Id查询部门信息
+     * @param deptId 部门Id
+     * @return 部门信息
+     */
     @Override
     public RemoteDeptVo selectDeptById(Long deptId) {
         SysDeptVo vo = sysDeptService.selectDeptById(deptId);
@@ -192,6 +197,12 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
         return null;
     }
 
+    /**
+     * 更改部门人员对应关系中的报到状态
+     * @param deptId 部门Id
+     * @param userId 人员Id
+     * @return 更新成功与否
+     */
     @Override
     public Boolean updateCheckInStatus(Long deptId, Long userId) {
         return sysDeptService.updateCheckInStatus(deptId, userId);

+ 7 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java

@@ -187,5 +187,12 @@ public interface ISysDeptService {
      */
     List<SysDeptVo> selectDoingClass(Date doingDate);
 
+    /**
+     * 更改部门人员对应关系中的报到状态
+     *
+     * @param deptId 部门Id
+     * @param userId 人员Id
+     * @return 更新成功与否
+     */
     Boolean updateCheckInStatus(Long deptId, Long userId);
 }

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

@@ -412,6 +412,7 @@ public class SysDeptServiceImpl implements ISysDeptService {
         QueryWrapper<SysDept> qw = new QueryWrapper<>();
         qw.select("max(order_num) as order_num");
         qw.eq("parent_id", deptId);
+        qw.lt("order_num", 999);
 
         SysDept dept = baseMapper.selectOne(qw);
         if (dept == null) {
@@ -437,9 +438,15 @@ public class SysDeptServiceImpl implements ISysDeptService {
                                            .le(SysDept::getCheckDate, doingDate).ge(SysDept::getEndDate, doingDate));
     }
 
+    /**
+     * 更改部门人员对应关系中的报到状态
+     *
+     * @param deptId 部门Id
+     * @param userId 人员Id
+     * @return 更新成功与否
+     */
     @Override
     public Boolean updateCheckInStatus(Long deptId, Long userId) {
         return userDeptService.setCheckInStatus(deptId, userId);
     }
-
 }

+ 0 - 38
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/mq/KafkaNormalProducer.java

@@ -1,38 +0,0 @@
-package org.dromara.server.base.mq;
-
-import com.alibaba.fastjson2.JSON;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.kafka.clients.producer.ProducerRecord;
-import org.dromara.common.message.kafka.domain.KafkaMessage;
-import org.springframework.kafka.core.KafkaTemplate;
-import org.springframework.kafka.support.SendResult;
-import org.springframework.stereotype.Component;
-
-import java.util.concurrent.CompletableFuture;
-
-@RequiredArgsConstructor
-@Slf4j
-@Component
-public class KafkaNormalProducer {
-    private final KafkaTemplate<String, String> kafkaTemplate;
-
-    public void sendKafkaMessage(String topic, KafkaMessage<?> data) {
-        String jsonMessage = JSON.toJSONString(data);
-        try {
-            ProducerRecord<String, String> record;
-            record = new ProducerRecord<>(topic, jsonMessage);
-
-            CompletableFuture<SendResult<String, String>> send = kafkaTemplate.send(record);
-            send.whenComplete((result, ex) -> {
-                if (ex != null) {
-                    log.error("消费系统发送到kafka消息系统异常,data: {}", jsonMessage, ex);
-                } else {
-                    log.info("消费系统发送到kafka消息系统成功,data: {}", jsonMessage);
-                }
-            });
-        } catch (Exception e) {
-            log.error("消费系统发送到kafka消息系统异常,data: {}", data, e);
-        }
-    }
-}

+ 0 - 17
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/mq/constant/CloudConsumeEventConstants.java

@@ -1,17 +0,0 @@
-package org.dromara.server.base.mq.constant;
-
-/**
- * @ClassName PushConsumeEventConstants
- * @Description 云端消费请求事件常量
- * @Author luoyibo
- * @Date 2024-12-27 22:11
- * @Version 1.0
- * @since jdk17
- */
-public class CloudConsumeEventConstants {
-    // 业务系统编号
-    public static final String SENDER = "000";
-
-    // 消费记录
-    public static final String CONSUME_DETAIL = SENDER + "00001";
-}

+ 0 - 17
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/mq/constant/PushConsumeEventConstants.java

@@ -1,17 +0,0 @@
-package org.dromara.server.base.mq.constant;
-
-/**
- * @ClassName PushConsumeEventConstants
- * @Description 消费记录推送事件常量
- * @Author luoyibo
- * @Date 2024-12-27 22:11
- * @Version 1.0
- * @since jdk17
- */
-public class PushConsumeEventConstants {
-    // 业务系统编号
-    public static final String SENDER = "005";
-
-    // 消费记录
-    public static final String CONSUME_DETAIL = SENDER + "00001";
-}

+ 0 - 14
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/consume/ConsumeUtils.java

@@ -1,14 +0,0 @@
-package org.dromara.server.base.service.consume;
-
-/**
- * name: ConsumeUtils
- * package: org.dromara.server.base.service.consume
- * description: 消费业务辅助工具
- * date: 2024-11-03 15:05:23 15:05
- *
- * @author luoyibo
- * @version 0.1
- * @since JDK 1.8
- */
-public class ConsumeUtils {
-}

+ 9 - 3
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/dept/SyncRemoteDeptService.java

@@ -45,7 +45,7 @@ public class SyncRemoteDeptService {
     }
 
     /**
-     * 根据第三方对接的唯一标识符查询对应的部门信息
+     * 根据第三方对接的唯一标识符查询对应的(包含已删除的)部门信息
      *
      * @param otherId  第三方对接的唯一标识符
      * @param tenantId 租户Id
@@ -102,21 +102,21 @@ public class SyncRemoteDeptService {
      * @param tenantId 租户Id
      * @return 团客信息
      */
-
     public R<RemoteTeamVo> selectTeamByOtherId(String otherId, String tenantId) {
         RemoteTeamBo remoteBo = new RemoteTeamBo().setOtherId(otherId).setTenantId(tenantId);
 
         return remoteTeamService.selectTeamByBo(remoteBo);
     }
+
     /**
      * 修改团客信息
      * @param remoteTeamBo 团客业务对象
      * @return 修改结果
      */
-
     public R<ErrorInfo> updateRemoteTeam(RemoteTeamBo remoteTeamBo) {
         return remoteTeamService.updateTeamByBo(remoteTeamBo);
     }
+
     /**
      * 增加团客信息
      * @param remoteTeamBo 团客业务对象
@@ -126,6 +126,12 @@ public class SyncRemoteDeptService {
         return remoteTeamService.insertTeamByBo(remoteTeamBo);
     }
 
+    /**
+     * 根据第三方Id删除团客信息
+     * @param otherId 第三方Id
+     * @param operatorId 操作员Id
+     * @return 操作结果
+     */
     public R<Object> deleteTeamByOtherId(String otherId, Long operatorId){
         return remoteTeamService.deleteTeamByOtherId(otherId, operatorId);
     }

+ 2 - 2
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/dept/strategy/impl/HrDeptStrategyImpl.java

@@ -124,8 +124,8 @@ public class HrDeptStrategyImpl implements ISyncDeptStrategy {
             remoteDeptBo.setParentId(remoteParentDeptVo.getDeptId());
         } else {
             // 如果同步的部门的父部门在系统中不存在,则父部门为学校
-            if (!remoteDeptBo.getDeptId().equals(DefaultConstants.PARENT_DEPT_ID)) {
-                remoteDeptBo.setParentId(DefaultConstants.PARENT_DEPT_ID);
+            if (!remoteDeptBo.getDeptId().equals(DefaultConstants.ROOT_DEPT_ID)) {
+                remoteDeptBo.setParentId(DefaultConstants.ROOT_DEPT_ID);
             }
         }
         if (StringUtils.isNotEmpty(deptNum)) {

+ 2 - 2
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/util/EncryptorUtil.java

@@ -79,8 +79,8 @@ public class EncryptorUtil {
             // 初始化解密信息
             cipher.init(Cipher.DECRYPT_MODE, key);
             // 解密
-            byte[] doFial = cipher.doFinal(bytes);
-            return new String(doFial, CHARSET_NAME);
+            byte[] doFinal = cipher.doFinal(bytes);
+            return new String(doFinal, CHARSET_NAME);
         } catch (Exception e) {
             throw new RuntimeException(e);
         }

+ 0 - 1
ruoyi-server/ruoyi-server-base/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -21,4 +21,3 @@ org.dromara.server.base.service.yktOperation.SyncRemoteXfQuotaService
 org.dromara.server.base.service.yktOperation.SyncRemoteXfLimitedService
 org.dromara.server.base.service.yktOperation.SyncRemoteSendMessageRecordService
 org.dromara.server.base.service.yktOperation.SyncRemotePtSubsidyService
-org.dromara.server.base.mq.KafkaNormalProducer

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

@@ -69,8 +69,8 @@ public class SyncTrainService {
         List<ResourceDept> resourceDeptlist = new ArrayList<>();
         ResourceDept dept = new ResourceDept();
         resourceDeptlist.add(dept);
-        dept.setDept_id("1850785191038996490");
-        dept.setDept_name("双向同步测试培训班");
+        dept.setDept_id("1000");
+        dept.setDept_name("一卡通测试班级2025001");
         dept.setYear(2025);
         dept.setSemester("0");
 
@@ -83,7 +83,7 @@ public class SyncTrainService {
         dept.setCanEat("1");
         dept.setPayCheck("0");
         dept.setPlanCount(100);
-        dept.setDept_num("9");
+        // dept.setDept_num("9");
         dept.setTenantId(defaultConfig.getTenantId());
         ISyncDeptStrategy syncDeptStrategy = SpringUtils.getBean(SyncResourceConstants.TRAIN_CLASS, ISyncDeptStrategy.class);
         syncDeptStrategy.syncDelDept(resourceDeptlist);