using System; using System.Collections.Generic; using System.Linq; using System.Text; using Mesnac.Action.Base; using Mesnac.Codd.Session; using Mesnac.Basic; using System.Data; namespace Mesnac.Action.Default.SynchroData { #region 同步班组 /// /// 同步班组 /// public class ClassSynchronous : DatabaseAction, IAction { public void Run(RuntimeParameter runtime) { base.RunIni(runtime); if (base.NetType == NetTypes.Local) { base.LogError("{班组维护} 此系统版本为单机版,不能进行数据同步..."); ShowMsg(base.Language(32)); return; } DatabaseAction action = new DatabaseAction(); ///////本地、服务器连接信息 DataSourceItem Sdsi = action.GetDataSourceItem(Mesnac.Basic.DataSourceFactory.MCDbType.Server); DataSourceItem Ldsi = action.GetDataSourceItem(Mesnac.Basic.DataSourceFactory.MCDbType.Local); //////测试服务器数据库连接 DbHelper dbHelper; dbHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Server); if (dbHelper == null) { action.LogError("连接服务器数据库失败..."); ShowMsg(base.Language(33)); return; } /////本地数据库 DbHelper dbHelperlocal; dbHelperlocal = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local); if (dbHelperlocal == null) { action.LogError("连接本地数据库失败..."); ShowMsg(base.Language(34)); return; } ///////获取服务器班组信息 StringBuilder serversqlstr = new StringBuilder("select ObjID, ClassName, UseFlag from dbo.PptClass"); dbHelper.CommandText = serversqlstr.ToString(); DataTable dt = dbHelper.ToDataTable(); StringBuilder loacdsqlstr = new StringBuilder("Begin tran truncate table PptClass set IDENTITY_INSERT PPTCLASS on "); for (int i = 0; i < dt.Rows.Count; i++) { loacdsqlstr.AppendFormat("insert into PptClass (ObjID, ClassName, UseFlag) values ({0},'{1}','{2}') ", dt.Rows[i]["ObjID"].ToString(), dt.Rows[i]["ClassName"].ToString(), dt.Rows[i]["UseFlag"].ToString()); } loacdsqlstr.Append(" set IDENTITY_INSERT PPTCLASS OFF; if @@ERROR<>0 rollback tran else commit tran"); dbHelperlocal.ClearParameter(); dbHelperlocal.CommandType = CommandType.Text; dbHelperlocal.CommandText = loacdsqlstr.ToString(); dbHelperlocal.ExecuteNonQuery(); ShowMsg(base.Language(20)); } } #endregion #region 同步班次 /// /// 同步班次 /// public class ShiftSynchronous : DatabaseAction, IAction { public void Run(RuntimeParameter runtime) { base.RunIni(runtime); if (base.NetType== NetTypes.Local) { base.LogError("{班次维护} 此系统版本为单机版,不能进行数据同步..."); ShowMsg(base.Language(32)); return; } DatabaseAction action = new DatabaseAction(); ///////本地、服务器连接信息 DataSourceItem Sdsi = action.GetDataSourceItem(Mesnac.Basic.DataSourceFactory.MCDbType.Server); DataSourceItem Ldsi = action.GetDataSourceItem(Mesnac.Basic.DataSourceFactory.MCDbType.Local); //////测试服务器数据库连接 DbHelper dbHelper; dbHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Server); if (dbHelper == null) { action.LogError("连接服务器数据库失败..."); ShowMsg(base.Language(33)); return; } /////本地数据库 DbHelper dbHelperlocal; dbHelperlocal = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local); if (dbHelperlocal == null) { action.LogError("本地连接数据库失败..."); ShowMsg(base.Language(34)); return; } ///////获取服务器班次信息 StringBuilder serversqlstr = new StringBuilder("select ObjID, ShiftName, UseFlag from dbo.PptShift"); dbHelper.CommandText = serversqlstr.ToString(); DataTable dt = dbHelper.ToDataTable(); StringBuilder loacdsqlstr = new StringBuilder("Begin tran truncate table PptShift set IDENTITY_INSERT PptShift on "); for (int i = 0; i < dt.Rows.Count; i++) { loacdsqlstr.AppendFormat("insert into PptShift (ObjID, ShiftName, UseFlag) values ({0},'{1}','{2}') ", dt.Rows[i]["ObjID"].ToString(), dt.Rows[i]["ShiftName"].ToString(), dt.Rows[i]["UseFlag"].ToString()); } loacdsqlstr.Append(" set IDENTITY_INSERT PptShift OFF; if @@ERROR<>0 rollback tran else commit tran"); dbHelperlocal.ClearParameter(); dbHelperlocal.CommandType = CommandType.Text; dbHelperlocal.CommandText = loacdsqlstr.ToString(); dbHelperlocal.ExecuteNonQuery(); ShowMsg(base.Language(20)); } } #endregion #region 同步物料 public class MaterialSynchronous : DatabaseAction, IAction { public void Run(RuntimeParameter runtime) { if (base.NetType == NetTypes.Local) { base.LogError("{物料维护} 此系统版本为单机版,不能进行数据同步..."); ShowMsg(base.Language(32)); return; } DatabaseAction action = new DatabaseAction(); ///////本地、服务器连接信息 DataSourceItem Sdsi = action.GetDataSourceItem(Mesnac.Basic.DataSourceFactory.MCDbType.Server); DataSourceItem Ldsi = action.GetDataSourceItem(Mesnac.Basic.DataSourceFactory.MCDbType.Local); //////测试服务器数据库连接 DbHelper dbHelper; dbHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Server); if (dbHelper == null) { action.LogError("连接服务器数据库失败..."); ShowMsg(base.Language(33)); return; } /////本地数据库 DbHelper dbHelperlocal; dbHelperlocal = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local); if (dbHelperlocal == null) { action.LogError("本地连接数据库失败..."); ShowMsg(base.Language(34)); return; } dbHelperlocal.ClearParameter(); dbHelperlocal.CommandType = CommandType.Text; StringBuilder sqlstr = new StringBuilder(); string ServerStr = string.Empty; if (Sdsi.Server != Ldsi.Server) { ServerStr = "[" + Sdsi.Server + "]."; } sqlstr.AppendFormat(@"BEGIN TRAN truncate table BasMaterial insert into BasMaterial (MaterialCode, MajorTypeID, MinorTypeID, RubCode, MaterialName, StaticClass , IsEqualMaterial, IsPutJar, ERPCode, Remark, DeleteFlag) select distinct PmtRecipeWeight.MaterialCode, MajorTypeID, MinorTypeID, RubCode, PmtRecipeWeight.MaterialName, StaticClass, IsEqualMaterial, IsPutJar, ERPCode, Remark, DeleteFlag from {0}[{1}].DBO.PmtRecipeWeight,BasMaterial where PmtRecipeWeight.RecipeEquipCode='{2}' and PmtRecipeWeight.MaterialCode=BasMaterial.MaterialCode IF @@ERROR<>0 ROLLBACK TRAN ELSE COMMIT TRAN", ServerStr, Sdsi.Database,base.CurrEquipCode); dbHelperlocal.CommandText = sqlstr.ToString(); dbHelperlocal.ExecuteNonQuery(); ShowMsg(base.Language(20)); } } #endregion }