BaseWorkflow.cs 54 KB

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