Ver código fonte

feature: 同步业务完善
1.部门修改时根据是否推送消息开关推送修改后的部门信息

luo.yibo@datuai.com 1 ano atrás
pai
commit
66ca9fa5b1

+ 0 - 23
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CloudKafkaEventConstants.java

@@ -1,23 +0,0 @@
-package org.dromara.common.core.constant;
-
-/**
- * name: CloudKafkaEventConstants
- * package: org.dromara.common.core.constant
- * description: 云端消息推送事件常量
- * date: 2025-01-02 15:05:08 15:05
- *
- * @author luoyibo
- * @version 0.1
- * @since JDK 1.8
- */
-public class CloudKafkaEventConstants {
-    // 业务系统编号
-    public static final String SENDER = "000";
-    // 消费记录
-    public static final String CONSUME_DETAIL = SENDER + "00001";
-    //部门信息
-    public static final String DEPT_INFO = SENDER + "00002";
-    //人员信息
-    public static final String USER_INFO = SENDER + "00003";
-
-}

+ 7 - 7
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/BaseBusiness.java

@@ -13,6 +13,7 @@ import org.dromara.backstage.api.domain.vo.RemoteCardVo;
 import org.dromara.backstage.api.domain.vo.RemoteMealTypeVo;
 import org.dromara.backstage.api.domain.vo.RemoteUserAccountVo;
 import org.dromara.common.core.constant.ApiErrorTypeConstants;
+import org.dromara.common.core.constant.CloudMqEventConstants;
 import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.model.ErrorInfo;
@@ -22,11 +23,10 @@ import org.dromara.common.core.exception.consume.ConsumeException;
 import org.dromara.common.core.utils.RecordIdUtils;
 import org.dromara.common.message.kafka.domain.KafkaHeader;
 import org.dromara.common.message.kafka.domain.KafkaMessage;
-import org.dromara.server.base.mq.constant.CloudConsumeEventConstants;
-import org.dromara.server.common.domain.consume.bo.ConsumptionBo;
-import org.dromara.server.common.domain.vo.yc.YcPushConsumeInfoVo;
 import org.dromara.server.base.mq.KafkaNormalProducer;
 import org.dromara.server.base.mq.constant.PushConsumeEventConstants;
+import org.dromara.server.common.domain.consume.bo.ConsumptionBo;
+import org.dromara.server.common.domain.vo.yc.YcPushConsumeInfoVo;
 import org.dromara.server.consume.domain.bo.*;
 import org.dromara.server.consume.domain.vo.*;
 import org.dromara.server.consume.service.*;
@@ -248,14 +248,14 @@ public class BaseBusiness {
         KafkaMessage<ConsumptionBo> message = new KafkaMessage<>();
         KafkaHeader header = message.getHeader();
         header.setTimestamp(System.currentTimeMillis());
-        header.setEventId(CloudConsumeEventConstants.CONSUME_DETAIL);
-        header.setEventType(CloudConsumeEventConstants.CONSUME_DETAIL);
-        header.setSender(CloudConsumeEventConstants.SENDER);
+        header.setEventId(CloudMqEventConstants.CONSUME);
+        header.setEventType(CloudMqEventConstants.CONSUME);
+        header.setSender(CloudMqEventConstants.SENDER);
 
         message.setHeader(header);
         message.setBody(bo);
 
-        kafkaProducer.sendKafkaMessage("TO_CLOUD_EVENT", message);
+        kafkaProducer.sendKafkaMessage(CloudMqEventConstants.TOPIC, message);
         log.info("请求云端消费:{}", JSONUtil.toJsonStr(bo));
     }
 

+ 2 - 8
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/consumer/KafkaConsumer.java

@@ -1,7 +1,6 @@
 package org.dromara.server.mq.consumer;
 
 import cn.hutool.core.util.ObjUtil;
