BaseWorkflow.cs 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020
  1. using SqlSugar;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Text;
  6. using WCS_Client.Models;
  7. using WCS_Client.Utility;
  8. using WCS_Client.Workflow;
  9. using static WCS_Client.Frm.WCS_RGV523;
  10. using static WCS_Client.Frm.WCS_SC537;
  11. using static WCS_Client.Frm.WCS_STATION523;
  12. using WCS_TASK = WCS.Entity.WCS_TASK;
  13. namespace WCS_Client
  14. {
  15. public class BaseWorkflow
  16. {
  17. public static bool Login(string use_No, string use_Pwd, out string errMsg)
  18. {
  19. bool result = false;
  20. errMsg = string.Empty;
  21. string errorMsg = string.Empty;
  22. try
  23. {
  24. TryCachHelper.TryExecute((db) =>
  25. {
  26. var user = db.Queryable<WCS_Users>().First(v => v.USER_NO == use_No);
  27. if (user == null)
  28. {
  29. errorMsg = LangConst.UserNotExists;
  30. }
  31. else
  32. {
  33. if (user.USER_PWD == Md5Helper.Md5Hash(use_Pwd))
  34. {
  35. string user_textStr = BinaryHelper.ByteArray2BinaryStr(user.USER_TEXT);
  36. string jiemastr = BinaryHelper.jiema(user_textStr);
  37. WCS_Users userinfo = jiemastr.ToObject<WCS_Users>();
  38. userinfo.Use_LoginTime = DateTime.Now;
  39. string userjson = userinfo.ToJson();
  40. user.USER_TEXT = BinaryHelper.BinaryStr2ByteArray(BinaryHelper.bianma(userjson));
  41. if (db.Updateable(user).UpdateColumns(it => it.USER_TEXT).ExecuteCommand() > 0)
  42. {
  43. user.GetUserInfo(userinfo);
  44. CurrentHelper.User = user;
  45. result = true;
  46. }
  47. else
  48. {
  49. errorMsg = LangConst.UpdateError;
  50. }
  51. }
  52. else
  53. {
  54. errorMsg = LangConst.PasswordError;
  55. }
  56. }
  57. });
  58. //using (MAction action = new MAction(TableEnum.WCS_Users))
  59. //{
  60. // MDataTable mdt = action.Select();
  61. // var users = mdt.ToList<WCS_Users>();
  62. // var user = users.FirstOrDefault(v => v.USER_NO == use_No);
  63. // if (user == null)
  64. // {
  65. // errMsg = LangConst.UserNotExists;
  66. // }
  67. // else
  68. // {
  69. // if (user.USER_PWD == Md5Helper.Md5Hash(use_Pwd))
  70. // {
  71. // string user_textStr = BinaryHelper.ByteArray2BinaryStr(user.USER_TEXT);
  72. // string jiemastr = BinaryHelper.jiema(user_textStr);
  73. // WCS_Users userinfo = jiemastr.ToObject<WCS_Users>();
  74. // userinfo.Use_LoginTime = DateTime.Now;
  75. // string userjson = userinfo.ToJson();
  76. // user.USER_TEXT = BinaryHelper.BinaryStr2ByteArray(BinaryHelper.bianma(userjson));
  77. // action.Set("USER_TEXT", user.USER_TEXT);
  78. // string where = string.Format("USER_NO = '{0}'", user.USER_NO);
  79. // if (action.Update(where, false))
  80. // {
  81. // user.GetUserInfo(userinfo);
  82. // CurrentHelper.User = user;
  83. // //CurrentHelper.User.UserInfoItem = BinaryHelper.jiema(CurrentHelper.User.User_Text).ToObject<UserInfo>();
  84. // result = true;
  85. // }
  86. // else
  87. // {
  88. // errMsg = LangConst.UpdateError;
  89. // }
  90. // }
  91. // else
  92. // {
  93. // errMsg = LangConst.PasswordError;
  94. // }
  95. // }
  96. //}
  97. }
  98. catch (Exception ex)
  99. {
  100. LogHelper.Sys_Log.WriteLog(ex.ToString());
  101. throw new Exception(LangConst.SysError);
  102. }
  103. return result;
  104. }
  105. public static PageData QueryDatatble(DataTable dt, int PageIndex, int PageSize)
  106. {
  107. if (PageSize <= 0) PageSize = 2000;
  108. int startRecord = (PageIndex - 1) * PageSize + 1;
  109. int endRecord = startRecord + PageSize - 1;
  110. try
  111. {
  112. if (dt != null && dt.Rows.Count > 0)
  113. {
  114. int count = dt.Rows.Count;
  115. int PageCount = count / PageSize;
  116. if (count % PageSize > 0)
  117. PageCount += 1;
  118. PageData PageDataItem = new PageData();
  119. PageDataItem.PageIndex = PageIndex;
  120. PageDataItem.PageSize = PageSize;
  121. PageDataItem.PageCount = PageCount;
  122. PageDataItem.RowsCount = count;
  123. dt.TableName = "table";
  124. PageDataItem.Dt = dt;
  125. return PageDataItem;
  126. }
  127. }
  128. catch (Exception ex)
  129. {
  130. }
  131. return null;
  132. }
  133. public static PageData QueryPageData(string _SQLText, string orderText, List<string> WhereStringList, int PageIndex, int PageSize)
  134. {
  135. var sb = new StringBuilder();
  136. sb.Append(_SQLText);
  137. if (WhereStringList != null && WhereStringList.Count > 0)
  138. {
  139. foreach (var item in WhereStringList)
  140. {
  141. sb.Append(" and ");
  142. sb.Append(item);
  143. }
  144. }
  145. return QueryPageSql(sb.ToString(), orderText, PageIndex, PageSize);
  146. }
  147. private static PageData QueryPageSql(string SQLText, string OrderText, int PageIndex, int PageSize)
  148. {
  149. if (PageSize <= 0) PageSize = 2000;
  150. int startRecord = (PageIndex - 1) * PageSize + 1;
  151. int endRecord = startRecord + PageSize - 1;
  152. string sql = string.Format("select * from (select ROW_NUMBER() Over (Order By {0}) as RN,a.* from ({1}) a) b where b.RN between {2} and {3}", OrderText, SQLText, startRecord, endRecord);
  153. string CountStr = string.Format("Select Count(1) From ({0}) t", SQLText);
  154. try
  155. {
  156. DataTable dt = null;
  157. int count = 0;
  158. TryCachHelper.TryExecute((db) =>
  159. {
  160. dt = db.Ado.GetDataTable(sql);
  161. if (sql.Contains("dbo.WCS_TASK")) TaskWorkflow.DataTableAddColumn(dt, db);
  162. //else if (sql.Contains("[dbo].[WCS_EXCEPTION]")) ExceptionLogWorkflow.DataTableAddColumn(dt, db);
  163. count = Convert.ToInt32(db.Ado.GetScalar(CountStr));
  164. });
  165. int PageCount = count / PageSize;
  166. if (count % PageSize > 0)
  167. PageCount += 1;
  168. if (dt != null && dt.Rows.Count > 0)
  169. {
  170. //设备报警赋值
  171. if (dt.Rows[0][1].ToString() == "设备报警")
  172. {
  173. for (int i = 0; i < dt.Rows.Count; i++)
  174. {
  175. TryCachHelper.TryExecute((db) =>
  176. {
  177. Type eType;
  178. if (dt.Rows[i]["DEVICECODE"].ToString().Substring(0, 3) == "RGV")
  179. {
  180. eType = typeof(RGVFault);
  181. }
  182. else if (dt.Rows[i]["DEVICECODE"].ToString().Substring(0, 2) == "SC")
  183. {
  184. eType = typeof(SCAlarm);
  185. }
  186. else
  187. {
  188. eType = typeof(StationFault);
  189. }
  190. var eItem = Enum.Parse(eType, dt.Rows[i]["alarm"].ToString());
  191. var a = Enum.Parse(eType, "65");
  192. dt.Rows[i]["ALARAMMSG"] = eItem.ToString();
  193. });
  194. }
  195. }
  196. PageData PageDataItem = new PageData();
  197. PageDataItem.PageIndex = PageIndex;
  198. PageDataItem.PageSize = PageSize;
  199. PageDataItem.PageCount = PageCount;
  200. PageDataItem.RowsCount = count;
  201. dt.TableName = "table";
  202. PageDataItem.Dt = dt;
  203. return PageDataItem;
  204. }
  205. }
  206. catch (Exception ex)
  207. {
  208. }
  209. return null;
  210. }
  211. public static PageData QueryPageData2(string _SQLText, string orderText, List<string> WhereStringList, int PageIndex, int PageSize)
  212. {
  213. var sb = new StringBuilder();
  214. sb.Append(_SQLText);
  215. if (WhereStringList != null && WhereStringList.Count > 0)
  216. {
  217. sb.Append(" and ");
  218. sb.Append(WhereStringList[0]);
  219. }
  220. return QueryPageSql2(sb.ToString(), orderText, PageIndex, PageSize);
  221. }
  222. private static PageData QueryPageSql2(string SQLText, string OrderText, int PageIndex, int PageSize)
  223. {
  224. if (PageSize <= 0) PageSize = 2000;
  225. int startRecord = (PageIndex - 1) * PageSize + 1;
  226. int endRecord = startRecord + PageSize - 1;
  227. string sql = string.Format("select * from (select ROW_NUMBER() Over (Order By {0}) as RN,a.* from ({1}) a) b where b.RN between {2} and {3}", OrderText, SQLText, startRecord, endRecord);
  228. string CountStr = string.Format("Select Count(1) From ({0}) t", SQLText);
  229. try
  230. {
  231. DataTable dt = null;
  232. int count = 0;
  233. TryCachHelper.TryExecute((db) =>
  234. {
  235. List<WCS_Users> usersList = db.SqlQueryable<WCS_Users>(sql).ToList();
  236. foreach (var item in usersList)
  237. {
  238. string binaryStr = BinaryHelper.ByteArray2BinaryStr(item.USER_TEXT);
  239. string jsonstr = BinaryHelper.jiema(binaryStr);
  240. var user = jsonstr.ToObject<WCS_Users>();
  241. item.GetUserInfo(user);
  242. }
  243. dt = DatatableConvertHelper.ToDataTable(usersList);
  244. count = Convert.ToInt32(db.Ado.GetScalar(CountStr));
  245. });
  246. int PageCount = count / PageSize;
  247. if (count % PageSize > 0)
  248. PageCount += 1;
  249. if (dt != null && dt.Rows.Count > 0)
  250. {
  251. PageData PageDataItem = new PageData();
  252. PageDataItem.PageIndex = PageIndex;
  253. PageDataItem.PageSize = PageSize;
  254. PageDataItem.PageCount = PageCount;
  255. PageDataItem.RowsCount = count;
  256. dt.TableName = "table";
  257. PageDataItem.Dt = dt;
  258. return PageDataItem;
  259. }
  260. }
  261. catch (Exception ex)
  262. {
  263. }
  264. return null;
  265. }
  266. public static DataTable CommonQueryUser(string sql)
  267. {
  268. DataTable dt = null;
  269. try
  270. {
  271. TryCachHelper.TryExecute((db) =>
  272. {
  273. List<WCS_Users> usersList = db.SqlQueryable<WCS_Users>(sql).ToList();
  274. foreach (var item in usersList)
  275. {
  276. var binaryStr = BinaryHelper.ByteArray2BinaryStr(item.USER_TEXT);
  277. string jsonstr = BinaryHelper.jiema(binaryStr);
  278. var user = jsonstr.ToObject<WCS_Users>();
  279. item.GetUserInfo(user);
  280. }
  281. dt = DatatableConvertHelper.ToDataTable(usersList);
  282. });
  283. }
  284. catch (Exception ex)
  285. {
  286. LogHelper.Sys_Log.WriteLog(ex.ToString());
  287. }
  288. return dt;
  289. }
  290. public static DataTable CommonQuery(string sql)
  291. {
  292. DataTable dt = null;
  293. TryCachHelper.TryExecute((db) =>
  294. {
  295. dt = db.Ado.GetDataTable(sql);
  296. });
  297. return dt;
  298. }
  299. public static string AddEditUser(WCS_Users user)
  300. {
  301. string result = string.Empty;
  302. try
  303. {
  304. if (user.USER_NO == LangConst.DefaultUser)
  305. {
  306. result = LangConst.DefaultUserError;
  307. }
  308. else
  309. {
  310. var json = user.ToJson();
  311. string binarystr = BinaryHelper.bianma(json);
  312. user.USER_TEXT = BinaryHelper.BinaryStr2ByteArray(binarystr);
  313. TryCachHelper.TryExecute((db) =>
  314. {
  315. var wcs_user = db.Queryable<WCS_Users>().First(v => v.USER_NO == user.USER_NO);
  316. if (wcs_user == null)
  317. {
  318. //默认密码
  319. user.USER_PWD = Md5Helper.Md5Hash(LangConst.DefaultPwd);
  320. db.Insertable(user).ExecuteCommand();
  321. }
  322. else
  323. {
  324. wcs_user.USER_TEXT = user.USER_TEXT;
  325. db.Updateable(wcs_user).UpdateColumns(it => it.USER_TEXT).ExecuteCommand();
  326. }
  327. });
  328. //using (MAction action = new MAction(TableEnum.WCS_Users))
  329. //{
  330. // if (action.Exists(user.USER_NO))
  331. // {
  332. // action.Set(WCS_UsersEnum.User_Text, user.USER_TEXT);
  333. // string where = string.Format("USER_NO = '{0}'", user.USER_NO);
  334. // action.Update(where, false);
  335. // }
  336. // else
  337. // {
  338. // //默认密码
  339. // user.USER_PWD = Md5Helper.Md5Hash(LangConst.DefaultPwd);
  340. // action.Set(WCS_UsersEnum.User_No, user.USER_NO);
  341. // action.Set(WCS_UsersEnum.User_Pwd, user.USER_PWD);
  342. // action.Set(WCS_UsersEnum.User_Text, user.USER_TEXT);
  343. // //插入信息
  344. // bool insertresult = action.Insert(InsertOp.None);
  345. // }
  346. //}
  347. }
  348. }
  349. catch (Exception ex)
  350. {
  351. LogHelper.Sys_Log.WriteLog(ex.ToString());
  352. result = string.Format("{0}或{1}", LangConst.AddError, LangConst.UpdateError);
  353. }
  354. return result;
  355. }
  356. public static string DeleteUser(string user_no)
  357. {
  358. string result = string.Empty;
  359. try
  360. {
  361. if (user_no == LangConst.DefaultUser)
  362. {
  363. result = LangConst.DefaultUserError;
  364. }
  365. else
  366. {
  367. TryCachHelper.TryExecute((db) =>
  368. {
  369. db.Deleteable<WCS_Users>().Where(v => v.USER_NO == user_no).ExecuteCommand();
  370. });
  371. }
  372. }
  373. catch (Exception ex)
  374. {
  375. LogHelper.Sys_Log.WriteLog(ex.ToString());
  376. result = LangConst.DeleteError;
  377. }
  378. return result;
  379. }
  380. public static string AdminModifyPwd(string user_no, string user_pwd)
  381. {
  382. string result = string.Empty;
  383. try
  384. {
  385. TryCachHelper.TryExecute((db) =>
  386. {
  387. var user = db.Queryable<WCS_Users>().First(v => v.USER_NO == user_no);
  388. if (user == null)
  389. {
  390. result = LangConst.UserNotExists;
  391. }
  392. else
  393. {
  394. var binaryStr = BinaryHelper.ByteArray2BinaryStr(user.USER_TEXT);
  395. var useritem = BinaryHelper.jiema(binaryStr).ToObject<WCS_Users>();
  396. useritem.Use_EditUserNo = CurrentHelper.User.USER_NO;
  397. useritem.Use_EditDateTime = DateTime.Now;
  398. var binStr = BinaryHelper.bianma(useritem.ToJson());
  399. user.USER_TEXT = BinaryHelper.BinaryStr2ByteArray(binStr);
  400. user.USER_PWD = Md5Helper.Md5Hash(user_pwd);
  401. db.Updateable(user).UpdateColumns(it => new { it.USER_TEXT, it.USER_PWD }).ExecuteCommand();
  402. }
  403. });
  404. //using (MAction action = new MAction(TableEnum.WCS_Users))
  405. //{
  406. // if (action.Exists(user_no))
  407. // {
  408. // MDataTable mdt = action.Select(user_no);
  409. // var user = mdt.ToList<WCS_Users>()[0];
  410. // var binaryStr = BinaryHelper.ByteArray2BinaryStr(user.USER_TEXT);
  411. // var useritem = BinaryHelper.jiema(binaryStr).ToObject<WCS_Users>();
  412. // useritem.Use_EditUserNo = CurrentHelper.User.USER_NO;
  413. // useritem.Use_EditDateTime = DateTime.Now;
  414. // // useritem.User_Pwd = Md5Helper.Md5Hash(user_pwd);
  415. // var binStr = BinaryHelper.bianma(useritem.ToJson());
  416. // user.USER_TEXT = BinaryHelper.BinaryStr2ByteArray(binStr);
  417. // action.Set(WCS_UsersEnum.User_Pwd, Md5Helper.Md5Hash(user_pwd));
  418. // action.Set(WCS_UsersEnum.User_Text, user.USER_TEXT);
  419. // string where = string.Format("User_No = '{0}'", user.USER_NO);
  420. // action.Update(where, false);
  421. // }
  422. // else
  423. // {
  424. // result = LangConst.UserNotExists;
  425. // }
  426. //}
  427. }
  428. catch (Exception ex)
  429. {
  430. LogHelper.Sys_Log.WriteLog(ex.ToString());
  431. result = LangConst.UpdateError;
  432. }
  433. return result;
  434. }
  435. public static DataTable QuerySex()
  436. {
  437. return CommonQuery(string.Format("SELECT * FROM WCS_Mappingentry where Mep_MappingType='Sex'"));
  438. }
  439. public static DataTable QueryUse_Role()
  440. {
  441. return CommonQuery(string.Format("SELECT * FROM WCS_Mappingentry where Mep_MappingType='RoleId'"));
  442. }
  443. public static DataTable QueryTaskType()
  444. {
  445. return CommonQuery(string.Format("SELECT * FROM WCS_Mappingentry where Mep_MappingType='COMTYPE'"));
  446. }
  447. public static void AddWCS_TASK_DTL(SqlSugarClient db, int task_id, int task_no, string posIdCur, string posIdNext, string msg)
  448. {
  449. var task_dtl = new WCS_TASK_DTL();
  450. task_dtl.ID = Guid.NewGuid().ToString();
  451. task_dtl.PARENTID = task_id;
  452. task_dtl.TASKNO = task_no.ToString();
  453. task_dtl.POSIDCUR = posIdCur;
  454. task_dtl.POSIDNEXT = posIdNext;
  455. task_dtl.DESCRIPTION = msg;
  456. task_dtl.EXECUTEDATE = DateTime.Now;
  457. db.Insertable(task_dtl).ExecuteCommand();
  458. }
  459. public static string UpdateTask(int taskid, TaskStatusType taskStatusType)
  460. {
  461. string result = string.Empty;
  462. //try
  463. //{
  464. // TryCachHelper.TryExecute((db) =>
  465. // {
  466. // var task = db.Queryable<WCS_TASK>().First(v => v.ID == taskid);
  467. // if (taskStatusType == TaskStatusType.重下堆垛机)
  468. // {
  469. // if (task.STATUS == TaskStatus.堆垛机执行)
  470. // {
  471. // if (task.TYPE == WCS.Entity.TaskType.出库 || task.TYPE == WCS.Entity.TaskType.移库)//出库,移库
  472. // {
  473. // task.TASK_WKSTATUS = 0;
  474. // task.ADDRFROM = task.ADDRFROM;
  475. // }
  476. // else if (task.TASK_COMTYPE == 1)//入库
  477. // {
  478. // task.TASK_WKSTATUS = 2;
  479. // }
  480. // task.TASK_EDITUSERNO = CurrentHelper.User.USER_NO;
  481. // task.TASK_EDITDATETIME = DateTime.Now;
  482. // db.Updateable(task).UpdateColumns(it => new { it.TASK_WKSTATUS, it.TASK_POSIDNEXT, it.TASK_EDITUSERNO, it.TASK_EDITDATETIME }).ExecuteCommand();
  483. // result = string.Format("任务[{0}]重下堆垛机成功。", task.TASK_NO);
  484. // AddWCS_TASK_DTL(db, task.TASK_NO, task.TASK_NO, task.TASK_POSIDCUR, task.TASK_POSIDNEXT, result + "操作用户:" + CurrentHelper.User.USER_NO);
  485. // }
  486. // else
  487. // {
  488. // result = string.Format("任务[{0}]不需要重下堆垛机。", task.TASK_NO);
  489. // }
  490. // }
  491. // else if (taskStatusType == TaskStatusType.重下输送机)
  492. // {
  493. // if (task.TASK_WKSTATUS != (int)WkStatus.堆垛机执行)
  494. // {
  495. // if (task.TASK_COMTYPE == 1 || task.TASK_COMTYPE == 4)//入库,移动
  496. // {
  497. // task.TASK_WKSTATUS = 0;
  498. // task.TASK_POSIDNEXT = task.TASK_POSIDFROM;
  499. // task.TASK_POSIDCUR = task.TASK_POSIDFROM;
  500. // task.TASK_EDITUSERNO = CurrentHelper.User.USER_NO;
  501. // task.TASK_EDITDATETIME = DateTime.Now;
  502. // db.Updateable(task).UpdateColumns(it => new { it.TASK_WKSTATUS, it.TASK_POSIDNEXT, it.TASK_POSIDCUR, it.TASK_EDITUSERNO, it.TASK_EDITDATETIME }).ExecuteCommand();
  503. // result = string.Format("任务[{0}]重下输送机成功。");
  504. // AddWCS_TASK_DTL(db, task.TASK_NO, task.TASK_NO, task.TASK_POSIDCUR, task.TASK_POSIDNEXT, result + "操作用户:" + CurrentHelper.User.USER_NO);
  505. // }
  506. // else
  507. // {
  508. // //出库,移库
  509. // result = string.Format("出库和移库任务[{0}]不能重下输送机。", task.TASK_NO);
  510. // }
  511. // }
  512. // else
  513. // {
  514. // result = string.Format("任务[{0}]状态为[堆垛机执行]不能重下输送机。", task.TASK_NO);
  515. // }
  516. // }
  517. // else if (taskStatusType == TaskStatusType.重下RGV上料 && task.TASK_WKSTATUS == (int)WkStatus.RGV上料执行)
  518. // {
  519. // task.TASK_WKSTATUS = 2;
  520. // task.TASK_EDITUSERNO = CurrentHelper.User.USER_NO;
  521. // task.TASK_EDITDATETIME = DateTime.Now;
  522. // db.Updateable(task).UpdateColumns(it => new { it.TASK_WKSTATUS, it.TASK_EDITUSERNO, it.TASK_EDITDATETIME }).ExecuteCommand();
  523. // var task_dtlSet = db.Queryable<WCS_TASK_DTL>().Where(v => v.PARENTID == task.TASK_NO).ToList();
  524. // var task_dtl = task_dtlSet.FirstOrDefault(v => v.DESCRIPTION.Contains("上料到RGV工位"));
  525. // int index = task_dtl.DESCRIPTION.IndexOf("上料到RGV工位");
  526. // int tempindex = task_dtl.DESCRIPTION.IndexOf('[', index);
  527. // string conveyerNo = task_dtl.DESCRIPTION.Substring(tempindex + 1, 4);
  528. // //解锁
  529. // db.Updateable<WCS_EQUIPMENTLOCK>().UpdateColumns(it => new WCS_EQUIPMENTLOCK { ISLOCK = false }).Where(v => v.EQUIPMENTNO == conveyerNo).ExecuteCommand();
  530. // result = string.Format("任务[{0}]重下RGV上料成功。");
  531. // AddWCS_TASK_DTL(db, task.TASK_NO, task.TASK_NO, task.TASK_POSIDCUR, task.TASK_POSIDNEXT, result + "操作用户:" + CurrentHelper.User.USER_NO);
  532. // }
  533. // else if (taskStatusType == TaskStatusType.重下RGV下料 && task.TASK_WKSTATUS == (int)WkStatus.RGV下料执行)
  534. // {
  535. // var task_dtlSet = db.Queryable<WCS_TASK_DTL>().Where(v => v.PARENTID == task.TASK_NO).ToList();
  536. // var task_dtl = task_dtlSet.FirstOrDefault(v => v.DESCRIPTION.Contains("上料到RGV工位"));
  537. // task.TASK_WKSTATUS = 3;
  538. // task.TASK_POSIDNEXT = task_dtl.POSIDNEXT;
  539. // task.TASK_EDITUSERNO = CurrentHelper.User.USER_NO;
  540. // task.TASK_EDITDATETIME = DateTime.Now;
  541. // db.Updateable(task).UpdateColumns(it => new { it.TASK_WKSTATUS, it.TASK_POSIDNEXT, it.TASK_EDITUSERNO, it.TASK_EDITDATETIME }).ExecuteCommand();
  542. // int index = task_dtl.DESCRIPTION.IndexOf("上料到RGV工位");
  543. // int tempindex = task_dtl.DESCRIPTION.IndexOf('[', index);
  544. // string conveyerNo = task_dtl.DESCRIPTION.Substring(tempindex + 1, 4);
  545. // //解锁
  546. // db.Updateable<WCS_EQUIPMENTLOCK>().UpdateColumns(it => new WCS_EQUIPMENTLOCK { ISLOCK = false }).Where(v => v.EQUIPMENTNO == conveyerNo).ExecuteCommand();
  547. // result = string.Format("任务[{0}]重下RGV下料成功。", task.TASK_NO);
  548. // AddWCS_TASK_DTL(db, task.TASK_NO, task.TASK_NO, task.TASK_POSIDCUR, task.TASK_POSIDNEXT, result + "操作用户:" + CurrentHelper.User.USER_NO);
  549. // }
  550. // else if (taskStatusType == TaskStatusType.重下任务)
  551. // {
  552. // if (task.TASK_COMTYPE == 1)//入库
  553. // {
  554. // if (task.TASK_POSIDTO.Length < 10)
  555. // {
  556. // //未分配货位,可重下
  557. // task.TASK_WKSTATUS = 0;
  558. // task.TASK_POSIDNEXT = task.TASK_POSIDFROM;
  559. // task.TASK_POSIDCUR = task.TASK_POSIDFROM;
  560. // task.TASK_EDITUSERNO = CurrentHelper.User.USER_NO;
  561. // task.TASK_EDITDATETIME = DateTime.Now;
  562. // db.Updateable(task).UpdateColumns(it => new { it.TASK_WKSTATUS, it.TASK_POSIDNEXT, it.TASK_POSIDCUR, it.TASK_EDITUSERNO, it.TASK_EDITDATETIME }).ExecuteCommand();
  563. // result = string.Format("任务[{0}]重新下发成功。", task.TASK_NO);
  564. // AddWCS_TASK_DTL(db, task.TASK_NO, task.TASK_NO, task.TASK_POSIDCUR, task.TASK_POSIDNEXT, result + "操作用户:" + CurrentHelper.User.USER_NO);
  565. // }
  566. // }
  567. // else if (task.TASK_COMTYPE == 4)//移动
  568. // {
  569. // if (task.TASK_WKSTATUS == 0)
  570. // {
  571. // result = string.Format("任务[{0}]未下发,不需要重下任务。", task.TASK_NO);
  572. // }
  573. // else
  574. // {
  575. // //移动任务,可重下
  576. // task.TASK_WKSTATUS = 0;
  577. // task.TASK_POSIDNEXT = task.TASK_POSIDFROM;
  578. // task.TASK_POSIDCUR = task.TASK_POSIDFROM;
  579. // task.TASK_EDITUSERNO = CurrentHelper.User.USER_NO;
  580. // task.TASK_EDITDATETIME = DateTime.Now;
  581. // db.Updateable(task).UpdateColumns(it => new { it.TASK_WKSTATUS, it.TASK_POSIDNEXT, it.TASK_POSIDCUR, it.TASK_EDITUSERNO, it.TASK_EDITDATETIME }).ExecuteCommand();
  582. // result = string.Format("任务[{0}]重新下发成功。", task.TASK_NO);
  583. // AddWCS_TASK_DTL(db, task.TASK_NO, task.TASK_NO, task.TASK_POSIDCUR, task.TASK_POSIDNEXT, result + "操作用户:" + CurrentHelper.User.USER_NO);
  584. // }
  585. // }
  586. // else if (task.TASK_COMTYPE == 2 || task.TASK_COMTYPE == 3)//出库,移库
  587. // {
  588. // result = string.Format("任务[{0}]是出库或移库任务,请使用[重下堆垛机]功能。", task.TASK_NO);
  589. // }
  590. // }
  591. // if (string.IsNullOrWhiteSpace(result))
  592. // {
  593. // throw new Exception(string.Format("任务[{0}]该状态下不支持[{1}]", task.TASK_NO, taskStatusType));
  594. // }
  595. // });
  596. //}
  597. //catch (Exception ex)
  598. //{
  599. // result = ex.Message;
  600. // LogHelper.Sys_Log.WriteLog(ex.ToString());
  601. //}
  602. return result;
  603. }
  604. /// <summary>
  605. /// 任务完成
  606. /// </summary>
  607. /// <param name="db"></param>
  608. /// <param name="conveyorOut">设备编号</param>
  609. /// <param name="taskno">任务号</param>
  610. /// <param name="temptype">类型 1:入库任务完成 2:堆垛机出库任务完成 3.移库完成 4:出库任务完成 5:任务取消 6:码盘 6:拆盘</param>
  611. public static string TaskComplete(int taskno, int temptype)
  612. {
  613. string result = string.Empty;
  614. string errorresult = TryCachHelper.TryExecute((db) =>
  615. {
  616. string status = "N";
  617. string MESSAGE = string.Empty;
  618. var outputResult = db.Ado.UseStoredProcedure<dynamic>(() =>
  619. {
  620. string spName = "BZ_TASKCOMPLETE";
  621. var p1 = new SugarParameter("@TEMPTASKNO", taskno);// 任务号
  622. var p2 = new SugarParameter("@TEMPTYPE", temptype);//类型(出库任务完成)
  623. var p3 = new SugarParameter("@STATUS", null, true);//反馈状态 Y:成功 N:失败
  624. var p4 = new SugarParameter("@MESSAGE", null, true);//反馈消息
  625. var dbResult = db.Ado.ExecuteCommand(spName, new SugarParameter[] { p1, p2, p3, p4 });
  626. status = p3.Value.ToString();
  627. MESSAGE = p4.Value.ToString();
  628. return dbResult;
  629. });
  630. if (status.Trim().ToUpper() == "N")
  631. {
  632. result = string.Format("任务[{0}]手动完成失败,传递参数:任务号[{1}]类型[{2}]反馈消息:[{3}]",
  633. taskno, taskno, temptype, MESSAGE);
  634. }
  635. else
  636. {
  637. result = string.Format("任务[{0}]手动完成成功。", taskno);
  638. }
  639. });
  640. if (!string.IsNullOrEmpty(errorresult)) result = errorresult;
  641. return result;
  642. }
  643. public static DateTime QuerySystemDate()
  644. {
  645. DateTime dt = DateTime.MinValue;
  646. TryCachHelper.TryExecute((db) =>
  647. {
  648. dt = db.Ado.GetDateTime("select sysdate from dual");
  649. });
  650. return dt;
  651. }
  652. public static void Equipment_UpdateLock(string equipmentNo, bool islock)
  653. {
  654. TryCachHelper.TryExecute((db) =>
  655. {
  656. db.Updateable<WCS_EQUIPMENTLOCK>().UpdateColumns(it => new WCS_EQUIPMENTLOCK() { ISLOCK = islock, UPDATETIME = DateTime.Now })
  657. .Where(it => it.EQUIPMENTNO == equipmentNo).ExecuteCommand();
  658. });
  659. }
  660. public static List<Frm.WCS_SC521> QueryStackerdDataDDJ(List<string> plcnameSet)
  661. {
  662. var stackerdDataSet = new List<Frm.WCS_SC521>();
  663. TryCachHelper.TryExecute((db) =>
  664. {
  665. stackerdDataSet = db.Queryable<Frm.WCS_SC521>().Where(v => plcnameSet.Contains(v.DEVICECODE) && v.ISLAST == true).ToList();
  666. });
  667. return stackerdDataSet;
  668. }
  669. public static List<Frm.WCS_RGV521> QueryStackerdDataRGV(List<string> plcnameSet)
  670. {
  671. var stackerdDataSet = new List<Frm.WCS_RGV521>();
  672. TryCachHelper.TryExecute((db) =>
  673. {
  674. stackerdDataSet = db.Queryable<Frm.WCS_RGV521>().Where(v => plcnameSet.Contains(v.DEVICECODE) && v.ISLAST == true).ToList();
  675. });
  676. return stackerdDataSet;
  677. }
  678. public static List<WCS_TASK> QueryTasks()
  679. {
  680. var tasks = new List<WCS_TASK>();
  681. TryCachHelper.TryExecute((db) =>
  682. {
  683. tasks = db.Queryable<WCS_TASK>().ToList();
  684. });
  685. return tasks;
  686. }
  687. public static void TaskUpdatePriority(SqlSugarClient db, int task_no, int priority)
  688. {
  689. if (db.Updateable<WCS_TASK>()
  690. .UpdateColumns(it => new WCS_TASK
  691. {
  692. Priority = priority,
  693. })
  694. .Where(v => v.ID == task_no).ExecuteCommand() < 0)
  695. {
  696. throw new Exception(string.Format("任务[{0}]修改优先级为[{0}]失败", task_no, priority));
  697. }
  698. }
  699. /// <summary>
  700. /// 任务完成
  701. /// </summary>
  702. /// <param name="task_no"></param>
  703. /// <param name="finishType"></param>
  704. /// <param name="message"></param>
  705. /// <returns></returns>
  706. public static bool BZ_TASKCOMPLETE(int task_no, int finishType, out string message)
  707. {
  708. message = string.Empty;
  709. return true;
  710. }
  711. /// <summary>
  712. /// 任务取消
  713. /// </summary>
  714. /// <param name="task_no">任务号</param>
  715. /// <param name="msg">消息</param>
  716. /// <returns>是否取消成功</returns>
  717. public static bool TaskCancel(int task_no, out string msg)
  718. {
  719. msg = string.Empty;
  720. return true;
  721. }
  722. public static string RestartTask(int task_no)
  723. {
  724. string result = TryCachHelper.TryExecute((db) =>
  725. {
  726. var task = db.Queryable<WCS_TASK>().First(v => v.ID == task_no);
  727. if (task == null)
  728. {
  729. throw new Exception(string.Format("未查询到[{0}]信息", task_no));
  730. }
  731. else
  732. {
  733. if (task.TYPE == WCS.Entity.TaskType.出库 && task.STATUS > 0 && task.STATUS < WCS.Entity.TaskStatus.已完成)
  734. {
  735. if (db.Updateable<WCS_TASK>()
  736. .UpdateColumns(it => new WCS_TASK
  737. {
  738. STATUS = 0,
  739. UPDATETIME = DateTime.Now
  740. })
  741. .Where(v => v.ID == task_no).ExecuteCommand() < 0)
  742. {
  743. throw new Exception(string.Format("任务[{0}]重置失败", task_no));
  744. }
  745. }
  746. else
  747. {
  748. throw new Exception(string.Format("任务[{0}]不是出库任务或者是已完成的出库不能执行[重下任务]", task_no));
  749. }
  750. }
  751. });
  752. return result;
  753. }
  754. public static string FinishTask(int task_no)
  755. {
  756. string result = TryCachHelper.TryExecute((db) =>
  757. {
  758. var task = db.Queryable<WCS_TASK>().First(v => v.ID == task_no);
  759. if (task == null)
  760. {
  761. throw new Exception(string.Format("未查询到[{0}]信息", task_no));
  762. }
  763. else
  764. {
  765. if (task.STATUS > WCS.Entity.TaskStatus.新建)
  766. {
  767. if (db.Updateable<WCS_TASK>()
  768. .UpdateColumns(it => new WCS_TASK
  769. {
  770. STATUS = WCS.Entity.TaskStatus.已完成,
  771. UPDATEUSER = CurrentHelper.User.USER_NO,
  772. UPDATETIME = DateTime.Now
  773. })
  774. .Where(v => v.ID == task_no).ExecuteCommand() < 0)
  775. {
  776. throw new Exception(string.Format("任务[{0}]手动完成失败", task_no));
  777. }
  778. }
  779. else
  780. {
  781. throw new Exception(string.Format("任务[{0}]未执行,不能执行[手动完成].", task_no));
  782. }
  783. }
  784. });
  785. return result;
  786. }
  787. public static string ClearTask(int task_no)
  788. {
  789. string result = TryCachHelper.TryTranExecute((db) =>
  790. {
  791. var task = db.Queryable<WCS_TASK>().First(v => v.ID == task_no);
  792. if (task == null)
  793. {
  794. throw new Exception(string.Format("未查询到[{0}]信息", task_no));
  795. }
  796. else
  797. {
  798. if (task.STATUS < WCS.Entity.TaskStatus.已完成)
  799. {
  800. if (db.Updateable<WCS_TASK>()
  801. .UpdateColumns(it => new WCS_TASK
  802. {
  803. STATUS = WCS.Entity.TaskStatus.已取消,
  804. UPDATETIME = DateTime.Now
  805. })
  806. .Where(v => v.ID == task_no).ExecuteCommand() < 0)
  807. {
  808. throw new Exception(string.Format("任务[{0}]取消失败", task_no));
  809. }
  810. }
  811. else
  812. {
  813. throw new Exception(string.Format("任务[{0}]已完成或已取消,不能执行取消动作。", task_no));
  814. }
  815. }
  816. });
  817. return result;
  818. }
  819. public static string UdpateEndAddress(int task_no, string whid, string srm)
  820. {
  821. string nextAddress = string.Empty;
  822. var dicSet = new Dictionary<string, string>();
  823. string result = TryCachHelper.TryTranExecute((db) =>
  824. {
  825. if (string.IsNullOrWhiteSpace(srm))
  826. {
  827. throw new Exception(string.Format("请选择要变更的堆垛机"));
  828. }
  829. if (whid == "原料库")
  830. {
  831. dicSet.Add("srm01", "1092");
  832. dicSet.Add("srm02", "1094");
  833. dicSet.Add("srm03", "1096");
  834. dicSet.Add("srm04", "1098");
  835. dicSet.Add("srm05", "1100");
  836. }
  837. else if (whid == "成品库")
  838. {
  839. dicSet.Add("srm06", "2324");
  840. dicSet.Add("srm07", "2320");
  841. dicSet.Add("srm08", "2316");
  842. dicSet.Add("srm09", "2312");
  843. dicSet.Add("srm10", "2308");
  844. dicSet.Add("srm11", "2304");
  845. }
  846. else
  847. {
  848. throw new Exception(string.Format("仓库[{0}]错误。", whid));
  849. }
  850. nextAddress = dicSet[srm];
  851. var task = db.Queryable<WCS_TASK>().First(v => v.ID == task_no);
  852. if (task == null)
  853. {
  854. throw new Exception(string.Format("未查询到[{0}]信息", task_no));
  855. }
  856. else
  857. {
  858. if (task.ADDRTO.Length >= 10)
  859. {
  860. throw new Exception(string.Format("任务[{0}]已经分配货位,不能变更目标地址。", task_no));
  861. }
  862. else
  863. {
  864. if (db.Updateable<WCS_TASK>()
  865. .UpdateColumns(it => new WCS_TASK
  866. {
  867. ADDRNEXT = nextAddress,
  868. ADDRTO = srm,
  869. DEVICE = srm,
  870. TUNNEL = srm,
  871. UPDATEUSER = CurrentHelper.User.Use_Name,
  872. UPDATETIME = DateTime.Now
  873. })
  874. .Where(v => v.ID == task_no).ExecuteCommand() < 0)
  875. {
  876. throw new Exception(string.Format("任务[{0}]修改目标地址失败", task_no));
  877. }
  878. string msg = string.Format("任务[{0}]手动修改下个地址为[{1}]目标地址为[{2}]成功。", task_no, nextAddress, srm);
  879. var task_dtl = new WCS_TASK_DTL();
  880. task_dtl.ID = Guid.NewGuid().ToString();
  881. task_dtl.PARENTID = task_no;
  882. task_dtl.TASKNO = task_no.ToString();
  883. //task_dtl.POSIDCUR = task.ADDRFROM;
  884. task_dtl.POSIDNEXT = nextAddress;
  885. task_dtl.DESCRIPTION = msg;
  886. task_dtl.EXECUTEDATE = DateTime.Now;
  887. db.Insertable(task_dtl).ExecuteCommand();
  888. }
  889. }
  890. });
  891. if (string.IsNullOrWhiteSpace(result))
  892. {
  893. result = string.Format("任务[{0}]修改下个地址为[{1}]目标地址为[{2}]成功。", task_no, nextAddress, srm);
  894. }
  895. return result;
  896. }
  897. public static string UpdateTaskPriority(int task_no, int priority)
  898. {
  899. string result = TryCachHelper.TryTranExecute((db) =>
  900. {
  901. var task = db.Queryable<WCS_TASK>().First(v => v.ID == task_no);
  902. if (task == null)
  903. {
  904. throw new Exception(string.Format("未查询到WCS任务[{0}]信息", task_no));
  905. }
  906. else
  907. {
  908. if (db.Updateable<WCS_TASK>()
  909. .UpdateColumns(it => new WCS_TASK
  910. {
  911. Priority = priority,
  912. UPDATEUSER = CurrentHelper.User.Use_Name,
  913. UPDATETIME = DateTime.Now
  914. })
  915. .Where(v => v.ID == task_no).ExecuteCommand() < 0)
  916. {
  917. throw new Exception(string.Format("WCS任务[{0}]调整优先级失败", task_no));
  918. }
  919. string msg = string.Format("任务[{0}]调整优先级为[{1}]成功。", task_no, priority);
  920. }
  921. });
  922. if (string.IsNullOrWhiteSpace(result))
  923. {
  924. result = string.Format("任务[{0}]调整优先级[{1}]成功。", task_no, priority);
  925. }
  926. return result;
  927. }
  928. public static string CMByWorkShop(string txtcbworkshopno, string txtcbprolineno)
  929. {
  930. string result = TryCachHelper.TryTranExecute((db) =>
  931. {
  932. //创建AGV任务
  933. var agvtask = new Frm.WCS_AGVTask()
  934. {
  935. AGVStatus = Frm.AGVTaskStatus.新建,
  936. Status = Frm.AGVTaskStatus.新建,
  937. Position = txtcbprolineno,
  938. TaskType = Frm.AGVTaskType.叫料,
  939. CreateTime = DateTime.Now,
  940. UpdateTime = DateTime.Now,
  941. Workshop = int.Parse(txtcbworkshopno),
  942. Station = "G1340"
  943. };
  944. int task_id = db.Insertable(agvtask).ExecuteReturnIdentity();
  945. if (task_id <= 0)
  946. {
  947. throw new Exception(string.Format("WCS任务[{0}]添加agv任务失败", task_id));
  948. }
  949. });
  950. if (string.IsNullOrWhiteSpace(result))
  951. {
  952. result = string.Format("车间叫料成功!");
  953. }
  954. return result;
  955. }
  956. }
  957. }