Beispiel #1
0
        public decimal[] GetIndexCompareEnery(DateTime startTime, DateTime endTime)
        {
            decimal[] MonthResult = new decimal[2];
            //            string userid = "";
            //            try
            //            {
            //                userid = Utils.GetCookie("userid");
            //            }
            //            catch
            //            {
            //                userid = "";
            //            }
            //            var ObjectList = new List<Model.BaseLayerObject>();
            //            string where = "";
            //            if (string.IsNullOrEmpty(userid))
            //            {
            //                where = string.Format(@"and LayerObjectParentID={0} ", 0);
            //            }
            //            else
            //            {
            //                where = string.Format(@"and LayerObjectParentID={0} AND layerobjectid in( SELECT  AREAID from TB_USERGROUPAREARIGHT
            //WHERE USERGROUPID =(SELECT GROUPS FROM TB_USER WHERE ID={1} ))", 0, userid);
            //            }

            //            ObjectList = new DAL.BaseLayerObject().GetBaseLayerObjectList(where, string.Format(" order by LayerObjectID"));

            var ObjectList = new BLL.BaseLayerObject().GetBaseLayerObjectList(string.Format(" and LayerObjectParentID={0}", 0), " order by LayerObjectID");
            var ItemList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0", " order by ItemcodeID");
            List<string> ItemCodeStr = (from item in ItemList select item.ItemCodeNumber).ToList<string>();
            BaseQueryModel model = new BaseQueryModel();
            model.IsDevice = 0;
            model.ObjectList = (from p in ObjectList select p.LayerObjectID).ToList<int>();
            decimal tempConvert = 0;
            foreach (var item in ItemCodeStr)
            {
                decimal tempCount = 0;
                decimal tempCountConvert = 0;
                model.ItemCode = item;
                model.Unit = ChartUnit.unit_month;
                model.Starttime = startTime;
                model.Endtime = endTime;
                var ResList = reportBll.GetBaseEneryDataList(model);
                foreach (var r in ResList.BaseLayerObjectResults)
                {
                    tempCount += r.Value.Total;
                    tempCountConvert += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());
                }
                if (item == "01000")
                {
                    MonthResult[0] = tempCount;
                }
                tempConvert += tempCountConvert;
            }
            MonthResult[1] = tempConvert;
            return MonthResult;
        }
Beispiel #2
0
        /// <summary>
        /// 根据查询条件获取数据。
        /// </summary>
        /// <param name="basicQuery"></param>
        /// <returns></returns>
        public ResultCompare GetDateTongJiData(BasicQuery basicQuery)
        {
            var resultList = new ResultView.ResultCompare
            {
                ObjectName = new List<string>(),
                Enery = new Dictionary<string, List<decimal>>(),
                Dept = new List<string>()
            };

            List<Model.BaseLayerObject> objectList;
            if (basicQuery.AreaType == AreaType.Area)
            {
                objectList = new BLL.BaseLayerObject().GetBaseLayerObjectList(
                       string.Format(" and layerobjectid = {0}", basicQuery.ObjectNum), "");
            }
            else
            {
                objectList = new BLL.BaseLayerObject().GetBaseFuncLayerObjectList(
                string.Format(" and layerobjectid = {0}", basicQuery.ObjectNum), "");
            }

            EnergyContrast contst = new EnergyContrast();
            var result = contst.GetQueryLineChart(basicQuery);
            resultList.ObjectName = result.ObjectName;
            if (basicQuery.ItemCode != "00000")
            {
                var itemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + basicQuery.ItemCode + "'", " order by ItemcodeID")[0];
                resultList.Enery.Add(objectList[0].LayerObjectName, result.Enery[itemList.ItemCodeName]);
                for (int i = 0; i < result.Dept.Count; i++)
                {
                    resultList.Dept.Add(itemList.Unit);
                }
            }
            else
            {
                var tempValue = new decimal[result.Enery[result.Enery.Keys.First<string>()].Count];
                foreach (var re in result.Enery)
                {
                    for (var i = 0; i < re.Value.Count; i++)
                    {
                        tempValue[i] += re.Value[i];
                    }
                }
                for (int i = 0; i < result.Dept.Count; i++)
                {
                    resultList.Dept.Add("T");
                }
                resultList.Enery.Add(objectList[0].LayerObjectName, tempValue.ToList());
            }

            return resultList;
        }
Beispiel #3
0
        public IndexShopOrder GetIndexShopOrder(DateTime startTime, DateTime endTime)
        {
            var shopOrder = new IndexShopOrder
                {
                    TotalEneryOrderList = new List<EneryOrder>(),
                    AreaEneryOrderList = new List<EneryOrder>()
                };
            var shopOrderLast = new IndexShopOrder
            {
                TotalEneryOrderList = new List<EneryOrder>(),
                AreaEneryOrderList = new List<EneryOrder>()
            };

            Dictionary<int, string> cacheLayer = NTS.WEB.Common.CacheHelper.GetCache("object-Layer") as Dictionary<int, string>;
            if (cacheLayer == null)
            {
                var res = new LayerObjects().GetObjectLayers();
                NTS.WEB.Common.CacheHelper.SetCache("object-Layer", res);
                cacheLayer = res;
            }

            var deepth = cacheLayer.ContainsKey(int.Parse(ConfigurationManager.AppSettings["ShopLevel"])) ?
                int.Parse(ConfigurationManager.AppSettings["ShopLevel"]) : cacheLayer.Count;
            shopOrderLast.ShopLevel = GetShopLevel(deepth);

            //层级对象数据
            var listObject = new NTS.WEB.BLL.BaseLayerObject().GetBaseLayerObjectList
                (string.Format(" and layerobjectid in ({0})", cacheLayer[deepth]), " order by LayerObjectID");

            //拼接表名
            string tbName = "TS_COUNT_AREA_MONTH_" + startTime.Year.ToString();
            var monthDataList = new NTS.WEB.BLL.MonthDataObject().GetMonthDataObjectList(tbName, startTime.ToShortDateString());
            //分类分项
            var ItemList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0", " order by ItemcodeID");
            //总能耗
            //List<EneryOrder> lstTotal = (from o in listObject
            //                             join b in monthDataList
            //                             on o.LayerObjectID equals int.Parse(b.CNAME)
            //                             select new EneryOrder
            //                             {
            //                                 BuildingName = o.LayerObjectName,
            //                                 EneryValue = b.COUNTVALUE * ItemList.Find(p => p.ItemCodeNumber == b.ITEMCODE).ItemCoal

            //                             }).ToList();
            List<EneryOrder> lstTotal = (from o in listObject
                                         join b in monthDataList
                                         on o.LayerObjectID equals int.Parse(b.CNAME)
                                         select new EneryOrder
                                         {
                                             BuildingName = o.LayerObjectName,
                                             // EneryValue=0
                                             EneryValue = b.COUNTVALUE * Convert.ToDouble(ItemList.Find(p => p.ItemCodeNumber.Substring(0, 2) == b.ITEMCODE.Substring(0, 2)).ItemCoal.ToString())

                                         }).ToList();
            ////单位面积能耗
            List<EneryOrder> lstArea = (from o in listObject
                                        join b in monthDataList
                                        on o.LayerObjectID equals int.Parse(b.CNAME)
                                        select new EneryOrder
                                        {
                                            BuildingName = o.LayerObjectName,
                                            //EneryValue=0
                                            EneryValue = (b.COUNTVALUE * Convert.ToDouble(ItemList.Find(p => p.ItemCodeNumber.Substring(0, 2) == b.ITEMCODE.Substring(0, 2)).ItemCoal.ToString())) / o.AreaNum

                                        }).ToList();
            List<EneryOrder> lstTtl = new List<EneryOrder>();
            List<EneryOrder> lstAr = new List<EneryOrder>();

            //按对象名称分组
            var lstGpTtl = from item in lstTotal
                           group item by item.BuildingName;

            string nm = string.Empty;
            double sum = 0;
            foreach (var group in lstGpTtl)
            {
                nm = string.Empty;
                sum = 0;
                foreach (var v in group)
                {

                    nm = v.BuildingName;
                    sum += v.EneryValue;
                }
                lstTtl.Add(new EneryOrder { BuildingName = nm, EneryValue = sum });
            }

            var lstGpAr = from item in lstArea
                          group item by item.BuildingName;

            foreach (var group in lstGpAr)
            {
                nm = string.Empty;
                sum = 0;
                foreach (var v in group)
                {

                    nm = v.BuildingName;
                    sum += v.EneryValue;
                }
                lstAr.Add(new EneryOrder { BuildingName = nm, EneryValue = sum });
            }

            // var objectList = new NTS.WEB.BLL.BaseLayerObject().GetBaseLayerObjectList(string.Format(" and LayerObjectDeepth={0}", deepth), " order by LayerObjectID");

            //List<string> ItemCodeStr = (from item in ItemList select item.ItemCodeNumber).ToList<string>();
            //var model = new BaseQueryModel();
            //model.IsDevice = 0;
            //model.ObjectList = (from p in objectList select p.LayerObjectID).ToList<int>();
            //Dictionary<string, decimal> tempConvert = new Dictionary<string, decimal>();
            //Dictionary<string, decimal> tempAreaConvert = new Dictionary<string, decimal>();
            //decimal[] tempConvert = new decimal[objectList.Count];
            //decimal[] tempAreaConvert = new decimal[objectList.Count];

            //foreach (var item in ItemCodeStr)
            //{
            //    model.ItemCode = item;
            //    model.Unit = ChartUnit.unit_month;
            //    model.Starttime = startTime;
            //    model.Endtime = endTime;
            //    var resList = reportBll.GetBaseEneryDataList(model);
            //    const int order = 1;
            //    foreach ( var r in resList.BaseLayerObjectResults)
            //    {
            //        if(tempConvert.ContainsKey(r.Value.baseLayerObject.LayerObjectName))
            //        {
            //            tempConvert[r.Value.baseLayerObject.LayerObjectName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());
            //            tempAreaConvert[r.Value.baseLayerObject.LayerObjectName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()) /
            //                              decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString());
            //        }
            //        else
            //        {
            //            tempConvert.Add(r.Value.baseLayerObject.LayerObjectName, decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()));
            //            tempAreaConvert.Add(r.Value.baseLayerObject.LayerObjectName, decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()) /
            //                               decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString()));
            //        }
            //        shopOrder.TotalEneryOrderList.Add(new EneryOrder()
            //            {
            //                BuildingName = r.Value.baseLayerObject.LayerObjectName,
            //EneryValue = double.Parse(tempConvert[r.Value.baseLayerObject.LayerObjectName].ToString("f2")),
            //                OrderNum = order
            //            });

            //        shopOrder.AreaEneryOrderList.Add(new EneryOrder()
            //        {
            //            BuildingName = r.Value.baseLayerObject.LayerObjectName,
            //            EneryValue = double.Parse(tempAreaConvert[r.Value.baseLayerObject.LayerObjectName].ToString("f2")),
            //            OrderNum = order
            //        });
            //    }
            //}

            //var res1 = from p in shopOrder.TotalEneryOrderList group p by p.BuildingName into g select new { g.Key, BuildingName = g.Max(p => p.BuildingName), OrderNum = g.Max(p => p.OrderNum), EneryValue = g.Max(p => p.EneryValue) };
            //var res2 = from p in shopOrder.AreaEneryOrderList group p by p.BuildingName into g select new { g.Key, BuildingName = g.Max(p => p.BuildingName), OrderNum = g.Max(p => p.OrderNum), EneryValue = g.Max(p => p.EneryValue) };

            foreach (var c in lstTtl)
            {
                shopOrderLast.TotalEneryOrderList.Add(new EneryOrder
                {
                    BuildingName = c.BuildingName,
                    EneryValue = double.Parse(c.EneryValue.ToString("f2")),
                    OrderNum = c.OrderNum
                });
            }

            foreach (var c in lstAr)
            {
                shopOrderLast.AreaEneryOrderList.Add(new EneryOrder
                {
                    BuildingName = c.BuildingName,
                    EneryValue = double.Parse(c.EneryValue.ToString("f2")),
                    OrderNum = c.OrderNum
                });
            }
            return shopOrderLast;
        }
Beispiel #4
0
        public ResultQueryPie GetQueryPieChart(DataContact.BasicQuery query)
        {
            #region 定义区

            var resultList = new ResultView.ResultQueryPie
                {
                    ObjectName = new List<string>(),
                    Enery = new List<decimal>(),
                    Dept = new List<string>()
                };

            #endregion

            var objectList =
                new BLL.BaseLayerObject().GetBaseLayerObjectList(
                    string.Format(" and layerobjectparentid={0}", query.ObjectNum), " order by LayerObjectID");
            if (objectList.Count > 0)
            {
                decimal eTotal = 0;
                for (var i = 0; i < objectList.Count; i++)
                {
                    var querynew = new BasicQuery
                        {
                            StartTime = query.StartTime,
                            EndTime = query.EndTime,
                            ItemCode = query.ItemCode,
                            ObjectNum = objectList[i].LayerObjectID,
                            ObjectType = query.ObjectType,
                            Unit = query.Unit
                        };
                    //if (i < 5)
                    //{
                    if (query.ItemCode != "00000")
                    {
                        var item =
                            new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'",
                                                               " order by ItemcodeID")[0];

                        resultList.Dept.Add(item.Unit);
                    }
                    else
                    {
                        resultList.Dept.Add("T");
                    }
                    resultList.ObjectName.Add(objectList[i].LayerObjectName);

                    resultList.Enery.Add(new QueryEnery().GetQueryEneryTotal(querynew).TotalEnergy);
                    //}
                    //else
                    //{
                    //    eTotal += new QueryEnery().GetQueryEneryTotal(querynew).TotalEnergy;
                    //    if (i == objectList.Count - 1)
                    //    {
                    //        if (query.ItemCode != "00000")
                    //        {
                    //            var item =
                    //                new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'",
                    //                                                   " order by ItemcodeID")[0];
                    //            resultList.Dept.Add(item.Unit);
                    //        }
                    //        else
                    //        {
                    //            resultList.Dept.Add("T");
                    //        }
                    //        resultList.ObjectName.Add("其他");
                    //        resultList.Enery.Add(eTotal);
                    //    }
                    //}
                }
                if (resultList.Enery.Count > 5)
                {
                    //resultList.ObjectName[5] = "其他";
                    List<EnergyRank> lstEnergy = new List<EnergyRank>();

                    for (var i = 0; i < resultList.Enery.Count; i++)
                    {
                        EnergyRank er = new EnergyRank();
                        er.ObjName = resultList.ObjectName[i];
                        er.Energy = resultList.Enery[i];
                        lstEnergy.Add(er);

                    }
                    lstEnergy = lstEnergy.OrderByDescending(p => p.Energy).ToList();
                    resultList.Dept.Clear();
                    resultList.ObjectName.Clear();
                    resultList.Enery.Clear();

                    if (lstEnergy.Count < 6)
                    {
                        foreach (EnergyRank er in lstEnergy)
                        {
                            resultList.Dept.Add("T");
                            resultList.ObjectName.Add(er.ObjName);
                            resultList.Enery.Add(er.Energy);
                        }
                    }
                    else
                    {
                        for (int i = 0; i < 5; i++)
                        {
                            resultList.Dept.Add("T");
                            resultList.ObjectName.Add(lstEnergy[i].ObjName);
                            resultList.Enery.Add(lstEnergy[i].Energy);
                        }
                        resultList.Dept.Add("T");
                        resultList.ObjectName.Add("其他");
                        //统计排名第五以后的能耗总和。
                        resultList.Enery.Add(lstEnergy.GetRange(5, lstEnergy.Count - 5).Sum(p => p.Energy));
                    }
                }
                return resultList;
            }
            else
            {
                var deviceList = new List<Device>();
                if (query.ItemCode == "00000")
                {
                    deviceList = new NTS.WEB.BLL.BaseLayerObject().GetDeviceObjectList(" and areaid=" + query.ObjectNum, " order by deviceid");
                }
                else
                {
                    string itemCodeAll = query.ItemCode;
                    string tempCode = string.Empty;
                    var itemcodeList = new NTS.WEB.BLL.Itemcode().GetItemcodeList("  and ItemCodeNumber='" + query.ItemCode + "'", " order by itemcodeid")[0];
                    var itemcodeListChild = new NTS.WEB.BLL.Itemcode().GetItemcodeList("  and ParentID=" + itemcodeList.ParentID, " order by itemcodeid");
                    foreach (Model.Itemcode itemcode in itemcodeListChild)
                        tempCode += ",'" + itemcode.ItemCodeNumber + "'";
                    itemCodeAll = itemCodeAll.Length > 0 ? "'" + itemCodeAll + "'" : itemCodeAll.Substring(1);
                    deviceList = new NTS.WEB.BLL.BaseLayerObject().GetDeviceObjectList(" and ItemCodeID in (" + itemCodeAll + ") and areaid=" + query.ObjectNum, " order by deviceid");
                }
                if (deviceList.Count > 0)
                {
                    decimal eTotal = 0;
                    for (var i = 0; i < deviceList.Count; i++)
                    {
                        var querynew = new BasicQuery
                        {
                            StartTime = query.StartTime,
                            EndTime = query.EndTime,
                            ItemCode = query.ItemCode,
                            ObjectNum = deviceList[i].DeviceID,
                            ObjectType = query.ObjectType,
                            Unit = query.Unit
                        };
                        if (i < 5)
                        {
                            if (query.ItemCode != "00000")
                            {
                                var item =
                                    new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'",
                                                                       " order by ItemcodeID")[0];

                                resultList.Dept.Add(item.Unit);
                            }
                            else
                            {
                                resultList.Dept.Add("T");
                            }
                            resultList.ObjectName.Add(deviceList[i].DeviceName);
                            resultList.Enery.Add(new QueryEnery().GetDeviceQueryEneryTotal(querynew).TotalEnergy);
                        }
                        else
                        {
                            eTotal += new QueryEnery().GetDeviceQueryEneryTotal(querynew).TotalEnergy;
                            if (i == deviceList.Count - 1)
                            {
                                if (query.ItemCode != "00000")
                                {
                                    var item =
                                        new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'",
                                                                           " order by ItemcodeID")[0];
                                    resultList.Dept.Add(item.Unit);
                                }
                                else
                                {
                                    resultList.Dept.Add("T");
                                }
                                resultList.ObjectName.Add("其他");
                                resultList.Enery.Add(eTotal);
                            }
                        }
                    }
                    return resultList;
                }
            }
            return null;
        }
