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

feature: 同步功能完善
1.教职工部门、培训班对应部门、研究生班级对应部门根据租户Id进行处理

luo.yibo@datuai.com 1 éve
szülő
commit
bd25197d86
21 módosított fájl, 360 hozzáadás és 198 törlés
  1. 10 0
      ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/service/RemoteTeamService.java
  2. 28 2
      ruoyi-api/ruoyi-api-sync/src/main/java/org/dromara/sync/api/RemoteKafkaSyncService.java
  3. 2 2
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DefaultConstants.java
  4. 16 2
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/dubbo/RemoteTeamServiceImpl.java
  5. 4 0
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/IKfTeamService.java
  6. 34 1
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/impl/KfTeamServiceImpl.java
  7. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java
  8. 4 0
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/dept/SyncRemoteDeptService.java
  9. 0 66
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/user/strategy/impl/SyncTeacherStrategyImpl.java
  10. 0 1
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/util/GraduateUtils.java
  11. 0 4
      ruoyi-server/ruoyi-server-base/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  12. 45 3
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/business/kafka/SyncKafkaService.java
  13. 15 16
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/controller/SyncTest.java
  14. 41 0
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/dubbo/RemoteKafkaSyncServiceImpl.java
  15. 8 0
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/mapper/SysDeptMapper.java
  16. 11 0
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/IDeptService.java
  17. 19 0
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/impl/DeptServiceImpl.java
  18. 29 28
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/strategy/dept/impl/GraduateClassStrategyImpl.java
  19. 0 1
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/strategy/dept/impl/HrDeptStrategyImpl.java
  20. 83 68
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/strategy/dept/impl/TrainClassStrategyImpl.java
  21. 10 3
      ruoyi-server/ruoyi-server-sync/src/main/resources/mapper/SysDeptMapper.xml

+ 10 - 0
ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/service/RemoteTeamService.java

