@@ -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); | |||
} |
@@ -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(); | |||
} |
@@ -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"); | |||
} | |||
} |
@@ -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); | |||
} | |||
} | |||
@@ -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) { | |||
@@ -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)){ | |||