Merge branch 'wangliwen'

This commit is contained in:
wangliwen 2022-05-24 18:02:24 +08:00
commit 381c32fd30
9 changed files with 225 additions and 31 deletions

View File

@ -1,5 +1,6 @@
package io.renren.common.controller;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import io.renren.common.annotation.LogOperation;
import io.renren.common.utils.Result;
@ -9,6 +10,7 @@ import io.renren.modules.resourceBrowse.service.ResourceBrowseService;
import io.renren.modules.sys.service.SysUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -175,7 +177,69 @@ public class CensusController {
return new Result().ok(resourceService.selectSourceDepartmentStatistics());
}
@GetMapping("/provideDeptTopN")
@ApiOperation("部门共享能力topN")
@LogOperation("部门共享能力topN")
public Result<List<Map<String, Object>>> provideDeptTopN(Integer n) {
List<Map> temp = resourceService.selectDeptProvideCount(n == null ? 24 : n);
List<Map<String, Object>> result = Collections.synchronizedList(new ArrayList<>());
List<CompletableFuture> completableFutures =
temp.stream().mapToLong(index -> Long.valueOf(index.get("dept_id").toString())).mapToObj(deptId -> {
CompletableFuture<Void> task =
CompletableFuture.supplyAsync(() -> { // 获取资源汇聚总量
List<String> db = resourceService.selectDeptProvide(deptId);
Set<String> type =
db.stream().flatMap(index_ -> Arrays.stream(index_.split(";"))).filter(index_ -> StringUtils.isNotEmpty(index_)).collect(Collectors.toSet());
return type;
}).thenAccept(type -> {
result.add(new HashMap<String, Object>() {
{
put("provide", type);
put("deptId", deptId);
}
});
});
return task;
}).collect(Collectors.toList());
CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture[completableFutures.size()])).join();
result.sort(Comparator.comparing(x ->
ObjectUtil.length(x.get("provide"))
)
);
return new Result<List<Map<String, Object>>>().ok(result);
}
@GetMapping("/applyDeptTopN")
@ApiOperation("部门申请量能力topN")
@LogOperation("部门申请量能力topN")
public Result<List<Map<String, Object>>> applyDeptTopN(Integer n) {
List<Map> temp = tAbilityApplicationService.selectDeptApplyCount(n == null ? 24 : n);
List<Map<String, Object>> result = Collections.synchronizedList(new ArrayList<>());
List<CompletableFuture> completableFutures =
temp.stream().mapToLong(index -> Long.valueOf(index.get("dept_id").toString())).mapToObj(deptId -> {
CompletableFuture<Void> task =
CompletableFuture.supplyAsync(() -> { // 获取资源汇聚总量
List<String> db = tAbilityApplicationService.selectDeptApply(deptId);
Set<String> type =
db.stream().flatMap(index_ -> Arrays.stream(index_.split(";"))).filter(index_ -> StringUtils.isNotEmpty(index_)).collect(Collectors.toSet());
return type;
}).thenAccept(type -> {
result.add(new HashMap<String, Object>() {
{
put("provide", type);
put("deptId", deptId);
}
});
});
return task;
}).collect(Collectors.toList());
CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture[completableFutures.size()])).join();
result.sort(Comparator.comparing(x ->
ObjectUtil.length(x.get("provide"))
)
);
return new Result<List<Map<String, Object>>>().ok(result);
}
}

View File

@ -8,11 +8,11 @@ import java.util.List;
import java.util.Map;
/**
* 能力申请表单
*
* @author Mark sunlightcs@gmail.com
* @since 3.0 2022-04-13
*/
* 能力申请表单
*
* @author Mark sunlightcs@gmail.com
* @since 3.0 2022-04-13
*/
@Mapper
public interface TAbilityApplicationDao extends BaseDao<TAbilityApplicationEntity> {
void updateInstanceId(String instanceId, Long id);
@ -24,4 +24,14 @@ public interface TAbilityApplicationDao extends BaseDao<TAbilityApplicationEntit
Long countApplyAll();
List<Map<String, Object>> getAmountGroupByType();
/**
* 申请量前n位部门
*
* @param n
* @return
*/
List<Map> selectDeptApplyCount(Integer n);
List<String> selectDeptApply(Long deptId);
}

View File

@ -30,4 +30,8 @@ public interface TAbilityApplicationService extends CrudService<TAbilityApplicat
Long countApplyAll();
List<Map<String, Object>> getAmountGroupByType();
List<Map> selectDeptApplyCount(Integer n);
List<String> selectDeptApply(Long deptId);
}

View File

@ -63,5 +63,15 @@ public class TAbilityApplicationServiceImpl extends CrudServiceImpl<TAbilityAppl
return baseDao.getAmountGroupByType();
}
@Override
public List<Map> selectDeptApplyCount(Integer n) {
return baseDao.selectDeptApplyCount(n);
}
@Override
public List<String> selectDeptApply(Long deptId) {
return baseDao.selectDeptApply(deptId);
}
}

View File

@ -49,6 +49,7 @@ public interface ResourceDao extends BaseDao<ResourceEntity> {
/**
* 介入部门数目
*
* @return
*/
Long countAllDept();
@ -68,4 +69,13 @@ public interface ResourceDao extends BaseDao<ResourceEntity> {
List<Map> selectDeptTypeCount();
List<Map> selectDeptTotalCount();
/**
* 查询前n 个能力类型多的部门
*
* @return
*/
List<Map> selectDeptProvideCount(Integer n);
List<String> selectDeptProvide(Long deptId);
}

View File

@ -51,4 +51,8 @@ public interface ResourceService extends CrudService<ResourceEntity, ResourceDTO
Object selectSourceDepartmentStatistics();
List<Map> selectDeptProvideCount(Integer n);
List<String> selectDeptProvide(Long deptId);
}

