目的
本文档指导第三方系统对接追溯系统,实现目标:
向追溯系统增加一次性物品模板信息;
向追溯系统入库一次性物品;
对接说明
追溯系统提供WebAPI;
数据提交方式:Post;
数据格式:JSON;
数据传输格式:utf-8;
对接地址:现场配置,如: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)
md5的时候把字符串按GBK2312的方式编码后参与计算;
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"}
里面没有换行符,因显示的原因产生了换行
【增加供应商或厂家】
传入参数
字段 | 必填 | 说明 |
id | 是 | 一个GUID,全局唯一标识符 |
pagekey | 是* | 267 |
menukey | 是* | pubgrid.add |
isDel | 是* | 0 |
gxtoken | 是 | 登陆时获取的token |
viewUrl | 是* | "" |
iconUrl | 是* | "" |
isStop | 是* | 0 |
idInt | 是 | 一个不重复的整数,大于:100000000,必须9位数 |
kehuID | 是 | 现场分配 |
parentId | 是 | 现场分配 |
parentIdName | 是 | 现场分配 |
fullName | 是 | "" |
keshiType | 是* | 00000000-0000-0000-0000-000000000000 |
keshiTypeName | 是* | "" |
jieshuanKeshi | 是* | 00000000-0000-0000-0000-000000000000 |
jieshuanKeshi | 是* | "" |
Tel | 是* | "" |
orderNum | 是 | 排序号,一个整数,0--100000000,允许重复 |
isGongyinshang | 是 | 是供应商: true 否则:false |
isChangjia | 是 | 是厂家: true 否则:false |
isCSSD | 是* | 0 |
isWailaibaoGongShi | 是* | 0 |
isFenYuan | 是* | 0 |
isWJKuFang | 是* | 0 |
isYCXKuFang | 是* | 0 |
isHCKuFang | 是* | 0 |
isJieshuanKeshi | 是* | 0 |
isDaixiaoYiYuan | 是* | 0 |
isShousuKeshi | 是* | 0 |
canHuiShouOrFaFang | 是* | 0 |
memo | 是 | 备注 |
name | 是 | 供应商名称 |
nameJM | 是 | 拼音简码,如:名称为手套,简码建议为ST |
标*字段直接填写常量。
返回内容
字段 | 必填 | 说明 |
会返回当前增加数据的json |
示例:
{
"pagekey":"267",
"menukey":"pubgrid.add",
"iconUrl":"",
"isDel":"0",
"viewUrl":"",
"isStop":"0",
"idInt":"331",
"kehuID":"2",
"name":"test",
"parentId":"faa2e53b-9a28-440a-a7cf-8a1e5cebd66e",
"parentIdName":"xxx",
"fullName":"",
"id":"608ac1b7-b051-4e3e-905c-40bd75a0e410",
"keshiType":"00000000-0000-0000-0000-000000000000",
"nameJM":"TEST",
"keshiTypeName":"",
"jieshuanKeshiName":"",
"jieshuanKeshi":"00000000-0000-0000-0000-000000000000",
"tel":"",
"orderNum":"0",
"isGongyinshang":"false",
"isChangjia":"true",
"isCSSD":"0",
"isWailaibaoGongShi":"0",
"isFenYuan":"0",
"isWJKuFang":"0",
"isYCXKuFang":"0",
"isHCKuFang":"0",
"isJieshuanKeshi":"0",
"isDaixiaoYiYuan":"0",
"isShousuKeshi":"0",
"canHuiShouOrFaFang":"0",
"memo":"",
"gxtoken":"37f05265-22ba-40c8-aecb-0cfda5eff254"
}
【增加一次性物品模板】
传入参数
字段 | 必填 | 说明 |
id | 是 | 一个GUID,全局唯一标识符 |
pagekey | 是* | 265 |
menukey | 是* | pubgrid.add |
gxtoken | 是 | 登陆时获取的token |
name | 是 | 物品名称 |
nameJM | 是 | 拼音简码,如:名称为手套,简码建议为ST |
codeText | 是 | 条码号 |
guige | 是 | 规格 |
defChangjia | 是 | 厂家ID |
defChangjiaName | 是 | 厂家名称 |
defGongyinshang | 是 | 供应商ID |
defGongyinshangName | 是 | 供应商名称 |
minDanwei | 是 | 最小单位,如 只 ,直接用中文名称即可 |
minDanweiName | 是 | 同 minDanwei |
inDanwei | 是 | 入库默认单位,如 件 ,直接用中文名称即可 |
inDanweiBeilv | 是 | 入库默认单位与最小单位的倍率,1--1000000 |
inGongzhuoliang | 是 | 入库工作量,没有可以填写0 |
outDanwei | 是 | 出库默认单位,如 包 ,直接用中文名称即可 |
outDanweiBeilv | 是 | 出库默认单位与最小单位的倍率,1--1000000 |
outGongzhuoliang | 是 | 出库工作量,没有可以填写0 |
inMoney | 是 | 入库单价(按最小单位) |
outMoney | 是 | 出库单价(按最小单位) |
jinjieOne | 是 | 第一警介线,达到后会提醒补货(按最小单位) |
jinjieTwo | 是 | 第二警介线,达到后会强烈提醒补货(按最小单位) |
kehuID | 是 | 现场分配 |
keshiID | 是 | 现场分配 |
keshiName | 是 | 现场分配 |
maxKucun | 是 | 最大库存警介,超过后会提醒 |
nowYue | 是* | 0 |
sysTypeID | 是* | 2 |
userTypeName | 是 | 用户类型,未分类填写“默认” |
youxiaoqiDay | 是 | 有效期天数,如一年即:365 |
isStop | 是* | 0 |
isDel | 是* | 0 |
ImgSmallID | 是* | "" |
ImgIconID | 是* | "" |
ImgDefID | 是* | "" |
ImgMores | 是* | "" |
标*字段直接填写常量。
返回内容
字段 | 必填 | 说明 |
会返回当前增加数据的json |
示例:
{
"pagekey":"265",
"menukey":"pubgrid.add",
"ImgMores":"",
"id":"029a04ac-1d4a-4d34-afbe-7776a00c5166",
"name":"test",
"nameJM":"TEST",
"codeText":"t",
"guige":"1",
"defChangjia":"608ac1b7-b051-4e3e-905c-40bd75a0e410",
"defChangjiaName":"test",
"defGongyinshang":"436dc24a-2c89-4882-8e15-42ad28e69679",
"defGongyinshangName":"aa",
"minDanwei":"只",
"minDanweiName":"只",
"inGongzhuoliang":"0",
"inDanwei":"件",
"inDanweiName":"件",
"inDanweiBeilv":"10",
"outDanwei":"件",
"outDanweiName":"件",
"outDanweiBeilv":"10",
"outGongzhuoliang":"0",
"inMoney":"1",
"outMoney":"1",
"jinjieOne":"0",
"jinjieTwo":"0",
"kehuID":"2",
"keshiID":"1743043f-b1bc-4a75-be5d-a58fb2c328a8",
"keshiName":"消毒供应中心",
"maxKucun":"0",
"nowYue":"0",
"sysTypeID":"2",
"userTypeName":"默认",
"userTypeNameName":"默认",
"youxiaoqiDay":"365",
"isStop":"0",
"isDel":"0",
"ImgSmallID":"",
"ImgIconID":"",
"ImgDefID":"",
"gxtoken":"37f05265-22ba-40c8-aecb-0cfda5eff254"
}
【入库】
单据信息,传入参数
字段 | 必填 | 备注 |
id | 是 | 一个GUID,全局唯一标识符 |
pagekey | 是* | 286 |
menukey | 是* | pubgrid.add |
isDel | 是* | 0 |
gxtoken | 是 | 登陆时获取的token |
OutAccept | 是 | 常量"" |
OutType | 是 | 常量"" |
addDatetime | 是 | 当前时间 |
gongyinshang | 是 | 供应商id |
gongyinshangName | 是 | 供应商名 |
keshi | 是 | 开入库单的人员所在科室 |
keshiName | 是 | 开入库单的人员所在科室 |
memo | 是 | 备注,可为空字符 |
nodeName | 是 | 站点名,可自定义生成 |
sumGongzhuoliang | 是 | 合计工作量,默认0 |
sumMoney | 是 | 合计金额,默认0 |
sysTypeID | 是* | 常量,直接传2 |
typeName | 是* | 常量,直接传 入库 |
userID | 是 | 操作员id, 类型guid,登陆接口有返回 |
userIDNam | 是 | 操作员姓名 |
ImgSmallID | 是* | 常量"" |
ImgIconID | 是* | 常量"" |
ImgDefID | 是* | 常量"" |
ImgMores | 是* | 常量"" |
标*字段直接填写常量。
返回内容
字段 | 必填 | 说明 |
无必要字段 |
{
"pagekey":"286",
"menukey":"pubgrid.add",
"ImgMores":"",
"gongyinshang":"436dc24a-2c89-4882-8e15-42ad28e69679",
"gongyinshangName":"aa",
"sysTypeID":"2",
"id":"6270a234-2dca-4871-846e-281d77472698",
"isDel":"0",
"kehuID":"2",
"keshi":"1743043f-b1bc-4a75-be5d-a58fb2c328a8",
"nodeName":"",
"typeName":"入库",
"userID":"f8818f13-007a-47ed-bbc0-503900783722",
"addDatetime":"2022-07-20 10:56:36",
"userIDName":"测试员",
"keshiName":"消毒供应中心",
"sumGongzhuoliang":"0",
"sumMoney":"10",
"memo":"",
"ImgIconID":"",
"ImgDefID":"",
"ImgSmallID":"",
"gxtoken":"37f05265-22ba-40c8-aecb-0cfda5eff254"
}
单据明细,传入参数,多条明细需多次调用接口
字段 | 必填 | 备注 |
id | 是 | 一个GUID,全局唯一标识符 |
pagekey | 是* | 286_ycxwp |
menukey | 是* | pubgrid.add |
isDel | 是* | 0 |
gxtoken | 是 | 登陆时获取的token |
typeName | 是* | 常量,直接传 入库 |
shixiaodate | 是 | 失效日期 格式2022-07-11 |
shencandate | 是 | 生产日期 格式2022-07-11 |
pics | 是* | 常量"" |
pichihao | 是 | 批次号 |
outGongzhuoliang | 是* | 常量,直接填0 |
outDanjia | 是 | 单价 |
oldNumber | 是 | 入库数量 |
Number | 是 | 当前余量,等于入库数量 |
Amount | 是 | 金额 |
linkInId | 是* | 常量00000000-0000-0000-0000-000000000000 |
isDel | 是* | 常量 0 |
haocaiID | 是 | 物品模板id |
haocaiIDName | 是 | 物品模板名 |
gongzhuoliang | 是 | 工作量 |
gongyinshangName | 是 | 供应商名 |
changjiaName | 是 | 厂家名 |
danwei | 是 | 单位 |
danjuID | 是 | 单据id |
danjia | 是 | 单价 |
标*字段直接填写常量。
返回内容
字段 | 必填 | 说明 |
无必要字段 |
示例:
{
"pagekey":"286_ycxwp",
"menukey":"pubgrid.add",
"ImgMores":"",
"isDel":"0",
"pics":"",
"outDanjia":"1",
"haocaiID":"029a04ac-1d4a-4d34-afbe-7776a00c5166",
"haocaiIDName":"test",
"outGongzhuoliang":"0",
"gongyinshangName":"aa",
"changjiaName":"test",
"linkInId":"00000000-0000-0000-0000-000000000000",
"danwei":"只",
"danjia":"1",
"oldNumber":"10",
"gongzhuoliang":"0",
"Number":"10",
"pichihao":"12",
"shencandate":"2022-07-20",
"shixiaodate":"2023-07-20",
"danjuID":"6270a234-2dca-4871-846e-281d77472698",
"id":"3942dc18-713e-4c1e-b79d-0d00cdd47e09",
"typeName":"入库",
"gxtoken":"37f05265-22ba-40c8-aecb-0cfda5eff254"
}