示例#1
0
        ///// <summary>
        ///// 充放电任务完成后的逻辑处理
        ///// </summary>
        ///// <param name="houseName"></param>
        ///// <param name="goodsSiteName"></param>
        ///// <returns></returns>
        //public bool PowerTestCptLogic(string houseName, string goodsSiteName)
        //{
        //    if (xweGsBll.UpdateGs(houseName, goodsSiteName,EnumOperateStatus.空闲.ToString()
        //        ,EnumTestStatus.待测试.ToString(),EnumTestType.无.ToString()) == false)//空货位的时候测试类型为无
        //    {
        //        this.AsrsModel.LogRecorder.AddDebugLog("新威尔流程监控", "充放电完成完成后初始化货位信息失败!");
        //        return false;
        //    }

        //    return true;
        //}
        /// <summary>
        /// DCR出库完成逻辑,即到达DCR测试工位
        /// </summary>
        /// <param name="houseName"></param>
        /// <param name="dcrGsm"></param>
        /// <returns></returns>
        public bool DCROutHouseCpt(string houseName, string powerGsm, string dcrGsm, string rfid)
        {
            if (xweGsBll.UpdateGs(houseName, powerGsm, EnumOperateStatus.空闲.ToString()
                                  , EnumTestStatus.待测试.ToString(), EnumTestType.无.ToString()) == false)//空货位的时候测试类型为无
            {
                this.AsrsModel.LogRecorder.AddDebugLog("新威尔流程监控", "到达DRC测试工位更新数据失败!");
                return(false);
            }

            if (xweGsBll.InitGS(houseName, dcrGsm, EnumTestType.DCR测试.ToString()) == false)//空货位的时候测试类型为无
            {
                this.AsrsModel.LogRecorder.AddDebugLog("新威尔流程监控", "到达DRC测试工位创建DCR测试工位数据失败!");
                return(false);
            }

            XWEDBAccess.Model.GoodsSiteModel          gsm         = xweGsBll.GetModel(houseName, powerGsm);
            List <XWEDBAccess.Model.BatteryCodeModel> batteryList = xweBatteryCodeBll.GetModelList("GoodsSiteID = " + gsm.GoodsSiteID + " order by Channel asc");

            string[] batteryCodes = new string[batteryList.Count];
            for (int i = 0; i < batteryList.Count; i++)
            {
                batteryCodes[i] = batteryList[i].Code;
            }
            XWEDBAccess.Model.GoodsSiteModel dcrGsmModel = xweGsBll.GetModel(houseName, dcrGsm);
            dcrGsmModel.Tag1 = rfid;
            xweGsBll.Update(dcrGsmModel);
            //向中间库中插入托盘条码及电芯条码,
            if (xweBatteryCodeBll.AddBattery((int)dcrGsmModel.GoodsSiteID, batteryCodes) == false)
            {
                this.AsrsModel.LogRecorder.AddDebugLog("威尔流程监控", "向电池条码表中添加数据失败!");
                return(false);
            }
            return(true);
        }
示例#2
0
        void AddXWEHistroy(XWEDBAccess.Model.GoodsSiteModel xweModel)
        {
            List <XWEDBAccess.Model.BatteryCodeModel> batteryList = xweBatteryCodeBll.GetBatteryListData(xweModel.GoodsSiteID);

            if (batteryList != null)
            {
                foreach (XWEDBAccess.Model.BatteryCodeModel singleBattery in batteryList)
                {
                    XWEHistroyModel addModel = new XWEHistroyModel();
                    addModel.Code          = singleBattery.Code;
                    addModel.Channel       = singleBattery.Channel;
                    addModel.Pressure      = singleBattery.Pressure;
                    addModel.InnerRC       = singleBattery.InnerRC;
                    addModel.Power         = singleBattery.Power;
                    addModel.Capcity       = singleBattery.Capcity;
                    addModel.TestResult    = singleBattery.TestResult;
                    addModel.TestTime      = singleBattery.TestTime;
                    addModel.Tag1          = singleBattery.Tag1;
                    addModel.Tag2          = singleBattery.Tag2;
                    addModel.Tag3          = singleBattery.Tag3;
                    addModel.Tag4          = singleBattery.Tag4;
                    addModel.Tag5          = singleBattery.Tag5;
                    addModel.HouseName     = xweModel.HouseName;
                    addModel.GoodsSiteName = xweModel.GoodsSiteName;
                    addModel.TestStatus    = xweModel.TestStatus;
                    addModel.TestType      = xweModel.TestType;
                    addModel.PalletID      = xweModel.Tag1;
                    xweHistroyBLL.Add(addModel);
                }
            }
        }
