Esempio n. 1
0
        private bool CellValidStatNotify(int row, int col, int layer, bool cellValid, string reason, ref string reStr)
        {
            CellCoordModel      cell         = new CellCoordModel(row, col, layer);
            EnumGSEnabledStatus enableStatus = EnumGSEnabledStatus.禁用;

            if (cellValid)
            {
                enableStatus = EnumGSEnabledStatus.启用;
            }
            //zwx,此处需要修改
            return(asrsResourceManage.UpdateGsEnabledStatus(EnumStoreHouse.B1库房.ToString(), cell, enableStatus, ref reStr));
        }
Esempio n. 2
0
        public bool IsAsrsCellReady(int row, int col, int layer, ref string[] barCodes, ref bool isReady, ref string reStr)
        {
            try
            {
                //  barCodes = new string[] { "TP12234" };
                barCodes = null;

                //Console.WriteLine("hello:收到货位{0}-{1}-{2}就绪状态查询调用",row,col,layer);
                if (logRecorder != null)
                {
                    logRecorder.AddDebugLog(logSrc, string.Format("hello:收到货位{0}-{1}-{2}就绪状态查询调用", row, col, layer));
                }
                CellCoordModel   cell          = new CellCoordModel(row, col, layer);
                EnumCellStatus   cellStoreStat = EnumCellStatus.空闲;
                EnumGSTaskStatus cellTaskStat  = EnumGSTaskStatus.完成;
                if (!this.asrsResManage.GetCellStatus(houseName, cell, ref cellStoreStat, ref cellTaskStat))
                {
                    reStr = string.Format("货位不存在:{0}-{1}-{2}", row, col, layer);
                    logRecorder.AddDebugLog(logSrc, reStr);
                    return(false);
                }
                if (cellStoreStat == EnumCellStatus.满位 && cellTaskStat == EnumGSTaskStatus.完成)
                {
                    List <string> storBarcodes = new List <string>();
                    this.asrsResManage.GetStockDetail(houseName, cell, ref storBarcodes);
                    if (storBarcodes.Count() < 1)
                    {
                        isReady = false;
                        reStr   = "货位没有产品";
                    }
                    else
                    {
                        barCodes = storBarcodes.ToArray();
                        isReady  = true;
                        reStr    = "查询OK";
                    }
                }
                else
                {
                    reStr   = "货位没有产品";
                    isReady = false;
                }
                logRecorder.AddDebugLog(logSrc, string.Format("{0}-{1}-{2}就绪状态返回结果,{3},{4}", row, col, layer, isReady.ToString(), reStr));
                return(true);
            }
            catch (Exception ex)
            {
                reStr = ex.ToString();
                return(false);
            }
        }
Esempio n. 3
0
 private void GenerateAsrsCheckoutTask()
 {
     try
     {
         BindingSource bs = this.dataGridView1.DataSource as BindingSource;
         DataTable     dt = bs.DataSource as DataTable;
         if (dt == null)
         {
             return;
         }
         int pri = int.Parse(this.textBoxPrivilege.Text);
         foreach (DataRow dr in dt.Rows)
         {
             string houseName = dr["库房"].ToString();
             string strCell   = dr["库位"].ToString();
             AsrsControl.AsrsCtlModel asrsCtl = AsrsPresenter.GetAsrsCtlByName(houseName);
             AsrsModel.CellCoordModel cell    = new CellCoordModel(0, 0, 0);
             if (!cell.Parse(strCell))
             {
                 continue;
             }
             EnumCellStatus   cellStoreStat = EnumCellStatus.空闲;
             EnumGSTaskStatus cellTaskStat  = EnumGSTaskStatus.完成;
             if (!asrsResMana.GetCellStatus(houseName, cell, ref cellStoreStat, ref cellTaskStat))
             {
                 Console.WriteLine("获取货位{0}:{1}状态失败", houseName, strCell);
                 continue;
             }
             if (cellStoreStat != EnumCellStatus.满位 || cellTaskStat == EnumGSTaskStatus.锁定)
             {
                 continue;
             }
             CtlDBAccess.Model.ControlTaskModel asrsTask = null;
             if (!asrsCtl.GenerateOutputTask(cell, null, SysCfg.EnumAsrsTaskType.产品出库, false, ref asrsTask, null, pri))
             {
                 logRecorder.AddDebugLog(this.Text, string.Format("生成{0}:{1}出库任务失败", houseName, strCell));
             }
             else
             {
                 logRecorder.AddDebugLog(this.Text, string.Format("生成{0}:{1}产品出库任务成功", houseName, strCell));
             }
             dr["出库任务ID"] = asrsTask.TaskID;
         }
         this.dataGridView1.Refresh();
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.ToString());
     }
 }
Esempio n. 4
0
        public bool CreateManualOutputTask(string houseName, CellCoordModel cell, ref string reStr)
        {
            AsrsCtlModel asrsModel = null;

            foreach (AsrsCtlModel m in asrsCtls)
            {
                if (m.HouseName == houseName)
                {
                    asrsModel = m;
                    break;
                }
            }
            if (asrsModel == null)
            {
                reStr = "未识别的: " + houseName;
                return(false);
            }

            SysCfg.EnumAsrsTaskType taskType       = SysCfg.EnumAsrsTaskType.产品出库;
            EnumCellStatus          cellStoreStats = EnumCellStatus.空闲;
            EnumGSTaskStatus        cellTaskStatus = EnumGSTaskStatus.完成;

            asrsResourceManage.GetCellStatus(houseName, cell, ref cellStoreStats, ref cellTaskStatus);
            EnumGSEnabledStatus cellEnabledStatus = EnumGSEnabledStatus.启用;

            if (!asrsResourceManage.GetCellEnabledStatus(houseName, cell, ref cellEnabledStatus))
            {
                reStr = string.Format("获取货位启用状态失败{0}-{1}-{2}", cell.Row, cell.Col, cell.Layer);
                return(false);
            }
            if (cellEnabledStatus == EnumGSEnabledStatus.禁用)
            {
                reStr = string.Format("货位{0}-{1}-{2}禁用,无法生成出库任务", cell.Row, cell.Col, cell.Layer);
                return(false);
            }
            if (cellTaskStatus == EnumGSTaskStatus.锁定)
            {
                reStr = "货位处于锁定状态";
                return(false);
            }

            if (cellStoreStats == EnumCellStatus.空料框)
            {
                taskType = SysCfg.EnumAsrsTaskType.空框出库;
            }

            asrsModel.GenerateOutputTask(cell, null, taskType, false);

            return(true);
        }