@@ -39,6 +39,14 @@ public interface RemoteTeamService {
      */
     R<RemoteTeamVo> selectTeamByBo(RemoteTeamBo remoteBo);
 
+    /**
+     * 查询团客信息
+     * @param otherId 第三方Id
+     * @param tenantId 租户Id
+     * @return 团客信息
+     */
+    R<RemoteTeamVo> selectTeamByOtherId(String otherId,String tenantId);
+
     /**
      * 查询正在进行的团客
      * @param doingDate 当前时间
@@ -47,4 +55,6 @@ public interface RemoteTeamService {
     R<List<RemoteTeamVo>> selectDoingTeam(Date doingDate);
 
     R<Object> deleteTeamByOtherId(String otherId, Long operatorId);
+
+    Boolean deleteTeamByOtherId(String otherId, Long operatorId, String tenantId);;
 }

+ 28 - 2
ruoyi-api/ruoyi-api-sync/src/main/java/org/dromara/sync/api/RemoteKafkaSyncService.java

@@ -4,15 +4,41 @@ import cn.hutool.json.JSONObject;
 
 /**
  * @ClassName RemoteKafkaSyncService
- * @Description TODO
- * @Author luoyibo
+ * @Description kafka山下远程服务
+ * @Author yib
  * @Date 2025-01-24 07:36
  * @Version 1.0
  * @since jdk17
  */
 public interface RemoteKafkaSyncService {
+    /**
+     * kafka教职工部门同步
+     * @param data 部门数据
+     */
     void syncTeacherDept(JSONObject data);
 
+    /**
+     * kafka教职工部门删除
+     * @param data 部门数据
+     */
     void syncDelTeacherDept(JSONObject data);
 
+    /**
+     * kafka 培训班对应部门同步
+     * @param data 培训班数据
+     */
+    void syncTrainClass(JSONObject data);
+
+    /**
+     * kafka 培训班对应部门删除
+     * @param data 培训班数据
+     */
+    void syncDelTrainClass(JSONObject data);
+    /**
+     * kafka 研究生班级对应部门同步
+     * @param data 研究生班级
+     */
+    void syncGraduateClass(JSONObject data);
+
+
 }

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

@@ -64,12 +64,12 @@ public interface DefaultConstants {
     /**
      * 研究生年份父部门Id(研究生部)
      */
-    Long GRADUATE_PARENT_DEPT_ID = 105L;
+    Long GRADUATE_PARENT_DEPT_ID = 1882616828336758787L;
 
     /**
      * 培训班年份父部门Id(培训班)
      */
-    Long TRAIN_PARENT_DEPT_ID = 104L;
+    Long TRAIN_PARENT_DEPT_ID = 1882616828336758786L;
 
     /**
      * 部门类型代码

+ 16 - 2
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/dubbo/RemoteTeamServiceImpl.java

@@ -71,14 +71,14 @@ public class RemoteTeamServiceImpl implements RemoteTeamService {
             KfTeamBo bo = MapstructUtils.convert(remoteBo, KfTeamBo.class);
             if (bo != null) {
                 bo.setUpdateBy(remoteBo.getOperatorId());
-                boolean flag = kfTeamService.updateByBo(bo);
+                boolean flag = kfTeamService.syncUpdateByBo(bo);
                 if (flag) {
                     return R.ok("修改团客信息成功");
                 }
             }
             return R.fail("修改团客信息失败");
         } catch (Exception e) {
-            log.error("修改团客信息失败-{}-{}", JsonUtils.toJsonString(remoteBo), e);
+            log.error("修改团客信息失败-{}", JsonUtils.toJsonString(remoteBo), e);
             return R.fail("修改团客信息失败");
         }
     }
@@ -115,4 +115,18 @@ public class RemoteTeamServiceImpl implements RemoteTeamService {
         boolean result = kfTeamService.deleteWithOtherId(otherId, operatorId);
         return result ? R.ok() : R.fail();
     }
+
+    @Override
+    public Boolean deleteTeamByOtherId(String otherId, Long operatorId, String tenantId) {
+        return kfTeamService.deleteTeamByOtherId(otherId, operatorId, tenantId);
+    }
+
+    @Override
+    public R<RemoteTeamVo> selectTeamByOtherId(String otherId, String tenantId) {
+        KfTeamVo vo = kfTeamService.selectTeamByOtherId(otherId,tenantId);
+        if (ObjectUtil.isNotEmpty(vo)) {
+            return R.ok(MapstructUtils.convert(vo, RemoteTeamVo.class));
+        }
+        return R.fail();
+    }
 }

+ 4 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/IKfTeamService.java

@@ -92,4 +92,8 @@ public interface IKfTeamService {
     Boolean deleteWithOtherId(String otherId,Long operatorId);
 
     Boolean deleteWithOtherId(String otherId);
+
+    Boolean deleteTeamByOtherId(String otherId, Long operatorId, String tenantId);
+    KfTeamVo selectTeamByOtherId(String otherId, String tenantId);
+    Boolean syncUpdateByBo(KfTeamBo bo);
 }

+ 34 - 1
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/impl/KfTeamServiceImpl.java

@@ -15,6 +15,7 @@ import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.hotel.domain.KfGuest;
 import org.dromara.hotel.domain.KfGuestTeamR;
 import org.dromara.hotel.domain.KfTeam;
@@ -227,7 +228,7 @@ public class KfTeamServiceImpl implements IKfTeamService {
     public KfTeamVo selectTeamByBo(KfTeamBo bo) {
         LambdaQueryWrapper<KfTeam> lqw = this.buildQueryWrapper(bo);
 
-        return baseMapper.selectVoOne(lqw);
+        return TenantHelper.ignore(()-> baseMapper.selectVoOne(lqw));
     }
 
     @Override
@@ -254,6 +255,17 @@ public class KfTeamServiceImpl implements IKfTeamService {
         return baseMapper.update(null, luw) > 0;
     }
 
+    @Override
+    public Boolean deleteTeamByOtherId(String otherId, Long operatorId, String tenantId) {
+        LambdaUpdateWrapper<KfTeam> luw = new LambdaUpdateWrapper<>();
+        luw.set(KfTeam::getDelFlag, DefaultConstants.DELETED);
+        luw.set(KfTeam::getUpdateBy, operatorId);
+        luw.eq(KfTeam::getOtherId, otherId);
+        luw.eq(KfTeam::getTenantId, tenantId);
+
+        return TenantHelper.ignore(()-> baseMapper.update(null, luw) > 0);
+    }
+
     @Override
     public Boolean deleteWithOtherId(String otherId) {
         LambdaUpdateWrapper<KfTeam> luw = new LambdaUpdateWrapper<>();
@@ -261,4 +273,25 @@ public class KfTeamServiceImpl implements IKfTeamService {
         luw.in(KfTeam::getOtherId, otherId);
         return baseMapper.update(null, luw) > 0;
     }
+
+    @Override
+    public KfTeamVo selectTeamByOtherId(String otherId, String tenantId) {
+        LambdaQueryWrapper<KfTeam> lqw =new LambdaQueryWrapper<KfTeam>().eq(KfTeam::getOtherId, otherId)
+                                            .eq(KfTeam::getTenantId, tenantId);
+        return TenantHelper.ignore(()-> baseMapper.selectVoOne(lqw));
+    }
+
+    @Override
+    public Boolean syncUpdateByBo(KfTeamBo bo) {
+        KfTeam update = MapstructUtils.convert(bo, KfTeam.class);
+        validEntityBeforeSave(update);
+        //1.修改客团信息
+        boolean flag = TenantHelper.ignore(()-> baseMapper.updateById(update) > 0);
+        //2.更新客团成员
+        List<KfGuestTeamRBo> newGuests = bo.getGuestList();
+        if (ObjectUtil.isNotEmpty(newGuests)) {
+            addGuestTeamR(update.getId(), newGuests);
+        }
+        return flag;
+    }
 }

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

@@ -77,7 +77,7 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
      */
     @Override
     public RemoteDeptVo selectDeptByOtherId(String otherId, String tenantId) {
-        SysDeptVo deptVo = sysDeptService.selectVoByOtherId(otherId,tenantId);
+        SysDeptVo deptVo = sysDeptService.selectVoByOtherId(otherId);
         return MapstructUtils.convert(deptVo, RemoteDeptVo.class);
     }
 

+ 4 - 0
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/dept/SyncRemoteDeptService.java

@@ -145,4 +145,8 @@ public class SyncRemoteDeptService {
     public R<Object> deleteTeamByOtherId(String otherId, Long operatorId){
         return remoteTeamService.deleteTeamByOtherId(otherId, operatorId);
     }
+    public Boolean deleteTeamByOtherId(String otherId, Long operatorId, String tenantId){
+        return remoteTeamService.deleteTeamByOtherId(otherId, operatorId,tenantId);
+    }
+
 }

+ 0 - 66
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/user/strategy/impl/SyncTeacherStrategyImpl.java

@@ -1,66 +0,0 @@
-package org.dromara.server.base.service.user.strategy.impl;
-
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.dromara.common.core.domain.R;
-import org.dromara.common.core.domain.model.ErrorInfo;
-import org.dromara.common.json.utils.JsonUtils;
-import org.dromara.server.base.service.user.SyncRemoteUserService;
-import org.dromara.server.base.service.user.strategy.ISyncUserStrategy;
-import org.dromara.server.common.constant.SyncResourceConstants;
-import org.dromara.server.common.domain.bo.ResourcePerson;
-import org.dromara.system.api.domain.vo.RemoteUserVo;
-import org.springframework.stereotype.Service;
-
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * name: SyncTeacherStrategyImpl
- * package: org.dromara.server.base.dept.service.strategy.impl
- * description: 教职工同步处理策略
- * date: 2024-10-18 14:40:23 14:40
- *
- * @author luoyibo
- * @version 0.1
- * @since JDK 1.8
- */
-@Slf4j
-@RequiredArgsConstructor
-@Service(SyncResourceConstants.TEACHER)
-public class SyncTeacherStrategyImpl implements ISyncUserStrategy {
-    private final SyncRemoteUserService syncUserService;
-
-    @Override
-    public boolean syncUser(List<ResourcePerson> persons) {
-        List<String> syncMessage = new ArrayList<>();
-
-        persons.forEach(person -> {
-            R<RemoteUserVo> result = syncUserService.syncPeron(person);
-            if (result.getCode() == R.SUCCESS) {
-                syncMessage.add(MessageFormat.format("[同步教职工成功]-[{0}]", JsonUtils.toJsonString(person)));
-            } else {
-                syncMessage.add(MessageFormat.format("[同步教职工失败]-[{0}]-[{1}]", JsonUtils.toJsonString(person), result.getMsg()));
-            }
-        });
-        syncMessage.forEach(log::info);
-        return true;
-    }
-
-    @Override
-    public boolean syncDelUser(List<ResourcePerson> persons) {
-        List<String> syncDelMessage = new ArrayList<>();
-        persons.forEach(person -> {
-            R<ErrorInfo> result = syncUserService.syncDelPeron(person);
-            if (R.isSuccess(result)) {
-                syncDelMessage.add(MessageFormat.format("[同步删除教职工成功]-[{0}]", JsonUtils.toJsonString(person)));
-            } else {
-                syncDelMessage.add(MessageFormat.format("[同步删除教职工失败]-[{0}]-[{1}]", JsonUtils.toJsonString(person), result.getMsg()));
-            }
-
-        });
-        syncDelMessage.forEach(System.out::println);
-        return true;
-    }
-}

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

@@ -53,7 +53,6 @@ public class GraduateUtils {
 
         return resourceDeptlist;
     }
-
     /**
      * 处理研究生信息
      *

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

@@ -1,10 +1,6 @@
 org.dromara.server.base.service.dept.SyncRemoteDeptService
-org.dromara.server.base.service.dept.strategy.SyncDeptStrategyContent
-org.dromara.server.base.service.dept.strategy.impl.GraduateClassStrategyImpl
-org.dromara.server.base.service.dept.strategy.impl.TrainClassStrategyImpl
 org.dromara.server.base.service.user.SyncRemoteUserService
 org.dromara.server.base.service.user.strategy.SyncUserStrategyContent
-org.dromara.server.base.service.user.strategy.impl.SyncTeacherStrategyImpl
 org.dromara.server.base.service.user.strategy.impl.SyncGraduateStrategyImpl
 org.dromara.server.base.service.user.strategy.impl.SyncTraineeStrategyImpl
 org.dromara.server.base.service.yktOperation.SyncRemotePtParameterService

+ 45 - 3
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/business/kafka/SyncKafkaService.java

@@ -1,20 +1,22 @@
 package org.dromara.server.sync.business.kafka;
 
 import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.utils.SpringUtils;
+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.springframework.stereotype.Service;
 import org.dromara.server.sync.strategy.dept.ISyncDeptStrategy;
+import org.springframework.stereotype.Service;
+
 import java.util.List;
 
 /**
  * @ClassName SyncKafkaService
- * @Description TODO
+ * @Description kafka同步处理
  * @Author luoyibo
  * @Date 2025-01-23 20:59
  * @Version 1.0
@@ -25,14 +27,54 @@ import java.util.List;
 @RequiredArgsConstructor
 public class SyncKafkaService {
 
+    /**
+     * kafka教职工部门同步
+     * @param data 同步数据
+     */
     public void syncTeacherDept(JSONObject data) {
         List<ResourceDept> resourceDeptlist = TeacherUtils.getSyncDept(data);
         ISyncDeptStrategy syncDeptStrategy = SpringUtils.getBean(SyncResourceConstants.HR_DEPT, ISyncDeptStrategy.class);
         syncDeptStrategy.syncDept(resourceDeptlist);
     }
+
+    /**
+     * kafka教职工部门删除
+     * @param data 部门数据
+     */
     public void syncDelTeacherDept(JSONObject data){
         List<ResourceDept> resourceDeptlist = TeacherUtils.getSycDeleteDept(data);
         ISyncDeptStrategy syncDeptStrategy = SpringUtils.getBean(SyncResourceConstants.HR_DEPT, ISyncDeptStrategy.class);
         syncDeptStrategy.syncDelDept(resourceDeptlist);
     }
+
+    /**
+     * kafka 培训班对应部门同步
+     * @param data 培训班数据
+     */
+    public void SyncTrainClass(JSONObject data){
+        List<ResourceDept> resourceDeptlist = TrainUtils.getSycClass(data);
+        ISyncDeptStrategy syncDeptStrategy = SpringUtils.getBean(SyncResourceConstants.TRAIN_CLASS, ISyncDeptStrategy.class);
+        syncDeptStrategy.syncDept(resourceDeptlist);
+    }
+
+    /**
+     * kafka 培训班对应部门删除
+     * @param data 培训班数据
+     */
+    public void SyncDelTrainClass(JSONObject data){
+        List<ResourceDept> resourceDeptlist = TrainUtils.getSycDeleteClass(data);
+        ISyncDeptStrategy syncDeptStrategy = SpringUtils.getBean(SyncResourceConstants.TRAIN_CLASS, ISyncDeptStrategy.class);
+        syncDeptStrategy.syncDelDept(resourceDeptlist);
+    }
+
+    /**
+     * kafka 研究生班级对应部门同步
+     * @param data 研究生班的级数据
+     */
+    public void SyncGraduateClass(JSONObject data){
+        List<ResourceDept> resourceDeptlist = GraduateUtils.getSycClass(data);
+        ISyncDeptStrategy syncDeptStrategy = SpringUtils.getBean(SyncResourceConstants.GRADUATE_CLASS, ISyncDeptStrategy.class);
+        syncDeptStrategy.syncDept(resourceDeptlist);
+    }
+
 }

+ 15 - 16
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/controller/SyncTest.java

@@ -4,14 +4,11 @@ import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.domain.R;
-import org.dromara.server.base.service.dept.strategy.SyncDeptStrategyContent;
 import org.dromara.server.base.service.user.strategy.SyncUserStrategyContent;
 import org.dromara.server.base.util.EncryptorUtil;
 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.dromara.server.sync.business.kafka.SyncKafkaService;
 import org.springframework.validation.annotation.Validated;
@@ -34,7 +31,6 @@ import java.util.Map;
 @RequiredArgsConstructor
 @RequestMapping("/test")
 public class SyncTest {
-    private final SyncDeptStrategyContent syncDeptStrategyContent;
     private final SyncUserStrategyContent syncUserStrategyContent;
     private final SyncKafkaService syncKafkaService;
 
@@ -45,9 +41,10 @@ public class SyncTest {
      */
     @GetMapping("/sync/train/class")
     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);
+        syncKafkaService.SyncTrainClass(JSONUtil.parseObj(data));
+        // List<ResourceDept> resourceDeptlist = TrainUtils.getSycClass(JSONUtil.parseObj(data));
+        // log.info("[教务同步测试->班级同步]-[班级信息:{}]", JSONUtil.toJsonStr(resourceDeptlist));
+        // syncDeptStrategyContent.syncDept(resourceDeptlist, SyncResourceConstants.TRAIN_CLASS);
 
         return R.ok();
     }
@@ -59,9 +56,9 @@ public class SyncTest {
      */
     @GetMapping("/sync/train/class/del")
     public R<Void> syncDelTrainClass(@RequestBody Map<String, Object> data){
-        List<ResourceDept> resourceDeptlist = TrainUtils.getSycDeleteClass(JSONUtil.parseObj(data));
-        syncDeptStrategyContent.syncDelDept(resourceDeptlist, SyncResourceConstants.TRAIN_CLASS);
-
+        // List<ResourceDept> resourceDeptlist = TrainUtils.getSycDeleteClass(JSONUtil.parseObj(data));
+        // syncDeptStrategyContent.syncDelDept(resourceDeptlist, SyncResourceConstants.TRAIN_CLASS);
+        syncKafkaService.SyncDelTrainClass(JSONUtil.parseObj(data));
         return R.ok();
     }
     /**
@@ -98,9 +95,10 @@ public class SyncTest {
      */
     @GetMapping("/sync/graduate/class")
     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);
+        syncKafkaService.SyncGraduateClass(JSONUtil.parseObj(data));
+        // List<ResourceDept> resourceDeptlist = GraduateUtils.getSycClass(JSONUtil.parseObj(data));
+        // log.info("[研究生同步测试->班级同步]-[班级信息:{}]", JSONUtil.toJsonStr(resourceDeptlist));
+        // syncDeptStrategyContent.syncDept(resourceDeptlist, SyncResourceConstants.GRADUATE_CLASS);
 
         return R.ok();
     }
