MBtn_AgvTask.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. using DevComponents.DotNetBar.Layout;
  2. using DevComponents.DotNetBar.SuperGrid;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Windows.Forms;
  7. using WCS.Data.Models;
  8. using WCS_Client.UC;
  9. using WCS_Client.Utility;
  10. namespace WCS_Client.Frm
  11. {
  12. public partial class MBtn_AgvTask : Form
  13. {
  14. private int wcs_task_no = 0;
  15. public MBtn_AgvTask()
  16. {
  17. InitializeComponent();
  18. InitFrm();
  19. }
  20. private void InitFrm()
  21. {
  22. List<GridColumn> GCList = new List<GridColumn>()
  23. {
  24. SuperGridUtil.Get_GridColumn("ID", "任务ID", 80),
  25. SuperGridUtil.Get_GridColumn("AGVID", "AGV任务号", 180),
  26. SuperGridUtil.Get_GridColumn("WCSTASK", "WCS任务号", 80),
  27. SuperGridUtil.Get_GridColumn("WMSTASK", "WMS任务号", 80),
  28. SuperGridUtil.Get_GridColumn("AgvTaskTypeCh", "任务类型", 80),
  29. SuperGridUtil.Get_GridColumn("StatusCh", "任务状态", 80),
  30. SuperGridUtil.Get_GridColumn("AgvStatusCh", "AGV任务状态", 100),
  31. SuperGridUtil.Get_GridColumn("Workshop", "车间", 80),
  32. SuperGridUtil.Get_GridColumn("Station", "站台地址", 60),
  33. SuperGridUtil.Get_GridColumn("Position", "起始地址", 100),
  34. SuperGridUtil.Get_GridColumn("CreateTime", "创建时间", 180),
  35. SuperGridUtil.Get_GridColumn("UpdateTime", "修改时间", 180),
  36. SuperGridUtil.Get_GridColumn("AGVUpdateTime", "AGV修改时间", 180),
  37. };
  38. List<LayoutControlItem> LCIList = new List<LayoutControlItem>();
  39. LCIList.Add(LCItemUtil.Add_TextboxX("ID", "ID:", 20, SubmitMethods, null));
  40. LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "a.ID like '%{0}%'" };
  41. LCIList.Add(LCItemUtil.Add_TextboxX("AGVID", "AGV任务号:", 20, SubmitMethods, null));
  42. LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "a.AGVID like '%{0}%'" }; ;
  43. LCIList.Add(LCItemUtil.Add_TextboxX("WCSTASK", "WCS任务号:", 20, SubmitMethods, null));
  44. LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "t.ID like '%{0}%'" };
  45. LCIList.Add(LCItemUtil.Add_TextboxX("WESTASK", "WMS任务号:", 20, SubmitMethods, null));
  46. LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "t.WMSTASK like '%{0}%'" };
  47. LCIList.Add(LCItemUtil.Add_TextboxX("Position", "起始地址:", 20, SubmitMethods, null));
  48. LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "a.Position like '%{0}%'" };
  49. LCIList.Add(LCItemUtil.Add_TextboxX("Station", "站台地址:", 20, SubmitMethods, null));
  50. LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "a.Station like '%{0}%'" };
  51. LCIList.Add(LCItemUtil.Add_TextboxX("Workshop", "车间:", 20, SubmitMethods, null));
  52. LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "a.Workshop like '%{0}%'" };
  53. LCIList.Add(LCItemUtil.Add_ComboBoxEx("TaskType", "任务类型:", 20, null, SubmitMethods));
  54. TryCachHelper.TryExecute((db) =>
  55. {
  56. var dtsex = db.Queryable<WCS_MAPPINGENTRY>().Where(v => v.MEP_MAPPINGTYPE == "TaskType").ToList();
  57. DataTable dt = new DataTable();
  58. DataRow dr;
  59. dt.Columns.Add("MEP_MAPPINGNO");
  60. dt.Columns.Add("MEP_MAPPINGCHNAME");
  61. for (int i = 0; i < dtsex.Count; i++)
  62. {
  63. dr = dt.NewRow();
  64. dr["MEP_MAPPINGNO"] = dtsex[i].MEP_MAPPINGNO;
  65. dr["MEP_MAPPINGCHNAME"] = dtsex[i].MEP_MAPPINGCHNAME;
  66. dt.Rows.Add(dr);
  67. }
  68. LCItemUtil.Refresh_LCItem(LCIList[LCIList.Count - 1], dt, "MEP_MAPPINGNO", "MEP_MAPPINGCHNAME");
  69. LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "a.TaskType like '%{0}%'" };
  70. });
  71. LCIList.Add(LCItemUtil.Add_ComboBoxEx("AGVStatus", "任务状态:", 20, null, SubmitMethods));
  72. TryCachHelper.TryExecute((db) =>
  73. {
  74. var dtsex = db.Queryable<WCS_MAPPINGENTRY>().Where(v => v.MEP_MAPPINGTYPE == "AGVStatus").ToList();
  75. DataTable dt = new DataTable();
  76. DataRow dr;
  77. dt.Columns.Add("MEP_MAPPINGNO");
  78. dt.Columns.Add("MEP_MAPPINGCHNAME");
  79. for (int i = 0; i < dtsex.Count; i++)
  80. {
  81. dr = dt.NewRow();
  82. dr["MEP_MAPPINGNO"] = dtsex[i].MEP_MAPPINGNO;
  83. dr["MEP_MAPPINGCHNAME"] = dtsex[i].MEP_MAPPINGCHNAME;
  84. dt.Rows.Add(dr);
  85. }
  86. LCItemUtil.Refresh_LCItem(LCIList[LCIList.Count - 1], dt, "MEP_MAPPINGNO", "MEP_MAPPINGCHNAME");
  87. LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "a.STATUS like '%{0}%'" };
  88. });
  89. LCIList.Add(LCItemUtil.Add_ButtonX("btn_QDB", "查询", 80, 30, SubmitMethods));
  90. LCIList.Add(LCItemUtil.Add_ButtonX("btn_QClear", "重置", 80, 30, SubmitMethods));
  91. if (CurrentHelper.User.Use_RoleId == 1)
  92. {
  93. LCIList.Add(LCItemUtil.Add_ButtonX("btn_CancelAgvTask", "AGV任务取消", 100, 30, SubmitMethods));
  94. LCIList.Add(LCItemUtil.Add_ButtonX("btn_FinishAgvTask", "AGV任务完成", 100, 30, SubmitMethods));
  95. LCIList.Add(LCItemUtil.Add_ButtonX("btn_SendAgv", "AGV任务重下", 100, 30, SubmitMethods));
  96. LCIList.Add(LCItemUtil.Add_ButtonX("btn_CancelAgvTask_Q", "允许取货", 100, 30, SubmitMethods));
  97. LCIList.Add(LCItemUtil.Add_ButtonX("btn_CancelAgvTask_F", "允许放货", 100, 30, SubmitMethods));
  98. LCIList.Add(LCItemUtil.Add_ButtonX("btn_AllowLeave", "允许离开", 100, 30, SubmitMethods));
  99. LCIList.Add(LCItemUtil.Add_ButtonX("btn_CMBYWorkShop", "车间叫料", 100, 30, SubmitMethods));
  100. }
  101. uC_QueryPage1.Init_QueryPage(60, true, true, "", GCList, LCIList, QueryPageDataMethods, RefreshRoleMethods, DoubleClikMethod, null, null);
  102. uC_QueryPage1.ClearLCItemValue();
  103. CommonShow.ShowProcessing("正在处理中,请稍候...", this, (obj) =>
  104. {
  105. uC_QueryPage1.RefreshData(1, 0);
  106. }, null);
  107. }
  108. private PageData QueryPageDataMethods(int PageIndex, int PageSize)
  109. {
  110. string _SQLText = @"SELECT distinct a.*,t.ID WCSTASK,t.WMSTASK,b.MEP_MAPPINGCHNAME AgvTaskTypeCh,c.MEP_MAPPINGCHNAME StatusCh,d.MEP_MAPPINGCHNAME AgvStatusCh FROM dbo.WCS_AGVTask a
  111. left join dbo.WCS_TASK t on a.ID=t.AgvTask
  112. left join dbo.WCS_MAPPINGENTRY b on a.TaskType=b.MEP_MAPPINGNO and b.MEP_MAPPINGTYPE='TaskType'
  113. left join dbo.WCS_MAPPINGENTRY c on a.Status=c.MEP_MAPPINGNO and c.MEP_MAPPINGTYPE='AGVStatus'
  114. left join dbo.WCS_MAPPINGENTRY d on a.AGVStatus=d.MEP_MAPPINGNO and d.MEP_MAPPINGTYPE='AGVStatus' Where 1=1 and a.Status < (case when b.MEP_MAPPINGCHNAME='入库' then 100 else 99 end) ";
  115. string _Orderby = "a.CreateTime desc";
  116. PageData pd = BaseWorkflow.QueryPageData(_SQLText, _Orderby, uC_QueryPage1.GetQueryWhere(), PageIndex, PageSize);
  117. return pd;
  118. }
  119. private void SubmitMethods(string LCName)
  120. {
  121. //查询
  122. if (LCName == "btn_QDB")
  123. {
  124. uC_QueryPage1.RefreshData();
  125. }
  126. //清除
  127. else if (LCName == "btn_QClear")
  128. {
  129. uC_QueryPage1.ShowOpaqueLayer();
  130. uC_QueryPage1.ClearLCItemValue();
  131. uC_QueryPage1.RefreshData(1, 0);
  132. uC_QueryPage1.HideOpaqueLayer();
  133. }
  134. //重下任务
  135. else if (LCName == "btn_SendAgv")
  136. {
  137. DataTable dt = this.uC_QueryPage1.SCGrid_GetChkRows();
  138. if (dt == null || dt.Rows.Count == 0)
  139. {
  140. MessageUtil.ShowTips("请选择任务。");
  141. return;
  142. }
  143. int id = Convert.ToInt32(dt.Rows[0]["Task_Id"].ToString());
  144. var result = MessageUtil.ShowYesNoAndWarning(string.Format("id[{0}]的任务确定要重下吗(请谨慎操作)?", id));
  145. if (result == DialogResult.Yes)
  146. {
  147. string msg = TryCachHelper.TryExecute((db) =>
  148. {
  149. var wcstask = db.Queryable<WCS_TASK>().First(v => v.AgvTask == id);
  150. if (wcstask == null)
  151. {
  152. throw new Exception(string.Format("AGV任务ID[{0}]未查询到对应的WCS任务", id));
  153. }
  154. var agvtask = db.Queryable<WCS_AGVTask>().First(v => v.ID == id);
  155. if (agvtask.TaskType == AGVTaskType.叫料)
  156. {
  157. agvtask.Status = AGVTaskStatus.确认;
  158. agvtask.AGVStatus = AGVTaskStatus.新建;
  159. db.Updateable(agvtask).UpdateColumns(it => new { it.Status, it.AGVStatus }).ExecuteCommand();
  160. }
  161. else
  162. throw new Exception(string.Format("AGV任务ID[{0}]不是叫料任务,不能重新下发", id));
  163. });
  164. if (string.IsNullOrWhiteSpace(msg)) msg = string.Format("ID[{0}]任务重下成功", id);
  165. MessageUtil.ShowTips(msg);
  166. uC_QueryPage1.RefreshData(1, 0);
  167. }
  168. }
  169. //取消任务
  170. else if (LCName == "btn_CancelAgvTask")
  171. {
  172. DataTable dt = this.uC_QueryPage1.SCGrid_GetChkRows();
  173. if (dt == null || dt.Rows.Count == 0)
  174. {
  175. MessageUtil.ShowTips("请选择任务。");
  176. return;
  177. }
  178. int id = Convert.ToInt32(dt.Rows[0]["ID"].ToString());
  179. var result = MessageUtil.ShowYesNoAndWarning(string.Format("id[{0}]的任务确定要取消吗(请谨慎操作)?", id));
  180. if (result == DialogResult.Yes)
  181. {
  182. string msg = TryCachHelper.TryExecute((db) =>
  183. {
  184. var agvtask = db.Queryable<WCS_AGVTask>().First(v => v.ID == id);
  185. if (agvtask.Status == Frm.AGVTaskStatus.新建)
  186. {
  187. agvtask.Status = Frm.AGVTaskStatus.取消;
  188. db.Updateable(agvtask).UpdateColumns(it => new { it.Status }).ExecuteCommand();
  189. }
  190. else
  191. {
  192. throw new Exception("该类型任务(或非初始状态)暂时不支持取消动作。");
  193. }
  194. });
  195. if (string.IsNullOrWhiteSpace(msg)) msg = string.Format("ID[{0}]任务取消成功", id);
  196. MessageUtil.ShowTips(msg);
  197. uC_QueryPage1.RefreshData(1, 0);
  198. }
  199. }
  200. //完成任务
  201. else if (LCName == "btn_FinishAgvTask")
  202. {
  203. DataTable dt = this.uC_QueryPage1.SCGrid_GetChkRows();
  204. if (dt == null || dt.Rows.Count == 0)
  205. {
  206. MessageUtil.ShowTips("请选择任务。");
  207. return;
  208. }
  209. int id = Convert.ToInt32(dt.Rows[0]["ID"].ToString());
  210. var result = MessageUtil.ShowYesNoAndWarning(string.Format("id[{0}]的任务要手动完成吗(请谨慎操作)?", id));
  211. if (result == DialogResult.Yes)
  212. {
  213. string msg = TryCachHelper.TryExecute((db) =>
  214. {
  215. var agvtask = db.Queryable<WCS_AGVTask>().First(v => v.ID == id);
  216. if (agvtask.TaskType == AGVTaskType.入库)
  217. {
  218. agvtask.Status = AGVTaskStatus.完成扫码;
  219. agvtask.AGVStatus = AGVTaskStatus.完成扫码;
  220. }
  221. else
  222. {
  223. agvtask.Status = AGVTaskStatus.完成;
  224. agvtask.AGVStatus = AGVTaskStatus.完成;
  225. }
  226. agvtask.UpdateTime = DateTime.Now;
  227. db.Updateable(agvtask).UpdateColumns(it => new { it.Status, it.AGVStatus, it.UpdateTime }).ExecuteCommand();
  228. });
  229. if (string.IsNullOrWhiteSpace(msg)) msg = string.Format("ID[{0}]手动完成成功", id);
  230. MessageUtil.ShowTips(msg);
  231. uC_QueryPage1.RefreshData(1, 0);
  232. }
  233. }
  234. //允许取货
  235. else if (LCName == "btn_CancelAgvTask_Q")
  236. {
  237. DataTable dt = this.uC_QueryPage1.SCGrid_GetChkRows();
  238. if (dt == null || dt.Rows.Count == 0)
  239. {
  240. MessageUtil.ShowTips("请选择任务。");
  241. return;
  242. }
  243. int id = Convert.ToInt32(dt.Rows[0]["ID"].ToString());
  244. var result = MessageUtil.ShowYesNoAndWarning(string.Format("id[{0}]的任务确定要允许取货吗(请谨慎操作)?", id));
  245. if (result == DialogResult.Yes)
  246. {
  247. string msg = TryCachHelper.TryExecute((db) =>
  248. {
  249. var agvtask = db.Queryable<WCS_AGVTask>().First(v => v.ID == id);
  250. if (agvtask.AGVStatus == Frm.AGVTaskStatus.请求_允许)
  251. {
  252. agvtask.Status = Frm.AGVTaskStatus.请求_允许;
  253. db.Updateable(agvtask).UpdateColumns(it => new { it.Status }).ExecuteCommand();
  254. }
  255. else
  256. {
  257. throw new Exception("AGV任务状态非请求_允许状态,不支持允许取货动作。");
  258. }
  259. });
  260. if (string.IsNullOrWhiteSpace(msg)) msg = string.Format("ID[{0}]任务允许取货成功", id);
  261. MessageUtil.ShowTips(msg);
  262. uC_QueryPage1.RefreshData(1, 0);
  263. }
  264. }
  265. //允许放货
  266. else if (LCName == "btn_CancelAgvTask_F")
  267. {
  268. DataTable dt = this.uC_QueryPage1.SCGrid_GetChkRows();
  269. if (dt == null || dt.Rows.Count == 0)
  270. {
  271. MessageUtil.ShowTips("请选择任务。");
  272. return;
  273. }
  274. int id = Convert.ToInt32(dt.Rows[0]["ID"].ToString());
  275. var result = MessageUtil.ShowYesNoAndWarning(string.Format("id[{0}]的任务确定要允许放货吗(请谨慎操作)?", id));
  276. if (result == DialogResult.Yes)
  277. {
  278. string msg = TryCachHelper.TryExecute((db) =>
  279. {
  280. var agvtask = db.Queryable<WCS_AGVTask>().First(v => v.ID == id);
  281. if (agvtask.AGVStatus == Frm.AGVTaskStatus.请求_允许)
  282. {
  283. agvtask.Status = Frm.AGVTaskStatus.请求_允许;
  284. db.Updateable(agvtask).UpdateColumns(it => new { it.Status }).ExecuteCommand();
  285. }
  286. else
  287. {
  288. throw new Exception("AGV任务状态非请求_允许状态,不支持放货动作。");
  289. }
  290. });
  291. if (string.IsNullOrWhiteSpace(msg)) msg = string.Format("ID[{0}]任务允许放货成功", id);
  292. MessageUtil.ShowTips(msg);
  293. uC_QueryPage1.RefreshData(1, 0);
  294. }
  295. }
  296. //允许离开
  297. else if (LCName == "btn_AllowLeave")
  298. {
  299. DataTable dt = this.uC_QueryPage1.SCGrid_GetChkRows();
  300. if (dt == null || dt.Rows.Count == 0)
  301. {
  302. MessageUtil.ShowTips("请选择任务。");
  303. return;
  304. }
  305. int id = Convert.ToInt32(dt.Rows[0]["ID"].ToString());
  306. var result = MessageUtil.ShowYesNoAndWarning(string.Format("id[{0}]的任务确定要允许离开吗(请谨慎操作)?", id));
  307. if (result == DialogResult.Yes)
  308. {
  309. string msg = TryCachHelper.TryExecute((db) =>
  310. {
  311. var agvtask = db.Queryable<WCS_AGVTask>().First(v => v.ID == id);
  312. if (agvtask.AGVStatus == Frm.AGVTaskStatus.取放完成)
  313. {
  314. agvtask.Status = Frm.AGVTaskStatus.取放完成;
  315. db.Updateable(agvtask).UpdateColumns(it => new { it.Status }).ExecuteCommand();
  316. }
  317. else
  318. {
  319. throw new Exception("AGV任务状态异常,不支持离开。");
  320. }
  321. });
  322. if (string.IsNullOrWhiteSpace(msg)) msg = string.Format("ID[{0}]任务允许离开成功", id);
  323. MessageUtil.ShowTips(msg);
  324. uC_QueryPage1.RefreshData(1, 0);
  325. }
  326. }
  327. //车间叫料
  328. else if (LCName == "btn_CMBYWorkShop")
  329. {
  330. var frmCMByWorkShop = new FrmCMByWorkShop();
  331. frmCMByWorkShop.ShowDialog();
  332. uC_QueryPage1.RefreshData(1, 0);
  333. }
  334. }
  335. private void DoubleClikMethod(DataRow dr)
  336. {
  337. //wcs_task_no = Convert.ToInt32(dr["TASK_NO"].ToString());
  338. //FrmWCS_TaskDIS_DTL Frm = new FrmWCS_TaskDIS_DTL(wcs_task_no);
  339. //Frm.Show();
  340. }
  341. private void RefreshRoleMethods(bool ChkValue)
  342. {
  343. }
  344. }
  345. }