---
url: /dev/reports/standard-cost/index.md
---
# 标准费用表

## 功能概述

标准费用表用于展示各产品的标准费用汇总数据，包括标准工时费用、标准物料费用、标准能耗费用等。标准费用基于各车间的产量和费用标准档案计算得出，是衡量产品成本控制水平、进行费用分摊和利润分析的关键基准数据。

## 业务对象

| 业务对象 | 说明 |
| --- | --- |
| 标准费用统计 | 按车间/产品汇总标准费用数据的核心业务对象 |
| 费用标准 | 定义产品费用指标的基础数据 |

**业务场景描述：** 每月末，系统根据各车间各产品的实际产量，乘以对应的单件标准费用指标，计算出各车间各产品的标准费用总额。该数据作为费用对比分析和绩效考核的基准值。

## 实体设计

**标准费用表实体 (RP\_StandardCostLine)**

| 字段名称 | 字段编码 | 数据类型 | 必填 | 是否隐藏 | 说明 |
| --- | --- | --- | --- | --- | --- |
| 主键ID | id | 整数 | 自动 | 系统自带 |
| 会计期间 | period | 文本 | 是 | 否 | 会计月份 |
| 车间ID | workshopId | 参照/外键 | 是 | 是 | 关联车间档案ID |
| 产品编码 | productCode | 文本 | 是 | 否 | 产品料号编码 |
| 产品名称 | productName | 文本 | 是 | 否 | 产品名称 |
| 产量 | outputQty | 数值 | 是 | 否 | 产品入库数量(2位小数) |
| 单件标准费用 | unitStdCost | 数值 | 是 | 否 | 单件产品的标准费用（元）(2位小数) |
| 标准工时费用 | stdLaborCost | 数值 | 是 | 否 | 按标准工时计算的费用(2位小数) |
| 标准物料费用 | stdMaterialCost | 数值 | 是 | 否 | 按标准物料消耗计算的费用(2位小数) |
| 标准能耗费用 | stdEnergyCost | 数值 | 是 | 否 | 按标准能耗计算的费用(2位小数) |
| 标准费用合计 | totalStdCost | 数值 | 是 | 否 | 各项标准费用合计(2位小数) |
| 费用单价 | costPerUnit | 数值 | 是 | 否 | 单件标准费用单价(2位小数) |
| 计算状态 | calcStatus | 枚举 | 是 | 否 | 0-未计算/1-已计算 |
| 备注 | remark | 文本 | 否 | 否 | 备注说明 |
| 创建人 | createBy | 文本 | 自动 | 是 | 创建人 |
| 创建时间 | createTime | 日期时间 | 自动 | 是 | 创建时间 |
| 更新人 | updateBy | 文本 | 自动 | 是 | 更新人 |
| 更新时间 | updateTime | 日期时间 | 自动 | 是 | 更新时间 |
| 组织ID | orgId | 参照/外键 | 是 | 是 | 所属组织ID |

## 页面设计

### 页面布局

标准费用表页面采用分层报表布局，由筛选区、费用明细表和汇总区组成。

**顶部筛选区：**

* 会计期间选择器
* 车间多选下拉框
* 产品类别筛选
* "执行计算"按钮
* 费用结构分析按钮

**中间费用明细表：**

* 按车间分组展示
* 费用项目分色标识（工时费用蓝色、物料费用绿色、能耗费用橙色）
* 支持展开查看各费用明细构成
* 费用合计行高亮显示

**费用结构分析（侧边面板）：**

* 饼图展示各费用项占比
* 支持切换车间对比视图
* 显示费用结构趋势

**底部汇总区：**

* 各车间标准费用合计
* 全厂标准费用合计
* 平均单件费用

### 核心组件

* **报表设计器：** 配置费用列展开/折叠、多级汇总
* **智能分析：** 基于语义模型自动分析费用结构，识别费用占比异常
* **费用结构可视化：** 集成饼图组件，直观展示费用构成
* **条件格式：** 费用单项占比超阈值自动标注

### 交互规则

1. 页面加载时自动加载当前期间的标准费用数据
2. 点击车间行可展开显示各费用明细项目
3. 点击"费用结构分析"按钮打开侧边面板展示饼图
4. 点击"执行计算"按钮重新计算标准费用
5. 支持按车间对比费用结构分析