@@ -141,9 +139,10 @@ public class SyncTest {
      */
     @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);
+        //syncKafkaService.sync
+        // List<ResourcePerson> resourcePersonList = TeacherUtils.getSyncTeacher(JSONUtil.parseObj(data));
+        // log.info("[业中同步测试->人员同步]-[人员信息:{}]", JSONUtil.toJsonStr(resourcePersonList));
+        // syncUserStrategyContent.syncUser(resourcePersonList, SyncResourceConstants.TEACHER);
 
         return R.ok();
     }

+ 41 - 0
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/dubbo/RemoteKafkaSyncServiceImpl.java

@@ -21,13 +21,54 @@ import org.springframework.stereotype.Service;
 @RequiredArgsConstructor
 public class RemoteKafkaSyncServiceImpl implements RemoteKafkaSyncService {
     private final SyncKafkaService syncKafkaService;
+
+    /**
+     * kafka教职工部门同步
+     *
+     * @param data 部门数据
+     */
     @Override
     public void syncTeacherDept(JSONObject data) {
         syncKafkaService.syncTeacherDept(data);
     }
 
+    /**
+     * kafka教职工部门删除
+     *
+     * @param data 部门数据
+     */
     @Override
     public void syncDelTeacherDept(JSONObject data) {
         syncKafkaService.syncDelTeacherDept(data);
     }
+
+    /**
+     * kafka 培训班对应部门同步
+     *
+     * @param data 培训班数据
+     */
+    @Override
+    public void syncTrainClass(JSONObject data) {
+        syncKafkaService.SyncTrainClass(data);
+    }
+
+    /**
+     * kafka 培训班对应部门删除
+     *
+     * @param data 培训班数据
+     */
+    @Override
+    public void syncDelTrainClass(JSONObject data) {
+        syncKafkaService.SyncDelTrainClass(data);
+    }
+
+    /**
+     * kafka 研究生班级对应部门同步
+     *
+     * @param data 研究生班级
+     */
+    @Override
+    public void syncGraduateClass(JSONObject data) {
+        syncKafkaService.SyncGraduateClass(data);
+    }
 }

