编辑 | blame | 历史 | 原始文档

SPI/AOI 接口文档

基本信息

  • 基础路径:/api/SpiAoi(示例完整地址:http://192.168.1.251:10054/api/SpiAoi
  • 请求与响应格式:application/json; charset=utf-8

统一返回模型(ResponseResult)

  • status:整数,0=成功,1=失败
  • message:字符串,结果说明或错误原因
  • data:对象,业务数据载体
  • TotalCount:整数,仅分页接口返回,总记录数

数据模型与约束(逐字段注释)

以下字段说明参考了 SPIAOI.txt 中的数据库定义与注释,调用方请严格按约束提供数据。

Header(主表摘要,上传时必填)

  • testDate:字符串,必填。测试日期,格式为 yyyy-MM-dd,与设备上传日期保持一致。
  • testTime:字符串,必填。测试时间,格式为 HH:mm:ss,与设备上传时间保持一致。
  • testResult:字符串,必填,长度≤12。测试结果原始字符串,例如 0:0:1;0(通过)、0;0;0:1(失败)、Fail(异常)。不做解析,原样入库。
  • surface:字符串,必填。检测面,取值 T 表示顶面(Top),B 表示底面(Bottom)。
  • totalPoints:整数,可空,≥0。计划检测点数。
  • actualDefects:整数,可空,≥0。实际不良点数(统计结果)。
  • equipmentModel:字符串,可空。设备型号(如 SPI/AOI 机台型号)。
  • workOrder:字符串,可空。生产工单或批次号。
  • productModel:字符串,可空。机种/产品型号。
  • boardBarcode:字符串,必填,长度≤128。板件条码,全局唯一;重复将被拒绝。
  • smtGroup:字符串,可空。SMT 组别。
  • lineName:字符串,可空。线别名称。

返回专用(查询接口会返回以下字段):
- id:数值,数据库主键 ID,由序列生成。
- createdAt:字符串,创建时间
- updatedAt:字符串,更新时间

Detail(子表缺陷与产线指标,上传时至少 1 条)

设备与产线:
- machineName:字符串,可空。检测机台名称。
- lineDisplayName:字符串,可空。产线显示名称。

缺陷计数(均为整数,必须 ≥0):
- offsetCount:偏位数量(器件贴装偏移)。
- missingCount:缺件数量(器件缺失)。
- reverseCount:反向数量(器件极性/方向反装)。
- liftedCount:翘起数量(器件一端或整体翘起)。
- floatHighCount:浮高数量(器件高度超差)。
- tombstoneCount:立碑数量(片式器件一端竖起)。
- flipCount:翻转数量(器件翻面/翻身)。
- wrongPartCount:错件数量(型号/规格错误)。
- leadLiftCount:翘脚数量(引脚未贴伏)。
- coldJointCount:虚焊数量(冷焊/假焊)。
- noSolderCount:空焊数量(焊料缺失)。
- insufficientSolderCount:少锡数量(焊料不足)。
- excessSolderCount:多锡数量(焊料过量)。
- bridgeCount:连锡数量(焊锡桥连)。
- copperExposureCount:漏铜数量(焊盘/线路铜箔外露)。
- spikeCount:拉尖数量(锡料拉尖)。
- foreignMatterCount:异物数量(污染/颗粒)。
- glueOverflowCount:溢胶数量(胶水外溢)。
- pinOffsetCount:引脚偏位数量(引脚未对中)。

产线统计(除比率外为整数,必须 ≥0):
- inputBoards:投入板数(进入检测的板数量)。
- okBoards:OK 板数(检测为 OK 的板数量)。
- passBoards:通过板数(最终判定通过的板数量)。
- passRate:小数,单位百分比。合格率,例如 98.00 表示 98%。
- defectBoards:不良板数(最终判定不良的板数量)。
- defectRate:小数,单位百分比。不良率。
- defectPpm:整数,单位 PPM。不良数(百万分率)。
- defectPoints:不良点数(缺陷点合计)。
- measuredPoints:实测点数(实际完成检测的点数)。
- pendingPoints:待测点数(未完成检测的点数)。

业务校验提示(提示不阻断):
- passBoards 不应大于 inputBoards
- 建议 defectBoards = inputBoards - passBoards,偏差仅提示。
- 当 inputBoards > 0 且提供 passRate 时,建议与计算值 passBoards/inputBoards*100 偏差 ≤ 1.0。

系统记录:每次调用会在消息中心记录一条流水(记录目标表名为 MES_SPI_AOI_HEADER、接口 URL、方法、请求与处理结果),用于审计追踪。


接口列表

1. 上传 SPI/AOI 数据

  • 路径与方法:POST /api/SpiAoi/Upload
  • 用途:新增一笔主表与多笔子表数据;若 boardBarcode 已存在则失败
  • 请求示例:
    json { "header": { "testDate": "2025-10-10", "testTime": "14:33:21", "testResult": "0;0;0:1", "surface": "T", "totalPoints": 500, "actualDefects": 3, "equipmentModel": "SPI-9000", "workOrder": "WO20251010-01", "productModel": "MODEL-ABC", "boardBarcode": "BC123456789", "smtGroup": "A1", "lineName": "SMT-01" }, "details": [ { "machineName": "AOI-01", "lineDisplayName": "SMT-01", "offsetCount": 1, "missingCount": 0, "reverseCount": 0, "liftedCount": 0, "floatHighCount": 0, "tombstoneCount": 0, "flipCount": 0, "wrongPartCount": 0, "leadLiftCount": 0, "coldJointCount": 0, "noSolderCount": 0, "insufficientSolderCount": 1, "excessSolderCount": 0, "bridgeCount": 1, "copperExposureCount": 0, "spikeCount": 0, "foreignMatterCount": 0, "glueOverflowCount": 0, "pinOffsetCount": 0, "inputBoards": 100, "okBoards": 98, "passBoards": 98, "passRate": 98.00, "defectBoards": 2, "defectRate": 2.00, "defectPpm": 20000, "defectPoints": 3, "measuredPoints": 500, "pendingPoints": 0 } ] }
  • 成功响应示例:
    json { "status": 0, "message": "OK", "data": { "headerId": 12001, "detailCount": 1, "message": "SPI/AOI检测数据上传成功" }, "TotalCount": 0 }
  • 失败响应示例(条码重复):
    json { "status": 1, "message": "上传SPI/AOI检测数据失败: 条码 BC123456789 已存在,不允许重复上传", "data": "上传SPI/AOI检测数据失败: 条码 BC123456789 已存在,不允许重复上传", "TotalCount": 0 }

调用建议

  • 严格按字段约束组织数据;数值字段使用整数或小数的正确类型
  • 发生错误时读取 message 便于定位问题;保留请求与响应作为追踪依据