示例#3
0
        public bool InitGS2(string houseName, string gsName, string testType, string rfid)
        {
            XWEDBAccess.Model.GoodsSiteModel gsModel = GetModel(houseName, gsName);

            XWEDBAccess.Model.GoodsSiteModel newModel = new Model.GoodsSiteModel();
            newModel.HouseName     = houseName;
            newModel.GoodsSiteName = gsName;
            newModel.OperateStatus = SysCfg.EnumOperateStatus.空闲.ToString();
            newModel.TestStatus    = EnumTestStatus.待测试.ToString();
            newModel.TestType      = EnumTestType.无.ToString();
            newModel.UpdateTime    = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:MM:ss"));
            newModel.Tag1          = rfid;
            if (gsModel == null)//插入
            {
                if (Add(newModel) <= 0)
                {
                    return(false);
                }
            }
            else//更新
            {
                newModel.GoodsSiteID = gsModel.GoodsSiteID;
                if (Update(newModel) == false)
                {
                    return(false);
                }
            }
            return(true);
        }
示例#4
0
        /// <summary>
        /// 紧急任务出库
        /// </summary>
        /// <param name="xweModel"></param>
        /// <returns></returns>
        private bool AutoEmerOutHouseTask(XWEDBAccess.Model.GoodsSiteModel xweModel)
        {
            string[] rcl = xweModel.GoodsSiteName.Split('-');

            CellCoordModel cell = new CellCoordModel(int.Parse(rcl[0]), int.Parse(rcl[1]), int.Parse(rcl[2]));

            if (this.AsrsModel.GenerateOutputTask(cell, null, SysCfg.EnumAsrsTaskType.紧急出库, true) == false)
            {
                this.AsrsModel.LogRecorder.AddDebugLog("库存控制模块", "生成紧急出库任务失败!");
                return(false);
            }

            // 上传MES Start
            Report2Mes(xweModel);
            // 上传MES END

            if (xweGsBll.UpdateGs(this.AsrsModel.HouseName, xweModel.GoodsSiteName, EnumOperateStatus.锁定.ToString()) == false)//将出库的货位锁定,根据锁定状态循环生成任务
            {
                this.AsrsModel.LogRecorder.AddDebugLog("库存控制模块", "更新新威尔中间库的锁定状态失败!");
                return(false);
            }

            // 将测试结果保存到数据库中 START
            AddXWEHistroy(xweModel);
            // 将测试结果保存到数据库中 END
            return(true);
        }
示例#5
0
        /// <summary>
        /// 监控暂存区、测试区的电池状态生成,移库、出库、紧急出库任务
        /// </summary>
        private void AsrsBatteryStatusMonitor()
        {
            try
            {
                List <XWEDBAccess.Model.GoodsSiteModel> xweGsList = xweGsBll.GetModelList("HouseName = '"
                                                                                          + this.AsrsModel.HouseName + "' and OperateStatus != '锁定' and (TestStatus = '报警' or TestStatus='成功')");

                //List<XWEDBAccess.Model.GoodsSiteModel> xweGsList = xweGsBll.GetModelList("HouseName = '" + this.AsrsModel.HouseName + "' and (TestStatus = '报警' or TestStatus='成功')");

                if (xweGsList == null || xweGsList.Count == 0)
                {
                    return;
                }
                for (int i = 0; i < xweGsList.Count; i++)
                {
                    XWEDBAccess.Model.GoodsSiteModel xmeGs = xweGsList[i];
                    if (xmeGs.TestStatus.Trim() == SysCfg.EnumTestStatus.成功.ToString())
                    {
                        AutoOutHouseGsTask(xmeGs, (SysCfg.EnumTestType)Enum.Parse(typeof(SysCfg.EnumTestType), xmeGs.TestType));
                    }
                    else if (xmeGs.TestStatus.Trim() == SysCfg.EnumTestStatus.报警.ToString())//报警处理,生成紧急出库任务
                    {
                        AutoEmerOutHouseTask(xmeGs);
                    }
                }
                CreateMoveHouseTask();
            }
            catch (Exception ex)
            {
                Console.WriteLine("电池状态监控错误:" + ex.StackTrace);
            }
        }
