lanlingxian_ziranziyuanhegu.../OpenAuth.App/ServiceApp/DroneSsnydManage/DroneSsnyStatisticsApp.cs

99 lines
4.3 KiB
C#

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<DroneSsnyd, SugarDbContext>
{
public DroneSsnyStatisticsApp(ISugarUnitOfWork<SugarDbContext> unitWork, ISimpleClient<DroneSsnyd> repository, IAuth auth)
: base(unitWork, repository, auth)
{
}
#region 数据统计
public Response<List<OffenceResp>> CaseOffence(DateTime startTime, DateTime endTime, string tubanlaiyuan)
{
List<OffenceResp> listResp = new List<OffenceResp>();
double SumArea(IEnumerable<DroneSsnyd> cases, Func<DroneSsnyd, string> 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<SysOrg> org = new List<SysOrg>();
org = UnitWork.Db.Queryable<SysOrg>().Where(a => a.Level == 2 && a.ParentId == 371324).ToList();
List<DroneSsnyd> caseList = new List<DroneSsnyd>();
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<List<OffenceResp>>
{
Result = listResp,
Message = "获取数据成功"
};
}
#endregion
}
}