BaseWorkflow.cs 58 KB

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