| @@ -1,6 +1,6 @@ | |||
| package com.xueyi.nlt.nlt.controller; | |||
| import co.elastic.clients.elasticsearch.ElasticsearchClient; | |||
| import co.elastic.clients.elasticsearch._types.query_dsl.MatchAllQuery; | |||
| import co.elastic.clients.elasticsearch._types.query_dsl.MatchQuery; | |||
| import co.elastic.clients.elasticsearch.core.SearchResponse; | |||
| import co.elastic.clients.elasticsearch.core.search.Hit; | |||
| @@ -10,8 +10,8 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils; | |||
| import com.xueyi.common.cache.utils.SourceUtil; | |||
| import com.xueyi.common.core.constant.basic.SecurityConstants; | |||
| import com.xueyi.common.core.constant.digitalman.MessageConstants; | |||
| import com.xueyi.common.core.constant.digitalman.SkillConstants.SkillType; | |||
| import com.xueyi.common.core.context.SecurityContextHolder; | |||
| import com.xueyi.common.core.utils.core.ListUtil; | |||
| 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; | |||
| @@ -20,10 +20,14 @@ import com.xueyi.common.log.annotation.Log; | |||
| import com.xueyi.common.log.enums.BusinessType; | |||
| import com.xueyi.common.security.annotation.Logical; | |||
| import com.xueyi.common.security.annotation.RequiresPermissions; | |||
| import com.xueyi.common.security.utils.SecurityUtils; | |||
| import com.xueyi.common.web.entity.controller.BaseController; | |||
| import com.xueyi.nlt.api.netty.domain.vo.DmWebSocketMessageVo; | |||
| import com.xueyi.nlt.api.nlt.domain.vo.*; | |||
| import com.xueyi.nlt.api.nlt.domain.vo.CoversationSessionVo; | |||
| import com.xueyi.nlt.api.nlt.domain.vo.DmIntentVo; | |||
| import com.xueyi.nlt.api.nlt.domain.vo.DmLandingLlmVo; | |||
| import com.xueyi.nlt.api.nlt.domain.vo.DmRecognitionVo; | |||
| import com.xueyi.nlt.api.nlt.domain.vo.KnowledgeVo; | |||
| import com.xueyi.nlt.api.nlt.domain.vo.TaskKnowledgeVo; | |||
| import com.xueyi.nlt.api.nlt.feign.RemoteIntentService; | |||
| import com.xueyi.nlt.api.nlt.feign.RemoteLandingLlmService; | |||
| import com.xueyi.nlt.api.nlt.feign.RemoteQAService; | |||
| @@ -46,29 +50,32 @@ 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.organize.feign.RemoteEnterpriseService; | |||
| import com.xueyi.tenant.api.tenant.domain.dto.TeTenantDto; | |||
| import com.xueyi.tenant.api.tenant.feign.RemoteTenantService; | |||
| import org.apache.commons.lang.time.DateUtils; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.data.redis.core.RedisTemplate; | |||
| import org.springframework.data.redis.core.StringRedisTemplate; | |||
| import org.springframework.validation.annotation.Validated; | |||
| import org.springframework.web.bind.annotation.*; | |||
| import com.xueyi.common.core.constant.digitalman.SkillConstants.SkillType; | |||
| import org.springframework.web.bind.annotation.DeleteMapping; | |||
| import org.springframework.web.bind.annotation.GetMapping; | |||
| import org.springframework.web.bind.annotation.PathVariable; | |||
| import org.springframework.web.bind.annotation.PostMapping; | |||
| import org.springframework.web.bind.annotation.PutMapping; | |||
| import org.springframework.web.bind.annotation.RequestBody; | |||
| import org.springframework.web.bind.annotation.RequestMapping; | |||
| import org.springframework.web.bind.annotation.ResponseBody; | |||
| import org.springframework.web.bind.annotation.RestController; | |||
| import java.io.IOException; | |||
| import java.io.Serializable; | |||
| import java.text.DateFormat; | |||
| import java.text.SimpleDateFormat; | |||
| import java.util.*; | |||
| import java.time.Instant; | |||
| import java.time.LocalDateTime; | |||
| import java.time.ZoneId; | |||
| import java.util.Arrays; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| import java.util.regex.Matcher; | |||
| import java.util.regex.Pattern; | |||
| import java.util.concurrent.TimeUnit; | |||
| import java.util.stream.Collectors; | |||
| import static com.xueyi.common.core.constant.digitalman.MessageConstants.SYS_DICT_DATA_SPLITED; | |||
| @@ -145,7 +152,6 @@ public class DmIntentController extends BaseController<DmIntentQuery, DmIntentDt | |||
| public AjaxResult conversationApi(@RequestBody DmIntentVo intent) { | |||
| log.info("对话详情:{}", intent.toString()); | |||
| TerminalSecurityContextHolder.setOperatorId(String.valueOf(intent.getOperator())); | |||
| log.info("交互对象:{}", intent.toString()); | |||
| redisTemplate.opsForValue().increment("dashboard:server", 1); | |||
| // 获取今天日期,并格式化成yyyy-MM-dd | |||
| SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |||
| @@ -474,6 +480,7 @@ public class DmIntentController extends BaseController<DmIntentQuery, DmIntentDt | |||
| // 从列表中获取知识库任务 | |||
| TaskKnowledgeVo vo = (TaskKnowledgeVo) redisTemplate2.opsForList().leftPop("group:task"); | |||
| log.info("从缓存中获取对象:{}",vo.toString()); | |||
| if (vo == null) { | |||
| return R.ok(null,"没有任务"); | |||
| } | |||
| @@ -3,6 +3,7 @@ package com.xueyi.system.digitalmans.controller; | |||
| import com.alibaba.fastjson2.JSONObject; | |||
| import com.baomidou.mybatisplus.core.toolkit.StringUtils; | |||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||
| import com.xueyi.common.cache.utils.DictUtil; | |||
| import com.xueyi.common.core.constant.basic.BaseConstants; | |||
| import com.xueyi.common.core.constant.basic.SecurityConstants; | |||
| import com.xueyi.common.core.constant.basic.SqlConstants; | |||
| @@ -20,12 +21,15 @@ import com.xueyi.common.web.utils.DateUtils; | |||
| import com.xueyi.message.api.transfer.feign.RemoteTransferService; | |||
| import com.xueyi.system.api.device.domain.vo.DeviceTenantSourceMergeVo; | |||
| import com.xueyi.system.api.device.feign.RemoteDeviceTenantMergeService; | |||
| import com.xueyi.system.api.dict.domain.dto.SysDictDataDto; | |||
| import com.xueyi.system.api.digitalmans.domain.dto.DmDigitalmanWorktimeDto; | |||
| import com.xueyi.system.api.digitalmans.domain.dto.DmManDeviceDto; | |||
| import com.xueyi.system.api.digitalmans.domain.dto.DmSyncDigitalmanDto; | |||
| import com.xueyi.system.api.digitalmans.domain.po.DmDigitalmanExtPo; | |||
| import com.xueyi.system.api.digitalmans.domain.po.DmManDevicePo; | |||
| import com.xueyi.system.api.digitalmans.feign.RemoteDigitalmanService; | |||
| import com.xueyi.system.api.sms.domain.vo.DingdingReqEntity; | |||
| import com.xueyi.system.api.sms.feign.RemoteDingdingService; | |||
| import com.xueyi.system.device.service.impl.DmDeviceTenantMergeServiceImpl; | |||
| import com.xueyi.system.digitalmans.domain.dto.DmDigitalmanDto; | |||
| import com.xueyi.system.digitalmans.domain.dto.DmDigitalmanExtDto; | |||
| @@ -48,6 +52,7 @@ import com.xueyi.system.emcs.service.BaseRedisListDataCache; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.beans.factory.annotation.Value; | |||
| import org.springframework.data.redis.core.RedisTemplate; | |||
| import org.springframework.validation.annotation.Validated; | |||
| import org.springframework.web.bind.annotation.DeleteMapping; | |||
| @@ -63,7 +68,10 @@ import org.springframework.web.bind.annotation.RestController; | |||
| import java.io.Serializable; | |||
| import java.text.ParseException; | |||
| import java.time.Duration; | |||
| import java.time.LocalDateTime; | |||
| import java.time.format.DateTimeFormatter; | |||
| import java.util.List; | |||
| import java.util.concurrent.TimeUnit; | |||
| /** | |||
| * 数字人基础管理 业务处理 | |||
| @@ -122,6 +130,15 @@ public class DmDigitalmanController extends BaseController<DmDigitalmanQuery, Dm | |||
| @Autowired | |||
| private RedisTemplate<String, Serializable> redisTemplate; | |||
| @Autowired | |||
| RemoteDingdingService remoteDingdingService; | |||
| /** | |||
| * dingding连接token | |||
| */ | |||
| @Value("${notification.dingding.access-token}") | |||
| private String token; | |||
| /** 定义节点名称 */ | |||
| @Override | |||
| protected String getNodeName() { | |||
| @@ -338,6 +355,7 @@ public class DmDigitalmanController extends BaseController<DmDigitalmanQuery, Dm | |||
| Integer uploadType = uploadObj.getInteger("upload_type"); | |||
| DmExceptionLogDto exceptionLogDto = new DmExceptionLogDto(); | |||
| exceptionLogDto.setType(type); | |||
| exceptionLogDto.setLevel(level); | |||
| @@ -370,6 +388,31 @@ public class DmDigitalmanController extends BaseController<DmDigitalmanQuery, Dm | |||
| } catch (ParseException e) { | |||
| throw new RuntimeException(e); | |||
| } | |||
| //判断上传异常日志类型是否为字典中类型,符合则使用钉钉通知 | |||
| List<SysDictDataDto> dictDataDtos = DictUtil.getDictCache("monitoring_alarm_type"); | |||
| if (type != null ) { | |||
| for (SysDictDataDto dictDataDto : dictDataDtos) { | |||
| if (StringUtils.equals(type,dictDataDto.getValue())) { | |||
| String dingTalkTimestamp = (String) redisTemplate.opsForValue().get("exceptionLog:dingTalk:" + devId + ":" + type); | |||
| if (!redisTemplate.hasKey("exceptionLog:dingTalk:" + devId + ":" + type)) { | |||
| //设置当前时间格式为yyyy-MM-dd HH:mm:ss | |||
| LocalDateTime localDateTime = LocalDateTime.now(); | |||
| DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); | |||
| String format = localDateTime.format(dateTimeFormatter); | |||
| DingdingReqEntity entity = new DingdingReqEntity(); | |||
| entity.setMsgtype("text"); | |||
| com.alibaba.fastjson.JSONObject jo = new com.alibaba.fastjson.JSONObject(); | |||
| jo.put("content", "【客户】:" + devicePo.getTenantName() + "\n【设备号】:" + devId + "\n【类型】:" + dictDataDto.getLabel() + "\n【发生时间】:" + format + "\n【报警等级】"+ level +"\n请尽快排查原因,并在运维端解除预警状态。"); | |||
| entity.setText(jo); | |||
| remoteDingdingService.send(token, entity); | |||
| // 更新缓存 | |||
| redisTemplate.opsForValue().set("exceptionLog:dingTalk:" + devId + ":" + type, System.currentTimeMillis() + "",10, TimeUnit.MINUTES); | |||
| } | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -19,6 +19,7 @@ import com.xueyi.system.emcs.service.IDmExceptionLogService; | |||
| import com.xueyi.system.emcs.service.LogMqttMessageHandler; | |||
| import com.xueyi.system.emcs.service.impl.DmExceptionLogServiceImpl; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.beans.factory.annotation.Value; | |||
| import org.springframework.validation.annotation.Validated; | |||
| import org.springframework.web.bind.annotation.DeleteMapping; | |||
| import org.springframework.web.bind.annotation.GetMapping; | |||
| @@ -54,6 +55,9 @@ public class DmExceptionLogController extends BaseController<DmExceptionLogQuery | |||
| private final static String HEART_MQTT_PREFIX = "digital-man"; | |||
| private final static String[] CHART_TYPES = new String[]{"network", "cpu", "memory"}; | |||
| @Value("${spring.profiles.active}") | |||
| private String activeProfile; | |||
| @Autowired | |||
| private MqttTemplate mqttTemplate; | |||
| @@ -299,7 +303,7 @@ public class DmExceptionLogController extends BaseController<DmExceptionLogQuery | |||
| JSONObject jsonObject = new JSONObject(); | |||
| jsonObject.put("devId", devId); | |||
| mqttTemplate.sendToMqtt("/prod/digital_man"+"/"+devId+"/log_upload", jsonObject.toJSONString()); | |||
| mqttTemplate.sendToMqtt("/" + activeProfile + "/digital_man"+"/"+devId+"/log_upload", jsonObject.toJSONString()); | |||
| return success("操作成功"); | |||
| } | |||
| @@ -145,7 +145,7 @@ public class DmResourcesController extends BaseController<DmResourcesQuery, DmRe | |||
| } | |||
| private static final String PARAM_RESOURCE_ID = "resource_id"; | |||
| private static final String PARAM_RESOURCE_ID = "resourceId"; | |||
| private static final String PARAM_URL = "url"; | |||
| private static final String PARAM_TYPE = "type"; | |||