Exemplo n.º 1
0
        public override void Run()
        {
            if (WO.Value == null)
            {
                throw new Exception("WO Can not be null");
            }
            string runSql = string.Format(Sqls["strGetWoSN"], WO.Value.ToString());

            RunSqls.Add(runSql);
            OleExec SFCDB = DBPools["SFCDB"].Borrow();

            try
            {
                DataSet     res    = SFCDB.RunSelect(runSql);
                ReportTable retTab = new ReportTable();

                retTab.LoadData(res.Tables[0], null);

                retTab.Tittle = "SN List";

                retTab.ColNames.RemoveAt(0);


                // piechart
                pieChart retChart_pie = new pieChart();
                retChart_pie.GetSample();
                Outputs.Add(retChart_pie);
                //linechart
                LineChart retChart_line = new LineChart();
                retChart_line.GetSample1();
                LineChart retChart_spline = new LineChart();
                retChart_spline.GetSample2();
                LineChart retChart_area = new LineChart();
                retChart_area.GetSample3();
                //columnChart
                columnChart retChart_column = new columnChart();
                retChart_column.GetSample1();

                Outputs.Add(retChart_column);
                Outputs.Add(retChart_line);
                Outputs.Add(retChart_spline);
                Outputs.Add(retChart_area);
                Outputs.Add(retTab);

                DBPools["SFCDB"].Return(SFCDB);
            }
            catch (Exception ee)
            {
                DBPools["SFCDB"].Return(SFCDB);
            }
        }
Exemplo n.º 2
0
        public override void Run()
        {
            DateTime  dateFrom    = DateTime.Now.AddDays(-730);
            DateTime  dateTO      = DateTime.Now;
            DataTable dtRepairTop = new DataTable();
            string    _skuName    = "";
            string    sqlRun      = "";
            int       col;

            //dateFrom = (DateTime)startTime.Value;
            //dateTO = (DateTime)endTime.Value;
            if (startTime.Value == null || string.IsNullOrEmpty(startTime.Value.ToString()))
            {
                throw new Exception("Start time can not be null!");
            }
            else
            {
                dateFrom = Convert.ToDateTime(startTime.Value);
            }
            if (endTime.Value == null || string.IsNullOrEmpty(endTime.Value.ToString()))
            {
                throw new Exception("End time can not be null!");
            }
            else
            {
                dateTO = (DateTime)endTime.Value;
            }
            if (skuName.Value == null || string.IsNullOrEmpty(skuName.Value.ToString()))
            {
                throw new Exception("Sku name can not be null!");
            }
            else
            {
                _skuName = skuName.Value.ToString();
            }

            sqlRun = $@"select c.fail_code, d.sku_name , count(1) count
                          from r_repair_main a
                           inner join r_sn b
                              on a.sn = b.sn
                           inner join r_repair_failcode c
                              on c.sn = a.sn
                             and c.edit_time = a.edit_time
                           inner join c_sku d
                              on d.skuno = b.skuno
                           where a.closed_flag = 0
                             and d.sku_name='{_skuName}'
                             and a.edit_time between
                                 to_date('{dateFrom.ToString("yyyy-MM-dd HH-mm-ss")}', 'yyyy-MM-dd hh24:mi:ss') and
                                 to_date('{dateTO.ToString("yyyy-MM-dd HH-mm-ss")}', 'yyyy-MM-dd hh24:mi:ss')
                             --and c.fail_category = 'DEFECT'
                           group by d.sku_name, c.fail_code
                           order by c.fail_code, count(1) desc";

            #region 原報表查詢語句

            //select c.failcode, d.codename , count(1) count
            //    from sfcrepairmain A
            //   inner join mfworkstatus B
            //      on a.sysserialno = b.sysserialno
            //   inner join sfcrepairfailcode C
            //      on C.SYSSERIALNO = a.sysserialno
            //     and c.createdate = a.createdate
            //   inner join sfccodelike d
            //      on d.skuno = b.skuno
            //   where a.repaired = 1
            //     and a.lasteditdt between
            //         to_date('', 'yyyy-MM-dd hh24:mi:ss') and
            //         to_date('', 'yyyy-MM-dd hh24:mi:ss')
            //     and C.failcategory = 'DEFECT'
            //   group by d.codename, c.failcode
            //   order by c.failcode, count(1) desc;
            #endregion

            RunSqls.Add(sqlRun);
            OleExec SFCDB = DBPools["SFCDB"].Borrow();
            try
            {
                dtRepairTop = SFCDB.RunSelect(sqlRun).Tables[0];
                if (dtRepairTop.Rows.Count > 0)
                {
                    DataRow[]     rows    = dtRepairTop.Select("sku_name='" + _skuName + "'", "count desc");
                    List <object> objList = new List <object>();
                    pieChart      pie     = new pieChart();
                    //pie.Tittle = dateFrom.ToString("yyyy-MM-dd HH:mm:ss") + "至" + dateTO.ToString("yyyy-MM-dd HH:mm:ss") + "  " + _skuName + "不良TOP10餅狀圖";
                    pie.Tittle        = dateFrom.ToString("f").Replace(":", "時") + "分至" + dateTO.ToString("f").Replace(":", "時") + "分" + _skuName + "不良TOP10餅狀圖";
                    pie.ChartTitle    = "主標題";
                    pie.ChartSubTitle = "副標題";
                    ChartData chartData = new ChartData();
                    chartData.name = _skuName;
                    chartData.type = ChartType.pie.ToString();
                    col            = 0;
                    for (int j = 0; j < rows.Length; j++)
                    {
                        col++;
                        if (col < 11)
                        {
                            objList.Add(new List <object> {
                                rows[j]["fail_code"].ToString(), Convert.ToInt64(rows[j]["count"].ToString())
                            });
                        }
                    }
                    chartData.data         = objList;
                    chartData.colorByPoint = true;
                    List <ChartData> _ChartDatas = new List <ChartData> {
                        chartData
                    };
                    pie.ChartDatas = _ChartDatas;
                    Outputs.Add(pie);
                }
                DBPools["SFCDB"].Return(SFCDB);
            }
            catch (Exception exception)
            {
                DBPools["SFCDB"].Return(SFCDB);
                throw exception;
            }
        }
