예제 #1
0
        public CDataResult <CWmtRainRegionDetailDto> GetWmtRainRegionDetailFromMobile(CWmtRainInput input)
        {
            CWmtRainRegionDetailDto result = new CWmtRainRegionDetailDto();

            //Get Site Count and rain site count
            result.stationCount = this._stnInfoBRepository.GetAll().Where(c => c.addvcd == input.addvcd).Count();
            var query = from r in _wmtRainFiveMinutesRepository.GetAll()
                        join s in _stnInfoBRepository.GetAll() on r.stcd equals s.areaCode
                        where ((input.fromTime == null || r.tm > input.fromTime) && s.addvcd == input.addvcd && r.drp > 0)
                        select new { areaCode = s.areaCode };

            result.stationCountRain = query.Distinct().Count();

            // Max Rain
            var query1 = from r in _wmtRainFiveMinutesRepository.GetAll()
                         join s in _stnInfoBRepository.GetAll() on r.stcd equals s.areaCode
                         where ((input.fromTime == null || r.tm > input.fromTime) && s.addvcd == input.addvcd)
                         select new
            {
                areaCode  = s.areaCode,
                areaName  = s.areaName,
                paravalue = r.drp,
                time      = r.tm
            };
            var dataList = query1.ToList();
            List <CWmtRainDetailListDto> hourDataList = new List <CWmtRainDetailListDto>();
            var timelist = dataList.GroupBy(c => new { c.areaCode, c.areaName }).ToList();

            foreach (var item in timelist)
            {
                CWmtRainDetailListDto dto = new CWmtRainDetailListDto()
                {
                    areaCode  = item.Key.areaCode,
                    areaName  = item.Key.areaName,
                    paravalue = item.Sum(c => c.paravalue)
                };
                hourDataList.Add(dto);
            }
            if (hourDataList.Count() > 0)//.Count() > 0
            {
                var maxResult = hourDataList.OrderByDescending(r => r.paravalue).FirstOrDefault();
                result.maxParavalue   = maxResult.paravalue;
                result.maxParaStation = maxResult.areaName;
            }
            else
            {
                result.maxParavalue   = 0;
                result.maxParaStation = "";
            }
            // Max Rain Hour
            var query2 = from r in _wmtRainFiveMinutesRepository.GetAll()
                         join s in _stnInfoBRepository.GetAll() on r.stcd equals s.areaCode
                         where ((input.fromTime == null || r.tm > input.fromTime) && s.addvcd == input.addvcd)
                         select new
            {
                areaCode  = s.areaCode,
                areaName  = s.areaName,
                paravalue = r.drp,
                time      = r.tm
            };
            var dataList2 = query2.ToList();
            List <CWmtRainDetailListDto> hourDataList2 = new List <CWmtRainDetailListDto>();

            var timelist2 = dataList2.GroupBy(c => new { areaCode = c.areaCode, areaName = c.areaName, Date = c.time.Date.AddHours(c.time.Hour) }).ToList();

            foreach (var item in timelist2)
            {
                CWmtRainDetailListDto dto = new CWmtRainDetailListDto()
                {
                    areaCode    = item.Key.areaCode,
                    areaName    = item.Key.areaName,
                    collecttime = item.Key.Date,
                    paravalue   = item.Sum(c => c.paravalue)
                };
                hourDataList2.Add(dto);
            }
            if (hourDataList2.Count() > 0)
            {
                var maxResult = hourDataList2.OrderByDescending(r => r.paravalue).FirstOrDefault();
                result.maxParavalueHour   = maxResult.paravalue;
                result.maxParaStationHour = maxResult.areaName;
                result.maxParaTimeHour    = maxResult.collecttime;
            }
            else
            {
                result.maxParavalueHour   = 0;
                result.maxParaStationHour = "";
                result.maxParaTimeHour    = null;
            }
            return(new CDataResult <CWmtRainRegionDetailDto>()
            {
                IsSuccess = true,
                ErrorMessage = null,
                Data = result
            });
        }
예제 #2
0
        public CDataResult <CWmtRainDetailListDto> GetMaxWmtRainHourTotalFromMobile(CWmtRainInput input)
        {
            //var query = from allData in (from r in _wmtRainFiveMinutesRepository.GetAll()
            //                join s in _stnInfoBRepository.GetAll() on r.stcd equals s.areaCode
            //                where (input.fromTime == null || r.tm > input.fromTime)
            //                select new
            //                {
            //                    areaCode = s.areaCode,
            //                    areaName = s.areaName,
            //                    paravalue = r.drp,
            //                    time = r.tm.Date.AddHours(r.tm.Hour)
            //                })
            //            group allData by new { allData.areaCode, allData.areaName,allData.time } into lst
            //            select new
            //            {
            //                areaCode = lst.Key.areaCode,
            //                areaName = lst.Key.areaName,
            //                paravalue = lst.Sum(c=>c.paravalue),
            //                time = lst.Key.time
            //            };
            var query = from r in _wmtRainFiveMinutesRepository.GetAll()
                        join s in _stnInfoBRepository.GetAll() on r.stcd equals s.areaCode
                        where (input.fromTime == null || r.tm > input.fromTime)
                        select new
            {
                areaCode  = s.areaCode,
                areaName  = s.areaName,
                paravalue = r.drp,
                time      = r.tm
            };
            var dataList = query.ToList();
            List <CWmtRainDetailListDto> hourDataList = new List <CWmtRainDetailListDto>();

            var timelist = dataList.GroupBy(c => new { areaCode = c.areaCode, areaName = c.areaName, Date = c.time.Date.AddHours(c.time.Hour) }).ToList();

            foreach (var item in timelist)
            {
                CWmtRainDetailListDto dto = new CWmtRainDetailListDto()
                {
                    areaCode    = item.Key.areaCode,
                    areaName    = item.Key.areaName,
                    collecttime = item.Key.Date,
                    paravalue   = item.Sum(c => c.paravalue)
                };
                hourDataList.Add(dto);
            }

            //if (query.Count() > 0)
            //if (dataList != null) {
            //    foreach (var item in dataList)
            //    {
            //        var time = item.time.Date.AddHours(item.time.Hour);
            //        if (hourDataList.Any(r => r.collecttime == time && r.areaCode == item.areaCode))
            //        {
            //            hourDataList.Find(r => r.collecttime == time).paravalue += item.paravalue;
            //        }
            //        else
            //        {
            //            hourDataList.Add(new CWmtRainDetailListDto()
            //            {
            //                areaCode = item.areaCode,
            //                areaName = item.areaName,
            //                collecttime = time,
            //                paravalue = item.paravalue
            //            });
            //        }
            //    }
            //}
            if (hourDataList.Count() > 0)//.Count() > 0
            {
                var maxResult = hourDataList.OrderByDescending(r => r.paravalue).FirstOrDefault();
                return(new CDataResult <CWmtRainDetailListDto>()
                {
                    IsSuccess = true,
                    ErrorMessage = null,
                    Data = maxResult
                });
            }
            else
            {
                return(new CDataResult <CWmtRainDetailListDto>()
                {
                    IsSuccess = true,
                    ErrorMessage = null,
                    Data = null
                });
            }
        }