using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.Drawing; using System.Dynamic; using System.IO.Compression; using System.Text; using System.Text.RegularExpressions; using Castle.Core.Internal; using ClosedXML.Excel; using DocumentFormat.OpenXml.Bibliography; using DocumentFormat.OpenXml.Drawing; using DocumentFormat.OpenXml.Drawing.Diagrams; using DocumentFormat.OpenXml.EMMA; using DocumentFormat.OpenXml.Office2010.Excel; using DocumentFormat.OpenXml.Office2010.ExcelAc; using DocumentFormat.OpenXml.Presentation; using DocumentFormat.OpenXml.Spreadsheet; using DocumentFormat.OpenXml.Wordprocessing; using Enyim.Caching.Memcached; using Flurl.Http; using Hopetry.App.Common; using ICSharpCode.SharpZipLib.GZip; using Infrastructure; using Infrastructure.Extensions; using Infrastructure.Helpers; using Infrastructure.Utilities; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using NetTopologySuite.Features; using NetTopologySuite.Geometries; using NetTopologySuite.IO; using NetTopologySuite.IO.Esri.Shp; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Npgsql.TypeHandlers; using NPOI.HSSF.UserModel; using NPOI.SS.Formula.Functions; using NPOI.SS.UserModel; using NPOI.SS.Util; using NPOI.Util; using NPOI.XSSF.UserModel; using NPOI.XWPF.UserModel; using OpenAuth.App.BaseApp.Base; using OpenAuth.App.BaseApp.Shape; using OpenAuth.App.BasicQueryService; using OpenAuth.App.FormModule; using OpenAuth.App.Interface; using OpenAuth.App.Request; using OpenAuth.App.Response; using OpenAuth.App.ServiceApp.DroneCaseInfo.Request; using OpenAuth.App.ServiceApp.DroneCaseInfo.Response; using OpenAuth.App.ServiceApp.Request; using OpenAuth.App.ServiceApp.Response; using OpenAuth.App.Shape; using OpenAuth.Repository; using OpenAuth.Repository.Domain; using Org.BouncyCastle.Ocsp; using SqlSugar; using Yitter.IdGenerator; using static OpenAuth.App.ServiceApp.DroneCaseInfo.Request.CaseSplitReq; using CellType = NPOI.SS.UserModel.CellType; namespace OpenAuth.App.ServiceApp.DroneCaseInfo; public partial class DroneCaseInfoSingleApp { #region 统计 /// /// 综合统计 /// /// public async Task> 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().Where(c => c.ParentName == countyName) .OrderBy(c => c.SortNo, OrderByType.Asc).ToListAsync(); //无人机发现数量 var reqBody = req.MapTo(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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().Where(c => c.TypeId == "DRONE_CASE_TYPE").ToListAsync(); var typepid = await db.Queryable().Where(c => c.ItemCode == "DRONE_CASE_TYPE").FirstAsync(); var typeList = await db.Queryable().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 notTypeids = new List { 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 { Result = array, Message = "获取数据成功" }; } } public async Task> 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().Where(c => c.ParentName == countyName) .OrderBy(c => c.SortNo, OrderByType.Asc).ToListAsync(); //无人机发现数量 var reqBody = req.MapTo(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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().Where(c => c.TypeId == "DRONE_CASE_TYPE").ToListAsync(); var typepid = await db.Queryable().Where(c => c.ItemCode == "DRONE_CASE_TYPE") .FirstAsync(); var typeList = await db.Queryable().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 notTypeids = new List { 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 { 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(sql2); var orgList = await db.Queryable().Where(c => liststring.Contains(c.Id)) .OrderBy(c => c.SortNo, OrderByType.Asc).ToListAsync(); //无人机发现数量 var reqBody = req.MapTo(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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().Where(c => c.TypeId == "DRONE_CASE_TYPE").ToListAsync(); var typepid = await db.Queryable().Where(c => c.ItemCode == "DRONE_CASE_TYPE") .FirstAsync(); var typeList = await db.Queryable().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 notTypeids = new List { 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 { 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 { 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().Where(c => c.ParentName == name) .OrderBy(c => c.SortNo, OrderByType.Asc).ToListAsync(); //无人机发现数量 var reqBody = req.MapTo(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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().Where(c => c.TypeId == "DRONE_CASE_TYPE").ToListAsync(); var typepid = await db.Queryable().Where(c => c.ItemCode == "DRONE_CASE_TYPE") .FirstAsync(); var typeList = await db.Queryable().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 notTypeids = new List { 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 { Result = array, Message = "获取数据成功" }; } } } public Response ListToExcel(JArray list, List headers) { Response response = new Response(); 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 = NPOI.SS.UserModel.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 = NPOI.SS.UserModel.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; } /// /// 综合统计,统计镇权限 /// /// 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().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; } } /// /// 获取街道案件统计数据 /// /// /// /// /// /// private JArray GetSynthesisCensusStreetData(SqlSugarClient db, SysOrg currentStreet, SysUser _user, QueryCaseInfoListReq req) { var orgList = db.Queryable().Where(c => c.ParentId == currentStreet.Id) .OrderBy(c => c.SortNo, OrderByType.Asc).ToList(); //无人机发现数量 var reqBody = req.MapTo(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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().Where(c => c.ItemCode == "DRONE_CASE_TYPE").First(); var typeList = db.Queryable().Where(c => c.ItemId == typepid.ItemId).ToList(); //var typeList = db.Queryable().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 notTypeids = new List { 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> 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 //核实后: 已归档非农 + 所有未归档的 + 耕地大于0 //整改后剩余新增违法耕地: 所有未归档的 + 耕地大于0 var user = _auth.GetCurrentUser().User; var orgIds = base._auth.GetCurrentUser().Orgs; List listResp = new List(); //只查询农用地案件 //var casetype = client.Queryable() // .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 cases, Func selector) { var sum = cases .Select(selector) .Where(area => !string.IsNullOrEmpty(area)) .Sum(area => double.TryParse(area, out var result) ? result : 0); return Math.Round(sum, 2); // 保留两位小数 } List org = new List(); List caseList = new List(); List tubanlaiyuanList = string.IsNullOrEmpty(tubanlaiyuan) ? new List() : tubanlaiyuan.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); if (orgIds.Any(r => r.Level == 0) || user.Id == -1) // 查询全部 { org = client.Queryable().Where(r => r.Level == 1).ToList(); caseList = client.Queryable() .LeftJoin((a, b) => SqlFunc.JsonField(b.InstanceInfo, "pkeyValue") == a.Id) .Where((a, b) => a.synchronoustime >= startTime && a.synchronoustime <= endTime && a.typename == "农用地" && a.is_closed == 0) .WhereIF(!string.IsNullOrEmpty(tubanlaiyuan), (a, b) => tubanlaiyuanList.Contains(a.tubanlaiyuan)) .Where((a, b) => !string.IsNullOrEmpty(b.Id)).ToList(); } else if (orgIds.Any(r => r.Level == 1)) { //县区数据 org = client.Queryable() .Where(r => r.Level == 2 && orgIds.Select(a => a.Id).Contains(r.ParentId)).ToList(); caseList = client.Queryable() .LeftJoin((a, b) => SqlFunc.JsonField(b.InstanceInfo, "pkeyValue") == a.Id) .WhereIF(!string.IsNullOrEmpty(tubanlaiyuan), (a, b) => tubanlaiyuanList.Contains(a.tubanlaiyuan)) .Where((a, b) => a.synchronoustime >= startTime && a.synchronoustime <= endTime && a.typename == "农用地" && a.is_closed == 0) .Where((a, b) => !string.IsNullOrEmpty(b.Id)).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; //核实后新增违法耕地 核实后: 已归档非农 + 所有未归档的 + 耕地大于0 var hshxzwfgdzs = casesForCounty.Count(r => (!(string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00") && r.handle_status_id != 5) || (!(string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00") && r.handle_status_id == 5 && r.weifaleixing == 0 && r.is_illegal == 1)); hshxzwfgdzscount += hshxzwfgdzs; //整改后剩余新增违法耕地: 所有未归档的 + 耕地大于0 var zghsywfgdzs = casesForCounty.Count(r => (!(string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00")) && r.handle_status_id != 5); zghsywfgdzscount += zghsywfgdzs; 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.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.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; //核实后新增违法耕地 var hshxzwfgdgdmj = SumArea(casesForCounty.Where(r => (!(string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00") && r.handle_status_id != 5) || (!(string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00") && r.handle_status_id == 5 && r.weifaleixing == 0 && r.is_illegal == 1)), r => r.gengdi_area); hshxzwfgdgdmjsum += hshxzwfgdgdmj; //整改后剩余新增违法耕地 var zghsywfgdgdmj = SumArea(casesForCounty.Where(r => (!(string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00")) && r.handle_status_id != 5), r => r.gengdi_area); zghsywfgdgdmjsum += zghsywfgdgdmj; 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, hshxzwfgdzs = hshxzwfgdzs, hshxzwfgdgdmj = hshxzwfgdgdmj, //zghsywfgdzs = wfzs - flhzs - bbsxzs - cczs, zghsywfgdzs = zghsywfgdzs, zghsywfgdgdmj = zghsywfgdgdmj //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 - 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> { Result = listResp, Message = "获取数据成功" }; } /// /// 无人机全域巡查图斑整改情况统计表 /// /// /// /// public Response> CaseOffenceForExcel(DateTime startTime, DateTime endTime, string tubanlaiyuan) { //核实后新增违法耕地 :占耕地的未归档图斑+占耕地的已归档的非农化类型图斑 //整改后剩余违法耕地 :占耕地的未归档的图斑 var user = _auth.GetCurrentUser().User; var orgIds = base._auth.GetCurrentUser().Orgs; List listResp = new List(); //只查询农用地案件 //var casetype = client.Queryable() // .Where(r => r.ItemCode == "DRONE_CASE_TYPE" && r.ItemValue == "DRONE_CASE_TYPE_NYD").First()?.ItemDetailId; //总计 int xftbzscount = 0, hshxzwfgdzscount = 0, zghsywfgdzscount = 0; double xfgdmjsum = 0.0, hshxzwfgdgdmjsum = 0.0, zghsywfgdgdmjsum = 0.0; double SumArea(IEnumerable cases, Func selector) { var sum = cases .Select(selector) .Where(area => !string.IsNullOrEmpty(area)) .Sum(area => double.TryParse(area, out var result) ? result : 0); return Math.Round(sum, 2); // 保留两位小数 } List org = new List(); List caseList = new List(); var tubanlaiyuanList = string.IsNullOrEmpty(tubanlaiyuan) ? new List() : tubanlaiyuan.Split(",").ToList(); if (orgIds.Any(r => r.Level == 0) || user.Id == -1) // 查询全部 { org = client.Queryable().Where(r => r.Level == 1).ToList(); caseList = client.Queryable() .LeftJoin((a, b) => SqlFunc.JsonField(b.InstanceInfo, "pkeyValue") == a.Id) .WhereIF(!string.IsNullOrEmpty(tubanlaiyuan), (a, b) => tubanlaiyuanList.Contains(a.tubanlaiyuan)) .Where((a, b) => a.synchronoustime >= startTime && a.synchronoustime <= endTime && a.typename == "农用地" && a.is_closed == 0) .Where((a, b) => !string.IsNullOrEmpty(b.Id)).ToList(); } else if (orgIds.Any(r => r.Level == 1)) { //县区数据 org = client.Queryable() .Where(r => r.Level == 2 && orgIds.Select(a => a.Id).Contains(r.ParentId)).ToList(); caseList = client.Queryable() .LeftJoin((a, b) => SqlFunc.JsonField(b.InstanceInfo, "pkeyValue") == a.Id) .WhereIF(!string.IsNullOrEmpty(tubanlaiyuan), (a, b) => tubanlaiyuanList.Contains(a.tubanlaiyuan)) .Where((a, b) => a.synchronoustime >= startTime && a.synchronoustime <= endTime && a.typename == "农用地" && a.is_closed == 0) .Where((a, b) => !string.IsNullOrEmpty(b.Id)).ToList(); } foreach (var item in org) { var countyIdString = item.Id.ToString(); var casesForCounty = caseList.Where(r => r.countyid == countyIdString || r.streetid == countyIdString) .ToList(); //下发占耕地的图斑 var xftbzs = casesForCounty.Count(r => !(string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00")); xftbzscount += xftbzs; double xfgdmj = SumArea(casesForCounty, r => r.gengdi_area); xfgdmjsum += xfgdmj; //核实后新增违法耕地 :占耕地的未归档图斑+占耕地的已归档的非农化类型图斑 var hshxzwfgdzs = casesForCounty.Count(r => (!(string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00") && r.handle_status_id != 5) || (!(string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00") && r.handle_status_id == 5 && r.weifaleixing == 0 && r.is_illegal == 1)); hshxzwfgdzscount += hshxzwfgdzs; var hshxzwfgdgdmj = SumArea(casesForCounty.Where(r => (!(string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00") && r.handle_status_id != 5) || (!(string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00") && r.handle_status_id == 5 && r.weifaleixing == 0 && r.is_illegal == 1)), r => r.gengdi_area); hshxzwfgdgdmjsum += hshxzwfgdgdmj; //整改后剩余违法耕地 :占耕地的未归档的图斑 var zghsywfgdzs = casesForCounty.Count(r => (!(string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00")) && r.handle_status_id != 5); zghsywfgdzscount += zghsywfgdzs; var zghsywfgdgdmj = SumArea( casesForCounty.Where(r => (!(string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00")) && r.handle_status_id != 5), r => r.gengdi_area); zghsywfgdgdmjsum += zghsywfgdgdmj; OffenceResp offenceResp = new OffenceResp { countyid = item.Id, countyname = item.Name, xftbzs = xftbzs, xfgdmj = xfgdmj, hshxzwfgdzs = hshxzwfgdzs, hshxzwfgdgdmj = hshxzwfgdgdmj, zghsywfgdzs = zghsywfgdzs, zghsywfgdgdmj = zghsywfgdgdmj }; listResp.Add(offenceResp); } listResp = listResp.OrderByDescending(r => r.zghsywfgdgdmj).ToList(); listResp.Add(new OffenceResp { countyid = 0, countyname = "总计", xftbzs = xftbzscount, xfgdmj = xfgdmjsum, hshxzwfgdzs = hshxzwfgdzscount, hshxzwfgdgdmj = Math.Round(hshxzwfgdgdmjsum, 2), zghsywfgdzs = zghsywfgdzscount, zghsywfgdgdmj = Math.Round(zghsywfgdgdmjsum, 2) }); return new Response> { Result = listResp, Message = "获取数据成功" }; } /// /// 无人机全域巡查图斑下发情况统计表 /// /// /// /// public Response> CaseOffencetbForExcel(DateTime startTime, DateTime endTime, string tubanlaiyuan) { var user = _auth.GetCurrentUser().User; var orgIds = base._auth.GetCurrentUser().Orgs; List listResp = new List(); double SumArea(IEnumerable cases, Func selector) { var sum = cases .Select(selector) .Where(area => !string.IsNullOrEmpty(area)) .Sum(area => double.TryParse(area, out var result) ? result : 0); return Math.Round(sum, 2); // 保留两位小数 } List org = new List(); List caseList = new List(); var tubanlaiyuanList = string.IsNullOrEmpty(tubanlaiyuan) ? new List() : tubanlaiyuan.Split(",").ToList(); if (orgIds.Any(r => r.Level == 0) || user.Id == -1) // 查询全部 { org = client.Queryable().Where(r => r.Level == 1).ToList(); caseList = client.Queryable() .LeftJoin((a, b) => SqlFunc.JsonField(b.InstanceInfo, "pkeyValue") == a.Id) .Where((a, b) => a.synchronoustime >= startTime && a.synchronoustime <= endTime && a.is_closed == 0) .WhereIF(!string.IsNullOrEmpty(tubanlaiyuan), (a, b) => tubanlaiyuanList.Contains(a.tubanlaiyuan)) .Where((a, b) => !string.IsNullOrEmpty(b.Id)).ToList(); } else if (orgIds.Any(r => r.Level == 1)) { //县区数据 org = client.Queryable() .Where(r => r.Level == 2 && orgIds.Select(a => a.Id).Contains(r.ParentId)).ToList(); caseList = client.Queryable() .LeftJoin((a, b) => SqlFunc.JsonField(b.InstanceInfo, "pkeyValue") == a.Id) .WhereIF(!string.IsNullOrEmpty(tubanlaiyuan), (a, b) => tubanlaiyuanList.Contains(a.tubanlaiyuan)) .Where((a, b) => a.synchronoustime >= startTime && a.synchronoustime <= endTime && a.is_closed == 0) .Where((a, b) => !string.IsNullOrEmpty(b.Id)).ToList(); } foreach (var item in org) { var countyIdString = item.Id.ToString(); var casesForCounty = caseList.Where(r => r.countyid == countyIdString || r.streetid == countyIdString) .ToList(); //建设用地 var jsydtbzs = casesForCounty.Count(r => r.typename == "建设用地"); double jsydmj = SumArea(casesForCounty.Where(r => r.typename == "建设用地"), r => r.area); //农用地 var nydtbzs = casesForCounty.Count(r => r.typename == "农用地"); double nydmj = SumArea(casesForCounty.Where(r => r.typename == "农用地"), r => r.area); double nydgdmj = SumArea(casesForCounty.Where(r => r.typename == "农用地"), r => r.gengdi_area); //推堆土 var tdttbzs = casesForCounty.Count(r => r.typename == "推堆土"); double tdtmj = SumArea(casesForCounty.Where(r => r.typename == "推堆土"), r => r.area); double tdtgdmj = SumArea(casesForCounty.Where(r => r.typename == "推堆土"), r => r.gengdi_area); //总计 var zjttbzs = jsydtbzs + nydtbzs + tdttbzs; double zjmj = jsydmj + nydmj + tdtmj; double zjgdmj = nydgdmj + tdtgdmj; OffenceTBResp offenceResp = new OffenceTBResp { countyid = item.Id, countyname = item.Name, jsydtbzs = jsydtbzs, jsydmj = Math.Round(jsydmj, 2), nydtbzs = nydtbzs, nydmj = Math.Round(nydmj, 2), nydgdmj = Math.Round(nydgdmj, 2), tdttbzs = tdttbzs, tdtmj = Math.Round(tdtmj, 2), tdtgdmj = Math.Round(tdtgdmj, 2), zjttbzs = zjttbzs, zjmj = Math.Round(zjmj, 2), zjgdmj = Math.Round(zjgdmj, 2), }; listResp.Add(offenceResp); } listResp = listResp.OrderByDescending(r => r.zjttbzs).ToList(); return new Response> { Result = listResp, Message = "获取数据成功" }; } public async Task>>> LoadCaseInfoListOffence(QueryCaseOffencetReq req) { var user = _auth.GetCurrentUser().User; var orgIds = base._auth.GetCurrentUser().Orgs; RefAsync totalcount = 0; //// 只查询农用地案件 //var casetype = client.Queryable() // .Where(r => r.ItemCode == "DRONE_CASE_TYPE" && r.ItemValue == "DRONE_CASE_TYPE_NYD") // .Select(r => r.ItemDetailId) // .First(); // 查询案件列表的基础查询 List tubanlaiyuanList = string.IsNullOrEmpty(req.tubanlaiyuan) ? new List() : req.tubanlaiyuan.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); var baseQuery = client.Queryable() .LeftJoin((a, b) => b.Id == a.Id) .WhereIF(!string.IsNullOrEmpty(req.tubanlaiyuan), (a, b) => tubanlaiyuanList.Contains(a.tubanlaiyuan)) .Where((a, b) => a.synchronoustime >= req.StartTime && a.synchronoustime <= req.EndTime) .Where((a, b) => a.typename == "农用地" && a.is_closed == 0) .Where((a, b) => !string.IsNullOrEmpty(b.Id)); // 根据用户角色和区域进行过滤 if (orgIds.Any(r => r.Level == 0) || user.Id == -1) { var orgIds_c = client.Queryable().Where(r => r.Level == 1).Select(r => r.Id.ToString()).ToList(); baseQuery = req.AreaId == "0" ? baseQuery.Where(a => orgIds_c.Contains(a.countyid)) : baseQuery.Where(a => a.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() .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(a => orgIds_c.Contains(a.streetid)) : baseQuery.Where(a => a.streetid == req.AreaId); } else { return new Response>> { Result = new PageInfo>(), Message = "暂无数据" }; } // 根据案件类型进行过滤和排序 switch (req.CaseType) { case 2: baseQuery = baseQuery.Where(a => a.is_illegal == 0 && a.handle_status_id == 5); break; case 3: baseQuery = baseQuery.Where(a => (a.is_illegal == 1 && a.handle_status_id == 5) || a.handle_status_id != 5); break; case 4: baseQuery = baseQuery.Where(a => a.is_illegal == 2 && a.handle_status_id == 5); break; case 5: baseQuery = baseQuery.Where(a => a.weifaleixing == 1 && a.handle_status_id == 5 && a.is_illegal == 1); break; case 6: baseQuery = baseQuery.Where(a => a.measure_name == "1" && a.handle_status_id == 5 && a.is_illegal == 1 && a.weifaleixing == 0); break; case 7: baseQuery = baseQuery.Where(a => a.measure_name == "0" && a.handle_status_id == 5 && a.is_illegal == 1 && a.weifaleixing == 0); break; case 8: //baseQuery = baseQuery.Where(a => // ((a.is_illegal == 1 && a.handle_status_id == 5) || a.handle_status_id != 5) && // !(a.weifaleixing == 1 && a.handle_status_id == 5 && a.is_illegal == 1) && // !((string.IsNullOrEmpty(a.gengdi_area) || a.gengdi_area == "0" || a.gengdi_area == "0.00") && // a.handle_status_id == 5 // && (a.handle_status_id != 5 || (a.is_illegal == 1 && a.handle_status_id == 5)))); baseQuery = baseQuery.Where(a => (!(string.IsNullOrEmpty(a.gengdi_area) || a.gengdi_area == "0" || a.gengdi_area == "0.00") && a.handle_status_id != 5) || (a.handle_status_id == 5 && a.weifaleixing == 0 && a.is_illegal == 1 && !(string.IsNullOrEmpty(a.gengdi_area) || a.gengdi_area == "0" || a.gengdi_area == "0.00"))); break; case 9: //baseQuery = baseQuery.Where(a => // ((a.is_illegal == 1 && a.handle_status_id == 5) || a.handle_status_id != 5) && // !(a.weifaleixing == 1 && a.handle_status_id == 5 && a.is_illegal == 1) && // !((string.IsNullOrEmpty(a.gengdi_area) || a.gengdi_area == "0" || a.gengdi_area == "0.00") && // a.handle_status_id == 5 && // (a.handle_status_id != 5 || (a.is_illegal == 1 && a.handle_status_id == 5))) && // !(a.measure_name == "1" && a.handle_status_id == 5 && a.weifaleixing == 0) && // !(a.measure_name == "0" && a.handle_status_id == 5 && a.weifaleixing == 0)); baseQuery = baseQuery.Where(a => (!(string.IsNullOrEmpty(a.gengdi_area) || a.gengdi_area == "0" || a.gengdi_area == "0.00")) && a.handle_status_id != 5); break; case 10: //(r.weifaleixing == 0 && r.is_illegal == 1 && r.handle_status_id == 5) || r.handle_status_id != 5) baseQuery = baseQuery.Where(a => (a.weifaleixing == 0 && a.is_illegal == 1 && a.handle_status_id == 5) || a.handle_status_id != 5); break; default: break; } baseQuery = baseQuery.OrderByDescending(a => a.synchronoustime); // 获取分页结果 var result = await baseQuery.ToPageListAsync(req.page, req.limit, totalcount); return new Response>> { Result = new PageInfo> { Items = result, Total = totalcount }, Message = "获取数据成功" }; } //导出汇总 public Response CaseOffenceToExcel(List list) { Response response = new Response(); 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 (NPOI.SS.UserModel.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 CaseOffenceSimpleToExcel(DateTime startTime, DateTime endTime) //{ // Response response = new Response(); // 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 CaseOffenceSimpleToExcel(DateTime startTime, DateTime endTime, string tubanlaiyuan) { Response response = new Response(); 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 (NPOI.SS.UserModel.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 CaseOffenceSimpleToExcel2(DateTime startTime, DateTime endTime, string tubanlaiyuan) { Response response = new Response(); try { var list = CaseOffence(startTime, endTime, tubanlaiyuan).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 (NPOI.SS.UserModel.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 CaseOfWrjqyxctbzgqktjbToExcel(DateTime startTime, DateTime endTime, string tubanlaiyuan) { Response response = new Response(); try { var list = CaseOffenceForExcel(startTime, endTime, tubanlaiyuan).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 (NPOI.SS.UserModel.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 CaseOfWrjqyxctbxfqktjbToExcel(DateTime startTime, DateTime endTime, string tubanlaiyuan) { Response response = new Response(); try { var list = CaseOffencetbForExcel(startTime, endTime, tubanlaiyuan).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, 12, "宋体", 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, 12, "宋体", 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; } } #endregion #endregion #region 第二个sheet ISheet sheet2 = workbook.CreateSheet("Sheet2"); #region 创建表头 IRow row20 = CreateRowWithHeight(sheet2, 0, 28); row20.CreateCell(0).SetCellValue("无人机全域巡查图斑下发情况统计表"); //for (int k = 1; k < 8; k++) row20.CreateCell(k); IRow row21 = CreateRowWithHeight(sheet2, 1, 15); 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); row21.CreateCell(8); row21.CreateCell(9); row21.CreateCell(10).SetCellValue("单位:个、亩"); row21.CreateCell(11); IRow row22 = CreateRowWithHeight(sheet2, 2, 25); row22.CreateCell(0).SetCellValue("县区"); row22.CreateCell(1).SetCellValue("建设用地"); row22.CreateCell(2); row22.CreateCell(3).SetCellValue("农用地"); row22.CreateCell(4); row22.CreateCell(5); row22.CreateCell(6).SetCellValue("推堆土"); row22.CreateCell(7); row22.CreateCell(8); row22.CreateCell(9).SetCellValue("总计"); row22.CreateCell(10); row22.CreateCell(11); 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("面积"); row23.CreateCell(8).SetCellValue("耕地面积"); row23.CreateCell(9).SetCellValue("个数"); row23.CreateCell(10).SetCellValue("面积"); row23.CreateCell(11).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, 11)); // 合并标题行 sheet2.AddMergedRegion(new CellRangeAddress(1, 1, 0, 2)); sheet2.AddMergedRegion(new CellRangeAddress(2, 2, 1, 2)); sheet2.AddMergedRegion(new CellRangeAddress(2, 2, 3, 5)); sheet2.AddMergedRegion(new CellRangeAddress(2, 2, 6, 8)); sheet2.AddMergedRegion(new CellRangeAddress(2, 2, 9, 11)); sheet2.AddMergedRegion(new CellRangeAddress(2, 3, 0, 0)); //县区 sheet2.AddMergedRegion(new CellRangeAddress(1, 1, 10, 11)); // 设置列宽 int[] normalColumns2 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; foreach (var index in normalColumns2) sheet2.SetColumnWidth(index, 10 * 256); // 设置列宽 #endregion #region 填充数据 for (int i = 0; i < list.Count - 1; i++) { var rowIndex = i + 4; // 数据从第5行开始 var row = CreateRowWithHeight(sheet2, rowIndex, 22); row.CreateCell(0).SetCellValue(list[i].countyname ?? ""); row.CreateCell(1).SetCellValue(list[i].jsydtbzs); row.CreateCell(2).SetCellValue(list[i].jsydmj); row.CreateCell(3).SetCellValue(list[i].nydtbzs); row.CreateCell(4).SetCellValue(list[i].nydmj); row.CreateCell(5).SetCellValue(list[i].nydgdmj); row.CreateCell(6).SetCellValue(list[i].tdttbzs); row.CreateCell(7).SetCellValue(list[i].tdtmj); row.CreateCell(8).SetCellValue(list[i].tdtgdmj); row.CreateCell(9).SetCellValue(list[i].zjttbzs); row.CreateCell(10).SetCellValue(list[i].zjmj); row.CreateCell(11).SetCellValue(list[i].zjgdmj); SetCellStyle(row, contentStyle22); } //创建备注行 var rowbz = CreateRowWithHeight(sheet2, list.Count + 3, 15); sheet2.AddMergedRegion(new CellRangeAddress(list.Count + 3, list.Count + 3, 0, 11)); 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); rowbz.CreateCell(8); rowbz.CreateCell(9); rowbz.CreateCell(10); rowbz.CreateCell(11); 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> ExprotCaseListByType(QueryCaseOffencetReq req) { var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; if (user == null) { return new Response> { Code = 401, Message = "Unauthorized" }; } RefAsync totalcount = 0; string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=@UserId"; int level = client.Ado.GetInt(sql1, new { UserId = user.Id }); List deplist = new List(); if (level != 0 && user.Id != -1) { var departs = client.Queryable().Where(r => r.UserId == user.Id).ToList(); foreach (var item in departs) { var list = client.Queryable().ToChildList(it => it.ParentId, item.OrgId) ?.Select(it => it.Id.ToString()).ToList(); deplist = deplist.Union(list).ToList(); } } //var casetype = client.Queryable() // .Where(r => r.ItemCode == "DRONE_CASE_TYPE" && r.ItemValue == "DRONE_CASE_TYPE_NYD") // .First()?.ItemDetailId; //var casetype = "农用地"; string sqlpart = BuildSqlPart(req.AreaId, level, deplist); if (!string.IsNullOrEmpty(req.tubanlaiyuan)) { var tubanlaiyuanList = req.tubanlaiyuan.Split(",").ToList(); sqlpart += $" and tubanlaiyuan in ('{string.Join("','", tubanlaiyuanList)}')"; } //var resubmit = client.Queryable().Select(r => r.CaseNo).ToList(); string sql = @$"SELECT a.""Id"", countyname, streetname,communityname,original_case_no,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, NULLIF(area, '')::numeric AS area, case when is_illegal=1 then actual_use_to when is_illegal=2 then qita_use_to end as qtsjyt, NULLIF(nongyongdi_area, '')::numeric AS nongyongdiArea, NULLIF(yongjiujibennongtian_area, '')::numeric, 0 AS yongnongArea, NULLIF(gengdi_area, '')::numeric 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_single a LEFT JOIN wf_process b on b.""InstanceInfo""->>'pkeyValue'=a.""Id"" WHERE is_closed = 0 and b.""Id"" is not null and synchronoustime >= @StartTime and synchronoustime <= @EndTime and typename = @CaseTypeId {sqlpart}"; var caseList = client.Ado.SqlQuery(sql, new { StartTime = req.StartTime, EndTime = req.EndTime, CaseTypeId = "农用地", @AreaId = req.AreaId }); caseList = FilterCasesByType(req.CaseType, caseList); return new Response> { Result = caseList }; } private string BuildSqlPart(string areaId, int level, List 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 FilterCasesByType(int caseType, List 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 ListToExcelByCaseType(List list, List headers) { var response = new Response(); 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 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 list, List 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 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(query); if (data == null || data.Count == 0) { throw new Exception("暂无数据"); } List features = new List(); 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 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_shp WHERE gid IN ({gidsString})"; // 执行查询 var data = client.Ado.SqlQuery(query); if (data == null || data.Count == 0) { throw new Exception("暂无数据"); } List features = new List(); 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 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 = System.IO.Path.ChangeExtension(shpPath, "prj"); File.WriteAllText(cpgPath, prjStr, Encoding.UTF8); NetTopologySuite.IO.Esri.Shapefile.WriteAllFeatures(features, shpPath, encoding: Encoding.UTF8); } public void CreateZipFromShapefiles(string shpPath, string zipPath) { var files = new List { System.IO.Path.ChangeExtension(shpPath, "cpg"), shpPath, System.IO.Path.ChangeExtension(shpPath, "shx"), System.IO.Path.ChangeExtension(shpPath, "dbf"), System.IO.Path.ChangeExtension(shpPath, "prj") }; using (var zipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Create)) { foreach (var file in files) { if (File.Exists(file)) { zipArchive.CreateEntryFromFile(file, System.IO.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 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 #region 添加图片信息 public Response AddCaseImg(List imgList) { try { //var imgList = Newtonsoft.Json.JsonConvert.DeserializeObject>(info); client.Insertable(imgList).ExecuteCommand(); return new Response { Result = true, Message = "添加成功", }; } catch (Exception ex) { return new Response { Result = false, Message = "添加失败", }; } } /// /// 获取图片信息 /// /// /// public async Task>> LoadCaseImgList(string caseid, string category) { List imageList = new List(); RefAsync totalcount = 0; switch (category) { case "设施农用地": //查询案件的填报(anjianzhaopian)和整改图片信息(chaichufugenghoupic),补办手续(bubanzhaopian) var caseImg0 = await client.Queryable().FirstAsync(r => r.Id == caseid); if (caseImg0 != null) { // 合并 AddImagesToList(caseImg0.wjzp_kg, imageList); AddImagesToList(caseImg0.njzp_kg, imageList); AddImagesToList(caseImg0.wjzp_kgzg, imageList); AddImagesToList(caseImg0.njzp_kgzg, imageList); AddImagesToList(caseImg0.wjzp_jz, imageList); AddImagesToList(caseImg0.njzp_jz, imageList); AddImagesToList(caseImg0.wjzp_jzzg, imageList); AddImagesToList(caseImg0.njzp_jzzg, imageList); AddImagesToList(caseImg0.wjzp_wg, imageList); AddImagesToList(caseImg0.njzp_wg, imageList); AddImagesToList(caseImg0.wjzp_wgzg, imageList); AddImagesToList(caseImg0.njzp_wgzg, imageList); List subs = await client.Queryable() .Where(r => r.ssnyd_id == caseid).ToListAsync(); foreach (var sub in subs) { AddImagesToList(sub.wjzp_rc, imageList); AddImagesToList(sub.njzp_rc, imageList); AddImagesToList(sub.wjzp_rczg, imageList); AddImagesToList(sub.njzp_rczg, imageList); AddImagesToList(sub.wjzp_rcfh, imageList); AddImagesToList(sub.njzp_rcfh, imageList); } } break; case "违法用地": //查询案件的填报(anjianzhaopian)和整改图片信息(chaichufugenghoupic),补办手续(bubanzhaopian) var caseImg1 = await client.Queryable().FirstAsync(r => r.Id == caseid); if (caseImg1 != null) { // 合并 AddImagesToList(caseImg1.anjianzhaopian, imageList); AddImagesToList(caseImg1.chaichufugenghoupic, imageList); AddImagesToList(caseImg1.bubanzhaopian, imageList); } break; case "非法采矿卫片下发": var caseImg2 = await client.Queryable().FirstAsync(r => r.Id == caseid); if (caseImg2 != null) { // 合并 AddImagesToList(caseImg2.anjianzhaopian, imageList); AddImagesToList(caseImg2.chaichufugenghoupic, imageList); AddImagesToList(caseImg2.bubanzhaopian, imageList); } break; case "非法采矿工作管理": var caseImg3 = await client.Queryable().FirstAsync(r => r.Id == caseid); if (caseImg3 != null) { // 合并 AddImagesToList(caseImg3.zhaopian_fill, imageList); AddImagesToList(caseImg3.zhaopianqian_jgzhg, imageList); AddImagesToList(caseImg3.zhaopianhou_jgzhg, imageList); AddImagesToList(caseImg3.zhaopian_reform, imageList); //AddImagesToList(caseImg3.waiyepaizhao, imageList); } break; case "耕地非粮化": var caseImg4 = await client.Queryable().FirstAsync(r => r.Id == caseid); if (caseImg4 != null) { // 合并 AddImagesToList(caseImg4.anjianzhaopian, imageList); AddImagesToList(caseImg4.chaichufugenghoupic, imageList); AddImagesToList(caseImg4.bubanzhaopian, imageList); } break; case "重点问题Ⅰ类": var caseImg5 = await client.Queryable().FirstAsync(r => r.Id == caseid); if (caseImg5 != null) { // 合并 AddImagesToList(caseImg5.anjianzhaopian, imageList); } break; case "重点问题Ⅱ类": var caseImg6 = await client.Queryable().FirstAsync(r => r.Id == caseid); if (caseImg6 != null) { // 合并 AddImagesToList(caseImg6.anjianzhaopian, imageList); } break; case "巡察审计": //查询案件的填报(anjianzhaopian)和整改图片信息(chaichufugenghoupic),补办手续(bubanzhaopian) var caseImg7 = await client.Queryable().FirstAsync(r => r.Id == caseid); if (caseImg7 != null) { // 合并 AddImagesToList(caseImg7.anjianzhaopian, imageList); AddImagesToList(caseImg7.chaichufugenghoupic, imageList); AddImagesToList(caseImg7.bubanzhaopian, imageList); } break; } var caseList = await client.Queryable() .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>() { Result = caseList }; } void AddImagesToList(string images, List list) { if (!string.IsNullOrEmpty(images)) { list.AddRange(images.Split(',').Where(item => !string.IsNullOrWhiteSpace(item))); } } public Response DeleteCaseImg(string path, string fieldName, string caseid, string dataTable) { try { client.Ado.BeginTran(); //删除相位角图片数据 client.Deleteable(r => r.FilePath == path).ExecuteCommand(); //更新案件信息 path = path.Replace(@"\", @"\\"); string sql = "UPDATE " + dataTable + " SET " + fieldName + " = regexp_replace(" + fieldName + ", ',?" + path + "', '','g') WHERE \"Id\" = '" + caseid + "'"; //path = path + ","; //string sql = "UPDATE " + dataTable + " SET " + fieldName + " = REPLACE(" + fieldName + ", '" + path + "', '') WHERE \"Id\" = '" + caseid + "'"; var a = client.Ado.ExecuteCommand(sql); client.Ado.CommitTran(); return new Response { Result = true, Message = "删除成功", }; } catch (Exception ex) { client.Ado.RollbackTran(); return new Response { Result = false, Message = "删除失败", }; } } #endregion #region 获取图斑信息 /// /// 获取图片信息 /// /// /// public async Task>> LoadDroneShpDataById(string caseid) { RefAsync totalcount = 0; var caseList = await client .SqlQueryable("select st_astext(geom) as geom from drone_shp_data where relid = '" + caseid + "'") .ToListAsync(); return new Response>() { Result = caseList }; } /// /// 获取图斑中心点数据 /// /// /// /// 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(sql.ToString()); return result; } /// /// 根据表名获取矢量切片 /// /// /// 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; } /// /// 根据表名获取矢量切片 /// /// /// public async Task QueryVectorTileByTableAsync(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 = await _commonDataManager.VectorTileAsync(searchModel); return result; } #endregion #region 案件操作历史记录 /// /// 获取所有的案件信息 /// /// 案件编号查询 /// public async Task>>> LoadCaseInfoListForUpdate( DroneCaseForChangeReq req) { RefAsync totalcount = 0; //var caseList = await client.Queryable() // .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() .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)) .Where(r => r.handle_status_id < 4 && r.is_closed == 0) .OrderByDescending(r => r.createtime) .Select(r => new DroneCaseInfoSingle { Id = r.Id.SelectAll(), }) .ToPageListAsync(req.page, req.limit, totalcount); return new Response>>() { Result = new PageInfo> { Items = caseList, Total = totalcount } }; } /// /// 获取单个案件信息 /// /// 案件id /// public async Task> LoadCaseInfoById(string id) { var caseInfo = await client.Queryable().FirstAsync(r => r.Id == id); return new Response() { Result = caseInfo }; } /// /// 获取案件历史信息 /// /// /// public async Task>>> LoadCaseHistoryInfoList(PageReq req) { RefAsync totalcount = 0; var caseList = await client.Queryable() .WhereIF(!string.IsNullOrEmpty(req.key), r => r.Id == req.key) .OrderByDescending(r => r.recordingtime) .ToPageListAsync(req.page, req.limit, totalcount); return new Response>>() { Result = new PageInfo> { Items = caseList, Total = totalcount } }; } //修改案件信息 public async Task> UpdateCaseInfo(DroneCaseInfoSingle req, string shppath) { using (var db = base.UnitWork.CreateContext()) { StringBuilder geom = new StringBuilder(); if (!string.IsNullOrEmpty(shppath)) { geom = await ReadShapefile(shppath, req.Id); } // 使用事务提交数据 // 记录案件信息 var caseInfo = await db.DroneCaseInfoSingle.GetFirstAsync(r => r.Id == req.Id); if (caseInfo == null) { throw new Exception("图斑信息未找到"); } var caseHistory = caseInfo.MapTo(); caseHistory.newid = Guid.NewGuid().ToString(); caseHistory.recordingtime = DateTime.Now; caseHistory.recordingpeople = _auth.GetUserId(); await db.DroneCaseInfoSingleHistory.InsertAsync(caseHistory); req.nongyongdi_area = string.IsNullOrEmpty(req.nongyongdi_area) ? "0" : Math.Round(double.Parse(req.nongyongdi_area), 2).ToString(); req.area = string.IsNullOrEmpty(req.area) ? "0" : Math.Round(double.Parse(req.area), 2).ToString(); req.gengdi_area = string.IsNullOrEmpty(req.gengdi_area) ? "0" : Math.Round(double.Parse(req.gengdi_area), 2).ToString(); req.yongjiujibennongtian_area = string.IsNullOrEmpty(req.yongjiujibennongtian_area) ? "0" : Math.Round(double.Parse(req.yongjiujibennongtian_area), 2).ToString(); req.zhongdianquyu_area = string.IsNullOrEmpty(req.zhongdianquyu_area) ? "0" : Math.Round(double.Parse(req.zhongdianquyu_area), 2).ToString(); req.shengtaibaohuhongxian_area = string.IsNullOrEmpty(req.shengtaibaohuhongxian_area) ? "0" : Math.Round(double.Parse(req.shengtaibaohuhongxian_area), 2).ToString(); req.guotukongjianguihua_area = string.IsNullOrEmpty(req.guotukongjianguihua_area) ? "0" : Math.Round(double.Parse(req.guotukongjianguihua_area), 2).ToString(); // 更新案件信息 await db.DroneCaseInfoSingle.UpdateAsync(it => new DroneCaseInfoSingle() { case_no = req.case_no, case_description = req.case_description, address = req.address, //typeid = req.typeid, //typename = req.typename, countyid = req.countyid, countyname = req.countyname, streetid = req.streetid, streetname = req.streetname, communityid = req.communityid, communityname = req.communityname, area = req.area, casepic = req.casepic, nongyongdi_area = req.nongyongdi_area, gengdi_area = req.gengdi_area, yongjiujibennongtian_area = req.yongjiujibennongtian_area, zhongdianquyu_area = req.zhongdianquyu_area, shengtaibaohuhongxian_area = req.shengtaibaohuhongxian_area, guotukongjianguihua_area = req.guotukongjianguihua_area, remark = req.remark, }, it => it.Id == req.Id); if (!string.IsNullOrEmpty(shppath)) { //记录历史 多图斑数据未处理 var shpdata = await db.DroneShpData.GetFirstAsync(r => r.relid == req.Id); var shpHistory = shpdata.MapTo(); shpHistory.id = Guid.NewGuid().ToString(); shpHistory.recordingtime = DateTime.Now; shpHistory.recordingpeople = _auth.GetUserId(); await db.DroneShpDataHistory.InsertAsync(shpHistory); await db.Db.Ado.ExecuteCommandAsync(geom.ToString()); } var flag = db.Commit(); return new Response { Code = 200, Result = flag, Message = flag ? "更新成功" : "更新失败" }; } } private async Task ReadShapefile(string zipFilePath, string Id) { var extractPath = zipFilePath.Substring(0, zipFilePath.LastIndexOf(".")) + "extract"; //解压缩 await UnZip(zipFilePath, extractPath); var searchPattern = "*.shp"; // 设置你想要遍历的文件后缀名 var fileName = Directory.GetFiles(extractPath, searchPattern, SearchOption.AllDirectories); string shpFileName = fileName[0]; // 创建一个 ShapefileDataReader 对象 using (var reader = new ShapefileDataReader(shpFileName, GeometryFactory.Default)) { StringBuilder geomSql = new StringBuilder(); while (reader.Read()) { // 获取几何数据 Geometry geometry = reader.Geometry; if (!geometry.IsValid) { throw new Exception("图斑未闭合,请重新整理数据"); } // 如果几何数据是一个多边形(Polygon),需要转换为 MultiPolygon MultiPolygon multiPolygon; if (geometry is Polygon polygon) { // 单个Polygon转MultiPolygon multiPolygon = new MultiPolygon(new[] { polygon }); } else if (geometry is MultiPolygon existingMultiPolygon) { // 如果已经是MultiPolygon,直接使用 multiPolygon = existingMultiPolygon; } else { // 如果是其他类型的几何图形,可以根据需求进行处理 throw new Exception("几何图形不是多边形或多重多边形类型"); } // 将几何数据转换为 WKT 格式,并用 SRID 4326 var geometryForWgs84 = multiPolygon.Copy(); geometryForWgs84.SRID = 4326; //var geometryForWgs84 = GeometryFactory.Default.WithSRID(4326).CreateGeometry(geometry); geomSql.AppendFormat( $" update drone_shp_data set geom = '{geometryForWgs84.AsText()}' where \"relid\" = '{Id}';"); } return geomSql; } } #region 多图斑案件修改 public async Task> UpdateCaseInfoMore(DroneCaseInfoSingle req, string shppath) { using (var db = base.UnitWork.CreateContext()) { // 记录案件信息 var caseInfo = await db.DroneCaseInfoSingle.GetFirstAsync(r => r.Id == req.Id); if (caseInfo == null) { throw new Exception("图斑信息未找到"); } var caseHistory = caseInfo.MapTo(); caseHistory.newid = Guid.NewGuid().ToString(); caseHistory.recordingtime = DateTime.Now; caseHistory.recordingpeople = _auth.GetUserId(); await db.DroneCaseInfoSingleHistory.InsertAsync(caseHistory); req.nongyongdi_area = string.IsNullOrEmpty(req.nongyongdi_area) ? "0" : Math.Round(double.Parse(req.nongyongdi_area), 2).ToString(); req.area = string.IsNullOrEmpty(req.area) ? "0" : Math.Round(double.Parse(req.area), 2).ToString(); req.gengdi_area = string.IsNullOrEmpty(req.gengdi_area) ? "0" : Math.Round(double.Parse(req.gengdi_area), 2).ToString(); req.yongjiujibennongtian_area = string.IsNullOrEmpty(req.yongjiujibennongtian_area) ? "0" : Math.Round(double.Parse(req.yongjiujibennongtian_area), 2).ToString(); req.zhongdianquyu_area = string.IsNullOrEmpty(req.zhongdianquyu_area) ? "0" : Math.Round(double.Parse(req.zhongdianquyu_area), 2).ToString(); req.shengtaibaohuhongxian_area = string.IsNullOrEmpty(req.shengtaibaohuhongxian_area) ? "0" : Math.Round(double.Parse(req.shengtaibaohuhongxian_area), 2).ToString(); req.guotukongjianguihua_area = string.IsNullOrEmpty(req.guotukongjianguihua_area) ? "0" : Math.Round(double.Parse(req.guotukongjianguihua_area), 2).ToString(); // 更新案件信息 await db.DroneCaseInfoSingle.UpdateAsync(it => new DroneCaseInfoSingle() { case_no = req.case_no, case_description = req.case_description, address = req.address, //typeid = req.typeid, //typename = req.typename, countyid = req.countyid, countyname = req.countyname, streetid = req.streetid, streetname = req.streetname, communityid = req.communityid, communityname = req.communityname, area = req.area, casepic = req.casepic, nongyongdi_area = req.nongyongdi_area, gengdi_area = req.gengdi_area, yongjiujibennongtian_area = req.yongjiujibennongtian_area, zhongdianquyu_area = req.zhongdianquyu_area, shengtaibaohuhongxian_area = req.shengtaibaohuhongxian_area, guotukongjianguihua_area = req.guotukongjianguihua_area, remark = req.remark, }, it => it.Id == req.Id); if (!string.IsNullOrEmpty(shppath)) { var geomList = await ReadShapefileMore(shppath); //记录历史 多图斑数据未处理 var shpdata = await db.DroneShpData.GetListAsync(r => r.relid == req.Id); if (geomList.Count != shpdata.Count) { throw new Exception("图斑数据信息不匹配"); } for (int i = 0; i < shpdata.Count; i++) { shpdata[i].geom = geomList[i]; var shpHistory = shpdata[i].MapTo(); shpHistory.id = Guid.NewGuid().ToString(); shpHistory.recordingtime = DateTime.Now; shpHistory.recordingpeople = _auth.GetUserId(); await db.DroneShpDataHistory.InsertAsync(shpHistory); await db.DroneShpData.UpdateAsync(shpdata[i]); } } var flag = db.Commit(); return new Response { Code = 200, Result = flag, Message = flag ? "更新成功" : "更新失败" }; } } private async Task> ReadShapefileMore(string zipFilePath) { var extractPath = zipFilePath.Substring(0, zipFilePath.LastIndexOf(".")) + "extract"; //解压缩 await UnZip(zipFilePath, extractPath); var searchPattern = "*.shp"; // 设置你想要遍历的文件后缀名 var fileName = Directory.GetFiles(extractPath, searchPattern, SearchOption.AllDirectories); string shpFileName = fileName[0]; // 创建一个 ShapefileDataReader 对象 using (var reader = new ShapefileDataReader(shpFileName, GeometryFactory.Default)) { List geomList = new List(); while (reader.Read()) { // 获取几何数据 Geometry geometry = reader.Geometry; if (!geometry.IsValid) { throw new Exception("图斑未闭合,请重新整理数据"); } // 如果几何数据是一个多边形(Polygon),需要转换为 MultiPolygon MultiPolygon multiPolygon; if (geometry is Polygon polygon) { // 单个Polygon转MultiPolygon multiPolygon = new MultiPolygon(new[] { polygon }); } else if (geometry is MultiPolygon existingMultiPolygon) { // 如果已经是MultiPolygon,直接使用 multiPolygon = existingMultiPolygon; } else { // 如果是其他类型的几何图形,可以根据需求进行处理 throw new Exception("几何图形不是多边形或多重多边形类型"); } // 将几何数据转换为 WKT 格式,并用 SRID 4326 var geometryForWgs84 = multiPolygon.Copy(); geometryForWgs84.SRID = 4326; geomList.Add(geometryForWgs84.AsText()); } return geomList; } } #endregion private static async Task UnZip(string zipFilePath, string extractPath) { await Task.Run(() => { Directory.CreateDirectory(extractPath); // 设置字符编码 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var gbk = Encoding.GetEncoding("utf-8"); using (var archive = ZipFile.OpenRead(zipFilePath)) { // 列举ZIP文件中的条目 foreach (var entry in archive.Entries) { var xxx = gbk.GetString(Encoding.Default.GetBytes(entry.FullName)); Console.WriteLine(xxx); } // 提取ZIP文件中的所有文件到指定目录 foreach (var entry in archive.Entries) { if (entry.Name != string.Empty) { // 确保完整路径存在 entry.FullName 是否可以编码 var fixedEntryName = entry.FullName.Replace("/", ""); var destinationPath = System.IO.Path.GetFullPath(System.IO.Path.Combine(extractPath, fixedEntryName)); Console.WriteLine("解压文件路径:" + destinationPath); if (!destinationPath.StartsWith(System.IO.Path.GetFullPath(extractPath) + System.IO.Path.DirectorySeparatorChar)) { throw new UnauthorizedAccessException("试图提取的文件超出了目标文件夹的路径边界。"); } // 提取条目到目标路径 entry.ExtractToFile(destinationPath, overwrite: true); } } } // 遍历解压目录,是否有shp后缀的文件 if (!Directory.Exists(extractPath)) { throw new Exception("文件解压失败"); } }); } /// /// 修改案件信息 /// /// /// /// public async Task> UpdateCaseInfoForAll(UpdateDroneCaseDataForAllReq req) { //_logger.LogError("保存表单数据接收: " + Newtonsoft.Json.JsonConvert.SerializeObject(req)); switch (req.subject) { case "违法用地": using (var db = UnitWork.CreateContext()) { var caseInfo = await db.DroneCaseInfoSingle.AsQueryable().FirstAsync(r => r.Id == req.Id); if (caseInfo == null) throw new Exception("未找到图斑信息"); await db.DroneCaseInfoSingle.UpdateAsync(it => new DroneCaseInfoSingle() { case_no = req.case_no, case_description = req.case_description, address = req.address, typeid = req.typeid, typename = req.typename, countyid = req.countyid, countyname = req.countyname, streetid = req.streetid, streetname = req.streetname, communityid = req.communityid, communityname = req.communityname, area = req.area, casepic = req.casepic, nongyongdi_area = req.nongyongdi_area, gengdi_area = req.gengdi_area, yongjiujibennongtian_area = req.yongjiujibennongtian_area, zhongdianquyu_area = req.zhongdianquyu_area, shengtaibaohuhongxian_area = req.shengtaibaohuhongxian_area, guotukongjianguihua_area = req.guotukongjianguihua_area, remark = req.remark, tubanlaiyuan = req.tubanlaiyuan, }, it => it.Id == req.Id); var result = db.Commit(); if (result) return new Response { Result = true, Code = 200, Message = "更新成功" }; else return new Response { Result = false, Code = 500, Message = "更新失败" }; } case "耕地非粮化": using (var db = base.UnitWork.CreateContext()) { var caseInfo = await db.DroneCaseInfoFLH.AsQueryable().FirstAsync(r => r.Id == req.Id); if (caseInfo == null) throw new Exception("未找到图斑信息"); await db.DroneCaseInfoFLH.UpdateAsync(it => new DroneCaseInfoFLH() { case_no = req.case_no, case_description = req.case_description, address = req.address, typeid = req.typeid, typename = req.typename, countyid = req.countyid, countyname = req.countyname, streetid = req.streetid, streetname = req.streetname, communityid = req.communityid, communityname = req.communityname, area = req.area, casepic = req.casepic, nongyongdi_area = req.nongyongdi_area, gengdi_area = req.gengdi_area, yongjiujibennongtian_area = req.yongjiujibennongtian_area, zhongdianquyu_area = req.zhongdianquyu_area, shengtaibaohuhongxian_area = req.shengtaibaohuhongxian_area, guotukongjianguihua_area = req.guotukongjianguihua_area, remark = req.remark, tubanlaiyuan = req.tubanlaiyuan, }, it => it.Id == req.Id); var result = db.Commit(); if (result) return new Response { Result = true, Code = 200, Message = "更新成功" }; else return new Response { Result = false, Code = 500, Message = "更新失败" }; } case "巡察审计": using (var db = base.UnitWork.CreateContext()) { var caseInfo = await db.DroneCaseInfoXcsj.AsQueryable().FirstAsync(r => r.Id == req.Id); if (caseInfo == null) throw new Exception("未找到图斑信息"); await db.DroneCaseInfoXcsj.UpdateAsync(it => new DroneCaseInfoXcsj() { case_no = req.case_no, case_description = req.case_description, address = req.address, typeid = req.typeid, typename = req.typename, countyid = req.countyid, countyname = req.countyname, streetid = req.streetid, streetname = req.streetname, communityid = req.communityid, communityname = req.communityname, area = req.area, casepic = req.casepic, nongyongdi_area = req.nongyongdi_area, gengdi_area = req.gengdi_area, yongjiujibennongtian_area = req.yongjiujibennongtian_area, zhongdianquyu_area = req.zhongdianquyu_area, shengtaibaohuhongxian_area = req.shengtaibaohuhongxian_area, guotukongjianguihua_area = req.guotukongjianguihua_area, remark = req.remark, tubanlaiyuan = req.tubanlaiyuan, }, it => it.Id == req.Id); var result = db.Commit(); if (result) return new Response { Result = true, Code = 200, Message = "更新成功" }; else return new Response { Result = false, Code = 500, Message = "更新失败" }; } case "重点问题Ⅰ类": using (var db = base.UnitWork.CreateContext()) { var caseInfo = await db.DroneCaseInfoZdwt1.AsQueryable().FirstAsync(r => r.Id == req.Id); if (caseInfo == null) throw new Exception("未找到图斑信息"); await db.DroneCaseInfoZdwt1.UpdateAsync(it => new DroneCaseInfoZdwt1() { case_no = req.case_no, case_description = req.case_description, address = req.address, typeid = req.typeid, typename = req.typename, countyid = req.countyid, countyname = req.countyname, streetid = req.streetid, streetname = req.streetname, communityid = req.communityid, communityname = req.communityname, area = req.area, casepic = req.casepic, nongyongdi_area = req.nongyongdi_area, gengdi_area = req.gengdi_area, yongjiujibennongtian_area = req.yongjiujibennongtian_area, zhongdianquyu_area = req.zhongdianquyu_area, shengtaibaohuhongxian_area = req.shengtaibaohuhongxian_area, guotukongjianguihua_area = req.guotukongjianguihua_area, remark = req.remark, tubanlaiyuan = req.tubanlaiyuan, //countyusable=req.countyusable }, it => it.Id == req.Id); var result = db.Commit(); if (result) return new Response { Result = true, Code = 200, Message = "更新成功" }; else return new Response { Result = false, Code = 500, Message = "更新失败" }; } case "重点问题Ⅱ类": using (var db = base.UnitWork.CreateContext()) { var caseInfo = await db.DroneCaseInfoZdwt2.AsQueryable().FirstAsync(r => r.Id == req.Id); if (caseInfo == null) throw new Exception("未找到图斑信息"); await db.DroneCaseInfoZdwt2.UpdateAsync(it => new DroneCaseInfoZdwt2() { case_no = req.case_no, case_description = req.case_description, address = req.address, typeid = req.typeid, typename = req.typename, countyid = req.countyid, countyname = req.countyname, streetid = req.streetid, streetname = req.streetname, communityid = req.communityid, communityname = req.communityname, area = req.area, casepic = req.casepic, nongyongdi_area = req.nongyongdi_area, gengdi_area = req.gengdi_area, yongjiujibennongtian_area = req.yongjiujibennongtian_area, zhongdianquyu_area = req.zhongdianquyu_area, shengtaibaohuhongxian_area = req.shengtaibaohuhongxian_area, guotukongjianguihua_area = req.guotukongjianguihua_area, remark = req.remark, tubanlaiyuan = req.tubanlaiyuan, //countyusable = req.countyusable }, it => it.Id == req.Id); var result = db.Commit(); if (result) return new Response { Result = true, Code = 200, Message = "更新成功" }; else return new Response { Result = false, Code = 500, Message = "更新失败" }; } case "非法采矿": using (var db = base.UnitWork.CreateContext()) { var caseInfo = await db.DroneCaseInfoMinerals.AsQueryable().FirstAsync(r => r.Id == req.Id); if (caseInfo == null) throw new Exception("未找到图斑信息"); await db.DroneCaseInfoMinerals.UpdateAsync(it => new DroneCaseInfoMinerals() { case_no = req.case_no, case_description = req.case_description, //address = req.address, //typeid = req.typeid, typename = req.typename, countyid = req.countyid, countyname = req.countyname, streetid = req.streetid, streetname = req.streetname, communityid = req.communityid, communityname = req.communityname, weifaarea_base = req.area, tubanpic_base = req.tubanpic_base, gengdi_area = req.gengdi_area, jbntarea_base = req.yongjiujibennongtian_area, stbhhxarea_base = req.shengtaibaohuhongxian_area, cskfbjarea_base = req.cskfbjarea_base, weifakaicaiarea_base = req.weifakaicaiarea_base, weifazhandiarea_base = req.weifazhandiarea_base, syear_base = req.syear_base, zhongdianflag_base = req.zhongdianflag_base, zhongdianname_base = req.zhongdianname_base, ziranbaohuflag_base = req.ziranbaohuflag_base, ziranbaohuname_base = req.ziranbaohuname_base, tubanlaiyuan = req.tubanlaiyuan, }, it => it.Id == req.Id); var result = db.Commit(); if (result) return new Response { Result = true, Code = 200, Message = "更新成功" }; else return new Response { Result = false, Code = 500, Message = "更新失败" }; } case "生态保护红线监管": using (var db = base.UnitWork.CreateContext()) { var caseInfo = await db.DroneCaseInfoSTHX.AsQueryable().FirstAsync(r => r.Id == req.Id); if (caseInfo == null) throw new Exception("未找到图斑信息"); await db.DroneCaseInfoSTHX.UpdateAsync(it => new DroneCaseInfoSTHX() { case_no = req.case_no, case_description = req.case_description, address = req.address, typeid = req.typeid, typename = req.typename, countyid = req.countyid, countyname = req.countyname, streetid = req.streetid, streetname = req.streetname, communityid = req.communityid, communityname = req.communityname, area = req.area, casepic = req.casepic, nongyongdi_area = req.nongyongdi_area, gengdi_area = req.gengdi_area, yongjiujibennongtian_area = req.yongjiujibennongtian_area, zhongdianquyu_area = req.zhongdianquyu_area, shengtaibaohuhongxian_area = req.shengtaibaohuhongxian_area, guotukongjianguihua_area = req.guotukongjianguihua_area, remark = req.remark, tubanlaiyuan = req.tubanlaiyuan, //countyusable=req.countyusable }, it => it.Id == req.Id); var result = db.Commit(); if (result) return new Response { Result = true, Code = 200, Message = "更新成功" }; else return new Response { Result = false, Code = 500, Message = "更新失败" }; } case "生态修复": using (var db = base.UnitWork.CreateContext()) { var caseInfo = await db.DroneCaseInfoSTXF.AsQueryable().FirstAsync(r => r.Id == req.Id); if (caseInfo == null) throw new Exception("未找到图斑信息"); await db.DroneCaseInfoSTXF.UpdateAsync(it => new DroneCaseInfoSTXF() { case_no = req.case_no, case_description = req.case_description, address = req.address, typeid = req.typeid, typename = req.typename, countyid = req.countyid, countyname = req.countyname, streetid = req.streetid, streetname = req.streetname, communityid = req.communityid, communityname = req.communityname, area = req.area, casepic = req.casepic, nongyongdi_area = req.nongyongdi_area, gengdi_area = req.gengdi_area, yongjiujibennongtian_area = req.yongjiujibennongtian_area, zhongdianquyu_area = req.zhongdianquyu_area, shengtaibaohuhongxian_area = req.shengtaibaohuhongxian_area, guotukongjianguihua_area = req.guotukongjianguihua_area, remark = req.remark, tubanlaiyuan = req.tubanlaiyuan, //countyusable=req.countyusable }, it => it.Id == req.Id); var result = db.Commit(); if (result) return new Response { Result = true, Code = 200, Message = "更新成功" }; else return new Response { Result = false, Code = 500, Message = "更新失败" }; } default: return new Response { Result = false, Code = 500, Message = "暂无该专题" }; } } /// /// 修改案件信息 /// /// /// /// public async Task> UpdateCaseNo(UpdateDroneCaseNoReq req) { string caseno; bool isUnique; Random random = new Random(); switch (req.subject) { case "违法用地": using (var db = UnitWork.CreateContext()) { var caseInfo = await db.DroneCaseInfoSingle.AsQueryable().FirstAsync(r => r.Id == req.Id); if (caseInfo == null) throw new Exception("未找到图斑信息"); if (!string.IsNullOrEmpty(caseInfo.case_no)) { await db.DroneCaseInfoSingle.UpdateAsync(it => new DroneCaseInfoSingle() { synchronoustime = DateTime.Now }, it => it.Id == req.Id); } else { do { caseno = "FN" + caseInfo.countyid + DateTime.Now.ToString("yyyyMMdd") + random.Next(1000, 9999).ToString(); var count = await db.DroneCaseInfoSingle.AsQueryable().Where(c => c.case_no == caseno) .CountAsync(); isUnique = count == 0; } while (!isUnique); await db.DroneCaseInfoSingle.UpdateAsync(it => new DroneCaseInfoSingle() { case_no = caseno, synchronoustime = DateTime.Now }, it => it.Id == req.Id); } var result = db.Commit(); if (result) return new Response { Result = true, Code = 200, Message = "更新成功" }; else return new Response { Result = false, Code = 500, Message = "更新失败" }; } case "耕地非粮化": using (var db = base.UnitWork.CreateContext()) { var caseInfo = await db.DroneCaseInfoFLH.AsQueryable().FirstAsync(r => r.Id == req.Id); if (caseInfo == null) throw new Exception("未找到图斑信息"); if (!string.IsNullOrEmpty(caseInfo.case_no)) { await db.DroneCaseInfoFLH.UpdateAsync(it => new DroneCaseInfoFLH() { synchronoustime = DateTime.Now }, it => it.Id == req.Id); } else { do { caseno = "FN" + caseInfo.countyid + DateTime.Now.ToString("yyyyMMdd") + random.Next(1000, 9999).ToString(); var count = await db.DroneCaseInfoFLH.AsQueryable().Where(c => c.case_no == caseno) .CountAsync(); isUnique = count == 0; } while (!isUnique); await db.DroneCaseInfoFLH.UpdateAsync(it => new DroneCaseInfoFLH() { case_no = caseno, synchronoustime = DateTime.Now }, it => it.Id == req.Id); } var result = db.Commit(); if (result) return new Response { Result = true, Code = 200, Message = "更新成功" }; else return new Response { Result = false, Code = 500, Message = "更新失败" }; } case "巡察审计": using (var db = base.UnitWork.CreateContext()) { var caseInfo = await db.DroneCaseInfoXcsj.AsQueryable().FirstAsync(r => r.Id == req.Id); if (caseInfo == null) throw new Exception("未找到图斑信息"); if (!string.IsNullOrEmpty(caseInfo.case_no)) { await db.DroneCaseInfoXcsj.UpdateAsync(it => new DroneCaseInfoXcsj() { synchronoustime = DateTime.Now }, it => it.Id == req.Id); } else { do { caseno = caseInfo.countyid + DateTime.Now.ToString("yyyyMMdd") + random.Next(1000, 9999).ToString(); var count = await db.DroneCaseInfoXcsj.AsQueryable().Where(c => c.case_no == caseno) .CountAsync(); isUnique = count == 0; } while (!isUnique); await db.DroneCaseInfoXcsj.UpdateAsync(it => new DroneCaseInfoXcsj() { case_no = caseno, synchronoustime = DateTime.Now }, it => it.Id == req.Id); } var result = db.Commit(); if (result) return new Response { Result = true, Code = 200, Message = "更新成功" }; else return new Response { Result = false, Code = 500, Message = "更新失败" }; } case "重点问题Ⅰ类": using (var db = base.UnitWork.CreateContext()) { var caseInfo = await db.DroneCaseInfoZdwt1.AsQueryable().FirstAsync(r => r.Id == req.Id); if (caseInfo == null) throw new Exception("未找到图斑信息"); if (!string.IsNullOrEmpty(caseInfo.case_no)) { await db.DroneCaseInfoZdwt1.UpdateAsync(it => new DroneCaseInfoZdwt1() { synchronoustime = DateTime.Now }, it => it.Id == req.Id); } else { do { caseno = "WJ" + caseInfo.countyid + DateTime.Now.ToString("yyyyMMdd") + random.Next(1000, 9999).ToString(); var count = await db.DroneCaseInfoZdwt1.AsQueryable().Where(c => c.case_no == caseno) .CountAsync(); isUnique = count == 0; } while (!isUnique); await db.DroneCaseInfoZdwt1.UpdateAsync(it => new DroneCaseInfoZdwt1() { case_no = caseno, synchronoustime = DateTime.Now }, it => it.Id == req.Id); } var result = db.Commit(); if (result) return new Response { Result = true, Code = 200, Message = "更新成功" }; else return new Response { Result = false, Code = 500, Message = "更新失败" }; } case "重点问题Ⅱ类": using (var db = base.UnitWork.CreateContext()) { var caseInfo = await db.DroneCaseInfoZdwt2.AsQueryable().FirstAsync(r => r.Id == req.Id); if (caseInfo == null) throw new Exception("未找到图斑信息"); if (!string.IsNullOrEmpty(caseInfo.case_no)) { await db.DroneCaseInfoZdwt2.UpdateAsync(it => new DroneCaseInfoZdwt2() { synchronoustime = DateTime.Now }, it => it.Id == req.Id); } else { do { caseno = "WJ" + caseInfo.countyid + DateTime.Now.ToString("yyyyMMdd") + random.Next(1000, 9999).ToString(); var count = await db.DroneCaseInfoZdwt2.AsQueryable().Where(c => c.case_no == caseno) .CountAsync(); isUnique = count == 0; } while (!isUnique); await db.DroneCaseInfoZdwt2.UpdateAsync(it => new DroneCaseInfoZdwt2() { case_no = caseno, synchronoustime = DateTime.Now }, it => it.Id == req.Id); } var result = db.Commit(); if (result) return new Response { Result = true, Code = 200, Message = "更新成功" }; else return new Response { Result = false, Code = 500, Message = "更新失败" }; } case "非法采矿": using (var db = base.UnitWork.CreateContext()) { var caseInfo = await db.DroneCaseInfoMinerals.AsQueryable().FirstAsync(r => r.Id == req.Id); if (caseInfo == null) throw new Exception("未找到图斑信息"); if (!string.IsNullOrEmpty(caseInfo.case_no)) { await db.DroneCaseInfoMinerals.UpdateAsync(it => new DroneCaseInfoMinerals() { xiafatime_base = DateTime.Now }, it => it.Id == req.Id); } else { do { caseno = "KC" + caseInfo.countyid + DateTime.Now.ToString("yyyyMMdd") + random.Next(1000, 9999).ToString(); var count = await db.DroneCaseInfoMinerals.AsQueryable().Where(c => c.case_no == caseno) .CountAsync(); isUnique = count == 0; } while (!isUnique); await db.DroneCaseInfoMinerals.UpdateAsync(it => new DroneCaseInfoMinerals() { case_no = caseno, xiafatime_base = DateTime.Now }, it => it.Id == req.Id); } var result = db.Commit(); if (result) return new Response { Result = true, Code = 200, Message = "更新成功" }; else return new Response { Result = false, Code = 500, Message = "更新失败" }; } case "生态保护红线监管": using (var db = base.UnitWork.CreateContext()) { var caseInfo = await db.DroneCaseInfoSTHX.AsQueryable().FirstAsync(r => r.Id == req.Id); if (caseInfo == null) throw new Exception("未找到图斑信息"); if (!string.IsNullOrEmpty(caseInfo.case_no)) { await db.DroneCaseInfoSTHX.UpdateAsync(it => new DroneCaseInfoSTHX() { synchronoustime = DateTime.Now }, it => it.Id == req.Id); } else { do { caseno = caseInfo.countyid + DateTime.Now.ToString("yyyyMMdd") + random.Next(1000, 9999).ToString(); var count = await db.DroneCaseInfoSTHX.AsQueryable().Where(c => c.case_no == caseno) .CountAsync(); isUnique = count == 0; } while (!isUnique); await db.DroneCaseInfoSTHX.UpdateAsync(it => new DroneCaseInfoSTHX() { case_no = caseno, synchronoustime = DateTime.Now }, it => it.Id == req.Id); } var result = db.Commit(); if (result) return new Response { Result = true, Code = 200, Message = "更新成功" }; else return new Response { Result = false, Code = 500, Message = "更新失败" }; } case "生态修复": using (var db = base.UnitWork.CreateContext()) { var caseInfo = await db.DroneCaseInfoSTXF.AsQueryable().FirstAsync(r => r.Id == req.Id); if (caseInfo == null) throw new Exception("未找到图斑信息"); if (!string.IsNullOrEmpty(caseInfo.case_no)) { await db.DroneCaseInfoSTXF.UpdateAsync(it => new DroneCaseInfoSTXF() { synchronoustime = DateTime.Now }, it => it.Id == req.Id); } else { do { caseno = caseInfo.countyid + DateTime.Now.ToString("yyyyMMdd") + random.Next(1000, 9999).ToString(); var count = await db.DroneCaseInfoSTXF.AsQueryable().Where(c => c.case_no == caseno) .CountAsync(); isUnique = count == 0; } while (!isUnique); await db.DroneCaseInfoSTXF.UpdateAsync(it => new DroneCaseInfoSTXF() { case_no = caseno, synchronoustime = DateTime.Now }, it => it.Id == req.Id); } var result = db.Commit(); if (result) return new Response { Result = true, Code = 200, Message = "更新成功" }; else return new Response { Result = false, Code = 500, Message = "更新失败" }; } case "设施农业监管": using (var db = base.UnitWork.CreateContext()) { var caseInfo = await db.DroneSsnyd.AsQueryable().FirstAsync(r => r.Id == req.Id); if (caseInfo == null) throw new Exception("未找到图斑信息"); if (!string.IsNullOrEmpty(caseInfo.xiangmu_no)) { await db.DroneSsnyd.UpdateAsync(it => new DroneSsnyd() { synchronoustime = DateTime.Now, handle_status_id=1 }, it => it.Id == req.Id); } else { do { caseno = caseInfo.countyid + DateTime.Now.ToString("yyyyMMdd") + random.Next(1000, 9999).ToString(); var count = await db.DroneSsnyd.AsQueryable().Where(c => c.xiangmu_no == caseno) .CountAsync(); isUnique = count == 0; } while (!isUnique); await db.DroneSsnyd.UpdateAsync(it => new DroneSsnyd() { xiangmu_no = caseno, synchronoustime = DateTime.Now, handle_status_id=1 }, it => it.Id == req.Id); } var result = db.Commit(); if (result) return new Response { Result = true, Code = 200, Message = "更新成功" }; else return new Response { Result = false, Code = 500, Message = "更新失败" }; } default: return new Response { Result = false, Code = 500, Message = "暂无该专题" }; } } public async Task> IsReSubmit(string originalcaseno, string subjectkey) { Random random = new Random(); using (var uow = base.UnitWork.CreateContext()) { var data1 = await uow.ReSubmit.AsQueryable() .Where(r => r.CaseNo == originalcaseno && r.SubjectKey == subjectkey).ToListAsync(); if (data1.Count > 0) { return new Response { Result = false, Code = 500, Message = "案件已复提,无法审核" }; } else { return new Response { Result = true, Code = 200, Message = "可以审核" }; } } } #endregion #region 导出shp文件 四种格式 #endregion #region 导入案件信息 /// /// 上传用户信息 /// /// /// public Response 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; DroneCaseInfoSingle cas = new DroneCaseInfoSingle(); 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() .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 { Result = flag, Message = flag == true ? "更新成功 " + res : "更新失败" }; } } else { return new Response { Result = false, Message = "上传文件类型错误,请上传Excel文件" }; } } else { return new Response { Result = false, Message = "文件为空" }; } } #endregion #region 测试代码 public Response UpdateYijian() { var caseInfo = client.Queryable().ToList(); //var caseInfo = client.Queryable().Where(r => r.case_no== "FN371325202408124154").ToList(); foreach (var item in caseInfo) { var tasklog = client.Queryable().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 { }; } public Response UpdateYijianwpxf() { var caseInfo = client.Queryable().ToList(); //var caseInfo = client.Queryable().Where(r => r.case_no== "FN371325202408124154").ToList(); foreach (var item in caseInfo) { var tasklog = client.Queryable().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 { }; } public Response UpdateYijianHnad() { var caseInfo = client.Queryable() .Where(r => r.handle_status_name == "" || r.handle_status_name == null).ToList(); foreach (var item in caseInfo) { var task = client.Queryable().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 { }; } public async Task> SynchronousImg() { HttpClient _client = new HttpClient { BaseAddress = new Uri("http://localhost:98") }; var caseInfo = client.Queryable().ToList(); List noImg = new List(); foreach (var item in caseInfo) { //chaichufugenghoupic,anjianzhaopian,bubanzhaopian,xchczhaopian if (!string.IsNullOrEmpty(item.chaichufugenghoupic)) { var endStr = await GetEndStr(item.chaichufugenghoupic); client.Updateable(item) .UpdateColumns(r => new { chaichufugenghoupic = endStr }).Where(r => r.Id == item.Id).ExecuteCommand(); } if (!string.IsNullOrEmpty(item.anjianzhaopian)) { var endStr = await GetEndStr(item.anjianzhaopian); client.Updateable(item) .UpdateColumns(r => new { anjianzhaopian = endStr }).Where(r => r.Id == item.Id).ExecuteCommand(); } if (!string.IsNullOrEmpty(item.bubanzhaopian)) { var endStr = await GetEndStr(item.bubanzhaopian); client.Updateable(item) .UpdateColumns(r => new { bubanzhaopian = endStr }).Where(r => r.Id == item.Id).ExecuteCommand(); } if (!string.IsNullOrEmpty(item.xchczhaopian)) { var endStr = await GetEndStr(item.xchczhaopian); client.Updateable(item) .UpdateColumns(r => new { xchczhaopian = endStr }).Where(r => r.Id == item.Id).ExecuteCommand(); } } return new Response { }; } private async Task GetEndStr(string beginStr) { HttpClient _client = new HttpClient { BaseAddress = new Uri("http://localhost:98") }; string endStr = ""; //chaichufugenghoupic,anjianzhaopian,bubanzhaopian,xchczhaopian if (!string.IsNullOrEmpty(beginStr)) { var img = beginStr.Split(',').ToList(); foreach (var it in img) { string url = $"/api/Platform/ExistsImg?path={Uri.EscapeDataString(it)}"; HttpResponseMessage response = await _client.GetAsync(url); response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); var obj = Newtonsoft.Json.JsonConvert.DeserializeObject>(responseBody); if (obj.Result == false && obj.Code == 200) { //更新图片信息 img.Remove(it); } } endStr = string.Join(",", img); } return endStr; } /// /// 修改案件信息 /// /// /// /// /// /// public Response UpdateCaseImg(string newpath, string oldpath, string newcaseid) { try { client.Ado.BeginTran(); //获取相位角图片数据 var olddif = client.Queryable().First(r => r.FilePath == oldpath); if (olddif != null) { DroneImageRef droneImageRef = new DroneImageRef() { Id = Guid.NewGuid().ToString(), CaseId = newcaseid, FilePath = newpath, Orientation = olddif.Orientation, CreateTime = DateTime.Now, Lng = olddif.Lng, Lat = olddif.Lat, }; client.Insertable(droneImageRef).ExecuteCommand(); } client.Ado.CommitTran(); return new Response { Result = true, Message = "更新成功", }; } catch (Exception ex) { client.Ado.RollbackTran(); return new Response { Result = false, Message = "更新失败", }; } } public Response UpdateCase(string newpath, string newcaseid, string field, string tablename) { try { //更新案件信息 //newpath = newpath.Replace(@"\", @"\\"); string sql = "UPDATE " + tablename + " SET " + field + " = '" + newpath + "' WHERE \"Id\" = '" + newcaseid + "'"; var a = client.Ado.ExecuteCommand(sql); return new Response { Result = true, Message = "更新成功", }; } catch (Exception ex) { return new Response { Result = false, Message = "更新失败", }; } } #endregion }