Esempio n. 5
0
        /// <summary>
        /// 更新货位操作,任务申请,完成后调用
        /// </summary>
        /// <param name="houseName">库房名称</param>
        /// <param name="cellCoord">库存位置</param>
        /// <param name="gsOper">库存操作</param>
        /// <param name="reStr">执行状态描述</param>
        /// <returns>执行状态结果</returns>
        public bool UpdateGSOper(string houseName, CellCoordModel cellCoord, EnumGSOperate gsOper, ref string reStr)
        {
            bool updateStatus = bllGoodsSite.UpdateOperateByRCL(houseName, cellCoord.Row, cellCoord.Col, cellCoord.Layer, gsOper);

            if (updateStatus == false)
            {
                reStr = "数据库更新失败!";
                return(false);
            }
            //string operateStr = "库房:" + houseName + ",货位:" + cellCoord.Row + "排" + cellCoord.Col + "列"
            //    + cellCoord.Layer + "层," + "货位操作:" + gsOper.ToString();
            //AddGSOperRecord(houseName, cellCoord, EnumGSOperateType.系统更新货位操作, operateStr, ref reStr);
            return(true);
        }
Esempio n. 6
0
        /// <summary>
        /// 从缓存区中找出一个最近距离的货位放到测试区
        /// 先找最近的列,然后找最近的层
        /// </summary>
        /// <param name="cells"></param>
        /// <param name="targetCell"></param>
        /// <returns></returns>
        private CellCoordModel GetClosestCell(List <CellCoordModel> cacheCells, CellCoordModel targetCell)
        {
            if (cacheCells == null || targetCell == null)
            {
                return(null);
            }

            //var resultCol = (from x in cacheCells.AsParallel() select new { Key = x, Value = Math.Abs(x.Col - targetCell.Col) }).OrderBy(x => x.Value);

            //var resultlayer = (from x in resultCol.AsParallel() select new { Key = x, Value = Math.Abs(x.Key.Layer - targetCell.Layer) }).OrderByDescending(x => x.Value).Take(1);
            //resultlayer.ToList().ForEach(x => Console.Write("列:"+x.Key.Key.Col + "层:"+ x.Key.Key.Layer));
            CellCoordModel cell = cacheCells[0];//暂时取第一个作为移库起始点

            return(cell);
        }
Esempio n. 7
0
        /// <summary>
        /// 查询货位状态
        /// </summary>
        /// <param name="houseName">库房名称</param>
        /// <param name="cellCoord">货位位置</param>
        /// <param name="cellStatus">货位状态</param>
        /// <param name="taskStatus">货位任务状态</param>
        /// <returns>查询状态</returns>
        public bool GetCellStatus(string houseName, CellCoordModel cellCoord, ref EnumCellStatus cellStatus, ref EnumGSTaskStatus taskStatus)
        {
            //StoreHouseModel houseModel = bllStoreHouse.GetModelByName(houseName);
            //if (houseModel == null)
            //{

            //    return false;
            //}
            //GoodsSiteModel gsm = bllGoodsSite.GetModelByRCL(houseModel.StoreHouseID, cellCoord.Row, cellCoord.Col, cellCoord.Layer);
            //if (gsm == null)
            //{
            //    return false;
            //}
            //cellStatus = (EnumCellStatus)Enum.Parse(typeof(EnumCellStatus), gsm.GoodsSiteStatus);
            //taskStatus = (EnumGSTaskStatus)Enum.Parse(typeof(EnumGSTaskStatus), gsm.GoodsSiteTaskStatus);
            return(true);
        }
Esempio n. 8
0
        /// <summary>
        /// 添加空料筐库存
        /// </summary>
        /// <param name="houseName">库房名称</param>
        /// <param name="cellCoord">货位位置</param>
        /// <param name="reStr">执行状态描述</param>
        /// <returns>执行状态结果</returns>
        public bool AddEmptyMeterialBox(string houseName, CellCoordModel cellCoord, ref string reStr)
        {
            StoreHouseModel houseModel = bllStoreHouse.GetModelByName(houseName);

            if (houseModel == null)
            {
                reStr = "不存在此库房!";
                return(false);
            }
            GoodsSiteModel gsm = bllGoodsSite.GetModelByRCL(houseModel.StoreHouseID, cellCoord.Row, cellCoord.Col, cellCoord.Layer);

            if (gsm == null)
            {
                reStr = "不存在此库存!";
                return(false);
            }
            gsm.Reserve = cellCoord.ExtProp1;//保存货位扩展属性,目前为空托盘型号
            bllGoodsSite.Update(gsm);

            StockModel sm = new StockModel();

            sm.GoodsSiteID = gsm.GoodsSiteID;
            sm.IsFull      = true;
            sm.TrayID      = "12345678";//测试
            long stockID = bllStock.Add(sm);

            StockListModel slm = new StockListModel();

            slm.InHouseTime     = DateTime.Now;
            slm.StockID         = stockID;
            slm.MeterialBatch   = ""; //暂时没有
            slm.MeterialboxCode = "";
            slm.MeterialStatus  = ""; //暂时没有赋值,若有库存详细应在此增加
            long stockListID = bllStockList.Add(slm);

            StockDetailModel sdm = new StockDetailModel();

            sdm.StockListID  = stockListID;
            sdm.MeterialName = "空料筐";
            bllStockDetail.Add(sdm);

            // string operateStr = "库房:" + houseName + ",货位:" + cellCoord.Row + "排" + cellCoord.Col + "列"
            //+ cellCoord.Layer + "层," + "添加空料框";
            // AddGSOperRecord(houseName, cellCoord, EnumGSOperateType.系统添加空料框, operateStr, ref reStr);
            return(true);
        }
Esempio n. 9
0
 private bool IsAsrsCellReady(int row, int col, int layer, ref string[] barCodes, ref bool isReady, ref string reStr)
 {
     // Console.WriteLine("收到远程调用,IsAsrsCellReady");
     try
     {
         CellCoordModel   cell          = new CellCoordModel(row, col, layer);
         EnumCellStatus   cellStoreStat = EnumCellStatus.空闲;
         EnumGSTaskStatus cellTaskStat  = EnumGSTaskStatus.完成;
         if (!this.asrsResourceManage.GetCellStatus(asrsCtls[1].HouseName, cell, ref cellStoreStat, ref cellTaskStat))
         {
             reStr = string.Format("货位不存在:{0}-{1}-{2}", row, col, layer);
             return(false);
         }
         if (cellStoreStat == EnumCellStatus.满位 && cellTaskStat == EnumGSTaskStatus.完成)
         {
             List <string> storBarcodes = new List <string>();
             this.asrsResourceManage.GetStockDetail(asrsCtls[1].HouseName, cell, ref storBarcodes);
             if (storBarcodes.Count() < 1)
             {
                 isReady = false;
                 reStr   = "货位没有产品";
             }
             else
             {
                 if (storBarcodes.Count() < 2)
                 {
                     storBarcodes.Add("");
                 }
                 //storBarcodes[1] = string.Empty;
                 barCodes = storBarcodes.ToArray();
                 isReady  = true;
             }
         }
         else
         {
             reStr   = "货位没有产品";
             isReady = false;
         }
         return(true);
     }
     catch (Exception ex)
     {
         reStr = ex.ToString();
         return(false);
     }
 }