Beispiel #5
0
        public ResultCostQuery GetCostQuery4Demo(QueryCost query)
        {
            ResultCostQuery result = new ResultCostQuery()
            {
                FeePie = new PieHighChart() { series = new List<Series>() },
                FeeQueryCharts = new QuotaHighChart() { series = new List<EneryAnalyseSeries>() },
                FeeAnalyses = new FeeAnalyses(),
                FeeTbl = new FeeTbl() { FeeList = new List<List<string>>() }
            };

            result.FeePie.series.Add(new Series() { data = new List<EneryHighChart>() });

            #region itemCodeList
            List<Model.Itemcode> itemCodeList = new List<Model.Itemcode>();

            if (query.ItemCode == "00000")
            {//总能耗
                itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0 ", " order by ItemcodeID");
                result.Unit = "T";//标准煤单位
            }
            else
            {
                itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID");
                if (itemCodeList.Count > 0)
                {
                    result.Unit = itemCodeList[0].Unit;//单个分类分项单位
                    result.FeeTbl.Unit = itemCodeList[0].Unit;
                    result.FeeTbl.EneType = itemCodeList[0].ItemCodeName;
                    result.FeeAnalyses.EnergyUnit = result.Unit;
                }
            }
            #endregion

            #region 生成EndTime

            switch (query.Particle)
            {
                case Particle.Month://月 query.StartTime格式为yyyy-MM-01
                    query.EndTime = query.StartTime.AddMonths(1).AddDays(-1);
                    int day = DateTime.Now.Day;
                    if (query.StartTime.Year == DateTime.Now.Year && query.StartTime.Month == DateTime.Now.Month)//月、年第一天不算进去
                    {//当月
                        query.EndTime = DateTime.Now.AddDays(-1);//精确到前一天的能耗值
                    }
                    break;
                case Particle.Year://年  query.StartTime格式为yyyy-01-01
                    query.EndTime = query.StartTime.AddYears(1).AddMonths(-1);
                    if (query.StartTime.Year == DateTime.Now.Year)//月、年第一天不算进去
                    {
                        query.EndTime = DateTime.Now.AddDays(-1);
                    }
                    break;
                default:
                    query.EndTime = query.StartTime.AddMonths(1).AddDays(-1);
                    if (query.StartTime.Year == DateTime.Now.Year && query.StartTime.Month == DateTime.Now.Month)
                    {
                        query.EndTime = DateTime.Now.AddDays(-1);
                    }
                    break;
            }
            #endregion

            var cost = GenerateCost(query);

            if (cost.Count > 0)
            {
                result.FeeType = ((FeeType)cost[0].PAYMENT_TYPE).ToString();

                #region 绑定Highchart
                switch (((FeeType)cost[0].PAYMENT_TYPE))
                {
                    case FeeType.分时计费:
                        #region 绑定Highchart
                        result.FeeQueryCharts.series.Add(new EneryAnalyseSeries()
                        {
                            name = "尖时费用",
                            data = (from item in cost select decimal.Round(decimal.Parse(item.SHARP_COST.ToString()), 2)).ToList()
                        });
                        result.FeeQueryCharts.series.Add(new EneryAnalyseSeries()
                        {
                            name = "峰时费用",
                            data = (from item in cost select decimal.Round(decimal.Parse(item.HIGH_COST.ToString()), 2)).ToList()
                        });
                        result.FeeQueryCharts.series.Add(new EneryAnalyseSeries()
                        {
                            name = "平时费用",
                            data = (from item in cost select decimal.Round(decimal.Parse(item.MID_COST.ToString()), 2)).ToList()
                        });
                        result.FeeQueryCharts.series.Add(new EneryAnalyseSeries()
                        {
                            name = "谷时费用",
                            data = (from item in cost select decimal.Round(decimal.Parse(item.LOW_COST.ToString()), 2)).ToList()
                        });
                        #endregion

                        #region 绑定饼图

                        result.FeePie.series[0].data.Add(new EneryHighChart()
                        {
                            name = "尖时费用",
                            y = decimal.Round(decimal.Parse(cost.Select(t => t.SHARP_COST).Sum().ToString()), 2)
                        });
                        result.FeePie.series[0].data.Add(new EneryHighChart()
                        {
                            name = "峰时费用",
                            y = decimal.Round(decimal.Parse(cost.Select(t => t.HIGH_COST).Sum().ToString()), 2)
                        });
                        result.FeePie.series[0].data.Add(new EneryHighChart()
                        {
                            name = "平时费用",
                            y = decimal.Round(decimal.Parse(cost.Select(t => t.MID_COST).Sum().ToString()), 2)
                        });
                        result.FeePie.series[0].data.Add(new EneryHighChart()
                        {
                            name = "谷时费用",
                            y = decimal.Round(decimal.Parse(cost.Select(t => t.LOW_COST).Sum().ToString()), 2)
                        });

                        #endregion
                        break;
                    case FeeType.平时计费:

                        #region 绑定Highchart
                        result.FeeQueryCharts.series.Add(new EneryAnalyseSeries()
                        {
                            name = "平时费用",
                            data = (from item in cost select decimal.Round(decimal.Parse(item.TOTAL_COST.ToString()), 2)).ToList()
                        });
                        #endregion

                        #region 绑定饼图
                        result.FeePie.series[0].data.Add(new EneryHighChart()
                        {
                            name = "平时费用",
                            y = decimal.Round(decimal.Parse(cost.Select(t => t.MID_COST).Sum().ToString()), 2)
                        });

                        #endregion

                        break;
                    case FeeType.阶梯计费:

                        //1 峰 2 平 3 谷 4 尖
                        var stepsetting = _idal.GetStepSetting(query.ItemCode);

                        result.StepSettingID = (from i in stepsetting select i.GEARSID).ToList<int>();
                        if (result.StepSettingID.Contains(1))
                        {
                            result.FeeQueryCharts.series.Add(new EneryAnalyseSeries()
                            {
                                name = "第一档费用",
                                data = (from item in cost select decimal.Round(decimal.Parse(item.HIGH_COST.ToString()), 2)).ToList()
                            });
                            result.FeePie.series[0].data.Add(new EneryHighChart()
                            {
                                name = "第一档费用",
                                y = decimal.Round(decimal.Parse(cost.Select(t => t.HIGH_COST).Sum().ToString()), 2)
                            });
                        }
                        if (result.StepSettingID.Contains(2))
                        {
                            result.FeeQueryCharts.series.Add(new EneryAnalyseSeries()
                            {
                                name = "第二档费用",
                                data = (from item in cost select decimal.Round(decimal.Parse(item.MID_COST.ToString()), 2)).ToList()
                            });
                            result.FeePie.series[0].data.Add(new EneryHighChart()
                            {
                                name = "第二档费用",
                                y = decimal.Round(decimal.Parse(cost.Select(t => t.MID_COST).Sum().ToString()), 2)
                            });
                        }
                        if (result.StepSettingID.Contains(3))
                        {
                            result.FeeQueryCharts.series.Add(new EneryAnalyseSeries()
                            {
                                name = "第三档费用",
                                data = (from item in cost select decimal.Round(decimal.Parse(item.LOW_COST.ToString()), 2)).ToList()
                            });
                            result.FeePie.series[0].data.Add(new EneryHighChart()
                            {
                                name = "第三档费用",
                                y = decimal.Round(decimal.Parse(cost.Select(t => t.LOW_COST).Sum().ToString()), 2)
                            });
                        }
                        if (result.StepSettingID.Contains(4))
                        {
                            result.FeeQueryCharts.series.Add(new EneryAnalyseSeries()
                            {
                                name = "第四档费用",
                                data = (from item in cost select decimal.Round(decimal.Parse(item.SHARP_COST.ToString()), 2)).ToList()
                            });
                            result.FeePie.series[0].data.Add(new EneryHighChart()
                            {
                                name = "第四档费用",
                                y = decimal.Round(decimal.Parse(cost.Select(t => t.SHARP_COST).Sum().ToString()), 2)
                            });
                        }

                        break;
                }

                #endregion

                #region 绑定表格

                foreach (var item in cost)
                {
                    string time = "";
                    switch (query.Particle)
                    {
                        case Particle.Month:
                            time = item.TIMEID.ToString("yyyy-MM-dd");
                            break;
                        case Particle.Year:
                            time = item.TIMEID.Year + "-" + item.TIMEID.Month;
                            break;
                    }
                    List<string> fl = new List<string>();

                    fl.Add(time);
                    switch (((FeeType)cost[0].PAYMENT_TYPE))
                    {
                        case FeeType.分时计费:
                            fl.Add(item.TOTAL.ToString("0.00"));
                            fl.Add(item.TOTAL_COST.ToString("0.00"));
                            fl.Add(item.SHARP.ToString("0.00"));
                            fl.Add(item.SHARP_COST.ToString("0.00"));
                            fl.Add(item.HIGH.ToString("0.00"));
                            fl.Add(item.HIGH_COST.ToString("0.00"));
                            fl.Add(item.MID.ToString("0.00"));
                            fl.Add(item.MID_COST.ToString("0.00"));
                            fl.Add(item.LOW.ToString("0.00"));
                            fl.Add(item.LOW_COST.ToString("0.00"));
                            break;
                        case FeeType.平时计费:
                            fl.Add(item.TOTAL.ToString("0.00"));
                            fl.Add(item.TOTAL_COST.ToString("0.00"));

                            break;
                        case FeeType.阶梯计费:
                            fl.Add(item.TOTAL.ToString("0.00"));
                            fl.Add(item.TOTAL_COST.ToString("0.00"));

                            if (result.StepSettingID.Contains(1))
                            {
                                fl.Add(item.HIGH.ToString("0.00"));
                                fl.Add(item.HIGH_COST.ToString("0.00"));
                            }
                            if (result.StepSettingID.Contains(2))
                            {
                                fl.Add(item.MID.ToString("0.00"));
                                fl.Add(item.MID_COST.ToString("0.00"));
                            }
                            if (result.StepSettingID.Contains(3))
                            {
                                fl.Add(item.LOW.ToString("0.00"));
                                fl.Add(item.LOW_COST.ToString("0.00"));
                            }
                            if (result.StepSettingID.Contains(4))
                            {
                                fl.Add(item.SHARP.ToString("0.00"));
                                fl.Add(item.SHARP_COST.ToString("0.00"));
                            }

                            break;
                    }

                    result.FeeTbl.FeeList.Add(fl);
                }
                #endregion

                #region 绑定分析

                result.FeeAnalyses.TotalEnergy = decimal.Round(
                  decimal.Parse(cost.Select(t => t.TOTAL).Sum().ToString()), 2);
                result.FeeAnalyses.TotalVal = decimal.Round(
                   decimal.Parse(cost.Select(t => t.TOTAL_COST).Sum().ToString()), 2);
                result.FeeAnalyses.MaxVal = decimal.Round(
                  decimal.Parse(cost.Select(t => t.TOTAL_COST).Max().ToString()), 2);
                result.FeeAnalyses.MinVal = decimal.Round(
                   decimal.Parse(cost.Select(t => t.TOTAL_COST).Min().ToString()), 2);
                result.FeeAnalyses.AvgVal = decimal.Round(
                    decimal.Parse(cost.Select(t => t.TOTAL_COST).Average().ToString()), 2);
                #endregion

                query.StartTime = query.StartTime.AddMonths(-1);
                query.EndTime = query.EndTime.AddMonths(-1);
                cost = GenerateCost(query);
                result.FeeAnalyses.EnergyLastMonth = decimal.Round(
                      decimal.Parse(cost.Select(t => t.TOTAL_COST).Sum().ToString()), 2);
                if (result.FeeAnalyses.EnergyLastMonth > 0)
                {
                    result.FeeAnalyses.CompareLastMonth = decimal.Round(100 * (result.FeeAnalyses.TotalVal - result.FeeAnalyses.EnergyLastMonth) / result.FeeAnalyses.EnergyLastMonth, 2)
                                 .ToString(CultureInfo.InvariantCulture) + "%";
                }
            }
            else
            {
                return null;
            }

            return result;
        }
