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