+ 8 - 0
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/mapper/SysDeptMapper.java

@@ -1,5 +1,6 @@
 package org.dromara.server.sync.mapper;
 
+import org.apache.ibatis.annotations.Param;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 import org.dromara.server.sync.domain.SysDept;
 import org.dromara.server.sync.domain.vo.SysDeptVo;
@@ -10,4 +11,11 @@ import org.dromara.server.sync.domain.vo.SysDeptVo;
  * @author Lion Li
  */
 public interface SysDeptMapper extends BaseMapperPlus<SysDept, SysDeptVo> {
+    /**
+     * 根据第三方Id和租户号查询所有数据
+     * @param otherId 第三方Id
+     * @param tenantId 租户Id
+     * @return 查询结果
+     */
+    SysDeptVo selectVoAllByOtherId(@Param("otherId") String otherId,@Param("tenantId") String tenantId);
 }

+ 11 - 0
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/IDeptService.java

@@ -16,6 +16,8 @@ public interface IDeptService {
 
     SysDeptVo selectByOtherId(String otherId, String tenantId);
 
+    SysDeptVo selectByParentAndName(Long parentId, String deptName, String tenantId);
+
     SysDeptVo selectByRootId(String tenantId);
 
     R<SysDeptVo> insertReturnDept(SysDeptBo bo);
@@ -27,4 +29,13 @@ public interface IDeptService {
     Boolean updateDept(SysDeptBo bo);
 
     Boolean deleteByOtherId(String otherId, String tenantId);
+
+    Boolean deleteByOtherId(String otherId, String tenantId,Long operatorId);
+
+    /**
+     * 根据统一标识Id查询部门信息
+     * @param otherId 统一身份标识
+     * @return 部门信息
+     */
+    SysDeptVo selectVoAllByOtherId(String otherId,String tenantId);
 }

+ 19 - 0
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/impl/DeptServiceImpl.java

@@ -47,6 +47,15 @@ public class DeptServiceImpl implements IDeptService {
             () -> deptMapper.selectVoOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getParentId, 0L).eq(SysDept::getTenantId, tenantId)));
     }
 