Beispiel #6
0
        public string ExportExcelCostQuery()
        {
            var inputValue = _ntsPage.Request.Form["Inputs"];
            var query = Newtonsoft.Json.JsonConvert.DeserializeObject<QueryCost>(inputValue);
            var result = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.ICostQueryService>("CostQueryService").GetCostQuery(query);
            string objectName = "";
            switch(query.ObjType)
            {
                case AreaType.Area:
                    objectName = new BLL.BaseLayerObject().GetBaseLayerObjectList(
                    string.Format(" and layerobjectid={0}", query.ObjectId), " order by LayerObjectID")[0].LayerObjectName;
                    break;
                case AreaType.Liquid:
                    objectName = new BLL.BaseLayerObject().GetBaseFuncLayerObjectList(
                    string.Format(" and layerobjectid={0}", query.ObjectId), " order by LayerObjectID")[0].LayerObjectName;
                    break;
            }

            var dept = string.Empty;
            List<Model.Itemcode> itList = null;
            string unit = "";
            string itemCodeName = "";

                itList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID");
                if (itList.Count > 0)
                {
                    dept = itList[0].Unit;
                }

                unit = query.ItemCode == "00000" ? "T" : dept;
                itemCodeName = itList.Count == 0 ? "总能耗" : itList[0].ItemCodeName;

            try
            {
                if (result.FeeTbl != null)
                {

                    if (result.FeeTbl.FeeList.Count > 0)
                    {
                        DataTable dt = TableView.CreateCostQueryDataTable(result);
                        for (var r = 0; r < result.FeeTbl.FeeList.Count; r++)
                        {
                            DataRow dr = dt.NewRow();
                            for (int j = 1; j <= dt.Columns.Count - 1; j++)
                            {
                                dr[j] = result.FeeTbl.FeeList[r][j - 1];
                            }

                            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";
                        string time = "";
                        switch (query.Particle)
                        {
                            case Particle.Month:
                                time = query.StartTime.Year + "-" + query.StartTime.Month + "月";
                                break;
                            case Particle.Year:
                                time = query.StartTime.Year + "年";
                                break;

                        }
                        TemplateParam param = new TemplateParam(objectName + " 费用查询---" + itemCodeName + "能耗",
                                                                new CellParam(0, 0), time, new CellParam(3, 0), true,
                                                                new CellParam(4, 0));

                        List<int> columnIndex = new List<int>();
                        for (int i = 0; i <= dt.Columns.Count - 1; i++)
                        {
                            columnIndex.Add(i);

                        }
                        param.DataColumn = columnIndex.ToArray();
                        param.ItemUnit = "(单位:" + unit + ")";
                        param.ItemUnitCell = new CellParam(3, 5);

                        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\":\"导出失败:当前无任何数据\"}";
                    }
                }
                else
                {
                    return "{\"status\":\"error\",\"msg\":\"导出失败:当前无任何数据\"}";
                }

            }
            catch (Exception ex)
            {
                return "{\"status\":\"error\",\"msg\":\"导出失败:由于当前无数据或其他原因导致" + ex.Message + "\"}";
            }
        }
Beispiel #7
0
        public string ExportExcelDataRankingNew()
        {
            var inputValue = _ntsPage.Request.Form["Inputs"];

            var query = Newtonsoft.Json.JsonConvert.DeserializeObject<QueryOrderObjects>(inputValue);
            string icode = query.ItemCode;
            query.QueryType = EnergyAnalyseQueryType.Default;
            ResultOrder resultAll = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IQueryEnery>("EneryQuery")
                                  .GetShopOrderNew(query);

            query.QueryType = EnergyAnalyseQueryType.UnitArea;

            ResultOrder resultArea = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IQueryEnery>("EneryQuery")
                            .GetShopOrderNew(query);

            query.QueryType = EnergyAnalyseQueryType.UnitPerson;

            ResultOrder resultPerson = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IQueryEnery>("EneryQuery")
                             .GetShopOrderNew(query);

            var dept = string.Empty;
            var itList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID");
            if (itList.Count > 0)
            {
                dept = itList[0].Unit;
            }

            string unit = icode == "00000" ? "T" : dept;
            //switch (query.QueryType)
            //{
            //    case EnergyAnalyseQueryType.Convert2Co2:
            //    case EnergyAnalyseQueryType.Convert2Coal:
            //        unit = "T";//标准煤单位
            //        break;
            //    case EnergyAnalyseQueryType.Convert2Money:
            //        unit = "元";//标准煤单位
            //        break;
            //}
            string itemCodeName = itList.Count == 0 ? "总能耗" : itList[0].ItemCodeName;

            try
            {
                if (query.AreaIdLst.Count > 0)
                {
                    DataTable dt = TableView.CreateOrderBaseDataTable();
                    for (var r = 0; r < resultAll.OrderLst.Count; r++)
                    {

                        DataRow dr = dt.NewRow();
                        dr[1] = resultAll.OrderLst[r].Obj;
                        dr[2] = query.AreaIdLst;
                        dr[3] = resultAll.OrderLst[r].Obj;
                        dr[4] = resultAll.OrderLst[r].Obj;
                        dr[5] = resultAll.OrderLst[r].Obj;
                        dr[6] = itemCodeName;
                        dr[7] = decimal.Round(decimal.Parse(resultAll.OrderLst[r].Val.ToString()), 2).ToString();
                        dr[8] = resultArea.OrderLst == null ? "0" : decimal.Round(decimal.Parse(resultArea.OrderLst[r].Val.ToString()), 2).ToString();
                        dr[9] = resultPerson.OrderLst == null ? "0" : decimal.Round(decimal.Parse(resultPerson.OrderLst[r].Val.ToString()), 2).ToString();

                        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";
                    if (!File.Exists(templatePath))
                    {
                        return "{\"status\":\"error\",\"msg\":\"未发现Excel模板文件\"}";
                    }
                    TemplateParam param = new TemplateParam(itemCodeName + " ", new CellParam(0, 0), query.StartTime.ToString("yyyy-MM-dd") + "~" + query.EndTime.ToString("yyyy-MM-dd"), new CellParam(3, 0), false, new CellParam(4, 0));
                    param.DataColumn = new[] { 0, 3, 7, 8, 9 };
                    param.ItemUnit = "(单位:" + unit + ")";
                    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 + "\"}";
            }
        }
Beispiel #8
0
        public ResultItemCode GetQueryLineChart(BasicQuery query)
        {
            #region 定义区

            var resultList = new ResultView.ResultItemCode
            {
                ObjectName = new List<string>(),
                Enery = new Dictionary<string, List<decimal>>(),
                Dept = new List<string>()
            };

            #endregion

            var dept = string.Empty;

            var itList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID");
            if (itList.Count > 0)
            {
                dept = itList[0].Unit;
            }

            dept = query.ItemCode == "00000" ? "T" : dept;
            if (query.ItemCode == "00000")
            {
                // resultList.Dept = new List<string>() { "T" };
                var itemList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0", " order by ItemcodeID");
                var eneryDataListTotal = new Dictionary<string, Dictionary<string, decimal>>();
                var maxcode = "01000";
                var count = 0;
                foreach (var itemcode in itemList)
                {
                    var lineChart = GetSingleItemCodeByObject(query, itemcode.ItemCodeNumber);

                    if (count < lineChart.Count)
                    {
                        count = lineChart.Count;
                        maxcode = itemcode.ItemCodeNumber;
                    }
                    eneryDataListTotal.Add(itemcode.ItemCodeNumber, lineChart);

                    //  resultList.Enery.Add(itemcode.ItemCodeName, lineChart.DatePickEnery);
                }

                // 重新赋值
                foreach (var itemcode in itemList)
                {
                    var itemcode1 = itemcode;
                    foreach (var max in eneryDataListTotal[maxcode].Where(max => !eneryDataListTotal[itemcode1.ItemCodeNumber].ContainsKey(max.Key)))
                    {
                        eneryDataListTotal[itemcode.ItemCodeNumber].Add(max.Key, 0);
                    }
                    var temp = eneryDataListTotal[itemcode.ItemCodeNumber].OrderBy(p => Convert.ToDateTime(p.Key));
                    var tempOrder = temp.ToDictionary(keyValuePair => keyValuePair.Key, keyValuePair => keyValuePair.Value);
                    eneryDataListTotal[itemcode.ItemCodeNumber] = tempOrder;
                    resultList.Enery.Add(itemcode.ItemCodeName, eneryDataListTotal[itemcode.ItemCodeNumber].Values.ToList());
                }
                resultList.ObjectName = eneryDataListTotal[maxcode].Select(p => p.Key.ToString(CultureInfo.InvariantCulture)).ToList();
            }
            else
            {
                var item = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID")[0];
                var lineChart = GetSingleItemCodeByObject(query, query.ItemCode);
                // resultList.Dept = new List<string>() {item.Unit};
                if (lineChart != null)
                {
                    resultList.ObjectName = lineChart.Select(p => p.Key.ToString()).ToList();
                    resultList.Enery.Add(item.ItemCodeName, lineChart.Select(p => decimal.Parse(p.Value.ToString())).ToList());
                }

            }
            foreach (var baseLayerObject in resultList.ObjectName)
            {
                resultList.Dept.Add(dept);
            }
            return resultList;
        }
Beispiel #9
0
        /// <summary>
        /// add by: jy
        /// add at: 2014-3-24
        /// note  : 人均能耗对比
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public ResultCompare GetPersonNumCompareChart(QueryOrderObjects queryObject)
        {
            #region 定义区

            var resultList = new ResultView.ResultCompare
            {
                ObjectName = new List<string>(),
                Enery = new Dictionary<string, List<decimal>>(),
                Dept = new List<string>()
            };

            #endregion

            var olist = queryObject.AreaIdLst.Aggregate(string.Empty, (current, q) => current + ("," + q.ToString()));

            if (olist.Length > 0)
            {
                List<Model.BaseLayerObject> objectList;
                if (queryObject.ObjType == AreaType.Area)
                {
                    objectList =
                      new BLL.BaseLayerObject().GetBaseLayerObjectList(
                           string.Format(" and layerobjectid in ({0})", olist.Substring(1)), " order by LayerObjectID");
                }
                else
                {
                    objectList =
              new BLL.BaseLayerObject().GetBaseFuncLayerObjectList(
               string.Format(" and layerobjectid in ({0})", olist.Substring(1)), " order by LayerObjectID");
                }

                foreach (var o in objectList)
                {
                    var basicQuery = new BasicQuery
                    {
                        EndTime = queryObject.EndTime,
                        StartTime = queryObject.StartTime,
                        ItemCode = queryObject.ItemCode,
                        Unit = queryObject.Particle,
                        AreaType = queryObject.ObjType,
                        QueryType = queryObject.QueryType
                    };
                    basicQuery.ObjectNum = o.LayerObjectID;
                    var result = GetQueryLineChart(basicQuery);
                    //resultList.Dept = result.Dept;
                    resultList.ObjectName = result.ObjectName;
                    if (queryObject.ItemCode != "00000")
                    {
                        var itemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + queryObject.ItemCode + "'", " order by ItemcodeID")[0];
                        //resultList.Enery.Add(o.LayerObjectName, result.Enery[itemList.ItemCodeName]);
                        for (int i = 0; i < result.Dept.Count; i++)
                        {
                            resultList.Dept.Add(itemList.Unit);
                        }

                        resultList.Enery.Add(o.LayerObjectName, result.Enery[itemList.ItemCodeName].Select(p => p / decimal.Parse(o.PersonNum.ToString())).ToList());
                    }
                    else
                    {
                        var tempValue = new decimal[result.Enery[result.Enery.Keys.First<string>()].Count];
                        foreach (var re in result.Enery)
                        {
                            for (var i = 0; i < re.Value.Count; i++)
                            {
                                tempValue[i] += re.Value[i];
                            }
                        }
                        for (int i = 0; i < result.Dept.Count; i++)
                        {
                            resultList.Dept.Add("T");
                        }
                        resultList.Enery.Add(o.LayerObjectName, tempValue.ToList().Select(p => p / decimal.Parse(o.PersonNum.ToString())).ToList());
                    }
                }
                return resultList;
            }
            return null;
        }
Beispiel #10
0
        public ResultEnergyAnalyse GetEnergyAnalyseLineChart_OLD(QueryAnalyse query)
        {
            try
            {

                VerifyPersonOrAreaExist(query);
                #region 返回对象定义
                ResultEnergyAnalyse result = new ResultEnergyAnalyse()
                {
                    OrderLst = new List<EnergyOrder>(),
                    series = new List<EneryAnalyseSeries>()

                };
                result.series.Add(new EneryAnalyseSeries() { data = new List<decimal>() });
                #endregion

                List<Model.Itemcode> itemCodeList = new List<Model.Itemcode>();
                if (query.IsDevice == 0)
                {
                    if (query.ItemCode == "00000")
                    {//总能耗
                        itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0 ", " order by ItemcodeID");
                        result.Unit = "T";//标准煤单位
                        result.series[0].name = "总能耗";
                    }
                    else
                    {
                        itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID");
                        if (itemCodeList.Count > 0)
                        {
                            result.Unit = itemCodeList[0].Unit;//单个分类分项单位
                            result.series[0].name = itemCodeList[0].ItemCodeName;

                            //var itemchildCodeList = new BLL.Itemcode().GetItemcodeList(string.Format(" and ParentID={0} ", itemCodeList[0].ItemcodeID), " order by ItemcodeID");

                            //if (itemchildCodeList.Count > 0)
                            //{
                            //    itemCodeList = itemchildCodeList;
                            //}
                        }

                    }
                }
                else
                {
                    var deviceList = new NTS.WEB.BLL.BaseLayerObject().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectId), " order by deviceid");
                    itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + deviceList[0].ItemCodeID + "'", " order by ItemcodeID");
                    if (itemCodeList.Count > 0)
                    {
                        result.Unit = itemCodeList[0].Unit;//单个分类分项单位
                        result.series[0].name = itemCodeList[0].ItemCodeName;
                    }
                    if (query.ItemCode == "00000")
                    {//总能耗

                        result.Unit = "T";//标准煤单位
                        result.series[0].name = "总能耗";
                    }

                }

                switch (query.QueryType)
                {
                    case EnergyAnalyseQueryType.Convert2Co2:
                    case EnergyAnalyseQueryType.Convert2Coal:
                        result.Unit = "T";//标准煤单位
                        break;
                    case EnergyAnalyseQueryType.Convert2Money:
                        result.Unit = "元";//标准煤单位
                        break;
                }

                DateTime tempStartTime = query.StartTime;
                DateTime tempEndTime = query.EndTime;
                switch (query.QueryType)
                {
                    case EnergyAnalyseQueryType.YearCompare://同比值
                        tempStartTime = tempStartTime.AddYears(-1);
                        tempEndTime = tempEndTime.AddYears(-1);
                        break;
                    case EnergyAnalyseQueryType.MonthCompare://环比值
                        tempStartTime = tempStartTime.AddMonths(-1);
                        tempEndTime = tempEndTime.AddMonths(-1);

                        break;
                }
                Dictionary<string, decimal> tempConvert = new Dictionary<string, decimal>();
                Dictionary<string, decimal> tempConvertHour = new Dictionary<string, decimal>();
                var model = new BaseQueryModel();
                model.IsDevice = query.IsDevice;
                model.ObjectList = new List<int>();

                model.ObjectList = new List<int>() { query.ObjectId };

                //if (model.IsDevice == 0)
                //{//区域
                //    model.ObjectList = new List<int>() { query.ObjectId };
                //}
                //else
                //{
                //    var device = new BLL.BaseLayerObject().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectId), " order by deviceid");
                //    if (device.Count > 0)
                //    {
                //        model.ObjectList = (from p in device select p.DeviceID).ToList<int>();
                //    }
                //}
                //model.Unit = GetUnit(query.StartTime, query.EndTime);
                model.Unit = BaseTool.GetChartUnit(query.particle);
                if (model.Unit == ChartUnit.unit_month)
                {
                    model.Starttime = Convert.ToDateTime(tempStartTime.ToString("yyyy-MM-1"));
                    model.Endtime = Convert.ToDateTime(tempEndTime.ToString("yyyy-MM-1"));
                }
                else
                {
                    model.Starttime = tempStartTime;
                    model.Endtime = tempEndTime;
                }
                int templastmonthdays = 0;
                switch (model.Unit)
                {
                    case ChartUnit.unit_month:
                        for (DateTime i = model.Starttime; i <= model.Endtime; i = i.AddMonths(1))
                        {
                            tempConvert.Add(i.ToString("yyyy-MM-dd"), 0);
                        }
                        break;
                    case ChartUnit.unit_hour:
                        for (DateTime i = model.Starttime; i < model.Endtime.AddDays(1); i = i.AddHours(1))
                        {
                            tempConvert.Add(i.ToString("yyyy-MM-dd HH:00:00"), 0);
                        }
                        break;
                    case ChartUnit.unit_day:
                        if ((DateTime.Now- model.Endtime).Days>0)
                        {
                            for (DateTime i = model.Starttime; i <= model.Endtime; i = i.AddDays(1))
                            {
                                tempConvert.Add(i.ToString(("yyyy-MM-dd")), 0);
                            }
                        }
                        else
                        {
                            for (DateTime i = model.Starttime; i <= model.Endtime.AddDays(-1); i = i.AddDays(1))
                            {
                                tempConvert.Add(i.ToString(("yyyy-MM-dd")), 0);
                            }
                            for (DateTime i = model.Endtime; i <= DateTime.Now; i = i.AddHours(1))
                            {
                                tempConvertHour.Add(i.ToString("yyyy-MM-dd HH:00:00"), 0);
                            }

                        }

                        templastmonthdays = (model.Endtime - model.Starttime).Days;
                        break;
                }
                string objName = "";
                foreach (var item in itemCodeList)
                {
                    model.ItemCode = item.ItemCodeNumber;

                    BaseResult resList = _reportBll.GetBaseEneryDataList(model, query.ObjType == AreaType.Liquid ? true : false);

                    foreach (var r in resList.BaseLayerObjectResults)
                    {
                        if (model.IsDevice == 0)
                        {
                            objName = r.Value.baseLayerObject.LayerObjectName;//取区域名称
                        }
                        else
                        {
                            objName = r.Value.device.DeviceName;
                        }
                        foreach (var rr in r.Value.Datas)
                        {
                            if (query.ItemCode == "00000")
                            {
                                switch (query.QueryType)
                                {
                                    case EnergyAnalyseQueryType.Default://默认
                                    case EnergyAnalyseQueryType.YearCompare://默认
                                    case EnergyAnalyseQueryType.MonthCompare://默认
                                        tempConvert[rr.DatePick] += rr.CoalDataValue;
                                        break;
                                    case EnergyAnalyseQueryType.UnitArea://单位面积
                                        tempConvert[rr.DatePick] += rr.CoalDataValue / decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString());

                                        break;
                                    case EnergyAnalyseQueryType.UnitPerson://人均
                                        tempConvert[rr.DatePick] += rr.CoalDataValue / decimal.Parse(r.Value.baseLayerObject.PersonNum.ToString());
                                        break;
                                    case EnergyAnalyseQueryType.Convert2Coal://
                                        tempConvert[rr.DatePick] += rr.CoalDataValue;
                                        break;
                                    case EnergyAnalyseQueryType.Convert2Co2://
                                        tempConvert[rr.DatePick] += rr.Co2DataValue;
                                        break;
                                    case EnergyAnalyseQueryType.Convert2Money://
                                        tempConvert[rr.DatePick] += rr.MoneyDataValue;
                                        break;
                                }
                            }
                            else
                            {
                                switch (query.QueryType)
                                {
                                    case EnergyAnalyseQueryType.Default://默认
                                    case EnergyAnalyseQueryType.YearCompare://默认
                                    case EnergyAnalyseQueryType.MonthCompare://默认
                                        tempConvert[rr.DatePick] += rr.DataValue;
                                        break;
                                    case EnergyAnalyseQueryType.UnitArea://单位面积
                                        tempConvert[rr.DatePick] += rr.DataValue / decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString());

                                        break;
                                    case EnergyAnalyseQueryType.UnitPerson://人均
                                        tempConvert[rr.DatePick] += rr.DataValue / decimal.Parse(r.Value.baseLayerObject.PersonNum.ToString());
                                        break;
                                    case EnergyAnalyseQueryType.Convert2Coal://
                                        tempConvert[rr.DatePick] += rr.CoalDataValue;
                                        break;
                                    case EnergyAnalyseQueryType.Convert2Co2://
                                        tempConvert[rr.DatePick] += rr.Co2DataValue;
                                        break;
                                    case EnergyAnalyseQueryType.Convert2Money://
                                        tempConvert[rr.DatePick] += rr.MoneyDataValue;
                                        break;
                                }

                            }
                        }
                    }
                }
                int order = 1;
                foreach (var item in tempConvert)
                {

                    var time = item.Key;
                    if (model.Unit == ChartUnit.unit_month)
                    {
                        time = Convert.ToDateTime(time).ToString("yyyy-MM");
                    }

                    decimal value = decimal.Round(item.Value, 2);
                    result.series[0].data.Add(value);
                    result.OrderLst.Add(new EnergyOrder()
                    {
                        Order = order,
                        Tm = time,
                        Obj = objName,
                        Val = value,
                        EneType = result.series[0].name
                        // EneType =itemCodeList.Count > 1 ? "总能耗" : itemCodeList[0].ItemCodeName

                    });
                    order++;
                }
                if (query.QueryType == EnergyAnalyseQueryType.MonthCompare)
                {
                    int tempcurrentdays = (query.EndTime - query.StartTime).Days;
                    //int index = (28 - query.StartTime.Day) < 0 ? 0 : (28 - query.StartTime.Day);

                    if (model.Unit == ChartUnit.unit_day)
                    {
                        if (tempcurrentdays > templastmonthdays)
                        {//当前时间范围大于上月环比范围
                            int index = System.DateTime.DaysInMonth(query.StartTime.AddMonths(-1).Year, query.StartTime.AddMonths(-1).Month) - query.StartTime.Day;
                            if (index < 0)
                            {
                                index = 0;
                            }
                            for (int i = templastmonthdays; i < tempcurrentdays; i++)
                            {
                                result.series[0].data.Insert(index, result.series[0].data[index]);
                            }

                        }
                        else
                        {
                            if (tempcurrentdays < templastmonthdays)
                            {
                                int index = System.DateTime.DaysInMonth(query.StartTime.AddMonths(-1).Year, query.StartTime.AddMonths(-1).Month) - query.StartTime.Day;
                                for (int i = tempcurrentdays; i < templastmonthdays; i++)
                                {
                                    result.series[0].data.RemoveAt(index);
                                    index--;
                                }
                            }
                        }

                        //for (int i = 0; i < ((query.EndTime - query.StartTime).Days - tempdaycount); i++)
                        //{
                        //    result.series[0].data.Insert(index, result.series[0].data[index]);

                        //}

                    }
                }

                return result;
            }
            catch (Exception ee)
            {
                throw ee;
            }
        }
