Beispiel #1
0
        /// <summary>
        /// 数据库获取导出数据列表
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public List<FeeApportionListClass> GetFeeApportDataList(Queryfeeapportion query)
        {
            Queryfeeapportion queryLastMonth = query;
            List<TB_Alloction_Config> config = GetAlloctionConfig(query);

            int iCout = 0;
            // 列表
            List<FeeApportionListClass> appList = new List<FeeApportionListClass>();
            foreach (TB_Alloction_Config conf in config)
            {
                FeeApportionListClass listClass = new FeeApportionListClass();

                SeriesClass serial1 = new SeriesClass();
                SeriesClass serial2 = new SeriesClass();
                int objectId = conf.AreaID;
                List<Model.BaseLayerObject> objectList;
                string objectName = "";
                if (query.ObjType == AreaType.Area)
                {
                    TB_AreaInfo info = _accssCommon.GetAreaInfo(conf.AreaID);
                    //objectList = new BLL.BaseLayerObject().GetBaseLayerObjectList(
                    //       string.Format(" and layerobjectid ={0} ", conf.AreaID), " ");

                    if (info != null )
                    {
                        objectName = info.CName;
                    }
                }
                else
                {
                    TB_AreaInfo info = _accssCommon.GetAreaInfo(conf.AreaID);
                    if (info != null)
                    {
                        objectName = info.CName;
                    }

                }

                Queryfeeapportion queryItem = new Queryfeeapportion();
                queryItem = query;
                queryItem.ObjectId = conf.AreaID;
                double BefFee = 0;
                //List<CostQueryModel> refModel = _feeApportion.GetCostQuery(queryItem, conf.ALLoction_StartDate, conf.ALLoction_EndDate);
                //double BefFee = 0;
                //if (refModel.Count > 0)
                //{
                //    for (int jCount = 0; jCount < refModel.Count; jCount++)
                //    {
                //        BefFee += refModel[jCount].TOTAL_COST;
                //    }
                //}

                EnergyContrast energy = new EnergyContrast();
                BasicQuery query2 = new BasicQuery();
                query2.AreaType = query.ObjType;
                query2.StartTime = config[0].ALLoction_StartDate;
                query2.EndTime = config[0].ALLoction_EndDate;
                query2.ObjectNum = query.ObjectId;
                query2.QueryType = EnergyAnalyseQueryType.Default;
                query2.Unit = 1;
                var lineChart = energy.GetSingleItemCodeByObject(query2, query.ItemCode);

                BefFee = (double)lineChart.Values.Sum();
                AccessCommon acess = new AccessCommon();
                decimal flPrice = acess.GetFeePrice(query.ItemCode);
                BefFee = BefFee * (double)flPrice;

                FeeApportionListClass list1 = new FeeApportionListClass();
                list1.Id = iCout + 1;
                list1.Obj = objectName;
                list1.Tm = query.StartTime.ToString("yyyy-MM");
                list1.BeforeVal = BefFee;
                list1.ApportionVal = (conf.ALLoction_Fee*conf.CfgPercent)/100;
                list1.TotalVal = list1.BeforeVal + list1.ApportionVal;
                appList.Add(list1);
                iCout++;
            }

            return appList;
        }