Esempio n. 10
0
        /// <summary>
        /// 货位状态更新,货位申请、出库、入库等改变货位状态后需要调用
        /// </summary>
        /// <param name="houseName"></param>
        /// <param name="cellCoord"></param>
        /// <param name="cellStat"></param>
        /// <param name="taskStatus"></param>
        /// <param name="reStr"></param>
        /// <returns></returns>
        public bool UpdateCellStatus(string houseName, CellCoordModel cellCoord, EnumCellStatus cellStat, EnumGSTaskStatus taskStatus, ref string reStr)
        {
            bool updateStatus = bllGoodsSite.UpdateModelByRCL(houseName, cellCoord.Row, cellCoord.Col, cellCoord.Layer, cellStat, taskStatus);

            if (updateStatus == true)
            {
                OnUpdateGsStatus();
                //string operateStr = "库房:" + houseName + ",货位:" + cellCoord.Row + "排" + cellCoord.Col + "列" + cellCoord.Layer + "层," + "货位状态更改为:" + cellStat.ToString() + ";货位任务状态更改为:" + taskStatus.ToString();
                //AddGSOperRecord(houseName, cellCoord, EnumGSOperateType.系统修改状态, operateStr,ref reStr);
                reStr = "货位更新成功!";
                return(true);
            }
            else
            {
                reStr = "货位更新失败!";
                return(false);
            }
        }
Esempio n. 11
0
        /// <summary>
        /// 更新货位任务状态,货位申请、出库、入库等改变货位状态后需要调用
        /// </summary>
        /// <param name="houseName">库房名称</param>
        /// <param name="cellCoord">货位位置</param>
        /// <param name="taskStatus">货位任务状态</param>
        /// <param name="reStr">执行状态描述</param>
        /// <returns>执行结果</returns>
        public bool UpdateGsTaskStatus(string houseName, CellCoordModel cellCoord, EnumGSTaskStatus taskStatus, ref string reStr)
        {
            //bool updateStatus = bllGoodsSite.UpdateGsTaskStatusByRCL(houseName, cellCoord.Row, cellCoord.Col, cellCoord.Layer, taskStatus);
            //if (updateStatus == true)
            //{
            //    OnUpdateGsStatus();

            //    //string operateStr = "库房:" + houseName + ",货位:" + cellCoord.Row + "排" + cellCoord.Col + "列" + cellCoord.Layer + "层," + "货位任务状态更改为:" + taskStatus.ToString();
            //    //AddGSOperRecord(houseName, cellCoord, EnumGSOperateType.系统修改状态, operateStr, ref reStr);
            //    reStr = "货位更新成功!";
            //    return true;
            //}
            //else
            //{
            //    reStr = "货位更新失败!";
            //    return false;
            //}
            return(true);
        }
Esempio n. 12
0
        public void OutputManual(long gsID)
        {
            string reStr = "";

            //View_StockGSModel skGsModel = bllViewStockGs.GetModelByGSID(gsID);
            //if (skGsModel == null)
            //{
            //    this.view.AddLog("库存管理", "手动出库货失败,没有库存!", LogInterface.EnumLoglevel.提示);
            //    return;
            //}
            try
            {
                View_GoodsSiteModel vgsm = bllViewGs.GetModelByGSID(gsID);
                if (vgsm == null)
                {
                    this.view.AddLog("库存管理", "货位错误!", LogInterface.EnumLoglevel.提示);
                    return;
                }

                CellCoordModel cell = new CellCoordModel(vgsm.GoodsSiteRow, vgsm.GoodsSiteColumn, vgsm.GoodsSiteLayer);
                if (this.iControl == null)
                {
                    return;
                }
                bool status = this.iControl.CreateManualOutputTask(vgsm.StoreHouseName, cell, ref reStr);
                if (status == true)
                {
                    this.view.AddLog("库存管理", "手动出库货位:" + vgsm.GoodsSiteName + "成功!", LogInterface.EnumLoglevel.提示);
                    this.iStorageManage.AddGSOperRecord(vgsm.StoreHouseName, cell, EnumGSOperateType.手动出库, "手动出库货位:" + vgsm.GoodsSiteName, ref reStr);
                }
                else
                {
                    this.view.AddLog("库存管理", "手动出库货位:" + vgsm.GoodsSiteName + "失败!" + reStr, LogInterface.EnumLoglevel.提示);
                    this.iStorageManage.AddGSOperRecord(vgsm.StoreHouseName, cell, EnumGSOperateType.手动出库, "手动出库货位:" + vgsm.GoodsSiteName + "失败" + reStr, ref reStr);
                }

                RefreshPos(vgsm.StoreHouseName, vgsm.GoodsSiteRow);//刷新
            }
            catch (Exception ex)
            {
                Console.WriteLine("发生异常:" + ex.ToString());
            }
        }
Esempio n. 13
0
        private void button1_Click(object sender, EventArgs e)
        {
            string         reStr = "";
            StorageManager sm    = new StorageManager();

            sm.Initialize(ref reStr);
            CellCoordModel cell = new CellCoordModel(1, 1, 5);

            //EnumGSEnabledStatus gsSta = EnumGSEnabledStatus.禁用;
            //sm.GetCellEnabledStatus("A库房", cell, ref gsSta);
            //sm.UpdateCellStatus("A库房", cell, EnumCellStatus.满位, EnumGSTaskStatus.完成, ref reStr);
            // sm.UpdateGSOper("A库房", cell, EnumGSOperate.入库, ref reStr);
            // sm.CellRequire("A库房", ref cell, ref reStr);
            // EnumCellStatus cellSta = EnumCellStatus.满位;
            // EnumGSTaskStatus taskStas = EnumGSTaskStatus.锁定;
            // sm.GetCellStatus("A库房", cell, ref cellSta, ref taskStas);
            string[] ssf = new string[2];
            ssf[0] = "tb123";
            ssf[1] = "tb345";
            sm.AddStack("A库房", cell, "1234567", ssf, ref reStr);
            sm.UpdateCellStatus("A库房", cell, EnumCellStatus.满位, EnumGSTaskStatus.锁定, ref reStr);
            // sm.CellRequire("A库房", ref cell, ref reStr);
            // List<CellCoordModel> cellList = new List<CellCoordModel>();
            // sm.GetAllowLeftHouseGs("A库房", ref cellList, ref reStr);

            // sm.AddEmptyMeterialBox("A库房", cell, ref reStr);
            //// sm.AddGSOperRecord("A库房", cell, EnumGSOperateType.手动出库, ref reStr);

            // DateTime dt = new DateTime();
            // sm.GetCellInputTime("A库房", cell, ref dt);
            // sm.RemoveStack("A库房", cell, ref reStr);
            // sm.UpdateGSOper("A库房", cell, EnumGSOperate.出库, ref reStr);
            // sm.UpdateGsStatus("A库房", cell, EnumCellStatus.空料框, ref reStr);
            // sm.UpdateGsTaskStatus("A库房", cell, EnumGSTaskStatus.出库允许, ref reStr);

            //List<string> stockList = new List<string>();
            //sm.GetStockDetail("A库房", new CellCoordModel(1, 1, 5), ref stockList);
            StorageView storageView = new StorageView("库存管理");

            storageView.ShowDialog();
            //StorageView sv = new StorageView("wer");
            //sv.ShowDialog();
        }
