public JsonResult GetPressureMeterByAreaUid(Guid areaUid)
        {
            JsonResult result = new JsonResult();

            result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;

            //Func<List<FlowMeterStatusAndArea>> fmAndStatusArea = () => flowmeterService.GetFlowMeterStatusByArea(areaUid);
            //List<FlowMeterStatusAndArea> fmstatusAndAreaList = DBHelper.get<FlowMeterStatusAndArea>(fmAndStatusArea,
            //    ConfigurationManager.AppSettings["FlowMeterStatusByAreaUid"] + areaUid);

            Func <List <PressureMeterStatusAndArea> > pmAndStatusArea     = () => pressuremeterService.GetPressureMeterStatusByArea(areaUid);
            List <PressureMeterStatusAndArea>         pmstatusAndAreaList = DBHelper.get <PressureMeterStatusAndArea>(pmAndStatusArea,
                                                                                                                      ConfigurationManager.AppSettings["PressureMeterStatusByAreaUid"] + areaUid).ToList();

            User_t account = UserContext.account;
            List <PressureMeterStatusAndArea> pms_areas       = new List <PressureMeterStatusAndArea>();
            List <PressureMeterStatusAndArea> pms_areas_order = new List <PressureMeterStatusAndArea>();

            if (account.Usr_Type != 3)
            {
                List <Area_t> subarealist = areaService.GetSubArea(areaUid);
                foreach (var item in subarealist)
                {
                    Func <List <PressureMeterStatusAndArea> > pmsaFunc = () => pressuremeterService.GetPressureMeterStatusByArea(areaUid);
                    var pmsalist = DBHelper.get <PressureMeterStatusAndArea>(pmsaFunc,
                                                                             ConfigurationManager.AppSettings["PressureMeterStatusByAreaUid"] + areaUid).ToList();
                    pms_areas.AddRange(pmsalist);
                }

                //获取设备访问次数,根据访问次数排序,再将剩余的设备整合
                Func <List <VisitCount> > initvisit = () => { return(new List <VisitCount>()); };
                List <VisitCount>         vclist    = DBHelper.getWithNoExpire <List <VisitCount> >(initvisit, UserContext.account.Usr_UId + ConfigurationManager.AppSettings["VisitPressureMeterCount"]);
                vclist = vclist.OrderByDescending(p => p.count).ToList();
                foreach (var item in vclist)
                {
                    var data = pms_areas.Where(p => p.pressuremeter.PM_UId == Guid.Parse(item.uid)).FirstOrDefault();
                    if (data != null)
                    {
                        pms_areas_order.Add(data);
                    }
                }
                foreach (var item in pms_areas)
                {
                    if (vclist.Where(p => p.uid == item.pressuremeter.PM_UId.ToString()).Count() == 0)
                    {
                        pms_areas_order.Add(item);
                    }
                }
            }


            //result.Data = pmstatusAndAreaList;
            string dataresult = ToJson <List <PressureMeterStatusAndArea> > .Obj2Json <List <PressureMeterStatusAndArea> >(pms_areas_order).Replace("\\\\", "");

            dataresult = dataresult.Replace("\\\\", "");

            result.Data = dataresult;
            return(result);
        }
        /// <summary>
        /// 输出昨日流量变化幅度从大到小排行的流量计列表
        /// </summary>
        /// <returns></returns>
        public JsonResult GetLastDayFlowList()
        {
            JsonResult result = new JsonResult();

            result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            List <FlowMeterData> fmdata_account = new List <FlowMeterData>();
            User_t             account          = UserContext.account;
            List <FlowMeter_t> fmlist           = new List <FlowMeter_t>();

            if (account.Usr_Type == 3)
            {
                fmlist = flowmeter_Service.GetFlowMetersByUserUid(account.Usr_UId);
            }
            else
            {
                fmlist = flowmeter_Service.GetAllFlowMeter();
            }
            List <FlowMeterData> fmdatalist = new List <FlowMeterData>();

            foreach (var item in fmlist)
            {
                if (item.FM_FlowCountLast != null)
                {
                    Func <FlowMeterData> fmdataFunc = () => flowmeter_Service.GetAnalysisByFlowMeter(item, (DateTime)item.FM_FlowCountLast);
                    var fmdata = DBHelper.getT <FlowMeterData>(fmdataFunc, ConfigurationManager.AppSettings["FlowMeterAnalysisByFMUid"] + item.FM_UId);
                    fmdatalist.Add(fmdata);
                }
            }

            //先剔除“无法计算”的昨日流量比例,按大小排序,再补上“无法计算”
            var fmdatatemp1 = fmdatalist.Where(p => p.lastday_flow_proportion != "无法计算").ToList();

            if (fmdatatemp1.Count >= 0 && fmdatatemp1.Count < 3)
            {
                fmdatalist.AddRange(fmdatatemp1);
                var fmdatatemp2 = fmdatalist.Where(p => p.lastday_flow_proportion == "无法计算").ToList();
                if (fmdatatemp2.Count > 0)
                {
                    fmdata_account.AddRange(fmdatatemp2);
                    fmdata_account = fmdata_account.Take(3).ToList();
                }
            }
            else if (fmdatatemp1.Count >= 3)
            {
                fmdata_account = fmdatatemp1.OrderByDescending(p => p.lastday_flow_proportion).Take(3).ToList();
            }


            string dataresult = ToJson <List <FlowMeterData> > .Obj2Json <List <FlowMeterData> >(fmdata_account).Replace("\\\\", "");

            dataresult = dataresult.Replace("\\\\", "");

            result.Data = dataresult;
            return(result);
        }
        public JsonResult GetQualityMeterByAreaUid(Guid areaUid)
        {
            JsonResult result = new JsonResult();

            result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;

            List <QualityMeterStatusAndArea> qms_areas       = new List <QualityMeterStatusAndArea>();
            List <QualityMeterStatusAndArea> qms_areas_order = new List <QualityMeterStatusAndArea>();

            if (UserContext.account.Usr_Type != 3)
            {
                List <Area_t> subarealist = areaService.GetSubArea(areaUid);
                foreach (var item in subarealist)
                {
                    Func <List <QualityMeterStatusAndArea> > qmAndStatusArea = () => qualitymeterService.GetQualityMeterStatusByArea(areaUid);
                    var qmslist = DBHelper.get <QualityMeterStatusAndArea>(qmAndStatusArea, ConfigurationManager.AppSettings["QualityMeterStatusByAreaUid"] + areaUid);
                    qms_areas.AddRange(qmslist);
                }

                //获取设备访问次数,根据访问次数排序,再将剩余的设备整合
                //Func<List<VisitCount>> initvisit = () => { return new List<VisitCount>(); };
                //List<VisitCount> vclist = DBHelper.getWithNoExpire<List<VisitCount>>(initvisit, UserContext.account.Usr_UId + ConfigurationManager.AppSettings["VisitQualityMeterCount"]);
                //vclist = vclist.OrderByDescending(p => p.count).ToList();
                //foreach (var item in vclist)
                //{
                //    var data = qms_areas.Where(p => p.qualitymeter.QM_UId == Guid.Parse(item.uid)).FirstOrDefault();
                //    if (data != null)
                //    {
                //        qms_areas_order.Add(data);
                //    }
                //}
                //foreach (var item in qms_areas)
                //{
                //    if (vclist.Where(p => p.uid == item.qualitymeter.QM_UId.ToString()).Count() == 0)
                //    {
                //        qms_areas_order.Add(item);
                //    }
                //}
            }


            //result.Data = qmstatusAndAreaList;
            string dataresult = ToJson <List <QualityMeterStatusAndArea> > .Obj2Json <List <QualityMeterStatusAndArea> >(qms_areas).Replace("\\\\", "");

            dataresult = dataresult.Replace("\\\\", "");

            result.Data = dataresult;
            return(result);
        }
