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.

553 lines
24 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Mesnac.Action.Base;
using Mesnac.Controls.Base;
using Mesnac.Controls.Default;
using System.Windows.Forms;
using Mesnac.Codd.Session;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
namespace Mesnac.Action.Feeding.Technology
{
public class NetRecipe
{
private int IniBasMaterial(DbHelper localHelper, DbHelper serverHelper, string materialCode)
{
int Result = 0;
#region BasMaterial
serverHelper.CommandType = CommandType.Text;
string sqlstr = @"SELECT * FROM dbo.BasMaterial WHERE MaterialCode=@MaterialCode";
serverHelper.CommandText = sqlstr;
serverHelper.ClearParameter();
serverHelper.AddParameter("@MaterialCode", materialCode);
DataTable dt = serverHelper.ToDataTable();
if (dt.Rows.Count == 0)
{
return Result;
}
Result = 1;
sqlstr = @"DELETE FROM dbo.BasMaterial WHERE MaterialCode=@MaterialCode";
localHelper.CommandText = sqlstr;
localHelper.ClearParameter();
localHelper.AddParameter("@MaterialCode", materialCode);
localHelper.ExecuteNonQuery();
sqlstr = @"INSERT INTO dbo.BasMaterial
( MaterialCode ,
MajorTypeID ,
MinorTypeID ,
RubCode ,
MaterialName ,
MaterialOtherName ,
MaterialSimpleName ,
MaterialLevel ,
MaterialGroup ,
ProductMaterialCode ,
UserCode ,
PlanPrice ,
ProductArea ,
MinStock ,
MaxStock ,
UnitID ,
StaticUnitID ,
StaticUnitCoefficient ,
CheckPermitError ,
MaxParkTime ,
MinParkTime ,
DefineDate ,
StandardCode ,
StaticClass ,
IsEqualMaterial ,
IsPutJar ,
ERPCode ,
Remark ,
DeleteFlag
) values (
@MaterialCode ,
@MajorTypeID ,
@MinorTypeID ,
@RubCode ,
@MaterialName ,
@MaterialOtherName ,
@MaterialSimpleName ,
@MaterialLevel ,
@MaterialGroup ,
@ProductMaterialCode ,
@UserCode ,
@PlanPrice ,
@ProductArea ,
@MinStock ,
@MaxStock ,
@UnitID ,
@StaticUnitID ,
@StaticUnitCoefficient ,
@CheckPermitError ,
@MaxParkTime ,
@MinParkTime ,
@DefineDate ,
@StandardCode ,
@StaticClass ,
@IsEqualMaterial ,
@IsPutJar ,
@ERPCode ,
@Remark ,
@DeleteFlag )";
foreach (DataRow dr in dt.Rows)
{
localHelper.CommandText = sqlstr;
localHelper.ClearParameter();
localHelper.AddParameter("MaterialCode", dr["MaterialCode"]);
localHelper.AddParameter("MajorTypeID", dr["MajorTypeID"]);
localHelper.AddParameter("MinorTypeID", dr["MinorTypeID"]);
localHelper.AddParameter("RubCode", dr["RubCode"]);
localHelper.AddParameter("MaterialName", dr["MaterialName"]);
localHelper.AddParameter("MaterialOtherName", dr["MaterialOtherName"]);
localHelper.AddParameter("MaterialSimpleName", dr["MaterialSimpleName"]);
localHelper.AddParameter("MaterialLevel", dr["MaterialLevel"]);
localHelper.AddParameter("MaterialGroup", dr["MaterialGroup"]);
localHelper.AddParameter("ProductMaterialCode", dr["ProductMaterialCode"]);
localHelper.AddParameter("UserCode", dr["UserCode"]);
localHelper.AddParameter("PlanPrice", dr["PlanPrice"]);
localHelper.AddParameter("ProductArea", dr["ProductArea"]);
localHelper.AddParameter("MinStock", dr["MinStock"]);
localHelper.AddParameter("MaxStock", dr["MaxStock"]);
localHelper.AddParameter("UnitID", dr["UnitID"]);
localHelper.AddParameter("StaticUnitID", dr["StaticUnitID"]);
localHelper.AddParameter("StaticUnitCoefficient", dr["StaticUnitCoefficient"]);
localHelper.AddParameter("CheckPermitError", dr["CheckPermitError"]);
localHelper.AddParameter("MaxParkTime", dr["MaxParkTime"]);
localHelper.AddParameter("MinParkTime", dr["MinParkTime"]);
localHelper.AddParameter("DefineDate", dr["DefineDate"]);
localHelper.AddParameter("StandardCode", dr["StandardCode"]);
localHelper.AddParameter("StaticClass", dr["StaticClass"]);
localHelper.AddParameter("IsEqualMaterial", dr["IsEqualMaterial"]);
localHelper.AddParameter("IsPutJar", dr["IsPutJar"]);
localHelper.AddParameter("ERPCode", dr["ERPCode"]);
localHelper.AddParameter("Remark", dr["Remark"]);
localHelper.AddParameter("@DeleteFlag", dr["DeleteFlag"]);
localHelper.ExecuteNonQuery();
}
#endregion BasMaterial
return Result;
}
public int GetRecipeByPlanID(string planid)
{
int Result = 0;
DbHelper localHelper = new DatabaseAction().NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.local);
DbHelper serverHelper = new DatabaseAction().NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Server);
string sqlstr = "SELECT * FROM dbo.PptPlan WHERE PlanID=@PlanID";
localHelper.CommandType = CommandType.Text;
localHelper.CommandText = sqlstr;
localHelper.ClearParameter();
localHelper.AddParameter("@PlanID", planid);
DataTable dt = localHelper.ToDataTable();
string RecipeEquipCode = string.Empty;
string RecipeMaterialCode = string.Empty;
string RecipeVersionID = string.Empty;
foreach (DataRow dr in dt.Rows)
{
RecipeEquipCode = dr["RecipeEquipCode"].ToString();
RecipeMaterialCode = dr["RecipeMaterialCode"].ToString();
RecipeVersionID = dr["RecipeVersionID"].ToString();
break;
}
localHelper.BeginTransaction();
try
{
Result = IniBasMaterial(localHelper, serverHelper, RecipeMaterialCode);
if (Result != 1)
{
throw new Exception(LanguageService.Instance.Read(226));
}
#region PmtRecipe
serverHelper.CommandType = CommandType.Text;
sqlstr = @"SELECT * FROM PmtRecipe WHERE RecipeEquipCode=@RecipeEquipCode AND RecipeMaterialCode=@RecipeMaterialCode AND RecipeVersionID=@RecipeVersionID";
serverHelper.CommandText = sqlstr;
serverHelper.ClearParameter();
serverHelper.AddParameter("@RecipeEquipCode", RecipeEquipCode);
serverHelper.AddParameter("@RecipeMaterialCode", RecipeMaterialCode);
serverHelper.AddParameter("@RecipeVersionID", RecipeVersionID);
dt = serverHelper.ToDataTable();
if (dt.Rows.Count == 0)
{
throw new Exception(LanguageService.Instance.Read(227));
}
#region 删除数据
sqlstr = @"DELETE FROM PmtRecipe WHERE RecipeEquipCode=@RecipeEquipCode AND RecipeMaterialCode=@RecipeMaterialCode AND RecipeVersionID=@RecipeVersionID";
localHelper.CommandText = sqlstr;
localHelper.ClearParameter();
localHelper.AddParameter("@RecipeEquipCode", RecipeEquipCode);
localHelper.AddParameter("@RecipeMaterialCode", RecipeMaterialCode);
localHelper.AddParameter("@RecipeVersionID", RecipeVersionID);
localHelper.ExecuteNonQuery();
sqlstr = @"DELETE FROM PmtRecipeMixing WHERE RecipeMaterialCode=@RecipeMaterialCode AND RecipeVersionID=@RecipeVersionID";
localHelper.CommandText = sqlstr;
localHelper.ClearParameter();
localHelper.AddParameter("@RecipeMaterialCode", RecipeMaterialCode);
localHelper.AddParameter("@RecipeVersionID", RecipeVersionID);
localHelper.ExecuteNonQuery();
sqlstr = @"DELETE FROM PmtRecipeWeight WHERE RecipeMaterialCode=@RecipeMaterialCode AND RecipeVersionID=@RecipeVersionID";
localHelper.CommandText = sqlstr;
localHelper.ClearParameter();
localHelper.AddParameter("@RecipeMaterialCode", RecipeMaterialCode);
localHelper.AddParameter("@RecipeVersionID", RecipeVersionID);
localHelper.ExecuteNonQuery();
#endregion
sqlstr = @"INSERT INTO dbo.PmtRecipe
(RecipeEquipCode ,
RecipeMaterialCode ,
RecipeVersionID ,
RecipeName ,
RecipeType ,
RecipeMaterialName ,
RecipeUserVersion ,
RecipeState ,
RecipeDefineDate ,
RecipeModifyUser ,
RecipeModifyTime ,
LotDoneTime ,
ShelfLotCount ,
LotTotalWeight ,
CarbonRecycleType ,
CarbonRecycleTime ,
OverTempMinTime ,
OverTimeSetTime ,
OverTempSetTemp ,
InPolyMaxTemp ,
InPolyMinTemp ,
InPolySetTime ,
InCarbonSetTime ,
InOilSetTime ,
InPowderSetTime ,
RollSpeedDiff ,
RamPressDiff ,
IsUseAreaTemp ,
SideTemp ,
SideTempDiff ,
RollTemp ,
RollTempDiff ,
DdoorTemp ,
DdoorTempDiff ,
OperCode ,
Remark ,
StartDatetime ,
EndDatetime ,
AuditFlag ,
AuditUser ,
AuditDateTime ,
RecipeDic ,
StayTimeSpand ,
RearchCode ,
CanAuditUser ,
MakeUpTemp ,
NewFlag
) values (
@RecipeEquipCode ,
@RecipeMaterialCode ,
@RecipeVersionID ,
@RecipeName ,
@RecipeType ,
@RecipeMaterialName ,
@RecipeUserVersion ,
@RecipeState ,
@RecipeDefineDate ,
@RecipeModifyUser ,
@RecipeModifyTime ,
@LotDoneTime ,
@ShelfLotCount ,
@LotTotalWeight ,
@CarbonRecycleType ,
@CarbonRecycleTime ,
@OverTempMinTime ,
@OverTimeSetTime ,
@OverTempSetTemp ,
@InPolyMaxTemp ,
@InPolyMinTemp ,
@InPolySetTime ,
@InCarbonSetTime ,
@InOilSetTime ,
@InPowderSetTime ,
@RollSpeedDiff ,
@RamPressDiff ,
@IsUseAreaTemp ,
@SideTemp ,
@SideTempDiff ,
@RollTemp ,
@RollTempDiff ,
@DdoorTemp ,
@DdoorTempDiff ,
@OperCode ,
@Remark ,
@StartDatetime ,
@EndDatetime ,
@AuditFlag ,
@AuditUser ,
@AuditDateTime ,
@RecipeDic ,
@StayTimeSpand ,
@RearchCode ,
@CanAuditUser ,
@MakeUpTemp ,
@NewFlag );SELECT SCOPE_IDENTITY();";
string serverRecipeObjID = string.Empty;
string localRecipeObjID = string.Empty;
foreach (DataRow dr in dt.Rows)
{
serverRecipeObjID = dr["ObjID"].ToString();
localHelper.CommandText = sqlstr;
localHelper.ClearParameter();
localHelper.AddParameter("@RecipeEquipCode", dr["RecipeEquipCode"]);
localHelper.AddParameter("@RecipeMaterialCode", dr["RecipeMaterialCode"]);
localHelper.AddParameter("@RecipeVersionID", dr["RecipeVersionID"]);
localHelper.AddParameter("@RecipeName", dr["RecipeName"]);
localHelper.AddParameter("@RecipeType", dr["RecipeType"]);
localHelper.AddParameter("@RecipeMaterialName", dr["RecipeMaterialName"]);
localHelper.AddParameter("@RecipeUserVersion", dr["RecipeUserVersion"]);
localHelper.AddParameter("@RecipeState", dr["RecipeState"]);
localHelper.AddParameter("@RecipeDefineDate", dr["RecipeDefineDate"]);
localHelper.AddParameter("@RecipeModifyUser", dr["RecipeModifyUser"]);
localHelper.AddParameter("@RecipeModifyTime", dr["RecipeModifyTime"]);
localHelper.AddParameter("@LotDoneTime", dr["LotDoneTime"]);
localHelper.AddParameter("@ShelfLotCount", dr["ShelfLotCount"]);
localHelper.AddParameter("@LotTotalWeight", dr["LotTotalWeight"]);
localHelper.AddParameter("@CarbonRecycleType", dr["CarbonRecycleType"]);
localHelper.AddParameter("@CarbonRecycleTime", dr["CarbonRecycleTime"]);
localHelper.AddParameter("@OverTempMinTime", dr["OverTempMinTime"]);
localHelper.AddParameter("@OverTimeSetTime", dr["OverTimeSetTime"]);
localHelper.AddParameter("@OverTempSetTemp", dr["OverTempSetTemp"]);
localHelper.AddParameter("@InPolyMaxTemp", dr["InPolyMaxTemp"]);
localHelper.AddParameter("@InPolyMinTemp", dr["InPolyMinTemp"]);
localHelper.AddParameter("@InPolySetTime", dr["InPolySetTime"]);
localHelper.AddParameter("@InCarbonSetTime", dr["InCarbonSetTime"]);
localHelper.AddParameter("@InOilSetTime", dr["InOilSetTime"]);
localHelper.AddParameter("@InPowderSetTime", dr["InPowderSetTime"]);
localHelper.AddParameter("@RollSpeedDiff", dr["RollSpeedDiff"]);
localHelper.AddParameter("@RamPressDiff", dr["RamPressDiff"]);
localHelper.AddParameter("@IsUseAreaTemp", dr["IsUseAreaTemp"]);
localHelper.AddParameter("@SideTemp", dr["SideTemp"]);
localHelper.AddParameter("@SideTempDiff", dr["SideTempDiff"]);
localHelper.AddParameter("@RollTemp", dr["RollTemp"]);
localHelper.AddParameter("@RollTempDiff", dr["RollTempDiff"]);
localHelper.AddParameter("@DdoorTemp", dr["DdoorTemp"]);
localHelper.AddParameter("@DdoorTempDiff", dr["DdoorTempDiff"]);
localHelper.AddParameter("@OperCode", dr["OperCode"]);
localHelper.AddParameter("@Remark", dr["Remark"]);
localHelper.AddParameter("@StartDatetime", dr["StartDatetime"]);
localHelper.AddParameter("@EndDatetime", dr["EndDatetime"]);
localHelper.AddParameter("@AuditFlag", dr["AuditFlag"]);
localHelper.AddParameter("@AuditUser", dr["AuditUser"]);
localHelper.AddParameter("@AuditDateTime", dr["AuditDateTime"]);
localHelper.AddParameter("@RecipeDic", dr["RecipeDic"]);
localHelper.AddParameter("@StayTimeSpand", dr["StayTimeSpand"]);
localHelper.AddParameter("@RearchCode", dr["RearchCode"]);
localHelper.AddParameter("@CanAuditUser", dr["CanAuditUser"]);
localHelper.AddParameter("@MakeUpTemp", dr["MakeUpTemp"]);
localHelper.AddParameter("@NewFlag", dr["NewFlag"]);
localRecipeObjID = localHelper.ToScalar().ToString();
break;
}
#endregion
#region PmtRecipeMixing
serverHelper.CommandType = CommandType.Text;
sqlstr = @"SELECT * FROM PmtRecipeMixing WHERE RecipeObjID=@RecipeObjID";
serverHelper.CommandText = sqlstr;
serverHelper.ClearParameter();
serverHelper.AddParameter("@RecipeObjID", serverRecipeObjID);
dt = serverHelper.ToDataTable();
if (dt.Rows.Count == 0)
{
throw new Exception(LanguageService.Instance.Read(228));
}
sqlstr = @"INSERT INTO dbo.PmtRecipeMixing
( RecipeObjID ,
RecipeMaterialCode ,
RecipeVersionID ,
MixingStep ,
TermCode ,
MixingTime ,
MixingTemp ,
MixingEnergy ,
MixingPower ,
MixingPress ,
MixingSpeed ,
ActionCode
) values (
@RecipeObjID ,
@RecipeMaterialCode ,
@RecipeVersionID ,
@MixingStep ,
@TermCode ,
@MixingTime ,
@MixingTemp ,
@MixingEnergy ,
@MixingPower ,
@MixingPress ,
@MixingSpeed ,
@ActionCode )";
foreach (DataRow dr in dt.Rows)
{
localHelper.CommandText = sqlstr;
localHelper.ClearParameter();
localHelper.AddParameter("@RecipeObjID", localRecipeObjID);
localHelper.AddParameter("@RecipeMaterialCode", dr["RecipeMaterialCode"]);
localHelper.AddParameter("@RecipeVersionID", dr["RecipeVersionID"]);
localHelper.AddParameter("@MixingStep", dr["MixingStep"]);
localHelper.AddParameter("@TermCode", dr["TermCode"]);
localHelper.AddParameter("@MixingTime", dr["MixingTime"]);
localHelper.AddParameter("@MixingTemp", dr["MixingTemp"]);
localHelper.AddParameter("@MixingEnergy", dr["MixingEnergy"]);
localHelper.AddParameter("@MixingPower", dr["MixingPower"]);
localHelper.AddParameter("@MixingPress", dr["MixingPress"]);
localHelper.AddParameter("@MixingSpeed", dr["MixingSpeed"]);
localHelper.AddParameter("@ActionCode", dr["ActionCode"]);
localHelper.ExecuteNonQuery();
}
#endregion
#region PmtRecipeWeight
serverHelper.CommandType = CommandType.Text;
sqlstr = @"SELECT * FROM PmtRecipeWeight WHERE RecipeObjID=@RecipeObjID";
serverHelper.CommandText = sqlstr;
serverHelper.ClearParameter();
serverHelper.AddParameter("@RecipeObjID", serverRecipeObjID);
dt = serverHelper.ToDataTable();
if (dt.Rows.Count == 0)
{
throw new Exception(LanguageService.Instance.Read(229));
}
sqlstr = @"INSERT INTO dbo.PmtRecipeWeight
( RecipeObjID ,
RecipeMaterialCode ,
RecipeVersionID ,
WeightID ,
WeightType ,
ScaleID ,
ActCode ,
MaterialCode ,
MaterialName ,
SetWeight ,
OldSetWeight ,
ErrorAllow
) values (
@RecipeObjID ,
@RecipeMaterialCode ,
@RecipeVersionID ,
@WeightID ,
@WeightType ,
@ScaleID ,
@ActCode ,
@MaterialCode ,
@MaterialName ,
@SetWeight ,
@OldSetWeight ,
@ErrorAllow )";
foreach (DataRow dr in dt.Rows)
{
localHelper.CommandText = sqlstr;
localHelper.ClearParameter();
localHelper.AddParameter("@RecipeObjID", localRecipeObjID);
localHelper.AddParameter("@RecipeMaterialCode", dr["RecipeMaterialCode"]);
localHelper.AddParameter("@RecipeVersionID", dr["RecipeVersionID"]);
localHelper.AddParameter("@WeightID", dr["WeightID"]);
localHelper.AddParameter("@WeightType", dr["WeightType"]);
localHelper.AddParameter("@ScaleID", dr["ScaleID"]);
localHelper.AddParameter("@ActCode", dr["ActCode"]);
localHelper.AddParameter("@MaterialCode", dr["MaterialCode"]);
localHelper.AddParameter("@MaterialName", dr["MaterialName"]);
localHelper.AddParameter("@SetWeight", dr["SetWeight"]);
localHelper.AddParameter("@OldSetWeight", dr["OldSetWeight"]);
localHelper.AddParameter("@ErrorAllow", dr["ErrorAllow"]);
localHelper.ExecuteNonQuery();
IniBasMaterial(localHelper, serverHelper, dr["MaterialCode"].ToString());
}
#endregion
localHelper.CommitTransaction();
Result = 1;
}
catch (Exception ex)
{
localHelper.RollbackTransaction();
Result = -1;
}
finally
{
localHelper.CloseConnection();
}
return Result;
}
}
public class PLCRecipe
{
private DbHelper localHelper = new DatabaseAction().NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.local);
public int SendRecipe(string RecipeObjID)
{
int iResult = 0;
localHelper.CommandType = CommandType.Text;
localHelper.CommandText = "UPDATE SysKeyValue SET ssValue = " + RecipeObjID + " WHERE ssKey='RecipeID'";
localHelper.ExecuteNonQuery();
localHelper.CommandText = "UPDATE SysKeyValue SET ssValue = t.RecipeMaterialName FROM dbo.PmtRecipe t WHERE ssKey='RecipeMixingName' AND t.ObjID=" + RecipeObjID;
localHelper.ExecuteNonQuery();
localHelper.CommandText = "SELECT ssRemark FROM dbo.SysKeyValue WHERE ssKey='RecipeMixing'";
string sqlstr = localHelper.ToScalar().ToString();
sqlstr = string.Format(sqlstr, RecipeObjID);
localHelper.CommandText = sqlstr;
DataTable dt = localHelper.ToDataTable();
dt.TableName = "tableName";
string xml = SerializeDataTable(dt);
localHelper.CommandText = "INSERT INTO dbo.PmtRecipeMixingXml(RecipeID, DataXml) VALUES (@RecipeID,@DataXml);SELECT SCOPE_IDENTITY();";
localHelper.AddParameter("@RecipeID", RecipeObjID);
localHelper.AddParameter("@DataXml", xml);
sqlstr = localHelper.ToScalar().ToString();
localHelper.CommandText = "UPDATE SysKeyValue SET ssValue =@ssValue WHERE ssKey='RecipeMixing'";
localHelper.ClearParameter();
localHelper.AddParameter("@ssValue", sqlstr);
localHelper.ExecuteNonQuery();
return iResult;
}
private string SerializeDataTable(DataTable dt)
{
StringWriter strWriter = new StringWriter();
XmlSerializer serializer = new XmlSerializer(typeof(DataTable));
serializer.Serialize(strWriter, dt);
return strWriter.ToString();
}
private string GetRecipeObjID(string planid)
{
string Result = string.Empty;
localHelper.CommandType = CommandType.Text;
localHelper.CommandText = @"SELECT t2.ObjID FROM dbo.PptPlan t1
INNER JOIN dbo.PmtRecipe t2 ON t1.RecipeEquipCode=t2.RecipeEquipCode
AND t2.RecipeMaterialCode=t2.RecipeMaterialCode AND t1.RecipeVersionID=t2.RecipeVersionID
WHERE t1.PlanID='" + planid + "'";
return localHelper.ToScalar().ToString();
}
public int SendPlan(string planid)
{
int iResult = 0;
string recipeid = GetRecipeObjID(planid);
SendRecipe(recipeid);
new FeedingPlc.RecipeToPlc().Run(null);
return iResult;
}
}
}