BaseWorkflow.cs 54 KB

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