添加功能

This commit is contained in:
马宝龙
2026-07-14 21:31:57 +08:00
parent 11a20d7309
commit 9c11c27cd8
11 changed files with 1008 additions and 134 deletions

View File

@@ -363,4 +363,27 @@ public class CommonConstant {
Tuple2::getT1,
Tuple2::getT2
)));
/**
* 帮扶类型列表
*/
public static final List<Tuple2<String, String>> ASSIST_TYPE_LIST =
Collections.unmodifiableList(new ArrayList<>(Arrays.asList(
Tuples.of("1", "职业指导"),
Tuples.of("2", "创业服务"),
Tuples.of("3", "职业培训"),
Tuples.of("4", "就业援助"),
Tuples.of("5", "职业介绍"),
Tuples.of("6", "就业见习")
)));
/**
* 帮扶类型Map
*/
public static final Map<String, String> ASSIST_TYPE_MAP =
Collections.unmodifiableMap(ASSIST_TYPE_LIST.stream()
.collect(Collectors.toMap(
Tuple2::getT1,
Tuple2::getT2
)));
}

View File

@@ -28,6 +28,10 @@ public class KeyGroupServiceSituationKeyGroupScoreVo implements Serializable {
* 描述
*/
private String desc;
/**
* 服务人数
*/
private Long serviceCount;
/**
* 服务覆盖率
*/

View File

@@ -0,0 +1,107 @@
package com.ruoyi.cms.mapper;
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.QueryResultVo;
import java.util.List;
/**
* 帮服记录主题库
*
* @author 马宝龙
* @date 2026/7/14
*/
public interface ThemeAssistRecordMapper {
/**
* 查询数量
*
* @param dto 查询参数
* @return 结果
*/
Long queryCount(QueryParamDto dto);
/**
* 查询次数
*
* @param dto 查询参数
* @return 结果
*/
Long queryTimes(QueryParamDto dto);
/**
* 查询就业数量
*
* @param dto 查询参数
* @return 结果
*/
Long queryEmploymentCount(QueryParamDto dto);
/**
* 按人员类型分组
*
* @param dto 查询参数
* @return 结果列表
*/
List<QueryResultVo> queryByGroupType(QueryParamDto dto);
/**
* 帮扶服务类型分析
*
* @param dto 查询参数
* @return 结果列表
*/
List<KeyGroupServiceSituationHelpTypeVo> helpServiceType(QueryParamDto dto);
/**
* 帮扶成效评估 - 年度
* @param dto 查询参数
* @return 结果
*/
List<KeyGroupServiceSituationHelpScoreVo> helpResultScoreYear(QueryParamDto dto);
/**
* 帮扶成效评估 - 季度
* @param dto 查询参数
* @return 结果
*/
List<KeyGroupServiceSituationHelpScoreVo> helpResultScoreQuarter(QueryParamDto dto);
/**
* 帮扶成效评估 - 月度
* @param dto 查询参数
* @return 结果
*/
List<KeyGroupServiceSituationHelpScoreVo> helpResultScoreMonth(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);
}

View File

@@ -14,10 +14,26 @@ import java.util.List;
public interface ThemeKeyGroupMapper {
/**
* 查询数量
*
* @param dto 查询参数
* @return 结果
*/
Long queryCount(QueryParamDto dto);
/**
* 重点产业招聘需求对比
* 查询需求数量
*
* @param dto 查询参数
* @return 结果
*/
Long queryDemandCount(QueryParamDto dto);
/**
* 按人员类型分组
*
* @param dto 查询参数
* @return 结果列表

View File

@@ -13,6 +13,10 @@ import com.ruoyi.cms.domain.vo.JobDemandTreadDemandVo;
import com.ruoyi.cms.domain.vo.JobDemandTreadEconomyCorrelationVo;
import com.ruoyi.cms.domain.vo.JobDemandTreadGDPCorrelationVo;
import com.ruoyi.cms.domain.vo.JobDemandTreadOverviewVo;
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.LaborForceRecruitmentDemandOverviewVo;
import com.ruoyi.cms.domain.vo.MajorIndustryEmploymentMonitorOverviewVo;
import com.ruoyi.cms.domain.vo.MajorIndustryEmploymentMonitorTreadVo;
@@ -28,6 +32,7 @@ import com.ruoyi.cms.service.AnalysisExportService;
import com.ruoyi.cms.service.AnalysisGraduateEmploymentInfoService;
import com.ruoyi.cms.service.AnalysisIndustryEmploymentInfoService;
import com.ruoyi.cms.service.AnalysisJobDemandTreadService;
import com.ruoyi.cms.service.AnalysisKeyGroupServiceSituationService;
import com.ruoyi.cms.service.AnalysisLaborForceRecruitmentDemandService;
import com.ruoyi.cms.service.AnalysisMajorIndustryEmploymentMonitorService;
import com.ruoyi.cms.service.AnalysisSectorOccupationSkillService;
@@ -70,6 +75,7 @@ public class AnalysisExportServiceImpl implements AnalysisExportService {
private final AnalysisSectorTalentService analysisSectorTalentService;
private final AnalysisSectorOccupationSkillService analysisSectorOccupationSkillService;
private final AnalysisJobDemandTreadService analysisJobDemandTreadService;
private final AnalysisKeyGroupServiceSituationService analysisKeyGroupServiceSituationService;
@Override
public void exportData(HttpServletResponse response, QueryParamDto dto) {
@@ -104,7 +110,7 @@ public class AnalysisExportServiceImpl implements AnalysisExportService {
break;
// 就业大数据专题分析平台-重点人群跟踪服务情况分析
case EMPLOYMENT_KEY_GROUP_SERVICE_SITUATION:
test(response, dto);
exportKeyGroupServiceSituation(response, dto);
break;
// 智慧就业大数据分析展示系统-行业就业情况信息分析
case WISDOM_EMPLOYMENT_INDUSTRY_EMPLOYMENT_INFO:
@@ -1321,6 +1327,190 @@ public class AnalysisExportServiceImpl implements AnalysisExportService {
multiSheetExcelUtil.addSheet(basicSituationExcelUtil);
multiSheetExcelUtil.setFileName(dto.getExportModule().getDesc());
multiSheetExcelUtil.exportExcel(response);
}
/**
* 导出 重点人群跟踪服务情况分析
*
* @param response 响应
* @param dto 查询参数
* @throws IOException 异常
*/
private void exportKeyGroupServiceSituation(HttpServletResponse response, QueryParamDto dto) throws IOException {
MultiSheetExcelUtil multiSheetExcelUtil = new MultiSheetExcelUtil();
String exportTime = DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD_HH_MM_SS);
// 数据总览
List<ExcelRow> basicExportList = new ArrayList<>();
basicExportList.add(new ExcelRow("导出时间", exportTime));
basicExportList.add(new ExcelRow("数据总览"));
basicExportList.add(new ExcelRow("指标名称(单位)", "指标值", "较上期变化(%"));
QueryParamDto newParam = new QueryParamDto();
BeanUtils.copyProperties(dto, newParam);
KeyGroupServiceSituationOverviewVo overview =
analysisKeyGroupServiceSituationService.overview(newParam);
basicExportList.add(new ExcelRow(
"服务对象人数(人)", transform(overview.getServiceTargetCount()),
transform(overview.getServiceTargetCountMom())
));
basicExportList.add(new ExcelRow(
"服务需求人数(人)", transform(overview.getServiceDemandCount()),
transform(overview.getServiceDemandCountMom())
));
basicExportList.add(new ExcelRow(
"实际服务人数(人)", transform(overview.getActualServiceCount()),
transform(overview.getActualServiceCountMom())
));
basicExportList.add(new ExcelRow(
"实际服务人次(人次)", transform(overview.getActualServiceTimes()),
transform(overview.getActualServiceTimesMom())
));
basicExportList.add(new ExcelRow(
"服务覆盖率(%", transform(overview.getServiceCoverageRate()),
transform(overview.getServiceCoverageRateMom())
));
basicExportList.add(new ExcelRow(
"帮扶后就业率(%", transform(overview.getAfterHelpEmploymentRate()),
transform(overview.getAfterHelpEmploymentRateMom())
));
basicExportList.add(new ExcelRow(
"帮扶资金投放(家)", transform(overview.getHelpFundPutCount()),
transform(overview.getHelpFundPutCountMom())
));
// 创建Excel工具类并添加工作表
ExcelUtil<ExcelRow> basicSituationExcelUtil = new ExcelUtil<>(ExcelRow.class);
basicSituationExcelUtil.setDataList(basicExportList);
basicSituationExcelUtil.setSheetName("数据总览");
multiSheetExcelUtil.addSheet(basicSituationExcelUtil);
// 服务覆盖范围
basicExportList = new ArrayList<>();
basicExportList.add(new ExcelRow("服务覆盖范围"));
basicExportList.add(new ExcelRow("人员类型", "人员总数(人)", "服务覆盖人数(人)", "覆盖率(%"));
newParam = new QueryParamDto();
BeanUtils.copyProperties(dto, newParam);
List<QueryResultVo> resultList =
analysisKeyGroupServiceSituationService.serviceCoverage(newParam);
for (QueryResultVo result : resultList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getCount()), transform(result.getAnotherCount()),
transform(result.getRate())
));
}
// 创建Excel工具类并添加工作表
basicSituationExcelUtil = new ExcelUtil<>(ExcelRow.class);
basicSituationExcelUtil.setDataList(basicExportList);
basicSituationExcelUtil.setSheetName("服务覆盖范围");
multiSheetExcelUtil.addSheet(basicSituationExcelUtil);
// 帮扶服务类型分析
basicExportList = new ArrayList<>();
basicExportList.add(new ExcelRow("帮扶服务类型分析"));
basicExportList.add(new ExcelRow("帮扶类型", "服务人数(人)", "满意度(分)", "成效评分(分)"));
newParam = new QueryParamDto();
BeanUtils.copyProperties(dto, newParam);
List<KeyGroupServiceSituationHelpTypeVo> situationHelpTypeList =
analysisKeyGroupServiceSituationService.helpServiceType(newParam);
for (KeyGroupServiceSituationHelpTypeVo result : situationHelpTypeList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getServiceCount()),transform(result.getServiceSatisfaction()),
transform(result.getResultScore())
));
}
// 创建Excel工具类并添加工作表
basicSituationExcelUtil = new ExcelUtil<>(ExcelRow.class);
basicSituationExcelUtil.setDataList(basicExportList);
basicSituationExcelUtil.setSheetName("帮扶服务类型分析");
multiSheetExcelUtil.addSheet(basicSituationExcelUtil);
// 帮扶成效评估
basicExportList = new ArrayList<>();
basicExportList.add(new ExcelRow("帮扶成效评估"));
basicExportList.add(new ExcelRow("时间", "就业率(%", "收入改善(%", "生活质量改善(%"));
newParam = new QueryParamDto();
BeanUtils.copyProperties(dto, newParam);
List<KeyGroupServiceSituationHelpScoreVo> serviceSituationHelpScoreList =
analysisKeyGroupServiceSituationService.helpResultScore(newParam);
for (KeyGroupServiceSituationHelpScoreVo result : serviceSituationHelpScoreList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getEmploymentRate()),transform(result.getIncomeImprovement()),
transform(result.getLifeQualityImprovement())
));
}
// 创建Excel工具类并添加工作表
basicSituationExcelUtil = new ExcelUtil<>(ExcelRow.class);
basicSituationExcelUtil.setDataList(basicExportList);
basicSituationExcelUtil.setSheetName("帮扶成效评估");
multiSheetExcelUtil.addSheet(basicSituationExcelUtil);
// 不同重点人群差异化分析
basicExportList = new ArrayList<>();
basicExportList.add(new ExcelRow("不同重点人群差异化分析"));
basicExportList.add(new ExcelRow("人员类型", "帮扶覆盖率(%", "就业率(%", "收入改善(%", "满意度(分)"));
newParam = new QueryParamDto();
BeanUtils.copyProperties(dto, newParam);
List<KeyGroupServiceSituationKeyGroupScoreVo> situationKeyGroupScoreList =
analysisKeyGroupServiceSituationService.keyGroupDifferentiation(newParam);
for (KeyGroupServiceSituationKeyGroupScoreVo result : situationKeyGroupScoreList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getServiceCoverageRate()),transform(result.getEmploymentRate()),
transform(result.getIncomeImprovement()), transform(result.getServiceSatisfaction())
));
}
// 创建Excel工具类并添加工作表
basicSituationExcelUtil = new ExcelUtil<>(ExcelRow.class);
basicSituationExcelUtil.setDataList(basicExportList);
basicSituationExcelUtil.setSheetName("不同重点人群差异化分析");
multiSheetExcelUtil.addSheet(basicSituationExcelUtil);
// 帮扶过程与满意度
basicExportList = new ArrayList<>();
basicExportList.add(new ExcelRow("帮扶过程与满意度"));
basicExportList.add(new ExcelRow("类型", "满意度(分)"));
newParam = new QueryParamDto();
BeanUtils.copyProperties(dto, newParam);
resultList =
analysisKeyGroupServiceSituationService.helpProcessSatisfaction(newParam);
for (QueryResultVo result : resultList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getAmount())
));
}
// 创建Excel工具类并添加工作表
basicSituationExcelUtil = new ExcelUtil<>(ExcelRow.class);
basicSituationExcelUtil.setDataList(basicExportList);
basicSituationExcelUtil.setSheetName("帮扶过程与满意度");
multiSheetExcelUtil.addSheet(basicSituationExcelUtil);
// 问题与建议
basicExportList = new ArrayList<>();
basicExportList.add(new ExcelRow("问题与建议"));
basicExportList.add(new ExcelRow("类型", "反馈分数(分)"));
newParam = new QueryParamDto();
BeanUtils.copyProperties(dto, newParam);
resultList =
analysisKeyGroupServiceSituationService.questionAndSuggestion(newParam);
for (QueryResultVo result : resultList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getAmount())
));
}
// 创建Excel工具类并添加工作表
basicSituationExcelUtil = new ExcelUtil<>(ExcelRow.class);
basicSituationExcelUtil.setDataList(basicExportList);
basicSituationExcelUtil.setSheetName("问题与建议");
multiSheetExcelUtil.addSheet(basicSituationExcelUtil);
multiSheetExcelUtil.setFileName(dto.getExportModule().getDesc());
multiSheetExcelUtil.exportExcel(response);

