外观
物料消耗计算表
约 1854 字大约 6 分钟
2026-07-28
功能概述
物料消耗计算表用于计算各车间产品的物料消耗量,基于BOM(物料清单)和实际产量数据,结合消耗范围组中的奖惩规则,计算物料消耗的节约或超支金额。该报表是车间考核体系中的核心环节,直接关系到产品成本核算和车间绩效评定。
业务对象
| 业务对象 | 说明 |
|---|---|
| 物料消耗计算 | 物料消耗计算的核心业务对象,包含计算规则和结果 |
| 消耗范围组 | 物料消耗的奖惩规则配置,定义消耗合格范围和奖惩比例 |
业务场景描述: 每月末结账后,系统根据各车间的成品入库数量和对应的BOM清单,计算各产品应消耗的原材料数量,再与实际领用数量进行对比,得出节约或超支情况,并按照消耗范围组配置的奖惩规则计算奖惩金额。
实体设计
物料消耗计算表实体 (RP_MaterialConsumptionLine)
| 字段名称 | 字段编码 | 数据类型 | 必填 | 是否隐藏 | 说明 |
|---|---|---|---|---|---|
| 主键ID | id | 整数 | 自动 | 系统自带 | |
| 会计期间 | period | 文本 | 是 | 否 | 会计月份,格式为YYYY-MM |
| 车间ID | workshopId | 参照/外键 | 是 | 是 | 关联车间档案ID |
| 产品编码 | productCode | 文本 | 是 | 否 | 产品料号编码 |
| 产品名称 | productName | 文本 | 是 | 否 | 产品名称 |
| BOM版本 | bomVersion | 文本 | 是 | 否 | 物料清单版本号 |
| 产量 | outputQty | 数值 | 是 | 否 | 实际入库产量(2位小数) |
| 标准消耗量 | standardQty | 数值 | 是 | 否 | 按BOM计算的标准消耗量(2位小数) |
| 实际消耗量 | actualQty | 数值 | 是 | 否 | 实际领用消耗量(2位小数) |
| 差异量 | diffQty | 数值 | 是 | 否 | 实际与标准的差异(2位小数) |
| 差异率 | diffRate | 数值 | 是 | 否 | 差异百分比(2位小数) |
| 奖惩金额 | rewardAmount | 数值 | 是 | 否 | 按规则计算的奖惩金额(2位小数) |
| 计算状态 | calcStatus | 枚举 | 是 | 否 | 0-未计算/1-已计算/2-已审核 |
| 备注 | remark | 文本 | 否 | 否 | 备注说明 |
| 创建人 | createBy | 文本 | 自动 | 是 | 创建人 |
| 创建时间 | createTime | 日期时间 | 自动 | 是 | 创建时间 |
| 更新人 | updateBy | 文本 | 自动 | 是 | 更新人 |
| 更新时间 | updateTime | 日期时间 | 自动 | 是 | 更新时间 |
| 组织ID | orgId | 参照/外键 | 是 | 是 | 所属组织ID |
页面设计
页面布局
物料消耗计算表页面采用典型的报表布局结构,由顶部筛选区、中间数据表格区和底部汇总区三部分组成。
顶部筛选区:
- 会计期间选择器(默认当前月份)
- 车间多选下拉框
- 产品编码模糊搜索框
- 计算状态筛选
- "执行计算"按钮
- "导出Excel"按钮
中间数据表格区:
- 按车间分组展示各产品的物料消耗明细
- 支持按车间/产品折叠展开
- 差异量和差异率超阈值行高亮显示(红色超支、绿色节约)
- 每行显示计算状态标签
底部汇总区:
- 各车间产量合计
- 标准消耗量合计与实际消耗量合计
- 奖惩金额合计
核心组件
- 报表设计器: 使用YonBIP报表设计器配置数据列、分组、汇总规则
- 智能分析: 基于语义模型自动识别异常数据,提供超支原因分析建议
- 条件格式: 差异率超过阈值时自动标红预警
交互规则
- 首次打开页面时,根据当前会计期间自动加载已有计算数据
- 点击"执行计算"按钮触发后端计算流程,重新计算所有物料消耗数据
- 计算完成后自动刷新页面数据,差异率超阈值的行高亮显示
- 支持点击单条记录查看详细的BOM展开和领用明细
前端脚本
// 页面加载时自动加载当前期间的计算数据
async function onPageLoad() {
const period = getCurrentPeriod();
const data = await fetchConsumptionData(period);
setTableData(data);
applyConditionalFormat();
}
// 执行计算按钮事件
async function onClickCalc() {
const period = getFilterValue('period');
const workshop = getFilterValue('workshop');
showLoading('正在计算物料消耗...');
try {
const result = await triggerCalculation(period, workshop);
setTableData(result.data);
applyConditionalFormat();
showToast('计算完成,共处理 ' + result.count + ' 条记录');
} catch (e) {
showError('计算失败:' + e.message);
} finally {
hideLoading();
}
}
// 条件格式:差异率超阈值标红
function applyConditionalFormat() {
const rows = getTableRows();
rows.forEach(row => {
const diffRate = row.getData('DiffRate');
const threshold = getConsumptionThreshold(row.getData('Workshop'));
if (diffRate > threshold) {
row.setBackgroundColor('red');
} else if (diffRate < 0) {
row.setBackgroundColor('green');
}
});
}计算触发时机:
- 页面首次加载时自动加载已有数据
- 用户点击"执行计算"按钮时触发全量计算
- 支持按车间维度单独计算
后端脚本
YonQL 查询
-- 查询成品入库数量
SELECT
Workshop,
ProductCode,
SUM(InQty) AS OutputQty
FROM InboundOrder
WHERE Period = #{period}
AND Workshop IN (#{workshops})
GROUP BY Workshop, ProductCode
-- 查询实际领用数量
SELECT
c.Workshop,
c.ProductCode,
SUM(c.UseQty) AS ActualQty
FROM MaterialUse c
WHERE c.Period = #{period}
GROUP BY c.Workshop, c.ProductCode
-- 查询BOM标准用量
SELECT
b.Workshop,
b.ProductCode,
b.MaterialCode,
b.UnitUsage
FROM BOM b
WHERE b.IsActive = 1报表计算逻辑
// 物料消耗核心计算流程
async function calculateMaterialConsumption(period, workshops) {
// 1. 获取各车间各产品的产量
const outputData = await queryOutputByWorkshop(period, workshops);
// 2. 获取BOM标准
const bomData = await queryBOM();
// 3. 获取实际领用数据
const actualData = await queryActualUsage(period, workshops);
// 4. 获取消耗范围组规则
const scopeRules = await queryConsumptionScope(workshops);
// 5. 逐产品计算标准消耗量、差异量、奖惩金额
for (const item of outputData) {
const bom = bomData.find(b => b.ProductCode === item.ProductCode);
const standardQty = calcStandardUsage(bom, item.OutputQty);
const actualQty = getActualUsage(actualData, item);
const diff = actualQty - standardQty;
const rate = diff / standardQty;
const reward = calcReward(scopeRules, item.Workshop, rate, diff);
await saveCalculationResult({
Period: period,
Workshop: item.Workshop,
ProductCode: item.ProductCode,
OutputQty: item.OutputQty,
StandardQty: standardQty,
ActualQty: actualQty,
DiffQty: diff,
DiffRate: rate,
RewardAmount: reward
});
}
}数据汇总
计算完成后,系统按车间维度自动汇总奖惩金额,作为车间绩效考核的重要输入数据。汇总结果同步至工资计算模块,用于扣减或增加车间总工资额度。
报表配置
报表数据源配置
| 配置项 | 说明 |
|---|---|
| 主数据源 | 物料消耗计算表实体 (RP_MaterialConsumptionLine) |
| 关联数据源 | BOM实体、成品入库单、材料领用单、消耗范围组 |
| 数据类型 | 汇总计算类报表 |
| 语义模型 | 基于"车间-产品-物料"三级语义模型 |
过滤条件
- 会计期间:必选,默认当前月份
- 车间:可选,多选
- 产品编码:可选,模糊搜索
- 计算状态:可选,支持未计算/已计算/已审核
分组统计
- 一级分组: 车间
- 二级分组: 产品
- 汇总指标: 产量合计、标准消耗量合计、实际消耗量合计、差异量合计、奖惩金额合计
数据权限
功能权限
| 角色 | 查看 | 计算 | 审核 | 导出 |
|---|---|---|---|---|
| 车间主任 | ✅ | ✅ | ✅ | ✅ |
| 财务人员 | ✅ | ✅ | ✅ | ✅ |
| 系统管理员 | ✅ | ✅ | ✅ | ✅ |
| 普通用户 | ✅ | ❌ | ❌ | ❌ |
数据权限规则
- 车间主任仅可查看和操作本车间的物料消耗数据
- 财务人员可查看所有车间数据,但计算和审核需记录操作日志
- 系统管理员拥有全部权限
- 普通用户仅具备只读权限,不可执行计算和审核操作
- 所有计算操作均记录操作人、操作时间和操作内容
更新日志
2026/8/19 10:57
查看所有更新日志
74d2f-chore(dev): 清理不再使用的模块文档并统一字段表格式于b745d-规范开发文档 修改基础资料部分的开发文档于800c8-重新整理目录结构 修改主题为plume 适配主题plume 增加部署功能于4c42c-first Commit于