---
url: /dev/reports/salary-total/index.md
---
# 工资总表

## 功能概述

工资总表用于按车间汇总工资表数据，展示各车间的工资总额、平均工资、工资结构占比等汇总指标。工资总表是车间工资汇总的核心报表，为车间管理层和公司决策层提供工资支出概览和人工成本分析数据。

## 业务对象

| 业务对象 | 说明 |
| --- | --- |
| 工资汇总 | 按车间汇总工资数据的核心业务对象 |
| 人工成本分析 | 基于工资数据的人工成本分析对象 |

**业务场景描述：** 每月工资表计算完成后，系统自动按车间汇总各工资项目的合计金额，生成工资总表。工资总表支持按车间对比分析工资结构，为工资预算编制和人工成本控制提供数据支持。

## 实体设计

**工资总表实体 (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 |

## 页面设计

### 页面布局

工资总表页面采用车间级汇总报表布局，由筛选区、汇总表格区和分析图表区组成。

**顶部筛选区：**

* 会计期间选择器
* 车间多选下拉框
* 工资区间筛选
* "执行计算"按钮
* 人工成本分析按钮
* 导出功能

**中间汇总表格区：**

* 按车间分组展示工资汇总数据
* 各工资项目分色标识（应发项目绿色系、扣款项目红色系）
* 工资占比列为只读计算列
* 汇总行显示全厂合计
* 平均工资列高亮显示

**分析图表区：**

* 柱状图：各车间工资总额对比
* 饼图：各车间工资占全厂比例
* 折线图：工资趋势（支持多月对比）
* 雷达图：工资结构对比（基本工资占比、绩效占比等）

**底部汇总区：**

* 全厂工资合计
* 全厂平均工资
* 工资总额环比变化

### 核心组件

* **报表设计器：** 配置多级分组、条件格式和汇总规则
* **智能分析：** 基于语义模型自动分析工资结构，识别人工成本异常
* **数据可视化：** 集成多种图表组件，提供多维度工资分析
* **趋势分析：** 支持多月工资趋势对比分析
* **预算对比：** 支持工资实际支出与预算对比

### 交互规则

1. 页面加载时自动加载当前期间的工资汇总数据
2. 点击"执行计算"按钮重新汇总工资数据
3. 点击车间行可下钻查看部门级工资明细
4. 切换图表类型查看不同维度的工资分析
5. 支持多月工资趋势对比（最多12个月）

## 前端脚本

```javascript
// 切换分析图表类型
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 查询

```sql
-- 按车间汇总工资数据
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
```

### 报表计算逻辑

```javascript
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) |
| 关联数据源 | 工资表、车间档案、部门档案 |
| 数据类型 | 汇总统计类报表 |
| 语义模型 | 基于"车间-工资项目-时间"三维工资汇总语义模型 |

### 过滤条件

* 会计期间：必选
* 车间：可选，多选
* 工资区间：可选，用于筛选

### 分组统计

* **一级分组：** 车间
* **汇总指标：** 工人人数、各工资项目合计、平均工资、最高/最低工资

## 数据权限

### 功能权限

| 角色 | 查看 | 计算 | 分析 | 导出 |
| --- | --- | --- | --- | --- |
| 车间主任 | ✅ | ✅ | ✅ | ✅ |
| 人事人员 | ✅ | ✅ | ✅ | ✅ |
| 财务人员 | ✅ | ❌ | ✅ | ✅ |
| 系统管理员 | ✅ | ✅ | ✅ | ✅ |
| 普通用户 | ❌ | ❌ | ❌ | ❌ |

### 数据权限规则

1. 车间主任可查看本车间工资汇总数据
2. 人事人员可查看全公司工资汇总数据
3. 财务人员可查看全公司工资汇总和人工成本分析
4. 系统管理员拥有全部权限
5. 工资汇总数据为敏感数据，所有操作需记录详细日志
6. 支持按角色设置数据可见范围
