示例#1
0
 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();
 }
示例#2
0
 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();
 }
示例#3
0
        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();
        }