Beispiel #4
0
        /// <summary>
        /// 输出昨日水压变化幅度从大到小排行的水压计列表
        /// </summary>
        /// <returns></returns>
        public JsonResult GetLastDayPressureList()
        {
            JsonResult result = new JsonResult();

            result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            List <PressureMeterData> pmdatalist = new List <PressureMeterData>();
            User_t account = UserContext.account;
            //Func<List<PressureMeterData>> pmdataFunc = () => pressuremeter_service.GetPressureMetersDataByUser(account);
            //var pmdataanalysis = DBHelper.get<PressureMeterData>(pmdataFunc, ConfigurationManager.AppSettings["allPressureAnalysisByUserUid"] + account.Usr_UId);
            List <PressureMeterData> pmdataanalysis = new List <PressureMeterData>();
            List <PressureMeter_t>   pmlist         = new List <PressureMeter_t>();

            if (account.Usr_Type == 3)
            {
                //获取客户的水压计,当前水压计未绑定客户
            }
            else
            {
                pmlist = pressuremeter_service.GetAllPressureMeter();
                foreach (var item in pmlist)
                {
                    if (item.PM_CountLast != null)
                    {
                        Func <PressureMeterData> pmdataFunc = () => pressuremeter_service.GetAnalysisByPressureMeter(item, (DateTime)item.PM_CountLast);
                        var pmdata = DBHelper.getT <PressureMeterData>(pmdataFunc, ConfigurationManager.AppSettings["PressureMeterAnalysisByPMUid"] + item.PM_UId);
                        pmdataanalysis.Add(pmdata);
                    }
                }
            }

            pmdatalist = pmdataanalysis.Where(p => p.lastday_pressure_proportion != "无法计算").OrderByDescending(p => p.lastday_pressure_proportion).Take(3).ToList();

            string dataresult = ToJson <List <PressureMeterData> > .Obj2Json <List <PressureMeterData> >(pmdatalist).Replace("\\\\", "");

            dataresult = dataresult.Replace("\\\\", "");

            result.Data = dataresult;
            return(result);
        }
        /// <summary>
        /// 输出经常访问的流量计分析数据
        /// </summary>
        /// <param name="fmUids"></param>
        /// <returns></returns>
        ///
        public JsonResult GetMostVisitsFlowMeter()
        {
            JsonResult result = new JsonResult();

            result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;

            List <FlowMeterData> fmdata_account = new List <FlowMeterData>();
            User_t account = UserContext.account;
            //获取账号访问设备次数的list
            Func <List <VisitCount> > initvisit = () => { return(new List <VisitCount>()); };
            List <VisitCount>         vclist    = DBHelper.get <List <VisitCount> >(initvisit, UserContext.account.Usr_UId + ConfigurationManager.AppSettings["VisitFlowMeterCount"]);

            //Func<List<FlowMeterData>> fmdataFunc = () => flowmeter_Service.GetFlowMetersDataByUserUid(account);
            //List<FlowMeterData> fmdataanalysis = DBHelper.get<FlowMeterData>(fmdataFunc, ConfigurationManager.AppSettings["allFlowAnalysisByUserUid"] + account.Usr_UId);
            List <FlowMeter_t> fmlist = new List <FlowMeter_t>();

            if (account.Usr_Type == 3)
            {
                fmlist = flowmeter_Service.GetFlowMetersByUserUid(account.Usr_UId).ToList();
            }
            else
            {
                fmlist = flowmeter_Service.GetAllFlowMeter();
            }
            if (vclist.Count > 0)
            {
                vclist = vclist.OrderByDescending(p => p.count).ToList();
                foreach (var vcitem in vclist)
                {
                    FlowMeter_t fm = fmlist.First(p => p.FM_UId == Guid.Parse(vcitem.uid));
                    if (fm.FM_FlowCountLast != null)
                    {
                        Func <FlowMeterData> fmdataFunc = () => flowmeter_Service.GetAnalysisByFlowMeter(fm, (DateTime)fm.FM_FlowCountLast);
                        var fmdata = DBHelper.getT <FlowMeterData>(fmdataFunc, ConfigurationManager.AppSettings["FlowMeterAnalysisByFMUid"] + fm.FM_UId);
                        fmdata_account.Add(fmdata);
                    }
                }
                foreach (FlowMeter_t item in fmlist)
                {
                    if (vclist.All(p => p.uid != item.FM_UId.ToString()) && item.FM_FlowCountLast != null)
                    {
                        Func <FlowMeterData> fmdataFunc = () => flowmeter_Service.GetAnalysisByFlowMeter(item, (DateTime)item.FM_FlowCountLast);
                        var fmdata = DBHelper.getT <FlowMeterData>(fmdataFunc, ConfigurationManager.AppSettings["FlowMeterAnalysisByFMUid"] + item.FM_UId);
                        fmdata_account.Add(fmdata);
                    }
                }
            }
            else
            {
                foreach (var item in fmlist)
                {
                    if (item.FM_FlowCountLast != null)
                    {
                        Func <FlowMeterData> fmdataFunc = () => flowmeter_Service.GetAnalysisByFlowMeter(item, (DateTime)item.FM_FlowCountLast);
                        var fmdata = DBHelper.getT <FlowMeterData>(fmdataFunc, ConfigurationManager.AppSettings["FlowMeterAnalysisByFMUid"] + item.FM_UId);
                        fmdata_account.Add(fmdata);
                    }
                }
            }

            string dataresult = ToJson <List <FlowMeterData> > .Obj2Json <List <FlowMeterData> >(fmdata_account).Replace("\\\\", "");

            dataresult = dataresult.Replace("\\\\", "");

            result.Data = dataresult;
            return(result);
        }
