PadService 项目说明文档
项目概述
PadService是一个基于.NET Core开发的MES(制造执行系统)后端服务,主要用于管理工厂生产过程中的条码打印、报工、数据采集等功能。系统通过API接口提供服务,支持前端应用(如移动设备、平板电脑等)进行生产数据的管理和操作。
系统架构
- 开发框架:.NET Core
- API类型:RESTful API
- 数据库访问:SqlSugar ORM
- API文档:Swagger
- 序列化:Newtonsoft.Json
- 跨域支持:CORS已配置
核心功能模块
1. 条码管理模块 (MesInvItemBarcodes)
该模块负责产品条码的生成、打印和管理,是系统的核心功能之一。
- 条码生成:根据工单信息生成唯一条码
- 条码打印:支持批量打印条码
- 条码验证:确保条码的唯一性和有效性
- 条码更新:支持条码信息的更新和维护
- 条码删除:支持条码的删除操作
2. 报工管理模块 (MesReporting)
该模块负责记录和管理生产过程中的报工数据。
- 报工记录:记录生产人员、生产数量、不良数量等信息
- 数据统计:统计累计采集数、打印数、不良数等
- 报工审核:支持报工数据的审核流程
3. 工单管理模块 (Womdaa)
该模块负责工单的管理和跟踪。
- 工单状态跟踪:记录工单的开工、暂停、完工等状态
- 工单数量管理:管理工单的计划数量、已完成数量等
- 工单关联信息:关联物料、批次、客户等信息
4. 数据采集模块 (MesNumerical)
该模块负责从生产设备采集数据。
- 实时数据采集:采集生产设备的实时产量数据
- 数据记录:记录采集时间、采集数量等信息
5. 质量检验模块 (MesQaItemsDetect02)
该模块负责产品质量的检验和记录。
- 首检管理:支持产品的首检流程
- 检验记录:记录检验结果、检验人员等信息
关键数据流程
条码打印流程 (AddItemToBarcodes)
- 验证工单状态和首检状态
- 检查打印数量是否超过工单数量
- 生成唯一条码
- 创建条码记录和报工记录
- 更新工单已完成数量
报工数据更新流程 (UpdateAmount)
- 获取已打印数据 (DyQty)
- 获取数采数据 (CjQty)
- 获取初始值 (anchors.InitialValue)
- 计算累计采集数 (ljcj = CjQty - anchors.InitialValue)
- 获取已报工数量 (anchorsQty)
- 计算不良数量 (BlQty = (ljcj + anchorsQty) - DyQty)
- 更新MesReporting表中的相关字段
数据库表结构
主要表
- MES_INV_ITEM_BARCODES:条码信息表
- MES_REPORTING:报工记录表
- WOMDAA:工单主表
- MES_NUMERICAL:数据采集表
- MES_ANCHORS:工单锚点表(记录初始值和已报工数量)
- MES_QA_ITEMS_DETECT_02:质量检验表
关键字段说明
- MesReporting.BlQty:累计不良数量 = (当前采集数量 - 初始值 + 已报工数量) - 已打印数量
- MesReporting.CsQty:初始值(来自MesAnchors.InitialValue)
- MesReporting.JtQty:机台面板数(当前采集数量)
- MesReporting.CjQty:累计采集数量 = 当前采集数量 - 初始值
- MesReporting.DyQty:累计打印数量
- MesAnchors.InitialValue:开工时采集数初始值
- MesAnchors.Qty:工单已报工数
API接口说明
条码管理接口
- POST /api/MesInvItemBarcodes/AddItemToBarcodes:生成并打印条码
- POST /api/MesInvItemBarcodes/UpdateBarcodeAmount:更新条码数量
- POST /api/MesInvItemBarcodes/DeleteBarcode:删除条码
其他接口
- 工单管理接口
- 报工管理接口
- 数据采集接口
- 质量检验接口
注意事项
- 报工数据计算中,anchors.InitialValue(初始值)是关键参数,需确保其正确性
- 工单状态和首检状态会影响条码打印功能
- 打印数量不能超过工单数量和可打印总数
系统维护
当需要修正数据时(如初始值错误导致的报工数据不准确),可使用以下SQL脚本更新MesReporting表:
-- 更新MesReporting表中的数据,修正初始值及相关计算字段
UPDATE MES_REPORTING r
SET
-- 设置正确的初始值
CS_QTY = '[正确的初始值]',
-- 累计采集数 = 当前机台面板数 - 初始值
CJ_QTY = TO_CHAR(TO_NUMBER(r.JT_QTY) - TO_NUMBER('[正确的初始值]')),
-- 累计不良数量 = (当前机台面板数 - 初始值 + anchors.Qty) - 已打印数量
BL_QTY = TO_CHAR((TO_NUMBER(r.JT_QTY) - TO_NUMBER('[正确的初始值]') +
TO_NUMBER(NVL((SELECT a.QTY FROM MES_ANCHORS a WHERE a.ORDER_ID = r.ORDER_ID ORDER BY a.EDIT_DATE DESC FETCH FIRST 1 ROW ONLY), 0))) -
TO_NUMBER(r.DY_QTY))
WHERE
r.BG_DATE >= TRUNC(SYSDATE) -- 只更新今天的记录
AND r.CHECK_TYPE = 0; -- 只更新未审核的记录
未来优化方向
- 增强数据校验逻辑,减少数据错误
- 优化报工流程,提高操作效率
- 增加数据分析功能,提供生产决策支持
- 完善异常处理机制,提高系统稳定性