feixian_weifajianguan/OpenAuth.App/ServiceApp/DroneCaseInfo/DroneCaseInfoXcsjApp1.cs

5301 lines
238 KiB
C#
Raw Normal View History

2026-02-03 16:00:02 +08:00
using System.Data;
using System.IO.Compression;
using System.Text;
using Infrastructure;
using Infrastructure.Extensions;
using Infrastructure.Helpers;
using Infrastructure.Utilities;
using Microsoft.AspNetCore.Http;
using NetTopologySuite.Features;
using NetTopologySuite.Geometries;
using NetTopologySuite.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.Util;
using NPOI.XSSF.UserModel;
using OpenAuth.App.BasicQueryService;
using OpenAuth.App.FormModule;
using OpenAuth.App.Request;
using OpenAuth.App.Response;
using OpenAuth.App.ServiceApp.DroneCaseInfo.Request;
using OpenAuth.App.ServiceApp.Request;
using OpenAuth.App.ServiceApp.Response;
using OpenAuth.Repository;
using OpenAuth.Repository.Domain;
using SqlSugar;
using Yitter.IdGenerator;
using Shapefile = NetTopologySuite.IO.Esri.Shapefile;
namespace OpenAuth.App.ServiceApp.DroneCaseInfo;
public partial class DroneCaseInfoXcsjApp
{
#region 统计
/// <summary>
/// 综合统计
/// </summary>
/// <returns></returns>
public async Task<Response<JArray>> CaseSynthesisCensus(QueryCaseInfoListReq req)
{
using (var db = base.UnitWork.CreateContext().Db.CopyNew())
{
var currentUser = _auth.GetCurrentUser();
var _user = currentUser.User;
string countyName = _configuration.GetSection("CountyName").Value;
if (string.IsNullOrEmpty(countyName)) countyName = "费县";
var orgList = await db.Queryable<SysOrg>().Where(c => c.ParentName == countyName)
.OrderBy(c => c.SortNo, OrderByType.Asc).ToListAsync();
//无人机发现数量
var reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
var allCountList = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.streetid, c.streetname })
.Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//完成核查数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
var handleStatusList = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//24小时未核查 (不包含已退回的部分)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_not_deal_hour24 = 1;
reqBody.is_drawback = 0;
var notDealHour24List = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//分类型统计案件数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
var typeCountList = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.streetid, c.typeid })
.Select(c => new
{
c.streetid,
c.typeid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法类型数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
var illegalCountList = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.is_illegal }).Select(c => new
{
c.streetid,
c.is_illegal,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
var illegalHandleStatusList = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.handle_status_id }).Select(c => new
{
c.streetid,
c.handle_status_id,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态 面积
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
var illegalHandleAreaList = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.handle_status_id }).Select(c => new
{
c.streetid,
c.handle_status_id,
area = SqlFunc.AggregateSum(SqlFunc.ToDecimal(c.area)),
}).ToList();
//3日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 1;
reqBody.is_illegal = 1;
var notComplete3List = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//7日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 2;
reqBody.is_illegal = 1;
var notComplete7List = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 4;
reqBody.is_illegal = 1;
var notComplete30List = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日以上未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 5;
reqBody.is_illegal = 1;
var notComplete30MoreList = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//var typeList = await db.Queryable<SysCategory>().Where(c => c.TypeId == "DRONE_CASE_TYPE").ToListAsync();
var typepid = await db.Queryable<SysDataItem>().Where(c => c.ItemCode == "DRONE_CASE_TYPE").FirstAsync();
var typeList = await db.Queryable<SysDataItemDetail>().Where(c => c.ItemId == typepid.ItemId).ToListAsync();
JArray array = new JArray();
for (int i = 0; i < orgList.Count; i++)
{
var item = orgList[i];
//无人机发现数量
int _allCount = allCountList.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//完成核查数量
int _handleStatus = handleStatusList.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//24小时未核查
int _notDealHour24 = notDealHour24List.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//违法类型数量
int _illegal0Count = illegalCountList.Where(c => c.streetid == item.Id.ToString() && c.is_illegal == 0)
.Sum(c => c.count);
int _illegal1Count = illegalCountList.Where(c => c.streetid == item.Id.ToString() && c.is_illegal == 1)
.Sum(c => c.count);
int _illegal2Count = illegalCountList.Where(c => c.streetid == item.Id.ToString() && c.is_illegal == 2)
.Sum(c => c.count);
int _illegalNullCount = illegalCountList
.Where(c => c.streetid == item.Id.ToString() && c.is_illegal == null).Sum(c => c.count);
//违法 状态查询
int _illegalHandle2Status = illegalHandleStatusList
.Where(c => c.streetid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.count);
int _illegalHandle01Status = illegalHandleStatusList
.Where(c => c.streetid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.count);
//违法 面积查询
decimal? _illegalHandleAreaList =
illegalHandleAreaList.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.area);
if (_illegalHandleAreaList != null)
{
_illegalHandleAreaList = Decimal.Round(_illegalHandleAreaList.Value / 666, 2);
}
decimal? _illegalHandle2AreaList = illegalHandleAreaList
.Where(c => c.streetid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.area);
if (_illegalHandle2AreaList != null)
{
_illegalHandle2AreaList = Decimal.Round(_illegalHandle2AreaList.Value / 666, 2);
}
decimal? _illegalHandle01AreaList = illegalHandleAreaList
.Where(c => c.streetid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.area);
if (_illegalHandle01AreaList != null)
{
_illegalHandle01AreaList = Decimal.Round(_illegalHandle01AreaList.Value / 666, 2);
}
//3日内未整改
int _notComplete3 = notComplete3List.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//7日内未整改
int _notComplete7 = notComplete7List.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//30日内未整改
int _notComplete30 = notComplete30List.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//30日以上未整改
int _notComplete30More =
notComplete30MoreList.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
JObject obj = new JObject();
obj.Add("streetid", item.Id);
obj.Add("streetname", item.Name);
//分类型统计案件数量
//int _typeCount = typeCountList.Where(c => c.streetid == item.Id).Sum(c => c.count);
var typeid_fanxin = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_FANXIN").First()?.ItemDetailId;
var typeid_jiagai = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_JIAGAI").First()?.ItemDetailId;
var typeid_fanjian =
typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_FANJIAN").First()?.ItemDetailId;
var typeid_cunliang = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_CUNLIANG").First()
?.ItemDetailId;
var typeid_tuitu = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_TUITU").First()?.ItemDetailId;
List<string> notTypeids = new List<string>
{
typeid_fanxin,
typeid_jiagai,
typeid_fanjian,
typeid_cunliang,
typeid_tuitu,
};
var typeFanxinCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_fanxin).Sum(c => c.count);
var typeJiagaiCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_jiagai).Sum(c => c.count);
var typeFanjianCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_fanjian).Sum(c => c.count);
var typeCunliangCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_cunliang).Sum(c => c.count);
var typeTuituCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_tuitu).Sum(c => c.count);
var typeOtherCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && !notTypeids.Contains(c.typeid)).Sum(c => c.count);
//上报案件数量
obj.Add("allCount", _allCount);
//完成外业核查数量
obj.Add("handleStatus", _handleStatus);
//24h内未核查
obj.Add("notDealHour24", _notDealHour24);
obj.Add("typeFanxinCount", typeFanxinCount);
obj.Add("typeJiagaiCount", typeJiagaiCount);
obj.Add("typeFanjianCount", typeFanjianCount);
obj.Add("typeCunliangCount", typeCunliangCount);
obj.Add("typeTuituCount", typeTuituCount);
obj.Add("typeOtherCount", typeOtherCount);
//合法
obj.Add("illegal0Count", _illegal0Count);
//违法 外业核实后确定违法数
obj.Add("illegal1Count", _illegal1Count);
//伪变化
obj.Add("illegal2Count", _illegal2Count);
//违法类型 未知类型数量
obj.Add("illegalNullCount", _illegalNullCount);
//违法面积
obj.Add("illegalHandleAreaList", _illegalHandleAreaList);
//整改销号数
obj.Add("illegalHandle2Status", _illegalHandle2Status);
//尚未整改宗数
obj.Add("illegalHandle01Status", _illegalHandle01Status);
//销号面积
obj.Add("illegalHandle2AreaList", _illegalHandle2AreaList);
//未整改面积
obj.Add("illegalHandle01AreaList", _illegalHandle01AreaList);
//3日内未整改完成
obj.Add("notComplete3", _notComplete3);
//7日内未整改完成
obj.Add("notComplete7", _notComplete7);
//30日内未整改完成
obj.Add("notComplete30", _notComplete30);
//30日以上未整改完成
obj.Add("notComplete30More", _notComplete30More);
array.Add(obj);
}
JObject _obj = new JObject();
_obj.Add("streetname", "合计");
//上报案件数量
_obj.Add("allCount", array.Sum(c => int.Parse(c["allCount"].ToString())));
//完成外业核查数量
_obj.Add("handleStatus", array.Sum(c => int.Parse(c["handleStatus"].ToString())));
//24h内未核查
_obj.Add("notDealHour24", array.Sum(c => int.Parse(c["notDealHour24"].ToString())));
_obj.Add("typeFanxinCount", array.Sum(c => int.Parse(c["typeFanxinCount"].ToString())));
_obj.Add("typeJiagaiCount", array.Sum(c => int.Parse(c["typeJiagaiCount"].ToString())));
_obj.Add("typeFanjianCount", array.Sum(c => int.Parse(c["typeFanjianCount"].ToString())));
_obj.Add("typeCunliangCount", array.Sum(c => int.Parse(c["typeCunliangCount"].ToString())));
_obj.Add("typeTuituCount", array.Sum(c => int.Parse(c["typeTuituCount"].ToString())));
_obj.Add("typeOtherCount", array.Sum(c => int.Parse(c["typeOtherCount"].ToString())));
//合法
_obj.Add("illegal0Count", array.Sum(c => int.Parse(c["illegal0Count"].ToString())));
//违法 外业核实后确定违法数
_obj.Add("illegal1Count", array.Sum(c => int.Parse(c["illegal1Count"].ToString())));
//伪变化
_obj.Add("illegal2Count", array.Sum(c => int.Parse(c["illegal2Count"].ToString())));
//违法类型 未知类型数量
_obj.Add("illegalNullCount", array.Sum(c => int.Parse(c["illegalNullCount"].ToString())));
//违法面积
_obj.Add("illegalHandleAreaList", array.Sum(c => decimal.Parse(c["illegalHandleAreaList"].ToString())));
//整改销号数
_obj.Add("illegalHandle2Status", array.Sum(c => int.Parse(c["illegalHandle2Status"].ToString())));
//尚未整改宗数
_obj.Add("illegalHandle01Status", array.Sum(c => int.Parse(c["illegalHandle01Status"].ToString())));
//销号面积
_obj.Add("illegalHandle2AreaList", array.Sum(c => decimal.Parse(c["illegalHandle2AreaList"].ToString())));
//未整改面积
_obj.Add("illegalHandle01AreaList", array.Sum(c => decimal.Parse(c["illegalHandle01AreaList"].ToString())));
//3日内未整改完成
_obj.Add("notComplete3", array.Sum(c => int.Parse(c["notComplete3"].ToString())));
//7日内未整改完成
_obj.Add("notComplete7", array.Sum(c => int.Parse(c["notComplete7"].ToString())));
//30日内未整改完成
_obj.Add("notComplete30", array.Sum(c => int.Parse(c["notComplete30"].ToString())));
//30日以上未整改完成
_obj.Add("notComplete30More", array.Sum(c => int.Parse(c["notComplete30More"].ToString())));
array.Add(_obj);
return new Response<JArray>
{
Result = array,
Message = "获取数据成功"
};
}
}
public async Task<Response<JArray>> CaseSynthesisCensusSingle(QueryCaseInfoListReq req)
{
using (var db = base.UnitWork.CreateContext().Db.CopyNew())
{
var currentUser = _auth.GetCurrentUser();
var _user = currentUser.User;
string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + _user.Id;
int level = db.Ado.GetInt(sql1);
string countyName = "";
if ((string.IsNullOrEmpty(req.countyid) && level == 0) ||
(_user.Id == -1 && string.IsNullOrEmpty(req.countyid)))
{
countyName = "临沂市";
var orgList = await db.Queryable<SysOrg>().Where(c => c.ParentName == countyName)
.OrderBy(c => c.SortNo, OrderByType.Asc).ToListAsync();
//无人机发现数量
var reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
var allCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//完成核查数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
var handleStatusList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//24小时未核查 (不包含已退回的部分)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_not_deal_hour24 = 1;
reqBody.is_drawback = 0;
var notDealHour24List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//分类型统计案件数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
var typeCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.typeid }).Select(c => new
{
c.countyid,
c.typeid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法类型数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
var illegalCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.is_illegal }).Select(c => new
{
c.countyid,
c.is_illegal,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
var illegalHandleStatusList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.handle_status_id }).Select(c => new
{
c.countyid,
c.handle_status_id,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态 面积
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
var illegalHandleAreaList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.handle_status_id }).Select(c => new
{
c.countyid,
c.handle_status_id,
area = SqlFunc.AggregateSum(SqlFunc.ToDecimal(c.area)),
}).ToList();
//3日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 1;
reqBody.is_illegal = 1;
var notComplete3List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//7日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 2;
reqBody.is_illegal = 1;
var notComplete7List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 4;
reqBody.is_illegal = 1;
var notComplete30List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日以上未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 5;
reqBody.is_illegal = 1;
var notComplete30MoreList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//var typeList = await db.Queryable<SysCategory>().Where(c => c.TypeId == "DRONE_CASE_TYPE").ToListAsync();
var typepid = await db.Queryable<SysDataItem>().Where(c => c.ItemCode == "DRONE_CASE_TYPE")
.FirstAsync();
var typeList = await db.Queryable<SysDataItemDetail>().Where(c => c.ItemId == typepid.ItemId)
.ToListAsync();
JArray array = new JArray();
for (int i = 0; i < orgList.Count; i++)
{
var item = orgList[i];
//无人机发现数量
int _allCount = allCountList.Where(c => c.countyid == item.Id.ToString()).Sum(c => c.count);
//完成核查数量
int _handleStatus = handleStatusList.Where(c => c.countyid == item.Id.ToString()).Sum(c => c.count);
//24小时未核查
int _notDealHour24 = notDealHour24List.Where(c => c.countyid == item.Id.ToString())
.Sum(c => c.count);
//违法类型数量
int _illegal0Count = illegalCountList
.Where(c => c.countyid == item.Id.ToString() && c.is_illegal == 0).Sum(c => c.count);
int _illegal1Count = illegalCountList
.Where(c => c.countyid == item.Id.ToString() && c.is_illegal == 1).Sum(c => c.count);
int _illegal2Count = illegalCountList
.Where(c => c.countyid == item.Id.ToString() && c.is_illegal == 2).Sum(c => c.count);
int _illegalNullCount = illegalCountList
.Where(c => c.countyid == item.Id.ToString() && c.is_illegal == null).Sum(c => c.count);
//违法 状态查询
int _illegalHandle2Status = illegalHandleStatusList
.Where(c => c.countyid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.count);
int _illegalHandle01Status = illegalHandleStatusList
.Where(c => c.countyid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.count);
//违法 面积查询
decimal? _illegalHandleAreaList = illegalHandleAreaList.Where(c => c.countyid == item.Id.ToString())
.Sum(c => c.area);
if (_illegalHandleAreaList != null)
{
_illegalHandleAreaList = Decimal.Round(_illegalHandleAreaList.Value / 666, 2);
}
decimal? _illegalHandle2AreaList = illegalHandleAreaList
.Where(c => c.countyid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.area);
if (_illegalHandle2AreaList != null)
{
_illegalHandle2AreaList = Decimal.Round(_illegalHandle2AreaList.Value / 666, 2);
}
decimal? _illegalHandle01AreaList = illegalHandleAreaList
.Where(c => c.countyid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.area);
if (_illegalHandle01AreaList != null)
{
_illegalHandle01AreaList = Decimal.Round(_illegalHandle01AreaList.Value / 666, 2);
}
//3日内未整改
int _notComplete3 = notComplete3List.Where(c => c.countyid == item.Id.ToString()).Sum(c => c.count);
//7日内未整改
int _notComplete7 = notComplete7List.Where(c => c.countyid == item.Id.ToString()).Sum(c => c.count);
//30日内未整改
int _notComplete30 = notComplete30List.Where(c => c.countyid == item.Id.ToString())
.Sum(c => c.count);
//30日以上未整改
int _notComplete30More = notComplete30MoreList.Where(c => c.countyid == item.Id.ToString())
.Sum(c => c.count);
JObject obj = new JObject();
obj.Add("streetid", item.Id);
obj.Add("streetname", item.Name);
//分类型统计案件数量
//int _typeCount = typeCountList.Where(c => c.streetid == item.Id).Sum(c => c.count);
var typeid_fanxin = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_FANXIN").First()
?.ItemDetailId;
var typeid_jiagai = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_JIAGAI").First()
?.ItemDetailId;
var typeid_fanjian = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_FANJIAN").First()
?.ItemDetailId;
var typeid_cunliang = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_CUNLIANG").First()
?.ItemDetailId;
var typeid_tuitu = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_TUITU").First()
?.ItemDetailId;
List<string> notTypeids = new List<string>
{
typeid_fanxin,
typeid_jiagai,
typeid_fanjian,
typeid_cunliang,
typeid_tuitu,
};
var typeFanxinCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_fanxin).Sum(c => c.count);
var typeJiagaiCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_jiagai).Sum(c => c.count);
var typeFanjianCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_fanjian).Sum(c => c.count);
var typeCunliangCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_cunliang).Sum(c => c.count);
var typeTuituCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_tuitu).Sum(c => c.count);
var typeOtherCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && !notTypeids.Contains(c.typeid))
.Sum(c => c.count);
//上报案件数量
obj.Add("allCount", _allCount);
//完成外业核查数量
obj.Add("handleStatus", _handleStatus);
//24h内未核查
obj.Add("notDealHour24", _notDealHour24);
obj.Add("typeFanxinCount", typeFanxinCount);
obj.Add("typeJiagaiCount", typeJiagaiCount);
obj.Add("typeFanjianCount", typeFanjianCount);
obj.Add("typeCunliangCount", typeCunliangCount);
obj.Add("typeTuituCount", typeTuituCount);
obj.Add("typeOtherCount", typeOtherCount);
//合法
obj.Add("illegal0Count", _illegal0Count);
//违法 外业核实后确定违法数
obj.Add("illegal1Count", _illegal1Count);
//伪变化
obj.Add("illegal2Count", _illegal2Count);
//违法类型 未知类型数量
obj.Add("illegalNullCount", _illegalNullCount);
//违法面积
obj.Add("illegalHandleAreaList", _illegalHandleAreaList);
//整改销号数
obj.Add("illegalHandle2Status", _illegalHandle2Status);
//尚未整改宗数
obj.Add("illegalHandle01Status", _illegalHandle01Status);
//销号面积
obj.Add("illegalHandle2AreaList", _illegalHandle2AreaList);
//未整改面积
obj.Add("illegalHandle01AreaList", _illegalHandle01AreaList);
//3日内未整改完成
obj.Add("notComplete3", _notComplete3);
//7日内未整改完成
obj.Add("notComplete7", _notComplete7);
//30日内未整改完成
obj.Add("notComplete30", _notComplete30);
//30日以上未整改完成
obj.Add("notComplete30More", _notComplete30More);
array.Add(obj);
}
JObject _obj = new JObject();
_obj.Add("streetname", "合计");
//上报案件数量
_obj.Add("allCount", array.Sum(c => int.Parse(c["allCount"].ToString())));
//完成外业核查数量
_obj.Add("handleStatus", array.Sum(c => int.Parse(c["handleStatus"].ToString())));
//24h内未核查
_obj.Add("notDealHour24", array.Sum(c => int.Parse(c["notDealHour24"].ToString())));
_obj.Add("typeFanxinCount", array.Sum(c => int.Parse(c["typeFanxinCount"].ToString())));
_obj.Add("typeJiagaiCount", array.Sum(c => int.Parse(c["typeJiagaiCount"].ToString())));
_obj.Add("typeFanjianCount", array.Sum(c => int.Parse(c["typeFanjianCount"].ToString())));
_obj.Add("typeCunliangCount", array.Sum(c => int.Parse(c["typeCunliangCount"].ToString())));
_obj.Add("typeTuituCount", array.Sum(c => int.Parse(c["typeTuituCount"].ToString())));
_obj.Add("typeOtherCount", array.Sum(c => int.Parse(c["typeOtherCount"].ToString())));
//合法
_obj.Add("illegal0Count", array.Sum(c => int.Parse(c["illegal0Count"].ToString())));
//违法 外业核实后确定违法数
_obj.Add("illegal1Count", array.Sum(c => int.Parse(c["illegal1Count"].ToString())));
//伪变化
_obj.Add("illegal2Count", array.Sum(c => int.Parse(c["illegal2Count"].ToString())));
//违法类型 未知类型数量
_obj.Add("illegalNullCount", array.Sum(c => int.Parse(c["illegalNullCount"].ToString())));
//违法面积
_obj.Add("illegalHandleAreaList", array.Sum(c => decimal.Parse(c["illegalHandleAreaList"].ToString())));
//整改销号数
_obj.Add("illegalHandle2Status", array.Sum(c => int.Parse(c["illegalHandle2Status"].ToString())));
//尚未整改宗数
_obj.Add("illegalHandle01Status", array.Sum(c => int.Parse(c["illegalHandle01Status"].ToString())));
//销号面积
_obj.Add("illegalHandle2AreaList",
array.Sum(c => decimal.Parse(c["illegalHandle2AreaList"].ToString())));
//未整改面积
_obj.Add("illegalHandle01AreaList",
array.Sum(c => decimal.Parse(c["illegalHandle01AreaList"].ToString())));
//3日内未整改完成
_obj.Add("notComplete3", array.Sum(c => int.Parse(c["notComplete3"].ToString())));
//7日内未整改完成
_obj.Add("notComplete7", array.Sum(c => int.Parse(c["notComplete7"].ToString())));
//30日内未整改完成
_obj.Add("notComplete30", array.Sum(c => int.Parse(c["notComplete30"].ToString())));
//30日以上未整改完成
_obj.Add("notComplete30More", array.Sum(c => int.Parse(c["notComplete30More"].ToString())));
array.Add(_obj);
return new Response<JArray>
{
Result = array,
Message = "获取数据成功"
};
}
else if (string.IsNullOrEmpty(req.countyid) && level == 1)
{
string sql2 = "select \"OrgId\" from sys_userorg where \"Level\"=1 and \"UserId\"=" + _user.Id;
var liststring = db.Ado.SqlQuery<long>(sql2);
var orgList = await db.Queryable<SysOrg>().Where(c => liststring.Contains(c.Id))
.OrderBy(c => c.SortNo, OrderByType.Asc).ToListAsync();
//无人机发现数量
var reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
var allCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//完成核查数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
var handleStatusList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//24小时未核查 (不包含已退回的部分)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_not_deal_hour24 = 1;
reqBody.is_drawback = 0;
var notDealHour24List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//分类型统计案件数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
var typeCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.typeid }).Select(c => new
{
c.countyid,
c.typeid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法类型数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
var illegalCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.is_illegal }).Select(c => new
{
c.countyid,
c.is_illegal,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
var illegalHandleStatusList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.handle_status_id }).Select(c => new
{
c.countyid,
c.handle_status_id,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态 面积
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
var illegalHandleAreaList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.handle_status_id }).Select(c => new
{
c.countyid,
c.handle_status_id,
area = SqlFunc.AggregateSum(SqlFunc.ToDecimal(c.area)),
}).ToList();
//3日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 1;
reqBody.is_illegal = 1;
var notComplete3List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//7日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 2;
reqBody.is_illegal = 1;
var notComplete7List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 4;
reqBody.is_illegal = 1;
var notComplete30List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日以上未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 5;
reqBody.is_illegal = 1;
var notComplete30MoreList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//var typeList = await db.Queryable<SysCategory>().Where(c => c.TypeId == "DRONE_CASE_TYPE").ToListAsync();
var typepid = await db.Queryable<SysDataItem>().Where(c => c.ItemCode == "DRONE_CASE_TYPE")
.FirstAsync();
var typeList = await db.Queryable<SysDataItemDetail>().Where(c => c.ItemId == typepid.ItemId)
.ToListAsync();
JArray array = new JArray();
for (int i = 0; i < orgList.Count; i++)
{
var item = orgList[i];
//无人机发现数量
int _allCount = allCountList.Where(c => c.countyid == item.Id.ToString()).Sum(c => c.count);
//完成核查数量
int _handleStatus = handleStatusList.Where(c => c.countyid == item.Id.ToString()).Sum(c => c.count);
//24小时未核查
int _notDealHour24 = notDealHour24List.Where(c => c.countyid == item.Id.ToString())
.Sum(c => c.count);
//违法类型数量
int _illegal0Count = illegalCountList
.Where(c => c.countyid == item.Id.ToString() && c.is_illegal == 0).Sum(c => c.count);
int _illegal1Count = illegalCountList
.Where(c => c.countyid == item.Id.ToString() && c.is_illegal == 1).Sum(c => c.count);
int _illegal2Count = illegalCountList
.Where(c => c.countyid == item.Id.ToString() && c.is_illegal == 2).Sum(c => c.count);
int _illegalNullCount = illegalCountList
.Where(c => c.countyid == item.Id.ToString() && c.is_illegal == null).Sum(c => c.count);
//违法 状态查询
int _illegalHandle2Status = illegalHandleStatusList
.Where(c => c.countyid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.count);
int _illegalHandle01Status = illegalHandleStatusList
.Where(c => c.countyid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.count);
//违法 面积查询
decimal? _illegalHandleAreaList = illegalHandleAreaList.Where(c => c.countyid == item.Id.ToString())
.Sum(c => c.area);
if (_illegalHandleAreaList != null)
{
_illegalHandleAreaList = Decimal.Round(_illegalHandleAreaList.Value / 666, 2);
}
decimal? _illegalHandle2AreaList = illegalHandleAreaList
.Where(c => c.countyid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.area);
if (_illegalHandle2AreaList != null)
{
_illegalHandle2AreaList = Decimal.Round(_illegalHandle2AreaList.Value / 666, 2);
}
decimal? _illegalHandle01AreaList = illegalHandleAreaList
.Where(c => c.countyid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.area);
if (_illegalHandle01AreaList != null)
{
_illegalHandle01AreaList = Decimal.Round(_illegalHandle01AreaList.Value / 666, 2);
}
//3日内未整改
int _notComplete3 = notComplete3List.Where(c => c.countyid == item.Id.ToString()).Sum(c => c.count);
//7日内未整改
int _notComplete7 = notComplete7List.Where(c => c.countyid == item.Id.ToString()).Sum(c => c.count);
//30日内未整改
int _notComplete30 = notComplete30List.Where(c => c.countyid == item.Id.ToString())
.Sum(c => c.count);
//30日以上未整改
int _notComplete30More = notComplete30MoreList.Where(c => c.countyid == item.Id.ToString())
.Sum(c => c.count);
JObject obj = new JObject();
obj.Add("streetid", item.Id);
obj.Add("streetname", item.Name);
//分类型统计案件数量
//int _typeCount = typeCountList.Where(c => c.streetid == item.Id).Sum(c => c.count);
var typeid_fanxin = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_FANXIN").First()
?.ItemDetailId;
var typeid_jiagai = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_JIAGAI").First()
?.ItemDetailId;
var typeid_fanjian = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_FANJIAN").First()
?.ItemDetailId;
var typeid_cunliang = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_CUNLIANG").First()
?.ItemDetailId;
var typeid_tuitu = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_TUITU").First()
?.ItemDetailId;
List<string> notTypeids = new List<string>
{
typeid_fanxin,
typeid_jiagai,
typeid_fanjian,
typeid_cunliang,
typeid_tuitu,
};
var typeFanxinCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_fanxin).Sum(c => c.count);
var typeJiagaiCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_jiagai).Sum(c => c.count);
var typeFanjianCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_fanjian).Sum(c => c.count);
var typeCunliangCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_cunliang).Sum(c => c.count);
var typeTuituCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_tuitu).Sum(c => c.count);
var typeOtherCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && !notTypeids.Contains(c.typeid))
.Sum(c => c.count);
//上报案件数量
obj.Add("allCount", _allCount);
//完成外业核查数量
obj.Add("handleStatus", _handleStatus);
//24h内未核查
obj.Add("notDealHour24", _notDealHour24);
obj.Add("typeFanxinCount", typeFanxinCount);
obj.Add("typeJiagaiCount", typeJiagaiCount);
obj.Add("typeFanjianCount", typeFanjianCount);
obj.Add("typeCunliangCount", typeCunliangCount);
obj.Add("typeTuituCount", typeTuituCount);
obj.Add("typeOtherCount", typeOtherCount);
//合法
obj.Add("illegal0Count", _illegal0Count);
//违法 外业核实后确定违法数
obj.Add("illegal1Count", _illegal1Count);
//伪变化
obj.Add("illegal2Count", _illegal2Count);
//违法类型 未知类型数量
obj.Add("illegalNullCount", _illegalNullCount);
//违法面积
obj.Add("illegalHandleAreaList", _illegalHandleAreaList);
//整改销号数
obj.Add("illegalHandle2Status", _illegalHandle2Status);
//尚未整改宗数
obj.Add("illegalHandle01Status", _illegalHandle01Status);
//销号面积
obj.Add("illegalHandle2AreaList", _illegalHandle2AreaList);
//未整改面积
obj.Add("illegalHandle01AreaList", _illegalHandle01AreaList);
//3日内未整改完成
obj.Add("notComplete3", _notComplete3);
//7日内未整改完成
obj.Add("notComplete7", _notComplete7);
//30日内未整改完成
obj.Add("notComplete30", _notComplete30);
//30日以上未整改完成
obj.Add("notComplete30More", _notComplete30More);
array.Add(obj);
}
JObject _obj = new JObject();
_obj.Add("streetname", "合计");
//上报案件数量
_obj.Add("allCount", array.Sum(c => int.Parse(c["allCount"].ToString())));
//完成外业核查数量
_obj.Add("handleStatus", array.Sum(c => int.Parse(c["handleStatus"].ToString())));
//24h内未核查
_obj.Add("notDealHour24", array.Sum(c => int.Parse(c["notDealHour24"].ToString())));
_obj.Add("typeFanxinCount", array.Sum(c => int.Parse(c["typeFanxinCount"].ToString())));
_obj.Add("typeJiagaiCount", array.Sum(c => int.Parse(c["typeJiagaiCount"].ToString())));
_obj.Add("typeFanjianCount", array.Sum(c => int.Parse(c["typeFanjianCount"].ToString())));
_obj.Add("typeCunliangCount", array.Sum(c => int.Parse(c["typeCunliangCount"].ToString())));
_obj.Add("typeTuituCount", array.Sum(c => int.Parse(c["typeTuituCount"].ToString())));
_obj.Add("typeOtherCount", array.Sum(c => int.Parse(c["typeOtherCount"].ToString())));
//合法
_obj.Add("illegal0Count", array.Sum(c => int.Parse(c["illegal0Count"].ToString())));
//违法 外业核实后确定违法数
_obj.Add("illegal1Count", array.Sum(c => int.Parse(c["illegal1Count"].ToString())));
//伪变化
_obj.Add("illegal2Count", array.Sum(c => int.Parse(c["illegal2Count"].ToString())));
//违法类型 未知类型数量
_obj.Add("illegalNullCount", array.Sum(c => int.Parse(c["illegalNullCount"].ToString())));
//违法面积
_obj.Add("illegalHandleAreaList", array.Sum(c => decimal.Parse(c["illegalHandleAreaList"].ToString())));
//整改销号数
_obj.Add("illegalHandle2Status", array.Sum(c => int.Parse(c["illegalHandle2Status"].ToString())));
//尚未整改宗数
_obj.Add("illegalHandle01Status", array.Sum(c => int.Parse(c["illegalHandle01Status"].ToString())));
//销号面积
_obj.Add("illegalHandle2AreaList",
array.Sum(c => decimal.Parse(c["illegalHandle2AreaList"].ToString())));
//未整改面积
_obj.Add("illegalHandle01AreaList",
array.Sum(c => decimal.Parse(c["illegalHandle01AreaList"].ToString())));
//3日内未整改完成
_obj.Add("notComplete3", array.Sum(c => int.Parse(c["notComplete3"].ToString())));
//7日内未整改完成
_obj.Add("notComplete7", array.Sum(c => int.Parse(c["notComplete7"].ToString())));
//30日内未整改完成
_obj.Add("notComplete30", array.Sum(c => int.Parse(c["notComplete30"].ToString())));
//30日以上未整改完成
_obj.Add("notComplete30More", array.Sum(c => int.Parse(c["notComplete30More"].ToString())));
array.Add(_obj);
return new Response<JArray>
{
Result = array,
Message = "获取数据成功"
};
}
else
{
if (level > 1)
{
JArray array1 = new JArray();
JObject _obj1 = new JObject();
_obj1.Add("streetname", "合计");
//上报案件数量
_obj1.Add("allCount", 0);
//完成外业核查数量
_obj1.Add("handleStatus", 0);
//24h内未核查
_obj1.Add("notDealHour24", 0);
_obj1.Add("typeFanxinCount", 0);
_obj1.Add("typeJiagaiCount", 0);
_obj1.Add("typeFanjianCount", 0);
_obj1.Add("typeCunliangCount", 0);
_obj1.Add("typeTuituCount", 0);
_obj1.Add("typeOtherCount", 0);
//合法
_obj1.Add("illegal0Count", 0);
//违法 外业核实后确定违法数
_obj1.Add("illegal1Count", 0);
//伪变化
_obj1.Add("illegal2Count", 0);
//违法类型 未知类型数量
_obj1.Add("illegalNullCount", 0);
//违法面积
_obj1.Add("illegalHandleAreaList", 0);
//整改销号数
_obj1.Add("illegalHandle2Status", 0);
//尚未整改宗数
_obj1.Add("illegalHandle01Status", 0);
//销号面积
_obj1.Add("illegalHandle2AreaList", 0);
//未整改面积
_obj1.Add("illegalHandle01AreaList", 0);
//3日内未整改完成
_obj1.Add("notComplete3", 0);
//7日内未整改完成
_obj1.Add("notComplete7", 0);
//30日内未整改完成
_obj1.Add("notComplete30", 0);
//30日以上未整改完成
_obj1.Add("notComplete30More", 0);
array1.Add(_obj1);
return new Response<JArray>
{
Result = array1,
Message = "获取数据成功"
};
}
string sql = "select \"Name\" from sys_org where \"Id\"=" + req.countyid;
string name = db.Ado.GetString(sql);
var orgList = await db.Queryable<SysOrg>().Where(c => c.ParentName == name)
.OrderBy(c => c.SortNo, OrderByType.Asc).ToListAsync();
//无人机发现数量
var reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
var allCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//完成核查数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
var handleStatusList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//24小时未核查 (不包含已退回的部分)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_not_deal_hour24 = 1;
reqBody.is_drawback = 0;
var notDealHour24List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//分类型统计案件数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
var typeCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.typeid }).Select(c => new
{
c.streetid,
c.typeid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法类型数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
var illegalCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.is_illegal }).Select(c => new
{
c.streetid,
c.is_illegal,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
var illegalHandleStatusList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.handle_status_id }).Select(c => new
{
c.streetid,
c.handle_status_id,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态 面积
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
var illegalHandleAreaList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.handle_status_id }).Select(c => new
{
c.streetid,
c.handle_status_id,
area = SqlFunc.AggregateSum(SqlFunc.ToDecimal(c.area)),
}).ToList();
//3日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 1;
reqBody.is_illegal = 1;
var notComplete3List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//7日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 2;
reqBody.is_illegal = 1;
var notComplete7List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 4;
reqBody.is_illegal = 1;
var notComplete30List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日以上未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 5;
reqBody.is_illegal = 1;
var notComplete30MoreList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//var typeList = await db.Queryable<SysCategory>().Where(c => c.TypeId == "DRONE_CASE_TYPE").ToListAsync();
var typepid = await db.Queryable<SysDataItem>().Where(c => c.ItemCode == "DRONE_CASE_TYPE")
.FirstAsync();
var typeList = await db.Queryable<SysDataItemDetail>().Where(c => c.ItemId == typepid.ItemId)
.ToListAsync();
JArray array = new JArray();
for (int i = 0; i < orgList.Count; i++)
{
var item = orgList[i];
//无人机发现数量
int _allCount = allCountList.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//完成核查数量
int _handleStatus = handleStatusList.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//24小时未核查
int _notDealHour24 = notDealHour24List.Where(c => c.streetid == item.Id.ToString())
.Sum(c => c.count);
//违法类型数量
int _illegal0Count = illegalCountList
.Where(c => c.streetid == item.Id.ToString() && c.is_illegal == 0).Sum(c => c.count);
int _illegal1Count = illegalCountList
.Where(c => c.streetid == item.Id.ToString() && c.is_illegal == 1).Sum(c => c.count);
int _illegal2Count = illegalCountList
.Where(c => c.streetid == item.Id.ToString() && c.is_illegal == 2).Sum(c => c.count);
int _illegalNullCount = illegalCountList
.Where(c => c.streetid == item.Id.ToString() && c.is_illegal == null).Sum(c => c.count);
//违法 状态查询
int _illegalHandle2Status = illegalHandleStatusList
.Where(c => c.streetid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.count);
int _illegalHandle01Status = illegalHandleStatusList
.Where(c => c.streetid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.count);
//违法 面积查询
decimal? _illegalHandleAreaList = illegalHandleAreaList.Where(c => c.streetid == item.Id.ToString())
.Sum(c => c.area);
if (_illegalHandleAreaList != null)
{
_illegalHandleAreaList = Decimal.Round(_illegalHandleAreaList.Value / 666, 2);
}
decimal? _illegalHandle2AreaList = illegalHandleAreaList
.Where(c => c.streetid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.area);
if (_illegalHandle2AreaList != null)
{
_illegalHandle2AreaList = Decimal.Round(_illegalHandle2AreaList.Value / 666, 2);
}
decimal? _illegalHandle01AreaList = illegalHandleAreaList
.Where(c => c.streetid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.area);
if (_illegalHandle01AreaList != null)
{
_illegalHandle01AreaList = Decimal.Round(_illegalHandle01AreaList.Value / 666, 2);
}
//3日内未整改
int _notComplete3 = notComplete3List.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//7日内未整改
int _notComplete7 = notComplete7List.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//30日内未整改
int _notComplete30 = notComplete30List.Where(c => c.streetid == item.Id.ToString())
.Sum(c => c.count);
//30日以上未整改
int _notComplete30More = notComplete30MoreList.Where(c => c.streetid == item.Id.ToString())
.Sum(c => c.count);
JObject obj = new JObject();
obj.Add("streetid", item.Id);
obj.Add("streetname", item.Name);
//分类型统计案件数量
//int _typeCount = typeCountList.Where(c => c.streetid == item.Id).Sum(c => c.count);
var typeid_fanxin = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_FANXIN").First()
?.ItemDetailId;
var typeid_jiagai = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_JIAGAI").First()
?.ItemDetailId;
var typeid_fanjian = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_FANJIAN").First()
?.ItemDetailId;
var typeid_cunliang = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_CUNLIANG").First()
?.ItemDetailId;
var typeid_tuitu = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_TUITU").First()
?.ItemDetailId;
List<string> notTypeids = new List<string>
{
typeid_fanxin,
typeid_jiagai,
typeid_fanjian,
typeid_cunliang,
typeid_tuitu,
};
var typeFanxinCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_fanxin).Sum(c => c.count);
var typeJiagaiCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_jiagai).Sum(c => c.count);
var typeFanjianCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_fanjian).Sum(c => c.count);
var typeCunliangCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_cunliang).Sum(c => c.count);
var typeTuituCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_tuitu).Sum(c => c.count);
var typeOtherCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && !notTypeids.Contains(c.typeid))
.Sum(c => c.count);
//上报案件数量
obj.Add("allCount", _allCount);
//完成外业核查数量
obj.Add("handleStatus", _handleStatus);
//24h内未核查
obj.Add("notDealHour24", _notDealHour24);
obj.Add("typeFanxinCount", typeFanxinCount);
obj.Add("typeJiagaiCount", typeJiagaiCount);
obj.Add("typeFanjianCount", typeFanjianCount);
obj.Add("typeCunliangCount", typeCunliangCount);
obj.Add("typeTuituCount", typeTuituCount);
obj.Add("typeOtherCount", typeOtherCount);
//合法
obj.Add("illegal0Count", _illegal0Count);
//违法 外业核实后确定违法数
obj.Add("illegal1Count", _illegal1Count);
//伪变化
obj.Add("illegal2Count", _illegal2Count);
//违法类型 未知类型数量
obj.Add("illegalNullCount", _illegalNullCount);
//违法面积
obj.Add("illegalHandleAreaList", _illegalHandleAreaList);
//整改销号数
obj.Add("illegalHandle2Status", _illegalHandle2Status);
//尚未整改宗数
obj.Add("illegalHandle01Status", _illegalHandle01Status);
//销号面积
obj.Add("illegalHandle2AreaList", _illegalHandle2AreaList);
//未整改面积
obj.Add("illegalHandle01AreaList", _illegalHandle01AreaList);
//3日内未整改完成
obj.Add("notComplete3", _notComplete3);
//7日内未整改完成
obj.Add("notComplete7", _notComplete7);
//30日内未整改完成
obj.Add("notComplete30", _notComplete30);
//30日以上未整改完成
obj.Add("notComplete30More", _notComplete30More);
array.Add(obj);
}
JObject _obj = new JObject();
_obj.Add("streetname", "合计");
//上报案件数量
_obj.Add("allCount", array.Sum(c => int.Parse(c["allCount"].ToString())));
//完成外业核查数量
_obj.Add("handleStatus", array.Sum(c => int.Parse(c["handleStatus"].ToString())));
//24h内未核查
_obj.Add("notDealHour24", array.Sum(c => int.Parse(c["notDealHour24"].ToString())));
_obj.Add("typeFanxinCount", array.Sum(c => int.Parse(c["typeFanxinCount"].ToString())));
_obj.Add("typeJiagaiCount", array.Sum(c => int.Parse(c["typeJiagaiCount"].ToString())));
_obj.Add("typeFanjianCount", array.Sum(c => int.Parse(c["typeFanjianCount"].ToString())));
_obj.Add("typeCunliangCount", array.Sum(c => int.Parse(c["typeCunliangCount"].ToString())));
_obj.Add("typeTuituCount", array.Sum(c => int.Parse(c["typeTuituCount"].ToString())));
_obj.Add("typeOtherCount", array.Sum(c => int.Parse(c["typeOtherCount"].ToString())));
//合法
_obj.Add("illegal0Count", array.Sum(c => int.Parse(c["illegal0Count"].ToString())));
//违法 外业核实后确定违法数
_obj.Add("illegal1Count", array.Sum(c => int.Parse(c["illegal1Count"].ToString())));
//伪变化
_obj.Add("illegal2Count", array.Sum(c => int.Parse(c["illegal2Count"].ToString())));
//违法类型 未知类型数量
_obj.Add("illegalNullCount", array.Sum(c => int.Parse(c["illegalNullCount"].ToString())));
//违法面积
_obj.Add("illegalHandleAreaList", array.Sum(c => decimal.Parse(c["illegalHandleAreaList"].ToString())));
//整改销号数
_obj.Add("illegalHandle2Status", array.Sum(c => int.Parse(c["illegalHandle2Status"].ToString())));
//尚未整改宗数
_obj.Add("illegalHandle01Status", array.Sum(c => int.Parse(c["illegalHandle01Status"].ToString())));
//销号面积
_obj.Add("illegalHandle2AreaList",
array.Sum(c => decimal.Parse(c["illegalHandle2AreaList"].ToString())));
//未整改面积
_obj.Add("illegalHandle01AreaList",
array.Sum(c => decimal.Parse(c["illegalHandle01AreaList"].ToString())));
//3日内未整改完成
_obj.Add("notComplete3", array.Sum(c => int.Parse(c["notComplete3"].ToString())));
//7日内未整改完成
_obj.Add("notComplete7", array.Sum(c => int.Parse(c["notComplete7"].ToString())));
//30日内未整改完成
_obj.Add("notComplete30", array.Sum(c => int.Parse(c["notComplete30"].ToString())));
//30日以上未整改完成
_obj.Add("notComplete30More", array.Sum(c => int.Parse(c["notComplete30More"].ToString())));
array.Add(_obj);
return new Response<JArray>
{
Result = array,
Message = "获取数据成功"
};
}
}
}
public Response<MemoryStream> ListToExcel(JArray list, List<ModuleColumn> headers)
{
Response<MemoryStream> response = new Response<MemoryStream>();
try
{
HSSFWorkbook workbook = new HSSFWorkbook();
#region 内容样式
IFont font1 = workbook.CreateFont(); //创建一个字体样式对象
font1.FontName = "Microsoft YaHei"; //和excel里面的字体对应
//font1.Boldweight = short.MaxValue;//字体加粗
font1.FontHeightInPoints = 12; //字体大小
ICellStyle style = workbook.CreateCellStyle(); //创建样式对象
style.BorderBottom = BorderStyle.Thin;
style.BorderLeft = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
style.BorderTop = BorderStyle.Thin;
style.Alignment = HorizontalAlignment.Center;
style.VerticalAlignment = VerticalAlignment.Center;
style.SetFont(font1); //将字体样式赋给样式对象
style.WrapText = true;
#endregion
#region 标题样式
IFont font = workbook.CreateFont(); //创建一个字体样式对象
font.FontName = "Microsoft YaHei"; //和excel里面的字体对应
font.Boldweight = (short)FontBoldWeight.Bold; //字体加粗
font.FontHeightInPoints = 12; //字体大小
ICellStyle style1 = workbook.CreateCellStyle(); //创建样式对象
style1.BorderBottom = BorderStyle.Thin;
style1.BorderLeft = BorderStyle.Thin;
style1.BorderRight = BorderStyle.Thin;
style1.BorderTop = BorderStyle.Thin;
style1.Alignment = HorizontalAlignment.Center;
style1.VerticalAlignment = VerticalAlignment.Center;
style1.SetFont(font); //将字体样式赋给样式对象
#endregion
#region 创建表头
int m = list.Count() / 60000 + 1;
for (int k = 0; k < m; k++)
{
ISheet sheet = workbook.CreateSheet("Sheet" + k.ToString());
IRow rowHeader = sheet.CreateRow(0);
rowHeader.Height = 20 * 30;
for (int i = 0; i < headers.Count; i++)
{
ModuleColumn header = headers[i];
rowHeader.CreateCell(i);
rowHeader.Cells[i].CellStyle = style1;
rowHeader.Cells[i].SetCellValue(header.value);
sheet.SetColumnWidth(i, 20 * 350);
}
#endregion
#region 填充数据
var val = (k + 1) * 60000;
var num = 60000;
if (val > list.Count())
{
num = list.Count() - k * 60000;
}
for (int i = 0; i < num; i++) //循环数据
{
JObject item = (JObject)list[k * 60000 + i]; //获取数据
IRow dataRow = sheet.CreateRow(i + 1); //创建行
for (int j = 0; j < headers.Count; j++) //循环表头
{
//数据处理
var objValue = "";
if (item.ContainsKey(headers[j].key))
{
objValue = item[headers[j].key].ToString();
}
else
{
objValue = "";
}
//创建单元格
dataRow.CreateCell(j);
dataRow.Cells[j].CellStyle = style; //添加单元格样式
if (objValue != null && !string.IsNullOrEmpty(objValue.ToString()))
{
dataRow.Cells[j].SetCellValue(objValue.ToString()); //填充Excel单元格
}
else
{
dataRow.Cells[j].SetCellValue(""); //填充Excel单元格
}
}
}
}
#endregion
response.Result = new MemoryStream();
workbook.Write(response.Result);
workbook = null;
response.Result.Close();
response.Result.Dispose();
response.Code = 200;
response.Message = "获取成功";
}
catch (Exception ex)
{
response.Code = 500;
response.Message = ex.Message;
}
return response;
}
/// <summary>
/// 综合统计,统计镇权限
/// </summary>
/// <returns></returns>
public JArray CaseSynthesisCensusStreet(QueryCaseInfoListReq req)
{
using (var db = base.UnitWork.CreateContext().Db.CopyNew())
{
//当前账号的权限
var currentUser = _auth.GetCurrentUser();
var _user = currentUser.User;
var currentOrgs = currentUser.Orgs.Select(c => c.Id).ToList();
//当前县名称
string countyName = _configuration.GetSection("CountyName").Value;
if (string.IsNullOrEmpty(countyName)) countyName = "费县";
//查询系统中镇的数据
var streetList = db.Queryable<SysOrg>().Where(c => c.ParentName == countyName).ToList();
//当前用户所属的镇
var currentStreet = streetList.Where(c => currentOrgs.Contains(c.Id)).FirstOrDefault();
if (currentStreet == null)
throw new Exception("没有权限");
JArray array = new JArray();
if (currentStreet.Name == "费城街道")
{
// 获取工作区案件统计的数据
// array = GetSynthesisCensusWorkAreaData(db, currentStreet, _user, req);
}
else
{
// 获取街道案件统计数据
array = GetSynthesisCensusStreetData(db, currentStreet, _user, req);
}
return array;
}
}
/// <summary>
/// 获取街道案件统计数据
/// </summary>
/// <param name="db"></param>
/// <param name="currentStreet"></param>
/// <param name="_user"></param>
/// <param name="req"></param>
/// <returns></returns>
private JArray GetSynthesisCensusStreetData(SqlSugarClient db, SysOrg currentStreet, SysUser _user,
QueryCaseInfoListReq req)
{
var orgList = db.Queryable<SysOrg>().Where(c => c.ParentId == currentStreet.Id)
.OrderBy(c => c.SortNo, OrderByType.Asc).ToList();
//无人机发现数量
var reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.streetid = currentStreet.Id.ToString();
var allCountList = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.communityid }).Select(c => new
{
c.communityid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//完成核查数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
reqBody.streetid = currentStreet.Id.ToString();
var handleStatusList = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.communityid }).Select(c =>
new
{
c.communityid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//24小时未核查 (不包含已退回的部分)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_not_deal_hour24 = 1;
reqBody.is_drawback = 0;
reqBody.streetid = currentStreet.Id.ToString();
var notDealHour24List = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.communityid }).Select(c =>
new
{
c.communityid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//分类型统计案件数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.streetid = currentStreet.Id.ToString();
var typeCountList = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.communityid, c.typeid })
.Select(c => new
{
c.communityid,
c.typeid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法类型数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
reqBody.streetid = currentStreet.Id.ToString();
var illegalCountList = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.communityid, c.is_illegal }).Select(c => new
{
c.communityid,
c.is_illegal,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
reqBody.streetid = currentStreet.Id.ToString();
var illegalHandleStatusList = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.communityid, c.handle_status_id }).Select(c => new
{
c.communityid,
c.handle_status_id,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态 面积
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
reqBody.streetid = currentStreet.Id.ToString();
var illegalHandleAreaList = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.communityid, c.handle_status_id }).Select(c => new
{
c.communityid,
c.handle_status_id,
area = SqlFunc.AggregateSum(SqlFunc.ToDecimal(c.area)),
}).ToList();
//3日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 1;
reqBody.is_illegal = 1;
reqBody.streetid = currentStreet.Id.ToString();
var notComplete3List = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.communityid }).Select(c =>
new
{
c.communityid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//7日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 2;
reqBody.is_illegal = 1;
reqBody.streetid = currentStreet.Id.ToString();
var notComplete7List = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.communityid }).Select(c =>
new
{
c.communityid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 4;
reqBody.is_illegal = 1;
reqBody.streetid = currentStreet.Id.ToString();
var notComplete30List = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.communityid }).Select(c =>
new
{
c.communityid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日以上未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 5;
reqBody.is_illegal = 1;
reqBody.streetid = currentStreet.Id.ToString();
var notComplete30MoreList = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.communityid }).Select(
c => new
{
c.communityid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
var typepid = db.Queryable<SysDataItem>().Where(c => c.ItemCode == "DRONE_CASE_TYPE").First();
var typeList = db.Queryable<SysDataItemDetail>().Where(c => c.ItemId == typepid.ItemId).ToList();
//var typeList = db.Queryable<Sugar_Category>().Where(c => c.TypeId == "DRONE_CASE_TYPE").ToList();
JArray array = new JArray();
for (int i = 0; i < orgList.Count; i++)
{
var item = orgList[i];
//无人机发现数量
int _allCount = allCountList.Where(c => c.communityid == item.Id.ToString()).Sum(c => c.count);
//完成核查数量
int _handleStatus = handleStatusList.Where(c => c.communityid == item.Id.ToString()).Sum(c => c.count);
//24小时未核查
int _notDealHour24 = notDealHour24List.Where(c => c.communityid == item.Id.ToString()).Sum(c => c.count);
//违法类型数量
int _illegal0Count = illegalCountList.Where(c => c.communityid == item.Id.ToString() && c.is_illegal == 0)
.Sum(c => c.count);
int _illegal1Count = illegalCountList.Where(c => c.communityid == item.Id.ToString() && c.is_illegal == 1)
.Sum(c => c.count);
int _illegal2Count = illegalCountList.Where(c => c.communityid == item.Id.ToString() && c.is_illegal == 2)
.Sum(c => c.count);
int _illegalNullCount = illegalCountList
.Where(c => c.communityid == item.Id.ToString() && c.is_illegal == null).Sum(c => c.count);
//违法 状态查询
int _illegalHandle2Status = illegalHandleStatusList
.Where(c => c.communityid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.count);
int _illegalHandle01Status = illegalHandleStatusList
.Where(c => c.communityid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.count);
//违法 面积查询
decimal? _illegalHandleAreaList =
illegalHandleAreaList.Where(c => c.communityid == item.Id.ToString()).Sum(c => c.area);
if (_illegalHandleAreaList != null)
{
_illegalHandleAreaList = Decimal.Round(_illegalHandleAreaList.Value / 666, 2);
}
decimal? _illegalHandle2AreaList = illegalHandleAreaList
.Where(c => c.communityid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.area);
if (_illegalHandle2AreaList != null)
{
_illegalHandle2AreaList = Decimal.Round(_illegalHandle2AreaList.Value / 666, 2);
}
decimal? _illegalHandle01AreaList = illegalHandleAreaList
.Where(c => c.communityid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.area);
if (_illegalHandle01AreaList != null)
{
_illegalHandle01AreaList = Decimal.Round(_illegalHandle01AreaList.Value / 666, 2);
}
//3日内未整改
int _notComplete3 = notComplete3List.Where(c => c.communityid == item.Id.ToString()).Sum(c => c.count);
//7日内未整改
int _notComplete7 = notComplete7List.Where(c => c.communityid == item.Id.ToString()).Sum(c => c.count);
//30日内未整改
int _notComplete30 = notComplete30List.Where(c => c.communityid == item.Id.ToString()).Sum(c => c.count);
//30日以上未整改
int _notComplete30More =
notComplete30MoreList.Where(c => c.communityid == item.Id.ToString()).Sum(c => c.count);
JObject obj = new JObject();
//所属镇
obj.Add("streetid", currentStreet.Id);
obj.Add("streetname", currentStreet.Name);
//所属社区
obj.Add("communityid", item.Id);
obj.Add("communityname", item.Name);
obj.Add("is_area", 0);
//分类型统计案件数量
//int _typeCount = typeCountList.Where(c => c.streetid == item.Id).Sum(c => c.count);
var typeid_fanxin = typeList.Where(c => c.ItemCode == "DRONE_CASE_TYPE_FANXIN").First().ItemDetailId;
var typeid_jiagai = typeList.Where(c => c.ItemCode == "DRONE_CASE_TYPE_JIAGAI").First().ItemDetailId;
var typeid_fanjian = typeList.Where(c => c.ItemCode == "DRONE_CASE_TYPE_FANJIAN").First().ItemDetailId;
var typeid_cunliang = typeList.Where(c => c.ItemCode == "DRONE_CASE_TYPE_CUNLIANG").First().ItemDetailId;
var typeid_tuitu = typeList.Where(c => c.ItemCode == "DRONE_CASE_TYPE_TUITU").First().ItemDetailId;
List<string> notTypeids = new List<string>
{
typeid_fanxin,
typeid_jiagai,
typeid_fanjian,
typeid_cunliang,
typeid_tuitu,
};
var typeFanxinCount = typeCountList
.Where(c => c.communityid == item.Id.ToString() && c.typeid == typeid_fanxin).Sum(c => c.count);
var typeJiagaiCount = typeCountList
.Where(c => c.communityid == item.Id.ToString() && c.typeid == typeid_jiagai).Sum(c => c.count);
var typeFanjianCount = typeCountList
.Where(c => c.communityid == item.Id.ToString() && c.typeid == typeid_fanjian).Sum(c => c.count);
var typeCunliangCount = typeCountList
.Where(c => c.communityid == item.Id.ToString() && c.typeid == typeid_cunliang).Sum(c => c.count);
var typeTuituCount = typeCountList
.Where(c => c.communityid == item.Id.ToString() && c.typeid == typeid_tuitu).Sum(c => c.count);
var typeOtherCount = typeCountList
.Where(c => c.communityid == item.Id.ToString() && !notTypeids.Contains(c.typeid)).Sum(c => c.count);
//上报案件数量
obj.Add("allCount", _allCount);
//完成外业核查数量
obj.Add("handleStatus", _handleStatus);
//24h内未核查
obj.Add("notDealHour24", _notDealHour24);
obj.Add("typeFanxinCount", typeFanxinCount);
obj.Add("typeJiagaiCount", typeJiagaiCount);
obj.Add("typeFanjianCount", typeFanjianCount);
obj.Add("typeCunliangCount", typeCunliangCount);
obj.Add("typeTuituCount", typeTuituCount);
obj.Add("typeOtherCount", typeOtherCount);
//合法
obj.Add("illegal0Count", _illegal0Count);
//违法 外业核实后确定违法数
obj.Add("illegal1Count", _illegal1Count);
//伪变化
obj.Add("illegal2Count", _illegal2Count);
//违法类型 未知类型数量
obj.Add("illegalNullCount", _illegalNullCount);
//违法面积
obj.Add("illegalHandleAreaList", _illegalHandleAreaList);
//整改销号数
obj.Add("illegalHandle2Status", _illegalHandle2Status);
//尚未整改宗数
obj.Add("illegalHandle01Status", _illegalHandle01Status);
//销号面积
obj.Add("illegalHandle2AreaList", _illegalHandle2AreaList);
//未整改面积
obj.Add("illegalHandle01AreaList", _illegalHandle01AreaList);
//3日内未整改完成
obj.Add("notComplete3", _notComplete3);
//7日内未整改完成
obj.Add("notComplete7", _notComplete7);
//30日内未整改完成
obj.Add("notComplete30", _notComplete30);
//30日以上未整改完成
obj.Add("notComplete30More", _notComplete30More);
array.Add(obj);
}
JObject _obj = new JObject();
//所属镇
_obj.Add("streetid", currentStreet.Id);
_obj.Add("streetname", currentStreet.Name);
_obj.Add("communityid", "");
_obj.Add("communityname", "合计");
_obj.Add("is_area", 0);
//上报案件数量
_obj.Add("allCount", array.Sum(c => int.Parse(c["allCount"].ToString())));
//完成外业核查数量
_obj.Add("handleStatus", array.Sum(c => int.Parse(c["handleStatus"].ToString())));
//24h内未核查
_obj.Add("notDealHour24", array.Sum(c => int.Parse(c["notDealHour24"].ToString())));
_obj.Add("typeFanxinCount", array.Sum(c => int.Parse(c["typeFanxinCount"].ToString())));
_obj.Add("typeJiagaiCount", array.Sum(c => int.Parse(c["typeJiagaiCount"].ToString())));
_obj.Add("typeFanjianCount", array.Sum(c => int.Parse(c["typeFanjianCount"].ToString())));
_obj.Add("typeCunliangCount", array.Sum(c => int.Parse(c["typeCunliangCount"].ToString())));
_obj.Add("typeTuituCount", array.Sum(c => int.Parse(c["typeTuituCount"].ToString())));
_obj.Add("typeOtherCount", array.Sum(c => int.Parse(c["typeOtherCount"].ToString())));
//合法
_obj.Add("illegal0Count", array.Sum(c => int.Parse(c["illegal0Count"].ToString())));
//违法 外业核实后确定违法数
_obj.Add("illegal1Count", array.Sum(c => int.Parse(c["illegal1Count"].ToString())));
//伪变化
_obj.Add("illegal2Count", array.Sum(c => int.Parse(c["illegal2Count"].ToString())));
//违法类型 未知类型数量
_obj.Add("illegalNullCount", array.Sum(c => int.Parse(c["illegalNullCount"].ToString())));
//违法面积
_obj.Add("illegalHandleAreaList", array.Sum(c => decimal.Parse(c["illegalHandleAreaList"].ToString())));
//整改销号数
_obj.Add("illegalHandle2Status", array.Sum(c => int.Parse(c["illegalHandle2Status"].ToString())));
//尚未整改宗数
_obj.Add("illegalHandle01Status", array.Sum(c => int.Parse(c["illegalHandle01Status"].ToString())));
//销号面积
_obj.Add("illegalHandle2AreaList", array.Sum(c => decimal.Parse(c["illegalHandle2AreaList"].ToString())));
//未整改面积
_obj.Add("illegalHandle01AreaList", array.Sum(c => decimal.Parse(c["illegalHandle01AreaList"].ToString())));
//3日内未整改完成
_obj.Add("notComplete3", array.Sum(c => int.Parse(c["notComplete3"].ToString())));
//7日内未整改完成
_obj.Add("notComplete7", array.Sum(c => int.Parse(c["notComplete7"].ToString())));
//30日内未整改完成
_obj.Add("notComplete30", array.Sum(c => int.Parse(c["notComplete30"].ToString())));
//30日以上未整改完成
_obj.Add("notComplete30More", array.Sum(c => int.Parse(c["notComplete30More"].ToString())));
array.Add(_obj);
return array;
}
#endregion
#region 无人机发现违法行为情况统计明细表
public Response<List<OffenceResp>> CaseOffence(DateTime startTime, DateTime endTime, string tubanlaiyuan)
{
//合法:已经归档的合法案件 is_illegal
//违法:已经归档的违法案件,未归档的案件 is_illegal
//其他:已经归档的其他案件 is_illegal
//非粮化:已经归档的非粮化 weifaleixing 并且is_illegal=1 非农化也是
//补办手续:已经归档的补办手续 measure_name并且is_illegal=1 weifaleixing =0
//拆除拆除复耕:已经归档的拆除 measure_name并且is_illegal=1 weifaleixing =0
var user = _auth.GetCurrentUser().User;
var orgIds = base._auth.GetCurrentUser().Orgs;
List<OffenceResp> listResp = new List<OffenceResp>();
//只查询农用地案件
//var casetype = client.Queryable<SysDataItemDetail>()
// .Where(r => r.ItemCode == "DRONE_CASE_TYPE" && r.ItemValue == "DRONE_CASE_TYPE_NYD").First()?.ItemDetailId;
//总计
int xftbzscount = 0,
hfzscount = 0,
wfzscount = 0,
fnhzscount = 0,
flhzscount = 0,
qtzscount = 0,
bbsxzscount = 0,
cczscount = 0,
bzgdtbzscount = 0,
hshxzwfgdzscount = 0,
zghsywfgdzscount = 0;
double xfgdmjsum = 0.0,
xfmjsum = 0.0,
hfmjsum = 0.0,
hfgdmjsum = 0.0,
wfmjsum = 0.0,
wfgdmjsum = 0.0,
qtmjsum = 0.0,
qtgdmjsum = 0.0,
fnhmjsum = 0.0,
fnhgdmjsum = 0.0,
flhmjsum = 0.0,
flhgdmjsum = 0.0,
bbsxmjsum = 0.0,
bbsxgdmjsum = 0.0,
ccmjsum = 0.0,
ccgdmjsum = 0.0,
bzgdmjsum = 0.0,
hshxzwfgdgdmjsum = 0.0,
zghsywfgdgdmjsum = 0.0;
double SumArea(IEnumerable<DroneCaseInfoXcsj> cases, Func<DroneCaseInfoXcsj, 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>();
List<DroneCaseInfoXcsj> caseList = new List<DroneCaseInfoXcsj>();
List<string> tubanlaiyuanList = string.IsNullOrEmpty(tubanlaiyuan)
? new List<string>()
: tubanlaiyuan.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
if (orgIds.Any(r => r.Level == 0) || user.Id == -1) // 查询全部
{
org = client.Queryable<SysOrg>().Where(r => r.Level == 1).ToList();
caseList = client.Queryable<DroneCaseInfoXcsj>()
.WhereIF(!string.IsNullOrEmpty(tubanlaiyuan), r => tubanlaiyuanList.Contains(r.tubanlaiyuan))
.Where(r => r.synchronoustime >= startTime && r.synchronoustime <= endTime &&
r.is_closed == 0).ToList();
}
else if (orgIds.Any(r => r.Level == 1))
{
//县区数据
org = client.Queryable<SysOrg>()
.Where(r => r.Level == 2 && orgIds.Select(a => a.Id).Contains(r.ParentId)).ToList();
caseList = client.Queryable<DroneCaseInfoXcsj>()
.WhereIF(!string.IsNullOrEmpty(tubanlaiyuan), r => tubanlaiyuanList.Contains(r.tubanlaiyuan))
.Where(r => r.synchronoustime > startTime && r.synchronoustime <= endTime &&
r.is_closed == 0).ToList();
}
foreach (var item in org)
{
var countyIdString = item.Id.ToString();
var casesForCounty = caseList.Where(r => r.countyid == countyIdString || r.streetid == countyIdString)
.ToList();
xftbzscount += casesForCounty.Count;
int wfzs = casesForCounty.Count(r =>
(r.is_illegal == 1 && r.handle_status_id == 5) || r.handle_status_id != 5);
wfzscount += wfzs;
int fnhzs = casesForCounty.Count(r =>
(r.weifaleixing == 0 && r.is_illegal == 1 && r.handle_status_id == 5) || r.handle_status_id != 5);
fnhzscount += fnhzs;
int flhzs = casesForCounty.Count(r => r.weifaleixing == 1 && r.handle_status_id == 5 && r.is_illegal == 1);
flhzscount += flhzs;
int hfzs = casesForCounty.Count(r => r.is_illegal == 0 && r.handle_status_id == 5);
hfzscount += hfzs;
int qtzs = casesForCounty.Count(r => r.is_illegal == 2 && r.handle_status_id == 5);
qtzscount += qtzs;
int bbsxzs = casesForCounty.Count(r =>
r.measure_name == "1" && r.handle_status_id == 5 && r.weifaleixing == 0 && r.is_illegal == 1);
bbsxzscount += bbsxzs;
int cczs = casesForCounty.Count(r =>
r.measure_name == "0" && r.handle_status_id == 5 && r.weifaleixing == 0 && r.is_illegal == 1);
cczscount += cczs;
int bzgdtbzs = casesForCounty.Count(r =>
(string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00")
&& r.handle_status_id == 5 && r.is_illegal == 1 && r.weifaleixing == 0);
bzgdtbzscount += bzgdtbzs;
double xfgdmj = SumArea(casesForCounty, r => r.gengdi_area);
xfgdmjsum += xfgdmj;
double xfmj = SumArea(casesForCounty, r => r.area);
xfmjsum += xfmj;
double hfmj = SumArea(casesForCounty.Where(r => r.is_illegal == 0 && r.handle_status_id == 5),
r => r.area);
hfmjsum += hfmj;
double hfgdmj = SumArea(casesForCounty.Where(r => r.is_illegal == 0 && r.handle_status_id == 5),
r => r.gengdi_area);
hfgdmjsum += hfgdmj;
double wfmj = SumArea(casesForCounty.Where(r => r.is_illegal == 1 || r.handle_status_id != 5),
r => r.area);
wfmjsum += wfmj;
double wfgdmj = SumArea(casesForCounty.Where(r => r.is_illegal == 1 || r.handle_status_id != 5),
r => r.gengdi_area);
wfgdmjsum += wfgdmj;
double qtmj = SumArea(casesForCounty.Where(r => r.is_illegal == 2 && r.handle_status_id == 5),
r => r.area);
qtmjsum += qtmj;
double qtgdmj = SumArea(casesForCounty.Where(r => r.is_illegal == 2 && r.handle_status_id == 5),
r => r.gengdi_area);
qtgdmjsum += qtgdmj;
double fnhmj = SumArea(
casesForCounty.Where(r =>
(r.weifaleixing == 0 && r.is_illegal == 1 && r.handle_status_id == 5) || r.handle_status_id != 5),
r => r.area);
fnhmjsum += fnhmj;
double fnhgdmj = SumArea(
casesForCounty.Where(r =>
(r.weifaleixing == 0 && r.is_illegal == 1 && r.handle_status_id == 5) || r.handle_status_id != 5),
r => r.gengdi_area);
fnhgdmjsum += fnhgdmj;
double flhmj = SumArea(
casesForCounty.Where(r => r.weifaleixing == 1 && r.handle_status_id == 5 && r.is_illegal == 1),
r => r.area);
flhmjsum += flhmj;
double flhgdmj = SumArea(
casesForCounty.Where(r => r.weifaleixing == 1 && r.handle_status_id == 5 && r.is_illegal == 1),
r => r.gengdi_area);
flhgdmjsum += flhgdmj;
double bbsxmj = SumArea(
casesForCounty.Where(r =>
r.measure_name == "1" && r.handle_status_id == 5 && r.weifaleixing == 0 && r.is_illegal == 1),
r => r.area);
bbsxmjsum += bbsxmj;
double bbsxgdmj = SumArea(
casesForCounty.Where(r =>
r.measure_name == "1" && r.handle_status_id == 5 && r.weifaleixing == 0 && r.is_illegal == 1),
r => r.gengdi_area);
bbsxgdmjsum += bbsxgdmj;
double ccmj = SumArea(
casesForCounty.Where(r =>
r.measure_name == "0" && r.handle_status_id == 5 && r.weifaleixing == 0 && r.is_illegal == 1),
r => r.area);
ccmjsum += ccmj;
double ccgdmj = SumArea(
casesForCounty.Where(r =>
r.measure_name == "0" && r.handle_status_id == 5 && r.weifaleixing == 0 && r.is_illegal == 1),
r => r.gengdi_area);
ccgdmjsum += ccgdmj;
//不占耕地
double bzgdmj =
SumArea(casesForCounty.Where(r =>
(string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00")
&& r.handle_status_id == 5 && r.is_illegal == 1 && r.weifaleixing == 0),
r => r.gengdi_area);
bzgdmjsum += bzgdmj;
OffenceResp offenceResp = new OffenceResp
{
countyid = item.Id,
countyname = item.Name,
xftbzs = casesForCounty.Count,
xfgdmj = xfgdmj,
xfmj = xfmj,
hfzs = hfzs,
hfmj = hfmj,
hfgdmj = hfgdmj,
wfzs = wfzs,
wfmj = wfmj,
wfgdmj = wfgdmj,
qtzs = qtzs,
qtmj = qtmj,
qtgdmj = qtgdmj,
fnhzs = fnhzs,
fnhmj = fnhmj,
fnhgdmj = fnhgdmj,
flhzs = flhzs,
flhmj = flhmj,
flhgdmj = flhgdmj,
bbsxzs = bbsxzs,
bbsxmj = bbsxmj,
bbsxgdmj = bbsxgdmj,
cczs = cczs,
ccmj = ccmj,
ccgdmj = ccgdmj,
bzgdtbzs = bzgdtbzs,
hshxzwfgdzs = (wfzs - flhzs - bzgdtbzs),
hshxzwfgdgdmj = wfgdmj - flhgdmj,
zghsywfgdzs = wfzs - flhzs - bbsxzs - cczs,
zghsywfgdgdmj = wfgdmj - flhgdmj - bbsxgdmj - ccgdmj
};
listResp.Add(offenceResp);
}
listResp = listResp.OrderByDescending(r => r.zghsywfgdgdmj).ToList();
hshxzwfgdzscount = (wfzscount - flhzscount - bzgdtbzscount);
hshxzwfgdgdmjsum = wfgdmjsum - flhgdmjsum;
zghsywfgdzscount = wfzscount - flhzscount - bzgdtbzscount - bbsxzscount - cczscount;
zghsywfgdgdmjsum = wfgdmjsum - flhgdmjsum - bbsxgdmjsum - ccgdmjsum;
listResp.Add(new OffenceResp
{
countyid = 0,
countyname = "总计",
xftbzs = xftbzscount,
xfgdmj = xfgdmjsum,
xfmj = xfmjsum,
hfzs = hfzscount,
hfmj = hfmjsum,
hfgdmj = hfgdmjsum,
wfzs = wfzscount,
wfmj = wfmjsum,
wfgdmj = wfgdmjsum,
qtzs = qtzscount,
qtmj = qtmjsum,
qtgdmj = qtgdmjsum,
fnhzs = fnhzscount,
fnhmj = fnhmjsum,
fnhgdmj = fnhgdmjsum,
flhzs = flhzscount,
flhmj = flhmjsum,
flhgdmj = flhgdmjsum,
bbsxzs = bbsxzscount,
bbsxmj = bbsxmjsum,
bbsxgdmj = bbsxgdmjsum,
cczs = cczscount,
ccmj = ccmjsum,
ccgdmj = ccgdmjsum,
bzgdtbzs = bzgdtbzscount,
hshxzwfgdzs = hshxzwfgdzscount,
hshxzwfgdgdmj = Math.Round(hshxzwfgdgdmjsum, 2),
zghsywfgdzs = zghsywfgdzscount,
zghsywfgdgdmj = Math.Round(zghsywfgdgdmjsum, 2)
});
return new Response<List<OffenceResp>>
{
Result = listResp,
Message = "获取数据成功"
};
}
public async Task<Response<PageInfo<List<DroneCaseInfoXcsj>>>> LoadCaseInfoListOffence(QueryCaseOffencetReq req)
{
var user = _auth.GetCurrentUser().User;
var orgIds = base._auth.GetCurrentUser().Orgs;
RefAsync<int> totalcount = 0;
// 只查询农用地案件
//var casetype = client.Queryable<SysDataItemDetail>()
// .Where(r => r.ItemCode == "DRONE_CASE_TYPE" && r.ItemValue == "DRONE_CASE_TYPE_NYD")
// .Select(r => r.ItemDetailId)
// .First();
List<string> tubanlaiyuanList = string.IsNullOrEmpty(req.tubanlaiyuan)
? new List<string>()
: req.tubanlaiyuan.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
// 查询案件列表的基础查询
var baseQuery = client.Queryable<DroneCaseInfoXcsj>()
.Where(r => r.synchronoustime >= req.StartTime && r.synchronoustime <= req.EndTime)
.WhereIF(!string.IsNullOrEmpty(req.tubanlaiyuan),r=>tubanlaiyuanList.Contains(r.tubanlaiyuan))
.Where(r => r.is_closed == 0);
// 根据用户角色和区域进行过滤
if (orgIds.Any(r => r.Level == 0) || user.Id == -1)
{
var orgIds_c = client.Queryable<SysOrg>().Where(r => r.Level == 1).Select(r => r.Id.ToString()).ToList();
baseQuery = req.AreaId == "0"
? baseQuery.Where(r => orgIds_c.Contains(r.countyid))
: baseQuery.Where(r => r.countyid == req.AreaId);
}
else if (orgIds.Any(r => r.Level == 1))
{
//var orgIds_c = orgIds.Where(r => r.Level == 2).Select(r=>r.Id.ToString()).ToList();
var orgIds_c = client.Queryable<SysOrg>()
.Where(r => r.Level == 2 && orgIds.Select(a => a.Id).Contains(r.ParentId)).Select(r => r.Id.ToString())
.ToList();
baseQuery = req.AreaId == "0"
? baseQuery.Where(r => orgIds_c.Contains(r.streetid))
: baseQuery.Where(r => r.streetid == req.AreaId);
}
else
{
return new Response<PageInfo<List<DroneCaseInfoXcsj>>>
{
Result = new PageInfo<List<DroneCaseInfoXcsj>>(),
Message = "暂无数据"
};
}
// 根据案件类型进行过滤和排序
switch (req.CaseType)
{
case 2:
baseQuery = baseQuery.Where(r => r.is_illegal == 0 && r.handle_status_id == 5);
break;
case 3:
baseQuery = baseQuery.Where(r =>
(r.is_illegal == 1 && r.handle_status_id == 5) || r.handle_status_id != 5);
break;
case 4:
baseQuery = baseQuery.Where(r => r.is_illegal == 2 && r.handle_status_id == 5);
break;
case 5:
baseQuery = baseQuery.Where(r => r.weifaleixing == 1 && r.handle_status_id == 5 && r.is_illegal == 1);
break;
case 6:
baseQuery = baseQuery.Where(r =>
r.measure_name == "1" && r.handle_status_id == 5 && r.is_illegal == 1 && r.weifaleixing == 0);
break;
case 7:
//r.measure_name == "0" && r.handle_status_id == 5 && r.weifaleixing == 0 && r.is_illegal == 1
baseQuery = baseQuery.Where(r =>
r.measure_name == "0" && r.handle_status_id == 5 && r.is_illegal == 1 && r.weifaleixing == 0);
break;
case 8:
// (string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00")
//&& r.handle_status_id == 5 && (r.handle_status_id != 5 || (r.is_illegal == 1 && r.handle_status_id == 5)))
//baseQuery = baseQuery.Where(r => ((r.is_illegal == 1 && r.handle_status_id == 5) || r.handle_status_id != 5) &&
// !(r.weifaleixing == 1 && r.handle_status_id == 5 && r.is_illegal == 1) &&
// !((string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00") && r.handle_status_id == 5
// && (r.handle_status_id != 5 || (r.is_illegal == 1 && r.handle_status_id == 5))));
baseQuery = baseQuery.Where(r =>
((r.is_illegal == 1 && r.handle_status_id == 5) || r.handle_status_id != 5) &&
!(r.weifaleixing == 1 && r.handle_status_id == 5 && r.is_illegal == 1) &&
!((string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00") &&
r.handle_status_id == 5
&& (r.handle_status_id != 5 || (r.is_illegal == 1 && r.handle_status_id == 5))));
break;
case 9:
baseQuery = baseQuery.Where(r =>
((r.is_illegal == 1 && r.handle_status_id == 5) || r.handle_status_id != 5) &&
!(r.weifaleixing == 1 && r.handle_status_id == 5 && r.is_illegal == 1) &&
!((string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00") &&
r.handle_status_id == 5 &&
(r.handle_status_id != 5 || (r.is_illegal == 1 && r.handle_status_id == 5))) &&
!(r.measure_name == "1" && r.handle_status_id == 5 && r.weifaleixing == 0) &&
!(r.measure_name == "0" && r.handle_status_id == 5 && r.weifaleixing == 0));
break;
case 10:
//(r.weifaleixing == 0 && r.is_illegal == 1 && r.handle_status_id == 5) || r.handle_status_id != 5)
baseQuery = baseQuery.Where(r =>
(r.weifaleixing == 0 && r.is_illegal == 1 && r.handle_status_id == 5) || r.handle_status_id != 5);
break;
default:
break;
}
baseQuery = baseQuery.OrderByDescending(r => r.synchronoustime);
// 获取分页结果
var result = await baseQuery.ToPageListAsync(req.page, req.limit, totalcount);
return new Response<PageInfo<List<DroneCaseInfoXcsj>>>
{
Result = new PageInfo<List<DroneCaseInfoXcsj>>
{
Items = result,
Total = totalcount
},
Message = "获取数据成功"
};
}
//导出汇总
public Response<MemoryStream> CaseOffenceToExcel(List<OffenceResp> list)
{
Response<MemoryStream> response = new Response<MemoryStream>();
try
{
HSSFWorkbook workbook = new HSSFWorkbook();
ISheet sheet = workbook.CreateSheet("Sheet1");
#region 样式设置
ICellStyle CreateCellStyle(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign,
VerticalAlignment vAlign, bool bold = false)
{
IFont font = wb.CreateFont();
font.FontName = fontName;
font.FontHeightInPoints = fontHeight;
font.IsBold = bold;
ICellStyle style = wb.CreateCellStyle();
style.BorderBottom = BorderStyle.Thin;
style.BorderLeft = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
style.BorderTop = BorderStyle.Thin;
style.Alignment = hAlign;
style.VerticalAlignment = vAlign;
style.SetFont(font);
style.WrapText = true;
return style;
}
ICellStyle contentStyle =
CreateCellStyle(workbook, 20, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
ICellStyle titleStyle =
CreateCellStyle(workbook, 12, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
ICellStyle headerStyle1 = CreateCellStyle(workbook, 36, "方正小标宋简体", HorizontalAlignment.Center,
VerticalAlignment.Center);
ICellStyle headerStyle2 =
CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
ICellStyle headerStyle3 =
CreateCellStyle(workbook, 20, "黑体", HorizontalAlignment.Center, VerticalAlignment.Center);
#endregion
#region 创建表头
IRow CreateRowWithHeight(ISheet sht, int rowIndex, float heightInPoints)
{
IRow row = sht.CreateRow(rowIndex);
row.HeightInPoints = heightInPoints;
return row;
}
void SetCellStyle(IRow row, ICellStyle style)
{
foreach (ICell cell in row.Cells)
{
cell.CellStyle = style;
}
}
IRow row0 = CreateRowWithHeight(sheet, 0, 100);
row0.CreateCell(0).SetCellValue("无人机全域巡查图斑情况统计表");
for (int k = 1; k < 29; k++) row0.CreateCell(k);
IRow row1 = CreateRowWithHeight(sheet, 1, 55);
row1.CreateCell(0).SetCellValue("合法、其他、非粮化、补办手续、拆除复耕均需市级审核通过才可判定为举证类型。");
for (int k = 1; k < 29; k++) row1.CreateCell(k);
IRow row2 = CreateRowWithHeight(sheet, 2, 65);
row2.CreateCell(0).SetCellValue("县区");
row2.CreateCell(1).SetCellValue("下发图斑");
row2.CreateCell(4).SetCellValue("合法");
row2.CreateCell(7).SetCellValue("违法");
row2.CreateCell(16).SetCellValue("其他");
row2.CreateCell(19).SetCellValue("整改情况");
row2.CreateCell(25).SetCellValue("新增违法占用耕地情况");
row2.CreateCell(28);
IRow row3 = CreateRowWithHeight(sheet, 3, 65);
for (int k = 1; k < 29; k++) row3.CreateCell(k);
// 填充表头内容
row3.CreateCell(0).SetCellValue("县区");
row3.CreateCell(1).SetCellValue("下发图斑");
row3.CreateCell(2);
row3.CreateCell(4).SetCellValue("合法");
row3.CreateCell(5);
row3.CreateCell(6);
row3.CreateCell(7).SetCellValue("小计");
row3.CreateCell(8);
row3.CreateCell(9);
row3.CreateCell(10).SetCellValue("非农化");
row3.CreateCell(11);
row3.CreateCell(12);
row3.CreateCell(13).SetCellValue("非粮化");
row3.CreateCell(14);
row3.CreateCell(15);
row3.CreateCell(16).SetCellValue("其他");
row3.CreateCell(17);
row3.CreateCell(18);
row3.CreateCell(19).SetCellValue("补办手续");
row3.CreateCell(20);
row3.CreateCell(21);
row3.CreateCell(22).SetCellValue("拆除复耕");
row3.CreateCell(23);
row3.CreateCell(24);
row3.CreateCell(25).SetCellValue("核实后新增违法耕地");
row3.CreateCell(26);
row3.CreateCell(27).SetCellValue("整改后剩余违法耕地");
row3.CreateCell(28);
for (var k = 1; k < 29; k++)
{
row3.Height = 65 * 20;
}
IRow row4 = CreateRowWithHeight(sheet, 4, 65);
row4.CreateCell(0).SetCellValue("县区");
row4.CreateCell(1).SetCellValue("宗数");
row4.CreateCell(2).SetCellValue("面积");
row4.CreateCell(3).SetCellValue("耕地面积");
row4.CreateCell(4).SetCellValue("宗数");
row4.CreateCell(5).SetCellValue("面积");
row4.CreateCell(6).SetCellValue("耕地面积");
row4.CreateCell(7).SetCellValue("宗数");
row4.CreateCell(8).SetCellValue("面积");
row4.CreateCell(9).SetCellValue("耕地面积");
row4.CreateCell(10).SetCellValue("宗数");
row4.CreateCell(11).SetCellValue("面积");
row4.CreateCell(12).SetCellValue("耕地面积");
row4.CreateCell(13).SetCellValue("宗数");
row4.CreateCell(14).SetCellValue("面积");
row4.CreateCell(15).SetCellValue("耕地面积");
row4.CreateCell(16).SetCellValue("宗数");
row4.CreateCell(17).SetCellValue("面积");
row4.CreateCell(18).SetCellValue("耕地面积");
row4.CreateCell(19).SetCellValue("宗数");
row4.CreateCell(20).SetCellValue("面积");
row4.CreateCell(21).SetCellValue("耕地面积");
row4.CreateCell(22).SetCellValue("宗数");
row4.CreateCell(23).SetCellValue("面积");
row4.CreateCell(24).SetCellValue("耕地面积");
row4.CreateCell(25).SetCellValue("宗数");
row4.CreateCell(26).SetCellValue("耕地面积");
row4.CreateCell(27).SetCellValue("宗数");
row4.CreateCell(28).SetCellValue("耕地面积");
SetCellStyle(row0, headerStyle1);
SetCellStyle(row1, headerStyle2);
SetCellStyle(row2, headerStyle3);
SetCellStyle(row3, headerStyle3);
SetCellStyle(row4, headerStyle3);
// 合并单元格
sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 28));
sheet.AddMergedRegion(new CellRangeAddress(1, 1, 0, 28));
sheet.AddMergedRegion(new CellRangeAddress(2, 4, 0, 0));
sheet.AddMergedRegion(new CellRangeAddress(2, 3, 1, 3));
sheet.AddMergedRegion(new CellRangeAddress(2, 3, 4, 6));
sheet.AddMergedRegion(new CellRangeAddress(2, 2, 7, 15));
sheet.AddMergedRegion(new CellRangeAddress(2, 3, 16, 18));
sheet.AddMergedRegion(new CellRangeAddress(2, 2, 19, 24));
sheet.AddMergedRegion(new CellRangeAddress(2, 2, 25, 28));
sheet.AddMergedRegion(new CellRangeAddress(3, 3, 7, 9));
sheet.AddMergedRegion(new CellRangeAddress(3, 3, 10, 12));
sheet.AddMergedRegion(new CellRangeAddress(3, 3, 13, 15));
sheet.AddMergedRegion(new CellRangeAddress(3, 3, 19, 21));
sheet.AddMergedRegion(new CellRangeAddress(3, 3, 22, 24));
sheet.AddMergedRegion(new CellRangeAddress(3, 3, 25, 26));
sheet.AddMergedRegion(new CellRangeAddress(3, 3, 27, 28));
// 设置列宽度
int[] wideColumns = { 2, 3, 5, 6, 8, 9, 11, 12, 14, 15, 17, 18, 20, 21, 23, 24, 26, 28 };
foreach (var index in wideColumns) sheet.SetColumnWidth(index, 23 * 256);
int[] normalColumns = { 1, 4, 7, 10, 13, 16, 19, 22, 25, 27 };
foreach (var index in normalColumns) sheet.SetColumnWidth(index, 18 * 256);
sheet.SetColumnWidth(0, 20 * 256);
#endregion
#region 填充数据
for (int i = 0; i < list.Count; i++)
{
var rowIndex = i + 5;
var row = CreateRowWithHeight(sheet, rowIndex, 80);
row.CreateCell(0).SetCellValue(list[i].countyname ?? "");
row.CreateCell(1).SetCellValue(list[i].xftbzs);
row.CreateCell(2).SetCellValue(list[i].xfmj);
row.CreateCell(3).SetCellValue(list[i].xfgdmj);
row.CreateCell(4).SetCellValue(list[i].hfzs);
row.CreateCell(5).SetCellValue(list[i].hfmj);
row.CreateCell(6).SetCellValue(list[i].hfgdmj);
row.CreateCell(7).SetCellValue(list[i].wfzs);
row.CreateCell(8).SetCellValue(list[i].wfmj);
row.CreateCell(9).SetCellValue(list[i].wfgdmj);
row.CreateCell(10).SetCellValue(list[i].fnhzs);
row.CreateCell(11).SetCellValue(list[i].fnhmj);
row.CreateCell(12).SetCellValue(list[i].fnhgdmj);
row.CreateCell(13).SetCellValue(list[i].flhzs);
row.CreateCell(14).SetCellValue(list[i].flhmj);
row.CreateCell(15).SetCellValue(list[i].flhgdmj);
row.CreateCell(16).SetCellValue(list[i].qtzs);
row.CreateCell(17).SetCellValue(list[i].qtmj);
row.CreateCell(18).SetCellValue(list[i].qtgdmj);
row.CreateCell(19).SetCellValue(list[i].bbsxzs);
row.CreateCell(20).SetCellValue(list[i].bbsxmj);
row.CreateCell(21).SetCellValue(list[i].bbsxgdmj);
row.CreateCell(22).SetCellValue(list[i].cczs);
row.CreateCell(23).SetCellValue(list[i].ccmj);
row.CreateCell(24).SetCellValue(list[i].ccgdmj);
row.CreateCell(25).SetCellValue(list[i].hshxzwfgdzs);
row.CreateCell(26).SetCellValue(list[i].hshxzwfgdgdmj);
row.CreateCell(27).SetCellValue(list[i].zghsywfgdzs);
row.CreateCell(28).SetCellValue(list[i].zghsywfgdgdmj);
SetCellStyle(row, contentStyle);
}
#endregion
response.Result = new MemoryStream();
workbook.Write(response.Result);
response.Result.Position = 0;
workbook.Close();
response.Code = 200;
response.Message = "获取成功";
}
catch (Exception ex)
{
response.Code = 500;
response.Message = ex.Message;
}
return response;
}
////导出简易表1
//public Response<MemoryStream> CaseOffenceSimpleToExcel(DateTime startTime, DateTime endTime)
//{
// Response<MemoryStream> response = new Response<MemoryStream>();
// try
// {
// var list = CaseOffence(startTime, endTime).Result;
// HSSFWorkbook workbook = new HSSFWorkbook();
// ISheet sheet = workbook.CreateSheet("Sheet1");
// #region 样式设置
// ICellStyle CreateCellStyle(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign, VerticalAlignment vAlign, bool bold = false)
// {
// IFont font = wb.CreateFont();
// font.FontName = fontName;
// font.FontHeightInPoints = fontHeight;
// font.IsBold = bold;
// ICellStyle style = wb.CreateCellStyle();
// style.BorderBottom = BorderStyle.Thin;
// style.BorderLeft = BorderStyle.Thin;
// style.BorderRight = BorderStyle.Thin;
// style.BorderTop = BorderStyle.Thin;
// style.Alignment = hAlign;
// style.VerticalAlignment = vAlign;
// style.SetFont(font);
// style.WrapText = true;
// return style;
// }
// ICellStyle CreateCellStyle2(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign, VerticalAlignment vAlign, bool bold = false)
// {
// IFont font = wb.CreateFont();
// font.FontName = fontName;
// font.FontHeightInPoints = fontHeight;
// font.IsBold = bold;
// ICellStyle style = wb.CreateCellStyle();
// style.Alignment = hAlign;
// style.VerticalAlignment = vAlign;
// style.SetFont(font);
// style.WrapText = true;
// return style;
// }
// // 创建右对齐样式
// ICellStyle rightAlignStyle = workbook.CreateCellStyle();
// rightAlignStyle.Alignment = HorizontalAlignment.Right; // 设置右对齐
// rightAlignStyle.VerticalAlignment = VerticalAlignment.Center;
// IFont font = workbook.CreateFont();
// font.FontName = "宋体";
// font.FontHeightInPoints = 12;
// rightAlignStyle.SetFont(font);
// rightAlignStyle.WrapText = true;
// //第二个sheet右对齐样式
// ICellStyle rightAlignStyle2 = workbook.CreateCellStyle();
// rightAlignStyle2.Alignment = HorizontalAlignment.Right; // 设置右对齐
// rightAlignStyle2.VerticalAlignment = VerticalAlignment.Center;
// IFont font1 = workbook.CreateFont();
// font1.FontName = "宋体";
// font1.FontHeightInPoints = 9;
// rightAlignStyle2.SetFont(font1);
// rightAlignStyle2.WrapText = true;
// ICellStyle contentStyle = CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
// ICellStyle titleStyle = CreateCellStyle2(workbook, 10, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
// ICellStyle headerStyle1 = CreateCellStyle2(workbook, 18, "方正小标宋简体", HorizontalAlignment.Center, VerticalAlignment.Center);
// ICellStyle headerStyle2 = CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Right, VerticalAlignment.Center);
// ICellStyle headerStyle3 = CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
// //第二个sheet
// ICellStyle contentStyle22 = CreateCellStyle(workbook, 12, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
// ICellStyle titleStyle2 = CreateCellStyle2(workbook, 9, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
// ICellStyle headerStyle21 = CreateCellStyle2(workbook, 18, "方正小标宋简体", HorizontalAlignment.Center, VerticalAlignment.Center);
// ICellStyle headerStyle23 = CreateCellStyle(workbook, 12, "黑体", HorizontalAlignment.Center, VerticalAlignment.Center);
// ICellStyle beizhuStyle21 = CreateCellStyle2(workbook, 9, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
// #endregion
// #region 第一个sheet
// #region 创建表头
// IRow CreateRowWithHeight(ISheet sht, int rowIndex, float heightInPoints)
// {
// IRow row = sht.CreateRow(rowIndex);
// row.HeightInPoints = heightInPoints;
// return row;
// }
// void SetCellStyle(IRow row, ICellStyle style)
// {
// foreach (NPOI.SS.UserModel.ICell cell in row.Cells)
// {
// cell.CellStyle = style;
// }
// }
// IRow row0 = CreateRowWithHeight(sheet, 1, 30);
// row0.CreateCell(0).SetCellValue($"{startTime.Year}年{startTime.Month}-{endTime.Month}月土地卫片新增违法占用等地情况统计表");
// for (int k = 1; k < 4; k++) row0.CreateCell(k);
// IRow row1 = CreateRowWithHeight(sheet, 2, 15);
// row1.CreateCell(0).SetCellValue("统计时间:" + DateTime.Now.ToString("M月d日HH:mm"));
// row1.CreateCell(1);
// row1.CreateCell(2);
// row1.CreateCell(3).SetCellValue("单位:亩");
// //for (int k = 1; k < 4; k++) row1.CreateCell(k);
// IRow row2 = CreateRowWithHeight(sheet, 3, 30);
// row2.CreateCell(0).SetCellValue("序号");
// row2.CreateCell(1).SetCellValue("县区");
// row2.CreateCell(2).SetCellValue("宗数");
// row2.CreateCell(3).SetCellValue("剩余违法耕地");
// // 设置样式
// SetCellStyle(row0, headerStyle1);
// SetCellStyle(row1, titleStyle);
// SetCellStyle(row2, headerStyle3);
// row1.Cells[3].CellStyle = rightAlignStyle;
// // 合并单元格
// sheet.AddMergedRegion(new CellRangeAddress(1, 1, 0, 3)); // 合并标题行
// sheet.AddMergedRegion(new CellRangeAddress(2, 2, 0, 1));
// // 设置列宽
// int[] normalColumns = { 1, 2 };
// foreach (var index in normalColumns) sheet.SetColumnWidth(index, 20 * 256); // 设置列宽
// sheet.SetColumnWidth(0, 12 * 256); // 设置列宽
// sheet.SetColumnWidth(3, 30 * 256); // 设置列宽
// #endregion
// #region 填充数据
// for (int i = 0; i < list.Count-1; i++)
// {
// var rowIndex = i + 4; // 数据从第5行开始
// var row = CreateRowWithHeight(sheet, rowIndex, 30);
// row.CreateCell(0).SetCellValue(i + 1);
// row.CreateCell(1).SetCellValue(list[i].countyname ?? "");
// row.CreateCell(2).SetCellValue(list[i].zghsywfgdzs);
// row.CreateCell(3).SetCellValue(list[i].zghsywfgdgdmj);
// SetCellStyle(row, contentStyle);
// }
// //创建总计行
// var rowzj1 = CreateRowWithHeight(sheet, list.Count + 3, 34);
// sheet.AddMergedRegion(new CellRangeAddress(list.Count + 3, list.Count + 3, 0, 1));
// rowzj1.CreateCell(0).SetCellValue("总计");
// rowzj1.CreateCell(1);
// rowzj1.CreateCell(2).SetCellValue(list[list.Count - 1].zghsywfgdzs);
// rowzj1.CreateCell(3).SetCellValue(list[list.Count - 1].zghsywfgdgdmj);
// SetCellStyle(rowzj1, contentStyle);
// #endregion
// #endregion
// #region 第二个sheet
// ISheet sheet2 = workbook.CreateSheet("Sheet2");
// #region 创建表头
// IRow row20 = CreateRowWithHeight(sheet2, 0, 38);
// row20.CreateCell(0).SetCellValue("无人机发现违法行为统计表");
// for (int k = 1; k < 8; k++) row0.CreateCell(k);
// IRow row21 = CreateRowWithHeight(sheet2, 1, 27);
// row21.CreateCell(0).SetCellValue("统计时间:" + DateTime.Now.ToString("yyyy年M月d日HH:mm"));
// row21.CreateCell(1);
// row21.CreateCell(2);
// row21.CreateCell(3);
// row21.CreateCell(4);
// row21.CreateCell(5);
// row21.CreateCell(6);
// row21.CreateCell(7).SetCellValue("单位:个、亩");
// IRow row22 = CreateRowWithHeight(sheet2, 2, 34);
// row22.CreateCell(0).SetCellValue("序号");
// row22.CreateCell(1).SetCellValue("县区");
// row22.CreateCell(2).SetCellValue("下发图斑");
// row22.CreateCell(3);
// row22.CreateCell(4).SetCellValue("核实后新增违法耕地");
// row22.CreateCell(5);
// row22.CreateCell(6).SetCellValue("整改后剩余违法耕地");
// row22.CreateCell(7);
// IRow row23 = CreateRowWithHeight(sheet2, 3, 34);
// row23.CreateCell(0).SetCellValue("序号");
// row23.CreateCell(1).SetCellValue("县区");
// row23.CreateCell(2).SetCellValue("宗数");
// row23.CreateCell(3).SetCellValue("耕地面积");
// row23.CreateCell(4).SetCellValue("宗数");
// row23.CreateCell(5).SetCellValue("耕地面积");
// row23.CreateCell(6).SetCellValue("宗数");
// row23.CreateCell(7).SetCellValue("耕地面积");
// // 设置样式
// SetCellStyle(row20, headerStyle21);
// SetCellStyle(row21, titleStyle2);
// SetCellStyle(row22, headerStyle23);
// SetCellStyle(row23, headerStyle23);
// row21.Cells[7].CellStyle = rightAlignStyle2;
// // 合并单元格
// sheet2.AddMergedRegion(new CellRangeAddress(0, 0, 0, 7)); // 合并标题行
// sheet2.AddMergedRegion(new CellRangeAddress(1, 1, 0, 2));
// sheet2.AddMergedRegion(new CellRangeAddress(2, 2, 2, 3));
// sheet2.AddMergedRegion(new CellRangeAddress(2, 2, 4, 5));
// sheet2.AddMergedRegion(new CellRangeAddress(2, 2, 6, 7));
// sheet2.AddMergedRegion(new CellRangeAddress(2, 3, 0, 0));
// sheet2.AddMergedRegion(new CellRangeAddress(2, 3, 1, 1));
// // 设置列宽
// int[] normalColumns2 = { 2,3,4,5,6,7 };
// foreach (var index in normalColumns2) sheet2.SetColumnWidth(index, 11 * 256); // 设置列宽
// sheet2.SetColumnWidth(0, 6 * 256); // 设置列宽
// sheet2.SetColumnWidth(1, 10 * 256); // 设置列宽
// #endregion
// #region 填充数据
// for (int i = 0; i < list.Count - 1; i++)
// {
// var rowIndex = i + 4; // 数据从第5行开始
// var row = CreateRowWithHeight(sheet2, rowIndex, 34);
// row.CreateCell(0).SetCellValue(i + 1);
// row.CreateCell(1).SetCellValue(list[i].countyname ?? "");
// row.CreateCell(2).SetCellValue(list[i].xftbzs);
// row.CreateCell(3).SetCellValue(list[i].xfgdmj);
// row.CreateCell(4).SetCellValue(list[i].hshxzwfgdzs);
// row.CreateCell(5).SetCellValue(list[i].hshxzwfgdgdmj);
// row.CreateCell(6).SetCellValue(list[i].zghsywfgdzs);
// row.CreateCell(7).SetCellValue(list[i].zghsywfgdgdmj);
// SetCellStyle(row, contentStyle22);
// }
// //创建总计行
// var rowzj = CreateRowWithHeight(sheet2, list.Count + 3, 34);
// sheet2.AddMergedRegion(new CellRangeAddress(list.Count + 3, list.Count + 3, 0, 1));
// rowzj.CreateCell(0).SetCellValue("总计");
// rowzj.CreateCell(1);
// rowzj.CreateCell(2).SetCellValue(list[list.Count - 1].xftbzs);
// rowzj.CreateCell(3).SetCellValue(list[list.Count - 1].xfgdmj);
// rowzj.CreateCell(4).SetCellValue(list[list.Count - 1].hshxzwfgdzs);
// rowzj.CreateCell(5).SetCellValue(list[list.Count - 1].hshxzwfgdgdmj);
// rowzj.CreateCell(6).SetCellValue(list[list.Count - 1].zghsywfgdzs);
// rowzj.CreateCell(7).SetCellValue(list[list.Count - 1].zghsywfgdgdmj);
// SetCellStyle(rowzj, contentStyle22);
// //创建备注行
// var rowbz = CreateRowWithHeight(sheet2, list.Count + 4, 15);
// sheet2.AddMergedRegion(new CellRangeAddress(list.Count + 4, list.Count + 4, 0, 7));
// rowbz.CreateCell(0).SetCellValue("备注:此统计表以“整改后剩余违法耕地”耕地面积进行排序");
// rowbz.CreateCell(1);
// rowbz.CreateCell(2);
// rowbz.CreateCell(3);
// rowbz.CreateCell(4);
// rowbz.CreateCell(5);
// rowbz.CreateCell(6);
// rowbz.CreateCell(7);
// SetCellStyle(rowbz, beizhuStyle21);
// #endregion
// #endregion
// response.Result = new MemoryStream();
// workbook.Write(response.Result);
// response.Result.Position = 0;
// workbook.Close();
// response.Code = 200;
// response.Message = "获取成功";
// }
// catch (Exception ex)
// {
// response.Code = 500;
// response.Message = ex.Message;
// }
// return response;
//}
//导出简易表1
public Response<MemoryStream> CaseOffenceSimpleToExcel(DateTime startTime, DateTime endTime,string tubanlaiyuan)
{
Response<MemoryStream> response = new Response<MemoryStream>();
try
{
var list = CaseOffence(startTime, endTime,tubanlaiyuan).Result;
HSSFWorkbook workbook = new HSSFWorkbook();
ISheet sheet = workbook.CreateSheet("Sheet1");
#region 样式设置
ICellStyle CreateCellStyle(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign,
VerticalAlignment vAlign, bool bold = false)
{
IFont font = wb.CreateFont();
font.FontName = fontName;
font.FontHeightInPoints = fontHeight;
font.IsBold = bold;
ICellStyle style = wb.CreateCellStyle();
style.BorderBottom = BorderStyle.Thin;
style.BorderLeft = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
style.BorderTop = BorderStyle.Thin;
style.Alignment = hAlign;
style.VerticalAlignment = vAlign;
style.SetFont(font);
style.WrapText = true;
return style;
}
ICellStyle CreateCellStyle2(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign,
VerticalAlignment vAlign, bool bold = false)
{
IFont font = wb.CreateFont();
font.FontName = fontName;
font.FontHeightInPoints = fontHeight;
font.IsBold = bold;
ICellStyle style = wb.CreateCellStyle();
style.Alignment = hAlign;
style.VerticalAlignment = vAlign;
style.SetFont(font);
style.WrapText = true;
return style;
}
// 创建右对齐样式
ICellStyle rightAlignStyle = workbook.CreateCellStyle();
rightAlignStyle.Alignment = HorizontalAlignment.Right; // 设置右对齐
rightAlignStyle.VerticalAlignment = VerticalAlignment.Center;
IFont font = workbook.CreateFont();
font.FontName = "宋体";
font.FontHeightInPoints = 12;
rightAlignStyle.SetFont(font);
rightAlignStyle.WrapText = true;
ICellStyle contentStyle =
CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
ICellStyle titleStyle =
CreateCellStyle2(workbook, 10, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
ICellStyle headerStyle1 = CreateCellStyle2(workbook, 18, "方正小标宋简体", HorizontalAlignment.Center,
VerticalAlignment.Center);
ICellStyle headerStyle2 =
CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Right, VerticalAlignment.Center);
ICellStyle headerStyle3 = CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Center,
VerticalAlignment.Center, true);
#endregion
#region 第一个sheet
#region 创建表头
IRow CreateRowWithHeight(ISheet sht, int rowIndex, float heightInPoints)
{
IRow row = sht.CreateRow(rowIndex);
row.HeightInPoints = heightInPoints;
return row;
}
void SetCellStyle(IRow row, ICellStyle style)
{
foreach (ICell cell in row.Cells)
{
cell.CellStyle = style;
}
}
IRow row0 = CreateRowWithHeight(sheet, 1, 38);
row0.CreateCell(0).SetCellValue($"{startTime.Year}年{startTime.Month}-{endTime.Month}月土地卫片新增违法占用耕地情况统计表");
for (int k = 1; k < 4; k++) row0.CreateCell(k);
IRow row1 = CreateRowWithHeight(sheet, 2, 15);
row1.CreateCell(0).SetCellValue("统计时间:" + DateTime.Now.ToString("M月d日HH:mm"));
row1.CreateCell(1);
row1.CreateCell(2);
row1.CreateCell(3).SetCellValue("单位:亩");
//for (int k = 1; k < 4; k++) row1.CreateCell(k);
IRow row2 = CreateRowWithHeight(sheet, 3, 34);
row2.CreateCell(0).SetCellValue("序号");
row2.CreateCell(1).SetCellValue("县区");
row2.CreateCell(2).SetCellValue("宗数");
row2.CreateCell(3).SetCellValue("剩余违法耕地");
// 设置样式
SetCellStyle(row0, headerStyle1);
SetCellStyle(row1, titleStyle);
SetCellStyle(row2, headerStyle3);
row1.Cells[3].CellStyle = rightAlignStyle;
// 合并单元格
sheet.AddMergedRegion(new CellRangeAddress(1, 1, 0, 3)); // 合并标题行
sheet.AddMergedRegion(new CellRangeAddress(2, 2, 0, 1));
// 设置列宽
int[] normalColumns = { 2, 3 };
foreach (var index in normalColumns) sheet.SetColumnWidth(index, 30 * 256); // 设置列宽
sheet.SetColumnWidth(0, 12 * 256); // 设置列宽
sheet.SetColumnWidth(1, 20 * 256); // 设置列宽
#endregion
#region 填充数据
for (int i = 0; i < list.Count - 1; i++)
{
var rowIndex = i + 4; // 数据从第5行开始
var row = CreateRowWithHeight(sheet, rowIndex, 34);
row.CreateCell(0).SetCellValue(i + 1);
row.CreateCell(1).SetCellValue(list[i].countyname ?? "");
row.CreateCell(2).SetCellValue(list[i].zghsywfgdzs);
row.CreateCell(3).SetCellValue(list[i].zghsywfgdgdmj);
SetCellStyle(row, contentStyle);
}
//创建总计行
var rowzj1 = CreateRowWithHeight(sheet, list.Count + 3, 34);
sheet.AddMergedRegion(new CellRangeAddress(list.Count + 3, list.Count + 3, 0, 1));
rowzj1.CreateCell(0).SetCellValue("总计");
rowzj1.CreateCell(1);
rowzj1.CreateCell(2).SetCellValue(list[list.Count - 1].zghsywfgdzs);
rowzj1.CreateCell(3).SetCellValue(list[list.Count - 1].zghsywfgdgdmj);
SetCellStyle(rowzj1, contentStyle);
#endregion
#endregion
response.Result = new MemoryStream();
workbook.Write(response.Result);
response.Result.Position = 0;
workbook.Close();
response.Code = 200;
response.Message = "获取成功";
}
catch (Exception ex)
{
response.Code = 500;
response.Message = ex.Message;
}
return response;
}
//导出简易表2
public Response<MemoryStream> CaseOffenceSimpleToExcel2(DateTime startTime, DateTime endTime)
{
Response<MemoryStream> response = new Response<MemoryStream>();
try
{
var list = CaseOffence(startTime, endTime,null).Result;
HSSFWorkbook workbook = new HSSFWorkbook();
#region 样式设置
ICellStyle CreateCellStyle(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign,
VerticalAlignment vAlign, bool bold = false)
{
IFont font = wb.CreateFont();
font.FontName = fontName;
font.FontHeightInPoints = fontHeight;
font.IsBold = bold;
ICellStyle style = wb.CreateCellStyle();
style.BorderBottom = BorderStyle.Thin;
style.BorderLeft = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
style.BorderTop = BorderStyle.Thin;
style.Alignment = hAlign;
style.VerticalAlignment = vAlign;
style.SetFont(font);
style.WrapText = true;
return style;
}
ICellStyle CreateCellStyle2(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign,
VerticalAlignment vAlign, bool bold = false)
{
IFont font = wb.CreateFont();
font.FontName = fontName;
font.FontHeightInPoints = fontHeight;
font.IsBold = bold;
ICellStyle style = wb.CreateCellStyle();
style.Alignment = hAlign;
style.VerticalAlignment = vAlign;
style.SetFont(font);
style.WrapText = true;
return style;
}
// 创建右对齐样式
ICellStyle rightAlignStyle = workbook.CreateCellStyle();
rightAlignStyle.Alignment = HorizontalAlignment.Right; // 设置右对齐
rightAlignStyle.VerticalAlignment = VerticalAlignment.Center;
IFont font = workbook.CreateFont();
font.FontName = "宋体";
font.FontHeightInPoints = 12;
rightAlignStyle.SetFont(font);
rightAlignStyle.WrapText = true;
//第二个sheet右对齐样式
ICellStyle rightAlignStyle2 = workbook.CreateCellStyle();
rightAlignStyle2.Alignment = HorizontalAlignment.Right; // 设置右对齐
rightAlignStyle2.VerticalAlignment = VerticalAlignment.Center;
IFont font1 = workbook.CreateFont();
font1.FontName = "宋体";
font1.FontHeightInPoints = 9;
rightAlignStyle2.SetFont(font1);
rightAlignStyle2.WrapText = true;
ICellStyle contentStyle =
CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
ICellStyle titleStyle =
CreateCellStyle2(workbook, 10, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
ICellStyle headerStyle1 = CreateCellStyle2(workbook, 18, "方正小标宋简体", HorizontalAlignment.Center,
VerticalAlignment.Center);
ICellStyle headerStyle2 =
CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Right, VerticalAlignment.Center);
ICellStyle headerStyle3 =
CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
//第二个sheet
ICellStyle contentStyle22 =
CreateCellStyle(workbook, 12, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
ICellStyle titleStyle2 =
CreateCellStyle2(workbook, 9, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
ICellStyle headerStyle21 = CreateCellStyle2(workbook, 18, "方正小标宋简体", HorizontalAlignment.Center,
VerticalAlignment.Center);
ICellStyle headerStyle23 =
CreateCellStyle(workbook, 12, "黑体", HorizontalAlignment.Center, VerticalAlignment.Center);
ICellStyle beizhuStyle21 =
CreateCellStyle2(workbook, 9, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
#endregion
#region 第一个sheet
#region 创建表头
IRow CreateRowWithHeight(ISheet sht, int rowIndex, float heightInPoints)
{
IRow row = sht.CreateRow(rowIndex);
row.HeightInPoints = heightInPoints;
return row;
}
void SetCellStyle(IRow row, ICellStyle style)
{
foreach (ICell cell in row.Cells)
{
cell.CellStyle = style;
}
}
#endregion
#endregion
#region 第二个sheet
ISheet sheet2 = workbook.CreateSheet("Sheet2");
#region 创建表头
IRow row20 = CreateRowWithHeight(sheet2, 0, 38);
row20.CreateCell(0).SetCellValue("无人机全域巡查违法用地情况统计表");
//for (int k = 1; k < 8; k++) row20.CreateCell(k);
IRow row21 = CreateRowWithHeight(sheet2, 1, 27);
row21.CreateCell(0).SetCellValue("统计时间:" + DateTime.Now.ToString("yyyy年M月d日HH:mm"));
row21.CreateCell(1);
row21.CreateCell(2);
row21.CreateCell(3);
row21.CreateCell(4);
row21.CreateCell(5);
row21.CreateCell(6);
row21.CreateCell(7).SetCellValue("单位:个、亩");
IRow row22 = CreateRowWithHeight(sheet2, 2, 34);
row22.CreateCell(0).SetCellValue("序号");
row22.CreateCell(1).SetCellValue("县区");
row22.CreateCell(2).SetCellValue("下发图斑");
row22.CreateCell(3);
row22.CreateCell(4).SetCellValue("核实后新增违法耕地");
row22.CreateCell(5);
row22.CreateCell(6).SetCellValue("整改后剩余违法耕地");
row22.CreateCell(7);
IRow row23 = CreateRowWithHeight(sheet2, 3, 34);
row23.CreateCell(0).SetCellValue("序号");
row23.CreateCell(1).SetCellValue("县区");
row23.CreateCell(2).SetCellValue("宗数");
row23.CreateCell(3).SetCellValue("耕地面积");
row23.CreateCell(4).SetCellValue("宗数");
row23.CreateCell(5).SetCellValue("耕地面积");
row23.CreateCell(6).SetCellValue("宗数");
row23.CreateCell(7).SetCellValue("耕地面积");
// 设置样式
SetCellStyle(row20, headerStyle21);
SetCellStyle(row21, titleStyle2);
SetCellStyle(row22, headerStyle23);
SetCellStyle(row23, headerStyle23);
row21.Cells[7].CellStyle = rightAlignStyle2;
// 合并单元格
sheet2.AddMergedRegion(new CellRangeAddress(0, 0, 0, 7)); // 合并标题行
sheet2.AddMergedRegion(new CellRangeAddress(1, 1, 0, 2));
sheet2.AddMergedRegion(new CellRangeAddress(2, 2, 2, 3));
sheet2.AddMergedRegion(new CellRangeAddress(2, 2, 4, 5));
sheet2.AddMergedRegion(new CellRangeAddress(2, 2, 6, 7));
sheet2.AddMergedRegion(new CellRangeAddress(2, 3, 0, 0));
sheet2.AddMergedRegion(new CellRangeAddress(2, 3, 1, 1));
// 设置列宽
int[] normalColumns2 = { 2, 3, 4, 5, 6, 7 };
foreach (var index in normalColumns2) sheet2.SetColumnWidth(index, 11 * 256); // 设置列宽
sheet2.SetColumnWidth(0, 6 * 256); // 设置列宽
sheet2.SetColumnWidth(1, 10 * 256); // 设置列宽
#endregion
#region 填充数据
for (int i = 0; i < list.Count - 1; i++)
{
var rowIndex = i + 4; // 数据从第5行开始
var row = CreateRowWithHeight(sheet2, rowIndex, 34);
row.CreateCell(0).SetCellValue(i + 1);
row.CreateCell(1).SetCellValue(list[i].countyname ?? "");
row.CreateCell(2).SetCellValue(list[i].xftbzs);
row.CreateCell(3).SetCellValue(list[i].xfgdmj);
row.CreateCell(4).SetCellValue(list[i].hshxzwfgdzs);
row.CreateCell(5).SetCellValue(list[i].hshxzwfgdgdmj);
row.CreateCell(6).SetCellValue(list[i].zghsywfgdzs);
row.CreateCell(7).SetCellValue(list[i].zghsywfgdgdmj);
SetCellStyle(row, contentStyle22);
}
//创建总计行
var rowzj = CreateRowWithHeight(sheet2, list.Count + 3, 34);
sheet2.AddMergedRegion(new CellRangeAddress(list.Count + 3, list.Count + 3, 0, 1));
rowzj.CreateCell(0).SetCellValue("总计");
rowzj.CreateCell(1);
rowzj.CreateCell(2).SetCellValue(list[list.Count - 1].xftbzs);
rowzj.CreateCell(3).SetCellValue(list[list.Count - 1].xfgdmj);
rowzj.CreateCell(4).SetCellValue(list[list.Count - 1].hshxzwfgdzs);
rowzj.CreateCell(5).SetCellValue(list[list.Count - 1].hshxzwfgdgdmj);
rowzj.CreateCell(6).SetCellValue(list[list.Count - 1].zghsywfgdzs);
rowzj.CreateCell(7).SetCellValue(list[list.Count - 1].zghsywfgdgdmj);
SetCellStyle(rowzj, contentStyle22);
//创建备注行
var rowbz = CreateRowWithHeight(sheet2, list.Count + 4, 15);
sheet2.AddMergedRegion(new CellRangeAddress(list.Count + 4, list.Count + 4, 0, 7));
rowbz.CreateCell(0).SetCellValue("备注:此统计表以“整改后剩余违法耕地”耕地面积进行排序");
rowbz.CreateCell(1);
rowbz.CreateCell(2);
rowbz.CreateCell(3);
rowbz.CreateCell(4);
rowbz.CreateCell(5);
rowbz.CreateCell(6);
rowbz.CreateCell(7);
SetCellStyle(rowbz, beizhuStyle21);
#endregion
#endregion
response.Result = new MemoryStream();
workbook.Write(response.Result);
response.Result.Position = 0;
workbook.Close();
response.Code = 200;
response.Message = "获取成功";
}
catch (Exception ex)
{
response.Code = 500;
response.Message = ex.Message;
}
return response;
}
public Response<List<DroneCaseByTypeResp>> ExprotCaseListByType(QueryCaseOffencetReq req)
{
var authStrategyContext = _auth.GetCurrentUser();
var user = authStrategyContext.User;
if (user == null)
{
return new Response<List<DroneCaseByTypeResp>>
{
Code = 401,
Message = "Unauthorized"
};
}
RefAsync<int> totalcount = 0;
string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=@UserId";
int level = client.Ado.GetInt(sql1, new { UserId = user.Id });
List<string> deplist = new List<string>();
if (level != 0 && user.Id != -1)
{
var departs = client.Queryable<SysUserOrg>().Where(r => r.UserId == user.Id).ToList();
foreach (var item in departs)
{
var list = client.Queryable<SysOrg>().ToChildList(it => it.ParentId, item.OrgId)
?.Select(it => it.Id.ToString()).ToList();
deplist = deplist.Union(list).ToList();
}
}
//var casetype = client.Queryable<SysDataItemDetail>()
// .Where(r => r.ItemCode == "DRONE_CASE_TYPE" && r.ItemValue == "DRONE_CASE_TYPE_NYD")
// .First()?.ItemDetailId;
//var casetype = "农用地";
string sqlpart = BuildSqlPart(req.AreaId, level, deplist);
string sql =
$"SELECT \"Id\", countyname, streetname,communityname,geomid,remark,(date_trunc('second', synchronoustime))::text as synchronoustime,picihao,tubanlaiyuan, case_no AS caseNo, case_description,xjshenhejieguo,xianjiyijian,verifyuser,verifytime,sjshenhejieguo,shijiyijian,hexiaoren,(date_trunc('second', hexiaotime))::text as hexiaotime, " +
$"typeid, typename,jieshou_people,jieshou_time,pandingyijushuoming,examiner_name,examine_time,transactor_name,transact_time, createtime AS identificationTime, " +
$"COALESCE(area::numeric, 0) AS area,case when is_illegal=1 \r\n then actual_use_to when is_illegal=2 then qita_use_to end as qtsjyt, COALESCE(nongyongdi_area::numeric, 0) AS nongyongdiArea, COALESCE(yongjiujibennongtian_area::numeric, 0) AS yongnongArea, COALESCE(gengdi_area::numeric, 0) AS gengdiArea, CASE WHEN is_illegal = 0 THEN '合法' WHEN is_illegal = 1 THEN '违法' WHEN is_illegal = 2 THEN '其他' END AS isIllegal, " +
$"handle_status_name AS handleStatusName, xiangmumc, xiangmuzhuti, CASE WHEN weifaleixing = 0 THEN '非农化违法用地' WHEN weifaleixing = 1 THEN '非粮化违法用地' END AS weifaleixing, " +
$"illegal_contact AS illegalContact, illegal_shenfenzhenghao AS illegalShenfenzhenghao, " +
$"CASE WHEN CAST(measure_name AS numeric) = 0 THEN '拆除复耕' WHEN CAST(measure_name AS numeric) = 1 THEN '补办手续' END AS measureName, " +
$"CASE WHEN result_name = '0' THEN '立案' WHEN result_name = '1' THEN '非立案' WHEN result_name = '2' THEN '移交其他部门处理' WHEN result_name = '3' THEN '未处理' END AS resultName, " +
$"registr_number AS registrNumber " +
$"FROM drone_caseinfo_xcsj WHERE is_closed = 0 and synchronoustime >= @StartTime and synchronoustime <= @EndTime {sqlpart}";
var caseList =
client.Ado.SqlQuery<DroneCaseByTypeResp>(sql,
new { StartTime = req.StartTime, EndTime = req.EndTime, @AreaId = req.AreaId });
caseList = FilterCasesByType(req.CaseType, caseList);
return new Response<List<DroneCaseByTypeResp>> { Result = caseList };
}
private string BuildSqlPart(string areaId, int level, List<string> deplist)
{
if (!string.IsNullOrEmpty(areaId) && areaId != "0")
{
if (level == 0)
{
return $" AND countyid = @AreaId";
}
if (level == 1)
{
return $" AND streetid = @AreaId";
}
}
if (deplist.Any())
{
string orgs = string.Join(",", deplist.Select(dep => $"'{dep}'"));
return $" AND (countyid IN ({orgs}) OR streetid IN ({orgs}) OR communityid IN ({orgs}))";
}
return string.Empty;
}
private List<DroneCaseByTypeResp> FilterCasesByType(int caseType, List<DroneCaseByTypeResp> caseList)
{
switch (caseType)
{
case 2:
return caseList.Where(r => r.isIllegal == "合法" && r.handleStatusName == "已归档").ToList();
case 3:
return caseList.Where(r =>
(r.isIllegal == "违法" && r.handleStatusName == "已归档") || r.handleStatusName != "已归档").ToList();
case 4:
return caseList.Where(r => r.isIllegal == "其他" && r.handleStatusName == "已归档").ToList();
case 5:
return caseList.Where(r => r.weifaleixing == "非粮化违法用地" && r.handleStatusName == "已归档").ToList();
case 6:
return caseList.Where(r => r.measureName == "补办手续" && r.handleStatusName == "已归档").ToList();
case 7:
//r.measure_name == "0" && r.handle_status_id == 5 && r.weifaleixing == 0 && r.is_illegal == 1
return caseList.Where(r =>
r.measureName == "拆除复耕" && r.handleStatusName == "已归档" && r.weifaleixing == "非农化违法用地").ToList();
case 8:
//((r.is_illegal == 1 && r.handle_status_id == 5) || r.handle_status_id != 5)&&
//!(r.weifaleixing == 1 && r.handle_status_id == 5 && r.is_illegal == 1) &&
//!((string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00") && r.handle_status_id == 5
// && (r.handle_status_id != 5 || (r.is_illegal == 1 && r.handle_status_id == 5))));
return caseList = caseList.Where(r =>
((r.isIllegal == "违法" && r.handleStatusName == "已归档") || r.handleStatusName != "已归档") &&
!(r.weifaleixing == "非粮化违法用地" && r.handleStatusName == "已归档") &&
!((r.gengdiArea == 0 && r.handleStatusName == "已归档") && (r.handleStatusName != "已归档" ||
(r.isIllegal == "违法" &&
r.handleStatusName == "已归档")))).ToList();
case 9:
// !((string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00") && r.handle_status_id == 5 && (r.handle_status_id != 5 || (r.is_illegal == 1 && r.handle_status_id == 5))) &&
return caseList = caseList.Where(r =>
((r.isIllegal == "违法" && r.handleStatusName == "已归档") || r.handleStatusName != "已归档") &&
!(r.weifaleixing == "非粮化违法用地" && r.handleStatusName == "已归档") &&
//!((r.gengdiArea == 0 && r.handleStatusName == "已归档") && (r.handleStatusName != "已归档" || (r.isIllegal == "违法" && r.handleStatusName == "已归档"))) &&
!(r.measureName == "补办手续" && r.handleStatusName == "已归档") &&
!(r.measureName == "拆除复耕" && r.handleStatusName == "已归档"))
.ToList();
case 10:
//&& r.is_illegal == 1 && r.handle_status_id == 5
//casesForCounty.Count(r => (r.weifaleixing == 0 && r.is_illegal == 1 && r.handle_status_id == 5) || r.handle_status_id != 5);
return caseList = caseList.Where(r =>
(r.weifaleixing == "非农化违法用地" && r.isIllegal == "违法" && r.handleStatusName == "已归档") ||
r.handleStatusName != "已归档").ToList();
default:
return caseList;
}
}
public Response<MemoryStream> ListToExcelByCaseType(List<DroneCaseByTypeResp> list, List<ModuleColumn> headers)
{
var response = new Response<MemoryStream>();
try
{
var workbook = new HSSFWorkbook();
var contentStyle = CreateCellStyle(workbook, false);
var headerStyle = CreateCellStyle(workbook, true);
int sheetCount = list.Count / 60000 + 1;
for (int k = 0; k < sheetCount; k++)
{
var sheet = workbook.CreateSheet("Sheet" + k);
CreateHeaderRow(sheet, headers, headerStyle);
var rowsToWrite = list.Skip(k * 60000).Take(60000).ToList();
FillSheetWithData(workbook, sheet, rowsToWrite, headers, contentStyle);
}
using (var ms = new MemoryStream())
{
workbook.Write(ms);
response.Result = new MemoryStream(ms.ToArray());
}
response.Code = 200;
response.Message = "获取成功";
}
catch (Exception ex)
{
response.Code = 500;
response.Message = ex.Message;
}
return response;
}
private ICellStyle CreateCellStyle(HSSFWorkbook workbook, bool isHeader)
{
var font = workbook.CreateFont();
font.FontName = "Microsoft YaHei";
font.FontHeightInPoints = 12;
if (isHeader)
{
font.Boldweight = (short)FontBoldWeight.Bold;
}
var style = workbook.CreateCellStyle();
style.BorderBottom = BorderStyle.Thin;
style.BorderLeft = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
style.BorderTop = BorderStyle.Thin;
style.Alignment = HorizontalAlignment.Center;
style.VerticalAlignment = VerticalAlignment.Center;
style.SetFont(font);
style.WrapText = true;
return style;
}
private void CreateHeaderRow(ISheet sheet, List<ModuleColumn> headers, ICellStyle headerStyle)
{
var rowHeader = sheet.CreateRow(0);
rowHeader.Height = 20 * 30;
for (int i = 0; i < headers.Count; i++)
{
var header = headers[i];
var cell = rowHeader.CreateCell(i);
cell.CellStyle = headerStyle;
cell.SetCellValue(header.value);
//sheet.SetColumnWidth(i, 20 * 350);
}
sheet.SetColumnWidth(0, 10 * 256);
sheet.SetColumnWidth(1, 18 * 256);
sheet.SetColumnWidth(2, 10 * 256);
sheet.SetColumnWidth(3, 28 * 256);
sheet.SetColumnWidth(4, 12 * 256);
sheet.SetColumnWidth(5, 12 * 256);
sheet.SetColumnWidth(6, 15 * 256);
sheet.SetColumnWidth(7, 52 * 256);
sheet.SetColumnWidth(8, 12 * 256);
sheet.SetColumnWidth(9, 24 * 256);
sheet.SetColumnWidth(10, 10 * 256);
sheet.SetColumnWidth(11, 12 * 256);
sheet.SetColumnWidth(12, 10 * 256);
sheet.SetColumnWidth(13, 10 * 256);
sheet.SetColumnWidth(14, 10 * 256);
sheet.SetColumnWidth(15, 10 * 256);
sheet.SetColumnWidth(16, 10 * 256);
sheet.SetColumnWidth(17, 24 * 256);
sheet.SetColumnWidth(18, 15 * 256);
sheet.SetColumnWidth(19, 12 * 256);
sheet.SetColumnWidth(20, 17 * 256);
sheet.SetColumnWidth(21, 17 * 256);
sheet.SetColumnWidth(22, 31 * 256);
sheet.SetColumnWidth(23, 10 * 256);
sheet.SetColumnWidth(24, 24 * 256);
sheet.SetColumnWidth(25, 10 * 256);
sheet.SetColumnWidth(26, 12 * 256);
sheet.SetColumnWidth(27, 24 * 256);
sheet.SetColumnWidth(28, 30 * 256);
sheet.SetColumnWidth(29, 30 * 256);
sheet.SetColumnWidth(30, 30 * 256);
sheet.SetColumnWidth(31, 14 * 256);
sheet.SetColumnWidth(32, 30 * 256);
sheet.SetColumnWidth(33, 30 * 256);
sheet.SetColumnWidth(34, 30 * 256);
sheet.SetColumnWidth(35, 14 * 256);
sheet.SetColumnWidth(36, 30 * 256);
sheet.SetColumnWidth(37, 30 * 256);
}
private void FillSheetWithData(HSSFWorkbook workbook, ISheet sheet, List<DroneCaseByTypeResp> list,
List<ModuleColumn> headers,
ICellStyle contentStyle)
{
// 创建一个数值格式的CellStyle
ICellStyle numericStyle = workbook.CreateCellStyle();
// 创建一个数据格式对象
IDataFormat dataFormat = workbook.CreateDataFormat();
var font = workbook.CreateFont();
font.FontName = "Microsoft YaHei";
font.FontHeightInPoints = 12;
// 设置单元格格式为数值型
numericStyle.DataFormat = dataFormat.GetFormat("0.00");
numericStyle.BorderBottom = BorderStyle.Thin;
numericStyle.BorderLeft = BorderStyle.Thin;
numericStyle.BorderRight = BorderStyle.Thin;
numericStyle.BorderTop = BorderStyle.Thin;
numericStyle.Alignment = HorizontalAlignment.Center;
numericStyle.VerticalAlignment = VerticalAlignment.Center;
numericStyle.SetFont(font);
for (int i = 0; i < list.Count; i++)
{
var item = list[i];
var dataRow = sheet.CreateRow(i + 1);
for (int j = 0; j < headers.Count; j++)
{
if (headers[j].key == "area" || headers[j].key == "gengdiArea" || headers[j].key == "yongnongArea" ||
headers[j].key == "nongyongdiArea")
{
var cell = dataRow.CreateCell(j);
cell.CellStyle = numericStyle;
var objValue = GetCellDoubleValue(item, headers[j].key);
cell.SetCellValue(objValue);
}
else
{
var cell = dataRow.CreateCell(j);
cell.CellStyle = contentStyle;
if (headers[j].key == "xuhao")
{
cell.SetCellValue(i + 1);
}
else
{
var objValue = GetCellValue(item, headers[j].key);
cell.SetCellValue(objValue);
}
}
}
}
}
private string GetCellValue(DroneCaseByTypeResp item, string key)
{
return key switch
{
"tubanlaiyuan" => item.tubanlaiyuan,
"picihao" => item.picihao,
"caseNo" => item.caseNo,
"countyname" => item.countyname,
"streetname" => item.streetname,
"case_description" => item.case_description,
"typename" => item.typename,
"synchronoustime" => item.synchronoustime == null
? ""
: item.synchronoustime.ToString("yyyy-MM-dd HH:mm:ss"),
//"area" => item.area,
//"gengdiArea" => item.gengdiArea,
//"yongnongArea" => item.yongnongArea,
"isillegal" => item.isIllegal,
"handleStatusName" => item.handleStatusName,
"xiangmumc" => item.xiangmumc,
"xiangmuzhuti" => item.xiangmuzhuti,
"weifaleixing" => item.weifaleixing,
"measureName" => item.measureName,
"communityname" => item.communityname,
"qtsjyt" => string.IsNullOrEmpty(item.qtsjyt) ? "" : SJYT(item.qtsjyt),
"jieshou_people" => item.jieshou_people,
"jieshou_time" => item.jieshou_time == null ? "" :
DateTime.Parse(item.jieshou_time) == DateTime.MinValue ? string.Empty :
DateTime.Parse(item.jieshou_time).ToString("yyyy-MM-dd HH:mm:ss"),
"pandingyijushuoming" => item.pandingyijushuoming,
"examiner_name" => item.examiner_name,
"examine_time" => item.examine_time == DateTime.MinValue
? string.Empty
: item.examine_time.ToString("yyyy-MM-dd HH:mm:ss"),
"transactor_name" => item.transactor_name,
"transact_time" => item.transact_time == DateTime.MinValue
? string.Empty
: item.transact_time.ToString("yyyy-MM-dd HH:mm:ss"),
"remark" => item.remark,
"xjshenhejieguo" => item.xjshenhejieguo,
"xianjiyijian" => item.xianjiyijian,
"verifyuser" => item.verifyuser,
"verifytime" => item.verifytime == null ? "" :
DateTime.Parse(item.verifytime) == DateTime.MinValue ? string.Empty :
DateTime.Parse(item.verifytime).ToString("yyyy-MM-dd HH:mm:ss"),
"sjshenhejieguo" => item.sjshenhejieguo,
"shijiyijian" => item.shijiyijian,
"hexiaoren" => item.hexiaoren,
"hexiaotime" => item.hexiaotime == null ? "" : item.hexiaotime.ToString("yyyy-MM-dd HH:mm:ss"),
//item.hexiaotime == null ? "" : DateTime.Parse(item.hexiaotime) == DateTime.MinValue ? string.Empty : DateTime.Parse(item.hexiaotime).ToString("yyyy-MM-dd HH:mm:ss"),
_ => string.Empty,
};
}
private double GetCellDoubleValue(DroneCaseByTypeResp item, string key)
{
return key switch
{
"area" => item.area,
"gengdiArea" => item.gengdiArea,
"yongnongArea" => item.yongnongArea,
"nongyongdiArea" => item.nongyongdiArea,
};
}
private string SJYT(string qtsjyt)
{
string sjytvalue = "";
switch (qtsjyt)
{
case "1":
sjytvalue = "不改变原用地性质的光伏用地";
break;
case "2":
sjytvalue = "设施农业用地";
break;
case "3":
sjytvalue = "农村道路";
break;
case "4":
sjytvalue = "实地未变化";
break;
case "5":
sjytvalue = "临时用地";
break;
default:
sjytvalue = qtsjyt;
break;
}
return sjytvalue;
}
private string FormatDateTime(DateTimeOffset dateTime)
{
return dateTime == DateTimeOffset.MinValue ? string.Empty : dateTime.ToString("yyyy-MM-dd HH:mm:ss");
}
public void ExportToShapefileold(QueryCaseOffencetReq req, string shpFilePath)
{
var response = ExprotCaseListByType(req).Result;
List<int> gids = response.SelectMany(item =>
item.geomid.Split(',')
.Select(id => int.TryParse(id, out var gid) ? gid : (int?)null)
.Where(gid => gid.HasValue)
.Select(gid => gid.Value)).ToList();
string gidsString = string.Join(",", gids);
string query = $"SELECT gid, ST_AsText(geom) AS geom FROM drone_shp_data WHERE gid IN ({gidsString})";
// 执行查询
var data = client.Ado.SqlQuery<DroneShpDataResp>(query);
if (data == null || data.Count == 0)
{
throw new Exception("暂无数据");
}
List<IFeature> features = new List<IFeature>();
foreach (var row in data)
{
var geometry = ParseGeometry(row.geom);
if (geometry == null)
{
throw new Exception("数据不可用");
}
var attributes = new AttributesTable
{
{ "gid", row.gid },
};
IFeature feature = new Feature(geometry, attributes);
features.Add(feature);
}
if (features.Count == 0)
{
throw new Exception("数据不可用");
}
var geometryFactory = new GeometryFactory(new PrecisionModel(), 4326);
var shpDataWriter = new ShapefileDataWriter(shpFilePath, geometryFactory)
{
Header = ShapefileDataWriter.GetHeader(features[0], features.Count)
};
shpDataWriter.Write(features);
}
#region xin
#endregion
public void ExportToShapefile(QueryCaseOffencetReq req, string shpFilePath, string shpFilePathzip)
{
var response = ExprotCaseListByType(req).Result;
List<int> gids = response.SelectMany(item =>
item.geomid.Split(',')
.Select(id => int.TryParse(id, out var gid) ? gid : (int?)null)
.Where(gid => gid.HasValue)
.Select(gid => gid.Value)).ToList();
if (gids.Count < 1)
{
throw new Exception("暂无数据");
}
string gidsString = string.Join(",", gids);
//string query = $"SELECT gid,case_no,handle_status_name,typename,countyid,streetid, ST_AsText(geom) AS geom FROM view_drone_shp_data WHERE gid IN ({gidsString})";
string query =
$"SELECT gid,case_no,handle_status_name,typename,original_case_no,gengdi_area, is_illegal_name,is_intact_name," +
$"area,yongjiujibennongtian_area,xiangmumc,xiangmuzhuti,weifaleixing,measure_name,countyname,streetname,communityname,synchronoustime,tubanlaiyuan,ST_AsText(geom) AS geom FROM view_drone_caseinfo_xcsj WHERE gid IN ({gidsString})";
// 执行查询
var data = client.Ado.SqlQuery<DroneShpDataResp>(query);
if (data == null || data.Count == 0)
{
throw new Exception("暂无数据");
}
List<IFeature> features = new List<IFeature>();
foreach (var row in data)
{
var geometry = ParseGeometry(row.geom);
if (geometry == null)
{
throw new Exception("数据不可用");
}
var attributes = new AttributesTable
{
{ "gid", row.gid },
{ "图斑编号", row.case_no == null ? "" : row.case_no },
{ "当前状态", row.handle_status_name == null ? "" : row.handle_status_name },
{ "判读状态", row.is_intact_name == null ? "" : row.is_intact_name },
{ "图斑类型", row.typename == null ? "" : row.typename },
{ "判定结果", row.is_illegal_name == null ? "" : row.is_illegal_name },
{ "图斑面积(亩)", row.area == null ? "" : row.area },
{ "耕地面积", row.gengdi_area == null ? "" : row.gengdi_area },
{ "永农面积", row.yongjiujibennongtian_area == null ? "" : row.yongjiujibennongtian_area },
{ "项目名称", row.xiangmumc == null ? "" : row.xiangmumc },
{ "违法类型", row.weifaleixing == null ? "" : row.weifaleixing },
{ "处理措施", row.measure_name == null ? "" : row.measure_name },
{ "创建时间", row.synchronoustime == null ? "" : row.synchronoustime.ToString() },
{ "图斑来源", row.tubanlaiyuan == null ? "" : row.tubanlaiyuan },
};
IFeature feature = new Feature(geometry, attributes);
features.Add(feature);
}
if (features.Count == 0)
{
throw new Exception("数据不可用");
}
// 导出 SHP 文件及其关联文件
ExportToShapefileFour(shpFilePath, features);
// 将文件打包成 ZIP
CreateZipFromShapefiles(shpFilePath, shpFilePathzip);
}
public void ExportToShapefileFour(string shpPath, List<IFeature> features)
{
//var geometryFactory = new GeometryFactory();
//// 写入 CPG 文件(定义字符编码)
//var cpgPath = System.IO.Path.ChangeExtension(shpPath, "cpg");
//File.WriteAllText(cpgPath, "UTF-8", Encoding.UTF8);
//// 获取 SHP 文件头
//var header = ShapefileDataWriter.GetHeader(features[0], features.Count);
//// 创建 ShapefileDataWriter
//var shapeFileWriter = new ShapefileDataWriter(shpPath, geometryFactory)
//{
// Header = header
//};
//// 写入 SHP 文件
//shapeFileWriter.Write(features);
// 写入 CPG 文件(定义字符编码)
string prjStr =
@"GEOGCS[""GCS_China_Geodetic_Coordinate_System_2000"",DATUM[""D_China_2000"",SPHEROID[""CGCS2000"",6378137.0,298.257222101]],PRIMEM[""Greenwich"",0.0],UNIT[""Degree"",0.0174532925199433]]";
var cpgPath = Path.ChangeExtension(shpPath, "prj");
File.WriteAllText(cpgPath, prjStr, Encoding.UTF8);
Shapefile.WriteAllFeatures(features, shpPath, encoding: Encoding.UTF8);
}
public void CreateZipFromShapefiles(string shpPath, string zipPath)
{
var files = new List<string>
{
Path.ChangeExtension(shpPath, "cpg"),
shpPath,
Path.ChangeExtension(shpPath, "shx"),
Path.ChangeExtension(shpPath, "dbf"),
Path.ChangeExtension(shpPath, "prj")
};
using (var zipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Create))
{
foreach (var file in files)
{
if (File.Exists(file))
{
zipArchive.CreateEntryFromFile(file, Path.GetFileName(file));
}
}
}
}
public Geometry ParseGeometry(string wkt)
{
if (string.IsNullOrEmpty(wkt))
{
return null;
}
var reader = new WKTReader();
return reader.Read(wkt);
}
#endregion
#region 使用cmd导出shp文件
//public void ExportToShapefileByCmd(QueryCaseOffencetReq req, string shpFilePath, string shpFilePathzip)
//{
// var response = ExprotCaseListByType(req).Result;
// List<int> gids = response.SelectMany(item =>
// item.geomid.Split(',')
// .Select(id => int.TryParse(id, out var gid) ? gid : (int?)null)
// .Where(gid => gid.HasValue)
// .Select(gid => gid.Value)).ToList();
// string gidsString = string.Join(",", gids);
// //参数
// string _path = _configuration.GetSection("PgSql:PostGisPath").Value;
// string DataBase = _configuration.GetSection("PgSql:DataBase").Value;
// string UserID = _configuration.GetSection("PgSql:UserID").Value;
// string PORT = _configuration.GetSection("PgSql:PORT").Value;
// string Host = _configuration.GetSection("PgSql:Host").Value;
// string Pwd = _configuration.GetSection("PgSql:Pwd").Value;
// string strDir = "pgsql2shp -f " + shpFilePath + " -h " + Host + " -u " + UserID + " -P " + Pwd + " -p " + PORT + " " + DataBase + " \"SELECT * FROM view_drone_shp_data WHERE gid IN (" + gidsString + ")\"";
// //调用cmd
// CommonData.ExeCmdProcess(strDir, _path);
// // 将文件打包成 ZIP
// CreateZipFromShapefiles(shpFilePath, shpFilePathzip);
//}
#endregion
public async Task<Response<string>> CaseSplit(CaseSplitReq req)
{
var authStrategyContext = _auth.GetCurrentUser();
var user = authStrategyContext.User;
// 案件分宗 1. 关闭案件 2.撤消流程 3. 新建案件流程(生成关联图斑记录) 4. 生成拆分案件及拆分前案件关联关系
using var db = Repository.AsSugarClient();
try
{
await db.Ado.BeginTranAsync(IsolationLevel.ReadCommitted);
var original = await db.Queryable<DroneCaseInfoXcsj>().FirstAsync(t => t.Id == req.caseid);
var oriinalCaseNo = original.case_no;
if (original == null)
{
throw new Exception("图斑不存在");
}
var wktReader = new WKTReader();
foreach (var part in req.parts)
{
var geometry = wktReader.Read(part.geom);
}
// 根据案件id取得流程
var process = await Repository.ChangeRepository<SugarRepositiry<WFProcess>>().AsQueryable()
.FirstAsync(t => t.Id == req.processid);
// 作废流程
var result = await _processApp.DeleteProcess(process.Id);
// 生成拆分案件
var caseList = new List<DroneCaseInfoXcsj>(req.parts.Count);
var relationships = new List<DroneCaseSplit>(req.parts.Count);
var imageRefs = await Repository.ChangeRepository<SugarRepositiry<DroneImageRef>>().AsQueryable()
.Where(t => t.CaseId == req.caseid)
.Select(t => new DroneImageRef
{
FilePath = t.FilePath,
Orientation = t.Orientation,
Lng = t.Lng,
Lat = t.Lat
})
.ToListAsync();
using var httpClient = new HttpClient();
// http://192.168.10.125:9011/DroneEnforcement/2024/20241112/Image_Water_1731054661277.jpeg
var config = ConfigHelper.GetConfigRoot();
var baseUrl = config["ImgServer"];
var url = baseUrl + "/api/Platform/NewCopyImg";
// 文件路径 字段
var files = new Dictionary<string, string>();
// 方向角图片
var images = "";
if (!string.IsNullOrEmpty(original.anjianzhaopian))
{
var temp = original.anjianzhaopian.Trim(',');
var imgArray = temp.Split(",");
foreach (var se in imgArray)
{
files.Add(se, "anjianzhaopian");
}
images += "," + temp;
}
// 拆除复耕
if (!string.IsNullOrEmpty(original.chaichufugenghoupic))
{
var temp = original.chaichufugenghoupic.Trim(',');
var imgArray = temp.Split(",");
foreach (var se in imgArray)
{
files.Add(se, "chaichufugenghoupic");
}
images += "," + temp;
}
// 补办照片
if (!string.IsNullOrEmpty(original.bubanzhaopian))
{
var temp = original.bubanzhaopian.Trim(',');
var imgArray = temp.Split(",");
foreach (var se in imgArray)
{
files.Add(se, "bubanzhaopian");
}
images += "," + temp;
}
// 图斑图片
if (!string.IsNullOrEmpty(original.casepic))
{
var temp = original.casepic.Trim(',');
var imgArray = temp.Split(",");
foreach (var se in imgArray)
{
files.Add(se, "casepic");
}
images += "," + temp;
}
if (!string.IsNullOrEmpty(original.fujian))
{
var temp = original.fujian.Trim(',');
var imgArray = temp.Split(",");
foreach (var se in imgArray)
{
files.Add(se, "fujian");
}
images += "," + temp;
}
// 整改附件
if (!string.IsNullOrEmpty(original.zhenggaifujian))
{
var temp = original.zhenggaifujian.Trim(',');
var imgArray = temp.Split(",");
foreach (var se in imgArray)
{
files.Add(se, "zhenggaifujian");
}
images += "," + temp;
}
// 合法附件
if (!string.IsNullOrEmpty(original.hefafujian))
{
var temp = original.hefafujian.Trim(',');
var imgArray = temp.Split(",");
foreach (var se in imgArray)
{
files.Add(se, "hefafujian");
}
images += "," + temp;
}
// 其它附近
if (!string.IsNullOrEmpty(original.qitafujian))
{
var temp = original.qitafujian.Trim(',');
var imgArray = temp.Split(",");
foreach (var se in imgArray)
{
files.Add(se, "qitafujian");
}
images += "," + temp;
}
// 无人机复飞
if (!string.IsNullOrEmpty(original.wrjffzhaopian))
{
var temp = original.wrjffzhaopian.Trim(',');
var imgArray = temp.Split(",");
foreach (var se in imgArray)
{
files.Add(se, "wrjffzhaopian");
}
images += "," + temp;
}
//现场核查照片
if (!string.IsNullOrEmpty(original.xchczhaopian))
{
var temp = original.xchczhaopian.Trim(',');
var imgArray = temp.Split(",");
foreach (var se in imgArray)
{
files.Add(se, "xchczhaopian");
}
images += "," + temp;
}
images = images.Trim(',');
var param = new Dictionary<string, string>()
{
{ "path", images }
};
var content = new FormUrlEncodedContent(param);
var newImgRefs = new List<DroneImageRef>(imageRefs.Count * 2);
var i = 1;
foreach (var casePart in req.parts)
{
var caseInfo = original.MapTo<DroneCaseInfoXcsj>();
var caseId = Guid.NewGuid().ToString();
caseInfo.Id = caseId;
caseInfo.case_no = oriinalCaseNo + "-" + (i++);
caseInfo.nongyongdi_area = casePart.nongyongdi_area;
caseInfo.gengdi_area = casePart.gengdi_area;
caseInfo.yongjiujibennongtian_area = casePart.yongjiujibennongtian_area;
caseInfo.shengtaibaohuhongxian_area = casePart.shengtaibaohuhongxian_area;
caseInfo.guotukongjianguihua_area = casePart.guotukongjianguihua_area;
caseInfo.zhongdianquyu_area = casePart.zhongdianquyu_area;
caseInfo.area = casePart.area;
// 设置时间
caseInfo.createtime = DateTime.Now;
// 设置创建人
caseInfo.createuser = user.Id + "";
caseInfo.createusername = user.Name;
// 清理数据
caseInfo.anjianzhaopian = null;
caseInfo.chaichufugenghoupic = null;
caseInfo.bubanzhaopian = null;
caseInfo.casepic = null;
caseInfo.fujian = null;
caseInfo.zhenggaifujian = null;
caseInfo.hefafujian = null;
caseInfo.qitafujian = null;
caseInfo.wrjffzhaopian = null;
caseInfo.xchczhaopian = null;
// 复制图片
if (!string.IsNullOrEmpty(images))
{
var copyFileResponse = await httpClient.PostAsync(url, content);
if (copyFileResponse.IsSuccessStatusCode)
{
var resultContent = await copyFileResponse.Content.ReadAsStringAsync();
var obj = JsonConvert.DeserializeObject<Response<List<SysUploadFileNew>>>(resultContent);
if (!obj.Code.Equals(200))
{
throw new Exception("复制文件失败");
}
foreach (var sysUploadFileNew in obj.Result)
{
var originalPath = sysUploadFileNew.OriginalPath;
var newFilePath = sysUploadFileNew.FilePath;
var imgRef = imageRefs.FirstOrDefault(x => x.FilePath.Equals(originalPath));
if (imgRef != null)
{
// 填充信息
var temp = imgRef.Copy();
temp.Id = Guid.NewGuid().ToString();
temp.CaseId = caseInfo.Id;
temp.CreateTime = DateTime.Now;
temp.FilePath = newFilePath;
newImgRefs.Add(temp);
}
var field = files[originalPath];
switch (field)
{
case "fujian":
if (string.IsNullOrEmpty(caseInfo.fujian))
{
caseInfo.fujian = newFilePath;
}
else
{
caseInfo.fujian = caseInfo.fujian + "," + newFilePath;
}
break;
case "anjianzhaopian":
if (string.IsNullOrEmpty(caseInfo.anjianzhaopian))
{
caseInfo.anjianzhaopian = newFilePath;
}
else
{
caseInfo.anjianzhaopian = caseInfo.anjianzhaopian + "," + newFilePath;
}
break;
case "chaichufugenghoupic":
if (string.IsNullOrEmpty(caseInfo.chaichufugenghoupic))
{
caseInfo.chaichufugenghoupic = newFilePath;
}
else
{
caseInfo.chaichufugenghoupic =
caseInfo.chaichufugenghoupic + "," + newFilePath;
}
break;
case "bubanzhaopian":
if (string.IsNullOrEmpty(caseInfo.bubanzhaopian))
{
caseInfo.bubanzhaopian = newFilePath;
}
else
{
caseInfo.bubanzhaopian = caseInfo.bubanzhaopian + "," + newFilePath;
}
break;
case "casepic":
if (string.IsNullOrEmpty(caseInfo.casepic))
{
caseInfo.casepic = newFilePath;
}
else
{
caseInfo.casepic = caseInfo.casepic + "," + newFilePath;
}
break;
case "zhenggaifujian":
if (string.IsNullOrEmpty(caseInfo.zhenggaifujian))
{
caseInfo.zhenggaifujian = newFilePath;
}
else
{
caseInfo.zhenggaifujian = caseInfo.zhenggaifujian + "," + newFilePath;
}
break;
case "hefafujian":
if (string.IsNullOrEmpty(caseInfo.hefafujian))
{
caseInfo.hefafujian = newFilePath;
}
else
{
caseInfo.hefafujian = caseInfo.hefafujian + "," + newFilePath;
}
break;
case "qitafujian":
if (string.IsNullOrEmpty(caseInfo.qitafujian))
{
caseInfo.qitafujian = newFilePath;
}
else
{
caseInfo.qitafujian = caseInfo.qitafujian + "," + newFilePath;
}
break;
case "wrjffzhaopian":
if (string.IsNullOrEmpty(caseInfo.wrjffzhaopian))
{
caseInfo.wrjffzhaopian = newFilePath;
}
else
{
caseInfo.wrjffzhaopian = caseInfo.wrjffzhaopian + "," + newFilePath;
}
break;
case "xchczhaopian":
if (string.IsNullOrEmpty(caseInfo.xchczhaopian))
{
caseInfo.xchczhaopian = newFilePath;
}
else
{
caseInfo.xchczhaopian = caseInfo.xchczhaopian + "," + newFilePath;
}
break;
}
}
}
else
{
throw new Exception("复制文件失败");
}
}
// 填充图斑信息
var geometry = wktReader.Read(casePart.geom);
var gidStr = _commonDataManager.GetMaxKeyVal("gid", "drone_shp_data", 1);
var insertObj = new Dictionary<string, object>
{
{ "gid", gidStr.ToInt() },
{ "geom", geometry.AsBinary() },
{ "relid", caseId }
};
// 插入图斑
await db.Insertable(insertObj).AS("drone_shp_data").ExecuteCommandAsync();
caseInfo.geomid = gidStr;
caseList.Add(caseInfo);
// 原始案件与拆分案件关联
var splitRelation = new DroneCaseSplit();
splitRelation.NewCaseId = caseId;
splitRelation.OriginalCaseId = req.caseid;
relationships.Add(splitRelation);
}
if (newImgRefs.Count > 0)
{
await db.Insertable(newImgRefs).ExecuteCommandAsync();
}
await db.Insertable(caseList).ExecuteCommandAsync();
//新案件与原始案件关联
await db.Insertable(relationships).ExecuteCommandAsync();
// 发起新流程
foreach (var caseInfo in caseList)
{
var instanceInfo = process.InstanceInfo;
instanceInfo.pkeyValue = caseInfo.Id;
await _processApp.SaveDraft(caseInfo.Id, process.SchemeCode, user.Id + "",
Json.ToJson(instanceInfo), process.ParentProcessId, process.ParentNodeId, process.ParentTaskId, 0,
caseInfo.case_description);
await _processApp.Create(caseInfo.Id, "", user.Id + "", null, Json.ToJson(instanceInfo),
caseInfo.case_description);
}
// 关闭案件
var record = new DroneCaseInfoXcsj
{
Id = req.caseid,
is_closed = 1,
is_split = 1,
close_userid = user.Id + "",
close_user = user.Name,
close_time = DateTime.Now
};
Console.WriteLine("运行前==========================================");
var x = await db.Updateable(record).IgnoreNullColumns().ExecuteCommandAsync();
Console.WriteLine("运行后============================================ " + x);
await db.Ado.CommitTranAsync();
return new Response<string>
{
Result = "拆分成功",
Message = "拆分成功"
};
}
catch (Exception e)
{
await db.Ado.RollbackTranAsync();
throw e;
}
}
public async Task<Response<string>> CaseRecover(CaseRecoverReq req)
{
var authStrategyContext = _auth.GetCurrentUser();
var user = authStrategyContext.User;
using var db = Repository.AsSugarClient();
var relationships = new List<DroneCaseSplit>(req.parts.Count);
var caseId = Guid.NewGuid().ToString();
try
{
await db.Ado.BeginTranAsync(IsolationLevel.ReadCommitted);
var subCaseId = req.caseid;
// 这里是验证当前选中的图斑,是否有被分割,但当和它一起被分割出来的图斑被分割时,还原该图斑会有问题
// 以下代码校验指定图斑是否被分割过
string sql5 =
$"select new_case_id from drone_case_split where original_case_id='{subCaseId}' and is_recover=0";
var caseids1 = await db.Ado.SqlQueryAsync<string>(sql5);
if (caseids1.Count > 0)
{
return new Response<string>
{
Result = "当前图斑存在分割的子图斑不允许还原",
Message = "还原失败"
};
}
var sql6 = @"SELECT
count(*)
FROM
drone_case_split s join drone_caseinfo_xcsj c on s.new_case_id = c.""Id"" and c.is_split = '1'
WHERE
s.original_case_id = (select original_case_id from drone_case_split where new_case_id = @x)
AND s.new_case_id != @x
AND s.is_recover = '0'";
var count = await db.Ado.SqlQuerySingleAsync<int>(sql6, new { x = subCaseId });
if (count > 0)
{
return new Response<string>
{
Result = "当前图斑一起分割的图斑存在分割的子图斑",
Message = "还原失败"
};
}
if (req.type == 0) // 目前此值必定为0
{
var sql =
$"select original_case_id from drone_case_split where new_case_id='{subCaseId}' and is_recover=0";
// 原始图斑
var oldCaseId = await db.Ado.SqlQuerySingleAsync<string>(sql);
if (string.IsNullOrEmpty(oldCaseId))
{
return new Response<string>
{
Result = "图斑未拆",
Message = "还原失败"
};
}
// 恢复还原图斑
await _processApp.RecoverProcess(oldCaseId);
// 还原案件
await db.Updateable<DroneCaseInfoXcsj>()
.SetColumns(c =>
new DroneCaseInfoXcsj
{
is_closed = 0,
is_split = 2
}).Where(a => a.Id == oldCaseId).ExecuteCommandAsync();
// 处理子图斑
// 查询子图斑
var subCaseQuery =
$"select new_case_id from drone_case_split where is_recover=0 and original_case_id = '{oldCaseId}'";
var newCaseIds = db.Ado.SqlQuery<string>(subCaseQuery);
foreach (var casePart in newCaseIds)
{
// 作废流程
var result = await _processApp.DeleteProcess(casePart);
// todo 做意外处理,当执行失败时,
await db.Updateable<DroneCaseSplit>().SetColumns(c => new DroneCaseSplit
{
IsRecover = 1
}).Where(a => a.NewCaseId == casePart).ExecuteCommandAsync();
// 关闭
await db.Updateable<DroneCaseInfoXcsj>().SetColumns(c => new DroneCaseInfoXcsj
{
is_closed = 1
}).Where(a => a.Id == casePart).ExecuteCommandAsync();
}
await db.Ado.CommitTranAsync();
return new Response<string>
{
Result = "还原成功",
Message = "还原成功"
};
}
else
{
foreach (var casePart in req.parts)
{
var original = await db.Queryable<DroneCaseInfoXcsj>().FirstAsync(t => t.Id == casePart.caseid);
// 关闭案件
var record = new DroneCaseInfoXcsj
{
Id = casePart.caseid,
is_closed = 1
};
await db.Updateable(record).ExecuteCommandAsync();
// 根据案件id取得流程
var process2 = await Repository.ChangeRepository<SugarRepositiry<WFProcess>>().AsQueryable()
.Where(t => SqlFunc.JsonField(t.InstanceInfo, "pkeyValue").Equals(casePart.caseid))
.FirstAsync();
// 作废流程
var result = await _processApp.DeleteProcess(process2.Id);
var splitRelation1 = new DroneCaseSplit();
splitRelation1.NewCaseId = caseId;
splitRelation1.OriginalCaseId = casePart.caseid;
relationships.Add(splitRelation1);
}
await db.Insertable(relationships).ExecuteCommandAsync();
// 生成新案件
var caseList = new List<DroneCaseInfoXcsj>();
var original1 = await db.Queryable<DroneCaseInfoXcsj>().FirstAsync(t => t.Id == req.parts[0].caseid);
var process = await Repository.ChangeRepository<SugarRepositiry<WFProcess>>().AsQueryable()
.Where(t => SqlFunc.JsonField(t.InstanceInfo, "pkeyValue").Equals(original1.case_no))
.FirstAsync();
var wktReader = new WKTReader();
var caseInfo = original1.MapTo<DroneCaseInfoXcsj>();
caseInfo.Id = caseId;
caseInfo.nongyongdi_area = req.nongyongdi_area;
caseInfo.gengdi_area = req.gengdi_area;
caseInfo.yongjiujibennongtian_area = req.yongjiujibennongtian_area;
caseInfo.shengtaibaohuhongxian_area = req.shengtaibaohuhongxian_area;
caseInfo.guotukongjianguihua_area = req.guotukongjianguihua_area;
caseInfo.zhongdianquyu_area = req.zhongdianquyu_area;
caseInfo.area = req.area;
// 设置时间
caseInfo.createtime = DateTime.Now;
// 设置创建人
caseInfo.createuser = user.Id + "";
caseInfo.createusername = user.Name;
// 填充图斑信息
var geometry = wktReader.Read(req.geom);
var gidStr = _commonDataManager.GetMaxKeyVal("gid", "drone_shp_data", 1);
var insertObj = new Dictionary<string, object>
{
{ "gid", gidStr.ToInt() },
{ "geom", geometry.AsBinary() }
};
// 插入图斑
await db.Insertable(insertObj).AS("drone_shp_data").ExecuteCommandAsync();
caseInfo.geomid = gidStr;
caseList.Add(caseInfo);
await db.Insertable(caseList).ExecuteCommandAsync();
// 发起新流程
var processId = Guid.NewGuid().ToString();
var instanceInfo = process.InstanceInfo;
instanceInfo.pkeyValue = caseInfo.Id;
string x = Json.ToJson(instanceInfo);
Console.WriteLine("instance: " + x);
await _processApp.SaveDraft(caseInfo.Id, process.SchemeCode, user.Id + "",
Json.ToJson(instanceInfo), process.ParentProcessId, process.ParentNodeId, process.ParentTaskId, 0,
caseInfo.case_description);
await _processApp.Create(caseInfo.Id, process.SchemeCode, user.Id + "", null, Json.ToJson(instanceInfo),
caseInfo.case_description);
await db.Ado.CommitTranAsync();
return new Response<string>
{
Result = "拆分成功",
Message = "拆分成功"
};
}
}
catch (Exception e)
{
await db.Ado.RollbackTranAsync();
throw e;
}
}
#region 添加图片信息
public Response<bool> AddCaseImg(List<DroneImageRef> imgList)
{
try
{
//var imgList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<DroneImageRef>>(info);
client.Insertable<DroneImageRef>(imgList).ExecuteCommand();
return new Response<bool>
{
Result = true,
Message = "添加成功",
};
}
catch (Exception ex)
{
return new Response<bool>
{
Result = false,
Message = "添加失败",
};
}
}
/// <summary>
/// 获取图片信息
/// </summary>
/// <param name="caseid"></param>
/// <returns></returns>
public async Task<Response<List<DroneImageRef>>> LoadCaseImgList(string caseid)
{
RefAsync<int> totalcount = 0;
//查询案件的填报(anjianzhaopian)和整改图片信息(chaichufugenghoupic),补办手续bubanzhaopian
var caseImg = await client.Queryable<DroneCaseInfoXcsj>().FirstAsync(r => r.Id == caseid);
List<string> imageList = new List<string>();
if (caseImg != null)
{
// 合并
AddImagesToList(caseImg.anjianzhaopian, imageList);
AddImagesToList(caseImg.chaichufugenghoupic, imageList);
AddImagesToList(caseImg.bubanzhaopian, imageList);
}
var caseList = await client.Queryable<DroneImageRef>()
.WhereIF(!string.IsNullOrEmpty(caseid), r => r.CaseId == caseid)
.Where(r => imageList.Contains(r.FilePath))
.Select(r => new DroneImageRef()
{
Id = r.Id.SelectAll(),
})
.ToListAsync();
return new Response<List<DroneImageRef>>()
{
Result = caseList
};
}
void AddImagesToList(string images, List<string> list)
{
if (!string.IsNullOrEmpty(images))
{
list.AddRange(images.Split(',').Where(item => !string.IsNullOrWhiteSpace(item)));
}
}
public Response<bool> DeleteCaseImg(string path)
{
try
{
//var imgList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<DroneImageRef>>(info);
client.Deleteable<DroneImageRef>(r => r.FilePath == path).ExecuteCommand();
return new Response<bool>
{
Result = true,
Message = "删除成功",
};
}
catch (Exception ex)
{
return new Response<bool>
{
Result = false,
Message = "删除失败",
};
}
}
#endregion
#region 获取图斑信息
/// <summary>
/// 获取图片信息
/// </summary>
/// <param name="caseid"></param>
/// <returns></returns>
public async Task<Response<List<DroneShpData>>> LoadDroneShpDataById(string caseid)
{
RefAsync<int> totalcount = 0;
var caseList = await client
.SqlQueryable<DroneShpData>("select st_astext(geom) as geom from drone_shp_data where relid = '" + caseid +
"'")
.ToListAsync();
return new Response<List<DroneShpData>>()
{
Result = caseList
};
}
/// <summary>
/// 获取图斑中心点数据
/// </summary>
/// <param name="tablename"></param>
/// <param name="filter"></param>
/// <returns></returns>
public dynamic GetCenterPoints(string tablename, string filter)
{
StringBuilder sql = new StringBuilder();
if (string.IsNullOrEmpty(filter))
{
filter = "1=1";
}
sql.AppendFormat(
$" SELECT gid,ST_AsText(ST_Transform(ST_Centroid(geom), 4326)) AS centroid_point \r\nFROM {tablename} where {filter}");
var result = client.Ado.SqlQuery<dynamic>(sql.ToString());
return result;
}
/// <summary>
/// 根据表名获取矢量切片
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
public byte[] QueryVectorTileByTable(QueryVectorTileByTableReq req)
{
VectorTileSearchModel searchModel = new VectorTileSearchModel
{
x = req.x,
y = req.y,
z = req.z,
//field = "gid,fwbh,bh,fwlx,\"jzfsQg\",bxdcyy,fwlb,\"kzgzcsQg\",aqjdnf,address,fwsjfs,jgsj,cs,\"jzndQg\",dcmj,ywlfbxqx,sfjgaqjd,sfkzjg,\"kzcszpQg\",\"houseType\",\"hzlxQg\",hzxm,\"jglxQg\",aqjdjl,\"czqtQg\",jzmc,\"lwgQg\",\"dbkjqtQg\",fwmj,fwyt,zff,\"jzytQg\",streetid,streetname,communityid,communityname,",
field = req.field,
table = req.table,
filter = req.filter,
};
var result = _commonDataManager.VectorTile(searchModel);
return result;
}
#endregion
#region 案件操作历史记录
/// <summary>
/// 获取所有的案件信息
/// </summary>
/// <param name="req">案件编号查询</param>
/// <returns></returns>
public async Task<Response<PageInfo<List<DroneCaseInfoXcsj>>>> LoadCaseInfoListForUpdate(DroneCaseForChangeReq req)
{
RefAsync<int> totalcount = 0;
//var caseList = await client.Queryable<DroneCaseInfoXcsj>()
// .WhereIF(!string.IsNullOrEmpty(req.key), r => r.case_no.Contains(req.key))
// .OrderByDescending(r => r.createtime)
// .Select(r => new CaseInfoForUpdateResp
// {
// Id = r.Id,
// case_no = r.case_no,
// case_name = r.case_name,
// case_description = r.case_description,
// address = r.address,
// lng = r.lng,
// lat = r.lat,
// typeid = r.typeid,
// typename = r.typename,
// drone_no = r.drone_no,
// countyid = r.countyid,
// countyname = r.countyname,
// streetid = r.streetid,
// streetname = r.streetname,
// communityid = r.communityid,
// communityname = r.communityname,
// remark = r.remark,
// area = r.area,
// nongyongdi_area = r.nongyongdi_area,
// gengdi_area = r.gengdi_area,
// yongjiujibennongtian_area = r.yongjiujibennongtian_area,
// zhongdianquyu_area = r.zhongdianquyu_area,
// shengtaibaohuhongxian_area = r.shengtaibaohuhongxian_area,
// guotukongjianguihua_area = r.guotukongjianguihua_area,
// })
// .ToPageListAsync(req.page, req.limit, totalcount);
var caseList = await client.Queryable<DroneCaseInfoXcsj>()
.WhereIF(!string.IsNullOrEmpty(req.key), r => r.case_no.Contains(req.key))
.WhereIF(!string.IsNullOrEmpty(req.originalcaseno), r => r.original_case_no.Contains(req.originalcaseno))
.OrderByDescending(r => r.createtime)
.Select(r => new DroneCaseInfoXcsj
{
Id = r.Id.SelectAll(),
})
.ToPageListAsync(req.page, req.limit, totalcount);
return new Response<PageInfo<List<DroneCaseInfoXcsj>>>()
{
Result = new PageInfo<List<DroneCaseInfoXcsj>>
{
Items = caseList,
Total = totalcount
}
};
}
/// <summary>
/// 获取单个案件信息
/// </summary>
/// <param name="id">案件id</param>
/// <returns></returns>
public async Task<Response<DroneCaseInfoXcsj>> LoadCaseInfoById(string id)
{
var caseInfo = await client.Queryable<DroneCaseInfoXcsj>().FirstAsync(r => r.Id == id);
return new Response<DroneCaseInfoXcsj>()
{
Result = caseInfo
};
}
/// <summary>
/// 获取案件历史信息
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
public async Task<Response<PageInfo<List<DroneCaseInfoSingleHistory>>>> LoadCaseHistoryInfoList(PageReq req)
{
RefAsync<int> totalcount = 0;
var caseList = await client.Queryable<DroneCaseInfoSingleHistory>()
.WhereIF(!string.IsNullOrEmpty(req.key), r => r.Id == req.key)
.OrderByDescending(r => r.recordingtime)
.ToPageListAsync(req.page, req.limit, totalcount);
return new Response<PageInfo<List<DroneCaseInfoSingleHistory>>>()
{
Result = new PageInfo<List<DroneCaseInfoSingleHistory>>
{
Items = caseList,
Total = totalcount
}
};
}
//修改案件信息
public async Task<Response<bool>> UpdateCaseInfo(DroneCaseInfoXcsj req)
{
using (var db = base.UnitWork.CreateContext().Db.CopyNew())
{
// 使用事务提交数据
var transResult = await db.UseTranAsync(async () =>
{
// 记录案件信息
var caseInfo = await db.Queryable<DroneCaseInfoXcsj>().FirstAsync(r => r.Id == req.Id);
if (caseInfo == null)
{
throw new Exception("图斑信息未找到");
}
var caseHistory = caseInfo.MapTo<DroneCaseInfoSingleHistory>();
caseHistory.newid = Guid.NewGuid().ToString();
caseHistory.recordingtime = DateTime.Now;
await db.Insertable(caseHistory).ExecuteCommandAsync();
// 更新案件信息
await db.Updateable(req)
.UpdateColumns(c => new
{
c.case_no,
c.case_name,
c.case_description,
c.address,
c.lng,
c.lat,
//c.typeid,
//c.typename,
c.drone_no,
c.countyid,
c.countyname,
c.streetid,
c.streetname,
c.communityid,
c.communityname,
//c.remark,
c.area,
c.nongyongdi_area,
c.gengdi_area,
c.yongjiujibennongtian_area,
c.zhongdianquyu_area,
c.shengtaibaohuhongxian_area,
c.guotukongjianguihua_area,
//c.casepic
}).ExecuteCommandAsync();
});
return new Response<bool>
{
Code = 200,
Result = transResult.IsSuccess,
Message = transResult.IsSuccess ? "更新成功" : "更新失败"
};
}
}
#endregion
#region 导出shp文件 四种格式
#endregion
#region 导入案件信息
/// <summary>
/// 上传用户信息
/// </summary>
/// <param name="formFiles"></param>
/// <returns></returns>
public Response<bool> ImportUserInfo(IFormFileCollection formFiles)
{
IFormFile file = formFiles[0];
//存储文件到服务器
if (file != null)
{
if (file.FileName.IndexOf(".xls") > 0 || file.FileName.IndexOf(".xlsx") > 0)
{
//数据库导入
IWorkbook workbook = null;
if (file.FileName.IndexOf(".xlsx") > 0)
{
using (var stream = file.OpenReadStream())
{
workbook = new XSSFWorkbook(stream); //excel的版本2007
}
}
else if (file.FileName.IndexOf(".xls") > 0)
{
using (var stream = file.OpenReadStream())
{
workbook = new HSSFWorkbook(stream); //excel的版本2003
}
}
//数据处理
using (var uow = base.UnitWork.CreateContext())
{
//获取sheet
ISheet sheet;
sheet = workbook.GetSheetAt(0);
//处理sheet数据
string res = "";
if (sheet != null)
{
IRow firstRow = sheet.GetRow(0);
//获取有效数据行数
int lastRow = sheet.LastRowNum;
int rowCount = 0;
//具体excel数据解析
for (int i = 1; i <= lastRow; ++i)
{
IRow row = sheet.GetRow(i);
if (row == null || string.IsNullOrEmpty(row.GetCell(0).ToString())) continue;
DroneCaseInfoXcsj cas = new DroneCaseInfoXcsj();
cas.case_description = row.GetCell(0).ToString();
cas.address = row.GetCell(1).ToString();
//坐标lng
if (string.IsNullOrEmpty(row.GetCell(2).ToString()))
{
cas.lng = Convert.ToDecimal(row.GetCell(2).ToString());
}
else
{
cas.lng = null;
}
//坐标lat
if (string.IsNullOrEmpty(row.GetCell(3).ToString()))
{
cas.lat = Convert.ToDecimal(row.GetCell(3).ToString());
}
else
{
cas.lat = null;
}
//类型
cas.typename = row.GetCell(4).ToString();
if (!string.IsNullOrEmpty(row.GetCell(4).ToString()))
{
var ditem = client.Queryable<SysDataItemDetail>()
.Where(r => r.ItemName == row.GetCell(4).ToString()).First();
if (ditem != null)
{
cas.typeid = ditem.ItemDetailId;
}
}
SysUser user = new SysUser();
user.Id = YitIdHelper.NextId();
user.CreateTime = DateTime.Now;
user.Name = row.GetCell(4).ToString();
user.CreateId = _auth.GetCurrentUser().User.Id;
user.Account = row.GetCell(5).ToString();
user.Password = Md5Helper.Encrypt(user.Account, 32).ToLower();
if (uow.User.IsAny(u => u.Account == user.Account))
{
res += "账号" + user.Account + "已存在,";
}
else
{
user.Secretkey = Md5Helper.Encrypt(CommonHelper.CreateNo(), 16).ToLower();
if (string.IsNullOrEmpty(user.Password))
{
user.Password = Md5Helper
.Encrypt(
DESEncrypt.Encrypt(Md5Helper.Hash(user.Account), user.Secretkey).ToLower(),
32).ToLower(); //如果客户端没提供密码,默认密码同账号
}
else
{
user.Password = Md5Helper
.Encrypt(DESEncrypt.Encrypt(user.Password, user.Secretkey).ToLower(), 32)
.ToLower();
}
uow.User.Insert(user);
if (!string.IsNullOrEmpty(row.GetCell(7).ToString()))
{
//为用户分配角色
SysUserRole userrole = new SysUserRole();
userrole.UserId = user.Id;
userrole.RoleId = Convert.ToInt64(row.GetCell(7).ToString());
//删除用户相关角色
uow.SysUserRole.DeleteById(user.Id);
//添加
uow.SysUserRole.Insert(userrole);
}
if (!string.IsNullOrEmpty(row.GetCell(2).ToString()))
{
//为用户分配部门
SysUserOrg userorg = new SysUserOrg();
userorg.UserId = user.Id;
userorg.OrgId = Convert.ToInt64(row.GetCell(2).ToString());
userorg.PositionId = 0;
userorg.Level = Convert.ToInt16(row.GetCell(3).ToString());
//删除用户相关部门
uow.SysUserOrg.DeleteById(user.Id);
//重新添加本次部门
uow.SysUserOrg.Insert(userorg);
}
}
}
}
var flag = uow.Commit();
return new Response<bool>
{
Result = flag,
Message = flag == true ? "更新成功 " + res : "更新失败"
};
}
}
else
{
return new Response<bool>
{
Result = false,
Message = "上传文件类型错误请上传Excel文件"
};
}
}
else
{
return new Response<bool>
{
Result = false,
Message = "文件为空"
};
}
}
#endregion
#region 测试代码
public Response<bool> UpdateYijian()
{
var caseInfo = client.Queryable<DroneCaseInfoXcsj>().ToList();
//var caseInfo = client.Queryable<DroneCaseInfoXcsj>().Where(r => r.case_no== "FN371325202408124154").ToList();
foreach (var item in caseInfo)
{
var tasklog = client.Queryable<WFTaskLog>().Where(r => r.ProcessId == item.Id)
.OrderByDescending(r => r.CreateDate).ToList();
if (tasklog.Count > 0)
{
//修改县级审核意见及结果
var info = tasklog.Where(r => r.UnitName == "县级审核").FirstOrDefault();
if (info != null)
{
item.xianjiyijian = info.Des;
item.xjshenhejieguo = info.OperationName;
item.verifyuser = info.UserName;
item.verifytime = DateTime.Parse(info.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"));
item.is_drawback = info.OperationName == "驳回" ? 1 : item.is_drawback;
}
//修改市级审核意见及结果
var infosj = tasklog.Where(r => r.UnitName == "市级审核").FirstOrDefault();
if (infosj != null)
{
item.shijiyijian = infosj.Des;
item.sjshenhejieguo = infosj.OperationName;
item.hexiaoren = infosj.UserName;
item.hexiaotime = DateTime.Parse(infosj.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"));
item.is_shijibohui = infosj.OperationName == "驳回" ? 1 : item.is_shijibohui;
}
client.Updateable(item).UpdateColumns(c => new
{
c.xianjiyijian,
c.xjshenhejieguo,
c.shijiyijian,
c.sjshenhejieguo,
c.verifyuser,
c.verifytime,
c.hexiaoren,
c.hexiaotime,
c.is_drawback,
c.is_shijibohui
})
.ExecuteCommand();
}
}
return new Response<bool> { };
}
public Response<bool> UpdateYijianwpxf()
{
var caseInfo = client.Queryable<DroneCaseInfoSatellite>().ToList();
//var caseInfo = client.Queryable<DroneCaseInfoXcsj>().Where(r => r.case_no== "FN371325202408124154").ToList();
foreach (var item in caseInfo)
{
var tasklog = client.Queryable<WFTaskLog>().Where(r => r.ProcessId == item.Id)
.OrderByDescending(r => r.CreateDate).ToList();
if (tasklog.Count > 0)
{
//修改县级审核意见及结果
var info = tasklog.Where(r => r.UnitName == "县级审核").FirstOrDefault();
if (info != null)
{
item.xianjiyijian = info.Des;
item.xjshenhejieguo = info.OperationName;
item.verifyuser = info.UserName;
item.verifytime = DateTime.Parse(info.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"));
item.is_drawback = info.OperationName == "驳回" ? 1 : item.is_drawback;
}
//修改市级审核意见及结果
var infosj = tasklog.Where(r => r.UnitName == "市级审核").FirstOrDefault();
if (infosj != null)
{
item.shijiyijian = infosj.Des;
item.sjshenhejieguo = infosj.OperationName;
item.hexiaoren = infosj.UserName;
//item.hexiaotime = infosj.CreateDate.ToString("yyyy-MM-dd HH:mm:ss");
item.is_shijibohui = infosj.OperationName == "驳回" ? 1 : item.is_shijibohui;
}
client.Updateable(item).UpdateColumns(c => new
{
c.xianjiyijian,
c.xjshenhejieguo,
c.shijiyijian,
c.sjshenhejieguo,
c.verifyuser,
c.verifytime,
c.hexiaoren,
c.hexiaotime,
c.is_drawback,
c.is_shijibohui
}).ExecuteCommand();
}
}
return new Response<bool> { };
}
public Response<bool> UpdateYijianHnad()
{
var caseInfo = client.Queryable<DroneCaseInfoXcsj>()
.Where(r => r.handle_status_name == "" || r.handle_status_name == null).ToList();
foreach (var item in caseInfo)
{
var task = client.Queryable<WFTask>().Where(r => r.ProcessId == item.Id).First(r => r.State == 1);
if (task != null)
{
if (task.UnitName == "待填报")
{
item.handle_status_name = task.UnitName;
item.handle_status_id = 1;
}
else if (task.UnitName == "待接收")
{
item.handle_status_name = task.UnitName;
item.handle_status_id = 0;
}
else if (task.UnitName == "待整改")
{
item.handle_status_name = task.UnitName;
item.handle_status_id = 2;
}
else if (task.UnitName == "县级审核")
{
item.handle_status_name = task.UnitName;
item.handle_status_id = 3;
}
client.Updateable(item).UpdateColumns(c => new
{
c.handle_status_name,
c.handle_status_id,
}).ExecuteCommand();
}
}
return new Response<bool> { };
}
#endregion
}