Example #1
0
        private void TryDeleteAllContributions()
        {
            if (Testing)
            {
                return;
            }

            //var db = DbUtil.Create(Host);
            if (!Db2.Setting("UploadExcelIpsDeleteGifts"))
            {
                return;
            }

            var deletesql = @"
DELETE dbo.BundleDetail
FROM dbo.BundleDetail d
JOIN dbo.Contribution c ON d.ContributionId = c.ContributionId
DELETE dbo.Contribution
DELETE dbo.BundleHeader
DBCC CHECKIDENT ('[Contribution]', RESEED, 0)
DBCC CHECKIDENT ('[BundleHeader]', RESEED, 0)
DBCC CHECKIDENT ('[BundleDetail]', RESEED, 0)
";

            Db2.ExecuteCommand(deletesql);
        }
Example #2
0
        public override bool DoUpload(ExcelPackage pkg)
        {
            var rt = Db2.UploadPeopleRuns.OrderByDescending(mm => mm.Id).First();

            var ws = pkg.Workbook.Worksheets[PeopleSheetName];
            FetchData(pkg.Workbook.Worksheets[PeopleSheetName]);
            const string sheet = "Personal Data";
            CheckColumn("IndividualId", sheet);
            CheckColumn("FamilyId", sheet);
            CheckColumn("First", sheet);
            CheckColumn("Last", sheet);

            string sid = ((object) Datalist[0].IndividualId).ToString();
            if (sid.ToCharArray().Any(char.IsLetter))
                AlphaNumericIds = true;

            if(AlphaNumericIds)
                peopleidsa = Db2.PeopleExtras.Where(vv => vv.Field == "IndividualId" && vv.Data.Length > 0)
                    .ToDictionary(vv => vv.Data, vv => vv.PeopleId);
            else
                peopleids = Db2.PeopleExtras.Where(vv => vv.Field == "IndividualId" && vv.IntValue != null)
                    .ToDictionary(vv => vv.IntValue ?? 0, vv => vv.PeopleId);

            UploadPeople(rt, ws);

            TryDeleteAllContributions();
            UploadPledges(rt, pkg);
            UploadGifts(rt, pkg);

            rt.Completed = DateTime.Now;
            Db2.SubmitChanges();
            return true;
        }