Beispiel #11
0
        public ResultEnergyAnalyse GetEnergyAnalyseLineChart(QueryAnalyse query)
        {
            try
            {
                VerifyPersonOrAreaExist(query);
                #region 返回对象定义
                ResultEnergyAnalyse result = new ResultEnergyAnalyse()
                {
                    OrderLst = new List<EnergyOrder>(),
                    series = new List<EneryAnalyseSeries>()

                };
                result.series.Add(new EneryAnalyseSeries() { data = new List<decimal>() });
                #endregion

                List<Model.Itemcode> itemCodeList = new List<Model.Itemcode>();
                if (query.IsDevice == 0)
                {
                    if (query.ItemCode == "00000")
                    {//总能耗
                        itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0 ", " order by ItemcodeID");
                        result.Unit = "T";//标准煤单位
                        result.series[0].name = "总能耗";
                    }
                    else
                    {
                        itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID");
                        if (itemCodeList.Count > 0)
                        {
                            result.Unit = itemCodeList[0].Unit;//单个分类分项单位
                            result.series[0].name = itemCodeList[0].ItemCodeName;
                        }

                    }
                }
                else
                {
                    var deviceList = new NTS.WEB.BLL.BaseLayerObject().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectId), " order by deviceid");
                    itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + deviceList[0].ItemCodeID + "'", " order by ItemcodeID");
                    if (itemCodeList.Count > 0)
                    {
                        result.Unit = itemCodeList[0].Unit;//单个分类分项单位
                        result.series[0].name = itemCodeList[0].ItemCodeName;
                    }
                    if (query.ItemCode == "00000")
                    {//总能耗

                        result.Unit = "T";//标准煤单位
                        result.series[0].name = "总能耗";
                    }

                }

                switch (query.QueryType)
                {
                    case EnergyAnalyseQueryType.Convert2Co2:
                    case EnergyAnalyseQueryType.Convert2Coal:
                        result.Unit = "T";//标准煤单位
                        break;
                    case EnergyAnalyseQueryType.Convert2Money:
                        result.Unit = "元";//标准煤单位
                        break;
                }

                DateTime tempStartTime = query.StartTime;
                DateTime tempEndTime = query.EndTime;
                if ((DateTime.Now - tempEndTime).Days == 0)
                {
                    tempEndTime = DateTime.Now;
                }
                switch (query.QueryType)
                {
                    case EnergyAnalyseQueryType.YearCompare://同比值
                        tempStartTime = tempStartTime.AddYears(-1);
                        tempEndTime = tempEndTime.AddYears(-1);
                        break;
                    case EnergyAnalyseQueryType.MonthCompare://环比值

                        tempStartTime = tempStartTime.AddMonths(-1);
                        tempEndTime = tempEndTime.AddMonths(-1);

                        break;
                }
                Dictionary<string, decimal> tempConvert = new Dictionary<string, decimal>();
                Dictionary<string, decimal> tempConvertHour = new Dictionary<string, decimal>();
                var model = new BaseQueryModel();
                model.IsDevice = query.IsDevice;
                model.ObjectList = new List<int>();

                model.ObjectList = new List<int>() { query.ObjectId };

                model.Unit = BaseTool.GetChartUnit(query.particle);
                if (model.Unit == ChartUnit.unit_month)
                {
                    model.Starttime = Convert.ToDateTime(tempStartTime.ToString("yyyy-MM-1"));
                    model.Endtime = Convert.ToDateTime(tempEndTime.ToString("yyyy-MM-1"));
                }
                else
                {
                    model.Starttime = tempStartTime;
                    model.Endtime = tempEndTime;
                }
                int templastmonthdays = 0;
                switch (model.Unit)
                {
                    case ChartUnit.unit_month:
                        for (DateTime i = model.Starttime; i <= model.Endtime; i = i.AddMonths(1))
                        {
                            tempConvert.Add(i.ToString("yyyy-MM-dd"), 0);
                        }
                        break;
                    case ChartUnit.unit_hour:
                        for (DateTime i = model.Starttime; i < model.Endtime.AddDays(1); i = i.AddHours(1))
                        {
                            tempConvert.Add(i.ToString("yyyy-MM-dd HH:00:00"), 0);
                        }
                        break;
                    case ChartUnit.unit_day:
                        templastmonthdays = (model.Endtime - model.Starttime).Days;
                        if (model.Endtime.Hour== 0)
                        {
                            for (DateTime i = model.Starttime; i <= model.Endtime; i = i.AddDays(1))
                            {
                                tempConvert.Add(i.ToString(("yyyy-MM-dd")), 0);
                            }
                        }
                        else
                        {

                            for (DateTime i = model.Starttime; i <= model.Endtime.AddDays(-1); i = i.AddDays(1))
                            {
                                tempConvert.Add(i.ToString(("yyyy-MM-dd")), 0);
                            }

                            for (DateTime i = DateTime.Parse(model.Endtime.ToString("yyyy-MM-dd 00:00:00")); i <= model.Endtime; i = i.AddHours(1))
                            {
                                tempConvertHour.Add(i.ToString("yyyy-MM-dd HH:00:00"), 0);
                            }
                            model.Endtime = DateTime.Parse(tempEndTime.AddDays(-1).ToString("yyyy-MM-dd"));
                        }

                        break;
                }
                string objName = "";

                decimal temphourValue = 0;
                foreach (var item in itemCodeList)
                {
                    model.ItemCode = item.ItemCodeNumber;
                    GenerateEnergyDicValue(model, query, tempConvert,ref objName);
                    if (tempConvertHour.Count>0)
                    {
                        model.Unit = ChartUnit.unit_hour;
                        model.Starttime = DateTime.Parse(tempEndTime.ToString("yyyy-MM-dd 00:00:00"));
                        model.Endtime = DateTime.Parse(tempEndTime.ToString("yyyy-MM-dd HH:00:00"));
                        GenerateEnergyDicValue(model, query, tempConvertHour, ref objName);
                        temphourValue = tempConvertHour.Sum(i => i.Value);

                        model.Starttime = tempStartTime;
                        model.Endtime = DateTime.Parse(tempEndTime.AddDays(-1).ToString("yyyy-MM-dd"));
                        model.Unit = ChartUnit.unit_day;
                    }

                }
                if (tempConvertHour.Count > 0)
                {
                    tempConvert.Add(DateTime.Now.ToString("yyyy-MM-dd"), temphourValue);
                }
                int order = 1;
                foreach (var item in tempConvert)
                {

                    var time = item.Key;
                    if (model.Unit == ChartUnit.unit_month)
                    {
                        time = Convert.ToDateTime(time).ToString("yyyy-MM");
                    }

                    decimal value = decimal.Round(item.Value, 2);
                    result.series[0].data.Add(value);
                    result.OrderLst.Add(new EnergyOrder()
                    {
                        Order = order,
                        Tm = time,
                        Obj = objName,
                        Val = value,
                        EneType = result.series[0].name
                        // EneType =itemCodeList.Count > 1 ? "总能耗" : itemCodeList[0].ItemCodeName

                    });
                    order++;
                }
                if (query.QueryType == EnergyAnalyseQueryType.MonthCompare)
                {
                    int tempcurrentdays = (query.EndTime - query.StartTime).Days;
                    //int index = (28 - query.StartTime.Day) < 0 ? 0 : (28 - query.StartTime.Day);

                    if (model.Unit == ChartUnit.unit_day)
                    {
                        if (tempcurrentdays > templastmonthdays)
                        {//当前时间范围大于上月环比范围
                            int index = System.DateTime.DaysInMonth(query.StartTime.AddMonths(-1).Year, query.StartTime.AddMonths(-1).Month) - query.StartTime.Day;
                            if (index < 0)
                            {
                                index = 0;
                            }
                            for (int i = templastmonthdays; i < tempcurrentdays; i++)
                            {
                                result.series[0].data.Insert(index, result.series[0].data[index]);
                            }

                        }
                        else
                        {
                            if (tempcurrentdays < templastmonthdays)
                            {
                                int index = System.DateTime.DaysInMonth(query.StartTime.AddMonths(-1).Year, query.StartTime.AddMonths(-1).Month) - query.StartTime.Day;
                                for (int i = tempcurrentdays; i < templastmonthdays; i++)
                                {
                                    result.series[0].data.RemoveAt(index);
                                    index--;
                                }
                            }
                        }

                        //for (int i = 0; i < ((query.EndTime - query.StartTime).Days - tempdaycount); i++)
                        //{
                        //    result.series[0].data.Insert(index, result.series[0].data[index]);

                        //}

                    }
                }

                return result;
            }
            catch (Exception ee)
            {
                throw ee;
            }
        }
Beispiel #12
0
        public ResultRealLine DeviceRealChart(RealQuery query)
        {
            var pAction = new ExecuteProcess();
            try
            {
                var result = new ResultRealLine { series = new List<EneryAnalyseSeries>(), Unit = "kwh" };
                //ResultItemCode result = new ResultItemCode();
                //result.Dept = new List<string>();
                //result.Enery = new Dictionary<string, List<decimal>>();
                //result.ObjectName = new List<string>();
                // var result = new ResultIndexLineChart { DatePick = new List<string>(), DatePickEnery = new List<decimal>() };
                var eneryDataList = new Dictionary<string, decimal>();
                var model = new BaseQueryModel();
                var objectList = new NTS.WEB.BLL.BaseLayerObject().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectId), " order by deviceid");
                model.IsDevice = 1;
                model.ObjectList = (from p in objectList select p.DeviceID).ToList<int>();
                model.ItemCode = objectList[0].ItemCodeID;
                model.Unit = ChartUnit.unit_hour;
                if (query.QueryType == EnergyAnalyseQueryType.Default)
                {
                    model.Starttime = Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-dd"));
                    model.Endtime = Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-dd"));
                }
                else if (query.QueryType == EnergyAnalyseQueryType.MonthCompare)
                {
                    model.Starttime = Convert.ToDateTime(System.DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd"));
                    model.Endtime = Convert.ToDateTime(System.DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd"));
                }
                else if (query.QueryType == EnergyAnalyseQueryType.YearCompare)
                {
                    model.Starttime = Convert.ToDateTime(System.DateTime.Now.AddYears(-1).ToString("yyyy-MM-dd"));
                    model.Endtime = Convert.ToDateTime(System.DateTime.Now.AddYears(-1).ToString("yyyy-MM-dd"));
                }
                var itemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + model.ItemCode + "'", " order by ItemcodeID")[0];
                result.Unit = itemList.Unit;//by added wxy
                var resList = _reportBll.GetBaseEneryDataList(model);
                foreach (var d in objectList.SelectMany(o => resList.BaseLayerObjectResults[o.DeviceID.ToString(CultureInfo.InvariantCulture)].Datas))
                {
                    if (!eneryDataList.ContainsKey(d.DatePick))
                    {
                        eneryDataList.Add(d.DatePick, d.DataValue);
                    }
                    else
                    {
                        eneryDataList[d.DatePick] += d.DataValue;
                    }
                }

                List<decimal> dat = new List<decimal>();
                foreach (var e in eneryDataList)
                {
                    dat.Add(e.Value);

                }
                EneryAnalyseSeries eas = new EneryAnalyseSeries();
                eas.data = dat;

                result.series.Add(eas);

                pAction.Success = true;
                result.ActionInfo = pAction;
                return result;

            }
            catch (Exception ex)
            {
                pAction.Success = false;
                pAction.ExceptionMsg = ex.Message;
                return new ResultRealLine() { ActionInfo = pAction };

            }
        }
Beispiel #13
0
        public ResultItemCode RealChart(RealQuery query)
        {
            ResultItemCode result = new ResultItemCode();
            result.Dept = new List<string>();
            result.Enery = new Dictionary<string, List<decimal>>();
            result.ObjectName = new List<string>();
            // var result = new ResultIndexLineChart { DatePick = new List<string>(), DatePickEnery = new List<decimal>() };
            var eneryDataList = new Dictionary<string, decimal>();
            var model = new BaseQueryModel();
            var objectList = new NTS.WEB.BLL.BaseLayerObject().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectId), " order by deviceid");
            model.IsDevice = 1;
            model.ObjectList = (from p in objectList select p.DeviceID).ToList<int>();
            model.ItemCode = objectList[0].ItemCodeID;
            model.Unit = ChartUnit.unit_hour;
            model.Starttime = Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-dd"));
            model.Endtime = Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-dd"));
            var itemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + model.ItemCode + "'", " order by ItemcodeID")[0];

            var resList = _reportBll.GetBaseEneryDataList(model);
            foreach (var d in objectList.SelectMany(o => resList.BaseLayerObjectResults[o.DeviceID.ToString(CultureInfo.InvariantCulture)].Datas))
            {
                if (!eneryDataList.ContainsKey(d.DatePick))
                {
                    eneryDataList.Add(d.DatePick, d.DataValue);
                }
                else
                {
                    eneryDataList[d.DatePick] += d.DataValue;
                }
            }
            result.Enery.Add(objectList[0].DeviceID.ToString(CultureInfo.InvariantCulture), eneryDataList.Values.ToList());
            foreach (var e in eneryDataList)
            {
                result.Dept.Add(itemList.Unit);
                result.ObjectName.Add(e.Key);

            }
            return result;
        }
