/// <summary> 获取上传协议 /// </summary> /// <param name="dr">数据行</param> /// <param name="dbName">帐套</param> /// <returns></returns> private static AnnounceProtocol GetProtocol(DataRow dr, string dbName) { AnnounceProtocol protocol = new AnnounceProtocol(); protocol.StationId = GlobalStaticObj_Server.Instance.StationID; //根据表名得到子消息ID protocol.SubMessageId = SubMessageId; protocol.TimeSpan = TimeHelper.GetTimeInMillis(); //Json对象 string json = JsonHelper.DataTableToJson(dr, protocol.StationId, dbName, true); json = BaseCodeHelper.EnCode(json); protocol.Json = json; return(protocol); }
/// <summary> 操作数据 /// </summary> /// <param name="dt">数据表</param> /// <param name="operation">操作类别</param> /// <param name="dbName">帐套</param> private static void Operation(DataTable dt, string operation, string dbName) { if (dt == null) { return; } foreach (DataRow dr in dt.Rows) { AnnounceProtocol protocol = GetProtocol(dr, dbName); if (protocol != null) { protocol.Operation = operation; ServiceAgent.AddSendQueue(protocol); } } }
/// <summary> 获取上传协议 /// </summary> /// <param name="dt">数据表</param> /// <param name="dbName">帐套</param> /// <returns></returns> private static List <AnnounceProtocol> GetUploadDataProtocol(DataTable dt, string dbName) { List <AnnounceProtocol> protocols = new List <AnnounceProtocol>(); if (dt != null) { AnnounceProtocol protocol = null; foreach (DataRow dr in dt.Rows) { protocol = GetProtocol(dr, dbName); if (protocol != null) { protocols.Add(protocol); } } } return(protocols); }
/// <summary> 处理收到的公告信息 /// </summary> /// <param name="protocol"></param> public static void Deal(AnnounceProtocol protocol) { //保存至数据库,并返回成功/失败信息 ThreadPool.QueueUserWorkItem(new WaitCallback(SaveData), protocol); }
/// <summary> 接收保存数据 /// </summary> /// <param name="state"></param> /// <returns></returns> private static void SaveData(object state) { if (state is AnnounceProtocol) { AnnounceProtocol protocol = state as AnnounceProtocol; DataTable dt = JsonHelper.JsonToDataTable(protocol.Json, TableName, true); if (dt == null || dt.Rows.Count == 0) { return; } bool result = false; string id = "announcement_id"; Dictionary <string, string> dicFileds = new Dictionary <string, string>(); foreach (DataColumn dc in dt.Columns) { if (dc.ColumnName != id) { dicFileds.Add(dc.ColumnName, dt.Rows[0][dc.ColumnName].ToString()); } } if (protocol.Operation.Equals(DataSources.EnumOperationType.Add.ToString("d"))) { if (dt.Columns.Contains(id)) { dicFileds.Add(id, dt.Rows[0][id].ToString()); } foreach (string db in AutoTask.GetDatabaseList()) { //添加数据 result = DBHelper.Submit_AddOrEdit("添加云平台公告信息", db, dt.TableName, "", "", dicFileds); } } else if (protocol.Operation.Equals(DataSources.EnumOperationType.Update.ToString("d"))) { if (dt.Columns.Contains(id)) { foreach (string db in AutoTask.GetDatabaseList()) { //修改数据 result = DBHelper.Submit_AddOrEdit("修改云平台公告信息", db, dt.TableName, id, dt.Rows[0][id].ToString(), dicFileds); } } } ResultProtocol rp = new ResultProtocol(); rp.StationId = protocol.StationId; rp.SerialNumber = protocol.SerialNumber; rp.MessageId = protocol.MessageId; rp.SubMessageId = protocol.SubMessageId; rp.TimeSpan = protocol.TimeSpan; rp.SerialNumberLock = true; if (result) { rp.Result = DataSources.EnumResultType.Success.ToString("d"); } else { rp.Result = DataSources.EnumResultType.Fail.ToString("d"); } ServiceAgent.AddSendQueue(rp); } }