Example #3
0
        //private void GetLastUpdateTimeFromFile()
        //{
        //    DateTime dt = DateTime.Now.Date;
        //    string json = System.IO.File.ReadAllText(DirPath + LastTimeKeepFileName);
        //    DateTime.TryParseExact(JsonConvert.DeserializeObject<CycleTimeRunningConfig>(json).LastUpdateTime, "yyyy-MM-dd-HH.mm.ss.ffffff", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out dt);
        //    StartTime = dt;
        //}

        private void HandleDBData()
        {
            Db2.GetSomeData(DelNotExistOpeStepAtSMSql);
            Db2.GetSomeData(CmpSmOpeWithRptFlowSql);
            FlowSumCatcher = new DB2OperDataCatcher <RPT_FLOW_SUM>("MMVIEW.RPT_FLOW_SUM", Db2);
            FlowEqpCatcher = new DB2OperDataCatcher <RPT_FLOW_SUM_EQPBASE>("ISTRPT.RPT_FLOW_SUM_EQPBASE", Db2);
            // LRcpCatcher = new DB2OperDataCatcher<RPT_FLOW_SUM_LRCP>("ISTRPT.RPT_FLOW_SUM_LRCP",Db2);
            SETCatcher        = new DB2OperDataCatcher <FBLRCP_SSET_M>("SMVIEW.FBLRCP_SSET_M", Db2);
            MR_LRCatcher      = new DB2OperDataCatcher <RPT_FLOW_SUM_MR_LR_MAPPING>("ISTRPT.RPT_FLOW_SUM_MR_LR_MAPPING", Db2);
            EQPType_LRCatcher = new DB2OperDataCatcher <RPT_FLOW_SUM_EQPT_LR_MAPPING>("ISTRPT.RPT_FLOW_SUM_EQPT_LR_MAPPING", Db2);
            var FlowSumList = FlowSumCatcher.GetEntities().EntityList;
            var FlowEqpList = FlowEqpCatcher.GetEntities().EntityList;
            //var LRcpList = LRcpCatcher.GetEntities().EntityList;
            //var SetList = SETCatcher.GetEntities().EntityList;
            IList <FBLRCP_SSET_M> SetList = null;
            //var MR_LRList = MR_LRCatcher.GetEntities().EntityList;
            IList <RPT_FLOW_SUM_MR_LR_MAPPING> MR_LRList = null;
            //var EqpType_LRList = EQPType_LRCatcher.GetEntities().EntityList;
            IList <RPT_FLOW_SUM_EQPT_LR_MAPPING> EqpType_LRList = null;
            //重置待更新的字段,并在该遍历中获取EqpType、EqpList、Logic Recipe
            var newFlowList = FlowSumList.Select(s => new RPT_FLOW_SUM()
            {
                ProdSpec_ID = s.ProdSpec_ID, MainPD_ID = s.MainPD_ID, Ope_No = s.Ope_No, PD_ID = s.PD_ID, LRecipe = s.LRecipe
            });
            List <RPT_FLOW_SUM> UpdateList = new List <RPT_FLOW_SUM>();

            foreach (var item in newFlowList)
            {
                try
                {
                    SetEqpInfo(item, FlowEqpList);
                    // SetLRcpInfo(item, LRcpList);
                    bool hasGet = SetMRcpInfoBySset(item, SetList);
                    if (!hasGet)
                    {
                        SetMRcpInfoByDset(item, MR_LRList);
                    }
                    if (item.Eqp_Type == "")
                    {
                        SetEqpType(item, EqpType_LRList);
                    }

                    var rawFlow = FlowSumList.Where(w => w.ProdSpec_ID == item.ProdSpec_ID && w.MainPD_ID == item.MainPD_ID && w.Ope_No == item.Ope_No).First();
                    if (!(rawFlow.Eqp_Type == item.Eqp_Type && rawFlow.LRecipe == item.LRecipe && rawFlow.MRecipe_List == item.MRecipe_List && rawFlow.Eqp_List == item.Eqp_List))
                    {
                        UpdateList.Add(item);
                    }
                }
                catch (Exception e)
                {
                    LogHelper.ErrorLog(string.Format("RPTFlowSumTranslator>HandleDBData>foreach模块,ProdSpec_ID={0},MainPD_ID={1},Ope_NO={2}", item.ProdSpec_ID, item.MainPD_ID, item.Ope_No), e);
                }
            }

            List <string> sqlList = UpdateList.Select(s => string.Format("UPDATE MMVIEW.RPT_FLOW_SUM SET EQP_TYPE ='{0}',EQP_LIST='{1}',MRECIPE_LIST='{3}',LAST_UPDATE_TIME=CURRENT TIMESTAMP WHERE PRODSPEC_ID='{4}' AND MAINPD_ID='{5}' AND OPE_NO='{6}'", s.Eqp_Type, s.Eqp_List, s.LRecipe, s.MRecipe_List, s.ProdSpec_ID, s.MainPD_ID, s.Ope_No)).ToList();

            Db2.UpdateBatchCommand(sqlList);
        }
