feat(oa): 新增工资数据看板功能

- 添加新工资看板相关的 VO 类
- 实现新工资看板的数据获取接口和业务逻辑
- 优化原有工资看板的代码结构
- 新增月度支出、工资构成、趋势分析等图表数据查询- 增加社保公积金统计和单位、部门统计功能
This commit is contained in:
2025-09-08 15:33:33 +08:00
parent fdd7489102
commit 655540c20b
16 changed files with 993 additions and 3 deletions

View File

@@ -0,0 +1,46 @@
package com.ruoyi.oa.domain.vo.dashboard;
import lombok.Data;
import java.math.BigDecimal;
/**
* 部门工资统计VO
*/
@Data
public class DeptSalaryStatVo {
/**
* 部门名称
*/
private String deptName;
/**
* 员工数量
*/
private Integer employeeCount;
/**
* 总实发工资
*/
private BigDecimal totalNetSalary;
/**
* 总应发工资
*/
private BigDecimal totalGrossSalary;
/**
* 人均实发工资
*/
private BigDecimal avgNetSalary;
/**
* 人均应发工资
*/
private BigDecimal avgGrossSalary;
/**
* 同比增长率
*/
private BigDecimal yearOnYearGrowthRate;
}

View File

@@ -0,0 +1,31 @@
package com.ruoyi.oa.domain.vo.dashboard;
import lombok.Data;
import java.math.BigDecimal;
/**
* 社保公积金统计VO
*/
@Data
public class InsuranceStatVo {
/**
* 项目名称
*/
private String itemName;
/**
* 个人缴纳总额
*/
private BigDecimal personalTotal;
/**
* 企业缴纳总额
*/
private BigDecimal enterpriseTotal;
/**
* 合计
*/
private BigDecimal total;
}

View File

@@ -0,0 +1,31 @@
package com.ruoyi.oa.domain.vo.dashboard;
import lombok.Data;
import java.math.BigDecimal;
/**
* 月度支出VO
*/
@Data
public class MonthlyExpenseVo {
/**
* 月份
*/
private Integer month;
/**
* 实发工资总额
*/
private BigDecimal totalNetSalary;
/**
* 应发工资总额
*/
private BigDecimal totalGrossSalary;
/**
* 单位总支出
*/
private BigDecimal totalUnitExpense;
}

View File

@@ -0,0 +1,66 @@
package com.ruoyi.oa.domain.vo.dashboard;
import lombok.Data;
import java.math.BigDecimal;
/**
* 新工资看板卡片数据VO
*/
@Data
public class NewCardDataVo {
/**
* 总实发工资
*/
private BigDecimal totalNetSalary;
/**
* 较上月总实发工资增长率
*/
private BigDecimal lastMonthNetSalaryRate;
/**
* 总应发工资
*/
private BigDecimal totalGrossSalary;
/**
* 较上月总应发工资增长率
*/
private BigDecimal lastMonthGrossSalaryRate;
/**
* 单位总支出
*/
private BigDecimal totalUnitExpense;
/**
* 较上月单位总支出增长率
*/
private BigDecimal lastMonthUnitExpenseRate;
/**
* 人均实发工资
*/
private BigDecimal avgNetSalary;
/**
* 较上月人均实发工资增长率
*/
private BigDecimal lastMonthAvgNetSalaryRate;
/**
* 同比增长率(与去年同期相比)
*/
private BigDecimal yearOnYearGrowthRate;
/**
* 员工总数
*/
private Integer totalEmployeeCount;
/**
* 单位数量
*/
private Integer unitCount;
}

View File

@@ -0,0 +1,36 @@
package com.ruoyi.oa.domain.vo.dashboard;
import lombok.Data;
import java.math.BigDecimal;
/**
* 新工资看板卡片指标VO
*/
@Data
public class NewCardMetricsVo {
/**
* 总实发工资
*/
private BigDecimal totalNetSalary;
/**
* 总应发工资
*/
private BigDecimal totalGrossSalary;
/**
* 单位总支出
*/
private BigDecimal totalUnitExpense;
/**
* 员工数量
*/
private Integer employeeCount;
/**
* 单位数量
*/
private Integer unitCount;
}

View File

