using System; using System.Collections.Generic; using System.Linq; using System.Text; using QMAPP.DAL; using QMFrameWork.Data; using QMAPP.FJC.Entity.FIS; using System.Data; namespace QMAPP.FJC.DAL.FIS { public class FISPhraseDAL : BaseDAL { public string GetMESModulCode(string codeprefix, string positioncode) { StringBuilder sql = new StringBuilder(); sql.AppendLine("SELECT MAX(MESModul" + positioncode + ") "); sql.AppendLine(" FROM T_FIS_ASSEMBLY "); sql.AppendLine(" WHERE AsmSetCode=@codeprefix "); sql.AppendLine(" AND Active='1' "); sql.AppendLine(" AND IsDeleted='0' "); using (IDataSession session = AppDataFactory.CreateMainSession()) { List parameters = new List(); parameters.Add(new DataParameter { ParameterName = "codeprefix", Value = codeprefix }); var MESModul= session.ExecuteSqlScalar(sql.ToString(),parameters.ToArray()); if (MESModul != null) { return MESModul.ToString(); } return ""; } } public FISPhraseBook GetFisPhraseBook(string assymaterialcode, string positioncode) { string OptionColumn = "OptionDesc1"; string ModulColumn = "MESModulFL"; switch (positioncode) { case "LF": case "FL": { OptionColumn = "OptionDesc1"; ModulColumn = "MESModulFL"; break; } case "RF": case "FR": { OptionColumn = "OptionDesc2"; ModulColumn = "MESModulFR"; break; } case "LR": case "RL": { OptionColumn = "OptionDesc3"; ModulColumn = "MESModulRL"; break; } case "RR": { OptionColumn = "OptionDesc4"; ModulColumn = "MESModulRR"; break; } } StringBuilder sql = new StringBuilder(); sql.AppendLine("SELECT A.Name"); sql.AppendLine(" ,B.Text"); sql.AppendLine(" ,B.Class"); sql.AppendLine(" ,A.CarModel"); sql.AppendLine(" FROM T_FIS_ASSEMBLY AS A"); sql.AppendLine(" LEFT JOIN T_FIS_PHRASEBOOK AS B"); sql.AppendLine(" ON A." + OptionColumn + "=B.Code"); sql.AppendLine(" WHERE "+ModulColumn+" =@assymaterialcode"); using (IDataSession session = AppDataFactory.CreateMainSession()) { List parameters = new List(); parameters.Add(new DataParameter { ParameterName = "assymaterialcode", Value = assymaterialcode }); return session.Get(sql.ToString(), parameters.ToArray()); } } public List GetAssemblyList(FISAssembly condation) { List parameters = new List(); StringBuilder sql = new StringBuilder(); sql.AppendLine("SELECT FA.Id "); sql.AppendLine(" ,FA.Name "); sql.AppendLine(" ,FA.[Description] "); sql.AppendLine(" ,FA.AsmSetCode "); sql.AppendLine(" ,FA.ProjectCode "); sql.AppendLine(" ,FA.CarModel "); sql.AppendLine(" ,FA.Active "); sql.AppendLine(" ,FA.IsDeleted "); sql.AppendLine(" ,FA.MESModulFL "); sql.AppendLine(" ,FLM.MATERIAL_NAME AS [MESModulFL_NAME] "); sql.AppendLine(" ,FA.MESModulFR "); sql.AppendLine(" ,FRM.MATERIAL_NAME AS [MESModulFR_NAME] "); sql.AppendLine(" ,FA.MESModulRL "); sql.AppendLine(" ,RLM.MATERIAL_NAME AS [MESModulRL_NAME] "); sql.AppendLine(" ,FA.MESModulRR "); sql.AppendLine(" ,RRM.MATERIAL_NAME AS [MESModulRR_NAME] "); sql.AppendLine(" FROM T_FIS_ASSEMBLY AS FA "); sql.AppendLine(" LEFT JOIN T_MD_MATERIAL AS FLM "); sql.AppendLine(" ON FLM.MATERIAL_CODE=FA.MESModulFL "); sql.AppendLine(" LEFT JOIN T_MD_MATERIAL AS FRM "); sql.AppendLine(" ON FRM.MATERIAL_CODE=FA.MESModulFR "); sql.AppendLine(" LEFT JOIN T_MD_MATERIAL AS RLM "); sql.AppendLine(" ON RLM.MATERIAL_CODE=FA.MESModulRL "); sql.AppendLine(" LEFT JOIN T_MD_MATERIAL AS RRM "); sql.AppendLine(" ON RRM.MATERIAL_CODE=FA.MESModulRR "); sql.AppendLine(" WHERE 1=1 "); if (!string.IsNullOrWhiteSpace(condation.AsmSetCode)) { sql.AppendLine(string.Format("AND FA.AsmSetCode LIKE '{0}%'", condation.AsmSetCode)); } if (!string.IsNullOrWhiteSpace(condation.ProjectCode)) { sql.AppendLine(string.Format("AND FA.ProjectCode LIKE '{0}%'", condation.ProjectCode)); } if (!string.IsNullOrWhiteSpace(condation.CarModel)) { sql.AppendLine(string.Format("AND FA.CarModel LIKE '{0}%'", condation.CarModel)); } //sql.AppendLine(" AND Active='1' "); //sql.AppendLine(" AND IsDeleted='0' "); sql.AppendLine(" ORDER BY Id "); using (IDataSession session = AppDataFactory.CreateMainSession()) { return session.GetList(sql.ToString(), parameters.ToArray()).ToList(); } } public FISAssembly GetAssembly(FISAssembly condation) { List parameters = new List(); StringBuilder sql = new StringBuilder(); sql.AppendLine("SELECT TOP 1 FA.Id "); sql.AppendLine(" ,FA.Name "); sql.AppendLine(" ,FA.[Description] "); sql.AppendLine(" ,FA.AsmSetCode "); sql.AppendLine(" ,FA.ProjectCode "); sql.AppendLine(" ,FA.CarModel "); sql.AppendLine(" ,FA.Active "); sql.AppendLine(" ,FA.IsDeleted "); sql.AppendLine(" ,FA.MESModulFL "); sql.AppendLine(" ,FLM.MATERIAL_NAME AS [MESModulFL_NAME] "); sql.AppendLine(" ,FA.MESModulFR "); sql.AppendLine(" ,FRM.MATERIAL_NAME AS [MESModulFR_NAME] "); sql.AppendLine(" ,FA.MESModulRL "); sql.AppendLine(" ,RLM.MATERIAL_NAME AS [MESModulRL_NAME] "); sql.AppendLine(" ,FA.MESModulRR "); sql.AppendLine(" ,RRM.MATERIAL_NAME AS [MESModulRR_NAME] "); sql.AppendLine(" FROM T_FIS_ASSEMBLY AS FA "); sql.AppendLine(" LEFT JOIN T_MD_MATERIAL AS FLM "); sql.AppendLine(" ON FLM.MATERIAL_CODE=FA.MESModulFL "); sql.AppendLine(" LEFT JOIN T_MD_MATERIAL AS FRM "); sql.AppendLine(" ON FRM.MATERIAL_CODE=FA.MESModulFR "); sql.AppendLine(" LEFT JOIN T_MD_MATERIAL AS RLM "); sql.AppendLine(" ON RLM.MATERIAL_CODE=FA.MESModulRL "); sql.AppendLine(" LEFT JOIN T_MD_MATERIAL AS RRM "); sql.AppendLine(" ON RRM.MATERIAL_CODE=FA.MESModulRR "); sql.AppendLine(" WHERE 1=1 "); if (!string.IsNullOrWhiteSpace(condation.Id)) { sql.AppendLine("AND FA.Id =@fId"); parameters.Add(new DataParameter("fId",condation.Id)); } if (!string.IsNullOrWhiteSpace(condation.AsmSetCode)) { sql.AppendLine(string.Format("AND FA.AsmSetCode LIKE '{0}%'", condation.AsmSetCode)); } if (!string.IsNullOrWhiteSpace(condation.ProjectCode)) { sql.AppendLine(string.Format("AND FA.ProjectCode LIKE '{0}%'", condation.ProjectCode)); } if (!string.IsNullOrWhiteSpace(condation.CarModel)) { sql.AppendLine(string.Format("AND FA.CarModel LIKE '{0}%'", condation.CarModel)); } //sql.AppendLine(" AND Active='1' "); //sql.AppendLine(" AND IsDeleted='0' "); sql.AppendLine(" ORDER BY Id "); using (IDataSession session = AppDataFactory.CreateMainSession()) { return session.Get(sql.ToString(), parameters.ToArray()); } } public int UpdateAssembly(FISAssembly Entity) { List parameters = new List(); StringBuilder sql = new StringBuilder(); sql.AppendLine("UPDATE T_FIS_ASSEMBLY "); sql.AppendLine(" SET MESModulFL=@MESModulFL "); sql.AppendLine(" ,MESModulFR=@MESModulFR "); sql.AppendLine(" ,MESModulRL=@MESModulRL "); sql.AppendLine(" ,MESModulRR=@MESModulRR "); sql.AppendLine(" WHERE Id=@fId "); parameters.Add(new DataParameter("fId", Entity.Id)); parameters.Add(new DataParameter("MESModulFL", Entity.MESModulFL)); parameters.Add(new DataParameter("MESModulFR", Entity.MESModulFR)); parameters.Add(new DataParameter("MESModulRL", Entity.MESModulRL)); parameters.Add(new DataParameter("MESModulRR", Entity.MESModulRR)); using (IDataSession session = AppDataFactory.CreateMainSession()) { return session.ExecuteSql(sql.ToString(), parameters.ToArray()); } } public int AssemblySync() { StringBuilder sqlmes = new StringBuilder(); sqlmes.AppendLine("SELECT * FROM [T_FIS_ASSEMBLY] "); StringBuilder sqlfis = new StringBuilder(); sqlfis.AppendLine("SELECT [Id] "); sqlfis.AppendLine(" ,[Name] "); sqlfis.AppendLine(" ,[Description] "); sqlfis.AppendLine(" ,[CarModel] "); sqlfis.AppendLine(" ,[ProjectCode] "); sqlfis.AppendLine(" ,[BaseSet] "); sqlfis.AppendLine(" ,[Color] "); sqlfis.AppendLine(" ,[Cover] "); sqlfis.AppendLine(" ,[SetOption] "); sqlfis.AppendLine(" ,[OptionDesc1] "); sqlfis.AppendLine(" ,[OptionDesc2] "); sqlfis.AppendLine(" ,[OptionDesc3] "); sqlfis.AppendLine(" ,[OptionDesc4] "); sqlfis.AppendLine(" ,[OptionDesc5] "); sqlfis.AppendLine(" ,[AsmSetCode] "); sqlfis.AppendLine(" ,[Active] "); sqlfis.AppendLine(" ,[LegendColor] "); sqlfis.AppendLine(" ,[LegendText] "); sqlfis.AppendLine(" ,[ContractNo] "); sqlfis.AppendLine(" ,[IsDeleted] "); sqlfis.AppendLine(" FROM [Assembly] "); List parameters = new List(); try { DataTable tbSourceAssembly = null; using (IDataSession sessionfis = AppDataFactory.CreateSession("CDDPFISDB")) { tbSourceAssembly = sessionfis.GetTableWithSchema(sqlfis.ToString(), "Assembly", parameters.ToArray()); } if (tbSourceAssembly != null && tbSourceAssembly.Rows.Count > 0) { using (IDataSession sessionmes = AppDataFactory.CreateMainSession()) { var tbAssembly = sessionmes.GetTableWithSchema(sqlmes.ToString(), "T_FIS_ASSEMBLY", parameters.ToArray()); if (tbAssembly != null) { DataTableSync("Id",tbSourceAssembly, tbAssembly); sessionmes.UpdateTable(tbAssembly); } } } return 0; } catch(Exception ex) { throw ex; } } public int AssemblyModuleSync() { StringBuilder sqlmes = new StringBuilder(); sqlmes.AppendLine("SELECT * FROM [T_FIS_ASSEMBLYMODULE] "); StringBuilder sqlfis = new StringBuilder(); sqlfis.AppendLine("SELECT * FROM [AssemblyModule] "); List parameters = new List(); try { DataTable tbSource = null; using (IDataSession sessionfis = AppDataFactory.CreateSession("CDDPFISDB")) { tbSource = sessionfis.GetTableWithSchema(sqlfis.ToString(), "AssemblyModule", parameters.ToArray()); } if (tbSource != null && tbSource.Rows.Count > 0) { using (IDataSession sessionmes = AppDataFactory.CreateMainSession()) { var tbTarget = sessionmes.GetTableWithSchema(sqlmes.ToString(), "T_FIS_ASSEMBLYMODULE", parameters.ToArray()); if (tbTarget != null) { DataTableSync("Id", tbSource, tbTarget); sessionmes.UpdateTable(tbTarget); } } } return 0; } catch (Exception ex) { throw ex; } } public int PhraseBookSync() { StringBuilder sqlmes = new StringBuilder(); sqlmes.AppendLine("SELECT * FROM [T_FIS_PHRASEBOOK] "); StringBuilder sqlfis = new StringBuilder(); sqlfis.AppendLine("SELECT * FROM [PhraseBook] "); List parameters = new List(); try { DataTable tbSource = null; using (IDataSession sessionfis = AppDataFactory.CreateSession("CDDPFISDB")) { tbSource = sessionfis.GetTableWithSchema(sqlfis.ToString(), "PhraseBook", parameters.ToArray()); } if (tbSource != null && tbSource.Rows.Count > 0) { using (IDataSession sessionmes = AppDataFactory.CreateMainSession()) { var tbTarget = sessionmes.GetTableWithSchema(sqlmes.ToString(), "T_FIS_PHRASEBOOK", parameters.ToArray()); if (tbTarget != null) { DataTableSync("Id", tbSource, tbTarget); sessionmes.UpdateTable(tbTarget); } } } return 0; } catch (Exception ex) { throw ex; } } /// /// 从源数据表同步数据到目标表 /// 目标表需要原表具有相同的主键,并且包含源数据表的全部字段 /// /// 主键名 /// 源数据表 /// 目标表 private static void DataTableSync(string keyname,DataTable tbSource, DataTable tbTarget) { foreach (DataRow row in tbTarget.Rows) { DataRow sourcerow = tbSource.Rows.Find(row[keyname]); if (sourcerow != null) { foreach (DataColumn column in tbSource.Columns) { if (!row[column.ColumnName].Equals(sourcerow[column.ColumnName])) { row[column.ColumnName] = sourcerow[column.ColumnName]; } } } else { row.Delete(); } } var newrow = from DataRow row in tbSource.Rows where !tbTarget.Rows.Contains(row[keyname]) select row; foreach (var n in newrow) { var row = tbTarget.NewRow(); foreach (DataColumn c in tbSource.Columns) { row[c.ColumnName] = n[c.ColumnName]; } tbTarget.Rows.Add(row); } } } }