Beispiel #14
0
        /// <summary>
        /// 获取定额分析
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public ResultQuota GetQuotaAnalyseChart(QueryQuota query)
        {
            try
            {

                #region 返回对象定义
                ResultQuota result = new ResultQuota()
                {
                    Pie = new QuotaAnalysePie(),
                    BalanceHighChart = new QuotaHighChart() { series = new List<EneryAnalyseSeries>() },
                    TrendHighChart = new QuotaHighChart() { series = new List<EneryAnalyseSeries>() }
                };
                #endregion

                #region itemCodeList
                List<Model.Itemcode> itemCodeList = new List<Model.Itemcode>();

                if (query.ItemCode == "00000")
                {//总能耗
                    itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0 ", " order by ItemcodeID");
                    result.Unit = "T";//标准煤单位
                }
                else
                {
                    itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID");
                    if (itemCodeList.Count > 0)
                    {
                        result.Unit = itemCodeList[0].Unit;//单个分类分项单位
                    }
                }
                #endregion

                #region 生成EndTime

                switch (query.Particle)
                {
                    case Particle.Month://月 query.StartTime格式为yyyy-MM-01
                        query.EndTime = query.StartTime.AddMonths(1).AddDays(-1);
                        int day = DateTime.Now.Day;
                        if (query.StartTime.Year == DateTime.Now.Year && query.StartTime.Month == DateTime.Now.Month )//月、年第一天不算进去
                        {//当月

                            query.EndTime = DateTime.Now;//精确到前一天的能耗值

                        }
                        break;
                    case Particle.Year://年  query.StartTime格式为yyyy-01-01
                        query.EndTime = query.StartTime.AddYears(1).AddMonths(-1);
                        if (query.StartTime.Year == DateTime.Now.Year)//月、年第一天不算进去
                        {
                            query.EndTime = DateTime.Now;
                        }
                        break;
                    default:
                        query.EndTime = query.StartTime.AddMonths(1).AddDays(-1);
                        if (query.StartTime.Year == DateTime.Now.Year && query.StartTime.Month == DateTime.Now.Month)
                        {
                            query.EndTime = DateTime.Now.AddDays(-1);
                        }
                        break;
                }
                #endregion

                #region 获取定额值
                Model.QuotaAnalyseModel quotaAnalyseModel = GetQuotaAnalyseModel(query);
                if (quotaAnalyseModel != null)
                {
                    result.Pie.QuotaValue = decimal.Round(quotaAnalyseModel.QuotaValue, 2);
                    if (!(quotaAnalyseModel.QuotaValue > 0))
                    {
                        throw new Exception("无效的定额值");
                    }
                }
                else
                {
                     throw new Exception("当前未设置定额值");
                    //result.Pie.QuotaValue = 10000;
                }
                #endregion

                var model = new BaseQueryModel();
                model.IsDevice = 0;
                model.ObjectList = new List<int>() { query.ObjectId };
                model.Unit = BaseTool.GetChartUnit((int)query.Particle - 1);//查询颗粒度比方法中的颗粒度大于一
                decimal averagequotavalue = 0;
                int TotalCount = 1;//月天数或者12月
                if (model.Unit == ChartUnit.unit_month)
                {//年定额分析 精确到天
                    model.Starttime = Convert.ToDateTime(query.StartTime.ToString("yyyy-MM-01"));
                    model.Endtime = Convert.ToDateTime(query.EndTime.ToString("yyyy-MM-01"));
                    //定额月平均值
                    averagequotavalue = decimal.Round(result.Pie.QuotaValue / 12, 2);
                    TotalCount = 12;
                }
                else
                {//月定额分析 精确到小时
                    model.Starttime = query.StartTime;
                    model.Endtime = query.EndTime;
                    //定额日平均值
                    TotalCount = DateTime.DaysInMonth(query.StartTime.Year, query.StartTime.Month);
                    averagequotavalue = decimal.Round(result.Pie.QuotaValue / TotalCount, 2);

                }

                Dictionary<string, decimal> tempConvert = new Dictionary<string, decimal>();
                if(query.EndTime>=query.StartTime)
                {
                    tempConvert = GetSingleItemCodeValue(model, query, itemCodeList);
                }

                result.Pie.ActualValue = decimal.Round(tempConvert.Select(t => t.Value).Sum(), 2);
                result.Pie.OverPlusValue = decimal.Round(result.Pie.QuotaValue - result.Pie.ActualValue, 2);
                result.Pie.OverPlusPercent = (result.Pie.OverPlusValue * 100 / result.Pie.QuotaValue).ToString("0.00") + "%";

                var balanceQuotaValue = new List<decimal>();
                for (int i = 0; i <= TotalCount - 1;i++ )
                {
                    balanceQuotaValue.Add(result.Pie.QuotaValue);
                }
                //趋势分析能耗值
                var TrendActualValue = new List<decimal>();
                TrendActualValue = (from item in tempConvert select decimal.Round(item.Value, 2)).ToList();
                for (int i = 0; i <= TrendActualValue.Count - 1; i++)
                {
                    if (i > 0)
                    {
                        TrendActualValue[i] = TrendActualValue[i] + TrendActualValue[i - 1];
                    }

                }
                //差额分析能耗值
                result.BalanceHighChart.series.Add(new EneryAnalyseSeries()
                {
                    name = "ActualLine",
                    //data = (from item in tempConvert select decimal.Round(item.Value, 2)).ToList()
                    data = TrendActualValue
                });
                //差额分析定额值

                result.BalanceHighChart.series.Add(new EneryAnalyseSeries()
                {
                    name = "QuotaLine",
                    data = balanceQuotaValue
                });
                //差额分析能耗差值
                result.BalanceHighChart.series.Add(new EneryAnalyseSeries()
                {
                    name = "BalanceLine",
                    data = ((from item in TrendActualValue select result.Pie.QuotaValue - decimal.Round(item, 2))).ToList()
                });
                //趋势分析定额值
                var TrendQuotaValue = new List<decimal>();

                //趋势分析预测值
                var TrendForeCastValue = new List<decimal>();

                result.TrendHighChart.series.Add(new EneryAnalyseSeries()
                {
                    name = "ActualLine",
                    data = TrendActualValue
                });
                int[] x = new int[TotalCount];
                int count = 1;
                //TrendQuotaValue.Add(0);//以0坐标开始
                for (int i = 0; i <= x.Length - 1; i++)
                {
                    x[i] = i;
                    if (count == x.Length)
                    {
                        TrendQuotaValue.Add(result.Pie.QuotaValue);
                    }
                    else
                    {
                        TrendQuotaValue.Add(averagequotavalue * count);
                    }
                    count++;
                }
                result.TrendHighChart.series.Add(new EneryAnalyseSeries()
                {
                    name = "QuotaLine",
                    data = TrendQuotaValue
                });
                TrendForeCastValue = SPT(x, TrendActualValue.ToArray());
                //预测节能率:定额值-线性回归公式值(最后一天或者12月)/定额值
                if (TrendForeCastValue.Count>0)
                {
                    result.Pie.ForecastSavingPercent = ((result.Pie.QuotaValue - TrendForeCastValue[TrendForeCastValue.Count - 1]) * 100 / result.Pie.QuotaValue).ToString("0.00") + "%";
                }
                else
                {
                    result.Pie.ForecastSavingPercent = "-";
                }

                #region 暂时禁用

                //decimal lastvalue = 0;
                //decimal lastsecondvalue = 0;
                //if (TrendActualValue.Count > 0)
                //{
                //    lastvalue = TrendActualValue[TrendActualValue.Count - 1];
                //    if (TrendActualValue.Count > 1)
                //    {
                //        lastsecondvalue = TrendActualValue[TrendActualValue.Count - 2];
                //    }
                //}
                //if (query.Particle == Particle.Year)
                //{
                //    if (query.StartTime.Year < DateTime.Now.Year)
                //    {
                //        result.Pie.ForecastSavingPercent = ((result.Pie.QuotaValue - result.Pie.ActualValue) * 100 / result.Pie.QuotaValue).ToString("0.00") + "%";

                //    }
                //    else
                //    {
                //        //当前理论计划值= 年定额值/12*(结束时间月-1)+年定额值/12/结束月的总天数*(结束时间天-1)
                //        decimal theoryPlanvalue = result.Pie.QuotaValue / 12 * (query.EndTime.Month - 1) + result.Pie.QuotaValue / 12 / DateTime.DaysInMonth(query.EndTime.Year, query.EndTime.Month) * (query.EndTime.Day - 1);
                //        //预测节能率=(当前理论计划值-实时能耗值)/年定额值,
                //        result.Pie.ForecastSavingPercent = ((theoryPlanvalue - result.Pie.ActualValue) * 100 / result.Pie.QuotaValue).ToString("0.00") + "%";
                //        if (query.EndTime.Month < 12)
                //        {//添加趋势预测线
                //            TrendForeCastValue.Add(lastvalue);

                //            for (int i = 1; i <= (12 - query.EndTime.Month); i++)
                //            {
                //                TrendForeCastValue.Add(lastvalue + (lastvalue - lastsecondvalue) * i);
                //            }
                //        }
                //    }

                //}
                //else
                //{
                //    if (query.StartTime.Month < DateTime.Now.Month)
                //    {
                //        result.Pie.ForecastSavingPercent = ((result.Pie.QuotaValue - result.Pie.ActualValue) * 100 / result.Pie.QuotaValue).ToString("0.00") + "%";
                //    }
                //    else
                //    {
                //        //当前理论计划值= 月定额值/当月天数*(当前天-1)+月定额值/当月天数/24*(当前小时数)
                //        decimal theoryPlanvalue = result.Pie.QuotaValue / DateTime.DaysInMonth(query.EndTime.Year, query.EndTime.Month) * (query.EndTime.Day - 1) + result.Pie.QuotaValue / DateTime.DaysInMonth(query.EndTime.Year, query.EndTime.Month) / 24 * (query.EndTime.Hour);
                //        //预测节能率=(当前理论计划值-实时能耗值)/年定额值,
                //        result.Pie.ForecastSavingPercent = ((theoryPlanvalue - result.Pie.ActualValue) * 100 / result.Pie.QuotaValue).ToString("0.00") + "%";
                //    }
                //    if (query.EndTime.Day < DateTime.DaysInMonth(query.StartTime.Year, query.StartTime.Month))
                //    {//添加趋势预测线
                //        TrendForeCastValue.Add(lastvalue);

                //        for (int i = 1; i <= (DateTime.DaysInMonth(query.StartTime.Year, query.StartTime.Month) - query.EndTime.Day); i++)
                //        {
                //            TrendForeCastValue.Add(lastvalue + (lastvalue - lastsecondvalue) * i);
                //        }
                //    }
                //}
                #endregion
                result.TrendHighChart.series.Add(new EneryAnalyseSeries()
                {
                    name = "ForeCastLine",
                    data = TrendForeCastValue
                });
                //同比
                query.StartTime = query.StartTime.AddYears(-1);
                query.EndTime = query.EndTime.AddYears(-1);
                quotaAnalyseModel = GetQuotaAnalyseModel(query);
                if (quotaAnalyseModel != null)
                {
                    result.Pie.LastYearQuotaValue = decimal.Round(quotaAnalyseModel.QuotaValue, 2); ;
                    if (!(quotaAnalyseModel.QuotaValue > 0))
                    {
                        throw new Exception("无效的定额值");
                    }
                }
                else
                {
                    //throw new Exception("当前未设置定额值");
                    result.Pie.LastYearQuotaValue = 0;
                }

                model.Unit = BaseTool.GetChartUnit((int)query.Particle - 1);
                if (model.Unit == ChartUnit.unit_month)
                {//年定额分析 精确到天
                    model.Starttime = Convert.ToDateTime(query.StartTime.ToString("yyyy-MM-01"));
                    model.Endtime = Convert.ToDateTime(query.EndTime.ToString("yyyy-12-01"));

                }
                else
                {//月定额分析 精确到小时

                    model.Starttime = query.StartTime;
                    model.Endtime = model.Starttime.AddMonths(1);

                }
                //model.Unit = ChartUnit.unit_month;
                //model.Starttime = Convert.ToDateTime(query.StartTime.ToString("yyyy-MM-01"));
                //model.Endtime = Convert.ToDateTime(query.EndTime.ToString("yyyy-MM-01"));
                //if(query.Particle==Particle.Year)
                //{
                //    model.Endtime = Convert.ToDateTime(query.EndTime.ToString("yyyy-12-01"));
                //}

                tempConvert = new Dictionary<string, decimal>();
                if (query.EndTime >= query.StartTime)
                {
                    tempConvert = GetSingleItemCodeValue(model, query, itemCodeList);
                }

                result.Pie.LastYearActualValue = decimal.Round(tempConvert.Select(t => t.Value).Sum(), 2);
                if (result.Pie.LastYearQuotaValue>0)
                {
                    result.Pie.LastYearSavingPercent =
                   ((result.Pie.LastYearActualValue - result.Pie.LastYearQuotaValue) * 100 / result.Pie.LastYearQuotaValue)
                       .ToString("0.00") + "%";
                }
                else
                {
                    result.Pie.LastYearSavingPercent = "-";
                }

                return result;
            }
            catch (Exception ee)
            {
                throw ee;
            }
        }
Beispiel #15
0
        public MainInfo GetIndexCompareEneryNew(DateTime startTime, DateTime endTime)
        {
            MainInfo mainInfo = new MainInfo();
            mainInfo.IsOnlyElec = false;
            mainInfo.ItemValues = new List<EneryStatistic>();
            mainInfo.PeriodValues = new List<EnerySum>();
            var ObjectList = new BLL.BaseLayerObject().GetBaseFuncLayerObjectList(string.Format(" and LayerObjectParentID={0}", 0), " order by LayerObjectID");
            var ItemList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0", " order by ItemcodeID");
            //var ItemList = new BLL.Itemcode().GetItemcodeList("", " order by ItemcodeID");

            EneryStatistic eneryStatistic4Elec = new EneryStatistic();
            if (ItemList.Count == 1)
            {//只有电
                mainInfo.IsOnlyElec = true;//只有电
                eneryStatistic4Elec.CName = ItemList[0].ItemCodeName;
                eneryStatistic4Elec.ItemCode = ItemList[0].ItemCodeNumber;
                eneryStatistic4Elec.Unit = ItemList[0].Unit;
                ItemList = new BLL.Itemcode().GetItemcodeList(string.Format(" and ParentID={0}", ItemList[0].ItemcodeID), " order by ItemcodeID");
            }
            BaseQueryModel model = new BaseQueryModel();
            model.IsDevice = 0;
            model.ObjectList = (from p in ObjectList select p.LayerObjectID).ToList<int>();

            foreach (var item in ItemList)
            {
                EneryStatistic eneryStatistic = new EneryStatistic();
                eneryStatistic.CName = item.ItemCodeName;
                eneryStatistic.ItemCode = item.ItemCodeNumber;
                eneryStatistic.Unit = item.Unit;

                model.ItemCode = item.ItemCodeNumber;
                decimal tempItemCoalEneryValue = 0;
                decimal tempLastMonthItemCoalEneryValue = 0;
                BaseResult ResList = new BaseResult();
                if ((endTime - startTime).Days > 0)
                {
                    model.Unit = ChartUnit.unit_day;
                    model.Starttime = startTime;
                    model.Endtime = DateTime.Parse(endTime.AddDays(-1).ToString("yyyy-MM-dd 00:00:00"));
                    ResList = reportBll.GetBaseEneryDataList(model, true);
                    if (ResList == null)
                    {
                        continue;
                    }
                    foreach (var r in ResList.BaseLayerObjectResults)
                    {
                        eneryStatistic.EneryValue += r.Value.Total;
                        eneryStatistic.EnergyValue2Coal += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());
                        tempItemCoalEneryValue += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());
                    }
                }
                if (endTime.Hour > 0)
                {
                    model.Unit = ChartUnit.unit_hour;
                    model.Starttime = DateTime.Parse(endTime.ToString("yyyy-MM-dd 00:00:00"));
                    model.Endtime = DateTime.Parse(endTime.ToString("yyyy-MM-dd HH:00:00"));
                    ResList = reportBll.GetBaseEneryDataList(model, true);
                    if (ResList == null)
                    {
                        continue;
                    }
                    foreach (var r in ResList.BaseLayerObjectResults)
                    {
                        eneryStatistic.EneryValue += r.Value.Total;
                        eneryStatistic.EnergyValue2Coal += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());
                        tempItemCoalEneryValue += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());
                    }
                }

                eneryStatistic.EneryValue = decimal.Round(eneryStatistic.EneryValue, 2);
                eneryStatistic.EnergyValue2Coal = decimal.Round(eneryStatistic.EnergyValue2Coal, 2);
                tempItemCoalEneryValue = decimal.Round(tempItemCoalEneryValue, 2);

                model.Starttime = startTime.AddMonths(-1);
                model.Endtime = endTime.AddMonths(-1);

                if ((endTime - startTime).Days > 0)
                {
                    model.Unit = ChartUnit.unit_day;
                    model.Endtime = DateTime.Parse(model.Endtime.AddDays(-1).ToString("yyyy-MM-dd 00:00:00"));
                    ResList = reportBll.GetBaseEneryDataList(model, true);
                    if (ResList == null)
                    {
                        continue;
                    }
                    foreach (var r in ResList.BaseLayerObjectResults)
                    {
                        eneryStatistic.EnergyLastMonth += decimal.Round(r.Value.Total, 2);
                        tempLastMonthItemCoalEneryValue += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());
                    }
                }
                if (endTime.Hour > 0)
                {
                    model.Unit = ChartUnit.unit_hour;
                    model.Starttime = DateTime.Parse(endTime.AddMonths(-1).ToString("yyyy-MM-dd 00:00:00"));
                    model.Endtime = DateTime.Parse(endTime.AddMonths(-1).ToString("yyyy-MM-dd HH:00:00"));
                    ResList = reportBll.GetBaseEneryDataList(model, true);
                    if (ResList == null)
                    {
                        continue;
                    }
                    foreach (var r in ResList.BaseLayerObjectResults)
                    {
                        eneryStatistic.EnergyLastMonth += decimal.Round(r.Value.Total, 2);
                        tempLastMonthItemCoalEneryValue += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());
                    }
                }

                eneryStatistic.EnergyLastMonth = decimal.Round(eneryStatistic.EnergyLastMonth, 2);
                tempLastMonthItemCoalEneryValue = decimal.Round(tempLastMonthItemCoalEneryValue, 2);
                if (eneryStatistic.EnergyLastMonth > 0)
                {
                    eneryStatistic.MonthCompare = decimal.Round(100 * (eneryStatistic.EneryValue - eneryStatistic.EnergyLastMonth) / eneryStatistic.EnergyLastMonth, 2)
                                 .ToString(CultureInfo.InvariantCulture) + "%";
                }

                mainInfo.Total += Math.Round(tempItemCoalEneryValue, 2);
                mainInfo.TotalLastMon += Math.Round(tempLastMonthItemCoalEneryValue, 2);

                if (mainInfo.IsOnlyElec)
                {
                    eneryStatistic4Elec.EneryValue += eneryStatistic.EneryValue;
                    eneryStatistic4Elec.EnergyValue2Coal += eneryStatistic.EneryValue;
                    eneryStatistic4Elec.EnergyLastMonth += eneryStatistic.EnergyLastMonth;
                }
                mainInfo.ItemValues.Add(eneryStatistic);

                if (item.ItemCodeNumber == "01000")
                {

                    GeneratePeriodValues(model, mainInfo);
                }

            }

            if (mainInfo.TotalLastMon > 0)
            {
                mainInfo.TotalCompare = decimal.Round(100 * (mainInfo.Total - mainInfo.TotalLastMon) / mainInfo.TotalLastMon, 2)
                             .ToString(CultureInfo.InvariantCulture) + "%";
            }
            if (mainInfo.IsOnlyElec)
            {
                eneryStatistic4Elec.MonthCompare = mainInfo.TotalCompare;
                mainInfo.ItemValues.Insert(0, eneryStatistic4Elec);
                model.ItemCode = "01000";
                GeneratePeriodValues(model, mainInfo);
            }
            return mainInfo;
        }
Beispiel #16
0
        public ResultItemCode GetPeriodsQueryLineChart(QueryContrastPeriods querOld, TimePeriod time)
        {
            #region 定义区
            QueryContrastPeriods query = new QueryContrastPeriods();
            query = querOld;
            var resultList = new ResultView.ResultItemCode
            {
                ObjectName = new List<string>(),
                Enery = new Dictionary<string, List<decimal>>(),
                Dept = new List<string>()
            };

            #endregion

            var dept = string.Empty;
            //var objectList =
            //    new BLL.BaseLayerObject().GetBaseLayerObjectList(
            //        string.Format(" and layerobjectid={0}", query.AreaId), " order by LayerObjectID");
            var itList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID");
            if (itList.Count > 0)
            {
                dept = itList[0].Unit;
            }

            dept = query.ItemCode == "00000" ? "T" : dept;
            if (query.ItemCode == "00000")
            {
                // resultList.Dept = new List<string>() { "T" };
                var itemList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0", " order by ItemcodeID");
                var eneryDataListTotal = new Dictionary<string, Dictionary<string, decimal>>();
                var maxcode = "01000";
                var count = 0;
                foreach (var itemcode in itemList)
                {
                    if (querOld.QueryType == QueryOrderType.Default)
                    {
                        var lineChart = GetSingleItemCodeByObjectNew(query, itemcode.ItemCodeNumber, time, 1);

                        if (count < lineChart.Count)
                        {
                            count = lineChart.Count;
                            maxcode = itemcode.ItemCodeNumber;
                        }
                        eneryDataListTotal.Add(itemcode.ItemCodeNumber, lineChart);
                    }
                    else if (querOld.QueryType == QueryOrderType.UnitArea)
                    {
                        var lineChart = this.GetAreaSingleItemCodeByObject(query, itemcode.ItemCodeNumber, time, 1);

                        if (count < lineChart.Count)
                        {
                            count = lineChart.Count;
                            maxcode = itemcode.ItemCodeNumber;
                        }
                        eneryDataListTotal.Add(itemcode.ItemCodeNumber, lineChart);
                    }
                    else if (querOld.QueryType == QueryOrderType.UnitPerson)
                    {
                        var lineChart = GetPersonNumSingleItemCodeByObject(query, itemcode.ItemCodeNumber, time, 1);

                        if (count < lineChart.Count)
                        {
                            count = lineChart.Count;
                            maxcode = itemcode.ItemCodeNumber;
                        }
                        eneryDataListTotal.Add(itemcode.ItemCodeNumber, lineChart);
                    }

                    //  resultList.Enery.Add(itemcode.ItemCodeName, lineChart.DatePickEnery);
                }

                // 重新赋值
                foreach (var itemcode in itemList)
                {
                    var itemcode1 = itemcode;
                    foreach (var max in eneryDataListTotal[maxcode].Where(max => !eneryDataListTotal[itemcode1.ItemCodeNumber].ContainsKey(max.Key)))
                    {
                        eneryDataListTotal[itemcode.ItemCodeNumber].Add(max.Key, 0);
                    }
                    var temp = eneryDataListTotal[itemcode.ItemCodeNumber].OrderBy(p => Convert.ToDateTime(p.Key));
                    var tempOrder = temp.ToDictionary(keyValuePair => keyValuePair.Key, keyValuePair => keyValuePair.Value);
                    eneryDataListTotal[itemcode.ItemCodeNumber] = tempOrder;
                    resultList.Enery.Add(itemcode.ItemCodeName, eneryDataListTotal[itemcode.ItemCodeNumber].Values.ToList());
                }
                resultList.ObjectName = eneryDataListTotal[maxcode].Select(p => p.Key.ToString(CultureInfo.InvariantCulture)).ToList();
            }
            else
            {
                var item = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID")[0];
                if (querOld.QueryType == QueryOrderType.Default)
                {
                    var lineChart = GetSingleItemCodeByObjectNew(query, query.ItemCode, time, 0);
                    // resultList.Dept = new List<string>() {item.Unit};
                    resultList.ObjectName = lineChart.Select(p => p.Key.ToString()).ToList();
                    resultList.Enery.Add(item.ItemCodeName, lineChart.Select(p => decimal.Parse(p.Value.ToString())).ToList());
                }
                else if (querOld.QueryType == QueryOrderType.UnitArea)
                {
                    var lineChart = GetAreaSingleItemCodeByObject(query, query.ItemCode, time, 0);
                    // resultList.Dept = new List<string>() {item.Unit};
                    resultList.ObjectName = lineChart.Select(p => p.Key.ToString()).ToList();
                    resultList.Enery.Add(item.ItemCodeName, lineChart.Select(p => decimal.Parse(p.Value.ToString())).ToList());
                }
                else if (querOld.QueryType == QueryOrderType.UnitPerson)
                {
                    var lineChart = GetPersonNumSingleItemCodeByObject(query, query.ItemCode, time, 0);
                    // resultList.Dept = new List<string>() {item.Unit};
                    resultList.ObjectName = lineChart.Select(p => p.Key.ToString()).ToList();
                    resultList.Enery.Add(item.ItemCodeName, lineChart.Select(p => decimal.Parse(p.Value.ToString())).ToList());
                }

            }
            foreach (var baseLayerObject in resultList.ObjectName)
            {
                resultList.Dept.Add(dept);
            }
            return resultList;
        }