Beispiel #2
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public ResultFeeapportion GetFeeApportionData(Queryfeeapportion query)
        {
            try
            {
                ExecuteProcess process = new ExecuteProcess();
                process.ActionName = "";
                process.ActionTime = System.DateTime.Now;
                process.Success = true;
                process.ExceptionMsg = "";

                ResultFeeapportion feeApption = new ResultFeeapportion();
                feeApption.FeeApportionType = "按比例分摊";

                List<TB_Alloction_Config> config = GetAlloctionConfig(query);
                if (config.Count == 0)
                {
                    process.Success = false;
                    process.ExceptionMsg = "此区域费用分摊没有配置";

                    ResultFeeapportion feeApptionReturn = new ResultFeeapportion();
                    feeApption.ActionInfo = process;
                    return feeApption;
                }

                Queryfeeapportion queryLastMonth = new Queryfeeapportion();
                queryLastMonth.ItemCode = query.ItemCode;
                queryLastMonth.ObjType = query.ObjType;
                queryLastMonth.ObjectId = query.ObjectId;
                queryLastMonth.StartTime = query.StartTime.AddMonths(-1);

                List<TB_Alloction_Config> configLast = GetAlloctionConfig(queryLastMonth);

                FeeApportionValClass feeappVal = new FeeApportionValClass();

                FeeApportionChartsClass chartClass = new FeeApportionChartsClass();

                // 数据。
                List<SeriesClass> serialClass = new List<SeriesClass>();

                if (config.Count > 0)
                {
                    DateTime dtBegin = config[0].ALLoction_StartDate;
                    DateTime dtEnd = config[0].ALLoction_EndDate;

                    double feeDai = config[0].ALLoction_Fee;
                    feeappVal.ApportionVal = config[0].ALLoction_Fee;

                    //List<CostQueryModel> refModel = _feeApportion.GetCostQuery(query, dtBegin, dtEnd);

                    EnergyContrast energy = new EnergyContrast();
                    BasicQuery query2 = new BasicQuery();
                    query2.AreaType = query.ObjType;
                    query2.StartTime = config[0].ALLoction_StartDate;
                    query2.EndTime = config[0].ALLoction_EndDate;
                    query2.ObjectNum = query.ObjectId;
                    query2.QueryType = EnergyAnalyseQueryType.Default;
                    query2.Unit = 1;
                    var lineChart = energy.GetSingleItemCodeByObject(query2, query.ItemCode);
                    double befVal = 0;
                    befVal = (double)lineChart.Values.Sum();
                    AccessCommon acess= new AccessCommon();
                    decimal flPrice = acess.GetFeePrice(query.ItemCode);
                    befVal = befVal*(double)flPrice;
                    //foreach (var costQueryModel in refModel)
                    //{
                    //    befVal += costQueryModel.TOTAL_COST;
                    //}
                    feeappVal.BeforeVal = Math.Round(befVal,2);
                    feeappVal.TotalVal = Math.Round((befVal + feeappVal.ApportionVal),2);
                }

                List<SeriesData> sidatas = new List<SeriesData>();
                SeriesData seri = new SeriesData();
                // 统计明细数据

                SeriesData data1 = new SeriesData();
                SeriesData data2 = new SeriesData();
                List<SeriesClass> serClass1 = new List<SeriesClass>();
                List<SeriesClass> serClass2 = new List<SeriesClass>();

                int iCout = 0;
                // 列表
                List<FeeApportionListClass> appList = new List<FeeApportionListClass>();
                foreach (TB_Alloction_Config conf in config)
                {
                    FeeApportionListClass listClass = new FeeApportionListClass();

                    SeriesClass serial1 = new SeriesClass();
                    SeriesClass serial2 = new SeriesClass();
                    int objectId = conf.AreaID;
                    List<Model.BaseLayerObject> objectList;
                    string objectName = "";
                    TB_AreaInfo info = _accssCommon.GetAreaInfo(conf.AreaID);
                    if (info != null)
                    {
                        objectName = info.CName;
                    }

                    //Queryfeeapportion queryItem = new Queryfeeapportion();
                    //queryItem = query;
                    //queryItem.ObjectId = conf.AreaID;
                    //List<CostQueryModel> refModel = _feeApportion.GetCostQuery(queryItem, conf.ALLoction_StartDate, conf.ALLoction_EndDate);
                    double BefFee = 0;
                    //if (refModel.Count > 0)
                    //{
                    //    for (int jCount = 0; jCount < refModel.Count; jCount++)
                    //    {
                    //        BefFee += refModel[jCount].TOTAL_COST;
                    //    }
                    //}
                    EnergyContrast energy = new EnergyContrast();
                    BasicQuery query2 = new BasicQuery();
                    query2.AreaType = query.ObjType;
                    query2.StartTime = config[0].ALLoction_StartDate;
                    query2.EndTime = config[0].ALLoction_EndDate;
                    query2.ObjectNum = conf.AreaID;
                    query2.QueryType = EnergyAnalyseQueryType.Default;
                    query2.Unit = 1;
                    var lineChart2 = energy.GetSingleItemCodeByObject(query2, query.ItemCode);
                    BefFee = (double)lineChart2.Values.Sum();
                    AccessCommon acess = new AccessCommon();
                    decimal flPrice = acess.GetFeePrice(query.ItemCode);
                    BefFee = BefFee * (double)flPrice;

                    serial1.name = objectName;
                    serial2.name = objectName;
                    serial1.y = Math.Round(BefFee);
                    serial2.y = Math.Round((conf.ALLoction_Fee * conf.CfgPercent),2);

                    serClass1.Add(serial1);
                    serClass2.Add(serial2);

                    FeeApportionListClass list1 = new FeeApportionListClass();
                    list1.Id = iCout + 1;
                    list1.Obj = objectName;
                    list1.Tm = query.StartTime.ToString("yyyy-MM");
                    list1.BeforeVal = Math.Round(BefFee,2);
                    list1.ApportionVal = Math.Round((conf.ALLoction_Fee * conf.CfgPercent),2);
                    list1.TotalVal = list1.BeforeVal + list1.ApportionVal;
                    appList.Add(list1);
                    iCout++;

                }
                data1.name = "分摊前费用";
                data1.data = serClass1;

                data2.name = "分摊费用";
                data2.data = serClass2;
                sidatas.Add(data1);
                sidatas.Add(data2);
                chartClass.series = sidatas;
                feeApption.FeeApportionCharts = chartClass;

                if (configLast.Count > 0)
                {
                    DateTime dtBegin2 = configLast[0].ALLoction_StartDate;
                    DateTime dtEnd2 = configLast[0].ALLoction_EndDate;

                    double feeDai = configLast[0].ALLoction_Fee;
                    feeappVal.ApportionValLastMonth = configLast[0].ALLoction_Fee;

                    //List<CostQueryModel> refModel = _feeApportion.GetCostQuery(query, dtBegin2, dtEnd2);
                    double beforeApportionVal = 0;
                    //foreach (var costQueryModel in refModel)
                    //{
                    //    beforeApportionVal += costQueryModel.TOTAL_COST;
                    //}
                    EnergyContrast energy = new EnergyContrast();
                    BasicQuery query2 = new BasicQuery();
                    query2.AreaType = query.ObjType;
                    query2.StartTime = configLast[0].ALLoction_StartDate;
                    query2.EndTime = configLast[0].ALLoction_EndDate;
                    query2.ObjectNum = query.ObjectId;
                    query2.QueryType = EnergyAnalyseQueryType.Default;
                    query2.Unit = 1;
                    var lineChart2 = energy.GetSingleItemCodeByObject(query2, query.ItemCode);
                    beforeApportionVal = (double)lineChart2.Values.Sum();
                    AccessCommon acess = new AccessCommon();
                    decimal flPrice = acess.GetFeePrice(query.ItemCode);
                    beforeApportionVal = Math.Round(beforeApportionVal * (double)flPrice,2);

                    feeappVal.BeforeValLastMonth = beforeApportionVal;
                    feeappVal.TotalValLastMonth = beforeApportionVal + feeappVal.ApportionValLastMonth;

                }
                if (feeappVal.ApportionValLastMonth > 0)
                {
                    double compare = (feeappVal.ApportionVal-feeappVal.ApportionValLastMonth)*100/
                                     feeappVal.ApportionValLastMonth;
                    feeappVal.ApportionValCompare =Math.Round(compare,2).ToString();
                }
                else
                {
                    feeappVal.ApportionValCompare = "-";
                }

                if (feeappVal.BeforeValLastMonth > 0)
                {
                    double compare = (feeappVal.BeforeVal-feeappVal.BeforeValLastMonth) * 100 / feeappVal.BeforeValLastMonth;
                    feeappVal.BeforeValCompare = Math.Round(compare, 2).ToString();
                }
                else
                {
                    feeappVal.BeforeValCompare = "-";
                }

                if (feeappVal.TotalValLastMonth > 0)
                {
                    double compare = (feeappVal.TotalVal-feeappVal.TotalValLastMonth)*100/feeappVal.TotalValLastMonth;
                    feeappVal.TotalValCompare = Math.Round(compare, 2).ToString();
                }
                else
                {
                    feeappVal.TotalValCompare = "-";
                }
                FeeApportionTblClass tblClass = new FeeApportionTblClass();

                tblClass.FeeApportionList = appList;
                feeApption.FeeApportionTbl = tblClass;
                feeApption.FeeApportionVal = feeappVal;
                feeApption.ActionInfo = process;

                return feeApption;
            }
            catch (Exception ex)
            {
                ExecuteProcess process = new ExecuteProcess();
                process.ActionName = "";
                process.ActionTime = System.DateTime.Now;
                process.Success = false;
                process.ExceptionMsg = ex.Message;
                ResultFeeapportion feeApption = new ResultFeeapportion();
                feeApption.ActionInfo = process;
                return feeApption;
            }
        }