655 lines
61 KiB
HTML
655 lines
61 KiB
HTML
<!doctype html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>MES 工时模块全流程技术说明</title>
|
||
<style>
|
||
@page { size: A4; margin: 16mm 14mm 17mm; }
|
||
* { box-sizing: border-box; }
|
||
html { font-family: "Microsoft YaHei", "Segoe UI", sans-serif; color: #20262d; font-size: 10.5pt; line-height: 1.62; }
|
||
body { margin: 0; background: #fff; }
|
||
h1, h2, h3, h4 { color: #153b4f; margin: 0; font-weight: 700; page-break-after: avoid; }
|
||
h1 { font-size: 27pt; line-height: 1.22; }
|
||
h2 { margin-top: 22px; padding: 7px 0 5px; border-bottom: 2px solid #15968f; font-size: 18pt; }
|
||
h3 { margin-top: 18px; font-size: 13.5pt; }
|
||
h4 { margin-top: 13px; font-size: 11pt; color: #355b6a; }
|
||
p { margin: 7px 0; }
|
||
ul, ol { margin: 6px 0 9px 21px; padding: 0; }
|
||
li { margin: 3px 0; }
|
||
code { font-family: Consolas, "Microsoft YaHei", monospace; font-size: 9.2pt; color: #8b2f3b; background: #f4f6f7; padding: 1px 3px; border-radius: 2px; word-break: break-all; }
|
||
pre { white-space: pre-wrap; word-break: break-word; background: #f4f7f8; border-left: 4px solid #15968f; padding: 10px 12px; font-size: 9pt; line-height: 1.5; page-break-inside: avoid; }
|
||
table { width: 100%; border-collapse: collapse; margin: 9px 0 14px; font-size: 8.8pt; table-layout: fixed; }
|
||
th, td { border: 1px solid #b9c5ca; padding: 5px 6px; vertical-align: top; word-break: break-word; }
|
||
th { background: #eaf2f3; color: #153b4f; text-align: left; font-weight: 700; }
|
||
tr { page-break-inside: avoid; }
|
||
.cover { min-height: 250mm; display: flex; flex-direction: column; justify-content: center; padding: 12mm 8mm; page-break-after: always; border-top: 10px solid #153b4f; border-bottom: 3px solid #15968f; }
|
||
.cover .kicker { color: #15968f; font-size: 12pt; font-weight: 700; margin-bottom: 16px; }
|
||
.cover .subtitle { margin-top: 16px; font-size: 14pt; color: #4d6069; }
|
||
.cover .meta { margin-top: 42px; border-top: 1px solid #b9c5ca; padding-top: 14px; color: #4d6069; }
|
||
.page-break { page-break-before: always; }
|
||
.note, .warning, .critical { margin: 10px 0; padding: 9px 11px; border-left: 4px solid; page-break-inside: avoid; }
|
||
.note { background: #edf7f6; border-color: #15968f; }
|
||
.warning { background: #fff6df; border-color: #d59622; }
|
||
.critical { background: #fff0f0; border-color: #b43d46; }
|
||
.small { font-size: 8.7pt; color: #596970; }
|
||
.toc a { color: #153b4f; text-decoration: none; }
|
||
.toc li { border-bottom: 1px dotted #aab7bd; padding: 2px 0; }
|
||
.flow { display: grid; grid-template-columns: 1fr 28px 1fr 28px 1fr; align-items: stretch; gap: 4px; margin: 12px 0 16px; page-break-inside: avoid; }
|
||
.flow .box { border: 1px solid #93a7af; background: #f8fafb; padding: 9px; min-height: 75px; }
|
||
.flow .arrow { display: flex; align-items: center; justify-content: center; color: #15968f; font-size: 18pt; font-weight: 700; }
|
||
.pill { display: inline-block; border: 1px solid #8ea1a9; padding: 1px 5px; margin: 1px 2px; border-radius: 3px; font-size: 8pt; background: #fff; }
|
||
.formula { background: #f4f7f8; border: 1px solid #c4d0d5; padding: 8px 10px; font-family: Consolas, "Microsoft YaHei", monospace; page-break-inside: avoid; }
|
||
.muted { color: #64757d; }
|
||
.w15 { width: 15%; } .w18 { width: 18%; } .w20 { width: 20%; } .w25 { width: 25%; } .w30 { width: 30%; } .w35 { width: 35%; }
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<section class="cover">
|
||
<div class="kicker">MES_Manage_View_V20 / 生产工时专题</div>
|
||
<h1>MES 工时模块全流程技术说明</h1>
|
||
<div class="subtitle">从加工中心、装配中心和外协业务入口,到工时修正、校验、查询、报表、结算及生产计划跟踪</div>
|
||
<div class="meta">
|
||
<p><strong>整理范围:</strong>页面、交互流程、存储过程、计算方法、数据表、视图、SAP Service Layer、工时查询、报表、结算、外协与生产计划跟踪</p>
|
||
<p><strong>代码基线:</strong><code>snapshot/local-save-20260625-154806</code>,提交 <code>8fdd0b6</code></p>
|
||
<p><strong>数据库定义核对:</strong>2026-07-21,只读查询当前对象定义</p>
|
||
<p><strong>文档版本:</strong>V1.0 / 2026-07-21</p>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="toc">
|
||
<h2>目录</h2>
|
||
<ol>
|
||
<li><a href="#scope">范围、边界与结论</a></li>
|
||
<li><a href="#architecture">总流程与数据分层</a></li>
|
||
<li><a href="#pages">页面及功能清单</a></li>
|
||
<li><a href="#machining">加工中心工时流程</a></li>
|
||
<li><a href="#assembly">装配中心工时流程</a></li>
|
||
<li><a href="#maintenance">工时修正与异常工时</a></li>
|
||
<li><a href="#validation">工时校验与 SAP 上传</a></li>
|
||
<li><a href="#calculation">工时计算方法与公式</a></li>
|
||
<li><a href="#downstream">工时查询、工时报表与结算工时</a></li>
|
||
<li><a href="#outsource">外协与生产计划跟踪</a></li>
|
||
<li><a href="#procedures">存储过程和函数清单</a></li>
|
||
<li><a href="#tables">数据表清单与字段说明</a></li>
|
||
<li><a href="#views">视图及取数规则</a></li>
|
||
<li><a href="#sap">SAP 对接映射</a></li>
|
||
<li><a href="#states">状态、操作类别与单位</a></li>
|
||
<li><a href="#appendix">调用矩阵与资料来源</a></li>
|
||
</ol>
|
||
</section>
|
||
|
||
<section id="scope">
|
||
<h2>1. 范围、边界与结论</h2>
|
||
<h3>1.1 本文范围</h3>
|
||
<p>本文以生产现场产生工时的加工中心、装配中心和外协业务为起点,完整覆盖工时修正、工时校验、SAP 上传,以及校验后的工时查询、工时报表、结算工时和生产计划跟踪。直接参与计算的班次、人员与工位绑定也纳入范围。</p>
|
||
<table>
|
||
<tr><th class="w20">层级</th><th>纳入内容</th><th class="w30">边界说明</th></tr>
|
||
<tr><td>现场入口</td><td>加工中心、装配中心的开始、结束、辅助、报工、加班、异常工时</td><td>产生原始操作记录和工时秒数</td></tr>
|
||
<tr><td>计算支撑</td><td>人员绑定、班次管理、生产任务、资源主数据、设备状态</td><td>决定参与人员、班次重叠、资源编码</td></tr>
|
||
<tr><td>校验前维护</td><td>工时修正、补录、开始/结束时间重算</td><td>仍写入原始操作记录表</td></tr>
|
||
<tr><td>校验与外部系统</td><td>工时校验、上传分钟计算、SAP 资源行与工时单据、校验副本</td><td>形成可统计的校验结果</td></tr>
|
||
<tr><td>查询与统计</td><td>工时查询、项目/作业者/任务/设备工时报表、结算工时</td><td>按任务、日期、人员、设备、物料等维度汇总</td></tr>
|
||
<tr><td>生产跟踪</td><td>外协管理、外协报表、生产计划跟踪</td><td>关联工时事件、工序进度、发收料、质检与供应商信息</td></tr>
|
||
</table>
|
||
<h3>1.2 明确排除的业务域</h3>
|
||
<p><code>设计报工</code>、<code>设计工时校验</code>和<code>设计工时报表</code>使用独立任务、报工和校验对象,不属于本生产工时链路,本文不纳入。</p>
|
||
<h3>1.3 核心结论</h3>
|
||
<ul>
|
||
<li>两类现场入口最终都写入 <code>YL_加工中心_操作记录表</code>,这是生产工时的事实源。</li>
|
||
<li>数据库工时统一以<strong>秒</strong>存储;页面主要以秒编辑、以分钟展示;SAP <code>InventoryGenExits.DocumentLines.Quantity</code> 使用<strong>分钟</strong>。</li>
|
||
<li>设备工时来自 <code>实际工时</code>,典型公式为“开始至结束总秒数 - 暂停秒数”;人员工时来自 <code>总时长</code>,并可按人员/班次拆成独立记录。</li>
|
||
<li><code>View_生产工时视图</code>把原始记录、校验副本、生产订单、设备绑定数合并成校验页面的统一模型。</li>
|
||
<li>批量校验先调用 <code>usp_BatchValidateWorkTime</code>算出 SAP 上传分钟,再逐条补齐 SAP 工序/资源、生成工时单据;只有上传成功后才复制到校验表。</li>
|
||
<li>工时查询面向工序报工明细,工时报表提供项目、作业者、任务、设备四种统计口径,结算工时按物料、订单、工位汇总报工与辅助工时。</li>
|
||
<li>外协工序不进入标准内部生产工时视图,改用独立的外协任务、发收料、操作记录、采购和质检链路跟踪。</li>
|
||
</ul>
|
||
</section>
|
||
|
||
<section id="architecture">
|
||
<h2>2. 总流程与数据分层</h2>
|
||
<div class="flow">
|
||
<div class="box"><strong>现场动作</strong><br>加工中心:开始加工/辅助/报工<br>装配中心:人员开始/结束</div>
|
||
<div class="arrow">→</div>
|
||
<div class="box"><strong>事实记录</strong><br><code>YL_加工中心_操作记录表</code><br>开始、结束、设备秒数、人员秒数</div>
|
||
<div class="arrow">→</div>
|
||
<div class="box"><strong>统一视图</strong><br><code>View_生产工时视图</code><br>叠加订单、绑定、校验状态</div>
|
||
</div>
|
||
<div class="flow">
|
||
<div class="box"><strong>修正</strong><br>调整开始/结束、设备/人员工时、班次标准工时</div>
|
||
<div class="arrow">→</div>
|
||
<div class="box"><strong>计算与 SAP</strong><br>班次内外拆分、日比例系数、资源行、工时单据</div>
|
||
<div class="arrow">→</div>
|
||
<div class="box"><strong>校验结束</strong><br><code>生产管理_工时校验_校验工时表</code><br>形成已校验副本</div>
|
||
</div>
|
||
<div class="flow">
|
||
<div class="box"><strong>查询与报表</strong><br>工序、项目、作业者、任务、设备维度</div>
|
||
<div class="arrow">→</div>
|
||
<div class="box"><strong>结算</strong><br>物料/订单/工位汇总<br>报工、辅助、单件工时</div>
|
||
<div class="arrow">→</div>
|
||
<div class="box"><strong>计划跟踪</strong><br>工序状态、标准工时、外协发收料、质检与进度</div>
|
||
</div>
|
||
<h3>2.1 五层模型</h3>
|
||
<table>
|
||
<tr><th class="w18">层</th><th class="w25">主要对象</th><th>职责</th></tr>
|
||
<tr><td>任务层</td><td><code>MES_接口_生产计划_生产任务</code><br><code>View_生产订单_MES</code></td><td>提供订单、TaskAID、工序、指派工位、分配数、完成数、任务/加工状态。</td></tr>
|
||
<tr><td>记录层</td><td><code>YL_加工中心_操作记录表</code><br><code>YL_加工中心_报工记录</code></td><td>记录每次现场动作、起止时间、设备工时、人员工时、加班和描述。</td></tr>
|
||
<tr><td>计算层</td><td><code>View_生产工时视图</code><br><code>usp_Calculate*</code></td><td>清洗记录、补齐上下文、按班次和当日标准工时计算上传分钟。</td></tr>
|
||
<tr><td>校验/外部层</td><td><code>生产管理_工时校验_校验工时表</code><br>SAP Service Layer</td><td>保存校验副本;补 SAP 工序/资源并提交资源消耗工时单据。</td></tr>
|
||
<tr><td>消费与跟踪层</td><td>工时查询/报表/结算过程<br><code>生产管理_生产计划跟踪</code><br><code>View_外协报表视图</code></td><td>把工时转为管理统计、单件结算和生产/外协进度信息。</td></tr>
|
||
</table>
|
||
</section>
|
||
|
||
<section id="pages" class="page-break">
|
||
<h2>3. 页面及功能清单</h2>
|
||
<table>
|
||
<tr><th class="w18">页面</th><th class="w25">组件路径</th><th>工时职责</th><th class="w18">阶段</th></tr>
|
||
<tr><td>加工中心</td><td><code>ProductionManagement/MachiningCenter/index.vue</code></td><td>设备型任务开始、辅助、结束报工、暂停口径、加班拆分、异常补录和工时修改。</td><td>起点</td></tr>
|
||
<tr><td>装配中心</td><td><code>ProductionManagement/AssemblyCenter/index.vue</code></td><td>以当前登录人员为粒度开始/结束任务,记录装配人员工时与加班。</td><td>起点</td></tr>
|
||
<tr><td>人员绑定</td><td><code>ProductionManagement/PersonnelBinding/index.vue</code></td><td>维护工位与人员关系;影响人员工时拆分、绑定设备数和 SAP 人员资源。</td><td>支撑</td></tr>
|
||
<tr><td>班次管理</td><td><code>ProductionManagement/ShiftManagement/index.vue</code></td><td>维护班次起止时间及班次人员;影响重叠秒数、班次内外拆分和比例系数。</td><td>支撑</td></tr>
|
||
<tr><td>工时修正</td><td><code>ProductionManagement/WorkhoursEdit/index.vue</code></td><td>查询当天/指定日期工时,修正开始结束、设备/人员秒数和班次标准工时,可补录操作记录。</td><td>校验前</td></tr>
|
||
<tr><td>工时校验</td><td><code>ProductionManagement/WorkHoursCheck/index.vue</code></td><td>查询昨日以前记录、筛选机加/装配/加班、修正、批量计算、上传 SAP、保存校验状态。</td><td>终点</td></tr>
|
||
<tr><td>工时查询</td><td><code>ProductionManagement/Workhours/index.vue</code></td><td>按 TaskAID、日期和明细三级展示工序工时、报工数量、单件工时与工艺标准工时。</td><td>查询</td></tr>
|
||
<tr><td>工时报表</td><td><code>ProductionManagement/Timesheet/index.vue</code></td><td>提供项目、作业者、任务、设备四类树形统计及对应导出。</td><td>统计</td></tr>
|
||
<tr><td>结算工时</td><td><code>ProductionManagement/SettlementWorkhours/index.vue</code></td><td>按物料和订单工位汇总报工、辅助、完成数、合计工时和结算单件工时,可导出 Excel。</td><td>结算</td></tr>
|
||
<tr><td>外协管理</td><td><code>ProductionManagement/OutsourceMange/index.vue</code><br><code>SaleOutsourceMange/index.vue</code></td><td>外协任务派工、发料、收料、供应商、备注、打印、历史和质检记录。</td><td>外协入口</td></tr>
|
||
<tr><td>外协报表</td><td><code>ProductionManagement/OutsourceSheet/index.vue</code></td><td>按订单和外协组汇总供应商、金额、计划/到货时间、发收料、质检和完成数量并导出。</td><td>外协统计</td></tr>
|
||
<tr><td>生产计划跟踪</td><td><code>ProductionManagement/ProductionPlanTrack/index.vue</code></td><td>按订单聚合工序路线、标准工时、开工/结束、外协结束、收料、质检、进度和加急状态。</td><td>计划跟踪</td></tr>
|
||
</table>
|
||
<div class="note"><strong>菜单范围:</strong>生产工时主链路涵盖“加工中心、装配中心、人员绑定、班次管理、工时修正、工时校验、工时查询、工时报表、结算工时、外协管理、外协报表、生产计划跟踪”。设计报工相关菜单明确排除。</div>
|
||
</section>
|
||
|
||
<section id="machining">
|
||
<h2>4. 加工中心工时流程</h2>
|
||
<h3>4.1 开始加工</h3>
|
||
<ol>
|
||
<li>页面检查已选择任务,并用 <code>生产管理_加工中心_设备是否正在加工</code>防止同一指派设备并行加工。</li>
|
||
<li>允许的任务状态为“可执行/已开工”,允许的前置加工状态为“报工、暂停、空、辅助结束”。</li>
|
||
<li>提交 <code>TaskAID、optor、收料、分配数</code>到 <code>MES_ProductTask_WorkingStart</code>。</li>
|
||
<li>存储过程把任务状态置为已开工,更新开工/操作时间,必要时同步前序合格数为收料数量。</li>
|
||
<li>通过 <code>MES_ProductCenter_OptRecord_Save</code>插入“开始加工”记录,开始时间为数据库当前时间。</li>
|
||
</ol>
|
||
<h3>4.2 辅助开始与辅助结束</h3>
|
||
<p><code>MES_ProductTask_HelpStart</code>写入“辅助开始”;<code>MES_ProductTask_HelpEnd</code>更新辅助完成量、任务进度和状态,并调用公共记录过程闭合时间区间。辅助结束允许指定实际调机人员,并可拆出普通加班、休息日加班或法定休息日加班记录。</p>
|
||
<h3>4.3 正常报工</h3>
|
||
<ol>
|
||
<li>页面仅允许加工状态为“开始加工”的任务进入报工。</li>
|
||
<li>加载同订单任务、班次配置和最近开始时间;页面根据时间判断原始班次,并收集报工数量、绑定任务、前序不合格数、班次和加班人员。</li>
|
||
<li><code>MES_ProductTask_ProdReport</code>校验报工累计数量不得超过收料/指派数量,更新完成数量和任务状态。</li>
|
||
<li>主“报工”记录由 <code>MES_ProductCenter_OptRecord_Save</code>闭合:总时长为起止差,暂停总时长为周期内暂停之和,实际工时为两者之差。</li>
|
||
<li>工作日调用 <code>计算人员工时</code>按工位绑定人员和班次重叠生成独立人员记录;休息日/法定休息日不在此步骤生成普通人员工时,而由加班记录承担。</li>
|
||
</ol>
|
||
<h3>4.4 公共记录过程的周期配对</h3>
|
||
<table>
|
||
<tr><th>结束动作</th><th>寻找的开始动作</th><th>形成字段</th></tr>
|
||
<tr><td>报工</td><td>同 TaskAID、同工位的“开始加工”</td><td><code>关联开始记录ID、开始时间、结束时间、总时长、暂停总时长、实际工时</code></td></tr>
|
||
<tr><td>辅助结束</td><td>同 TaskAID、同工位的“辅助开始”</td><td>同上,操作类别和 SAP 资源使用“辅助-”前缀</td></tr>
|
||
<tr><td>暂停</td><td>最近的“开始加工/辅助开始”</td><td>闭合开始记录,写入暂停关联与暂停时长</td></tr>
|
||
</table>
|
||
<h3>4.5 加工中心内置维护</h3>
|
||
<p>页面还提供异常工时列表、异常工时新增和单条工时修改。修改时间后前端以 <code>round((结束-开始)/1000)</code>重算秒数,并调用 <code>加工中心_修改工时_保存修改记录</code>更新原始记录。</p>
|
||
</section>
|
||
|
||
<section id="assembly">
|
||
<h2>5. 装配中心工时流程</h2>
|
||
<h3>5.1 人员开始</h3>
|
||
<ol>
|
||
<li>页面以 <code>TaskAID + 当前用户名</code>检查当前用户是否已有未结束记录。</li>
|
||
<li>调用 <code>MES_人员工时记录_开始</code>;可执行任务第一次开始时更新为已开工。</li>
|
||
<li>插入操作类别为“开始加工”的记录,工位取任务指派对象,操作人取当前用户名,结束时间为空。</li>
|
||
<li>页面随后重新读取 <code>MES_人员工时记录_获取进行中任务</code>和 <code>...获取进行中任务2</code>,保持本地状态与数据库一致。</li>
|
||
</ol>
|
||
<h3>5.2 人员结束</h3>
|
||
<p>结束时必须找到同任务、同用户、操作类别为“开始加工”且结束时间为空的最近记录。用户补充备注、工序说明、异常说明,并选择工作日/休息日/法定休息日、是否加班、普通/特殊工时人员及班次标准工时。</p>
|
||
<table>
|
||
<tr><th class="w25">场景</th><th>装配结束过程的拆分规则</th></tr>
|
||
<tr><td>工作日,不加班</td><td>全部起止秒数作为普通工作时间;更新开始记录的 <code>总时长</code>。</td></tr>
|
||
<tr><td>工作日,加班</td><td>以白班结束时间为切点:班次结束前为普通工作时间,之后为加班;若开始已晚于班次结束,全部为加班。</td></tr>
|
||
<tr><td>休息日/法定日,加班</td><td>全部起止秒数作为加班,主开始记录的工时和总时长被置 0,另插加班人员记录。</td></tr>
|
||
<tr><td>休息日/法定日,不加班</td><td>过程先识别为“休息日工作/法定休息日工作”,但随后主记录在休息日分支中被置 0;同时会向 <code>YL_加工中心_报工记录</code>写一条工作记录。此处存在双表口径差异。</td></tr>
|
||
</table>
|
||
<h3>5.3 装配与机加的主要差异</h3>
|
||
<table>
|
||
<tr><th>维度</th><th>加工中心</th><th>装配中心</th></tr>
|
||
<tr><td>主对象</td><td>设备任务 + 工位绑定人员</td><td>当前登录人员 + 装配任务</td></tr>
|
||
<tr><td>开始过程</td><td><code>MES_ProductTask_WorkingStart</code></td><td><code>MES_人员工时记录_开始</code></td></tr>
|
||
<tr><td>结束过程</td><td><code>MES_ProductTask_ProdReport</code>或辅助结束</td><td><code>MES_人员工时记录_结束</code></td></tr>
|
||
<tr><td>设备工时</td><td>主报工记录通常有 <code>实际工时</code></td><td>人员开始记录通常以 <code>总时长</code>为主</td></tr>
|
||
<tr><td>人员拆分</td><td>可由工位绑定和班次交叉生成多条</td><td>以登录用户结束记录,并可另生成加班人员记录</td></tr>
|
||
</table>
|
||
</section>
|
||
|
||
<section id="maintenance" class="page-break">
|
||
<h2>6. 工时修正与异常工时</h2>
|
||
<h3>6.1 工时修正页面</h3>
|
||
<p>“工时修正”读取 <code>工时校验_获取操作记录列表</code>,允许在进入最终校验前修正记录。主要筛选包括日期、校验状态、机加/装配性质、异常、任务 ID、生产订单、加班与人员。</p>
|
||
<ul>
|
||
<li>开始/结束时间变化时,设备工时和人员工时同时按秒重算。</li>
|
||
<li>保存调用 <code>工时校验_保存校验记录</code>,实际行为是更新原始操作记录表,并未插入校验表。</li>
|
||
<li><code>加工工时</code>映射原表 <code>实际工时</code>;<code>总时长</code>映射人员时间;班次标准工时写回原表。</li>
|
||
<li>可查看指定工位当天每分钟设备状态累计,但当前查看按钮在工时校验页被注释,工时修正页仍保留调用能力。</li>
|
||
<li>可补录“报工/辅助结束”,补录过程直接按起止时间计算 <code>实际工时</code>,写入原始操作记录。</li>
|
||
</ul>
|
||
<h3>6.2 异常工时</h3>
|
||
<p>加工中心和装配中心均内嵌异常工时入口。<code>异常工时_新增操作记录</code>根据订单与 TaskAID 补齐物料/工序上下文,按起止时间计算秒数并写入事实表;<code>加工中心_异常工时_获取操作记录列表</code>用于回查;<code>加工中心_修改工时_保存修改记录</code>用于修正。</p>
|
||
<div class="warning"><strong>管理原则:</strong>修正和补录都会直接改变事实源。当前过程记录最后编辑人/时间,但没有独立的修改前值历史表;审计主要依赖最后编辑字段和操作描述。</div>
|
||
</section>
|
||
|
||
<section id="validation">
|
||
<h2>7. 工时校验与 SAP 上传</h2>
|
||
<h3>7.1 查询范围</h3>
|
||
<p>默认显示未校验、机加、正常记录。查询过程 <code>工时校验_获取昨日之前操作记录列表</code>固定增加“开始时间小于今天 00:00:00”,因此当日记录不会进入终检。页面可按任务 ID、订单、人员、机加/装配、加班与校验状态筛选。</p>
|
||
<h3>7.2 一键校验顺序</h3>
|
||
<ol>
|
||
<li>只处理用户勾选且尚未校验的记录。</li>
|
||
<li>生产订单 <code>3886</code>直接复制进校验表,不计算、不上传 SAP。</li>
|
||
<li>其他记录传入 <code>usp_BatchValidateWorkTime</code>,逐条得到 <code>UploadMinutes、WorkType、CalculationDetail</code>。</li>
|
||
<li>对计算成功记录,读取 SAP 生产订单和 MES 工序,补齐缺失的工序阶段和资源行。</li>
|
||
<li>按操作类别形成设备或人员资源工时行;先更新 SAP 生产订单资源行计划量,再 POST 资源发料单。</li>
|
||
<li>只有 SAP 上传返回成功,才调用 <code>工时校验_批量保存校验记录</code>形成已校验副本。</li>
|
||
<li>计算失败或 SAP 上传失败的记录保持未校验,便于再次处理。</li>
|
||
</ol>
|
||
<h3>7.3 页面颜色与人工修正</h3>
|
||
<ul>
|
||
<li>结束时间为空:红色优先级。</li>
|
||
<li>设备工时或人员工时大于 33,000 秒:红色优先级。</li>
|
||
<li>结束时间早于昨天 00:00:橙色优先级。</li>
|
||
<li>未校验记录可修改起止时间、设备/人员秒数和标准工时;已校验记录只读。</li>
|
||
</ul>
|
||
<h3>7.4 已校验判定</h3>
|
||
<p><code>View_生产工时视图</code>通过 <code>生产管理_工时校验_校验工时表.报工记录id = 原始记录.AID</code>关联。存在校验副本即 <code>已校验=1</code>,并优先显示校验表字段。</p>
|
||
</section>
|
||
|
||
<section id="calculation" class="page-break">
|
||
<h2>8. 工时计算方法与公式</h2>
|
||
<h3>8.1 基础时间</h3>
|
||
<div class="formula">总时长秒 = DATEDIFF(SECOND, 开始时间, 结束时间)<br>暂停总时长秒 = 周期内所有已闭合暂停记录的暂停时长之和<br>设备实际工时秒 = 总时长秒 - 暂停总时长秒</div>
|
||
<p>在统一视图中:<code>加工工时 = 校验表.工时(有校验副本时)或 原表.实际工时</code>;<code>总时长 = 原表.总时长</code>。</p>
|
||
<h3>8.2 人员工时拆分</h3>
|
||
<p><code>计算人员工时</code>获取工位绑定人员,并与所有有效班次做笛卡尔组合,再调用 <code>计算班次重叠秒数</code>计算每个人在各班次的重叠时间。仅保留人员已绑定的班次和正重叠记录;指定人员若无班次绑定,则保留重叠最长班次,完全无重叠时至少给 1 秒。</p>
|
||
<div class="formula">当前生效公式:人员计算工时秒 = 班次重叠秒数<br><span class="muted">历史“重叠秒数 / 绑定设备数”的分摊公式已在存储过程中注释,不再生效。</span></div>
|
||
<h3>8.3 当日归一化系数</h3>
|
||
<p><code>usp_CalculateDailyRatio</code>按“操作人 + 开始日期”汇总符合条件的总时长:</p>
|
||
<ul>
|
||
<li><code>总时长 > 300</code>秒;</li>
|
||
<li><code>阶段标识 != -1</code>;</li>
|
||
<li>订单不等于 <code>3886</code>;</li>
|
||
<li>排除“加班、休息日工作、法定休息日工作”。</li>
|
||
</ul>
|
||
<div class="formula">当日总分钟 = Σ有效记录总时长秒 / 60<br>比例系数 Ratio = (标准工时小时 × 60) / 当日总分钟<br>若当日总分钟或标准工时不大于 0,则 Ratio = 1</div>
|
||
<h3>8.4 班次内外拆分</h3>
|
||
<p><code>usp_CalculateShiftTime</code>将一个起止区间逐段分到班次内和班次外,支持跨天班次;如果结束早于开始,会先交换。班次优先按人员名称从 <code>View_设备工位人员</code>匹配,其次按工位;匹配不到则默认 <code>07:45-16:30</code>。</p>
|
||
<h3>8.5 最终 SAP 上传分钟</h3>
|
||
<table>
|
||
<tr><th class="w25">操作类别</th><th>上传分钟公式</th><th class="w25">工时类型</th></tr>
|
||
<tr><td>总时长小于 300 秒</td><td><code>0</code>,跳过 SAP,但计算结果按成功处理</td><td>跳过SAP</td></tr>
|
||
<tr><td>普通报工、开始加工</td><td><code>(总时长秒 / 60) × Ratio</code></td><td>工作</td></tr>
|
||
<tr><td>辅助开始、辅助结束</td><td><code>(总时长秒 / 60) × Ratio</code></td><td>辅助</td></tr>
|
||
<tr><td>工作日加班</td><td><code>总时长秒 / 60</code>,不乘系数</td><td>加班</td></tr>
|
||
<tr><td>休息日/法定休息日加班</td><td><code>班次内分钟 × Ratio + 班次外分钟</code></td><td>加班</td></tr>
|
||
<tr><td>其他类别</td><td><code>(总时长秒 / 60) × Ratio</code></td><td>其他</td></tr>
|
||
</table>
|
||
<h3>8.6 示例</h3>
|
||
<table>
|
||
<tr><th>场景</th><th>输入</th><th>结果</th></tr>
|
||
<tr><td>普通工时归一化</td><td>某人当日有效总工时 420 分钟,标准工时 8 小时;本条 60 分钟</td><td>Ratio=480/420=1.142857;上传约 68.57 分钟</td></tr>
|
||
<tr><td>工作日加班</td><td>加班记录总时长 7,200 秒</td><td>上传 120 分钟,不乘 Ratio</td></tr>
|
||
<tr><td>设备报工</td><td>起止 3,600 秒,暂停 600 秒</td><td>总时长 3,600 秒;设备实际工时 3,000 秒;SAP 设备 Quantity=50 分钟</td></tr>
|
||
<tr><td>短记录</td><td>总时长 299 秒</td><td>UploadMinutes=0,WorkType=跳过SAP,随后可直接保存为已校验</td></tr>
|
||
</table>
|
||
</section>
|
||
|
||
<section id="downstream" class="page-break">
|
||
<h2>9. 工时查询、工时报表与结算工时</h2>
|
||
<h3>9.1 工时查询</h3>
|
||
<p>“工时查询”页面调用 <code>生产管理_工时查询_工序工时_查询</code>,用于从生产报工记录反查具体任务、日期和单次工时。查询参数包括合同号、产品编码、订单号、开始/结束日期和数据条数,默认最多返回 100 条基础工时记录。</p>
|
||
<h4>数据范围</h4>
|
||
<ul>
|
||
<li>主数据源为 <code>View_生产工时视图</code>,只取操作内容或操作类别为“报工/辅助结束”的记录。</li>
|
||
<li>要求 <code>加工工时 > 0</code>,因此该页面以设备报工工时为主体。</li>
|
||
<li>用订单号和工艺顺序关联 <code>车间生产管理工艺_零件生产工艺_工艺库</code>,补充标准工时。</li>
|
||
<li>同 TaskAID、同开始时间从 <code>View_生产工时视图全部</code>汇总加工工时不大于 0 的人员行,拼成操作人列表。</li>
|
||
<li>报工数量按 TaskAID + 开始时间取最大值,异常记录取负数;装配工位报工数量固定显示 0。</li>
|
||
</ul>
|
||
<h4>三级结构</h4>
|
||
<table>
|
||
<tr><th class="w20">层级</th><th>分组</th><th>展示内容</th></tr>
|
||
<tr><td>Level 1</td><td>TaskAID</td><td>任务描述、报工次数、去重报工数量、总工时、单件工时、工艺工时。</td></tr>
|
||
<tr><td>Level 2</td><td>TaskAID + 工作日期</td><td>日期报工次数、日期数量、日期总工时和单件工时。</td></tr>
|
||
<tr><td>Level 3</td><td>单次开始时间</td><td>班次、操作人、生产订单、正常/调机类型、工位、工时、报工数量和开始时间。</td></tr>
|
||
</table>
|
||
<div class="formula">工时小时 = 加工工时秒 / 3600<br>工时分钟 = 加工工时秒 / 60<br>单件工时(分钟/件) = 工时分钟 / 报工数量;无有效数量时回退到工艺标准工时</div>
|
||
|
||
<h3>9.2 工时报表</h3>
|
||
<p>“工时报表”页面调用四套统计过程,公共筛选项包括合同号、操作人、产品编码、工序名称、订单号、工时类型和日期范围。页面将结果构造成树形表,顶部只汇总第一层工时,并可按工时类型显示分类合计。</p>
|
||
<table>
|
||
<tr><th class="w20">页签</th><th class="w30">存储过程</th><th>分组和用途</th></tr>
|
||
<tr><td>项目工时</td><td><code>工时统计_项目工时_查询</code></td><td>Level 1 按合同号+产品汇总;Level 2 按工序、班组工时类型、操作人和订单展开。</td></tr>
|
||
<tr><td>作业者工时</td><td><code>工时统计_作业者工时_查询</code></td><td>Level 1 操作人汇总;Level 2 按日期;Level 3 展开任务、工序、类别、起止时间、异常/工序说明。</td></tr>
|
||
<tr><td>任务工时</td><td><code>工时统计_任务工时_查询</code></td><td>Level 1 按合同、订单、产品、工序、班组工时类型和操作类别汇总;Level 2 展开操作人和单次工时。</td></tr>
|
||
<tr><td>设备工时</td><td><code>工时统计_设备工时_查询</code></td><td>Level 1 工位汇总;Level 2 按日期;Level 3 展开订单、产品、工序、班次、报工类型和起止时间。</td></tr>
|
||
</table>
|
||
<h4>报表有效工时口径</h4>
|
||
<table>
|
||
<tr><th class="w30">记录条件</th><th>有效工时秒</th></tr>
|
||
<tr><td>报工/辅助结束且加工工时大于 0</td><td>加工工时,代表设备工时。</td></tr>
|
||
<tr><td>报工/辅助结束且加工工时为 0、总时长大于 0</td><td>总时长,代表人员工时。</td></tr>
|
||
<tr><td>加班类别</td><td>总时长。</td></tr>
|
||
<tr><td>开始加工且总时长大于 0</td><td>总时长,主要覆盖装配人员开始/结束记录。</td></tr>
|
||
<tr><td>作业者报表中的异常</td><td>总时长取负数,用于冲减。</td></tr>
|
||
</table>
|
||
<p>人员的“工时类型”来自 <code>登录基础数据_人员信息.班组</code>,没有班组时归入“未分类”。项目、作业者和任务报表基于 <code>View_生产工时视图全部</code>,因此可以覆盖已关闭订单;设备报表要求 <code>阶段标识=-1</code>,人员类统计通常排除该阶段。</p>
|
||
<h4>导出</h4>
|
||
<p>四个页签分别调用对应的 <code>..._查询_导出</code>过程,前端以操作类型 <code>2001</code>触发服务端表格文件生成。导出字段包含合同、订单、产品、工序、人员/设备、指派对象、数量、起止时间和工时。</p>
|
||
|
||
<h3>9.3 结算工时</h3>
|
||
<p>“结算工时”页面调用 <code>生产管理_结算工时_查询</code>,查询参数为合同号、产品编码、订单号、工位、日期范围和数据条数。过程将生产计划、生产任务和工时视图连接,形成物料汇总和订单工位明细两层数据。</p>
|
||
<h4>数据条件与分组</h4>
|
||
<ul>
|
||
<li>生产任务物料类型必须为 <code>pit_Resource</code>。</li>
|
||
<li>生产订单编号大于 6000,生产计划单据状态不为空。</li>
|
||
<li>工位优先使用生产任务指派对象,未设置时使用工时记录工位名称。</li>
|
||
<li>同 TaskAID、同开始时间从全量工时视图拼接人员工时行的操作人。</li>
|
||
<li>Level 1 按物料编号/描述汇总;Level 2 按物料、订单、工位和工序顺序汇总。</li>
|
||
</ul>
|
||
<h4>结算公式</h4>
|
||
<div class="formula">报工工时 = Σ普通报工加工工时秒 / 3600<br>辅助工时 = Σ辅助结束加工工时秒 / 3600<br>合计工时 = 报工工时 + 辅助工时<br>结算报工单件工时 = 报工工时 / 报工完成数<br>结算辅助单件工时 = 辅助工时 / 辅助完成数</div>
|
||
<p>页面同时展示报工完成数、辅助完成数、记录数、操作人和工序顺序,并在浏览器端计算三项总工时。导出使用前端 XLSX 生成“结算工时”工作表。</p>
|
||
</section>
|
||
|
||
<section id="outsource">
|
||
<h2>10. 外协与生产计划跟踪</h2>
|
||
<h3>10.1 外协在工时体系中的位置</h3>
|
||
<p>外协工序仍以生产任务和 <code>TaskAID</code>为主线,并把发料、收料动作写入 <code>YL_加工中心_操作记录表</code>;但 <code>View_生产工时视图</code>明确过滤 <code>工位名称='外协'</code>,因此外协不参与内部设备/人员工时校验、SAP 人员资源工时和常规工时报表。</p>
|
||
<div class="flow">
|
||
<div class="box"><strong>外协派工</strong><br>连续工序分组、供应商、计划时间、打印与备注</div>
|
||
<div class="arrow">→</div>
|
||
<div class="box"><strong>外协发料</strong><br>更新任务收料数量<br>写“收料”操作记录</div>
|
||
<div class="arrow">→</div>
|
||
<div class="box"><strong>外协收料</strong><br>更新任务完成数量<br>写“报工”操作记录</div>
|
||
</div>
|
||
<p>外协“报工”代表外协收货/完成数量事件,并非内部人员计时。外协用开始/结束事件时间、发料数量、收料数量、供应商采购到货日期、金额和质检结果完成进度跟踪。</p>
|
||
|
||
<h3>10.2 外协管理页面</h3>
|
||
<table>
|
||
<tr><th class="w25">功能</th><th class="w35">过程</th><th>说明</th></tr>
|
||
<tr><td>任务查询</td><td><code>生产管理_外协管理_查询外协全部</code><br><code>...查询外协</code></td><td>读取外协资源任务,按订单、产品、工序、派工/发料/完成状态筛选;连续订单行和同一外协分组按组判断状态。</td></tr>
|
||
<tr><td>派工</td><td><code>计划排产_派工</code></td><td>设置外协工位、供应商/人员、指派数量、计划时间和外协分组。</td></tr>
|
||
<tr><td>外协发料</td><td><code>生产管理_外协管理_外协发料查询</code><br><code>...外协发料保存</code></td><td>增加任务收料数量并写“收料”操作记录;任务可转为已开工/可执行。</td></tr>
|
||
<tr><td>外协收料</td><td><code>生产管理_外协管理_外协收料保存</code></td><td>增加完成数量,达到指派数量时任务置完成,并写工位为外协的“报工”操作记录。</td></tr>
|
||
<tr><td>历史与质检</td><td><code>...外协历史查询</code><br><code>...查询外协历史记录</code><br><code>...查询质检记录</code></td><td>回查派工、发收料和收检结果。</td></tr>
|
||
<tr><td>单据维护</td><td><code>...更新打印次数</code><br><code>...更新备注</code></td><td>保留外协打印和备注信息。</td></tr>
|
||
</table>
|
||
|
||
<h3>10.3 外协报表</h3>
|
||
<p>“外协报表”调用 <code>生产管理_外协报表_查询</code>,数据源为 <code>View_外协报表视图</code>。过程按订单号、拆分内码和供应商合并连续外协工序,并分页返回:</p>
|
||
<ul>
|
||
<li>计划号、合同号、订单、产品、合并工序名称和 TaskAID 列表;</li>
|
||
<li>供应商、含税单价/行总计、计划开始/完成、采购预计到货和外协结束时间;</li>
|
||
<li>指派数量、发料数量、外协报工收料数量、完成数量;</li>
|
||
<li>收检合格/不合格、上序合格数、开票状态、材质和要求完工日期;</li>
|
||
<li>首行或上序已有合格数时标记为可执行。</li>
|
||
</ul>
|
||
<p><code>生产管理_外协报表_导出</code>提供相同口径的服务端导出。</p>
|
||
|
||
<h3>10.4 生产计划跟踪</h3>
|
||
<p>“生产计划跟踪”调用 <code>生产管理_生产计划跟踪</code>,读取包含已关闭订单的生产任务视图,并把订单下各资源工序组织成路线。页面可按订单、合同、产品、工序、计划时间、排产、自制件属性、加急和单据状态筛选,并在前端按是否包含外协工序再次过滤。</p>
|
||
<table>
|
||
<tr><th class="w25">信息组</th><th>来源与用途</th></tr>
|
||
<tr><td>计划与任务</td><td>计划号、计划/指派数量、计划开始/完成、要求完工日期、任务状态、加工状态、进度和标准工时。</td></tr>
|
||
<tr><td>工时事件</td><td>按 TaskAID 从操作记录取最早开始、最大结束;外协结束取“报工”记录的开始时间。</td></tr>
|
||
<tr><td>质量</td><td>收检合格/不合格按 TaskAID 汇总;终检按计划号判断。</td></tr>
|
||
<tr><td>外协</td><td>指派对象为“外协”或工序名含外协即标识外协;连续订单行且外协分组相同的工序按最后一道工序状态统一着色。</td></tr>
|
||
<tr><td>路线状态</td><td>已报工/辅助结束/有收检结果显示完成色;外协已发料但收检未齐显示进行色;可执行、已开工和待执行分别显示不同路线状态。</td></tr>
|
||
</table>
|
||
<p>该页面把工艺标准工时、实际操作起止、外协发收料、质检与任务进度放在同一订单路线中,是工时事实与生产计划执行之间的主要追踪入口。</p>
|
||
</section>
|
||
|
||
<section id="procedures">
|
||
<h2>11. 存储过程和函数清单</h2>
|
||
<h3>11.1 加工中心核心过程</h3>
|
||
<table>
|
||
<tr><th class="w30">对象</th><th>作用</th><th class="w30">主要读写对象</th></tr>
|
||
<tr><td><code>MES_ProductTask_WorkingStart</code></td><td>开始加工,更新任务状态/收料并生成开始记录。</td><td>生产任务、生产订单视图、质检记录、公共记录过程</td></tr>
|
||
<tr><td><code>MES_ProductTask_HelpStart</code></td><td>辅助开始,更新加工状态并生成开始记录。</td><td>生产任务、数据字典、公共记录过程</td></tr>
|
||
<tr><td><code>MES_ProductTask_HelpEnd</code></td><td>辅助结束、数量/进度、班次和加班拆分。</td><td>生产任务、班次表、操作记录、报工记录</td></tr>
|
||
<tr><td><code>MES_ProductTask_ProdReport</code></td><td>正常报工、绑定任务、完成数量、班次与加班处理。</td><td>生产任务、操作记录、报工记录、班次表</td></tr>
|
||
<tr><td><code>MES_ProductCenter_OptRecord_Save</code></td><td>统一插入操作记录,配对开始/暂停/结束,计算总时长、暂停和实际工时。</td><td><code>YL_加工中心_操作记录表</code></td></tr>
|
||
<tr><td><code>计算人员工时</code></td><td>按工位人员绑定、班次人员绑定和重叠时间生成人员工时行。</td><td>绑定表、班次表、人员表、操作记录</td></tr>
|
||
<tr><td><code>计算班次重叠秒数</code></td><td>标量函数,计算起止区间与班次区间的重叠秒数,最多跨 3 天。</td><td>纯计算</td></tr>
|
||
</table>
|
||
<h3>11.2 装配中心核心过程</h3>
|
||
<table>
|
||
<tr><th class="w30">对象</th><th>作用</th></tr>
|
||
<tr><td><code>MES_人员工时记录_开始</code></td><td>防止同用户同任务重复开始,更新任务为已开工,插入未闭合“开始加工”记录。</td></tr>
|
||
<tr><td><code>MES_人员工时记录_结束</code></td><td>闭合开始记录,拆分工作/加班,写备注和说明,必要时生成普通报工表及加班操作记录。</td></tr>
|
||
<tr><td><code>MES_人员工时记录_获取进行中任务</code></td><td>读取当前用户进行中的开始记录。</td></tr>
|
||
<tr><td><code>MES_人员工时记录_获取进行中任务2</code></td><td>读取另一组进行中任务数据,供装配页面恢复状态。</td></tr>
|
||
</table>
|
||
<h3>11.3 修正与补录过程</h3>
|
||
<table>
|
||
<tr><th class="w30">对象</th><th>作用</th></tr>
|
||
<tr><td><code>工时校验_获取操作记录列表</code></td><td>工时修正页面分页查询。</td></tr>
|
||
<tr><td><code>工时校验_保存校验记录</code></td><td>名称虽含“保存校验”,当前定义实际更新原始记录起止、总时长、实际工时和班次标准工时。</td></tr>
|
||
<tr><td><code>工时校验_新增操作记录</code></td><td>补录报工/辅助记录,DATEDIFF 计算实际工时。</td></tr>
|
||
<tr><td><code>异常工时_新增操作记录</code></td><td>新增异常工时并补齐任务上下文。</td></tr>
|
||
<tr><td><code>加工中心_修改工时_保存修改记录</code></td><td>加工/装配页面内修改异常工时。</td></tr>
|
||
<tr><td><code>工时校验_获取设备数据</code></td><td>基于每分钟设备状态,用 LEAD 计算当天运行、待机、关机、报警累计时间。</td></tr>
|
||
</table>
|
||
<h3>11.4 最终校验与计算过程</h3>
|
||
<table>
|
||
<tr><th class="w30">对象</th><th>作用</th></tr>
|
||
<tr><td><code>工时校验_获取昨日之前操作记录列表</code></td><td>从统一视图分页读取今天以前记录;输出校验/性质/异常/加班/人员筛选结果。</td></tr>
|
||
<tr><td><code>usp_BatchValidateWorkTime</code></td><td>拆分 AID,逐条计算上传分钟,输出成功/失败、详情 JSON 和比例组 JSON。</td></tr>
|
||
<tr><td><code>usp_CalculateUploadMinutes</code></td><td>确定类别、班次内外、日比例系数和最终上传分钟。</td></tr>
|
||
<tr><td><code>usp_CalculateDailyRatio</code></td><td>计算操作人当日标准工时归一化比例。</td></tr>
|
||
<tr><td><code>usp_CalculateShiftTime</code></td><td>逐段累计班次内/外秒数,支持跨天。</td></tr>
|
||
<tr><td><code>usp_ValidateWorkTime</code></td><td>单条计算、构造 SAP JSON,并在事务中写校验详情;当前页面单条调用路径已注释,主流程未使用。</td></tr>
|
||
<tr><td><code>工时校验_批量保存校验记录</code></td><td>把尚无校验副本的原始记录复制到校验表,作为最终已校验标志。</td></tr>
|
||
<tr><td><code>工时校验_获取订单工序</code></td><td>按订单获取工序、工艺顺序、TaskAID、SAP VisCode。</td></tr>
|
||
<tr><td><code>工时校验_获取资源</code></td><td>按资源名称读取 SAP <code>UBT_ORSC</code> 的 VisCode 和成本。</td></tr>
|
||
</table>
|
||
<h3>11.5 查询、报表与结算过程</h3>
|
||
<table>
|
||
<tr><th class="w30">对象</th><th>作用</th><th class="w25">主要来源</th></tr>
|
||
<tr><td><code>生产管理_工时查询_工序工时_查询</code></td><td>生成 TaskAID、日期、单次开始记录三级工序工时树,计算数量、小时和单件分钟。</td><td>当前工时视图、全量工时视图、工艺库</td></tr>
|
||
<tr><td><code>工时统计_项目工时_查询</code></td><td>按合同产品及工序/班组/人员/订单汇总。</td><td>全量工时视图、人员信息</td></tr>
|
||
<tr><td><code>工时统计_作业者工时_查询</code></td><td>按人员、日期和报工明细统计,异常工时负数冲减。</td><td>全量工时视图、人员信息</td></tr>
|
||
<tr><td><code>工时统计_任务工时_查询</code></td><td>按订单产品工序任务汇总并展开操作人明细。</td><td>全量工时视图、人员信息</td></tr>
|
||
<tr><td><code>工时统计_设备工时_查询</code></td><td>按设备、日期和明细统计阶段标识为 -1 的设备工时。</td><td>全量工时视图</td></tr>
|
||
<tr><td><code>工时统计_*_查询_导出</code></td><td>为四类工时报表生成服务端导出数据。</td><td>对应查询口径</td></tr>
|
||
<tr><td><code>生产管理_结算工时_查询</code></td><td>按物料、订单、工位汇总报工、辅助、完成数量和单件结算工时。</td><td>生产计划、生产任务、当前/全量工时视图</td></tr>
|
||
</table>
|
||
<h3>11.6 外协与计划跟踪过程</h3>
|
||
<table>
|
||
<tr><th class="w30">对象</th><th>作用</th></tr>
|
||
<tr><td><code>生产管理_外协管理_查询外协全部</code></td><td>查询全部外协任务,按连续外协分组统一判断派工、发料和完成状态。</td></tr>
|
||
<tr><td><code>生产管理_外协管理_外协发料保存</code></td><td>增加任务收料数量并通过公共记录过程写“收料”操作。</td></tr>
|
||
<tr><td><code>生产管理_外协管理_外协收料保存</code></td><td>增加完成数量、更新任务完成状态并写外协“报工”操作。</td></tr>
|
||
<tr><td><code>生产管理_外协报表_查询</code></td><td>按订单、拆分内码和供应商合并外协工序,返回采购、数量、质检和时间信息。</td></tr>
|
||
<tr><td><code>生产管理_外协报表_导出</code></td><td>导出外协报表。</td></tr>
|
||
<tr><td><code>生产管理_生产计划跟踪</code></td><td>合并生产任务、标准工时、操作起止、外协结束和质检状态,输出订单工序路线。</td></tr>
|
||
</table>
|
||
</section>
|
||
|
||
<section id="tables" class="page-break">
|
||
<h2>12. 数据表清单与字段说明</h2>
|
||
<h3>12.1 YL_加工中心_操作记录表(事实源)</h3>
|
||
<p>该表同时承载设备动作、人员动作、加班、异常和补录。当前可见索引为 <code>IX_YL_加工中心_操作记录表_TaskAID_操作内容</code>,键列包含 TaskAID、操作内容、开始时间、结束时间、操作人;未查询到显式主键索引。</p>
|
||
<table>
|
||
<tr><th class="w25">字段组</th><th>字段</th><th>说明</th></tr>
|
||
<tr><td>身份与分类</td><td>AID、操作类别编号、操作类别、阶段标识、TaskAID</td><td>AID 是记录标识;TaskAID 关联生产任务。</td></tr>
|
||
<tr><td>业务上下文</td><td>工序名称、工位编号、工位名称、操作人、合同号、订单编号、物料编号、物料描述</td><td>保留报工发生时的任务快照。</td></tr>
|
||
<tr><td>动作内容</td><td>操作数值、操作内容、操作描述、备注、工序说明、异常说明</td><td>数量、显示动作和人工说明。</td></tr>
|
||
<tr><td>时间与工时</td><td>开始时间、结束时间、工时、总时长、实际工时、报工日期</td><td>核心单位均为秒;实际工时主要作为设备工时。</td></tr>
|
||
<tr><td>周期关联</td><td>关联开始记录ID、关联暂停记录ID、关联操作类型、暂停时间、暂停时长、暂停总时长</td><td>支持开始-暂停-恢复-结束的周期闭合。</td></tr>
|
||
<tr><td>状态与审计</td><td>已报工、不装配、是否更新、最后编辑人、最后编辑时间</td><td>控制可见性和保留最近编辑信息。</td></tr>
|
||
<tr><td>班次</td><td>班次标准工时(默认 8)、班次</td><td>供归一化和加班计算使用。</td></tr>
|
||
</table>
|
||
<h3>12.2 生产管理_工时校验_校验工时表</h3>
|
||
<p>该表保存校验副本,大部分业务字段与事实表一致,并增加:</p>
|
||
<table>
|
||
<tr><th class="w25">字段</th><th>作用</th></tr>
|
||
<tr><td><code>报工记录id</code></td><td>关联原始操作记录 AID,是“已校验”的判断依据。</td></tr>
|
||
<tr><td><code>计算详情</code></td><td>预留保存计算 JSON;主批量流程当前未写入。</td></tr>
|
||
<tr><td><code>上传工时</code></td><td>预留保存最终 SAP 分钟;主批量流程当前未写入。</td></tr>
|
||
<tr><td><code>工时类型</code></td><td>工作、辅助、加班、其他、跳过SAP;主批量流程当前未写入。</td></tr>
|
||
</table>
|
||
<h3>12.3 其他关键表</h3>
|
||
<table>
|
||
<tr><th class="w30">表</th><th>用途</th></tr>
|
||
<tr><td><code>MES_接口_生产计划_生产任务</code></td><td>任务状态、加工状态、完成数量、工序、指派工位和 TaskAID。</td></tr>
|
||
<tr><td><code>MES_接口_生产计划</code></td><td>订单头/计划数据,为统一视图补合同号、计划数量、入库和单据状态。</td></tr>
|
||
<tr><td><code>YL_加工中心_报工记录</code></td><td>保存报工日期、班次、工位、操作人、工时类型、数量、工时和确认/上报状态。</td></tr>
|
||
<tr><td><code>班次表</code></td><td>班次编号、名称、开始/结束时间、删除状态。</td></tr>
|
||
<tr><td><code>班次人员绑定表</code></td><td>人员属于哪个班次及绑定时间。</td></tr>
|
||
<tr><td><code>工位人员绑定表</code></td><td>人员与 SAP 资源工位的绑定关系及有效状态。</td></tr>
|
||
<tr><td><code>登录基础数据_人员信息</code></td><td>人员编号和姓名映射。</td></tr>
|
||
<tr><td><code>MES_资源主数据</code></td><td>工位 VisCode 与名称,用于绑定和 SAP 资源行。</td></tr>
|
||
<tr><td><code>历史_工位设备状态每分钟记录</code></td><td>每分钟设备状态,用于工时修正页面核对设备运行时间。</td></tr>
|
||
<tr><td><code>YL_基础表_数据字典</code></td><td>将“开始加工、辅助开始、辅助结束、暂停、报工”等名称映射成编号。</td></tr>
|
||
<tr><td><code>YL_质量检验_质检记录</code></td><td>加工开始时取得前序合格数,影响收料数量。</td></tr>
|
||
<tr><td><code>车间生产管理工艺_零件生产工艺_工艺库</code></td><td>按订单和工艺顺序提供标准工时,供工时查询和生产计划跟踪对比。</td></tr>
|
||
<tr><td><code>SAP.SBO_YL.dbo.UBT_WW_MES_OPORandOPCH</code></td><td>外协采购供应商、价格、预计到货、开票和材质信息。</td></tr>
|
||
</table>
|
||
</section>
|
||
|
||
<section id="views">
|
||
<h2>13. 视图及取数规则</h2>
|
||
<h3>13.1 View_生产工时视图</h3>
|
||
<p>面向当前有效生产订单,是工时修正、工时校验、计算过程的核心视图。连接关系:</p>
|
||
<pre>YL_加工中心_操作记录表 o
|
||
LEFT JOIN 生产管理_工时校验_校验工时表 c ON o.AID = c.报工记录id
|
||
LEFT JOIN View_生产订单_MES m ON COALESCE(c.TaskAID, o.TaskAID) = m.TaskAID
|
||
LEFT JOIN MES_接口_生产计划 s ON COALESCE(c.订单编号, o.订单编号) = s.订单编号
|
||
LEFT JOIN View_工位人员绑定数 b ON o.操作人 = b.人员姓名</pre>
|
||
<p>有校验副本时优先取校验表字段;无校验副本时取原始记录。主要过滤:</p>
|
||
<ul>
|
||
<li>排除工位“外协”。</li>
|
||
<li>报工记录必须有结束时间。</li>
|
||
<li>未校验的“收料”不显示。</li>
|
||
<li>消除已经被报工/辅助结束闭合的开始记录、未闭合的辅助结束和暂停形成的重复记录。</li>
|
||
<li>要求操作数值非空,或是尚未闭合的开始动作,或操作描述非空。</li>
|
||
<li>当日班次最小标准工时取该操作人、同日、“报工”记录的最小班次标准工时。</li>
|
||
</ul>
|
||
<h3>13.2 View_生产工时视图全部</h3>
|
||
<p>与核心视图结构和过滤基本一致,但任务来源改为 <code>View_生产订单全部(包括已关闭)</code>,主要供工时统计与历史查询。</p>
|
||
<h3>13.3 View_校验后的生产工时</h3>
|
||
<p>同样合并原始与校验数据,但强制 <code>c.AID IS NOT NULL</code>,只返回已形成校验副本的记录。</p>
|
||
<h3>13.4 绑定与班次视图</h3>
|
||
<table>
|
||
<tr><th class="w30">视图</th><th>规则</th></tr>
|
||
<tr><td><code>View_工位人员绑定数</code></td><td>按人员统计当前有效且能匹配资源主数据的不同工位数。</td></tr>
|
||
<tr><td><code>View_设备工位人员</code></td><td>连接人员、工位绑定、班次人员绑定和班次表,提供人员/工位的班次起止时间;仅保留有效绑定。</td></tr>
|
||
<tr><td><code>View_生产订单_MES</code></td><td>提供 TaskAID、订单、工序、工位、任务状态、计划与完成数量,是所有入口过程的任务上下文。</td></tr>
|
||
</table>
|
||
<h3>13.5 View_外协报表视图</h3>
|
||
<p>该视图仅保留物料类型为 <code>pit_Resource</code>且指派对象为“外协”的生产任务,合并以下信息:</p>
|
||
<ul>
|
||
<li>生产任务的计划、指派、完成、进度、外协分组和状态;</li>
|
||
<li>操作记录的最早开始、最大结束、发料“收料”数量和外协“报工”收料数量;</li>
|
||
<li>收检合格/不合格数量;</li>
|
||
<li>SAP 外协采购的供应商、价格、预计到货、开票和材质。</li>
|
||
</ul>
|
||
</section>
|
||
|
||
<section id="sap" class="page-break">
|
||
<h2>14. SAP 对接映射</h2>
|
||
<h3>14.1 调用封装</h3>
|
||
<p><code>src/api/b1s.js</code>把 GET/POST/PATCH 都封装成向配置的 B1 代理地址发 POST,请求体含 <code>func、cmd、content</code>;默认超时 100 秒。</p>
|
||
<h3>14.2 校验上传步骤</h3>
|
||
<table>
|
||
<tr><th class="w18">顺序</th><th class="w30">接口</th><th>用途</th></tr>
|
||
<tr><td>1</td><td><code>GET ProductionOrders</code></td><td>按 <code>AbsoluteEntry</code>取得生产订单、阶段和资源行。</td></tr>
|
||
<tr><td>2</td><td><code>PATCH ProductionOrders(id)</code></td><td>补齐 MES 工序阶段和当前工序需要的设备/人员资源。</td></tr>
|
||
<tr><td>3</td><td><code>PATCH ProductionOrders(id)</code></td><td>把匹配资源行的 <code>PlannedQuantity</code>调整为已发数量加本次 Quantity。</td></tr>
|
||
<tr><td>4</td><td><code>POST InventoryGenExits</code></td><td>创建资源消耗单据,Comments 记录 MES 工时 AID。</td></tr>
|
||
</table>
|
||
<h3>14.3 工序和资源规则</h3>
|
||
<ul>
|
||
<li>当前工序匹配条件:MES 工序名称相等且工艺顺序等于工时记录订单行号。</li>
|
||
<li>StageID 取 MES 工艺顺序;特定期初物料、<code>Z108-001</code>或 <code>26</code>强制 StageID=1。</li>
|
||
<li>普通设备资源名:工位名称;普通人员资源名:操作人。</li>
|
||
<li>辅助设备/人员资源:<code>辅助-工位</code>、<code>辅助-人员</code>。</li>
|
||
<li>加班人员资源:<code>加班-人员</code>。</li>
|
||
<li>资源 VisCode 由 <code>工时校验_获取资源</code>从 SAP <code>UBT_ORSC</code>按精确名称获取。</li>
|
||
</ul>
|
||
<h3>14.4 DocumentLines 映射</h3>
|
||
<table>
|
||
<tr><th class="w25">字段</th><th>值</th></tr>
|
||
<tr><td>Quantity</td><td>设备行:<code>加工工时秒/60</code>;人员行:数据库计算的 <code>UploadMinutes</code>。</td></tr>
|
||
<tr><td>BaseType</td><td><code>202</code>(生产订单)。</td></tr>
|
||
<tr><td>BaseEntry</td><td>生产订单编号/AbsoluteEntry。</td></tr>
|
||
<tr><td>BaseLine</td><td>SAP 生产订单中匹配资源行的 LineNumber。</td></tr>
|
||
<tr><td>LineType</td><td><code>dlt_Resource</code>。</td></tr>
|
||
<tr><td>WarehouseCode</td><td>空字符串。</td></tr>
|
||
<tr><td>U_ResName</td><td>原始工位名称或操作人名称。</td></tr>
|
||
</table>
|
||
</section>
|
||
|
||
<section id="states">
|
||
<h2>15. 状态、操作类别与单位</h2>
|
||
<h3>15.1 任务状态</h3>
|
||
<table>
|
||
<tr><th class="w20">值/名称</th><th>业务含义</th><th>变化条件</th></tr>
|
||
<tr><td>0 / 待执行</td><td>尚不可开工</td><td>由计划和前序控制</td></tr>
|
||
<tr><td>1 / 可执行</td><td>允许开始</td><td>第一次开始加工后转 2</td></tr>
|
||
<tr><td>2 / 已开工</td><td>任务处理中</td><td>继续开始仅记录新周期</td></tr>
|
||
<tr><td>4 / 已完成</td><td>完成数量达到指派数量</td><td>报工/辅助结束累计完成</td></tr>
|
||
</table>
|
||
<h3>15.2 操作类别</h3>
|
||
<p><span class="pill">收料</span><span class="pill">辅助开始</span><span class="pill">辅助结束</span><span class="pill">开始加工</span><span class="pill">暂停</span><span class="pill">报工</span><span class="pill">加班</span><span class="pill">休息日加班</span><span class="pill">法定休息日加班</span><span class="pill">休息日工作</span><span class="pill">法定休息日工作</span></p>
|
||
<h3>15.3 单位约定</h3>
|
||
<table>
|
||
<tr><th>位置</th><th>字段/显示</th><th>单位</th></tr>
|
||
<tr><td>数据库事实表</td><td>工时、总时长、实际工时、暂停时长</td><td>秒</td></tr>
|
||
<tr><td>工时修正/校验编辑框</td><td>设备工时、人员工时</td><td>秒</td></tr>
|
||
<tr><td>工时校验表格</td><td>设备工时、人员工时</td><td>分钟(秒/60)</td></tr>
|
||
<tr><td>计算过程</td><td>UploadMinutes</td><td>分钟,decimal(18,2)</td></tr>
|
||
<tr><td>SAP 资源行</td><td>Quantity</td><td>分钟</td></tr>
|
||
<tr><td>班次标准工时</td><td>页面输入与记录字段</td><td>业务上按小时使用,但部分过程注释写“分钟”,需统一</td></tr>
|
||
</table>
|
||
</section>
|
||
|
||
<section id="appendix">
|
||
<h2>16. 调用矩阵与资料来源</h2>
|
||
<h3>16.1 页面到对象调用矩阵</h3>
|
||
<table>
|
||
<tr><th class="w18">页面</th><th class="w35">直接过程/接口</th><th>核心落点</th></tr>
|
||
<tr><td>加工中心</td><td>WorkingStart、HelpStart、HelpEnd、ProdReport、OptRecord_Save、异常新增/修改</td><td>生产任务、操作记录、报工记录</td></tr>
|
||
<tr><td>装配中心</td><td>人员工时开始/结束、获取进行中任务、异常新增/修改</td><td>生产任务、操作记录、报工记录</td></tr>
|
||
<tr><td>人员绑定</td><td>工位绑定人员查询/保存</td><td>工位人员绑定表、资源主数据</td></tr>
|
||
<tr><td>班次管理</td><td>班次查询/保存/删除、班次绑定人员查询/保存</td><td>班次表、班次人员绑定表</td></tr>
|
||
<tr><td>工时修正</td><td>获取操作记录、保存校验记录、补录、设备数据</td><td>操作记录、设备分钟状态</td></tr>
|
||
<tr><td>工时校验</td><td>昨日之前列表、BatchValidate、Calculate*、获取订单/资源、SAP GET/PATCH/POST、批量保存</td><td>统一视图、SAP、校验表</td></tr>
|
||
<tr><td>工时查询</td><td>生产管理_工时查询_工序工时_查询</td><td>当前/全量工时视图、工艺标准工时</td></tr>
|
||
<tr><td>工时报表</td><td>项目/作业者/任务/设备查询及四套导出过程</td><td>全量工时视图、人员班组</td></tr>
|
||
<tr><td>结算工时</td><td>生产管理_结算工时_查询</td><td>生产计划、任务、当前/全量工时视图</td></tr>
|
||
<tr><td>外协管理/报表</td><td>外协任务查询、派工、发料、收料、历史、质检、报表和导出</td><td>外协任务、操作记录、采购、质检、外协报表视图</td></tr>
|
||
<tr><td>生产计划跟踪</td><td>生产管理_生产计划跟踪</td><td>全部订单、操作记录、工艺库、质检记录</td></tr>
|
||
</table>
|
||
<h3>16.2 主要代码来源</h3>
|
||
<ul>
|
||
<li><code>src/views/ProductionManagement/MachiningCenter/index.vue</code></li>
|
||
<li><code>src/views/ProductionManagement/AssemblyCenter/index.vue</code></li>
|
||
<li><code>src/views/ProductionManagement/WorkhoursEdit/index.vue</code></li>
|
||
<li><code>src/views/ProductionManagement/WorkHoursCheck/index.vue</code></li>
|
||
<li><code>src/views/ProductionManagement/PersonnelBinding/index.vue</code></li>
|
||
<li><code>src/views/ProductionManagement/ShiftManagement/index.vue</code></li>
|
||
<li><code>src/views/ProductionManagement/Workhours/index.vue</code></li>
|
||
<li><code>src/views/ProductionManagement/Timesheet/index.vue</code></li>
|
||
<li><code>src/views/ProductionManagement/SettlementWorkhours/index.vue</code></li>
|
||
<li><code>src/views/ProductionManagement/OutsourceMange/index.vue</code></li>
|
||
<li><code>src/views/ProductionManagement/SaleOutsourceMange/index.vue</code></li>
|
||
<li><code>src/views/ProductionManagement/OutsourceSheet/index.vue</code></li>
|
||
<li><code>src/views/ProductionManagement/ProductionPlanTrack/index.vue</code></li>
|
||
<li><code>src/api/b1s.js</code></li>
|
||
</ul>
|
||
<h3>16.3 数据库核对说明</h3>
|
||
<p>本文通过只读查询 SQL Server 系统目录获取当前存储过程参数、模块定义、对象依赖、表字段、索引和班次配置。未执行任何业务存储过程,未新增、更新或删除数据库数据。文档不包含数据库地址、账号或密码。</p>
|
||
<div class="note"><strong>使用建议:</strong>本说明适合作为流程评审、工时口径确认、SAP 联调和后续重构的基线。若数据库对象在 2026-07-21 后调整,应重新提取定义并更新版本。</div>
|
||
</section>
|
||
</body>
|
||
</html>
|