Esempio n. 14
0
        /// <summary>
        /// 更新货位启用状态
        /// </summary>
        /// <param name="houseName">库房名称</param>
        /// <param name="cellCoord">货位位置</param>
        /// <param name="enabledStatus">货位禁用状态</param>
        /// <param name="reStr">执行状态描述</param>
        /// <returns>执行状态</returns>
        public bool UpdateGsEnabledStatus(string houseName, CellCoordModel cellCoord, EnumGSEnabledStatus enabledStatus, ref string reStr)
        {
            StoreHouseModel houseModel = bllStoreHouse.GetModelByName(houseName);

            if (houseModel == null)
            {
                return(false);
            }
            GoodsSiteModel gsm = bllGoodsSite.GetModelByRCL(houseModel.StoreHouseID, cellCoord.Row, cellCoord.Col, cellCoord.Layer);

            if (gsm == null)
            {
                return(false);
            }
            bool gsEnabledSta = false;

            if (enabledStatus == EnumGSEnabledStatus.启用)
            {
                gsEnabledSta = true;
            }
            else
            {
                gsEnabledSta = false;
            }
            bool updateStatus = bllGoodsSite.UpdateGSEnabledStatusByID(gsm.GoodsSiteID, gsEnabledSta);

            if (updateStatus == true)
            {
                OnUpdateGsStatus();
                //string operateStr = "库房:" + houseName + ",货位:" + cellCoord.Row + "排" + cellCoord.Col + "列" + cellCoord.Layer + "层," + "货位启用状态更改为:" + enabledStatus.ToString();
                //AddGSOperRecord(houseName, cellCoord, EnumGSOperateType.系统修改状态, operateStr, ref reStr);

                reStr = "货位更新成功!";
                return(true);
            }
            else
            {
                reStr = "货位更新失败!";
                return(false);
            }
        }
Esempio n. 15
0
        /// <summary>
        /// 添加空料筐库存
        /// </summary>
        /// <param name="houseName">库房名称</param>
        /// <param name="cellCoord">货位位置</param>
        /// <param name="reStr">执行状态描述</param>
        /// <returns>执行状态结果</returns>
        public bool AddEmptyMeterialBox(string houseName, CellCoordModel cellCoord, ref string reStr)
        {
            //StoreHouseModel houseModel = bllStoreHouse.GetModelByName(houseName);
            //if (houseModel == null)
            //{
            //    reStr = "不存在此库房!";
            //    return false;
            //}
            //GoodsSiteModel gsm = bllGoodsSite.GetModelByRCL(houseModel.StoreHouseID, cellCoord.Row, cellCoord.Col, cellCoord.Layer);
            //if (gsm == null)
            //{
            //    reStr = "不存在此库存!";
            //    return false;
            //}
            //gsm.Reserve = cellCoord.ExtProp1;//保存货位扩展属性,目前为空托盘型号
            //bllGoodsSite.Update(gsm);

            //StockModel sm = new StockModel();
            //sm.GoodsSiteID = gsm.GoodsSiteID;
            //sm.IsFull = true;
            //sm.TrayID = "12345678";//测试
            //long stockID = bllStock.Add(sm);

            //StockListModel slm = new StockListModel();
            //slm.InHouseTime = DateTime.Now;
            //slm.StockID = stockID;
            //slm.MeterialBatch = "";//暂时没有
            //slm.MeterialboxCode = "";
            //slm.MeterialStatus = "";//暂时没有赋值,若有库存详细应在此增加
            //long stockListID = bllStockList.Add(slm);

            //StockDetailModel sdm = new StockDetailModel();
            //sdm.StockListID = stockListID;
            //sdm.MeterialName = "空料筐";
            //bllStockDetail.Add(sdm);


            return(true);
        }
Esempio n. 16
0
 /// <summary>
 /// 获取库存料框条码列表
 /// </summary>
 /// <param name="houseName">库房名称</param>
 /// <param name="cellCoord">货位位置</param>
 /// <param name="boxCodeList">料框条码列表</param>
 /// <returns>查询状态</returns>
 public bool GetStockDetail(string houseName, CellCoordModel cellCoord, ref List <string> boxCodeList)
 {
     //boxCodeList = new List<string>();
     //if (cellCoord == null)
     //{
     //    return false;
     //}
     //StoreHouseModel houseModel = bllStoreHouse.GetModelByName(houseName);
     //if (houseModel == null)
     //{
     //    return false;
     //}
     //List<View_StockModel> stockList = bllViewStock.GetStockDetail(houseName, cellCoord.Row, cellCoord.Col, cellCoord.Layer);
     //if (stockList == null)
     //{
     //    return false;
     //}
     //for (int i = 0; i < stockList.Count; i++)
     //{
     //    boxCodeList.Add(stockList[i].MeterialboxCode);
     //}
     return(true);
 }
Esempio n. 17
0
        public void MoveGsManual(string startHouseName, CellCoordModel startGsPos, string endHouseName, CellCoordModel endGsPos)
        {
            string reStr = "";

            if (this.iControl == null)
            {
                return;
            }
            bool   status     = this.iControl.CreateManualMoveGSTask(startHouseName, startGsPos, endHouseName, endGsPos, ref reStr);
            string operateStr = "手动移库:从" + startHouseName + "," + startGsPos.Row + "排" + startGsPos.Col + "列" + startGsPos.Layer + "层"
                                + "移至" + endHouseName + "," + endGsPos.Row + "排" + endGsPos.Col + "列" + endGsPos.Layer + "层";

            if (status == true)
            {
                this.iStorageManage.AddGSOperRecord(startHouseName, startGsPos, EnumGSOperateType.手动移出库房, operateStr, ref reStr);
                this.view.AddLog("库存管理", operateStr + "成功!", LogInterface.EnumLoglevel.提示);
            }
            else
            {
                this.view.AddLog("库存管理", operateStr + "失败!", LogInterface.EnumLoglevel.提示);
            }
            RefreshPos(this.currHouseName, this.currRowth);//刷新
        }