Exemplo n.º 3
0
        public override void Run()
        {
            if (WO.Value == null)
            {
                throw new Exception("WO Can not be null");
            }
            //   string runSql = string.Format(Sqls["strGetSN"], WO.Value.ToString());
            //    RunSqls.Add(runSql);
            string wo = WO.Value.ToString();

            string columnName = "";
            string closeflag  = CloseFlag.Value.ToString();
            string linkURL    = "Link#/FunctionPage/Report/Report.html?ClassName=MESReport.BaseReport.SNListByWo&RunFlag=1&WO=" + wo + "&EventName=";

            ;
            OleExec SFCDB = DBPools["SFCDB"].Borrow();

            try
            {
                string Sqlwo = $@"SELECT workorderno ,skuno,ROUTE_ID,WORKORDER_QTY , trunc ( sysdate - DOWNLOAD_DATE) DATS,INPUT_QTY,FINISHED_QTY FROM R_WO_BASE where 
                           WORKORDERNO = '{wo}' ";
                if (closeflag == "Y")
                {
                    Sqlwo = Sqlwo + " and CLOSED_FLAG = 1";
                }
                else if (closeflag == "N")
                {
                    Sqlwo = Sqlwo + " and CLOSED_FLAG = 0";
                }
                DataTable dtwo = SFCDB.RunSelect(Sqlwo).Tables[0];
                RunSqls.Add(Sqlwo);
                if (dtwo.Rows.Count == 0)
                {
                    ReportAlart alart = new ReportAlart("No Data!");
                    Outputs.Add(alart);
                    return;
                }
                //string SqlRoute = $@"select * from C_ROUTE_DETAIL where route_id='{dtwo.Rows[0]["route_id"].ToString()}' order by  seq_no";
                string    SqlRoute = $@"select * from C_ROUTE_DETAIL where route_id='{dtwo.Rows[0]["route_id"].ToString()}' order by  seq_no";
                DataTable dtroute  = SFCDB.RunSelect(SqlRoute).Tables[0];
                RunSqls.Add(SqlRoute);

                //string SqlStationRoute = $@" SELECT distinct next_station FROM r_sn where REPAIR_FAILED_FLAG <> 1 and(COMPLETED_FLAG = 0 or NEXT_STATION = 'JOBFINISH') and  workorderno = '{wo}'
                //                            MINUS
                //                            select STATION_NAME from c_route_detail where ROUTE_ID='{dtwo.Rows[0]["route_id"].ToString()}'  ";

                string    SqlStationRoute = $@" SELECT distinct next_station FROM r_sn where REPAIR_FAILED_FLAG <> 1  and  workorderno = '{wo}'
                                            MINUS
                                            select STATION_NAME from c_route_detail where ROUTE_ID='{dtwo.Rows[0]["route_id"].ToString()}'  ";
                DataTable dtstationroute  = SFCDB.RunSelect(SqlStationRoute).Tables[0];
                RunSqls.Add(SqlStationRoute);

                DataTable resdt     = new DataTable();
                DataTable linkTable = new DataTable();

                resdt.Columns.Add("WorkOrderNo");
                resdt.Columns.Add("Skuno");
                resdt.Columns.Add("DATS");
                resdt.Columns.Add("QTY");

                linkTable.Columns.Add("WorkOrderNo");
                linkTable.Columns.Add("Skuno");
                linkTable.Columns.Add("DATS");
                linkTable.Columns.Add("QTY");

                for (int i = 0; i < dtroute.Rows.Count; i++)
                {
                    resdt.Columns.Add(dtroute.Rows[i]["STATION_NAME"].ToString());
                    linkTable.Columns.Add(dtroute.Rows[i]["STATION_NAME"].ToString());
                }

                for (int i = 0; i < dtstationroute.Rows.Count; i++)
                {
                    if (dtstationroute.Rows[i]["next_station"].ToString().Equals("JOBFINISH"))
                    {
                        continue;
                    }
                    resdt.Columns.Add(dtstationroute.Rows[i]["next_station"].ToString());
                    linkTable.Columns.Add(dtstationroute.Rows[i]["next_station"].ToString());
                }

                //   resdt.Columns.Add("STOCKIN");
                //   resdt.Columns.Add("JOBFINISH");
                //resdt.Columns.Add("NA");
                resdt.Columns.Add("RepairWip");
                resdt.Columns.Add("MRB");
                //resdt.Columns.Add("REWORK");
                resdt.Columns.Add("JOBFINISH");

                //linkTable.Columns.Add("NA");
                linkTable.Columns.Add("RepairWip");
                linkTable.Columns.Add("MRB");
                //linkTable.Columns.Add("REWORK");
                linkTable.Columns.Add("JOBFINISH");

                DataRow drd         = resdt.NewRow();
                DataRow linkDataRow = linkTable.NewRow();
                drd["WorkOrderNo"] = wo;
                drd["Skuno"]       = dtwo.Rows[0]["Skuno"].ToString();
                drd["DATS"]        = dtwo.Rows[0]["DATS"].ToString();
                drd["QTY"]         = dtwo.Rows[0]["WORKORDER_QTY"].ToString();
                //  drd["STOCKIN"]= dtwo.Rows[0]["FINISHED_QTY"].ToString();

                //string Sqlsncount =$@" select NEXT_STATION, count(NEXT_STATION)c from r_sn where  (REPAIR_FAILED_FLAG <> 1 or REPAIR_FAILED_FLAG is null)
                //                        and(COMPLETED_FLAG = 0 or NEXT_STATION = 'JOBFINISH')
                //                         and  workorderno = '{wo}' group by NEXT_STATION";
                //
                string    Sqlsncount = $@" select NEXT_STATION, count(NEXT_STATION)c from r_sn where  (REPAIR_FAILED_FLAG <> 1 or REPAIR_FAILED_FLAG is null)
                                         and  workorderno = '{wo}' and NEXT_STATION <>'REWORK' group by NEXT_STATION";
                long      loadingNum = 0;
                long      mrbNum     = 0;
                DataTable dtsncont   = SFCDB.RunSelect(Sqlsncount).Tables[0];
                RunSqls.Add(Sqlsncount);
                for (int i = 0; i < dtsncont.Rows.Count; i++)
                {
                    drd[dtsncont.Rows[i]["NEXT_STATION"].ToString()]         = dtsncont.Rows[i]["c"].ToString();
                    linkDataRow[dtsncont.Rows[i]["NEXT_STATION"].ToString()] = (dtsncont.Rows[i]["c"].ToString() != "0") ? (linkURL + dtsncont.Rows[i]["NEXT_STATION"].ToString()) : "";
                    loadingNum = loadingNum + Convert.ToInt64(dtsncont.Rows[i]["c"].ToString());
                }

                string    SqlRepairCount = $@" select count(1) repaircount from r_sn where REPAIR_FAILED_FLAG = 1 and workorderno = '{wo}'";
                DataTable dtrepaircont   = SFCDB.RunSelect(SqlRepairCount).Tables[0];
                RunSqls.Add(SqlRepairCount);
                drd["RepairWip"]         = dtrepaircont.Rows[0]["repaircount"].ToString();
                linkDataRow["RepairWip"] = (dtrepaircont.Rows[0]["repaircount"].ToString() != "0") ? (linkURL + "RepairWip") : "";

                //string SqlMrbCount = $@"select count(1) mrbcount from r_mrb where workorderno = '{wo}'  and rework_wo is null";
                string    SqlMrbCount = $@"select count(1) mrbcount from r_mrb where workorderno = '{wo}'  ";
                DataTable dtmrbcont   = SFCDB.RunSelect(SqlMrbCount).Tables[0];
                RunSqls.Add(SqlMrbCount);
                drd["MRB"]         = dtmrbcont.Rows[0]["mrbcount"].ToString();
                mrbNum             = Convert.ToInt64(dtmrbcont.Rows[0]["mrbcount"].ToString());
                linkDataRow["MRB"] = (dtmrbcont.Rows[0]["mrbcount"].ToString() != "0") ? (linkURL + "MRB") : "";

                //loadingNum = loadingNum + Convert.ToInt64(dtrepaircont.Rows[0]["repaircount"].ToString()) + Convert.ToInt64(dtmrbcont.Rows[0]["mrbcount"].ToString());
                foreach (DataColumn dc in resdt.Columns)
                {
                    if (dc.ColumnName.ToString().ToUpper().IndexOf("LOADING") > 0 || dc.ColumnName.ToString().ToUpper().IndexOf("LINK") > -1)
                    {
                        drd[dc.ColumnName.ToString()] = Convert.ToInt64(dtwo.Rows[0]["WORKORDER_QTY"].ToString()) - loadingNum - mrbNum;
                    }
                }

                resdt.Rows.Add(drd);
                linkTable.Rows.Add(linkDataRow);
                ReportTable retTab = new ReportTable();
                retTab.LoadData(resdt, linkTable);
                retTab.Tittle = "WO WIP";
                //retTab.ColNames.RemoveAt(0);
                Outputs.Add(retTab);
                if (resdt.Rows.Count > 0)
                {
                    List <object> objList = new List <object>();
                    pieChart      pie     = new pieChart();
                    pie.Tittle        = "工單" + wo + "WIP分佈餅狀圖";
                    pie.ChartTitle    = "主標題";
                    pie.ChartSubTitle = "副標題";
                    ChartData chartData = new ChartData();
                    chartData.name = "WOLIST";
                    chartData.type = ChartType.pie.ToString();
                    for (int j = 0; j < resdt.Rows.Count; j++)
                    {
                        foreach (DataColumn column in resdt.Columns)
                        {
                            columnName = column.ColumnName.ToString().ToUpper();
                            if (columnName != "WORKORDERNO" && columnName != "SKUNO" && columnName != "DATS" && columnName != "QTY" && resdt.Rows[j][columnName].ToString() != "" && resdt.Rows[j][columnName].ToString() != "0")
                            {
                                objList.Add(new List <object> {
                                    columnName, Convert.ToInt64(resdt.Rows[j][columnName].ToString())
                                });
                            }
                        }
                    }
                    chartData.data         = objList;
                    chartData.colorByPoint = true;
                    List <ChartData> _ChartDatas = new List <ChartData> {
                        chartData
                    };
                    pie.ChartDatas = _ChartDatas;
                    Outputs.Add(pie);
                }
                DBPools["SFCDB"].Return(SFCDB);
            }
            catch (Exception ee)
            {
                DBPools["SFCDB"].Return(SFCDB);
            }
        }
