Merge remote-tracking branch 'origin/dev' into dev

dev
陈伟 2025-05-23 08:39:01 +08:00
commit 4f6b3e62be
10 changed files with 382 additions and 5 deletions

View File

@ -1402,7 +1402,6 @@ namespace OpenAuth.App.FormScheme
{
var sql = new StringBuilder();
sql.Append($" UPDATE {tableName} SET ");
bool isfirt = true;
foreach (var item in dbParameters)
{
@ -1427,7 +1426,6 @@ namespace OpenAuth.App.FormScheme
isfirt = false;
}
}
sql.Append($" WHERE \"{pkey}\" = @{pkey} ");
return sql.ToString();

View File

@ -338,7 +338,7 @@ namespace OpenAuth.App.ServiceApp.DroneSsnydManage
}
dataRow.Cells[13].SetCellValue(item.xiafatime.ToString());
dataRow.Cells[13].SetCellValue(item.handle_status_name.ToString());
dataRow.Cells[14].SetCellValue(item.handle_status_name);
//if (item.handle_status_id != null)
//{

View File

@ -0,0 +1,158 @@
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;
using OpenAuth.App.ServiceApp.DroneSsnydManage.Request;
using Org.BouncyCastle.Ocsp;
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, 4),
scydmj = Math.Round(scydmj, 4),
scfzydmj = Math.Round(scfzydmj, 4),
nydmj = Math.Round(nydmj, 4),
gdmj = Math.Round(gdmj, 4),
yjjbntmj = Math.Round(yjjbntmj, 4)
};
listResp.Add(offenceResp);
}
listResp.Add(new OffenceResp
{
countyid = 0,
countyname = "合计",
xmcount = xmcount,
xmzydmj = Math.Round(xmzydsum, 4),
scydmj = Math.Round(scydsum, 4),
scfzydmj = Math.Round(fuydsum, 4),
nydmj = Math.Round(nydsum, 4),
gdmj = Math.Round(gdsum, 4),
yjjbntmj = Math.Round(yjjbntsum, 4)
});
return new Response<List<OffenceResp>>
{
Result = listResp,
Message = "获取数据成功"
};
}
//项目信息
public async Task<Response<PageInfo<List<QueryCaseOffenceListResp>>>> GetCaseInfo(QueryCaseOffencetReq req)
{
List<DroneSsnyd> caseList = new List<DroneSsnyd>();
List<string> tubanlaiyuanList = string.IsNullOrEmpty(req.tubanlaiyuan)
? new List<string>()
: req.tubanlaiyuan.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
var baseQuery = Repository.AsQueryable()
.Where((a) => a.synchronoustime >= req.StartTime && a.synchronoustime <= req.EndTime)
.Where(a => a.streetid == req.AreaId || a.countyid == req.AreaId || a.communityid == req.AreaId)
.Where((a) => a.is_closed == 0);
List<QueryCaseOffenceListResp> baseList = new List<QueryCaseOffenceListResp>();
RefAsync<int> totalcount = 0;
//switch (req.CaseType)
//{
// case 1:
// break;
// case 2:
// baseQuery = baseQuery.Where(a => a.handle_status_id == 5);
// break;
// case 3:
// baseQuery = baseQuery.Where(a => (a.handle_status_id == 5) || a.handle_status_id != 5);
// break;
// default:
// break;
//}
// 获取分页结果
var result = await baseQuery.Select(r => new QueryCaseOffenceListResp
{
Id = r.Id,
xiangmu_no = r.xiangmu_no,
xiangmu_name = r.xiangmu_name,
streetname = r.streetname,
communityname = r.communityname,
quanliren = r.quanliren,
xingzhengquhua = r.xingzhengquhua,
beian_no = r.beian_no,
start_time = r.start_time,
end_time = r.end_time,
xiangmu_yt = r.xiangmu_yt,
shenqing_area = r.shenqing_area,
shengchan_area = r.shengchan_area,
fuzhu_area = r.fuzhu_area,
xiafatime = r.xiafatime,
handle_status_name = r.handle_status_name
}).ToPageListAsync(req.page, req.limit, totalcount);
return new Response<PageInfo<List<QueryCaseOffenceListResp>>>
{
Result = new PageInfo<List<QueryCaseOffenceListResp>>
{
Items = result,
Total = totalcount
},
Message = "获取数据成功"
};
}
#endregion
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OpenAuth.App.ServiceApp.DroneSsnydManage.Export
{
public class OffenceResp
{
public long countyid { get; set; }
public string countyname { get; set; }
/// <summary>
/// 项目总数
/// </summary>
public int xmcount { get; set; }
public double xmzydmj { get; set; }
public double scydmj { get; set; }
public double scfzydmj { get; set; }
public double nydmj { get; set; }
public double gdmj { get; set; }
public double yjjbntmj { get; set; }
}
}