-import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
@@ -40,14 +39,9 @@ public class KafkaConsumer {
         String eventType = receiveMsg.getHeader().getEventType();
         String sender = receiveMsg.getHeader().getSender();
         JSONObject eventMsg = JSONUtil.parseObj(receiveMsg.getBody());
-        if(ObjUtil.equals(sender,"000")) {
+        if (ObjUtil.equals(sender, "000")) {
             try {
-                //是接收云端消费
-                //String cloudConsume = remotePtParameterService.getPtParameterByKey("GET_CLOUD_CONSUME");
-                //if(ObjectUtil.equals(cloudConsume,"1")){
-                //    log.info("[处理云端消费请求]-[消信息:{}]", receiveMsg);
-                    eventStrategyContext.doMsgHandle(eventType, eventMsg);
-                //}
+                eventStrategyContext.doMsgHandle(eventType, eventMsg);
             } catch (Exception e) {
                 log.error("[kafka消息处理失败]-[消息:{}-[错误:{}]", receiveMsg, e.getMessage());
             }

+ 2 - 16
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/card/CloudConsumeEventStrategyImpl.java

@@ -6,9 +6,9 @@ import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.common.core.constant.CloudMqEventConstants;
 import org.dromara.consume.api.RemoteConsumeService;
 import org.dromara.consume.api.domain.bo.RemoteConsumeBo;
-import org.dromara.server.base.mq.constant.CloudConsumeEventConstants;
 import org.dromara.server.common.domain.consume.bo.ConsumptionBo;
 import org.dromara.server.mq.event.kafka.IEventStrategy;
 import org.springframework.stereotype.Service;
@@ -23,7 +23,7 @@ import org.springframework.stereotype.Service;
  */
 @Slf4j
 @RequiredArgsConstructor
-@Service(CloudConsumeEventConstants.CONSUME_DETAIL)
+@Service(CloudMqEventConstants.CONSUME)
 public class CloudConsumeEventStrategyImpl implements IEventStrategy {
     @DubboReference
     private final RemoteConsumeService remoteConsumeService;
@@ -32,20 +32,6 @@ public class CloudConsumeEventStrategyImpl implements IEventStrategy {
     public void doMsgHandle(JSONObject data) {
         ConsumptionBo consumptionBo = JSONUtil.toBean(data, ConsumptionBo.class);
         RemoteConsumeBo recordBo = BeanUtil.copyProperties(consumptionBo, RemoteConsumeBo.class);
-
-        // String time = data.get("consumeDate").toString();
-        // recordBo.setConsumeMoney(new BigDecimal(data.get("consumeValue").toString()));
-        // recordBo.setConsumeDate(DateUtil.parse(time));
-        // recordBo.setCardNo(Long.valueOf(data.get("cardNo").toString()));
-        // recordBo.setFactoryId(Long.valueOf(data.get("factoryId").toString()));
-        // recordBo.setTermNo(Long.valueOf( data.get("termNo").toString()));
-        // recordBo.setTermRecordId(Long.valueOf(data.get("termRecordID").toString()));
-        // recordBo.setRealName(data.get("realName").toString());
-        // recordBo.setUserNumb(data.get("userNumb").toString());
-        // recordBo.setRecordStatus(Long.valueOf(data.get("posRecordState").toString()));
-        // recordBo.setCreditType(CreditTypeEnum.TERM_CONSUME);
-        // recordBo.setTenantId(DefaultConstants.TENANT_ID);
-        // recordBo.setUseType(SystemUseTypeEnum.CONSUME);
         log.info("[处理云端消费请求]-[消费信息:{}]", JSONUtil.toJsonStr(recordBo));
         remoteConsumeService.dealKafkaConsumeData(recordBo);
     }

+ 42 - 0
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/teacher/DeptPushEventStrategyImpl.java

@@ -0,0 +1,42 @@
+package org.dromara.server.mq.event.kafka.impl.teacher;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.common.core.constant.CloudMqEventConstants;
+import org.dromara.server.base.service.dept.SyncRemoteDeptService;
+import org.dromara.server.mq.event.kafka.IEventStrategy;
+import org.dromara.system.api.domain.bo.RemoteDeptBo;
+import org.springframework.stereotype.Service;
+
+/**
+ * @ClassName DeptPushEventStrategyImpl
+ * @Description 部门消息队列数据处理
+ * @Author luoyibo
+ * @Date 2024-11-12 11:52
+ * @Version 1.0
+ * @since jdk17
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service(CloudMqEventConstants.DEPT)
+public class DeptPushEventStrategyImpl implements IEventStrategy {
+    @DubboReference
+    private final SyncRemoteDeptService remoteDeptService;
+
+    @Override
+    public void doMsgHandle(JSONObject data) {
+        RemoteDeptBo remoteDeptBo = JSONUtil.toBean(data, RemoteDeptBo.class);
+
+        log.info("[处理部门消息队列]-[部门信息:{}]", JSONUtil.toJsonStr(remoteDeptBo));
+        if (ObjectUtil.isNotEmpty(remoteDeptBo.getDeptId())) {
+            remoteDeptService.updateDept(remoteDeptBo);
+        } else {
+            remoteDeptService.insertDept(remoteDeptBo);
+        }
+
+    }
+}

+ 8 - 5
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/SyncHrService.java

@@ -5,6 +5,7 @@ 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.exception.ServiceException;
 import org.dromara.server.base.service.dept.strategy.SyncDeptStrategyContent;
 import org.dromara.server.base.service.user.strategy.SyncUserStrategyContent;
@@ -35,6 +36,7 @@ import java.util.List;
 public class SyncHrService {
     private final SyncDeptStrategyContent syncDeptStrategyContent;
     private final SyncUserStrategyContent syncUserStrategyContent;
+    private final DefaultConfig defaultConfig;
 
     /**
      * 同步教职工部门数据,该方法将提供给定时任务调用
@@ -61,7 +63,7 @@ public class SyncHrService {
         dept.setDept_id("001003000000");
         dept.setDept_name("服务企业");
         dept.setOperatorId(DefaultConstants.FULL_SYNC_ADMIN);
-        dept.setTenantId(DefaultConstants.TENANT_ID);
+        dept.setTenantId(defaultConfig.getTenantId());
         resourceDeptlist.add(dept);
         syncDeptStrategyContent.syncDept(resourceDeptlist, SyncResourceConstants.HR_DEPT);
         return true;
@@ -98,6 +100,7 @@ public class SyncHrService {
         // person.setCategory("1");
         // person.setRemark("");
         // person.setUserState("on");
+        // person.setTenantId(defaultConfig.getTenantId());
         // resourcePersonList.add(person);
         // syncUserStrategyContent.syncUser(resourcePersonList, SyncResourceConstants.TEACHER);
         // endregion
@@ -112,7 +115,7 @@ public class SyncHrService {
      */
 
     @NotNull
-    private static List<ResourceDept> getResourceDeptList(SyncFullDataBo dataBo) {
+    private List<ResourceDept> getResourceDeptList(SyncFullDataBo dataBo) {
         List<ResourceDept> resourceDeptlist = new ArrayList<>();
         for (List<String> list : dataBo.getResponseParam().getResourceInfos().get(0).getDataInfo()) {
             ResourceDept dept = new ResourceDept();
@@ -120,7 +123,7 @@ public class SyncHrService {
             dept.setDept_id(list.get(1));
             dept.setDept_name(list.get(2));
             dept.setOperatorId(DefaultConstants.FULL_SYNC_ADMIN);
-            dept.setTenantId(DefaultConstants.TENANT_ID);
+            dept.setTenantId(defaultConfig.getTenantId());
             resourceDeptlist.add(dept);
         }
         return resourceDeptlist;
@@ -133,7 +136,7 @@ public class SyncHrService {
      * @return 转换结果
      */
     @NotNull
-    private static List<ResourcePerson> getResourcePeopleList(SyncFullDataBo dataBo) {
+    private List<ResourcePerson> getResourcePeopleList(SyncFullDataBo dataBo) {
         List<ResourcePerson> resourcePersonList = new ArrayList<>();
         for (List<String> list : dataBo.getResponseParam().getResourceInfos().get(0).getDataInfo()) {
             ResourcePerson person = new ResourcePerson();
@@ -148,7 +151,7 @@ public class SyncHrService {
             person.setRemark("");
             person.setUserState(list.get(16));
             person.setOperatorId(DefaultConstants.FULL_SYNC_ADMIN);
-            person.setTenantId(DefaultConstants.TENANT_ID);
+            person.setTenantId(defaultConfig.getTenantId());
             resourcePersonList.add(person);
         }
         return resourcePersonList;