外观
菜金表
约 1464 字大约 5 分钟
2026-07-28
功能概述
业务对象
| 业务对象 | 说明 |
|---|---|
| 菜金计算 | 按工人计算菜金补贴的核心业务对象 |
| 菜金单价 | 各车间菜金补贴单价标准 |
业务场景描述:
实体设计
菜金表实体 (RP_MealTableLine)
| 字段名称 | 字段编码 | 数据类型 | 必填 | 是否隐藏 | 说明 |
|---|---|---|---|---|---|
| 主键ID | id | 整数 | 自动 | 系统自带 | |
| 会计期间 | period | 文本 | 是 | 否 | 会计月份 |
| 车间ID | workshopId | 参照/外键 | 是 | 是 | 关联车间档案ID |
| 工人编码 | workerCode | 文本 | 是 | 否 | 工人工号 |
| 工人姓名 | workerName | 文本 | 是 | 否 | 工人姓名 |
| 部门编码 | deptCode | 参照/外键 | 是 | 是 | 所属部门编码 |
| 出勤天数 | attendanceDays | 整数 | 是 | 否 | 当月实际出勤天数 |
| 菜金单价 | mealPrice | 数值 | 是 | 否 | 每天菜金补贴标准(元/天)(2位小数) |
| 菜金金额 | mealAmount | 数值 | 是 | 否 | 菜金补贴金额(元)(2位小数) |
| 计算状态 | calcStatus | 枚举 | 是 | 否 | 0-未计算/1-已计算/2-已审核 |
| 备注 | remark | 文本 | 否 | 否 | 备注说明 |
| 创建人 | createBy | 文本 | 自动 | 是 | 创建人 |
| 创建时间 | createTime | 日期时间 | 自动 | 是 | 创建时间 |
| 更新人 | updateBy | 文本 | 自动 | 是 | 更新人 |
| 更新时间 | updateTime | 日期时间 | 自动 | 是 | 更新时间 |
| 组织ID | orgId | 参照/外键 | 是 | 是 | 所属组织ID |
页面设计
页面布局
菜金表页面采用简洁的人员明细报表布局,由筛选区、人员菜金列表区和汇总区组成。
顶部筛选区:
- 会计期间选择器
- 车间多选下拉框
- 工人编码/姓名搜索框
- 计算状态筛选
- "执行计算"按钮
- "审核"按钮
- 导出功能
中间人员菜金列表区:
- 按车间分组展示工人菜金明细
- 同一车间内按工号排序
- 出勤天数异常值(过低或过高)高亮标注
- 菜金金额列为只读计算列
- 支持批量审核功能
底部汇总区:
- 各车间菜金合计
- 全厂菜金合计
- 平均菜金金额
- 各车间菜金占比
核心组件
- 报表设计器: 配置多级分组、条件格式和汇总规则
- 智能分析: 基于语义模型自动识别出勤异常的工人
- 批量审核: 支持菜金数据的批量审核功能
- 数据联动: 菜金计算结果自动联动至工资表
交互规则
- 页面加载时自动加载当前期间的菜金数据
- 点击"执行计算"按钮按车间菜金单价和出勤天数计算菜金
- 点击"审核"按钮对菜金数据进行批量审核
- 支持按车间分组审核
- 菜金数据审核通过后自动传递至工资表
前端脚本
// 执行菜金计算
async function onClickCalc() {
const period = getFilterValue('period');
showLoading('正在计算菜金...');
try {
const result = await calculateMealFee(period);
renderTable(result.data);
updateSummary(result.summary);
showToast('菜金计算完成');
} catch (e) {
showError('计算失败:' + e.message);
} finally {
hideLoading();
}
}
// 批量审核
async function onClickBatchApprove() {
const selectedRows = getSelectedRows();
if (selectedRows.length === 0) {
showWarning('请先选择要审核的记录');
return;
}
showConfirm('确认审核选中的 ' + selectedRows.length + ' 条菜金记录?', async () => {
try {
await approveMealData(selectedRows);
showToast('审核成功');
refreshTable();
} catch (e) {
showError('审核失败:' + e.message);
}
});
}
// 出勤异常高亮
function highlightAbnormalAttendance() {
const rows = getTableRows();
rows.forEach(row => {
const days = row.getData('AttendanceDays');
if (days < 15 || days > 31) {
row.setBackgroundColor('orange');
}
});
}
// 工人搜索
async function onWorkerSearch() {
const keyword = getSearchValue();
const data = await searchMealData(keyword);
renderTable(data);
}计算触发时机:
- 页面加载时自动加载已有计算数据
- 用户点击"执行计算"按钮手动触发
- 支持按车间单独计算
后端脚本
YonQL 查询
-- 查询各车间菜金单价标准
SELECT
Workshop,
Price AS MealPrice
FROM MealPriceStandard
WHERE IsActive = 1
-- 查询工人出勤数据
SELECT
Workshop,
WorkerCode,
WorkerName,
Department,
AttendanceDays
FROM WorkerAttendance
WHERE Period = #{period}报表计算逻辑
async function calculateMealFee(period) {
// 1. 获取菜金单价标准
const priceStandards = await queryMealPriceStandards();
// 2. 获取工人出勤数据
const attendanceData = await queryWorkerAttendance(period);
// 3. 逐工人计算菜金
for (const worker of attendanceData) {
const price = priceStandards.find(p => p.Workshop === worker.Workshop);
const mealPrice = price ? price.MealPrice : 0;
const mealAmount = mealPrice * worker.AttendanceDays;
await saveMealData({
Period: period,
Workshop: worker.Workshop,
WorkerCode: worker.WorkerCode,
WorkerName: worker.WorkerName,
Department: worker.Department,
AttendanceDays: worker.AttendanceDays,
MealPrice: mealPrice,
MealAmount: mealAmount,
CalcStatus: '已计算'
});
}
// 4. 汇总计算
await summarizeMealByWorkshop(period);
// 5. 联动至工资表
await syncToSalaryTable(period);
}数据汇总
菜金表按车间汇总菜金金额,生成各车间菜金合计数据。审核通过后,菜金数据自动传递至工资表,作为工资计算的组成部分。菜金数据同时纳入车间综合人工成本分析。
报表配置
报表数据源配置
| 配置项 | 说明 |
|---|---|
| 主数据源 | 菜金表实体 (RP_MealTableLine) |
| 关联数据源 | 菜金单价标准、工人出勤登记、工人档案 |
| 数据类型 | 计算类报表 |
| 语义模型 | 基于"车间-工人-出勤"三维菜金语义模型 |
过滤条件
- 会计期间:必选
- 车间:可选,多选
- 工人编码/姓名:可选,模糊搜索
- 计算状态:可选
分组统计
- 一级分组: 车间
- 二级分组: 部门
- 汇总指标: 出勤天数合计、菜金金额合计、平均菜金
数据权限
功能权限
| 角色 | 查看 | 计算 | 审核 | 导出 |
|---|---|---|---|---|
| 车间主任 | ✅ | ✅ | ✅ | ✅ |
| 人事人员 | ✅ | ✅ | ✅ | ✅ |
| 财务人员 | ✅ | ❌ | ❌ | ✅ |
| 系统管理员 | ✅ | ✅ | ✅ | ✅ |
| 普通用户 | ❌ | ❌ | ❌ | ❌ |
数据权限规则
- 车间主任可查看本车间菜金数据并执行计算和审核
- 人事人员可查看全公司菜金数据并执行计算和审核
- 财务人员仅可查看菜金数据,不可修改
- 系统管理员拥有全部权限
- 菜金数据审核后不可直接修改,需重新计算
- 所有计算和审核操作需记录操作日志
更新日志
2026/8/19 10:57
查看所有更新日志
74d2f-chore(dev): 清理不再使用的模块文档并统一字段表格式于b745d-规范开发文档 修改基础资料部分的开发文档于800c8-重新整理目录结构 修改主题为plume 适配主题plume 增加部署功能于4c42c-first Commit于