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
}
}
}