From 2b29ea6618b3bb786e6c7c92ef3e08d0e13c3105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E5=AE=9D=E9=BE=99?= Date: Mon, 6 Jul 2026 12:27:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ModelDemandMonitorIndustryTrendDataVo.java | 38 ++++++++++++++ .../vo/ModelDemandMonitorIndustryTrendVo.java | 5 +- ...DemandMonitorMajorIndustryTrendDataVo.java | 38 ++++++++++++++ ...odelDemandMonitorMajorIndustryTrendVo.java | 8 ++- ...DemandMonitorIndustryTrendServiceImpl.java | 49 +++++++++++++------ ...dMonitorMajorIndustryTrendServiceImpl.java | 49 ++++++++++++++----- 6 files changed, 155 insertions(+), 32 deletions(-) create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/ModelDemandMonitorIndustryTrendDataVo.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/ModelDemandMonitorMajorIndustryTrendDataVo.java diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/ModelDemandMonitorIndustryTrendDataVo.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/ModelDemandMonitorIndustryTrendDataVo.java new file mode 100644 index 0000000..8c5df30 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/ModelDemandMonitorIndustryTrendDataVo.java @@ -0,0 +1,38 @@ +package com.ruoyi.cms.domain.vo; + +import com.ruoyi.cms.domain.ModelDemandMonitorIndustryTrend; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * 劳动力需求分行业需求趋势分析 + * + * @author 马宝龙 + * @date 2026/7/3 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ModelDemandMonitorIndustryTrendDataVo implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 年月 + */ + private String yearMonth; + /** + * 总数 + */ + private Integer totalCount; + + /** + * 数据列表 + */ + private List industryList; +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/ModelDemandMonitorIndustryTrendVo.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/ModelDemandMonitorIndustryTrendVo.java index 162e4ca..69fb462 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/ModelDemandMonitorIndustryTrendVo.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/ModelDemandMonitorIndustryTrendVo.java @@ -1,6 +1,5 @@ package com.ruoyi.cms.domain.vo; -import com.ruoyi.cms.domain.dto.ExcelRow; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -25,10 +24,10 @@ public class ModelDemandMonitorIndustryTrendVo implements Serializable { /** * 标题列表 */ -// private List titleList; + private List titleList; /** * 数据列表 */ - private List dataList; + private List dataList; } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/ModelDemandMonitorMajorIndustryTrendDataVo.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/ModelDemandMonitorMajorIndustryTrendDataVo.java new file mode 100644 index 0000000..4ae0f11 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/ModelDemandMonitorMajorIndustryTrendDataVo.java @@ -0,0 +1,38 @@ +package com.ruoyi.cms.domain.vo; + +import com.ruoyi.cms.domain.ModelDemandMonitorMajorIndustryTrend; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * 劳动力需求重点产业需求趋势分析 + * + * @author 马宝龙 + * @date 2026/7/3 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ModelDemandMonitorMajorIndustryTrendDataVo implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 年月 + */ + private String yearMonth; + /** + * 总数 + */ + private Integer totalCount; + + /** + * 数据列表 + */ + private List majorIndustryList; +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/ModelDemandMonitorMajorIndustryTrendVo.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/ModelDemandMonitorMajorIndustryTrendVo.java index 8fdf5ba..a68f2d1 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/ModelDemandMonitorMajorIndustryTrendVo.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/vo/ModelDemandMonitorMajorIndustryTrendVo.java @@ -1,6 +1,5 @@ package com.ruoyi.cms.domain.vo; -import com.ruoyi.cms.domain.dto.ExcelRow; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -22,8 +21,13 @@ import java.util.List; public class ModelDemandMonitorMajorIndustryTrendVo implements Serializable { private static final long serialVersionUID = 1L; + /** + * 标题列表 + */ + private List titleList; + /** * 数据列表 */ - private List dataList; + private List dataList; } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelDemandMonitorIndustryTrendServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelDemandMonitorIndustryTrendServiceImpl.java index fe1d7ae..54c1bcd 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelDemandMonitorIndustryTrendServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelDemandMonitorIndustryTrendServiceImpl.java @@ -2,9 +2,9 @@ package com.ruoyi.cms.service.impl; import com.ruoyi.cms.constant.enums.ModelTemplateTypeEnum; import com.ruoyi.cms.domain.ModelDemandMonitorIndustryTrend; -import com.ruoyi.cms.domain.ModelDemandMonitorMajorIndustryTrend; import com.ruoyi.cms.domain.dto.ExcelRow; import com.ruoyi.cms.domain.dto.ModelExportParamDto; +import com.ruoyi.cms.domain.vo.ModelDemandMonitorIndustryTrendDataVo; import com.ruoyi.cms.domain.vo.ModelDemandMonitorIndustryTrendVo; import com.ruoyi.cms.mapper.ModelDemandMonitorIndustryTrendMapper; import com.ruoyi.cms.service.ModelDemandMonitorIndustryTrendService; @@ -164,36 +164,42 @@ public class ModelDemandMonitorIndustryTrendServiceImpl implements ModelDemandMo map.put(trend.getYearMonth(), trendList); } - List dataList = new ArrayList<>(); + List dataList = new ArrayList<>(); List industryCodeList = new ArrayList<>(industryCodeSet); Collections.sort(industryCodeList); - - List firstRow = new ArrayList<>(); - firstRow.add("年月"); - firstRow.add("总需求人数"); + List titleList = new ArrayList<>(); + titleList.add("年月"); + titleList.add("总需求人数"); for (String industryCode : industryCodeList) { - firstRow.add(industryName.get(industryCode)); + titleList.add(industryName.get(industryCode)); } - dataList.add(new ExcelRow(firstRow.toArray(new String[0]))); for (Map.Entry> entry : map.entrySet()) { - List rows = new ArrayList<>(); - rows.add(entry.getKey()); + + ModelDemandMonitorIndustryTrendDataVo dataVo = ModelDemandMonitorIndustryTrendDataVo.builder() + .yearMonth(entry.getKey()) + .totalCount(0) + .industryList(new ArrayList<>()) + .build(); + List trends = entry.getValue(); Map trendMap = new HashMap<>(); for (ModelDemandMonitorIndustryTrend trend : trends) { trendMap.put(trend.getIndustryCode(), trend); } int totalDemandCount = 0; + List industryList = new ArrayList<>(); for (String industryCode : industryCodeList) { Integer demandCount = Optional.ofNullable(trendMap.get(industryCode)) .map(ModelDemandMonitorIndustryTrend::getDemandCount) .orElse(0); totalDemandCount += demandCount; - rows.add(demandCount.toString()); + industryList.add(trendMap.get(industryCode)); } - rows.add(1, Integer.toString(totalDemandCount)); - dataList.add(new ExcelRow(rows.toArray(new String[0]))); + dataVo.setTotalCount(totalDemandCount); + dataVo.setIndustryList(industryList); + dataList.add(dataVo); } + vo.setTitleList(titleList); vo.setDataList(dataList); return vo; } @@ -258,9 +264,24 @@ public class ModelDemandMonitorIndustryTrendServiceImpl implements ModelDemandMo .yearMonth(dto.getYearMonth()) .build()); + List dataList = new ArrayList<>(); + + List titleList = vo.getTitleList(); + dataList.add(new ExcelRow(titleList.toArray(new String[0]))); + + for (ModelDemandMonitorIndustryTrendDataVo dataVo : vo.getDataList()) { + List dataStr = new ArrayList<>(); + dataStr.add(dataVo.getYearMonth()); + dataStr.add(String.valueOf(dataVo.getTotalCount())); + for (ModelDemandMonitorIndustryTrend trend : dataVo.getIndustryList()) { + dataStr.add(String.valueOf(trend.getDemandCount())); + } + dataList.add(new ExcelRow(dataStr.toArray(new String[0]))); + } + MultiSheetExcelUtil multiSheetExcelUtil = new MultiSheetExcelUtil(); ExcelUtil basicSituationExcelUtil = new com.ruoyi.cms.util.document.ExcelUtil<>(ExcelRow.class); - basicSituationExcelUtil.setDataList(vo.getDataList()); + basicSituationExcelUtil.setDataList(dataList); basicSituationExcelUtil.setSheetName("分行业需求趋势分析"); multiSheetExcelUtil.addSheet(basicSituationExcelUtil); multiSheetExcelUtil.setFileName(ModelTemplateTypeEnum.MODEL_DEMAND_MONITOR_INDUSTRY_TREND.getDesc()); diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelDemandMonitorMajorIndustryTrendServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelDemandMonitorMajorIndustryTrendServiceImpl.java index 314ef18..9419ee8 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelDemandMonitorMajorIndustryTrendServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelDemandMonitorMajorIndustryTrendServiceImpl.java @@ -4,6 +4,7 @@ import com.ruoyi.cms.constant.enums.ModelTemplateTypeEnum; import com.ruoyi.cms.domain.ModelDemandMonitorMajorIndustryTrend; import com.ruoyi.cms.domain.dto.ExcelRow; import com.ruoyi.cms.domain.dto.ModelExportParamDto; +import com.ruoyi.cms.domain.vo.ModelDemandMonitorMajorIndustryTrendDataVo; import com.ruoyi.cms.domain.vo.ModelDemandMonitorMajorIndustryTrendVo; import com.ruoyi.cms.mapper.ModelDemandMonitorMajorIndustryTrendMapper; import com.ruoyi.cms.service.ModelDemandMonitorMajorIndustryTrendService; @@ -163,36 +164,43 @@ public class ModelDemandMonitorMajorIndustryTrendServiceImpl implements ModelDem map.put(trend.getYearMonth(), trendList); } - List dataList = new ArrayList<>(); + List dataList = new ArrayList<>(); List industryCodeList = new ArrayList<>(industryCodeSet); Collections.sort(industryCodeList); - - List firstRow = new ArrayList<>(); - firstRow.add("年月"); - firstRow.add("总需求人数"); + List titleList = new ArrayList<>(); + titleList.add("年月"); + titleList.add("总需求人数"); for (String industryCode : industryCodeList) { - firstRow.add(industryName.get(industryCode)); + titleList.add(industryName.get(industryCode)); } - dataList.add(new ExcelRow(firstRow.toArray(new String[0]))); for (Map.Entry> entry : map.entrySet()) { - List rows = new ArrayList<>(); - rows.add(entry.getKey()); + + ModelDemandMonitorMajorIndustryTrendDataVo dataVo = ModelDemandMonitorMajorIndustryTrendDataVo.builder() + .yearMonth(entry.getKey()) + .totalCount(0) + .majorIndustryList(new ArrayList<>()) + .build(); + List trends = entry.getValue(); Map trendMap = new HashMap<>(); for (ModelDemandMonitorMajorIndustryTrend trend : trends) { trendMap.put(trend.getIndustryCode(), trend); } int totalDemandCount = 0; + List industryList = new ArrayList<>(); for (String industryCode : industryCodeList) { Integer demandCount = Optional.ofNullable(trendMap.get(industryCode)) .map(ModelDemandMonitorMajorIndustryTrend::getDemandCount) .orElse(0); totalDemandCount += demandCount; - rows.add(demandCount.toString()); + industryList.add(trendMap.get(industryCode)); } - rows.add(1, Integer.toString(totalDemandCount)); - dataList.add(new ExcelRow(rows.toArray(new String[0]))); + + dataVo.setTotalCount(totalDemandCount); + dataVo.setMajorIndustryList(industryList); + dataList.add(dataVo); } + vo.setTitleList(titleList); vo.setDataList(dataList); return vo; } @@ -258,9 +266,24 @@ public class ModelDemandMonitorMajorIndustryTrendServiceImpl implements ModelDem .yearMonth(dto.getYearMonth()) .build()); + List dataList = new ArrayList<>(); + + List titleList = vo.getTitleList(); + dataList.add(new ExcelRow(titleList.toArray(new String[0]))); + + for (ModelDemandMonitorMajorIndustryTrendDataVo dataVo : vo.getDataList()) { + List dataStr = new ArrayList<>(); + dataStr.add(dataVo.getYearMonth()); + dataStr.add(String.valueOf(dataVo.getTotalCount())); + for (ModelDemandMonitorMajorIndustryTrend trend : dataVo.getMajorIndustryList()) { + dataStr.add(String.valueOf(trend.getDemandCount())); + } + dataList.add(new ExcelRow(dataStr.toArray(new String[0]))); + } + MultiSheetExcelUtil multiSheetExcelUtil = new MultiSheetExcelUtil(); ExcelUtil basicSituationExcelUtil = new com.ruoyi.cms.util.document.ExcelUtil<>(ExcelRow.class); - basicSituationExcelUtil.setDataList(vo.getDataList()); + basicSituationExcelUtil.setDataList(dataList); basicSituationExcelUtil.setSheetName("重点产业需求趋势分析"); multiSheetExcelUtil.addSheet(basicSituationExcelUtil); multiSheetExcelUtil.setFileName(ModelTemplateTypeEnum.MODEL_DEMAND_MONITOR_MAJOR_INDUSTRY_TREND.getDesc());