Beispiel #17
0
 public BaseResult GetQueryDeviceSingleItemCodeEneryTotal(NTS.WEB.DataContact.BasicQuery query)
 {
     var ObjectList = new BLL.BaseLayerObject().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectNum), " order by deviceid");
     var ItemList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0", " order by ItemcodeID");
     List<string> ItemCodeStr = (from item in ItemList select item.ItemCodeNumber).ToList<string>();
     BaseQueryModel model = new BaseQueryModel();
     model.IsDevice = 1;
     model.ObjectList = (from p in ObjectList select p.DeviceID).ToList<int>();
     model.ItemCode = query.ItemCode;
     model.Unit = BaseTool.GetChartUnit(query.Unit);
     model.Starttime = query.StartTime;
     model.Endtime = query.EndTime;
     var ResList = reportBll.GetBaseEneryDataList(model);
     return ResList;
 }
Beispiel #18
0
        public ResultCompare GetPersonNumPeriodsCompareChart(QueryContrastPeriods query)
        {
            #region 定义区

            var resultList = new ResultView.ResultCompare
            {
                ObjectName = new List<string>(),
                Enery = new Dictionary<string, List<decimal>>(),
                Dept = new List<string>()
            };

            #endregion

            if (query.PeriodLst.Count > 0)
            {
                resultList.ObjectName.Clear();
                for (int iCount = 0; iCount < query.PeriodLst.Count; iCount++)
                {
                    //QueryContrastPeriods basicQuery = new QueryContrastPeriods();
                    //basicQuery.PeriodLst = query.PeriodLst;
                    //basicQuery.ItemCode = query.ItemCode;
                    //basicQuery.AreaId = query.AreaId;
                    //basicQuery.ObjectNum = o.LayerObjectID;
                    var result = GetPeriodsQueryLineChart(query, query.PeriodLst[iCount]);
                    resultList.ObjectName.Add(query.PeriodLst[iCount].StartTime.ToString("yyyy-MM-dd") + "~" + query.PeriodLst[iCount].EndTime.ToString("yyyy-MM-dd"));
                    if (query.ItemCode != "00000")
                    {
                        var itemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID")[0];
                        resultList.Enery.Add((iCount + 1).ToString(), result.Enery[itemList.ItemCodeName]);
                        for (int i = 0; i < result.Dept.Count; i++)
                        {
                            resultList.Dept.Add(itemList.Unit);
                        }
                    }
                    else
                    {
                        var tempValue = new decimal[result.Enery[result.Enery.Keys.First<string>()].Count];
                        foreach (var re in result.Enery)
                        {
                            for (var i = 0; i < re.Value.Count; i++)
                            {
                                tempValue[i] += re.Value[i];
                            }
                        }
                        for (int i = 0; i < result.Dept.Count; i++)
                        {
                            resultList.Dept.Add("T");
                        }
                        resultList.Enery.Add(iCount.ToString(), tempValue.ToList());
                        //resultList.Enery.Add(o.LayerObjectName, tempValue.ToList().Select(p => p / decimal.Parse(o.PersonNum.ToString())).ToList());
                    }
                }
                return resultList;
            }
            return null;
        }
Beispiel #19
0
        public QueryEneryTotal GetQueryEneryTotal(NTS.WEB.DataContact.BasicQuery query)
        {
            BaseResult baseResult = new BaseResult();
            baseResult.BaseLayerObjectResults = new Dictionary<string, BaseData>();
            var Object = new BLL.BaseLayerObject().GetBaseLayerObjectList(string.Format(" and LayerObjectID={0}", query.ObjectNum), " order by LayerObjectID")[0];
            baseResult.BaseLayerObjectResults = new Dictionary<string, BaseData>();
            baseResult.BaseLayerObjectResults.Add(Object.LayerObjectID.ToString(), new BaseData());
            baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList = new System.Collections.Hashtable();
            baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].Datas = new List<DataItems>();
            baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList.Add("ITEMCOAL", 0);
            baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList.Add("ITEMCO2", 0);
            if (query.ItemCode != "00000")
            {
                var ResList = GetQuerySingleItemCodeEneryTotal(query);
                if (ResList != null) { return new QueryEneryTotal { TotalEnergy = decimal.Parse(ResList.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList["ITEMCOAL"].ToString()) }; }//TotalEnergy = ResList.BaseLayerObjectResults[Object.LayerObjectID.ToString()].Total
                return null;
            }
            else
            {
                var ItemList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0", " order by ItemcodeID");
                List<string> ItemCodeStr = (from item in ItemList select item.ItemCodeNumber).ToList<string>();

                Dictionary<string, decimal> DataValue = new Dictionary<string, decimal>();
                Dictionary<string, decimal> CoalDataValue = new Dictionary<string, decimal>();
                Dictionary<string, decimal> Co2DataValue = new Dictionary<string, decimal>();
                for (var item = 0; item < ItemCodeStr.Count; item++)
                {

                    query.ItemCode = ItemCodeStr[item];
                    var ResList = GetQuerySingleItemCodeEneryTotal(query);
                    if (ResList != null)
                    {

                        baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].Total += ResList.BaseLayerObjectResults[Object.LayerObjectID.ToString()].Total;
                        baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList["ITEMCOAL"] = decimal.Parse(baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList["ITEMCOAL"].ToString()) + decimal.Parse(ResList.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList["ITEMCOAL"].ToString());
                        baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList["ITEMCO2"] = decimal.Parse(baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList["ITEMCO2"].ToString()) + decimal.Parse(ResList.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList["ITEMCO2"].ToString());
                        foreach (var li in ResList.BaseLayerObjectResults[Object.LayerObjectID.ToString()].Datas)
                        {
                            #region 累加赋值
                            if (DataValue.ContainsKey(li.DatePick))
                            {
                                DataValue[li.DatePick] += li.DataValue;
                            }
                            else
                            {
                                DataValue.Add(li.DatePick, li.DataValue);
                            }
                            if (CoalDataValue.ContainsKey(li.DatePick))
                            {
                                CoalDataValue[li.DatePick] += li.CoalDataValue;
                            }
                            else
                            {
                                CoalDataValue.Add(li.DatePick, li.CoalDataValue);
                            }
                            if (Co2DataValue.ContainsKey(li.DatePick))
                            {
                                Co2DataValue[li.DatePick] += li.Co2DataValue;
                            }
                            else
                            {
                                Co2DataValue.Add(li.DatePick, li.Co2DataValue);
                            }
                            #endregion

                            if (item == ItemCodeStr.Count - 1)
                            {
                                li.DataValue = DataValue[li.DatePick];
                                li.CoalDataValue = CoalDataValue[li.DatePick];
                                li.Co2DataValue = Co2DataValue[li.DatePick];
                                baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].Datas.Add(li);
                            }
                        }

                    }
                }
                if (baseResult != null) { return new QueryEneryTotal { TotalEnergy = decimal.Parse(baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList["ITEMCOAL"].ToString()) }; }
                return null;
            }
        }
Beispiel #20
0
        public string ExportExcelDataRanking()
        {
            var inputValue = _ntsPage.Request.Form["Inputs"];

            var query = Newtonsoft.Json.JsonConvert.DeserializeObject<NTS.WEB.DataContact.QueryOrder>(inputValue);
            query.PageCurrent = 1;
            query.PageSize = 10000;

            string icode = query.ItemCode;
            var result = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IQueryEnery>("EneryQuery")
                                  .GetShopOrder(query);
            query.Particle = "area";
            var result2 = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IQueryEnery>("EneryQuery")
                                  .GetShopOrder(query);
            var dept = string.Empty;
            var itList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID");
            if (itList.Count > 0)
            {
                dept = itList[0].Unit;
            }

            string itemName = icode == "00000" ? "T" : dept;

            var ItemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID");
            string ItemName = query.ItemCode == "00000" ? "总能耗" : ItemList[0].ItemCodeName;

            try
            {
                string unittype = string.IsNullOrEmpty(HttpContext.Current.Request["unittype"]) ? "" : HttpContext.Current.Request["unittype"];//

                string type = "0";
                string name = "";
                switch (type)
                {
                    case "0":
                        name = "总能耗";
                        break;
                    case "1":
                        name = "面积能耗";
                        break;
                    case "2":
                        name = "人均能耗";
                        break;
                }

                if (query.ObjectNum.Count > 0)
                {
                    DataTable dt = TableView.CreateOrderBaseDataTable();
                    for (var r = 0; r < result.OrderList.Count; r++)
                    {

                        DataRow dr = dt.NewRow();
                        dr[1] = result.OrderList[r].Title;
                        dr[2] = query.ObjectNum;
                        dr[3] = result.OrderList[r].Title;
                        dr[4] = result.OrderList[r].Title;
                        dr[5] = result.OrderList[r].Title;
                        dr[6] = itemName;
                        dr[7] = decimal.Round(decimal.Parse(result.OrderList[r].Energy.ToString()), 2).ToString();
                        dr[8] = decimal.Round(decimal.Parse(result2.OrderList[r].Energy.ToString()), 2).ToString();

                        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(ItemName + " ", new CellParam(0, 0), query.StartTime.ToString("yyyy-MM-dd") + "~" + query.EndTime.ToString("yyyy-MM-dd"), new CellParam(3, 0), false, new CellParam(4, 0));
                    param.DataColumn = new[] { 0, 3, 7, 8 };
                    param.ItemUnit = "(单位:" + dept + ")";
                    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 + "\"}";
            }
        }
Beispiel #21
0
        public ResultReal GetRealTime(NTS.WEB.DataContact.RealQuery query)
        {
            ResultReal result = new ResultReal();

            var objectList = new NTS.WEB.BLL.BaseLayerObject().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectId), " order by deviceid");
            var itemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + objectList[0].ItemCodeID + "'", " order by ItemcodeID")[0];

            result.Info = new DeviceInfo();
            result.Data = new RealData();
            result.Info.Affiliations = objectList[0].Organization;
            result.Info.DevType = objectList[0].DeviceType.ToString(CultureInfo.InvariantCulture);
            result.Info.Category = (itemList.ItemCodeNumber == "01000" || itemList.ItemCodeNumber == "01A00" ||
                                  itemList.ItemCodeNumber == "01B00" || itemList.ItemCodeNumber == "01C00" ||
                                  itemList.ItemCodeNumber == "01D00")
                                     ? "电表"
                                     : itemList.ItemCodeName + "表";
            result.Info.Nature = objectList[0].DEVMODE;
            result.Info.Number = objectList[0].DeviceNumber;
            result.Info.Status = objectList[0].Status;
            result.Info.Location = objectList[0].Location;
            result.Info.Rating = objectList[0].Rating.ToString();
            if (query.IsDetail == 1)
            {
                for (int i = 1; i < 4; i++)
                {
                    BaseListModel model = new BaseListModel();
                    model.Page = 1;
                    model.PageSize = 10000;
                    model.ObjectId = objectList[0].DeviceID;
                    model.CategoryId = i;
                    DataTable dt = new Real().GetRealTimeData(model);
                    if (dt.Rows.Count > 0)
                    {

                        if (i == 1)
                        {
                            result.Data.Pulse = new List<dataUnit>();
                            for (int j = 0; j < dt.Rows.Count; j++)
                            {
                                result.Data.Pulse.Add(new dataUnit()
                                    {
                                        Id = j + 1,
                                        DataName = dt.Rows[j]["DataPoint_Name"].ToString(),
                                        Unit = itemList.Unit,
                                        Value = decimal.Parse(dt.Rows[j]["Result"].ToString())
                                    });
                            }
                        }
                        else if (i == 2)
                        {
                            result.Data.Analog = new List<dataUnit>();
                            for (int j = 0; j < dt.Rows.Count; j++)
                            {

                                result.Data.Analog.Add(new dataUnit()
                                    {
                                        Id = j + 1,
                                        DataName = dt.Rows[j]["DataPoint_Name"].ToString(),
                                        Unit = itemList.Unit,
                                        Value = decimal.Parse(dt.Rows[j]["Result"].ToString())
                                    });
                            }
                        }
                        else
                        {
                            result.Data.Switch = new List<dataUnit>();
                            for (int j = 0; j < dt.Rows.Count; j++)
                            {
                                result.Data.Switch.Add(new dataUnit()
                                    {
                                        Id = j + 1,
                                        DataName = dt.Rows[j]["DataPoint_Name"].ToString(),
                                        Unit = itemList.Unit,
                                        Value = decimal.Parse(dt.Rows[j]["Result"].ToString())
                                    });
                            }
                        }
                    }
                }
            }

            //result.Data.Analog = new List<dataUnit>();
            //result.Data.Analog.Add(new dataUnit() { Id = 1, DataName = "29189H92-00", Unit = "kwh", Value = 900.88m });
            //result.Data.Pulse = new List<dataUnit>();
            //result.Data.Pulse.Add(new dataUnit() { Id = 1, DataName = "29189H92-10", Unit = "kwh", Value = 400.88m });
            //result.Data.Switch = new List<dataUnit>();
            //result.Data.Switch.Add(new dataUnit() { Id = 1, DataName = "29189H92-20", Unit = "kwh", Value = 200.88m });
            return result;
        }
