接口:
MesProductRecordController.qmcheck/MesProductRecordController.qmresult
MES 服务地址:http://192.168.16.99:8980
版本依据:mescloud 源码(2026-06)
| 项目 | 说明 |
|---|---|
| 服务 IP | 192.168.16.99 |
| 端口 | 8980 |
| 上下文路径 | /js |
| 管理路径 | /a |
| 完整 Base URL | http://192.168.16.99:8980/js/a/mes/mesProductRecord |
| 请求方式 | POST |
| Content-Type | application/x-www-form-urlencoded(推荐) |
| 字符编码 | UTF-8 |
| 认证 | 无需登录(Shiro 已配置 anon) |
1. 测试前 → 调用 qmcheck(进站校验,确认能否测试)
2. 测试后 → 调用 qmresult(上传气密过程数据 + 更新工位总结果)
POST http://192.168.16.99:8980/js/a/mes/mesProductRecord/qmcheck
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
__ajax |
String | 建议 | 固定传 json,JeeSite 约定,服务端返回 JSON 格式 |
sn |
String | 是 | 工件码/产品序列号,MES 中唯一标识该工件 |
oprno |
String | 是 | 工位号,如 OP330、OP450;支持子工位如 OP450A,服务端会自动格式化 |
lineSn |
String | 是 | 产线编号,如 XT |
workNum |
String | 否 | 工号/操作员账号,参与 MES 质量校验(开班点检等) |
craft |
String | 否 | 工艺号;本接口读取但未参与业务逻辑,可不传 |
cxm |
String | 否 | 气密程序名/程序号,仅写入 API 日志,不参与校验 |
by |
String | 否 | 保压时间(秒),仅写入 API 日志 |
cq |
String | 否 | 充气时间(秒),仅写入 API 日志 |
cs |
String | 否 | 测试时间(秒),仅写入 API 日志 |
__ajax=json&sn=501901660045119990G4JB100071&oprno=OP450&lineSn=XT&workNum=system
__ajax=json # JeeSite 返回 JSON,建议固定带上
&sn=501901660045119990G4JB100071 # 工件码(必填)
&oprno=OP450 # 工位号(必填)
&lineSn=XT # 产线编号(必填)
POST /js/a/mes/mesProductRecord/qmcheck HTTP/1.1
Host: 192.168.16.99:8980
Content-Type: application/x-www-form-urlencoded
__ajax=json&sn=501901660045119990G4JB100071&oprno=OP450&lineSn=XT
curl -X POST "http://192.168.16.99:8980/js/a/mes/mesProductRecord/qmcheck" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "__ajax=json" \
-d "sn=501901660045119990G4JB100071" \
-d "oprno=OP450" \
-d "lineSn=XT"
返回 JSON 对象 CommonResp:
| 字段 | 类型 | 说明 |
|---|---|---|
result |
String | "true" 允许继续 / "false" 不允许 |
message |
String | 中文提示信息 |
data |
String | 质量校验状态码(2 位字母) |
允许测试:
{
"result": "true",
"message": "工件可以加工",
"data": "UD"
}
不允许测试(前置工位未完成):
{
"result": "false",
"message": "该工件OP180未加工",
"data": "QD"
}
两次气密间隔不足 15 分钟(需配置 mes.qm.ng.time=1 开启):
{
"result": "false",
"message": "两次气密必须间隔15分钟",
"data": "UD"
}
参数缺失:
{
"result": "false",
"message": "参数错误1",
"data": null
}
对接规则:仅当
result="true"且data="UD"时,设备方可开始气密测试。
| data | 含义 | message 示例 |
|---|---|---|
UD |
可以加工/测试 | 工件可以加工 |
OK |
本工位已加工且 OK | 该工件本工位已加工,结果:OK |
NG |
本工位已加工且 NG | 该工件本工位已加工,结果:NG |
NE |
工件未录入系统 | 该工件未录入系统 |
NN |
跳过该工位 | 该工件跳过该工位 |
QD |
前置工位未加工 | 该工件OPxxx未加工 |
QN |
前置工位 NG | 该工件OPxxx加工NG |
NF |
已合格下线 | 该工件已合格下线 |
NR |
返修中 | 该工件离线返修中 |
NB |
已报废 | 该工件已报废 |
ND |
NG 待处理 | 该工件NG待处理 |
DJ |
未开班点检 | 未进行开班点检 |
BM |
未绑定物料 | 未绑定物料 |
PL |
配件寿命不足 | 配件寿命不足 |
PZ |
未拍照 | 请先上传照片 |
POST http://192.168.16.99:8980/js/a/mes/mesProductRecord/qmresult
一次请求完成两件事:
mes_product_qm 表updateQualityCommon,更新 craft=100000 对应记录| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
__ajax |
String | 建议 | 固定传 json |
sn |
String | 是 | 工件码/产品序列号 |
oprno |
String | 是 | 工位号,例如 OP330、OP450 |
lineSn |
String | 是 | 产线编号,固定传XT |
result |
String | 是 | 测试结果,固定大写:OK(合格)或 NG(不合格) |
craft |
String | 建议 | 工艺号,更新工位总结果时使用;固定传 100000(工位总结果) |
workNum |
String | 建议 | 工号/操作员账号,写入气密记录及工位结果 |
| 参数名 | 类型 | 必填 | Base64 | 说明 |
|---|---|---|---|---|
cxm |
String | 否 | 否 | 气密程序号/程序名 |
deviceType |
String | 否 | 否 | 设备类型/设备编号 |
remark |
String | 否 | 否 | 备注信息 |
testPressure |
String | 否 | 是 | 测试压力值,传 Base64 编码后的字符串 |
testPressureUnit |
String | 否 | 否 | 测试压力单位,如 Pa、kPa |
leakVal |
String | 否 | 是 | 泄漏值,传 Base64 编码后的字符串 |
leakValUnit |
String | 否 | 否 | 泄漏值单位,如 Pa |
testTime |
String | 否 | 是 | 测试完成时间,Base64 编码;解码后格式 yyyy-MM-dd HH:mm:ss |
title |
String | 否 | 是 | 测试标题,Base64 编码 |
| 原始值 | Base64 编码值 |
|---|---|
200 |
MjAw |
5 |
NQ== |
2026-06-09 12:12:00 |
MjAyNC0wNS0xNiAxMjoxMjowMA== |
编码步骤:原始字符串 → UTF-8 → Base64 编码 → URL 编码(作为表单参数提交)
__ajax=json&sn=501901660045119990G4JB100071&oprno=OP450&lineSn=XT&workNum=system&craft=100000&result=OK&cxm=PROGRAM_01&testPressure=MjAw&testPressureUnit=Pa&leakVal=NQ==&leakValUnit=Pa&testTime=MjAyNC0wNS0xNiAxMjoxMjowMA==&deviceType=QM001&remark=
__ajax=json # JeeSite 返回 JSON(建议)
&sn=501901660045119990G4JB100071 # 工件码(必填)
&oprno=OP450 # 工位号(必填)
&lineSn=XT # 产线编号(必填)
&craft=100000 # 工艺号,工位总结果固定传 100000(强烈建议)
&result=OK # 测试结果 OK/NG(必填,大写)
&workNum=system # 操作员工号(建议)
&cxm=PROGRAM_01 # 气密程序号(可选)
&deviceType=QM001 # 设备类型/编号(可选)
&testPressure=MjAw # 测试压 200,Base64 编码(可选)
&testPressureUnit=Pa # 测试压单位(可选)
&leakVal=NQ== # 泄漏值 5,Base64 编码(可选)
&leakValUnit=Pa # 泄漏值单位(可选)
&testTime=MjAyNC0wNS0xNiAxMjoxMjowMA== # 测试时间,Base64 编码(可选)
&remark= # 备注(可选)
__ajax=json&sn=501901660045119990G4JB100071&oprno=OP450&lineSn=XT&craft=100000&result=NG&workNum=system
POST /js/a/mes/mesProductRecord/qmresult HTTP/1.1
Host: 192.168.16.99:8980
Content-Type: application/x-www-form-urlencoded
__ajax=json&sn=501901660045119990G4JB100071&oprno=OP450&lineSn=XT&workNum=system&craft=100000&result=OK&cxm=PROGRAM_01&testPressure=MjAw&testPressureUnit=Pa&leakVal=NQ==&leakValUnit=Pa&testTime=MjAyNC0wNS0xNiAxMjoxMjowMA==&deviceType=QM001
curl -X POST "http://192.168.16.99:8980/js/a/mes/mesProductRecord/qmresult" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "__ajax=json" \
--data-urlencode "sn=501901660045119990G4JB100071" \
--data-urlencode "oprno=OP450" \
--data-urlencode "lineSn=XT" \
--data-urlencode "workNum=system" \
--data-urlencode "craft=100000" \
--data-urlencode "result=OK" \
--data-urlencode "cxm=PROGRAM_01" \
--data-urlencode "testPressure=MjAw" \
--data-urlencode "testPressureUnit=Pa" \
--data-urlencode "leakVal=NQ==" \
--data-urlencode "leakValUnit=Pa" \
--data-urlencode "testTime=MjAyNC0wNS0xNiAxMjoxMjowMA==" \
--data-urlencode "deviceType=QM001"
返回 JeeSite 标准 JSON 字符串:
| 字段 | 类型 | 说明 |
|---|---|---|
result |
String | "true" 成功 / "false" 失败 |
message |
String | 中文提示信息 |
成功:
{
"result": "true",
"message": "操作成功!"
}
参数错误:
{
"result": "false",
"message": "参数错误1!"
}
工位未配置:
{
"result": "false",
"message": "子工位未配置!"
}
工位结果更新失败(防呆拦截):
{
"result": "false",
"message": "该工件本工位已加工,结果:OK"
}
| 对比项 | qmcheck | qmresult |
|---|---|---|
| 用途 | 测试前进站校验 | 测试后上传结果 |
| 是否写气密明细表 | 否 | 是(mes_product_qm) |
| 是否更新工位总结果 | 否 | 是(craft=100000) |
| 响应结构 | result + message + data |
result + message |
| 必填参数 | sn, oprno, lineSn | sn, oprno, lineSn, result |
| 操作员字段 | workNum |
workNum |
| 特殊校验 | 15 分钟间隔(可配置) | 样件判定、防呆、多次气密 |
| 接口 | 操作员字段 | craft 默认值 | 说明 |
|---|---|---|---|
| pccheck / pcresult | ucode |
pcresult 服务端默认 100000 |
通用工位校验/结果 |
| qmcheck / qmresult | workNum |
qmresult 需客户端传 craft=100000 |
气密专用接口 |
100000:与 MES 工位总结果工艺号一致,不传可能导致工位结果无法正确更新。OK / NG。testPressure、leakVal、testTime、title 需 Base64 编码后再 URL 编码提交。yyyy-MM-dd HH:mm:ss,解析失败则入库为 null。mes.qm.ng.time=1 控制,未开启时不校验。-、空格等特殊字符时必须 URL 编码。message 判断原因,不建议盲目重试(可能重复写入气密明细)。result=true, data=UDresult=false 及对应 message| 内容 | 路径 |
|---|---|
| 接口实现 | src/main/java/com/jeesite/modules/mes/web/MesProductRecordController.java |
| 请求 DTO | src/main/java/com/jeesite/modules/mes/req/MesProductQmReq.java |
| 响应对象 | src/main/java/com/jeesite/modules/mes/resp/CommonResp.java |
| 错误码文案 | src/main/java/com/jeesite/modules/mes/utils/ErrorMsg.java |
| 匿名访问配置 | src/main/resources/config/application.yml |
| 本地测试示例 | api.http(约 318~349 行) |