+    @Override
+    public SysDeptVo selectByParentAndName(Long parentId, String deptName, String tenantId) {
+        return TenantHelper.ignore(()->deptMapper.selectVoOne(new LambdaQueryWrapper<SysDept>()
+                                          .eq(SysDept::getParentId, parentId)
+                                          .eq(SysDept::getDeptName, deptName)
+                                          .eq(SysDept::getTenantId,tenantId)));
+
+    }
+
     @Override
     public Boolean insertDept(SysDeptBo bo) {
         SysDept entity = MapstructUtils.convert(bo, SysDept.class);
@@ -117,6 +126,16 @@ public class DeptServiceImpl implements IDeptService {
         return iCount > 0;
     }
 
+    @Override
+    public Boolean deleteByOtherId(String otherId, String tenantId, Long operatorId) {
+        return null;
+    }
+
+    @Override
+    public SysDeptVo selectVoAllByOtherId(String otherId, String tenantId) {
+        return TenantHelper.ignore(()-> deptMapper.selectVoAllByOtherId(otherId, tenantId));
+    }
+
     private String getAncestors(Long parentId) {
         if (ObjectUtil.equals(parentId, 0L)) {
             return "0";

+ 29 - 28
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/dept/strategy/impl/GraduateClassStrategyImpl.java → ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/strategy/dept/impl/GraduateClassStrategyImpl.java

@@ -1,20 +1,19 @@
-package org.dromara.server.base.service.dept.strategy.impl;
+package org.dromara.server.sync.strategy.dept.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
-import org.dromara.common.core.config.DefaultConfig;
 import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.json.utils.JsonUtils;
-import org.dromara.server.base.service.dept.SyncRemoteDeptService;
-import org.dromara.server.base.service.dept.strategy.ISyncDeptStrategy;
 import org.dromara.server.common.constant.SyncResourceConstants;
 import org.dromara.server.common.domain.bo.ResourceDept;
-import org.dromara.system.api.domain.bo.RemoteDeptBo;
-import org.dromara.system.api.domain.vo.RemoteDeptVo;
+import org.dromara.server.sync.domain.bo.SysDeptBo;
+import org.dromara.server.sync.domain.vo.SysDeptVo;
+import org.dromara.server.sync.service.IDeptService;
+import org.dromara.server.sync.strategy.dept.ISyncDeptStrategy;
 import org.springframework.stereotype.Service;
 
 import java.text.MessageFormat;
@@ -35,8 +34,7 @@ import java.util.List;
 @RequiredArgsConstructor
 @Service(SyncResourceConstants.GRADUATE_CLASS)
 public class GraduateClassStrategyImpl implements ISyncDeptStrategy {
-    private final SyncRemoteDeptService syncRemoteDeptService;
-    private final DefaultConfig defaultConfig;
+    private final IDeptService deptService;
 
     @Override
     public void syncDept(List<ResourceDept> deptList) {
@@ -69,25 +67,28 @@ public class GraduateClassStrategyImpl implements ISyncDeptStrategy {
             String otherId = resourceDept.getDept_id();
             String delFlag = resourceDept.getDelFlag();
             // 研究生传过来的部门数据是带了删除标志的,所以查询时不能再带上delFlag=0的条件了
-            RemoteDeptVo remoteDeptVo = syncRemoteDeptService.selectAllDeptByOtherId(otherId, tenantId);
+            SysDeptVo deptVo = deptService.selectVoAllByOtherId(otherId, tenantId);
             // 将班级组装成入库的对模型
-            R<RemoteDeptBo> result = setRemoteDeptBo(resourceDept, remoteDeptVo);
+            R<SysDeptBo> result = setRemoteDeptBo(resourceDept, deptVo);
+
+            Boolean syncResult;
             if (result.getCode() == R.SUCCESS) {
-                if (remoteDeptVo != null) {
+                if (deptVo != null) {
                     // 已存在此班级,更新
                     if ("0".equals(delFlag)) {
-                        return syncRemoteDeptService.updateDept(result.getData());
+                        syncResult =  deptService.updateDept(result.getData());
                     } else {
-                        return syncRemoteDeptService.deleteDeptByOtherId(otherId);
+                        syncResult = deptService.deleteByOtherId(resourceDept.getDept_id(), resourceDept.getTenantId());
                     }
                 } else {
                     if ("0".equals(delFlag)) {
                         // 只增加正常的班级
-                        return syncRemoteDeptService.insertDept(result.getData());
+                        syncResult = deptService.insertDept(result.getData());
                     } else {
                         return R.fail("已删除的班级不需要同步");
                     }
                 }
+                return syncResult ? R.ok() : R.fail();
             } else {
                 return R.fail(result.getMsg());
             }
@@ -96,6 +97,7 @@ public class GraduateClassStrategyImpl implements ISyncDeptStrategy {
             return R.fail(e.getMessage());
         }
     }
+
     /**
      * 组装写库的研究生班级
      * 研究生的班级结构为 在校研究生(系统初始化后的固定值)->年级(对应年份)->班级(对应班名)
@@ -104,18 +106,18 @@ public class GraduateClassStrategyImpl implements ISyncDeptStrategy {
      * @param remoteDeptVo 源班级对应一卡通系统数据
      * @return 写库班级业务数据
      */
-    private R<RemoteDeptBo> setRemoteDeptBo(ResourceDept resourceDept, RemoteDeptVo remoteDeptVo) {
-        RemoteDeptVo yearDeptVo = doYearDept(resourceDept);
+    private R<SysDeptBo> setRemoteDeptBo(ResourceDept resourceDept, SysDeptVo remoteDeptVo) {
+        SysDeptVo yearDeptVo = doYearDept(resourceDept);
         if (yearDeptVo == null) {
             // 处理年份对应的班级失败,直接返回失败
             return R.fail("创建年份对应部门失败");
         }
-        RemoteDeptBo remoteDeptBo;
+        SysDeptBo remoteDeptBo;
         if (ObjUtil.isEmpty(remoteDeptVo)) {
-            remoteDeptBo = new RemoteDeptBo();
+            remoteDeptBo = new SysDeptBo();
             remoteDeptBo.setCreateBy(resourceDept.getOperatorId());
         } else {
-            remoteDeptBo = BeanUtil.copyProperties(remoteDeptVo, RemoteDeptBo.class);
+            remoteDeptBo = BeanUtil.copyProperties(remoteDeptVo, SysDeptBo.class);
             remoteDeptBo.setUpdateBy(resourceDept.getOperatorId());
         }
         // 研究生班级对应部门类型类型为06,以和培训班的转换部门区分
@@ -140,26 +142,25 @@ public class GraduateClassStrategyImpl implements ISyncDeptStrategy {
      * @param resourceDept 源班级数据
      * @return 部门信息
      */
-    private RemoteDeptVo doYearDept(ResourceDept resourceDept) {
+    private SysDeptVo doYearDept(ResourceDept resourceDept) {
         // 检查年份对应的部门
         Long rootId = DefaultConstants.GRADUATE_PARENT_DEPT_ID;
-        RemoteDeptVo yearDeptVo = syncRemoteDeptService.selectDeptByParentIdAndName(rootId, resourceDept.getYear().toString());
+        String deptName = resourceDept.getYear().toString() + '级';
+        SysDeptVo yearDeptVo = deptService.selectByParentAndName(rootId, deptName, resourceDept.getTenantId());
         if (yearDeptVo != null) {
             return yearDeptVo;
         }
         // 不存在对应的部门,需要增加
-        RemoteDeptBo remoteDeptBo = new RemoteDeptBo();
-        remoteDeptBo.setDeptName(resourceDept.getYear().toString()+ "级");
+        SysDeptBo remoteDeptBo = new SysDeptBo();
+        remoteDeptBo.setDeptName(deptName);
         remoteDeptBo.setDeptType(DefaultConstants.YEAR_DEPT_TYPE);
         remoteDeptBo.setCreateBy(resourceDept.getOperatorId());
         remoteDeptBo.setParentId(rootId);
-        if (StringUtils.isNotEmpty(resourceDept.getTenantId())) {
-            remoteDeptBo.setTenantId(remoteDeptBo.getTenantId());
-        }
+        remoteDeptBo.setTenantId(resourceDept.getTenantId());
 
-        R<Object> result = syncRemoteDeptService.insertDept(remoteDeptBo);
+        R<SysDeptVo> result = deptService.insertReturnDept(remoteDeptBo);
         if (result.getCode() == R.SUCCESS) {
-            return (RemoteDeptVo) result.getData();
+            return result.getData();
         }
         return null;
     }

+ 0 - 1
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/strategy/dept/impl/HrDeptStrategyImpl.java

@@ -8,7 +8,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.json.utils.JsonUtils;
-import org.dromara.server.base.service.dept.SyncRemoteDeptService;
 import org.dromara.server.common.constant.SyncResourceConstants;
 import org.dromara.server.common.domain.bo.ResourceDept;
 import org.dromara.server.sync.domain.bo.SysDeptBo;

+ 83 - 68
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/dept/strategy/impl/TrainClassStrategyImpl.java → ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/strategy/dept/impl/TrainClassStrategyImpl.java

@@ -1,10 +1,10 @@
-package org.dromara.server.base.service.dept.strategy.impl;
+package org.dromara.server.sync.strategy.dept.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.dromara.common.core.config.DefaultConfig;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.model.ErrorInfo;
@@ -12,12 +12,13 @@ import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.json.utils.JsonUtils;
 import org.dromara.hotel.api.domain.bo.RemoteTeamBo;
 import org.dromara.hotel.api.domain.vo.RemoteTeamVo;
-import org.dromara.server.base.service.dept.SyncRemoteDeptService;
-import org.dromara.server.base.service.dept.strategy.ISyncDeptStrategy;
+import org.dromara.hotel.api.service.RemoteTeamService;
 import org.dromara.server.common.constant.SyncResourceConstants;
 import org.dromara.server.common.domain.bo.ResourceDept;
-import org.dromara.system.api.domain.bo.RemoteDeptBo;
-import org.dromara.system.api.domain.vo.RemoteDeptVo;
+import org.dromara.server.sync.domain.bo.SysDeptBo;
+import org.dromara.server.sync.domain.vo.SysDeptVo;
+import org.dromara.server.sync.service.IDeptService;
+import org.dromara.server.sync.strategy.dept.ISyncDeptStrategy;
 import org.springframework.stereotype.Service;
 
 import java.text.MessageFormat;
@@ -38,16 +39,22 @@ import java.util.List;
 @RequiredArgsConstructor
 @Service(SyncResourceConstants.TRAIN_CLASS)
 public class TrainClassStrategyImpl implements ISyncDeptStrategy {
+    private final IDeptService deptService;
 
-    private final SyncRemoteDeptService syncRemoteDeptService;
-    private final DefaultConfig defaultConfig;
+    @DubboReference
+    private final RemoteTeamService remoteTeamService;
 
+    /**
+     * 同步同步培训班信息(增加、修改)
+     *
+     * @param deptList 部门数据
+     */
     @Override
     public void syncDept(List<ResourceDept> deptList) {
         List<String> syncMessage = new ArrayList<>();
         List<String> syncTeamMessage = new ArrayList<>();
         deptList.forEach(resourceDept -> {
-            R<Object> result = syncDept(resourceDept);
+            R<Void> result = syncDept(resourceDept);
             if (result.getCode() == R.SUCCESS) {
                 syncMessage.add(MessageFormat.format("[同步培训班级成功]-[{0}]", JsonUtils.toJsonString(resourceDept)));
             } else {
@@ -66,24 +73,29 @@ public class TrainClassStrategyImpl implements ISyncDeptStrategy {
         syncTeamMessage.forEach(System.out::println);
     }
 
+    /**
+     * 同步培训班信息(删除)
+     *
+     * @param deptList 部门列表
+     */
     @Override
     public void syncDelDept(List<ResourceDept> deptList) {
         List<String> syncDelMessage = new ArrayList<>();
         List<String> syncDelTeamMessage = new ArrayList<>();
         deptList.forEach(resourceDept -> {
-            R<Object>result = syncRemoteDeptService.deleteDeptByOtherId(resourceDept.getDept_id(),resourceDept.getOperatorId());
+            Boolean result = deptService.deleteByOtherId(resourceDept.getDept_id(), resourceDept.getTenantId());
 
-            if (result.getCode() == R.SUCCESS) {
+            if (result) {
                 syncDelMessage.add(MessageFormat.format("[同步删除培训班成功]-[{0}]", JsonUtils.toJsonString(resourceDept)));
             } else {
-                syncDelMessage.add(MessageFormat.format("[同步删除培训班失败]-[{0}]-[{1}]", JsonUtils.toJsonString(resourceDept), result.getMsg()));
+                syncDelMessage.add(MessageFormat.format("[同步删除培训班失败]-[{0}]", JsonUtils.toJsonString(resourceDept)));
             }
 
-            result = syncRemoteDeptService.deleteTeamByOtherId(resourceDept.getDept_id(), resourceDept.getOperatorId());
-            if (result.getCode() == R.SUCCESS) {
+            result = remoteTeamService.deleteTeamByOtherId(resourceDept.getDept_id(), resourceDept.getOperatorId(),resourceDept.getTenantId());
+            if (result) {
                 syncDelTeamMessage.add(MessageFormat.format("[同步删除团客成功]-[{0}]", JsonUtils.toJsonString(resourceDept)));
             } else {
-                syncDelTeamMessage.add(MessageFormat.format("[同步删除团客失败]-[{0}]-[{1}]", JsonUtils.toJsonString(resourceDept), result.getMsg()));
+                syncDelTeamMessage.add(MessageFormat.format("[同步删除团客失败]-[{0}]", JsonUtils.toJsonString(resourceDept)));
             }
         });
         syncDelMessage.forEach(System.out::println);
@@ -97,21 +109,29 @@ public class TrainClassStrategyImpl implements ISyncDeptStrategy {
      * @param resourceDept 班级数据
      * @return 处理结果
      */
-    private R<Object> syncDept(ResourceDept resourceDept) {
-        String tenantId = resourceDept.getTenantId();
-        String otherId = resourceDept.getDept_id();
-        RemoteDeptVo remoteDeptVo = syncRemoteDeptService.selectDeptByOtherId(otherId, tenantId);
-        // 将班级组装成入库的对模型
-        R<RemoteDeptBo> result = setRemoteDeptBo(resourceDept, remoteDeptVo);
-        if (result.getCode() == R.SUCCESS) {
-            if (remoteDeptVo != null) {
-                // 已存在此班级,更新
-                return syncRemoteDeptService.updateDept(result.getData());
+    private R<Void> syncDept(ResourceDept resourceDept) {
+        try {
+            String tenantId = resourceDept.getTenantId();
+            String otherId = resourceDept.getDept_id();
+            // 获取班级在一卡通系统中对应的部门
+            SysDeptVo deptVo = deptService.selectByOtherId(otherId, tenantId);
+            // 将班级组装成入库的对模型
+            R<SysDeptBo> result = setRemoteDeptBo(resourceDept, deptVo);
+            Boolean syncResult;
+            if (result.getCode() == R.SUCCESS) {
+                if (deptVo != null) {
+                    // 已存在此班级,更新
+                    syncResult = deptService.updateDept(result.getData());
+                } else {
+                    syncResult = deptService.insertDept(result.getData());
+                }
+                return syncResult ? R.ok() : R.fail();
             } else {
-                return syncRemoteDeptService.insertDept(result.getData());
+                return R.fail(result.getMsg());
             }
-        } else {
-            return R.fail(result.getMsg());
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            return R.fail(e.getMessage());
         }
     }
 
@@ -123,16 +143,16 @@ public class TrainClassStrategyImpl implements ISyncDeptStrategy {
      * @param remoteDeptVo 源班级对应一卡通系统数据
      * @return 写库班级业务数据
      */
-    private R<RemoteDeptBo> setRemoteDeptBo(ResourceDept resourceDept, RemoteDeptVo remoteDeptVo) {
-        // 检查年份对应的部门,年份的父节点固定为127->校本部
+    private R<SysDeptBo> setRemoteDeptBo(ResourceDept resourceDept, SysDeptVo remoteDeptVo) {
+        // 检查年份对应的部门
         Long rootId = DefaultConstants.TRAIN_PARENT_DEPT_ID;
-        RemoteDeptVo yearDeptVo = doYearOrSemesterDept(resourceDept, rootId, 0);
+        SysDeptVo yearDeptVo = doYearOrSemesterDept(resourceDept, rootId, 0);
         if (yearDeptVo == null) {
             // 处理年份对应的班级失败,直接返回失败
             return R.fail("创建年份对应部门失败");
         }
         // 检查学期对应的部门
-        RemoteDeptVo semesterDeptVo = doYearOrSemesterDept(resourceDept, yearDeptVo.getDeptId(), 1);
+        SysDeptVo semesterDeptVo = doYearOrSemesterDept(resourceDept, yearDeptVo.getDeptId(), 1);
         if (semesterDeptVo == null) {
             // 处理学期对应的班级失败,直接返回失败
             return R.fail("创建学期对应部门失败");
@@ -141,36 +161,35 @@ public class TrainClassStrategyImpl implements ISyncDeptStrategy {
         // 处理班级对应的部门
         String deptNum = resourceDept.getDept_num();
         String tenantId = resourceDept.getTenantId();
-        RemoteDeptBo remoteDeptBo;
+        SysDeptBo deptBo;
         if (ObjUtil.isEmpty(remoteDeptVo)) {
-            remoteDeptBo = new RemoteDeptBo();
+            deptBo = new SysDeptBo();
             // 班级对应的部门默认类型为 05-班级
-            remoteDeptBo.setDeptType(DefaultConstants.CLASS_DEPT_TYPE);
-            remoteDeptBo.setCreateBy(resourceDept.getOperatorId());
+            deptBo.setDeptType(DefaultConstants.CLASS_DEPT_TYPE);
+            deptBo.setTenantId(tenantId);
+            deptBo.setCreateBy(resourceDept.getOperatorId());
         } else {
-            remoteDeptBo = BeanUtil.copyProperties(remoteDeptVo, RemoteDeptBo.class);
-            remoteDeptBo.setUpdateBy(resourceDept.getOperatorId());
+            deptBo = BeanUtil.copyProperties(remoteDeptVo, SysDeptBo.class);
+            deptBo.setUpdateBy(resourceDept.getOperatorId());
         }
-        remoteDeptBo.setDeptName(resourceDept.getDept_name());
-        remoteDeptBo.setOtherId(resourceDept.getDept_id());
-        remoteDeptBo.setParentId(semesterDeptVo.getDeptId());
-        remoteDeptBo.setPayCheck(resourceDept.getPayCheck());
-        remoteDeptBo.setPayBegin(resourceDept.getPayBegin());
-        remoteDeptBo.setPayEnd(resourceDept.getPayEnd());
-        remoteDeptBo.setCheckDate(resourceDept.getCheckDate());
-        remoteDeptBo.setBeginDate(resourceDept.getBeginDate());
-        remoteDeptBo.setEndDate(resourceDept.getEndDate());
-        remoteDeptBo.setCanEat(resourceDept.getCanEat());
-        remoteDeptBo.setChooseRoom(resourceDept.getChooseRoom());
+        deptBo.setDeptName(resourceDept.getDept_name());
+        deptBo.setOtherId(resourceDept.getDept_id());
+        deptBo.setParentId(semesterDeptVo.getDeptId());
+        deptBo.setPayCheck(resourceDept.getPayCheck());
+        deptBo.setPayBegin(resourceDept.getPayBegin());
+        deptBo.setPayEnd(resourceDept.getPayEnd());
+        deptBo.setCheckDate(resourceDept.getCheckDate());
+        deptBo.setBeginDate(resourceDept.getBeginDate());
+        deptBo.setEndDate(resourceDept.getEndDate());
+        deptBo.setCanEat(resourceDept.getCanEat());
+        deptBo.setChooseRoom(resourceDept.getChooseRoom());
         if (StringUtils.isNotEmpty(deptNum)) {
-            remoteDeptBo.setOrderNum(Integer.valueOf(deptNum));
+            deptBo.setOrderNum(Integer.valueOf(deptNum));
         }
 
-        if (StringUtils.isNotEmpty(tenantId)) {
-            remoteDeptBo.setTenantId(tenantId);
-        }
+        deptBo.setTenantId(tenantId);
 
-        return R.ok(remoteDeptBo);
+        return R.ok(deptBo);
     }
 
     /**
@@ -181,30 +200,27 @@ public class TrainClassStrategyImpl implements ISyncDeptStrategy {
      * @param flag         标识 0-年份 1-学期
      * @return 部门
      */
-    private RemoteDeptVo doYearOrSemesterDept(ResourceDept resourceDept, Long rootId, int flag) {
+    private SysDeptVo doYearOrSemesterDept(ResourceDept resourceDept, Long rootId, int flag) {
         String deptName = flag == 0 ? resourceDept.getYear().toString() + "年" : resourceDept.getSemester();
 
-        RemoteDeptVo yearDeptVo = syncRemoteDeptService.selectDeptByParentIdAndName(rootId, deptName);
+        SysDeptVo yearDeptVo = deptService.selectByParentAndName(rootId, deptName, resourceDept.getTenantId());
         if (yearDeptVo != null) {
             return yearDeptVo;
         }
         // 不存在对应的部门,需要增加
-        RemoteDeptBo remoteDeptBo = new RemoteDeptBo();
+        SysDeptBo remoteDeptBo = new SysDeptBo();
         remoteDeptBo.setDeptName(deptName);
         remoteDeptBo.setParentId(rootId);
         remoteDeptBo.setDeptType(DefaultConstants.YEAR_DEPT_TYPE);
-        if (StringUtils.isNotEmpty(resourceDept.getTenantId())) {
-            remoteDeptBo.setTenantId(resourceDept.getTenantId());
-        }
+        remoteDeptBo.setTenantId(resourceDept.getTenantId());
         remoteDeptBo.setCreateBy(resourceDept.getOperatorId());
-        R<Object> result = syncRemoteDeptService.insertDept(remoteDeptBo);
+        R<SysDeptVo> result = deptService.insertReturnDept(remoteDeptBo);
         if (result.getCode() == R.SUCCESS) {
-            return (RemoteDeptVo) result.getData();
+            return result.getData();
         }
         return null;
     }
 
-
     // region 培训班级转团客
 
     /**
@@ -216,19 +232,18 @@ public class TrainClassStrategyImpl implements ISyncDeptStrategy {
     private R<ErrorInfo> syncTeam(ResourceDept resourceDept) {
         String otherId = resourceDept.getDept_id();
         String tenantId = resourceDept.getTenantId();
-        R<RemoteTeamVo> result = syncRemoteDeptService.selectTeamByOtherId(otherId, tenantId);
+        R<RemoteTeamVo> result = remoteTeamService.selectTeamByOtherId(otherId, tenantId);
         RemoteTeamVo remoteTeamVo = result.getData();
         R<RemoteTeamBo> getBo = setRemoteTeamBo(resourceDept, remoteTeamVo);
         if (R.isSuccess(getBo)) {
             if (R.isSuccess(result)) {
-                return syncRemoteDeptService.updateRemoteTeam(getBo.getData());
+                return remoteTeamService.updateTeamByBo(getBo.getData());
             } else {
-                return syncRemoteDeptService.insertRemoteTeam(getBo.getData());
+                return remoteTeamService.insertTeamByBo(getBo.getData());
             }
         } else {
             return R.fail(getBo.getMsg());
         }
-
     }
 
     /**
@@ -242,7 +257,7 @@ public class TrainClassStrategyImpl implements ISyncDeptStrategy {
         RemoteTeamBo remoteTeamBo;
         if (ObjUtil.isEmpty(remoteTeamVo)) {
             remoteTeamBo = new RemoteTeamBo();
-            //remoteTeamBo.set
+            // remoteTeamBo.set
         } else {
             remoteTeamBo = BeanUtil.copyProperties(remoteTeamVo, RemoteTeamBo.class);
         }

+ 10 - 3
ruoyi-server/ruoyi-server-sync/src/main/resources/mapper/SysDeptMapper.xml

@@ -1,7 +1,14 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.dromara.server.sync.mapper.SysDeptMapper">
-
+    <resultMap type="org.dromara.server.sync.domain.vo.SysDeptVo" id="SysDeptResult">
+    </resultMap>
+    <select id="selectVoAllByOtherId" resultMap="SysDeptResult">
+        select *
+        from t_sys_dept
+        where other_id = #{otherId}
+          and tenant_id = #{tenantId}
+    </select>
 </mapper>