Tran_Dal.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. using NX_CommonClassLibrary;
  2. using NX_DbClassLibrary;
  3. using NX_LogClassLibrary;
  4. using NX_ModelClassLibrary.CustomEnum;
  5. using NX_ModelClassLibrary.TranModel;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Data;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. namespace NX_WcsDal.WcsBusiness
  13. {
  14. public class Tran_Dal
  15. {
  16. #region 单例模式
  17. /// <summary>
  18. /// 单例模式对象
  19. /// </summary>
  20. private static Tran_Dal _instance = null;
  21. private static readonly object lockObj = new object();
  22. /// <summary>
  23. /// 单例模式方法
  24. /// </summary>
  25. public static Tran_Dal Instance
  26. {
  27. get
  28. {
  29. if (_instance == null)
  30. {
  31. lock (lockObj)
  32. {
  33. if (_instance == null)
  34. {
  35. _instance = new Tran_Dal();
  36. }
  37. }
  38. }
  39. return _instance;
  40. }
  41. }
  42. #endregion
  43. /// <summary>
  44. /// 加载输送线未完成的指令数据
  45. /// </summary>
  46. /// <returns></returns>
  47. public List<WcsTranCmdMd> LoadTranUnFinishedCmd(string regionCode)
  48. {
  49. try
  50. {
  51. string sqlQueryTranUnFinishedCmd = $@"
  52. SELECT
  53. A.TRAN_CMD_ID,
  54. A.NEWID,
  55. A.TASK_NO,
  56. A.CMD_NO,
  57. A.TRAY_CODE,
  58. A.PALLET_CODE,
  59. A.TRAY_STATUS,
  60. A.TRAN_DEV_NO,
  61. A.SLOC_NO,
  62. A.SPLC_NO,
  63. A.ELOC_NO,
  64. A.EPLC_NO,
  65. A.CMD_TYPE,
  66. A.ACTIVE_TYPE,
  67. A.CMD_PRIORITY,
  68. A.CMD_STATUS,
  69. A.CMD_LOG,
  70. A.ERR_FLAG,
  71. A.ERR_LOG,
  72. A.CREATE_BY,
  73. B.USER_CODE CreateCode,
  74. B.USER_NAME CreateName,
  75. A.CREATE_TIME,
  76. A.EXECUTE_TIME,
  77. A.FINISH_TIME,
  78. A.UPDATE_BY,
  79. C.USER_CODE UpdateCode,
  80. C.USER_NAME UpdateName,
  81. A.UPDATE_TIME,
  82. A.DATA_VERSION,
  83. A.REMARKS1,
  84. A.REMARKS2,
  85. A.REMARKS3,
  86. A.REMARKS4,
  87. A.REMARKS5
  88. FROM
  89. WCS_TRAN_CMD A
  90. LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID
  91. LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID
  92. WHERE
  93. A.CMD_STATUS < '{(int)TranCmdStatusEnum.完成}'
  94. AND A.REGION_CODE = '{regionCode}'
  95. ";
  96. DataTable dt = LeadDbHelperSQLServer.Query(sqlQueryTranUnFinishedCmd).Tables[0];
  97. if (dt != null && dt.Rows.Count > 0)
  98. {
  99. List<WcsTranCmdMd> retLst = new List<WcsTranCmdMd>();
  100. foreach (DataRow item in dt.Rows)
  101. {
  102. WcsTranCmdMd tmpMd = ColumnToClassPropertyHelper.ColumnToClassProperty<WcsTranCmdMd>(dt.Columns, item);
  103. retLst.Add(tmpMd);
  104. }
  105. return retLst;
  106. }
  107. else
  108. {
  109. return null;
  110. }
  111. }
  112. catch (Exception ex)
  113. {
  114. LogHelper.WriteLog($"加载输送线未完成指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
  115. return null;
  116. }
  117. }
  118. /// <summary>
  119. /// 更新输送线指令状态
  120. /// </summary>
  121. /// <param name="wcsTranCmdMd">输送线指令对象</param>
  122. public void UpdateTranCmdStatus(WcsTranCmdMd wcsTranCmdMd)
  123. {
  124. try
  125. {
  126. string sqlUpdateTranCmdStatus = string.Empty;
  127. if (wcsTranCmdMd.CmdStatus == TranCmdStatusEnum.已下发PLC)
  128. {
  129. sqlUpdateTranCmdStatus = $@"
  130. UPDATE WCS_TRAN_CMD
  131. SET
  132. CMD_STATUS = '{(int)wcsTranCmdMd.CmdStatus}',
  133. UPDATE_BY = '{wcsTranCmdMd.UpdateBy}',
  134. UPDATE_TIME = GETDATE(),
  135. EXECUTE_TIME = GETDATE()
  136. WHERE
  137. TRAN_CMD_ID = '{wcsTranCmdMd.TranCmdId}'
  138. ";
  139. }
  140. else if (wcsTranCmdMd.CmdStatus == TranCmdStatusEnum.完成)
  141. {
  142. sqlUpdateTranCmdStatus = $@"
  143. UPDATE WCS_TRAN_CMD
  144. SET CMD_STATUS = '{(int)wcsTranCmdMd.CmdStatus}',
  145. UPDATE_BY = '{wcsTranCmdMd.UpdateBy}',
  146. UPDATE_TIME = GETDATE(),
  147. FINISH_TIME = GETDATE()
  148. WHERE
  149. TRAN_CMD_ID = '{wcsTranCmdMd.TranCmdId}'
  150. ";
  151. }
  152. else
  153. {
  154. sqlUpdateTranCmdStatus = $@"
  155. UPDATE WCS_TRAN_CMD
  156. SET CMD_STATUS = '{(int)wcsTranCmdMd.CmdStatus}',
  157. UPDATE_BY = '{wcsTranCmdMd.UpdateBy}',
  158. UPDATE_TIME = GETDATE()
  159. WHERE
  160. TRAN_CMD_ID = '{wcsTranCmdMd.TranCmdId}'
  161. ";
  162. }
  163. LeadDbHelperSQLServer.ExecuteSql(sqlUpdateTranCmdStatus);
  164. }
  165. catch (Exception ex)
  166. {
  167. LogHelper.WriteLog($"更新输送线指令状态发生异常!【{ex.Message}】", LogTypeEnum.Err);
  168. }
  169. }
  170. public List<WcsTranCmdMd> LoadAllTranCmd(WcsTranCmdSearchMd searchMd)
  171. {
  172. try
  173. {
  174. string sqlQuery = string.Empty;
  175. if (!string.IsNullOrEmpty(searchMd.TaskNo))
  176. {
  177. sqlQuery += $" AND TASK_NO = '{searchMd.TaskNo}'";
  178. }
  179. if (!string.IsNullOrEmpty(searchMd.CmdNo))
  180. {
  181. sqlQuery += $" AND CMD_NO = '{searchMd.CmdNo}'";
  182. }
  183. if (!string.IsNullOrEmpty(searchMd.PalletCode))
  184. {
  185. sqlQuery += $" AND PALLET_CODE like '%{searchMd.PalletCode}%'";
  186. }
  187. if (!string.IsNullOrEmpty(searchMd.DevMsg))
  188. {
  189. sqlQuery += $" AND TRAN_DEV_NO = '{searchMd.DevMsg}'";
  190. }
  191. if (!string.IsNullOrEmpty(searchMd.SlocCode))
  192. {
  193. sqlQuery += $" AND SLOC_NO like '%{searchMd.SlocCode}%'";
  194. }
  195. if (!string.IsNullOrEmpty(searchMd.ElocCode))
  196. {
  197. sqlQuery += $" AND ELOC_NO like '%{searchMd.ElocCode}%'";
  198. }
  199. if (!string.IsNullOrEmpty(searchMd.CmdType))
  200. {
  201. sqlQuery += $" AND CMD_TYPE = '{searchMd.CmdType}'";
  202. }
  203. if (!string.IsNullOrEmpty(searchMd.CmdStatus))
  204. {
  205. sqlQuery += $" AND CMD_STATUS = '{searchMd.CmdStatus}'";
  206. }
  207. if (!string.IsNullOrEmpty(searchMd.TrayLoadedType))
  208. {
  209. sqlQuery += $" AND TRAY_STATUS = '{searchMd.TrayLoadedType}'";
  210. }
  211. if (!string.IsNullOrEmpty(searchMd.StartExcuteTime))
  212. {
  213. sqlQuery += $" AND EXECUTE_TIME >= '{searchMd.StartExcuteTime}'";
  214. }
  215. if (!string.IsNullOrEmpty(searchMd.EndExcuteTime))
  216. {
  217. sqlQuery += $" AND EXECUTE_TIME <= '{searchMd.EndExcuteTime}'";
  218. }
  219. if (!string.IsNullOrEmpty(searchMd.StartFinishTime))
  220. {
  221. sqlQuery += $" AND FINISH_TIME >= '{searchMd.StartFinishTime}'";
  222. }
  223. if (!string.IsNullOrEmpty(searchMd.EndFinishTime))
  224. {
  225. sqlQuery += $" AND FINISH_TIME <= '{searchMd.EndFinishTime}'";
  226. }
  227. int pageStartIndex = (searchMd.PageNum - 1) * searchMd.EveryPageQty;
  228. int pageEndIndex = searchMd.PageNum * searchMd.EveryPageQty;
  229. string sql = $@"select * from VW_ZBK_WCS_TRAN_CMD where 1 = 1 {sqlQuery}
  230. ORDER BY A.UPDATE_TIME DESC,A.CREATE_TIME DESC
  231. OFFSET {pageStartIndex} ROWS
  232. FETCH NEXT {searchMd.EveryPageQty} ROWS ONLY";
  233. DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0];
  234. if (dt != null && dt.Rows.Count > 0)
  235. {
  236. List<WcsTranCmdMd> retLst = new List<WcsTranCmdMd>();
  237. foreach (DataRow item in dt.Rows)
  238. {
  239. WcsTranCmdMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty<WcsTranCmdMd>(dt.Columns, item);
  240. retLst.Add(retMd);
  241. }
  242. return retLst;
  243. }
  244. else
  245. {
  246. return null;
  247. }
  248. }
  249. catch (Exception ex)
  250. {
  251. LogHelper.WriteLog($"加载堆垛机所有作业指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
  252. return null;
  253. }
  254. }
  255. }
  256. }