添加功能

This commit is contained in:
马宝龙
2026-07-15 20:02:55 +08:00
parent 80f1e0f1e3
commit d8be91ca9b
2 changed files with 344 additions and 46 deletions

View File

@@ -73,7 +73,7 @@ public class LaborForceEmploymentOverviewVo implements Serializable {
*/
private Long receiveUnemploymentServiceCount;
/**
* 失业登记人数环比
* 享受失业服务人数环比
*/
private BigDecimal receiveUnemploymentServiceCountMom;
}

View File

@@ -17,6 +17,8 @@ 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.LaborForceEmploymentOverviewVo;
import com.ruoyi.cms.domain.vo.LaborForceEmploymentTargetVo;
import com.ruoyi.cms.domain.vo.LaborForceRecruitmentDemandOverviewVo;
import com.ruoyi.cms.domain.vo.MajorIndustryEmploymentMonitorOverviewVo;
import com.ruoyi.cms.domain.vo.MajorIndustryEmploymentMonitorTreadVo;
@@ -33,6 +35,7 @@ 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.AnalysisLaborForceEmploymentService;
import com.ruoyi.cms.service.AnalysisLaborForceRecruitmentDemandService;
import com.ruoyi.cms.service.AnalysisMajorIndustryEmploymentMonitorService;
import com.ruoyi.cms.service.AnalysisSectorOccupationSkillService;
@@ -50,7 +53,6 @@ import org.springframework.validation.annotation.Validated;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -76,6 +78,7 @@ public class AnalysisExportServiceImpl implements AnalysisExportService {
private final AnalysisSectorOccupationSkillService analysisSectorOccupationSkillService;
private final AnalysisJobDemandTreadService analysisJobDemandTreadService;
private final AnalysisKeyGroupServiceSituationService analysisKeyGroupServiceSituationService;
private final AnalysisLaborForceEmploymentService analysisLaborForceEmploymentService;
@Override
public void exportData(HttpServletResponse response, QueryParamDto dto) {
@@ -134,7 +137,7 @@ public class AnalysisExportServiceImpl implements AnalysisExportService {
break;
// 智慧就业大数据分析展示系统-劳动力就业失业数据分析
case WISDOM_EMPLOYMENT_LABOR_FORCE_EMPLOYMENT:
test(response, dto);
exportWisdomLaborForceEmployment(response, dto);
break;
// 劳动力动态监测系统-劳动力招聘需求分析
case LABOR_FORCE_RECRUITMENT_DEMAND:
@@ -150,41 +153,6 @@ public class AnalysisExportServiceImpl implements AnalysisExportService {
}
}
private void test(HttpServletResponse response, QueryParamDto dto) throws IOException {
MultiSheetExcelUtil multiSheetExcelUtil = test(dto);
multiSheetExcelUtil.setFileName(dto.getExportModule().getDesc());
multiSheetExcelUtil.exportExcel(response);
}
private MultiSheetExcelUtil test(QueryParamDto dto) {
// 1. 创建多工作表Excel工具
MultiSheetExcelUtil multiSheetExcelUtil = new MultiSheetExcelUtil();
LocalDateTime now = LocalDateTime.now();
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("测试1", "测试2", "测试3", "测试4", "测试5"));
basicExportList.add(new ExcelRow(
"1", "1", "1", "1", "1"
));
basicExportList.add(new ExcelRow(
"2", "2", "2", "2", "2"
));
basicExportList.add(new ExcelRow(
"3", "3", "3", "3", "3"
));
// 创建Excel工具类并添加工作表
ExcelUtil<ExcelRow> basicSituationExcelUtil = new ExcelUtil<>(ExcelRow.class);
basicSituationExcelUtil.setDataList(basicExportList);
basicSituationExcelUtil.setSheetName("测试数据");
multiSheetExcelUtil.addSheet(basicSituationExcelUtil);
return multiSheetExcelUtil;
}
/**
* 导出 行业就业情况信息分析
@@ -1393,7 +1361,7 @@ public class AnalysisExportServiceImpl implements AnalysisExportService {
// 服务覆盖范围
basicExportList = new ArrayList<>();
basicExportList.add(new ExcelRow("服务覆盖范围"));
basicExportList.add(new ExcelRow("人员类型", "人员总数(人)", "服务覆盖人数(人)", "覆盖率(%"));
basicExportList.add(new ExcelRow("人员类型", "人员总数(人)", "服务覆盖人数(人)", "覆盖率(%"));
newParam = new QueryParamDto();
BeanUtils.copyProperties(dto, newParam);
List<QueryResultVo> resultList =
@@ -1420,7 +1388,7 @@ public class AnalysisExportServiceImpl implements AnalysisExportService {
analysisKeyGroupServiceSituationService.helpServiceType(newParam);
for (KeyGroupServiceSituationHelpTypeVo result : situationHelpTypeList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getServiceCount()),transform(result.getServiceSatisfaction()),
result.getDesc(), transform(result.getServiceCount()), transform(result.getServiceSatisfaction()),
transform(result.getResultScore())
));
}
@@ -1440,7 +1408,7 @@ public class AnalysisExportServiceImpl implements AnalysisExportService {
analysisKeyGroupServiceSituationService.helpResultScore(newParam);
for (KeyGroupServiceSituationHelpScoreVo result : serviceSituationHelpScoreList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getEmploymentRate()),transform(result.getIncomeImprovement()),
result.getDesc(), transform(result.getEmploymentRate()), transform(result.getIncomeImprovement()),
transform(result.getLifeQualityImprovement())
));
}
@@ -1460,7 +1428,7 @@ public class AnalysisExportServiceImpl implements AnalysisExportService {
analysisKeyGroupServiceSituationService.keyGroupDifferentiation(newParam);
for (KeyGroupServiceSituationKeyGroupScoreVo result : situationKeyGroupScoreList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getServiceCoverageRate()),transform(result.getEmploymentRate()),
result.getDesc(), transform(result.getServiceCoverageRate()), transform(result.getEmploymentRate()),
transform(result.getIncomeImprovement()), transform(result.getServiceSatisfaction())
));
}
@@ -1510,7 +1478,6 @@ public class AnalysisExportServiceImpl implements AnalysisExportService {
multiSheetExcelUtil.addSheet(basicSituationExcelUtil);
multiSheetExcelUtil.setFileName(dto.getExportModule().getDesc());
multiSheetExcelUtil.exportExcel(response);
@@ -2546,7 +2513,7 @@ public class AnalysisExportServiceImpl implements AnalysisExportService {
analysisKeyGroupServiceSituationService.helpResultScore(newParam);
for (KeyGroupServiceSituationHelpScoreVo result : serviceSituationHelpScoreList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getEmploymentRate()),transform(result.getIncomeImprovement()),
result.getDesc(), transform(result.getEmploymentRate()), transform(result.getIncomeImprovement()),
transform(result.getLifeQualityImprovement())
));
}
@@ -2567,7 +2534,7 @@ public class AnalysisExportServiceImpl implements AnalysisExportService {
analysisKeyGroupServiceSituationService.keyGroupDifferentiation(newParam);
for (KeyGroupServiceSituationKeyGroupScoreVo result : situationKeyGroupScoreList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getServiceCoverageRate()),transform(result.getEmploymentRate()),
result.getDesc(), transform(result.getServiceCoverageRate()), transform(result.getEmploymentRate()),
transform(result.getIncomeImprovement()), transform(result.getServiceSatisfaction())
));
}
@@ -2581,7 +2548,7 @@ public class AnalysisExportServiceImpl implements AnalysisExportService {
// 服务覆盖范围
basicExportList = new ArrayList<>();
basicExportList.add(new ExcelRow("服务覆盖范围"));
basicExportList.add(new ExcelRow("人员类型", "人员总数(人)", "服务覆盖人数(人)", "覆盖率(%"));
basicExportList.add(new ExcelRow("人员类型", "人员总数(人)", "服务覆盖人数(人)", "覆盖率(%"));
newParam = new QueryParamDto();
BeanUtils.copyProperties(dto, newParam);
List<QueryResultVo> resultList =
@@ -2644,6 +2611,337 @@ public class AnalysisExportServiceImpl implements AnalysisExportService {
}
/**
* 导出 劳动力就业失业数据分析
*
* @param response 响应
* @param dto 查询参数
* @throws IOException 异常
*/
private void exportWisdomLaborForceEmployment(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);
LaborForceEmploymentOverviewVo overview =
analysisLaborForceEmploymentService.overview(newParam);
basicExportList.add(new ExcelRow(
"就业累计人数(人)", transform(overview.getTotalEmploymentCount()),
transform(overview.getTotalEmploymentCountMom())
));
basicExportList.add(new ExcelRow(
"城镇新增就业人数(人)", transform(overview.getTownEmploymentCount()),
transform(overview.getTownEmploymentCountMom())
));
basicExportList.add(new ExcelRow(
"失业人员再就业人数(人)", transform(overview.getUnEmploymentEmploymentCount()),
transform(overview.getUnEmploymentEmploymentCountMom())
));
basicExportList.add(new ExcelRow(
"就业困难人员就业人数(人)", transform(overview.getEmploymentDifficultyEmploymentCount()),
transform(overview.getEmploymentDifficultyEmploymentCountMom())
));
basicExportList.add(new ExcelRow(
"失业登记人数(人)", transform(overview.getUnemploymentCount()),
transform(overview.getUnemploymentCountMom())
));
basicExportList.add(new ExcelRow(
"失业金申领人数(人)", transform(overview.getUnemploymentBenefitCount()),
transform(overview.getUnemploymentBenefitCountMom())
));
basicExportList.add(new ExcelRow(
"享受失业服务人数(人)", transform(overview.getReceiveUnemploymentServiceCount()),
transform(overview.getReceiveUnemploymentServiceCountMom())
));
// 创建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<HeatmapVo> heatmapList = analysisLaborForceEmploymentService.employmentHeatmap(newParam);
for (HeatmapVo heatmap : heatmapList) {
basicExportList.add(new ExcelRow(
heatmap.getAreaName(), transform(heatmap.getCount())
));
}
// 创建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);
heatmapList = analysisLaborForceEmploymentService.unemploymentHeatmap(newParam);
for (HeatmapVo heatmap : heatmapList) {
basicExportList.add(new ExcelRow(
heatmap.getAreaName(), transform(heatmap.getCount())
));
}
// 创建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);
LaborForceEmploymentTargetVo taget =
analysisLaborForceEmploymentService.taget(newParam);
basicExportList.add(new ExcelRow(
"完成率(%", transform(taget.getFinishRate())
));
basicExportList.add(new ExcelRow(
"当前完成(人)", transform(taget.getCurrentFinishCount())
));
basicExportList.add(new ExcelRow(
"全年完成(人)", transform(taget.getOverallYearFinishCount())
));
// 创建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<QueryResultVo> resultList =
analysisLaborForceEmploymentService.employIndustrySituation(newParam);
for (QueryResultVo result : resultList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getCount()), transform(result.getCountPercentage())
));
}
// 创建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 =
analysisLaborForceEmploymentService.employmentGender(newParam);
for (QueryResultVo result : resultList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getCount()), transform(result.getCountPercentage())
));
}
// 创建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 =
analysisLaborForceEmploymentService.employmentMode(newParam);
for (QueryResultVo result : resultList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getCount()), transform(result.getCountPercentage())
));
}
// 创建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 =
analysisLaborForceEmploymentService.unemploymentReason(newParam);
for (QueryResultVo result : resultList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getCount()), transform(result.getCountPercentage())
));
}
// 创建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 =
analysisLaborForceEmploymentService.unemploymentDuration(newParam);
for (QueryResultVo result : resultList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getCount()), transform(result.getCountPercentage())
));
}
// 创建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 =
analysisLaborForceEmploymentService.employmentAge(newParam);
for (QueryResultVo result : resultList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getCount()), transform(result.getCountPercentage())
));
}
// 创建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 =
analysisLaborForceEmploymentService.employmentEducationLevel(newParam);
for (QueryResultVo result : resultList) {
basicExportList.add(new ExcelRow(
result.getDesc(), transform(result.getCount()), transform(result.getCountPercentage())
));
}
// 创建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<TreadVo> treadList = analysisLaborForceEmploymentService.unemploymentTrend(newParam);
for (TreadVo tread : treadList) {
basicExportList.add(new ExcelRow(
tread.getDesc(), transform(tread.getLastYearCount()), transform(tread.getCurrentCount()),
transform(tread.getYearOnYearGrowthRate()), transform(tread.getMonthOnMonthGrowthRate())
));
}
// 创建Excel工具类并添加工作表
basicSituationExcelUtil = new ExcelUtil<>(ExcelRow.class);
basicSituationExcelUtil.setDataList(basicExportList);
basicSituationExcelUtil.setSheetName("失业登记与服务趋势-失业登记人数");
multiSheetExcelUtil.addSheet(basicSituationExcelUtil);
// 失业登记与服务趋势-16-24岁青年失业人数
basicExportList = new ArrayList<>();
basicExportList.add(new ExcelRow("失业登记与服务趋势-16-24岁青年失业人数"));
basicExportList.add(new ExcelRow("时间", "上一时段人数(人)", "本时段人数(人)",
"同比增速(%", "环比增速(%"));
newParam = new QueryParamDto();
BeanUtils.copyProperties(dto, newParam);
treadList = analysisLaborForceEmploymentService.unemploymentYouthTrend(newParam);
for (TreadVo tread : treadList) {
basicExportList.add(new ExcelRow(
tread.getDesc(), transform(tread.getLastYearCount()), transform(tread.getCurrentCount()),
transform(tread.getYearOnYearGrowthRate()), transform(tread.getMonthOnMonthGrowthRate())
));
}
// 创建Excel工具类并添加工作表
basicSituationExcelUtil = new ExcelUtil<>(ExcelRow.class);
basicSituationExcelUtil.setDataList(basicExportList);
basicSituationExcelUtil.setSheetName("失业登记与服务趋势-16-24岁青年失业人数");
multiSheetExcelUtil.addSheet(basicSituationExcelUtil);
// 失业登记与服务趋势-享受失业服务人数
basicExportList = new ArrayList<>();
basicExportList.add(new ExcelRow("失业登记与服务趋势-享受失业服务人数"));
basicExportList.add(new ExcelRow("时间", "上一时段人数(人)", "本时段人数(人)",
"同比增速(%", "环比增速(%"));
newParam = new QueryParamDto();
BeanUtils.copyProperties(dto, newParam);
treadList = analysisLaborForceEmploymentService.receiveUnemploymentServiceTrend(newParam);
for (TreadVo tread : treadList) {
basicExportList.add(new ExcelRow(
tread.getDesc(), transform(tread.getLastYearCount()), transform(tread.getCurrentCount()),
transform(tread.getYearOnYearGrowthRate()), transform(tread.getMonthOnMonthGrowthRate())
));
}
// 创建Excel工具类并添加工作表
basicSituationExcelUtil = new ExcelUtil<>(ExcelRow.class);
basicSituationExcelUtil.setDataList(basicExportList);
basicSituationExcelUtil.setSheetName("失业登记与服务趋势-享受失业服务人数");
multiSheetExcelUtil.addSheet(basicSituationExcelUtil);
multiSheetExcelUtil.setFileName(dto.getExportModule().getDesc());
multiSheetExcelUtil.exportExcel(response);
}
/**
* 导出 劳动力招聘需求分析
*