BaseWorkflow.cs 52 KB

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