SqlCoreAcc.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. using Cksoft.Data;
  2. using Cksoft.Data.Repository;
  3. using Cksoft.Unity;
  4. using DllHsms;
  5. using System;
  6. using System.Data;
  7. using System.Data.SqlClient;
  8. using System.Text;
  9. namespace DllSqlCoreAcc
  10. {
  11. public class SqlCoreAcc
  12. {
  13. public static string CurrDbCode = "BusinessDb";
  14. public static string CurrMySqlCode = "Eap";
  15. //判断事件是否与最后事件相同,返回值为该机台最后事件记录ID值
  16. public static int JudgeEventSame(SqlCommand scmd, DataSet ds, ref string errorinfo)
  17. {
  18. try
  19. {
  20. //说明不是事件,直接返回
  21. if (!ds.Tables.Contains("oab"))
  22. return 0;
  23. DataRow mainrow = ds.Tables["McaSecVMst"].Rows[0];
  24. string mcacode = mainrow["McaCode"].ToString();
  25. StringBuilder sqlstr = new StringBuilder(100);
  26. sqlstr.AppendFormat("select a.id,a.eventcode from mcasecvmst as a where a.id = (select MAX(id) from mcasecvmst where mcacode = '{0}')", mcacode);
  27. scmd.CommandText = sqlstr.ToString();
  28. SqlDataAdapter sda = new SqlDataAdapter(scmd);
  29. DataSet reds = new DataSet();
  30. sda.Fill(reds, "mcasecvmst");
  31. if (reds.Tables[0].Rows.Count <= 0)
  32. return 0;
  33. string eventcode = reds.Tables[0].Rows[0]["eventcode"].ToString();
  34. if (eventcode != mainrow["eventcode"].ToString())
  35. return 0;
  36. int preid = int.Parse(reds.Tables[0].Rows[0]["id"].ToString());
  37. //读取事件明细
  38. sqlstr.Clear();
  39. sqlstr.AppendFormat("select fcode,fval from McaSecVDetail where preid={0} order by fcode", preid);
  40. scmd.CommandText = sqlstr.ToString();
  41. sda.Fill(reds, "McaSecVDetail");
  42. DataRow[] orgrows = ds.Tables["oab"].Select("", "参数代码");
  43. if (orgrows.Length != reds.Tables[0].Rows.Count)
  44. return 0;
  45. for (int i = 0; i < orgrows.Length; i++)
  46. {
  47. if (orgrows[i]["参数代码"].ToString() != reds.Tables[0].Rows[i]["fcode"].ToString())
  48. return 0;
  49. if (orgrows[i]["数据内容"].ToString() != reds.Tables[0].Rows[i]["fval"].ToString())
  50. return 0;
  51. }
  52. return preid;
  53. }
  54. catch (Exception ex)
  55. {
  56. errorinfo = ex.Message.ToString();
  57. return -1;
  58. }
  59. }
  60. /// <summary>
  61. /// 读取所有机台最后一次事件
  62. /// </summary>
  63. /// <param name="ds"></param>
  64. /// <param name="errorinfo"></param>
  65. /// <returns></returns>
  66. public DataSet ReadLastMcaSecVMst(ref string errorinfo)
  67. {
  68. SqlConnection dbconn = null;
  69. try
  70. {
  71. string connstr = AppConfigurtaionServices.Configuration[$"{CurrDbCode}:ConnectionStrings"];
  72. dbconn = new SqlConnection(connstr);
  73. dbconn.Open();
  74. StringBuilder sqlstr = new StringBuilder(100);
  75. SqlTransaction mytrans = dbconn.BeginTransaction();
  76. SqlCommand scmd = dbconn.CreateCommand();
  77. scmd.Transaction = mytrans;
  78. sqlstr.AppendFormat("select a.ID,a.McaCode,a.ptime,a.pMill,a.etime,a.eMill,a.FType,a.FStatus,a.EventCode,a.FCount,a.EventID,1 islast");
  79. sqlstr.AppendFormat(" from McaSecVMst a");
  80. sqlstr.AppendFormat(" inner");
  81. sqlstr.AppendFormat(" join");
  82. sqlstr.AppendFormat(" (SELECT McaCode");
  83. sqlstr.AppendFormat(" , max(ptime)maxtime");
  84. sqlstr.AppendFormat(" FROM McaSecVMst");
  85. sqlstr.AppendFormat(" group by McaCode) b on a.McaCode = b.McaCode and a.ptime = b.maxtime");
  86. scmd.CommandText = sqlstr.ToString();
  87. SqlDataAdapter sda = new SqlDataAdapter(scmd);
  88. DataSet reds = new DataSet();
  89. sda.Fill(reds, "McaSecVMst");
  90. sqlstr.Clear();
  91. sqlstr.AppendFormat("SELECT TOP 0 a.ID,a.PreID,a.FCode,a.FVal,a.fnum FROM McaSecVDetail a");
  92. sqlstr.AppendFormat(" inner join(select a.ID");
  93. sqlstr.AppendFormat(" from McaSecVMst a");
  94. sqlstr.AppendFormat(" inner");
  95. sqlstr.AppendFormat(" join");
  96. sqlstr.AppendFormat(" (SELECT McaCode");
  97. sqlstr.AppendFormat(" , max(ptime)maxtime");
  98. sqlstr.AppendFormat(" FROM McaSecVMst");
  99. sqlstr.AppendFormat(" group by McaCode) b on a.McaCode = b.McaCode and a.ptime = b.maxtime) c on a.preid=c.id");
  100. scmd.CommandText = sqlstr.ToString();
  101. sda = new SqlDataAdapter(scmd);
  102. DataTable tempdt = new DataTable("McaSecVDetail");
  103. sda.Fill(tempdt);
  104. reds.Merge(tempdt);
  105. sqlstr.Clear();
  106. sqlstr.AppendFormat("SELECT TOP 0 a.ID,a.PreID,a.ptime,a.pMill,a.OrgFNum FROM McaSecTime a");
  107. scmd.CommandText = sqlstr.ToString();
  108. sda = new SqlDataAdapter(scmd);
  109. tempdt = new DataTable("McaSecTime");
  110. sda.Fill(tempdt);
  111. reds.Merge(tempdt);
  112. mytrans.Commit();
  113. return reds;
  114. }
  115. catch (Exception ex)
  116. {
  117. errorinfo = ex.Message.ToString();
  118. return null;
  119. }
  120. finally
  121. {
  122. if (dbconn != null)
  123. dbconn.Close();
  124. }
  125. }
  126. public int BatIMcaSecVMst01(DataSet ds, ref string errorinfo)
  127. {
  128. SqlConnection dbconn = null;
  129. try
  130. {
  131. string connstr = AppConfigurtaionServices.Configuration[$"{CurrDbCode}:ConnectionStrings"];// System.Configuration.ConfigurationManager.AppSettings[CurrDbCode].ToString();
  132. DataRow row = ds.Tables[0].Rows[0];
  133. dbconn = new SqlConnection(connstr);
  134. dbconn.Open();
  135. StringBuilder sqlstr = new StringBuilder(100);
  136. SqlTransaction mytrans = dbconn.BeginTransaction();
  137. //SqlCommand scmd = dbconn.CreateCommand();
  138. //scmd.Transaction = mytrans;
  139. DataTable mstdt = ds.Tables["McaSecVMst"].Clone();
  140. DataRow[] rows = ds.Tables["McaSecVMst"].Select("", "", DataViewRowState.Added);
  141. foreach (DataRow temprow in rows)
  142. mstdt.ImportRow(temprow);
  143. mstdt.Columns.Remove("islast");
  144. SqlBulkCopy bulkCopy = new SqlBulkCopy(dbconn, SqlBulkCopyOptions.CheckConstraints, mytrans);
  145. bulkCopy.DestinationTableName = mstdt.TableName;
  146. bulkCopy.BatchSize = mstdt.Rows.Count;
  147. bulkCopy.WriteToServer(mstdt);
  148. //修改主档数据
  149. SqlCommand scmd = dbconn.CreateCommand();
  150. scmd.Transaction = mytrans;
  151. rows = ds.Tables["McaSecVMst"].Select($"EventCode='{StandardCode.CEID_EachFinish}'", "", DataViewRowState.ModifiedCurrent);
  152. foreach(DataRow ttrow in rows)
  153. {
  154. scmd.CommandText = $"update McaSecVMst set etime='{((DateTime)ttrow["etime"]).ToString("yyyy-MM-dd HH:mm:ss.fff")}',FCount={ttrow["FCount"].ToString()} where id='{ttrow["ID"].ToString()}'";
  155. scmd.ExecuteNonQuery();
  156. }
  157. mstdt = ds.Tables["McaSecVDetail"].Clone();
  158. rows = ds.Tables["McaSecVDetail"].Select("", "", DataViewRowState.Added);
  159. foreach (DataRow temprow in rows)
  160. mstdt.ImportRow(temprow);
  161. bulkCopy = new SqlBulkCopy(dbconn, SqlBulkCopyOptions.CheckConstraints, mytrans);
  162. bulkCopy.DestinationTableName = mstdt.TableName;
  163. bulkCopy.BatchSize = mstdt.Rows.Count;
  164. bulkCopy.WriteToServer(mstdt);
  165. mstdt = ds.Tables["McaSecTime"].Clone();
  166. rows = ds.Tables["McaSecTime"].Select("", "", DataViewRowState.Added);
  167. foreach (DataRow temprow in rows)
  168. mstdt.ImportRow(temprow);
  169. bulkCopy = new SqlBulkCopy(dbconn, SqlBulkCopyOptions.CheckConstraints, mytrans);
  170. bulkCopy.DestinationTableName = mstdt.TableName;
  171. bulkCopy.BatchSize = mstdt.Rows.Count;
  172. bulkCopy.WriteToServer(mstdt);
  173. mytrans.Commit();
  174. return 1;
  175. }
  176. catch (Exception ex)
  177. {
  178. errorinfo = ex.Message.ToString();
  179. return -1;
  180. }
  181. finally
  182. {
  183. if (dbconn != null)
  184. dbconn.Close();
  185. }
  186. }
  187. public DataSet ReadSecMstDs(ref string errorinfo)
  188. {
  189. IDatabase db = null;
  190. try
  191. {
  192. DataSet reds = new DataSet();
  193. db = DbFactory.Base(CurrMySqlCode);
  194. db.BeginTrans();
  195. //读取机台关联事件信息
  196. StringBuilder sqlstr = new StringBuilder(100);
  197. sqlstr.AppendFormat("select distinct a.FNum,a.EventReportMstID,b.EventID,c.FVal,w.fcode 参数代码,m.mc10 机台编号");
  198. sqlstr.AppendFormat(" from SecMstEvent a");
  199. sqlstr.AppendFormat(" inner join EventReportMst b on a.EventReportMstID = b.id");
  200. sqlstr.AppendFormat(" inner join SecDetail c on b.EventID = c.SecID and c.PreID = a.SecMstID");
  201. sqlstr.AppendFormat(" inner join McaEvent d on a.SecMstID = d.PreID");
  202. sqlstr.AppendFormat(" inner join Sec w on b.EventID = w.ID");
  203. sqlstr.AppendFormat(" inner join mca m on d.mcaid=m.id");
  204. //sqlstr.AppendFormat(" where d.McaID = {0}", mcaid);
  205. DataTable tempdt = db.FindTableFor(sqlstr.ToString(), "SecMstEvent");
  206. reds.Merge(tempdt);
  207. //读取机台事件关联报告信息
  208. sqlstr.Clear();
  209. sqlstr.AppendFormat("select distinct t.FNum,a.EventReportMstID,t.ReportMstID,c.FVal,m.mc10 机台编号");
  210. sqlstr.AppendFormat(" from EventReportDetail t");
  211. sqlstr.AppendFormat(" inner join SecMstEvent a on t.preid=a.EventReportMstID");
  212. sqlstr.AppendFormat(" inner join EventReportMst b on a.EventReportMstID = b.id");
  213. sqlstr.AppendFormat(" inner join SecDetail c on b.EventID = c.SecID and c.PreID = a.SecMstID");
  214. sqlstr.AppendFormat(" inner join McaEvent d on a.SecMstID = d.PreID");
  215. sqlstr.AppendFormat(" inner join mca m on d.mcaid=m.id");
  216. //sqlstr.AppendFormat(" where d.McaID = {0}", mcaid);
  217. tempdt = db.FindTableFor(sqlstr.ToString(), "EventReportDetail");
  218. reds.Merge(tempdt);
  219. //读取机台报告关联参数指令
  220. sqlstr.Clear();
  221. sqlstr.AppendFormat("select distinct z.FNum,z.SecID,z.PreID ReportMstID,c.FVal,w.FCode 参数代码,c.dcode 参数类型,m.mc10 机台编号");
  222. sqlstr.AppendFormat(" from ReportDetail z");
  223. sqlstr.AppendFormat(" inner join EventReportDetail t on z.PreID=t.ReportMstID");
  224. sqlstr.AppendFormat(" inner join SecMstEvent a on t.preid=a.EventReportMstID");
  225. sqlstr.AppendFormat(" inner join EventReportMst b on a.EventReportMstID = b.id");
  226. sqlstr.AppendFormat(" inner join SecDetail c on z.SecID = c.SecID and c.PreID = a.SecMstID");
  227. sqlstr.AppendFormat(" inner join McaEvent d on a.SecMstID = d.PreID");
  228. sqlstr.AppendFormat(" inner join Sec w on z.SecID = w.ID");
  229. sqlstr.AppendFormat(" inner join mca m on d.mcaid=m.id");
  230. //sqlstr.AppendFormat(" where d.McaID = {0}", mcaid);
  231. tempdt = db.FindTableFor(sqlstr.ToString(), "ReportDetail");
  232. reds.Merge(tempdt);
  233. sqlstr.Clear();
  234. sqlstr.AppendFormat("select distinct a.id,a.SVal,a.FVal,m.mc10 机台编号 from McaDynamicMst as a");
  235. sqlstr.AppendFormat(" inner join McaEvent as b on a.PreID = b.PreID");
  236. sqlstr.AppendFormat(" inner join mca m on b.mcaid=m.id");
  237. //sqlstr.AppendFormat(" where b.McaID = {0}", mcaid);
  238. tempdt = db.FindTableFor(sqlstr.ToString(), "McaDynamicMst");
  239. reds.Merge(tempdt);
  240. sqlstr.Clear();
  241. sqlstr.AppendFormat("select distinct f.FCode 参数代码,t.fnum 序号,d.fval 参数值,d.dcode 数据类型代码,t.preid,m.mc10 机台编号 from McaDynamicDetail as t");
  242. sqlstr.AppendFormat(" inner join McaDynamicMst as a on t.PreID = a.id");
  243. sqlstr.AppendFormat(" inner join McaEvent as b on a.PreID = b.PreID");
  244. sqlstr.AppendFormat(" inner join SecDetail d on a.preid = d.PreID and t.SecID = d.SecID");
  245. sqlstr.AppendFormat(" inner join Sec f on t.SecID = f.id");
  246. sqlstr.AppendFormat(" inner join mca m on b.mcaid=m.id");
  247. //sqlstr.AppendFormat(" where b.McaID = {0}", mcaid);
  248. tempdt = db.FindTableFor(sqlstr.ToString(), "McaDynamicDetail");
  249. reds.Merge(tempdt);
  250. db.Commit();
  251. return reds;
  252. }
  253. catch (Exception ex)
  254. {
  255. errorinfo = ex.Message.ToString();
  256. return null;
  257. }
  258. finally
  259. {
  260. if (db != null)
  261. db.Close();
  262. }
  263. }
  264. }
  265. }