Beispiel #6
0
        /// <summary>
        /// 输出经常访问的水压计分析数据
        /// </summary>
        /// <param name="pmUids"></param>
        /// <returns></returns>
        public JsonResult GetMostVisitsPressureMeter(string[] pmUids)
        {
            JsonResult result  = new JsonResult();
            User_t     account = UserContext.account;

            result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;

            List <PressureMeterData> pmdataanalysis = new List <PressureMeterData>();
            List <PressureMeter_t>   pmlist         = new List <PressureMeter_t>();

            if (account.Usr_Type == 3)
            {
                //获取客户的水压计,当前水压计未绑定客户
            }
            else
            {
                pmlist = pressuremeter_service.GetAllPressureMeter();
                foreach (var item in pmlist)
                {
                    if (item.PM_CountLast != null)
                    {
                        Func <PressureMeterData> pmdataFunc = () => pressuremeter_service.GetAnalysisByPressureMeter(item, (DateTime)item.PM_CountLast);
                        var pmdata = DBHelper.getT <PressureMeterData>(pmdataFunc, ConfigurationManager.AppSettings["PressureMeterAnalysisByPMUid"] + item.PM_UId);
                        pmdataanalysis.Add(pmdata);
                    }
                }
            }

            //Func<List<PressureMeterData>> pmdataFunc = () => pressuremeter_service.GetPressureMetersDataByUser(account);
            //var pmdataanalysis = DBHelper.get<PressureMeterData>(pmdataFunc, ConfigurationManager.AppSettings["allPressureAnalysisByUserUid"] + account.Usr_UId);
            List <PressureMeterData> pmdatalist = new List <PressureMeterData>();

            Func <List <VisitCount> > initvisit = () => { return(new List <VisitCount>()); };
            List <VisitCount>         vclist    = DBHelper.get <List <VisitCount> >(initvisit, UserContext.account.Usr_UId + ConfigurationManager.AppSettings["VisitPressureMeterCount"]);

            if (vclist.Count > 0)
            {
                vclist.OrderByDescending(p => p.count).ToList();

                for (var i = 0; i < vclist.Count; i++)
                {
                    var pmdata = pmdataanalysis.FirstOrDefault(p => p.PM_Uid == Guid.Parse(vclist[i].uid));
                    pmdatalist.Add(pmdata);
                }
                for (var i = 0; i < pmdataanalysis.Count; i++)
                {
                    if (vclist.Where(p => p.uid == pmdataanalysis[i].PM_Uid.ToString()).Count() == 0)
                    {
                        pmdatalist.Add(pmdataanalysis[i]);
                    }
                }
            }
            else
            {
                pmdatalist = pmdataanalysis;
            }


            string dataresult = ToJson <List <PressureMeterData> > .Obj2Json <List <PressureMeterData> >(pmdatalist).Replace("\\\\", "");

            dataresult  = dataresult.Replace("\\\\", "");
            result.Data = dataresult;
            return(result);
        }
        public JsonResult GetFlowMeterByAreaUid(Guid areaUid)
        {
            JsonResult result = new JsonResult();

            result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            List <FlowMeterStatusAndArea> fms_areas_order = new List <FlowMeterStatusAndArea>();
            List <FlowMeterStatusAndArea> fms_areas       = new List <FlowMeterStatusAndArea>();

            //获取areauid对应的设备信息,并以areauid区分存储在redis
            Func <List <FlowMeterStatusAndArea> > fmAndStatusArea     = () => flowmeterService.GetFlowMeterStatusByArea(areaUid);
            List <FlowMeterStatusAndArea>         fmstatusAndAreaList = DBHelper.get <FlowMeterStatusAndArea>(fmAndStatusArea,
                                                                                                              ConfigurationManager.AppSettings["FlowMeterStatusByAreaUid"] + areaUid);

            User_t account = UserContext.account;

            if (account.Usr_Type == 3)
            {
                fms_areas = fmstatusAndAreaList.Where(p => p.flowmeter.FM_WaterConsumerUId == account.Usr_UId).ToList();
            }
            else
            {
                //筛选出子区域范围内的所有流量计
                List <Area_t> subarealist = areaService.GetSubArea(areaUid);

                foreach (var areaitem in subarealist)
                {
                    Func <List <FlowMeterStatusAndArea> > fmsFunc = () => flowmeterService.GetFlowMeterStatusByArea(areaUid);
                    var fmslist = DBHelper.get <FlowMeterStatusAndArea>(fmsFunc,
                                                                        ConfigurationManager.AppSettings["FlowMeterStatusByAreaUid"] + areaitem.Ara_UId);
                    fms_areas.AddRange(fmslist);
                }
                //foreach (var item in fmstatusAndAreaList)
                //{
                //    if (subarealist.Where(p => p.Ara_UId == item.area.Ara_UId).Count() > 0)
                //    {
                //        fms_areas.Add(item);
                //    }
                //}
            }

            //获取设备访问次数,根据访问次数排序,再将剩余的设备整合
            Func <List <VisitCount> > initvisit = () => { return(new List <VisitCount>()); };
            List <VisitCount>         vclist    = DBHelper.getWithNoExpire <List <VisitCount> >(initvisit, UserContext.account.Usr_UId + ConfigurationManager.AppSettings["VisitFlowMeterCount"]);

            vclist = vclist.OrderByDescending(p => p.count).ToList();
            foreach (var item in vclist)
            {
                var data = fms_areas.Where(p => p.flowmeter.FM_UId == Guid.Parse(item.uid)).FirstOrDefault();
                if (data != null)
                {
                    fms_areas_order.Add(data);
                }
            }
            foreach (var item in fms_areas)
            {
                if (vclist.Where(p => p.uid == item.flowmeter.FM_UId.ToString()).Count() == 0)
                {
                    fms_areas_order.Add(item);
                }
            }

            string dataresult = ToJson <List <FlowMeterStatusAndArea> > .Obj2Json <List <FlowMeterStatusAndArea> >(fms_areas_order);

            dataresult = dataresult.Replace("\\\\", "");

            result.Data = dataresult;
            return(result);
        }