using DBUtility; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Reflection; using System.Web; namespace PaintingScreen.Handler { public class StationPlanFunction { public static DataTable GetTableContent() { DataTable res = new DataTable(); try { // string sql = @" // SELECT [StationID] // ,[StationNo] // INTO #station // FROM tb_Station // WHERE StationNo LIKE 'IM%' // ORDER BY StationNo // // // SELECT a.InjectionPlanID,a.StationID,b.StationNo,a.StockNo,a.PlanCount,a.BeginTime,a.EndTime,a.PartNo // INTO #temp // FROM tb_InjectionPlan a // RIGHT JOIN #station b // ON a.StationID = b.StationID // WHERE a.IsFinish IS NULL OR a.IsFinish = 0 // ORDER BY b.StationNo,a.BeginTime // // SELECT aa.StationNo,ff.ModelName,cc.ProductName,aa.PlanCount,aa.BeginTime,aa.EndTime // FROM #temp aa // JOIN // ( // SELECT StationNo,MIN(BeginTime) BeginTime FROM #temp GROUP BY StationNo // ) bb // ON aa.StationNo = bb.StationNo AND aa.BeginTime = bb.BeginTime // LEFT JOIN // ( // SELECT StockNo,PartNo,ProductName FROM dbo.tb_Product // ) cc // ON aa.StockNo = cc.StockNo OR aa.PartNo = cc.PartNo // LEFT JOIN tb_Product dd // ON aa.stockNo = dd.stockNo // LEFT JOIN tb_Model_Product ee // ON dd.ProductID = ee.ProuctID // LEFT JOIN tb_ModelInfo ff // ON ee.ModelID = ff.ID // // // // DROP TABLE #station; // DROP TABLE #temp; // "; string sql = @" SELECT [StationID] ,[StationNo] INTO #station FROM tb_Station WHERE StationNo LIKE 'IM%' ORDER BY StationNo SELECT a.InjectionPlanID,a.StationID,b.StationNo,a.StockNo,a.PlanCount,a.BeginTime,a.EndTime,a.PartNo INTO #temp FROM tb_InjectionPlan a RIGHT JOIN #station b ON a.StationID = b.StationID WHERE a.IsFinish IS NULL OR a.IsFinish = 0 ORDER BY b.StationNo,a.BeginTime SELECT * INTO #nextPlanTemp FROM #temp WHERE StationNo IN ( SELECT StationNo FROM #temp GROUP BY StationNo HAVING COUNT(0) > 1 ) ORDER BY StationNo,BeginTime SELECT * into #nptmp FROM #nextPlanTemp WHERE BeginTime IN ( SELECT MAX(beginTime) beginTime FROM #nextPlanTemp GROUP BY StationNo ) SELECT np.StationNo, tp.ProductName INTO #nextPlan FROM #nptmp np JOIN tb_Product tp ON np.stockNo = tp.stockNo SELECT aa.StationNo,ff.ModelName,cc.ProductName,aa.PlanCount,aa.BeginTime,aa.EndTime,gg.ProductName nextPlan FROM #temp aa JOIN ( SELECT StationNo,MIN(BeginTime) BeginTime FROM #temp GROUP BY StationNo ) bb ON aa.StationNo = bb.StationNo AND aa.BeginTime = bb.BeginTime LEFT JOIN ( SELECT StockNo,PartNo,ProductName FROM dbo.tb_Product ) cc ON aa.StockNo = cc.StockNo OR aa.PartNo = cc.PartNo LEFT JOIN tb_Product dd ON aa.stockNo = dd.stockNo LEFT JOIN tb_Model_Product ee ON dd.ProductID = ee.ProuctID LEFT JOIN tb_ModelInfo ff ON ee.ModelID = ff.ID LEFT JOIN #nextPlan gg ON gg.StationNo = aa.StationNo DROP TABLE #station; DROP TABLE #temp; DROP TABLE #nextPlanTemp; DROP TABLE #nptmp; DROP TABLE #nextPlan; "; res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); } catch (Exception ex) { LogHelper.WriteLogManager(ex); LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); } return res; } public static Mould GetMouldInfo(string mouleNo) { Mould mould = new Mould(); try { string sql = @" SELECT a.ModelName,a.ModelNo,a.PermanentAssetsNo,a.Tonnage ,a.ServiceLife,a.Supplier Supplier_a,a.PartWeight,a.InjectionPeriod ,a.LocatingRingSize,a.OutForm ,a.ModelWeight,a.RunnerForm,a.ModelCavityNo,a.ModelSize ,b.Purpose,b.State,b.Supplier,b.AddTime,b.Remarks FROM tb_ModelInfo a JOIN tb_Model_Update b ON a.ID = b.ModelID WHERE a.ModelNo = '" + mouleNo + @"' "; DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); if (dt != null && dt.Rows.Count > 0) { mould = (Mould)StationPlanFunction.SetModelValue(mould, dt); #region 重复部分赋值 for (int i = 0; i < 6; i++) { if (i < dt.Rows.Count) { for (int j = 0; j < dt.Columns.Count; j++) { Type t = typeof(Mould); PropertyInfo[] props = t.GetProperties(); foreach (PropertyInfo prop in props) { if (prop.Name == dt.Columns[j].ColumnName + (i + 1)) { prop.SetValue(mould, dt.Rows[i][j].ToString()); } } } } } #endregion #region 遍历mould,为null的赋值为"" Type tt = typeof(Mould); PropertyInfo[] tprops = tt.GetProperties(); foreach (PropertyInfo prop in tprops) { if (prop.GetValue(mould) == null) { prop.SetValue(mould, ""); } } #endregion } } catch (Exception ex) { LogHelper.WriteLogManager(ex); LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); } return mould; } public static T SetModelValue(Object obj, DataTable dt) { T model = (T)obj; if (dt != null && dt.Rows.Count > 0) { Type t = typeof(T); PropertyInfo[] properties = t.GetProperties(); DataRow dr = dt.Rows[0]; foreach (PropertyInfo property in properties) { for (int j = 0; j < dt.Columns.Count; j++) { if (property.Name == dt.Columns[j].ColumnName) { property.SetValue(model, dr[j].ToString()); } } } } return model; } } public class Mould { public string ModelName { get; set; } public string ModelNo { get; set; } public string PermanentAssetsNo { get; set; } public string Tonnage { get; set; } public string ServiceLife { get; set; } public string Supplier_a { get; set; } public string PartWeight { get; set; } public string InjectionPeriod { get; set; } public string LocatingRingSize { get; set; } public string OutForm { get; set; } public string ModelWeight { get; set; } public string RunnerForm { get; set; } public string ModelCavityNo { get; set; } public string ModelSize { get; set; } public string Purpose1 { get; set; } public string State1 { get; set; } public string Supplier1 { get; set; } public string AddTime1 { get; set; } public string Remarks1 { get; set; } public string Purpose2 { get; set; } public string State2 { get; set; } public string Supplier2 { get; set; } public string AddTime2 { get; set; } public string Remarks2 { get; set; } public string Purpose3 { get; set; } public string State3 { get; set; } public string Supplier3 { get; set; } public string AddTime3 { get; set; } public string Remarks3 { get; set; } public string Purpose4 { get; set; } public string State4 { get; set; } public string Supplier4 { get; set; } public string AddTime4 { get; set; } public string Remarks4 { get; set; } public string Purpose5 { get; set; } public string State5 { get; set; } public string Supplier5 { get; set; } public string AddTime5 { get; set; } public string Remarks5 { get; set; } public string Purpose6 { get; set; } public string State6 { get; set; } public string Supplier6 { get; set; } public string AddTime6 { get; set; } public string Remarks6 { get; set; } } }