You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

368 lines
18 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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