/// <summary> /// 设备执行任务之前,检查是否路径被锁定,防止上下架冲突 /// </summary> /// <param name="curNode"></param> /// <param name="curTask"></param> /// <param name="reStr">若可用,返回0,1:路径被锁定,不可用,2:其它错误,-1:系统异常</param> /// <returns></returns> public int TaskLockCheck(FlowCtlBaseModel.CtlNodeBaseModel curNode, CtlDBAccess.Model.ControlTaskModel curTask, ref string reStr) { try { lock (pathCheckLock) { if (curTask == null) { reStr = "任务为空"; return(2); } CtlDBAccess.Model.MainControlTaskModel mainTask = mainCtlTaskBll.GetModel(curTask.MainTaskID); if (!wcsPathMap.Keys.Contains(mainTask.FlowPathKey)) { reStr = "不存在的路径:" + mainTask.FlowPathKey; return(2); } FlowCtlBaseModel.WCSFlowPathModel wcsPath = wcsPathMap[mainTask.FlowPathKey]; if (wcsPath.PathCata == "上架") { // List<CtlDBAccess.Model.MainControlTaskModel> lockedMaintaskList = GetLockedTaskList(curNode, "下架"); if (!NodeLockedBytask(curNode, "下架")) { return(0); } else { return(1); } } else if (wcsPath.PathCata == "下架") { //List<CtlDBAccess.Model.MainControlTaskModel> lockedMaintaskList = GetLockedTaskList(curNode, "上架"); if (!NodeLockedBytask(curNode, "上架")) { return(0); } else { return(1); } } else { return(0); } } } catch (Exception ex) { reStr = ex.ToString(); return(-1); } }
private CtlDBAccess.Model.ControlTaskModel CreateStackerTask(int taskIndex, CtlDBAccess.Model.MainControlTaskModel mainTask, string stackerNodeID, TransDevModel.NodeTransStation portNode, string palletID, ref string reStr) { CtlDBAccess.Model.ControlTaskModel nextCtlTask = new CtlDBAccess.Model.ControlTaskModel(); short nextCtlID = (short)ctlTaskBll.GetUnusedControlID(); if (nextCtlID == 0) { reStr = "没有可用的控制ID"; return(null); } nextCtlTask.TaskID = System.Guid.NewGuid().ToString(); nextCtlTask.DeviceID = stackerNodeID; nextCtlTask.DeviceCata = "堆垛机"; if (mainTask.TaskType == "上架") { nextCtlTask.StDevice = portNode.NodeID; nextCtlTask.StDeviceCata = portNode.DevCata; nextCtlTask.StDeviceParam = ""; nextCtlTask.EndDevice = stackerNodeID; nextCtlTask.EndDeviceCata = "货位"; nextCtlTask.EndDeviceParam = mainTask.EndDeviceParam; nextCtlTask.TaskType = (int)SysCfg.EnumAsrsTaskType.产品入库; } else if (mainTask.TaskType == "下架") { nextCtlTask.StDevice = stackerNodeID; nextCtlTask.StDeviceCata = "货位"; nextCtlTask.StDeviceParam = mainTask.StDeviceParam; nextCtlTask.EndDevice = portNode.NodeID; nextCtlTask.EndDeviceCata = portNode.DevCata; nextCtlTask.EndDeviceParam = ""; nextCtlTask.TaskType = (int)SysCfg.EnumAsrsTaskType.产品出库; } else { throw new NotImplementedException(); } nextCtlTask.MainTaskID = mainTask.MainTaskID; nextCtlTask.PalletCode = palletID; nextCtlTask.ControlID = nextCtlID; nextCtlTask.TaskIndex = taskIndex; nextCtlTask.TaskParam = ""; nextCtlTask.TaskStatus = "待执行"; nextCtlTask.TaskPhase = 0; nextCtlTask.CreateTime = System.DateTime.Now; nextCtlTask.CreateMode = "自动"; return(nextCtlTask); }
private void WcsMainTaskCommit() { DataTable dt = this.dataGridView1.DataSource as DataTable; CtlDBAccess.BLL.MainControlTaskBll mainCtlTaskBll = new CtlDBAccess.BLL.MainControlTaskBll(); foreach (DataRow dr in dt.Rows) { if (mainCtlTaskBll.Exists(dr["管理任务ID"].ToString())) { continue; } CtlDBAccess.Model.MainControlTaskModel mainCtlTask = new CtlDBAccess.Model.MainControlTaskModel(); mainCtlTask.WMSTaskID = dr["管理任务ID"].ToString(); mainCtlTask.MainTaskID = dr["管理任务ID"].ToString(); mainCtlTask.FlowPathKey = dr["起始设备号"].ToString() + "-" + dr["目标设备号"].ToString(); mainCtlTask.PalletCode = dr["托盘码"].ToString(); mainCtlTask.TaskStatus = "待启动"; //if(wmsTask.Type == "下架") //{ // mainCtlTask.TaskType = "产品出库"; //} //else if(wmsTask.Type=="上架") //{ // mainCtlTask.TaskType = "产品入库"; //} //else //{ // mainCtlTask.TaskType = wmsTask.Type; //} mainCtlTask.TaskType = dr["任务类型"].ToString(); mainCtlTask.StDevice = dr["起始设备号"].ToString(); mainCtlTask.StDeviceCata = dr["起始设备类型"].ToString();// mainCtlTask.EndDevice = dr["目标设备号"].ToString(); mainCtlTask.EndDeviceCata = dr["目标设备类型"].ToString(); if (mainCtlTask.StDeviceCata == "货位") { mainCtlTask.StDeviceParam = dr["起始设备参数"].ToString(); } if (mainCtlTask.EndDeviceCata == "货位") { mainCtlTask.EndDeviceParam = dr["目标设备参数"].ToString(); } mainCtlTask.CreateTime = System.DateTime.Now; mainCtlTask.CreateMode = "自动"; mainCtlTaskBll.Add(mainCtlTask); } }
/// <summary> /// 得到一个对象实体 /// </summary> public CtlDBAccess.Model.MainControlTaskModel GetModel(string MainTaskID) { StringBuilder strSql = new StringBuilder(); strSql.Append("select top 1 "); strSql.Append(" MainTaskID,WMSTaskID,FlowPathKey,PalletCode,TaskStatus,TaskType,StDevice,StDeviceCata,StDeviceParam,EndDevice,EndDeviceCata,EndDeviceParam,CreateTime,FinishTime,CreateMode,tag1,tag2,tag3,tag4,tag5 "); strSql.Append(" from MainControlTask "); strSql.Append(" where MainTaskID='" + MainTaskID + "' "); CtlDBAccess.Model.MainControlTaskModel model = new CtlDBAccess.Model.MainControlTaskModel(); DataSet ds = DbHelperSQL.Query(strSql.ToString()); if (ds.Tables[0].Rows.Count > 0) { return(DataRowToModel(ds.Tables[0].Rows[0])); } else { return(null); } }
private bool AsrsHeightChecked(CtlDBAccess.Model.MainControlTaskModel mainTask, int height, ref string reStr) { try { if (mainTask == null) { reStr = "主控制任务为空"; return(false); } if (mainTask.TaskType != "上架") { return(true); } List <string> checkAsrsList = new List <string>(); checkAsrsList.AddRange(new string[] { "11003", "11004", "11005" }); if (checkAsrsList.Contains(mainTask.EndDevice)) { string[] cellArray = mainTask.EndDeviceParam.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries); if (cellArray != null && cellArray.Count() < 3) { reStr = "主任务目标货位参数错误"; return(false); } int layer = int.Parse(cellArray[2]); if (layer > 3) { if (height > 1) { reStr = "目标货位限高!"; return(false); } } } return(true); } catch (Exception ex) { reStr = ex.ToString(); return(false); } }
private void OnDelMaintask() { if (this.parentPNP.RoleID > 2) { MessageBox.Show("没有管理员权限"); return; } int re = PoupAskmes("是否确定要删除?"); if (re != 1) { return; } CtlDBAccess.BLL.MainControlTaskBll mainTaskBll = new CtlDBAccess.BLL.MainControlTaskBll(); foreach (DataGridViewRow rw in this.dataGridView1.SelectedRows) { string mainTaskID = rw.Cells["管理任务ID"].Value.ToString(); CtlDBAccess.Model.MainControlTaskModel mainTask = mainTaskBll.GetModel(mainTaskID); if (mainTask == null) { continue; } if (mainTask.TaskStatus == "执行中") { if (parentPNP.RoleID == 1) { mainTaskBll.Delete(mainTaskID); } } else { mainTaskBll.Delete(mainTaskID); } } OnRefreshWMSDt(); }
public override bool WCSMainTaskStart(CtlDBAccess.Model.MainControlTaskModel mainTask, WCSFlowPathModel wcsPath, ref string reStr) { if (!base.WCSMainTaskStart(mainTask, wcsPath, ref reStr)) { return(false); } WCSPathNodeModel wcsNode = wcsPath.GetNodeByID(nodeID); WCSPathNodeModel wcsNodeNext = wcsPath.GetNodeByID(wcsNode.NextNodeID); CtlDBAccess.Model.ControlTaskModel ctlTask = null; ctlTask = new CtlDBAccess.Model.ControlTaskModel(); ctlTask.TaskID = System.Guid.NewGuid().ToString(); ctlTask.StDevice = nodeID; ctlTask.StDeviceCata = devCata; ctlTask.StDeviceParam = mainTask.StDeviceParam; ctlTask.EndDevice = wcsNode.NextNodeID; ctlTask.EndDeviceCata = wcsNodeNext.DevCata; ctlTask.EndDeviceParam = mainTask.EndDeviceParam; ctlTask.MainTaskID = mainTask.MainTaskID; ctlTask.PalletCode = mainTask.PalletCode; UInt16 controlID = ctlTaskBll.GetUnusedControlID(); if (controlID < 1) { reStr = "没有可用的控制任务ID"; return(false); } ctlTask.ControlID = controlID; ctlTask.TaskIndex = 1; ctlTask.TaskParam = ""; ctlTask.TaskStatus = "待执行"; ctlTask.TaskPhase = 0; ctlTask.CreateTime = System.DateTime.Now; ctlTask.CreateMode = "自动"; if (wcsNodeNext.DevCata == "库房") { ctlTask.DeviceID = wcsNodeNext.NodeID; ctlTask.DeviceCata = "堆垛机"; ctlTask.TaskType = (int)SysCfg.EnumAsrsTaskType.产品入库; } else if (wcsNodeNext.DevCata == "RGV") { ctlTask.DeviceID = wcsNodeNext.NodeID; ctlTask.DeviceCata = wcsNodeNext.DevCata; ctlTask.TaskType = (int)SysCfg.EnumAsrsTaskType.RGV上下料; } else { ctlTask.DeviceID = nodeID; ctlTask.DeviceCata = devCata; ctlTask.TaskType = (int)SysCfg.EnumAsrsTaskType.输送机送出; } if (ctlTask == null) { return(false); } bool re = ctlTaskBll.Add(ctlTask); // return re; if (re) { mainTask.TaskStatus = "已启动"; CtlDBAccess.BLL.MainControlTaskBll mainTaskBll = new CtlDBAccess.BLL.MainControlTaskBll(); return(mainTaskBll.Update(mainTask)); } else { return(false); } }
private bool ExeSndTaskBusiness(ref string reStr) { try { switch (this.currentTaskPhase) { case 1: { this.currentTaskDescribe = "等待有板信号"; this.rfidUID = ""; this.db1ValsToSnd[5] = 0; this.db1ValsToSnd[6] = 1; this.db1ValsToSnd[7] = 0; this.db1ValsToSnd[8] = 0; this.db1ValsToSnd[9] = 0; if (this.db2Vals[0] != 2) { break; } if (SysCfg.SysCfgModel.SimMode) { this.rfidUID = this.SimRfidUID; logRecorder.AddDebugLog(this.nodeName, "读到托盘号:" + this.rfidUID); } else { if (this.barcodeRW != null && barcodeCheck) { this.rfidUID = this.barcodeRW.ReadBarcode().Trim(); //this.barcodeRW.Trim(); if (string.IsNullOrWhiteSpace(this.rfidUID)) { break; } logRecorder.AddDebugLog(this.nodeName, "读到托盘号:" + this.rfidUID); } } this.currentTaskPhase++; break; } case 2: { this.currentTask = null; currentTaskDescribe = "等待检索待执行任务"; List <CtlDBAccess.Model.ControlTaskModel> taskList = ctlTaskBll.GetTaskToRunList((int)SysCfg.EnumAsrsTaskType.输送机送出, "待执行", this.nodeID); // CtlDBAccess.Model.ControlTaskModel taskToRun = null; foreach (CtlDBAccess.Model.ControlTaskModel task in taskList) { if (0 != dlgtPathLockcheck(this, task, ref reStr)) { continue; } if (barcodeCheck) { if (task.PalletCode == this.rfidUID) { this.currentTask = task; break; } } else { this.currentTask = task; break; } } if (this.currentTask == null) { this.currentTaskDescribe = string.Format("没有匹配托盘{0}的任务", this.rfidUID); if (this.barcodeRW != null && barcodeCheck) { if (SysCfg.SysCfgModel.SimMode) { this.rfidUID = this.SimRfidUID; } else { this.rfidUID = this.barcodeRW.ReadBarcode().Trim(); //this.barcodeRW.Trim(); } if (string.IsNullOrWhiteSpace(this.rfidUID)) { break; } } break; } if (this.currentTask.TaskIndex == 1) { CtlDBAccess.BLL.MainControlTaskBll mainTaskBll = new CtlDBAccess.BLL.MainControlTaskBll(); CtlDBAccess.Model.MainControlTaskModel mainTask = mainTaskBll.GetModel(this.currentTask.MainTaskID); if (dlgtHeightChecked != null) { if (!dlgtHeightChecked(mainTask, db2Vals[2], ref reStr)) { string strHeightExceed = string.Format("货物{0}超高,与{1}目标货位{2}冲突", this.rfidUID, mainTask.EndDevice, mainTask.EndDeviceParam); if (this.db1ValsToSnd[0] != 3) { logRecorder.AddDebugLog(nodeName, strHeightExceed); } this.currentTaskDescribe = strHeightExceed; this.db1ValsToSnd[0] = 3; break; } } if (mainTask != null) { mainTask.TaskStatus = "执行中"; mainTaskBll.Update(mainTask); } } //发送任务参数 this.db1ValsToSnd[6] = 1; this.db1ValsToSnd[7] = 21; this.db1ValsToSnd[8] = (short)this.currentTask.ControlID; this.db1ValsToSnd[9] = short.Parse(this.currentTask.EndDevice); if (!string.IsNullOrWhiteSpace(this.rfidUID)) { logRecorder.AddDebugLog(this.nodeName, "读到托盘号:" + this.rfidUID); } logRecorder.AddDebugLog(nodeName, string.Format("控制ID{0}执行到第2步,发送参数,等待PLC读数据完成", this.currentTask.ControlID)); this.currentTaskPhase++; break; } case 3: { this.db1ValsToSnd[5] = 1; //写入数据 this.currentTask.TaskStatus = "执行中"; ctlTaskBll.Update(currentTask); //等待PLC 读数据完成 this.currentTaskDescribe = "等待输送机读数据完成"; if (this.db2Vals[5] != 2) { break; } this.db1ValsToSnd[5] = 2; this.db1ValsToSnd[7] = 0; this.db1ValsToSnd[8] = 0; this.db1ValsToSnd[9] = 0; logRecorder.AddDebugLog(nodeName, string.Format("控制ID{0}任务执行到第3步,参数复位", this.currentTask.ControlID)); this.currentTaskPhase++; ctlTaskBll.Update(currentTask); break; } case 4: { this.currentTaskDescribe = "输送任务发送完毕"; currentTask = null; break; } default: { break; } } return(true); } catch (Exception ex) { reStr = ex.ToString(); return(false); } }
private void WMSTaskMonitorProc() { foreach (TaskDeviceModel stDev in wmsStDevList) { List <ManageTaskModel> wmsTasks = new List <ManageTaskModel>(); ResposeData res = WmsSvc.GetWaittingToRunTaskList(stDev, ref wmsTasks); if (!res.Status) { Console.WriteLine("获取{0}待执行管理任务失败{1}", stDev.DeviceCode, res.Describe); continue; } foreach (ManageTaskModel wmsTask in wmsTasks) { if (mainCtlTaskBll.Exists(wmsTask.TaskID)) { continue; } CtlDBAccess.Model.MainControlTaskModel mainCtlTask = new CtlDBAccess.Model.MainControlTaskModel(); mainCtlTask.WMSTaskID = wmsTask.TaskID; mainCtlTask.MainTaskID = wmsTask.TaskID; mainCtlTask.FlowPathKey = wmsTask.StartDevice.DeviceCode + "-" + wmsTask.TargetDevice.DeviceCode; mainCtlTask.PalletCode = wmsTask.PalletCode; mainCtlTask.TaskStatus = "待启动"; //if(wmsTask.Type == "下架") //{ // mainCtlTask.TaskType = "产品出库"; //} //else if(wmsTask.Type=="上架") //{ // mainCtlTask.TaskType = "产品入库"; //} //else //{ // mainCtlTask.TaskType = wmsTask.Type; //} mainCtlTask.TaskType = wmsTask.Type; mainCtlTask.StDevice = wmsTask.StartDevice.DeviceCode; mainCtlTask.StDeviceCata = wmsTask.StartDevice.DeviceType; mainCtlTask.EndDevice = wmsTask.TargetDevice.DeviceCode; mainCtlTask.EndDeviceCata = wmsTask.TargetDevice.DeviceType; if (wmsTask.StartDevice.DeviceType == "货位") { mainCtlTask.StDeviceParam = wmsTask.StartDevice.ExtParam; } if (wmsTask.TargetDevice.DeviceType == "货位") { mainCtlTask.EndDeviceParam = wmsTask.TargetDevice.ExtParam; } mainCtlTask.CreateTime = System.DateTime.Now; mainCtlTask.CreateMode = "自动"; mainCtlTaskBll.Add(mainCtlTask); } } string reStr = ""; //分解主控制任务 List <CtlDBAccess.Model.MainControlTaskModel> mainTasks = mainCtlTaskBll.GetModelList("TaskStatus = '待启动'"); foreach (CtlDBAccess.Model.MainControlTaskModel mainTask in mainTasks) { string pathKey = mainTask.FlowPathKey; if (!wcsPathMap.Keys.Contains(pathKey)) { Console.WriteLine("不存在的路径配置:{0}", pathKey); continue; } FlowCtlBaseModel.WCSFlowPathModel wcsPath = wcsPathMap[pathKey]; if (wcsPath.NodeList.Count() < 1) { continue; } FlowCtlBaseModel.WCSPathNodeModel stNode = wcsPath.NodeList[0]; if (stNode.NodeFlag != "起点") { continue; } string nodeID = stNode.NodeID; FlowCtlBaseModel.CtlNodeBaseModel node = NodeManager.GetNodeByID(nodeID); if (node == null) { continue; } if (node.DevCata == "站台") { if (node.Db2Vals[0] != 2) { continue; } } if (!node.WCSMainTaskStart(mainTask, wcsPath, ref reStr)) { Console.WriteLine("{0} 启动任务:{1}失败,{2}", node.NodeName, mainTask.WMSTaskID, reStr); } else { WmsSvc.UpdateManageTaskStatus(mainTask.WMSTaskID, "执行中"); Console.WriteLine("主控制任务{0},{1}->{2}准备启动", mainTask.MainTaskID, mainTask.StDevice, mainTask.EndDevice); } } /* * foreach(string pathKey in wcsPathMap.Keys) * { * FlowCtlBaseModel.WCSFlowPathModel wcsPath = wcsPathMap[pathKey]; * if(wcsPath.NodeList.Count()<1) * { * continue; * } * * FlowCtlBaseModel.WCSPathNodeModel stNode= wcsPath.NodeList[0]; * if(stNode.NodeFlag !="起点") * { * continue; * } * string nodeID = stNode.NodeID; * FlowCtlBaseModel.CtlNodeBaseModel node = NodeManager.GetNodeByID(nodeID); * if(node == null) * { * continue; * } * //生成第一个控制任务 * List<CtlDBAccess.Model.MainControlTaskModel> mainTasks= mainCtlTaskBll.GetModelList(string.Format("TaskStatus = '待执行' and StDevice='{0}'", nodeID)); * foreach(CtlDBAccess.Model.MainControlTaskModel mainTask in mainTasks) * { * if(!node.WCSMainTaskStart(mainTask, wcsPath, ref reStr)) * { * Console.WriteLine("{0} 启动任务:{1}失败,{2}", node.NodeName, mainTask.WMSTaskID,reStr); * } * else * { * WmsSvc.UpdateManageTaskStatus(mainTask.WMSTaskID, "执行中"); * } * } * }*/ }
public bool CreateNodeNextTask(FlowCtlBaseModel.CtlNodeBaseModel curNode, CtlDBAccess.Model.ControlTaskModel curTask, ref string reStr) { try { CtlDBAccess.Model.MainControlTaskModel mainTask = mainCtlTaskBll.GetModel(curTask.MainTaskID); if (mainTask == null) { reStr = "主任务为空,不存在的主任务ID:" + curTask.MainTaskID; return(false); } FlowCtlBaseModel.WCSFlowPathModel wcsPath = null; if (wcsPathMap.Keys.Contains(mainTask.FlowPathKey)) { wcsPath = wcsPathMap[mainTask.FlowPathKey]; } else { reStr = "路径不存在:" + mainTask.FlowPathKey; return(false); } FlowCtlBaseModel.WCSPathNodeModel wcsNode = wcsPath.GetNodeByID(curNode.NodeID); if (wcsNode.NodeFlag == "终点") { //管理任务完成 WMS_Interface.ResposeData res = WmsSvc.UpdateManageTaskStatus(mainTask.WMSTaskID, "已完成"); if (!res.Status) { reStr = string.Format("更新WMS任务:{0}状态失败,{1}", mainTask.WMSTaskID, res.Describe); return(false); } mainTask.TaskStatus = "已完成"; mainTask.FinishTime = System.DateTime.Now; if (!mainCtlTaskBll.Update(mainTask)) { reStr = string.Format("更新主控制任务:{0}状态失败", mainTask.MainTaskID); return(false); } return(true); } FlowCtlBaseModel.CtlNodeBaseModel nextNode = NodeManager.GetNodeByID(wcsNode.NextNodeID); if (curNode.DevCata == "站台") { if (nextNode.DevCata == "站台") { CtlDBAccess.Model.ControlTaskModel nextCtlTask = CreateConveyorTask(curTask.TaskIndex + 1, mainTask.MainTaskID, curNode as TransDevModel.NodeTransStation, nextNode as TransDevModel.NodeTransStation, curTask.PalletCode, ref reStr); if (nextCtlTask == null) { return(false); } return(ctlTaskBll.Add(nextCtlTask)); } else if (nextNode.DevCata == "RGV") { FlowCtlBaseModel.WCSPathNodeModel rgvTargetWcsNode = wcsPath.GetNodeByID(wcsNode.NextNodeID); FlowCtlBaseModel.CtlNodeBaseModel nextNode2 = NodeManager.GetNodeByID(rgvTargetWcsNode.NextNodeID); if (nextNode2 == null) { reStr = "不存在的设备号:" + wcsNode.NextNodeID; return(false); } FlowCtlBaseModel.WCSPathNodeModel nextWcsNode = wcsPath.GetNodeByID(nextNode2.NodeID); if (nextWcsNode == null) { reStr = "路径配置,RGV路径缺少下料站台"; return(false); } CtlDBAccess.Model.ControlTaskModel nextCtlTask = CreateRGVTask(curTask.TaskIndex + 1, mainTask.MainTaskID, nextNode as TransDevModel.NodeRGV, curNode as TransDevModel.NodeTransStation, nextNode2 as TransDevModel.NodeTransStation, curTask.PalletCode, ref reStr); if (nextCtlTask == null) { return(false); } return(ctlTaskBll.Add(nextCtlTask)); } else if (nextNode.DevCata == "堆垛机") { CtlDBAccess.Model.ControlTaskModel nextCtlTask = CreateStackerTask(curTask.TaskIndex + 1, mainTask, nextNode.NodeID, curNode as TransDevModel.NodeTransStation, curTask.PalletCode, ref reStr); if (nextCtlTask == null) { return(false); } return(ctlTaskBll.Add(nextCtlTask)); } } else if (curNode.DevCata == "RGV") { if (nextNode.DevCata != "站台") { reStr = "RGV目标设备应该为站台"; return(false); } FlowCtlBaseModel.WCSPathNodeModel rgvTargetWcsNode = wcsPath.GetNodeByID(wcsNode.NextNodeID); if (rgvTargetWcsNode.NodeFlag == "终点") { //管理任务完成 WMS_Interface.ResposeData res = WmsSvc.UpdateManageTaskStatus(mainTask.WMSTaskID, "已完成"); if (!res.Status) { reStr = string.Format("更新WMS任务:{0}状态失败,{1}", mainTask.WMSTaskID, res.Describe); return(false); } mainTask.TaskStatus = "已完成"; mainTask.FinishTime = System.DateTime.Now; if (!mainCtlTaskBll.Update(mainTask)) { reStr = string.Format("更新主控制任务:{0}状态失败", mainTask.MainTaskID); return(false); } return(true); } FlowCtlBaseModel.CtlNodeBaseModel rgvTargetNode = NodeManager.GetNodeByID(rgvTargetWcsNode.NodeID); FlowCtlBaseModel.CtlNodeBaseModel nextNode2 = NodeManager.GetNodeByID(rgvTargetWcsNode.NextNodeID); if (nextNode2.DevCata == "站台") { CtlDBAccess.Model.ControlTaskModel nextCtlTask = CreateConveyorTask(curTask.TaskIndex + 1, mainTask.MainTaskID, rgvTargetNode as TransDevModel.NodeTransStation, nextNode2 as TransDevModel.NodeTransStation, curTask.PalletCode, ref reStr); if (nextCtlTask == null) { return(false); } return(ctlTaskBll.Add(nextCtlTask)); } else if (nextNode2.DevCata == "堆垛机") { CtlDBAccess.Model.ControlTaskModel nextCtlTask = CreateStackerTask(curTask.TaskIndex + 1, mainTask, nextNode2.NodeID, rgvTargetNode as TransDevModel.NodeTransStation, curTask.PalletCode, ref reStr); if (nextCtlTask == null) { return(false); } return(ctlTaskBll.Add(nextCtlTask)); } else { reStr = "错误的路径配置,两台RGV不允许共用一个接驳站台"; return(false); } } else if (curNode.DevCata == "堆垛机") { if (nextNode.DevCata != "站台") { reStr = "堆垛机目标设备应该为站台"; return(false); } FlowCtlBaseModel.WCSPathNodeModel targetWcsNode = wcsPath.GetNodeByID(wcsNode.NextNodeID); if (targetWcsNode.NodeFlag == "终点") { //管理任务完成 WMS_Interface.ResposeData res = WmsSvc.UpdateManageTaskStatus(mainTask.WMSTaskID, "已完成"); if (!res.Status) { reStr = string.Format("更新WMS任务:{0}状态失败,{1}", mainTask.WMSTaskID, res.Describe); return(false); } mainTask.TaskStatus = "已完成"; mainTask.FinishTime = System.DateTime.Now; if (!mainCtlTaskBll.Update(mainTask)) { reStr = string.Format("更新主控制任务:{0}状态失败", mainTask.MainTaskID); return(false); } return(true); } FlowCtlBaseModel.CtlNodeBaseModel nextNode2 = NodeManager.GetNodeByID(targetWcsNode.NextNodeID); if (nextNode2.DevCata == "站台") { CtlDBAccess.Model.ControlTaskModel nextCtlTask = CreateConveyorTask(curTask.TaskIndex + 1, mainTask.MainTaskID, nextNode as TransDevModel.NodeTransStation, nextNode2 as TransDevModel.NodeTransStation, curTask.PalletCode, ref reStr); if (nextCtlTask == null) { return(false); } return(ctlTaskBll.Add(nextCtlTask)); } else if (nextNode2.DevCata == "RGV") { FlowCtlBaseModel.WCSPathNodeModel targetWcsNode2 = wcsPath.GetNodeByID(nextNode2.NodeID); FlowCtlBaseModel.CtlNodeBaseModel nextNode3 = NodeManager.GetNodeByID(targetWcsNode2.NextNodeID); if (nextNode3 == null) { return(false); } CtlDBAccess.Model.ControlTaskModel nextCtlTask = CreateRGVTask(curTask.TaskIndex + 1, mainTask.MainTaskID, nextNode2 as TransDevModel.NodeRGV, nextNode as TransDevModel.NodeTransStation, nextNode3 as TransDevModel.NodeTransStation, curTask.PalletCode, ref reStr); if (nextCtlTask == null) { return(false); } return(ctlTaskBll.Add(nextCtlTask)); } } return(true); } catch (Exception ex) { reStr = ex.ToString(); Console.WriteLine(ex.ToString()); return(false); } }
/// <summary> /// 得到一个对象实体 /// </summary> public CtlDBAccess.Model.MainControlTaskModel DataRowToModel(DataRow row) { CtlDBAccess.Model.MainControlTaskModel model = new CtlDBAccess.Model.MainControlTaskModel(); if (row != null) { if (row["MainTaskID"] != null) { model.MainTaskID = row["MainTaskID"].ToString(); } if (row["WMSTaskID"] != null) { model.WMSTaskID = row["WMSTaskID"].ToString(); } if (row["FlowPathKey"] != null) { model.FlowPathKey = row["FlowPathKey"].ToString(); } if (row["PalletCode"] != null) { model.PalletCode = row["PalletCode"].ToString(); } if (row["TaskStatus"] != null) { model.TaskStatus = row["TaskStatus"].ToString(); } if (row["TaskType"] != null) { model.TaskType = row["TaskType"].ToString(); } if (row["StDevice"] != null) { model.StDevice = row["StDevice"].ToString(); } if (row["StDeviceCata"] != null) { model.StDeviceCata = row["StDeviceCata"].ToString(); } if (row["StDeviceParam"] != null) { model.StDeviceParam = row["StDeviceParam"].ToString(); } if (row["EndDevice"] != null) { model.EndDevice = row["EndDevice"].ToString(); } if (row["EndDeviceCata"] != null) { model.EndDeviceCata = row["EndDeviceCata"].ToString(); } if (row["EndDeviceParam"] != null) { model.EndDeviceParam = row["EndDeviceParam"].ToString(); } if (row["CreateTime"] != null && row["CreateTime"].ToString() != "") { model.CreateTime = DateTime.Parse(row["CreateTime"].ToString()); } if (row["FinishTime"] != null && row["FinishTime"].ToString() != "") { model.FinishTime = DateTime.Parse(row["FinishTime"].ToString()); } if (row["CreateMode"] != null) { model.CreateMode = row["CreateMode"].ToString(); } if (row["tag1"] != null) { model.tag1 = row["tag1"].ToString(); } if (row["tag2"] != null) { model.tag2 = row["tag2"].ToString(); } if (row["tag3"] != null) { model.tag3 = row["tag3"].ToString(); } if (row["tag4"] != null) { model.tag4 = row["tag4"].ToString(); } if (row["tag5"] != null) { model.tag5 = row["tag5"].ToString(); } } return(model); }
/// <summary> /// 增加一条数据 /// </summary> public bool Add(CtlDBAccess.Model.MainControlTaskModel model) { StringBuilder strSql = new StringBuilder(); StringBuilder strSql1 = new StringBuilder(); StringBuilder strSql2 = new StringBuilder(); if (model.MainTaskID != null) { strSql1.Append("MainTaskID,"); strSql2.Append("'" + model.MainTaskID + "',"); } if (model.WMSTaskID != null) { strSql1.Append("WMSTaskID,"); strSql2.Append("'" + model.WMSTaskID + "',"); } if (model.FlowPathKey != null) { strSql1.Append("FlowPathKey,"); strSql2.Append("'" + model.FlowPathKey + "',"); } if (model.PalletCode != null) { strSql1.Append("PalletCode,"); strSql2.Append("'" + model.PalletCode + "',"); } if (model.TaskStatus != null) { strSql1.Append("TaskStatus,"); strSql2.Append("'" + model.TaskStatus + "',"); } if (model.TaskType != null) { strSql1.Append("TaskType,"); strSql2.Append("'" + model.TaskType + "',"); } if (model.StDevice != null) { strSql1.Append("StDevice,"); strSql2.Append("'" + model.StDevice + "',"); } if (model.StDeviceCata != null) { strSql1.Append("StDeviceCata,"); strSql2.Append("'" + model.StDeviceCata + "',"); } if (model.StDeviceParam != null) { strSql1.Append("StDeviceParam,"); strSql2.Append("'" + model.StDeviceParam + "',"); } if (model.EndDevice != null) { strSql1.Append("EndDevice,"); strSql2.Append("'" + model.EndDevice + "',"); } if (model.EndDeviceCata != null) { strSql1.Append("EndDeviceCata,"); strSql2.Append("'" + model.EndDeviceCata + "',"); } if (model.EndDeviceParam != null) { strSql1.Append("EndDeviceParam,"); strSql2.Append("'" + model.EndDeviceParam + "',"); } if (model.CreateTime != null) { strSql1.Append("CreateTime,"); strSql2.Append("'" + model.CreateTime + "',"); } if (model.FinishTime != null) { strSql1.Append("FinishTime,"); strSql2.Append("'" + model.FinishTime + "',"); } if (model.CreateMode != null) { strSql1.Append("CreateMode,"); strSql2.Append("'" + model.CreateMode + "',"); } if (model.tag1 != null) { strSql1.Append("tag1,"); strSql2.Append("'" + model.tag1 + "',"); } if (model.tag2 != null) { strSql1.Append("tag2,"); strSql2.Append("'" + model.tag2 + "',"); } if (model.tag3 != null) { strSql1.Append("tag3,"); strSql2.Append("'" + model.tag3 + "',"); } if (model.tag4 != null) { strSql1.Append("tag4,"); strSql2.Append("'" + model.tag4 + "',"); } if (model.tag5 != null) { strSql1.Append("tag5,"); strSql2.Append("'" + model.tag5 + "',"); } strSql.Append("insert into MainControlTask("); strSql.Append(strSql1.ToString().Remove(strSql1.Length - 1)); strSql.Append(")"); strSql.Append(" values ("); strSql.Append(strSql2.ToString().Remove(strSql2.Length - 1)); strSql.Append(")"); int rows = DbHelperSQL.ExecuteSql(strSql.ToString()); if (rows > 0) { return(true); } else { return(false); } }
/// <summary> /// 更新一条数据 /// </summary> public bool Update(CtlDBAccess.Model.MainControlTaskModel model) { StringBuilder strSql = new StringBuilder(); strSql.Append("update MainControlTask set "); if (model.WMSTaskID != null) { strSql.Append("WMSTaskID='" + model.WMSTaskID + "',"); } if (model.FlowPathKey != null) { strSql.Append("FlowPathKey='" + model.FlowPathKey + "',"); } if (model.PalletCode != null) { strSql.Append("PalletCode='" + model.PalletCode + "',"); } if (model.TaskStatus != null) { strSql.Append("TaskStatus='" + model.TaskStatus + "',"); } if (model.TaskType != null) { strSql.Append("TaskType='" + model.TaskType + "',"); } if (model.StDevice != null) { strSql.Append("StDevice='" + model.StDevice + "',"); } if (model.StDeviceCata != null) { strSql.Append("StDeviceCata='" + model.StDeviceCata + "',"); } if (model.StDeviceParam != null) { strSql.Append("StDeviceParam='" + model.StDeviceParam + "',"); } else { strSql.Append("StDeviceParam= null ,"); } if (model.EndDevice != null) { strSql.Append("EndDevice='" + model.EndDevice + "',"); } if (model.EndDeviceCata != null) { strSql.Append("EndDeviceCata='" + model.EndDeviceCata + "',"); } if (model.EndDeviceParam != null) { strSql.Append("EndDeviceParam='" + model.EndDeviceParam + "',"); } else { strSql.Append("EndDeviceParam= null ,"); } if (model.CreateTime != null) { strSql.Append("CreateTime='" + model.CreateTime + "',"); } if (model.FinishTime != null) { strSql.Append("FinishTime='" + model.FinishTime + "',"); } else { strSql.Append("FinishTime= null ,"); } if (model.CreateMode != null) { strSql.Append("CreateMode='" + model.CreateMode + "',"); } if (model.tag1 != null) { strSql.Append("tag1='" + model.tag1 + "',"); } else { strSql.Append("tag1= null ,"); } if (model.tag2 != null) { strSql.Append("tag2='" + model.tag2 + "',"); } else { strSql.Append("tag2= null ,"); } if (model.tag3 != null) { strSql.Append("tag3='" + model.tag3 + "',"); } else { strSql.Append("tag3= null ,"); } if (model.tag4 != null) { strSql.Append("tag4='" + model.tag4 + "',"); } else { strSql.Append("tag4= null ,"); } if (model.tag5 != null) { strSql.Append("tag5='" + model.tag5 + "',"); } else { strSql.Append("tag5= null ,"); } int n = strSql.ToString().LastIndexOf(","); strSql.Remove(n, 1); strSql.Append(" where MainTaskID='" + model.MainTaskID + "' "); int rowsAffected = DbHelperSQL.ExecuteSql(strSql.ToString()); if (rowsAffected > 0) { return(true); } else { return(false); } }