BaseWorkflow.cs 56 KB

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