Beispiel #22
0
        public string ExportExcelEnergyAnalyse()
        {
            var inputValue = _ntsPage.Request.Form["Inputs"];
            var query = Newtonsoft.Json.JsonConvert.DeserializeObject<QueryAnalyse>(inputValue);
            string icode = query.ItemCode;
            EnergyAnalyseQueryType tempQueryType = query.QueryType;

            query.QueryType = EnergyAnalyseQueryType.Default;//总能耗
            ResultEnergyAnalyse resultAll =
                Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IChart>("Chart").GetEnergyAnalyseLineChart(query);
            ResultEnergyAnalyse resultArea = null;
            ResultEnergyAnalyse resultPerson = null;
            if (query.IsDevice == 0)
            {//
                query.QueryType = EnergyAnalyseQueryType.UnitArea;//单位面积
                resultArea = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IChart>("Chart")
                                     .GetEnergyAnalyseLineChart(query);
                query.QueryType = EnergyAnalyseQueryType.UnitPerson;//人均
                resultPerson = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IChart>("Chart")
                                     .GetEnergyAnalyseLineChart(query);
            }

            var dept = string.Empty;
            List<Model.Itemcode> itList = null;
            string unit = "";
            string itemCodeName = "";

            if (query.IsDevice == 1)
            {
                var deviceList = new NTS.WEB.BLL.BaseLayerObject().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectId), " order by deviceid");
                itList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + deviceList[0].ItemCodeID + "'", " order by ItemcodeID");
                if (itList.Count > 0)
                {
                    unit = itList[0].Unit;//单个分类分项单位
                    itemCodeName = itList[0].ItemCodeName;
                }
                if (query.ItemCode == "00000")
                {//总能耗

                    unit = "T";//标准煤单位
                    itemCodeName = "总能耗";
                }
            }
            else
            {
                itList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID");
                if (itList.Count > 0)
                {
                    dept = itList[0].Unit;
                }

                unit = icode == "00000" ? "T" : dept;
                itemCodeName = itList.Count == 0 ? "总能耗" : itList[0].ItemCodeName;
            }
            //query.QueryType = tempQueryType;
            //switch (query.QueryType)
            //{
            //    case EnergyAnalyseQueryType.Convert2Co2:
            //    case EnergyAnalyseQueryType.Convert2Coal:
            //        unit = "T";//标准煤单位
            //        break;
            //    case EnergyAnalyseQueryType.Convert2Money:
            //        unit = "元";//标准煤单位
            //        break;
            //}
            try
            {
                if (resultAll.OrderLst.Count > 0)
                {
                    DataTable dt = TableView.CreateOrderBaseDataTable();
                    for (var r = 0; r < resultAll.OrderLst.Count; r++)
                    {

                        DataRow dr = dt.NewRow();
                        dr[1] = resultAll.OrderLst[r].Tm;
                        dr[2] = query.ObjectId;
                        dr[3] = resultAll.OrderLst[r].Obj;
                        dr[4] = resultAll.OrderLst[r].Tm;
                        dr[5] = resultAll.OrderLst[r].Tm;
                        dr[6] = itemCodeName;
                        dr[7] = decimal.Round(decimal.Parse(resultAll.OrderLst[r].Val.ToString()), 2).ToString();
                        if (query.IsDevice == 0)
                        {
                            dr[8] = resultArea.OrderLst == null ? "0" : decimal.Round(decimal.Parse(resultArea.OrderLst[r].Val.ToString()), 2).ToString();
                            dr[9] = resultPerson.OrderLst == null ? "0" : decimal.Round(decimal.Parse(resultPerson.OrderLst[r].Val.ToString()), 2).ToString();
                        }

                        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";
                    if (query.IsDevice == 1)
                    {
                        templatePath = AppDomain.CurrentDomain.BaseDirectory + "template\\能耗分析表_设备.xls";
                    }
                    TemplateParam param = new TemplateParam(resultAll.OrderLst[0].Obj + " " + itemCodeName + " ", new CellParam(0, 0), query.StartTime.ToString("yyyy-MM-dd") + "~" + query.EndTime.ToString("yyyy-MM-dd"), new CellParam(3, 0), false, new CellParam(4, 0));

                    param.DataColumn = new[] { 0, 3, 1, 7, 8, 9 };
                    if (query.IsDevice == 1)
                    {
                        param.DataColumn = new[] { 0, 3, 1, 7 };
                    }
                    param.ItemUnit = "(单位:" + unit + ")";
                    param.ItemUnitCell = new CellParam(3, 5);

                    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 + "\"}";
            }
        }
Beispiel #23
0
        public NTS.WEB.ResultView.ShopOrderResult GetShopOrder(NTS.WEB.DataContact.QueryOrder query)
        {
            string keyCatch = string.Empty;
            foreach (var q in query.ObjectNum)
            {
                keyCatch += q.ToString() + "_";
            }
            keyCatch += query.ItemCode + query.OrderWay + query.StartTime + query.EndTime + query.Particle;
            if (CacheHelper.GetCache(keyCatch) != null)
            {
                return PaddingList((ShopOrderResult)CacheHelper.GetCache(keyCatch), query);
            }

            #region 定义区
            ShopOrderResult shopOrderResult = new ShopOrderResult();
            shopOrderResult.OrderList = new List<BaseOrder>();
            shopOrderResult.page = new Padding();
            #endregion

            var ItemList = new List<Model.Itemcode>();
            var shopOrder = new IndexShopOrder
            {
                TotalEneryOrderList = new List<EneryOrder>(),
                AreaEneryOrderList = new List<EneryOrder>()
            };
            var shopOrderLast = new IndexShopOrder
            {
                TotalEneryOrderList = new List<EneryOrder>(),
                AreaEneryOrderList = new List<EneryOrder>()
            };
            // var deepth = int.Parse(ConfigurationManager.AppSettings["ShopLevel"]);
            if (query.ItemCode == "00000")
            {
                ItemList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0", " order by ItemcodeID");
            }
            else
            {
                ItemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID");
            }
            List<string> ItemCodeStr = (from item in ItemList select item.ItemCodeNumber).ToList<string>();
            var model = new BaseQueryModel();
            model.IsDevice = 0;
            model.ObjectList = query.ObjectNum;
            Dictionary<string, decimal> tempConvert = new Dictionary<string, decimal>();
            Dictionary<string, decimal> tempAreaConvert = new Dictionary<string, decimal>();
            // decimal[] tempConvert = new decimal[objectList.Count];
            //  decimal[] tempAreaConvert = new decimal[objectList.Count];
            foreach (var item in ItemCodeStr)
            {
                model.ItemCode = item;
                model.Unit = GetUnit(query.StartTime, query.EndTime);
                if (model.Unit == ChartUnit.unit_month)
                {
                    model.Starttime = Convert.ToDateTime(query.StartTime.ToString("yyyy-MM-1"));
                    model.Endtime = Convert.ToDateTime(query.EndTime.ToString("yyyy-MM-1"));
                }
                else
                {
                    model.Starttime = query.StartTime;
                    model.Endtime = query.EndTime;
                }
                var resList = reportBll.GetBaseEneryDataList(model);
                const int order = 1;
                foreach (var r in resList.BaseLayerObjectResults)
                {
                    if (tempConvert.ContainsKey(r.Value.baseLayerObject.LayerObjectName))
                    {
                        if (query.ItemCode == "00000")
                        {

                            tempConvert[r.Value.baseLayerObject.LayerObjectName] +=
                                decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());
                            tempAreaConvert[r.Value.baseLayerObject.LayerObjectName] +=
                                decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()) /
                                decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString());
                        }
                        else
                        {
                            tempConvert[r.Value.baseLayerObject.LayerObjectName] += r.Value.Total;
                            tempAreaConvert[r.Value.baseLayerObject.LayerObjectName] +=
                                r.Value.Total /
                                decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString());
                        }
                    }
                    else
                    {
                        if (query.ItemCode == "00000")
                        {
                            tempConvert.Add(r.Value.baseLayerObject.LayerObjectName,
                                            decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()));
                            tempAreaConvert.Add(r.Value.baseLayerObject.LayerObjectName,
                                                decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()) /
                                                decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString()));
                        }
                        else
                        {
                            tempConvert.Add(r.Value.baseLayerObject.LayerObjectName,
                                            r.Value.Total);
                            tempAreaConvert.Add(r.Value.baseLayerObject.LayerObjectName,
                                                r.Value.Total /
                                                decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString()));
                        }
                    }

                    shopOrder.TotalEneryOrderList.Add(new EneryOrder()
                    {
                        BuildingName = r.Value.baseLayerObject.LayerObjectName,
                        EneryValue = double.Parse(tempConvert[r.Value.baseLayerObject.LayerObjectName].ToString("f2")),
                        OrderNum = order
                    });

                    shopOrder.AreaEneryOrderList.Add(new EneryOrder()
                    {
                        BuildingName = r.Value.baseLayerObject.LayerObjectName,
                        EneryValue = double.Parse(tempAreaConvert[r.Value.baseLayerObject.LayerObjectName].ToString("f2")),
                        OrderNum = order
                    });
                }
            }

            var res1 = from p in shopOrder.TotalEneryOrderList group p by p.BuildingName into g select new { g.Key, BuildingName = g.Max(p => p.BuildingName), OrderNum = g.Max(p => p.OrderNum), EneryValue = g.Max(p => p.EneryValue) };
            var res2 = from p in shopOrder.AreaEneryOrderList group p by p.BuildingName into g select new { g.Key, BuildingName = g.Max(p => p.BuildingName), OrderNum = g.Max(p => p.OrderNum), EneryValue = g.Max(p => p.EneryValue) };

            foreach (var c in res1)
            {
                shopOrderLast.TotalEneryOrderList.Add(new EneryOrder { BuildingName = c.BuildingName, EneryValue = c.EneryValue, OrderNum = c.OrderNum });
            }

            foreach (var c in res2)
            {
                shopOrderLast.AreaEneryOrderList.Add(new EneryOrder { BuildingName = c.BuildingName, EneryValue = c.EneryValue, OrderNum = c.OrderNum });
            }
            int record = shopOrderLast.TotalEneryOrderList.Count;
            shopOrderResult.page = new Padding()
            {
                Current = query.PageCurrent,
                Total = (record % query.PageSize == 0) ? record / query.PageSize : record / query.PageSize + 1
            };
            int orders = 1;
            if (query.Particle == "total")
            {
                foreach (var r in shopOrderLast.TotalEneryOrderList)
                {
                    shopOrderResult.OrderList.Add(new BaseOrder()
                        {
                            Energy = decimal.Parse(r.EneryValue.ToString("f2")),
                            Id = orders,
                            Title = r.BuildingName,
                            Units = query.ItemCode == "00000" ? "T" : ItemList[0].Unit
                        });
                    orders++;
                }
            }
            else
            {
                foreach (var r in shopOrderLast.AreaEneryOrderList)
                {
                    shopOrderResult.OrderList.Add(new BaseOrder()
                    {
                        Energy = decimal.Parse(r.EneryValue.ToString("f2")),
                        Id = r.OrderNum,
                        Title = r.BuildingName,
                        Units = query.ItemCode == "00000" ? "T" : ItemList[0].Unit
                    });
                }
            }

            if (CacheHelper.GetCache(keyCatch) == null)
            {
                CacheHelper.SetCache(keyCatch, shopOrderResult);
            }
            return PaddingList(shopOrderResult, query);
        }
Beispiel #24
0
        public string ExportQueryLineChart()
        {
            var inputValue = _ntsPage.Request.Form["Inputs"];

            var query = Newtonsoft.Json.JsonConvert.DeserializeObject<BasicQuery>(inputValue);

            var result = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IChart>("Chart")
                                  .GetQueryLineChart(query);

            try
            {
                string name = new BLL.BaseLayerObject().GetBaseLayerObjectList(
                    string.Format(" and layerobjectid={0}", query.ObjectNum), " order by LayerObjectID")[0].LayerObjectName;
                string itemUnit = result.Dept[0];
                var dept = string.Empty;
                var itList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID");
                if (itList.Count > 0)
                {
                    dept = itList[0].Unit;
                }

                string itemName = query.ItemCode == "00000" ? "总能耗" : dept;

                var ItemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID");
                string ItemName = query.ItemCode == "00000" ? "总能耗" : ItemList[0].ItemCodeName;
                DataTable dt = TableView.CreateBaseDataTable();
                if (query.ItemCode != "00000")
                {
                    for (var r = 0; r < result.Enery[itList[0].ItemCodeName].Count; r++)
                    {

                        DataRow dr = dt.NewRow();
                        dr[1] = result.ObjectName[r];
                        dr[2] = query.ObjectNum;
                        dr[3] = name;
                        dr[4] = result.ObjectName[r];
                        dr[5] = result.ObjectName[r];
                        dr[6] = itemName;
                        dr[7] = decimal.Round(decimal.Parse(result.Enery[itList[0].ItemCodeName][r].ToString()), 2).ToString();

                        dt.Rows.Add(dr);
                    }
                }
                else
                {
                    foreach (var i in result.Enery)
                    {
                        DataRow drs = dt.NewRow();
                        drs[1] = i.Key;
                        drs[2] = "-";
                        drs[3] = "-";
                        drs[4] = "-";
                        drs[5] = "-";
                        drs[6] = "-";
                        drs[7] = "-";
                        dt.Rows.Add(drs);
                        for (var r = 0; r < result.Enery[i.Key].Count; r++)
                        {

                            DataRow dr = dt.NewRow();
                            dr[1] = result.ObjectName[r];
                            dr[2] = query.ObjectNum;
                            dr[3] = name;
                            dr[4] = result.ObjectName[r];
                            dr[5] = result.ObjectName[r];
                            dr[6] = itemName;
                            dr[7] = decimal.Round(decimal.Parse(result.Enery[i.Key][r].ToString()), 2);

                            dt.Rows.Add(dr);
                        }
                    }
                }

                if (dt != null)
                {
                    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(name + " " + ItemName + " ", new CellParam(0, 0), query.StartTime.ToString("yyyy-MM-dd") + "~" + query.EndTime.ToString("yyyy-MM-dd"), new CellParam(3, 0), false, new CellParam(4, 0));
                    param.DataColumn = new[] { 0, 3, 1, 7 };
                    param.ItemUnit = "(单位:" + itemUnit + ")";
                    param.ItemUnitCell = new CellParam(3, 4);
                    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 + "\"}";
            }
        }
Beispiel #25
0
        public ResultOrder GetShopOrderNew(NTS.WEB.DataContact.QueryOrderObjects query)
        {
            try
            {
                string keyCatch = string.Empty;
                foreach (var q in query.AreaIdLst)
                {
                    keyCatch += q.ToString() + "_";
                }
                keyCatch += query.ItemCode + query.StartTime + query.EndTime + query.QueryType + query.ObjType;
                if (CacheHelper.GetCache(keyCatch) != null)
                {
                    return (ResultOrder)CacheHelper.GetCache(keyCatch);
                }

                VerifyPersonOrAreaExist(query);

                #region 返回对象定义
                ResultOrder resultOrder = new ResultOrder();
                resultOrder.lineHighChart = new LineHighChart()
                {
                    series =
                        new List<Series>()
                };
                resultOrder.lineHighChart.series.Add(new Series() { data = new List<EneryHighChart>() });
                resultOrder.pieHighChart = new PieHighChart()
                {
                    series =
                        new List<Series>()
                };
                resultOrder.pieHighChart.series.Add(new Series() { data = new List<EneryHighChart>() });

                resultOrder.OrderLst = new List<EnergyOrder>();
                #endregion

                List<Model.Itemcode> itemCodeList = new List<Model.Itemcode>();
                if (query.ItemCode == "00000")
                {//总能耗
                    itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0 ", " order by ItemcodeID");
                    resultOrder.Unit = "T";//标准煤单位
                }
                else
                {
                    itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID");
                    if (itemCodeList.Count > 0)
                    {
                        resultOrder.Unit = itemCodeList[0].Unit;//单个分类分项单位
                    }
                }
                switch(query.QueryType)
                {
                    case EnergyAnalyseQueryType.Convert2Co2:
                    case EnergyAnalyseQueryType.Convert2Coal:
                         resultOrder.Unit = "T";//标准煤单位
                        break;
                    case EnergyAnalyseQueryType.Convert2Money:
                        resultOrder.Unit = "元";//标准煤单位
                        break;
                }
                Dictionary<string, decimal> tempConvert = new Dictionary<string, decimal>();
                Dictionary<string, int> tempObjectConvert = new Dictionary<string, int>();
                var model = new BaseQueryModel();
                model.IsDevice = 0;
                model.ObjectList = query.AreaIdLst;
                //model.Unit = GetUnit(query.StartTime, query.EndTime);
                model.Unit = BaseTool.GetChartUnit(query.Particle);

                if (model.Unit == ChartUnit.unit_month)
                {
                    model.Starttime = Convert.ToDateTime(query.StartTime.ToString("yyyy-MM-1"));
                    model.Endtime = Convert.ToDateTime(query.EndTime.ToString("yyyy-MM-1"));
                }
                else
                {
                    model.Starttime = query.StartTime;
                    model.Endtime = query.EndTime;
                }
                foreach (var item in itemCodeList)
                {
                    model.ItemCode = item.ItemCodeNumber;
                    BaseResult resList = reportBll.GetBaseEneryDataList(model, query.ObjType == AreaType.Liquid ? true : false);
                    if (resList == null)
                    {
                        continue;
                    }
                    foreach (var r in resList.BaseLayerObjectResults)
                    {
                        if (!tempConvert.ContainsKey(r.Value.baseLayerObject.LayerObjectName))
                        {
                            tempConvert.Add(r.Value.baseLayerObject.LayerObjectName, 0);
                        }
                        if (!tempObjectConvert.ContainsKey(r.Value.baseLayerObject.LayerObjectName))
                        {
                            tempObjectConvert.Add(r.Value.baseLayerObject.LayerObjectName, r.Value.baseLayerObject.LayerObjectID);
                        }
                        if (tempConvert.ContainsKey(r.Value.baseLayerObject.LayerObjectName))
                        {
                            if (query.ItemCode == "00000")
                            {//选择总能耗后把其他分类分项的能耗转化成标准煤
                                switch (query.QueryType)
                                {
                                    case EnergyAnalyseQueryType.Default: //默认总能耗
                                        tempConvert[r.Value.baseLayerObject.LayerObjectName] +=
                                  decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());//
                                        break;
                                    case EnergyAnalyseQueryType.UnitArea://单位面积能耗
                                        tempConvert[r.Value.baseLayerObject.LayerObjectName] +=
                                    decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()) /
                                    decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString());
                                        break;
                                    case EnergyAnalyseQueryType.UnitPerson://人均能耗
                                        tempConvert[r.Value.baseLayerObject.LayerObjectName] +=
                                 decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()) /
                                 decimal.Parse(r.Value.baseLayerObject.PersonNum.ToString());
                                        break;
                                    case EnergyAnalyseQueryType.Convert2Coal://标准煤
                                        tempConvert[r.Value.baseLayerObject.LayerObjectName] +=
                                            decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());
                                        break;
                                    case EnergyAnalyseQueryType.Convert2Co2://二氧化碳
                                        tempConvert[r.Value.baseLayerObject.LayerObjectName] +=
                                            decimal.Parse(r.Value.ConvertDataValueList["ITEMCO2"].ToString());
                                        break;
                                    case EnergyAnalyseQueryType.Convert2Money://人民币
                                        tempConvert[r.Value.baseLayerObject.LayerObjectName] +=
                                            decimal.Parse(r.Value.ConvertDataValueList["ITEMMONEY"].ToString());
                                        break;
                                    default:
                                        tempConvert[r.Value.baseLayerObject.LayerObjectName] +=
                                decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());//
                                        break;
                                }
                            }
                            else
                            {
                                switch (query.QueryType)
                                {
                                    case EnergyAnalyseQueryType.Default: //默认总能耗
                                        tempConvert[r.Value.baseLayerObject.LayerObjectName] += r.Value.Total;
                                        break;
                                    case EnergyAnalyseQueryType.UnitArea://单位面积能耗
                                        tempConvert[r.Value.baseLayerObject.LayerObjectName] +=
                                     r.Value.Total /
                                     decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString());
                                        break;
                                    case EnergyAnalyseQueryType.UnitPerson://人均能耗
                                        tempConvert[r.Value.baseLayerObject.LayerObjectName] +=
                                     r.Value.Total /
                                     decimal.Parse(r.Value.baseLayerObject.PersonNum.ToString());
                                        break;
                                    case EnergyAnalyseQueryType.Convert2Coal://标准煤
                                        tempConvert[r.Value.baseLayerObject.LayerObjectName] +=
                                            decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());
                                        break;
                                    case EnergyAnalyseQueryType.Convert2Co2://二氧化碳
                                        tempConvert[r.Value.baseLayerObject.LayerObjectName] +=
                                            decimal.Parse(r.Value.ConvertDataValueList["ITEMCO2"].ToString());
                                        break;
                                    case EnergyAnalyseQueryType.Convert2Money://人民币
                                        tempConvert[r.Value.baseLayerObject.LayerObjectName] +=
                                            decimal.Parse(r.Value.ConvertDataValueList["ITEMMONEY"].ToString());
                                        break;
                                    default:
                                        tempConvert[r.Value.baseLayerObject.LayerObjectName] += r.Value.Total;
                                        break;
                                }

                            }
                        }

                    }
                }
                var tempAsc = from tt in tempConvert orderby tt.Value ascending select tt;//LineChart按照能耗值从低到高排序

                foreach (var tempConvertItem in tempAsc)
                {
                    resultOrder.lineHighChart.series[0].data.Add(new EneryHighChart()
                    {
                        name = tempConvertItem.Key,
                        id = tempObjectConvert[tempConvertItem.Key].ToString(),
                        y = decimal.Parse(tempConvertItem.Value.ToString("f2"))

                    });
                }

                var tempDesc = from tt in tempConvert orderby tt.Value descending select tt;//PieChart按照能耗值从高到低排序
                int temppieindex = 1;
                decimal temppiecount = 0;
                foreach (var tempConvertItem in tempDesc)
                {
                    if (temppieindex < 6)
                    {
                        resultOrder.pieHighChart.series[0].data.Add(new EneryHighChart()
                        {
                            name = tempConvertItem.Key,
                            y = decimal.Parse(tempConvertItem.Value.ToString("f2"))
                        });
                    }
                    else
                    {
                        temppiecount += decimal.Parse(tempConvertItem.Value.ToString("f2"));

                    }
                    temppieindex++;
                }
                if (temppieindex > 6)
                {
                    resultOrder.pieHighChart.series[0].data.Add(new EneryHighChart()
                    {
                        name = "其他",
                        y = temppiecount

                    });
                }

                int order = 1;
                foreach (var tt in resultOrder.lineHighChart.series[0].data)
                {
                    resultOrder.OrderLst.Add(new EnergyOrder()
                                                 {
                                                     Order = order,
                                                     Tm = model.Unit == ChartUnit.unit_hour ? query.StartTime.ToString("yyyy-MM-dd") : query.StartTime.ToString("yyyy-MM-dd") + "~" + query.EndTime.ToString("yyyy-MM-dd"),
                                                     Obj = tt.name,
                                                     //ObjID=tempObjectConvert[tt.name],
                                                     Val = tt.y,
                                                     EneType = itemCodeList.Count > 1 ? "总能耗" : itemCodeList[0].ItemCodeName

                                                 });
                    order++;
                }

                if (CacheHelper.GetCache(keyCatch) == null)
                {
                    CacheHelper.SetCache(keyCatch, resultOrder, 30);
                }
                return resultOrder;
            }
            catch (Exception ee)
            {
                throw ee;
            }
        }
