Beispiel #1
0
        public string ShowCompareLineChart()
        {
            var inputValue = _ntsPage.Request.Form["Inputs"];
            var tabId      = int.Parse(_ntsPage.Request.Form["TabId"]);
            var query      = Newtonsoft.Json.JsonConvert.DeserializeObject <QueryCompare>(inputValue);
            var result     = new ResultCompare();

            switch (tabId)
            {
            case 0:
                result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IChart>("Chart")
                         .GetCompareChart(query);
                break;

            case 1:
                result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IChart>("Chart")
                         .GetAreaCompareChart(query);;
                break;
            }

            return(JsonForHightCharts.ShowColorColumnChart("对比柱状图", result.ObjectName.ToArray(), result.Dept.ToArray(),
                                                           result.Enery));
        }
Beispiel #2
0
        private List <decimal> GetYuceData(BasicQuery basicQuery, QueryLoadForecast queryLoad)
        {
            List <ResultCompare> compReult = new List <ResultCompare>();
            DateTime             deBegin   = new DateTime();
            DateTime             deEnd     = new DateTime();
            TimeSpan             ts        = queryLoad.EndTime - queryLoad.StartTime;
            int Days = ts.Days;

            #region  获取35%数据

            if (Days == 0)
            {
                deBegin = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 00:00:00")).AddDays(-10);
                deEnd   = queryLoad.StartTime;
                // 循环前10天
                for (DateTime begTime = deBegin; begTime < DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 00:00:00")); begTime = begTime.AddDays(1))
                {
                    BasicQuery baseQueryItem = basicQuery;
                    baseQueryItem.StartTime = begTime;
                    baseQueryItem.EndTime   = begTime;
                    ResultCompare reultCom = GetDateTongJiData(baseQueryItem);
                    compReult.Add(reultCom);
                }
            }
            else
            {
                if (queryLoad.StartTime.CompareTo(DateTime.Now) > 0)
                {
                    BasicQuery baseQueryItem = basicQuery;
                    baseQueryItem.StartTime = DateTime.Now.AddDays(-(Days + 1));;
                    baseQueryItem.EndTime   = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")).AddDays(-1);
                    ResultCompare reultCom = GetDateTongJiData(baseQueryItem);
                    compReult.Add(reultCom);
                }
                else
                {
                    BasicQuery baseQueryItem = basicQuery;
                    baseQueryItem.StartTime = queryLoad.StartTime.AddDays(-(Days + 1));;
                    baseQueryItem.EndTime   = queryLoad.StartTime.AddDays(-1);
                    ResultCompare reultCom = GetDateTongJiData(baseQueryItem);
                    compReult.Add(reultCom);
                }
            }
            #endregion

            #region 获取65%数据。
            //获取去年当天的预测值
            BasicQuery baseQuery2 = basicQuery;
            baseQuery2.StartTime = queryLoad.StartTime.AddYears(-1);
            baseQuery2.EndTime   = queryLoad.EndTime.AddYears(-1);
            var            resultList2 = GetDateTongJiData(baseQuery2);
            List <decimal> lstAvg2     = new List <decimal>();

            List <decimal> lstAvgMonth = GetAvgYuce(compReult, queryLoad);
            if (Days == 0)
            {
                foreach (var d in resultList2.Enery)
                {
                    List <decimal> lstDec = d.Value;
                    for (int i = 0; i < d.Value.Count; i++)
                    {
                        if (d.Value[i] > 0)
                        {
                            lstAvg2.Add(Math.Round((d.Value[i]), 2));
                        }
                    }
                }

                // 最终值。
                List <decimal> lstAvgEnd = new List <decimal>();
                for (int i = 0; i < lstAvgMonth.Count; i++)
                {
                    if (lstAvg2.Count == 0)
                    {
                        lstAvgEnd.Add(lstAvgMonth[i]);
                    }
                    else
                    {
                        lstAvgEnd.Add(lstAvgMonth[i] * 35 / 100 + lstAvg2[i] * 65 / 100);
                    }
                }

                return(lstAvgEnd);
            }
            else
            {
                foreach (var d in resultList2.Enery)
                {
                    List <decimal> lstDec = d.Value;
                    for (int i = 0; i < d.Value.Count; i++)
                    {
                        lstAvg2.Add(Math.Round((d.Value[i]), 2));
                    }
                }

                // 最终值。
                List <decimal> lstAvgEnd = new List <decimal>();
                for (int i = 0; i < lstAvgMonth.Count; i++)
                {
                    if (lstAvgMonth.Count == Days + 1)
                    {
                        if (lstAvg2.Count == 0)
                        {
                            decimal avgDec = lstAvgMonth[i];
                            lstAvgEnd.Add(Math.Round(avgDec, 2));
                        }
                        else
                        {
                            decimal avgDec = lstAvgMonth[i] * 35 / 100 + lstAvg2[i] * 65 / 100;
                            lstAvgEnd.Add(Math.Round(avgDec, 2));
                        }
                    }
                    else
                    {
                        throw new Exception("没有历史数据,无法进行预测");
                    }
                }

                return(lstAvgEnd);
            }

            #endregion
        }
        public string ExportQueryPeriod()
        {
            var inputValue = _ntsPage.Request["inputs"];;
            var query      = Newtonsoft.Json.JsonConvert.DeserializeObject <QueryContrastPeriods>(inputValue);

            var result = new ResultCompare();

            switch (query.QueryType)
            {
            case QueryOrderType.Default:
                result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IEnergyContrastService>("EnergyContrastService")
                         .GetPeriodsCompareChart(query);
                break;

            case QueryOrderType.UnitArea:
                result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IEnergyContrastService>("EnergyContrastService")
                         .GetPeriodsCompareChart(query);
                break;

            case QueryOrderType.UnitPerson:
                result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IEnergyContrastService>("EnergyContrastService")
                         .GetPersonNumPeriodsCompareChart(query);;
                break;

            default:
                result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IEnergyContrastService>("EnergyContrastService")
                         .GetPeriodsCompareChart(query);
                break;
            }
            string strAreaName = "";
            var    listObject  = dal.GetBaseLayerObjectList(" and layerobjectid = " + query.AreaId, "");

            if (listObject.Count > 0)
            {
                strAreaName = listObject[0].LayerObjectName;
            }
            string strDepName = "";

            if (result.Dept.Count > 0)
            {
                strDepName = result.Dept[0].ToString();
            }
            else
            {
                throw new Exception("没有数据信息");
            }

            switch (query.QueryType)
            {
            case QueryOrderType.CarbanOut:
                strDepName = "T";
                break;

            case QueryOrderType.ConvCoal:
                strDepName = "T";
                break;

            case QueryOrderType.Renminbi:
                strDepName = "元";
                break;
            }

            ResultContrast resultCon = JsonForHightChartsNew.IndexPeriodsContrastObjsChart(query, strAreaName, result.ObjectName.ToArray(), strDepName,
                                                                                           result.Enery);

            try
            {
                if (resultCon.ContrastLst.Count > 0)
                {
                    DataTable dt = TableView.CreateContrastDataTable();
                    for (var r = 0; r < resultCon.ContrastLst.Count; r++)
                    {
                        DataRow dr = dt.NewRow();
                        dr[1] = resultCon.ContrastLst[r].Tm.ToString();
                        dr[2] = resultCon.ContrastLst[r].Obj;
                        dr[3] = resultCon.ContrastLst[r].EneType;
                        dr[4] = resultCon.ContrastLst[r].Val;
                        dt.Rows.Add(dr);
                    }
                    string temp_path = AppDomain.CurrentDomain.BaseDirectory + "temp_file\\";
                    if (!Directory.Exists(temp_path))
                    {
                        Directory.CreateDirectory(temp_path);
                        string[] files = Directory.GetFiles(temp_path);
                        foreach (string fn in files)
                        {
                            File.Delete(temp_path + fn);
                        }
                    }
                    string save_path = DateTime.Now.Ticks + ".xls";

                    string templatePath = AppDomain.CurrentDomain.BaseDirectory + "template\\能耗对比表.xls";

                    TemplateParam param = new TemplateParam("能耗对比表", new CellParam(0, 0), "", new CellParam(3, 0), false, new CellParam(4, 0));
                    //TemplateParam param = new TemplateParam("itemCodeName", new CellParam(1, 1),"",null, false, new CellParam(5, 0));
                    param.DataColumn   = new[] { 0, 1, 2, 3, 4 };
                    param.ItemUnit     = "(单位:" + result.Dept[0].ToString() + ")";
                    param.ItemUnitCell = new CellParam(3, 4);

                    param.SortColumn = 0;
                    dt.TableName     = "能耗对比表";

                    ExportHelper.ExportExcel(dt, temp_path + save_path, templatePath, param);

                    return("{\"status\":\"success\",\"msg\":\"" + "/temp_file/" + save_path + "\"}");
                }
                else
                {
                    return("{\"status\":\"error\",\"msg\":\"导出失败:当前无任何数据\"}");
                }
            }
            catch (Exception ex)
            {
                return("{\"status\":\"error\",\"msg\":\"导出失败:由于当前无数据或其他原因导致" + ex.Message + "\"}");
            }
        }
        public ResultObjLst IndexContrastPeriodssLst()
        {
            try
            {
                var inputValue = _ntsPage.Request["inputs"];;
                var query      = Newtonsoft.Json.JsonConvert.DeserializeObject <QueryContrastPeriods>(inputValue);

                var    result     = new ResultCompare();
                string strDepName = "";
                switch (query.QueryType)
                {
                case QueryOrderType.Default:
                    result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IEnergyContrastService>("EnergyContrastService")
                             .GetPeriodsCompareChart(query);
                    strDepName = result.Dept[0].ToString();
                    break;

                case QueryOrderType.UnitArea:
                    result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IEnergyContrastService>("EnergyContrastService")
                             .GetPeriodsCompareChart(query);
                    strDepName = result.Dept[0].ToString();
                    break;

                case QueryOrderType.UnitPerson:
                    result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IEnergyContrastService>("EnergyContrastService")
                             .GetPersonNumPeriodsCompareChart(query);
                    strDepName = result.Dept[0].ToString();;
                    break;

                default:
                    result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IEnergyContrastService>("EnergyContrastService")
                             .GetPeriodsCompareChart(query);
                    strDepName = result.Dept[0].ToString();;
                    break;
                }
                switch (query.QueryType)
                {
                case QueryOrderType.CarbanOut:
                    strDepName = "T";
                    break;

                case QueryOrderType.ConvCoal:
                    strDepName = "T";
                    break;

                case QueryOrderType.Renminbi:
                    strDepName = "元";
                    break;
                }

                return(JsonForHightChartsNew.IndexContrastObjsLst(query, result.ObjectName.ToArray(), strDepName, result.Enery));
            }
            catch (Exception ex)
            {
                ResultObjLst   lst     = new ResultObjLst();
                ExecuteProcess process = new ExecuteProcess();
                process.ExceptionMsg = ex.Message;
                process.Success      = false;
                lst.ActionInfo       = process;
                return(lst);
            }
        }
        public ResultContrast IndexContrastPeriodsChart()
        {
            try
            {
                var inputValue = _ntsPage.Request["inputs"];;
                var query      = Newtonsoft.Json.JsonConvert.DeserializeObject <QueryContrastPeriods>(inputValue);

                var result = new ResultCompare();
                switch (query.QueryType)
                {
                case QueryOrderType.Default:
                    result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IEnergyContrastService>("EnergyContrastService")
                             .GetPeriodsCompareChart(query);
                    break;

                case QueryOrderType.UnitArea:
                    result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IEnergyContrastService>("EnergyContrastService")
                             .GetAreaPeriodsCompareChart(query);
                    break;

                case QueryOrderType.UnitPerson:
                    result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IEnergyContrastService>("EnergyContrastService")
                             .GetPersonNumPeriodsCompareChart(query);;
                    break;

                default:
                    result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IEnergyContrastService>("EnergyContrastService")
                             .GetPeriodsCompareChart(query);
                    break;
                }

                string strAreaName = "";
                var    listObject  = dal.GetBaseLayerObjectList(" and layerobjectid = " + query.AreaId, "");
                if (listObject.Count > 0)
                {
                    strAreaName = listObject[0].LayerObjectName;
                }
                string strDepName = "";
                if (result.Dept.Count > 0)
                {
                    strDepName = result.Dept[0].ToString();
                }
                else
                {
                    throw new Exception("没有数据信息");
                }

                switch (query.QueryType)
                {
                case QueryOrderType.CarbanOut:
                    strDepName = "T";
                    break;

                case QueryOrderType.ConvCoal:
                    strDepName = "T";
                    break;

                case QueryOrderType.Renminbi:
                    strDepName = "元";
                    break;
                }
                return(JsonForHightChartsNew.IndexPeriodsContrastObjsChart(query, strAreaName, result.ObjectName.ToArray(), strDepName,
                                                                           result.Enery));
            }
            catch (Exception ex)
            {
                ResultContrast con     = new ResultContrast();
                ExecuteProcess process = new ExecuteProcess();
                process.ExceptionMsg = ex.Message;
                process.Success      = false;
                con.ActionInfo       = process;
                return(con);
            }
        }
        public ResultObjLst IndexContrastObjsLst()
        {
            try
            {
                var inputValue = _ntsPage.Request["inputs"];;
                var oderObject = Newtonsoft.Json.JsonConvert.DeserializeObject <QueryOrderObjects>(inputValue);

                QueryCompare query = new QueryCompare();
                query.StartTime = oderObject.StartTime;
                query.EndTime   = oderObject.EndTime;
                query.ObjectNum = oderObject.AreaIdLst;
                query.ItemCode  = oderObject.ItemCode;
                query.ObjType   = oderObject.ObjType;
                query.Unit      = oderObject.Particle;

                if (oderObject.AreaIdLst.Count <= 1)
                {
                    throw new Exception("请选择多个对象进行比较!");
                }

                var result = new ResultCompare();
                switch (oderObject.QueryType)
                {
                case EnergyAnalyseQueryType.Default:
                    result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IEnergyContrastService>("EnergyContrastService")
                             .GetCompareChart(oderObject);
                    break;

                case EnergyAnalyseQueryType.UnitArea:
                    result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IEnergyContrastService>("EnergyContrastService")
                             .GetAreaCompareChart(oderObject);
                    break;

                case EnergyAnalyseQueryType.UnitPerson:
                    result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IEnergyContrastService>("EnergyContrastService")
                             .GetPersonNumCompareChart(oderObject);;
                    break;

                default:
                    result = Framework.Common.BaseWcf.CreateChannel <ServiceInterface.IEnergyContrastService>("EnergyContrastService")
                             .GetCompareChart(oderObject);
                    break;
                }

                string strDepName = "";
                if (result.Dept.Count > 0)
                {
                    strDepName = result.Dept[0].ToString();
                }
                else
                {
                    throw new Exception("没有数据信息");
                }

                switch (oderObject.QueryType)
                {
                case EnergyAnalyseQueryType.Convert2Co2:
                    strDepName = "T";
                    break;

                case EnergyAnalyseQueryType.Convert2Coal:
                    strDepName = "T";
                    break;

                case EnergyAnalyseQueryType.Convert2Money:
                    strDepName = "元";
                    break;
                }

                return(JsonForHightChartsNew.IndexContrastObjsLst(query, result.ObjectName.ToArray(), strDepName,
                                                                  result.Enery));
            }
            catch (Exception ex)
            {
                ResultObjLst   lst     = new ResultObjLst();
                ExecuteProcess process = new ExecuteProcess();
                process.ExceptionMsg = ex.Message;
                process.Success      = false;
                lst.ActionInfo       = process;
                return(lst);
            }
        }