using DevComponents.DotNetBar.Layout; using DevComponents.DotNetBar.SuperGrid; 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.Data.Models; using WCS_Client; using WCS_Client.UC; using WCS_Client.Utility; namespace WCS_Client.Frm { public partial class MBtn_AgvTask : Form { int wcs_task_no = 0; public MBtn_AgvTask() { InitializeComponent(); InitFrm(); } private void InitFrm() { List GCList = new List() { SuperGridUtil.Get_GridColumn("Task_Id", "ID", 80), SuperGridUtil.Get_GridColumn("Task_AgvNo", "Agv任务号", 100), SuperGridUtil.Get_GridColumn("Task_Remark", "WCS任务号", 80), SuperGridUtil.Get_GridColumn("Task_No", "WMS任务号", 80), SuperGridUtil.Get_GridColumn("AgvTaskTypeCh", "任务类型", 100), SuperGridUtil.Get_GridColumn("Task_Whid", "仓库", 80), SuperGridUtil.Get_GridColumn("Task_BreakTrayNo", "条码", 100), SuperGridUtil.Get_GridColumn("Task_BreakBarCode_1", "退料条码1", 80), SuperGridUtil.Get_GridColumn("Task_BreakBarCode_2", "退料条码2", 80), SuperGridUtil.Get_GridColumn("Task_WorkshopNo", "车间", 80), SuperGridUtil.Get_GridColumn("Task_ProLineNo", "生产线", 80), SuperGridUtil.Get_GridColumn("Task_PosidFrom", "上料点", 120), SuperGridUtil.Get_GridColumn("Task_PosidTo", "下料点", 120), SuperGridUtil.Get_GridColumn("AgvStatusCh", "Agv状态", 100), SuperGridUtil.Get_GridColumn("WcsStatusCh", "Wcs状态", 100), SuperGridUtil.Get_GridColumn("Task_CreateUser", "创建用户", 80), SuperGridUtil.Get_GridColumn("Task_CreateDate", "创建时间", 150), SuperGridUtil.Get_GridColumn("Task_UpdateUser", "修改用户", 80), SuperGridUtil.Get_GridColumn("Task_UpdateDate", "修改时间", 150) }; List LCIList = new List(); LCIList.Add(LCItemUtil.Add_TextboxX("Task_Id", "ID:", 20, SubmitMethods, null)); LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "a.Task_Id like '%{0}%'" }; LCIList.Add(LCItemUtil.Add_TextboxX("TASK_NO", "WCS任务号:", 20, SubmitMethods, null)); LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "a.Task_Remark like '%{0}%'" }; LCIList.Add(LCItemUtil.Add_TextboxX("TASK_WMSNO", "WMS任务号:", 20, SubmitMethods, null)); LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "a.Task_No like '%{0}%'" }; LCIList.Add(LCItemUtil.Add_TextboxX("TASK_BOXBARCODE", "条码:", 20, SubmitMethods, null)); LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "a.Task_BreakTrayNo like '%{0}%'" }; LCIList.Add(LCItemUtil.Add_TextboxX("TASK_POSIDFROM", "起始地址:", 20, SubmitMethods, null)); LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "a.TASK_POSIDFROM like '%{0}%'" }; LCIList.Add(LCItemUtil.Add_TextboxX("TASK_POSIDTO", "目标地址:", 20, SubmitMethods, null)); LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "a.TASK_POSIDTO like '%{0}%'" }; LCIList.Add(LCItemUtil.Add_TextboxX("TASK_WHID", "仓库:", 20, SubmitMethods, null)); LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "a.Task_Whid like '%{0}%'" }; //LCIList.Add(LCItemUtil.Add_ComboBoxEx("Task_ComType", "任务类型:", 20, null, SubmitMethods)); //TryCachHelper.TryExecute((db) => //{ // var dtsex = db.Queryable().Where(v => v.DIC_PARENT_CODE == "TaskType").ToList(); // DataTable dt = new DataTable(); // DataRow dr; // dt.Columns.Add("DIC_SORT"); // dt.Columns.Add("DIC_NAME"); // for (int i = 0; i < dtsex.Count; i++) // { // dr = dt.NewRow(); // dr["DIC_SORT"] = dtsex[i].DIC_SORT; // dr["DIC_NAME"] = dtsex[i].DIC_NAME; // dt.Rows.Add(dr); // } // LCItemUtil.Refresh_LCItem(LCIList[LCIList.Count - 1], dt, "DIC_SORT", "DIC_NAME"); // LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "TASK_COMTYPE like '%{0}%'" }; //}); //LCIList.Add(LCItemUtil.Add_ComboBoxEx("task_wkstatusch", "任务状态:", 20, null, SubmitMethods)); //TryCachHelper.TryExecute((db) => //{ // var dtsex = db.Queryable().Where(v => v.DIC_PARENT_CODE == "TaskStatus").ToList(); // DataTable dt = new DataTable(); // DataRow dr; // dt.Columns.Add("DIC_SORT"); // dt.Columns.Add("DIC_NAME"); // for (int i = 0; i < dtsex.Count; i++) // { // dr = dt.NewRow(); // dr["DIC_SORT"] = dtsex[i].DIC_SORT; // dr["DIC_NAME"] = dtsex[i].DIC_NAME; // dt.Rows.Add(dr); // } // LCItemUtil.Refresh_LCItem(LCIList[LCIList.Count - 1], dt, "DIC_SORT", "DIC_NAME"); // LCIList[LCIList.Count - 1].Tag = new LCWhereInfo() { QWhereText = "TASK_WKSTATUS like '%{0}%'" }; //}); LCIList.Add(LCItemUtil.Add_ButtonX("btn_QDB", "查询", 80, 30, SubmitMethods)); LCIList.Add(LCItemUtil.Add_ButtonX("btn_QClear", "重置", 80, 30, SubmitMethods)); if (CurrentHelper.User.Use_RoleId == 1) { LCIList.Add(LCItemUtil.Add_ButtonX("btn_SendAgv", "AGV任务重下", 100, 30, SubmitMethods)); LCIList.Add(LCItemUtil.Add_ButtonX("btn_CancelAgvTask", "AGV任务取消", 100, 30, SubmitMethods)); LCIList.Add(LCItemUtil.Add_ButtonX("btn_FinishAgvTask", "AGV任务完成", 100, 30, SubmitMethods)); LCIList.Add(LCItemUtil.Add_ButtonX("btn_UpdateStatus_F", "允许放货", 100, 30, SubmitMethods)); LCIList.Add(LCItemUtil.Add_ButtonX("btn_UpdateStatus_Q", "允许取货", 100, 30, SubmitMethods)); LCIList.Add(LCItemUtil.Add_ButtonX("btn_UpdateStatus_L", "允许离开", 100, 30, SubmitMethods)); LCIList.Add(LCItemUtil.Add_ButtonX("btn_CallWorkShopTask", "车间叫料", 100, 30, SubmitMethods)); } uC_QueryPage1.Init_QueryPage(60, true, true, "", GCList, LCIList, QueryPageDataMethods, RefreshRoleMethods, DoubleClikMethod, null, null); uC_QueryPage1.ClearLCItemValue(); CommonShow.ShowProcessing("正在处理中,请稍候...", this, (obj) => { uC_QueryPage1.RefreshData(1, 0); }, null); } private PageData QueryPageDataMethods(int PageIndex, int PageSize) { string _SQLText = @"SELECT a.*,b.DIC_NAME AgvTaskTypeCh,c.DIC_NAME AgvStatusCh,d.DIC_NAME WcsStatusCh FROM [YONGGUAN_WCS].[dbo].[Middle_AGVTask] a left join dbo.WCS_DICTIONARY b on a.Task_Type=b.DIC_SORT and b.DIC_PARENT_CODE='AgvTaskType' left join dbo.WCS_DICTIONARY c on a.Task_AgvStatus=c.DIC_SORT and c.DIC_PARENT_CODE='AgvStatus' left join dbo.WCS_DICTIONARY d on a.Task_WcsStatus=d.DIC_SORT and d.DIC_PARENT_CODE='WcsStatus' where Task_Whid in('PVC原膜立库','PVC普通立库')"; string _Orderby = "a.Task_Id asc"; PageData pd = BaseWorkflow.QueryPageData(_SQLText, _Orderby, uC_QueryPage1.GetQueryWhere(), PageIndex, PageSize); return pd; } private void SubmitMethods(string LCName) { if (LCName == "btn_QDB") { uC_QueryPage1.RefreshData(); } else if (LCName == "btn_QClear") { uC_QueryPage1.ShowOpaqueLayer(); uC_QueryPage1.ClearLCItemValue(); uC_QueryPage1.RefreshData(1, 0); uC_QueryPage1.HideOpaqueLayer(); } else if (LCName == "btn_SendAgv") { DataTable dt = this.uC_QueryPage1.SCGrid_GetChkRows(); if (dt == null || dt.Rows.Count == 0) { MessageUtil.ShowTips("请选择任务。"); return; } int id = Convert.ToInt32(dt.Rows[0]["Task_Id"].ToString()); var result = MessageUtil.ShowYesNoAndWarning(string.Format("id[{0}]的任务确定要重下吗(请谨慎操作)?", id)); if (result == DialogResult.Yes) { string msg = TryCachHelper.TryExecute((db) => { string out_id = id.ToString(); var wcstask = db.Queryable().First(v => v.TASK_ITEM8 == out_id); if (wcstask == null) { throw new Exception(string.Format("AGV任务ID[{0}]未查询到对应的WMS任务", out_id)); } var agvtask = db.Queryable().First(v => v.Task_Id == id); agvtask.Task_WcsStatus = 1; agvtask.Task_AgvStatus = 0; db.Updateable(agvtask).UpdateColumns(it => new { it.Task_WcsStatus, it.Task_AgvStatus }).ExecuteCommand(); }); if (string.IsNullOrWhiteSpace(msg)) msg = string.Format("ID[{0}]任务重下成功", id); MessageUtil.ShowTips(msg); uC_QueryPage1.RefreshData(1, 0); } } else if (LCName == "btn_CancelAgvTask") { DataTable dt = this.uC_QueryPage1.SCGrid_GetChkRows(); if (dt == null || dt.Rows.Count == 0) { MessageUtil.ShowTips("请选择任务。"); return; } int id = Convert.ToInt32(dt.Rows[0]["Task_Id"].ToString()); var result = MessageUtil.ShowYesNoAndWarning(string.Format("id[{0}]的任务确定要取消吗(请谨慎操作)?", id)); if (result == DialogResult.Yes) { string msg = TryCachHelper.TryExecute((db) => { var agvtask = db.Queryable().First(v => v.Task_Id == id); if (agvtask.Task_Type == 1 && agvtask.Task_WcsStatus == 0 && agvtask.Task_AgvStatus == 0) { string agvid = id.ToString(); if (db.Queryable().Any(v => v.TASK_ITEM8 == agvid) == false) { agvtask.Task_WcsStatus = 106; db.Updateable(agvtask).UpdateColumns(it => new { it.Task_WcsStatus }).ExecuteCommand(); } else { throw new Exception("该任务存在WCS任务,暂时不支持取消动作。"); } } else if (agvtask.Task_Type == 2 && agvtask.Task_WcsStatus == 0 && agvtask.Task_AgvStatus == 0) { string agvid = id.ToString(); if (db.Queryable().Any(v => v.TASK_ITEM8 == agvid) == false) { agvtask.Task_WcsStatus = 106; db.Updateable(agvtask).UpdateColumns(it => new { it.Task_WcsStatus }).ExecuteCommand(); } else { throw new Exception("该任务存在WCS任务,暂时不支持取消动作。"); } } else if (agvtask.Task_Type == 4 && agvtask.Task_WcsStatus == 0 && agvtask.Task_AgvStatus == 0) { agvtask.Task_WcsStatus = 106; db.Updateable(agvtask).UpdateColumns(it => new { it.Task_WcsStatus }).ExecuteCommand(); } else { throw new Exception("该类型任务(或非初始状态)暂时不支持取消动作。"); } }); if (string.IsNullOrWhiteSpace(msg)) msg = string.Format("ID[{0}]任务取消成功", id); MessageUtil.ShowTips(msg); uC_QueryPage1.RefreshData(1, 0); } } else if (LCName == "btn_FinishAgvTask") { DataTable dt = this.uC_QueryPage1.SCGrid_GetChkRows(); if (dt == null || dt.Rows.Count == 0) { MessageUtil.ShowTips("请选择任务。"); return; } int id = Convert.ToInt32(dt.Rows[0]["Task_Id"].ToString()); var result = MessageUtil.ShowYesNoAndWarning(string.Format("id[{0}]的任务要手动完成吗(请谨慎操作)?", id)); if (result == DialogResult.Yes) { string msg = TryCachHelper.TryExecute((db) => { var agvtask = db.Queryable().First(v => v.Task_Id == id); agvtask.Task_WcsStatus = 99; agvtask.Task_UpdateUser = "wcs"; agvtask.Task_UpdateDate = DateTime.Now; db.Updateable(agvtask).UpdateColumns(it => new { it.Task_WcsStatus, it.Task_UpdateUser, it.Task_UpdateDate }).ExecuteCommand(); }); if (string.IsNullOrWhiteSpace(msg)) msg = string.Format("ID[{0}]手动完成成功", id); MessageUtil.ShowTips(msg); uC_QueryPage1.RefreshData(1, 0); } } else if (LCName == "btn_UpdateStatus_F") { DataTable dt = this.uC_QueryPage1.SCGrid_GetChkRows(); if (dt == null || dt.Rows.Count == 0) { MessageUtil.ShowTips("请选择任务。"); return; } int id = Convert.ToInt32(dt.Rows[0]["Task_Id"].ToString()); var result = MessageUtil.ShowYesNoAndWarning(string.Format("id[{0}]的任务确定要修改状态为允许放货吗(请谨慎操作)?", id)); if (result == DialogResult.Yes) { string msg = TryCachHelper.TryExecute((db) => { var agvtask = db.Queryable().First(v => v.Task_Id == id); if (agvtask.Task_AgvStatus == 2) { agvtask.Task_WcsStatus = 2; db.Updateable(agvtask).UpdateColumns(it => new { it.Task_WcsStatus }).ExecuteCommand(); } else { throw new Exception("该类型的AGV状态不为请求放货(2)暂时不支持更为允许放货,请检查!。"); } }); if (string.IsNullOrWhiteSpace(msg)) msg = string.Format("ID[{0}]任务AGV状态修改成功!", id); MessageUtil.ShowTips(msg); uC_QueryPage1.RefreshData(1, 0); } } else if (LCName == "btn_UpdateStatus_Q") { DataTable dt = this.uC_QueryPage1.SCGrid_GetChkRows(); if (dt == null || dt.Rows.Count == 0) { MessageUtil.ShowTips("请选择任务。"); return; } int id = Convert.ToInt32(dt.Rows[0]["Task_Id"].ToString()); var result = MessageUtil.ShowYesNoAndWarning(string.Format("id[{0}]的任务确定要修改状态为允许取货吗(请谨慎操作)?", id)); if (result == DialogResult.Yes) { string msg = TryCachHelper.TryExecute((db) => { var agvtask = db.Queryable().First(v => v.Task_Id == id); if (agvtask.Task_AgvStatus == 4) { agvtask.Task_WcsStatus = 3; db.Updateable(agvtask).UpdateColumns(it => new { it.Task_WcsStatus }).ExecuteCommand(); } else { throw new Exception("该类型的AGV状态不为请求取货(4)暂时不支持更为允许取货,请检查!。"); } }); if (string.IsNullOrWhiteSpace(msg)) msg = string.Format("ID[{0}]任务AGV状态修改成功!", id); MessageUtil.ShowTips(msg); uC_QueryPage1.RefreshData(1, 0); } } else if (LCName == "btn_UpdateStatus_L") { DataTable dt = this.uC_QueryPage1.SCGrid_GetChkRows(); if (dt == null || dt.Rows.Count == 0) { MessageUtil.ShowTips("请选择任务。"); return; } int id = Convert.ToInt32(dt.Rows[0]["Task_Id"].ToString()); var result = MessageUtil.ShowYesNoAndWarning(string.Format("id[{0}]的任务确定要修改状态为允许离开吗(请谨慎操作)?", id)); if (result == DialogResult.Yes) { string msg = TryCachHelper.TryExecute((db) => { var agvtask = db.Queryable().First(v => v.Task_Id == id); if (agvtask.Task_AgvStatus == 5) { agvtask.Task_WcsStatus = 4; db.Updateable(agvtask).UpdateColumns(it => new { it.Task_WcsStatus }).ExecuteCommand(); } else { throw new Exception("该类型的AGV状态不为取货完成(5)暂时不支持更为允许离开,请检查!。"); } }); if (string.IsNullOrWhiteSpace(msg)) msg = string.Format("ID[{0}]任务AGV状态修改成功!", id); MessageUtil.ShowTips(msg); uC_QueryPage1.RefreshData(1, 0); } } else if (LCName == "btn_CallWorkShopTask") { var frmAddWorkshopTask = new FrmAddWorkshopTask(); frmAddWorkshopTask.ShowDialog(); uC_QueryPage1.RefreshData(1, 0); } } private void DoubleClikMethod(DataRow dr) { //wcs_task_no = Convert.ToInt32(dr["TASK_NO"].ToString()); //FrmWCS_TaskDIS_DTL Frm = new FrmWCS_TaskDIS_DTL(wcs_task_no); //Frm.Show(); } private void RefreshRoleMethods(bool ChkValue) { } } }