Example #4
0
        private void UploadPledges(UploadPeopleRun rt, ExcelPackage pkg)
        {
            //var db = DbUtil.Create(Host);
            var data = FetchPledgeData(pkg.Workbook.Worksheets["Pledges"]).ToList();

            rt.Count       = data.Count;
            rt.Description = $"Uploading Pledges {(Testing ? "in testing mode" : "for real")}";
            rt.Processed   = 0;
            Db2.SubmitChanges();

            var weeks = (from g in data
                         group g by g.Date.Sunday() into weeklypledges
                         select weeklypledges).ToList();
            BundleHeader bh = null;
            var          c  = Db2.Content("OrphanedPledges", "---", ContentTypeCode.TypeText);

            c.Body = "";
            Db2.SubmitChanges();
            foreach (var week in weeks)
            {
                FinishBundle(Db2, bh);
                //if (!Testing)
                //{
                //    Db2.Dispose();
                //    db = DbUtil.Create(Host);
                //}
                bh = new BundleHeader
                {
                    BundleHeaderTypeId = BundleTypeCode.Pledge,
                    BundleStatusId     = BundleStatusCode.Closed,
                    CreatedBy          = Util.UserId,
                    CreatedDate        = DateTime.Today,
                    ContributionDate   = week.Key,
                };
                foreach (var pledge in week)
                {
                    var pid = GetPeopleId(pledge);
                    var f   = new ContributionFund {
                        FundId = 0
                    };
                    if (!Testing)
                    {
                        if (!pid.HasValue)
                        {
                            if (IgnoreMissingGifts)
                            {
                                c       = Db2.Content("OrphanedPledges");
                                c.Body += $"{pledge.IndividualId} {pledge.Date:d} {pledge.Amount:C}\n";
                                Db2.SubmitChanges();
                                continue;
                            }
                            else
                            {
                                throw new Exception($"peopleid not found from individualid {pledge.IndividualId}");
                            }
                        }

                        f = Db2.FetchOrCreateFund(pledge.FundId, pledge.FundName ?? pledge.FundDescription);
                        f.FundPledgeFlag = true;
                    }
                    var bd = new BundleDetail();
                    bd.CreatedBy    = Util.UserId;
                    bd.CreatedDate  = DateTime.Now;
                    bd.Contribution = new Contribution
                    {
                        CreatedBy            = Util.UserId,
                        CreatedDate          = DateTime.Now,
                        ContributionDate     = pledge.Date,
                        FundId               = f.FundId,
                        ContributionStatusId = 0,
                        ContributionTypeId   = ContributionTypeCode.Pledge,
                        ContributionAmount   = pledge.Amount,
                        PeopleId             = pid
                    };
                    bh.BundleDetails.Add(bd);
                    rt.Processed++;
                    Db2.SubmitChanges();
                }
            }
            FinishBundle(Db2, bh);
            //if (!Testing)
            //{
            //    DbUtil.Db.Dispose();
            //}
        }