Esempio n. 18
0
        /// <summary>
        /// 移除库存
        /// </summary>
        /// <param name="houseName">库房信息</param>
        /// <param name="cellCoord">货位位置</param>
        /// <param name="reStr">执行状态描述</param>
        /// <returns>执行状态结果</returns>
        public bool RemoveStack(string houseName, CellCoordModel cellCoord, ref string reStr)
        {
            //StoreHouseModel houseModel = bllStoreHouse.GetModelByName(houseName);
            //if (houseModel == null)
            //{
            //    reStr = "不存在此库房!";
            //    return false;
            //}
            //GoodsSiteModel gsm = bllGoodsSite.GetModelByRCL(houseModel.StoreHouseID, cellCoord.Row, cellCoord.Col, cellCoord.Layer);
            //if (gsm == null)
            //{
            //    reStr = "不存在此库存!";
            //    return false;
            //}
            //bool deleSta = bllStock.DeleteModelByGSID(gsm.GoodsSiteID);
            //if (deleSta == false)
            //{
            //    reStr = "数据删除失败!";
            //    return false;
            //}

            return(true);
        }
Esempio n. 19
0
        /// <summary>
        /// 获取所有满位或者空货位的货位列表
        /// </summary>
        /// <param name="houseName">库房名称</param>
        /// <param name="cells">货位列表</param>
        /// <param name="isFull">true,获取满位并且完成的货位,货位空货位并且空闲的货位</param>
        /// <returns>执行状态</returns>
        public bool GetAreaCells(string houseName, string areaName, ref List <CellCoordModel> cells, bool isFull)
        {
            cells = new List <CellCoordModel>();
            List <View_GoodsSiteModel> gses = bllViewGoodsSite.GetGsByHouseAndArea(houseName, areaName, isFull);

            if (gses == null)
            {
                return(false);
            }
            for (int i = 0; i < gses.Count; i++)
            {
                CellCoordModel cell = new CellCoordModel(gses[i].GoodsSiteRow, gses[i].GoodsSiteColumn, gses[i].GoodsSiteLayer);

                if (gses[i].GsEnabled == true)
                {
                    if (gses[i].GoodsSiteStatus == EnumCellStatus.空闲.ToString() &&
                        gses[i].GoodsSiteTaskStatus == EnumGSTaskStatus.完成.ToString())
                    {
                        cells.Add(cell);
                    }
                }
            }
            return(true);
        }
Esempio n. 20
0
        /// <summary>
        ///查询货位启用状态
        /// </summary>
        /// <param name="houseName">库房名称</param>
        /// <param name="celCoord">货位位置</param>
        /// <param name="gsEnabledStatus">货位启用状态</param>
        /// <returns>查询状态</returns>
        public bool GetCellEnabledStatus(string houseName, CellCoordModel cellCoord, ref EnumGSEnabledStatus gsEnabledStatus)
        {
            //StoreHouseModel houseModel = bllStoreHouse.GetModelByName(houseName);
            //if (houseModel == null)
            //{

            //    return false;
            //}
            //GoodsSiteModel gsm = bllGoodsSite.GetModelByRCL(houseModel.StoreHouseID, cellCoord.Row, cellCoord.Col, cellCoord.Layer);
            //if (gsm == null)
            //{
            //    return false;
            //}
            //if (gsm.GsEnabled == true)
            //{
            //    gsEnabledStatus = EnumGSEnabledStatus.启用;
            //}
            //else
            //{
            //    gsEnabledStatus = EnumGSEnabledStatus.禁用;
            //}

            return(true);
        }
Esempio n. 21
0
        public bool CellRequireByRow(string houseName, string logicAreaName, int row, ref CellCoordModel cellCoord, ref string reStr)
        {
            View_GoodsSiteModel viewGSModel = bllViewGoodsSite.GetModelByHouseAndAreaName(houseName, logicAreaName);

            if (viewGSModel == null)
            {
                reStr = "不存在'" + houseName + "'库房!" + logicAreaName + "分区!";
                return(false);
            }
            int     requireCellRule = 1;//默认是从最小列开始
            XmlNode houseCfgNode    = xmlOper.GetNodeByName("StoreHouse", houseName);

            if (houseCfgNode != null)
            {
                XmlNode requireCellRuleNode = houseCfgNode.SelectSingleNode("RequireCellRule");
                if (requireCellRuleNode != null)
                {
                    int.TryParse(requireCellRuleNode.InnerText.Trim(), out requireCellRule);
                }
            }
            View_GoodsSiteModel gsModel = bllViewGoodsSite.ApplyGoodsSiteByRow(houseName, logicAreaName, row, requireCellRule);

            if (gsModel == null)
            {
                reStr = "没有货位可申请!";
                return(false);
            }
            else
            {
                cellCoord = new CellCoordModel(gsModel.GoodsSiteRow, gsModel.GoodsSiteColumn, gsModel.GoodsSiteLayer);

                reStr = "货位申请成功";
            }

            return(true);
        }
Esempio n. 22
0
        /// <summary>
        /// 添加货位操作记录,任务完成时调用
        /// </summary>
        /// <param name="houseName">库房名称</param>
        /// <param name="cellCoord">库存位置</param>
        /// <param name="gsOperType">货位操作类型</param>
        /// <param name="reStr">执行状态描述</param>
        /// <returns>执行状态结果</returns>
        public bool AddGSOperRecord(string houseName, CellCoordModel cellCoord, EnumGSOperateType gsOperType, string operateDetail, ref string reStr)
        {
            //StoreHouseModel houseModel = bllStoreHouse.GetModelByName(houseName);
            //if (houseModel == null)
            //{
            //    reStr = "不存在此库房!";
            //    return false;
            //}
            //StockOperRecdModel sorm = new StockOperRecdModel();
            //sorm.GoodsSitePos = cellCoord.Row.ToString() + "-" + cellCoord.Col.ToString() + "-" + cellCoord.Layer.ToString();
            //sorm.OPerateTime = DateTime.Now;
            //sorm.OPerateType = gsOperType.ToString();
            //sorm.OperateDetail = operateDetail;
            //sorm.StoreHouseID = houseModel.StoreHouseID;
            //long addsta = bllStackOper.Add(sorm);
            //if (addsta == 0)
            //{
            //    reStr = "数据添加数据失败!";
            //    return false;
            //}
            //OnUpdateGsStatus();

            return(true);
        }
