瀏覽代碼

broadcast data sync

tags/B.1.1.0.0_20230818_base^2
yk 2 年之前
父節點
當前提交
0193b82166
共有 6 個文件被更改,包括 140 次插入15 次删除
  1. +10
    -5
      xueyi-api/xueyi-api-message/src/main/java/com/xueyi/message/api/transfer/feign/RemoteTransferService.java
  2. +10
    -1
      xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/digitalmans/feign/RemoteDigitalmanService.java
  3. +23
    -0
      xueyi-modules/xueyi-job/src/main/java/com/xueyi/job/task/DmBroadDataTask.java
  4. +2
    -1
      xueyi-modules/xueyi-job/src/main/java/com/xueyi/job/util/AbstractQuartzJob.java
  5. +64
    -8
      xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/transfer/controller/ApiController.java
  6. +31
    -0
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmDigitalmanController.java

+ 10
- 5
xueyi-api/xueyi-api-message/src/main/java/com/xueyi/message/api/transfer/feign/RemoteTransferService.java 查看文件

@@ -1,15 +1,14 @@
package com.xueyi.message.api.transfer.feign;

import com.xueyi.common.core.constant.basic.SecurityConstants;
import com.xueyi.common.core.constant.basic.ServiceConstants;
import com.xueyi.common.core.web.result.AjaxResult;
import com.xueyi.common.core.web.result.R;

import com.xueyi.message.api.transfer.feign.factory.RemoteTransferFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

/**
* 数据源服务
@@ -21,4 +20,10 @@ public interface RemoteTransferService {
@RequestMapping(value = "/api/device_online_status/{devId}", method = {RequestMethod.GET})
@ResponseBody
public AjaxResult getDeviceOnlineStatus(@RequestParam(value = "devId") String devId);

@RequestMapping(value = "/api/broadcast", method = {RequestMethod.GET})
@ResponseBody
public R broadcast(@RequestParam(value = "channel") String channel);


}

+ 10
- 1
xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/digitalmans/feign/RemoteDigitalmanService.java 查看文件

@@ -1,5 +1,6 @@
package com.xueyi.system.api.digitalmans.feign;

import com.alibaba.fastjson2.JSONObject;
import com.xueyi.common.core.constant.basic.SecurityConstants;
import com.xueyi.common.core.constant.basic.ServiceConstants;
import com.xueyi.common.core.web.result.R;
@@ -8,7 +9,11 @@ import com.xueyi.system.api.digitalmans.domain.dto.DmSyncDigitalmanDto;
import com.xueyi.system.api.digitalmans.domain.po.DmDigitalmanExtPo;
import com.xueyi.system.api.organize.feign.factory.RemoteUserFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@@ -44,4 +49,8 @@ public interface RemoteDigitalmanService {
@GetMapping("/man/inner-api/devInfo/{devId}")
public R<DmDigitalmanExtPo> devInfo(@RequestParam(value = "devId") String devId, @RequestHeader(SecurityConstants.ENTERPRISE_ID) Long enterpriseId, @RequestHeader(SecurityConstants.SOURCE_NAME) String sourceName, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);


@GetMapping("/man/api/mansInfo")
public R<JSONObject> mansInfo();

}

+ 23
- 0
xueyi-modules/xueyi-job/src/main/java/com/xueyi/job/task/DmBroadDataTask.java 查看文件

@@ -0,0 +1,23 @@
package com.xueyi.job.task;

import com.xueyi.message.api.transfer.feign.RemoteTransferService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
* 定时任务调度测试
*
* @author xueyi
*/
@Component("dmBroadDataTask")
public class DmBroadDataTask {
@Autowired
RemoteTransferService remoteTransferService;
/**
* 触发条件:* 0/1 * * * *
* 每分钟执行一次
*/
public void syncData() {
remoteTransferService.broadcast("broadData");
}
}

+ 2
- 1
xueyi-modules/xueyi-job/src/main/java/com/xueyi/job/util/AbstractQuartzJob.java 查看文件