View File

@ -0,0 +1,112 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OpenAuth.App.ServiceApp.DroneSsnydManage.Export
{
public class QueryCaseOffenceListResp
{
/// <summary>
/// Desc:
/// Default:
/// Nullable:False
/// </summary>
public string Id { get; set; }
/// <summary>
/// Desc:项目编号
/// Default:
/// Nullable:True
/// </summary>
public string xiangmu_no { get; set; }
/// <summary>
/// Desc:项目名称
/// Default:
/// Nullable:True
/// </summary>
public string xiangmu_name { get; set; }
/// <summary>
/// Desc:镇
/// Default:
/// Nullable:True
/// </summary>
public string streetname { get; set; }
/// <summary>
/// Desc:村
/// Default:
/// Nullable:True
/// </summary>
public string communityname { get; set; }
/// <summary>
/// Desc:权利人
/// Default:
/// Nullable:True
/// </summary>
public string quanliren { get; set; }
/// <summary>
/// Desc:行政区划
/// Default:
/// Nullable:True
/// </summary>
public string xingzhengquhua { get; set; }
/// <summary>
/// Desc:备案编号
/// Default:
/// Nullable:True
/// </summary>
public string beian_no { get; set; }
/// <summary>
/// Desc:项目开始时间1
/// Default:
/// Nullable:True
/// </summary>
public DateTime? start_time { get; set; }
/// <summary>
/// Desc:项目结束时间1
/// Default:
/// Nullable:True
/// </summary>
public DateTime? end_time { get; set; }
/// <summary>
/// Desc:项目当前用途
/// Default:
/// Nullable:True
/// </summary>
public string xiangmu_yt { get; set; }
/// <summary>
/// Desc:设施农业申请用地面积(公顷)
/// Default:
/// Nullable:True
/// </summary>
public decimal? shenqing_area { get; set; }
/// <summary>
/// Desc:生产设施用地(公顷)
/// Default:
/// Nullable:True
/// </summary>
public decimal? shengchan_area { get; set; }
/// <summary>
/// Desc:辅助设施用地(公顷)
/// Default:
/// Nullable:True
/// </summary>
public decimal? fuzhu_area { get; set; }
/// <summary>
/// Desc:创建时间-下发时间
/// Default:now()
/// Nullable:True
/// </summary>
public DateTime? xiafatime { get; set; }
/// <summary>
/// Desc:处理状态 1 开工核查 2 开工问题整改 3 建中核查 4 建中问题整改 5 完工核查 6 完工问题整改 7 日常监管 8 监管问题整改 9 现场复核 99 项目终止 98 项目移交
/// Default:
/// Nullable:True
/// </summary>
public string handle_status_name { get; set; }
}
}

View File

