@@ -30,7 +30,8 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; | |||||
"com.ningdatech.pmapi.ding.controller", | "com.ningdatech.pmapi.ding.controller", | ||||
"com.ningdatech.pmapi.filemanage.controller", | "com.ningdatech.pmapi.filemanage.controller", | ||||
"com.ningdatech.pmapi.performance.controller", | "com.ningdatech.pmapi.performance.controller", | ||||
"com.ningdatech.pmapi.irs.controller" | |||||
"com.ningdatech.pmapi.irs.controller", | |||||
"com.ningdatech.pmapi.dashboard.controller" | |||||
}) | }) | ||||
public class GlobalResponseHandler implements ResponseBodyAdvice<Object> { | public class GlobalResponseHandler implements ResponseBodyAdvice<Object> { | ||||
@@ -0,0 +1,18 @@ | |||||
package com.ningdatech.pmapi.dashboard.constant; | |||||
/** | |||||
* @author liuxinxin | |||||
* @date 2023/8/2 下午2:46 | |||||
*/ | |||||
public class AnalysisBasicConstant { | |||||
/** | |||||
* 丽水市区域编码 | |||||
*/ | |||||
private static final String LS_REGION_CODE = "331100"; | |||||
} |
@@ -0,0 +1,24 @@ | |||||
package com.ningdatech.pmapi.dashboard.constant; | |||||
/** | |||||
* @author liuxinxin | |||||
* @date 2023/8/2 下午2:52 | |||||
*/ | |||||
public enum ChartTypeEnum { | |||||
/** | |||||
* 各区域专家数量分布 | |||||
*/ | |||||
REGION_EXPERT_NUMBER_CHART, | |||||
/** | |||||
* 各区域专家学历分布 | |||||
*/ | |||||
REGION_EXPERT_EDUCATION_CHART, | |||||
/** | |||||
* 各区域专家职称级别分布 | |||||
*/ | |||||
REGION_EXPERT_TITLE_LEVEL_CHART; | |||||
} |
@@ -0,0 +1,62 @@ | |||||
package com.ningdatech.pmapi.dashboard.controller; | |||||
import com.ningdatech.log.annotation.WebLog; | |||||
import com.ningdatech.pmapi.dashboard.manage.DashboardExpertManage; | |||||
import com.ningdatech.pmapi.dashboard.manage.DashboardProjectManage; | |||||
import com.ningdatech.pmapi.dashboard.model.vo.DashboardInvestmentSummaryVO; | |||||
import com.ningdatech.pmapi.dashboard.model.vo.DashboardProjectCntSummaryVO; | |||||
import com.ningdatech.pmapi.dashboard.model.vo.DashboardProjectSummaryVO; | |||||
import com.ningdatech.pmapi.dashboard.model.vo.ExpertDashboardSummaryVO; | |||||
import io.swagger.annotations.Api; | |||||
import io.swagger.annotations.ApiOperation; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.springframework.validation.annotation.Validated; | |||||
import org.springframework.web.bind.annotation.PostMapping; | |||||
import org.springframework.web.bind.annotation.RequestMapping; | |||||
import org.springframework.web.bind.annotation.RestController; | |||||
/** | |||||
* @author liuxinxin | |||||
* @date 2023/8/2 上午10:36 | |||||
*/ | |||||
@RestController | |||||
@RequestMapping("/api/v1/dashboard/") | |||||
@Validated | |||||
@RequiredArgsConstructor | |||||
@Api(value = "DashboardController", tags = "驾驶舱相关接口") | |||||
public class DashboardController { | |||||
private final DashboardExpertManage dashboardExpertManage; | |||||
private final DashboardProjectManage dashboardProjectManage; | |||||
@PostMapping("/expert-summary") | |||||
@ApiOperation("专家驾驶舱统计数据") | |||||
@WebLog("专家驾驶舱统计数据") | |||||
public ExpertDashboardSummaryVO getExpertDashboardSummary() { | |||||
return dashboardExpertManage.getExpertDashboardSummary(); | |||||
} | |||||
@PostMapping("project-summary") | |||||
@ApiOperation("驾驶舱项目总览") | |||||
@WebLog("驾驶舱项目总览") | |||||
public DashboardProjectSummaryVO getProjectSummary() { | |||||
return dashboardProjectManage.getProjectSummary(); | |||||
} | |||||
@PostMapping("project-cnt-summary") | |||||
@ApiOperation("驾驶舱项目数量") | |||||
@WebLog("驾驶舱项目数量") | |||||
public DashboardProjectCntSummaryVO getProjectCntSummary() { | |||||
return dashboardProjectManage.getProjectCntSummary(); | |||||
} | |||||
@PostMapping("investment-summary") | |||||
@ApiOperation("驾驶舱投资金额") | |||||
@WebLog("驾驶舱投资金额") | |||||
public DashboardInvestmentSummaryVO getInvestmentSummary() { | |||||
return dashboardProjectManage.getInvestmentSummary(); | |||||
} | |||||
} |
@@ -0,0 +1,22 @@ | |||||
package com.ningdatech.pmapi.dashboard.manage; | |||||
import com.ningdatech.pmapi.dashboard.model.vo.ExpertDashboardSummaryVO; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.springframework.stereotype.Component; | |||||
/** | |||||
* @author liuxinxin | |||||
* @date 2023/8/2 上午10:39 | |||||
*/ | |||||
@Component | |||||
@RequiredArgsConstructor | |||||
public class DashboardExpertManage { | |||||
public ExpertDashboardSummaryVO getExpertDashboardSummary() { | |||||
return null; | |||||
} | |||||
} | |||||
@@ -0,0 +1,30 @@ | |||||
package com.ningdatech.pmapi.dashboard.manage; | |||||
import com.ningdatech.pmapi.dashboard.model.vo.DashboardInvestmentSummaryVO; | |||||
import com.ningdatech.pmapi.dashboard.model.vo.DashboardProjectCntSummaryVO; | |||||
import com.ningdatech.pmapi.dashboard.model.vo.DashboardProjectSummaryVO; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.springframework.stereotype.Component; | |||||
/** | |||||
* @author liuxinxin | |||||
* @date 2023/8/2 上午10:39 | |||||
*/ | |||||
@Component | |||||
@RequiredArgsConstructor | |||||
public class DashboardProjectManage { | |||||
public DashboardInvestmentSummaryVO getInvestmentSummary() { | |||||
return null; | |||||
} | |||||
public DashboardProjectCntSummaryVO getProjectCntSummary() { | |||||
return null; | |||||
} | |||||
public DashboardProjectSummaryVO getProjectSummary() { | |||||
return null; | |||||
} | |||||
} |
@@ -0,0 +1,25 @@ | |||||
package com.ningdatech.pmapi.dashboard.model.basic; | |||||
import com.ningdatech.pmapi.dashboard.constant.ChartTypeEnum; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.util.List; | |||||
/** | |||||
* @author liuxinxin | |||||
* @date 2023/8/2 下午3:02 | |||||
*/ | |||||
@Data | |||||
@ApiModel("图表数据") | |||||
public class AnalysisChart { | |||||
@ApiModelProperty("图表数据类型") | |||||
private ChartTypeEnum chartType; | |||||
@ApiModelProperty("数据列表") | |||||
private List<AnalysisData> dataList; | |||||
} |
@@ -0,0 +1,19 @@ | |||||
package com.ningdatech.pmapi.dashboard.model.basic; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
/** | |||||
* @author liuxinxin | |||||
* @date 2023/8/2 下午2:27 | |||||
*/ | |||||
@ApiModel("分析数据基础类") | |||||
public class AnalysisData { | |||||
@ApiModelProperty("key") | |||||
private String key; | |||||
@ApiModelProperty("值") | |||||
private Object value; | |||||
} |
@@ -0,0 +1,23 @@ | |||||
package com.ningdatech.pmapi.dashboard.model.vo; | |||||
import io.swagger.annotations.ApiModel; | |||||
import lombok.Data; | |||||
/** | |||||
* @author liuxinxin | |||||
* @date 2023/8/2 下午3:36 | |||||
*/ | |||||
@Data | |||||
@ApiModel("驾驶舱投资金额统计数据") | |||||
public class DashboardInvestmentSummaryVO { | |||||
/** | |||||
* 各领域项目投资金额 | |||||
* 单位预算TOP5 | |||||
* 项目预算TOP5 | |||||
* 近5年项目投资走势 | |||||
* 各区域项目投资情况 | |||||
* 近5年资金核定率走势 | |||||
*/ | |||||
} |
@@ -0,0 +1,24 @@ | |||||
package com.ningdatech.pmapi.dashboard.model.vo; | |||||
import io.swagger.annotations.ApiModel; | |||||
import lombok.Data; | |||||
/** | |||||
* @author liuxinxin | |||||
* @date 2023/8/2 下午3:36 | |||||
*/ | |||||
@Data | |||||
@ApiModel("项目数量驶舱统计数据") | |||||
public class DashboardProjectCntSummaryVO { | |||||
/** | |||||
* 项目增补情况 | |||||
* 各类型项目数量 | |||||
* 各区域项目数量 | |||||
* 各领域项目数量 | |||||
* 单位项目数量TOP5 | |||||
* 近5年项目数量走势 | |||||
* 近5年立项率走势 | |||||
* 各阶段项目数量 | |||||
*/ | |||||
} |
@@ -0,0 +1,28 @@ | |||||
package com.ningdatech.pmapi.dashboard.model.vo; | |||||
import io.swagger.annotations.ApiModel; | |||||
import lombok.Data; | |||||
/** | |||||
* @author liuxinxin | |||||
* @date 2023/8/2 下午3:37 | |||||
*/ | |||||
@Data | |||||
@ApiModel("驾驶舱项目总览驶舱统计数据") | |||||
public class DashboardProjectSummaryVO { | |||||
/** | |||||
* 项目总数 | |||||
* 待立项项目数 | |||||
* 已立项项目数 | |||||
* 项目画像 | |||||
* 项目立项率 | |||||
* 项目申报总金额 | |||||
* 项目批复总金额 | |||||
* 项目采购总金额 | |||||
* 资金核定率 | |||||
* 延期项目数 | |||||
* 延期占比 | |||||
* 项目变更数量 | |||||
* 项目变更金额 | |||||
*/ | |||||
} |
@@ -0,0 +1,28 @@ | |||||
package com.ningdatech.pmapi.dashboard.model.vo; | |||||
import io.swagger.annotations.ApiModel; | |||||
import lombok.Data; | |||||
/** | |||||
* @author liuxinxin | |||||
* @date 2023/8/2 下午3:07 | |||||
*/ | |||||
@Data | |||||
@ApiModel("专家驾驶舱统计数据") | |||||
public class ExpertDashboardSummaryVO { | |||||
/** | |||||
* 1、各区域专家总数 | |||||
* 2、学历分布 | |||||
* 3、职称级别分布 | |||||
* | |||||
* 4、明星专家 | |||||
* 5、评审次数 | |||||
* 6、各类型评审次数 | |||||
*/ | |||||
} | |||||