Пример #1
0
        private void SetGsStatusEventHandler(object sender, StockStatusEventArgs e)
        {
            int gsStatus = this.View.AskMessBox("您确定要修改选中货位状态么?");
            View_QueryStockListModel viewStockListModel = bllQueryStockList.GetModelByGSID(e.GoodsSiteID);

            if (viewStockListModel == null)
            {
                this.View.ShowMessage("信息提示", "当前货位没有库存信息,不能设置货位状态!");
            }
            else
            {
                if (gsStatus == 0)
                {
                    if (e.GsTaskType == EnumTaskCategory.出库 && (e.GsStoreStatus == EnumGSStoreStatus.货 || e.GsStoreStatus == EnumGSStoreStatus.空料框) &&
                        e.GsRunStatus == EnumGSRunStatus.任务完成)
                    {
                        int deleteStockStatus = this.View.AskMessBox("系统会自动删除库存信息,您确定要设置么?");
                        if (deleteStockStatus == 0)
                        {
                            bllStock.Delete(viewStockListModel.StockID);
                            bllGoodsSite.UpdateGoodsSiteStatus(EnumGSStoreStatus.空货位.ToString(), EnumGSRunStatus.待用.ToString(), EnumTaskCategory.出入库.ToString(), e.GoodsSiteID);
                            mainPres.ShowLog(ECAMSModel.EnumLogCategory.管理层日志, ECAMSModel.EnumLogType.提示, "用户:" + this.userNameStr
                                             + ",货位类型“" + e.GsTaskType + "货位存储状态:" + e.GsStoreStatus +
                                             "货位运行状态:" + e.GsRunStatus + "”修改成功!" + "货位号:" + viewStockListModel.GoodsSiteName);
                        }
                    }
                    else if (e.GsStoreStatus == EnumGSStoreStatus.空货位 && e.GsRunStatus == EnumGSRunStatus.待用)
                    {
                        int deleteStockStatus = this.View.AskMessBox("系统会自动删除库存信息,您确定要设置么?");
                        if (deleteStockStatus == 0)
                        {
                            bllStock.Delete(viewStockListModel.StockID);
                            bllGoodsSite.UpdateGoodsSiteStatus(EnumGSStoreStatus.空货位.ToString(), EnumGSRunStatus.待用.ToString(), EnumTaskCategory.出入库.ToString(), e.GoodsSiteID);
                            mainPres.ShowLog(ECAMSModel.EnumLogCategory.管理层日志, ECAMSModel.EnumLogType.提示, "用户:" + this.userNameStr
                                             + ",货位类型“" + e.GsTaskType + "货位存储状态:" + e.GsStoreStatus +
                                             "货位运行状态:" + e.GsRunStatus + "”修改成功!" + "货位号:" + viewStockListModel.GoodsSiteName);
                        }
                    }
                    else
                    {
                        bool updateStatus = bllGoodsSite.UpdateGoodsSiteStatus(e.GsStoreStatus.ToString(), e.GsRunStatus.ToString(), e.GoodsSiteID);
                        if (updateStatus == true)
                        {
                            mainPres.ShowLog(ECAMSModel.EnumLogCategory.管理层日志, ECAMSModel.EnumLogType.提示, "用户:" + this.userNameStr
                                             + ",货位类型“" + e.GsTaskType + "货位存储状态:" + e.GsStoreStatus +
                                             "货位运行状态:" + e.GsRunStatus + "”修改成功!" + "货位号:" + viewStockListModel.GoodsSiteName);
                        }
                    }
                }
            }

            List <View_QueryStockListModel> modelList = bllQueryStockList.GetModelList(queryHouseName, queryRowth, queryColumnth, queryLayerth, queryProductStasus, queryWorkFlowStatus
                                                                                       , queryGsRunStatus, queryGsStoreStatus, queryGsTaskType, queryProductBatchNum);

            this.View.RefreshDGVData(modelList);
        }
Пример #2
0
        private void RefreshStockDetail(int gsID)
        {
            View_QueryStockListModel viewStockListModel = bllView_QueryStockList.GetModelByGSID(gsID);

            if (viewStockListModel != null)
            {
                StockListModel slModel = bllStockList.GetModel(viewStockListModel.StockListID);
                currStockListModel = slModel;
            }
            List <View_StockListDetailModel> stockDetailModelList = bllView_StockDetail.GetStockDetailByGsID(gsID);
            List <TB_Tray_indexModel>        trayDetailModelList  = new List <TB_Tray_indexModel>();

            if (stockDetailModelList != null)
            {
                for (int i = 0; i < stockDetailModelList.Count; i++)
                {
                    TB_Tray_indexModel trayDetailModel = bllTrayDetail.GetModel(stockDetailModelList[i].TrayID);//查询料框电芯详细
                    trayDetailModelList.Add(trayDetailModel);
                }
            }
            this.View.ShowStockDetail(stockDetailModelList, trayDetailModelList);
        }
