外观
工资总表
约 1990 字大约 7 分钟
2026-07-28
功能概述
工资总表用于按车间汇总工资表数据,展示各车间的工资总额、平均工资、工资结构占比等汇总指标。工资总表是车间工资汇总的核心报表,为车间管理层和公司决策层提供工资支出概览和人工成本分析数据。
业务对象
| 业务对象 | 说明 |
|---|---|
| 工资汇总 | 按车间汇总工资数据的核心业务对象 |
| 人工成本分析 | 基于工资数据的人工成本分析对象 |
业务场景描述: 每月工资表计算完成后,系统自动按车间汇总各工资项目的合计金额,生成工资总表。工资总表支持按车间对比分析工资结构,为工资预算编制和人工成本控制提供数据支持。
实体设计
工资总表实体 (RP_SalaryTotalLine)
| 字段名称 | 字段编码 | 数据类型 | 必填 | 是否隐藏 | 说明 |
|---|---|---|---|---|---|
| 主键ID | id | 整数 | 自动 | 系统自带 | |
| 会计期间 | period | 文本 | 是 | 否 | 会计月份 |
| 车间ID | workshopId | 参照/外键 | 是 | 是 | 关联车间档案ID |
| 部门数 | departmentCount | 整数 | 是 | 否 | 车间部门数量 |
| 工人人数 | workerCount | 整数 | 是 | 否 | 车间工人总数 |
| 基本工资合计 | totalBaseSalary | 数值 | 是 | 否 | 基本工资合计(元)(2位小数) |
| 岗位津贴合计 | totalPostAllowance | 数值 | 是 | 否 | 岗位津贴合计(元)(2位小数) |
| 绩效工资合计 | totalPerformance | 数值 | 是 | 否 | 绩效工资合计(元)(2位小数) |
| 菜金补贴合计 | totalMealAllowance | 数值 | 是 | 否 | 菜金补贴合计(元)(2位小数) |
| 工龄工资合计 | totalSeniority | 数值 | 是 | 否 | 工龄工资合计(元)(2位小数) |
| 应发合计 | totalEarnings | 数值 | 是 | 否 | 应发工资合计(2位小数) |
| 社会保险合计 | totalSocialInsurance | 数值 | 是 | 否 | 社保合计(元)(2位小数) |
| 住房公积金合计 | totalHousingFund | 数值 | 是 | 否 | 公积金合计(元)(2位小数) |
| 个人所得税合计 | totalIncomeTax | 数值 | 是 | 否 | 个税合计(元)(2位小数) |
| 扣款合计 | totalDeduction | 数值 | 是 | 否 | 扣款合计(2位小数) |
| 实发工资合计 | totalNetSalary | 数值 | 是 | 否 | 实发工资合计(2位小数) |
| 平均工资 | averageSalary | 数值 | 是 | 否 | 人均实发工资(2位小数) |
| 最高工资 | maxSalary | 数值 | 是 | 否 | 车间最高工资(2位小数) |
| 最低工资 | minSalary | 数值 | 是 | 否 | 车间最低工资(2位小数) |
| 工资极差 | salaryRange | 数值 | 是 | 否 | 工资极差(最高-最低)(2位小数) |
| 基本工资占比 | baseRatio | 数值 | 是 | 否 | 基本工资占应发比例(2位小数) |
| 绩效工资占比 | performanceRatio | 数值 | 是 | 否 | 绩效工资占应发比例(2位小数) |
| 计算状态 | calcStatus | 枚举 | 是 | 否 | 0-未计算/1-已计算 |
| 备注 | remark | 文本 | 否 | 否 | 备注说明 |
| 创建人 | createBy | 文本 | 自动 | 是 | 创建人 |
| 创建时间 | createTime | 日期时间 | 自动 | 是 | 创建时间 |
| 更新人 | updateBy | 文本 | 自动 | 是 | 更新人 |
| 更新时间 | updateTime | 日期时间 | 自动 | 是 | 更新时间 |
| 组织ID | orgId | 参照/外键 | 是 | 是 | 所属组织ID |
页面设计
页面布局
工资总表页面采用车间级汇总报表布局,由筛选区、汇总表格区和分析图表区组成。
顶部筛选区:
- 会计期间选择器
- 车间多选下拉框
- 工资区间筛选
- "执行计算"按钮
- 人工成本分析按钮
- 导出功能
中间汇总表格区:
- 按车间分组展示工资汇总数据
- 各工资项目分色标识(应发项目绿色系、扣款项目红色系)
- 工资占比列为只读计算列
- 汇总行显示全厂合计
- 平均工资列高亮显示
分析图表区:
- 柱状图:各车间工资总额对比
- 饼图:各车间工资占全厂比例
- 折线图:工资趋势(支持多月对比)
- 雷达图:工资结构对比(基本工资占比、绩效占比等)
底部汇总区:
- 全厂工资合计
- 全厂平均工资
- 工资总额环比变化
核心组件
- 报表设计器: 配置多级分组、条件格式和汇总规则
- 智能分析: 基于语义模型自动分析工资结构,识别人工成本异常
- 数据可视化: 集成多种图表组件,提供多维度工资分析
- 趋势分析: 支持多月工资趋势对比分析
- 预算对比: 支持工资实际支出与预算对比
交互规则
- 页面加载时自动加载当前期间的工资汇总数据
- 点击"执行计算"按钮重新汇总工资数据
- 点击车间行可下钻查看部门级工资明细
- 切换图表类型查看不同维度的工资分析
- 支持多月工资趋势对比(最多12个月)
前端脚本
// 切换分析图表类型
function onChartTypeChange(chartType) {
const period = getFilterValue('period');
const workshop = getFilterValue('workshop');
const data = loadChartData(period, workshop, chartType);
renderChart(chartType, data);
}
// 下钻查看车间明细
async function onWorkshopDrill(row) {
const workshop = row.getData('Workshop');
const period = getFilterValue('period');
const data = await queryDepartmentSalary(period, workshop);
showDrillDown(data);
}
// 执行工资汇总计算
async function onClickCalc() {
const period = getFilterValue('period');
showLoading('正在汇总工资数据...');
try {
const result = await summarizeSalary(period);
renderSummaryTable(result.data);
renderAnalysisCharts(result.chartData);
showToast('工资汇总完成');
} catch (e) {
showError('汇总失败:' + e.message);
} finally {
hideLoading();
}
}
// 趋势分析
async function onTrendAnalysis() {
const months = getTrendMonths();
const data = await querySalaryTrend(months);
setChartData('trendLine', data);
showTrendPanel();
}计算触发时机:
- 页面加载时自动加载已有汇总数据
- 用户点击"执行计算"按钮手动触发
- 支持实时分析和趋势对比
后端脚本
YonQL 查询
-- 按车间汇总工资数据
SELECT
Workshop,
COUNT(*) AS WorkerCount,
SUM(BaseSalary) AS TotalBaseSalary,
SUM(PostAllowance) AS TotalPostAllowance,
SUM(PerformanceSalary) AS TotalPerformance,
SUM(MealAllowance) AS TotalMealAllowance,
SUM(SenioritySalary) AS TotalSeniority,
SUM(TotalEarnings) AS TotalEarnings,
SUM(SocialInsurance) AS TotalSocialInsurance,
SUM(HousingFund) AS TotalHousingFund,
SUM(IncomeTax) AS TotalIncomeTax,
SUM(TotalDeduction) AS TotalDeduction,
SUM(NetSalary) AS TotalNetSalary,
AVG(NetSalary) AS AverageSalary,
MAX(NetSalary) AS MaxSalary,
MIN(NetSalary) AS MinSalary
FROM SalaryTable
WHERE Period = #{period}
GROUP BY Workshop报表计算逻辑
async function summarizeSalary(period) {
// 1. 从工资表获取各车间工资汇总数据
const workshopData = await queryWorkshopSalarySummary(period);
// 2. 计算各车间的工资占比和结构分析
const totalAll = workshopData.reduce((sum, w) => sum + w.TotalNetSalary, 0);
for (const workshop of workshopData) {
const baseRatio = workshop.TotalBaseSalary / workshop.TotalEarnings;
const performanceRatio = workshop.TotalPerformance / workshop.TotalEarnings;
await saveSalaryTotal({
Period: period,
Workshop: workshop.Workshop,
WorkerCount: workshop.WorkerCount,
TotalBaseSalary: workshop.TotalBaseSalary,
TotalPostAllowance: workshop.TotalPostAllowance,
TotalPerformance: workshop.TotalPerformance,
TotalMealAllowance: workshop.TotalMealAllowance,
TotalSeniority: workshop.TotalSeniority,
TotalEarnings: workshop.TotalEarnings,
TotalNetSalary: workshop.TotalNetSalary,
AverageSalary: workshop.AverageSalary,
MaxSalary: workshop.MaxSalary,
MinSalary: workshop.MinSalary,
BaseRatio: baseRatio,
PerformanceRatio: performanceRatio,
CalcStatus: '已计算'
});
}
}数据汇总
工资总表按车间汇总工资数据,生成全厂工资支出概览。汇总数据传递给财务模块用于成本核算,传递给人事模块用于工资预算编制,同时提供给管理层决策分析。
报表配置
报表数据源配置
| 配置项 | 说明 |
|---|---|
| 主数据源 | 工资总表实体 (RP_SalaryTotalLine) |
| 关联数据源 | 工资表、车间档案、部门档案 |
| 数据类型 | 汇总统计类报表 |
| 语义模型 | 基于"车间-工资项目-时间"三维工资汇总语义模型 |
过滤条件
- 会计期间:必选
- 车间:可选,多选
- 工资区间:可选,用于筛选
分组统计
- 一级分组: 车间
- 汇总指标: 工人人数、各工资项目合计、平均工资、最高/最低工资
数据权限
功能权限
| 角色 | 查看 | 计算 | 分析 | 导出 |
|---|---|---|---|---|
| 车间主任 | ✅ | ✅ | ✅ | ✅ |
| 人事人员 | ✅ | ✅ | ✅ | ✅ |
| 财务人员 | ✅ | ❌ | ✅ | ✅ |
| 系统管理员 | ✅ | ✅ | ✅ | ✅ |
| 普通用户 | ❌ | ❌ | ❌ | ❌ |
数据权限规则
- 车间主任可查看本车间工资汇总数据
- 人事人员可查看全公司工资汇总数据
- 财务人员可查看全公司工资汇总和人工成本分析
- 系统管理员拥有全部权限
- 工资汇总数据为敏感数据,所有操作需记录详细日志
- 支持按角色设置数据可见范围
更新日志
2026/8/19 10:57
查看所有更新日志
74d2f-chore(dev): 清理不再使用的模块文档并统一字段表格式于b745d-规范开发文档 修改基础资料部分的开发文档于800c8-重新整理目录结构 修改主题为plume 适配主题plume 增加部署功能于4c42c-first Commit于