using System; using System.Collections.Generic; using System.Linq; using System.Text; using Mesnac.Action.Base; using Mesnac.Codd.Session; using System.Data; namespace Mesnac.Action.Feeding.BasicInfo { /// /// 一次法配方辅助类 /// public class RecipeOneHelper { /// /// 从网络库下载物料到一次法本地库 /// /// 物料编码 /// 物料名称 /// 成功返回1,失败返回其他值 public static int DownloadMaterialone(string materCode, string materName) { #region 定义变量 int intResult = 0; //保存返回结果 DbHelper localOneHelper = null; DbHelper serverHelper = null; string strSql = String.Empty; #endregion #region 执行业务 try { #region 执行验证 FeedingAction action = new FeedingAction(); if (action.NetType == BaseAction.NetTypes.Local) { ICSharpCode.Core.LoggingService.Error("此系统版本为单机版,不能从网络库下载一次法物料数据..."); intResult = 0; return intResult; } localOneHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.LocalOne); //获取一次法本地库数据连接 serverHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Server); //获取网络数据库数据连接 if (localOneHelper == null) { ICSharpCode.Core.LoggingService.Error("下载配方失败:获取一次法本地数据库连接失败!"); intResult = 0; return intResult; } localOneHelper.CommandType = CommandType.Text; if (serverHelper == null) { ICSharpCode.Core.LoggingService.Error("下载配方失败:获取网络数据库连接失败!"); intResult = 0; return intResult; } serverHelper.CommandType = CommandType.Text; #endregion strSql = "select * from pmt_material where Mater_code = @MaterCode"; serverHelper.ClearParameter(); serverHelper.CommandText = strSql; serverHelper.AddParameter("@MaterCode", materCode); DataTable dtMaterial = serverHelper.ToDataTable(); if (dtMaterial != null && dtMaterial.Rows.Count > 0) { strSql = "delete from pmt_material_one where mater_Code=@MaterCode or mater_Code=@MaterName;"; strSql += "insert into pmt_material_one(mater_Code,mater_Name,mater_type) values(@MaterCode,@MaterName,@MaterType)"; localOneHelper.ClearParameter(); localOneHelper.CommandText = strSql; localOneHelper.AddParameter("@MaterCode", materCode); localOneHelper.AddParameter("@MaterName", materName); localOneHelper.AddParameter("@MaterType", "硫磺"); localOneHelper.ExecuteNonQuery(); } return 1; } catch (Exception ex) { ICSharpCode.Core.LoggingService.Error(":" + ex.Message); return -1; } #endregion } /// /// 从网络库下在一次法配方数据 /// /// 机台号 /// 配方物料编码 /// 配方版本号 /// 成功返回1,失败返回其他值 public static int DownLoadRecipeOne(string recipeEquipCode, string recipeMaterialCode, string recipeVersionID) { #region 定义变量 int unloadtime,weightType,weightid; string recipeName,modifytime,actcode; string materCode = String.Empty; string materName = String.Empty; double setweight,errorallow; string sqlstr = ""; //保存要执行的SQL语句 DataTable dtRecipe = null; DataTable dtWeight = null; DataTable dtMix = null; int intResult = 0; //保存返回结果 DbHelper localOneHelper = null; DbHelper serverHelper = null; #endregion #region 执行验证 FeedingAction action = new FeedingAction(); if (action.NetType == BaseAction.NetTypes.Local) { ICSharpCode.Core.LoggingService.Error("此系统版本为单机版,不能从网络库下载一次法配方数据..."); intResult = 0; return intResult; } localOneHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.LocalOne); //获取一次法本地库数据连接 serverHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Server); //获取网络数据库数据连接 if (localOneHelper == null) { ICSharpCode.Core.LoggingService.Error("下载配方失败:获取一次法本地数据库连接失败!"); intResult = 0; return intResult; } localOneHelper.CommandType = CommandType.Text; if (serverHelper == null) { ICSharpCode.Core.LoggingService.Error("下载配方失败:获取网络数据库连接失败!"); intResult = 0; return intResult; } serverHelper.CommandType = CommandType.Text; #endregion #region 执行业务 try { #region 查找网络配方 sqlstr = @" SELECT '' [ObjID] ,Equip_Code [RecipeEquipCode] ,a.Mater_Code [RecipeMaterialCode] ,Edt_Code [RecipeVersionID] ,a.Mater_Name [RecipeName] ,Recipe_Type [RecipeType] ,b.mater_name [RecipeMaterialName] ,User_EdtCode [RecipeUserVersion] ,Recipe_State [RecipeState] ,Define_Date [RecipeDefineDate] ,'' [RecipeModifyUser] ,Modify_Time [RecipeModifyTime] ,Done_Time [LotDoneTime] ,Shelf_Num [ShelfLotCount] ,Total_Weight [LotTotalWeight] ,case when [CB_RecycleType]>='1' then '1' else [CB_RecycleType] end [CarbonRecycleType] ,case when [CB_RecycleTime]='' then '0' else [CB_RecycleTime] end [CarbonRecycleTime] ,OverTemp_MinTime [OverTempMinTime] ,OverTime_Time [OverTimeSetTime] ,OverTemp_Temp [OverTempSetTemp] ,Max_InPolyTemp [InPolyMaxTemp] ,Min_InPolyTemp [InPolyMinTemp] ,In_PolyTime [InPolySetTime] ,In_CarbonTime [InCarbonSetTime] ,In_OilTime [InOilSetTime] ,In_PowderTime [InPowderSetTime] ,Roll_SpeedDiff [RollSpeedDiff] ,Ram_PressDiff [RamPressDiff] ,Is_UseAreaTemp [IsUseAreaTemp] ,Side_Temp [SideTemp] ,Side_TempDiff [SideTempDiff] ,Roll_Temp [RollTemp] ,Roll_TempDiff [RollTempDiff] ,Ddoor_Temp [DdoorTemp] ,Ddoor_TempDiff [DdoorTempDiff] ,Oper_Code [OperCode] ,Mem_Note [Remark] ,Recipe_Code [RecipeCode] ,Start_datetime [StartDatetime] ,End_datetime [EndDatetime] ,Audit_flag [AuditFlag] ,Audit_name [AuditUser] ,Audit_date [AuditDateTime] ,Recipe_Dic [RecipeDic] ,Stay_time [StayTimeSpand] ,'' [RearchCode] ,'' [CanAuditUser] ,Fill_Coef [MakeUpTemp] ,'' [NewFlag] , Dischangetime [Dischangetime] FROM [Pmt_Recipe] a left join (select mater_code,mater_name from dbo.Pmt_material) b on a.Mater_Code=b.Mater_code "; //sqlstr += " WHERE Recipe_State=1 AND Audit_flag = 1 AND Equip_Code=@RecipeEquipCode AND a.Mater_Code=@RecipeMaterialCode AND Edt_Code=@RecipeVersionID"; sqlstr += " WHERE Equip_Code=@RecipeEquipCode AND a.Mater_Code=@RecipeMaterialCode AND Edt_Code=@RecipeVersionID"; //上辅机能加的配方,开炼机肯定能加 serverHelper.ClearParameter(); serverHelper.CommandText = sqlstr; serverHelper.AddParameter("@RecipeEquipCode", recipeEquipCode); serverHelper.AddParameter("@RecipeMaterialCode", recipeMaterialCode); serverHelper.AddParameter("@RecipeVersionID", recipeVersionID); dtRecipe = serverHelper.ToDataTable(); if (dtRecipe.Rows.Count == 0) { ICSharpCode.Core.LoggingService.Warn(String.Format("下载配方数据失败[{0}]:没有符和条件的配方数据!", recipeMaterialCode)); return 0; } #endregion #region 如果网络库中存在符合条件的配方记录,则执行下载配方相关业务 if (dtRecipe.Rows.Count > 0) { #region 1、获取基础数据 unloadtime = Mesnac.Basic.DataProcessor.RowValue(dtRecipe.Rows[0], "Dischangetime", 0); if (unloadtime == 0) { unloadtime = 200; } recipeName = Mesnac.Basic.DataProcessor.RowValue(dtRecipe.Rows[0], "RecipeMaterialName", String.Empty); modifytime = Mesnac.Basic.DataProcessor.RowValue(dtRecipe.Rows[0], "RecipeModifyTime", String.Empty); #endregion #region 2、下载配方物料 DownloadMaterialone(recipeMaterialCode, recipeName); //下载物料代码pmt_material_one表 #endregion #region 3、(pmt_recipeMix_one)删除一次法本地库的配方数据,并向一次发本地库的配方表中添加从网络库中查到的配方数据 sqlstr = @"delete from pmt_recipemix_one where recipe_Code=@RecipeMaterialCode"; sqlstr += @";delete from pmt_weighMix_one where father_Code=@RecipeMaterialCode"; sqlstr += @";delete from Pmt_StepMix_one where father_Code=@RecipeMaterialCode"; sqlstr += @";insert into pmt_recipeMix_one(recipe_code,Recipe_name,equip_id,version,dischangetime,modifytime,if_used)"; sqlstr += @" values(@RecipeMaterialCode,@RecipeMaterialName,@RecipeEquipCode,@RecipeVersionID,@Dischangetime,@Modifytime,'1')"; localOneHelper.CommandText = sqlstr; localOneHelper.AddParameter("@RecipeMaterialCode", recipeMaterialCode); localOneHelper.AddParameter("@RecipeMaterialName", recipeName); localOneHelper.AddParameter("@RecipeEquipCode", recipeEquipCode.Substring(3, 2)); localOneHelper.AddParameter("@RecipeVersionID", recipeVersionID); localOneHelper.AddParameter("@Dischangetime", unloadtime); localOneHelper.AddParameter("@Modifytime", modifytime); localOneHelper.ExecuteNonQuery(); #endregion #region 4、(pmt_weighMix_one) sqlstr = @"SELECT '' [RecipeObjID] ,Equip_Code [RecipeEquipCode] ,Recipe_Code [RecipeMaterialCode] ,Edt_Code [RecipeVersionID] ,Weight_ID [WeightID] ,Weight_Type [WeightType] ,Scale_Code [ScaleID] ,Act_Code [ActCode] ,Mater_Code [MaterialCode] ,Mater_Name [MaterialName] ,Set_Weight [SetWeight] ,Error_Allow [ErrorAllow] ,'' [OldSetWeight] ,Act_Code [AutoPloy] FROM [Pmt_Weight] WHERE Equip_Code=@RecipeEquipCode AND Recipe_Code=@RecipeMaterialCode AND Edt_Code=@RecipeVersionID and Weight_Type >= 6 Order by Weight_Type,Weight_ID"; serverHelper.ClearParameter(); serverHelper.CommandText = sqlstr; serverHelper.AddParameter("@RecipeEquipCode", recipeEquipCode); serverHelper.AddParameter("@RecipeMaterialCode", recipeMaterialCode); serverHelper.AddParameter("@RecipeVersionID", recipeVersionID); dtWeight = serverHelper.ToDataTable(); sqlstr = String.Empty; foreach (DataRow rowWeight in dtWeight.Rows) { weightid = Mesnac.Basic.DataProcessor.RowValue(rowWeight, "WeightID", -1); weightType = Mesnac.Basic.DataProcessor.RowValue(rowWeight, "WeightType", 6) - 6; actcode = Mesnac.Basic.DataProcessor.RowValue(rowWeight, "ActCode", "0"); materCode = Mesnac.Basic.DataProcessor.RowValue(rowWeight, "MaterialCode", String.Empty); materName = Mesnac.Basic.DataProcessor.RowValue(rowWeight, "MaterialName", String.Empty); setweight = Mesnac.Basic.DataProcessor.RowValue(rowWeight, "SetWeight", 0.0); errorallow = Mesnac.Basic.DataProcessor.RowValue(rowWeight, "ErrorAllow", 0.0); #region 下载称量物料 DownloadMaterialone(materCode, materName); #endregion sqlstr += "insert into pmt_weighMix_one(weight_id,father_Code,equip_Code,edt_Code,"; sqlstr += "weigh_type,act_Code,child_Code,child_name,set_weight,error_allow)"; sqlstr += " values(" + weightid + ",'" + recipeMaterialCode + "','" + recipeEquipCode.Substring(3,2) + "','" + recipeVersionID + "'," + weightType + ",'" + actcode + "','" + materCode + "','" + materName + "'," + setweight + "," + errorallow + ");"; //sqlstr += " values({0},'{1}','{2}','{3}',{4},'{5}','{6}','{7}',{8},{9});"; } if (!String.IsNullOrEmpty(sqlstr)) { localOneHelper.ClearParameter(); localOneHelper.CommandText = sqlstr; localOneHelper.ExecuteNonQuery(); } #endregion #region 5、(Pmt_StepMix_one) sqlstr = "select * from Pmt_StepMix_one Where recipe_Code=@RecipeMaterialCode and equip_Code=@RecipeEquipCode and edt_Code=@RecipeVersionID"; serverHelper.ClearParameter(); serverHelper.CommandText = sqlstr; serverHelper.AddParameter("@RecipeMaterialCode", recipeMaterialCode); serverHelper.AddParameter("@RecipeEquipCode", recipeEquipCode); serverHelper.AddParameter("@RecipeVersionID", recipeVersionID); dtMix = serverHelper.ToDataTable(); sqlstr = String.Empty; foreach (DataRow rowMix in dtMix.Rows) { int mixId = Mesnac.Basic.DataProcessor.RowValue(rowMix,"mix_id",0); int KLequipId = Mesnac.Basic.DataProcessor.RowValue(rowMix,"KLequipId",0); int Mix_ActAddress = Mesnac.Basic.DataProcessor.RowValue(rowMix,"Mix_ActAddress",0); int Time_Mix = Mesnac.Basic.DataProcessor.RowValue(rowMix,"Time_Mix",0); double CoolSpeed_Mix = Mesnac.Basic.DataProcessor.RowValue(rowMix,"CoolSpeed_Mix",0.0); double OpenMixSpeed_Mix = Mesnac.Basic.DataProcessor.RowValue(rowMix,"OpenMixSpeed_Mix",0.0); double Rollor_Mix = Mesnac.Basic.DataProcessor.RowValue(rowMix,"Rollor_Mix",0.0); double WaterTemp_Mix = Mesnac.Basic.DataProcessor.RowValue(rowMix,"WaterTemp_Mix",0.0); double Speeddiff_Mix = Mesnac.Basic.DataProcessor.RowValue(rowMix,"Speeddiff_Mix",0.0); int is_check = Mesnac.Basic.DataProcessor.RowValue(rowMix, "is_check", 0); sqlstr = "insert into Pmt_StepMix_one(mix_id,father_Code,equip_Code,"; sqlstr += "Mix_ActAddress,Time_Mix,CoolSpeed_Mix,OpenMixSpeed_Mix,Rollor_Mix,WaterTemp_Mix,Speeddiff_Mix,is_check)"; sqlstr += " values({0},'{1}',{2},{3},{4},{5},{6},{7},{8},{9},{10})"; sqlstr = String.Format(sqlstr, mixId, recipeMaterialCode, KLequipId, Mix_ActAddress, Time_Mix, CoolSpeed_Mix, OpenMixSpeed_Mix, Rollor_Mix, WaterTemp_Mix, Speeddiff_Mix,is_check); localOneHelper.ClearParameter(); localOneHelper.CommandText = sqlstr; localOneHelper.ExecuteNonQuery(); } #endregion } #endregion return 1; } catch (Exception ex) { ICSharpCode.Core.LoggingService.Error("下载一次法配方失败:" + ex.Message); return -1; } #endregion } } }