using OpenAuth.App.BaseApp.Base; using OpenAuth.Repository.Domain; using OpenAuth.Repository; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using OpenAuth.App.Interface; using SqlSugar; using Infrastructure; using OpenAuth.App.ServiceApp.DroneSsnydManage.Export; namespace OpenAuth.App.ServiceApp.DroneSsnydManage { public class DroneSsnyStatisticsApp : SqlSugarBaseApp { public DroneSsnyStatisticsApp(ISugarUnitOfWork unitWork, ISimpleClient repository, IAuth auth) : base(unitWork, repository, auth) { } #region 数据统计 public Response> CaseOffence(DateTime startTime, DateTime endTime, string tubanlaiyuan) { List listResp = new List(); double SumArea(IEnumerable cases, Func selector) { var sum = cases .Select(selector) .Where(area => !string.IsNullOrEmpty(area)) .Sum(area => double.TryParse(area, out var result) ? result : 0); return Math.Round(sum, 2); // 保留两位小数 } List org = new List(); org = UnitWork.Db.Queryable().Where(a => a.Level == 2 && a.ParentId == 371324).ToList(); List caseList = new List(); caseList = Repository.AsQueryable().Where((a) => a.synchronoustime >= startTime && a.synchronoustime <= endTime && a.is_closed == 0).ToList(); //总计 int xmcount = 0;//项目个数 double xmzydsum = 0.0,//项目总用地面积 scydsum = 0.0,//生产用地面积 fuydsum = 0.0,//辅助用地面积 nydsum = 0.0,//农业用地面积 gdsum = 0.0,//耕地面积 yjjbntsum = 0.0;//永久基本农田面积 foreach (var item in org) { var countyIdString = item.Id.ToString(); var casesForCounty = caseList.Where(r => r.countyid == countyIdString || r.streetid == countyIdString).ToList(); xmcount += casesForCounty.Count; var xmzydmj = SumArea(casesForCounty, r => r.shenqing_area.ToString()); xmzydsum += xmzydmj; var scydmj = SumArea(casesForCounty, r => r.shengchan_area.ToString()); scydsum += scydmj; var scfzydmj = SumArea(casesForCounty, r => r.fuzhu_area.ToString()); fuydsum += scfzydmj; var nydmj = SumArea(casesForCounty, r => r.nongyongdi_area.ToString()); nydsum += nydmj; var gdmj = SumArea(casesForCounty, r => r.gengdi_area.ToString()); gdsum += gdmj; var yjjbntmj = SumArea(casesForCounty, r => r.yongjiujibennongtian_area.ToString()); yjjbntsum += yjjbntmj; OffenceResp offenceResp = new OffenceResp { countyid = item.Id, countyname = item.Name, xmcount = casesForCounty.Count, xmzydmj = Math.Round(xmzydmj, 2), scydmj = Math.Round(scydmj, 2), scfzydmj = Math.Round(scfzydmj, 2), nydmj = Math.Round(nydmj, 2), gdmj = Math.Round(gdmj, 2), yjjbntmj = Math.Round(yjjbntmj, 2) }; listResp.Add(offenceResp); } listResp.Add(new OffenceResp { countyid = 0, countyname = "合计", xmcount = xmcount, xmzydmj = Math.Round(xmzydsum, 2), scydmj = Math.Round(scydsum, 2), scfzydmj = Math.Round(fuydsum, 2), nydmj = Math.Round(nydsum, 2), gdmj = Math.Round(gdsum, 2), yjjbntmj = Math.Round(yjjbntsum, 2) }); return new Response> { Result = listResp, Message = "获取数据成功" }; } #endregion } }