Beispiel #26
0
        public ResultCostQuery GetCostQuery(QueryCost query)
        {
            ResultCostQuery result = new ResultCostQuery()
            {
                FeePie = new PieHighChart() { series = new List<Series>() },
                FeeQueryCharts = new QuotaHighChart() { series = new List<EneryAnalyseSeries>() },
                FeeAnalyses = new FeeAnalyses(),
                FeeTbl = new FeeTbl() { FeeList = new List<List<string>>() }
            };

            result.FeePie.series.Add(new Series() { data = new List<EneryHighChart>() });

            #region itemCodeList
            List<Model.Itemcode> itemCodeList = new List<Model.Itemcode>();

            if (query.ItemCode == "00000")
            {//总能耗
                itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0 ", " order by ItemcodeID");
                result.Unit = "T";//标准煤单位
            }
            else
            {
                itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID");
                if (itemCodeList.Count > 0)
                {
                    result.Unit = itemCodeList[0].Unit;//单个分类分项单位
                    result.FeeTbl.Unit = itemCodeList[0].Unit;
                    result.FeeTbl.EneType = itemCodeList[0].ItemCodeName;
                    result.FeeAnalyses.EnergyUnit = result.Unit;
                }
            }
            #endregion

            #region 生成EndTime

            switch (query.Particle)
            {
                case Particle.Month://月 query.StartTime格式为yyyy-MM-01
                    query.EndTime = query.StartTime.AddMonths(1).AddDays(-1);

                    int day = DateTime.Now.Day;
                    if (query.StartTime.Year == DateTime.Now.Year && query.StartTime.Month == DateTime.Now.Month)//月、年第一天不算进去
                    {//当月
                        query.EndTime = DateTime.Now.AddDays(-1);//精确到前一天的能耗值
                    }
                    break;
                case Particle.Year://年  query.StartTime格式为yyyy-01-01
                    query.EndTime = query.StartTime.AddYears(1).AddMonths(-1).AddDays(-1);
                    if (query.StartTime.Year == DateTime.Now.Year)//月、年第一天不算进去
                    {
                        query.EndTime = DateTime.Now.AddDays(-1);
                    }
                    break;
                default:
                    query.EndTime = query.StartTime.AddMonths(1).AddDays(-1);
                    if (query.StartTime.Year == DateTime.Now.Year && query.StartTime.Month == DateTime.Now.Month)
                    {
                        query.EndTime = DateTime.Now.AddDays(-1);
                    }
                    break;
            }
            #endregion
            Dictionary<string, EnergyValueCost> tempConvert = new Dictionary<string, EnergyValueCost>();
            tempConvert = GetSingleItemCodeValue(query, itemCodeList);

            if (tempConvert.Count > 0)
            {
                result.FeeType = FeeType.平时计费.ToString();

                #region 绑定Highchart

                #region 绑定Highchart
                result.FeeQueryCharts.series.Add(new EneryAnalyseSeries()
                {
                    name = "平时费用",
                    data = (from item in tempConvert select decimal.Round(item.Value.EnergyCost, 2)).ToList()
                });
                #endregion

                #region 绑定饼图
                result.FeePie.series[0].data.Add(new EneryHighChart()
                {
                    name = "平时费用",
                    y = decimal.Round(decimal.Parse(tempConvert.Select(t => t.Value.EnergyCost).Sum().ToString()), 2)
                });

                #endregion

                #endregion

                #region 绑定表格

                foreach (var item in tempConvert)
                {
                    string time = "";
                    switch (query.Particle)
                    {
                        case Particle.Month:
                            time = item.Key;
                            break;
                        case Particle.Year:
                            time = item.Key.Substring(0, item.Key.LastIndexOf('-'));
                            break;
                    }
                    List<string> fl = new List<string>();

                    fl.Add(time);

                    fl.Add(item.Value.EnergyValue.ToString("0.00"));
                    fl.Add((item.Value.EnergyCost).ToString("0.00"));

                    result.FeeTbl.FeeList.Add(fl);
                }
                #endregion

                #region 绑定分析

                result.FeeAnalyses.TotalEnergy = decimal.Round(
                  decimal.Parse(tempConvert.Select(t => t.Value.EnergyValue).Sum().ToString()), 2);
                result.FeeAnalyses.TotalVal = decimal.Round(
                   decimal.Parse(tempConvert.Select(t => t.Value.EnergyCost).Sum().ToString()), 2);
                result.FeeAnalyses.MaxVal = decimal.Round(
                  decimal.Parse(tempConvert.Select(t => t.Value.EnergyCost).Max().ToString()), 2);
                result.FeeAnalyses.MinVal = decimal.Round(
                   decimal.Parse(tempConvert.Select(t => t.Value.EnergyCost).Min().ToString()), 2);
                result.FeeAnalyses.AvgVal = decimal.Round(
                    decimal.Parse(tempConvert.Select(t => t.Value.EnergyCost).Average().ToString()), 2);
                #endregion

                if (query.Particle==Particle.Month)
                {
                    query.StartTime = query.StartTime.AddMonths(-1);
                    query.EndTime = query.EndTime.AddMonths(-1);
                }
                else
                {
                    query.StartTime = query.StartTime.AddYears(-1);
                    query.EndTime = query.EndTime.AddYears(-1);
                }

                tempConvert = GetSingleItemCodeValue(query, itemCodeList);
                result.FeeAnalyses.EnergyLastMonth = decimal.Round(
                      decimal.Parse(tempConvert.Select(t => t.Value.EnergyCost).Sum().ToString()), 2);
                if (result.FeeAnalyses.EnergyLastMonth > 0)
                {
                    result.FeeAnalyses.CompareLastMonth = decimal.Round(100 * (result.FeeAnalyses.TotalVal - result.FeeAnalyses.EnergyLastMonth) / result.FeeAnalyses.EnergyLastMonth, 2)
                                 .ToString(CultureInfo.InvariantCulture) + "%";
                }
            }
            else
            {
                return null;
            }

            return result;
        }
Beispiel #27
0
        public ResultEnergyAnalysePie GetEnergyAnalysePie(QueryAnalyse query)
        {
            try
            {

                VerifyPersonOrAreaExist(query);

                ResultEnergyAnalysePie result = new ResultEnergyAnalysePie()
                {
                    LayerPie = new PieHighChart() { series = new List<Series>() },
                    ItemCodePie = new PieHighChart() { series = new List<Series>() }
                };
                result.LayerPie.series.Add(new Series() { data = new List<EneryHighChart>() });
                result.ItemCodePie.series.Add(new Series() { data = new List<EneryHighChart>() });
                query.QueryType = EnergyAnalyseQueryType.Default;

                List<Model.Itemcode> itemCodeList = new List<Model.Itemcode>();
                if (query.ItemCode == "00000")
                {//总能耗
                    itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0 ", " order by ItemcodeID");
                    result.Unit = "T";//标准煤单位
                }
                else
                {

                    itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID");
                    if (itemCodeList.Count > 0)
                    {
                        result.Unit = itemCodeList[0].Unit;//单个分类分项单位

                        var itemchildCodeList = new BLL.Itemcode().GetItemcodeList(string.Format(" and ParentID={0} ", itemCodeList[0].ItemcodeID), " order by ItemcodeID");

                        if (itemchildCodeList.Count > 0)
                        {
                            itemCodeList = itemchildCodeList;
                        }
                    }
                }
                switch (query.QueryType)
                {
                    case EnergyAnalyseQueryType.Convert2Co2:
                    case EnergyAnalyseQueryType.Convert2Coal:
                        result.Unit = "T";//标准煤单位
                        break;
                    case EnergyAnalyseQueryType.Convert2Money:
                        result.Unit = "元";//标准煤单位
                        break;
                }
                var model = new BaseQueryModel();
                model.IsDevice = query.IsDevice;
                model.ObjectList = new List<int>() { query.ObjectId };
                model.IsDevice = 0;//只获取区域的
                if (model.IsDevice == 0)
                {//区域
                    //model.ObjectList = (from p in LayerObjectList select p.LayerObjectID).ToList<int>();
                    model.ObjectList = query.ObjectChildren;
                    if (model.ObjectList.Count == 0)
                    {//如果选择的区域对象下没有子集则取当前对象能耗,否则取各子集能耗
                        model.ObjectList = new List<int>() { query.ObjectId };
                    }
                }
                else
                {//设备只取当前对象能耗

                    //var device = new BLL.BaseLayerObject().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectId), " order by deviceid");
                    //if (device.Count > 0)
                    //{
                    //    model.ObjectList = (from p in device select p.DeviceID).ToList<int>();
                    //}
                }

                //model.Unit = GetUnit(query.StartTime, query.EndTime);
                model.Unit = BaseTool.GetChartUnit(query.particle);
                if (model.Unit == ChartUnit.unit_month)
                {
                    model.Starttime = Convert.ToDateTime(query.StartTime.ToString("yyyy-MM-1"));
                    model.Endtime = Convert.ToDateTime(query.EndTime.ToString("yyyy-MM-1"));
                }
                else
                {
                    model.Starttime = query.StartTime;
                    model.Endtime = query.EndTime;
                }

                Dictionary<string, decimal> tempLayerConvert = new Dictionary<string, decimal>();
                Dictionary<string, decimal> tempItemcodeConvert = new Dictionary<string, decimal>();
                if (query.ObjectChildren.Count == 0)
                {//当前选项没有子节点,则layer能耗和分类分项能耗就取当前选中节点的能耗值

                    foreach (var item in itemCodeList)
                    {
                        tempItemcodeConvert.Add(item.ItemCodeName, 0);

                        model.ItemCode = item.ItemCodeNumber;
                        BaseResult resList = _reportBll.GetBaseEneryDataList(model, query.ObjType == AreaType.Liquid ? true : false);
                        foreach (var r in resList.BaseLayerObjectResults)
                        {
                            var key = "";
                            if (model.IsDevice == 0)
                            {
                                key = r.Value.baseLayerObject.LayerObjectName;
                            }
                            else
                            {
                                key = r.Value.device.DeviceName;
                            }
                            if (!tempLayerConvert.ContainsKey(key))
                            {
                                tempLayerConvert.Add(key, 0);
                            }
                            if (query.ItemCode == "00000")
                            {//选择总能耗后把其他分类分项的能耗转化成标准煤
                                switch (query.QueryType)
                                {
                                    case EnergyAnalyseQueryType.Default: //默认总能耗
                                        tempLayerConvert[key] +=
                                  decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());//
                                        tempItemcodeConvert[item.ItemCodeName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());
                                        break;
                                    default:
                                        tempLayerConvert[key] +=
                                decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());
                                        tempItemcodeConvert[item.ItemCodeName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());
                                        break;
                                }
                            }
                            else
                            {
                                switch (query.QueryType)
                                {
                                    case EnergyAnalyseQueryType.Default: //默认总能耗
                                        tempLayerConvert[key] += r.Value.Total;
                                        tempItemcodeConvert[item.ItemCodeName] += r.Value.Total;
                                        break;
                                    default:
                                        tempLayerConvert[key] += r.Value.Total;
                                        tempItemcodeConvert[item.ItemCodeName] += r.Value.Total;
                                        break;
                                }
                            }
                        }
                    }
                }
                else
                {
                    model.ObjectList = query.ObjectChildren;//先获取layer子节点能耗值
                    foreach (var item in itemCodeList)
                    {

                        model.ItemCode = item.ItemCodeNumber;
                        BaseResult resList = _reportBll.GetBaseEneryDataList(model, query.ObjType == AreaType.Liquid ? true : false);
                        foreach (var r in resList.BaseLayerObjectResults)
                        {
                            var key = "";
                            if (model.IsDevice == 0)
                            {
                                key = r.Value.baseLayerObject.LayerObjectName;
                            }
                            else
                            {
                                key = r.Value.device.DeviceName;
                            }
                            if (!tempLayerConvert.ContainsKey(key))
                            {
                                tempLayerConvert.Add(key, 0);
                            }
                            if (query.ItemCode == "00000")
                            {//选择总能耗后把其他分类分项的能耗转化成标准煤
                                switch (query.QueryType)
                                {
                                    case EnergyAnalyseQueryType.Default: //默认总能耗
                                        tempLayerConvert[key] +=
                                  decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());//

                                        break;
                                    default:
                                        tempLayerConvert[key] +=
                                decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());

                                        break;
                                }
                            }
                            else
                            {
                                switch (query.QueryType)
                                {
                                    case EnergyAnalyseQueryType.Default: //默认总能耗
                                        tempLayerConvert[key] += r.Value.Total;

                                        break;
                                    default:
                                        tempLayerConvert[key] += r.Value.Total;

                                        break;
                                }

                            }

                        }

                    }

                    model.ObjectList = new List<int>() { query.ObjectId };//获取分类分项能耗值
                    foreach (var item in itemCodeList)
                    {
                        tempItemcodeConvert.Add(item.ItemCodeName, 0);
                        model.ItemCode = item.ItemCodeNumber;
                        BaseResult resList = _reportBll.GetBaseEneryDataList(model, query.ObjType == AreaType.Liquid ? true : false);

                        foreach (var r in resList.BaseLayerObjectResults)
                        {
                            if (query.ItemCode == "00000")
                            {//选择总能耗后把其他分类分项的能耗转化成标准煤
                                tempItemcodeConvert[item.ItemCodeName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());
                            }
                            else
                            {
                                tempItemcodeConvert[item.ItemCodeName] += r.Value.Total;
                            }
                        }

                    }
                }
                var tempDesc = from tt in tempLayerConvert orderby tt.Value descending select tt;//PieChart按照能耗值从高到低排序
                int tempindex = 1;
                decimal tempcount = 0;
                foreach (var item in tempDesc)
                {
                    decimal value = decimal.Round(item.Value, 2);
                    if (tempindex < 11)
                    {
                        result.LayerPie.series[0].data.Add(new EneryHighChart()
                        {
                            name = item.Key,
                            y = value
                        });
                    }
                    else
                    {
                        tempcount += value;
                    }

                    tempindex++;
                }
                if (tempindex > 11)
                {
                    result.LayerPie.series[0].data.Add(new EneryHighChart()
                    {
                        name = "其他",
                        y = tempcount
                    });
                }
                tempDesc = from tt in tempItemcodeConvert orderby tt.Value descending select tt;//PieChart按照能耗值从高到低排序
                tempindex = 1;
                tempcount = 0;
                foreach (var item in tempDesc)
                {
                    decimal value = decimal.Round(item.Value, 2);
                    if (tempindex < 11)
                    {
                        result.ItemCodePie.series[0].data.Add(new EneryHighChart()
                        {
                            name = item.Key,
                            y = value
                        });
                    }
                    else
                    {
                        tempcount += value;
                    }
                    tempindex++;
                }
                if (tempindex > 10)
                {
                    result.ItemCodePie.series[0].data.Add(new EneryHighChart()
                    {
                        name = "其他",
                        y = tempcount
                    });
                }
                return result;
            }
            catch (Exception ee)
            {
                throw ee;
            }
        }