Exemplo n.º 4
0
        public override void Run()
        {
            if (wo.Value == null || wo.Value.ToString().Equals(""))
            {
                throw new Exception("WO Can not be null");
            }

            OleExec sfcdb = DBPools["SFCDB"].Borrow();


            //string workorderno = wo.Value.ToString();
            //string ClosedFlag = CloseFlag.Value.ToString();

            T_R_SN t = new T_R_SN(sfcdb, MESDataObject.DB_TYPE_ENUM.Oracle);

            //DataTable dt = t.GetSNByWo(workorderno,sfcdb);


            //ReportTable retTab = new ReportTable();
            //retTab.LoadData(dt, null);
            //retTab.Tittle = "ASSY Manufacture Report";
            //Outputs.Add(retTab);

            #region 折綫圖
            LineChart lChart = new LineChart();
            lChart.GetSample1();
            //lChart.Tittle = "SampleChart_折線圖";
            //lChart.ChartTitle = "主标题";
            //lChart.ChartSubTitle = "副标题";
            //XAxis _XAxis = new XAxis();
            //_XAxis.Title = "X轴标题";
            //_XAxis.XAxisType = XAxisType.datetime;
            //lChart.XAxis = _XAxis;
            //lChart.Tooltip = "%";

            //Yaxis _YAxis = new Yaxis();
            //_YAxis.Title = "Y轴标题";
            //lChart.YAxis = _YAxis;

            //ChartData lChartData = new ChartData();
            //lChartData.name = "B32S1";
            //lChartData.type = ChartType.line.ToString();

            //PlotOptions PlotOptions = new PlotOptions();
            //PlotOptions.type = PlotType.datetime;
            ////PlotOptions.pointStartDateTime = DateTime.Parse("2018-08-20 12:00:00");
            ////PlotOptions.pointInterval = 3600000;
            //lChart.Plot = PlotOptions;
            //lChartData.data = new List<object> { new List<object>{ "2018-08-20 12:00:00" ,new string[] { "11","22","33"} },
            //new List<object>{ "2018-08-20 13:00:00" ,new string[] { "111","222","333"} }} ;

            //List<ChartData> lChartDatas = new List<ChartData> { lChartData };
            //lChart.ChartDatas = lChartDatas;
            Outputs.Add(lChart);
            #endregion

            #region 曲綫圖
            LineChart spLineChart = new LineChart();
            spLineChart.Tittle        = "SampleChart_曲線圖";
            spLineChart.ChartTitle    = "主标题";
            spLineChart.ChartSubTitle = "副标题";
            XAxis _spXAxis = new XAxis();
            _spXAxis.Title     = "X轴标题";
            _spXAxis.XAxisType = XAxisType.datetime;
            spLineChart.XAxis  = _spXAxis;
            //spLineChart.Tooltip = "%";

            Yaxis _spYAxis = new Yaxis();
            _spYAxis.Title    = "Y轴标题";
            spLineChart.YAxis = _spYAxis;

            ChartData spChartData = new ChartData();
            spChartData.name = "B32S1";
            spChartData.type = ChartType.spline.ToString();

            PlotOptions spPlotOptions = new PlotOptions();
            spPlotOptions.type = PlotType.datetime;
            spLineChart.Plot   = spPlotOptions;
            //日期會顯示在當鼠標經過圖標的時候
            spChartData.data = new List <object> {
                new List <object> {
                    "2018-05-29 10:00:00", 64
                }, new List <object> {
                    "2018-05-29 11:00:00", 78
                }, new List <object> {
                    "2018-05-29 12:00:00", 35
                }, new List <object> {
                    "2018-05-29 14:00:00", 235
                }, new List <object> {
                    "2018-05-29 15:00:00", 135
                }, new List <object> {
                    "2018-05-29 16:00:00", 85
                }, new List <object> {
                    "2018-05-29 17:00:00", 56
                }, new List <object> {
                    "2018-05-29 18:00:00", 15
                }, new List <object> {
                    "2018-05-29 19:00:00", 133
                }
            };
            List <ChartData> _spChartDatas = new List <ChartData> {
                spChartData
            };
            spLineChart.ChartDatas = _spChartDatas;
            Outputs.Add(spLineChart);
            #endregion

            #region 面積圖
            LineChart aLineChart = new LineChart();
            aLineChart.Tittle        = "SampleChart_面積圖";
            aLineChart.ChartTitle    = "主标题";
            aLineChart.ChartSubTitle = "副标题";
            XAxis _aXAxis = new XAxis();
            _aXAxis.Title = "2018/08/20 降雨分佈";
            //_aXAxis.XAxisType = XAxisType.BarChart;
            //_aXAxis.Categories = new string[] { "12","13","14","15","16","17","18" };
            aLineChart.XAxis   = _aXAxis;
            aLineChart.Tooltip = "%";

            Yaxis _aYAxis = new Yaxis();
            _aYAxis.Title    = "降雨量";
            aLineChart.YAxis = _aYAxis;

            ChartData aChartData = new ChartData();
            aChartData.name = "降雨圖";
            aChartData.type = ChartType.area.ToString();

            PlotOptions aPlotOptions = new PlotOptions();
            aPlotOptions.type = PlotType.intdata;
            aPlotOptions.pointStartIntdata = 8;
            //aPlotOptions.pointInterval = 2;
            aLineChart.Plot = aPlotOptions;
            aChartData.data = new List <object> {
                198, 384, 64, 78, 35, 235, 135
            };

            List <ChartData> _aChartDatas = new List <ChartData> {
                aChartData
            };
            aLineChart.ChartDatas = _aChartDatas;
            Outputs.Add(aLineChart);
            #endregion

            #region 餅狀圖
            pieChart pChart = new pieChart();
            pChart.Tittle        = "餅狀圖測試 ZGJ";
            pChart.ChartTitle    = "餅狀圖主標題";
            pChart.ChartSubTitle = "餅狀圖副標題";
            ChartData pChartData = new ChartData();
            pChartData.name         = "餅狀圖數據";
            pChartData.type         = ChartType.pie.ToString();
            pChartData.data         = t.GetPieChartTestData(sfcdb);
            pChartData.colorByPoint = true;
            List <ChartData> pChartDatas = new List <ChartData> {
                pChartData
            };
            pChart.ChartDatas = pChartDatas;
            Outputs.Add(pChart);
            #endregion

            #region 柱狀圖
            columnChart cChart = new columnChart();
            cChart.Tittle        = "SampleChart_柱狀圖";
            cChart.ChartTitle    = "主标题";
            cChart.ChartSubTitle = "副标题";
            XAxis _cXAxis = new XAxis();
            _cXAxis.Title     = "X轴标题";
            _cXAxis.XAxisType = XAxisType.BarChart;
            //不可以省略,表示X軸上面顯示的内容,如果沒有設定的話,就會變成 0,1,2,3,4 這些毫無意義的數據
            _cXAxis.Categories = new string[] { "苹果", "橘子", "梨", "葡萄", "香蕉" };

            cChart.XAxis   = _cXAxis;
            cChart.Tooltip = "%";

            Yaxis _cYAxis = new Yaxis();
            _cYAxis.Title = "Y轴标题";
            cChart.YAxis  = _cYAxis;

            ChartData cChartData = new ChartData();
            cChartData.name         = "HWD 各線別產出";
            cChartData.type         = ChartType.column.ToString();
            cChartData.colorByPoint = true;
            cChartData.data         = new List <object> {
                new columnData()
                {
                    name = "苹果", y = 10
                },
                new columnData()
                {
                    name = "橘子", y = 2
                },
                new columnData()
                {
                    name = "梨", y = -3
                },
                new columnData()
                {
                    name = "葡萄", y = 4
                },
                new columnData()
                {
                    name = "香蕉", y = 0.0
                }
            };
            List <ChartData> _cChartDatas = new List <ChartData> {
                cChartData
            };
            cChart.ChartDatas = _cChartDatas;
            Outputs.Add(cChart);
            #endregion


            #region 指針式儀表圖
            //EChartBase Chart1 = new EChartBase();
            //Chart1.title = new { text = "測試指針式儀表數據" };
            //for (int i = 0; i < 5; i++)
            //{
            //    GAUGE_Chart_Data GCD = new GAUGE_Chart_Data();
            //    GCD.min = 80;
            //    GCD.max = 100;
            //    GCD.splitNumber = 2;
            //    GCD.endAngle = -45;
            //    GCD.radius = "50%";
            //    GCD.name = "第" + i + "小時";
            //    GCD.axisLine = new
            //    {
            //        lineStyle = new
            //        {
            //            width = 8,
            //            color = new List<Object>()
            //            { new List<object>() { 0.5, "#FF0000"  }, new List<object>() { 1, "#00FF00" }}
            //        }
            //    };
            //    int j = i + 1;
            //    GCD.center = new List<string>() { $@"{j * 10 + 5}%", $@"50%" };
            //    GCD.data = new List<object> { new { value = 80 + i * 5, name = GCD.name } };
            //    Chart1.series.Add(GCD);
            //}

            //Chart1.Zone_ID = "TopZone";
            //Outputs.Add(Chart1);
            #endregion

            if (sfcdb != null)
            {
                DBPools["SFCDB"].Return(sfcdb);
            }
        }