@ -4,22 +4,24 @@ import io.renren.common.annotation.LogOperation;
import io.renren.common.constant.Constant ;
import io.renren.common.utils.Result ;
import io.renren.modules.resource.service.ResourceService ;
import io.renren.modules.security.user.SecurityUser ;
import io.renren.modules.sys.dto.SysDeptDTO ;
import io.renren.modules.sys.service.SysDeptService ;
import io.swagger.annotations.Api ;
import io.swagger.annotations.ApiImplicitParam ;
import io.swagger.annotations.ApiImplicitParams ;
import io.swagger.annotations.ApiOperation ;
import org.apache.commons.lang3.StringUtils ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.jdbc.core.JdbcTemplate ;
import org.springframework.util.CollectionUtils ;
import org.springframework.web.bind.annotation.GetMapping ;
import org.springframework.web.bind.annotation.RequestMapping ;
import org.springframework.web.bind.annotation.RequestParam ;
import org.springframework.web.bind.annotation.RestController ;
import springfox.documentation.annotations.ApiIgnore ;
import java.util.ArrayList ;
import java.util.HashMap ;
import java.util.List ;
import java.util.Map ;
import java.util.* ;
import java.util.concurrent.CompletableFuture ;
import java.util.concurrent.CopyOnWriteArrayList ;
@ -36,6 +38,8 @@ public class CensusControllerV3 {
private ResourceService resourceService ;
@Autowired
private JdbcTemplate jdbcTemplate ;
@Autowired
private SysDeptService sysDeptService ;
/ * *
@ -113,15 +117,18 @@ public class CensusControllerV3 {
/ * *
* 组件评分情况 1 2 3 4 5评分分布
* @param id 部门id
* @param
* @return
* /
@GetMapping ( " /assemblerScoreInfo " )
@ApiOperation ( " 组件评分情况 " )
@LogOperation ( " 组件评分情况 " )
@ApiImplicitParam ( name = " id " , value = " 部门id " , paramType = " query " , required = true , dataType = " long " )
public Result < List < Map < String , Object > > > assemblerScoreInfo ( Long id ) {
Object [ ] args = { id } ;
@ApiImplicitParams ( {
@ApiImplicitParam ( name = " id " , value = " 部门id " , paramType = " query " , required = true , dataType = " long " ) ,
@ApiImplicitParam ( name = " resourceType " , value = " 资源类型(组件服务、应用资源、基础设施、数据资源、知识库) " , paramType = " query " , dataType = " String " )
} )
public Result < List < Map < String , Object > > > assemblerScoreInfo ( @ApiIgnore @RequestParam Map < String , Object > params ) {
Object [ ] args = { params . get ( " resourceType " ) , params . get ( " id " ) } ;
List < Map < String , Object > > maps = jdbcTemplate . queryForList ( " SELECT COUNT(a.score) as scoreNum,a.score FROM \ n " +
" tb_resource_score a \ n " +
" INNER JOIN \ n " +
@ -129,7 +136,7 @@ public class CensusControllerV3 {
" ON \ n " +
" a.resource_id = b.id \ n " +
" WHERE \ n " +
" b.type = '组件服务' \ n " +
" b.type = ? \ n " +
" AND \ n " +
" b.dept_id = ? \ n " +
" AND \ n " +
@ -148,21 +155,24 @@ public class CensusControllerV3 {
return null ;
}
@GetMapping ( " /assemblerCollectionTopInfo " )
@ApiOperation ( " TOP5被收藏的组件和数量 " )
@LogOperation ( " TOP5被收藏的组件和数量 " )
@ApiImplicitParam ( name = " id " , value = " 部门id " , paramType = " query " , required = true , dataType = " long " )
public Result < List < Map < String , Object > > > assemblerCollectionTopInfo ( Long id ) {
Object [ ] args = { id } ;
@GetMapping ( " /assemblerCaredTopInfo " )
@ApiOperation ( " TOP5被申请的组件和数量 " )
@LogOperation ( " TOP5被申请的组件和数量 " )
@ApiImplicitParams ( {
@ApiImplicitParam ( name = " id " , value = " 部门id " , paramType = " query " , required = true , dataType = " long " ) ,
@ApiImplicitParam ( name = " resourceType " , value = " 资源类型(组件服务、应用资源、基础设施、数据资源、知识库) " , paramType = " query " , dataType = " String " )
} )
public Result < List < Map < String , Object > > > assemblerCaredTopInfo ( @ApiIgnore @RequestParam Map < String , Object > params ) {
Object [ ] args = { params . get ( " id " ) , params . get ( " resourceType " ) } ;
List < Map < String , Object > > maps = jdbcTemplate . queryForList ( " SELECT a.resource_id,b.name,COUNT(a.id) AS collectionNum \ n " +
" FROM tb_resource_collection a \ n " +
List < Map < String , Object > > maps = jdbcTemplate . queryForList ( " SELECT a.resource_id,b.name,COUNT(a.id) AS resourceCar Num\ n " +
" FROM tb_resource_c ar a \ n " +
" INNER JOIN tb_data_resource b \ n " +
" ON a.resource_id = b.id \ n " +
" WHERE \ n " +
" b.dept_id = ? \ n " +
" AND \ n " +
" b.type = '组件服务' \ n " +
" b.type = ? \ n " +
" AND \ n " +
" a.del_flag = 0 \ n " +
" \ n " +
@ -182,20 +192,18 @@ public class CensusControllerV3 {
return null ;
}
@GetMapping ( " /assemblerUsedDistriInfo " )
@ApiOperation ( " 应用领域分布情况 " )
@LogOperation ( " 应用领域分布情况 " )
public Result < List < Map < String , Object > > > assemblerUsedDistriInfo ( Long id ) {
return null ;
}
/ / 以下是组件使用情况点击详情
@GetMapping ( " /assemblerUseTopInfo " )
@ApiOperation ( " TOP5使用组件 " )
@LogOperation ( " TOP5使用组件 " )
@ApiImplicitParam ( name = " id " , value = " 部门id " , paramType = " query " , required = true , dataType = " long " )
public Result < List < Map < String , Object > > > assemblerUseTopInfo ( Long id ) {
@ApiImplicitParams ( {
@ApiImplicitParam ( name = " id " , value = " 部门id " , paramType = " query " , required = true , dataType = " long " ) ,
@ApiImplicitParam ( name = " resourceType " , value = " 资源类型(组件服务、应用资源、基础设施、数据资源、知识库) " , paramType = " query " , dataType = " String " )
} )
public Result < List < Map < String , Object > > > assemblerUseTopInfo ( @ApiIgnore @RequestParam Map < String , Object > params ) {
return null ;
}
@ -208,12 +216,6 @@ public class CensusControllerV3 {
}
@GetMapping ( " /assemblerUseDistriInfo " )
@ApiOperation ( " 用组件应用领域分布情况 " )
@LogOperation ( " 用组件应用领域分布情况 " )
public Result < List < Map < String , Object > > > assemblerUseDistriInfo ( Long id ) {
return null ;
}
@GetMapping ( " /assemblerUseScoreTopInfo " )
@ApiOperation ( " 使用组件评分top5 " )
@ -222,7 +224,102 @@ public class CensusControllerV3 {
return null ;
}
@GetMapping ( " resourceAttrReleaseDetail " )
@ApiOperation ( " 算法、图层、开发、业务发布量情况分布 " )
@LogOperation ( " 算法、图层、开发、业务发布量情况分布 " )
@ApiImplicitParams ( {
@ApiImplicitParam ( name = " id " , value = " 部门id " , paramType = " query " , required = true , dataType = " long " ) ,
@ApiImplicitParam ( name = " resourceType " , value = " 资源类型(组件服务、应用资源、基础设施、数据资源、知识库) " , paramType = " query " , dataType = " String " )
} )
public Result < List < Map < String , Object > > > resourceAttrReleaseDetail ( @ApiIgnore @RequestParam Map < String , Object > params ) {
Object [ ] ps = { params . get ( " resourceType " ) , params . get ( " id " ) } ;
List < Map < String , Object > > result = jdbcTemplate . queryForList ( " SELECT b.attr_value,COUNT(b.id) AS num from tb_data_resource a inner join tb_data_attr b on a.id = b.data_resource_id \ n " +
" where a.type = ? and a.dept_id = ? and (INSTR( b.attr_value , '算法' ) > 0 OR INSTR( b.attr_value , '图层' ) > 0 \ n " +
" OR INSTR( b.attr_value , '开发' ) > 0 OR INSTR( b.attr_value , '业务' ) > 0 ) \ n " +
" group by b.attr_value " , ps ) ;
return new Result < List < Map < String , Object > > > ( ) . ok ( result ) ;
}
@GetMapping ( " applicationAreaCapabilityList " )
@ApiOperation ( " 应用领域分布情况 " )
@LogOperation ( " 应用领域分布情况 " )
@ApiImplicitParams ( {
@ApiImplicitParam ( name = " id " , value = " 部门id " , paramType = " query " , required = true , dataType = " long " ) ,
@ApiImplicitParam ( name = " resourceType " , value = " 资源类型(组件服务、应用资源、基础设施、数据资源、知识库) " , paramType = " query " , dataType = " String " )
} )
public Result < List < Map < String , Object > > > applicationAreaCapabilityList ( @ApiIgnore @RequestParam Map < String , Object > params ) {
return new Result < List < Map < String , Object > > > ( ) . ok ( resourceService . applicationAreaCapabilityList ( params ) ) ;
}
@GetMapping ( " applicationUsedAreaCapabilityList " )
@ApiOperation ( " 使用组件的应用领域分布情况 " )
@LogOperation ( " 使用组件的应用领域分布情况 " )
@ApiImplicitParams ( {
@ApiImplicitParam ( name = " id " , value = " 部门id " , paramType = " query " , required = true , dataType = " long " ) ,
@ApiImplicitParam ( name = " resourceType " , value = " 资源类型(组件服务、应用资源、基础设施、数据资源、知识库) " , paramType = " query " , dataType = " String " )
} )
public Result < List < Map < String , Object > > > applicationUsedAreaCapabilityList ( @ApiIgnore @RequestParam Map < String , Object > params ) {
return null ;
}
/ / 以下是应用资源点击详情显示
@GetMapping ( " /applicationStateCapabilitySet " )
@ApiOperation ( " 应用状态分布情况 " )
@LogOperation ( " 应用状态分布情况 " )
@ApiImplicitParams ( {
@ApiImplicitParam ( name = " id " , value = " 部门id " , paramType = " query " , required = true , dataType = " long " ) ,
@ApiImplicitParam ( name = " resourceType " , value = " 资源类型(组件服务、应用资源、基础设施、数据资源、知识库) " , paramType = " query " , dataType = " String " )
} )
public Result < List < Map < String , Object > > > applicationStateCapabilitySet ( @ApiIgnore @RequestParam Map < String , Object > params ) {
Object [ ] ps = { params . get ( " id " ) , params . get ( " resourceType " ) } ;
List < Map < String , Object > > result = jdbcTemplate . queryForList ( " SELECT COUNT(b.id) as num,b.attr_value as state from tb_data_resource a inner join tb_data_attr b \ n " +
" on a.id = b.data_resource_id \ n " +
" where a.del_flag = 0 and a.dept_id = ? and a.type = ? and b.attr_type = '应用状态' \ n " +
" group by b.attr_value " , ps ) ;
return new Result < List < Map < String , Object > > > ( ) . ok ( result ) ;
}
@GetMapping ( " /applicationReleaseCapabilitySet " )
@ApiOperation ( " 发布端应用分布情况 " )
@LogOperation ( " 发布端应用分布情况 " )
@ApiImplicitParams ( {
@ApiImplicitParam ( name = " id " , value = " 部门id " , paramType = " query " , required = true , dataType = " long " ) ,
@ApiImplicitParam ( name = " resourceType " , value = " 资源类型(组件服务、应用资源、基础设施、数据资源、知识库) " , paramType = " query " , dataType = " String " )
} )
public Result < List < Map < String , Object > > > applicationReleaseCapabilitySet ( @ApiIgnore @RequestParam Map < String , Object > params ) {
Object [ ] ps = { params . get ( " id " ) , params . get ( " resourceType " ) } ;
List < Map < String , Object > > result = jdbcTemplate . queryForList ( " SELECT COUNT(b.id) as num,b.attr_value as publisher from tb_data_resource a inner join tb_data_attr b \ n " +
" on a.id = b.data_resource_id \ n " +
" where a.del_flag = 0 and a.dept_id = ? and a.type = ? and b.attr_type = '发布端' \ n " +
" group by b.attr_value " , ps ) ;
return new Result < List < Map < String , Object > > > ( ) . ok ( result ) ;
}
@GetMapping ( " /applicationUsedCapabilityNum " )
@ApiOperation ( " 贡献组件被多少应用使用 " )
@LogOperation ( " 贡献组件被多少应用使用 " )
@ApiImplicitParams ( {
@ApiImplicitParam ( name = " id " , value = " 部门id " , paramType = " query " , required = true , dataType = " long " ) ,
@ApiImplicitParam ( name = " resourceType " , value = " 资源类型(组件服务、应用资源、基础设施、数据资源、知识库) " , paramType = " query " , dataType = " String " )
} )
public Result < List < Map < String , Object > > > applicationUsedCapabilityNum ( @ApiIgnore @RequestParam Map < String , Object > params ) {
List < Map < String , Object > > result = new ArrayList < > ( ) ;
Object [ ] ps = { params . get ( " resourceType " ) , params . get ( " id " ) } ;
result = jdbcTemplate . queryForList ( " SELECT a.name,b.attr_value FROM tb_data_resource a INNER JOIN tb_data_attr b \ n " +
" ON a.id = b.data_resource_id \ n " +
" WHERE a.type = ? and a.dept_id = ? \ n " +
" and b.attr_type = '应用领域' " , ps ) ;
result . forEach ( r - > {
String [ ] strArr = r . get ( " attr_value " ) . toString ( ) . split ( " , " ) ;
r . put ( " usedNum " , strArr . length ) ;
} ) ;
return new Result < List < Map < String , Object > > > ( ) . ok ( result ) ;
}
/ / 以下是基础设施和数据资源使用情况点击详情 ( 申请明细 )
@GetMapping ( " /assemblerCarDetail " )
@ -239,4 +336,82 @@ public class CensusControllerV3 {
return new Result < List < Map < String , Object > > > ( ) . ok ( result ) ;
}
/ / 以下是知识库点击详情展示
@GetMapping ( " /knowledgeBaseDistriDetail " )
@ApiOperation ( " 知识库分布情况 " )
@LogOperation ( " 知识库分布情况 " )
@ApiImplicitParam ( name = " id " , value = " 行政部门编号 " , paramType = " query " , dataType = " Long " )
public Result < List < Map < String , Object > > > knowledgeBaseDistriDetail ( Long id ) {
return null ;
}
@GetMapping ( " knowledgeBaseReleaseDetail " )
@ApiOperation ( " 知识库发布时间统计(按月) " )
@LogOperation ( " 知识库发布时间统计(按月) " )
public Result < List < Map < String , Object > > > knowledgeBaseReleaseDetail ( Long id ) {
Object [ ] ps = { id } ;
List < Map < String , Object > > result = jdbcTemplate . queryForList ( " SELECT COUNT(id) as num, MONTH(create_date) AS time FROM tb_data_resource \ n " +
" WHERE type = '知识库' AND YEAR(create_date) = YEAR(CURDATE()) AND del_flag = 0 AND dept_id = ? \ n " +
" GROUP BY YEAR(create_date),MONTH(create_date) ORDER BY MONTH(create_date) \ n " , ps ) ;
return new Result < List < Map < String , Object > > > ( ) . ok ( result ) ;
}
/ * *
* 测试获取部门树
* @param keywords
* @param deptId
* @return
* /
@GetMapping ( " treeList " )
@ApiOperation ( " 根据当前用户所在部门查询下属部门tree, 可以根据部门名称模糊查询 " )
public Result < List < SysDeptDTO > > treeList ( @RequestParam ( required = false , value = " 模糊查询,部门名称 " ) String keywords , Long deptId ) {
List < SysDeptDTO > result = new ArrayList < > ( ) ;
SysDeptDTO sysDeptDTO = sysDeptService . get ( deptId ) ;
/ / 市大数据局展示全部部门 , 区大数据局展示本区所有部门 , 委办局展示自己部门及下级部门
if ( StringUtils . contains ( sysDeptDTO . getName ( ) , " 青岛市大数据发展管理局 " ) ) { / / 市大数据局
List < Map < String , Object > > deptMaps = jdbcTemplate . queryForList ( " SELECT id FROM sys_dept where pid = 0 " ) ;
deptMaps . forEach ( dept - > {
List < SysDeptDTO > depts = sysDeptService . getDeptListByPid ( Long . valueOf ( dept . get ( " id " ) . toString ( ) ) ) ;
result . addAll ( depts ) ;
} ) ;
} else if ( StringUtils . contains ( sysDeptDTO . getName ( ) , " 大数据 " ) & & sysDeptDTO . getType ( ) = = 3 ) { / / 各区大数据局
List < SysDeptDTO > depts = sysDeptService . getDeptListByPid ( sysDeptDTO . getPid ( ) ) ;
result . addAll ( depts ) ;
} else {
List < SysDeptDTO > deptListByPid = sysDeptService . getDeptListByPid ( deptId ) ;
result . addAll ( deptListByPid ) ;
}
if ( keywords ! = null ) {
treeMatch ( result , keywords ) ;
}
System . out . println ( " 部门树--》 " + result . size ( ) ) ;
return new Result < List < SysDeptDTO > > ( ) . ok ( result ) ;
}
private void treeMatch ( List < SysDeptDTO > anyLevelCategoryList , String keyword ) {
Iterator < SysDeptDTO > iter = anyLevelCategoryList . iterator ( ) ;
while ( iter . hasNext ( ) ) {
/ / 获取当前遍历到的目录
SysDeptDTO category = iter . next ( ) ;
/ / 如果当前目录名称包含关键字 , 则什么也不做 ( 不移除 ) , 否则就看下一级
if ( ! category . getName ( ) . contains ( keyword ) ) {
/ / 取出下一级目录集合
List < SysDeptDTO > childrenCategoryList = category . getChildren ( ) ;
/ / 递归
if ( ! CollectionUtils . isEmpty ( childrenCategoryList ) ) {
treeMatch ( childrenCategoryList , keyword ) ;
}
/ / 下一级目录看完了 , 如果下一级目录全部被移除 , 则移除当前目录
if ( CollectionUtils . isEmpty ( category . getChildren ( ) ) ) {
iter . remove ( ) ;
}
}
}
}
}