## 前端脚本

```javascript
// 初始化加载费用数据
async function onInit() {
    const period = getCurrentPeriod();
    const data = await loadStandardCostData(period);
    renderCostTable(data);
}

// 展开车间费用明细
async function onWorkshopExpand(workshopRow) {
    const workshop = workshopRow.getData('Workshop');
    const details = await loadCostDetails(workshop);
    workshopRow.setSubRows(details);
}

// 打开费用结构分析
async function onCostAnalysis() {
    const period = getFilterValue('period');
    const workshop = getFilterValue('workshop');
    const data = await loadCostStructure(period, workshop);
    setSidePanelData('costStructure', data);
    showSidePanel('costStructure');
}

// 计算标准费用
async function onClickCalc() {
    const period = getFilterValue('period');
    showLoading('正在计算标准费用...');
    try {
        const result = await calcStandardCost(period);
        renderCostTable(result.data);
        showToast('标准费用计算完成');
    } catch (e) {
        showError('计算失败：' + e.message);
    } finally {
        hideLoading();
    }
}
```

**计算触发时机：**

* 页面加载时自动查询已有数据
* 用户点击"执行计算"按钮手动触发
* 支持费用结构实时分析

## 后端脚本

### YonQL 查询

```sql
-- 查询费用标准配置
SELECT 
    Workshop,
    ProductCode,
    UnitLaborCost,
    UnitMaterialCost,
    UnitEnergyCost
FROM CostStandard
WHERE IsActive = 1

-- 查询成品入库产量
SELECT 
    Workshop,
    ProductCode,
    SUM(InQty) AS OutputQty
FROM InboundOrder
WHERE Period = #{period}
GROUP BY Workshop, ProductCode
```

### 报表计算逻辑

```javascript
async function calculateStandardCost(period) {
    // 1. 获取产量数据
    const productionData = await queryProductionByWorkshop(period);
    
    // 2. 获取费用标准
    const costStandards = await queryCostStandards();
    
    // 3. 逐产品计算标准费用
    for (const prod of productionData) {
        const standard = costStandards.find(
            s => s.Workshop === prod.Workshop 
             && s.ProductCode === prod.ProductCode
        );
        
        if (standard) {
            const laborCost = standard.UnitLaborCost * prod.OutputQty;
            const materialCost = standard.UnitMaterialCost * prod.OutputQty;
            const energyCost = standard.UnitEnergyCost * prod.OutputQty;
            const totalCost = laborCost + materialCost + energyCost;
            const unitCost = totalCost / prod.OutputQty;
            
            await saveStandardCost({
                Period: period,
                Workshop: prod.Workshop,
                ProductCode: prod.ProductCode,
                OutputQty: prod.OutputQty,
                UnitStdCost: standard.UnitLaborCost + standard.UnitMaterialCost + standard.UnitEnergyCost,
                StdLaborCost: laborCost,
                StdMaterialCost: materialCost,
                StdEnergyCost: energyCost,
                TotalStdCost: totalCost,
                CostPerUnit: unitCost,
                CalcStatus: '已计算'
            });
        }
    }
}
```

### 数据汇总

标准费用表按车间汇总各项标准费用，生成费用结构分析数据。汇总数据传递给生产费用表和利润分析模块，用于实际费用与标准费用的对比分析。

## 报表配置

### 报表数据源配置

| 配置项 | 说明 |
| --- | --- |
| 主数据源 | 标准费用表实体 (RP\_StandardCostLine) |
| 关联数据源 | 费用标准实体、成品入库单、车间档案 |
| 数据类型 | 汇总统计类报表 |
| 语义模型 | 基于"工时-物料-能耗"三维费用语义模型 |

### 过滤条件

* 会计期间：必选
* 车间：可选，多选
* 产品类别：可选
* 费用项目：可选

### 分组统计

* **一级分组：** 车间
* **二级分组：** 产品
* **汇总指标：** 产量合计、各项标准费用合计、费用合计

## 数据权限

### 功能权限

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

### 数据权限规则

1. 车间主任可查看本车间标准费用并执行计算
2. 财务人员可查看全公司费用数据和费用结构分析
3. 系统管理员拥有全部权限
4. 费用分析结果的导出操作需记录操作日志
