public void ModifyGsStatus(string cellChildID, string cellStatus, string cellTaskStatus) { string restr = ""; WH_Cell_ChildrenModel oldgsm = bllChildCell.GetModel(cellChildID); if (oldgsm == null) { return; } if (oldgsm.Cell_Child_Flag != "1") { this.WmsFrame.WriteLog("库存看板", "", "提示", "被禁用的货位不允许修改状态!"); return; } View_CellModel cellModel = bllViewCell.GetModelByChildCellID(cellChildID); string operteDetail = cellModel.WareHouse_Name + ":[" + cellModel.Cell_Name + "]货位状态由[" + oldgsm.Cell_Child_Status + "]变更为[" + cellStatus + "];" + "货位任务状态由[" + oldgsm.Cell_Child_Run_Status + "]变更为[" + cellTaskStatus + "]"; oldgsm.Cell_Child_Status = cellStatus; oldgsm.Cell_Child_Run_Status = cellTaskStatus; bllChildCell.Update(oldgsm); TaskHandleMethod.AddCellOperRecord(cellChildID, EnumGSOperateType.手动修改状态, operteDetail, ref restr); this.View.RefreshData(); }
public void SetGsStatus(string gsID, bool status) { bool setstatus = bllChildCell.UpdateGSEnabledStatusByID(gsID, status); View_CellModel viewCell = bllViewCell.GetModelByChildCellID(gsID); if (viewCell == null) { this.View.ShowMessage("信息提示", "获取货位失败!"); return; } if (status == true) { if (setstatus == true) { this.WmsFrame.WriteLog("库存看板", "", "提示", viewCell.WareHouse_Name + ":货位:" + viewCell.Cell_Name + "-" + viewCell.Cell_Chlid_Position + "启用成功!"); } else { this.WmsFrame.WriteLog("库存看板", "", "提示", viewCell.WareHouse_Name + ":货位:" + viewCell.Cell_Name + "-" + viewCell.Cell_Chlid_Position + "启用失败!"); } } else { if (setstatus == true) { this.WmsFrame.WriteLog("库存看板", "", "提示", viewCell.WareHouse_Name + ":货位:" + viewCell.Cell_Name + "-" + viewCell.Cell_Chlid_Position + "禁用成功!"); } else { this.WmsFrame.WriteLog("库存看板", "", "提示", viewCell.WareHouse_Name + ":货位:" + viewCell.Cell_Name + "-" + viewCell.Cell_Chlid_Position + "禁用失败!"); } } this.View.RefreshData(); //WH_Cell_ChildrenModel gsm =bllChildCell.GetModel(gsID); //if (gsm == null) //{ // return; //} //StoreHouseModel house = bllStoreHouse.GetModel(gsm.StoreHouseID); //if (house == null) //{ // return; //} //if (status == true) //{ // this.view.AddLog("库存看板", "货位《" + gsm.GoodsSiteName + "》启用!", EnumLoglevel.提示); // this.iStorageManage.AddGSOperRecord(house.StoreHouseName, new CellCoordModel(gsm.GoodsSiteRow, // gsm.GoodsSiteColumn, gsm.GoodsSiteLayer) // , EnumGSOperateType.手动启用货位, "手动启用货位", ref reStr); //} //else //{ // this.iStorageManage.AddGSOperRecord(house.StoreHouseName, new CellCoordModel(gsm.GoodsSiteRow, // gsm.GoodsSiteColumn, gsm.GoodsSiteLayer) // , EnumGSOperateType.手动禁用货位, "手动禁用货位", ref reStr); // this.view.AddLog("库存看板", "货位《" + gsm.GoodsSiteName + "》禁用!", EnumLoglevel.提示); //} }
public void ModifyGsStatus(string cellChildID, string cellStatus, string cellTaskStatus) { string restr = ""; WH_Cell_ChildrenModel oldgsm = bllChildCell.GetModel(cellChildID); if (oldgsm == null) { return; } if (oldgsm.Cell_Child_Flag != "1") { this.WmsFrame.WriteLog("库存看板", "", "提示", "被禁用的货位不允许修改状态!"); return; } View_CellModel cellModel = bllViewCell.GetModelByChildCellID(cellChildID); string operteDetail = cellModel.WareHouse_Name + ":[" + cellModel.Cell_Name + "]货位状态由[" + oldgsm.Cell_Child_Status + "]变更为[" + cellStatus + "];" + "货位任务状态由[" + oldgsm.Cell_Child_Run_Status + "]变更为[" + cellTaskStatus + "]"; oldgsm.Cell_Child_Status = cellStatus; oldgsm.Cell_Child_Run_Status = cellTaskStatus; bllChildCell.Update(oldgsm); TaskHandleMethod.AddCellOperRecord(cellChildID, EnumGSOperateType.手动修改状态, operteDetail, ref restr); if (cellStatus == EnumCellStatus.空闲.ToString() && cellTaskStatus == EnumGSTaskStatus.完成.ToString()) { if (this.View.AskMessage("询问", "您确定要清空此货位么?清空后货位的库存物料信息也将清空!") == 0) { TaskHandleMethod.DeleteStockByCellChildID(cellModel.Cell_Chlid_ID); } } this.View.RefreshData(); }
/// <summary> /// 获取所有待执行任务,wcs分解完一个管理任务后要将此任务状态更新为执行中状态 /// </summary> /// <param name="manageTaskList"></param> /// <returns></returns> public ResposeData GetWaittingToRunTaskList(TaskDeviceModel stDevice, ref List <ManageTaskModel> manageTaskList) { ResposeData response = new ResposeData(); manageTaskList = new List <ManageTaskModel>(); try { List <View_Manage_CellModel> taskList = bllViewManageCell.GetWattingTaskByDeviceCode(stDevice.DeviceCode); if (taskList == null) { response.Status = true; response.Describe = "没有待执行的任务!"; return(response); } foreach (View_Manage_CellModel manageModel in taskList) { ManageTaskModel manage = new ManageTaskModel(); manage.PalletCode = manageModel.Mange_Stock_Barcode; TaskDeviceModel startDevice = new TaskDeviceModel(); View_CellModel startCell = bllViewCell.GetModelByChildCellID(manageModel.Mange_Start_Cell_ID); if (startCell == null) { response.Status = false; response.Describe = "起始设备编码错误!"; return(response); } startDevice = FillTaskDevice(startCell, manageModel.Mange_Start_Cell_ID); manage.StartDevice = startDevice; manage.Status = manageModel.Mange_Status; View_CellModel targetCell = bllViewCell.GetModelByChildCellID(manageModel.Mange_End_Cell_ID); if (targetCell == null) { response.Status = false; response.Describe = "目标设备编码错误!"; return(response); } TaskDeviceModel targetDevice = FillTaskDevice(targetCell, manageModel.Mange_End_Cell_ID); manage.TargetDevice = targetDevice; manage.TaskID = manageModel.Mange_ID; manage.Type = manageModel.Manage_Type_Name; manageTaskList.Add(manage); } response.Status = true; response.Describe = "获取等待执行任务成功!"; return(response); } catch (Exception ex) { response.Status = true; response.Describe = "获取等待执行任务失败!" + ex.Message; return(response); } }
/// <summary> ///taskdevice任务数据赋值 /// </summary> /// <param name="cell"></param> /// <param name="deviceID"></param> /// <returns></returns> private TaskDeviceModel FillTaskDevice(View_CellModel cell, string deviceID) { TaskDeviceModel taskDevice = new TaskDeviceModel(); if (cell.Cell_Type == EnumCellType.货位.ToString()) { taskDevice.DeviceType = "货位"; taskDevice.DeviceCode = cell.WareHouse_ID; taskDevice.ExtParam = GetWCSCellCode(cell); } else { taskDevice.DeviceType = "工位"; taskDevice.DeviceCode = deviceID; } return(taskDevice); }
public static bool AddCellOperRecord(string cellChildID, EnumGSOperateType operType, string operDetail, ref string restr) { View_CellModel cell = bllViewCell.GetModelByChildCellID(cellChildID); if (cell == null) { restr = "添加Cell操作记录失败,Cell编码错误!"; return(false); } WH_Cell_Operate_RecordModel cellOperate = new WH_Cell_Operate_RecordModel(); cellOperate.WareHouse_ID = cell.WareHouse_ID; cellOperate.WH_Cell_Code = cell.Cell_Code + ":" + cell.Cell_Chlid_Position; cellOperate.WH_Cell_Oper_Datetime = DateTime.Now; cellOperate.WH_Cell_Oper_Detail = operDetail; cellOperate.WH_Cell_Oper_RecID = Guid.NewGuid().ToString(); return(bllCellOperateRecord.Add(cellOperate)); }
/// <summary> /// 获取双深工位排列层编码,wcs双深工位算为两排,wms是一排两个位置,做个转换 /// </summary> /// <param name="cell"></param> /// <returns></returns> private string GetWCSCellCode(View_CellModel cell) { string cellCode = ""; if (cell.Shelf_Type == EnumShelfType.单深.ToString()) { ////wcs是把双深工位看成两排,需要转换下 //string[] cellCodeArr = cell.Cell_Code.Split('-'); cellCode = cell.Cell_Code; } else//双深 { //wcs是把双深工位看成两排 string[] cellCodeArr = cell.Cell_Code.Split('-'); if (cellCodeArr[0] == "1") { if (cell.Cell_Chlid_Position == EnumCellPos.前.ToString()) { cellCode = (int.Parse(cellCodeArr[0]) + 1).ToString() + "-" + cellCodeArr[1] + "-" + cellCodeArr[2]; } else { cellCode = cell.Cell_Code; } } else //等于2的时候 { if (cell.Cell_Chlid_Position == EnumCellPos.前.ToString()) { cellCode = (int.Parse(cellCodeArr[0]) + 1).ToString() + "-" + cellCodeArr[1] + "-" + cellCodeArr[2]; } else { cellCode = (int.Parse(cellCodeArr[0]) + 2).ToString() + "-" + cellCodeArr[1] + "-" + cellCodeArr[2]; } } } return(cellCode); }
private bool AddRecord(string cellID, EnumCellStatus cellStatus, EnumGSTaskStatus cellTaskStatus, ref string restr) { WH_Cell_ChildrenModel oldgsm = bllChildCell.GetModel(cellID); if (oldgsm == null) { return(false); } if (oldgsm.Cell_Child_Flag != "1") { this.WmsFrame.WriteLog("库存看板", "", "提示", "被禁用的货位不允许修改状态!"); return(false); } View_CellModel cellModel = bllViewCell.GetModelByChildCellID(cellID); string operteStatusDetail = cellModel.WareHouse_Name + ":[" + cellModel.Cell_Name + "]货位状态由[" + oldgsm.Cell_Child_Status + "]变更为[空闲];" + "货位任务状态由[" + oldgsm.Cell_Child_Run_Status + "]变更为[完成]"; oldgsm.Cell_Child_Status = cellStatus.ToString(); oldgsm.Cell_Child_Run_Status = cellTaskStatus.ToString(); bllChildCell.Update(oldgsm); TaskHandleMethod.AddCellOperRecord(cellID, EnumGSOperateType.手动修改状态, operteStatusDetail, ref restr); return(true); }
/// <summary> /// /// </summary> /// <param name="palletCode"></param> /// <param name="houseName"></param> /// <param name="putawayStationName"></param> /// <param name="isAssign"></param> /// <param name="targetStation"></param> /// <param name="taskType">任务类型</param> /// <param name="manageID"></param> /// <param name="restr"></param> /// <returns></returns> public static bool CreatePutawayManageTask(string palletCode, string houseName, string putawayStationName, bool isAssign, string targetStation, EnumManageTaskType taskType, ref string manageID, ref string restr) { ManageModel manage = new ManageModel(); manage.Mange_CreateTime = DateTime.Now; WH_WareHouseModel house = bllWareHouse.GetModelByName(houseName); if (house == null) { restr = "库房对象为空!"; return(false); } WH_Station_LogicModel stationCell = bllStationLogic.GetStationByName(house.WareHouse_ID, putawayStationName); if (stationCell == null) { restr = "上架站台不存在!"; return(false); } WH_WareHouseModel wareHouse = bllWareHouse.GetModelByName(houseName); if (wareHouse == null) { restr = "库房名称错误!"; return(false); } View_StockListModel stock = bllViewStockList.GetModelByPalletCode(palletCode, EnumCellType.货位.ToString()); if (stock != null) { restr = "库存中已经有此托盘条码!"; return(false); } View_CellModel targetCell = null; if (isAssign == true)//分配货位要做校验 { string[] targetPos = targetStation.Split('-'); if (targetPos == null || targetPos.Length != 2) { restr = "指定货位格式错误!"; return(false); } string cellName = targetPos[0]; string cellPos = targetPos[1]; targetCell = bllViewCell.GetCell(wareHouse.WareHouse_ID, cellName, cellPos); if (targetCell == null || targetCell.Cell_Child_Status != EnumCellStatus.空闲.ToString() || targetCell.Cell_Child_Run_Status != EnumGSTaskStatus.完成.ToString()) { restr = "当前货位不可用!"; return(false); } } else { targetCell = bllViewCell.ApplyCell(wareHouse.WareHouse_ID); } if (targetCell == null) { restr = "库房已满,没有货位可以申请了!"; return(false); } if (targetCell.Shelf_Type == EnumShelfType.双深.ToString() && targetCell.Cell_Chlid_Position == EnumCellPos.前.ToString())//双深工位如果选中前面的工位要判断后面是否有料 { View_CellModel backCell = bllViewCell.GetCell(wareHouse.WareHouse_ID, targetCell.Cell_Name, EnumCellPos.后.ToString()); if (backCell != null && backCell.Cell_Child_Run_Status == EnumGSTaskStatus.完成.ToString() && backCell.Cell_Child_Status == EnumCellStatus.空闲.ToString()) { restr = "此货位为双深工位 ,需要先送入后面的货位再入前面的货位!"; return(false); } if (backCell != null && backCell.Cell_Child_Run_Status == EnumGSTaskStatus.锁定.ToString()) { restr = "此货位为双深工位 ,需要先送入后面的货位再入前面的货位,后面的工位处于锁定状态!"; return(false); } } if (targetCell.Cell_Child_Run_Status != EnumGSTaskStatus.完成.ToString() && targetCell.Cell_Child_Status != EnumCellStatus.空闲.ToString()) { restr = "指定货位已经被占用!"; return(false); } manage.Mange_ID = Guid.NewGuid().ToString(); manage.Mange_Start_Cell_ID = stationCell.Cell_Child_ID; manage.Mange_End_Cell_ID = targetCell.Cell_Chlid_ID; manage.Mange_Status = EnumManageTaskStatus.待执行.ToString(); manage.Manage_BreakDown_Status = "待分解"; manage.Mange_Stock_Barcode = palletCode; if (taskType == EnumManageTaskType.空托盘上架) { manage.Mange_Type_ID = "7";// EnumManageTaskType.空托盘上架.ToString(); } else if (taskType == EnumManageTaskType.架) { manage.Mange_Type_ID = "6";//上架 } else { restr = "任务类型错误!"; return(false); } View_StockListModel vslm = bllViewStockList.GetModelByPalletCode(palletCode, EnumCellType.配盘工位.ToString());// if (vslm == null) { restr = "没有配盘,请查看!"; return(false); } EnumOrderType orderType = EnumOrderType.计划; if (vslm.Plan_List_ID == "-1")//无计划的 { manage.Plan_ID = "-1"; orderType = EnumOrderType.非计划; } else { orderType = EnumOrderType.计划; View_Plan_StockListModel plan = bllViewPalnStockList.GetModelByPalletCode(palletCode); if (plan == null) { restr = "当前库存没有对应计划!"; return(false); } manage.Plan_ID = plan.Plan_ID; } manageID = manage.Mange_ID; bllManage.Add(manage); bool status = CreatePutawayManageListTask(manage.Mange_ID, orderType, palletCode, ref restr); if (status == true) { restr += "生成托盘[" + palletCode + "]上架任务成功:终点:" + houseName + targetCell.Cell_Name + targetCell.Cell_Chlid_Position; UpdateCellStatus(targetCell.Cell_Chlid_ID, EnumCellStatus.空闲, EnumGSTaskStatus.锁定, EnumGSOperate.入库); return(true); } else { restr += "生成托盘[" + palletCode + "]上架任务失败:终点:" + houseName + targetCell.Cell_Name + targetCell.Cell_Chlid_Position; return(false); } }
public static bool AddStockRecord(string manageID) { List <View_ManageStockListModel> manageStockList = bllViewManageStockList.GetModelListByManageID(manageID); var sdf = manageStockList.Distinct(new ListCompare <View_ManageStockListModel>((x, y) => x.Stock_Tray_Barcode == y.Stock_Tray_Barcode)); List <View_ManageStockListModel> distintStockList = sdf.ToList(); if (distintStockList == null && distintStockList.Count == 0) { return(false); } if (manageStockList == null && manageStockList.Count == 0) { return(false); } foreach (View_ManageStockListModel manageStock in distintStockList) { RecordModel record = new RecordModel(); record.Manage_Begin_Time = manageStock.Manage_Begin_Time; record.Manage_End_Time = manageStock.Manage_End_Time; record.Manage_Type_Code = manageStock.Mange_Type_ID; record.Plan_ID = manageStock.Plan_ID; record.Record_ID = Guid.NewGuid().ToString(); record.Start_Cell_ID = manageStock.Mange_Start_Cell_ID; record.End_Cell_ID = manageStock.Mange_End_Cell_ID; View_CellModel startCell = bllViewCell.GetModelByChildCellID(manageStock.Mange_Start_Cell_ID); View_CellModel endCell = bllViewCell.GetModelByChildCellID(manageStock.Mange_End_Cell_ID); if (startCell.Cell_Type == EnumCellType.货位.ToString() && endCell.Cell_Type == EnumCellType.货位.ToString()) { record.Record_OperateType = EnumCellTransferType.移库.ToString(); } else if (startCell.Cell_Type == EnumCellType.货位.ToString() && endCell.Cell_Type != EnumCellType.货位.ToString()) { record.Record_OperateType = EnumCellTransferType.出库.ToString(); } else if (startCell.Cell_Type != EnumCellType.货位.ToString() && endCell.Cell_Type == EnumCellType.货位.ToString()) { record.Record_OperateType = EnumCellTransferType.入库.ToString(); } record.Stock_Tray_Barcode = manageStock.Stock_Tray_Barcode; bllRecord.Add(record); foreach (View_ManageStockListModel stockList in manageStockList) { Record_ListModel recordList = new Record_ListModel(); recordList.Goods_ID = stockList.Goods_ID; recordList.Plan_List_ID = stockList.Plan_List_ID; recordList.Record_Box_Barcode = stockList.Stock_List_Box_Barcode; recordList.Record_ID = record.Record_ID; recordList.Record_List_ID = Guid.NewGuid().ToString(); recordList.Record_List_Quantity = stockList.Stock_List_Quantity; bllRecordList.Add(recordList); } } return(true); }
public void QueryTask(string taskType, string taskStatus) { currtaskType = taskType; currtaskStatus = taskStatus; List <View_ManageModel> taskList = bllViewManage.GetModelList(taskType, taskStatus); ViewDataManager.TASKLISTDATA.TaskListData.Clear(); if (taskList == null) { return; } foreach (View_ManageModel manage in taskList) { ManageTask task = new ManageTask(); task.操作员 = manage.Manage_Operater; //task.结束时间 = manage.Manage_End_Time.ToString("yyyyy-MM-dd HH:mm:ss"); //if(manage.Manage_Begin_Time!= null) //{ // task.开始时间 = ((DateTime)manage.Manage_Begin_Time).ToString("yyyyy-MM-dd HH:mm:ss"); //} View_CellModel viewStartCell = bllViewCell.GetModelByChildCellID(manage.Mange_Start_Cell_ID); if (viewStartCell == null) { this.View.ShowMessage("信息提示", "任务起始工位数据为空:工位号," + manage.Mange_Start_Cell_ID + ",系统错误请联系管理员!"); return; } if (manage.Manage_Type_Name == EnumManageTaskType.空托盘上架.ToString() || manage.Manage_Type_Name == EnumManageTaskType.架.ToString()) { task.起始位置 = viewStartCell.Cell_Name; } else if (manage.Manage_Type_Name == EnumManageTaskType.拣选下架.ToString() || manage.Manage_Type_Name == EnumManageTaskType.盘点下架.ToString() || manage.Manage_Type_Name == EnumManageTaskType.架.ToString()) { task.起始位置 = viewStartCell.WareHouse_Name + ":" + viewStartCell.Cell_Name + ":" + viewStartCell.Cell_Chlid_Position; } View_CellModel viewEndCell = bllViewCell.GetModelByChildCellID(manage.Mange_End_Cell_ID); if (viewEndCell == null) { this.View.ShowMessage("信息提示", "任务终止工位数据为空:工位号," + manage.Mange_End_Cell_ID + ",系统错误请联系管理员!"); return; } if (manage.Manage_Type_Name == EnumManageTaskType.空托盘上架.ToString() || manage.Manage_Type_Name == EnumManageTaskType.架.ToString()) { task.终止位置 = viewEndCell.WareHouse_Name + ":" + viewEndCell.Cell_Name + ":" + viewEndCell.Cell_Chlid_Position; } else if (manage.Manage_Type_Name == EnumManageTaskType.拣选下架.ToString() || manage.Manage_Type_Name == EnumManageTaskType.盘点下架.ToString() || manage.Manage_Type_Name == EnumManageTaskType.架.ToString()) { WH_Station_LogicModel station = bllStationLogic.GetStationByIDAndType(viewEndCell.Cell_Chlid_ID, EnumCellType.架工位.ToString()); if (station != null) { task.终止位置 = station.WH_Station_Logic_Name; } } task.任务类型 = manage.Manage_Type_Name; task.任务状态 = manage.Mange_Status; task.托盘条码 = manage.Mange_Stock_Barcode; //if(manage.Manage_Begin_Time!= null) //{ // task.开始时间 = manage.Manage_Begin_Time.ToString(); //} if (manage.Mange_CreateTime != null) { task.创建时间 = manage.Mange_CreateTime.ToString(); } if (manage.Manage_End_Time != null) { task.完成时间 = manage.Manage_End_Time.ToString(); } ViewDataManager.TASKLISTDATA.TaskListData.Add(task); } }
private bool CreatePos(View_CellModel gsModel, ref Positions posRef) { if (gsModel == null) { return(false); } Positions pos = new Positions(); pos.Columnth = (int)gsModel.Cell_Column; pos.Layer = (int)gsModel.Cell_Layer; pos.Rowth = (int)gsModel.Cell_Row; pos.StoreStatus = gsModel.Cell_Child_Status; pos.TaskType = gsModel.Cell_Child_Run_Status; pos.GoodsSiteID = gsModel.Cell_Chlid_ID; if (gsModel.Cell_Child_Flag == "1") { pos.enbled = true; } else { pos.enbled = false; } pos.Visible = true; posRef = pos; //此处增加库房和库房区域ID pos.Color = gsStatusColor[gsModel.Cell_Child_Status]; int r = int.Parse(gsModel.Area_BackColor.Split(',')[0]); int g = int.Parse(gsModel.Area_BackColor.Split(',')[1]); int b = int.Parse(gsModel.Area_BackColor.Split(',')[2]); Color areaColor = Color.FromArgb(r, g, b); pos.BorderColor = areaColor; // pos.BorderColor = Color.LightGray; if (gsModel.Cell_Child_Run_Status == EnumGSTaskStatus.锁定.ToString()) { pos.Color = gsStatusColor[gsModel.Cell_Child_Run_Status]; if (gsModel.Cell_Child_Operate_Type == EnumGSOperate.出库.ToString()) { pos.PosText = "出"; } else if (gsModel.Cell_Child_Operate_Type == EnumGSOperate.入库.ToString()) { pos.PosText = "入"; } else if (gsModel.Cell_Child_Operate_Type == EnumGSOperate.移入库.ToString()) { } else if (gsModel.Cell_Child_Operate_Type == EnumGSOperate.移出库.ToString()) { } else { } } if (gsModel.Cell_Child_Run_Status == "出库允许") { pos.Style = 2; } else { pos.Style = 1; } if (pos.Enbled == false) { pos.Color = gsStatusColor[EnumGSEnabledStatus.禁用.ToString()]; } return(true); }
/// <summary> /// wcs向wms请求任务 /// </summary> /// <param name="applyTask"></param> /// <returns></returns> public ResposeData RequireTask(RequireTaskModel requireTask) { ResposeData response = new ResposeData(); if (requireTask == null) { response.Status = false; response.Describe = "请求任务对象为空!"; return(response); } try { ManageModel existMana = bllManage.GetModelByPalletCode(requireTask.PalletCode); if (existMana != null) { response.Status = false; response.Describe = "此托盘任务已经生成!"; return(response); } ManageModel manage = new ManageModel(); manage.Mange_ID = Guid.NewGuid().ToString(); WH_Station_LogicModel stationLogic = bllStationLogic.GetModelByCellID(requireTask.RequireDevice.DeviceCode); if (stationLogic == null) { response.Status = false; response.Describe = "请求设备编号错误!"; return(response); } if (requireTask.RequireType == EnumRequireTaskType.空筐入库.ToString())//入库请求设备对应指定库房编码,库房编码和堆垛机编码一致 { //通过stationLogic得知申请的是哪个库房的入库 View_CellModel targetModel = bllViewCell.ApplyCell(stationLogic.WareHouse_ID); if (targetModel == null) { response.Status = false; response.Describe = "已经没有货位可以申请了!"; return(response); } manage.Mange_Stock_Barcode = requireTask.PalletCode; manage.Manage_BreakDown_Status = "FALSE"; manage.Mange_End_Cell_ID = targetModel.Cell_Chlid_ID; manage.Mange_Full_Flag = "0"; manage.Mange_Start_Cell_ID = requireTask.RequireDevice.DeviceCode; manage.Mange_Status = EnumManageTaskStatus.待执行.ToString(); manage.Mange_Type_ID = "7";//空托盘上架 } else if (requireTask.RequireType == EnumRequireTaskType.空筐出库.ToString()) { View_CellModel emptyPalletCell = bllViewCell.GetEmptyPalletCell(); if (emptyPalletCell == null) { response.Status = false; response.Describe = "已经没有空托盘可以申请了!"; return(response); } manage.Manage_BreakDown_Status = "FALSE"; manage.Mange_End_Cell_ID = requireTask.RequireDevice.DeviceCode; manage.Mange_Full_Flag = "0"; manage.Mange_Start_Cell_ID = emptyPalletCell.Cell_Chlid_ID; manage.Mange_Status = EnumManageTaskStatus.待执行.ToString(); manage.Mange_Stock_Barcode = requireTask.PalletCode; manage.Mange_Type_ID = "9";//空托盘下架 } else { response.Status = false; response.Describe = "请求任务类型错误!"; return(response); } bllManage.Add(manage); response.Status = true; response.Describe = "任务请求成功!"; return(response); } catch (Exception ex) { response.Status = false; response.Describe = "任务请求失败!" + ex.Message; return(response); } }
public void TrayConfirm(string cellID) { try { string restr = ""; //if (ViewDataManager.STOCKADJUSTVIEWDATA.PalletGoodsData.Count == 0) //{ // this.View.ShowMessage("信息提示", "请添加配盘物料!"); // return; //} List <View_Plan_StockListModel> oldStockList = bllViewPlanStockList.GetModelListByCellID(cellID); View_CellModel cell = bllViewCell.GetModelByChildCellID(cellID); if (cell == null) { this.View.ShowMessage("信息提示", "库存货位错误!"); return; } if (cell.Cell_Child_Flag != "1") { this.View.ShowMessage("信息提示", "被禁用的货位不允许调整库存!"); // this.WmsFrame.WriteLog("库存调整", "", "提示", "被禁用的货位不允许调整库存!"); return; } if (cell.Cell_Child_Status == EnumGSTaskStatus.锁定.ToString()) { this.View.ShowMessage("信息提示", "被锁定的货位不允许调整库存!请等待任务执行完成再调整!"); return; } if (ViewDataManager.STOCKADJUSTVIEWDATA.PalletInforData.Count == 0)//清空库存 { if (this.View.AskMessage("信息提示", "您确定要清空此货位库存么?") != 0) { return; } string operteDetail = cell.WareHouse_Name + ":[" + cell.Cell_Name + "]库存手动清空!"; TaskHandleMethod.AddCellOperRecord(cellID, EnumGSOperateType.手动修改状态, operteDetail, ref restr); TaskHandleMethod.DeleteStockByCellChildID(cellID); if (AddRecord(cellID, EnumCellStatus.空闲, EnumGSTaskStatus.完成, ref restr) == false) { this.View.ShowMessage("信息提示", "库存状态、操作记录更新失败!"); return; } return; } List <string> distinctTray = new List <string>(); foreach (PalletGoodsList tray in ViewDataManager.STOCKADJUSTVIEWDATA.PalletInforData) { if (distinctTray.Contains(tray.托盘条码) == false) { distinctTray.Add(tray.托盘条码); } } if (distinctTray.Count > 1) { this.View.ShowMessage("信息提示", "一个货位只允许有一个托盘!"); return; } foreach (string tray in distinctTray) { List <StockModel> stockListModel = bllStock.GetModelListByTrayCode(tray); foreach (StockModel stockModel in stockListModel) { if (stockModel != null && stockModel.Cell_Child_ID != cellID) { this.View.ShowMessage("信息提示", "托盘条码" + tray + "已经在库存中,请确认托盘条码!"); ViewDataManager.STOCKADJUSTVIEWDATA.PalletInforData.Clear(); return; } } } TaskHandleMethod.DeleteStockByCellChildID(cellID);//先清空库存在往里添加 foreach (string tray in distinctTray) { StockModel stock = new StockModel(); stock.Stock_ID = Guid.NewGuid().ToString(); stock.Cell_Child_ID = cell.Cell_Chlid_ID; stock.Stock_Tray_Barcode = tray; bllStock.Add(stock); for (int i = 0; i < ViewDataManager.STOCKADJUSTVIEWDATA.PalletInforData.Count; i++) { PalletGoodsList trayGoodsModel = ViewDataManager.STOCKADJUSTVIEWDATA.PalletInforData[i]; if (trayGoodsModel.托盘条码 != tray) { continue; } Stock_ListModel stockList = new Stock_ListModel(); stockList.Stock_List_ID = Guid.NewGuid().ToString(); stockList.Stock_ID = stock.Stock_ID; GoodsModel goods = bllGoods.GetModelByCode(trayGoodsModel.物料编码); if (goods == null) { continue; } stockList.Goods_ID = goods.Goods_ID; if (oldStockList != null && oldStockList.Count > 0)//计划编号从原来库存里获取 { stockList.Plan_List_ID = oldStockList[0].Plan_List_ID; if (oldStockList[0].Plan_List_ID != "-1") { if (UpdatePlanNum(oldStockList[0].Plan_List_ID, goods.Goods_ID, trayGoodsModel.数量.ToString(), ref restr) == false) { this.WmsFrame.WriteLog("按计划配盘", "", "提示", restr); } } } else//如果没有库存默认为无计划 { stockList.Plan_List_ID = "-1"; } stockList.Stock_List_Box_Barcode = trayGoodsModel.托盘条码; stockList.Stock_List_Entry_Time = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); stockList.Stock_List_Quantity = trayGoodsModel.数量.ToString(); bllStockList.Add(stockList); } } if (AddRecord(cellID, EnumCellStatus.满位, EnumGSTaskStatus.完成, ref restr) == false) { this.View.ShowMessage("信息提示", "库存状态、操作记录更新失败!"); return; } string operteStockDetail = cell.WareHouse_Name + ":[" + cell.Cell_Name + "]库存手动调整成功!!"; TaskHandleMethod.AddCellOperRecord(cellID, EnumGSOperateType.手动修改状态, operteStockDetail, ref restr); ViewDataManager.STOCKADJUSTVIEWDATA.PalletInforData.Clear();//配盘完成后清除数据 this.View.ShowMessage("信息提示", "库存调整成功!"); } catch (Exception ex) { this.View.ShowMessage("信息提示", "库存调整失败!" + ex.Message); } }
public static bool CreateUnshelveManageTask(string planCode, string palletCode, string houseName, string unshelveStationName, ref string manageID, ref string restr) { ManageModel manage = new ManageModel(); manage.Mange_CreateTime = DateTime.Now; WH_WareHouseModel wareHouse = bllWareHouse.GetModelByName(houseName); if (wareHouse == null) { restr = "库房名称错误!"; return(false); } WH_Station_LogicModel targetCell = bllStationLogic.GetStationByName(wareHouse.WareHouse_ID, unshelveStationName); if (targetCell == null) { restr = "下架站台不存在!"; return(false); } View_CellModel startCell = null; View_StockListModel stockModel = bllViewStockList.GetModelByPalletCode(palletCode, EnumCellType.货位.ToString()); if (stockModel == null) { restr = "没有找到所选物料库存!"; return(false); } startCell = bllViewCell.GetModelByWHAndCellName(stockModel.WareHouse_Name, stockModel.Cell_Name, stockModel.Cell_Chlid_Position); if (startCell == null) { restr = "没有找到所选物料货位!"; return(false); } if (startCell.Shelf_Type == EnumShelfType.双深.ToString() && startCell.Cell_Chlid_Position == EnumCellPos.后.ToString())//双深工位如果选中前面的工位要判断后面是否有料 { View_CellModel forwordCell = bllViewCell.GetCell(stockModel.WareHouse_ID, stockModel.Cell_Name, EnumCellPos.前.ToString()); if (forwordCell != null && forwordCell.Cell_Child_Status == "空闲" && forwordCell.Cell_Child_Run_Status == "完成")//前面的已经出去了 { } else { restr = "双深工位出库需要先将外面的库存出库,再出库里面的!"; return(false); } } manage.Mange_ID = Guid.NewGuid().ToString(); manage.Mange_Start_Cell_ID = startCell.Cell_Chlid_ID; manage.Mange_End_Cell_ID = targetCell.Cell_Child_ID; manage.Mange_Status = EnumManageTaskStatus.待执行.ToString(); manage.Manage_BreakDown_Status = "待分解"; manage.Mange_Stock_Barcode = palletCode; //manage.Mange_Type_ID = EnumManageTaskType.下架.ToString(); manage.Mange_Type_ID = "8";//下架 PlanMainModel planModel = null; if (planCode == "-1") { manage.Plan_ID = "-1"; } else { planModel = bllPlan.GetModelByPlanCode(planCode); if (planModel == null) { restr = "不存在此计划!"; return(false); } manage.Plan_ID = planModel.Plan_ID; } manageID = manage.Mange_ID; bllManage.Add(manage); bool status = CreateUnshelveManageListTask(planCode, manage.Mange_ID, palletCode, ref restr); if (status == true) { restr += "生成托盘[" + palletCode + "]下架任务成功:起点:" + startCell.WareHouse_Name + startCell.Cell_Name + startCell.Cell_Chlid_Position; EnumCellStatus cellStatus = (EnumCellStatus)Enum.Parse(typeof(EnumCellStatus), startCell.Cell_Child_Status); UpdateCellStatus(startCell.Cell_Chlid_ID, cellStatus, EnumGSTaskStatus.锁定, EnumGSOperate.出库); return(true); } else { restr += "生成托盘[" + palletCode + "]下架任务失败:起点:" + startCell.WareHouse_Name + startCell.Cell_Name + startCell.Cell_Chlid_Position; return(false); } }
public static bool CreateMoveManageTask(string startCellID, string endCellID, ref string restr) { View_CellModel startCell = bllViewCell.GetModelByChildCellID(startCellID); if (startCell == null) { restr = "起始货位为空!"; return(false); } View_CellModel endCell = bllViewCell.GetModelByChildCellID(endCellID); if (endCell == null) { restr = "终止货位为空!"; return(false); } if (startCell.Cell_Child_Status != EnumCellStatus.满位.ToString() || startCell.Cell_Child_Run_Status != EnumGSTaskStatus.完成.ToString()) { restr = "起始货位状态错误,不能移库!"; return(false); } if (endCell.Cell_Child_Status != EnumCellStatus.空闲.ToString() || endCell.Cell_Child_Run_Status != EnumGSTaskStatus.完成.ToString()) { restr = "终止货位状态错误,不能移库!"; return(false); } List <View_StockListModel> stockList = bllViewStockList.GetModelListByCellID(startCellID); //if(stockList== null) ManageModel manage = new ManageModel(); manage.Mange_CreateTime = DateTime.Now; manage.Mange_ID = Guid.NewGuid().ToString(); manage.Manage_BreakDown_Status = "待分解"; manage.Mange_Start_Cell_ID = startCellID; manage.Mange_End_Cell_ID = endCellID; manage.Mange_Type_ID = "5"; if (stockList != null && stockList.Count > 0) { manage.Mange_Full_Flag = stockList[0].Stock_Full_Flag; manage.Mange_Status = EnumManageTaskStatus.待执行.ToString(); manage.Mange_Stock_Barcode = stockList[0].Stock_Tray_Barcode; manage.Mange_Type_ID = "5"; Plan_ListModel planList = bllPlanList.GetModel(stockList[0].Plan_List_ID); if (planList != null) { manage.Plan_ID = planList.Plan_ID; } else { manage.Plan_ID = "-1"; } } else//空托盘 { } bllManage.Add(manage); bool status = CreateMoveMangeListTask(startCellID, manage.Mange_ID, ref restr); if (status == true) { restr += "生成托盘[" + manage.Mange_Stock_Barcode + "]移库任务成功:起点:" + startCell.WareHouse_Name + startCell.Cell_Name + startCell.Cell_Chlid_Position + "终点:" + endCell.WareHouse_Name + endCell.Cell_Name + endCell.Cell_Chlid_Position; EnumCellStatus cellStatus = (EnumCellStatus)Enum.Parse(typeof(EnumCellStatus), startCell.Cell_Child_Status); UpdateCellStatus(startCell.Cell_Chlid_ID, cellStatus, EnumGSTaskStatus.锁定, EnumGSOperate.出库); UpdateCellStatus(endCell.Cell_Chlid_ID, EnumCellStatus.空闲, EnumGSTaskStatus.锁定, EnumGSOperate.入库); return(true); } else { restr += "生成托盘[" + manage.Mange_Stock_Barcode + "]移库任务失败:起点:" + startCell.WareHouse_Name + startCell.Cell_Name + startCell.Cell_Chlid_Position + "终点:" + endCell.WareHouse_Name + endCell.Cell_Name + endCell.Cell_Chlid_Position; return(false); } }
/// <summary> /// 任务完成:更新货位状态;更新库存(出库库操作不同);更新计划状态及当前完成数量;管理任务删除(保留15天数据);出入库记录更新; /// </summary> /// <param name="manageTask"></param> /// <returns></returns> public override bool ChangeStatus(View_ManageModel manageTask) { try { string restr = ""; if (manageTask == null) { return(false); } View_CellModel viewCell = null; if (manageTask.Manage_Type_Name == EnumManageTaskType.空托盘上架.ToString()) //空托盘没有库存,无计划 { TaskHandleMethod.UpdateCellStatus(manageTask.Mange_End_Cell_ID, EnumCellStatus.空料框, EnumGSTaskStatus.完成, EnumGSOperate.入库); TaskHandleMethod.AddCellOperRecord(manageTask.Mange_End_Cell_ID, EnumGSOperateType.系统添加空料框, "空托盘上架任务完成,更新货位状态", ref restr); TaskHandleMethod.AddStockRecord(manageTask.Mange_ID); viewCell = bllView.GetModelByChildCellID(manageTask.Mange_End_Cell_ID); if (viewCell != null) { restr = "空托盘上架任务完成,更新货位[" + viewCell.WareHouse_Name + "," + viewCell.Cell_Name + "," + viewCell.Cell_Chlid_Position + "]状态,空料框、完成。"; } } else if (manageTask.Manage_Type_Name == EnumManageTaskType.架.ToString()) { TaskHandleMethod.UpdateCellStatus(manageTask.Mange_End_Cell_ID, EnumCellStatus.满位, EnumGSTaskStatus.完成, EnumGSOperate.入库); TaskHandleMethod.AddCellOperRecord(manageTask.Mange_End_Cell_ID, EnumGSOperateType.系统更新货位操作, "物料上架任务完成,更新货位状态", ref restr); TaskHandleMethod.UpdatePlanCompleteNum(manageTask.Mange_ID); TaskHandleMethod.UpdateStockUpdateTime(manageTask.Mange_Stock_Barcode, DateTime.Now); TaskHandleMethod.UpdateStockPos(manageTask.Mange_Stock_Barcode, manageTask.Mange_End_Cell_ID, ref restr); TaskHandleMethod.AddStockRecord(manageTask.Mange_ID); viewCell = bllView.GetModelByChildCellID(manageTask.Mange_End_Cell_ID); if (viewCell != null) { restr = "上架任务完成,更新货位[" + viewCell.WareHouse_Name + "," + viewCell.Cell_Name + "," + viewCell.Cell_Chlid_Position + "]状态,满筐、完成。"; } } else if (manageTask.Manage_Type_Name == EnumManageTaskType.空托盘下架.ToString()) { TaskHandleMethod.UpdateCellStatus(manageTask.Mange_Start_Cell_ID, EnumCellStatus.空闲, EnumGSTaskStatus.完成, EnumGSOperate.出库); TaskHandleMethod.AddCellOperRecord(manageTask.Mange_Start_Cell_ID, EnumGSOperateType.系统更新货位操作, "空托盘下架任务完成,更新货位状态", ref restr); viewCell = bllView.GetModelByChildCellID(manageTask.Mange_Start_Cell_ID); if (viewCell != null) { restr = "空托盘下架任务完成,更新货位[" + viewCell.WareHouse_Name + "," + viewCell.Cell_Name + "," + viewCell.Cell_Chlid_Position + "]状态,空闲、完成。"; } } else if (manageTask.Manage_Type_Name == EnumManageTaskType.架.ToString()) //下架完成后,删除库存 { TaskHandleMethod.UpdateCellStatus(manageTask.Mange_Start_Cell_ID, EnumCellStatus.空闲, EnumGSTaskStatus.完成, EnumGSOperate.出库); TaskHandleMethod.AddCellOperRecord(manageTask.Mange_Start_Cell_ID, EnumGSOperateType.系统更新货位操作, "货物下架任务完成,更新货位状态", ref restr); TaskHandleMethod.UpdatePlanCompleteNum(manageTask.Mange_ID); TaskHandleMethod.AddStockRecord(manageTask.Mange_ID);//删除stock前 TaskHandleMethod.DeleteStock(manageTask.Mange_Stock_Barcode); viewCell = bllView.GetModelByChildCellID(manageTask.Mange_Start_Cell_ID); if (viewCell != null) { restr = "下架任务完成,更新货位[" + viewCell.WareHouse_Name + "," + viewCell.Cell_Name + "," + viewCell.Cell_Chlid_Position + "]状态,空闲、完成。"; } } else if (manageTask.Manage_Type_Name == EnumManageTaskType.盘点下架.ToString()) { TaskHandleMethod.UpdateCellStatus(manageTask.Mange_Start_Cell_ID, EnumCellStatus.空闲, EnumGSTaskStatus.完成, EnumGSOperate.出库); TaskHandleMethod.AddCellOperRecord(manageTask.Mange_Start_Cell_ID, EnumGSOperateType.系统更新货位操作, "货物下架任务完成,更新货位状态", ref restr); //TaskHandleMethod.UpdatePlanCompleteNum(manageTask.Mange_ID); TaskHandleMethod.AddStockRecord(manageTask.Mange_ID); TaskHandleMethod.DeleteStock(manageTask.Mange_ID); viewCell = bllView.GetModelByChildCellID(manageTask.Mange_Start_Cell_ID); if (viewCell != null) { restr = "盘点下架任务完成,更新货位[" + viewCell.WareHouse_Name + "," + viewCell.Cell_Name + "," + viewCell.Cell_Chlid_Position + "]状态,空闲、完成。"; } } else if (manageTask.Manage_Type_Name == EnumManageTaskType.拣选下架.ToString()) { } else if (manageTask.Manage_Type_Name == EnumManageTaskType.移库.ToString()) { TaskHandleMethod.UpdateCellStatus(manageTask.Mange_Start_Cell_ID, EnumCellStatus.空闲, EnumGSTaskStatus.完成, EnumGSOperate.出库); TaskHandleMethod.UpdateCellStatus(manageTask.Mange_End_Cell_ID, EnumCellStatus.满位, EnumGSTaskStatus.完成, EnumGSOperate.入库); TaskHandleMethod.UpdateStockCell(manageTask.Mange_Stock_Barcode, manageTask.Mange_End_Cell_ID, ref restr); TaskHandleMethod.AddCellOperRecord(manageTask.Mange_Start_Cell_ID, EnumGSOperateType.系统更新货位操作, "货物移库任务完成,更新货位状态", ref restr); TaskHandleMethod.AddStockRecord(manageTask.Mange_ID); View_CellModel startCell = bllView.GetModelByChildCellID(manageTask.Mange_Start_Cell_ID); View_CellModel endCell = bllView.GetModelByChildCellID(manageTask.Mange_End_Cell_ID); if (startCell != null && endCell != null) { restr = "移库任务完成,更新货位[" + startCell.WareHouse_Name + "," + startCell.Cell_Name + "," + startCell.Cell_Chlid_Position + "]状态,空闲、完成;"; restr = "更新货位[" + endCell.WareHouse_Name + "," + endCell.Cell_Name + "," + endCell.Cell_Chlid_Position + "]状态,满位、完成。"; } } else { return(false); } StatusManager.wmsFrame.WriteLog("服务管理", "", "提示", restr); TaskHandleMethod.CheckPlanCompleteStatus(manageTask.Plan_ID, ref restr);//检查计划是否完成,如果完成自动更新计划通过计划数量和完成数量相等判断 TaskHandleMethod.UpdateManageCompleteTime(manageTask.Mange_ID, DateTime.Now); TaskHandleMethod.UpdateManageHandleStatus(manageTask.Mange_ID, EnumBreakDowmStatus.已处理); return(true); } catch (Exception ex) { StatusManager.wmsFrame.WriteLog("服务管理", "", "错误", "任务完成处理失败!" + ex.Message); return(false); } }