示例#6
0
        /// <summary>
        ///DCR出库和产品出库
        /// </summary>
        /// <param name="xweModel"></param>
        /// <param name="testType"></param>
        /// <returns></returns>
        private bool AutoOutHouseGsTask(XWEDBAccess.Model.GoodsSiteModel xweModel, SysCfg.EnumTestType testType)
        {
            string[] rcl = xweModel.GoodsSiteName.Split('-');

            CellCoordModel cell  = new CellCoordModel(int.Parse(rcl[0]), int.Parse(rcl[1]), int.Parse(rcl[2]));
            CellCoordModel cell2 = null;

            // 上传MES Start
            Report2Mes(xweModel);
            // 上传MES END

            if (testType == SysCfg.EnumTestType.充放电测试)
            {
                if (this.AsrsModel.HouseName == EnumStoreHouse.A1库房.ToString())
                {
                    cell2 = AHouseDCRStation;//特殊固定的位置
                }
                else//b1库房
                {
                    cell2 = BHouseDCRStation; //特殊固定的位置
                }


                if (this.AsrsModel.GenerateOutputTask(cell, cell2, SysCfg.EnumAsrsTaskType.DCR测试, true) == false)
                {
                    this.AsrsModel.LogRecorder.AddDebugLog("库存控制模块", "生成DCR测试任务失败!");
                    return(false);
                }
                if (xweGsBll.UpdateGs(this.AsrsModel.HouseName, xweModel.GoodsSiteName, EnumOperateStatus.锁定.ToString()) == false)//将出库的货位锁定,根据锁定状态循环生成任务
                {
                    this.AsrsModel.LogRecorder.AddDebugLog("库存控制模块", "更新新威尔中间库的锁定状态失败!");
                    return(false);
                }

                // 将测试结果保存到数据库中 START
                AddXWEHistroy(xweModel);
                // 将测试结果保存到数据库中 END

                return(true);
            }
            else if (testType == SysCfg.EnumTestType.DCR测试)//正常出库
            {
                if (this.AsrsModel.GenerateOutputTask(cell, null, SysCfg.EnumAsrsTaskType.DCR出库, true) == false)
                {
                    this.AsrsModel.LogRecorder.AddDebugLog("库存控制模块", "生成DCR测试任务失败!");
                    return(false);
                }
                if (xweGsBll.UpdateGs(this.AsrsModel.HouseName, xweModel.GoodsSiteName, EnumOperateStatus.锁定.ToString()) == false)//将出库的货位锁定,根据锁定状态循环生成任务
                {
                    this.AsrsModel.LogRecorder.AddDebugLog("库存控制模块", "更新新威尔中间库的锁定状态失败!");
                    return(false);
                }
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#7
0
 public string GetPlletID(string houseName, string goodsSiteName)
 {
     XWEDBAccess.Model.GoodsSiteModel gsm = xweGsBll.GetModel(houseName, goodsSiteName);
     if (gsm == null)
     {
         return(string.Empty);
     }
     return(gsm.Tag1);
 }
示例#8
0
 /// <summary>
 /// 得到一个对象实体
 /// </summary>
 public XWEDBAccess.Model.GoodsSiteModel DataRowToModel(DataRow row)
 {
     XWEDBAccess.Model.GoodsSiteModel model = new XWEDBAccess.Model.GoodsSiteModel();
     if (row != null)
     {
         if (row["GoodsSiteID"] != null && row["GoodsSiteID"].ToString() != "")
         {
             model.GoodsSiteID = long.Parse(row["GoodsSiteID"].ToString());
         }
         if (row["HouseName"] != null)
         {
             model.HouseName = row["HouseName"].ToString();
         }
         if (row["GoodsSiteName"] != null)
         {
             model.GoodsSiteName = row["GoodsSiteName"].ToString();
         }
         if (row["OperateStatus"] != null)
         {
             model.OperateStatus = row["OperateStatus"].ToString();
         }
         if (row["TestStatus"] != null)
         {
             model.TestStatus = row["TestStatus"].ToString();
         }
         if (row["TestType"] != null)
         {
             model.TestType = row["TestType"].ToString();
         }
         if (row["UpdateTime"] != null && row["UpdateTime"].ToString() != "")
         {
             model.UpdateTime = DateTime.Parse(row["UpdateTime"].ToString());
         }
         if (row["Tag1"] != null)
         {
             model.Tag1 = row["Tag1"].ToString();
         }
         if (row["Tag2"] != null)
         {
             model.Tag2 = row["Tag2"].ToString();
         }
         if (row["Tag3"] != null)
         {
             model.Tag3 = row["Tag3"].ToString();
         }
         if (row["Tag4"] != null)
         {
             model.Tag4 = row["Tag4"].ToString();
         }
         if (row["Tag5"] != null)
         {
             model.Tag5 = row["Tag5"].ToString();
         }
     }
     return(model);
 }
示例#9
0
        /// <summary>
        /// 更新一条数据
        /// </summary>
        public bool Update(XWEDBAccess.Model.GoodsSiteModel model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("update GoodsSite set ");
            strSql.Append("HouseName=@HouseName,");
            strSql.Append("GoodsSiteName=@GoodsSiteName,");
            strSql.Append("OperateStatus=@OperateStatus,");
            strSql.Append("TestStatus=@TestStatus,");
            strSql.Append("TestType=@TestType,");
            strSql.Append("UpdateTime=@UpdateTime,");
            strSql.Append("Tag1=@Tag1,");
            strSql.Append("Tag2=@Tag2,");
            strSql.Append("Tag3=@Tag3,");
            strSql.Append("Tag4=@Tag4,");
            strSql.Append("Tag5=@Tag5");
            strSql.Append(" where GoodsSiteID=@GoodsSiteID");
            SqlParameter[] parameters =
            {
                new SqlParameter("@HouseName",     SqlDbType.NVarChar,   50),
                new SqlParameter("@GoodsSiteName", SqlDbType.NVarChar,   50),
                new SqlParameter("@OperateStatus", SqlDbType.NVarChar,   50),
                new SqlParameter("@TestStatus",    SqlDbType.NVarChar,   50),
                new SqlParameter("@TestType",      SqlDbType.NVarChar,   50),
                new SqlParameter("@UpdateTime",    SqlDbType.DateTime),
                new SqlParameter("@Tag1",          SqlDbType.NVarChar,  500),
                new SqlParameter("@Tag2",          SqlDbType.NVarChar,  500),
                new SqlParameter("@Tag3",          SqlDbType.NVarChar,  500),
                new SqlParameter("@Tag4",          SqlDbType.NVarChar,  500),
                new SqlParameter("@Tag5",          SqlDbType.NVarChar,  500),
                new SqlParameter("@GoodsSiteID",   SqlDbType.BigInt, 8)
            };
            parameters[0].Value  = model.HouseName;
            parameters[1].Value  = model.GoodsSiteName;
            parameters[2].Value  = model.OperateStatus;
            parameters[3].Value  = model.TestStatus;
            parameters[4].Value  = model.TestType;
            parameters[5].Value  = model.UpdateTime;
            parameters[6].Value  = model.Tag1;
            parameters[7].Value  = model.Tag2;
            parameters[8].Value  = model.Tag3;
            parameters[9].Value  = model.Tag4;
            parameters[10].Value = model.Tag5;
            parameters[11].Value = model.GoodsSiteID;

            int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);

            if (rows > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#10
0
        public bool UpdateGs(string houseName, string gsName, string operateStatus)
        {
            XWEDBAccess.Model.GoodsSiteModel gsModel = GetModel(houseName, gsName);
            if (gsModel == null)
            {
                return(false);
            }
            gsModel.OperateStatus = operateStatus;
            if (this.Update(gsModel) == false)
            {
                return(false);
            }

            return(true);
        }
示例#11
0
        public bool UpdateGs(string houseName, string gsName, string testStaus, string testType)
        {
            XWEDBAccess.Model.GoodsSiteModel gsModel = GetModel(houseName, gsName);
            if (gsModel == null)
            {
                return(false);
            }
            gsModel.TestStatus = testStaus;
            gsModel.TestType   = testType;
            if (this.Update(gsModel) == false)
            {
                return(false);
            }

            return(true);
        }
示例#12
0
        /// <summary>
        /// 增加一条数据
        /// </summary>
        public long Add(XWEDBAccess.Model.GoodsSiteModel model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("insert into GoodsSite(");
            strSql.Append("HouseName,GoodsSiteName,OperateStatus,TestStatus,TestType,UpdateTime,Tag1,Tag2,Tag3,Tag4,Tag5)");
            strSql.Append(" values (");
            strSql.Append("@HouseName,@GoodsSiteName,@OperateStatus,@TestStatus,@TestType,@UpdateTime,@Tag1,@Tag2,@Tag3,@Tag4,@Tag5)");
            strSql.Append(";select @@IDENTITY");
            SqlParameter[] parameters =
            {
                new SqlParameter("@HouseName",     SqlDbType.NVarChar,   50),
                new SqlParameter("@GoodsSiteName", SqlDbType.NVarChar,   50),
                new SqlParameter("@OperateStatus", SqlDbType.NVarChar,   50),
                new SqlParameter("@TestStatus",    SqlDbType.NVarChar,   50),
                new SqlParameter("@TestType",      SqlDbType.NVarChar,   50),
                new SqlParameter("@UpdateTime",    SqlDbType.DateTime),
                new SqlParameter("@Tag1",          SqlDbType.NVarChar,  500),
                new SqlParameter("@Tag2",          SqlDbType.NVarChar,  500),
                new SqlParameter("@Tag3",          SqlDbType.NVarChar,  500),
                new SqlParameter("@Tag4",          SqlDbType.NVarChar,  500),
                new SqlParameter("@Tag5",          SqlDbType.NVarChar, 500)
            };
            parameters[0].Value  = model.HouseName;
            parameters[1].Value  = model.GoodsSiteName;
            parameters[2].Value  = model.OperateStatus;
            parameters[3].Value  = model.TestStatus;
            parameters[4].Value  = model.TestType;
            parameters[5].Value  = model.UpdateTime;
            parameters[6].Value  = model.Tag1;
            parameters[7].Value  = model.Tag2;
            parameters[8].Value  = model.Tag3;
            parameters[9].Value  = model.Tag4;
            parameters[10].Value = model.Tag5;

            object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);

            if (obj == null)
            {
                return(0);
            }
            else
            {
                return(Convert.ToInt64(obj));
            }
        }
示例#13
0
        void Report2Mes(XWEDBAccess.Model.GoodsSiteModel xweModel)
        {
            string[] rcl = xweModel.GoodsSiteName.Split('-');
            if (mesenable != 0)
            {
                List <XWEDBAccess.Model.BatteryCodeModel> batteryList = xweBatteryCodeBll.GetBatteryListData(xweModel.GoodsSiteID);
                if (batteryList != null)
                {
                    foreach (XWEDBAccess.Model.BatteryCodeModel singleBattery in batteryList)
                    {
                        string reports = string.Empty;
                        reports += singleBattery.Code.ToString() + ",";
                        reports += rcl[0] + "-" + rcl[1] + "-" + rcl[2] + ",";
                        reports += singleBattery.Channel + ",";
                        reports += singleBattery.Pressure + ",";
                        reports += singleBattery.InnerRC + ",";
                        reports += singleBattery.Power + ",";
                        reports += singleBattery.Capcity + ",";
                        if (singleBattery.TestResult.ToUpper() == "TRUE" || singleBattery.TestResult.ToUpper() == "OK")
                        {
                            reports += "OK";
                        }
                        else
                        {
                            reports += "NG";
                        }
                        reports += singleBattery.Electricity + ",";
                        reports += singleBattery.Temperature;

                        if (this.AsrsModel.HouseName == EnumStoreHouse.A1库房.ToString())
                        {
                            WCFClient.MESWCFManage.Inst().UpLoadTestDataA(reports);
                        }
                        else
                        {
                            WCFClient.MESWCFManage.Inst().UpLoadTestDataB(reports);
                        }
                    }
                }
            }
        }
示例#14
0
 /// <summary>
 ///  入库A1、B1完成或者在移库完成的时候新威尔的交互流程,这里只处理进入测试区的货位,在暂存区的无需此流程
 ///  入B1库的时候传输工装号及串好串的两个条码,其他流程和A1一样
 /// </summary>
 /// <param name="houseName">库房名称</param>
 /// <param name="goodsSiteName">货位名称</param>
 /// <param name="plletID">托盘号</param>
 /// <param name="batteryIDs">电池数组</param>
 /// <returns>执行状态</returns>
 public bool InHouseTestAreaLogic(string houseName, string goodsSiteName, string plletID, string[] batteryIDs, ref string restr)
 {
     //首先要在goodssite表中插入或更新数据,此处需要判断是那个区,暂存区就不是充放电测试
     if (xweGsBll.InitGS2(houseName, goodsSiteName, EnumTestType.充放电测试.ToString(), plletID) == false)
     {
         this.AsrsModel.LogRecorder.AddDebugLog("威尔流程监控", "新威尔流程入库或者移库流程初始化货位信息失败!");
         return(false);
     }
     XWEDBAccess.Model.GoodsSiteModel gsm = xweGsBll.GetModel(houseName, goodsSiteName);
     if (gsm == null)
     {
         this.AsrsModel.LogRecorder.AddDebugLog("威尔流程监控", "货位为空!");
         return(false);
     }
     //向中间库中插入托盘条码及电芯条码,同时将有货位的电芯条码清空
     if (xweBatteryCodeBll.AddBattery((int)gsm.GoodsSiteID, batteryIDs) == false)
     {
         this.AsrsModel.LogRecorder.AddDebugLog("威尔流程监控", "向电池条码表中添加数据失败!");
         return(false);
     }
     return(true);
 }
示例#15
0
        /// <summary>
        /// DCR工位是否可用
        /// </summary>
        /// <returns></returns>
        private bool IsDCRStationValid(string houseName)
        {
            string goodsSiteName = "";

            if (houseName == EnumStoreHouse.A1库房.ToString())
            {
                goodsSiteName = AHouseDCRStation.Row.ToString() + "-" + AHouseDCRStation.Col.ToString() + "-" + AHouseDCRStation.Layer.ToString();
            }
            else
            {
                goodsSiteName = BHouseDCRStation.Row.ToString() + "-" + BHouseDCRStation.Col.ToString() + "-" + BHouseDCRStation.Layer.ToString();
            }
            XWEDBAccess.Model.GoodsSiteModel gsModel = xweGsBll.GetModel(houseName, goodsSiteName);
            if (gsModel == null)
            {
                return(true);
            }
            if (gsModel.TestType == EnumTestType.无.ToString())
            {
                return(true);
            }
            return(false);
        }
示例#16
0
        /// <summary>
        /// 得到一个对象实体
        /// </summary>
        public XWEDBAccess.Model.GoodsSiteModel GetModel(long GoodsSiteID)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("select  top 1 GoodsSiteID,HouseName,GoodsSiteName,OperateStatus,TestStatus,TestType,UpdateTime,Tag1,Tag2,Tag3,Tag4,Tag5 from GoodsSite ");
            strSql.Append(" where GoodsSiteID=@GoodsSiteID");
            SqlParameter[] parameters =
            {
                new SqlParameter("@GoodsSiteID", SqlDbType.BigInt)
            };
            parameters[0].Value = GoodsSiteID;

            XWEDBAccess.Model.GoodsSiteModel model = new XWEDBAccess.Model.GoodsSiteModel();
            DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters);

            if (ds.Tables[0].Rows.Count > 0)
            {
                return(DataRowToModel(ds.Tables[0].Rows[0]));
            }
            else
            {
                return(null);
            }
        }
