diff --git a/renren-admin/src/main/java/io/renren/modules/fuse/controller/FuseController.java b/renren-admin/src/main/java/io/renren/modules/fuse/controller/FuseController.java index d05ee9ca..3da55e70 100644 --- a/renren-admin/src/main/java/io/renren/modules/fuse/controller/FuseController.java +++ b/renren-admin/src/main/java/io/renren/modules/fuse/controller/FuseController.java @@ -62,13 +62,6 @@ public class FuseController { return new Result().ok(tbFuseService.getFuseById(id)); } - @GetMapping("getDataResource") - @ApiOperation("获取资源数据") - @LogOperation("获取资源数据") - public Result> getDataResource() { - return new Result().ok(tbFuseService.getDataResource()); - } - @PostMapping @ApiOperation("保存") @LogOperation("保存") diff --git a/renren-admin/src/main/java/io/renren/modules/fuse/service/TbFuseService.java b/renren-admin/src/main/java/io/renren/modules/fuse/service/TbFuseService.java index b296b7ef..f50ea326 100644 --- a/renren-admin/src/main/java/io/renren/modules/fuse/service/TbFuseService.java +++ b/renren-admin/src/main/java/io/renren/modules/fuse/service/TbFuseService.java @@ -16,8 +16,6 @@ public interface TbFuseService extends CrudService { TbFuseDTO getFuseById(Long id); - List getDataResource(); - Integer addFuse(TbFuseDTO dto); Integer updateFuse(TbFuseDTO dto); diff --git a/renren-admin/src/main/java/io/renren/modules/fuse/service/impl/TbFuseServiceImpl.java b/renren-admin/src/main/java/io/renren/modules/fuse/service/impl/TbFuseServiceImpl.java index 39d39908..407db5dd 100644 --- a/renren-admin/src/main/java/io/renren/modules/fuse/service/impl/TbFuseServiceImpl.java +++ b/renren-admin/src/main/java/io/renren/modules/fuse/service/impl/TbFuseServiceImpl.java @@ -33,7 +33,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.swing.text.html.Option; import java.util.*; +import java.util.concurrent.*; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -46,6 +50,10 @@ public class TbFuseServiceImpl extends CrudServiceImpl getDataResource() { - int pageNum=0; - int pageSize=getDataResourceCount(); - List result = new ArrayList<>(); - Optional factory = DataResourceFactory.build(); - if (factory.isPresent()) { - GetDataResourceListDto dto = new GetDataResourceListDto().setPageNum(pageNum).setPageSize(pageSize); - Map dataMap = (Map) factory.get().getDataResource(dto); - if (dataMap != null) { - List> list = (List>) dataMap.get("data"); - list.forEach(map -> result.add(new HashMap() {{ - if (map.containsKey("zyname")) { - put("id", map.get("guid")); - put("name", map.get("zyname")); - } else { - put("id", map.get("serviceId")); - put("name", map.get("serviceName")); + private Map> getDataResource() { + Map result=new ConcurrentHashMap(); + final int pageSize = CPU_NUM * 10; + AtomicInteger pageIndex = new AtomicInteger(1); + AtomicBoolean end = new AtomicBoolean(true); + List completableFutures=new CopyOnWriteArrayList<>(); + while(end.get()){ + completableFutures.add(CompletableFuture.supplyAsync(()->{ + Optional factory = DataResourceFactory.build(); + if (factory.isPresent()) { + GetDataResourceListDto dto=new GetDataResourceListDto().setPageNum(pageIndex.get()).setPageSize(pageSize); + Map dataResource = (Map) factory.get().getDataResource(dto); + if(!dataResource.isEmpty()){ + List> list = (List>) dataResource.get("data"); + pageIndex.getAndIncrement(); + return new HashMap(){{put( list.stream().map(map->{ + if (map.containsKey("zyname")) { + return map.get("guid"); + } else { + return map.get("serviceId"); + } + }), list);}}; } - }})); - } + } + return null; + }).thenAcceptAsync(map->{ + if(map != null){ + result.putAll(map); + } + })); } return result; } - private int getDataResourceCount() { - int count=30; - Optional factory = DataResourceFactory.build(); - if (factory.isPresent()) { - GetDataResourceListDto dto = new GetDataResourceListDto().setPageNum(0).setPageSize(30); - Map dataMap = (Map) factory.get().getDataResource(dto); - if (dataMap != null) { - count=Integer.parseInt(dataMap.get("rows").toString()); - } - } - return count; - } - private List getFuseResourceByFuseId(Long fuseId) { - List dataResourceMap = new ArrayList<>(); + Map dataResourceMap = new HashMap(); List result = new ArrayList(); QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("fuse_id", fuseId); List list = fuseResourceDao.selectList(wrapper); Map> resourceMap = list.stream().filter(index -> index.getType() != null).collect(Collectors.groupingBy(TbFuseResourceEntity::getType)); if (resourceMap.containsKey("数据资源")) { - dataResourceMap.addAll(getDataResource()); + dataResourceMap.putAll(getDataResource()); } resourceMap.forEach((type, value) -> { if ("组件服务".equals(type)) { @@ -215,7 +220,7 @@ public class TbFuseServiceImpl extends CrudServiceImpl { TbFuseResourceDTO dto = new TbFuseResourceDTO(); BeanUtils.copyProperties(attr, dto); - dto.setResource(dataResourceMap.stream().filter(it->it.get("id").equals(dto.getResourceId())).findFirst()); + dto.setResource(dataResourceMap.get(dto.getResourceId())); return dto; }).collect(Collectors.toList())); } else if ("基础设施".equals(type)) { diff --git a/renren-admin/src/main/java/io/renren/modules/gateway/controller/MonitorControllerV2.java b/renren-admin/src/main/java/io/renren/modules/gateway/controller/MonitorControllerV2.java index 3614dd09..2ae99c03 100644 --- a/renren-admin/src/main/java/io/renren/modules/gateway/controller/MonitorControllerV2.java +++ b/renren-admin/src/main/java/io/renren/modules/gateway/controller/MonitorControllerV2.java @@ -9,6 +9,7 @@ import io.renren.modules.gateway.dao.ApiCountHistoryDao; import io.renren.modules.gateway.entity.ApiCountHistoryEntity; import io.renren.modules.gateway.service.MonitorServiceV2; import io.renren.modules.monitor.entity.Result; +import io.renren.modules.monitor.service.MonitorService; import io.renren.modules.notice.dto.SysNoticeDTO; import io.renren.modules.notice.service.impl.SysNoticeServiceImpl; import io.renren.modules.resource.dao.AttrDao; @@ -80,6 +81,8 @@ public class MonitorControllerV2 { @Autowired private SysNoticeServiceImpl sysNoticeService; + @Autowired + private MonitorService monitorService; public List queryMetricCount(String queryFormat, Long start, Long end, String metricElement, int limit) throws InterruptedException, ExecutionException, TimeoutException { String url = gatewayDomain + "/juapi/metrics/api/v1/query?query={query}&time={time}"; @@ -332,11 +335,20 @@ public class MonitorControllerV2 { } @GetMapping("/sendMsg") - @ApiOperation("查询总api调用总量") public void sendMsg(){ SysNoticeDTO sysNoticeDTO = new SysNoticeDTO(); sysNoticeDTO.setTitle("请审批yyyy的流程申请"); sysNoticeService.sendToYaweiUser(sysNoticeDTO, Lists.newArrayList(1513432847327199233L)); } + @GetMapping("/expireVideoToken") + public void expireVideoToken(){ + monitorService.expireToken(); + } + + @GetMapping("/getVideoToken") + public String getVideoToken(String code) throws IOException { + return monitorService.fileCode(code); + } + } diff --git a/renren-admin/src/main/java/io/renren/modules/monitor/service/MonitorService.java b/renren-admin/src/main/java/io/renren/modules/monitor/service/MonitorService.java index e5d9033f..2a1e90de 100644 --- a/renren-admin/src/main/java/io/renren/modules/monitor/service/MonitorService.java +++ b/renren-admin/src/main/java/io/renren/modules/monitor/service/MonitorService.java @@ -41,6 +41,7 @@ import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; +import java.lang.ref.WeakReference; import java.nio.charset.Charset; import java.time.LocalDate; import java.time.LocalDateTime; @@ -118,6 +119,8 @@ public class MonitorService { static int keepaliveCount = 16; + private WeakReference weakTimer; + @PostConstruct public CompletableFuture init() { // 不要阻塞程序启动!!屮 @@ -133,6 +136,8 @@ public class MonitorService { public String monitorLogin() { + + String loginUrl = monitorDomain + "/videoService/accounts/authorize"; HashMap loginParam = new HashMap<>(); loginParam.put("userName", userName); @@ -182,6 +187,8 @@ public class MonitorService { MonitorService thatMonitorService = this; + weakTimer.get().cancel(); + //会话保活 Timer timer = new Timer("monitor-capture-keepalive"); timer.scheduleAtFixedRate(new TimerTask() { @@ -215,8 +222,13 @@ public class MonitorService { } }, 0, duration * 1000); + + weakTimer = new WeakReference(timer); + } + + return token; } @@ -772,10 +784,22 @@ public class MonitorService { String url = monitorDomain + "/videoService/realmonitor/uri?scheme=HLS&channelId=" + code; HttpHeaders headers = new HttpHeaders(); headers.add("X-Subject-Token", token); - ResponseEntity forEntity = restTemplate.exchange(url, HttpMethod.GET, new HttpEntity(headers), HashMap.class); - HashMap body = forEntity.getBody(); - String file = (String) body.get("url"); - return file; + int tryCount = 3; + while (tryCount-- > 0){ + try { + ResponseEntity forEntity = restTemplate.exchange(url, HttpMethod.GET, new HttpEntity(headers), HashMap.class); + HashMap body = forEntity.getBody(); + String file = (String) body.get("url"); + return file; + }catch (HttpClientErrorException.Unauthorized e){ + log.error("token失效,重新登录"); + init(); + } + + } + + return null; + } public void videoService(String parentId, String path) throws InterruptedException { @@ -1515,6 +1539,10 @@ public class MonitorService { } return childs; } + + public void expireToken(){ + token = "expire"; + } } diff --git a/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/ApplyDistrictListener.java b/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/ApplyDistrictListener.java index 2f83b64b..22dc606d 100644 --- a/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/ApplyDistrictListener.java +++ b/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/ApplyDistrictListener.java @@ -3,6 +3,8 @@ package io.renren.modules.processForm.listener.v3; import com.alibaba.fastjson.JSON; import com.google.common.collect.ImmutableMap; import io.renren.common.annotation.ActivitiNoticeOperation; +import io.renren.modules.activiti.service.ActTaskService; +import io.renren.modules.processForm.dto.TAbilityApplicationDTO; import io.renren.modules.sys.dao.SysUserDao; import io.renren.modules.sys.dto.SysDeptDTO; import io.renren.modules.sys.dto.SysRoleDTO; @@ -17,6 +19,7 @@ import org.activiti.engine.TaskService; import org.activiti.engine.delegate.*; import org.activiti.engine.delegate.event.ActivitiEvent; import org.activiti.engine.delegate.event.ActivitiEventListener; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -98,6 +101,7 @@ public class ApplyDistrictListener implements TaskListener, ExecutionListener, A taskService.setAssignee(delegateTask.getId(), defaultAssigneeRoleId); assignee = defaultAssigneeRoleId; } + mpComplete(delegateTask, assignee); logger.error("分配的用户id为:{}", assignee); } else { try { @@ -108,6 +112,17 @@ public class ApplyDistrictListener implements TaskListener, ExecutionListener, A } } + private void mpComplete(DelegateTask delegateTask, final String assignee) { // 处理审批人为申请人 + if (StringUtils.isNotEmpty(assignee) + && StringUtils.isNotEmpty(delegateTask.getVariable("creator", String.class)) + && delegateTask.getVariable("creator", String.class).equals(assignee)) { + taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), "审批人为发起人,默认通过"); + taskService.setVariable(delegateTask.getId(), ActTaskService.Task_HANDLE_STATE, ActTaskService.Task_HANDLE_STATE_AGREE); + taskService.setVariable(delegateTask.getId(), "backToFirst", Boolean.FALSE); + taskService.complete(delegateTask.getId(), delegateTask.getVariables()); + } + } + @Override public void notify(DelegateExecution delegateExecution) throws Exception { diff --git a/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/CityListener.java b/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/CityListener.java index 8d993161..019b35cc 100644 --- a/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/CityListener.java +++ b/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/CityListener.java @@ -3,6 +3,7 @@ package io.renren.modules.processForm.listener.v3; import com.alibaba.fastjson.JSON; import com.google.common.collect.ImmutableMap; import io.renren.common.annotation.ActivitiNoticeOperation; +import io.renren.modules.activiti.service.ActTaskService; import io.renren.modules.sys.dao.SysUserDao; import io.renren.modules.sys.dto.SysDeptDTO; import io.renren.modules.sys.dto.SysRoleDTO; @@ -17,6 +18,7 @@ import org.activiti.engine.TaskService; import org.activiti.engine.delegate.*; import org.activiti.engine.delegate.event.ActivitiEvent; import org.activiti.engine.delegate.event.ActivitiEventListener; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -99,6 +101,7 @@ public class CityListener implements TaskListener, ExecutionListener, ActivitiEv taskService.setAssignee(delegateTask.getId(), defaultAssigneeRoleId); assignee = defaultAssigneeRoleId; } + mpComplete(delegateTask, assignee); logger.error("分配的用户id为:{}", assignee); } else { try { @@ -109,6 +112,17 @@ public class CityListener implements TaskListener, ExecutionListener, ActivitiEv } } + private void mpComplete(DelegateTask delegateTask, final String assignee) { // 处理审批人为申请人 + if (StringUtils.isNotEmpty(assignee) + && StringUtils.isNotEmpty(delegateTask.getVariable("creator", String.class)) + && delegateTask.getVariable("creator", String.class).equals(assignee)) { + taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), "审批人为发起人,默认通过"); + taskService.setVariable(delegateTask.getId(), ActTaskService.Task_HANDLE_STATE, ActTaskService.Task_HANDLE_STATE_AGREE); + taskService.setVariable(delegateTask.getId(), "backToFirst", Boolean.FALSE); + taskService.complete(delegateTask.getId(), delegateTask.getVariables()); + } + } + @Override public void notify(DelegateExecution delegateExecution) throws Exception { diff --git a/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/OwnerDistrictListener.java b/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/OwnerDistrictListener.java index f3d2f24f..ee6abdf1 100644 --- a/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/OwnerDistrictListener.java +++ b/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/OwnerDistrictListener.java @@ -3,6 +3,7 @@ package io.renren.modules.processForm.listener.v3; import com.alibaba.fastjson.JSON; import com.google.common.collect.ImmutableMap; import io.renren.common.annotation.ActivitiNoticeOperation; +import io.renren.modules.activiti.service.ActTaskService; import io.renren.modules.sys.dao.SysUserDao; import io.renren.modules.sys.dto.SysDeptDTO; import io.renren.modules.sys.dto.SysRoleDTO; @@ -16,6 +17,7 @@ import org.activiti.engine.TaskService; import org.activiti.engine.delegate.*; import org.activiti.engine.delegate.event.ActivitiEvent; import org.activiti.engine.delegate.event.ActivitiEventListener; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -95,6 +97,7 @@ public class OwnerDistrictListener implements TaskListener, ExecutionListener, A taskService.setAssignee(delegateTask.getId(), defaultAssigneeRoleId); assignee = defaultAssigneeRoleId; } + mpComplete(delegateTask, assignee); logger.error("分配的用户id为:{}", assignee); } else { try { @@ -104,6 +107,17 @@ public class OwnerDistrictListener implements TaskListener, ExecutionListener, A } } } + private void mpComplete(DelegateTask delegateTask, final String assignee) { // 处理审批人为申请人 + if (StringUtils.isNotEmpty(assignee) + && StringUtils.isNotEmpty(delegateTask.getVariable("creator", String.class)) + && delegateTask.getVariable("creator", String.class).equals(assignee)) { + taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), "审批人为发起人,默认通过"); + taskService.setVariable(delegateTask.getId(), ActTaskService.Task_HANDLE_STATE, ActTaskService.Task_HANDLE_STATE_AGREE); + taskService.setVariable(delegateTask.getId(), "backToFirst", Boolean.FALSE); + taskService.complete(delegateTask.getId(), delegateTask.getVariables()); + } + } + @Override public void notify(DelegateExecution delegateExecution) throws Exception {