using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MainForm.ClassFile.XiaomiAPI_MES { /// /// 小米MES - 出站接⼝ /// 接口地址: /// 接口方法:UnitConfirmDataSetOut /// public class XiaomiMESHttp_StationOutbound : XiaomiMESHttp_X5 { #region 变量 /// /// 接口地址 /// protected new static string MESUrl { set; get; } = GlobalContext.StationOutMESUrl; /// /// 接口方法 /// protected new static string Method { set; get; } = "UnitConfirmDataSetOut"; #endregion 变量 /// /// 小米MES - 出站 /// /// /// public static XmMES_StationOutResponse StationOut(XmMES_StationOutRequest_Body body) { XmMES_StationOutResponse stationOutResponse = new XmMES_StationOutResponse(); string bodyJson = JsonConvert.SerializeObject(body); XiaomiMES_X5RequestHeader header = new XiaomiMES_X5RequestHeader(); header.AppId = Appid; // 系统分配的应⽤ID header.Method = Method; // API接⼝名称 header.Sign = GetSign_Up(Appid, bodyJson, Appkey); // md5签名 header.Url = MESUrl; // 接⼝地址 XmMES_StationOutRequest request = new XmMES_StationOutRequest(); request.header = header; request.body = body; string data = JsonConvert.SerializeObject(request); XiaomiMES_X5Response response = Post(MESUrl, data); // ZS保存日志 stationOutResponse.header = response.header; string responseBody = response.body; stationOutResponse.body = JsonConvert.DeserializeObject(responseBody); return stationOutResponse; } #region 入参 /// /// 出站接⼝ - 入参 /// public class XmMES_StationOutRequest { /// /// 出站接⼝ - 入参 - header /// public XiaomiMES_X5RequestHeader header { get; set; } = new XiaomiMES_X5RequestHeader(); /// /// 出站接⼝ - 入参 - body /// public XmMES_StationOutRequest_Body body { get; set; } = new XmMES_StationOutRequest_Body(); } /// /// 出站接⼝ - 入参 - Body 实体 /// public class XmMES_StationOutRequest_Body { /// /// 装备id(可配置) /// public string machineId { get; set; } = string.Empty; /// /// ⼯位ID(可配置) /// public string stationId { get; set; } = string.Empty; /// /// 客⼾端本机MAC地址,格式:XX-XX-XX-XX-XX-XX /// public string clientMac { get; set; } = string.Empty; /// /// 客⼾端请求时间,格式yyyy-MM-dd HH:mm:ss.fff /// public string clientTime { get; set; } = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); /// /// 产品SN /// public string unitSn { get; set; } = string.Empty; /// /// 过站明细唯⼀标识UUID(每次调⽤OUT⽣成⼀个全新得uuid进⾏赋值,使⽤UUID函数直接⽣成即可) /// public string uuidInspection { get; set; } = Guid.NewGuid().ToString(); /// /// 过站条件 /// PASS或FAIL /// public string state { get; set; } = string.Empty; /// /// ⽤⼾ID;非必填 /// 如果接⼊了MES⽤⼾才需要传⼊ /// public string userId { get; set; } = string.Empty; /// /// ⼯⼚id;非必填 /// public string factoryId { get; set; } = string.Empty; /// /// 设备数据 /// public XmStationOut_UnitData unitData { get; set; } = new XmStationOut_UnitData(); /// /// 出站接⼝ - 入参 - 设备数据 /// public class XmStationOut_UnitData { /// /// 检测项数据;如果没有则不传 /// public List inspectionItemData { get; set; } = new List(); /// /// 不良点位检测数据;如果没有则不传 /// public List inspectionPointData { get; set; } = new List(); /// /// 制程⼯艺参数;如果没有则不传 /// public List processData { get; set; } = new List(); /// /// 关键参数;如果没有则不传 /// public List keyParams { get; set; } = new List(); /// /// 载具信息;如果没有则不传 /// public List vehicleData { get; set; } = new List(); /// /// ⽂件信息;如果没有则不传 /// public List fileData { get; set; } = new List(); /// /// 辅耗材消耗信息;如果没有则不传 /// public List consumableData { get; set; } = new List(); /// /// 关键部件绑定sn信息;如果没有则不传 /// public List keyMaterial { get; set; } = new List(); } /// /// 出站接⼝ - 入参 - 设备数据 - 检测项数据 /// public class XmStationOut_InspectionItemData { /// /// ⼦条码SN /// public string childUnitSn { get; set; } = string.Empty; /// /// 检测结果 /// PASS/FAIL /// public string childUnitState { get; set; } = string.Empty; /// /// ⼯具版本号 /// public string toolVersion { get; set; } = string.Empty; /// /// 检测明细数据 /// public List dataItem { get; set; } = new List(); } /// /// 出站接⼝ - 入参 - 设备数据 - 检测项数据 - 检测明细数据 /// public class XmStationOut_DataItem { /// /// 测试项名称 /// public string functionName { get; set; } = string.Empty; /// /// 数据描述 /// public string testItem { get; set; } = string.Empty; /// /// 数值 /// public string value { get; set; } = string.Empty; /// /// 最⼤值;非必填 /// public string hiLimit { get; set; } = string.Empty; /// /// 最⼩值;非必填 /// public string lowLimit { get; set; } = string.Empty; /// /// 测试时间,单位s /// public string testTime { get; set; } = string.Empty; /// /// 错误代码(参考ErrorCode定义标准化表);非必填 /// public string errorCode { get; set; } = string.Empty; /// /// 项⽬的检验结果 /// PASS/FAIL /// public string status { get; set; } = string.Empty; /// /// 描述信息 /// public string description { get; set; } = string.Empty; } /// /// 出站接⼝ - 入参 - 设备数据 - 不良点位检测数据 /// public class XmStationOut_InspectionPointData { /// /// 检验数据项⽬名称 /// public string no { get; set; } = string.Empty; /// /// 检测结果 /// public string result { get; set; } = string.Empty; /// /// ⼩板号 /// public string panelNo { get; set; } = string.Empty; /// /// 不良code;非必填 /// public string defectCode { get; set; } = string.Empty; /// /// 不良描述;非必填 /// public string defectDesc { get; set; } = string.Empty; /// /// 不良位置 /// public string location { get; set; } = string.Empty; } /// /// 出站接⼝ - 入参 - 设备数据 - 制程⼯艺参数 /// public class XmStationOut_ProcessData { /// /// 数据名字 /// public string dataName { get; set; } = string.Empty; /// /// 数据值;非必填 /// public string dataValue { get; set; } = string.Empty; } /// /// 出站接⼝ - 入参 - 设备数据 - 关键参数 /// public class XmStationOut_KeyParam { /// /// 关键参数code /// public string paramCode { get; set; } = string.Empty; /// /// 关键参数值 /// public string paramValue { get; set; } = string.Empty; } /// /// 出站接⼝ - 入参 - 设备数据 - 载具信息 /// public class XmStationOut_VehicleData { /// /// 载具sn /// public string vehicleSn { get; set; } = string.Empty; /// /// 载具类型 /// public string vehicleType { get; set; } = string.Empty; /// /// 槽位 /// public string slot { get; set; } = string.Empty; } /// /// 出站接⼝ - 入参 - 设备数据 - 文件信息 /// public class XmStationOut_FileData { /// /// ⽂件名称 /// public string fileName { get; set; } = string.Empty; /// /// ⽂件在⽂件服务器对应的uuid,可以采⽤异步上传,⾃定义uuid,先上传out,然后再异步上传⽂件,提升过站效率 /// public string fileId { get; set; } = string.Empty; /// /// ⽂件服务器bucket /// public string bucket { get; set; } = string.Empty; } /// /// 出站接⼝ - 入参 - 设备数据 - 辅耗材消耗信息 /// public class XmStationOut_ConsumableData { /// /// 辅耗材sn /// public string consumableSn { get; set; } = string.Empty; /// /// 消耗数量 /// public string useQty { get; set; } = string.Empty; /// /// 辅耗材使⽤位置;非必填 /// public string componentLocation { get; set; } = string.Empty; } /// /// 出站接⼝ - 入参 - 设备数据 - 关键部件绑定sn信息 /// public class XmStationOut_KeyMaterial { /// /// 绑定顺序 1,2,3,... /// public int bindSort { get; set; } /// /// 绑定部件的SN /// public string materialSn { get; set; } = string.Empty; } } #endregion 入参 #region 出参 /// /// 出站接⼝ - 出参 /// public class XmMES_StationOutResponse { /// /// 出站接⼝ - 出参 - header /// public XiaomiMES_X5ResponseHeader header { get; set; } = new XiaomiMES_X5ResponseHeader(); /// /// 出站接⼝ - 出参 - body /// public XmMESStationOut_Body body { get; set; } = new XmMESStationOut_Body(); } /// /// 出站接⼝ - 出参 - Body 实体 /// public class XmMESStationOut_Body { /// /// 服务器响应时间,格式yyyy-MM-dd HH:mm:ss.fff /// public string serverTime { get; set; } = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); /// /// 回溯结果: /// PASS 成功,可以下⼀站;FAIL 失败,需要进维修室*(需要回溯的⼯站专⽤,其它⼯站可以忽略该字段) /// public string lookBackResult { get; set; } = string.Empty; ///// ///// ///// //public string requestTime { get; set; } = string.Empty; ///// ///// ///// //public string processTime { get; set; } = string.Empty; } #endregion 出参 } }