添加功能
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
package com.ruoyi.cms.controller;
|
||||
|
||||
import com.ruoyi.cms.domain.dto.QueryParamDto;
|
||||
import com.ruoyi.cms.service.AnalysisKeyGroupServiceSituationService;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 重点人群跟踪服务情况分析
|
||||
*
|
||||
* @author 马宝龙
|
||||
* @date 2026/6/26
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/analysis/keyGroupServiceSituation")
|
||||
@RequiredArgsConstructor
|
||||
public class AnalysisKeyGroupServiceSituationController {
|
||||
|
||||
private final AnalysisKeyGroupServiceSituationService analysisKeyGroupServiceSituationService;
|
||||
|
||||
/**
|
||||
* 数据总览
|
||||
*
|
||||
* @param dto 查询参数
|
||||
* @return 数据总览
|
||||
*/
|
||||
@PostMapping("/overview")
|
||||
public AjaxResult overview(@RequestBody QueryParamDto dto) {
|
||||
return AjaxResult.success(analysisKeyGroupServiceSituationService.overview(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 服务覆盖范围
|
||||
*
|
||||
* @param dto 查询参数
|
||||
* @return 结果列表
|
||||
*/
|
||||
@PostMapping("/serviceCoverage")
|
||||
public AjaxResult serviceCoverage(@RequestBody QueryParamDto dto) {
|
||||
return AjaxResult.success(analysisKeyGroupServiceSituationService.serviceCoverage(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 帮扶服务类型分析
|
||||
*
|
||||
* @param dto 查询参数
|
||||
* @return 结果列表
|
||||
*/
|
||||
@PostMapping("/helpServiceType")
|
||||
public AjaxResult helpServiceType(@RequestBody QueryParamDto dto) {
|
||||
return AjaxResult.success(analysisKeyGroupServiceSituationService.helpServiceType(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 帮扶成效评估
|
||||
*
|
||||
* @param dto 查询参数
|
||||
* @return 结果列表
|
||||
*/
|
||||
@PostMapping("/helpResultScore")
|
||||
public AjaxResult helpResultScore(@RequestBody QueryParamDto dto) {
|
||||
return AjaxResult.success(analysisKeyGroupServiceSituationService.helpResultScore(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 不同重点人群差异化分析
|
||||
*
|
||||
* @param dto 查询参数
|
||||
* @return 结果列表
|
||||
*/
|
||||
@PostMapping("/keyGroupDifferentiation")
|
||||
public AjaxResult keyGroupDifferentiation(@RequestBody QueryParamDto dto) {
|
||||
return AjaxResult.success(analysisKeyGroupServiceSituationService.keyGroupDifferentiation(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 帮扶过程与满意度
|
||||
*
|
||||
* @param dto 查询参数
|
||||
* @return 结果列表
|
||||
*/
|
||||
@PostMapping("/helpProcessSatisfaction")
|
||||
public AjaxResult helpProcessSatisfaction(@RequestBody QueryParamDto dto) {
|
||||
return AjaxResult.success(analysisKeyGroupServiceSituationService.helpProcessSatisfaction(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 问题与建议
|
||||
*
|
||||
* @param dto 查询参数
|
||||
* @return 结果列表
|
||||
*/
|
||||
@PostMapping("/questionAndSuggestion")
|
||||
public AjaxResult questionAndSuggestion(@RequestBody QueryParamDto dto) {
|
||||
return AjaxResult.success(analysisKeyGroupServiceSituationService.questionAndSuggestion(dto));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.ruoyi.cms.domain.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 重点人群跟踪服务情况分析 - 帮扶成效评估
|
||||
*
|
||||
* @author 马宝龙
|
||||
* @date 2026/6/25
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class KeyGroupServiceSituationHelpScoreVo implements Serializable {
|
||||
private static final long serialVersionUID = -8478307079421272922L;
|
||||
/**
|
||||
* 编码
|
||||
*/
|
||||
private String code;
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String desc;
|
||||
/**
|
||||
* 就业率
|
||||
*/
|
||||
private BigDecimal employmentRate;
|
||||
/**
|
||||
* 收入改善
|
||||
*/
|
||||
private BigDecimal incomeImprovement;
|
||||
/**
|
||||
* 生活质量改善
|
||||
*/
|
||||
private BigDecimal lifeQualityImprovement;
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.ruoyi.cms.domain.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 重点人群跟踪服务情况分析 - 帮扶服务类型分析
|
||||
*
|
||||
* @author 马宝龙
|
||||
* @date 2026/6/25
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class KeyGroupServiceSituationHelpTypeVo implements Serializable {
|
||||
private static final long serialVersionUID = -8478307079421272922L;
|
||||
/**
|
||||
* 编码
|
||||
*/
|
||||
private String code;
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String desc;
|
||||
/**
|
||||
* 服务人数
|
||||
*/
|
||||
private Long serviceCount;
|
||||
/**
|
||||
* 满意度
|
||||
*/
|
||||
private BigDecimal serviceSatisfaction;
|
||||
/**
|
||||
* 成效评分
|
||||
*/
|
||||
private BigDecimal resultScore;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.ruoyi.cms.domain.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 重点人群跟踪服务情况分析 - 不同重点人群差异化分析
|
||||
*
|
||||
* @author 马宝龙
|
||||
* @date 2026/6/25
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class KeyGroupServiceSituationKeyGroupScoreVo implements Serializable {
|
||||
private static final long serialVersionUID = -8478307079421272922L;
|
||||
/**
|
||||
* 编码
|
||||
*/
|
||||
private String code;
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String desc;
|
||||
/**
|
||||
* 服务覆盖率
|
||||
*/
|
||||
private BigDecimal serviceCoverageRate;
|
||||
/**
|
||||
* 就业率
|
||||
*/
|
||||
private BigDecimal employmentRate;
|
||||
/**
|
||||
* 收入改善
|
||||
*/
|
||||
private BigDecimal incomeImprovement;
|
||||
/**
|
||||
* 满意度
|
||||
*/
|
||||
private BigDecimal serviceSatisfaction;
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
package com.ruoyi.cms.domain.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 重点人群跟踪服务情况分析 - 数据总览
|
||||
*
|
||||
* @author 马宝龙
|
||||
* @date 2026/6/25
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class KeyGroupServiceSituationOverviewVo implements Serializable {
|
||||
private static final long serialVersionUID = -8478307079421272922L;
|
||||
/**
|
||||
* 服务对象人数
|
||||
*/
|
||||
private Long serviceTargetCount;
|
||||
/**
|
||||
* 服务对象人数环比
|
||||
*/
|
||||
private BigDecimal serviceTargetCountMom;
|
||||
/**
|
||||
* 服务需求人数
|
||||
*/
|
||||
private Long serviceDemandCount;
|
||||
/**
|
||||
* 服务需求人数环比
|
||||
*/
|
||||
private BigDecimal serviceDemandCountMom;
|
||||
/**
|
||||
* 实际服务人数
|
||||
*/
|
||||
private Long actualServiceCount;
|
||||
/**
|
||||
* 实际服务人数环比
|
||||
*/
|
||||
private BigDecimal actualServiceCountMom;
|
||||
/**
|
||||
* 实际服务人次
|
||||
*/
|
||||
private Long actualServiceTimes;
|
||||
/**
|
||||
* 实际服务人次环比
|
||||
*/
|
||||
private BigDecimal actualServiceTimesMom;
|
||||
/**
|
||||
* 服务覆盖率
|
||||
*/
|
||||
private BigDecimal serviceCoverageRate;
|
||||
/**
|
||||
* 服务覆盖率环比
|
||||
*/
|
||||
private BigDecimal serviceCoverageRateMom;
|
||||
/**
|
||||
* 帮扶后就业率
|
||||
*/
|
||||
private BigDecimal afterHelpEmploymentRate;
|
||||
/**
|
||||
* 帮扶后就业率环比
|
||||
*/
|
||||
private BigDecimal afterHelpEmploymentRateMom;
|
||||
/**
|
||||
* 帮扶资金投放
|
||||
*/
|
||||
private Long helpFundPutCount;
|
||||
/**
|
||||
* 帮扶资金投放环比
|
||||
*/
|
||||
private BigDecimal helpFundPutCountMom;
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package com.ruoyi.cms.service;
|
||||
|
||||
import com.ruoyi.cms.domain.dto.QueryParamDto;
|
||||
import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationHelpScoreVo;
|
||||
import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationHelpTypeVo;
|
||||
import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationKeyGroupScoreVo;
|
||||
import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationOverviewVo;
|
||||
import com.ruoyi.cms.domain.vo.QueryResultVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 重点人群跟踪服务情况分析
|
||||
*
|
||||
* @author 马宝龙
|
||||
* @date 2026/6/26
|
||||
*/
|
||||
public interface AnalysisKeyGroupServiceSituationService {
|
||||
|
||||
|
||||
/**
|
||||
* 数据总览
|
||||
*
|
||||
* @param dto 查询参数
|
||||
* @return 数据总览
|
||||
*/
|
||||
KeyGroupServiceSituationOverviewVo overview(QueryParamDto dto);
|
||||
|
||||
/**
|
||||
* 服务覆盖范围
|
||||
*
|
||||
* @param dto 查询参数
|
||||
* @return 结果列表
|
||||
*/
|
||||
List<QueryResultVo> serviceCoverage(QueryParamDto dto);
|
||||
|
||||
/**
|
||||
* 帮扶服务类型分析
|
||||
*
|
||||
* @param dto 查询参数
|
||||
* @return 结果列表
|
||||
*/
|
||||
List<KeyGroupServiceSituationHelpTypeVo> helpServiceType(QueryParamDto dto);
|
||||
|
||||
/**
|
||||
* 帮扶成效评估
|
||||
*
|
||||
* @param dto 查询参数
|
||||
* @return 结果列表
|
||||
*/
|
||||
List<KeyGroupServiceSituationHelpScoreVo> helpResultScore(QueryParamDto dto);
|
||||
|
||||
/**
|
||||
* 不同重点人群差异化分析
|
||||
*
|
||||
* @param dto 查询参数
|
||||
* @return 结果列表
|
||||
*/
|
||||
List<KeyGroupServiceSituationKeyGroupScoreVo> keyGroupDifferentiation(QueryParamDto dto);
|
||||
|
||||
/**
|
||||
* 帮扶过程与满意度
|
||||
*
|
||||
* @param dto 查询参数
|
||||
* @return 结果列表
|
||||
*/
|
||||
List<QueryResultVo> helpProcessSatisfaction(QueryParamDto dto);
|
||||
|
||||
/**
|
||||
* 问题与建议
|
||||
*
|
||||
* @param dto 查询参数
|
||||
* @return 结果列表
|
||||
*/
|
||||
List<QueryResultVo> questionAndSuggestion(QueryParamDto dto);
|
||||
}
|
||||
@@ -0,0 +1,183 @@
|
||||
package com.ruoyi.cms.service.impl;
|
||||
|
||||
import com.ruoyi.cms.domain.dto.QueryParamDto;
|
||||
import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationHelpScoreVo;
|
||||
import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationHelpTypeVo;
|
||||
import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationKeyGroupScoreVo;
|
||||
import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationOverviewVo;
|
||||
import com.ruoyi.cms.domain.vo.QueryResultVo;
|
||||
import com.ruoyi.cms.service.AnalysisKeyGroupServiceSituationService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import reactor.util.function.Tuple2;
|
||||
import reactor.util.function.Tuples;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 重点人群跟踪服务情况分析
|
||||
*
|
||||
* @author 马宝龙
|
||||
* @date 2026/6/26
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
@Slf4j
|
||||
public class AnalysisKeyGroupServiceSituationServiceImpl implements AnalysisKeyGroupServiceSituationService {
|
||||
|
||||
@Override
|
||||
public KeyGroupServiceSituationOverviewVo overview(QueryParamDto dto) {
|
||||
return KeyGroupServiceSituationOverviewVo.builder()
|
||||
.serviceTargetCount(15000L)
|
||||
.serviceTargetCountMom(BigDecimal.valueOf(5.2))
|
||||
.serviceDemandCount(12000L)
|
||||
.serviceDemandCountMom(BigDecimal.valueOf(3.8))
|
||||
.actualServiceCount(10800L)
|
||||
.actualServiceCountMom(BigDecimal.valueOf(6.5))
|
||||
.actualServiceTimes(25600L)
|
||||
.actualServiceTimesMom(BigDecimal.valueOf(8.1))
|
||||
.serviceCoverageRate(BigDecimal.valueOf(90.0))
|
||||
.serviceCoverageRateMom(BigDecimal.valueOf(2.3))
|
||||
.afterHelpEmploymentRate(BigDecimal.valueOf(72.5))
|
||||
.afterHelpEmploymentRateMom(BigDecimal.valueOf(1.8))
|
||||
.helpFundPutCount(3200L)
|
||||
.helpFundPutCountMom(BigDecimal.valueOf(12.5))
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<QueryResultVo> serviceCoverage(QueryParamDto dto) {
|
||||
List<QueryResultVo> list = new ArrayList<>();
|
||||
List<Tuple2<String, String>> coverageList =
|
||||
Collections.unmodifiableList(new ArrayList<>(Arrays.asList(
|
||||
Tuples.of("1", "失业人员"),
|
||||
Tuples.of("2", "高校毕业生"),
|
||||
Tuples.of("3", "残疾人"),
|
||||
Tuples.of("4", "低收入家庭"),
|
||||
Tuples.of("5", "零就业家庭"),
|
||||
Tuples.of("6", "其他重点人群")
|
||||
)));
|
||||
for (Tuple2<String, String> item : coverageList) {
|
||||
list.add(QueryResultVo.builder()
|
||||
.code(item.getT1())
|
||||
.desc(item.getT2())
|
||||
.count((long) Math.floor(Math.random() * 10000) + 1)
|
||||
.anotherCount((long) Math.floor(Math.random() * 10000) + 1)
|
||||
.rate(BigDecimal.valueOf(Math.random() * 100 + 1).setScale(1, RoundingMode.HALF_UP))
|
||||
.build());
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<KeyGroupServiceSituationHelpTypeVo> helpServiceType(QueryParamDto dto) {
|
||||
List<KeyGroupServiceSituationHelpTypeVo> list = new ArrayList<>();
|
||||
List<Tuple2<String, String>> typeList =
|
||||
Collections.unmodifiableList(new ArrayList<>(Arrays.asList(
|
||||
Tuples.of("1", "职业指导"),
|
||||
Tuples.of("2", "创业服务"),
|
||||
Tuples.of("3", "职业培训"),
|
||||
Tuples.of("4", "就业援助"),
|
||||
Tuples.of("5", "职业介绍"),
|
||||
Tuples.of("6", "就业见习")
|
||||
)));
|
||||
for (Tuple2<String, String> item : typeList) {
|
||||
list.add(KeyGroupServiceSituationHelpTypeVo.builder()
|
||||
.code(item.getT1())
|
||||
.desc(item.getT2())
|
||||
.serviceCount((long) Math.floor(Math.random() * 5000) + 1)
|
||||
.serviceSatisfaction(new BigDecimal(Math.random() * 100).setScale(2, RoundingMode.HALF_UP))
|
||||
.resultScore(new BigDecimal(Math.random() * 100).setScale(2, RoundingMode.HALF_UP))
|
||||
.build());
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<KeyGroupServiceSituationHelpScoreVo> helpResultScore(QueryParamDto dto) {
|
||||
List<KeyGroupServiceSituationHelpScoreVo> list = new ArrayList<>();
|
||||
for (int i = 0; i < 12; i++) {
|
||||
list.add(KeyGroupServiceSituationHelpScoreVo.builder()
|
||||
.code(i + 1 + "")
|
||||
.desc(i + 1 + "月")
|
||||
.employmentRate(new BigDecimal(Math.random() * 100).setScale(2, RoundingMode.HALF_UP))
|
||||
.incomeImprovement(new BigDecimal(Math.random() * 100).setScale(2, RoundingMode.HALF_UP))
|
||||
.lifeQualityImprovement(new BigDecimal(Math.random() * 100).setScale(2, RoundingMode.HALF_UP))
|
||||
.build());
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<KeyGroupServiceSituationKeyGroupScoreVo> keyGroupDifferentiation(QueryParamDto dto) {
|
||||
List<KeyGroupServiceSituationKeyGroupScoreVo> list = new ArrayList<>();
|
||||
List<Tuple2<String, String>> groupList =
|
||||
Collections.unmodifiableList(new ArrayList<>(Arrays.asList(
|
||||
Tuples.of("1", "失业人员"),
|
||||
Tuples.of("2", "高校毕业生"),
|
||||
Tuples.of("3", "残疾人"),
|
||||
Tuples.of("4", "低收入家庭"),
|
||||
Tuples.of("5", "零就业家庭"),
|
||||
Tuples.of("6", "其他重点人群")
|
||||
)));
|
||||
for (Tuple2<String, String> item : groupList) {
|
||||
list.add(KeyGroupServiceSituationKeyGroupScoreVo.builder()
|
||||
.code(item.getT1())
|
||||
.desc(item.getT2())
|
||||
.serviceCoverageRate(new BigDecimal(Math.random() * 100).setScale(2, RoundingMode.HALF_UP))
|
||||
.employmentRate(new BigDecimal(Math.random() * 100).setScale(2, RoundingMode.HALF_UP))
|
||||
.incomeImprovement(new BigDecimal(Math.random() * 100).setScale(2, RoundingMode.HALF_UP))
|
||||
.serviceSatisfaction(new BigDecimal(Math.random() * 100).setScale(2, RoundingMode.HALF_UP))
|
||||
.build());
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<QueryResultVo> helpProcessSatisfaction(QueryParamDto dto) {
|
||||
List<QueryResultVo> list = new ArrayList<>();
|
||||
List<Tuple2<String, String>> satisfactionList =
|
||||
Collections.unmodifiableList(new ArrayList<>(Arrays.asList(
|
||||
Tuples.of("1", "服务态度"),
|
||||
Tuples.of("2", "服务专业性"),
|
||||
Tuples.of("3", "整体满意度"),
|
||||
Tuples.of("4", "帮扶效果"),
|
||||
Tuples.of("5", "服务响应时间")
|
||||
)));
|
||||
for (Tuple2<String, String> item : satisfactionList) {
|
||||
list.add(QueryResultVo.builder()
|
||||
.code(item.getT1())
|
||||
.desc(item.getT2())
|
||||
.amount(new BigDecimal(Math.random() * 5).setScale(2, RoundingMode.HALF_UP))
|
||||
.build());
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<QueryResultVo> questionAndSuggestion(QueryParamDto dto) {
|
||||
List<QueryResultVo> list = new ArrayList<>();
|
||||
List<Tuple2<String, String>> suggestionList =
|
||||
Collections.unmodifiableList(new ArrayList<>(Arrays.asList(
|
||||
Tuples.of("1", "帮扶资源不足"),
|
||||
Tuples.of("2", "服务人员专业性不够"),
|
||||
Tuples.of("3", "帮扶方式单一"),
|
||||
Tuples.of("4", "跟踪服务不及时"),
|
||||
Tuples.of("5", "信息系统不完善")
|
||||
)));
|
||||
for (Tuple2<String, String> item : suggestionList) {
|
||||
list.add(QueryResultVo.builder()
|
||||
.code(item.getT1())
|
||||
.desc(item.getT2())
|
||||
.count((long) Math.floor(Math.random() * 1000) + 1)
|
||||
.build());
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user