Form_Task.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403
  1. using CCWin;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using WCS_Client.Models;
  12. using WCS_Client.UC;
  13. using WCS_Client.Utility;
  14. namespace WCS_Client.From
  15. {
  16. public partial class Form_Task : CCSkinMain
  17. {
  18. DataTable _dt;
  19. DataRow _currentDr;
  20. public Form_Task()
  21. {
  22. InitializeComponent();
  23. Bind();
  24. SelectedRow(true);
  25. if (_currentDr != null)
  26. {
  27. BindingDataDtl(_currentDr["TASK_ID"].ToString());
  28. }
  29. }
  30. private static Form_Task childFromInstanc;
  31. public static Form_Task ChildFromInstanc
  32. {
  33. get
  34. {
  35. if (childFromInstanc == null || childFromInstanc.IsDisposed)
  36. {
  37. childFromInstanc = new Form_Task();
  38. }
  39. return childFromInstanc;
  40. }
  41. }
  42. //绑定数据
  43. private void Bind()
  44. {
  45. string sqlstr = string.Format(@"select t.*,m.MEP_MAPPINGCHNAME task_comtypech,me.MEP_MAPPINGCHNAME task_wkstatusch from dbo.WCS_TASK t
  46. left join WCS_MAPPINGENTRY m on t.task_comtype = m.MEP_MAPPINGNO and m.MEP_MAPPINGTYPE = 'COMTYPE'
  47. left join WCS_MAPPINGENTRY me on t.task_wkstatus = me.MEP_MAPPINGNO and me.MEP_MAPPINGTYPE = 'WkStatus' ");
  48. PageData pd = QueryPageDataMethods(1, 10000,sqlstr);
  49. if (pd != null)
  50. {
  51. _dt = pd.Dt;
  52. dgvTask.DataSource = _dt;
  53. }
  54. else
  55. {
  56. if (_dt != null) _dt.Clear();
  57. }
  58. }
  59. //获取数据集
  60. private PageData QueryPageDataMethods(int PageIndex, int PageSize,string sqlstr)
  61. {
  62. string _Orderby = " task_no asc";
  63. PageData pd = BaseWorkflow.QueryPageData(sqlstr, _Orderby, new List<string>(), PageIndex, PageSize);
  64. return pd;
  65. }
  66. private void BtnRefresh_Click(object sender, EventArgs e)
  67. {
  68. Bind();
  69. }
  70. private void dgvTask_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
  71. {
  72. SelectedRow(true);
  73. BindingDataDtl(_currentDr["TASK_ID"].ToString());
  74. }
  75. protected virtual bool SelectedRow(bool isFrist)
  76. {
  77. _currentDr = GetDgvRow("TASK_ID");
  78. if (_currentDr == null)
  79. {
  80. if (isFrist == false)
  81. {
  82. MessageUtil.ShowWarning("请选中行!!!");
  83. }
  84. return false;
  85. }
  86. return true;
  87. }
  88. public DataRow GetDgvRow(string cellName)
  89. {
  90. try
  91. {
  92. if (dgvTask.CurrentCell == null) return null;
  93. if (dgvTask.CurrentCell.RowIndex >= 0)
  94. {
  95. string no = Convert.ToString(dgvTask.Rows[dgvTask.CurrentCell.RowIndex].Cells[cellName].Value);
  96. return _dt.Select(cellName + "='" + no + "'")[0];
  97. }
  98. return null;
  99. }
  100. catch (Exception ex)
  101. {
  102. return null;
  103. }
  104. }
  105. DataTable _dtdtl = null;
  106. private void BindingDataDtl(string task_Id)
  107. {
  108. string _SQLText = @"SELECT id,parentid,taskno,posidcur,posidnext,description,notes,to_char(executedate,'yyyy-MM-dd hh24:mi:ss') executedate FROM wcs_task_dtl where parentid='" + task_Id+"'";
  109. string _Orderby = " executedate asc";
  110. PageData pd = BaseWorkflow.QueryPageData(_SQLText, _Orderby, new List<string>(), 1, 10000);
  111. if (pd == null)
  112. {
  113. if (_dtdtl != null) _dtdtl.Clear();
  114. }
  115. else
  116. {
  117. _dtdtl = pd.Dt;
  118. dgvTaskdtl.DataSource = pd.Dt;
  119. }
  120. }
  121. private void sknBinResetSrm_Click(object sender, EventArgs e)
  122. {
  123. if (_currentDr == null)
  124. {
  125. MessageBox.Show("请选择手动处理的任务。");
  126. }
  127. else
  128. {
  129. int taskid = Convert.ToInt32(_currentDr["TASK_NO"].ToString());
  130. string taskno = _currentDr["TASK_NO"].ToString();
  131. DialogResult dr = MessageUtil.ShowYesNoAndWarning(string.Format("任务[{0}]确定要执行[重下堆垛机]吗(谨慎操作)?", taskno));
  132. if (dr != DialogResult.Yes) return;
  133. string result= BaseWorkflow.UpdateTask(taskid, TaskStatusType.重下堆垛机);
  134. MessageBox.Show(result);
  135. Bind();
  136. }
  137. }
  138. private void sknBtnOnMaterResetAGV_Click(object sender, EventArgs e)
  139. {
  140. if (_currentDr == null)
  141. {
  142. MessageBox.Show("请选择手动处理的任务。");
  143. }
  144. else
  145. {
  146. int taskid = Convert.ToInt32(_currentDr["TASK_NO"].ToString());
  147. string taskno = _currentDr["TASK_NO"].ToString();
  148. DialogResult dr = MessageUtil.ShowYesNoAndWarning(string.Format("任务[{0}]确定要执行[重下RGV上料]吗(谨慎操作)?", taskno));
  149. if (dr != DialogResult.Yes) return;
  150. string result = BaseWorkflow.UpdateTask(taskid, TaskStatusType.重下RGV上料);
  151. MessageBox.Show(result);
  152. Bind();
  153. }
  154. }
  155. private void sknBinUpMaterResetAGV_Click(object sender, EventArgs e)
  156. {
  157. if (_currentDr == null)
  158. {
  159. MessageBox.Show("请选择手动处理的任务。");
  160. }
  161. else
  162. {
  163. int taskid = Convert.ToInt32(_currentDr["TASK_NO"].ToString());
  164. string taskno = _currentDr["TASK_NO"].ToString();
  165. DialogResult dr = MessageUtil.ShowYesNoAndWarning(string.Format("任务[{0}]确定要执行[重下RGV下料]吗(谨慎操作)?", taskno));
  166. if (dr != DialogResult.Yes) return;
  167. string result = BaseWorkflow.UpdateTask(taskid, TaskStatusType.重下RGV下料);
  168. MessageBox.Show(result);
  169. Bind();
  170. }
  171. }
  172. private void sknBinTaskFinish_Click(object sender, EventArgs e)
  173. {
  174. if (_currentDr == null)
  175. {
  176. MessageBox.Show("请选择手动完成的任务。");
  177. }
  178. else
  179. {
  180. int taskno = Convert.ToInt32(_currentDr["TASK_NO"]);
  181. int tasktype = Convert.ToInt32(_currentDr["TASK_COMTYPE"]);
  182. DialogResult dr = MessageUtil.ShowYesNoAndWarning(string.Format("任务[{0}]确定要执行[手动完成]吗(谨慎操作)?", taskno));
  183. if (dr != DialogResult.Yes) return;
  184. int temptype = 0;
  185. if (tasktype == 1)
  186. {
  187. temptype = 1;//入库完成
  188. }
  189. else if (tasktype == 2)
  190. {
  191. string errormsg = TryCachHelper.TryExecute((db)=>{
  192. var task = db.Queryable<Models.WCS_TASK>().First(v => v.TASK_NO == taskno);
  193. if (task != null && task.TASK_WKSTATUS == 5)//堆垛机出库完成
  194. {
  195. temptype = 2;
  196. string completeMsg = string.Empty;
  197. bool abc = BaseWorkflow.BZ_TASKCOMPLETE(taskno, temptype, out completeMsg);
  198. if (abc == false)
  199. {
  200. throw new Exception(completeMsg);
  201. }
  202. }
  203. temptype = 4;//出库完成
  204. });
  205. if (!string.IsNullOrWhiteSpace(errormsg))
  206. {
  207. MessageBox.Show(errormsg);
  208. return;
  209. }
  210. }
  211. else if (tasktype == 4)
  212. {
  213. temptype = 4;//出库完成
  214. }
  215. else if (tasktype == 2 || tasktype == 4)
  216. {
  217. temptype = 4;//出库完成
  218. }
  219. else if (tasktype == 3)
  220. {
  221. temptype = 3;//移库完成
  222. }
  223. else if (tasktype == 5)
  224. {
  225. temptype = 5;//堆垛机码盘完成
  226. }
  227. string msg = string.Empty;
  228. bool result = BaseWorkflow.BZ_TASKCOMPLETE(taskno, temptype, out msg);
  229. MessageBox.Show(msg);
  230. Bind();
  231. }
  232. }
  233. private void sknBtnResertTask_Click(object sender, EventArgs e)
  234. {
  235. if (_currentDr == null)
  236. {
  237. MessageBox.Show("请选择手动处理的任务。");
  238. }
  239. else
  240. {
  241. string taskid = _currentDr["TASK_ID"].ToString();
  242. string taskno = _currentDr["TASK_NO"].ToString();
  243. DialogResult dr = MessageUtil.ShowYesNoAndWarning(string.Format("任务[{0}]确定要执行[重下任务]吗(谨慎操作)?", taskno));
  244. if (dr != DialogResult.Yes) return;
  245. string result = BaseWorkflow.UpdateTask(Convert.ToInt32(taskno), TaskStatusType.重下任务);
  246. MessageBox.Show(result);
  247. Bind();
  248. }
  249. }
  250. private void sknBtnCancel_Click(object sender, EventArgs e)
  251. {
  252. if (_currentDr == null)
  253. {
  254. MessageBox.Show("请选择手动处理的任务。");
  255. }
  256. else
  257. {
  258. string taskno = _currentDr["TASK_NO"].ToString();
  259. DialogResult dr = MessageUtil.ShowYesNoAndWarning(string.Format("任务[{0}]确定要执行[取消任务]吗(谨慎操作)?", taskno));
  260. if (dr != DialogResult.Yes) return;
  261. string msg = string.Empty;
  262. BaseWorkflow.TaskCancel(Convert.ToInt32(taskno), out msg);
  263. MessageBox.Show(msg);
  264. Bind();
  265. }
  266. }
  267. private void btnQuery_Click(object sender, EventArgs e)
  268. {
  269. string sqlstr = string.Format(@"SELECT task_id,task_no,task_systype,TASK_COMTYPE,task_posidfrom,task_posidcur,task_posidnext,task_posidto,task_posidmove,task_priority,
  270. task_whid, task_adduserno, task_adddatetime, task_edituserno, task_editdatetime, task_notes, task_srmno, task_boxbarcode,
  271. m.MEP_MAPPINGCHNAME task_comtypech, me.MEP_MAPPINGCHNAME task_wkstatusch,i.F_MATNO,i.F_MATNAME,i.qty
  272. FROM wcs_task t
  273. left join WCS_MAPPINGENTRY m on t.task_comtype = m.MEP_MAPPINGNO and m.MEP_MAPPINGTYPE = 'COMTYPE'
  274. left join WCS_MAPPINGENTRY me on t.task_wkstatus = me.MEP_MAPPINGNO and me.MEP_MAPPINGTYPE = 'WkStatus'
  275. left join
  276. (
  277. select i.F_MATNO,i.F_MATNAME,i.F_CONTRGRPNO,sum(i.f_qty) qty from wcs_task t
  278. left join BILL_INVCONTR i on t.TASK_ITEM5=i.F_CONTRGRPNO
  279. where i.F_WAREHOUSENO='WTP' or i.F_WAREHOUSENO='WZZ'
  280. group by i.F_MATNO,F_MATNAME,i.F_CONTRGRPNO
  281. ) i on t.TASK_ITEM5=i.F_CONTRGRPNO
  282. where task_srmno like '%{0}%' and task_posidto like '%{1}%' and task_boxbarcode like '%{2}%' and task_no like '%{3}%' and (nvl(i.F_MATNO,0) like '%{4}%' or nvl(i.F_MATNAME,0) like '%{5}%')",
  283. txtSrmNo.Text.Trim(), txtEnd.Text.Trim(), txtBarCode.Text.Trim(), txtTaskNo.Text.Trim(), txtMatNo.Text.Trim(), txtMatNo.Text.Trim());
  284. var pd = QueryPageDataMethods(1,1000,sqlstr);
  285. if (pd != null)
  286. {
  287. _dt = pd.Dt;
  288. dgvTask.DataSource = _dt;
  289. }
  290. else
  291. {
  292. if (_dt != null) _dt.Clear();
  293. }
  294. }
  295. private void skBtnCancelNoTask_Click(object sender, EventArgs e)
  296. {
  297. //string task_id = _currentDr["TASK_NO"].ToString();
  298. //string msg = string.Empty;
  299. //TaskWorkflow.Text_out(out msg);
  300. // LogHelper.Sys_Log.WriteLog("开始调用函数分配货位");
  301. //string posIdTo = TaskWorkflow.WareCell_Assign2(task_id, out msg);
  302. //var srmlist = TaskWorkflow.QuerySrmList(Convert.ToInt32(task_id),out msg);
  303. //LogHelper.Sys_Log.WriteLog(string.Format("分配货位调用函数结束,任务[{0}]", task_id));
  304. //MessageBox.Show(msg);
  305. //int success = 0;
  306. //int failure = 0;
  307. //string error = string.Empty;
  308. //TryCachHelper.TryExecute((db) =>
  309. //{
  310. // var tasks = db.Queryable<WCS_TASK>().Where(v => v.TASK_COMTYPE == 2 && v.TASK_WKSTATUS <= 0 && v.TASK_WHID.Trim().ToUpper() == ClassHelper.WearHosNoLX).ToList();
  311. // foreach (var task in tasks)
  312. // {
  313. // string msg = string.Empty;
  314. // bool result = TaskWorkflow.TaskCancel(task.TASK_NO, out msg);
  315. // if (result)
  316. // {
  317. // success++;
  318. // }
  319. // else
  320. // {
  321. // failure--;
  322. // error = error + msg + "/n";
  323. // }
  324. // }
  325. //});
  326. //MessageBox.Show(string.Format("取消任务成功[{0}]条,失败[{1}]条.失败原因:[{2}]", success, failure, error));
  327. //string result = TryCachHelper.TryTranExecute((db) =>
  328. //{
  329. // var task = db.Queryable<WCS_TASK>().First(v => v.TASK_NO == 25080);
  330. // db.Updateable<WCS_TASK>()
  331. // .UpdateColumns(it => new WCS_TASK()
  332. // {
  333. // TASK_WKSTATUS = (int)WkStatus.堆垛机执行,
  334. // TASK_POSIDNEXT = "1020",
  335. // TASK_EDITUSERNO = "WCS",
  336. // TASK_EDITDATETIME = DateTime.Now
  337. // })
  338. // .Where(it => it.TASK_NO == task.TASK_NO).ExecuteCommand();
  339. // //string msg = string.Format("任务已下发给输送机[{0}]执行,起点地址[{1}]目标地址[{2}]", converywrite.ConveyorNo, converywrite.Goodsstart, converywrite.Goodsend);
  340. // //CommonData.AddWCS_TASK_DTL(db, task.TASK_ID, task.TASK_NO, task.TASK_POSIDCUR, converywrite.Goodsend.ToString(), msg);
  341. // string msg = string.Format("任务已下发给输送机[0]执行,起点地址[1]目标地址[2]");
  342. // var task_dtl = new WCS_TASK_DTL();
  343. // task_dtl.ID = Guid.NewGuid().ToString();
  344. // task_dtl.PARENTID = "25080";
  345. // task_dtl.TASKNO = "25080";
  346. // task_dtl.POSIDCUR = "1020";
  347. // task_dtl.POSIDNEXT = "1020";
  348. // task_dtl.DESCRIPTION = msg;
  349. // task_dtl.EXECUTEDATE = DateTime.Now;
  350. // db.Insertable(task_dtl).ExecuteCommand();
  351. //});
  352. }
  353. private void btnClear_Click(object sender, EventArgs e)
  354. {
  355. txtBarCode.Text = string.Empty;
  356. txtEnd.Text = string.Empty;
  357. txtSrmNo.Text = string.Empty;
  358. txtTaskNo.Text = string.Empty;
  359. txtMatNo.Text = string.Empty;
  360. }
  361. private void sknBtnPRIORITY_Click(object sender, EventArgs e)
  362. {
  363. if (_currentDr == null)
  364. {
  365. MessageBox.Show("请选择要调整优先级的任务。");
  366. }
  367. else
  368. {
  369. string taskno = _currentDr["TASK_NO"].ToString();
  370. int priority = Convert.ToInt32(_currentDr["TASK_PRIORITY"].ToString());
  371. var form_Priority = new Form_PRIORITY(taskno, priority);
  372. form_Priority.ShowDialog();
  373. Bind();
  374. }
  375. }
  376. }
  377. }