Пример #3
0
        private void UnuseGsEventHandler(object sender, QueryGoodsSiteEventArgs e)
        {
            int gsStatus = this.View.AskMessBox("您确定禁用当选中前货位么?");

            if (gsStatus == 0)
            {
                View_QueryStockListModel viewStockListModel = bllView_QueryStockList.GetModelByGSID(e.GoodsSiteID);
                if (viewStockListModel != null)
                {
                    this.View.ShowMessage("信息提示", "当前货位存有货物,不能禁用此货位,如要禁用当前货位,请将当前货物出库!");
                    return;
                }
                bool status = bllGoodsSite.UpdateGoodsSiteStatus(EnumGSStoreStatus.空货位.ToString(), EnumGSRunStatus.异常.ToString(), EnumTaskCategory.出入库.ToString(), e.GoodsSiteID);
                if (status)
                {
                    this.View.ShowMessage("信息提示", "货位禁用成功!");
                }
                else
                {
                    this.View.ShowMessage("信息提示", "货位禁用失败!");
                }
            }
        }
Пример #4
0
        private void AddTrayEventHandler(object sender, TrayEventArgs e)
        {
            if (e.GsRunStatus != EnumGSRunStatus.任务完成.ToString())
            {
                this.View.ShowMessage("信息提示", "货位正在运行不允许添加料框信息!");
                return;
            }
            if (this.currentSelectGSID != 999999)
            {
                View_QueryStockListModel viewStockListModel = bllView_QueryStockList.GetModelByGSID(currentSelectGSID);
                if (viewStockListModel != null)
                {
                    TB_Tray_indexModel trayModel = bllTrayIndex.GetModel(e.TrayID);
                    if (trayModel == null)
                    {
                        this.View.ShowMessage("信息提示", "条码在数据库不存在!");
                        return;
                    }
                    if (currStockListModel != null)
                    {
                        List <StockDetailModel> stockDetailList = bllStockDetail.GetDetailModelList(currStockListModel.StockListID);
                        if (stockDetailList != null)
                        {
                            if (viewStockListModel.StoreHouseName == EnumStoreHouse.A1库房.ToString())
                            {
                                if (stockDetailList.Count >= 2)
                                {
                                    this.View.ShowMessage("信息提示", "A库房每个货位只能存储2个料框!");
                                    return;
                                }
                            }
                            else if (viewStockListModel.StoreHouseName == EnumStoreHouse.B1库房.ToString())
                            {
                                if (stockDetailList.Count >= 6)
                                {
                                    this.View.ShowMessage("信息提示", "B库房每个货位只能存储6个料框!");
                                    return;
                                }
                            }

                            bool isTheSame = true;
                            for (int i = 0; i < stockDetailList.Count; i++)
                            {
                                TB_Tray_indexModel existTrayModel = bllTrayIndex.GetModel(stockDetailList[i].TrayID);
                                if (existTrayModel.Tf_BatchID != trayModel.Tf_BatchID)
                                {
                                    isTheSame = false;
                                    this.View.ShowMessage("信息提示", "您添加的托盘号所属批次号与现有库存的托盘批次不一致!若您要添加请将现有库存的托盘删除!");
                                    break;
                                }
                            }
                            if (isTheSame == false)
                            {
                                return;
                            }
                        }
                    }

                    StockDetailModel stockDetailModel = new StockDetailModel();
                    stockDetailModel.TrayID      = e.TrayID;
                    stockDetailModel.StockListID = viewStockListModel.StockListID;
                    bllStockDetail.Add(stockDetailModel);

                    currStockListModel.ProductBatchNum = trayModel.Tf_BatchID;
                    bllStockList.Update(currStockListModel);//更新库存列表

                    RefreshStockDetail(currentSelectGSID);
                    this.mainPre.View.AddLog(EnumLogCategory.管理层日志, EnumLogType.提示, "用户:" + this.userNameStr + ",添加条码+" + trayModel.Tf_TrayId
                                             + ",货位号:" + viewStockListModel.GoodsSiteName);
                }
                else
                {
                    this.View.ShowMessage("信息提示", "此货位没有库存信息!");
                }
            }
            else
            {
                this.View.ShowMessage("信息提示", "请选择要添加料框的货位!");
            }
        }