Esempio n. 23
0
 public bool CellValidStatNotify(int row, int col, int layer, bool cellValid, string reason, ref string reStr)
 {
     try
     {
         //Console.WriteLine("hello:收到货位{0}-{1}-{2} 启用/禁用 调用", row, col, layer);
         if (logRecorder != null)
         {
             logRecorder.AddDebugLog(logSrc, string.Format("hello:收到货位{0}-{1}-{2} 启用/禁用:{3} 调用", row, col, layer, cellValid.ToString()));
         }
         CellCoordModel      cell         = new CellCoordModel(row, col, layer);
         EnumGSEnabledStatus enableStatus = EnumGSEnabledStatus.禁用;
         if (cellValid)
         {
             enableStatus = EnumGSEnabledStatus.启用;
         }
         //zwx,此处需要修改
         return(this.asrsResManage.UpdateGsEnabledStatus(houseName, cell, enableStatus, ref reStr));
     }
     catch (Exception ex)
     {
         reStr = ex.ToString();
         return(false);
     }
 }
Esempio n. 24
0
        public bool FenrongOk(int row, int col, int layer, ref string reStr)
        {
            try
            {
                //Console.WriteLine("hello:收到货位{0}-{1}-{2} 分容OK通知调用", row, col, layer);
                if (logRecorder != null)
                {
                    logRecorder.AddDebugLog(logSrc, string.Format("hello:收到货位{0}-{1}-{2} 分容OK通知调用调用", row, col, layer));
                }
                CellCoordModel   cell          = new CellCoordModel(row, col, layer);
                EnumCellStatus   cellStoreStat = EnumCellStatus.空闲;
                EnumGSTaskStatus cellTaskStat  = EnumGSTaskStatus.完成;
                if (!this.asrsResManage.GetCellStatus(houseName, cell, ref cellStoreStat, ref cellTaskStat))
                {
                    reStr = string.Format("货位不存在:{0},{1}-{2}-{3}", houseName, row, col, layer);
                    //  logRecorder.AddDebugLog(objectName, "充电完成事件错误,"+reStr);
                    return(false);
                }
                EnumGSEnabledStatus cellEnabledStatus = EnumGSEnabledStatus.禁用;
                if (!this.asrsResManage.GetCellEnabledStatus(houseName, cell, ref cellEnabledStatus))
                {
                    reStr = string.Format("货位禁用:{0},{1}-{2}-{3}", houseName, row, col, layer);
                    //logRecorder.AddDebugLog(objectName, "充电完成事件错误," + reStr);
                    return(false);
                }
                if (cellEnabledStatus == EnumGSEnabledStatus.禁用)
                {
                    reStr = string.Format("货位禁用:{0},{1}-{2}-{3}", houseName, row, col, layer);
                    //logRecorder.AddDebugLog(objectName, "充电完成事件错误," + reStr);
                    return(false);
                }
                if (cellStoreStat != EnumCellStatus.满位)
                {
                    reStr = string.Format("货位为空:{0},{1}-{2}-{3},", houseName, row, col, layer) + reStr;
                    //logRecorder.AddDebugLog(objectName, "充电完成事件错误," + reStr);
                    return(false);
                }
                if (cellTaskStat == EnumGSTaskStatus.出库允许)
                {
                    return(true);
                }
                if (cellTaskStat == EnumGSTaskStatus.锁定)
                {
                    reStr = string.Format("货位任务锁定:{0},{1}-{2}-{3},", houseName, row, col, layer) + reStr;
                    //logRecorder.AddDebugLog(objectName, "充电完成事件错误," + reStr);
                    return(false);
                }

                cellTaskStat = EnumGSTaskStatus.出库允许;
                if (!this.asrsResManage.UpdateCellStatus(houseName, cell, cellStoreStat, cellTaskStat, ref reStr))
                {
                    reStr = string.Format("更新货位状态失败:{0},{1}-{2}-{3},", houseName, row, col, layer) + reStr;
                    // logRecorder.AddDebugLog(objectName, "充电完成事件错误," + reStr);
                    return(false);
                }

                return(true);
            }
            catch (Exception ex)
            {
                reStr = ex.ToString();
                return(false);
            }
        }
Esempio n. 25
0
 public bool CreateManualMoveGSTask(string startHouseName, CellCoordModel startCell, string endHouseName, CellCoordModel endCell, ref string reStr)
 {
     try
     {
         return(asrsCtl.CreateManualMoveGSTask(startHouseName, startCell, endHouseName, endCell, ref reStr));
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.ToString());
         return(false);
     }
 }
Esempio n. 26
0
        /// <summary>
        /// 添加库存
        /// </summary>
        /// <param name="houseName">库房名称</param>
        /// <param name="cellCoord">货位位置</param>
        /// <param name="goodsInfo">库存信息</param>
        /// <param name="reStr">执行状态描述</param>
        /// <returns>执行状态结果</returns>
        public bool AddStack(string houseName, CellCoordModel cellCoord, string proBatch, string[] goodsInfo, ref string reStr)
        {
            StoreHouseModel houseModel = bllStoreHouse.GetModelByName(houseName);

            if (houseModel == null)
            {
                reStr = "不存在此库房!";
                return(false);
            }
            GoodsSiteModel gsm = bllGoodsSite.GetModelByRCL(houseModel.StoreHouseID, cellCoord.Row, cellCoord.Col, cellCoord.Layer);

            if (gsm == null)
            {
                reStr = "不存在此库存!";
                return(false);
            }
            if (goodsInfo == null)
            {
                reStr = "传入空货位信息!";
                return(false);
            }
            StockModel sm = new StockModel();

            sm.GoodsSiteID = gsm.GoodsSiteID;
            sm.IsFull      = true;
            sm.TrayID      = "12345678";//测试
            long stockID = bllStock.Add(sm);

            for (int i = 0; i < goodsInfo.Length; i++)
            {
                StockListModel slm = new StockListModel();
                slm.StockID         = stockID;
                slm.InHouseTime     = DateTime.Now;
                slm.MeterialBatch   = proBatch; //暂时没有
                slm.MeterialboxCode = goodsInfo[i];
                slm.MeterialStatus  = "";       //暂时没有赋值,若有库存详细应在此增加
                long stockListID = bllStockList.Add(slm);

                StockDetailModel sdm = new StockDetailModel();
                sdm.StockListID  = stockListID;
                sdm.MeterialName = "电芯";
                bllStockDetail.Add(sdm);
            }
            string goodsInforStr = "";

            for (int i = 0; i < goodsInfo.Length; i++)
            {
                if (i == 0)
                {
                    goodsInforStr += goodsInfo[i];
                }
                else
                {
                    goodsInforStr += "," + goodsInfo[i];
                }
            }
            //string operateStr = "库房:" + houseName + ",货位:" + cellCoord.Row + "排" + cellCoord.Col + "列"
            //  + cellCoord.Layer + "层," + "添加库存:" + goodsInforStr;
            //AddGSOperRecord(houseName, cellCoord, EnumGSOperateType.系统添加库存, operateStr, ref reStr);
            return(true);
        }