View File

@ -417,4 +417,14 @@ public class ResourceServiceImpl extends CrudServiceImpl<ResourceDao, ResourceEn
resultMap.put("deptTotalCount", map1);
return resultMap;
}
@Override
public List<Map> selectDeptProvideCount(Integer n) {
return baseDao.selectDeptProvideCount(n);
}
@Override
public List<String> selectDeptProvide(Long deptId) {
return baseDao.selectDeptProvide(deptId);
}
}

View File

@ -44,4 +44,59 @@
GROUP BY
tbr.type
</select>
<select id="selectDeptApplyCount" resultType="java.util.Map">
SELECT
COUNT( DISTINCT tda.attr_value ),
any_value ( temp.dept_id ) dept_id
FROM
(
SELECT
sys_user.dept_id,
t_ability_application.`user`,
t_ability_application.resource_id,
t_ability_application.approve_status,
t_ability_application.id
FROM
t_ability_application,
tb_data_resource,
sys_user
WHERE
t_ability_application.resource_id = tb_data_resource.id
AND sys_user.id = t_ability_application.user_id
AND sys_user.dept_id IS NOT NULL
) temp
INNER JOIN tb_data_attr tda ON temp.resource_id = tda.data_resource_id
AND tda.attr_type = '应用领域'
AND tda.del_flag = 0
AND temp.approve_status = '通过'
GROUP BY
temp.dept_id
LIMIT #{n}
</select>
<select id="selectDeptApply" resultType="java.lang.String">
SELECT DISTINCT
( tda.attr_value )
FROM
(
SELECT
sys_user.dept_id,
t_ability_application.`user`,
t_ability_application.resource_id,
t_ability_application.approve_status,
t_ability_application.id
FROM
t_ability_application,
tb_data_resource,
sys_user
WHERE
t_ability_application.resource_id = tb_data_resource.id
AND sys_user.id = t_ability_application.user_id
AND sys_user.dept_id IS NOT NULL
AND t_ability_application.approve_status = '通过'
AND sys_user.dept_id = #{deptId}
) temp
INNER JOIN tb_data_attr tda ON temp.resource_id = tda.data_resource_id
AND tda.attr_type = '应用领域'
AND tda.del_flag = 0
</select>
</mapper>

View File

@ -466,32 +466,32 @@
<select id="selectDeptCount" resultType="java.lang.Integer">
SELECT
COUNT( 1 )
COUNT( 1 )
FROM
( SELECT DISTINCT dept_id FROM tb_data_resource WHERE 1 = 1 AND del_flag = 0 AND dept_id IS NOT NULL ) temp
( SELECT DISTINCT dept_id FROM tb_data_resource WHERE 1 = 1 AND del_flag = 0 AND dept_id IS NOT NULL ) temp
</select>
<select id="selectDeptTypeCount" resultType="java.util.Map">
SELECT IFNULL(COUNT(deptId),0) AS "count",
type
type
FROM (
SELECT DISTINCT
tbr.dept_id AS "deptId",
(CASE sd.type
WHEN 1 THEN
'省级'
WHEN 2 THEN
'市级'
WHEN 3 THEN
'区级'
WHEN 4 THEN
'企业' ELSE '其他'
END ) AS "type"
SELECT DISTINCT
tbr.dept_id AS "deptId",
(CASE sd.type
WHEN 1 THEN
'省级'
WHEN 2 THEN
'市级'
WHEN 3 THEN
'区级'
WHEN 4 THEN
'企业' ELSE '其他'
END ) AS "type"
FROM
sys_dept sd
RIGHT JOIN tb_data_resource tbr ON tbr.dept_id = sd.id
sys_dept sd
RIGHT JOIN tb_data_resource tbr ON tbr.dept_id = sd.id
WHERE
1 = 1
1 = 1
AND del_flag = 0
AND dept_id IS NOT NULL) temp GROUP BY type
</select>
@ -505,14 +505,14 @@
SELECT
(
CASE
WHEN ( COUNT( id ) BETWEEN 0 AND 5 ) THEN
'0'
WHEN ( COUNT( id ) BETWEEN 5 AND 10 ) THEN
'5'
WHEN ( COUNT( id ) BETWEEN 10 AND 15 ) THEN
'10'
WHEN ( COUNT( id ) BETWEEN 15 AND 20 ) THEN
'15' ELSE '20'
WHEN ( COUNT( id ) BETWEEN 0 AND 5 ) THEN
'0'
WHEN ( COUNT( id ) BETWEEN 5 AND 10 ) THEN
'5'
WHEN ( COUNT( id ) BETWEEN 10 AND 15 ) THEN
'10'
WHEN ( COUNT( id ) BETWEEN 15 AND 20 ) THEN
'15' ELSE '20'
END
) AS "type"
FROM
@ -526,5 +526,32 @@
GROUP BY
type
</select>
<select id="selectDeptProvideCount" resultType="java.util.Map">
SELECT
COUNT(
DISTINCT any_value ( tda.attr_value )) count,
any_value ( tdr.dept_id ) dept_id
FROM
tb_data_attr tda
INNER JOIN tb_data_resource tdr ON tda.data_resource_id = tdr.id
AND tdr.dept_id IS NOT NULL
WHERE
tda.attr_type = '应用领域'
GROUP BY
tdr.dept_id
ORDER BY
count DESC
LIMIT #{n}
</select>
<select id="selectDeptProvide" resultType="java.lang.String">
SELECT DISTINCT
tda.attr_value
FROM
tb_data_attr tda
INNER JOIN tb_data_resource tdr ON tda.data_resource_id = tdr.id
AND tdr.dept_id = #{deptId}
WHERE
tda.attr_type = '应用领域'
</select>
</mapper>