Пример #5
0
        private void OutHouseByHandEventHandler(object sender, OutHouseByHandEventArgs e)
        {
            int outHouse = this.View.AskMessBox("您确定要将选中货位手动出库么?");

            if (outHouse == 0)
            {
                GoodsSiteModel gsModel = bllGoodsSite.GetModel(e.GoodsSiteID);
                if (gsModel == null)
                {
                    if (this.mainPre != null)
                    {
                        this.mainPre.ShowLog(ECAMSModel.EnumLogCategory.管理层日志, EnumLogType.提示, "此货位为空,不能出库!");
                        return;
                    }
                }
                if (!((e.GsStoreStatus == EnumGSStoreStatus.货 || e.GsStoreStatus == EnumGSStoreStatus.空料框) && e.GsRunStatus == EnumGSRunStatus.任务完成 &&
                      gsModel.GoodsSiteInOutType == EnumTaskCategory.入库.ToString()))
                {
                    if (this.mainPre != null)
                    {
                        this.mainPre.ShowLog(ECAMSModel.EnumLogCategory.管理层日志, EnumLogType.提示, "请选择货位任务类型为“入库”,并且货位存储类型为“有货”或“空料框”,并且货位任务状态为“任务完成”的货位出库!!");
                        return;
                    }
                }

                View_QueryStockListModel viewGsStockModel = bllView_QueryStockList.GetOutHouseModel(e.GoodsSiteID, e.GsStoreStatus, e.GsRunStatus);
                if (viewGsStockModel != null)
                {
                    Hashtable     updateGsStatusHs = null;
                    TaskTypeModel taskType         = null;
                    StockModel    stockModel       = bllStock.GetModelByGsID(e.GoodsSiteID);
                    bool          exeHandTask      = false;//执行手动选择的任务类型
                    if (stockModel != null)
                    {
                        StockListModel stockListModel = bllStockList.GetModelByStockID(stockModel.StockID);
                        if (stockListModel != null)
                        {
                            string shouldTaskName = GetTaskName(stockListModel.StoreHouseName, stockListModel.ProductStatus);
                            #region 根据人工选定的出库类型出库
                            if (e.OutHouseType != shouldTaskName)
                            {
                                if (this.View.AskMessBox("当前产品状态出库类型应为“" + shouldTaskName + "”,您确定要“" + e.OutHouseType + "”么?") == 0)
                                {
                                    EnumTaskName handTaskName = (EnumTaskName)Enum.Parse(typeof(EnumTaskName), e.OutHouseType);
                                    taskType = bllTaskType.GetModel((int)handTaskName);
                                    switch (handTaskName)
                                    {
                                    case EnumTaskName.电芯出库_A1:
                                        updateGsStatusHs = bllGoodsSite.GetUpdateModelHs(EnumGSStoreStatus.货.ToString(), EnumGSRunStatus.任务锁定.ToString(), EnumTaskCategory.出库.ToString(), viewGsStockModel.GoodsSiteID);       //获取更新货位状态Hs
                                        break;

                                    case EnumTaskName.电芯出库_B1:
                                        updateGsStatusHs = bllGoodsSite.GetUpdateModelHs(EnumGSStoreStatus.货.ToString(), EnumGSRunStatus.任务锁定.ToString(), EnumTaskCategory.出库.ToString(), viewGsStockModel.GoodsSiteID);       //获取更新货位状态Hs
                                        break;

                                    case EnumTaskName.空料框出库:
                                        updateGsStatusHs = bllGoodsSite.GetUpdateModelHs(EnumGSStoreStatus.空料框.ToString(), EnumGSRunStatus.任务锁定.ToString(), EnumTaskCategory.出库.ToString(), viewGsStockModel.GoodsSiteID);      //获取更新货位状态Hs
                                        break;

                                    case EnumTaskName.分容出库_A1:
                                        updateGsStatusHs = bllGoodsSite.GetUpdateModelHs(EnumGSStoreStatus.货.ToString(), EnumGSRunStatus.任务锁定.ToString(), EnumTaskCategory.出库.ToString(), viewGsStockModel.GoodsSiteID);       //获取更新货位状态Hs
                                        break;
                                    }

                                    exeHandTask = true;
                                }
                            }
                            #endregion
                            #region 根据货物状态出库
                            if (exeHandTask == false)
                            {
                                if (stockListModel.StoreHouseName == EnumStoreHouse.A1库房.ToString())//手动出库根据物料状态出库
                                {
                                    if (viewGsStockModel.ProductStatus == EnumProductStatus.A1库静置10小时.ToString())
                                    {
                                        taskType         = bllTaskType.GetModel((int)EnumTaskName.电芯出库_A1);
                                        updateGsStatusHs = bllGoodsSite.GetUpdateModelHs(EnumGSStoreStatus.货.ToString(), EnumGSRunStatus.任务锁定.ToString(), EnumTaskCategory.出库.ToString(), viewGsStockModel.GoodsSiteID);   //获取更新货位状态Hs
                                    }
                                    else if (viewGsStockModel.ProductStatus == EnumProductStatus.A1库老化3天.ToString())
                                    {
                                        taskType         = bllTaskType.GetModel((int)EnumTaskName.分容出库_A1);
                                        updateGsStatusHs = bllGoodsSite.GetUpdateModelHs(EnumGSStoreStatus.货.ToString(), EnumGSRunStatus.任务锁定.ToString(), EnumTaskCategory.出库.ToString(), viewGsStockModel.GoodsSiteID);   //获取更新货位状态Hs
                                    }
                                }
                                else if (stockListModel.StoreHouseName == EnumStoreHouse.B1库房.ToString())
                                {
                                    if (stockListModel.ProductStatus == EnumProductStatus.空料框.ToString())
                                    {
                                        taskType         = bllTaskType.GetModel((int)EnumTaskName.空料框出库);
                                        updateGsStatusHs = bllGoodsSite.GetUpdateModelHs(EnumGSStoreStatus.空料框.ToString(), EnumGSRunStatus.任务锁定.ToString(), EnumTaskCategory.出库.ToString(), viewGsStockModel.GoodsSiteID);  //获取更新货位状态Hs
                                    }
                                    else
                                    {
                                        taskType         = bllTaskType.GetModel((int)EnumTaskName.电芯出库_B1);
                                        updateGsStatusHs = bllGoodsSite.GetUpdateModelHs(EnumGSStoreStatus.货.ToString(), EnumGSRunStatus.任务锁定.ToString(), EnumTaskCategory.出库.ToString(), viewGsStockModel.GoodsSiteID);   //获取更新货位状态Hs
                                    }
                                }
                            }
                            #endregion
                            #region 出库处理逻辑
                            long                manaTaskID        = 0;
                            ManageTaskModel     manaTaskModel     = AutoCreateManaTask(stockModel, stockListModel, taskType, ref manaTaskID);
                            ManageTaskListModel manaTaskListModel = AutoCreateManaTaskList(manaTaskID, manaTaskModel, stockListModel);
                            AutoCreateControlTask(manaTaskModel, manaTaskID, taskType);

                            List <Hashtable> hashList = new List <Hashtable>();
                            hashList.Add(updateGsStatusHs);

                            bool executeStatus = ExecuteManyHashSqls(hashList);
                            if (executeStatus == true)
                            {
                                if (this.mainPre != null)
                                {
                                    string trayIDListStr = bllStockDetail.GetTrayIDStrList(stockListModel.StockListID);
                                    this.mainPre.ShowLog(ECAMSModel.EnumLogCategory.管理层日志, EnumLogType.提示, "用户:" + this.userNameStr + "生成出库“"
                                                         + taskType.TaskTypeName + "”任务成功!" + "开始位置:" + manaTaskModel.TaskStartPostion + ",结束位置:"
                                                         + manaTaskModel.TaskEndPostion + "托盘号:" + trayIDListStr);
                                }
                            }
                            else
                            {
                                if (this.mainPre != null)
                                {
                                    this.mainPre.ShowLog(ECAMSModel.EnumLogCategory.管理层日志, EnumLogType.提示, "用户:" + this.userNameStr + "生成出库“"
                                                         + taskType.TaskTypeName + "”任务失败!" + "开始位置:" + manaTaskModel.TaskStartPostion + ",结束位置:"
                                                         + manaTaskModel.TaskEndPostion);
                                }
                            }
                            #endregion
                        }
                    }
                    else
                    {
                        if (this.mainPre != null)
                        {
                            this.mainPre.ShowLog(ECAMSModel.EnumLogCategory.管理层日志, EnumLogType.提示, "没有货物出库!");
                            this.View.ShowMessage("信息提示", "没有货物出库!");
                        }
                    }
                }
            }
        }