Exemplo n.º 1
0
        public void PutawayTask(string palletCode, string houseName, string putawayStationName,
                                bool isAssign, string rowth, string colth, string layerth, string pos)
        {
            string restr = "";

            if (palletCode == "")
            {
                this.View.ShowMessage("信息提示", "请选择托盘条码!");
                return;
            }
            //if(isEmptyPallet == false)//不是空托盘,没有库存判断
            //{
            StockModel stock = bllStock.GetModelByTrayCode(palletCode);

            if (stock == null)
            {
                this.View.ShowMessage("信息提示", "请配盘入库!");
                return;
            }
            //}

            ManageModel manageTemp = bllManage.GetModelByPalletCode(palletCode);

            if (manageTemp != null)
            {
                this.View.ShowMessage("信息提示", "当前托盘已经生成上架任务!");
                return;
            }
            string             manageID   = "";
            EnumManageTaskType manaTask   = EnumManageTaskType.架;
            string             targetCell = rowth + "排" + colth + "列" + layerth + "层-" + pos;
            //if (isEmptyPallet == true)
            //{
            //    manaTask = EnumManageTaskType.空托盘上架;
            //}
            //else
            ////{
            //manaTask = EnumManageTaskType.上架;
            //}
            ReturnObject allowCreateTask = new ReturnObject();

            allowCreateTask.Status = true;

            if (this.AllowPutaway != null)
            {
                WH_WareHouseModel house = bllWareHouse.GetModelByName(houseName);
                if (house == null)
                {
                    this.View.ShowMessage("信息提示", "库房获取失败!");
                    return;
                }
                PutawayParams putwayParams = new PutawayParams();
                putwayParams.WareHouseName = houseName;
                putwayParams.WareHouseCode = house.WareHouse_Code;
                putwayParams.PalletCode    = palletCode;
                allowCreateTask            = this.AllowPutaway(putwayParams);
            }
            if (allowCreateTask.Status == false)
            {
                this.View.ShowMessage("信息提示", allowCreateTask.Describe);
                return;
            }
            if (TaskHandleMethod.CreatePutawayManageTask(palletCode, houseName, putawayStationName, isAssign, targetCell, manaTask, ref manageID, ref restr) == false)
            {
                this.WmsFrame.WriteLog("上架逻辑", "", "提示", "创建管理任务失败:" + restr);
                return;
            }
            //if (TaskHandleMethod.CreatePutawayManageListTask(manageID, palletCode, ref restr) == false)
            //{
            //    this.WmsFrame.WriteLog("上架逻辑", "", "提示", "创建管理任务列表失败:" + restr);
            //    return;
            //}
            this.WmsFrame.WriteLog("上架逻辑", "", "提示", "上架任务下达成功!" + restr);
        }
Exemplo n.º 2
0
        /// <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);
            }
        }
Exemplo n.º 3
0
        public void PutawayTask(string palletCode, string houseName, string putawayStationName,
                                bool isAssign, string rowth, string colth, string layerth, string pos)
        {
            string restr = "";

            if (palletCode == "")
            {
                this.View.ShowMessage("信息提示", "请选择托盘条码!");
                return;
            }
            //if(isEmptyPallet == false)//不是空托盘,没有库存判断
            //{
            StockModel stock = bllStock.GetModelByTrayCode(palletCode);

            if (stock == null)
            {
                this.View.ShowMessage("信息提示", "请配盘入库!");
                return;
            }
            //}

            ManageModel manageTemp = bllManage.GetModelByPalletCode(palletCode);

            if (manageTemp != null)
            {
                this.View.ShowMessage("信息提示", "当前托盘已经生成上架任务!");
                return;
            }
            string             manageID   = "";
            EnumManageTaskType manaTask   = EnumManageTaskType.架;
            string             targetCell = rowth + "排" + colth + "列" + layerth + "层-" + pos;
            //if (isEmptyPallet == true)
            //{
            //    manaTask = EnumManageTaskType.空托盘上架;
            //}
            //else
            ////{
            //manaTask = EnumManageTaskType.上架;
            //}
            bool allowCreateTask = true;

            if (this.AllowPutaway != null)
            {
                allowCreateTask = this.AllowPutaway();
            }
            if (allowCreateTask == false)
            {
                this.View.ShowMessage("信息提示", "当前系统不允许下达上架任务!只允许执行一个任务");
                return;
            }
            if (TaskHandleMethod.CreatePutawayManageTask(palletCode, houseName, putawayStationName, isAssign, targetCell, manaTask, ref manageID, ref restr) == false)
            {
                this.WmsFrame.WriteLog("上架逻辑", "", "提示", "创建管理任务失败:" + restr);
                return;
            }
            //if (TaskHandleMethod.CreatePutawayManageListTask(manageID, palletCode, ref restr) == false)
            //{
            //    this.WmsFrame.WriteLog("上架逻辑", "", "提示", "创建管理任务列表失败:" + restr);
            //    return;
            //}
            this.WmsFrame.WriteLog("上架逻辑", "", "提示", "上架任务下达成功!" + restr);
        }