【概述】
对接方式
1、第三方系统上传设备运行参数数据:先登陆,获取Token,再通过Token上传相应数据即可;
【签名与登陆】
对接说明
1、追溯系统提供WebAPI;
2、数据提交方式:Post;
3、数据格式:JSON;
4、数据传输格式:utf-8;
5、对接地址:现场配置,如:http://192.168.x.x:12345/api.ashx;
数据格式
1、post和返回格式相同;
字段 | 必填 | 说明 |
dateTime | 是 | 接口发生时间,格式:yyyy-MM-dd HH:mm:ss 如果提交的时间与服务器时间相差超过5分钟,返回失败 |
rndCode | 是 | 一个随机字符串,推荐使用GUID |
data | 是 | 报文正文,一个JSON,各函数另附说明 |
dataLng | 是 | 报文字符串长度,中文按1个长度计算,如果与data的长度不一致,返回失败 |
sign | 是 | 签名,一个md5结果大写字符串,参见签名说明 |
签名说明
sign=md5(dateTime.ToString("yyyy-MM-dd HH:mm:ss") "|" rndCode "|" sKey "|" dataLng)
1、md5的时候把字符串按GBK2312的方式编码后参与计算;
2、sKey:现场分配;
参考代码(c#):
/// <summary>
/// 返回sign
/// </summary>
/// <param name="dtime">流水时间</param>
/// <param name="dataLng">流水正文长度</param>
/// <param name="sKey">系统分配的sKey</param>
/// <returns></returns>
public static string GetMD5(DateTime dtime, int dataLng,string sKey)
{
//获取需要加密的字符串
string encypStr = dtime.ToString("yyyy-MM-dd HH:mm:ss") "|" Guid.NewGuid().ToString("N") "|" sKey "|" dataLng;
//返回加密后的内容
return System.BitConverter.ToString((new MD5CryptoServiceProvider()).ComputeHash(Encoding.GetEncoding("GB2312").GetBytes(encypStr))).ToUpper();
}
成功时返回报文正文说明
{... ... "OK":true, ... ... }
成功时报文正文里必有:OK:true
其它内容参见各函数说明;
示例:
{
"dateTime": "2021-01-01 00:00:00",
"rndCode": "df4a4949-dabb-4b15-9038-0409ebf047ae",
"dataLng": "???",
"sign": "xxxx",
"data": {
"OK": true
...... (有可能不存在其它参数)
}
}
失败时返回报文正文说明
{... ..."OK":false,"Message":"错误说明", ... ...}
失败时报文正文里必有:OK:false 及 Message;
Message里表示失败原因,如果有用户界面,该失败原因可直接向用户显示;
示例:
{
"dateTime": "2021-01-01 00:00:00",
"rndCode": "df4a4949-dabb-4b15-9038-0409ebf047ae",
"dataLng": "???",
"sign": "xxxx",
"data": {
"OK": false,
"Message": "???"
}
}
【函数说明】
【登陆】
传入参数
字段 | 必填 | 说明 |
menukey | 是 | login.webonekey |
username | 是 | 现场分配 |
nodecode | 是 | 现场分配 |
返回内容
字段 | 必填 | 说明 |
token | 是 | 一个字符串,小于或等于50字节,24小时内有效,作为其它函数的参数使用 |
rsUser | 是 | 登陆的操作员相关信息,不使用可忽略,如姓名 |
kehuid | 否 | 登陆的医院相关信息,不使用可忽略,如医院名称 |
rsKeshi | 否 | 登陆的科室相关信息,不使用可忽略,如科室名称 |
... | 其它还有一些可选信息,可忽略 |
示例:
{
"dateTime": "2021-01-01 00:00:00",
"rndCode": "df4a4949-dabb-4b15-9038-0409ebf047ae",
"dataLng": "???",
"sign": "xxxx",
"data": {
"menukey": "login.webonekey",
"username": "???",
"nodecode": "???"
}
}
实例:
{"data":"{\"menukey\":\"login.webonekey\",\"username\":\"621764\",\"nodecode\":\"741A2E10-5FF2-4C66-AE2F-00124887765D\"}","dateTime":"2021-09-02 16:10:49","rndCode":"31f5d485-71b1-44c3-ab29-9f376bcd62be","dataLng":99,"sign":"B380C2D9AD401A21989D406057218419"}
里面没有换行符,因显示的原因产生了换行
【业务函数】
根据自身业务情况,单笔上传和整批次上传选其一进行开发即可。如果客户要求实时显示设备运行数据(如温度曲线和压力曲线),则必须实时采用单笔上传。
【单笔上传】
传入参数
字段 | 必填 | 说明 |
menukey | 是 | liuchen.mjzsDevRecAdd |
gxtoken | 是 | 登陆时获取的token |
devNo | 是 | 设备编号,现场分配 |
runIndex | 是 | 总运行批次号 |
dayRunIndex | 是 | 当日运行批次号 |
progName | 是 | 运行程序 |
A0 | 否 | A0值 |
dateTime | 是 | 采集时间 |
isEnd | 是 | 是否结束:True已经是最后一笔/False未结束 |
jieDuanName | 否 | 运行阶段 |
wenDu | 是 | 温度,支持小数 |
yaLi | 否 | 压力,支持小数 |
wenDu2 | 否 | 温度,如腔外温度 |
wenDu3 | 否 | 温度,如多点监测的温度 |
wenDu4 | 否 | 温度,如多点监测的温度 |
yaLi2 | 否 | 压力 |
返回内容
字段 | 必填 | 说明 |
无必要字段 |
【整批次上传】
传入参数
字段 | 必填 | 说明 |
menukey | 是 | liuchen.mjzsDevRecAdds |
gxtoken | 是 | 登陆时获取的token |
devNo | 是 | 设备编号,现场分配 |
runIndex | 是 | 总运行批次号 |
dayRunIndex | 是 | 当日运行批次号 |
progName | 是 | 运行程序 |
A0 | 否 | A0值 |
beginDateTime | 是 | 开始时间 |
endDateTime | 是 | 结束时间 |
Recs | 是 | 运行数据列表 |
Recs列表内容:至少包括6条记录;
字段 | 必填 | 说明 |
jieDuanName | 否 | 运行阶段 |
wenDu | 是 | 温度,支持小数 |
yaLi | 否 | 压力,支持小数 |
wenDu2 | 否 | 温度,如腔外温度 |
wenDu3 | 否 | 温度,如多点监测的温度 |
wenDu4 | 否 | 温度,如多点监测的温度 |
yaLi2 | 否 | 压力 |
返回内容
字段 | 必填 | 说明 |
无必要字段 |