CNAS取数仪器端升级
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

336 рядки
12KB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Configuration;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Web.Script.Serialization;
  8. using CnasSynchronousCommon;
  9. using CnasSynchrousModel;
  10. namespace CnasSynchronusClient
  11. {
  12. public class MySQLCNASDataOperationByWeb : ICnasDataOperation
  13. {
  14. public SendDataOperation SendDataToWeb { get; set; }
  15. private readonly string URL=GlobalCommonOperation.strWebApiUrl;
  16. public bool CheckMacMessage(DataBaseInfo dataBase, string strMac)
  17. {
  18. bool bReturn = false;
  19. //组织数据
  20. SendDataToWeb = new SendDataOperation {
  21. Url = URL,
  22. Route = "/CnasSync/CheckMacMessage",
  23. SendMethod = "post",
  24. SendContent = new ComputeMessageParam {
  25. DbType=dataBase.DataBaseCode,
  26. MacMessage=strMac
  27. }
  28. };
  29. //发送数据并接收
  30. SendDataToWeb.SendData();
  31. //处理接收数据
  32. if (SendDataToWeb.IfSuccess)
  33. {
  34. JsonResult<bool> RequestData= new JavaScriptSerializer().Deserialize<JsonResult<bool>>(SendDataToWeb.RequestData);
  35. if (RequestData.code > 0)
  36. {
  37. bReturn = RequestData.data;
  38. }
  39. }
  40. return bReturn;
  41. }
  42. public DataTable GetAllCNASTablesName(DataBaseInfo dataBase)
  43. {
  44. DataTable dt = new DataTable();
  45. //组织数据
  46. SendDataToWeb = new SendDataOperation
  47. {
  48. Url = URL,
  49. Route = "/CnasSync/GetAllTableNameByServerName",
  50. SendMethod = "post",
  51. SendContent = new ApiBaseParam
  52. {
  53. DbType=dataBase.DataBaseCode
  54. }
  55. };
  56. //发送数据并接收
  57. SendDataToWeb.SendData();
  58. //处理接收数据
  59. if (SendDataToWeb.IfSuccess)
  60. {
  61. JsonResult<string> RequestData = new JavaScriptSerializer().Deserialize<JsonResult<string>>(SendDataToWeb.RequestData);
  62. if (RequestData.code > 0)
  63. {
  64. dt =TransConvert.XMLToDataTable(RequestData.data);
  65. }
  66. }
  67. return dt;
  68. }
  69. public DataTable GetCNASTablesStruct(string strTableName, DataBaseInfo dataBase)
  70. {
  71. DataTable dt = new DataTable();
  72. //组织数据
  73. SendDataToWeb = new SendDataOperation
  74. {
  75. Url = URL,
  76. Route = "/CnasSync/GetTableStructByTableName",
  77. SendMethod = "post",
  78. SendContent = new TableMessageParam
  79. {
  80. DbType = dataBase.DataBaseCode,
  81. Condition=new ConditionParams {
  82. TableName=strTableName
  83. }
  84. }
  85. };
  86. //发送数据并接收
  87. SendDataToWeb.SendData();
  88. //处理接收数据
  89. if (SendDataToWeb.IfSuccess)
  90. {
  91. JsonResult<string> RequestData = new JavaScriptSerializer().Deserialize<JsonResult<string>>(SendDataToWeb.RequestData);
  92. if (RequestData.code > 0)
  93. {
  94. dt = TransConvert.XMLToDataTable(RequestData.data);
  95. }
  96. }
  97. return dt;
  98. }
  99. public DataTable GetCNASTableTypeLenth(string strTableName, DataBaseInfo dataBase)
  100. {
  101. DataTable dt = new DataTable();
  102. //组织数据
  103. SendDataToWeb = new SendDataOperation
  104. {
  105. Url = URL,
  106. Route = "/CnasSync/GetCNASTableTypeLength",
  107. SendMethod = "post",
  108. SendContent = new TableMessageParam
  109. {
  110. DbType = dataBase.DataBaseCode,
  111. Condition = new ConditionParams
  112. {
  113. TableName = strTableName
  114. }
  115. }
  116. };
  117. //发送数据并接收
  118. SendDataToWeb.SendData();
  119. //处理接收数据
  120. if (SendDataToWeb.IfSuccess)
  121. {
  122. JsonResult<string> RequestData = new JavaScriptSerializer().Deserialize<JsonResult<string>>(SendDataToWeb.RequestData);
  123. if (RequestData.code > 0)
  124. {
  125. dt = TransConvert.XMLToDataTable(RequestData.data);
  126. }
  127. }
  128. return dt;
  129. }
  130. public string GetMaxTimeByTableName(DataBaseInfo dataBase, string strTableName, string strDateColumn, string strInstrumentColumn, string strInstrumentValue)
  131. {
  132. string strReturnValue = "";
  133. //组织数据
  134. SendDataToWeb = new SendDataOperation
  135. {
  136. Url = URL,
  137. Route = "/CnasSync/GetMaxTimeByTableName",
  138. SendMethod = "post",
  139. SendContent = new TableMessageParam
  140. {
  141. DbType = dataBase.DataBaseCode,
  142. Condition = new ConditionParams
  143. {
  144. TableName = strTableName,
  145. DateColumn=strDateColumn,
  146. ExColumnName=strInstrumentColumn,
  147. ExColumnValue=strInstrumentValue
  148. }
  149. }
  150. };
  151. //发送数据并接收
  152. SendDataToWeb.SendData();
  153. //处理接收数据
  154. if (SendDataToWeb.IfSuccess)
  155. {
  156. JsonResult<string> RequestData = new JavaScriptSerializer().Deserialize<JsonResult<string>>(SendDataToWeb.RequestData);
  157. if (RequestData.code > 0)
  158. {
  159. strReturnValue = RequestData.data;
  160. }
  161. }
  162. return strReturnValue;
  163. }
  164. public int InsertDataToCNASTable(DataTable dt, DataBaseInfo dataBase, List<SyncParamasInfo> syncParamasInfos, string strInstrumentColumn, List<CnasConditionMapValue> lstFixedValue = null)
  165. {
  166. int ReturnValue = 0;
  167. //获取发送数据
  168. if (dt.Rows.Count <= 0) return 0;
  169. if (syncParamasInfos.Count <= 0) return 0;
  170. //获取唯一健组(关键字段)
  171. var query = from p in syncParamasInfos
  172. where p.IfPrimaryKey == true
  173. select new
  174. {
  175. p.TargetField
  176. };
  177. List<string> lstKeyColumns = new List<string>();
  178. foreach (var item in query)
  179. {
  180. lstKeyColumns.Add(item.TargetField);
  181. }
  182. //构建SQL语句
  183. string strSql_part1 = "";
  184. string strSql_part2 = "";
  185. List<string> lstColumnName = new List<string>();
  186. foreach (var item in syncParamasInfos)
  187. {
  188. if (!lstColumnName.Contains(item.TargetField.ToLower()))
  189. {
  190. strSql_part1 += item.TargetField + ",";
  191. strSql_part2 += string.Format("@{0},", item.TargetField.ToLower());
  192. lstColumnName.Add(item.TargetField.ToLower());
  193. }
  194. }
  195. //如果映射列中不包含固定列,则需要将这些列添加到SQL语句中
  196. if (lstFixedValue != null)
  197. {
  198. foreach (var cnasfield in lstFixedValue)
  199. {
  200. if (cnasfield.TableName != syncParamasInfos[0].TargetTable) continue;
  201. if (!lstColumnName.Contains(cnasfield.ColumnName.ToLower()))
  202. {
  203. strSql_part1 += cnasfield.ColumnName + ",";
  204. strSql_part2 += string.Format("@{0},", cnasfield.ColumnName.ToLower());
  205. lstColumnName.Add(cnasfield.ColumnName.ToLower());
  206. }
  207. }
  208. }
  209. //增加仪器编号数据
  210. if (!string.IsNullOrWhiteSpace(strInstrumentColumn) && !lstColumnName.Contains(strInstrumentColumn.ToLower()))
  211. {
  212. strSql_part1 += strInstrumentColumn + ",";
  213. strSql_part2 += string.Format("@{0},", strInstrumentColumn);
  214. lstColumnName.Add(strInstrumentColumn.ToLower());
  215. }
  216. //组织发送数据
  217. SendDataToWeb = new SendDataOperation
  218. {
  219. Url = URL,
  220. Route = "/CnasSync/InsertDataToCNASTable",
  221. SendMethod = "post",
  222. SendContent = new InsertValueMessageParam
  223. {
  224. DbType = dataBase.DataBaseCode,
  225. Data = TransConvert.DataTableToXML(dt),
  226. TableName= syncParamasInfos[0].TargetTable,
  227. ColumnNames=lstColumnName,
  228. KeyColumnNames=lstKeyColumns
  229. }
  230. };
  231. //发送数据并接收
  232. SendDataToWeb.SendData();
  233. //处理接收数据
  234. if (SendDataToWeb.IfSuccess)
  235. {
  236. JsonResult<int> RequestData = new JavaScriptSerializer().Deserialize<JsonResult<int>>(SendDataToWeb.RequestData);
  237. if (RequestData.code > 0)
  238. {
  239. ReturnValue = RequestData.data;
  240. }
  241. }
  242. return ReturnValue;
  243. }
  244. public bool TestConnect(DataBaseInfo dataBase)
  245. {
  246. bool bReturn = false;
  247. //组织数据
  248. SendDataToWeb = new SendDataOperation
  249. {
  250. Url = URL,
  251. Route = "/CnasSync/CheckDatabaseLink",
  252. SendMethod = "post",
  253. SendContent = new ApiBaseParam {
  254. DbType=dataBase.DataBaseCode
  255. }
  256. };
  257. //发送数据并接收
  258. SendDataToWeb.SendData();
  259. //处理接收数据
  260. if (SendDataToWeb.IfSuccess)
  261. {
  262. JsonResult<bool> RequestData = new JavaScriptSerializer().Deserialize<JsonResult<bool>>(SendDataToWeb.RequestData);
  263. if (RequestData.code > 0)
  264. {
  265. bReturn = RequestData.data;
  266. }
  267. }
  268. return bReturn;
  269. }
  270. public DataTable GetLoginNameByPwd(DataBaseInfo dataBase, string strUserName, string strPwd)
  271. {
  272. DataTable dt=new DataTable();
  273. //组织数据
  274. SendDataToWeb = new SendDataOperation
  275. {
  276. Url = URL,
  277. Route = "/CnasSync/GetLoginMessage",
  278. SendMethod = "post",
  279. SendContent = new LoginMessageParam
  280. {
  281. DbType = dataBase.DataBaseCode,
  282. LoginName = strUserName,
  283. LoginPwd = strPwd
  284. }
  285. };
  286. //发送数据并接收
  287. SendDataToWeb.SendData();
  288. //处理接收数据
  289. if (SendDataToWeb.IfSuccess)
  290. {
  291. JsonResult<string> RequestData = new JavaScriptSerializer().Deserialize<JsonResult<string>>(SendDataToWeb.RequestData);
  292. if (RequestData.code > 0)
  293. {
  294. dt = TransConvert.XMLToDataTable(RequestData.data);
  295. }
  296. }
  297. return dt;
  298. }
  299. public DataTable GetTableData(DataBaseInfo dataBase, string strSql)
  300. {
  301. throw new NotImplementedException();
  302. }
  303. public bool InsertTableData(DataBaseInfo dataBase, string strSql)
  304. {
  305. throw new NotImplementedException();
  306. }
  307. }
  308. }