@@ -0,0 +1,31 @@
package com.ruoyi.oa.domain.vo.dashboard;
import lombok.Data;
import java.util.List;
/**
* 新工资看板图表数据VO
*/
@Data
public class NewChartDataVo {
/**
* 月度支出数据(柱状图)
*/
private List<MonthlyExpenseVo> monthlyExpenses;
/**
* 工资构成分析(饼图)
*/
private List<SalaryStructureVo> salaryStructures;
/**
* 趋势分析(折线图)
*/
private SalaryTrendVo trendData;
/**
* 社保公积金统计(柱状图)
*/
private List<InsuranceStatVo> insuranceStats;
}

View File

@@ -0,0 +1,30 @@
package com.ruoyi.oa.domain.vo.dashboard;
import com.ruoyi.common.core.page.TableDataInfo;
import lombok.Data;
/**
* 新工资数据看板VO
*/
@Data
public class NewSalaryDashboardVo {
/**
* 卡片数据
*/
private NewCardDataVo cardData;
/**
* 图表数据
*/
private NewChartDataVo chartData;
/**
* 单位统计表格数据
*/
private TableDataInfo<UnitStatVo> unitStats;
/**
* 部门统计表格数据
*/
private TableDataInfo<DeptSalaryStatVo> deptStats;
}

View File

@@ -0,0 +1,26 @@
package com.ruoyi.oa.domain.vo.dashboard;
import lombok.Data;
import java.math.BigDecimal;
/**
* 工资构成VO
*/
@Data
public class SalaryStructureVo {
/**
* 项目名称
*/
private String itemName;
/**
* 总金额
*/
private BigDecimal totalAmount;
/**
* 占比
*/
private BigDecimal percentage;
}

View File

@@ -0,0 +1,31 @@
package com.ruoyi.oa.domain.vo.dashboard;
import lombok.Data;
import java.math.BigDecimal;
/**
* 工资趋势点VO
*/
@Data
public class SalaryTrendPointVo {
/**
* 月份
*/
private Integer month;
/**
* 总实发工资
*/
private BigDecimal totalNetSalary;
/**
* 总应发工资
*/
private BigDecimal totalGrossSalary;
/**
* 人均实发工资
*/
private BigDecimal avgNetSalary;
}

View File

@@ -0,0 +1,47 @@
package com.ruoyi.oa.domain.vo.dashboard;
import lombok.Data;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
/**
* 工资趋势VO
*/
@Data
public class SalaryTrendVo {
/**
* 月份列表
*/
private List<Integer> months;
/**
* 实发工资趋势
*/
private List<BigDecimal> netSalaryTrend;
/**
* 应发工资趋势
*/
private List<BigDecimal> grossSalaryTrend;
/**
* 人均实发工资趋势
*/
private List<BigDecimal> avgNetSalaryTrend;
public SalaryTrendVo(List<SalaryTrendPointVo> points) {
this.months = new ArrayList<>();
this.netSalaryTrend = new ArrayList<>();
this.grossSalaryTrend = new ArrayList<>();
this.avgNetSalaryTrend = new ArrayList<>();
for (SalaryTrendPointVo point : points) {
this.months.add(point.getMonth());
this.netSalaryTrend.add(point.getTotalNetSalary());
this.grossSalaryTrend.add(point.getTotalGrossSalary());
this.avgNetSalaryTrend.add(point.getAvgNetSalary());
}
}
}

View File

@@ -0,0 +1,51 @@
package com.ruoyi.oa.domain.vo.dashboard;
import lombok.Data;
import java.math.BigDecimal;
/**
* 单位统计VO
*/
@Data
public class UnitStatVo {
/**
* 单位名称
*/
private String unitName;
/**
* 员工数量
*/
private Integer employeeCount;
/**
* 总实发工资
*/
private BigDecimal totalNetSalary;
/**
* 总应发工资
*/
private BigDecimal totalGrossSalary;
/**
* 单位总支出
*/
private BigDecimal totalUnitExpense;
/**
* 人均实发工资
*/
private BigDecimal avgNetSalary;
/**
* 同比增长率
*/
private BigDecimal yearOnYearGrowthRate;
/**
* 工资期间
*/
private String salaryPeriod;
}