Merge branch 'master' of http://221.0.232.152:9393/ability-center/share-platform
* 'master' of http://221.0.232.152:9393/ability-center/share-platform: (49 commits) 标识所有未读资源为已读 排查加日志 屮 。。。 通知的历史数据 来源处理 通知来源类型 基础设施 用户表加字段 云图数据资源总况 1、修改获取金宏数据库中用户名和地区信息,将 JhUserTask和JhDeptTask删除,改为在SysUserController中分别通过/getDeptInfoFromJH和/getUserInfoFromJH手动调用。 。。。 1、将金宏数据库中用户和地区信息整合进来,并做成任务调度 JhUserTask和JhDeptTask,需要通过前端配置一下才能启动。 基础设施统计接口 。。。 ... 获取预览地址接口 视频预览 工厂模式下各区域的实现 .... ... 现有区域配置文件 加入 ... # Conflicts: # renren-admin/src/main/java/io/renren/modules/resource/controller/ResourceController.java
This commit is contained in:
commit
b1e489bc27
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : 15.2.21.238
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 50732
|
||||
Source Host : 15.2.21.238:3310
|
||||
Source Schema : share_platform
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 50732
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 14/06/2022 15:48:36
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of act_re_model
|
||||
-- ----------------------------
|
||||
INSERT INTO `act_re_model` VALUES ('1', 51, '能力申请', 'abilityprocess', NULL, '2022-04-13 18:36:31.681', '2022-05-30 10:58:37.536', 1, '{\"name\":\"能力申请\",\"description\":\"能力申请表单\",\"revision\":1}', NULL, '2', '3', '');
|
||||
INSERT INTO `act_re_model` VALUES ('252725', 32, '能力资源上架', 'resourcemountapply', NULL, '2022-04-24 14:08:13.296', '2022-05-30 10:50:31.746', 1, '{\"name\":\"能力资源上架\",\"description\":\"能力资源上架审批流程\",\"revision\":1}', NULL, '252726', '252727', '');
|
||||
INSERT INTO `act_re_model` VALUES ('277501', 20, '能力需求申请', 'abilitydemandapply', NULL, '2022-04-25 10:49:42.466', '2022-06-02 10:53:36.595', 1, '{\"name\":\"能力需求申请\",\"description\":\"能力需求申请\",\"revision\":1}', NULL, '277502', '277503', '');
|
||||
INSERT INTO `act_re_model` VALUES ('485001', 18, '能力资源下架', 'resourcundercarriageapply', NULL, '2022-05-10 10:23:05.802', '2022-05-30 10:48:13.801', 1, '{\"name\":\"能力资源下架\",\"description\":\"能力资源下架\",\"revision\":1}', NULL, '485002', '485003', '');
|
||||
INSERT INTO `act_re_model` VALUES ('5019', 8, '转正申请', 'correctionprocess', NULL, '2022-04-14 17:44:34.122', '2022-04-14 20:27:14.548', 1, '{\"name\":\"转正申请\",\"description\":\"\",\"revision\":1}', NULL, '5020', '5021', '');
|
|
@ -0,0 +1,2 @@
|
|||
ALTER TABLE `share_platform`.`t_resource_mount_apply` ADD COLUMN `resource_dto` json NULL COMMENT '挂载资源对象';
|
||||
UPDATE `share_platform`.`t_resource_mount_apply` SET resource_dto = parameter_content;
|
|
@ -0,0 +1,3 @@
|
|||
ALTER TABLE `share_platform`.`tb_data_attr`
|
||||
ADD INDEX `resource_id`(`data_resource_id`),
|
||||
ADD FULLTEXT INDEX `attr_value`(`attr_type`, `attr_value`);
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE `share_platform`.`tb_data_resource` ADD COLUMN `info_list` json NULL COMMENT '属性信息';
|
|
@ -0,0 +1,2 @@
|
|||
ALTER TABLE `share_platform`.`tb_work_dynamics`
|
||||
MODIFY COLUMN `note1` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '摘要';
|
|
@ -302,7 +302,9 @@
|
|||
<directory>src/main/resources</directory>
|
||||
<excludes>
|
||||
<!-- 排除生产环境配置 -->
|
||||
<!-- <exclude>application-prod.yml</exclude>-->
|
||||
<exclude>application-prod.yml</exclude>
|
||||
<!-- 排除flyway管理的sql -->
|
||||
<!-- <exclude>db/*.sql</exclude>-->
|
||||
</excludes>
|
||||
</resource>
|
||||
<resource>
|
||||
|
|
|
@ -172,6 +172,7 @@ public class ActivitiNoticeAspect {
|
|||
dto.setSenderDate(new Date());
|
||||
dto.setCreator(sysUserService.getByUsername("admin").getId());
|
||||
dto.setCreateDate(new Date());
|
||||
dto.setFrom("通知");
|
||||
sysNoticeService.save(dto);
|
||||
}).thenRunAsync(() -> {
|
||||
// 防止重放
|
||||
|
@ -319,6 +320,7 @@ public class ActivitiNoticeAspect {
|
|||
String finalCreator = creator;
|
||||
CompletableFuture.runAsync(() -> { // 发起人
|
||||
SysUserDTO assignee = sysUserService.get(Long.valueOf(delegateTask.getAssignee()));
|
||||
logger.error("审核人:" + assignee.getId());
|
||||
String content = "【通知】您发起的流程 " + activitiNoticeOperation.process() + " 当前审核节点为:" + activitiNoticeOperation.value() + ";当前审核人为:\"" + assignee.getDeptName() + "\"审核负责人\"" + assignee.getRealName() + "\"";
|
||||
SysNoticeDTO dto = new SysNoticeDTO();
|
||||
dto.setType(2);
|
||||
|
|
|
@ -61,15 +61,7 @@ public class CensusController {
|
|||
List<Map<String, Object>> dbAmount = resourceService.getAmountGroupByType();
|
||||
List<String> temp = dbAmount.stream().map(index -> index.get("type").toString()).collect(Collectors.toList());
|
||||
Arrays.stream(censusTypes).filter(index -> !temp.contains(index)).forEach(index -> { // 数据库内不存在的资源类型
|
||||
if (index.equals("知识库")) {
|
||||
Map<String, Object> nullMap = new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", 14);
|
||||
put("type", "知识库");
|
||||
}
|
||||
};
|
||||
dbAmount.add(nullMap);
|
||||
} else if (index.equals("数据资源")) {
|
||||
if (index.equals("数据资源")) {
|
||||
Map<String, Object> nullMap = new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", 10413);
|
||||
|
|
|
@ -0,0 +1,542 @@
|
|||
package io.renren.common.controller;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import io.renren.common.annotation.LogOperation;
|
||||
import io.renren.common.constant.Constant;
|
||||
import io.renren.common.domain.Tsingtao_xhaProperties;
|
||||
import io.renren.common.utils.Result;
|
||||
import io.renren.modules.processForm.service.TAbilityApplicationService;
|
||||
import io.renren.modules.resource.service.ResourceService;
|
||||
import io.renren.modules.resourceBrowse.service.ResourceBrowseService;
|
||||
import io.renren.modules.sys.dto.SysDeptDTO;
|
||||
import io.renren.modules.sys.service.SysDeptService;
|
||||
import io.renren.modules.sys.service.SysUserService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
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.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
* 2022.6.19 版本
|
||||
*/
|
||||
@Api(tags = "全局统计中心v2")
|
||||
@RestController
|
||||
@RequestMapping("/census/center/v2")
|
||||
public class CensusControllerV2 {
|
||||
@Value("${project.place}")
|
||||
private Integer projectPlace;
|
||||
private static final Logger logger = LoggerFactory.getLogger(CensusControllerV2.class);
|
||||
|
||||
@Autowired
|
||||
private ResourceService resourceService;
|
||||
@Autowired
|
||||
private SysUserService sysUserService;
|
||||
@Autowired
|
||||
private TAbilityApplicationService tAbilityApplicationService;
|
||||
@Autowired
|
||||
private ResourceBrowseService resourceBrowseService;
|
||||
@Autowired
|
||||
private SysDeptService sysDeptService;
|
||||
|
||||
@Autowired
|
||||
private JdbcTemplate jdbcTemplate;
|
||||
@Autowired
|
||||
private Tsingtao_xhaProperties tsingtao_xhaProperties;
|
||||
|
||||
@Value("${census.type}")
|
||||
private String[] censusTypes; // 需要进行统计的资源类型
|
||||
|
||||
@GetMapping(value = "/whole_amount")
|
||||
@ApiOperation("平台概览")
|
||||
public Result<List<Map<String, Object>>> wholeAmount() {
|
||||
List<Map<String, Object>> result = new CopyOnWriteArrayList<>();
|
||||
|
||||
CompletableFuture<Void> userAmount = CompletableFuture.supplyAsync(() -> { // 获取平台用户总数
|
||||
return sysUserService.countAllUser();
|
||||
}).thenAccept(sum -> {
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", sum);
|
||||
put("type", "用户量");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
CompletableFuture<Void> pvAmount = CompletableFuture.supplyAsync(() -> { // 平台访问量
|
||||
return resourceService.countAllVisits();
|
||||
}).thenAccept(sum -> {
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", sum);
|
||||
put("type", "平台访问量");
|
||||
}
|
||||
});
|
||||
});
|
||||
CompletableFuture<Void> all = CompletableFuture.allOf(userAmount, pvAmount);
|
||||
all.join();
|
||||
result.sort(Comparator.comparing(x -> x.get("type").toString()));
|
||||
return new Result<List<Map<String, Object>>>().ok(result);
|
||||
}
|
||||
|
||||
@PostMapping("/trafficStatistics")
|
||||
@ApiOperation("浏览量统计")
|
||||
@LogOperation("浏览量统计")
|
||||
public Result trafficStatistics(@RequestBody JSONObject jsonObject) {
|
||||
HashMap<String, Object> resultMap = new HashMap<>();
|
||||
String startDate = jsonObject.getString("startDate");
|
||||
String endDate = jsonObject.getString("endDate");
|
||||
resultMap.put("browseAvg", resourceBrowseService.selectDayAvg());
|
||||
resultMap.put("browseMax", resourceBrowseService.selectDayMax());
|
||||
resultMap.put("browseDayList", resourceBrowseService.selectDayList(startDate, endDate));
|
||||
return new Result().ok(resultMap);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/applicationNum")
|
||||
@ApiOperation("应用资源数量统计")
|
||||
@LogOperation("应用资源数量统计")
|
||||
public Result<List<Map<String, Object>>> applicationNum() {
|
||||
List<Map<String, Object>> result = new CopyOnWriteArrayList<>();
|
||||
|
||||
CompletableFuture<Void> allApplicationAmount = CompletableFuture.supplyAsync(() -> { // 获取平台总应用数目
|
||||
return jdbcTemplate.queryForObject("SELECT COUNT(id) FROM tb_data_resource WHERE type ='应用资源';", Long.class);
|
||||
}).thenAccept(sum -> {
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", sum);
|
||||
put("type", "总应用数");
|
||||
}
|
||||
});
|
||||
});
|
||||
CompletableFuture<Void> buildingApplicationAmount = CompletableFuture.supplyAsync(() -> { // 获取平台建设中数目
|
||||
return jdbcTemplate.queryForObject("SELECT COUNT(DISTINCT data_resource_id) FROM tb_data_attr WHERE attr_type = '应用状态' AND attr_value = '建设中';", Long.class);
|
||||
}).thenAccept(sum -> {
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", sum);
|
||||
put("type", "建设中应用数");
|
||||
}
|
||||
});
|
||||
});
|
||||
CompletableFuture<Void> endApplicationAmount = CompletableFuture.supplyAsync(() -> { // 获取平台建设中数目
|
||||
return jdbcTemplate.queryForObject("SELECT COUNT(DISTINCT data_resource_id) FROM tb_data_attr WHERE attr_type = '应用状态' AND attr_value = '停用';", Long.class);
|
||||
}).thenAccept(sum -> {
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", sum);
|
||||
put("type", "停用应用数");
|
||||
}
|
||||
});
|
||||
});
|
||||
CompletableFuture<Void> all = CompletableFuture.allOf(allApplicationAmount, buildingApplicationAmount, endApplicationAmount);
|
||||
all.join();
|
||||
return new Result().ok(result);
|
||||
}
|
||||
|
||||
@GetMapping("/districtResourceRank")
|
||||
@ApiOperation("应用资源区县市排名")
|
||||
@LogOperation("应用资源区县市排名")
|
||||
public Result<List<Map<String, Object>>> districtResourceRank() {
|
||||
List<Map<String, Object>> result = resourceRank(3);
|
||||
return new Result().ok(result);
|
||||
}
|
||||
|
||||
@GetMapping("/cityResourceRank")
|
||||
@ApiOperation("应用资源委办局排名")
|
||||
@LogOperation("应用资源委办局排名")
|
||||
public Result<List<Map<String, Object>>> cityResourceRank() {
|
||||
List<Map<String, Object>> result = resourceRank(2);
|
||||
return new Result().ok(result);
|
||||
}
|
||||
|
||||
private List<Map<String, Object>> resourceRank(Integer type) {
|
||||
List<Map<String, Object>> result;
|
||||
List<Map<String, Object>> district = jdbcTemplate.queryForList("SELECT * FROM sys_dept WHERE type = " + type);
|
||||
List<Map<String, Long>> listMap =
|
||||
district.stream().map(index -> {
|
||||
Map<String, Long> re = new LinkedHashMap<>();
|
||||
String sql = String.format("SELECT COUNT(id) FROM tb_data_resource WHERE dept_id = %s AND type = '应用资源' AND del_flag = 0;", index.get("id").toString());
|
||||
logger.info(sql);
|
||||
Long count = jdbcTemplate.queryForObject(sql, Long.class);
|
||||
if (!"0".equals(index.get("pid").toString())) { // 有上级部门
|
||||
Optional<SysDeptDTO> sysDeptDTO =
|
||||
Optional.ofNullable(sysDeptService.get(Long.valueOf(index.get("pid").toString())));
|
||||
if (sysDeptDTO.isPresent() && sysDeptDTO.get().getType() != null && sysDeptDTO.get().getType() >= 2) {
|
||||
re.put(index.get("id").toString(), count);
|
||||
} else {
|
||||
re.put(index.get("pid").toString(), count);
|
||||
}
|
||||
} else {
|
||||
re.put(index.get("id").toString(), count);
|
||||
}
|
||||
return re;
|
||||
}).collect(Collectors.toList());
|
||||
Map<String, List<Map<String, Long>>> i =
|
||||
listMap.stream().collect(Collectors.groupingBy(m -> m.keySet().stream().findFirst().get()));
|
||||
result = i.keySet().stream().map(index -> {
|
||||
Map<String, Object> re = new LinkedHashMap<>();
|
||||
re.put("deptName", sysDeptService.get(Long.valueOf(index)).getName());
|
||||
re.put("count", i.get(index).stream().mapToLong(index_ -> index_.values().stream().mapToLong(count_ -> count_).sum()).sum());
|
||||
return re;
|
||||
}).collect(Collectors.toList());
|
||||
result.sort(Comparator.comparing(x -> {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
try {
|
||||
Map m = mapper.readValue(mapper.writeValueAsString(x), Map.class);
|
||||
return Long.valueOf(m.get("count").toString());
|
||||
} catch (JsonProcessingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
).reversed());
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/assemblerInfo")
|
||||
@ApiOperation("组件服务简况")
|
||||
@LogOperation("组件服务简况")
|
||||
public Result<List<Map<String, Object>>> assemblerInfo() {
|
||||
List<Map<String, Object>> result = new CopyOnWriteArrayList<>();
|
||||
CompletableFuture<Void> allAssemblyAmount = CompletableFuture.supplyAsync(() -> { // 获取平台总组件服务数目
|
||||
return jdbcTemplate.queryForObject("SELECT COUNT(id) FROM tb_data_resource WHERE type ='组件服务' AND del_flag = 0;", Long.class);
|
||||
}).thenAccept(sum -> {
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", sum);
|
||||
put("type", "上架总数");
|
||||
}
|
||||
});
|
||||
});
|
||||
CompletableFuture<Void> aiAssemblyAmount = CompletableFuture.supplyAsync(() -> { // 获取平台智能算法组件服务数目
|
||||
return jdbcTemplate.queryForObject("SELECT COUNT(DISTINCT tb_data_resource.id) FROM tb_data_resource WHERE tb_data_resource.del_flag = 0 AND EXISTS(SELECT tb_data_attr.id FROM tb_data_attr WHERE tb_data_attr.data_resource_id = tb_data_resource.id AND tb_data_attr.attr_value = '智能算法' AND attr_type = '组件类型')", Long.class);
|
||||
}).thenAccept(sum -> {
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", sum);
|
||||
put("type", "智能算法");
|
||||
}
|
||||
});
|
||||
});
|
||||
CompletableFuture<Void> gisAssemblyAmount = CompletableFuture.supplyAsync(() -> { // 获取平台图层服务组件服务数目
|
||||
return jdbcTemplate.queryForObject("SELECT COUNT(DISTINCT tb_data_resource.id) FROM tb_data_resource WHERE tb_data_resource.del_flag = 0 AND EXISTS(SELECT tb_data_attr.id FROM tb_data_attr WHERE tb_data_attr.data_resource_id = tb_data_resource.id AND tb_data_attr.attr_value = '图层服务' AND attr_type = '组件类型')", Long.class);
|
||||
}).thenAccept(sum -> {
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", sum);
|
||||
put("type", "图层服务");
|
||||
}
|
||||
});
|
||||
});
|
||||
CompletableFuture<Void> busAssemblyAmount = CompletableFuture.supplyAsync(() -> { // 获取平台业务组件组件服务数目
|
||||
return jdbcTemplate.queryForObject("SELECT COUNT(DISTINCT tb_data_resource.id) FROM tb_data_resource WHERE tb_data_resource.del_flag = 0 AND EXISTS(SELECT tb_data_attr.id FROM tb_data_attr WHERE tb_data_attr.data_resource_id = tb_data_resource.id AND tb_data_attr.attr_value = '业务组件' AND attr_type = '组件类型')", Long.class);
|
||||
}).thenAccept(sum -> {
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", sum);
|
||||
put("type", "业务组件");
|
||||
}
|
||||
});
|
||||
});
|
||||
CompletableFuture<Void> devAssemblyAmount = CompletableFuture.supplyAsync(() -> { // 获取平台业务组件组件服务数目
|
||||
return jdbcTemplate.queryForObject("SELECT COUNT(DISTINCT tb_data_resource.id) FROM tb_data_resource WHERE tb_data_resource.del_flag = 0 AND EXISTS(SELECT tb_data_attr.id FROM tb_data_attr WHERE tb_data_attr.data_resource_id = tb_data_resource.id AND tb_data_attr.attr_value = '开发组件' AND attr_type = '组件类型')", Long.class);
|
||||
}).thenAccept(sum -> {
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", sum);
|
||||
put("type", "开发组件");
|
||||
}
|
||||
});
|
||||
});
|
||||
CompletableFuture<Void> all = CompletableFuture.allOf(allAssemblyAmount, aiAssemblyAmount, gisAssemblyAmount, busAssemblyAmount, devAssemblyAmount);
|
||||
all.join();
|
||||
return new Result().ok(result);
|
||||
}
|
||||
|
||||
@GetMapping("/knowledgeInfo")
|
||||
@ApiOperation("知识库简况")
|
||||
@LogOperation("知识库简况")
|
||||
public Result<List<Map<String, Object>>> knowledgeInfo() {
|
||||
List<Map<String, Object>> result = new CopyOnWriteArrayList<>();
|
||||
CompletableFuture<Void> allKnowledgeAmount = CompletableFuture.supplyAsync(() -> { // 获取平台总知识库数目
|
||||
return jdbcTemplate.queryForObject("SELECT COUNT(id) FROM tb_data_resource WHERE type ='知识库' AND del_flag = 0;", Long.class);
|
||||
}).thenAccept(sum -> {
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", sum);
|
||||
put("type", "知识库上架总量");
|
||||
}
|
||||
});
|
||||
});
|
||||
CompletableFuture<Void> allKnowledgeVisitsAmount = CompletableFuture.supplyAsync(() -> { // 获取平台知识库浏览量
|
||||
return jdbcTemplate.queryForObject("SELECT SUM(visits)visits FROM tb_data_resource WHERE type ='知识库' AND del_flag = 0;", Long.class);
|
||||
}).thenAccept(sum -> {
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", sum);
|
||||
put("type", "知识库总浏览量");
|
||||
}
|
||||
});
|
||||
});
|
||||
CompletableFuture<Void> all = CompletableFuture.allOf(allKnowledgeAmount, allKnowledgeVisitsAmount);
|
||||
all.join();
|
||||
return new Result().ok(result);
|
||||
}
|
||||
|
||||
@GetMapping("/componentServiceRank")
|
||||
@ApiOperation("组件服务排名")
|
||||
@LogOperation("组件服务排名")
|
||||
public Result componentServiceRank(String type) {
|
||||
return new Result().ok(resourceService.componentServiceRank(type));
|
||||
}
|
||||
|
||||
@GetMapping("/infrastructureInfo")
|
||||
@ApiOperation("基础设施简况")
|
||||
@LogOperation("基础设施简况")
|
||||
public Result<List<Map<String, Object>>> infrastructureInfo() {
|
||||
List<Map<String, Object>> result = new CopyOnWriteArrayList<>();
|
||||
CompletableFuture<Void> allAmount = null;
|
||||
switch (Constant.ProjectPlace.getByFlag(projectPlace)) {
|
||||
case TSINGTAO: // 青岛市局
|
||||
case BAOTOU: { // 包头
|
||||
allAmount = CompletableFuture.supplyAsync(() -> { // 获取平台总基础设施数目
|
||||
return jdbcTemplate.queryForObject("SELECT COUNT(id) FROM tb_data_resource WHERE type = '基础设施' AND del_flag = 0", Long.class);
|
||||
}).thenAccept(sum -> {
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", sum);
|
||||
put("type", "视频资源数量");
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
break;
|
||||
case TSINGTAO_XHA: { // 青岛西海岸
|
||||
allAmount = CompletableFuture.supplyAsync(() -> { // 获取平台总基础设施数目
|
||||
List<Long> result_ = new CopyOnWriteArrayList<>();
|
||||
CompletableFuture cloud =
|
||||
CompletableFuture.runAsync(() -> { // 云脑专网
|
||||
OkHttpClient client = new OkHttpClient();
|
||||
String url = String.format(tsingtao_xhaProperties.getCloudcam(), "", 1, 10);
|
||||
logger.info(url);
|
||||
Request request = new Request.Builder().url(url).build();
|
||||
try (Response response = client.newCall(request).execute()) {
|
||||
if (response.isSuccessful()) {
|
||||
JSONObject jsonObject = JSON.parseObject(response.body().string());
|
||||
if (jsonObject.containsKey("data")) {
|
||||
result_.add(jsonObject.getJSONObject("data").getLongValue("total"));
|
||||
}
|
||||
} else {
|
||||
logger.error("包头获取失败");
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
logger.error("包头失败", exception);
|
||||
}
|
||||
});
|
||||
CompletableFuture local =
|
||||
CompletableFuture.runAsync(() -> { // 金宏网
|
||||
OkHttpClient client = new OkHttpClient();
|
||||
String url = String.format(tsingtao_xhaProperties.getLocalcam(), "", 1, 10);
|
||||
logger.info(url);
|
||||
Request request = new Request.Builder().url(url).build();
|
||||
try (Response response = client.newCall(request).execute()) {
|
||||
if (response.isSuccessful()) {
|
||||
JSONObject jsonObject = JSON.parseObject(response.body().string());
|
||||
if (jsonObject.containsKey("data")) {
|
||||
result_.add(jsonObject.getJSONObject("data").getLongValue("total"));
|
||||
}
|
||||
} else {
|
||||
logger.error("包头获取失败");
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
logger.error("包头失败", exception);
|
||||
}
|
||||
});
|
||||
CompletableFuture.allOf(cloud, local);
|
||||
return result_.stream().filter(index -> index != null).findAny().orElse(0l);
|
||||
}).thenAccept(sum -> {
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", sum);
|
||||
put("type", "视频资源数量");
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
CompletableFuture<Void> all = CompletableFuture.allOf(allAmount);
|
||||
all.join();
|
||||
return new Result().ok(result);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/dataResourceInfo")
|
||||
@ApiOperation("数据资源简况")
|
||||
@LogOperation("数据资源简况")
|
||||
public Result<List<Map<String, Object>>> dataResourceInfo() {
|
||||
List<Map<String, Object>> result = new CopyOnWriteArrayList<>();
|
||||
CompletableFuture<Void> allAmount = null;
|
||||
CompletableFuture<Void> applyInfo = null; // 申请情况
|
||||
switch (Constant.ProjectPlace.getByFlag(projectPlace)) {
|
||||
case BAOTOU: { // TODO 包头
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", 0L);
|
||||
put("type", "总数据量");
|
||||
}
|
||||
});
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", 0l);
|
||||
put("type", "总申请次数");
|
||||
}
|
||||
});
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", 1);
|
||||
put("type", "满足率");
|
||||
}
|
||||
});
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("resourceTop5", new ArrayList<>());
|
||||
}
|
||||
});
|
||||
}
|
||||
break;
|
||||
case TSINGTAO: { // TODO 青岛大数据局
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", 0L);
|
||||
put("type", "总数据量");
|
||||
}
|
||||
});
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", 0l);
|
||||
put("type", "总申请次数");
|
||||
}
|
||||
});
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", 1);
|
||||
put("type", "满足率");
|
||||
}
|
||||
});
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("resourceTop5", new ArrayList<>());
|
||||
}
|
||||
});
|
||||
}
|
||||
break;
|
||||
case TSINGTAO_XHA: { // 青岛西海岸
|
||||
allAmount = CompletableFuture.supplyAsync(() -> { // 获取平台数据资源总数目
|
||||
OkHttpClient client = new OkHttpClient();
|
||||
Long total = 0L;
|
||||
Request request = new Request.Builder().url(tsingtao_xhaProperties.getResourcecount()).build();
|
||||
try (Response response = client.newCall(request).execute()) {
|
||||
if (response.isSuccessful()) {
|
||||
JSONObject jsonObject = JSON.parseObject(response.body().string());
|
||||
if (jsonObject.containsKey("data")) {
|
||||
total = jsonObject.getJSONObject("data").getLongValue("total");
|
||||
}
|
||||
} else {
|
||||
logger.error("包头获取失败");
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
logger.error("包头失败", exception);
|
||||
}
|
||||
return total;
|
||||
}).thenAccept(sum -> {
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", sum);
|
||||
put("type", "总数据量");
|
||||
}
|
||||
});
|
||||
}); // 处理总数目
|
||||
|
||||
applyInfo = CompletableFuture.runAsync(() -> {
|
||||
OkHttpClient client = new OkHttpClient();
|
||||
Request request = new Request.Builder().url(tsingtao_xhaProperties.getResourceapplyinfo()).build();
|
||||
try (Response response = client.newCall(request).execute()) {
|
||||
if (response.isSuccessful()) {
|
||||
JSONObject jsonObject = JSON.parseObject(response.body().string());
|
||||
if (jsonObject.containsKey("data")) {
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", jsonObject.getJSONObject("data").getLongValue("requestCount"));
|
||||
put("type", "总申请次数");
|
||||
}
|
||||
});
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("amount", jsonObject.getJSONObject("data").getIntValue("satisfactionRate"));
|
||||
put("type", "满足率");
|
||||
}
|
||||
});
|
||||
result.add(new HashMap<String, Object>() {
|
||||
{
|
||||
put("resourceTop5", jsonObject.getJSONObject("data").getJSONArray("resourceTop5").stream().map(index -> (JSONObject) JSON.toJSON(index)).map(index -> new HashMap<String, Object>() {
|
||||
{
|
||||
put("服务名称", index.getString("service_name"));
|
||||
put("申请次数", index.getLongValue("count"));
|
||||
}
|
||||
}).collect(Collectors.toList()));
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
} else {
|
||||
logger.error("包头获取失败");
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
logger.error("包头失败", exception);
|
||||
}
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (allAmount == null) {
|
||||
allAmount = CompletableFuture.runAsync(() -> {
|
||||
try {
|
||||
Thread.sleep(100l);
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (applyInfo == null) {
|
||||
applyInfo = CompletableFuture.runAsync(() -> {
|
||||
try {
|
||||
Thread.sleep(100l);
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
CompletableFuture<Void> all = CompletableFuture.allOf(allAmount, applyInfo);
|
||||
all.join();
|
||||
return new Result().ok(result);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package io.renren.common.domain;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.PropertySource;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
||||
/**
|
||||
* 包头区域配置项
|
||||
*/
|
||||
@Data
|
||||
@Component
|
||||
@PropertySource("classpath:/domain/baotou.properties")
|
||||
@ConfigurationProperties(prefix = "baotou")
|
||||
public class BaoTouProperties {
|
||||
private String hlsurl;
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package io.renren.common.domain;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.PropertySource;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 青岛市区
|
||||
*/
|
||||
@Data
|
||||
@Component
|
||||
@PropertySource("classpath:/domain/tsingtao.properties")
|
||||
@ConfigurationProperties(prefix = "tsingtao")
|
||||
public class TsingtaoProperties {
|
||||
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package io.renren.common.domain;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.PropertySource;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 青岛西海岸
|
||||
*/
|
||||
@Data
|
||||
@Component
|
||||
@PropertySource("classpath:/domain/tsingtao-xha.properties")
|
||||
@ConfigurationProperties(prefix = "tsingtao-xha")
|
||||
public class Tsingtao_xhaProperties {
|
||||
private String cloudhls;
|
||||
private String localhls;
|
||||
private String cloudcam;
|
||||
private String localcam;
|
||||
private String resourcecount;
|
||||
private String resourceapplyinfo;
|
||||
}
|
|
@ -91,6 +91,7 @@ public class TDemandCommentServiceImpl extends CrudServiceImpl<TDemandCommentDao
|
|||
dto.setSenderDate(new Date());
|
||||
dto.setCreator(sysUserService.getByUsername("admin").getId());
|
||||
dto.setCreateDate(new Date());
|
||||
dto.setFrom("评论");
|
||||
sysNoticeService.save(dto);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
/**
|
||||
* 操作日志
|
||||
|
@ -28,8 +29,8 @@ public class SysLogOperationServiceImpl extends BaseServiceImpl<SysLogOperationD
|
|||
@Override
|
||||
public PageData<SysLogOperationDTO> page(Map<String, Object> params) {
|
||||
IPage<SysLogOperationEntity> page = baseDao.selectPage(
|
||||
getPage(params, Constant.CREATE_DATE, false),
|
||||
getWrapper(params)
|
||||
getPage(params, Constant.CREATE_DATE, false),
|
||||
getWrapper(params)
|
||||
);
|
||||
|
||||
return getPageData(page, SysLogOperationDTO.class);
|
||||
|
@ -42,7 +43,7 @@ public class SysLogOperationServiceImpl extends BaseServiceImpl<SysLogOperationD
|
|||
return ConvertUtils.sourceToTarget(entityList, SysLogOperationDTO.class);
|
||||
}
|
||||
|
||||
private QueryWrapper<SysLogOperationEntity> getWrapper(Map<String, Object> params){
|
||||
private QueryWrapper<SysLogOperationEntity> getWrapper(Map<String, Object> params) {
|
||||
String status = (String) params.get("status");
|
||||
|
||||
QueryWrapper<SysLogOperationEntity> wrapper = new QueryWrapper<>();
|
||||
|
@ -54,7 +55,9 @@ public class SysLogOperationServiceImpl extends BaseServiceImpl<SysLogOperationD
|
|||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void save(SysLogOperationEntity entity) {
|
||||
insert(entity);
|
||||
CompletableFuture.runAsync(() -> {
|
||||
insert(entity);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
|
@ -18,6 +18,7 @@ import io.swagger.annotations.ApiImplicitParam;
|
|||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
|
@ -37,6 +38,8 @@ public class SysNoticeController {
|
|||
private SysNoticeService sysNoticeService;
|
||||
@Autowired
|
||||
private SysNoticeUserService sysNoticeUserService;
|
||||
@Autowired
|
||||
private JdbcTemplate jdbcTemplate;
|
||||
|
||||
@GetMapping("page")
|
||||
@ApiOperation("分页")
|
||||
|
@ -75,7 +78,8 @@ public class SysNoticeController {
|
|||
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query", required = true, dataType = "int"),
|
||||
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType = "String"),
|
||||
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType = "String"),
|
||||
@ApiImplicitParam(name = "readStatus", value = "阅读状态 0:未读 1:已读", paramType = "query", dataType = "Integer")
|
||||
@ApiImplicitParam(name = "readStatus", value = "阅读状态 0:未读 1:已读", paramType = "query", dataType = "Integer"),
|
||||
@ApiImplicitParam(name = "from", value = "通知来源 (通知、评论、其他)", paramType = "query", dataType = "String")
|
||||
})
|
||||
public Result<PageData<SysNoticeDTO>> myNoticePage(@ApiIgnore @RequestParam Map<String, Object> params) {
|
||||
PageData<SysNoticeDTO> page = sysNoticeService.getMyNoticePage(params);
|
||||
|
@ -91,6 +95,13 @@ public class SysNoticeController {
|
|||
return new Result();
|
||||
}
|
||||
|
||||
@PutMapping("mynotice/readall")
|
||||
@ApiOperation("标记我的所有未读通知为已读")
|
||||
public Result readAll() {
|
||||
jdbcTemplate.update(String.format("UPDATE sys_notice_user SET read_status = 1,read_date =NOW() WHERE receiver_id = %s AND read_status = 0;"), SecurityUser.getUserId().toString());
|
||||
return new Result();
|
||||
}
|
||||
|
||||
@GetMapping("mynotice/unread")
|
||||
@ApiOperation("我的通知未读数")
|
||||
public Result<Integer> unRead() {
|
||||
|
|
|
@ -48,4 +48,6 @@ public class SysNoticeDTO implements Serializable {
|
|||
private Date readDate;
|
||||
@ApiModelProperty(value = "阅读状态 0:未读 1:已读")
|
||||
private Integer readStatus;
|
||||
@ApiModelProperty(value = "通知来源 (通知、评论、其他)")
|
||||
private String from;
|
||||
}
|
|
@ -10,59 +10,63 @@ import java.util.Date;
|
|||
|
||||
/**
|
||||
* 通知管理
|
||||
*
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("sys_notice")
|
||||
public class SysNoticeEntity extends BaseEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 通知类型
|
||||
*/
|
||||
private Integer type;
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
private String title;
|
||||
/**
|
||||
* 内容
|
||||
*/
|
||||
private String content;
|
||||
/**
|
||||
* 接收者 0:全部 1:部门
|
||||
*/
|
||||
private Integer receiverType;
|
||||
/**
|
||||
* 接收者ID,用逗号分开
|
||||
*/
|
||||
private String receiverTypeIds;
|
||||
/**
|
||||
* 发送状态 0:草稿 1:已发布
|
||||
*/
|
||||
private Integer status;
|
||||
/**
|
||||
* 发送者
|
||||
*/
|
||||
private String senderName;
|
||||
/**
|
||||
* 发送时间
|
||||
*/
|
||||
private Date senderDate;
|
||||
/**
|
||||
* 接收者
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String receiverName;
|
||||
/**
|
||||
* 阅读状态 0:未读 1:已读
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Integer readStatus;
|
||||
/**
|
||||
* 阅读时间
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Date readDate;
|
||||
/**
|
||||
* 通知类型
|
||||
*/
|
||||
private Integer type;
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
private String title;
|
||||
/**
|
||||
* 内容
|
||||
*/
|
||||
private String content;
|
||||
/**
|
||||
* 接收者 0:全部 1:部门
|
||||
*/
|
||||
private Integer receiverType;
|
||||
/**
|
||||
* 接收者ID,用逗号分开
|
||||
*/
|
||||
private String receiverTypeIds;
|
||||
/**
|
||||
* 发送状态 0:草稿 1:已发布
|
||||
*/
|
||||
private Integer status;
|
||||
/**
|
||||
* 发送者
|
||||
*/
|
||||
private String senderName;
|
||||
/**
|
||||
* 发送时间
|
||||
*/
|
||||
private Date senderDate;
|
||||
/**
|
||||
* 接收者
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String receiverName;
|
||||
/**
|
||||
* 阅读状态 0:未读 1:已读
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Integer readStatus;
|
||||
/**
|
||||
* 阅读时间
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Date readDate;
|
||||
|
||||
/**
|
||||
* 通知来源 (通知、评论、其他)
|
||||
*/
|
||||
private String from;
|
||||
}
|
|
@ -14,10 +14,13 @@ import io.renren.modules.resource.dto.ResourceDTO;
|
|||
import io.renren.modules.resource.excel.ResourceExcelImportListener;
|
||||
import io.renren.modules.resource.service.ResourceService;
|
||||
import io.swagger.annotations.*;
|
||||
import io.renren.modules.resource.videoPreview.AbstractVideoPreviewService;
|
||||
import io.renren.modules.resource.videoPreview.VideoPreviewFactory;
|
||||
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.context.annotation.Lazy;
|
||||
import org.springframework.http.HttpEntity;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
|
@ -38,6 +41,7 @@ import java.time.LocalDateTime;
|
|||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
/**
|
||||
* 资源表
|
||||
*
|
||||
|
@ -88,6 +92,7 @@ public class ResourceController {
|
|||
@Autowired
|
||||
private RestTemplate restTemplate;
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
private JdbcTemplate jdbcTemplate;
|
||||
|
||||
|
@ -205,7 +210,7 @@ public class ResourceController {
|
|||
@ApiOperation("导入")
|
||||
@LogOperation("导入")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "source", value = "请求来源", paramType = "string", dataType = "string")
|
||||
@ApiImplicitParam(name = "file", value = "数据文件文件", paramType = "file", dataType = "file")
|
||||
})
|
||||
public Result importResource(@RequestParam("file") MultipartFile uploadFile, HttpServletRequest request) {
|
||||
List<Map<String, Object>> dept =
|
||||
|
@ -284,7 +289,6 @@ public class ResourceController {
|
|||
HashMap map = JSONObject.parseObject(json, HashMap.class);
|
||||
return new Result().ok(map);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return new Result().ok(new HashMap<String, Object>() {{
|
||||
put("sxmlcount", 0);
|
||||
put("yfbfwcount", 0);
|
||||
|
@ -320,7 +324,6 @@ public class ResourceController {
|
|||
parame = parame + String.format("<zyname>%s</zyname>",zyname);
|
||||
}
|
||||
parame = parame + "</ZWCJ_mainPort></soap:Body></soap:Envelope>";
|
||||
|
||||
HttpHeaders requestHeaders = new HttpHeaders();
|
||||
requestHeaders.set("SOAPAction", "http://tempuri.org/ZWCJ_mainPort");
|
||||
requestHeaders.setContentType(new MediaType("text","xml", Charset.forName("utf-8")));
|
||||
|
@ -411,4 +414,15 @@ public class ResourceController {
|
|||
}
|
||||
*/
|
||||
|
||||
@GetMapping("getHls")
|
||||
@ApiOperation("对接知识库数据")
|
||||
public Result<String> getHls(String key) {
|
||||
Optional<AbstractVideoPreviewService> factory = VideoPreviewFactory.build();
|
||||
if (factory.isPresent()) {
|
||||
String hls = factory.get().getHls(key);
|
||||
return new Result<String>().ok(hls);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -25,7 +25,7 @@ public interface ResourceDao extends BaseDao<ResourceEntity> {
|
|||
@Param("orderField") String orderField,
|
||||
@Param("orderType") String orderType);
|
||||
|
||||
List<Map> selectTypeCount();
|
||||
List<Map> selectTypeCount(String type);
|
||||
|
||||
List<ResourceDTO> selectMostPopular(Map<String, Object> selectMap);
|
||||
|
||||
|
@ -106,4 +106,7 @@ public interface ResourceDao extends BaseDao<ResourceEntity> {
|
|||
|
||||
List<Map> selectAppAreaCountList();
|
||||
|
||||
List<Map> selectTopFiveComponentServiceApplications();
|
||||
|
||||
List<Map> selectTopFiveComponentServiceScore();
|
||||
}
|
|
@ -1,11 +1,15 @@
|
|||
package io.renren.modules.resource.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import io.renren.common.entity.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 资源表
|
||||
|
@ -130,4 +134,7 @@ public class ResourceEntity extends BaseEntity {
|
|||
* 提起下架人员
|
||||
*/
|
||||
private String undercarriageUserName;
|
||||
|
||||
@TableField(value = "info_list", typeHandler = FastjsonTypeHandler.class)
|
||||
private List<AttrEntity> infoList;
|
||||
}
|
|
@ -85,7 +85,7 @@ public class ResourceExcelImportListener extends AnalysisEventListener<Map<Integ
|
|||
logger.info("找不到部门:{}", index.toString());
|
||||
deptOptional = Optional.of(new LinkedHashMap<String, Object>() {
|
||||
{
|
||||
put("id", 1L);
|
||||
put("id", 1516728214814113793L); // 包头市行政审批和政务服务服务局
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -367,7 +367,7 @@ public class ResourceExcelImportListener extends AnalysisEventListener<Map<Integ
|
|||
}
|
||||
resourceDTO.setInfoList(infoList.stream().distinct().filter(info -> StringUtils.isNotEmpty(info.getAttrValue())).collect(Collectors.toList())); // infoList内空属性不导入
|
||||
resourceDTO.setDelFlag(0);
|
||||
// resourceDTO.setDeptId(deptId); // 所属部门
|
||||
resourceDTO.setDeptId(deptId); // 所属部门
|
||||
return resourceDTO;
|
||||
}
|
||||
|
||||
|
|
|
@ -79,4 +79,8 @@ public interface ResourceService extends CrudService<ResourceEntity, ResourceDTO
|
|||
* 同步知识库
|
||||
*/
|
||||
void KnowledgeBase();
|
||||
|
||||
Object componentServiceRank(String type);
|
||||
|
||||
Integer getProjectPlace();
|
||||
}
|
|
@ -9,6 +9,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import io.renren.common.constant.Constant;
|
||||
import io.renren.common.domain.Tsingtao_xhaProperties;
|
||||
import io.renren.common.service.impl.CrudServiceImpl;
|
||||
import io.renren.modules.resource.dao.AttrDao;
|
||||
import io.renren.modules.resource.dao.ResourceDao;
|
||||
|
@ -38,6 +40,8 @@ import org.springframework.jdbc.core.JdbcTemplate;
|
|||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneOffset;
|
||||
import java.util.*;
|
||||
|
@ -55,7 +59,12 @@ import java.util.stream.Collectors;
|
|||
*/
|
||||
@Service
|
||||
public class ResourceServiceImpl extends CrudServiceImpl<ResourceDao, ResourceEntity, ResourceDTO> implements ResourceService {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(ResourceServiceImpl.class);
|
||||
|
||||
@Value("${project.place}")
|
||||
private Integer projectPlace;
|
||||
|
||||
@Value("${zsk.appid}")
|
||||
private String appId;
|
||||
|
||||
|
@ -108,6 +117,9 @@ public class ResourceServiceImpl extends CrudServiceImpl<ResourceDao, ResourceEn
|
|||
@Autowired
|
||||
private JdbcTemplate jdbcTemplate;
|
||||
|
||||
@Autowired
|
||||
private Tsingtao_xhaProperties tsingtao_xhaProperties;
|
||||
|
||||
@Override
|
||||
public QueryWrapper<ResourceEntity> getWrapper(Map<String, Object> params) {
|
||||
QueryWrapper<ResourceEntity> wrapper = new QueryWrapper<>();
|
||||
|
@ -216,24 +228,142 @@ public class ResourceServiceImpl extends CrudServiceImpl<ResourceDao, ResourceEn
|
|||
String orderField = StringUtils.isBlank(jsonObject.getString("orderField")) ? "total" : jsonObject.getString("orderField");
|
||||
String orderType = StringUtils.isBlank(jsonObject.getString("orderType")) ? "DESC" : jsonObject.getString("orderType");
|
||||
Page<ResourceDTO> resultPage = new Page<>(pageNum, pageSize);
|
||||
if (resourceDTO.getInfoList().isEmpty()) {
|
||||
List<ResourceDTO> resourceDTOS = resourceDao.selectDTOPage(resourceDTO, (pageNum - 1) * pageSize, pageSize, orderField, orderType);
|
||||
resultPage.setRecords(resourceDTOS);
|
||||
resultPage.setTotal(resourceDao.selectDTOPage(resourceDTO, 0, 100000, orderField, orderType).size());
|
||||
} else {
|
||||
List<ResourceDTO> resourceDTOS = resourceDao.selectWithAttrs(resourceDTO, orderField, orderType);
|
||||
int j = Math.min(pageNum * pageSize, resourceDTOS.size());
|
||||
if (resourceDTOS.isEmpty()) {
|
||||
resultPage.setRecords(null);
|
||||
resultPage.setTotal(0);
|
||||
} else {
|
||||
ArrayList<ResourceDTO> recordLists = new ArrayList<>();
|
||||
for (int i = (pageNum - 1) * pageSize; i < j; i++) {
|
||||
recordLists.add(resourceDTOS.get(i));
|
||||
switch (Constant.ProjectPlace.getByFlag(projectPlace)) {
|
||||
case TSINGTAO:
|
||||
case BAOTOU: { // 包头、青岛
|
||||
logger.info("包头、青岛");
|
||||
if (resourceDTO.getInfoList().isEmpty()) {
|
||||
List<ResourceDTO> resourceDTOS = resourceDao.selectDTOPage(resourceDTO, (pageNum - 1) * pageSize, pageSize, orderField, orderType);
|
||||
resultPage.setRecords(resourceDTOS);
|
||||
resultPage.setTotal(resourceDao.selectDTOPage(resourceDTO, 0, 100000, orderField, orderType).size());
|
||||
} else {
|
||||
List<ResourceDTO> resourceDTOS = resourceDao.selectWithAttrs(resourceDTO, orderField, orderType);
|
||||
int j = Math.min(pageNum * pageSize, resourceDTOS.size());
|
||||
if (resourceDTOS.isEmpty()) {
|
||||
resultPage.setRecords(null);
|
||||
resultPage.setTotal(0);
|
||||
} else {
|
||||
ArrayList<ResourceDTO> recordLists = new ArrayList<>();
|
||||
for (int i = (pageNum - 1) * pageSize; i < j; i++) {
|
||||
recordLists.add(resourceDTOS.get(i));
|
||||
}
|
||||
resultPage.setRecords(recordLists);
|
||||
resultPage.setTotal(resourceDTOS.size());
|
||||
}
|
||||
}
|
||||
resultPage.setRecords(recordLists);
|
||||
resultPage.setTotal(resourceDTOS.size());
|
||||
}
|
||||
break;
|
||||
case TSINGTAO_XHA: {
|
||||
if ("基础设施".equals(resourceDTO.getType())) { // 基础设施
|
||||
logger.info("西海岸基础设施");
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
CompletableFuture cloud =
|
||||
CompletableFuture.runAsync(() -> { // 云脑专网
|
||||
OkHttpClient client = new OkHttpClient();
|
||||
String url = String.format(tsingtao_xhaProperties.getCloudcam(), resourceDTO.getName(), pageNum, pageSize);
|
||||
logger.info(url);
|
||||
Request request = new Request.Builder().url(url).build();
|
||||
try (Response response = client.newCall(request).execute()) {
|
||||
if (response.isSuccessful()) {
|
||||
JSONObject jsonObject_ = JSON.parseObject(response.body().string());
|
||||
if (jsonObject_.containsKey("data")) {
|
||||
if (jsonObject_.getJSONObject("data").containsKey("list")) {
|
||||
resultPage.setTotal(jsonObject_.getJSONObject("data").getLongValue("total"));
|
||||
resultPage.setRecords(jsonObject_.getJSONObject("data").getJSONArray("list").stream().map(index -> (JSONObject) JSON.toJSON(index))
|
||||
.map(index -> {
|
||||
ResourceDTO resourceDTO1 = new ResourceDTO();
|
||||
resourceDTO1.setId(Long.valueOf(index.getString("id")));
|
||||
resourceDTO1.setDelFlag(index.getIntValue("delFlag"));
|
||||
resourceDTO1.setLink(index.getString("cameraIndexCode"));
|
||||
resourceDTO1.setName(index.getString("name"));
|
||||
resourceDTO1.setType("基础设施");
|
||||
try {
|
||||
resourceDTO1.setCreateDate(sdf.parse(index.getString("createdTime")));
|
||||
} catch (ParseException e) {
|
||||
logger.error("时间异常");
|
||||
resourceDTO1.setCreateDate(new Date());
|
||||
}
|
||||
return resourceDTO1;
|
||||
}).collect(Collectors.toList()));
|
||||
} else {
|
||||
resultPage.setRecords(null);
|
||||
resultPage.setTotal(0);
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
logger.error("获取失败");
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
logger.error("失败", exception);
|
||||
}
|
||||
});
|
||||
CompletableFuture local =
|
||||
CompletableFuture.runAsync(() -> { // 金宏网
|
||||
OkHttpClient client = new OkHttpClient();
|
||||
String url = String.format(tsingtao_xhaProperties.getLocalcam(), resourceDTO.getName(), pageNum, pageSize);
|
||||
logger.info(url);
|
||||
Request request = new Request.Builder().url(url).build();
|
||||
try (Response response = client.newCall(request).execute()) {
|
||||
if (response.isSuccessful()) {
|
||||
JSONObject jsonObject_ = JSON.parseObject(response.body().string());
|
||||
if (jsonObject_.containsKey("data")) {
|
||||
if (jsonObject_.getJSONObject("data").containsKey("list")) {
|
||||
resultPage.setTotal(jsonObject_.getJSONObject("data").getLongValue("total"));
|
||||
resultPage.setRecords(jsonObject_.getJSONObject("data").getJSONArray("list").stream().map(index -> (JSONObject) JSON.toJSON(index))
|
||||
.map(index -> {
|
||||
ResourceDTO resourceDTO1 = new ResourceDTO();
|
||||
resourceDTO1.setId(Long.valueOf(index.getString("id")));
|
||||
resourceDTO1.setDelFlag(index.getIntValue("delFlag"));
|
||||
resourceDTO1.setLink(index.getString("cameraIndexCode"));
|
||||
resourceDTO1.setName(index.getString("name"));
|
||||
resourceDTO1.setType("基础设施");
|
||||
try {
|
||||
resourceDTO1.setCreateDate(sdf.parse(index.getString("createdTime")));
|
||||
} catch (ParseException e) {
|
||||
logger.error("时间异常");
|
||||
resourceDTO1.setCreateDate(new Date());
|
||||
}
|
||||
return resourceDTO1;
|
||||
}).collect(Collectors.toList()));
|
||||
} else {
|
||||
resultPage.setRecords(null);
|
||||
resultPage.setTotal(0);
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
logger.error("获取失败");
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
logger.error("失败", exception);
|
||||
}
|
||||
});
|
||||
CompletableFuture.allOf(cloud, local);
|
||||
} else {
|
||||
logger.info("西海岸基普通");
|
||||
if (resourceDTO.getInfoList().isEmpty()) {
|
||||
List<ResourceDTO> resourceDTOS = resourceDao.selectDTOPage(resourceDTO, (pageNum - 1) * pageSize, pageSize, orderField, orderType);
|
||||
resultPage.setRecords(resourceDTOS);
|
||||
resultPage.setTotal(resourceDao.selectDTOPage(resourceDTO, 0, 100000, orderField, orderType).size());
|
||||
} else {
|
||||
List<ResourceDTO> resourceDTOS = resourceDao.selectWithAttrs(resourceDTO, orderField, orderType);
|
||||
int j = Math.min(pageNum * pageSize, resourceDTOS.size());
|
||||
if (resourceDTOS.isEmpty()) {
|
||||
resultPage.setRecords(null);
|
||||
resultPage.setTotal(0);
|
||||
} else {
|
||||
ArrayList<ResourceDTO> recordLists = new ArrayList<>();
|
||||
for (int i = (pageNum - 1) * pageSize; i < j; i++) {
|
||||
recordLists.add(resourceDTOS.get(i));
|
||||
}
|
||||
resultPage.setRecords(recordLists);
|
||||
resultPage.setTotal(resourceDTOS.size());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return resultPage;
|
||||
}
|
||||
|
@ -250,7 +380,7 @@ public class ResourceServiceImpl extends CrudServiceImpl<ResourceDao, ResourceEn
|
|||
@Override
|
||||
public Object selectTotal() {
|
||||
HashMap<String, Object> resultMap = new HashMap<>();
|
||||
resultMap.put("total", resourceDao.selectTypeCount());
|
||||
resultMap.put("total", resourceDao.selectTypeCount(null));
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
|
@ -291,7 +421,6 @@ public class ResourceServiceImpl extends CrudServiceImpl<ResourceDao, ResourceEn
|
|||
.eq(ResourceEntity::getId, resourceEntity.getId())
|
||||
.eq(ResourceEntity::getDelFlag, ResourceEntityDelFlag.NORMAL.getFlag());
|
||||
resourceDao.update(entity, updateWrapper);
|
||||
|
||||
ResourceBrowseEntity browseEntity = new ResourceBrowseEntity();
|
||||
browseEntity.setResourceId(id);
|
||||
browseEntity.setUserId(SecurityUser.getUserId());
|
||||
|
@ -372,17 +501,21 @@ public class ResourceServiceImpl extends CrudServiceImpl<ResourceDao, ResourceEn
|
|||
listMap.entrySet().stream().filter(index -> !"区级".equals(index.getKey())).forEach(item -> {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("type", item.getKey());
|
||||
map.put("total", resourceDao.selectTypeCountByDept(item.getKey(), jsonObject.getString("type")));
|
||||
Integer integer = resourceDao.selectTypeCountByDept(item.getKey(), jsonObject.getString("type"));
|
||||
map.put("total", integer);
|
||||
item.getValue().forEach(item1 -> item1.remove("type"));
|
||||
map.put("dataList", item.getValue());
|
||||
resultList.add(map);
|
||||
if (integer != 0) {
|
||||
resultList.add(map);
|
||||
}
|
||||
});
|
||||
Optional<List<Map<String, Object>>> areaList = Optional.ofNullable(listMap.get("区级"));
|
||||
Optional<Map<String, List<Map<String, Object>>>> areaTypeList = Optional.ofNullable(areaList.orElse(new ArrayList<>()).stream()
|
||||
.collect(Collectors.groupingBy(m -> m.get("districtName").toString())));
|
||||
HashMap<Object, Object> areaMap = new HashMap<>();
|
||||
areaMap.put("type", "区级");
|
||||
areaMap.put("total", resourceDao.selectTypeCountByDept("区级", jsonObject.getString("type")));
|
||||
Integer integer = resourceDao.selectTypeCountByDept("区级", jsonObject.getString("type"));
|
||||
areaMap.put("total", integer);
|
||||
ArrayList<Map> areaListTemp = new ArrayList<>();
|
||||
areaTypeList.orElse(new HashMap<>()).forEach((key, value) -> {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
|
@ -393,7 +526,9 @@ public class ResourceServiceImpl extends CrudServiceImpl<ResourceDao, ResourceEn
|
|||
areaListTemp.add(map);
|
||||
});
|
||||
areaMap.put("dataList", areaListTemp);
|
||||
resultList.add(areaMap);
|
||||
if (integer != 0) {
|
||||
resultList.add(areaMap);
|
||||
}
|
||||
return resultList;
|
||||
}
|
||||
|
||||
|
@ -712,4 +847,20 @@ public class ResourceServiceImpl extends CrudServiceImpl<ResourceDao, ResourceEn
|
|||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object componentServiceRank(String type) {
|
||||
switch (type) {
|
||||
case "total":
|
||||
return resourceDao.selectTopFiveComponentServiceApplications();
|
||||
case "score":
|
||||
return resourceDao.selectTopFiveComponentServiceScore();
|
||||
default:
|
||||
return new HashMap<>();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getProjectPlace() {
|
||||
return this.projectPlace;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package io.renren.modules.resource.videoPreview;
|
||||
|
||||
|
||||
/**
|
||||
* 视频预览抽象类
|
||||
*/
|
||||
public abstract class AbstractVideoPreviewService {
|
||||
|
||||
/**
|
||||
* 获取hls预览地址
|
||||
*
|
||||
* @param key 获取hls地址的键
|
||||
* @return
|
||||
*/
|
||||
public abstract String getHls(String key);
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
package io.renren.modules.resource.videoPreview;
|
||||
|
||||
|
||||
import io.renren.common.constant.Constant;
|
||||
import io.renren.common.domain.BaoTouProperties;
|
||||
import io.renren.common.domain.TsingtaoProperties;
|
||||
import io.renren.common.domain.Tsingtao_xhaProperties;
|
||||
import io.renren.common.utils.SpringContextUtils;
|
||||
import io.renren.modules.monitor.service.MonitorService;
|
||||
import io.renren.modules.resource.service.ResourceService;
|
||||
import io.renren.modules.resource.videoPreview.domain.BaoTouVideoPreviewService;
|
||||
import io.renren.modules.resource.videoPreview.domain.TsingtaoVideoPreviewService;
|
||||
import io.renren.modules.resource.videoPreview.domain.TsingtaoXHAVideoPreviewService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* 视频预览工厂类
|
||||
*/
|
||||
public final class VideoPreviewFactory {
|
||||
private static Logger logger = LoggerFactory.getLogger(VideoPreviewFactory.class);
|
||||
private static ResourceService resourceService;
|
||||
private static int projectPlace;
|
||||
|
||||
private static BaoTouProperties baoTouProperties; // 包头配置
|
||||
|
||||
private static MonitorService monitorService;
|
||||
|
||||
private static TsingtaoProperties tsingtaoProperties; // 青岛市区配置
|
||||
|
||||
private static Tsingtao_xhaProperties tsingtao_xhaProperties; // 青岛西海岸配置
|
||||
|
||||
static {
|
||||
VideoPreviewFactory.resourceService = SpringContextUtils.getBean(ResourceService.class);
|
||||
VideoPreviewFactory.projectPlace = resourceService.getProjectPlace();
|
||||
VideoPreviewFactory.baoTouProperties = SpringContextUtils.getBean(BaoTouProperties.class);
|
||||
VideoPreviewFactory.monitorService = SpringContextUtils.getBean(MonitorService.class);
|
||||
|
||||
VideoPreviewFactory.tsingtaoProperties = SpringContextUtils.getBean(TsingtaoProperties.class);
|
||||
VideoPreviewFactory.tsingtao_xhaProperties = SpringContextUtils.getBean(Tsingtao_xhaProperties.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取预览服务实现
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static Optional<AbstractVideoPreviewService> build() {
|
||||
AbstractVideoPreviewService abstractVideoPreviewService = null;
|
||||
switch (Constant.ProjectPlace.getByFlag(projectPlace)) {
|
||||
case TSINGTAO: { // 青岛市局
|
||||
abstractVideoPreviewService = new TsingtaoVideoPreviewService(monitorService);
|
||||
}
|
||||
break;
|
||||
case TSINGTAO_XHA: { // 青岛西海岸
|
||||
abstractVideoPreviewService = new TsingtaoXHAVideoPreviewService(tsingtao_xhaProperties);
|
||||
}
|
||||
break;
|
||||
case BAOTOU: { // 包头
|
||||
abstractVideoPreviewService = new BaoTouVideoPreviewService(baoTouProperties);
|
||||
}
|
||||
break;
|
||||
case UNKNOWN: { // 未知区域
|
||||
logger.error("区域未知");
|
||||
}
|
||||
break;
|
||||
}
|
||||
return Optional.ofNullable(abstractVideoPreviewService);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
package io.renren.modules.resource.videoPreview.domain;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.renren.common.domain.BaoTouProperties;
|
||||
import io.renren.modules.resource.videoPreview.AbstractVideoPreviewService;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
||||
/**
|
||||
* 包头预览
|
||||
*/
|
||||
public class BaoTouVideoPreviewService extends AbstractVideoPreviewService {
|
||||
private static Logger logger = LoggerFactory.getLogger(BaoTouVideoPreviewService.class);
|
||||
private static final OkHttpClient client = new OkHttpClient();
|
||||
|
||||
private BaoTouProperties baoTouProperties;
|
||||
|
||||
public BaoTouVideoPreviewService(BaoTouProperties baoTouProperties) {
|
||||
this.baoTouProperties = baoTouProperties;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取hls预览地址
|
||||
*
|
||||
* @param key 获取hls地址的键
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String getHls(String key) {
|
||||
String hls = null;
|
||||
Request request = new Request.Builder().url(String.format(baoTouProperties.getHlsurl(), key)).build();
|
||||
try (Response response = client.newCall(request).execute()) {
|
||||
if (response.isSuccessful()) {
|
||||
JSONObject jsonObject = JSON.parseObject(response.body().string());
|
||||
if (jsonObject.containsKey("data")) {
|
||||
hls = jsonObject.getString("data");
|
||||
}
|
||||
} else {
|
||||
logger.error("包头预览地址获取失败");
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
logger.error("包头预览地址获取失败", exception);
|
||||
}
|
||||
return hls;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
package io.renren.modules.resource.videoPreview.domain;
|
||||
|
||||
import io.renren.modules.monitor.service.MonitorService;
|
||||
import io.renren.modules.resource.videoPreview.AbstractVideoPreviewService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* 青岛市局预览
|
||||
*/
|
||||
public class TsingtaoVideoPreviewService extends AbstractVideoPreviewService {
|
||||
private static Logger logger = LoggerFactory.getLogger(BaoTouVideoPreviewService.class);
|
||||
|
||||
private MonitorService monitorService;
|
||||
|
||||
public TsingtaoVideoPreviewService(MonitorService monitorService) {
|
||||
this.monitorService = monitorService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取hls预览地址
|
||||
*
|
||||
* @param key 获取hls地址的键
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String getHls(String key) {
|
||||
try {
|
||||
return monitorService.fileCode(key);
|
||||
} catch (IOException e) {
|
||||
logger.error("青岛市局获取预览地址失败", e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
package io.renren.modules.resource.videoPreview.domain;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.renren.common.domain.Tsingtao_xhaProperties;
|
||||
import io.renren.modules.resource.videoPreview.AbstractVideoPreviewService;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
|
||||
/**
|
||||
* 青岛西海岸
|
||||
*/
|
||||
public class TsingtaoXHAVideoPreviewService extends AbstractVideoPreviewService {
|
||||
private static Logger logger = LoggerFactory.getLogger(TsingtaoXHAVideoPreviewService.class);
|
||||
Tsingtao_xhaProperties tsingtao_xhaProperties;
|
||||
|
||||
public TsingtaoXHAVideoPreviewService(Tsingtao_xhaProperties tsingtao_xhaProperties) {
|
||||
this.tsingtao_xhaProperties = tsingtao_xhaProperties;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取hls预览地址
|
||||
*
|
||||
* @param key 获取hls地址的键
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String getHls(String key) {
|
||||
List<String> result = new CopyOnWriteArrayList<>();
|
||||
CompletableFuture cloud =
|
||||
CompletableFuture.runAsync(() -> { // 云脑专网
|
||||
OkHttpClient client = new OkHttpClient();
|
||||
Request request = new Request.Builder().url(String.format(tsingtao_xhaProperties.getCloudhls(), key)).build();
|
||||
try (Response response = client.newCall(request).execute()) {
|
||||
if (response.isSuccessful()) {
|
||||
JSONObject jsonObject = JSON.parseObject(response.body().string());
|
||||
if (jsonObject.containsKey("data")) {
|
||||
result.add(jsonObject.getString("data"));
|
||||
}
|
||||
} else {
|
||||
logger.error("西海岸预览地址获取失败");
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
logger.error("西海岸预览地址获取失败", exception);
|
||||
}
|
||||
});
|
||||
CompletableFuture local =
|
||||
CompletableFuture.runAsync(() -> { // 金宏网
|
||||
OkHttpClient client = new OkHttpClient();
|
||||
Request request = new Request.Builder().url(String.format(tsingtao_xhaProperties.getLocalhls(), key)).build();
|
||||
try (Response response = client.newCall(request).execute()) {
|
||||
if (response.isSuccessful()) {
|
||||
JSONObject jsonObject = JSON.parseObject(response.body().string());
|
||||
if (jsonObject.containsKey("data")) {
|
||||
result.add(jsonObject.getString("data"));
|
||||
}
|
||||
} else {
|
||||
logger.error("西海岸预览地址获取失败");
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
logger.error("西海案预览地址获取失败", exception);
|
||||
}
|
||||
});
|
||||
CompletableFuture.allOf(cloud, local);
|
||||
return result.stream().filter(index -> StringUtils.isNotEmpty(index)).findAny().orElse(null);
|
||||
}
|
||||
}
|
|
@ -9,10 +9,8 @@ import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSource
|
|||
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
|
||||
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
|
||||
import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.servlet.Filter;
|
||||
import java.util.HashMap;
|
||||
|
@ -83,8 +81,7 @@ public class ShiroConfig {
|
|||
*/
|
||||
filterMap.put("/upload", "anon");
|
||||
filterMap.put("/upload/**", "anon");
|
||||
filterMap.put("/census/center/**", "anon"); // 全局各类统计
|
||||
|
||||
filterMap.put("/census/center/**", "anon"); // 全局各类统计 包含 /census/center/v2
|
||||
filterMap.put("/**", "oauth2");
|
||||
shiroFilter.setFilterChainDefinitionMap(filterMap);
|
||||
|
||||
|
|
|
@ -162,4 +162,16 @@ public class SysUserController {
|
|||
|
||||
ExcelUtils.exportExcelToTarget(response, null, "用户管理", list, SysUserExcel.class);
|
||||
}
|
||||
|
||||
@GetMapping("getDeptInfoFromJH")
|
||||
@ApiOperation("从金宏获取行政区划信息并保存到表中")
|
||||
public Result getDeptInfoFromJH(){
|
||||
return sysUserService.getDeptInfoFromJH();
|
||||
}
|
||||
|
||||
@GetMapping("getUserInfoFromJH")
|
||||
@ApiOperation("从金宏获取用户信息并保存到表中")
|
||||
public Result getUserInfoFromJH() {
|
||||
return sysUserService.getUserInfoFromJH();
|
||||
}
|
||||
}
|
|
@ -41,4 +41,8 @@ public interface SysUserDao extends BaseDao<SysUserEntity> {
|
|||
SysUserEntity getByDeptIdAndRoleId(@Param("deptId") Long deptId, @Param("roleId") Long roleId);
|
||||
|
||||
Long countAllUser();
|
||||
|
||||
void batchSaveUser(@Param("list")List<Map> list);
|
||||
|
||||
SysUserEntity getUserByName(@Param("username") String username);
|
||||
}
|
|
@ -73,5 +73,10 @@ public class SysUserEntity extends BaseEntity {
|
|||
*/
|
||||
@TableField(exist=false)
|
||||
private String deptName;
|
||||
/**
|
||||
* 用户guid
|
||||
* 2022-06-21 ytl根据黄工的需求新增
|
||||
*/
|
||||
private String guid;
|
||||
|
||||
}
|
|
@ -0,0 +1,114 @@
|
|||
package io.renren.modules.sys.enums;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 金宏项目LDAP查询用户的根节点enum
|
||||
*/
|
||||
public enum JhDeptEnum {
|
||||
//人大常委会("1","人大常委会"),
|
||||
即墨区("即墨区",new String[]{
|
||||
"即墨区人大","即墨区委办公室","即墨区委宣传部","即墨区委组织部","即墨区推进大数据发展","即墨区政协办公室",
|
||||
"即墨区新型冠状病毒感染肺炎疫情防控指挥部","即墨区监察委","即墨区直单位","即墨区纪委","即墨区街道办事处","即墨区项目指挥部"
|
||||
|
||||
})
|
||||
, 城阳区("城阳区",new String[]{
|
||||
"区属机关","城阳区乡镇及街道办事处","城阳区人大","城阳区委办公室","城阳区政协","城阳区政府办公室","城阳区网上审批","工作机构"
|
||||
})
|
||||
, 崂山区("崂山区",new String[]{
|
||||
"中共崂山区纪委监委机关","区委区政府议事协调机构","区直事业单位","区直企业","崂山区人大机关","崂山区党委部门","崂山区政协机关",
|
||||
"崂山区政府部门","崂山区武装部","崂山区科技创新委员会","群团部门","街道科室及社区","青岛东亿实业总公司","青岛金家岭金融聚集区管委会",
|
||||
"驻区企业","驻区单位"
|
||||
})
|
||||
,市南区("市南区",new String[]{
|
||||
"市南区人大","市南区公检法","市南区区委","市南区政协","市南区政府","市南区电子政务和信息资源管理办公室","市南区纪委"
|
||||
})
|
||||
,市直企业("市直企业",new String[]{"世园集团","中石化青岛石油分公司","中石化经纬有限公司","中路财产保险股份有限公司",
|
||||
"二轻总公司","交运集团","华电青岛热力有限公司","国信实业有限公司","国际机场集团","市政集团","海尔集团技术研发中心",
|
||||
"纺织总公司","青岛万通证券公司","青岛中泰集团","青岛公交集团","青岛区域经济合作有限公司","青岛华通国有资本运营(集团)有限责任公司",
|
||||
"青岛华青公司","青岛双星集团","青岛啤酒股份有限公司制造中心","青岛啤酒集团","青岛国信集团","青岛国投有限公司", "青岛城市发展集团有限公司",
|
||||
"青岛城市建设集团有限公司","青岛旅游集团","青岛水务集团有限公司","青岛海信集团","青岛海尔集团","青岛海湾集团有限公司","青岛港集团",
|
||||
"青岛澳柯玛集团","青岛红星化工集团有限责任公司","青岛能源集团有限公司","青岛西海岸有限公司","青岛银行","青岛饮料集团有限公司",
|
||||
"青钢集团"
|
||||
})
|
||||
,市直机关("市直机关",new String[]{
|
||||
"中共青岛中德生态园党组","中级法院","人力资源和社会保障局","人防办","企业托管中心","供销社","侨联","信访局","公安局","其他单位",
|
||||
"出版社","医疗保障局","卫生健康委","司法局","商务局","团市委","国家统计局青岛调查队","国资委","外办","妇联","审计局","宣传部",
|
||||
"崂山风景区管理局","工商联","市农业农村局","市发展改革委","市场监督管理局","市城市管理局","市委党校","市委军民融合办","市委政研室",
|
||||
"市委网信办","市工业和信息化局","市政府研究室","市政府驻京办","市直机关工委","市纪委监委机关","市经济发展研究院","市自然资源和规划局",
|
||||
"广播电视局","应急管理局","建管局","总工会","政法委","教育局","文联","日报社","机关事务局","档案馆","检察院","残联","民政局",
|
||||
"气象局","电大","畜牧兽医局","社科院","科协","科技局","红十字会","组织部","统战部","统计局","综合行政执法支队","编委办",
|
||||
"老干局","财政局","贸促会","退役军人事务局","青岛仲裁委员会办公室","青岛前湾保税港区","青岛国际邮轮港管理局","青岛工程职业学院",
|
||||
"青岛市乡村振兴局","青岛市交通运输局","青岛市住房公积金管理中心","青岛市住房和城乡建设局","青岛市体育局","青岛市信息产业局",
|
||||
"青岛市园林和林业局","青岛市地铁工程建设指挥部","青岛市大数据发展管理局","青岛市委党史研究院","青岛市委台港澳工作办公室",
|
||||
"青岛市政府驻沪办","青岛市文化和旅游局","青岛市民营经济发展局","青岛市水务管理局","青岛市水文局","青岛市海洋发展局","青岛市深圳联络办事处",
|
||||
"青岛市生态环境局","青岛市董家口港区开发建设指挥部","青岛市行政审批服务局","青岛市金融工作办公室","青岛市驻济南办事办",
|
||||
"青岛技师学院","青岛技院","青岛海洋科学与技术国家实验室发展中心","青岛蓝谷管理局","青岛蓝谷管理局"
|
||||
})
|
||||
,平度市("平度市",new String[]{
|
||||
"人大","企业用户","市委办","市直各单位","政协","政府办"
|
||||
})
|
||||
,新市北区("新市北区",new String[]{
|
||||
"区属企业","四方区","市北区","市北区人大","市北区委","市北区政协","市北区政府","市北区政法机关","市北区纪委","驻区单位"
|
||||
})
|
||||
,李沧区("李沧区",new String[]{
|
||||
"“五位一体”联合督查","其他企业","区属机关","李沧区人大办公室","李沧区委“作风能力提升年”活动领导小组","李沧区委办公室",
|
||||
"李沧区政协办公室","李沧区政府办公室","李沧区街道办事处","青岛市李沧区行政审批大厅"
|
||||
})
|
||||
,胶州市("胶州市",new String[]{
|
||||
"12345","365便民服务中心","中共胶州市纪律检查委员会机关(胶州市监察委员会机关)","垂直管理机构","市委机构","政协胶州市委员会机构",
|
||||
"政府机构","胶州市人大常委会","胶州市人民团体","胶州市人民检察院","胶州市人民武装部","胶州市人民法院","胶州市企业发展局",
|
||||
"胶州市发展和改革局","胶州市镇及街道办事处","集团公司"
|
||||
})
|
||||
,莱西市用户("",new String[]{
|
||||
"人大办","区属机关","双管单位","市委办","市级领导","政协办","政府办","省青岛市驻莱西机构","莱西市疫情防控指挥部",
|
||||
"重点企业"
|
||||
})
|
||||
,青岛市级("青岛市级",new String[]{
|
||||
|
||||
})
|
||||
,驻青单位("驻青单位",new String[]{
|
||||
"中国农科院烟草研究所","中国动物卫生与流行病学中心","中国铁塔股份有限公司青岛市分公司","交通运输部北海航海保障中心青岛通信中心",
|
||||
"国家体育总局青岛航海运动学校","安全局","山东广电网络有限公司青岛分公司","山东省海警第二支队","市邮政管理局",
|
||||
"民航青岛安监管理局","气象局","海事局","烟草专卖局","省胶东调水局青岛分局","财政部青岛监管局","铁路分局","青岛出入境检验检疫局",
|
||||
"青岛地质勘查开发局","青岛大学","青岛市税务局","青岛市驻青国企党建研究会","青岛广电影视传媒集团有限公司","青岛机场检验检疫局",
|
||||
"青岛海关"
|
||||
})
|
||||
,黄岛区("黄岛区",new String[]{
|
||||
"中共青岛市黄岛区委军民融合发展委员会办公室","中央驻区单位","公众投诉热线","其他联网单位","凤凰岛南岛片区村庄拆迁工作指挥部",
|
||||
"垂直机构","胶南市委办公室","董家口管委","西海岸中央公园建设指挥部","西海岸新区新型冠状病毒感染肺炎疫情防控指挥部",
|
||||
"西海岸新区涉稳隐患排查化解指挥部","西海岸新区解放思想大讨论工作推进小组办公室","西海岸经济新区中央商务区开发建设指挥部",
|
||||
"西海岸经济新区工委管委","西海岸轨道交通指挥部","转型发展区建设推进指挥部","青岛中央活力区规划建设指挥部","青岛海洋高新区管理委员会",
|
||||
"青岛西海岸新区“啤酒之城”攻坚战指挥部","青岛西海岸新区六大攻坚战总指挥部","青岛西海岸新区教育卫生项目建设推进工作领导小组",
|
||||
"驻青单位","黄岛区人大","黄岛区企业","黄岛区区直机关","黄岛区委","黄岛区政协","黄岛区政府办公室","黄岛区督导巡查组","黄岛区骨干企业(原胶南市骨干企业)"
|
||||
})
|
||||
;
|
||||
|
||||
private String[] value;
|
||||
private String code;
|
||||
|
||||
JhDeptEnum(String code,String[] value) {
|
||||
this.code = code;
|
||||
this.value = value;
|
||||
}
|
||||
public String[] getValue(){
|
||||
return value;
|
||||
}
|
||||
public String getCode(){
|
||||
return code;
|
||||
}
|
||||
|
||||
public static List<Map> getAllToList() {
|
||||
List<Map> list = new ArrayList<>();
|
||||
JhDeptEnum[] values = values();
|
||||
for(JhDeptEnum r:values){
|
||||
Map pd = new HashMap();
|
||||
pd.put(r.getCode(),r.getValue());
|
||||
list.add(pd);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
package io.renren.modules.sys.enums;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public enum JhDeptsEnum {
|
||||
|
||||
即墨区("1","即墨区"),
|
||||
城阳区("2","城阳区"),
|
||||
崂山区("3","崂山区"),
|
||||
市南区("4","市南区"),
|
||||
市直企业("5","市直企业"),
|
||||
市直机关("6","市直机关"),
|
||||
平度市("7","平度市"),
|
||||
新市北区("8","新市北区"),
|
||||
李沧区("9","李沧区"),
|
||||
胶州市("10","胶州市"),
|
||||
莱西市用户("11","莱西市用户"),
|
||||
青岛市级("12","青岛市级"),
|
||||
驻青单位("13","驻青单位"),
|
||||
黄岛区("14","黄岛区")
|
||||
;
|
||||
|
||||
private String value;
|
||||
private String code;
|
||||
|
||||
JhDeptsEnum(String code,String value) {
|
||||
this.code = code;
|
||||
this.value = value;
|
||||
}
|
||||
public String getValue(){
|
||||
return value;
|
||||
}
|
||||
public String getCode(){
|
||||
return code;
|
||||
}
|
||||
|
||||
public static List<Map> getAllToList() {
|
||||
List<Map> list = new ArrayList<>();
|
||||
JhDeptsEnum[] values = values();
|
||||
for(JhDeptsEnum r:values){
|
||||
Map pd = new HashMap();
|
||||
pd.put(r.getCode(),r.getValue());
|
||||
list.add(pd);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
|
@ -2,6 +2,7 @@ package io.renren.modules.sys.service;
|
|||
|
||||
import io.renren.common.page.PageData;
|
||||
import io.renren.common.service.BaseService;
|
||||
import io.renren.common.utils.Result;
|
||||
import io.renren.modules.sys.dto.SysUserDTO;
|
||||
import io.renren.modules.sys.entity.SysUserEntity;
|
||||
|
||||
|
@ -55,4 +56,8 @@ public interface SysUserService extends BaseService<SysUserEntity> {
|
|||
*/
|
||||
Long countAllUser();
|
||||
|
||||
Result getDeptInfoFromJH();
|
||||
|
||||
Result getUserInfoFromJH();
|
||||
|
||||
}
|
||||
|
|
|
@ -1,16 +1,25 @@
|
|||
package io.renren.modules.sys.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.renren.common.constant.Constant;
|
||||
import io.renren.common.page.PageData;
|
||||
import io.renren.common.service.impl.BaseServiceImpl;
|
||||
import io.renren.common.utils.ConvertUtils;
|
||||
import io.renren.common.utils.JhlDAPTool;
|
||||
import io.renren.common.utils.Result;
|
||||
import io.renren.modules.security.password.PasswordUtils;
|
||||
import io.renren.modules.security.user.SecurityUser;
|
||||
import io.renren.modules.security.user.UserDetail;
|
||||
import io.renren.modules.sys.dao.SysDeptDao;
|
||||
import io.renren.modules.sys.dao.SysRegionDao;
|
||||
import io.renren.modules.sys.dao.SysUserDao;
|
||||
import io.renren.modules.sys.dto.SysUserDTO;
|
||||
import io.renren.modules.sys.entity.SysDeptEntity;
|
||||
import io.renren.modules.sys.entity.SysRegionEntity;
|
||||
import io.renren.modules.sys.entity.SysUserEntity;
|
||||
import io.renren.modules.sys.enums.JhDeptEnum;
|
||||
import io.renren.modules.sys.enums.JhDeptsEnum;
|
||||
import io.renren.modules.sys.enums.SuperAdminEnum;
|
||||
import io.renren.modules.sys.service.SysDeptService;
|
||||
import io.renren.modules.sys.service.SysRoleUserService;
|
||||
|
@ -21,9 +30,11 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.naming.ldap.LdapContext;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -37,6 +48,14 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
|
|||
private SysDeptService sysDeptService;
|
||||
@Autowired
|
||||
private SysUserPostService sysUserPostService;
|
||||
@Autowired
|
||||
private JhlDAPTool jhlDAPTool;
|
||||
@Autowired
|
||||
private SysDeptDao sysDeptDao;
|
||||
@Autowired
|
||||
private SysUserDao sysUserDao;
|
||||
@Autowired
|
||||
private SysRegionDao regionDao;
|
||||
|
||||
@Override
|
||||
public PageData<SysUserDTO> page(Map<String, Object> params) {
|
||||
|
@ -177,4 +196,265 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
|
|||
return baseDao.countAllUser();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result getDeptInfoFromJH(){
|
||||
List<Map> deptList = JhDeptEnum.getAllToList();
|
||||
int size = deptList.size();
|
||||
|
||||
try{
|
||||
ExecutorService executorService = Executors.newSingleThreadExecutor();
|
||||
executorService.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int n = 0; n < size; n++) {
|
||||
|
||||
Map map1 = deptList.get(n);
|
||||
Set<String> set = map1.keySet();
|
||||
String mName = "";
|
||||
for(String s:set){
|
||||
mName = s;
|
||||
}
|
||||
String key = mName;//区名,“即墨区”
|
||||
|
||||
String[] ouStr = (String[])map1.get(key);
|
||||
|
||||
for(String ou:ouStr){
|
||||
String OU = ou+","+"OU="+mName;
|
||||
LdapContext ldapContext = jhlDAPTool.LDAP_connect(OU);
|
||||
List<Map<String,Object>> lists = jhlDAPTool.readLdap(ldapContext,"(&(OU=*)(ou=*)(!(sAMAccountType=*))(instanceType=4))");
|
||||
//Iterator<Map<String,Object>> iterator = lists.iterator();
|
||||
//给pid pids赋值
|
||||
if (lists.size() > 0) {
|
||||
lists.forEach(dept->{//1.遍历每一个map
|
||||
String namespace = dept.get("namespace").toString();
|
||||
//OU=地税局分局,OU=驻区单位,OU=新市北区,DC=qd,DC=gov,DC=cn
|
||||
String[] namespaces = namespace.split(",");
|
||||
//判断namespaces的长度,
|
||||
for(int i=1;i<namespaces.length-3;i++) {//遍历每一个map的namespace
|
||||
String dName = namespaces[i].split("=")[1];//具体的上级部门名称
|
||||
int c = i;
|
||||
for (int j = 0; j < lists.size(); j++) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
if (dName.equals(lists.get(j).get("name").toString())) {
|
||||
String id = lists.get(j).get("id").toString();
|
||||
String pidsOld = dept.get("pids").toString() == ""? "" : (dept.get("pids").toString() + ",");
|
||||
if (c == 1) {
|
||||
dept.put("pid", id);
|
||||
dept.put("pids", pidsOld + id);
|
||||
} else {
|
||||
dept.put("pids", pidsOld + id);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
//给district和type赋值
|
||||
String districtName,type;
|
||||
Long distict;
|
||||
switch (key){
|
||||
case "新市北区":
|
||||
districtName = "市北区";
|
||||
distict = getDistict(districtName);
|
||||
lists.forEach(l->{
|
||||
l.put("district",distict);
|
||||
String name = l.get("name").toString();
|
||||
if(name.contains("企业") || name.contains("集团") || name.contains("公司")){
|
||||
l.put("type",4);
|
||||
}else{
|
||||
l.put("type",3);
|
||||
}
|
||||
});
|
||||
break;
|
||||
case "青岛市级":
|
||||
districtName = "青岛市";
|
||||
distict = getDistict(districtName);
|
||||
lists.forEach(l->{
|
||||
l.put("district",distict);
|
||||
l.put("type",2);
|
||||
});
|
||||
break;
|
||||
case "莱西市用户":
|
||||
districtName = "莱西市";
|
||||
distict = getDistict(districtName);
|
||||
lists.forEach(l->{
|
||||
l.put("district",distict);
|
||||
String name = l.get("name").toString();
|
||||
if(name.contains("企业") || name.contains("集团") || name.contains("公司")){
|
||||
l.put("type",4);
|
||||
}else{
|
||||
l.put("type",3);
|
||||
}
|
||||
});
|
||||
break;
|
||||
case "黄岛区":
|
||||
districtName = "西海岸新区";
|
||||
distict = getDistict(districtName);
|
||||
lists.forEach(l->{
|
||||
l.put("district",distict);
|
||||
String name = l.get("name").toString();
|
||||
if(name.contains("企业") || name.contains("集团") || name.contains("公司")){
|
||||
l.put("type",4);
|
||||
}else{
|
||||
l.put("type",3);
|
||||
}
|
||||
});
|
||||
break;
|
||||
case "市直企业":
|
||||
distict = getDistict("青岛市");
|
||||
lists.forEach(l->{
|
||||
l.put("district",distict);
|
||||
l.put("type",4);
|
||||
});
|
||||
break;
|
||||
case "市直机关":
|
||||
distict = getDistict("青岛市");
|
||||
lists.forEach(l->{
|
||||
l.put("district",distict);
|
||||
l.put("type",2);
|
||||
});
|
||||
break;
|
||||
case "驻青单位":
|
||||
distict = getDistict("山东省");
|
||||
lists.forEach(l->{
|
||||
l.put("district",distict);
|
||||
l.put("type",1);
|
||||
});
|
||||
break;
|
||||
default:
|
||||
distict = getDistict(mName);
|
||||
lists.forEach(l->{
|
||||
l.put("district",distict);
|
||||
String name = l.get("name").toString();
|
||||
if(name.contains("企业") || name.contains("集团") || name.contains("公司")){
|
||||
l.put("type",4);
|
||||
}else{
|
||||
l.put("type",3);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
lists.forEach(list->{//如果有该ID和name,目前暂不处理,,否则插入
|
||||
SysDeptEntity dept = sysDeptDao.getById(Long.valueOf(list.get("id").toString()));
|
||||
|
||||
SysDeptEntity deptNew = new SysDeptEntity();
|
||||
deptNew.setName(list.get("name").toString());
|
||||
deptNew.setId(Long.valueOf(list.get("id").toString()));
|
||||
deptNew.setPid(Long.valueOf(list.get("pid").toString()));
|
||||
deptNew.setPids(list.get("pids").toString());
|
||||
deptNew.setDistrict(Long.valueOf(list.get("district").toString()));
|
||||
deptNew.setType(Integer.parseInt(list.get("type").toString()));
|
||||
if(dept == null){
|
||||
System.out.println("deptname->"+deptNew.getName());
|
||||
sysDeptDao.insert(deptNew);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
return new Result().ok("保存成功");
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
return new Result().error("保存失败");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result getUserInfoFromJH(){
|
||||
List<Map> deptList = JhDeptsEnum.getAllToList();
|
||||
int size = deptList.size();
|
||||
|
||||
try {
|
||||
ExecutorService executorService = Executors.newSingleThreadExecutor();
|
||||
executorService.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (int i = 1; i <= size; i++) {
|
||||
LdapContext ldapContext = jhlDAPTool.LDAP_connect(deptList.get(i - 1).get(String.valueOf(i)).toString());
|
||||
List<Map> maps = jhlDAPTool.readLdap(ldapContext);
|
||||
if (maps.size() > 0) {
|
||||
maps.forEach(m-> {
|
||||
//根据username判断
|
||||
if(m.get(("username")) != null){
|
||||
String userName = m.get("username").toString();
|
||||
SysUserEntity user = sysUserDao.getUserByName(userName);
|
||||
if(user == null){//用户表中没有该用户,插入
|
||||
SysUserEntity newUser = new SysUserEntity();
|
||||
newUser.setUsername(userName);
|
||||
newUser.setSuperAdmin(0);
|
||||
newUser.setGuid(m.get("guid") == null ? "":m.get("guid").toString());
|
||||
newUser.setId(Long.valueOf(m.get("id") == null ? "0":m.get("id").toString()));
|
||||
newUser.setRealName(m.get("real_name") == null ?"":m.get("real_name").toString());
|
||||
newUser.setEmail(m.get("email") == null ?"":m.get("email").toString());
|
||||
newUser.setMobile(m.get("mobile") == null ?"":m.get("mobile").toString());
|
||||
newUser.setStatus(1);//账号状态 1正常 0停用
|
||||
//给dept_id赋值
|
||||
String deptNames = m.get("distinguishedName") == null ? "":m.get("distinguishedName").toString();
|
||||
if(deptNames == null){
|
||||
newUser.setDeptId(0L);
|
||||
}else{
|
||||
String[] deptArray = deptNames.split(",");
|
||||
String dept,deptFather;
|
||||
dept = deptArray[1];
|
||||
deptFather = deptArray[2];
|
||||
long id = getDeptId(dept.substring(3,dept.length()),deptFather.substring(3,deptFather.length()));
|
||||
newUser.setDeptId(id);
|
||||
sysUserDao.insert(newUser);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
return new Result().ok("保存成功");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return new Result().error("保存失败");
|
||||
}
|
||||
}
|
||||
|
||||
public SysRegionEntity getRegion(String name){
|
||||
QueryWrapper<SysRegionEntity> regionWrapper = new QueryWrapper<>();
|
||||
regionWrapper.eq("name",name);
|
||||
SysRegionEntity region = regionDao.selectOne(regionWrapper);
|
||||
return region;
|
||||
}
|
||||
public long getDeptId(String deptName,String fatherDeptName){
|
||||
QueryWrapper<SysDeptEntity> deptWrapper = new QueryWrapper<>();
|
||||
deptWrapper.eq("name",deptName);
|
||||
List<SysDeptEntity> deptList = sysDeptDao.selectList(deptWrapper);
|
||||
if(deptList.size() == 0){
|
||||
return 0;
|
||||
}else if(deptList.size() == 1){
|
||||
return deptList.get(0).getId();
|
||||
}else{//出现多个相同的deptname,根据他们的父级来确定
|
||||
AtomicLong newId = new AtomicLong();
|
||||
deptList.forEach(dept->{
|
||||
long fatherId = dept.getPid();//获取其中一个的父级ID
|
||||
SysDeptEntity fatherEntity = sysDeptDao.getById(fatherId);//根据父级ID查询管理部门
|
||||
if(fatherEntity != null && fatherEntity.getName().equals(fatherDeptName)){//如果该管理部门的名称等于传进来的父级名称,那么这条dept就是我们需要的
|
||||
if(fatherEntity.getId() == fatherId){//如果父级ID等于
|
||||
newId.set(dept.getId());
|
||||
}
|
||||
}
|
||||
});
|
||||
return newId.get();
|
||||
}
|
||||
}
|
||||
|
||||
public Long getDistict(String deptName){
|
||||
QueryWrapper<SysRegionEntity> regionWrapper = new QueryWrapper<>();
|
||||
regionWrapper.eq("name",deptName);
|
||||
SysRegionEntity entity = regionDao.selectOne(regionWrapper);
|
||||
if (entity == null) {
|
||||
return 0L;
|
||||
}else{
|
||||
return entity.getId();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ public class WorkDynamicsDTO implements Serializable {
|
|||
private Long updater;
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateDate;
|
||||
@ApiModelProperty(value = "备用字段1")
|
||||
@ApiModelProperty(value = "摘要")
|
||||
private String note1;
|
||||
@ApiModelProperty(value = "备用字段2")
|
||||
private String note2;
|
||||
|
|
|
@ -59,7 +59,7 @@ public class WorkDynamicsEntity {
|
|||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private Date updateDate;
|
||||
/**
|
||||
* 备用字段1
|
||||
* 摘要
|
||||
*/
|
||||
private String note1;
|
||||
/**
|
||||
|
|
|
@ -36,7 +36,7 @@ public class WorkDynamicsExcel {
|
|||
private Long updater;
|
||||
@ExcelProperty(value = "修改时间", index = 8)
|
||||
private Date updateDate;
|
||||
@ExcelProperty(value = "备用字段1", index = 9)
|
||||
@ExcelProperty(value = "摘要", index = 9)
|
||||
private String note1;
|
||||
@ExcelProperty(value = "备用字段2", index = 10)
|
||||
private String note2;
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
server:
|
||||
port: 8888
|
||||
spring:
|
||||
datasource:
|
||||
druid:
|
||||
#MySQL
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://10.10.30.10:3306/nlpt?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&useSSL=false
|
||||
username: nlpt
|
||||
password: Nlpt@2022
|
||||
initial-size: 10
|
||||
max-active: 100
|
||||
min-idle: 10
|
||||
max-wait: 10
|
||||
pool-prepared-statements: true
|
||||
max-pool-prepared-statement-per-connection-size: 20
|
||||
time-between-eviction-runs-millis: 60000
|
||||
min-evictable-idle-time-millis: 300000
|
||||
#Oracle需要打开注释
|
||||
validation-query: SELECT 1
|
||||
test-while-idle: true
|
||||
test-on-borrow: false
|
||||
test-on-return: false
|
||||
stat-view-servlet:
|
||||
enabled: true
|
||||
url-pattern: /druid/*
|
||||
filter:
|
||||
stat:
|
||||
log-slow-sql: true
|
||||
slow-sql-millis: 1000
|
||||
merge-sql: false
|
||||
wall:
|
||||
config:
|
||||
multi-statement-allow: true
|
||||
|
||||
#上传的静态资源配置
|
||||
resource:
|
||||
root_url: 10.10.30.9
|
||||
pic-host: http://${resource.root_url}:${server.port}${server.servlet.context-path}
|
||||
path: /data1/services/nengli/files/
|
||||
devModelFilePath: /data1/services/nengli/files/devModelFile
|
||||
|
||||
# 大数据部门相关配置
|
||||
big_date:
|
||||
name: 青岛市大数据发展管理局
|
||||
assignee_role_name: 部门审批人
|
||||
|
||||
hisense:
|
||||
gateway:
|
||||
url: http://devtest-security-app.hismarttv.com:8080
|
||||
|
||||
#调用青岛应急局-查询青岛地区天气信息接口
|
||||
qdyjj:
|
||||
ipAndPort: 15.2.21.238:9015
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
server:
|
||||
port: 8888
|
||||
spring:
|
||||
datasource:
|
||||
druid:
|
||||
#MySQL
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://10.10.30.10:3306/nlpt?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&useSSL=false
|
||||
username: nlpt
|
||||
password: Nlpt@2022
|
||||
initial-size: 10
|
||||
max-active: 100
|
||||
min-idle: 10
|
||||
max-wait: 10
|
||||
pool-prepared-statements: true
|
||||
max-pool-prepared-statement-per-connection-size: 20
|
||||
time-between-eviction-runs-millis: 60000
|
||||
min-evictable-idle-time-millis: 300000
|
||||
#Oracle需要打开注释
|
||||
validation-query: SELECT 1
|
||||
test-while-idle: true
|
||||
test-on-borrow: false
|
||||
test-on-return: false
|
||||
stat-view-servlet:
|
||||
enabled: true
|
||||
url-pattern: /druid/*
|
||||
filter:
|
||||
stat:
|
||||
log-slow-sql: true
|
||||
slow-sql-millis: 1000
|
||||
merge-sql: false
|
||||
wall:
|
||||
config:
|
||||
multi-statement-allow: true
|
||||
|
||||
#上传的静态资源配置
|
||||
resource:
|
||||
root_url: 10.10.30.9
|
||||
pic-host: http://${resource.root_url}:${server.port}${server.servlet.context-path}
|
||||
path: /data1/services/nengli/files/
|
||||
devModelFilePath: /data1/services/nengli/files/devModelFile
|
||||
|
||||
# 大数据部门相关配置
|
||||
big_date:
|
||||
name: 青岛市大数据发展管理局
|
||||
assignee_role_name: 部门审批人
|
||||
|
||||
hisense:
|
||||
gateway:
|
||||
url: http://devtest-security-app.hismarttv.com:8080
|
||||
|
||||
#调用青岛应急局-查询青岛地区天气信息接口
|
||||
qdyjj:
|
||||
ipAndPort: 15.2.21.238:9015
|
||||
|
|
@ -1,3 +1,6 @@
|
|||
project:
|
||||
# 平台部署位置 0:青岛市区 1:青岛西海岸 2:包头
|
||||
place: 0
|
||||
# 大数据部门相关配置
|
||||
big_date:
|
||||
name: 青岛市大数据发展管理局
|
||||
|
@ -52,8 +55,8 @@ spring:
|
|||
resources:
|
||||
static-locations: classpath:/static,classpath:/public,file:${resource.path}
|
||||
flyway:
|
||||
enable: true
|
||||
locations: classpath:db
|
||||
enabled: true
|
||||
locations: filesystem:config/db
|
||||
baseline-on-migrate: true
|
||||
baseline-version: 0
|
||||
|
||||
|
@ -93,7 +96,7 @@ system:
|
|||
yawei:
|
||||
enable: true
|
||||
|
||||
#知识库
|
||||
#对接知识库相关配置
|
||||
zsk:
|
||||
url:
|
||||
sign: https://cms.qingdao.gov.cn:9020/api-gateway/jpaas-jags-server/interface/createsign.do
|
||||
|
|
|
@ -52,6 +52,9 @@
|
|||
<include>*.json</include>
|
||||
<include>db/*.sql</include>
|
||||
</includes>
|
||||
<excludes>
|
||||
<exclude>application-prod.yml</exclude>
|
||||
</excludes>
|
||||
<filtered>true</filtered>
|
||||
<outputDirectory>${file.separator}config</outputDirectory>
|
||||
</fileSet>
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
UPDATE sys_notice SET `from` = '评论' WHERE title LIKE '需求%';
|
||||
UPDATE sys_notice SET `from` = '通知' WHERE title LIKE '流程%';
|
||||
UPDATE sys_notice SET `from` = '其他' WHERE title IS NULL;
|
|
@ -1 +1,2 @@
|
|||
ALTER TABLE `share_platform`.`t_resource_mount_apply` ADD COLUMN `resource_dto` json NULL COMMENT '挂载资源对象' AFTER `resource_id`;
|
||||
ALTER TABLE `share_platform`.`t_resource_mount_apply` ADD COLUMN `resource_dto` json NULL COMMENT '挂载资源对象';
|
||||
UPDATE `share_platform`.`t_resource_mount_apply` SET resource_dto = parameter_content;
|
|
@ -0,0 +1,3 @@
|
|||
ALTER TABLE `share_platform`.`tb_data_attr`
|
||||
ADD INDEX `resource_id`(`data_resource_id`),
|
||||
ADD FULLTEXT INDEX `attr_value`(`attr_type`, `attr_value`);
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE `share_platform`.`tb_data_resource` ADD COLUMN `info_list` json NULL COMMENT '属性信息';
|
|
@ -0,0 +1,2 @@
|
|||
ALTER TABLE `share_platform`.`tb_work_dynamics`
|
||||
MODIFY COLUMN `note1` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '摘要';
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE `sys_user` ADD COLUMN `guid` varchar(100) NULL;
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE `sys_notice` ADD COLUMN `from` varchar(255) NULL COMMENT '通知来源';
|
|
@ -0,0 +1 @@
|
|||
baotou.hlsurl=http://10.110.205.1:18088/server/device/hisdeviceapplylist/url/%s
|
|
@ -0,0 +1,6 @@
|
|||
tsingtao-xha.cloudhls=http://10.10.30.9:8001/hx-weatherwarning/camera/getCameraLiveStreamByCode?cameraCode=%s&protocol=hls
|
||||
tsingtao-xha.localhls=http://10.134.135.9:8001/hx-weatherwarning/camera/getCameraLiveStreamByCode?cameraCode=%s&protocol=hls
|
||||
tsingtao-xha.cloudcam=http://10.10.30.9:8001/hx-weather-warning/camera/getCameraListByName?name=%s&pageNo=%d&pageSize=%d
|
||||
tsingtao-xha.localcam=http://10.134.135.9:8001/hx-weather-warning/camera/getCameraListByName?name=%s&pageNo=%d&pageSize=%d
|
||||
tsingtao-xha.resourcecount=http://10.16.3.224:30090/api/share-portal/platform/catalogue/query?catalogueId=&departmentId=&serviceName=&type=&orderField=requestNum&orderType=desc&pageNum=1&pageSize=10&serviceType=data&rq=1655106309671.43
|
||||
tsingtao-xha.resourceapplyinfo=http://10.134.135.24:30058/shareportal/platform/index/abilityMarket/count
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="io.renren.modules.resource.dao.ResourceDao">
|
||||
|
@ -33,6 +33,8 @@
|
|||
<result property="enclosure" column="enclosure"/>
|
||||
<result property="undercarriageReason" column="undercarriage_reason"/>
|
||||
<result property="undercarriageUserName" column="undercarriage_user_name"/>
|
||||
<result property="infoList" column="info_list"
|
||||
typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="resourceDTO" type="io.renren.modules.resource.dto.ResourceDTO">
|
||||
|
@ -103,7 +105,7 @@
|
|||
|
||||
<select id="selectWithAttrs" resultMap="resourceDTO">
|
||||
SELECT
|
||||
tdr.*,
|
||||
DISTINCT tdr.*,
|
||||
IFNULL(taa2.approve_status, '未申请') AS "applyState",
|
||||
IFNULL(trs.score, 0 ) AS "score",
|
||||
IFNULL(taa.applyCount, 0 ) AS "applyCount",
|
||||
|
@ -179,6 +181,9 @@
|
|||
FROM tb_data_resource
|
||||
WHERE 1 = 1
|
||||
AND del_flag = 0
|
||||
<if test="type != null and type != ''">
|
||||
AND type = #{type}
|
||||
</if>
|
||||
GROUP BY type
|
||||
ORDER BY type
|
||||
</select>
|
||||
|
@ -212,34 +217,34 @@
|
|||
</select>
|
||||
|
||||
<select id="selectDTOById" resultMap="resourceDTO">
|
||||
<!-- SELECT-->
|
||||
<!-- tdr.*,-->
|
||||
<!--<!– tda.*,–>-->
|
||||
<!-- IFNULL(trs.score, 0 ) AS "score",-->
|
||||
<!-- IFNULL(taa.applyCount, 0 ) AS "applyCount",-->
|
||||
<!-- IFNULL(trc.collectCount, 0) AS "collectCount",-->
|
||||
<!-- sd.name as "deptName",-->
|
||||
<!-- IFNULL(trc2.isCollect, 'false') AS "isCollect",-->
|
||||
<!-- IFNULL(taa2.approve_status, '未申请') AS "applyState"-->
|
||||
<!-- FROM-->
|
||||
<!-- tb_data_resource tdr-->
|
||||
<!--<!– LEFT JOIN tb_data_attr tda ON tdr.id = tda.data_resource_id–>-->
|
||||
<!-- LEFT JOIN ( SELECT resource_id, AVG(score) AS "score" FROM tb_resource_score WHERE 1 = 1 AND del_flag = 0 GROUP-->
|
||||
<!-- BY resource_id ) trs ON tdr.id = trs.resource_id-->
|
||||
<!-- LEFT JOIN ( SELECT resource_id, COUNT(id) AS "applyCount" FROM t_ability_application WHERE 1 = 1 AND del_flag =-->
|
||||
<!-- 0 GROUP BY resource_id ) taa ON tdr.id = taa.resource_id-->
|
||||
<!-- LEFT JOIN ( SELECT resource_id, COUNT(id) AS "collectCount" FROM tb_resource_collection WHERE 1 = 1 AND del_flag-->
|
||||
<!-- = 0 GROUP BY resource_id ) trc ON tdr.id = trc.resource_id-->
|
||||
<!-- LEFT JOIN ( SELECT resource_id, user_id, ( CASE COUNT( id ) WHEN 1 THEN 'true' ELSE 'false' END ) AS "isCollect"-->
|
||||
<!-- FROM tb_resource_collection WHERE-->
|
||||
<!-- 1 = 1 AND del_flag = 0 AND user_id = #{userId}-->
|
||||
<!-- GROUP BY resource_id) trc2 ON tdr.id = trc2.resource_id-->
|
||||
<!-- LEFT JOIN ( SELECT resource_id, approve_status FROM t_ability_application WHERE-->
|
||||
<!-- 1 = 1 AND del_flag = 0 AND user_id = #{userId}-->
|
||||
<!-- GROUP BY id LIMIT 1) taa2 ON tdr.id = taa2.resource_id-->
|
||||
<!-- LEFT JOIN sys_dept sd ON tdr.dept_id = sd.id-->
|
||||
<!-- WHERE 1 = 1-->
|
||||
<!-- AND tdr.id = #{id}-->
|
||||
<!-- SELECT-->
|
||||
<!-- tdr.*,-->
|
||||
<!--<!– tda.*,–>-->
|
||||
<!-- IFNULL(trs.score, 0 ) AS "score",-->
|
||||
<!-- IFNULL(taa.applyCount, 0 ) AS "applyCount",-->
|
||||
<!-- IFNULL(trc.collectCount, 0) AS "collectCount",-->
|
||||
<!-- sd.name as "deptName",-->
|
||||
<!-- IFNULL(trc2.isCollect, 'false') AS "isCollect",-->
|
||||
<!-- IFNULL(taa2.approve_status, '未申请') AS "applyState"-->
|
||||
<!-- FROM-->
|
||||
<!-- tb_data_resource tdr-->
|
||||
<!--<!– LEFT JOIN tb_data_attr tda ON tdr.id = tda.data_resource_id–>-->
|
||||
<!-- LEFT JOIN ( SELECT resource_id, AVG(score) AS "score" FROM tb_resource_score WHERE 1 = 1 AND del_flag = 0 GROUP-->
|
||||
<!-- BY resource_id ) trs ON tdr.id = trs.resource_id-->
|
||||
<!-- LEFT JOIN ( SELECT resource_id, COUNT(id) AS "applyCount" FROM t_ability_application WHERE 1 = 1 AND del_flag =-->
|
||||
<!-- 0 GROUP BY resource_id ) taa ON tdr.id = taa.resource_id-->
|
||||
<!-- LEFT JOIN ( SELECT resource_id, COUNT(id) AS "collectCount" FROM tb_resource_collection WHERE 1 = 1 AND del_flag-->
|
||||
<!-- = 0 GROUP BY resource_id ) trc ON tdr.id = trc.resource_id-->
|
||||
<!-- LEFT JOIN ( SELECT resource_id, user_id, ( CASE COUNT( id ) WHEN 1 THEN 'true' ELSE 'false' END ) AS "isCollect"-->
|
||||
<!-- FROM tb_resource_collection WHERE-->
|
||||
<!-- 1 = 1 AND del_flag = 0 AND user_id = #{userId}-->
|
||||
<!-- GROUP BY resource_id) trc2 ON tdr.id = trc2.resource_id-->
|
||||
<!-- LEFT JOIN ( SELECT resource_id, approve_status FROM t_ability_application WHERE-->
|
||||
<!-- 1 = 1 AND del_flag = 0 AND user_id = #{userId}-->
|
||||
<!-- GROUP BY id LIMIT 1) taa2 ON tdr.id = taa2.resource_id-->
|
||||
<!-- LEFT JOIN sys_dept sd ON tdr.dept_id = sd.id-->
|
||||
<!-- WHERE 1 = 1-->
|
||||
<!-- AND tdr.id = #{id}-->
|
||||
|
||||
SELECT
|
||||
tdr.*,
|
||||
|
@ -249,7 +254,7 @@
|
|||
sd.NAME AS "deptName",
|
||||
IFNULL( trc2.isCollect, 'false' ) AS "isCollect",
|
||||
IF
|
||||
( taa2.approve_status < 1, '未申请', "已申请" ) AS "applyState"
|
||||
( taa2.approve_status < 1, '未申请', '已申请' ) AS "applyState"
|
||||
FROM
|
||||
tb_data_resource tdr
|
||||
LEFT JOIN ( SELECT resource_id, AVG( score ) AS "score" FROM tb_resource_score WHERE 1 = 1 AND del_flag = 0
|
||||
|
@ -564,7 +569,8 @@
|
|||
tdav.data_resource_id AS resourceId
|
||||
FROM
|
||||
tb_data_attr tdav
|
||||
JOIN mysql.help_topic b ON b.help_topic_id < ( LENGTH( tdav.attr_value ) - LENGTH( REPLACE ( tdav.attr_value, ';', '' ) ) + 1 )
|
||||
JOIN mysql.help_topic b ON b.help_topic_id < ( LENGTH( tdav.attr_value ) - LENGTH( REPLACE ( tdav.attr_value,
|
||||
';', '' ) ) + 1 )
|
||||
WHERE
|
||||
1 = 1
|
||||
AND tdav.attr_type = '应用领域'
|
||||
|
@ -591,230 +597,230 @@
|
|||
|
||||
<select id="selectMaxDeptIds" resultType="java.lang.Long">
|
||||
SELECT
|
||||
dept_id
|
||||
dept_id
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
COUNT( id ) AS "count",
|
||||
dept_id
|
||||
FROM
|
||||
tb_data_resource
|
||||
WHERE
|
||||
1 = 1
|
||||
AND del_flag = 0
|
||||
AND dept_id IS NOT NULL
|
||||
GROUP BY
|
||||
dept_id
|
||||
) temp1
|
||||
(
|
||||
SELECT
|
||||
COUNT( id ) AS "count",
|
||||
dept_id
|
||||
FROM
|
||||
tb_data_resource
|
||||
WHERE
|
||||
temp1.count = (
|
||||
SELECT
|
||||
MAX( count ) AS "total"
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
COUNT( id ) AS "count"
|
||||
FROM
|
||||
tb_data_resource
|
||||
WHERE
|
||||
1 = 1
|
||||
AND del_flag = 0
|
||||
AND dept_id IS NOT NULL
|
||||
GROUP BY
|
||||
dept_id
|
||||
) temp2
|
||||
)
|
||||
1 = 1
|
||||
AND del_flag = 0
|
||||
AND dept_id IS NOT NULL
|
||||
GROUP BY
|
||||
dept_id
|
||||
) temp1
|
||||
WHERE
|
||||
temp1.count = (
|
||||
SELECT
|
||||
MAX( count ) AS "total"
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
COUNT( id ) AS "count"
|
||||
FROM
|
||||
tb_data_resource
|
||||
WHERE
|
||||
1 = 1
|
||||
AND del_flag = 0
|
||||
AND dept_id IS NOT NULL
|
||||
GROUP BY
|
||||
dept_id
|
||||
) temp2
|
||||
)
|
||||
</select>
|
||||
|
||||
<select id="selectByDeptId" resultType="java.util.Map">
|
||||
SELECT id,
|
||||
name
|
||||
name
|
||||
FROM tb_data_resource
|
||||
WHERE 1 = 1
|
||||
AND del_flag = 0
|
||||
AND dept_id = #{deptId}
|
||||
AND del_flag = 0
|
||||
AND dept_id = #{deptId}
|
||||
</select>
|
||||
|
||||
<select id="selectDeptCountList" resultType="java.util.Map">
|
||||
SELECT
|
||||
sd.id AS "deptId",
|
||||
sd.NAME AS "deptName",
|
||||
COUNT( tdr.id ) AS "total"
|
||||
sd.id AS "deptId",
|
||||
sd.NAME AS "deptName",
|
||||
COUNT( tdr.id ) AS "total"
|
||||
FROM
|
||||
tb_data_resource tdr,
|
||||
sys_dept sd
|
||||
tb_data_resource tdr,
|
||||
sys_dept sd
|
||||
WHERE
|
||||
1 = 1
|
||||
AND tdr.del_flag = 0
|
||||
AND tdr.dept_id = sd.id
|
||||
1 = 1
|
||||
AND tdr.del_flag = 0
|
||||
AND tdr.dept_id = sd.id
|
||||
GROUP BY tdr.dept_id
|
||||
ORDER BY total DESC
|
||||
</select>
|
||||
|
||||
<select id="selectMaxApplyDeptIds" resultType="java.lang.Long">
|
||||
SELECT
|
||||
dept_id
|
||||
dept_id
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
COUNT( taa.id ) AS "count",
|
||||
su.dept_id
|
||||
FROM
|
||||
t_ability_application taa,
|
||||
sys_user su
|
||||
WHERE
|
||||
1 = 1
|
||||
AND taa.user_id = su.id
|
||||
AND taa.user_id IS NOT NULL
|
||||
GROUP BY
|
||||
su.dept_id
|
||||
) temp1
|
||||
(
|
||||
SELECT
|
||||
COUNT( taa.id ) AS "count",
|
||||
su.dept_id
|
||||
FROM
|
||||
t_ability_application taa,
|
||||
sys_user su
|
||||
WHERE
|
||||
temp1.count = (
|
||||
SELECT
|
||||
MAX( count ) AS "total"
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
COUNT( taa.id ) AS "count"
|
||||
FROM
|
||||
t_ability_application taa,
|
||||
sys_user su
|
||||
WHERE
|
||||
1 = 1
|
||||
AND taa.user_id = su.id
|
||||
AND taa.user_id IS NOT NULL
|
||||
GROUP BY
|
||||
su.dept_id
|
||||
) temp2
|
||||
)
|
||||
1 = 1
|
||||
AND taa.user_id = su.id
|
||||
AND taa.user_id IS NOT NULL
|
||||
GROUP BY
|
||||
su.dept_id
|
||||
) temp1
|
||||
WHERE
|
||||
temp1.count = (
|
||||
SELECT
|
||||
MAX( count ) AS "total"
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
COUNT( taa.id ) AS "count"
|
||||
FROM
|
||||
t_ability_application taa,
|
||||
sys_user su
|
||||
WHERE
|
||||
1 = 1
|
||||
AND taa.user_id = su.id
|
||||
AND taa.user_id IS NOT NULL
|
||||
GROUP BY
|
||||
su.dept_id
|
||||
) temp2
|
||||
)
|
||||
</select>
|
||||
|
||||
<select id="selectByApplyDeptId" resultType="java.util.Map">
|
||||
SELECT tdr.id,
|
||||
tdr.name
|
||||
tdr.name
|
||||
FROM t_ability_application taa, tb_data_resource tdr, sys_user su
|
||||
WHERE 1 = 1
|
||||
AND tdr.del_flag = 0
|
||||
AND su.id = taa.user_id
|
||||
AND taa.resource_id = tdr.id
|
||||
AND su.dept_id = #{deptId}
|
||||
AND tdr.del_flag = 0
|
||||
AND su.id = taa.user_id
|
||||
AND taa.resource_id = tdr.id
|
||||
AND su.dept_id = #{deptId}
|
||||
</select>
|
||||
|
||||
<select id="selectApplyDeptCountList" resultType="java.util.Map">
|
||||
SELECT
|
||||
sd.id AS "deptId",
|
||||
sd.NAME AS "deptName",
|
||||
COUNT( taa.resource_id ) AS "total"
|
||||
sd.id AS "deptId",
|
||||
sd.NAME AS "deptName",
|
||||
COUNT( taa.resource_id ) AS "total"
|
||||
FROM
|
||||
t_ability_application taa,
|
||||
sys_user su,
|
||||
sys_dept sd
|
||||
t_ability_application taa,
|
||||
sys_user su,
|
||||
sys_dept sd
|
||||
WHERE
|
||||
1 = 1
|
||||
AND su.id = taa.user_id
|
||||
AND su.dept_id = sd.id
|
||||
1 = 1
|
||||
AND su.id = taa.user_id
|
||||
AND su.dept_id = sd.id
|
||||
GROUP BY
|
||||
sd.id
|
||||
sd.id
|
||||
ORDER BY
|
||||
total DESC
|
||||
total DESC
|
||||
</select>
|
||||
|
||||
<select id="selectDeptTypeCountList" resultType="java.util.Map">
|
||||
SELECT
|
||||
COUNT( tdr.id ) AS "count",
|
||||
sd.NAME AS "deptName",
|
||||
(CASE tdr.type
|
||||
WHEN '应用资源' THEN 'yyzy'
|
||||
WHEN '组件服务' THEN 'zjfw'
|
||||
WHEN '基础设施' THEN 'jcss'
|
||||
WHEN '知识库' THEN 'zsk'
|
||||
WHEN '数据资源' THEN 'sjzy'
|
||||
ELSE 'yyzy' END)AS "type"
|
||||
COUNT( tdr.id ) AS "count",
|
||||
sd.NAME AS "deptName",
|
||||
(CASE tdr.type
|
||||
WHEN '应用资源' THEN 'yyzy'
|
||||
WHEN '组件服务' THEN 'zjfw'
|
||||
WHEN '基础设施' THEN 'jcss'
|
||||
WHEN '知识库' THEN 'zsk'
|
||||
WHEN '数据资源' THEN 'sjzy'
|
||||
ELSE 'yyzy' END)AS "type"
|
||||
FROM
|
||||
tb_data_resource tdr,
|
||||
sys_dept sd
|
||||
tb_data_resource tdr,
|
||||
sys_dept sd
|
||||
WHERE
|
||||
1 = 1
|
||||
AND tdr.del_flag = 0
|
||||
AND tdr.dept_id = sd.id
|
||||
1 = 1
|
||||
AND tdr.del_flag = 0
|
||||
AND tdr.dept_id = sd.id
|
||||
GROUP BY
|
||||
tdr.dept_id,
|
||||
tdr.type
|
||||
tdr.dept_id,
|
||||
tdr.type
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectApplyDeptTypeCountList" resultType="java.util.Map">
|
||||
SELECT
|
||||
COUNT( taa.resource_id ) AS "count",
|
||||
sd.NAME AS "deptName",
|
||||
(
|
||||
CASE
|
||||
tdr.type
|
||||
WHEN '应用资源' THEN
|
||||
'yyzy'
|
||||
WHEN '组件服务' THEN
|
||||
'zjfw'
|
||||
WHEN '基础设施' THEN
|
||||
'jcss'
|
||||
WHEN '知识库' THEN
|
||||
'zsk'
|
||||
WHEN '数据资源' THEN
|
||||
'sjzy' ELSE 'yyzy'
|
||||
END
|
||||
) AS "type"
|
||||
COUNT( taa.resource_id ) AS "count",
|
||||
sd.NAME AS "deptName",
|
||||
(
|
||||
CASE
|
||||
tdr.type
|
||||
WHEN '应用资源' THEN
|
||||
'yyzy'
|
||||
WHEN '组件服务' THEN
|
||||
'zjfw'
|
||||
WHEN '基础设施' THEN
|
||||
'jcss'
|
||||
WHEN '知识库' THEN
|
||||
'zsk'
|
||||
WHEN '数据资源' THEN
|
||||
'sjzy' ELSE 'yyzy'
|
||||
END
|
||||
) AS "type"
|
||||
FROM
|
||||
tb_data_resource tdr,
|
||||
sys_dept sd,
|
||||
sys_user su,
|
||||
t_ability_application taa
|
||||
tb_data_resource tdr,
|
||||
sys_dept sd,
|
||||
sys_user su,
|
||||
t_ability_application taa
|
||||
WHERE
|
||||
1 = 1
|
||||
AND tdr.del_flag = 0
|
||||
AND taa.user_id = su.id
|
||||
AND su.dept_id = sd.id
|
||||
AND taa.resource_id = tdr.id
|
||||
1 = 1
|
||||
AND tdr.del_flag = 0
|
||||
AND taa.user_id = su.id
|
||||
AND su.dept_id = sd.id
|
||||
AND taa.resource_id = tdr.id
|
||||
GROUP BY
|
||||
sd.id,
|
||||
tdr.type
|
||||
sd.id,
|
||||
tdr.type
|
||||
</select>
|
||||
|
||||
<select id="selectMaxType" resultType="java.lang.String">
|
||||
SELECT
|
||||
type
|
||||
type
|
||||
FROM
|
||||
( SELECT COUNT( id ) AS "count", type FROM tb_data_resource WHERE 1 = 1 AND del_flag = 0 GROUP BY type ) temp1
|
||||
( SELECT COUNT( id ) AS "count", type FROM tb_data_resource WHERE 1 = 1 AND del_flag = 0 GROUP BY type ) temp1
|
||||
WHERE
|
||||
temp1.count = (
|
||||
SELECT
|
||||
MAX( count ) AS "total"
|
||||
FROM
|
||||
( SELECT COUNT( id ) AS "count" FROM tb_data_resource WHERE 1 = 1 AND del_flag = 0 GROUP BY type ) temp2
|
||||
)
|
||||
temp1.count = (
|
||||
SELECT
|
||||
MAX( count ) AS "total"
|
||||
FROM
|
||||
( SELECT COUNT( id ) AS "count" FROM tb_data_resource WHERE 1 = 1 AND del_flag = 0 GROUP BY type ) temp2
|
||||
)
|
||||
</select>
|
||||
|
||||
<select id="selectByType" resultType="java.util.Map">
|
||||
SELECT id,
|
||||
name
|
||||
name
|
||||
FROM tb_data_resource
|
||||
WHERE 1 = 1
|
||||
AND del_flag = 0
|
||||
AND type = #{type}
|
||||
AND del_flag = 0
|
||||
AND type = #{type}
|
||||
</select>
|
||||
|
||||
<select id="selectTypeCountList" resultType="java.util.Map">
|
||||
SELECT
|
||||
tdr.type,
|
||||
COUNT( tdr.id ) AS "total"
|
||||
tdr.type,
|
||||
COUNT( tdr.id ) AS "total"
|
||||
FROM
|
||||
tb_data_resource tdr
|
||||
tb_data_resource tdr
|
||||
WHERE
|
||||
1 = 1
|
||||
AND tdr.del_flag = 0
|
||||
1 = 1
|
||||
AND tdr.del_flag = 0
|
||||
GROUP BY
|
||||
tdr.type
|
||||
tdr.type
|
||||
ORDER BY
|
||||
total DESC
|
||||
total DESC
|
||||
</select>
|
||||
|
||||
<select id="selectMaxAppArea" resultType="java.lang.String">
|
||||
|
@ -827,7 +833,8 @@
|
|||
COUNT( tdav.data_resource_id ) AS "count"
|
||||
FROM
|
||||
tb_data_attr tdav
|
||||
JOIN mysql.help_topic b ON b.help_topic_id < ( LENGTH( tdav.attr_value ) - LENGTH( REPLACE ( tdav.attr_value, ';', '' ) ) + 1 )
|
||||
JOIN mysql.help_topic b ON b.help_topic_id < ( LENGTH( tdav.attr_value ) - LENGTH( REPLACE ( tdav.attr_value,
|
||||
';', '' ) ) + 1 )
|
||||
WHERE
|
||||
1 = 1
|
||||
AND tdav.attr_type = '应用领域'
|
||||
|
@ -847,7 +854,8 @@
|
|||
COUNT( tdav.data_resource_id ) AS "count"
|
||||
FROM
|
||||
tb_data_attr tdav
|
||||
JOIN mysql.help_topic b ON b.help_topic_id < ( LENGTH( tdav.attr_value ) - LENGTH( REPLACE ( tdav.attr_value, ';', '' ) ) + 1 )
|
||||
JOIN mysql.help_topic b ON b.help_topic_id < ( LENGTH( tdav.attr_value ) - LENGTH( REPLACE ( tdav.attr_value,
|
||||
';', '' ) ) + 1 )
|
||||
WHERE
|
||||
1 = 1
|
||||
AND tdav.attr_type = '应用领域'
|
||||
|
@ -861,17 +869,17 @@
|
|||
|
||||
<select id="selectByAppArea" resultType="java.util.Map">
|
||||
SELECT
|
||||
tdr.id,
|
||||
tdr.name
|
||||
tdr.id,
|
||||
tdr.name
|
||||
FROM
|
||||
tb_data_resource tdr,
|
||||
tb_data_attr tda
|
||||
tb_data_resource tdr,
|
||||
tb_data_attr tda
|
||||
WHERE
|
||||
1 = 1
|
||||
AND tdr.del_flag = 0
|
||||
AND tda.del_flag = 0
|
||||
AND tdr.id = tda.data_resource_id
|
||||
AND attr_value LIKE CONCAT('%', #{type}, '%')
|
||||
1 = 1
|
||||
AND tdr.del_flag = 0
|
||||
AND tda.del_flag = 0
|
||||
AND tdr.id = tda.data_resource_id
|
||||
AND attr_value LIKE CONCAT('%', #{type}, '%')
|
||||
</select>
|
||||
|
||||
<select id="selectAppAreaCountList" resultType="java.util.Map">
|
||||
|
@ -880,7 +888,8 @@
|
|||
COUNT( tdav.data_resource_id ) AS "total"
|
||||
FROM
|
||||
tb_data_attr tdav
|
||||
JOIN mysql.help_topic b ON b.help_topic_id < ( LENGTH( tdav.attr_value ) - LENGTH( REPLACE ( tdav.attr_value, ';', '' ) ) + 1 )
|
||||
JOIN mysql.help_topic b ON b.help_topic_id < ( LENGTH( tdav.attr_value ) - LENGTH( REPLACE ( tdav.attr_value,
|
||||
';', '' ) ) + 1 )
|
||||
WHERE
|
||||
1 = 1
|
||||
AND tdav.attr_type = '应用领域'
|
||||
|
@ -890,4 +899,43 @@
|
|||
type
|
||||
</select>
|
||||
|
||||
<select id="selectTopFiveComponentServiceApplications" resultType="java.util.Map">
|
||||
SELECT
|
||||
tdr.id AS "resourceId",
|
||||
tdr.NAME AS "name",
|
||||
IFNULL(COUNT( taa.id ), 0) AS "count"
|
||||
FROM
|
||||
tb_data_resource tdr
|
||||
LEFT JOIN t_ability_application taa ON tdr.id = taa.resource_id AND taa.del_flag = 0
|
||||
WHERE
|
||||
1 = 1
|
||||
AND tdr.del_flag = 0
|
||||
AND tdr.type = '组件服务'
|
||||
GROUP BY
|
||||
tdr.id
|
||||
ORDER BY
|
||||
count DESC
|
||||
LIMIT 5
|
||||
</select>
|
||||
|
||||
<select id="selectTopFiveComponentServiceScore" resultType="java.util.Map">
|
||||
SELECT
|
||||
tdr.id AS "resourceId",
|
||||
tdr.NAME AS "name",
|
||||
IFNULL( SUM( trs.score ), 0 ) AS "score"
|
||||
FROM
|
||||
tb_data_resource tdr
|
||||
LEFT JOIN tb_resource_score trs ON tdr.id = trs.resource_id
|
||||
AND trs.del_flag = 0
|
||||
WHERE
|
||||
1 = 1
|
||||
AND tdr.del_flag = 0
|
||||
AND tdr.type = '组件服务'
|
||||
GROUP BY
|
||||
tdr.id
|
||||
ORDER BY
|
||||
score DESC
|
||||
LIMIT 5
|
||||
</select>
|
||||
|
||||
</mapper>
|
|
@ -73,5 +73,18 @@
|
|||
WHERE
|
||||
`status` = 1
|
||||
</select>
|
||||
<insert id="batchSaveUser" parameterType="java.util.List">
|
||||
INSERT INTO user_bak (displayName,distinguishedName,userPrincipalName,telephoneNumber,objectGUID,sAMAccountName,primaryGroupID)
|
||||
values
|
||||
<foreach collection="list" item="item" separator="," >
|
||||
(
|
||||
#{item.displayName},#{item.distinguishedName},#{item.userPrincipalName},#{item.telephoneNumber},
|
||||
#{item.objectGUID},#{item.sAMAccountName},#{item.primaryGroupID}
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
<select id="getUserByName" parameterType="java.lang.String" resultType="io.renren.modules.sys.entity.SysUserEntity">
|
||||
SELECT id,username FROM sys_user WHERE username = #{username} limit 1
|
||||
</select>
|
||||
|
||||
</mapper>
|
Binary file not shown.
|
@ -1,5 +1,7 @@
|
|||
package io.renren.common.constant;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* 常量
|
||||
*/
|
||||
|
@ -212,4 +214,40 @@ public interface Constant {
|
|||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 项目运行地点
|
||||
*/
|
||||
enum ProjectPlace {
|
||||
/**
|
||||
* 青岛市区
|
||||
*/
|
||||
TSINGTAO(0),
|
||||
/**
|
||||
* 青岛西海岸
|
||||
*/
|
||||
TSINGTAO_XHA(1),
|
||||
/**
|
||||
* 包头
|
||||
*/
|
||||
BAOTOU(2),
|
||||
/**
|
||||
* 未知
|
||||
*/
|
||||
UNKNOWN(Integer.MAX_VALUE);
|
||||
private int value;
|
||||
|
||||
ProjectPlace(int value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public static ProjectPlace getByFlag(int flag) {
|
||||
ProjectPlace[] index = ProjectPlace.values();
|
||||
return Arrays.asList(index).stream().filter(index_ -> index_.value == flag).findAny().orElse(ProjectPlace.UNKNOWN);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,292 @@
|
|||
package io.renren.common.utils;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.naming.Context;
|
||||
import javax.naming.NamingEnumeration;
|
||||
import javax.naming.NamingException;
|
||||
import javax.naming.directory.Attribute;
|
||||
import javax.naming.directory.SearchControls;
|
||||
import javax.naming.directory.SearchResult;
|
||||
import javax.naming.ldap.*;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 通过该类完成金宏系统中 部门和用户名信息的提取
|
||||
*/
|
||||
@Component
|
||||
public class JhlDAPTool {
|
||||
private String URL = "ldap://15.72.158.50:389/";
|
||||
private String BASEDN = "DC=qd,DC=gov,DC=cn";//指定从哪里开始搜索,从上往下推
|
||||
private String username = "CN=智慧发改项目认证接入,OU=管理开发用户,DC=qd,DC=gov,DC=cn";//要登录的账号所在位置,从下往上推
|
||||
private String password = "QD@zhfg2019";
|
||||
private String FACTORY = "com.sun.jndi.ldap.LdapCtxFactory";
|
||||
|
||||
LdapContext ctx = null;
|
||||
Control[] connCtls = null;
|
||||
|
||||
//登录LDAP服务器
|
||||
public LdapContext LDAP_connect(String OU) {
|
||||
|
||||
//1. 设置初始LDAP上下文的属性,并初始化LDAP上下文
|
||||
Hashtable<String, String> env = new Hashtable<String, String>();
|
||||
env.put(Context.INITIAL_CONTEXT_FACTORY, FACTORY);
|
||||
if(StringUtils.isEmpty(OU)){
|
||||
env.put(Context.PROVIDER_URL, URL +BASEDN);//路径
|
||||
}else{
|
||||
env.put(Context.PROVIDER_URL, URL + "OU="+OU+","+BASEDN);//路径
|
||||
}
|
||||
env.put(Context.SECURITY_AUTHENTICATION, "simple");
|
||||
env.put(Context.SECURITY_PRINCIPAL, username); // 管理员
|
||||
env.put(Context.SECURITY_CREDENTIALS, password); // 管理员密码
|
||||
// **解决 乱码 的关键一句
|
||||
env.put("java.naming.ldap.attributes.binary","objectGUID");
|
||||
try {
|
||||
ctx = new InitialLdapContext(env, connCtls);
|
||||
System.out.println( "连接成功" );
|
||||
return ctx;
|
||||
} catch (javax.naming.AuthenticationException e) {
|
||||
System.out.println("连接失败:");
|
||||
e.printStackTrace();
|
||||
} catch (Exception e) {
|
||||
System.out.println("连接出错:"+e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void closeContext(){
|
||||
if (ctx != null) {
|
||||
try {
|
||||
ctx.close();
|
||||
}
|
||||
catch (NamingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据区名获取用户信息
|
||||
* @param
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
public List<Map> readLdap(LdapContext ctx){//OU=即墨区,
|
||||
|
||||
List<Map> lm=new ArrayList<Map>(1000);
|
||||
byte[] cookie = null;
|
||||
|
||||
try {
|
||||
if(ctx!=null) {
|
||||
|
||||
//2. 设置查询的属性
|
||||
SearchControls searchControls = new SearchControls();//搜索控件
|
||||
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);//搜索范围,1只搜索指定命名对象的一个级别,这是缺省值,2以指定命名对象为根结点的整棵树
|
||||
//分页
|
||||
ctx.setRequestControls(new Control[]{new PagedResultsControl(2, Control.CRITICAL)});
|
||||
|
||||
do {
|
||||
NamingEnumeration<SearchResult> answer = ctx.search("", "sAMAccountType=805306368", searchControls);
|
||||
//NamingEnumeration<SearchResult> answer = ctx.search("", "objectCategory=CN=Person,CN=Schema,CN=Configuration,DC=gov,DC=cn", searchControls);
|
||||
while (answer.hasMore()) {
|
||||
SearchResult result = (SearchResult) answer.next();
|
||||
NamingEnumeration<? extends Attribute> attrs = result.getAttributes().getAll();
|
||||
//System.out.println("getNameInNamespace-》"+result.getNameInNamespace());//CN=李平先,OU=抬三,OU=即墨普东中心社区,OU=即墨中心社区,OU=即墨区,DC=qd,DC=gov,DC=cn
|
||||
Map<String,Object> user = new HashMap<>();
|
||||
while (attrs.hasMore()) {
|
||||
Attribute next = attrs.next();
|
||||
//System.out.println(next);
|
||||
|
||||
if ("displayName".equals(next.getID())) {
|
||||
user.put("real_name",next.get().toString());
|
||||
//user.setDisplayName(next.get().toString());
|
||||
}else if("sAMAccountName".equals(next.getID())){
|
||||
user.put("username",next.get().toString());
|
||||
//user.setSamaccountName(next.get().toString());
|
||||
}else if("userPrincipalName".equals(next.getID())){
|
||||
user.put("email",next.get().toString());
|
||||
//user.setUserPrincipalName(next.get().toString());
|
||||
}else if("telephoneNumber".equals(next.getID())){
|
||||
user.put("mobile",next.get().toString());
|
||||
//user.setTelephoneNumber(next.get().toString());
|
||||
}else if("distinguishedName".equals(next.getID())){
|
||||
//CN=葛琳,OU=城阳区疾病预防控制中心,OU=城阳区卫生健康局,OU=区属机关,OU=城阳区,DC=qd,DC=gov,DC=cn
|
||||
// String distinguishedName = next.get().toString();
|
||||
// String[] distinguishedNames = distinguishedName.split(",");
|
||||
// String deptName = distinguishedNames[1].split("=")[1];
|
||||
user.put("distinguishedName",next.get().toString());
|
||||
}else if("objectGUID".equals(next.getID())){
|
||||
String guidStr = next.getID().toString();
|
||||
user.put("id",SingleID.getSingleID(guidStr));
|
||||
String guid = guidStr.substring(1,guidStr.length()-1);
|
||||
user.put("guid",guid);
|
||||
|
||||
}
|
||||
}
|
||||
lm.add(user);
|
||||
|
||||
}
|
||||
cookie = parseControls(ctx.getResponseControls());
|
||||
ctx.setRequestControls(new Control[]{new PagedResultsControl(2, cookie, Control.CRITICAL)});
|
||||
} while (cookie != null && (cookie.length != 0));
|
||||
}
|
||||
|
||||
}catch (Exception e) {
|
||||
System.out.println("获取用户信息异常:");
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
closeContext();
|
||||
}
|
||||
System.out.println(lm.size());
|
||||
return lm;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取管理部门信息
|
||||
* @param ctx
|
||||
* @param filter
|
||||
* @return
|
||||
*/
|
||||
public List<Map<String,Object>> readLdap(LdapContext ctx,String filter){
|
||||
|
||||
List<Map<String,Object>> lm=new ArrayList<>(1000);
|
||||
byte[] cookie = null;
|
||||
|
||||
try {
|
||||
if(ctx!=null) {
|
||||
|
||||
//过滤条件
|
||||
//String filter = "(&(objectClass=*)(uid=*))";
|
||||
//String filter = "(&(userAccountControl=66048)(sAMAccountType=805306368))";
|
||||
//String[] attrPersonArray = {"sAMAccountName", "distinguishedName", "displayName"};
|
||||
//String[] attrPersonArray = { "uid", "userPassword", "displayName", "cn", "sn", "mail", "description","uidNumber","gidNumber" };
|
||||
|
||||
//2. 设置查询的属性
|
||||
SearchControls searchControls = new SearchControls();//搜索控件
|
||||
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);//搜索范围,1只搜索指定命名对象的一个级别,这是缺省值,2以指定命名对象为根结点的整棵树 SearchControls.SUBTREE_SCOPE
|
||||
//searchControls.setReturningAttributes(attrPersonArray);
|
||||
//分页
|
||||
ctx.setRequestControls(new Control[]{new PagedResultsControl(2, Control.CRITICAL)});
|
||||
|
||||
//IdentifierGenerator identifierGenerator=new DefaultIdentifierGenerator();
|
||||
do {
|
||||
//3.(1)要搜索的上下文或对象的名称;(2).过滤条件,可为null,默认搜索所有信息;(3).搜索控件,可为null,使用默认的搜索控件
|
||||
//objectCategory=CN=Person,CN=Schema,CN=Configuration,DC=gov,DC=cn
|
||||
//sAMAccountType=805306368
|
||||
|
||||
NamingEnumeration<SearchResult> answer = ctx.search("", filter, searchControls);
|
||||
//NamingEnumeration<SearchResult> answer = ctx.search("", "objectCategory=CN=Person,CN=Schema,CN=Configuration,DC=gov,DC=cn", searchControls);
|
||||
|
||||
//<SearchResult> answer = ctx.search("",filter.toString(),searchControls);
|
||||
while (answer.hasMore()) {
|
||||
SearchResult result = (SearchResult) answer.next();
|
||||
NamingEnumeration<? extends Attribute> attrs = result.getAttributes().getAll();
|
||||
//System.out.println(result.getName());//CN=李平先,OU=抬三,OU=即墨普东中心社区,OU=即墨中心社区
|
||||
//System.out.println(result.getClass());
|
||||
System.out.println("getNameInNamespace-》"+result.getNameInNamespace());//CN=李平先,OU=抬三,OU=即墨普东中心社区,OU=即墨中心社区,OU=即墨区,DC=qd,DC=gov,DC=cn
|
||||
Map<String,Object> dept = new HashMap<>();
|
||||
while (attrs.hasMore()) {
|
||||
Attribute next = attrs.next();
|
||||
//System.out.println(next);
|
||||
|
||||
if ("name".equals(next.getID())) {
|
||||
String name = next.get().toString();
|
||||
dept.put("name",name);
|
||||
//dept.put("id",SingleID.getSingleID(name));
|
||||
}else if("distinguishedName".equals(next.getID())){
|
||||
//OU=事业发展中心,OU=办公厅,OU=人大常委会,DC=qd,DC=gov,DC=cn
|
||||
dept.put("namespace",next.get());
|
||||
}else if("instanceType".equals(next.getID())){
|
||||
dept.put("instancetype",next.get());
|
||||
}
|
||||
else if("objectGUID".equals(next.getID())){
|
||||
//{49D369CC-9DD3-407D-B618-01B00496039B}
|
||||
byte[] GUID = (byte[])next.get();
|
||||
String guid = getGUID(GUID);
|
||||
String id = SingleID.getSingleID(guid);
|
||||
dept.put("id",String.valueOf(id));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
dept.put("pid",0);
|
||||
dept.put("pids","");
|
||||
if(!dept.get("name").toString().contains("停用") && !dept.get("name").toString().contains("删除") && !dept.get("name").toString().contains("人员") && !dept.get("name").toString().contains("临时")){
|
||||
lm.add(dept);
|
||||
}
|
||||
//System.out.println("-----------------------------------------------");
|
||||
}
|
||||
cookie = parseControls(ctx.getResponseControls());
|
||||
ctx.setRequestControls(new Control[]{new PagedResultsControl(2, cookie, Control.CRITICAL)});
|
||||
} while (cookie != null && (cookie.length != 0));
|
||||
}
|
||||
|
||||
}catch (Exception e) {
|
||||
System.out.println("获取区域信息异常:");
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
closeContext();
|
||||
}
|
||||
System.out.println(lm.size());
|
||||
return lm;
|
||||
}
|
||||
|
||||
|
||||
//解决objectGUID乱码的具体方法
|
||||
private static String getGUID(byte[] GUID) {
|
||||
|
||||
String strGUID = "";
|
||||
String byteGUID = "";
|
||||
//Convert the GUID into string using the byte format
|
||||
for (int c=0;c<GUID.length;c++) {
|
||||
byteGUID = byteGUID + "\\" + AddLeadingZero((int)GUID[c] & 0xFF);
|
||||
}
|
||||
strGUID = "{";
|
||||
strGUID = strGUID + AddLeadingZero((int)GUID[3] & 0xFF);
|
||||
strGUID = strGUID + AddLeadingZero((int)GUID[2] & 0xFF);
|
||||
strGUID = strGUID + AddLeadingZero((int)GUID[1] & 0xFF);
|
||||
strGUID = strGUID + AddLeadingZero((int)GUID[0] & 0xFF);
|
||||
strGUID = strGUID + "-";
|
||||
strGUID = strGUID + AddLeadingZero((int)GUID[5] & 0xFF);
|
||||
strGUID = strGUID + AddLeadingZero((int)GUID[4] & 0xFF);
|
||||
strGUID = strGUID + "-";
|
||||
strGUID = strGUID + AddLeadingZero((int)GUID[7] & 0xFF);
|
||||
strGUID = strGUID + AddLeadingZero((int)GUID[6] & 0xFF);
|
||||
strGUID = strGUID + "-";
|
||||
strGUID = strGUID + AddLeadingZero((int)GUID[8] & 0xFF);
|
||||
strGUID = strGUID + AddLeadingZero((int)GUID[9] & 0xFF);
|
||||
strGUID = strGUID + "-";
|
||||
strGUID = strGUID + AddLeadingZero((int)GUID[10] & 0xFF);
|
||||
strGUID = strGUID + AddLeadingZero((int)GUID[11] & 0xFF);
|
||||
strGUID = strGUID + AddLeadingZero((int)GUID[12] & 0xFF);
|
||||
strGUID = strGUID + AddLeadingZero((int)GUID[13] & 0xFF);
|
||||
strGUID = strGUID + AddLeadingZero((int)GUID[14] & 0xFF);
|
||||
strGUID = strGUID + AddLeadingZero((int)GUID[15] & 0xFF);
|
||||
strGUID = strGUID + "}";
|
||||
|
||||
return strGUID;
|
||||
}
|
||||
static String AddLeadingZero(int k) {
|
||||
return (k <= 0xF) ? "0" + Integer.toHexString(k) : Integer
|
||||
.toHexString(k);
|
||||
}
|
||||
|
||||
//分页查询时下次查询要用的cookie
|
||||
private static byte[] parseControls(Control[] controls)
|
||||
throws NamingException {
|
||||
byte[] cookie = null;
|
||||
if (controls != null) {
|
||||
for (int i = 0; i < controls.length; i++) {
|
||||
if (controls[i] instanceof PagedResultsResponseControl) {
|
||||
PagedResultsResponseControl prrc = (PagedResultsResponseControl) controls[i];
|
||||
cookie = prrc.getCookie();
|
||||
System.out.println(">>Next Page \n");
|
||||
}
|
||||
}
|
||||
}
|
||||
return (cookie == null) ? new byte[0] : cookie;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package io.renren.common.utils;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.security.MessageDigest;
|
||||
|
||||
/**
|
||||
* 字符串根据MD5计算出定长的唯一数字,符合mysql bigint的取值范围
|
||||
*/
|
||||
public class SingleID {
|
||||
public static String getSingleID(String s) throws Exception{
|
||||
// 第一步,获取MessageDigest对象,参数为MD5字符串,表示这是一个MD5算法
|
||||
MessageDigest md5 = MessageDigest.getInstance("MD5");
|
||||
|
||||
md5.update(s.getBytes());
|
||||
|
||||
//计算MD5值
|
||||
byte[] bytes = md5.digest();
|
||||
byte[] newBytes = new byte[8];
|
||||
//因为转化的数字太长了,所以截取部分进行转化
|
||||
System.arraycopy(bytes,6,newBytes,0,8);
|
||||
BigInteger bigInt = new BigInteger(1, newBytes);
|
||||
String resultStr = bigInt.toString(10);
|
||||
return resultStr.substring(0,resultStr.length()-1);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue