using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Text; using System.Web.Script.Serialization; using CnasSynchronousCommon; using CnasSynchrousModel; namespace CnasSynchronusClient { public class MySQLCNASDataOperationByWeb : ICnasDataOperation { public SendDataOperation SendDataToWeb { get; set; } private readonly string URL=GlobalCommonOperation.strWebApiUrl; public bool CheckMacMessage(DataBaseInfo dataBase, string strMac) { bool bReturn = false; //组织数据 SendDataToWeb = new SendDataOperation { Url = URL, Route = "/CnasSync/CheckMacMessage", SendMethod = "post", SendContent = new ComputeMessageParam { DbType=dataBase.DataBaseCode, MacMessage=strMac } }; //发送数据并接收 SendDataToWeb.SendData(); //处理接收数据 if (SendDataToWeb.IfSuccess) { JsonResult RequestData= new JavaScriptSerializer().Deserialize>(SendDataToWeb.RequestData); if (RequestData.code > 0) { bReturn = RequestData.data; } } return bReturn; } public DataTable GetAllCNASTablesName(DataBaseInfo dataBase) { DataTable dt = new DataTable(); //组织数据 SendDataToWeb = new SendDataOperation { Url = URL, Route = "/CnasSync/GetAllTableNameByServerName", SendMethod = "post", SendContent = new ApiBaseParam { DbType=dataBase.DataBaseCode } }; //发送数据并接收 SendDataToWeb.SendData(); //处理接收数据 if (SendDataToWeb.IfSuccess) { JsonResult RequestData = new JavaScriptSerializer().Deserialize>(SendDataToWeb.RequestData); if (RequestData.code > 0) { dt =TransConvert.XMLToDataTable(RequestData.data); } } return dt; } public DataTable GetCNASTablesStruct(string strTableName, DataBaseInfo dataBase) { DataTable dt = new DataTable(); //组织数据 SendDataToWeb = new SendDataOperation { Url = URL, Route = "/CnasSync/GetTableStructByTableName", SendMethod = "post", SendContent = new TableMessageParam { DbType = dataBase.DataBaseCode, Condition=new ConditionParams { TableName=strTableName } } }; //发送数据并接收 SendDataToWeb.SendData(); //处理接收数据 if (SendDataToWeb.IfSuccess) { JsonResult RequestData = new JavaScriptSerializer().Deserialize>(SendDataToWeb.RequestData); if (RequestData.code > 0) { dt = TransConvert.XMLToDataTable(RequestData.data); } } return dt; } public DataTable GetCNASTableTypeLenth(string strTableName, DataBaseInfo dataBase) { DataTable dt = new DataTable(); //组织数据 SendDataToWeb = new SendDataOperation { Url = URL, Route = "/CnasSync/GetCNASTableTypeLength", SendMethod = "post", SendContent = new TableMessageParam { DbType = dataBase.DataBaseCode, Condition = new ConditionParams { TableName = strTableName } } }; //发送数据并接收 SendDataToWeb.SendData(); //处理接收数据 if (SendDataToWeb.IfSuccess) { JsonResult RequestData = new JavaScriptSerializer().Deserialize>(SendDataToWeb.RequestData); if (RequestData.code > 0) { dt = TransConvert.XMLToDataTable(RequestData.data); } } return dt; } public string GetMaxTimeByTableName(DataBaseInfo dataBase, string strTableName, string strDateColumn, string strInstrumentColumn, string strInstrumentValue) { string strReturnValue = ""; //组织数据 SendDataToWeb = new SendDataOperation { Url = URL, Route = "/CnasSync/GetMaxTimeByTableName", SendMethod = "post", SendContent = new TableMessageParam { DbType = dataBase.DataBaseCode, Condition = new ConditionParams { TableName = strTableName, DateColumn=strDateColumn, ExColumnName=strInstrumentColumn, ExColumnValue=strInstrumentValue } } }; //发送数据并接收 SendDataToWeb.SendData(); //处理接收数据 if (SendDataToWeb.IfSuccess) { JsonResult RequestData = new JavaScriptSerializer().Deserialize>(SendDataToWeb.RequestData); if (RequestData.code > 0) { strReturnValue = RequestData.data; } } return strReturnValue; } public int InsertDataToCNASTable(DataTable dt, DataBaseInfo dataBase, List syncParamasInfos, string strInstrumentColumn, List lstFixedValue = null) { int ReturnValue = 0; //获取发送数据 if (dt.Rows.Count <= 0) return 0; if (syncParamasInfos.Count <= 0) return 0; //获取唯一健组(关键字段) var query = from p in syncParamasInfos where p.IfPrimaryKey == true select new { p.TargetField }; List lstKeyColumns = new List(); foreach (var item in query) { lstKeyColumns.Add(item.TargetField); } //构建SQL语句 string strSql_part1 = ""; string strSql_part2 = ""; List lstColumnName = new List(); foreach (var item in syncParamasInfos) { if (!lstColumnName.Contains(item.TargetField.ToLower())) { strSql_part1 += item.TargetField + ","; strSql_part2 += string.Format("@{0},", item.TargetField.ToLower()); lstColumnName.Add(item.TargetField.ToLower()); } } //如果映射列中不包含固定列,则需要将这些列添加到SQL语句中 if (lstFixedValue != null) { foreach (var cnasfield in lstFixedValue) { if (cnasfield.TableName != syncParamasInfos[0].TargetTable) continue; if (!lstColumnName.Contains(cnasfield.ColumnName.ToLower())) { strSql_part1 += cnasfield.ColumnName + ","; strSql_part2 += string.Format("@{0},", cnasfield.ColumnName.ToLower()); lstColumnName.Add(cnasfield.ColumnName.ToLower()); } } } //增加仪器编号数据 if (!string.IsNullOrWhiteSpace(strInstrumentColumn) && !lstColumnName.Contains(strInstrumentColumn.ToLower())) { strSql_part1 += strInstrumentColumn + ","; strSql_part2 += string.Format("@{0},", strInstrumentColumn); lstColumnName.Add(strInstrumentColumn.ToLower()); } //组织发送数据 SendDataToWeb = new SendDataOperation { Url = URL, Route = "/CnasSync/InsertDataToCNASTable", SendMethod = "post", SendContent = new InsertValueMessageParam { DbType = dataBase.DataBaseCode, Data = TransConvert.DataTableToXML(dt), TableName= syncParamasInfos[0].TargetTable, ColumnNames=lstColumnName, KeyColumnNames=lstKeyColumns } }; //发送数据并接收 SendDataToWeb.SendData(); //处理接收数据 if (SendDataToWeb.IfSuccess) { JsonResult RequestData = new JavaScriptSerializer().Deserialize>(SendDataToWeb.RequestData); if (RequestData.code > 0) { ReturnValue = RequestData.data; } } return ReturnValue; } public bool TestConnect(DataBaseInfo dataBase) { bool bReturn = false; //组织数据 SendDataToWeb = new SendDataOperation { Url = URL, Route = "/CnasSync/CheckDatabaseLink", SendMethod = "post", SendContent = new ApiBaseParam { DbType=dataBase.DataBaseCode } }; //发送数据并接收 SendDataToWeb.SendData(); //处理接收数据 if (SendDataToWeb.IfSuccess) { JsonResult RequestData = new JavaScriptSerializer().Deserialize>(SendDataToWeb.RequestData); if (RequestData.code > 0) { bReturn = RequestData.data; } } return bReturn; } public DataTable GetLoginNameByPwd(DataBaseInfo dataBase, string strUserName, string strPwd) { DataTable dt=new DataTable(); //组织数据 SendDataToWeb = new SendDataOperation { Url = URL, Route = "/CnasSync/GetLoginMessage", SendMethod = "post", SendContent = new LoginMessageParam { DbType = dataBase.DataBaseCode, LoginName = strUserName, LoginPwd = strPwd } }; //发送数据并接收 SendDataToWeb.SendData(); //处理接收数据 if (SendDataToWeb.IfSuccess) { JsonResult RequestData = new JavaScriptSerializer().Deserialize>(SendDataToWeb.RequestData); if (RequestData.code > 0) { dt = TransConvert.XMLToDataTable(RequestData.data); } } return dt; } public DataTable GetTableData(DataBaseInfo dataBase, string strSql) { throw new NotImplementedException(); } public bool InsertTableData(DataBaseInfo dataBase, string strSql) { throw new NotImplementedException(); } } }