View File

@@ -11,22 +11,31 @@ 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.mapper.ThemeAssistRecordMapper;
import com.ruoyi.cms.mapper.ThemeKeyGroupMapper;
import com.ruoyi.cms.service.AnalysisKeyGroupServiceSituationService;
import com.ruoyi.cms.util.MathUtil;
import com.ruoyi.cms.util.PageUtil;
import com.ruoyi.cms.util.ParamUtil;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.bean.BeanUtils;
import lombok.RequiredArgsConstructor;
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.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
/**
* 重点人群跟踪服务情况分析
@@ -37,160 +46,218 @@ import java.util.List;
@Service
@Validated
@Slf4j
@RequiredArgsConstructor
public class AnalysisKeyGroupServiceSituationServiceImpl implements AnalysisKeyGroupServiceSituationService {
private final ThemeKeyGroupMapper themeKeyGroupMapper;
private final ThemeAssistRecordMapper themeAssistRecordMapper;
@Override
public KeyGroupServiceSituationOverviewVo overview(QueryParamDto dto) {
// 计算当前时间数据
ParamUtil.dealParam(dto);
Long serviceTargetCount = themeKeyGroupMapper.queryCount(dto);
Long serviceDemandCount = Optional.ofNullable(themeKeyGroupMapper.queryDemandCount(dto))
.orElse(0L);
Long actualServiceCount = Optional.ofNullable(themeAssistRecordMapper.queryCount(dto))
.orElse(0L);
Long actualServiceTimes = themeAssistRecordMapper.queryTimes(dto);
BigDecimal serviceCoverageRate = MathUtil.calculatePercentage(serviceDemandCount, actualServiceCount);
Long employmentCount = Optional.ofNullable(themeAssistRecordMapper.queryEmploymentCount(dto))
.orElse(0L);
BigDecimal afterHelpEmploymentRate = MathUtil.calculatePercentage(actualServiceCount, employmentCount);
// 计算上一时间段数据
QueryParamDto lastDto = new QueryParamDto();
BeanUtils.copyProperties(dto, lastDto);
ParamUtil.calculateLastTime(lastDto);
Long lastServiceTargetCount = themeKeyGroupMapper.queryCount(lastDto);
Long lastServiceDemandCount = Optional.ofNullable(themeKeyGroupMapper.queryDemandCount(lastDto))
.orElse(0L);
Long lastActualServiceCount = Optional.ofNullable(themeAssistRecordMapper.queryCount(lastDto))
.orElse(0L);
Long lastActualServiceTimes = themeAssistRecordMapper.queryTimes(lastDto);
BigDecimal lastServiceCoverageRate = MathUtil.calculatePercentage(lastServiceDemandCount,
lastActualServiceCount);
Long lastEmploymentCount = Optional.ofNullable(themeAssistRecordMapper.queryEmploymentCount(lastDto))
.orElse(0L);
BigDecimal lastAfterHelpEmploymentRate = MathUtil.calculatePercentage(lastActualServiceCount,
lastEmploymentCount);
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))
.overallSatisfaction(BigDecimal.valueOf(4.5))
.overallSatisfactionMom(BigDecimal.valueOf(2.5))
.majorProblemMentionedCount(657L)
.majorProblemTypeCount(5L)
.serviceTargetCount(serviceTargetCount)
.serviceTargetCountMom(
MathUtil.calculatePercentageGrowthRate(lastServiceTargetCount, serviceTargetCount))
.serviceDemandCount(serviceDemandCount)
.serviceDemandCountMom(
MathUtil.calculatePercentageGrowthRate(lastServiceDemandCount, serviceDemandCount))
.actualServiceCount(actualServiceCount)
.actualServiceCountMom(
MathUtil.calculatePercentageGrowthRate(lastActualServiceCount, actualServiceCount))
.actualServiceTimes(actualServiceTimes)
.actualServiceTimesMom(
MathUtil.calculatePercentageGrowthRate(lastActualServiceTimes, actualServiceTimes))
.serviceCoverageRate(serviceCoverageRate)
.serviceCoverageRateMom(
MathUtil.calculatePercentageGrowthRate(lastServiceCoverageRate, serviceCoverageRate))
.afterHelpEmploymentRate(afterHelpEmploymentRate)
.afterHelpEmploymentRateMom(
MathUtil.calculatePercentageGrowthRate(lastAfterHelpEmploymentRate, afterHelpEmploymentRate))
.helpFundPutCount(0L)
.helpFundPutCountMom(BigDecimal.valueOf(0))
// todo
.overallSatisfaction(BigDecimal.valueOf(0))
.overallSatisfactionMom(BigDecimal.valueOf(0))
.majorProblemMentionedCount(0L)
.majorProblemTypeCount(0L)
.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());
ParamUtil.dealParam(dto);
List<QueryResultVo> serviceTargetList = themeKeyGroupMapper.queryByGroupType(dto);
List<QueryResultVo> actualServiceList = themeAssistRecordMapper.queryByGroupType(dto);
Set<String> groupTypeSet = new HashSet<>();
Map<String, QueryResultVo> serviceTargetMap = new HashMap<>();
for (QueryResultVo vo : serviceTargetList) {
groupTypeSet.add(vo.getCode());
serviceTargetMap.put(vo.getCode(), vo);
}
Map<String, QueryResultVo> actualServiceMap = new HashMap<>();
for (QueryResultVo vo : actualServiceList) {
groupTypeSet.add(vo.getCode());
actualServiceMap.put(vo.getCode(), vo);
}
List<QueryResultVo> list = new ArrayList<>();
for (String groupType : groupTypeSet) {
QueryResultVo serviceTarget = Optional.ofNullable(serviceTargetMap.get(groupType))
.orElse(QueryResultVo.builder().build());
QueryResultVo actualService = Optional.ofNullable(actualServiceMap.get(groupType))
.orElse(QueryResultVo.builder().build());
BigDecimal serviceCoverageRate = MathUtil.calculatePercentage(serviceTarget.getCount(),
actualService.getCount());
list.add(QueryResultVo.builder()
.code(groupType)
.desc(ParamUtil.fillDictName(groupType, "groupType"))
.count(serviceTarget.getCount())
.anotherCount(actualService.getCount())
.rate(serviceCoverageRate)
.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());
ParamUtil.dealParam(dto);
List<KeyGroupServiceSituationHelpTypeVo> list = themeAssistRecordMapper.helpServiceType(dto);
for (KeyGroupServiceSituationHelpTypeVo vo : list) {
vo.setDesc(ParamUtil.fillDictName(vo.getCode(), "assistType"));
}
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());
ParamUtil.dealParam(dto);
List<KeyGroupServiceSituationHelpScoreVo> list;
switch (dto.getQueryTimeType()) {
case YEAR: {
dto.setStartTime(LocalDateTime.of(dto.getYear(), 1, 1, 0, 0, 0)
.minusYears(5L));
dto.setEndTime(LocalDateTime.of(dto.getYear(), 12, 31, 23, 59, 59));
list = themeAssistRecordMapper.helpResultScoreYear(dto);
break;
}
case QUARTER: {
dto.setStartTime(LocalDateTime.of(dto.getYear(), 1, 1, 0, 0, 0));
dto.setEndTime(LocalDateTime.of(dto.getYear(), 12, 31, 23, 59, 59));
list = themeAssistRecordMapper.helpResultScoreQuarter(dto);
break;
}
case MONTH: {
dto.setStartTime(LocalDateTime.of(dto.getYear(), 1, 1, 0, 0, 0));
dto.setEndTime(LocalDateTime.of(dto.getYear(), 12, 31, 23, 59, 59));
list = themeAssistRecordMapper.helpResultScoreMonth(dto);
break;
}
default:
throw new ServiceException("时间类型错误");
}
return list;
}
@Override
public List<KeyGroupServiceSituationKeyGroupScoreVo> keyGroupDifferentiation(QueryParamDto dto) {
ParamUtil.dealParam(dto);
List<QueryResultVo> serviceTargetList = themeKeyGroupMapper.queryByGroupType(dto);
List<KeyGroupServiceSituationKeyGroupScoreVo> situationList =
themeAssistRecordMapper.keyGroupDifferentiation(dto);
Map<String, QueryResultVo> serviceTargetMap = new HashMap<>();
for (QueryResultVo vo : serviceTargetList) {
serviceTargetMap.put(vo.getCode(), vo);
}
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) {
for (KeyGroupServiceSituationKeyGroupScoreVo vo : situationList) {
QueryResultVo serviceTarget = Optional.ofNullable(serviceTargetMap.get(vo.getCode()))
.orElse(QueryResultVo.builder().build());
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());
.code(vo.getCode())
.desc(ParamUtil.fillDictName(vo.getCode(), "groupType"))
.serviceCount(vo.getServiceCount())
.serviceCoverageRate(MathUtil.calculatePercentage(serviceTarget.getCount(), vo.getServiceCount()))
.employmentRate(vo.getEmploymentRate())
.incomeImprovement(vo.getIncomeImprovement())
.serviceSatisfaction(vo.getServiceSatisfaction())
.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;
ParamUtil.dealParam(dto);
return themeAssistRecordMapper.helpProcessSatisfaction(dto);
}
@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;
ParamUtil.dealParam(dto);
return themeAssistRecordMapper.questionAndSuggestion(dto);
}
@Override

View File

@@ -229,6 +229,9 @@ public class ParamUtil {
case "groupType": {
return Optional.ofNullable(CommonConstant.GROUP_TYPE_MAP.get(code)).orElse("未知");
}
case "assistType": {
return Optional.ofNullable(CommonConstant.ASSIST_TYPE_MAP.get(code)).orElse("未知");
}
default:
throw new ServiceException("字典名称错误");
}