diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisGraduateEmploymentInfoController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisGraduateEmploymentInfoController.java index f080cfb..6150b36 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisGraduateEmploymentInfoController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisGraduateEmploymentInfoController.java @@ -165,4 +165,15 @@ public class AnalysisGraduateEmploymentInfoController { public AjaxResult notEmploymentCrowd(@RequestBody QueryParamDto dto) { return AjaxResult.success(analysisGraduateEmploymentInfoService.notEmploymentCrowd(dto)); } + + /** + * 热力图 + * + * @param dto 查询参数 + * @return 热力图列表 + */ + @PostMapping("/heatmap") + public AjaxResult heatmap(@RequestBody QueryParamDto dto) { + return AjaxResult.success(analysisGraduateEmploymentInfoService.heatmap(dto)); + } } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisIndustryEmploymentInfoController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisIndustryEmploymentInfoController.java index fa909c4..4fd2698 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisIndustryEmploymentInfoController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisIndustryEmploymentInfoController.java @@ -117,4 +117,15 @@ public class AnalysisIndustryEmploymentInfoController { public AjaxResult qualityIndicator(@RequestBody QueryParamDto dto) { return AjaxResult.success(analysisIndustryEmploymentInfoService.qualityIndicator(dto)); } + + /** + * 热力图 + * + * @param dto 查询参数 + * @return 热力图列表 + */ + @PostMapping("/heatmap") + public AjaxResult heatmap(@RequestBody QueryParamDto dto) { + return AjaxResult.success(analysisIndustryEmploymentInfoService.heatmap(dto)); + } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisJobDemandTreadController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisJobDemandTreadController.java index cdd2bc9..a68bcd3 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisJobDemandTreadController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisJobDemandTreadController.java @@ -109,4 +109,15 @@ public class AnalysisJobDemandTreadController { public AjaxResult skillKeyword(@RequestBody QueryParamDto dto) { return AjaxResult.success(analysisJobDemandTreadService.skillKeyword(dto)); } + + /** + * 热力图 + * + * @param dto 查询参数 + * @return 热力图列表 + */ + @PostMapping("/heatmap") + public AjaxResult heatmap(@RequestBody QueryParamDto dto) { + return AjaxResult.success(analysisJobDemandTreadService.heatmap(dto)); + } } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisKeyGroupServiceSituationController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisKeyGroupServiceSituationController.java index 77285c1..fa70263 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisKeyGroupServiceSituationController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisKeyGroupServiceSituationController.java @@ -98,4 +98,15 @@ public class AnalysisKeyGroupServiceSituationController { public AjaxResult questionAndSuggestion(@RequestBody QueryParamDto dto) { return AjaxResult.success(analysisKeyGroupServiceSituationService.questionAndSuggestion(dto)); } + + /** + * 热力图 + * + * @param dto 查询参数 + * @return 热力图列表 + */ + @PostMapping("/heatmap") + public AjaxResult heatmap(@RequestBody QueryParamDto dto) { + return AjaxResult.success(analysisKeyGroupServiceSituationService.heatmap(dto)); + } } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisMajorIndustryEmploymentMonitorController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisMajorIndustryEmploymentMonitorController.java index 6f1507f..64c95ee 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisMajorIndustryEmploymentMonitorController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisMajorIndustryEmploymentMonitorController.java @@ -109,4 +109,15 @@ public class AnalysisMajorIndustryEmploymentMonitorController { public AjaxResult layoffAndLaborGap(@RequestBody QueryParamDto dto) { return AjaxResult.success(analysisMajorIndustryEmploymentMonitorService.layoffAndLaborGap(dto)); } + + /** + * 热力图 + * + * @param dto 查询参数 + * @return 热力图列表 + */ + @PostMapping("/heatmap") + public AjaxResult heatmap(@RequestBody QueryParamDto dto) { + return AjaxResult.success(analysisMajorIndustryEmploymentMonitorService.heatmap(dto)); + } } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisSectorOccupationSkillController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisSectorOccupationSkillController.java index f517e33..6083c67 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisSectorOccupationSkillController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisSectorOccupationSkillController.java @@ -87,4 +87,15 @@ public class AnalysisSectorOccupationSkillController { public AjaxResult talentSkillLevelDistribution(@RequestBody QueryParamDto dto) { return AjaxResult.success(analysisSectorOccupationSkillService.talentSkillLevelDistribution(dto)); } + + /** + * 热力图 + * + * @param dto 查询参数 + * @return 热力图列表 + */ + @PostMapping("/heatmap") + public AjaxResult heatmap(@RequestBody QueryParamDto dto) { + return AjaxResult.success(analysisSectorOccupationSkillService.heatmap(dto)); + } } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisSectorTalentController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisSectorTalentController.java index e65c929..86ee547 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisSectorTalentController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/AnalysisSectorTalentController.java @@ -98,4 +98,15 @@ public class AnalysisSectorTalentController { public AjaxResult talentSupplyDemandMatchingDegree(@RequestBody QueryParamDto dto) { return AjaxResult.success(analysisSectorTalentService.talentSupplyDemandMatchingDegree(dto)); } + + /** + * 热力图 + * + * @param dto 查询参数 + * @return 热力图列表 + */ + @PostMapping("/heatmap") + public AjaxResult heatmap(@RequestBody QueryParamDto dto) { + return AjaxResult.success(analysisSectorTalentService.heatmap(dto)); + } } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/HeatmapVo.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/HeatmapVo.java new file mode 100644 index 0000000..be0cf07 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/HeatmapVo.java @@ -0,0 +1,41 @@ +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/26 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class HeatmapVo implements Serializable { + private static final long serialVersionUID = -2364992757394142572L; + /** + * 区划编码 + */ + private String areaCode; + /** + * 区划名称 + */ + private String areaName; + /** + * 数量 + */ + @Builder.Default + private Long count = 0L; + /** + * 占比 + */ + @Builder.Default + private BigDecimal percentage = BigDecimal.ZERO; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisGraduateEmploymentInfoService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisGraduateEmploymentInfoService.java index b14bea2..5f86bdb 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisGraduateEmploymentInfoService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisGraduateEmploymentInfoService.java @@ -4,6 +4,7 @@ import com.ruoyi.cms.domain.dto.QueryParamDto; import com.ruoyi.cms.domain.vo.GraduateEmploymentInfoOverviewVo; import com.ruoyi.cms.domain.vo.GraduateEmploymentInfoStartupVo; import com.ruoyi.cms.domain.vo.GraduateEmploymentInfoTreadVo; +import com.ruoyi.cms.domain.vo.HeatmapVo; import com.ruoyi.cms.domain.vo.QueryResultVo; import java.util.List; @@ -111,4 +112,12 @@ public interface AnalysisGraduateEmploymentInfoService { * @return 结果列表 */ List notEmploymentCrowd(QueryParamDto dto); + + /** + * 热力图 + * + * @param dto 查询参数 + * @return 热力图列表 + */ + List heatmap(QueryParamDto dto); } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisIndustryEmploymentInfoService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisIndustryEmploymentInfoService.java index e09a3ce..7e55bcf 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisIndustryEmploymentInfoService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisIndustryEmploymentInfoService.java @@ -1,6 +1,7 @@ package com.ruoyi.cms.service; import com.ruoyi.cms.domain.dto.QueryParamDto; +import com.ruoyi.cms.domain.vo.HeatmapVo; import com.ruoyi.cms.domain.vo.IndustryEmploymentInfoOverviewVo; import com.ruoyi.cms.domain.vo.QueryResultVo; import com.ruoyi.cms.domain.vo.TreadVo; @@ -80,4 +81,12 @@ public interface AnalysisIndustryEmploymentInfoService { * @return 结果列表 */ List qualityIndicator(QueryParamDto dto); + + /** + * 热力图 + * + * @param dto 查询参数 + * @return 热力图列表 + */ + List heatmap(QueryParamDto dto); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisJobDemandTreadService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisJobDemandTreadService.java index 63fb2bb..ffbd811 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisJobDemandTreadService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisJobDemandTreadService.java @@ -3,6 +3,7 @@ package com.ruoyi.cms.service; import com.ruoyi.cms.domain.dto.QueryParamDto; import com.ruoyi.cms.domain.vo.DictVo; import com.ruoyi.cms.domain.vo.EchartsVo; +import com.ruoyi.cms.domain.vo.HeatmapVo; import com.ruoyi.cms.domain.vo.JobDemandTreadDemandVo; import com.ruoyi.cms.domain.vo.JobDemandTreadEconomyCorrelationVo; import com.ruoyi.cms.domain.vo.JobDemandTreadGDPCorrelationVo; @@ -83,4 +84,12 @@ public interface AnalysisJobDemandTreadService { * @return 结果列表 */ List skillKeyword(QueryParamDto dto); + + /** + * 热力图 + * + * @param dto 查询参数 + * @return 热力图列表 + */ + List heatmap(QueryParamDto dto); } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisKeyGroupServiceSituationService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisKeyGroupServiceSituationService.java index f60c943..b40008e 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisKeyGroupServiceSituationService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisKeyGroupServiceSituationService.java @@ -1,6 +1,7 @@ package com.ruoyi.cms.service; import com.ruoyi.cms.domain.dto.QueryParamDto; +import com.ruoyi.cms.domain.vo.HeatmapVo; import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationHelpScoreVo; import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationHelpTypeVo; import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationKeyGroupScoreVo; @@ -73,4 +74,12 @@ public interface AnalysisKeyGroupServiceSituationService { * @return 结果列表 */ List questionAndSuggestion(QueryParamDto dto); + + /** + * 热力图 + * + * @param dto 查询参数 + * @return 热力图列表 + */ + List heatmap(QueryParamDto dto); } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisMajorIndustryEmploymentMonitorService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisMajorIndustryEmploymentMonitorService.java index 1586152..6e5fc39 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisMajorIndustryEmploymentMonitorService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisMajorIndustryEmploymentMonitorService.java @@ -1,6 +1,7 @@ package com.ruoyi.cms.service; import com.ruoyi.cms.domain.dto.QueryParamDto; +import com.ruoyi.cms.domain.vo.HeatmapVo; import com.ruoyi.cms.domain.vo.MajorIndustryEmploymentMonitorOverviewVo; import com.ruoyi.cms.domain.vo.MajorIndustryEmploymentMonitorTreadVo; import com.ruoyi.cms.domain.vo.QueryResultVo; @@ -79,4 +80,12 @@ public interface AnalysisMajorIndustryEmploymentMonitorService { * @return 结果列表 */ List layoffAndLaborGap(QueryParamDto dto); + + /** + * 热力图 + * + * @param dto 查询参数 + * @return 热力图列表 + */ + List heatmap(QueryParamDto dto); } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisSectorOccupationSkillService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisSectorOccupationSkillService.java index 6e4422d..3541fdc 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisSectorOccupationSkillService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisSectorOccupationSkillService.java @@ -2,6 +2,7 @@ package com.ruoyi.cms.service; import com.ruoyi.cms.domain.dto.QueryParamDto; import com.ruoyi.cms.domain.vo.EchartsVo; +import com.ruoyi.cms.domain.vo.HeatmapVo; import com.ruoyi.cms.domain.vo.QueryResultVo; import com.ruoyi.cms.domain.vo.SectorOccupationSkillGapVo; import com.ruoyi.cms.domain.vo.SectorOccupationSkillOverviewVo; @@ -65,4 +66,11 @@ public interface AnalysisSectorOccupationSkillService { */ List talentSkillLevelDistribution(QueryParamDto dto); + /** + * 热力图 + * + * @param dto 查询参数 + * @return 热力图列表 + */ + List heatmap(QueryParamDto dto); } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisSectorTalentService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisSectorTalentService.java index e346792..6ce76b2 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisSectorTalentService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/AnalysisSectorTalentService.java @@ -1,6 +1,7 @@ package com.ruoyi.cms.service; import com.ruoyi.cms.domain.dto.QueryParamDto; +import com.ruoyi.cms.domain.vo.HeatmapVo; import com.ruoyi.cms.domain.vo.QueryResultVo; import com.ruoyi.cms.domain.vo.SectorTalentOverviewVo; import com.ruoyi.cms.domain.vo.SectorTalentProsperityIndexVo; @@ -72,4 +73,12 @@ public interface AnalysisSectorTalentService { * @return 结果列表 */ List talentSupplyDemandMatchingDegree(QueryParamDto dto); + + /** + * 热力图 + * + * @param dto 查询参数 + * @return 热力图列表 + */ + List heatmap(QueryParamDto dto); } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisGraduateEmploymentInfoServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisGraduateEmploymentInfoServiceImpl.java index ca0793f..4a2e0cb 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisGraduateEmploymentInfoServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisGraduateEmploymentInfoServiceImpl.java @@ -5,6 +5,7 @@ import com.ruoyi.cms.domain.dto.QueryParamDto; import com.ruoyi.cms.domain.vo.GraduateEmploymentInfoOverviewVo; import com.ruoyi.cms.domain.vo.GraduateEmploymentInfoStartupVo; import com.ruoyi.cms.domain.vo.GraduateEmploymentInfoTreadVo; +import com.ruoyi.cms.domain.vo.HeatmapVo; import com.ruoyi.cms.domain.vo.QueryResultVo; import com.ruoyi.cms.service.AnalysisGraduateEmploymentInfoService; import com.ruoyi.cms.util.MathUtil; @@ -248,4 +249,26 @@ public class AnalysisGraduateEmploymentInfoServiceImpl implements AnalysisGradua MathUtil.calculatePercentage(list); return list; } + + @Override + public List heatmap(QueryParamDto dto) { + List list = new ArrayList<>(); + for (Tuple2 area : CommonConstant.AREA_LIST) { + list.add(HeatmapVo.builder() + .areaCode(area.getT1()) + .areaName(area.getT2()) + .count((long) Math.floor(Math.random() * 10000) + 1) + .build()); + } + long totalCount = list.stream().mapToLong(HeatmapVo::getCount).sum(); + for (HeatmapVo vo : list) { + if (totalCount > 0) { + vo.setPercentage(new BigDecimal(vo.getCount()) + .divide(BigDecimal.valueOf(totalCount), 4, RoundingMode.HALF_UP) + .multiply(BigDecimal.valueOf(100)) + .setScale(2, RoundingMode.HALF_UP)); + } + } + return list; + } } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisIndustryEmploymentInfoServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisIndustryEmploymentInfoServiceImpl.java index 51cff29..9665b09 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisIndustryEmploymentInfoServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisIndustryEmploymentInfoServiceImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.cms.service.impl; import com.ruoyi.cms.constant.CommonConstant; import com.ruoyi.cms.domain.dto.QueryParamDto; +import com.ruoyi.cms.domain.vo.HeatmapVo; import com.ruoyi.cms.domain.vo.IndustryEmploymentInfoOverviewVo; import com.ruoyi.cms.domain.vo.QueryResultVo; import com.ruoyi.cms.domain.vo.TreadVo; @@ -168,4 +169,19 @@ public class AnalysisIndustryEmploymentInfoServiceImpl implements AnalysisIndust } return list; } + + @Override + public List heatmap(QueryParamDto dto) { + List list = new ArrayList<>(); + for (Tuple2 area : CommonConstant.AREA_LIST) { + list.add(HeatmapVo.builder() + .areaCode(area.getT1()) + .areaName(area.getT2()) + .count((long) Math.floor(Math.random() * 10000) + 1) + .build()); + } + // 计算占比 + MathUtil.calculatePercentageHeatmap(list); + return list; + } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisJobDemandTreadServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisJobDemandTreadServiceImpl.java index 5ae1304..f5e48d3 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisJobDemandTreadServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisJobDemandTreadServiceImpl.java @@ -1,9 +1,11 @@ package com.ruoyi.cms.service.impl; +import com.ruoyi.cms.constant.CommonConstant; import com.ruoyi.cms.domain.dto.QueryParamDto; import com.ruoyi.cms.domain.vo.DictVo; import com.ruoyi.cms.domain.vo.EchartsSeriesVo; import com.ruoyi.cms.domain.vo.EchartsVo; +import com.ruoyi.cms.domain.vo.HeatmapVo; import com.ruoyi.cms.domain.vo.JobDemandTreadDemandVo; import com.ruoyi.cms.domain.vo.JobDemandTreadEconomyCorrelationVo; import com.ruoyi.cms.domain.vo.JobDemandTreadGDPCorrelationVo; @@ -197,4 +199,26 @@ public class AnalysisJobDemandTreadServiceImpl implements AnalysisJobDemandTread } return list; } + + @Override + public List heatmap(QueryParamDto dto) { + List list = new ArrayList<>(); + for (Tuple2 area : CommonConstant.AREA_LIST) { + list.add(HeatmapVo.builder() + .areaCode(area.getT1()) + .areaName(area.getT2()) + .count((long) Math.floor(Math.random() * 10000) + 1) + .build()); + } + long totalCount = list.stream().mapToLong(HeatmapVo::getCount).sum(); + for (HeatmapVo vo : list) { + if (totalCount > 0) { + vo.setPercentage(new BigDecimal(vo.getCount()) + .divide(BigDecimal.valueOf(totalCount), 4, RoundingMode.HALF_UP) + .multiply(BigDecimal.valueOf(100)) + .setScale(2, RoundingMode.HALF_UP)); + } + } + return list; + } } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisKeyGroupServiceSituationServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisKeyGroupServiceSituationServiceImpl.java index fc7cf22..4fc6e68 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisKeyGroupServiceSituationServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisKeyGroupServiceSituationServiceImpl.java @@ -1,6 +1,8 @@ package com.ruoyi.cms.service.impl; +import com.ruoyi.cms.constant.CommonConstant; import com.ruoyi.cms.domain.dto.QueryParamDto; +import com.ruoyi.cms.domain.vo.HeatmapVo; import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationHelpScoreVo; import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationHelpTypeVo; import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationKeyGroupScoreVo; @@ -180,4 +182,26 @@ public class AnalysisKeyGroupServiceSituationServiceImpl implements AnalysisKeyG } return list; } + + @Override + public List heatmap(QueryParamDto dto) { + List list = new ArrayList<>(); + for (Tuple2 area : CommonConstant.AREA_LIST) { + list.add(HeatmapVo.builder() + .areaCode(area.getT1()) + .areaName(area.getT2()) + .count((long) Math.floor(Math.random() * 10000) + 1) + .build()); + } + long totalCount = list.stream().mapToLong(HeatmapVo::getCount).sum(); + for (HeatmapVo vo : list) { + if (totalCount > 0) { + vo.setPercentage(new BigDecimal(vo.getCount()) + .divide(BigDecimal.valueOf(totalCount), 4, RoundingMode.HALF_UP) + .multiply(BigDecimal.valueOf(100)) + .setScale(2, RoundingMode.HALF_UP)); + } + } + return list; + } } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisMajorIndustryEmploymentMonitorServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisMajorIndustryEmploymentMonitorServiceImpl.java index e2a80bc..3439200 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisMajorIndustryEmploymentMonitorServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisMajorIndustryEmploymentMonitorServiceImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.cms.service.impl; import com.ruoyi.cms.constant.CommonConstant; import com.ruoyi.cms.domain.dto.QueryParamDto; +import com.ruoyi.cms.domain.vo.HeatmapVo; import com.ruoyi.cms.domain.vo.MajorIndustryEmploymentMonitorOverviewVo; import com.ruoyi.cms.domain.vo.MajorIndustryEmploymentMonitorTreadVo; import com.ruoyi.cms.domain.vo.QueryResultVo; @@ -165,4 +166,26 @@ public class AnalysisMajorIndustryEmploymentMonitorServiceImpl implements Analys } return list; } + + @Override + public List heatmap(QueryParamDto dto) { + List list = new ArrayList<>(); + for (Tuple2 area : CommonConstant.AREA_LIST) { + list.add(HeatmapVo.builder() + .areaCode(area.getT1()) + .areaName(area.getT2()) + .count((long) Math.floor(Math.random() * 10000) + 1) + .build()); + } + long totalCount = list.stream().mapToLong(HeatmapVo::getCount).sum(); + for (HeatmapVo vo : list) { + if (totalCount > 0) { + vo.setPercentage(new BigDecimal(vo.getCount()) + .divide(BigDecimal.valueOf(totalCount), 4, RoundingMode.HALF_UP) + .multiply(BigDecimal.valueOf(100)) + .setScale(2, RoundingMode.HALF_UP)); + } + } + return list; + } } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisSectorOccupationSkillServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisSectorOccupationSkillServiceImpl.java index 1e1405f..e3eabe4 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisSectorOccupationSkillServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisSectorOccupationSkillServiceImpl.java @@ -4,6 +4,7 @@ import com.ruoyi.cms.constant.CommonConstant; import com.ruoyi.cms.domain.dto.QueryParamDto; import com.ruoyi.cms.domain.vo.EchartsSeriesVo; import com.ruoyi.cms.domain.vo.EchartsVo; +import com.ruoyi.cms.domain.vo.HeatmapVo; import com.ruoyi.cms.domain.vo.QueryResultVo; import com.ruoyi.cms.domain.vo.SectorOccupationSkillGapVo; import com.ruoyi.cms.domain.vo.SectorOccupationSkillOverviewVo; @@ -154,4 +155,26 @@ public class AnalysisSectorOccupationSkillServiceImpl implements AnalysisSectorO MathUtil.calculatePercentage(list); return list; } + + @Override + public List heatmap(QueryParamDto dto) { + List list = new ArrayList<>(); + for (Tuple2 area : CommonConstant.AREA_LIST) { + list.add(HeatmapVo.builder() + .areaCode(area.getT1()) + .areaName(area.getT2()) + .count((long) Math.floor(Math.random() * 10000) + 1) + .build()); + } + long totalCount = list.stream().mapToLong(HeatmapVo::getCount).sum(); + for (HeatmapVo vo : list) { + if (totalCount > 0) { + vo.setPercentage(new BigDecimal(vo.getCount()) + .divide(BigDecimal.valueOf(totalCount), 4, RoundingMode.HALF_UP) + .multiply(BigDecimal.valueOf(100)) + .setScale(2, RoundingMode.HALF_UP)); + } + } + return list; + } } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisSectorTalentServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisSectorTalentServiceImpl.java index be464ed..41d3c27 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisSectorTalentServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/AnalysisSectorTalentServiceImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.cms.service.impl; import com.ruoyi.cms.constant.CommonConstant; import com.ruoyi.cms.domain.dto.QueryParamDto; +import com.ruoyi.cms.domain.vo.HeatmapVo; import com.ruoyi.cms.domain.vo.QueryResultVo; import com.ruoyi.cms.domain.vo.SectorTalentOverviewVo; import com.ruoyi.cms.domain.vo.SectorTalentProsperityIndexVo; @@ -147,4 +148,26 @@ public class AnalysisSectorTalentServiceImpl implements AnalysisSectorTalentServ } return list; } + + @Override + public List heatmap(QueryParamDto dto) { + List list = new ArrayList<>(); + for (Tuple2 area : CommonConstant.AREA_LIST) { + list.add(HeatmapVo.builder() + .areaCode(area.getT1()) + .areaName(area.getT2()) + .count((long) Math.floor(Math.random() * 10000) + 1) + .build()); + } + long totalCount = list.stream().mapToLong(HeatmapVo::getCount).sum(); + for (HeatmapVo vo : list) { + if (totalCount > 0) { + vo.setPercentage(new BigDecimal(vo.getCount()) + .divide(BigDecimal.valueOf(totalCount), 4, RoundingMode.HALF_UP) + .multiply(BigDecimal.valueOf(100)) + .setScale(2, RoundingMode.HALF_UP)); + } + } + return list; + } } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/MathUtil.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/MathUtil.java index ab85223..297bb0e 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/MathUtil.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/MathUtil.java @@ -1,6 +1,7 @@ package com.ruoyi.cms.util; import com.ruoyi.cms.constant.enums.QueryTimeTypeEnum; +import com.ruoyi.cms.domain.vo.HeatmapVo; import com.ruoyi.cms.domain.vo.QueryResultVo; import com.ruoyi.cms.domain.vo.TreadVo; import org.apache.commons.collections4.CollectionUtils; @@ -102,7 +103,7 @@ public class MathUtil { } long totalCount = 0; for (QueryResultVo dto : list) { - totalCount = totalCount + dto.getCount(); + totalCount = totalCount + Optional.ofNullable(dto.getCount()).orElse(0L); } for (QueryResultVo dto : list) { @@ -168,4 +169,26 @@ public class MathUtil { } } } + + /** + * 计算占比 - 热力图 + * + * @param list 热力图数据 + */ + public static void calculatePercentageHeatmap(List list) { + + if (CollectionUtils.isEmpty(list)) { + return; + } + + // 计算占比 + long totalCount = 0; + for (HeatmapVo vo : list) { + totalCount = totalCount + Optional.ofNullable(vo.getCount()).orElse(0L); + } + + for (HeatmapVo vo : list) { + vo.setPercentage(calculatePercentage(totalCount, vo.getCount())); + } + } }