public ReqRpt028Runner(Db2ConnObj connObj) { LotCatcher = new DB2OperDataCatcher <FRLot_WipChart>("MMVIEW.FRLOT", new DB2Oper(connObj)) { Conditions = Condition }; WipChartPusher = new DB2OperDataPusher <FRLot_WipChart>("ISTRPT.RPT_WIPCHART_YSTD", new DB2Oper(connObj)); Initialize(); }
public ReqRpt028Runner_Bak(Db2ConnObj connObj) { HSCatcher = new DB2OperDataCatcher <FHOPEHS_WipChart>("MMVIEW.FHOPEHS", new DB2Oper(connObj)) { Conditions = Condition }; WipChartPusher = new DB2OperDataPusher <RPT_WipChart_YSTD>("ISTRPT.RPT_WIPCHART_YSTD", new DB2Oper(connObj)); Initialize(); }
private void HandleDBData() { Db2.GetSomeData(DelCurrentDateContentFromTimeFlowTableSql); Db2.GetSomeData(InsertCurrentDateContentToTimeFlowTableSql); Db2.GetSomeData(DeleteContentFromTimeFlowTSql); Db2.GetSomeData(DelOldDataFromTimeFlowTableSql); PDCatcher = new DB2OperDataCatcher <FRPD_PD_ID>("MMVIEW.FRPD", Db2) { Conditions = "WHERE PD_LEVEL='Main' AND PD_TYPE IN ('Production')" }; ProcTimeCatcher = new DB2OperDataCatcher <RPTH_LOT_PROC_TIME>("MMVIEW.RPTH_LOT_PROC_TIME", Db2); TimeFlowTPusher = new DB2OperDataPusher <RPT_STD_TIME_FLOW_T>("MMVIEW.RPT_STD_TIME_FLOW_T", Db2); var pd_list = PDCatcher.GetEntities().EntityList.Select(s => s.PD_ID); string pdCondition = string.Join("','", pd_list); ProcTimeCatcher.Conditions = string.Format(@"WHERE OPE_START_TIME BETWEEN '{0}' AND '{1}' AND OPE_COMP_USER_ID ='TCS' AND LAST_OPE_CATEGORY IN ('OperationComplete') AND OPE_PASS_COUNT=1 AND QTY=25 AND MAINPD_ID IN ('{2}' ) ORDER BY LOT_ID, OPE_START_TIME", sqlStartTime, sqlEndTime, pdCondition); var proc_list = ProcTimeCatcher.GetEntities().EntityList; if (!proc_list.Any()) { return; } string lotIDCondition = string.Join("','", proc_list.Select(s => s.Lot_ID).Distinct()); ProcTimeCatcher = new DB2OperDataCatcher <RPTH_LOT_PROC_TIME>("MMVIEW.RPTH_LOT_PROC_TIME", Db2) { Conditions = string.Format("where LAST_OPE_CATEGORY IN ('OperationComplete', 'STB') and AND MAINPD_ID IN '{0}' and lot_id in ('{1}') ", pdCondition, lotIDCondition) }; var allProcList = ProcTimeCatcher.GetEntities().EntityList; if (!allProcList.Any()) { return; } foreach (var proc in proc_list) { var p = allProcList.Where(w => w.Lot_ID == proc.Lot_ID && w.Ope_Start_Time < proc.Ope_Start_Time); if (p.Any()) { var entity = p.OrderBy(o => o.Ope_Start_Time).Last(); RPT_STD_TIME_FLOW_T fLOW_T = new RPT_STD_TIME_FLOW_T() { Lot_ID = proc.Lot_ID, ProdSpec_ID = proc.ProdSpec_ID, MainPD_ID = proc.MainPD_ID, Ope_No = proc.Ope_No }; bool isComplete = entity.Last_Ope_Category == "OperationComplete"; fLOW_T.PD_Proc_Time_Sec = isComplete? entity.Process_Duration_Sec:0; fLOW_T.PD_Wait_Time_Sec = isComplete? Convert.ToInt16((proc.Process_Start_Time - entity.Process_End_Time).TotalSeconds): Convert.ToInt16((proc.Process_Start_Time - entity.Ope_Start_Time).TotalSeconds); } } Db2.GetSomeData(MergeFormTimeFlowSql); Db2.GetSomeData(MergeFormTimeTableSql); Db2.GetSomeData(DeleteContentFromTimeFlowTSql); Db2.GetSomeData(DelCurrentDateContentFromCycleTimeSql); Db2.GetSomeData(InsertIntoCycleTimeSql); MergeUpdateCycleTimeSql = string.Format(@"MERGE INTO MMVIEW.RPT_STD_TIME_CYCLETIME M USING ( SELECT PRODSPEC_ID, MAINPD_ID, AVG(DOUBLE(TIMESTAMPDIFF(2, COMPLETION_TIME - RELEASED_TIME))/60) AS FLOW_CYCLE_TIME_MIN FROM MMVIEW.FRLOT WHERE LOT_STATE='FINSIHED' AND LOT_FINISHED_STATE='COMPLETED' AND LOT_TYPE='Production' AND COMPLETION_TIME BETWEEN '{0}' AND '{1}' AND QTY=25 GROUP BY PRODSPEC_ID, MAINPD_ID ) C ON M.CYCLETIME_RECORD_DATE=CURRENT DATE AND M.PRODSPEC_ID=C.PRODSPEC_ID AND M.MAINPD_ID=C.MAINPD_ID WHEN MATCHED THEN UPDATE SET FLOW_CYCLE_TIME_MIN=C. FLOW_CYCLE_TIME_MIN, FLOW_CYCLE_TIME_TYPE=1, FLOW_WAITTIME_FACTOR_MIN= C.FLOW_CYCLE_TIME_MIN/ FLOW_PROC_TIME_MIN, FLOW_WAITTIME_FACTOR_TYPE=1", sqlStartTime, sqlEndTime); Db2.GetSomeData(MergeUpdateCycleTimeSql); Db2.GetSomeData(MergeUpdateTimeTable); RewriteLastUpdateTimeToFile(); }