using CCWin; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using WCS_Client.Models; using WCS_Client.UC; using WCS_Client.Utility; namespace WCS_Client.From { public partial class Form_Task : CCSkinMain { DataTable _dt; DataRow _currentDr; public Form_Task() { InitializeComponent(); Bind(); SelectedRow(true); if (_currentDr != null) { BindingDataDtl(_currentDr["TASK_ID"].ToString()); } } private static Form_Task childFromInstanc; public static Form_Task ChildFromInstanc { get { if (childFromInstanc == null || childFromInstanc.IsDisposed) { childFromInstanc = new Form_Task(); } return childFromInstanc; } } //绑定数据 private void Bind() { string sqlstr = string.Format(@"select t.*,m.MEP_MAPPINGCHNAME task_comtypech,me.MEP_MAPPINGCHNAME task_wkstatusch from dbo.WCS_TASK t left join WCS_MAPPINGENTRY m on t.task_comtype = m.MEP_MAPPINGNO and m.MEP_MAPPINGTYPE = 'COMTYPE' left join WCS_MAPPINGENTRY me on t.task_wkstatus = me.MEP_MAPPINGNO and me.MEP_MAPPINGTYPE = 'WkStatus' "); PageData pd = QueryPageDataMethods(1, 10000,sqlstr); if (pd != null) { _dt = pd.Dt; dgvTask.DataSource = _dt; } else { if (_dt != null) _dt.Clear(); } } //获取数据集 private PageData QueryPageDataMethods(int PageIndex, int PageSize,string sqlstr) { string _Orderby = " task_no asc"; PageData pd = BaseWorkflow.QueryPageData(sqlstr, _Orderby, new List(), PageIndex, PageSize); return pd; } private void BtnRefresh_Click(object sender, EventArgs e) { Bind(); } private void dgvTask_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) { SelectedRow(true); BindingDataDtl(_currentDr["TASK_ID"].ToString()); } protected virtual bool SelectedRow(bool isFrist) { _currentDr = GetDgvRow("TASK_ID"); if (_currentDr == null) { if (isFrist == false) { MessageUtil.ShowWarning("请选中行!!!"); } return false; } return true; } public DataRow GetDgvRow(string cellName) { try { if (dgvTask.CurrentCell == null) return null; if (dgvTask.CurrentCell.RowIndex >= 0) { string no = Convert.ToString(dgvTask.Rows[dgvTask.CurrentCell.RowIndex].Cells[cellName].Value); return _dt.Select(cellName + "='" + no + "'")[0]; } return null; } catch (Exception ex) { return null; } } DataTable _dtdtl = null; private void BindingDataDtl(string task_Id) { 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+"'"; string _Orderby = " executedate asc"; PageData pd = BaseWorkflow.QueryPageData(_SQLText, _Orderby, new List(), 1, 10000); if (pd == null) { if (_dtdtl != null) _dtdtl.Clear(); } else { _dtdtl = pd.Dt; dgvTaskdtl.DataSource = pd.Dt; } } private void sknBinResetSrm_Click(object sender, EventArgs e) { if (_currentDr == null) { MessageBox.Show("请选择手动处理的任务。"); } else { int taskid = Convert.ToInt32(_currentDr["TASK_NO"].ToString()); string taskno = _currentDr["TASK_NO"].ToString(); DialogResult dr = MessageUtil.ShowYesNoAndWarning(string.Format("任务[{0}]确定要执行[重下堆垛机]吗(谨慎操作)?", taskno)); if (dr != DialogResult.Yes) return; string result= BaseWorkflow.UpdateTask(taskid, TaskStatusType.重下堆垛机); MessageBox.Show(result); Bind(); } } private void sknBtnOnMaterResetAGV_Click(object sender, EventArgs e) { if (_currentDr == null) { MessageBox.Show("请选择手动处理的任务。"); } else { int taskid = Convert.ToInt32(_currentDr["TASK_NO"].ToString()); string taskno = _currentDr["TASK_NO"].ToString(); DialogResult dr = MessageUtil.ShowYesNoAndWarning(string.Format("任务[{0}]确定要执行[重下RGV上料]吗(谨慎操作)?", taskno)); if (dr != DialogResult.Yes) return; string result = BaseWorkflow.UpdateTask(taskid, TaskStatusType.重下RGV上料); MessageBox.Show(result); Bind(); } } private void sknBinUpMaterResetAGV_Click(object sender, EventArgs e) { if (_currentDr == null) { MessageBox.Show("请选择手动处理的任务。"); } else { int taskid = Convert.ToInt32(_currentDr["TASK_NO"].ToString()); string taskno = _currentDr["TASK_NO"].ToString(); DialogResult dr = MessageUtil.ShowYesNoAndWarning(string.Format("任务[{0}]确定要执行[重下RGV下料]吗(谨慎操作)?", taskno)); if (dr != DialogResult.Yes) return; string result = BaseWorkflow.UpdateTask(taskid, TaskStatusType.重下RGV下料); MessageBox.Show(result); Bind(); } } private void sknBinTaskFinish_Click(object sender, EventArgs e) { if (_currentDr == null) { MessageBox.Show("请选择手动完成的任务。"); } else { int taskno = Convert.ToInt32(_currentDr["TASK_NO"]); int tasktype = Convert.ToInt32(_currentDr["TASK_COMTYPE"]); DialogResult dr = MessageUtil.ShowYesNoAndWarning(string.Format("任务[{0}]确定要执行[手动完成]吗(谨慎操作)?", taskno)); if (dr != DialogResult.Yes) return; int temptype = 0; if (tasktype == 1) { temptype = 1;//入库完成 } else if (tasktype == 2) { string errormsg = TryCachHelper.TryExecute((db)=>{ var task = db.Queryable().First(v => v.TASK_NO == taskno); if (task != null && task.TASK_WKSTATUS == 5)//堆垛机出库完成 { temptype = 2; string completeMsg = string.Empty; bool abc = BaseWorkflow.BZ_TASKCOMPLETE(taskno, temptype, out completeMsg); if (abc == false) { throw new Exception(completeMsg); } } temptype = 4;//出库完成 }); if (!string.IsNullOrWhiteSpace(errormsg)) { MessageBox.Show(errormsg); return; } } else if (tasktype == 4) { temptype = 4;//出库完成 } else if (tasktype == 2 || tasktype == 4) { temptype = 4;//出库完成 } else if (tasktype == 3) { temptype = 3;//移库完成 } else if (tasktype == 5) { temptype = 5;//堆垛机码盘完成 } string msg = string.Empty; bool result = BaseWorkflow.BZ_TASKCOMPLETE(taskno, temptype, out msg); MessageBox.Show(msg); Bind(); } } private void sknBtnResertTask_Click(object sender, EventArgs e) { if (_currentDr == null) { MessageBox.Show("请选择手动处理的任务。"); } else { string taskid = _currentDr["TASK_ID"].ToString(); string taskno = _currentDr["TASK_NO"].ToString(); DialogResult dr = MessageUtil.ShowYesNoAndWarning(string.Format("任务[{0}]确定要执行[重下任务]吗(谨慎操作)?", taskno)); if (dr != DialogResult.Yes) return; string result = BaseWorkflow.UpdateTask(Convert.ToInt32(taskno), TaskStatusType.重下任务); MessageBox.Show(result); Bind(); } } private void sknBtnCancel_Click(object sender, EventArgs e) { if (_currentDr == null) { MessageBox.Show("请选择手动处理的任务。"); } else { string taskno = _currentDr["TASK_NO"].ToString(); DialogResult dr = MessageUtil.ShowYesNoAndWarning(string.Format("任务[{0}]确定要执行[取消任务]吗(谨慎操作)?", taskno)); if (dr != DialogResult.Yes) return; string msg = string.Empty; BaseWorkflow.TaskCancel(Convert.ToInt32(taskno), out msg); MessageBox.Show(msg); Bind(); } } private void btnQuery_Click(object sender, EventArgs e) { 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, task_whid, task_adduserno, task_adddatetime, task_edituserno, task_editdatetime, task_notes, task_srmno, task_boxbarcode, m.MEP_MAPPINGCHNAME task_comtypech, me.MEP_MAPPINGCHNAME task_wkstatusch,i.F_MATNO,i.F_MATNAME,i.qty FROM wcs_task t left join WCS_MAPPINGENTRY m on t.task_comtype = m.MEP_MAPPINGNO and m.MEP_MAPPINGTYPE = 'COMTYPE' left join WCS_MAPPINGENTRY me on t.task_wkstatus = me.MEP_MAPPINGNO and me.MEP_MAPPINGTYPE = 'WkStatus' left join ( select i.F_MATNO,i.F_MATNAME,i.F_CONTRGRPNO,sum(i.f_qty) qty from wcs_task t left join BILL_INVCONTR i on t.TASK_ITEM5=i.F_CONTRGRPNO where i.F_WAREHOUSENO='WTP' or i.F_WAREHOUSENO='WZZ' group by i.F_MATNO,F_MATNAME,i.F_CONTRGRPNO ) i on t.TASK_ITEM5=i.F_CONTRGRPNO 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}%')", txtSrmNo.Text.Trim(), txtEnd.Text.Trim(), txtBarCode.Text.Trim(), txtTaskNo.Text.Trim(), txtMatNo.Text.Trim(), txtMatNo.Text.Trim()); var pd = QueryPageDataMethods(1,1000,sqlstr); if (pd != null) { _dt = pd.Dt; dgvTask.DataSource = _dt; } else { if (_dt != null) _dt.Clear(); } } private void skBtnCancelNoTask_Click(object sender, EventArgs e) { //string task_id = _currentDr["TASK_NO"].ToString(); //string msg = string.Empty; //TaskWorkflow.Text_out(out msg); // LogHelper.Sys_Log.WriteLog("开始调用函数分配货位"); //string posIdTo = TaskWorkflow.WareCell_Assign2(task_id, out msg); //var srmlist = TaskWorkflow.QuerySrmList(Convert.ToInt32(task_id),out msg); //LogHelper.Sys_Log.WriteLog(string.Format("分配货位调用函数结束,任务[{0}]", task_id)); //MessageBox.Show(msg); //int success = 0; //int failure = 0; //string error = string.Empty; //TryCachHelper.TryExecute((db) => //{ // var tasks = db.Queryable().Where(v => v.TASK_COMTYPE == 2 && v.TASK_WKSTATUS <= 0 && v.TASK_WHID.Trim().ToUpper() == ClassHelper.WearHosNoLX).ToList(); // foreach (var task in tasks) // { // string msg = string.Empty; // bool result = TaskWorkflow.TaskCancel(task.TASK_NO, out msg); // if (result) // { // success++; // } // else // { // failure--; // error = error + msg + "/n"; // } // } //}); //MessageBox.Show(string.Format("取消任务成功[{0}]条,失败[{1}]条.失败原因:[{2}]", success, failure, error)); //string result = TryCachHelper.TryTranExecute((db) => //{ // var task = db.Queryable().First(v => v.TASK_NO == 25080); // db.Updateable() // .UpdateColumns(it => new WCS_TASK() // { // TASK_WKSTATUS = (int)WkStatus.堆垛机执行, // TASK_POSIDNEXT = "1020", // TASK_EDITUSERNO = "WCS", // TASK_EDITDATETIME = DateTime.Now // }) // .Where(it => it.TASK_NO == task.TASK_NO).ExecuteCommand(); // //string msg = string.Format("任务已下发给输送机[{0}]执行,起点地址[{1}]目标地址[{2}]", converywrite.ConveyorNo, converywrite.Goodsstart, converywrite.Goodsend); // //CommonData.AddWCS_TASK_DTL(db, task.TASK_ID, task.TASK_NO, task.TASK_POSIDCUR, converywrite.Goodsend.ToString(), msg); // string msg = string.Format("任务已下发给输送机[0]执行,起点地址[1]目标地址[2]"); // var task_dtl = new WCS_TASK_DTL(); // task_dtl.ID = Guid.NewGuid().ToString(); // task_dtl.PARENTID = "25080"; // task_dtl.TASKNO = "25080"; // task_dtl.POSIDCUR = "1020"; // task_dtl.POSIDNEXT = "1020"; // task_dtl.DESCRIPTION = msg; // task_dtl.EXECUTEDATE = DateTime.Now; // db.Insertable(task_dtl).ExecuteCommand(); //}); } private void btnClear_Click(object sender, EventArgs e) { txtBarCode.Text = string.Empty; txtEnd.Text = string.Empty; txtSrmNo.Text = string.Empty; txtTaskNo.Text = string.Empty; txtMatNo.Text = string.Empty; } private void sknBtnPRIORITY_Click(object sender, EventArgs e) { if (_currentDr == null) { MessageBox.Show("请选择要调整优先级的任务。"); } else { string taskno = _currentDr["TASK_NO"].ToString(); int priority = Convert.ToInt32(_currentDr["TASK_PRIORITY"].ToString()); var form_Priority = new Form_PRIORITY(taskno, priority); form_Priority.ShowDialog(); Bind(); } } } }