@@ -43,7 +43,8 @@ public abstract class AbstractQuartzJob implements Job {
doExecute(context, sysJob);
after(context, sysJob, null);
} catch (Exception e) {
log.error("任务执行异常 - :", e);
log.error("任务执行异常 - :", e.getMessage());
e.printStackTrace();
after(context, sysJob, e);
}
}


+ 64
- 8
xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/transfer/controller/ApiController.java 查看文件

@@ -1,7 +1,6 @@
package com.xueyi.message.transfer.controller;


import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.xueyi.common.cache.utils.SourceUtil;
import com.xueyi.common.core.constant.basic.SecurityConstants;
@@ -11,27 +10,33 @@ import com.xueyi.common.core.web.result.AjaxResult;
import com.xueyi.common.core.web.result.R;
import com.xueyi.message.api.transfer.domain.vo.DmActiveVo;
import com.xueyi.message.api.transfer.domain.vo.DmDeviceVo;
import com.xueyi.message.transfer.service.impl.MessageQueueServiceImpl;
import com.xueyi.system.api.authority.feign.RemoteLoginService;
import com.xueyi.system.api.device.domain.vo.DeviceTenantSourceMergeVo;
import com.xueyi.system.api.device.feign.RemoteDeviceTenantMergeService;
import com.xueyi.system.api.digitalmans.domain.dto.DmManDeviceDto;
import com.xueyi.system.api.digitalmans.domain.dto.DmSkillDto;
import com.xueyi.system.api.digitalmans.domain.dto.DmSyncDigitalmanDto;
import com.xueyi.system.api.digitalmans.domain.po.DmManDevicePo;
import com.xueyi.system.api.digitalmans.domain.vo.DmBroadcastVo;
import com.xueyi.system.api.digitalmans.domain.vo.DmReceptionVo;
import com.xueyi.system.api.digitalmans.feign.*;
import com.xueyi.system.api.digitalmans.feign.RemoteBroadcastService;
import com.xueyi.system.api.digitalmans.feign.RemoteDigitalmanService;
import com.xueyi.system.api.digitalmans.feign.RemoteManDeviceService;
import com.xueyi.system.api.digitalmans.feign.RemoteReceptionService;
import com.xueyi.system.api.digitalmans.feign.RemoteSkillService;
import com.xueyi.system.api.model.Source;
import com.xueyi.system.api.organize.domain.dto.SysEnterpriseDto;
import com.xueyi.system.api.staff.domain.vo.DmStaffFeature;
import com.xueyi.system.api.staff.feign.RemoteStaffService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.util.MimeTypeUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
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.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
@@ -70,6 +75,10 @@ public class ApiController {
@Autowired
RemoteBroadcastService remoteBroadcastService;

@Autowired
MessageQueueServiceImpl messageQueueService;



@RequestMapping(value = "/heartbeat", method = {RequestMethod.POST})
@ResponseBody
@@ -264,6 +273,53 @@ public class ApiController {
return AjaxResult.success(System.currentTimeMillis() - Long.parseLong(timestamp) >10 * 60 * 1000 ? InitConstants.DEVICE_ACTIVATE_STATUS_OFFLINE : InitConstants.DEVICE_ACTIVATE_STATUS_ONLINE);
}

/**
* @Author yangkai
* @Description //TODO
* @Date 2023/8/11
* @Param
* @return
*
*
* manCount
* serviceTimeCount
* chatTimes
* chatDurationCount
* skillExecuteTimes
*
* recognizedPersonCount
* servicePerCount
*
* receptionServiceCount
* meetingServiceCount
* visitServiceCount
* largeModelKnowledgeBaseGroupChangeNum
* largeModelKnowledgeBaseChangeNum
**/
@RequestMapping(value = "/broadcast", method = {RequestMethod.GET})
@ResponseBody
public R broadcast(@RequestParam(value = "channel") String channel){
JSONObject json = new JSONObject();
R<JSONObject> objectR = remoteDigitalmanService.mansInfo();
JSONObject jsonObj = objectR.getData();
json.put("manCount", jsonObj.getIntValue("manCount"));
json.put("serviceTimeCount", jsonObj.getLongValue("serviceTimeCount"));

json.put("chatTimes", 865531);
json.put("chatDurationCount", 10068);
// json.put("skillExecuteTimes", 10);
json.put("recognizedPersonCount", 13899);
json.put("servicePerCount", 737521);
json.put("receptionServiceCount", 1824);
json.put("meetingServiceCount", 1762);
json.put("visitServiceCount", 523);

String str = json.toJSONString();

messageQueueService.broadcast(channel, str);
return R.ok(str);
}

@RequestMapping(value = "/get_activate/{snCode}", method = {RequestMethod.GET})
@ResponseBody
public AjaxResult activate(@PathVariable(value = "snCode") String snCode, HttpServletResponse response) {


+ 31
- 0
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmDigitalmanController.java 查看文件

@@ -11,6 +11,7 @@ import com.xueyi.common.core.web.result.AjaxResult;
import com.xueyi.common.core.web.result.R;
import com.xueyi.common.core.web.validate.V_A;
import com.xueyi.common.core.web.validate.V_E;
import com.xueyi.common.datasource.annotation.Master;
import com.xueyi.common.log.annotation.Log;
import com.xueyi.common.log.enums.BusinessType;
import com.xueyi.common.security.annotation.InnerAuth;
@@ -32,11 +33,13 @@ import com.xueyi.system.digitalmans.domain.dto.DmDigitalmanExtDto;
import com.xueyi.system.digitalmans.domain.model.DmDigitalmanExtConverter;
import com.xueyi.system.digitalmans.domain.query.DmDigitalmanExtQuery;
import com.xueyi.system.digitalmans.domain.query.DmDigitalmanQuery;
import com.xueyi.system.digitalmans.domain.query.DmManDeviceQuery;
import com.xueyi.system.digitalmans.mapper.DmManDeviceMapper;
import com.xueyi.system.digitalmans.service.IDmDigitalmanExtService;
import com.xueyi.system.digitalmans.service.IDmDigitalmanService;
import com.xueyi.system.digitalmans.service.IDmModelService;
import com.xueyi.system.digitalmans.service.IDmSkillService;
import com.xueyi.system.digitalmans.service.impl.DmManDeviceServiceImpl;
import com.xueyi.system.emcs.constant.EmcsUploadType;
import com.xueyi.system.emcs.domain.dto.DmDeviceLogFileDto;
import com.xueyi.system.emcs.domain.dto.DmExceptionLogDto;
@@ -63,6 +66,7 @@ import java.io.Serializable;
import java.text.ParseException;
import java.time.Duration;
import java.util.List;
import java.util.stream.Collectors;

/**
* 数字人基础管理 业务处理
@@ -382,6 +386,33 @@ public class DmDigitalmanController extends BaseController<DmDigitalmanQuery, Dm
return R.fail("请检查请求参数");
}


@Autowired
DmManDeviceServiceImpl dmManDeviceService;
@GetMapping("/api/mansInfo")
@Master
public R<JSONObject> mansInfo() {

List<DmManDeviceDto> dtos = dmManDeviceService.selectListScope(new DmManDeviceQuery());
List<DmManDeviceDto> dtos2 = dtos.stream().filter(dto -> StringUtils.isNotEmpty(dto.getDeviceId())).collect(Collectors.toList());;
System.err.println(dtos2.size());
Long serviceTimeCount = 0L;
//当前时间和activateTime时间的差值,activateTime类型是Date,差值返回的单位是小时
for (DmManDeviceDto dto : dtos2) {
serviceTimeCount += (System.currentTimeMillis() - dto.getActivateTime().getTime())/3600000;
}

JSONObject json = new JSONObject();
json.put("manCount",dtos2.size());
json.put("serviceTimeCount",serviceTimeCount);
System.err.println(json.toJSONString());
return R.ok(json);
}





@GetMapping("/api/devInfo/{devId}")
public R<DmDigitalmanExtPo> devInfo(@PathVariable(required = true) String devId) {
if (StringUtils.isNotEmpty(devId)){


Loading…
取消
儲存