示例#17
0
 /// <summary>
 /// 更新一条数据
 /// </summary>
 public bool Update(XWEDBAccess.Model.GoodsSiteModel model)
 {
     return(dal.Update(model));
 }
示例#18
0
 /// <summary>
 /// 增加一条数据
 /// </summary>
 public long Add(XWEDBAccess.Model.GoodsSiteModel model)
 {
     return(dal.Add(model));
 }
示例#19
0
        /// <summary>
        ///DCR出库和产品出库
        /// </summary>
        /// <param name="xweModel"></param>
        /// <param name="testType"></param>
        /// <returns></returns>
        private bool AutoOutHouseGsTask(XWEDBAccess.Model.GoodsSiteModel xweModel, SysCfg.EnumTestType testType)
        {
            string[] rcl = xweModel.GoodsSiteName.Split('-');

            CellCoordModel cell  = new CellCoordModel(int.Parse(rcl[0]), int.Parse(rcl[1]), int.Parse(rcl[2]));
            CellCoordModel cell2 = null;

            // 上传MES Start
            Report2Mes(xweModel);
            // 上传MES END

            if (testType == SysCfg.EnumTestType.充放电测试)
            {
                ControlTaskModel dcrWaitOrRunningTask = null;
                if (this.AsrsModel.HouseName == EnumStoreHouse.A1库房.ToString())
                {
                    dcrWaitOrRunningTask = bllControlTask.GetProcessWaitOrRunningTask(EnumStoreHouse.A1库房.ToString(), 4, "1001");
                    cell2 = AHouseDCRStation;//特殊固定的位置
                }
                else//b1库房
                {
                    dcrWaitOrRunningTask = bllControlTask.GetProcessWaitOrRunningTask(EnumStoreHouse.B1库房.ToString(), 4, "1002");
                    cell2 = BHouseDCRStation;     //特殊固定的位置
                }
                if (dcrWaitOrRunningTask != null) //如果已经有dcr执行中或者待执行的任务就不在生成了,同一个工位的锁定
                {
                    return(false);
                }
                //在生成dcr测试的时候要判断下DCR测试工位是否有料,在新威尔交互的数据表中记录dcr工位的测试类型为无的时候证明已经测试完并出库完成
                if (IsDCRStationValid(this.AsrsModel.HouseName) == false)
                {
                    return(false);
                }

                if (this.AsrsModel.GenerateOutputTask(cell, cell2, SysCfg.EnumAsrsTaskType.DCR测试, true) == false)
                {
                    this.AsrsModel.LogRecorder.AddDebugLog("库存控制模块", "生成DCR测试任务失败!");
                    return(false);
                }
                if (xweGsBll.UpdateGs(this.AsrsModel.HouseName, xweModel.GoodsSiteName, EnumOperateStatus.锁定.ToString()) == false)//将出库的货位锁定,根据锁定状态循环生成任务
                {
                    this.AsrsModel.LogRecorder.AddDebugLog("库存控制模块", "更新新威尔中间库的锁定状态失败!");
                    return(false);
                }

                // 将测试结果保存到数据库中 START
                AddXWEHistroy(xweModel);
                // 将测试结果保存到数据库中 END

                return(true);
            }
            else if (testType == SysCfg.EnumTestType.DCR测试)//正常出库
            {
                ControlTaskModel dcrOutWaitOrRunningTask = null;
                if (this.AsrsModel.HouseName == EnumStoreHouse.A1库房.ToString())
                {
                    dcrOutWaitOrRunningTask = bllControlTask.GetProcessWaitOrRunningTask(EnumStoreHouse.A1库房.ToString(), 3, "1001");
                }
                else//b1库房
                {
                    dcrOutWaitOrRunningTask = bllControlTask.GetProcessWaitOrRunningTask(EnumStoreHouse.B1库房.ToString(), 3, "1002");
                }
                if (dcrOutWaitOrRunningTask != null)//如果已经有dcr执行中或者待执行的任务就不在生成了,同一个工位的锁定
                {
                    return(false);
                }

                if (this.AsrsModel.GenerateOutputTask(cell, null, SysCfg.EnumAsrsTaskType.DCR出库, true) == false)
                {
                    this.AsrsModel.LogRecorder.AddDebugLog("库存控制模块", "生成DCR测试任务失败!");
                    return(false);
                }
                if (xweGsBll.UpdateGs(this.AsrsModel.HouseName, xweModel.GoodsSiteName, EnumOperateStatus.锁定.ToString()) == false)//将出库的货位锁定,根据锁定状态循环生成任务
                {
                    this.AsrsModel.LogRecorder.AddDebugLog("库存控制模块", "更新新威尔中间库的锁定状态失败!");
                    return(false);
                }
                return(true);
            }
            else
            {
                return(false);
            }
        }