Esempio n. 27
0
        /// <summary>
        /// 空筐出库请求处理
        /// </summary>
        private void EmptyPalletOutputRequire()
        {
            AsrsCtlModel    asrsHouse          = asrsCtls[0];
            AsrsPortalModel emptyPalletOutport = asrsHouse.GetPortByDeviceID("2003");

            if (emptyPalletOutport.Db2Vals[1] == 1)
            {
                //出口有框,禁止出库
                return;
            }
            if (emptyPalletOutport.Db1ValsToSnd[0] == 2)
            {
                return;
            }
            if (emptyPalletOutport.Db2Vals[0] != 3)
            {
                return;
            }
            bool exitFlag = false;
            int  row = 2, col = 21, layer = 6; //要查询得到

            int r = 1, c = 1, L = 1;

            for (r = 1; r < row + 1; r++)
            {
                if (exitFlag)
                {
                    break;
                }
                for (c = 1; c < col + 1; c++)
                {
                    if (exitFlag)
                    {
                        break;
                    }
                    for (L = 1; L < layer + 1; L++)
                    {
                        CellCoordModel   cell          = new CellCoordModel(r, c, L);
                        EnumCellStatus   cellStoreStat = EnumCellStatus.空闲;
                        EnumGSTaskStatus cellTaskStat  = EnumGSTaskStatus.完成;
                        if (!this.asrsResourceManage.GetCellStatus(asrsHouse.HouseName, cell, ref cellStoreStat, ref cellTaskStat))
                        {
                            continue;
                        }
                        if (cellStoreStat == EnumCellStatus.空料框 && cellTaskStat != EnumGSTaskStatus.锁定)
                        {
                            if (asrsHouse.GenerateOutputTask(cell, null, SysCfg.EnumAsrsTaskType.空筐出库, true))
                            {
                                exitFlag = true;
                                emptyPalletOutport.Db1ValsToSnd[0] = 2;
                                string reStr = "";
                                if (!emptyPalletOutport.NodeCmdCommit(true, ref reStr))
                                {
                                    logRecorder.AddDebugLog(emptyPalletOutport.NodeName, "发送命令失败" + reStr);
                                }
                                else
                                {
                                    return;
                                }
                                break;
                            }
                        }
                    }
                }
            }
        }
Esempio n. 28
0
        public bool CreateManualMoveGSTask(string startHouseName, CellCoordModel startCell, string endHouseName, CellCoordModel endCell, ref string reStr)
        {
            //throw new NotImplementedException();
            string       houseName = startHouseName;
            AsrsCtlModel asrsModel = null;

            foreach (AsrsCtlModel m in asrsCtls)
            {
                if (m.HouseName == houseName)
                {
                    asrsModel = m;
                    break;
                }
            }
            if (asrsModel == null)
            {
                reStr = "未识别的: " + houseName;
                return(false);
            }
            EnumGSEnabledStatus cellEnabledStatus = EnumGSEnabledStatus.启用;

            if (!asrsResourceManage.GetCellEnabledStatus(houseName, startCell, ref cellEnabledStatus))
            {
                reStr = string.Format("获取货位启用状态失败{0}-{1}-{2}", startCell.Row, startCell.Col, startCell.Layer);
                return(false);
            }
            if (cellEnabledStatus == EnumGSEnabledStatus.禁用)
            {
                reStr = string.Format("货位{0}-{1}-{2}禁用,无法生成移库任务", startCell.Row, startCell.Col, startCell.Layer);
                return(false);
            }

            if (!asrsResourceManage.GetCellEnabledStatus(houseName, endCell, ref cellEnabledStatus))
            {
                reStr = string.Format("获取货位启用状态失败{0}-{1}-{2}", endCell.Row, endCell.Col, endCell.Layer);
                return(false);
            }
            if (cellEnabledStatus == EnumGSEnabledStatus.禁用)
            {
                reStr = string.Format("货位{0}-{1}-{2}禁用,无法生成移库任务", endCell.Row, endCell.Col, endCell.Layer);
                return(false);
            }
            EnumCellStatus   cellStoreStats = EnumCellStatus.空闲;
            EnumGSTaskStatus cellTaskStatus = EnumGSTaskStatus.完成;

            asrsResourceManage.GetCellStatus(houseName, startCell, ref cellStoreStats, ref cellTaskStatus);
            if (cellTaskStatus == EnumGSTaskStatus.锁定)
            {
                reStr = string.Format("货位{0}-{1}-{2}处于锁定状态,无法生成移库任务", startCell.Row, startCell.Col, startCell.Layer);;
                return(false);
            }
            asrsResourceManage.GetCellStatus(houseName, endCell, ref cellStoreStats, ref cellTaskStatus);
            if (cellTaskStatus == EnumGSTaskStatus.锁定)
            {
                reStr = string.Format("目标货位{0}-{1}-{2}处于锁定状态,无法生成移库任务", endCell.Row, endCell.Col, endCell.Layer);;
                return(false);
            }
            if (cellStoreStats != EnumCellStatus.空闲)
            {
                reStr = string.Format("目标货位{0}-{1}-{2}不为空,无法生成移库任务", endCell.Row, endCell.Col, endCell.Layer);;
                return(false);
            }
            SysCfg.EnumAsrsTaskType taskType = SysCfg.EnumAsrsTaskType.移库;
            return(asrsModel.GenerateOutputTask(startCell, endCell, taskType, false, null, 1000));
            //return true;
        }