@ -0,0 +1,21 @@
using OpenAuth.App.Request;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OpenAuth.App.ServiceApp.DroneSsnydManage.Request
{
public class QueryCaseOffencetReq : PageReq
{
public string AreaId { get; set; }
/// <summary>
///
/// </summary>
public int CaseType { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
public string tubanlaiyuan { get; set; }
}
}

View File

@ -32,6 +32,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
/// <param name="pageSize"></param>
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public Response<PageInfo<List<DroneSsnyd>>> TimeoutWarning(string xiangmumc, string countyid, string streetid,
int page, int limit)
{
@ -59,6 +60,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
/// <param name="pageSize"></param>
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public Response<PageInfo<List<DroneSsnyd>>> TimeOutAlarmList(string xiangmumc, string countyid, string streetid,
int page, int limit)
{
@ -128,6 +130,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
/// <param name="newXiangmuNo"></param>
/// <returns></returns>
[HttpPost]
public async Task<Response<bool>> MaintainNumber(string id, string newXiangmuNo)
{
var response = new Response<bool>();
@ -254,6 +257,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
/// <param name="import"></param>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public IActionResult TimeoutWarningExport([FromQuery] TimeOutReq import)
{
var data = new Response();
@ -295,6 +299,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
/// <param name="import"></param>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public IActionResult TimeoutAlarmExport([FromQuery] TimeOutReq import)
{
var data = new Response();

View File

@ -0,0 +1,58 @@
using Infrastructure;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using OpenAuth.App.ServiceApp.DroneSsnydManage;
using OpenAuth.App.ServiceApp.DroneSsnydManage.Export;
using OpenAuth.App.ServiceApp.DroneSsnydManage.Request;
using OpenAuth.Repository.Domain;
namespace OpenAuth.WebApi.Controllers.ServiceControllers
{
/// <summary>
/// 批后监管--数据统计
/// </summary>
[Route("api/[controller]/[action]")]
[ApiController]
public class DroneSsnyStatisticsController : ControllerBase
{
DroneSsnyStatisticsApp _app;
public DroneSsnyStatisticsController(DroneSsnyStatisticsApp app)
{
_app = app;
}
#region 统计
/// <summary>
/// 统计分析
/// </summary>
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public Response<List<OffenceResp>> CaseOffenceForSsny(DateTime startTime, DateTime endTime, string tubanlaiyuan)
{
Response<List<OffenceResp>> response = new Response<List<OffenceResp>>();
try
{
response = _app.CaseOffence(startTime, endTime, tubanlaiyuan);
}
catch (Exception ex)
{
response.Code = 500;
response.Message = ex.InnerException?.Message ?? ex.Message;
}
return response;
}
/// <summary>
/// 获取穿透案件信息
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public async Task<Response<PageInfo<List<QueryCaseOffenceListResp>>>> GetCaseInfo([FromQuery] QueryCaseOffencetReq req)
{
return await _app.GetCaseInfo(req);
}
#endregion
}
}

View File

@ -7,7 +7,7 @@
"AllowedHosts": "*",
"DataProtection": "temp-keys/",
"ConnectionStrings": {
"OpenAuthDBContext": "PORT=5432;Database=drone_enforcement_lanling;HOST=192.168.10.163;PASSWORD=123456;USER ID=postgres;"
"OpenAuthDBContext": "PORT=5432;Database=drone_enforcement_lanling1;HOST=192.168.10.163;PASSWORD=123456;USER ID=postgres;"
//"OpenAuthDBContext": "PORT=5432;Database=unattended1;HOST=192.168.10.115;PASSWORD=123456;USER ID=postgres;Pooling=False" //PostgreSQL
},
"AppSetting": {

View File

@ -8,7 +8,7 @@
"DataProtection": "temp-keys/",
"ConnectionStrings": {
//"OpenAuthDBContext": "PORT=5432;Database=hopetrycore;HOST=192.168.10.124;PASSWORD=123456;USER ID=postgres;",
"OpenAuthDBContext": "PORT=5432;Database=drone_enforcement_lanling;HOST=192.168.10.163;PASSWORD=123456;USER ID=postgres;"
"OpenAuthDBContext": "PORT=5432;Database=drone_enforcement_lanling1;HOST=192.168.10.163;PASSWORD=123456;USER ID=postgres;"
//"OpenAuthDBContext": "PORT=5432;Database=;HOST=192.168.10.131;PASSWORD=123456;USER ID=postgres;"
},
"AppSetting": {