Example #5
0
        /// <summary>
        /// 按测段导出二等水准手簿
        /// </summary>
        /// <param name="excelApp">Excel对象</param>
        /// <param name="fileName">成果文件名</param>
        /// <param name="partInfo">测段对象</param>
        /// <param name="unitName">测量单位名称</param>
        private void part2Excel(Excel.Application excelApp, string fileName, PartInfo partInfo, string unitName)
        {
            string strExcelFile = Path.GetDirectoryName(Application.ExecutablePath) + @"\观测手簿模版.xlt";
            Excel.Workbook  excelWB = excelApp.Workbooks.Add(strExcelFile);
            Excel.Worksheet excelSheet = excelWB.Sheets[1];// 工作表

            excelSheet.Cells[2, 3].Value =unitName; // 单位名称

            // 获得测站数据范围和数据总结范围
            Excel.Range theRange, theRange1, theRange2;

            theRange1 = excelSheet.Range[excelSheet.Cells[7, 1], excelSheet.Cells[9, 10]]; // 测站数据范围
            theRange2 = excelSheet.Range[excelSheet.Cells[10, 1], excelSheet.Cells[14, 10]]; //线路汇总区域范围

            int n = partInfo.StationCount; // 测站数
            theRange2.Cut(excelSheet.Range[excelSheet.Cells[10 + (n - 1) * 3, 1], excelSheet.Cells[14 + (n - 1) * 3, 10]]); // 先剪切赋值线路汇总区域范围

            string fName0, bName0;// 开始已知点点名,结束已知点点名
            fName0= bName0="";
            string fName, bName;//前视点点名,后视点点名
            double bPtH, fPtH;//前视点高程,后视点高程
            bPtH = fPtH = 0.0;
            fName=bName="";
            double Rf1, Rf2, Rb1, Rb2;//中丝读数
            double deltRf, deltRb;//读数差
            double Df1, Df2, Db1, Db2;//前后视距
            double deltD;//视距差
            double deltH1, deltH2, deltH;//单次高差,平均高差
            
            double  SumdeltD=0.0;//累计视距差

            theRange1.Copy();
            // 开始赋值观测手簿
            for (int i = 0; i < n; i++)
            {
                Application.DoEvents();

                fName = partInfo.StationList[i].FPtName;
                bName =partInfo.StationList[i].BPtName;
                if (i == 0) bName0 = bName; // 开始点
                if (i == n-1) fName0 = fName; // 结束点’

                //中丝读数
                Rf1 = partInfo.StationList[i].Rf1;
                Rf2 = partInfo.StationList[i].Rf2;
                Rb1 = partInfo.StationList[i].Rb1;
                Rb2 = partInfo.StationList[i].Rb2;
                //读数差
                deltRf = Rf1 - Rf2;
                deltRb = Rb1 - Rb2;
                //高差及平均高差
                deltH1 = Rb1 - Rf1;
                deltH2 = Rb2 - Rf2;
                deltH = partInfo.StationList[i].DeltH;
                //前、后视点高程
                bPtH = partInfo.StationList[i].BPtH;
                fPtH = partInfo.StationList[i].FPtH;
                //视距
                Db1 = partInfo.StationList[i].Db1;
                Db2 = partInfo.StationList[i].Db2;
                Df1 = partInfo.StationList[i].Df1;
                Df2 = partInfo.StationList[i].Df2;
                deltD = partInfo.StationList[i].DeltD;
                SumdeltD = SumdeltD + deltD;

                theRange = excelSheet.Range[excelSheet.Cells[7 +i * 3, 1], excelSheet.Cells[9 + i * 3, 10]];
                theRange.PasteSpecial(Excel.XlPasteType.xlPasteFormats);

                excelSheet.Cells[7 + i * 3, 1].Value = i + 1; // 序号

                excelSheet.Cells[7 + i * 3, 2].Value = bName; // 后视点
                excelSheet.Cells[7 + i * 3 + 1, 2].Value = fName; // 前视点

                excelSheet.Cells[7 + i * 3, 3].Value = Db1.ToString("0.00000"); // 后视距1
                excelSheet.Cells[7 + i * 3 + 1, 3].Value = Df1.ToString("0.00000"); // 前视距1
                excelSheet.Cells[7 + i * 3 + 2, 3].Value = deltD.ToString("0.00000"); // 视距差

                excelSheet.Cells[7 + i * 3, 4].Value = Db2.ToString("0.00000"); // 后视距2
                excelSheet.Cells[7 + i * 3 + 1, 4].Value = Df2.ToString("0.00000"); // 前视距2
                excelSheet.Cells[7 + i * 3 + 2, 4].Value = SumdeltD.ToString("0.00000"); // 累计视距差

                excelSheet.Cells[7 + i * 3, 5].Value = Rb1.ToString("0.00000"); // 后视读数1
                excelSheet.Cells[7 + i * 3 + 1, 5].Value = Rf1.ToString("0.00000"); // 前视读数1
                excelSheet.Cells[7 + i * 3 + 2, 5].Value = deltH1.ToString("0.00000"); // 高差1

                excelSheet.Cells[7 + i * 3, 6].Value = Rb2.ToString("0.00000"); // 后视读数2
                excelSheet.Cells[7 + i * 3 + 1, 6].Value = Rf2.ToString("0.00000"); // 前视读数2
                excelSheet.Cells[7 + i * 3 + 2, 6].Value = deltH2.ToString("0.00000"); // 高差2

                excelSheet.Cells[7 + i * 3, 7].Value = (deltRb * 1000).ToString("0.00"); // 后视读数差
                excelSheet.Cells[7 + i * 3 + 1, 7].Value = (deltRf * 1000).ToString("0.00"); // 前视读数差
                excelSheet.Cells[7 + i * 3 + 2, 7].Value = ((deltH1 - deltH2) * 1000).ToString("0.00"); // 高差互差

                excelSheet.Cells[7 + i * 3 + 2, 8].Value = deltH.ToString("0.00000"); // 高差

                excelSheet.Cells[7 + i * 3, 9].Value = bPtH.ToString("0.00000"); // 后视点高程
                excelSheet.Cells[7 + i * 3 + 1, 9].Value = fPtH.ToString("0.00000"); // 前视点高程
            }//endfor

            excelSheet.Cells[10 + (n - 1) * 3, 3].Value = partInfo.StartPtName;//线路开始点名
            excelSheet.Cells[10 + (n - 1) * 3 + 1, 3].Value = partInfo.EndPtName; //线路结束点名
            excelSheet.Cells[10 + (n - 1) * 3 + 2, 3].Value = (partInfo.Df / 1000).ToString("0.00000"); // 累计前视距
            excelSheet.Cells[10 + (n - 1) * 3 + 3, 3].Value = (partInfo.Db / 1000).ToString("0.00000"); // 累计后视距

            excelSheet.Cells[10 + (n - 1) * 3 + 1, 6].Value = (partInfo.Db-partInfo.Df).ToString("0.00000"); // 累计视距差
            excelSheet.Cells[10 + (n - 1) * 3 + 2, 6].Value = partInfo.dz.ToString("0.00000"); // 累计高差
            excelSheet.Cells[10 + (n - 1) * 3 + 3, 6].Value = ((partInfo.Db + partInfo.Df )/ 1000).ToString("0.00000"); // 测段距离
            
            //合并单元格
            for (int i = 0; i <= n; i++)
            {
                theRange = excelSheet.Range[excelSheet.Cells[7 + i * 3, 1], excelSheet.Cells[9 + i * 3, 1]];
                theRange.Merge();
            }//endfor

             excelWB.SaveAs(fileName);//保存文件
             excelWB.Close();
        }