Esempio n. 29
0
        public bool ParseParam(SysCfg.EnumAsrsTaskType taskType, string strParam, string houseName, ref string reStr)
        {
            try
            {
                //任务参数格式 ""
                this.strTaskParam = strParam;
                string[] taskParamArray = this.strTaskParam.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                if (taskParamArray == null || taskParamArray.Count() < 3)
                {
                    reStr = "出入库参数解析错误";
                    return(false);
                }
                inputPort  = int.Parse(taskParamArray[0]);
                outputPort = int.Parse(taskParamArray[1]);
                string[] cellPos = taskParamArray[2].Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
                if (cellPos == null || cellPos.Count() < 3)
                {
                    reStr = "出入库参数解析错误";
                    return(false);
                }
                short row   = short.Parse(cellPos[0]);
                short col   = short.Parse(cellPos[1]);
                short layer = short.Parse(cellPos[2]);
                this.cellPos1 = new CellCoordModel(row, col, layer);
                switch (taskType)
                {
                case SysCfg.EnumAsrsTaskType.产品入库:
                {
                    //产品入库
                    //  this.inputPort = 1;
                    if (taskParamArray.Count() > 3)
                    {
                        string strGoods = taskParamArray[3];
                        this.inputCellGoods = strGoods.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                    }

                    if (houseName == EnumStoreHouse.A1库房.ToString())
                    {
                        mesStep = "PS-2";
                    }
                    else
                    {
                        mesStep = "PS-8";
                    }


                    break;
                }
                //case SysCfg.EnumAsrsTaskType.空框入库:
                //    {
                //        //空框入库


                //        break;
                //    }
                case SysCfg.EnumAsrsTaskType.DCR出库:
                {
                    //产品出库

                    if (taskParamArray.Count() > 3)
                    {
                        string strGoods = taskParamArray[3];
                        this.inputCellGoods = strGoods.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                    }

                    if (houseName == EnumStoreHouse.A1库房.ToString())
                    {
                        mesStep = "PS-4";
                    }
                    else
                    {
                        mesStep = "PS-10";
                    }
                    break;
                }
                //case SysCfg.EnumAsrsTaskType.空框出库:
                //    {
                //        //空框出库

                //        break;

                //    }
                case SysCfg.EnumAsrsTaskType.移库:
                {
                    string[] cellTargetPos = taskParamArray[3].Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
                    if (cellTargetPos == null || cellTargetPos.Count() < 3)
                    {
                        reStr = "移库参数解析错误";
                        return(false);
                    }
                    row           = short.Parse(cellTargetPos[0]);
                    col           = short.Parse(cellTargetPos[1]);
                    layer         = short.Parse(cellTargetPos[2]);
                    this.cellPos2 = new CellCoordModel(row, col, layer);
                    if (taskParamArray.Count() > 4)
                    {
                        string strGoods = taskParamArray[4];
                        this.inputCellGoods = strGoods.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                    }

                    if (houseName == EnumStoreHouse.A1库房.ToString())
                    {
                        mesStep = "PS-2";
                    }
                    else
                    {
                        mesStep = "PS-8";
                    }

                    break;
                }

                case SysCfg.EnumAsrsTaskType.DCR测试:
                {
                    string[] cellTargetPos = taskParamArray[3].Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
                    if (cellTargetPos == null || cellTargetPos.Count() < 3)
                    {
                        reStr = "DCR出库参数解析错误";
                        return(false);
                    }
                    row           = short.Parse(cellTargetPos[0]);
                    col           = short.Parse(cellTargetPos[1]);
                    layer         = short.Parse(cellTargetPos[2]);
                    this.cellPos2 = new CellCoordModel(row, col, layer);

                    if (taskParamArray.Count() > 4)
                    {
                        string strGoods = taskParamArray[4];
                        this.inputCellGoods = strGoods.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                    }

                    if (houseName == EnumStoreHouse.A1库房.ToString())
                    {
                        mesStep = "PS-5";
                    }
                    else
                    {
                        mesStep = "PS-11";
                    }

                    break;
                }

                case SysCfg.EnumAsrsTaskType.紧急出库:
                {
                    string[] cellTargetPos = taskParamArray[2].Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
                    if (cellTargetPos == null || cellTargetPos.Count() < 3)
                    {
                        reStr = "DCR出库参数解析错误";
                        return(false);
                    }
                    row           = short.Parse(cellTargetPos[0]);
                    col           = short.Parse(cellTargetPos[1]);
                    layer         = short.Parse(cellTargetPos[2]);
                    this.cellPos2 = new CellCoordModel(row, col, layer);

                    if (taskParamArray.Count() > 3)
                    {
                        string strGoods = taskParamArray[3];
                        this.inputCellGoods = strGoods.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                    }
                    if (houseName == EnumStoreHouse.A1库房.ToString())
                    {
                        mesStep = "PS-14";
                    }
                    else
                    {
                        mesStep = "PS-15";
                    }
                    break;
                }

                default:
                {
                    reStr = "入库参数错误,不可识别的任务类型:" + taskType.ToString();
                    return(false);
                }
                }
                return(true);
            }
            catch (Exception ex)
            {
                reStr = ex.ToString();
                return(false);
            }
        }
Esempio n. 30
0
        public bool CreateManualOutputTask(string houseName, CellCoordModel cell, ref string reStr)
        {
            AsrsCtlModel asrsModel = null;

            foreach (AsrsCtlModel m in asrsCtls)
            {
                if (m.HouseName == houseName)
                {
                    asrsModel = m;
                    break;
                }
            }
            if (asrsModel == null)
            {
                reStr = "未识别的: " + houseName;
                return(false);
            }

            SysCfg.EnumAsrsTaskType taskType       = SysCfg.EnumAsrsTaskType.产品出库;
            EnumCellStatus          cellStoreStats = EnumCellStatus.空闲;
            EnumGSTaskStatus        cellTaskStatus = EnumGSTaskStatus.完成;

            asrsResourceManage.GetCellStatus(houseName, cell, ref cellStoreStats, ref cellTaskStatus);
            EnumGSEnabledStatus cellEnabledStatus = EnumGSEnabledStatus.启用;

            if (!asrsResourceManage.GetCellEnabledStatus(houseName, cell, ref cellEnabledStatus))
            {
                reStr = string.Format("获取货位启用状态失败{0}-{1}-{2}", cell.Row, cell.Col, cell.Layer);
                return(false);
            }
            if (cellEnabledStatus == EnumGSEnabledStatus.禁用)
            {
                reStr = string.Format("货位{0}-{1}-{2}禁用,无法生成出库任务", cell.Row, cell.Col, cell.Layer);
                return(false);
            }
            if (cellTaskStatus == EnumGSTaskStatus.锁定)
            {
                reStr = "货位处于锁定状态";
                return(false);
            }

            if (cellStoreStats == EnumCellStatus.空料框)
            {
                taskType = SysCfg.EnumAsrsTaskType.空筐出库;
            }
            List <short>  asrsExtParams = new List <short>();
            List <string> cellGoods     = new List <string>();

            if (!this.asrsResourceManage.GetStockDetail(houseName, cell, ref cellGoods))
            {
                return(false);
            }
            if (dlgtAsrsExtParmas != null)
            {
                if (!dlgtAsrsExtParmas(cellGoods, ref asrsExtParams, ref reStr))
                {
                    return(false);
                }
            }
            //  asrsModel.GenerateOutputTask(cell, null,taskType, false,asrsExtParams,1000);
            return(asrsModel.GenerateCheckoutTask(cell, taskType, false, ref reStr, 1000));
        }