|
|
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
|
|
|
{
|
|
|
/// <summary>
|
|
|
/// 一次法配方辅助类
|
|
|
/// </summary>
|
|
|
public class RecipeOneHelper
|
|
|
{
|
|
|
/// <summary>
|
|
|
/// 从网络库下载物料到一次法本地库
|
|
|
/// </summary>
|
|
|
/// <param name="materCode">物料编码</param>
|
|
|
/// <param name="materName">物料名称</param>
|
|
|
/// <returns>成功返回1,失败返回其他值</returns>
|
|
|
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
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 从网络库下在一次法配方数据
|
|
|
/// </summary>
|
|
|
/// <param name="recipeEquipCode">机台号</param>
|
|
|
/// <param name="recipeMaterialCode">配方物料编码</param>
|
|
|
/// <param name="recipeVersionID">配方版本号</param>
|
|
|
/// <returns>成功返回1,失败返回其他值</returns>
|
|
|
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
|
|
|
}
|
|
|
}
|
|
|
}
|