Example #6
0
        private void UploadGifts(UploadPeopleRun rt, ExcelPackage pkg)
        {
            var db   = DbUtil.Create(Host);
            var data = FetchContributionData(pkg.Workbook.Worksheets["Gift Data"]).ToList();

            rt.Count       = data.Count;
            rt.Description = $"Uploading Gifts {(Testing ? "in testing mode" : "for real")}";
            rt.Processed   = 0;
            Db2.SubmitChanges();

            var weeks = (from g in data
                         group g by g.Date.Sunday() into weeklygifts
                         select weeklygifts).ToList();
            BundleHeader bh = null;
            var          c  = db.Content("OrphanedGifts", "---", ContentTypeCode.TypeText);

            c.Body = "";
            db.SubmitChanges();
            foreach (var week in weeks)
            {
                FinishBundle(db, bh);
                if (!Testing)
                {
                    db.Dispose();
                    db = DbUtil.Create(Host);
                }
                bh = new BundleHeader
                {
                    BundleHeaderTypeId = BundleTypeCode.ChecksAndCash,
                    BundleStatusId     = BundleStatusCode.Closed,
                    CreatedBy          = Util.UserId,
                    CreatedDate        = DateTime.Today,
                    ContributionDate   = week.Key,
                };
                foreach (var gift in week)
                {
                    var pid = GetPeopleId(gift);
                    if (!Testing)
                    {
                        if (!pid.HasValue)
                        {
                            if (IgnoreMissingGifts)
                            {
                                c       = db.Content("OrphanedGifts");
                                c.Body += $"{gift.IndividualId} {gift.Date:d} {gift.Amount:C}\n";
                                db.SubmitChanges();
                                continue;
                            }
                            else
                            {
                                throw new Exception($"peopleid not found from individualid {gift.IndividualId}");
                            }
                        }
                    }
                    if (!Testing)
                    {
                        db.FetchOrCreateFund(gift.FundId, gift.FundName ?? gift.FundDescription);
                    }
                    var bd = new BundleDetail();
                    bd.CreatedBy    = Util.UserId;
                    bd.CreatedDate  = DateTime.Now;
                    bd.Contribution = new Contribution
                    {
                        CreatedBy            = Util.UserId,
                        CreatedDate          = DateTime.Now,
                        ContributionDate     = gift.Date,
                        FundId               = gift.FundId,
                        ContributionStatusId = 0,
                        ContributionTypeId   = ContributionTypeCode.CheckCash,
                        ContributionAmount   = gift.Amount,
                        CheckNo              = gift.CheckNo,
                        PeopleId             = pid
                    };
                    bh.BundleDetails.Add(bd);
                    rt.Processed++;
                    Db2.SubmitChanges();
                }
            }
            FinishBundle(db, bh);
            if (!Testing)
            {
                db.Dispose();
            }
        }
Example #7
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();
        }