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

6750 lines
307 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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 统计
/// <summary>
/// 综合统计
/// </summary>
/// <returns></returns>
public async Task<Response<JArray>> CaseSynthesisCensus(QueryCaseInfoListReq req)
{
using (var db = base.UnitWork.CreateContext().Db.CopyNew())
{
var currentUser = _auth.GetCurrentUser();
var _user = currentUser.User;
string countyName = _configuration.GetSection("CountyName").Value;
if (string.IsNullOrEmpty(countyName)) countyName = "费县";
var orgList = await db.Queryable<SysOrg>().Where(c => c.ParentName == countyName)
.OrderBy(c => c.SortNo, OrderByType.Asc).ToListAsync();
//无人机发现数量
var reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
var allCountList = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.streetid, c.streetname })
.Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//完成核查数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
var handleStatusList = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//24小时未核查 (不包含已退回的部分)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_not_deal_hour24 = 1;
reqBody.is_drawback = 0;
var notDealHour24List = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//分类型统计案件数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
var typeCountList = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.streetid, c.typeid })
.Select(c => new
{
c.streetid,
c.typeid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法类型数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
var illegalCountList = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.is_illegal }).Select(c => new
{
c.streetid,
c.is_illegal,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
var illegalHandleStatusList = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.handle_status_id }).Select(c => new
{
c.streetid,
c.handle_status_id,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态 面积
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
var illegalHandleAreaList = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.handle_status_id }).Select(c => new
{
c.streetid,
c.handle_status_id,
area = SqlFunc.AggregateSum(SqlFunc.ToDecimal(c.area)),
}).ToList();
//3日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 1;
reqBody.is_illegal = 1;
var notComplete3List = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//7日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 2;
reqBody.is_illegal = 1;
var notComplete7List = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 4;
reqBody.is_illegal = 1;
var notComplete30List = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日以上未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 5;
reqBody.is_illegal = 1;
var notComplete30MoreList = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//var typeList = await db.Queryable<SysCategory>().Where(c => c.TypeId == "DRONE_CASE_TYPE").ToListAsync();
var typepid = await db.Queryable<SysDataItem>().Where(c => c.ItemCode == "DRONE_CASE_TYPE").FirstAsync();
var typeList = await db.Queryable<SysDataItemDetail>().Where(c => c.ItemId == typepid.ItemId).ToListAsync();
JArray array = new JArray();
for (int i = 0; i < orgList.Count; i++)
{
var item = orgList[i];
//无人机发现数量
int _allCount = allCountList.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//完成核查数量
int _handleStatus = handleStatusList.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//24小时未核查
int _notDealHour24 = notDealHour24List.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//违法类型数量
int _illegal0Count = illegalCountList.Where(c => c.streetid == item.Id.ToString() && c.is_illegal == 0)
.Sum(c => c.count);
int _illegal1Count = illegalCountList.Where(c => c.streetid == item.Id.ToString() && c.is_illegal == 1)
.Sum(c => c.count);
int _illegal2Count = illegalCountList.Where(c => c.streetid == item.Id.ToString() && c.is_illegal == 2)
.Sum(c => c.count);
int _illegalNullCount = illegalCountList
.Where(c => c.streetid == item.Id.ToString() && c.is_illegal == null).Sum(c => c.count);
//违法 状态查询
int _illegalHandle2Status = illegalHandleStatusList
.Where(c => c.streetid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.count);
int _illegalHandle01Status = illegalHandleStatusList
.Where(c => c.streetid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.count);
//违法 面积查询
decimal? _illegalHandleAreaList =
illegalHandleAreaList.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.area);
if (_illegalHandleAreaList != null)
{
_illegalHandleAreaList = Decimal.Round(_illegalHandleAreaList.Value / 666, 2);
}
decimal? _illegalHandle2AreaList = illegalHandleAreaList
.Where(c => c.streetid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.area);
if (_illegalHandle2AreaList != null)
{
_illegalHandle2AreaList = Decimal.Round(_illegalHandle2AreaList.Value / 666, 2);
}
decimal? _illegalHandle01AreaList = illegalHandleAreaList
.Where(c => c.streetid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.area);
if (_illegalHandle01AreaList != null)
{
_illegalHandle01AreaList = Decimal.Round(_illegalHandle01AreaList.Value / 666, 2);
}
//3日内未整改
int _notComplete3 = notComplete3List.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//7日内未整改
int _notComplete7 = notComplete7List.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//30日内未整改
int _notComplete30 = notComplete30List.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//30日以上未整改
int _notComplete30More =
notComplete30MoreList.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
JObject obj = new JObject();
obj.Add("streetid", item.Id);
obj.Add("streetname", item.Name);
//分类型统计案件数量
//int _typeCount = typeCountList.Where(c => c.streetid == item.Id).Sum(c => c.count);
var typeid_fanxin = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_FANXIN").First()?.ItemDetailId;
var typeid_jiagai = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_JIAGAI").First()?.ItemDetailId;
var typeid_fanjian =
typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_FANJIAN").First()?.ItemDetailId;
var typeid_cunliang = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_CUNLIANG").First()
?.ItemDetailId;
var typeid_tuitu = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_TUITU").First()?.ItemDetailId;
List<string> notTypeids = new List<string>
{
typeid_fanxin,
typeid_jiagai,
typeid_fanjian,
typeid_cunliang,
typeid_tuitu,
};
var typeFanxinCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_fanxin).Sum(c => c.count);
var typeJiagaiCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_jiagai).Sum(c => c.count);
var typeFanjianCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_fanjian).Sum(c => c.count);
var typeCunliangCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_cunliang).Sum(c => c.count);
var typeTuituCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_tuitu).Sum(c => c.count);
var typeOtherCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && !notTypeids.Contains(c.typeid)).Sum(c => c.count);
//上报案件数量
obj.Add("allCount", _allCount);
//完成外业核查数量
obj.Add("handleStatus", _handleStatus);
//24h内未核查
obj.Add("notDealHour24", _notDealHour24);
obj.Add("typeFanxinCount", typeFanxinCount);
obj.Add("typeJiagaiCount", typeJiagaiCount);
obj.Add("typeFanjianCount", typeFanjianCount);
obj.Add("typeCunliangCount", typeCunliangCount);
obj.Add("typeTuituCount", typeTuituCount);
obj.Add("typeOtherCount", typeOtherCount);
//合法
obj.Add("illegal0Count", _illegal0Count);
//违法 外业核实后确定违法数
obj.Add("illegal1Count", _illegal1Count);
//伪变化
obj.Add("illegal2Count", _illegal2Count);
//违法类型 未知类型数量
obj.Add("illegalNullCount", _illegalNullCount);
//违法面积
obj.Add("illegalHandleAreaList", _illegalHandleAreaList);
//整改销号数
obj.Add("illegalHandle2Status", _illegalHandle2Status);
//尚未整改宗数
obj.Add("illegalHandle01Status", _illegalHandle01Status);
//销号面积
obj.Add("illegalHandle2AreaList", _illegalHandle2AreaList);
//未整改面积
obj.Add("illegalHandle01AreaList", _illegalHandle01AreaList);
//3日内未整改完成
obj.Add("notComplete3", _notComplete3);
//7日内未整改完成
obj.Add("notComplete7", _notComplete7);
//30日内未整改完成
obj.Add("notComplete30", _notComplete30);
//30日以上未整改完成
obj.Add("notComplete30More", _notComplete30More);
array.Add(obj);
}
JObject _obj = new JObject();
_obj.Add("streetname", "合计");
//上报案件数量
_obj.Add("allCount", array.Sum(c => int.Parse(c["allCount"].ToString())));
//完成外业核查数量
_obj.Add("handleStatus", array.Sum(c => int.Parse(c["handleStatus"].ToString())));
//24h内未核查
_obj.Add("notDealHour24", array.Sum(c => int.Parse(c["notDealHour24"].ToString())));
_obj.Add("typeFanxinCount", array.Sum(c => int.Parse(c["typeFanxinCount"].ToString())));
_obj.Add("typeJiagaiCount", array.Sum(c => int.Parse(c["typeJiagaiCount"].ToString())));
_obj.Add("typeFanjianCount", array.Sum(c => int.Parse(c["typeFanjianCount"].ToString())));
_obj.Add("typeCunliangCount", array.Sum(c => int.Parse(c["typeCunliangCount"].ToString())));
_obj.Add("typeTuituCount", array.Sum(c => int.Parse(c["typeTuituCount"].ToString())));
_obj.Add("typeOtherCount", array.Sum(c => int.Parse(c["typeOtherCount"].ToString())));
//合法
_obj.Add("illegal0Count", array.Sum(c => int.Parse(c["illegal0Count"].ToString())));
//违法 外业核实后确定违法数
_obj.Add("illegal1Count", array.Sum(c => int.Parse(c["illegal1Count"].ToString())));
//伪变化
_obj.Add("illegal2Count", array.Sum(c => int.Parse(c["illegal2Count"].ToString())));
//违法类型 未知类型数量
_obj.Add("illegalNullCount", array.Sum(c => int.Parse(c["illegalNullCount"].ToString())));
//违法面积
_obj.Add("illegalHandleAreaList", array.Sum(c => decimal.Parse(c["illegalHandleAreaList"].ToString())));
//整改销号数
_obj.Add("illegalHandle2Status", array.Sum(c => int.Parse(c["illegalHandle2Status"].ToString())));
//尚未整改宗数
_obj.Add("illegalHandle01Status", array.Sum(c => int.Parse(c["illegalHandle01Status"].ToString())));
//销号面积
_obj.Add("illegalHandle2AreaList", array.Sum(c => decimal.Parse(c["illegalHandle2AreaList"].ToString())));
//未整改面积
_obj.Add("illegalHandle01AreaList", array.Sum(c => decimal.Parse(c["illegalHandle01AreaList"].ToString())));
//3日内未整改完成
_obj.Add("notComplete3", array.Sum(c => int.Parse(c["notComplete3"].ToString())));
//7日内未整改完成
_obj.Add("notComplete7", array.Sum(c => int.Parse(c["notComplete7"].ToString())));
//30日内未整改完成
_obj.Add("notComplete30", array.Sum(c => int.Parse(c["notComplete30"].ToString())));
//30日以上未整改完成
_obj.Add("notComplete30More", array.Sum(c => int.Parse(c["notComplete30More"].ToString())));
array.Add(_obj);
return new Response<JArray>
{
Result = array,
Message = "获取数据成功"
};
}
}
public async Task<Response<JArray>> CaseSynthesisCensusSingle(QueryCaseInfoListReq req)
{
using (var db = base.UnitWork.CreateContext().Db.CopyNew())
{
var currentUser = _auth.GetCurrentUser();
var _user = currentUser.User;
string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + _user.Id;
int level = db.Ado.GetInt(sql1);
string countyName = "";
if ((string.IsNullOrEmpty(req.countyid) && level == 0) ||
(_user.Id == -1 && string.IsNullOrEmpty(req.countyid)))
{
countyName = "临沂市";
var orgList = await db.Queryable<SysOrg>().Where(c => c.ParentName == countyName)
.OrderBy(c => c.SortNo, OrderByType.Asc).ToListAsync();
//无人机发现数量
var reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
var allCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//完成核查数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
var handleStatusList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//24小时未核查 (不包含已退回的部分)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_not_deal_hour24 = 1;
reqBody.is_drawback = 0;
var notDealHour24List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//分类型统计案件数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
var typeCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.typeid }).Select(c => new
{
c.countyid,
c.typeid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法类型数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
var illegalCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.is_illegal }).Select(c => new
{
c.countyid,
c.is_illegal,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
var illegalHandleStatusList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.handle_status_id }).Select(c => new
{
c.countyid,
c.handle_status_id,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态 面积
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
var illegalHandleAreaList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.handle_status_id }).Select(c => new
{
c.countyid,
c.handle_status_id,
area = SqlFunc.AggregateSum(SqlFunc.ToDecimal(c.area)),
}).ToList();
//3日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 1;
reqBody.is_illegal = 1;
var notComplete3List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//7日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 2;
reqBody.is_illegal = 1;
var notComplete7List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 4;
reqBody.is_illegal = 1;
var notComplete30List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日以上未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 5;
reqBody.is_illegal = 1;
var notComplete30MoreList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//var typeList = await db.Queryable<SysCategory>().Where(c => c.TypeId == "DRONE_CASE_TYPE").ToListAsync();
var typepid = await db.Queryable<SysDataItem>().Where(c => c.ItemCode == "DRONE_CASE_TYPE")
.FirstAsync();
var typeList = await db.Queryable<SysDataItemDetail>().Where(c => c.ItemId == typepid.ItemId)
.ToListAsync();
JArray array = new JArray();
for (int i = 0; i < orgList.Count; i++)
{
var item = orgList[i];
//无人机发现数量
int _allCount = allCountList.Where(c => c.countyid == item.Id.ToString()).Sum(c => c.count);
//完成核查数量
int _handleStatus = handleStatusList.Where(c => c.countyid == item.Id.ToString()).Sum(c => c.count);
//24小时未核查
int _notDealHour24 = notDealHour24List.Where(c => c.countyid == item.Id.ToString())
.Sum(c => c.count);
//违法类型数量
int _illegal0Count = illegalCountList
.Where(c => c.countyid == item.Id.ToString() && c.is_illegal == 0).Sum(c => c.count);
int _illegal1Count = illegalCountList
.Where(c => c.countyid == item.Id.ToString() && c.is_illegal == 1).Sum(c => c.count);
int _illegal2Count = illegalCountList
.Where(c => c.countyid == item.Id.ToString() && c.is_illegal == 2).Sum(c => c.count);
int _illegalNullCount = illegalCountList
.Where(c => c.countyid == item.Id.ToString() && c.is_illegal == null).Sum(c => c.count);
//违法 状态查询
int _illegalHandle2Status = illegalHandleStatusList
.Where(c => c.countyid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.count);
int _illegalHandle01Status = illegalHandleStatusList
.Where(c => c.countyid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.count);
//违法 面积查询
decimal? _illegalHandleAreaList = illegalHandleAreaList.Where(c => c.countyid == item.Id.ToString())
.Sum(c => c.area);
if (_illegalHandleAreaList != null)
{
_illegalHandleAreaList = Decimal.Round(_illegalHandleAreaList.Value / 666, 2);
}
decimal? _illegalHandle2AreaList = illegalHandleAreaList
.Where(c => c.countyid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.area);
if (_illegalHandle2AreaList != null)
{
_illegalHandle2AreaList = Decimal.Round(_illegalHandle2AreaList.Value / 666, 2);
}
decimal? _illegalHandle01AreaList = illegalHandleAreaList
.Where(c => c.countyid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.area);
if (_illegalHandle01AreaList != null)
{
_illegalHandle01AreaList = Decimal.Round(_illegalHandle01AreaList.Value / 666, 2);
}
//3日内未整改
int _notComplete3 = notComplete3List.Where(c => c.countyid == item.Id.ToString()).Sum(c => c.count);
//7日内未整改
int _notComplete7 = notComplete7List.Where(c => c.countyid == item.Id.ToString()).Sum(c => c.count);
//30日内未整改
int _notComplete30 = notComplete30List.Where(c => c.countyid == item.Id.ToString())
.Sum(c => c.count);
//30日以上未整改
int _notComplete30More = notComplete30MoreList.Where(c => c.countyid == item.Id.ToString())
.Sum(c => c.count);
JObject obj = new JObject();
obj.Add("streetid", item.Id);
obj.Add("streetname", item.Name);
//分类型统计案件数量
//int _typeCount = typeCountList.Where(c => c.streetid == item.Id).Sum(c => c.count);
var typeid_fanxin = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_FANXIN").First()
?.ItemDetailId;
var typeid_jiagai = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_JIAGAI").First()
?.ItemDetailId;
var typeid_fanjian = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_FANJIAN").First()
?.ItemDetailId;
var typeid_cunliang = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_CUNLIANG").First()
?.ItemDetailId;
var typeid_tuitu = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_TUITU").First()
?.ItemDetailId;
List<string> notTypeids = new List<string>
{
typeid_fanxin,
typeid_jiagai,
typeid_fanjian,
typeid_cunliang,
typeid_tuitu,
};
var typeFanxinCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_fanxin).Sum(c => c.count);
var typeJiagaiCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_jiagai).Sum(c => c.count);
var typeFanjianCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_fanjian).Sum(c => c.count);
var typeCunliangCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_cunliang).Sum(c => c.count);
var typeTuituCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_tuitu).Sum(c => c.count);
var typeOtherCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && !notTypeids.Contains(c.typeid))
.Sum(c => c.count);
//上报案件数量
obj.Add("allCount", _allCount);
//完成外业核查数量
obj.Add("handleStatus", _handleStatus);
//24h内未核查
obj.Add("notDealHour24", _notDealHour24);
obj.Add("typeFanxinCount", typeFanxinCount);
obj.Add("typeJiagaiCount", typeJiagaiCount);
obj.Add("typeFanjianCount", typeFanjianCount);
obj.Add("typeCunliangCount", typeCunliangCount);
obj.Add("typeTuituCount", typeTuituCount);
obj.Add("typeOtherCount", typeOtherCount);
//合法
obj.Add("illegal0Count", _illegal0Count);
//违法 外业核实后确定违法数
obj.Add("illegal1Count", _illegal1Count);
//伪变化
obj.Add("illegal2Count", _illegal2Count);
//违法类型 未知类型数量
obj.Add("illegalNullCount", _illegalNullCount);
//违法面积
obj.Add("illegalHandleAreaList", _illegalHandleAreaList);
//整改销号数
obj.Add("illegalHandle2Status", _illegalHandle2Status);
//尚未整改宗数
obj.Add("illegalHandle01Status", _illegalHandle01Status);
//销号面积
obj.Add("illegalHandle2AreaList", _illegalHandle2AreaList);
//未整改面积
obj.Add("illegalHandle01AreaList", _illegalHandle01AreaList);
//3日内未整改完成
obj.Add("notComplete3", _notComplete3);
//7日内未整改完成
obj.Add("notComplete7", _notComplete7);
//30日内未整改完成
obj.Add("notComplete30", _notComplete30);
//30日以上未整改完成
obj.Add("notComplete30More", _notComplete30More);
array.Add(obj);
}
JObject _obj = new JObject();
_obj.Add("streetname", "合计");
//上报案件数量
_obj.Add("allCount", array.Sum(c => int.Parse(c["allCount"].ToString())));
//完成外业核查数量
_obj.Add("handleStatus", array.Sum(c => int.Parse(c["handleStatus"].ToString())));
//24h内未核查
_obj.Add("notDealHour24", array.Sum(c => int.Parse(c["notDealHour24"].ToString())));
_obj.Add("typeFanxinCount", array.Sum(c => int.Parse(c["typeFanxinCount"].ToString())));
_obj.Add("typeJiagaiCount", array.Sum(c => int.Parse(c["typeJiagaiCount"].ToString())));
_obj.Add("typeFanjianCount", array.Sum(c => int.Parse(c["typeFanjianCount"].ToString())));
_obj.Add("typeCunliangCount", array.Sum(c => int.Parse(c["typeCunliangCount"].ToString())));
_obj.Add("typeTuituCount", array.Sum(c => int.Parse(c["typeTuituCount"].ToString())));
_obj.Add("typeOtherCount", array.Sum(c => int.Parse(c["typeOtherCount"].ToString())));
//合法
_obj.Add("illegal0Count", array.Sum(c => int.Parse(c["illegal0Count"].ToString())));
//违法 外业核实后确定违法数
_obj.Add("illegal1Count", array.Sum(c => int.Parse(c["illegal1Count"].ToString())));
//伪变化
_obj.Add("illegal2Count", array.Sum(c => int.Parse(c["illegal2Count"].ToString())));
//违法类型 未知类型数量
_obj.Add("illegalNullCount", array.Sum(c => int.Parse(c["illegalNullCount"].ToString())));
//违法面积
_obj.Add("illegalHandleAreaList", array.Sum(c => decimal.Parse(c["illegalHandleAreaList"].ToString())));
//整改销号数
_obj.Add("illegalHandle2Status", array.Sum(c => int.Parse(c["illegalHandle2Status"].ToString())));
//尚未整改宗数
_obj.Add("illegalHandle01Status", array.Sum(c => int.Parse(c["illegalHandle01Status"].ToString())));
//销号面积
_obj.Add("illegalHandle2AreaList",
array.Sum(c => decimal.Parse(c["illegalHandle2AreaList"].ToString())));
//未整改面积
_obj.Add("illegalHandle01AreaList",
array.Sum(c => decimal.Parse(c["illegalHandle01AreaList"].ToString())));
//3日内未整改完成
_obj.Add("notComplete3", array.Sum(c => int.Parse(c["notComplete3"].ToString())));
//7日内未整改完成
_obj.Add("notComplete7", array.Sum(c => int.Parse(c["notComplete7"].ToString())));
//30日内未整改完成
_obj.Add("notComplete30", array.Sum(c => int.Parse(c["notComplete30"].ToString())));
//30日以上未整改完成
_obj.Add("notComplete30More", array.Sum(c => int.Parse(c["notComplete30More"].ToString())));
array.Add(_obj);
return new Response<JArray>
{
Result = array,
Message = "获取数据成功"
};
}
else if (string.IsNullOrEmpty(req.countyid) && level == 1)
{
string sql2 = "select \"OrgId\" from sys_userorg where \"Level\"=1 and \"UserId\"=" + _user.Id;
var liststring = db.Ado.SqlQuery<long>(sql2);
var orgList = await db.Queryable<SysOrg>().Where(c => liststring.Contains(c.Id))
.OrderBy(c => c.SortNo, OrderByType.Asc).ToListAsync();
//无人机发现数量
var reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
var allCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//完成核查数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
var handleStatusList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//24小时未核查 (不包含已退回的部分)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_not_deal_hour24 = 1;
reqBody.is_drawback = 0;
var notDealHour24List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//分类型统计案件数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
var typeCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.typeid }).Select(c => new
{
c.countyid,
c.typeid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法类型数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
var illegalCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.is_illegal }).Select(c => new
{
c.countyid,
c.is_illegal,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
var illegalHandleStatusList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.handle_status_id }).Select(c => new
{
c.countyid,
c.handle_status_id,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态 面积
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
var illegalHandleAreaList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.handle_status_id }).Select(c => new
{
c.countyid,
c.handle_status_id,
area = SqlFunc.AggregateSum(SqlFunc.ToDecimal(c.area)),
}).ToList();
//3日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 1;
reqBody.is_illegal = 1;
var notComplete3List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//7日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 2;
reqBody.is_illegal = 1;
var notComplete7List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 4;
reqBody.is_illegal = 1;
var notComplete30List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日以上未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 5;
reqBody.is_illegal = 1;
var notComplete30MoreList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.countyid, c.streetname }).Select(c => new
{
c.countyid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//var typeList = await db.Queryable<SysCategory>().Where(c => c.TypeId == "DRONE_CASE_TYPE").ToListAsync();
var typepid = await db.Queryable<SysDataItem>().Where(c => c.ItemCode == "DRONE_CASE_TYPE")
.FirstAsync();
var typeList = await db.Queryable<SysDataItemDetail>().Where(c => c.ItemId == typepid.ItemId)
.ToListAsync();
JArray array = new JArray();
for (int i = 0; i < orgList.Count; i++)
{
var item = orgList[i];
//无人机发现数量
int _allCount = allCountList.Where(c => c.countyid == item.Id.ToString()).Sum(c => c.count);
//完成核查数量
int _handleStatus = handleStatusList.Where(c => c.countyid == item.Id.ToString()).Sum(c => c.count);
//24小时未核查
int _notDealHour24 = notDealHour24List.Where(c => c.countyid == item.Id.ToString())
.Sum(c => c.count);
//违法类型数量
int _illegal0Count = illegalCountList
.Where(c => c.countyid == item.Id.ToString() && c.is_illegal == 0).Sum(c => c.count);
int _illegal1Count = illegalCountList
.Where(c => c.countyid == item.Id.ToString() && c.is_illegal == 1).Sum(c => c.count);
int _illegal2Count = illegalCountList
.Where(c => c.countyid == item.Id.ToString() && c.is_illegal == 2).Sum(c => c.count);
int _illegalNullCount = illegalCountList
.Where(c => c.countyid == item.Id.ToString() && c.is_illegal == null).Sum(c => c.count);
//违法 状态查询
int _illegalHandle2Status = illegalHandleStatusList
.Where(c => c.countyid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.count);
int _illegalHandle01Status = illegalHandleStatusList
.Where(c => c.countyid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.count);
//违法 面积查询
decimal? _illegalHandleAreaList = illegalHandleAreaList.Where(c => c.countyid == item.Id.ToString())
.Sum(c => c.area);
if (_illegalHandleAreaList != null)
{
_illegalHandleAreaList = Decimal.Round(_illegalHandleAreaList.Value / 666, 2);
}
decimal? _illegalHandle2AreaList = illegalHandleAreaList
.Where(c => c.countyid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.area);
if (_illegalHandle2AreaList != null)
{
_illegalHandle2AreaList = Decimal.Round(_illegalHandle2AreaList.Value / 666, 2);
}
decimal? _illegalHandle01AreaList = illegalHandleAreaList
.Where(c => c.countyid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.area);
if (_illegalHandle01AreaList != null)
{
_illegalHandle01AreaList = Decimal.Round(_illegalHandle01AreaList.Value / 666, 2);
}
//3日内未整改
int _notComplete3 = notComplete3List.Where(c => c.countyid == item.Id.ToString()).Sum(c => c.count);
//7日内未整改
int _notComplete7 = notComplete7List.Where(c => c.countyid == item.Id.ToString()).Sum(c => c.count);
//30日内未整改
int _notComplete30 = notComplete30List.Where(c => c.countyid == item.Id.ToString())
.Sum(c => c.count);
//30日以上未整改
int _notComplete30More = notComplete30MoreList.Where(c => c.countyid == item.Id.ToString())
.Sum(c => c.count);
JObject obj = new JObject();
obj.Add("streetid", item.Id);
obj.Add("streetname", item.Name);
//分类型统计案件数量
//int _typeCount = typeCountList.Where(c => c.streetid == item.Id).Sum(c => c.count);
var typeid_fanxin = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_FANXIN").First()
?.ItemDetailId;
var typeid_jiagai = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_JIAGAI").First()
?.ItemDetailId;
var typeid_fanjian = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_FANJIAN").First()
?.ItemDetailId;
var typeid_cunliang = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_CUNLIANG").First()
?.ItemDetailId;
var typeid_tuitu = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_TUITU").First()
?.ItemDetailId;
List<string> notTypeids = new List<string>
{
typeid_fanxin,
typeid_jiagai,
typeid_fanjian,
typeid_cunliang,
typeid_tuitu,
};
var typeFanxinCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_fanxin).Sum(c => c.count);
var typeJiagaiCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_jiagai).Sum(c => c.count);
var typeFanjianCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_fanjian).Sum(c => c.count);
var typeCunliangCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_cunliang).Sum(c => c.count);
var typeTuituCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && c.typeid == typeid_tuitu).Sum(c => c.count);
var typeOtherCount = typeCountList
.Where(c => c.countyid == item.Id.ToString() && !notTypeids.Contains(c.typeid))
.Sum(c => c.count);
//上报案件数量
obj.Add("allCount", _allCount);
//完成外业核查数量
obj.Add("handleStatus", _handleStatus);
//24h内未核查
obj.Add("notDealHour24", _notDealHour24);
obj.Add("typeFanxinCount", typeFanxinCount);
obj.Add("typeJiagaiCount", typeJiagaiCount);
obj.Add("typeFanjianCount", typeFanjianCount);
obj.Add("typeCunliangCount", typeCunliangCount);
obj.Add("typeTuituCount", typeTuituCount);
obj.Add("typeOtherCount", typeOtherCount);
//合法
obj.Add("illegal0Count", _illegal0Count);
//违法 外业核实后确定违法数
obj.Add("illegal1Count", _illegal1Count);
//伪变化
obj.Add("illegal2Count", _illegal2Count);
//违法类型 未知类型数量
obj.Add("illegalNullCount", _illegalNullCount);
//违法面积
obj.Add("illegalHandleAreaList", _illegalHandleAreaList);
//整改销号数
obj.Add("illegalHandle2Status", _illegalHandle2Status);
//尚未整改宗数
obj.Add("illegalHandle01Status", _illegalHandle01Status);
//销号面积
obj.Add("illegalHandle2AreaList", _illegalHandle2AreaList);
//未整改面积
obj.Add("illegalHandle01AreaList", _illegalHandle01AreaList);
//3日内未整改完成
obj.Add("notComplete3", _notComplete3);
//7日内未整改完成
obj.Add("notComplete7", _notComplete7);
//30日内未整改完成
obj.Add("notComplete30", _notComplete30);
//30日以上未整改完成
obj.Add("notComplete30More", _notComplete30More);
array.Add(obj);
}
JObject _obj = new JObject();
_obj.Add("streetname", "合计");
//上报案件数量
_obj.Add("allCount", array.Sum(c => int.Parse(c["allCount"].ToString())));
//完成外业核查数量
_obj.Add("handleStatus", array.Sum(c => int.Parse(c["handleStatus"].ToString())));
//24h内未核查
_obj.Add("notDealHour24", array.Sum(c => int.Parse(c["notDealHour24"].ToString())));
_obj.Add("typeFanxinCount", array.Sum(c => int.Parse(c["typeFanxinCount"].ToString())));
_obj.Add("typeJiagaiCount", array.Sum(c => int.Parse(c["typeJiagaiCount"].ToString())));
_obj.Add("typeFanjianCount", array.Sum(c => int.Parse(c["typeFanjianCount"].ToString())));
_obj.Add("typeCunliangCount", array.Sum(c => int.Parse(c["typeCunliangCount"].ToString())));
_obj.Add("typeTuituCount", array.Sum(c => int.Parse(c["typeTuituCount"].ToString())));
_obj.Add("typeOtherCount", array.Sum(c => int.Parse(c["typeOtherCount"].ToString())));
//合法
_obj.Add("illegal0Count", array.Sum(c => int.Parse(c["illegal0Count"].ToString())));
//违法 外业核实后确定违法数
_obj.Add("illegal1Count", array.Sum(c => int.Parse(c["illegal1Count"].ToString())));
//伪变化
_obj.Add("illegal2Count", array.Sum(c => int.Parse(c["illegal2Count"].ToString())));
//违法类型 未知类型数量
_obj.Add("illegalNullCount", array.Sum(c => int.Parse(c["illegalNullCount"].ToString())));
//违法面积
_obj.Add("illegalHandleAreaList", array.Sum(c => decimal.Parse(c["illegalHandleAreaList"].ToString())));
//整改销号数
_obj.Add("illegalHandle2Status", array.Sum(c => int.Parse(c["illegalHandle2Status"].ToString())));
//尚未整改宗数
_obj.Add("illegalHandle01Status", array.Sum(c => int.Parse(c["illegalHandle01Status"].ToString())));
//销号面积
_obj.Add("illegalHandle2AreaList",
array.Sum(c => decimal.Parse(c["illegalHandle2AreaList"].ToString())));
//未整改面积
_obj.Add("illegalHandle01AreaList",
array.Sum(c => decimal.Parse(c["illegalHandle01AreaList"].ToString())));
//3日内未整改完成
_obj.Add("notComplete3", array.Sum(c => int.Parse(c["notComplete3"].ToString())));
//7日内未整改完成
_obj.Add("notComplete7", array.Sum(c => int.Parse(c["notComplete7"].ToString())));
//30日内未整改完成
_obj.Add("notComplete30", array.Sum(c => int.Parse(c["notComplete30"].ToString())));
//30日以上未整改完成
_obj.Add("notComplete30More", array.Sum(c => int.Parse(c["notComplete30More"].ToString())));
array.Add(_obj);
return new Response<JArray>
{
Result = array,
Message = "获取数据成功"
};
}
else
{
if (level > 1)
{
JArray array1 = new JArray();
JObject _obj1 = new JObject();
_obj1.Add("streetname", "合计");
//上报案件数量
_obj1.Add("allCount", 0);
//完成外业核查数量
_obj1.Add("handleStatus", 0);
//24h内未核查
_obj1.Add("notDealHour24", 0);
_obj1.Add("typeFanxinCount", 0);
_obj1.Add("typeJiagaiCount", 0);
_obj1.Add("typeFanjianCount", 0);
_obj1.Add("typeCunliangCount", 0);
_obj1.Add("typeTuituCount", 0);
_obj1.Add("typeOtherCount", 0);
//合法
_obj1.Add("illegal0Count", 0);
//违法 外业核实后确定违法数
_obj1.Add("illegal1Count", 0);
//伪变化
_obj1.Add("illegal2Count", 0);
//违法类型 未知类型数量
_obj1.Add("illegalNullCount", 0);
//违法面积
_obj1.Add("illegalHandleAreaList", 0);
//整改销号数
_obj1.Add("illegalHandle2Status", 0);
//尚未整改宗数
_obj1.Add("illegalHandle01Status", 0);
//销号面积
_obj1.Add("illegalHandle2AreaList", 0);
//未整改面积
_obj1.Add("illegalHandle01AreaList", 0);
//3日内未整改完成
_obj1.Add("notComplete3", 0);
//7日内未整改完成
_obj1.Add("notComplete7", 0);
//30日内未整改完成
_obj1.Add("notComplete30", 0);
//30日以上未整改完成
_obj1.Add("notComplete30More", 0);
array1.Add(_obj1);
return new Response<JArray>
{
Result = array1,
Message = "获取数据成功"
};
}
string sql = "select \"Name\" from sys_org where \"Id\"=" + req.countyid;
string name = db.Ado.GetString(sql);
var orgList = await db.Queryable<SysOrg>().Where(c => c.ParentName == name)
.OrderBy(c => c.SortNo, OrderByType.Asc).ToListAsync();
//无人机发现数量
var reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
var allCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//完成核查数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
var handleStatusList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//24小时未核查 (不包含已退回的部分)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_not_deal_hour24 = 1;
reqBody.is_drawback = 0;
var notDealHour24List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//分类型统计案件数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
var typeCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.typeid }).Select(c => new
{
c.streetid,
c.typeid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法类型数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
var illegalCountList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.is_illegal }).Select(c => new
{
c.streetid,
c.is_illegal,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
var illegalHandleStatusList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.handle_status_id }).Select(c => new
{
c.streetid,
c.handle_status_id,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态 面积
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
var illegalHandleAreaList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.handle_status_id }).Select(c => new
{
c.streetid,
c.handle_status_id,
area = SqlFunc.AggregateSum(SqlFunc.ToDecimal(c.area)),
}).ToList();
//3日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 1;
reqBody.is_illegal = 1;
var notComplete3List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//7日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 2;
reqBody.is_illegal = 1;
var notComplete7List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 4;
reqBody.is_illegal = 1;
var notComplete30List = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日以上未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 5;
reqBody.is_illegal = 1;
var notComplete30MoreList = QueryCaseInfoSingleList(db, reqBody, _user, 0)
.GroupBy(c => new { c.streetid, c.streetname }).Select(c => new
{
c.streetid,
c.streetname,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//var typeList = await db.Queryable<SysCategory>().Where(c => c.TypeId == "DRONE_CASE_TYPE").ToListAsync();
var typepid = await db.Queryable<SysDataItem>().Where(c => c.ItemCode == "DRONE_CASE_TYPE")
.FirstAsync();
var typeList = await db.Queryable<SysDataItemDetail>().Where(c => c.ItemId == typepid.ItemId)
.ToListAsync();
JArray array = new JArray();
for (int i = 0; i < orgList.Count; i++)
{
var item = orgList[i];
//无人机发现数量
int _allCount = allCountList.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//完成核查数量
int _handleStatus = handleStatusList.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//24小时未核查
int _notDealHour24 = notDealHour24List.Where(c => c.streetid == item.Id.ToString())
.Sum(c => c.count);
//违法类型数量
int _illegal0Count = illegalCountList
.Where(c => c.streetid == item.Id.ToString() && c.is_illegal == 0).Sum(c => c.count);
int _illegal1Count = illegalCountList
.Where(c => c.streetid == item.Id.ToString() && c.is_illegal == 1).Sum(c => c.count);
int _illegal2Count = illegalCountList
.Where(c => c.streetid == item.Id.ToString() && c.is_illegal == 2).Sum(c => c.count);
int _illegalNullCount = illegalCountList
.Where(c => c.streetid == item.Id.ToString() && c.is_illegal == null).Sum(c => c.count);
//违法 状态查询
int _illegalHandle2Status = illegalHandleStatusList
.Where(c => c.streetid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.count);
int _illegalHandle01Status = illegalHandleStatusList
.Where(c => c.streetid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.count);
//违法 面积查询
decimal? _illegalHandleAreaList = illegalHandleAreaList.Where(c => c.streetid == item.Id.ToString())
.Sum(c => c.area);
if (_illegalHandleAreaList != null)
{
_illegalHandleAreaList = Decimal.Round(_illegalHandleAreaList.Value / 666, 2);
}
decimal? _illegalHandle2AreaList = illegalHandleAreaList
.Where(c => c.streetid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.area);
if (_illegalHandle2AreaList != null)
{
_illegalHandle2AreaList = Decimal.Round(_illegalHandle2AreaList.Value / 666, 2);
}
decimal? _illegalHandle01AreaList = illegalHandleAreaList
.Where(c => c.streetid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.area);
if (_illegalHandle01AreaList != null)
{
_illegalHandle01AreaList = Decimal.Round(_illegalHandle01AreaList.Value / 666, 2);
}
//3日内未整改
int _notComplete3 = notComplete3List.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//7日内未整改
int _notComplete7 = notComplete7List.Where(c => c.streetid == item.Id.ToString()).Sum(c => c.count);
//30日内未整改
int _notComplete30 = notComplete30List.Where(c => c.streetid == item.Id.ToString())
.Sum(c => c.count);
//30日以上未整改
int _notComplete30More = notComplete30MoreList.Where(c => c.streetid == item.Id.ToString())
.Sum(c => c.count);
JObject obj = new JObject();
obj.Add("streetid", item.Id);
obj.Add("streetname", item.Name);
//分类型统计案件数量
//int _typeCount = typeCountList.Where(c => c.streetid == item.Id).Sum(c => c.count);
var typeid_fanxin = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_FANXIN").First()
?.ItemDetailId;
var typeid_jiagai = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_JIAGAI").First()
?.ItemDetailId;
var typeid_fanjian = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_FANJIAN").First()
?.ItemDetailId;
var typeid_cunliang = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_CUNLIANG").First()
?.ItemDetailId;
var typeid_tuitu = typeList.Where(c => c.ItemValue == "DRONE_CASE_TYPE_TUITU").First()
?.ItemDetailId;
List<string> notTypeids = new List<string>
{
typeid_fanxin,
typeid_jiagai,
typeid_fanjian,
typeid_cunliang,
typeid_tuitu,
};
var typeFanxinCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_fanxin).Sum(c => c.count);
var typeJiagaiCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_jiagai).Sum(c => c.count);
var typeFanjianCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_fanjian).Sum(c => c.count);
var typeCunliangCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_cunliang).Sum(c => c.count);
var typeTuituCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && c.typeid == typeid_tuitu).Sum(c => c.count);
var typeOtherCount = typeCountList
.Where(c => c.streetid == item.Id.ToString() && !notTypeids.Contains(c.typeid))
.Sum(c => c.count);
//上报案件数量
obj.Add("allCount", _allCount);
//完成外业核查数量
obj.Add("handleStatus", _handleStatus);
//24h内未核查
obj.Add("notDealHour24", _notDealHour24);
obj.Add("typeFanxinCount", typeFanxinCount);
obj.Add("typeJiagaiCount", typeJiagaiCount);
obj.Add("typeFanjianCount", typeFanjianCount);
obj.Add("typeCunliangCount", typeCunliangCount);
obj.Add("typeTuituCount", typeTuituCount);
obj.Add("typeOtherCount", typeOtherCount);
//合法
obj.Add("illegal0Count", _illegal0Count);
//违法 外业核实后确定违法数
obj.Add("illegal1Count", _illegal1Count);
//伪变化
obj.Add("illegal2Count", _illegal2Count);
//违法类型 未知类型数量
obj.Add("illegalNullCount", _illegalNullCount);
//违法面积
obj.Add("illegalHandleAreaList", _illegalHandleAreaList);
//整改销号数
obj.Add("illegalHandle2Status", _illegalHandle2Status);
//尚未整改宗数
obj.Add("illegalHandle01Status", _illegalHandle01Status);
//销号面积
obj.Add("illegalHandle2AreaList", _illegalHandle2AreaList);
//未整改面积
obj.Add("illegalHandle01AreaList", _illegalHandle01AreaList);
//3日内未整改完成
obj.Add("notComplete3", _notComplete3);
//7日内未整改完成
obj.Add("notComplete7", _notComplete7);
//30日内未整改完成
obj.Add("notComplete30", _notComplete30);
//30日以上未整改完成
obj.Add("notComplete30More", _notComplete30More);
array.Add(obj);
}
JObject _obj = new JObject();
_obj.Add("streetname", "合计");
//上报案件数量
_obj.Add("allCount", array.Sum(c => int.Parse(c["allCount"].ToString())));
//完成外业核查数量
_obj.Add("handleStatus", array.Sum(c => int.Parse(c["handleStatus"].ToString())));
//24h内未核查
_obj.Add("notDealHour24", array.Sum(c => int.Parse(c["notDealHour24"].ToString())));
_obj.Add("typeFanxinCount", array.Sum(c => int.Parse(c["typeFanxinCount"].ToString())));
_obj.Add("typeJiagaiCount", array.Sum(c => int.Parse(c["typeJiagaiCount"].ToString())));
_obj.Add("typeFanjianCount", array.Sum(c => int.Parse(c["typeFanjianCount"].ToString())));
_obj.Add("typeCunliangCount", array.Sum(c => int.Parse(c["typeCunliangCount"].ToString())));
_obj.Add("typeTuituCount", array.Sum(c => int.Parse(c["typeTuituCount"].ToString())));
_obj.Add("typeOtherCount", array.Sum(c => int.Parse(c["typeOtherCount"].ToString())));
//合法
_obj.Add("illegal0Count", array.Sum(c => int.Parse(c["illegal0Count"].ToString())));
//违法 外业核实后确定违法数
_obj.Add("illegal1Count", array.Sum(c => int.Parse(c["illegal1Count"].ToString())));
//伪变化
_obj.Add("illegal2Count", array.Sum(c => int.Parse(c["illegal2Count"].ToString())));
//违法类型 未知类型数量
_obj.Add("illegalNullCount", array.Sum(c => int.Parse(c["illegalNullCount"].ToString())));
//违法面积
_obj.Add("illegalHandleAreaList", array.Sum(c => decimal.Parse(c["illegalHandleAreaList"].ToString())));
//整改销号数
_obj.Add("illegalHandle2Status", array.Sum(c => int.Parse(c["illegalHandle2Status"].ToString())));
//尚未整改宗数
_obj.Add("illegalHandle01Status", array.Sum(c => int.Parse(c["illegalHandle01Status"].ToString())));
//销号面积
_obj.Add("illegalHandle2AreaList",
array.Sum(c => decimal.Parse(c["illegalHandle2AreaList"].ToString())));
//未整改面积
_obj.Add("illegalHandle01AreaList",
array.Sum(c => decimal.Parse(c["illegalHandle01AreaList"].ToString())));
//3日内未整改完成
_obj.Add("notComplete3", array.Sum(c => int.Parse(c["notComplete3"].ToString())));
//7日内未整改完成
_obj.Add("notComplete7", array.Sum(c => int.Parse(c["notComplete7"].ToString())));
//30日内未整改完成
_obj.Add("notComplete30", array.Sum(c => int.Parse(c["notComplete30"].ToString())));
//30日以上未整改完成
_obj.Add("notComplete30More", array.Sum(c => int.Parse(c["notComplete30More"].ToString())));
array.Add(_obj);
return new Response<JArray>
{
Result = array,
Message = "获取数据成功"
};
}
}
}
public Response<MemoryStream> ListToExcel(JArray list, List<ModuleColumn> headers)
{
Response<MemoryStream> response = new Response<MemoryStream>();
try
{
HSSFWorkbook workbook = new HSSFWorkbook();
#region 内容样式
IFont font1 = workbook.CreateFont(); //创建一个字体样式对象
font1.FontName = "Microsoft YaHei"; //和excel里面的字体对应
//font1.Boldweight = short.MaxValue;//字体加粗
font1.FontHeightInPoints = 12; //字体大小
ICellStyle style = workbook.CreateCellStyle(); //创建样式对象
style.BorderBottom = BorderStyle.Thin;
style.BorderLeft = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
style.BorderTop = BorderStyle.Thin;
style.Alignment = 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;
}
/// <summary>
/// 综合统计,统计镇权限
/// </summary>
/// <returns></returns>
public JArray CaseSynthesisCensusStreet(QueryCaseInfoListReq req)
{
using (var db = base.UnitWork.CreateContext().Db.CopyNew())
{
//当前账号的权限
var currentUser = _auth.GetCurrentUser();
var _user = currentUser.User;
var currentOrgs = currentUser.Orgs.Select(c => c.Id).ToList();
//当前县名称
string countyName = _configuration.GetSection("CountyName").Value;
if (string.IsNullOrEmpty(countyName)) countyName = "费县";
//查询系统中镇的数据
var streetList = db.Queryable<SysOrg>().Where(c => c.ParentName == countyName).ToList();
//当前用户所属的镇
var currentStreet = streetList.Where(c => currentOrgs.Contains(c.Id)).FirstOrDefault();
if (currentStreet == null)
throw new Exception("没有权限");
JArray array = new JArray();
if (currentStreet.Name == "费城街道")
{
// 获取工作区案件统计的数据
// array = GetSynthesisCensusWorkAreaData(db, currentStreet, _user, req);
}
else
{
// 获取街道案件统计数据
array = GetSynthesisCensusStreetData(db, currentStreet, _user, req);
}
return array;
}
}
/// <summary>
/// 获取街道案件统计数据
/// </summary>
/// <param name="db"></param>
/// <param name="currentStreet"></param>
/// <param name="_user"></param>
/// <param name="req"></param>
/// <returns></returns>
private JArray GetSynthesisCensusStreetData(SqlSugarClient db, SysOrg currentStreet, SysUser _user,
QueryCaseInfoListReq req)
{
var orgList = db.Queryable<SysOrg>().Where(c => c.ParentId == currentStreet.Id)
.OrderBy(c => c.SortNo, OrderByType.Asc).ToList();
//无人机发现数量
var reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.streetid = currentStreet.Id.ToString();
var allCountList = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.communityid }).Select(c => new
{
c.communityid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//完成核查数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
reqBody.streetid = currentStreet.Id.ToString();
var handleStatusList = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.communityid }).Select(c =>
new
{
c.communityid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//24小时未核查 (不包含已退回的部分)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_not_deal_hour24 = 1;
reqBody.is_drawback = 0;
reqBody.streetid = currentStreet.Id.ToString();
var notDealHour24List = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.communityid }).Select(c =>
new
{
c.communityid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//分类型统计案件数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.streetid = currentStreet.Id.ToString();
var typeCountList = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.communityid, c.typeid })
.Select(c => new
{
c.communityid,
c.typeid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法类型数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_deal = 1;
reqBody.streetid = currentStreet.Id.ToString();
var illegalCountList = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.communityid, c.is_illegal }).Select(c => new
{
c.communityid,
c.is_illegal,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态数量
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
reqBody.streetid = currentStreet.Id.ToString();
var illegalHandleStatusList = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.communityid, c.handle_status_id }).Select(c => new
{
c.communityid,
c.handle_status_id,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//违法数据 整改状态 面积
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_illegal = 1;
reqBody.is_deal = 1;
reqBody.streetid = currentStreet.Id.ToString();
var illegalHandleAreaList = QueryCaseInfoList(db, reqBody, _user, 0)
.GroupBy(c => new { c.communityid, c.handle_status_id }).Select(c => new
{
c.communityid,
c.handle_status_id,
area = SqlFunc.AggregateSum(SqlFunc.ToDecimal(c.area)),
}).ToList();
//3日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 1;
reqBody.is_illegal = 1;
reqBody.streetid = currentStreet.Id.ToString();
var notComplete3List = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.communityid }).Select(c =>
new
{
c.communityid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//7日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 2;
reqBody.is_illegal = 1;
reqBody.streetid = currentStreet.Id.ToString();
var notComplete7List = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.communityid }).Select(c =>
new
{
c.communityid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日内未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 4;
reqBody.is_illegal = 1;
reqBody.streetid = currentStreet.Id.ToString();
var notComplete30List = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.communityid }).Select(c =>
new
{
c.communityid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
//30日以上未整改 (外业确认违法的案件)
reqBody = req.MapTo<QueryCaseInfoListReq>();
reqBody.is_intact = 1;
reqBody.is_complete = 0;
reqBody.out_time_flag = 5;
reqBody.is_illegal = 1;
reqBody.streetid = currentStreet.Id.ToString();
var notComplete30MoreList = QueryCaseInfoList(db, reqBody, _user, 0).GroupBy(c => new { c.communityid }).Select(
c => new
{
c.communityid,
count = SqlFunc.AggregateCount(c.Id),
}).ToList();
var typepid = db.Queryable<SysDataItem>().Where(c => c.ItemCode == "DRONE_CASE_TYPE").First();
var typeList = db.Queryable<SysDataItemDetail>().Where(c => c.ItemId == typepid.ItemId).ToList();
//var typeList = db.Queryable<Sugar_Category>().Where(c => c.TypeId == "DRONE_CASE_TYPE").ToList();
JArray array = new JArray();
for (int i = 0; i < orgList.Count; i++)
{
var item = orgList[i];
//无人机发现数量
int _allCount = allCountList.Where(c => c.communityid == item.Id.ToString()).Sum(c => c.count);
//完成核查数量
int _handleStatus = handleStatusList.Where(c => c.communityid == item.Id.ToString()).Sum(c => c.count);
//24小时未核查
int _notDealHour24 = notDealHour24List.Where(c => c.communityid == item.Id.ToString()).Sum(c => c.count);
//违法类型数量
int _illegal0Count = illegalCountList.Where(c => c.communityid == item.Id.ToString() && c.is_illegal == 0)
.Sum(c => c.count);
int _illegal1Count = illegalCountList.Where(c => c.communityid == item.Id.ToString() && c.is_illegal == 1)
.Sum(c => c.count);
int _illegal2Count = illegalCountList.Where(c => c.communityid == item.Id.ToString() && c.is_illegal == 2)
.Sum(c => c.count);
int _illegalNullCount = illegalCountList
.Where(c => c.communityid == item.Id.ToString() && c.is_illegal == null).Sum(c => c.count);
//违法 状态查询
int _illegalHandle2Status = illegalHandleStatusList
.Where(c => c.communityid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.count);
int _illegalHandle01Status = illegalHandleStatusList
.Where(c => c.communityid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.count);
//违法 面积查询
decimal? _illegalHandleAreaList =
illegalHandleAreaList.Where(c => c.communityid == item.Id.ToString()).Sum(c => c.area);
if (_illegalHandleAreaList != null)
{
_illegalHandleAreaList = Decimal.Round(_illegalHandleAreaList.Value / 666, 2);
}
decimal? _illegalHandle2AreaList = illegalHandleAreaList
.Where(c => c.communityid == item.Id.ToString() && c.handle_status_id == 2).Sum(c => c.area);
if (_illegalHandle2AreaList != null)
{
_illegalHandle2AreaList = Decimal.Round(_illegalHandle2AreaList.Value / 666, 2);
}
decimal? _illegalHandle01AreaList = illegalHandleAreaList
.Where(c => c.communityid == item.Id.ToString() && c.handle_status_id < 2).Sum(c => c.area);
if (_illegalHandle01AreaList != null)
{
_illegalHandle01AreaList = Decimal.Round(_illegalHandle01AreaList.Value / 666, 2);
}
//3日内未整改
int _notComplete3 = notComplete3List.Where(c => c.communityid == item.Id.ToString()).Sum(c => c.count);
//7日内未整改
int _notComplete7 = notComplete7List.Where(c => c.communityid == item.Id.ToString()).Sum(c => c.count);
//30日内未整改
int _notComplete30 = notComplete30List.Where(c => c.communityid == item.Id.ToString()).Sum(c => c.count);
//30日以上未整改
int _notComplete30More =
notComplete30MoreList.Where(c => c.communityid == item.Id.ToString()).Sum(c => c.count);
JObject obj = new JObject();
//所属镇
obj.Add("streetid", currentStreet.Id);
obj.Add("streetname", currentStreet.Name);
//所属社区
obj.Add("communityid", item.Id);
obj.Add("communityname", item.Name);
obj.Add("is_area", 0);
//分类型统计案件数量
//int _typeCount = typeCountList.Where(c => c.streetid == item.Id).Sum(c => c.count);
var typeid_fanxin = typeList.Where(c => c.ItemCode == "DRONE_CASE_TYPE_FANXIN").First().ItemDetailId;
var typeid_jiagai = typeList.Where(c => c.ItemCode == "DRONE_CASE_TYPE_JIAGAI").First().ItemDetailId;
var typeid_fanjian = typeList.Where(c => c.ItemCode == "DRONE_CASE_TYPE_FANJIAN").First().ItemDetailId;
var typeid_cunliang = typeList.Where(c => c.ItemCode == "DRONE_CASE_TYPE_CUNLIANG").First().ItemDetailId;
var typeid_tuitu = typeList.Where(c => c.ItemCode == "DRONE_CASE_TYPE_TUITU").First().ItemDetailId;
List<string> notTypeids = new List<string>
{
typeid_fanxin,
typeid_jiagai,
typeid_fanjian,
typeid_cunliang,
typeid_tuitu,
};
var typeFanxinCount = typeCountList
.Where(c => c.communityid == item.Id.ToString() && c.typeid == typeid_fanxin).Sum(c => c.count);
var typeJiagaiCount = typeCountList
.Where(c => c.communityid == item.Id.ToString() && c.typeid == typeid_jiagai).Sum(c => c.count);
var typeFanjianCount = typeCountList
.Where(c => c.communityid == item.Id.ToString() && c.typeid == typeid_fanjian).Sum(c => c.count);
var typeCunliangCount = typeCountList
.Where(c => c.communityid == item.Id.ToString() && c.typeid == typeid_cunliang).Sum(c => c.count);
var typeTuituCount = typeCountList
.Where(c => c.communityid == item.Id.ToString() && c.typeid == typeid_tuitu).Sum(c => c.count);
var typeOtherCount = typeCountList
.Where(c => c.communityid == item.Id.ToString() && !notTypeids.Contains(c.typeid)).Sum(c => c.count);
//上报案件数量
obj.Add("allCount", _allCount);
//完成外业核查数量
obj.Add("handleStatus", _handleStatus);
//24h内未核查
obj.Add("notDealHour24", _notDealHour24);
obj.Add("typeFanxinCount", typeFanxinCount);
obj.Add("typeJiagaiCount", typeJiagaiCount);
obj.Add("typeFanjianCount", typeFanjianCount);
obj.Add("typeCunliangCount", typeCunliangCount);
obj.Add("typeTuituCount", typeTuituCount);
obj.Add("typeOtherCount", typeOtherCount);
//合法
obj.Add("illegal0Count", _illegal0Count);
//违法 外业核实后确定违法数
obj.Add("illegal1Count", _illegal1Count);
//伪变化
obj.Add("illegal2Count", _illegal2Count);
//违法类型 未知类型数量
obj.Add("illegalNullCount", _illegalNullCount);
//违法面积
obj.Add("illegalHandleAreaList", _illegalHandleAreaList);
//整改销号数
obj.Add("illegalHandle2Status", _illegalHandle2Status);
//尚未整改宗数
obj.Add("illegalHandle01Status", _illegalHandle01Status);
//销号面积
obj.Add("illegalHandle2AreaList", _illegalHandle2AreaList);
//未整改面积
obj.Add("illegalHandle01AreaList", _illegalHandle01AreaList);
//3日内未整改完成
obj.Add("notComplete3", _notComplete3);
//7日内未整改完成
obj.Add("notComplete7", _notComplete7);
//30日内未整改完成
obj.Add("notComplete30", _notComplete30);
//30日以上未整改完成
obj.Add("notComplete30More", _notComplete30More);
array.Add(obj);
}
JObject _obj = new JObject();
//所属镇
_obj.Add("streetid", currentStreet.Id);
_obj.Add("streetname", currentStreet.Name);
_obj.Add("communityid", "");
_obj.Add("communityname", "合计");
_obj.Add("is_area", 0);
//上报案件数量
_obj.Add("allCount", array.Sum(c => int.Parse(c["allCount"].ToString())));
//完成外业核查数量
_obj.Add("handleStatus", array.Sum(c => int.Parse(c["handleStatus"].ToString())));
//24h内未核查
_obj.Add("notDealHour24", array.Sum(c => int.Parse(c["notDealHour24"].ToString())));
_obj.Add("typeFanxinCount", array.Sum(c => int.Parse(c["typeFanxinCount"].ToString())));
_obj.Add("typeJiagaiCount", array.Sum(c => int.Parse(c["typeJiagaiCount"].ToString())));
_obj.Add("typeFanjianCount", array.Sum(c => int.Parse(c["typeFanjianCount"].ToString())));
_obj.Add("typeCunliangCount", array.Sum(c => int.Parse(c["typeCunliangCount"].ToString())));
_obj.Add("typeTuituCount", array.Sum(c => int.Parse(c["typeTuituCount"].ToString())));
_obj.Add("typeOtherCount", array.Sum(c => int.Parse(c["typeOtherCount"].ToString())));
//合法
_obj.Add("illegal0Count", array.Sum(c => int.Parse(c["illegal0Count"].ToString())));
//违法 外业核实后确定违法数
_obj.Add("illegal1Count", array.Sum(c => int.Parse(c["illegal1Count"].ToString())));
//伪变化
_obj.Add("illegal2Count", array.Sum(c => int.Parse(c["illegal2Count"].ToString())));
//违法类型 未知类型数量
_obj.Add("illegalNullCount", array.Sum(c => int.Parse(c["illegalNullCount"].ToString())));
//违法面积
_obj.Add("illegalHandleAreaList", array.Sum(c => decimal.Parse(c["illegalHandleAreaList"].ToString())));
//整改销号数
_obj.Add("illegalHandle2Status", array.Sum(c => int.Parse(c["illegalHandle2Status"].ToString())));
//尚未整改宗数
_obj.Add("illegalHandle01Status", array.Sum(c => int.Parse(c["illegalHandle01Status"].ToString())));
//销号面积
_obj.Add("illegalHandle2AreaList", array.Sum(c => decimal.Parse(c["illegalHandle2AreaList"].ToString())));
//未整改面积
_obj.Add("illegalHandle01AreaList", array.Sum(c => decimal.Parse(c["illegalHandle01AreaList"].ToString())));
//3日内未整改完成
_obj.Add("notComplete3", array.Sum(c => int.Parse(c["notComplete3"].ToString())));
//7日内未整改完成
_obj.Add("notComplete7", array.Sum(c => int.Parse(c["notComplete7"].ToString())));
//30日内未整改完成
_obj.Add("notComplete30", array.Sum(c => int.Parse(c["notComplete30"].ToString())));
//30日以上未整改完成
_obj.Add("notComplete30More", array.Sum(c => int.Parse(c["notComplete30More"].ToString())));
array.Add(_obj);
return array;
}
#endregion
#region 无人机发现违法行为情况统计明细表
public Response<List<OffenceResp>> CaseOffence(DateTime startTime, DateTime endTime, string tubanlaiyuan)
{
//合法:已经归档的合法案件 is_illegal
//违法:已经归档的违法案件,未归档的案件 is_illegal
//其他:已经归档的其他案件 is_illegal
//非粮化:已经归档的非粮化 weifaleixing 并且is_illegal=1 非农化也是
//补办手续:已经归档的补办手续 measure_name并且is_illegal=1 weifaleixing =0
//拆除拆除复耕:已经归档的拆除 measure_name并且is_illegal=1 weifaleixing =0
//核实后: 已归档非农 + 所有未归档的 + 耕地大于0
//整改后剩余新增违法耕地: 所有未归档的 + 耕地大于0
var user = _auth.GetCurrentUser().User;
var orgIds = base._auth.GetCurrentUser().Orgs;
List<OffenceResp> listResp = new List<OffenceResp>();
//只查询农用地案件
//var casetype = client.Queryable<SysDataItemDetail>()
// .Where(r => r.ItemCode == "DRONE_CASE_TYPE" && r.ItemValue == "DRONE_CASE_TYPE_NYD").First()?.ItemDetailId;
//总计
int xftbzscount = 0,
hfzscount = 0,
wfzscount = 0,
fnhzscount = 0,
flhzscount = 0,
qtzscount = 0,
bbsxzscount = 0,
cczscount = 0,
bzgdtbzscount = 0,
hshxzwfgdzscount = 0,
zghsywfgdzscount = 0;
double xfgdmjsum = 0.0,
xfmjsum = 0.0,
hfmjsum = 0.0,
hfgdmjsum = 0.0,
wfmjsum = 0.0,
wfgdmjsum = 0.0,
qtmjsum = 0.0,
qtgdmjsum = 0.0,
fnhmjsum = 0.0,
fnhgdmjsum = 0.0,
flhmjsum = 0.0,
flhgdmjsum = 0.0,
bbsxmjsum = 0.0,
bbsxgdmjsum = 0.0,
ccmjsum = 0.0,
ccgdmjsum = 0.0,
bzgdmjsum = 0.0,
hshxzwfgdgdmjsum = 0.0,
zghsywfgdgdmjsum = 0.0;
double SumArea(IEnumerable<DroneCaseInfoSingle> cases, Func<DroneCaseInfoSingle, string> selector)
{
var sum = cases
.Select(selector)
.Where(area => !string.IsNullOrEmpty(area))
.Sum(area => double.TryParse(area, out var result) ? result : 0);
return Math.Round(sum, 2); // 保留两位小数
}
List<SysOrg> org = new List<SysOrg>();
List<DroneCaseInfoSingle> caseList = new List<DroneCaseInfoSingle>();
List<string> tubanlaiyuanList = string.IsNullOrEmpty(tubanlaiyuan)
? new List<string>()
: tubanlaiyuan.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
if (orgIds.Any(r => r.Level == 0) || user.Id == -1) // 查询全部
{
org = client.Queryable<SysOrg>().Where(r => r.Level == 1).ToList();
caseList = client.Queryable<DroneCaseInfoSingle>()
.LeftJoin<WFProcess>((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<SysOrg>()
.Where(r => r.Level == 2 && orgIds.Select(a => a.Id).Contains(r.ParentId)).ToList();
caseList = client.Queryable<DroneCaseInfoSingle>()
.LeftJoin<WFProcess>((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<List<OffenceResp>>
{
Result = listResp,
Message = "获取数据成功"
};
}
/// <summary>
/// 无人机全域巡查图斑整改情况统计表
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public Response<List<OffenceResp>> CaseOffenceForExcel(DateTime startTime, DateTime endTime, string tubanlaiyuan)
{
//核实后新增违法耕地 :占耕地的未归档图斑+占耕地的已归档的非农化类型图斑
//整改后剩余违法耕地 :占耕地的未归档的图斑
var user = _auth.GetCurrentUser().User;
var orgIds = base._auth.GetCurrentUser().Orgs;
List<OffenceResp> listResp = new List<OffenceResp>();
//只查询农用地案件
//var casetype = client.Queryable<SysDataItemDetail>()
// .Where(r => r.ItemCode == "DRONE_CASE_TYPE" && r.ItemValue == "DRONE_CASE_TYPE_NYD").First()?.ItemDetailId;
//总计
int xftbzscount = 0,
hshxzwfgdzscount = 0,
zghsywfgdzscount = 0;
double xfgdmjsum = 0.0,
hshxzwfgdgdmjsum = 0.0,
zghsywfgdgdmjsum = 0.0;
double SumArea(IEnumerable<DroneCaseInfoSingle> cases, Func<DroneCaseInfoSingle, string> selector)
{
var sum = cases
.Select(selector)
.Where(area => !string.IsNullOrEmpty(area))
.Sum(area => double.TryParse(area, out var result) ? result : 0);
return Math.Round(sum, 2); // 保留两位小数
}
List<SysOrg> org = new List<SysOrg>();
List<DroneCaseInfoSingle> caseList = new List<DroneCaseInfoSingle>();
var tubanlaiyuanList =
string.IsNullOrEmpty(tubanlaiyuan) ? new List<string>() : tubanlaiyuan.Split(",").ToList();
if (orgIds.Any(r => r.Level == 0) || user.Id == -1) // 查询全部
{
org = client.Queryable<SysOrg>().Where(r => r.Level == 1).ToList();
caseList = client.Queryable<DroneCaseInfoSingle>()
.LeftJoin<WFProcess>((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<SysOrg>()
.Where(r => r.Level == 2 && orgIds.Select(a => a.Id).Contains(r.ParentId)).ToList();
caseList = client.Queryable<DroneCaseInfoSingle>()
.LeftJoin<WFProcess>((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<List<OffenceResp>>
{
Result = listResp,
Message = "获取数据成功"
};
}
/// <summary>
/// 无人机全域巡查图斑下发情况统计表
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public Response<List<OffenceTBResp>> CaseOffencetbForExcel(DateTime startTime, DateTime endTime,
string tubanlaiyuan)
{
var user = _auth.GetCurrentUser().User;
var orgIds = base._auth.GetCurrentUser().Orgs;
List<OffenceTBResp> listResp = new List<OffenceTBResp>();
double SumArea(IEnumerable<DroneCaseInfoSingle> cases, Func<DroneCaseInfoSingle, string> selector)
{
var sum = cases
.Select(selector)
.Where(area => !string.IsNullOrEmpty(area))
.Sum(area => double.TryParse(area, out var result) ? result : 0);
return Math.Round(sum, 2); // 保留两位小数
}
List<SysOrg> org = new List<SysOrg>();
List<DroneCaseInfoSingle> caseList = new List<DroneCaseInfoSingle>();
var tubanlaiyuanList =
string.IsNullOrEmpty(tubanlaiyuan) ? new List<string>() : tubanlaiyuan.Split(",").ToList();
if (orgIds.Any(r => r.Level == 0) || user.Id == -1) // 查询全部
{
org = client.Queryable<SysOrg>().Where(r => r.Level == 1).ToList();
caseList = client.Queryable<DroneCaseInfoSingle>()
.LeftJoin<WFProcess>((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<SysOrg>()
.Where(r => r.Level == 2 && orgIds.Select(a => a.Id).Contains(r.ParentId)).ToList();
caseList = client.Queryable<DroneCaseInfoSingle>()
.LeftJoin<WFProcess>((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<List<OffenceTBResp>>
{
Result = listResp,
Message = "获取数据成功"
};
}
public async Task<Response<PageInfo<List<DroneCaseInfoSingle>>>> LoadCaseInfoListOffence(QueryCaseOffencetReq req)
{
var user = _auth.GetCurrentUser().User;
var orgIds = base._auth.GetCurrentUser().Orgs;
RefAsync<int> totalcount = 0;
//// 只查询农用地案件
//var casetype = client.Queryable<SysDataItemDetail>()
// .Where(r => r.ItemCode == "DRONE_CASE_TYPE" && r.ItemValue == "DRONE_CASE_TYPE_NYD")
// .Select(r => r.ItemDetailId)
// .First();
// 查询案件列表的基础查询
List<string> tubanlaiyuanList = string.IsNullOrEmpty(req.tubanlaiyuan)
? new List<string>()
: req.tubanlaiyuan.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
var baseQuery = client.Queryable<DroneCaseInfoSingle>()
.LeftJoin<WFProcess>((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<SysOrg>().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<SysOrg>()
.Where(r => r.Level == 2 && orgIds.Select(a => a.Id).Contains(r.ParentId)).Select(r => r.Id.ToString())
.ToList();
baseQuery = req.AreaId == "0"
? baseQuery.Where(a => orgIds_c.Contains(a.streetid))
: baseQuery.Where(a => a.streetid == req.AreaId);
}
else
{
return new Response<PageInfo<List<DroneCaseInfoSingle>>>
{
Result = new PageInfo<List<DroneCaseInfoSingle>>(),
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<PageInfo<List<DroneCaseInfoSingle>>>
{
Result = new PageInfo<List<DroneCaseInfoSingle>>
{
Items = result,
Total = totalcount
},
Message = "获取数据成功"
};
}
//导出汇总
public Response<MemoryStream> CaseOffenceToExcel(List<OffenceResp> list)
{
Response<MemoryStream> response = new Response<MemoryStream>();
try
{
HSSFWorkbook workbook = new HSSFWorkbook();
ISheet sheet = workbook.CreateSheet("Sheet1");
#region 样式设置
ICellStyle CreateCellStyle(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign,
VerticalAlignment vAlign, bool bold = false)
{
IFont font = wb.CreateFont();
font.FontName = fontName;
font.FontHeightInPoints = fontHeight;
font.IsBold = bold;
ICellStyle style = wb.CreateCellStyle();
style.BorderBottom = BorderStyle.Thin;
style.BorderLeft = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
style.BorderTop = BorderStyle.Thin;
style.Alignment = hAlign;
style.VerticalAlignment = vAlign;
style.SetFont(font);
style.WrapText = true;
return style;
}
ICellStyle contentStyle =
CreateCellStyle(workbook, 20, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
ICellStyle titleStyle =
CreateCellStyle(workbook, 12, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
ICellStyle headerStyle1 = CreateCellStyle(workbook, 36, "方正小标宋简体", HorizontalAlignment.Center,
VerticalAlignment.Center);
ICellStyle headerStyle2 =
CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
ICellStyle headerStyle3 =
CreateCellStyle(workbook, 20, "黑体", HorizontalAlignment.Center, VerticalAlignment.Center);
#endregion
#region 创建表头
IRow CreateRowWithHeight(ISheet sht, int rowIndex, float heightInPoints)
{
IRow row = sht.CreateRow(rowIndex);
row.HeightInPoints = heightInPoints;
return row;
}
void SetCellStyle(IRow row, ICellStyle style)
{
foreach (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<MemoryStream> CaseOffenceSimpleToExcel(DateTime startTime, DateTime endTime)
//{
// Response<MemoryStream> response = new Response<MemoryStream>();
// try
// {
// var list = CaseOffence(startTime, endTime).Result;
// HSSFWorkbook workbook = new HSSFWorkbook();
// ISheet sheet = workbook.CreateSheet("Sheet1");
// #region 样式设置
// ICellStyle CreateCellStyle(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign, VerticalAlignment vAlign, bool bold = false)
// {
// IFont font = wb.CreateFont();
// font.FontName = fontName;
// font.FontHeightInPoints = fontHeight;
// font.IsBold = bold;
// ICellStyle style = wb.CreateCellStyle();
// style.BorderBottom = BorderStyle.Thin;
// style.BorderLeft = BorderStyle.Thin;
// style.BorderRight = BorderStyle.Thin;
// style.BorderTop = BorderStyle.Thin;
// style.Alignment = hAlign;
// style.VerticalAlignment = vAlign;
// style.SetFont(font);
// style.WrapText = true;
// return style;
// }
// ICellStyle CreateCellStyle2(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign, VerticalAlignment vAlign, bool bold = false)
// {
// IFont font = wb.CreateFont();
// font.FontName = fontName;
// font.FontHeightInPoints = fontHeight;
// font.IsBold = bold;
// ICellStyle style = wb.CreateCellStyle();
// style.Alignment = hAlign;
// style.VerticalAlignment = vAlign;
// style.SetFont(font);
// style.WrapText = true;
// return style;
// }
// // 创建右对齐样式
// ICellStyle rightAlignStyle = workbook.CreateCellStyle();
// rightAlignStyle.Alignment = HorizontalAlignment.Right; // 设置右对齐
// rightAlignStyle.VerticalAlignment = VerticalAlignment.Center;
// IFont font = workbook.CreateFont();
// font.FontName = "宋体";
// font.FontHeightInPoints = 12;
// rightAlignStyle.SetFont(font);
// rightAlignStyle.WrapText = true;
// //第二个sheet右对齐样式
// ICellStyle rightAlignStyle2 = workbook.CreateCellStyle();
// rightAlignStyle2.Alignment = HorizontalAlignment.Right; // 设置右对齐
// rightAlignStyle2.VerticalAlignment = VerticalAlignment.Center;
// IFont font1 = workbook.CreateFont();
// font1.FontName = "宋体";
// font1.FontHeightInPoints = 9;
// rightAlignStyle2.SetFont(font1);
// rightAlignStyle2.WrapText = true;
// ICellStyle contentStyle = CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
// ICellStyle titleStyle = CreateCellStyle2(workbook, 10, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
// ICellStyle headerStyle1 = CreateCellStyle2(workbook, 18, "方正小标宋简体", HorizontalAlignment.Center, VerticalAlignment.Center);
// ICellStyle headerStyle2 = CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Right, VerticalAlignment.Center);
// ICellStyle headerStyle3 = CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
// //第二个sheet
// ICellStyle contentStyle22 = CreateCellStyle(workbook, 12, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
// ICellStyle titleStyle2 = CreateCellStyle2(workbook, 9, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
// ICellStyle headerStyle21 = CreateCellStyle2(workbook, 18, "方正小标宋简体", HorizontalAlignment.Center, VerticalAlignment.Center);
// ICellStyle headerStyle23 = CreateCellStyle(workbook, 12, "黑体", HorizontalAlignment.Center, VerticalAlignment.Center);
// ICellStyle beizhuStyle21 = CreateCellStyle2(workbook, 9, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
// #endregion
// #region 第一个sheet
// #region 创建表头
// IRow CreateRowWithHeight(ISheet sht, int rowIndex, float heightInPoints)
// {
// IRow row = sht.CreateRow(rowIndex);
// row.HeightInPoints = heightInPoints;
// return row;
// }
// void SetCellStyle(IRow row, ICellStyle style)
// {
// foreach (NPOI.SS.UserModel.ICell cell in row.Cells)
// {
// cell.CellStyle = style;
// }
// }
// IRow row0 = CreateRowWithHeight(sheet, 1, 30);
// row0.CreateCell(0).SetCellValue($"{startTime.Year}年{startTime.Month}-{endTime.Month}月土地卫片新增违法占用等地情况统计表");
// for (int k = 1; k < 4; k++) row0.CreateCell(k);
// IRow row1 = CreateRowWithHeight(sheet, 2, 15);
// row1.CreateCell(0).SetCellValue("统计时间:" + DateTime.Now.ToString("M月d日HH:mm"));
// row1.CreateCell(1);
// row1.CreateCell(2);
// row1.CreateCell(3).SetCellValue("单位:亩");
// //for (int k = 1; k < 4; k++) row1.CreateCell(k);
// IRow row2 = CreateRowWithHeight(sheet, 3, 30);
// row2.CreateCell(0).SetCellValue("序号");
// row2.CreateCell(1).SetCellValue("县区");
// row2.CreateCell(2).SetCellValue("宗数");
// row2.CreateCell(3).SetCellValue("剩余违法耕地");
// // 设置样式
// SetCellStyle(row0, headerStyle1);
// SetCellStyle(row1, titleStyle);
// SetCellStyle(row2, headerStyle3);
// row1.Cells[3].CellStyle = rightAlignStyle;
// // 合并单元格
// sheet.AddMergedRegion(new CellRangeAddress(1, 1, 0, 3)); // 合并标题行
// sheet.AddMergedRegion(new CellRangeAddress(2, 2, 0, 1));
// // 设置列宽
// int[] normalColumns = { 1, 2 };
// foreach (var index in normalColumns) sheet.SetColumnWidth(index, 20 * 256); // 设置列宽
// sheet.SetColumnWidth(0, 12 * 256); // 设置列宽
// sheet.SetColumnWidth(3, 30 * 256); // 设置列宽
// #endregion
// #region 填充数据
// for (int i = 0; i < list.Count-1; i++)
// {
// var rowIndex = i + 4; // 数据从第5行开始
// var row = CreateRowWithHeight(sheet, rowIndex, 30);
// row.CreateCell(0).SetCellValue(i + 1);
// row.CreateCell(1).SetCellValue(list[i].countyname ?? "");
// row.CreateCell(2).SetCellValue(list[i].zghsywfgdzs);
// row.CreateCell(3).SetCellValue(list[i].zghsywfgdgdmj);
// SetCellStyle(row, contentStyle);
// }
// //创建总计行
// var rowzj1 = CreateRowWithHeight(sheet, list.Count + 3, 34);
// sheet.AddMergedRegion(new CellRangeAddress(list.Count + 3, list.Count + 3, 0, 1));
// rowzj1.CreateCell(0).SetCellValue("总计");
// rowzj1.CreateCell(1);
// rowzj1.CreateCell(2).SetCellValue(list[list.Count - 1].zghsywfgdzs);
// rowzj1.CreateCell(3).SetCellValue(list[list.Count - 1].zghsywfgdgdmj);
// SetCellStyle(rowzj1, contentStyle);
// #endregion
// #endregion
// #region 第二个sheet
// ISheet sheet2 = workbook.CreateSheet("Sheet2");
// #region 创建表头
// IRow row20 = CreateRowWithHeight(sheet2, 0, 38);
// row20.CreateCell(0).SetCellValue("无人机发现违法行为统计表");
// for (int k = 1; k < 8; k++) row0.CreateCell(k);
// IRow row21 = CreateRowWithHeight(sheet2, 1, 27);
// row21.CreateCell(0).SetCellValue("统计时间:" + DateTime.Now.ToString("yyyy年M月d日HH:mm"));
// row21.CreateCell(1);
// row21.CreateCell(2);
// row21.CreateCell(3);
// row21.CreateCell(4);
// row21.CreateCell(5);
// row21.CreateCell(6);
// row21.CreateCell(7).SetCellValue("单位:个、亩");
// IRow row22 = CreateRowWithHeight(sheet2, 2, 34);
// row22.CreateCell(0).SetCellValue("序号");
// row22.CreateCell(1).SetCellValue("县区");
// row22.CreateCell(2).SetCellValue("下发图斑");
// row22.CreateCell(3);
// row22.CreateCell(4).SetCellValue("核实后新增违法耕地");
// row22.CreateCell(5);
// row22.CreateCell(6).SetCellValue("整改后剩余违法耕地");
// row22.CreateCell(7);
// IRow row23 = CreateRowWithHeight(sheet2, 3, 34);
// row23.CreateCell(0).SetCellValue("序号");
// row23.CreateCell(1).SetCellValue("县区");
// row23.CreateCell(2).SetCellValue("宗数");
// row23.CreateCell(3).SetCellValue("耕地面积");
// row23.CreateCell(4).SetCellValue("宗数");
// row23.CreateCell(5).SetCellValue("耕地面积");
// row23.CreateCell(6).SetCellValue("宗数");
// row23.CreateCell(7).SetCellValue("耕地面积");
// // 设置样式
// SetCellStyle(row20, headerStyle21);
// SetCellStyle(row21, titleStyle2);
// SetCellStyle(row22, headerStyle23);
// SetCellStyle(row23, headerStyle23);
// row21.Cells[7].CellStyle = rightAlignStyle2;
// // 合并单元格
// sheet2.AddMergedRegion(new CellRangeAddress(0, 0, 0, 7)); // 合并标题行
// sheet2.AddMergedRegion(new CellRangeAddress(1, 1, 0, 2));
// sheet2.AddMergedRegion(new CellRangeAddress(2, 2, 2, 3));
// sheet2.AddMergedRegion(new CellRangeAddress(2, 2, 4, 5));
// sheet2.AddMergedRegion(new CellRangeAddress(2, 2, 6, 7));
// sheet2.AddMergedRegion(new CellRangeAddress(2, 3, 0, 0));
// sheet2.AddMergedRegion(new CellRangeAddress(2, 3, 1, 1));
// // 设置列宽
// int[] normalColumns2 = { 2,3,4,5,6,7 };
// foreach (var index in normalColumns2) sheet2.SetColumnWidth(index, 11 * 256); // 设置列宽
// sheet2.SetColumnWidth(0, 6 * 256); // 设置列宽
// sheet2.SetColumnWidth(1, 10 * 256); // 设置列宽
// #endregion
// #region 填充数据
// for (int i = 0; i < list.Count - 1; i++)
// {
// var rowIndex = i + 4; // 数据从第5行开始
// var row = CreateRowWithHeight(sheet2, rowIndex, 34);
// row.CreateCell(0).SetCellValue(i + 1);
// row.CreateCell(1).SetCellValue(list[i].countyname ?? "");
// row.CreateCell(2).SetCellValue(list[i].xftbzs);
// row.CreateCell(3).SetCellValue(list[i].xfgdmj);
// row.CreateCell(4).SetCellValue(list[i].hshxzwfgdzs);
// row.CreateCell(5).SetCellValue(list[i].hshxzwfgdgdmj);
// row.CreateCell(6).SetCellValue(list[i].zghsywfgdzs);
// row.CreateCell(7).SetCellValue(list[i].zghsywfgdgdmj);
// SetCellStyle(row, contentStyle22);
// }
// //创建总计行
// var rowzj = CreateRowWithHeight(sheet2, list.Count + 3, 34);
// sheet2.AddMergedRegion(new CellRangeAddress(list.Count + 3, list.Count + 3, 0, 1));
// rowzj.CreateCell(0).SetCellValue("总计");
// rowzj.CreateCell(1);
// rowzj.CreateCell(2).SetCellValue(list[list.Count - 1].xftbzs);
// rowzj.CreateCell(3).SetCellValue(list[list.Count - 1].xfgdmj);
// rowzj.CreateCell(4).SetCellValue(list[list.Count - 1].hshxzwfgdzs);
// rowzj.CreateCell(5).SetCellValue(list[list.Count - 1].hshxzwfgdgdmj);
// rowzj.CreateCell(6).SetCellValue(list[list.Count - 1].zghsywfgdzs);
// rowzj.CreateCell(7).SetCellValue(list[list.Count - 1].zghsywfgdgdmj);
// SetCellStyle(rowzj, contentStyle22);
// //创建备注行
// var rowbz = CreateRowWithHeight(sheet2, list.Count + 4, 15);
// sheet2.AddMergedRegion(new CellRangeAddress(list.Count + 4, list.Count + 4, 0, 7));
// rowbz.CreateCell(0).SetCellValue("备注:此统计表以“整改后剩余违法耕地”耕地面积进行排序");
// rowbz.CreateCell(1);
// rowbz.CreateCell(2);
// rowbz.CreateCell(3);
// rowbz.CreateCell(4);
// rowbz.CreateCell(5);
// rowbz.CreateCell(6);
// rowbz.CreateCell(7);
// SetCellStyle(rowbz, beizhuStyle21);
// #endregion
// #endregion
// response.Result = new MemoryStream();
// workbook.Write(response.Result);
// response.Result.Position = 0;
// workbook.Close();
// response.Code = 200;
// response.Message = "获取成功";
// }
// catch (Exception ex)
// {
// response.Code = 500;
// response.Message = ex.Message;
// }
// return response;
//}
//导出简易表1
public Response<MemoryStream> CaseOffenceSimpleToExcel(DateTime startTime, DateTime endTime, string tubanlaiyuan)
{
Response<MemoryStream> response = new Response<MemoryStream>();
try
{
var list = CaseOffence(startTime, endTime, tubanlaiyuan).Result;
HSSFWorkbook workbook = new HSSFWorkbook();
ISheet sheet = workbook.CreateSheet("Sheet1");
#region 样式设置
ICellStyle CreateCellStyle(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign,
VerticalAlignment vAlign, bool bold = false)
{
IFont font = wb.CreateFont();
font.FontName = fontName;
font.FontHeightInPoints = fontHeight;
font.IsBold = bold;
ICellStyle style = wb.CreateCellStyle();
style.BorderBottom = BorderStyle.Thin;
style.BorderLeft = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
style.BorderTop = BorderStyle.Thin;
style.Alignment = hAlign;
style.VerticalAlignment = vAlign;
style.SetFont(font);
style.WrapText = true;
return style;
}
ICellStyle CreateCellStyle2(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign,
VerticalAlignment vAlign, bool bold = false)
{
IFont font = wb.CreateFont();
font.FontName = fontName;
font.FontHeightInPoints = fontHeight;
font.IsBold = bold;
ICellStyle style = wb.CreateCellStyle();
style.Alignment = hAlign;
style.VerticalAlignment = vAlign;
style.SetFont(font);
style.WrapText = true;
return style;
}
// 创建右对齐样式
ICellStyle rightAlignStyle = workbook.CreateCellStyle();
rightAlignStyle.Alignment = HorizontalAlignment.Right; // 设置右对齐
rightAlignStyle.VerticalAlignment = VerticalAlignment.Center;
IFont font = workbook.CreateFont();
font.FontName = "宋体";
font.FontHeightInPoints = 12;
rightAlignStyle.SetFont(font);
rightAlignStyle.WrapText = true;
ICellStyle contentStyle =
CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
ICellStyle titleStyle =
CreateCellStyle2(workbook, 10, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
ICellStyle headerStyle1 = CreateCellStyle2(workbook, 18, "方正小标宋简体", HorizontalAlignment.Center,
VerticalAlignment.Center);
ICellStyle headerStyle2 =
CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Right, VerticalAlignment.Center);
ICellStyle headerStyle3 = CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Center,
VerticalAlignment.Center, true);
#endregion
#region 第一个sheet
#region 创建表头
IRow CreateRowWithHeight(ISheet sht, int rowIndex, float heightInPoints)
{
IRow row = sht.CreateRow(rowIndex);
row.HeightInPoints = heightInPoints;
return row;
}
void SetCellStyle(IRow row, ICellStyle style)
{
foreach (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<MemoryStream> CaseOffenceSimpleToExcel2(DateTime startTime, DateTime endTime, string tubanlaiyuan)
{
Response<MemoryStream> response = new Response<MemoryStream>();
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;
}
/// <summary>
/// 导出无人机全域巡查图斑整改情况统计表
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public Response<MemoryStream> CaseOfWrjqyxctbzgqktjbToExcel(DateTime startTime, DateTime endTime,
string tubanlaiyuan)
{
Response<MemoryStream> response = new Response<MemoryStream>();
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;
}
/// <summary>
/// 导出无人机全域巡查图斑下发情况统计表
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public Response<MemoryStream> CaseOfWrjqyxctbxfqktjbToExcel(DateTime startTime, DateTime endTime,
string tubanlaiyuan)
{
Response<MemoryStream> response = new Response<MemoryStream>();
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<List<DroneCaseByTypeResp>> ExprotCaseListByType(QueryCaseOffencetReq req)
{
var authStrategyContext = _auth.GetCurrentUser();
var user = authStrategyContext.User;
if (user == null)
{
return new Response<List<DroneCaseByTypeResp>>
{
Code = 401,
Message = "Unauthorized"
};
}
RefAsync<int> totalcount = 0;
string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=@UserId";
int level = client.Ado.GetInt(sql1, new { UserId = user.Id });
List<string> deplist = new List<string>();
if (level != 0 && user.Id != -1)
{
var departs = client.Queryable<SysUserOrg>().Where(r => r.UserId == user.Id).ToList();
foreach (var item in departs)
{
var list = client.Queryable<SysOrg>().ToChildList(it => it.ParentId, item.OrgId)
?.Select(it => it.Id.ToString()).ToList();
deplist = deplist.Union(list).ToList();
}
}
//var casetype = client.Queryable<SysDataItemDetail>()
// .Where(r => r.ItemCode == "DRONE_CASE_TYPE" && r.ItemValue == "DRONE_CASE_TYPE_NYD")
// .First()?.ItemDetailId;
//var casetype = "农用地";
string sqlpart = BuildSqlPart(req.AreaId, level, deplist);
if (!string.IsNullOrEmpty(req.tubanlaiyuan))
{
var tubanlaiyuanList = req.tubanlaiyuan.Split(",").ToList();
sqlpart += $" and tubanlaiyuan in ('{string.Join("','", tubanlaiyuanList)}')";
}
//var resubmit = client.Queryable<ReSubmit>().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<DroneCaseByTypeResp>(sql,
new { StartTime = req.StartTime, EndTime = req.EndTime, CaseTypeId = "农用地", @AreaId = req.AreaId });
caseList = FilterCasesByType(req.CaseType, caseList);
return new Response<List<DroneCaseByTypeResp>> { Result = caseList };
}
private string BuildSqlPart(string areaId, int level, List<string> deplist)
{
if (!string.IsNullOrEmpty(areaId) && areaId != "0")
{
if (level == 0)
{
return $" AND countyid = @AreaId";
}
if (level == 1)
{
return $" AND streetid = @AreaId";
}
}
if (deplist.Any())
{
string orgs = string.Join(",", deplist.Select(dep => $"'{dep}'"));
return $" AND (countyid IN ({orgs}) OR streetid IN ({orgs}) OR communityid IN ({orgs}))";
}
return string.Empty;
}
private List<DroneCaseByTypeResp> FilterCasesByType(int caseType, List<DroneCaseByTypeResp> caseList)
{
switch (caseType)
{
case 2:
return caseList.Where(r => r.isIllegal == "合法" && r.handleStatusName == "已归档").ToList();
case 3:
return caseList.Where(r =>
(r.isIllegal == "违法" && r.handleStatusName == "已归档") || r.handleStatusName != "已归档").ToList();
case 4:
return caseList.Where(r => r.isIllegal == "其他" && r.handleStatusName == "已归档").ToList();
case 5:
return caseList.Where(r => r.weifaleixing == "非粮化违法用地" && r.handleStatusName == "已归档").ToList();
case 6:
return caseList.Where(r => r.measureName == "补办手续" && r.handleStatusName == "已归档").ToList();
case 7:
//r.measure_name == "0" && r.handle_status_id == 5 && r.weifaleixing == 0 && r.is_illegal == 1
return caseList.Where(r =>
r.measureName == "拆除复耕" && r.handleStatusName == "已归档" && r.weifaleixing == "非农化违法用地").ToList();
case 8:
//((r.is_illegal == 1 && r.handle_status_id == 5) || r.handle_status_id != 5)&&
//!(r.weifaleixing == 1 && r.handle_status_id == 5 && r.is_illegal == 1) &&
//!((string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00") && r.handle_status_id == 5
// && (r.handle_status_id != 5 || (r.is_illegal == 1 && r.handle_status_id == 5))));
return caseList = caseList.Where(r =>
((r.isIllegal == "违法" && r.handleStatusName == "已归档") || r.handleStatusName != "已归档") &&
!(r.weifaleixing == "非粮化违法用地" && r.handleStatusName == "已归档") &&
!((r.gengdiArea == 0 && r.handleStatusName == "已归档") && (r.handleStatusName != "已归档" ||
(r.isIllegal == "违法" &&
r.handleStatusName == "已归档")))).ToList();
case 9:
// !((string.IsNullOrEmpty(r.gengdi_area) || r.gengdi_area == "0" || r.gengdi_area == "0.00") && r.handle_status_id == 5 && (r.handle_status_id != 5 || (r.is_illegal == 1 && r.handle_status_id == 5))) &&
return caseList = caseList.Where(r =>
((r.isIllegal == "违法" && r.handleStatusName == "已归档") || r.handleStatusName != "已归档") &&
!(r.weifaleixing == "非粮化违法用地" && r.handleStatusName == "已归档") &&
//!((r.gengdiArea == 0 && r.handleStatusName == "已归档") && (r.handleStatusName != "已归档" || (r.isIllegal == "违法" && r.handleStatusName == "已归档"))) &&
!(r.measureName == "补办手续" && r.handleStatusName == "已归档") &&
!(r.measureName == "拆除复耕" && r.handleStatusName == "已归档"))
.ToList();
case 10:
//&& r.is_illegal == 1 && r.handle_status_id == 5
//casesForCounty.Count(r => (r.weifaleixing == 0 && r.is_illegal == 1 && r.handle_status_id == 5) || r.handle_status_id != 5);
return caseList = caseList.Where(r =>
(r.weifaleixing == "非农化违法用地" && r.isIllegal == "违法" && r.handleStatusName == "已归档") ||
r.handleStatusName != "已归档").ToList();
default:
return caseList;
}
}
public Response<MemoryStream> ListToExcelByCaseType(List<DroneCaseByTypeResp> list, List<ModuleColumn> headers)
{
var response = new Response<MemoryStream>();
try
{
var workbook = new HSSFWorkbook();
var contentStyle = CreateCellStyle(workbook, false);
var headerStyle = CreateCellStyle(workbook, true);
int sheetCount = list.Count / 60000 + 1;
for (int k = 0; k < sheetCount; k++)
{
var sheet = workbook.CreateSheet("Sheet" + k);
CreateHeaderRow(sheet, headers, headerStyle);
var rowsToWrite = list.Skip(k * 60000).Take(60000).ToList();
FillSheetWithData(workbook, sheet, rowsToWrite, headers, contentStyle);
}
using (var ms = new MemoryStream())
{
workbook.Write(ms);
response.Result = new MemoryStream(ms.ToArray());
}
response.Code = 200;
response.Message = "获取成功";
}
catch (Exception ex)
{
response.Code = 500;
response.Message = ex.Message;
}
return response;
}
private ICellStyle CreateCellStyle(HSSFWorkbook workbook, bool isHeader)
{
var font = workbook.CreateFont();
font.FontName = "Microsoft YaHei";
font.FontHeightInPoints = 12;
if (isHeader)
{
font.Boldweight = (short)FontBoldWeight.Bold;
}
var style = workbook.CreateCellStyle();
style.BorderBottom = BorderStyle.Thin;
style.BorderLeft = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
style.BorderTop = BorderStyle.Thin;
style.Alignment = HorizontalAlignment.Center;
style.VerticalAlignment = VerticalAlignment.Center;
style.SetFont(font);
style.WrapText = true;
return style;
}
private void CreateHeaderRow(ISheet sheet, List<ModuleColumn> headers, ICellStyle headerStyle)
{
var rowHeader = sheet.CreateRow(0);
rowHeader.Height = 20 * 30;
for (int i = 0; i < headers.Count; i++)
{
var header = headers[i];
var cell = rowHeader.CreateCell(i);
cell.CellStyle = headerStyle;
cell.SetCellValue(header.value);
//sheet.SetColumnWidth(i, 20 * 350);
}
sheet.SetColumnWidth(0, 10 * 256);
sheet.SetColumnWidth(1, 18 * 256);
sheet.SetColumnWidth(2, 10 * 256);
sheet.SetColumnWidth(3, 28 * 256);
sheet.SetColumnWidth(4, 12 * 256);
sheet.SetColumnWidth(5, 12 * 256);
sheet.SetColumnWidth(6, 15 * 256);
sheet.SetColumnWidth(7, 52 * 256);
sheet.SetColumnWidth(8, 12 * 256);
sheet.SetColumnWidth(9, 24 * 256);
sheet.SetColumnWidth(10, 10 * 256);
sheet.SetColumnWidth(11, 12 * 256);
sheet.SetColumnWidth(12, 10 * 256);
sheet.SetColumnWidth(13, 10 * 256);
sheet.SetColumnWidth(14, 10 * 256);
sheet.SetColumnWidth(15, 10 * 256);
sheet.SetColumnWidth(16, 10 * 256);
sheet.SetColumnWidth(17, 24 * 256);
sheet.SetColumnWidth(18, 15 * 256);
sheet.SetColumnWidth(19, 12 * 256);
sheet.SetColumnWidth(20, 17 * 256);
sheet.SetColumnWidth(21, 17 * 256);
sheet.SetColumnWidth(22, 31 * 256);
sheet.SetColumnWidth(23, 10 * 256);
sheet.SetColumnWidth(24, 24 * 256);
sheet.SetColumnWidth(25, 10 * 256);
sheet.SetColumnWidth(26, 12 * 256);
sheet.SetColumnWidth(27, 24 * 256);
sheet.SetColumnWidth(28, 30 * 256);
sheet.SetColumnWidth(29, 30 * 256);
sheet.SetColumnWidth(30, 30 * 256);
sheet.SetColumnWidth(31, 14 * 256);
sheet.SetColumnWidth(32, 30 * 256);
sheet.SetColumnWidth(33, 30 * 256);
sheet.SetColumnWidth(34, 30 * 256);
sheet.SetColumnWidth(35, 14 * 256);
sheet.SetColumnWidth(36, 30 * 256);
sheet.SetColumnWidth(37, 30 * 256);
}
private void FillSheetWithData(HSSFWorkbook workbook, ISheet sheet, List<DroneCaseByTypeResp> list,
List<ModuleColumn> headers,
ICellStyle contentStyle)
{
// 创建一个数值格式的CellStyle
ICellStyle numericStyle = workbook.CreateCellStyle();
// 创建一个数据格式对象
IDataFormat dataFormat = workbook.CreateDataFormat();
var font = workbook.CreateFont();
font.FontName = "Microsoft YaHei";
font.FontHeightInPoints = 12;
// 设置单元格格式为数值型
numericStyle.DataFormat = dataFormat.GetFormat("0.00");
numericStyle.BorderBottom = BorderStyle.Thin;
numericStyle.BorderLeft = BorderStyle.Thin;
numericStyle.BorderRight = BorderStyle.Thin;
numericStyle.BorderTop = BorderStyle.Thin;
numericStyle.Alignment = HorizontalAlignment.Center;
numericStyle.VerticalAlignment = VerticalAlignment.Center;
numericStyle.SetFont(font);
for (int i = 0; i < list.Count; i++)
{
var item = list[i];
var dataRow = sheet.CreateRow(i + 1);
for (int j = 0; j < headers.Count; j++)
{
if (headers[j].key == "area" || headers[j].key == "gengdiArea" || headers[j].key == "yongnongArea" ||
headers[j].key == "nongyongdiArea")
{
var cell = dataRow.CreateCell(j);
cell.CellStyle = numericStyle;
var objValue = GetCellDoubleValue(item, headers[j].key);
cell.SetCellValue(objValue);
}
else
{
var cell = dataRow.CreateCell(j);
cell.CellStyle = contentStyle;
if (headers[j].key == "xuhao")
{
cell.SetCellValue(i + 1);
}
else
{
var objValue = GetCellValue(item, headers[j].key);
cell.SetCellValue(objValue);
}
}
}
}
}
private string GetCellValue(DroneCaseByTypeResp item, string key)
{
return key switch
{
"tubanlaiyuan" => item.tubanlaiyuan,
"picihao" => item.picihao,
"caseNo" => item.caseNo,
"countyname" => item.countyname,
"streetname" => item.streetname,
"case_description" => item.case_description,
"typename" => item.typename,
"synchronoustime" => item.synchronoustime == null
? ""
: item.synchronoustime.ToString("yyyy-MM-dd HH:mm:ss"),
//"area" => item.area,
//"gengdiArea" => item.gengdiArea,
//"yongnongArea" => item.yongnongArea,
"isillegal" => item.isIllegal,
"handleStatusName" => item.handleStatusName,
"xiangmumc" => item.xiangmumc,
"xiangmuzhuti" => item.xiangmuzhuti,
"weifaleixing" => item.weifaleixing,
"measureName" => item.measureName,
"communityname" => item.communityname,
"qtsjyt" => string.IsNullOrEmpty(item.qtsjyt) ? "" : SJYT(item.qtsjyt),
"jieshou_people" => item.jieshou_people,
"jieshou_time" => item.jieshou_time == null ? "" :
DateTime.Parse(item.jieshou_time) == DateTime.MinValue ? string.Empty :
DateTime.Parse(item.jieshou_time).ToString("yyyy-MM-dd HH:mm:ss"),
"pandingyijushuoming" => item.pandingyijushuoming,
"examiner_name" => item.examiner_name,
"examine_time" => item.examine_time == DateTime.MinValue
? string.Empty
: item.examine_time.ToString("yyyy-MM-dd HH:mm:ss"),
"transactor_name" => item.transactor_name,
"transact_time" => item.transact_time == DateTime.MinValue
? string.Empty
: item.transact_time.ToString("yyyy-MM-dd HH:mm:ss"),
"remark" => item.remark,
"xjshenhejieguo" => item.xjshenhejieguo,
"xianjiyijian" => item.xianjiyijian,
"verifyuser" => item.verifyuser,
"verifytime" => item.verifytime == null ? "" :
DateTime.Parse(item.verifytime) == DateTime.MinValue ? string.Empty :
DateTime.Parse(item.verifytime).ToString("yyyy-MM-dd HH:mm:ss"),
"sjshenhejieguo" => item.sjshenhejieguo,
"shijiyijian" => item.shijiyijian,
"hexiaoren" => item.hexiaoren,
"hexiaotime" => item.hexiaotime == null ? "" : item.hexiaotime.ToString("yyyy-MM-dd HH:mm:ss"),
//item.hexiaotime == null ? "" : DateTime.Parse(item.hexiaotime) == DateTime.MinValue ? string.Empty : DateTime.Parse(item.hexiaotime).ToString("yyyy-MM-dd HH:mm:ss"),
_ => string.Empty,
};
}
private double GetCellDoubleValue(DroneCaseByTypeResp item, string key)
{
return key switch
{
"area" => item.area,
"gengdiArea" => item.gengdiArea,
"yongnongArea" => item.yongnongArea,
"nongyongdiArea" => item.nongyongdiArea,
};
}
private string SJYT(string qtsjyt)
{
string sjytvalue = "";
switch (qtsjyt)
{
case "1":
sjytvalue = "不改变原用地性质的光伏用地";
break;
case "2":
sjytvalue = "设施农业用地";
break;
case "3":
sjytvalue = "农村道路";
break;
case "4":
sjytvalue = "实地未变化";
break;
case "5":
sjytvalue = "临时用地";
break;
default:
sjytvalue = qtsjyt;
break;
}
return sjytvalue;
}
private string FormatDateTime(DateTimeOffset dateTime)
{
return dateTime == DateTimeOffset.MinValue ? string.Empty : dateTime.ToString("yyyy-MM-dd HH:mm:ss");
}
public void ExportToShapefileold(QueryCaseOffencetReq req, string shpFilePath)
{
var response = ExprotCaseListByType(req).Result;
List<int> gids = response.SelectMany(item =>
item.geomid.Split(',')
.Select(id => int.TryParse(id, out var gid) ? gid : (int?)null)
.Where(gid => gid.HasValue)
.Select(gid => gid.Value)).ToList();
string gidsString = string.Join(",", gids);
string query = $"SELECT gid, ST_AsText(geom) AS geom FROM drone_shp_data WHERE gid IN ({gidsString})";
// 执行查询
var data = client.Ado.SqlQuery<DroneShpDataResp>(query);
if (data == null || data.Count == 0)
{
throw new Exception("暂无数据");
}
List<IFeature> features = new List<IFeature>();
foreach (var row in data)
{
var geometry = ParseGeometry(row.geom);
if (geometry == null)
{
throw new Exception("数据不可用");
}
var attributes = new AttributesTable
{
{ "gid", row.gid },
};
IFeature feature = new Feature(geometry, attributes);
features.Add(feature);
}
if (features.Count == 0)
{
throw new Exception("数据不可用");
}
var geometryFactory = new GeometryFactory(new PrecisionModel(), 4326);
var shpDataWriter = new ShapefileDataWriter(shpFilePath, geometryFactory)
{
Header = ShapefileDataWriter.GetHeader(features[0], features.Count)
};
shpDataWriter.Write(features);
}
#region xin
#endregion
public void ExportToShapefile(QueryCaseOffencetReq req, string shpFilePath, string shpFilePathzip)
{
var response = ExprotCaseListByType(req).Result;
List<int> gids = response.SelectMany(item =>
item.geomid.Split(',')
.Select(id => int.TryParse(id, out var gid) ? gid : (int?)null)
.Where(gid => gid.HasValue)
.Select(gid => gid.Value)).ToList();
if (gids.Count < 1)
{
throw new Exception("暂无数据");
}
string gidsString = string.Join(",", gids);
//string query = $"SELECT gid,case_no,handle_status_name,typename,countyid,streetid, ST_AsText(geom) AS geom FROM view_drone_shp_data WHERE gid IN ({gidsString})";
string query =
$"SELECT gid,case_no,handle_status_name,typename,original_case_no,gengdi_area, is_illegal_name,is_intact_name," +
$"area,yongjiujibennongtian_area,xiangmumc,xiangmuzhuti,weifaleixing,measure_name,countyname,streetname,communityname,synchronoustime,tubanlaiyuan,ST_AsText(geom) AS geom FROM view_drone_caseinfo_shp WHERE gid IN ({gidsString})";
// 执行查询
var data = client.Ado.SqlQuery<DroneShpDataResp>(query);
if (data == null || data.Count == 0)
{
throw new Exception("暂无数据");
}
List<IFeature> features = new List<IFeature>();
foreach (var row in data)
{
var geometry = ParseGeometry(row.geom);
if (geometry == null)
{
throw new Exception("数据不可用");
}
var attributes = new AttributesTable
{
{ "gid", row.gid },
{ "图斑编号", row.case_no == null ? "" : row.case_no },
{ "当前状态", row.handle_status_name == null ? "" : row.handle_status_name },
{ "判读状态", row.is_intact_name == null ? "" : row.is_intact_name },
{ "图斑类型", row.typename == null ? "" : row.typename },
{ "判定结果", row.is_illegal_name == null ? "" : row.is_illegal_name },
{ "图斑面积(亩)", row.area == null ? "" : row.area },
{ "耕地面积", row.gengdi_area == null ? "" : row.gengdi_area },
{ "永农面积", row.yongjiujibennongtian_area == null ? "" : row.yongjiujibennongtian_area },
{ "项目名称", row.xiangmumc == null ? "" : row.xiangmumc },
{ "违法类型", row.weifaleixing == null ? "" : row.weifaleixing },
{ "处理措施", row.measure_name == null ? "" : row.measure_name },
{ "创建时间", row.synchronoustime == null ? "" : row.synchronoustime.ToString() },
{ "图斑来源", row.tubanlaiyuan == null ? "" : row.tubanlaiyuan },
};
IFeature feature = new Feature(geometry, attributes);
features.Add(feature);
}
if (features.Count == 0)
{
throw new Exception("数据不可用");
}
// 导出 SHP 文件及其关联文件
ExportToShapefileFour(shpFilePath, features);
// 将文件打包成 ZIP
CreateZipFromShapefiles(shpFilePath, shpFilePathzip);
}
public void ExportToShapefileFour(string shpPath, List<IFeature> features)
{
//var geometryFactory = new GeometryFactory();
//// 写入 CPG 文件(定义字符编码)
//var cpgPath = System.IO.Path.ChangeExtension(shpPath, "cpg");
//File.WriteAllText(cpgPath, "UTF-8", Encoding.UTF8);
//// 获取 SHP 文件头
//var header = ShapefileDataWriter.GetHeader(features[0], features.Count);
//// 创建 ShapefileDataWriter
//var shapeFileWriter = new ShapefileDataWriter(shpPath, geometryFactory)
//{
// Header = header
//};
//// 写入 SHP 文件
//shapeFileWriter.Write(features);
// 写入 CPG 文件(定义字符编码)
string prjStr =
@"GEOGCS[""GCS_China_Geodetic_Coordinate_System_2000"",DATUM[""D_China_2000"",SPHEROID[""CGCS2000"",6378137.0,298.257222101]],PRIMEM[""Greenwich"",0.0],UNIT[""Degree"",0.0174532925199433]]";
var cpgPath = 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<string>
{
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<int> gids = response.SelectMany(item =>
// item.geomid.Split(',')
// .Select(id => int.TryParse(id, out var gid) ? gid : (int?)null)
// .Where(gid => gid.HasValue)
// .Select(gid => gid.Value)).ToList();
// string gidsString = string.Join(",", gids);
// //参数
// string _path = _configuration.GetSection("PgSql:PostGisPath").Value;
// string DataBase = _configuration.GetSection("PgSql:DataBase").Value;
// string UserID = _configuration.GetSection("PgSql:UserID").Value;
// string PORT = _configuration.GetSection("PgSql:PORT").Value;
// string Host = _configuration.GetSection("PgSql:Host").Value;
// string Pwd = _configuration.GetSection("PgSql:Pwd").Value;
// string strDir = "pgsql2shp -f " + shpFilePath + " -h " + Host + " -u " + UserID + " -P " + Pwd + " -p " + PORT + " " + DataBase + " \"SELECT * FROM view_drone_shp_data WHERE gid IN (" + gidsString + ")\"";
// //调用cmd
// CommonData.ExeCmdProcess(strDir, _path);
// // 将文件打包成 ZIP
// CreateZipFromShapefiles(shpFilePath, shpFilePathzip);
//}
#endregion
#region 添加图片信息
public Response<bool> AddCaseImg(List<DroneImageRef> imgList)
{
try
{
//var imgList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<DroneImageRef>>(info);
client.Insertable<DroneImageRef>(imgList).ExecuteCommand();
return new Response<bool>
{
Result = true,
Message = "添加成功",
};
}
catch (Exception ex)
{
return new Response<bool>
{
Result = false,
Message = "添加失败",
};
}
}
/// <summary>
/// 获取图片信息
/// </summary>
/// <param name="caseid"></param>
/// <returns></returns>
public async Task<Response<List<DroneImageRef>>> LoadCaseImgList(string caseid, string category)
{
List<string> imageList = new List<string>();
RefAsync<int> totalcount = 0;
switch (category)
{
case "设施农用地":
//查询案件的填报(anjianzhaopian)和整改图片信息(chaichufugenghoupic),补办手续bubanzhaopian
var caseImg0 = await client.Queryable<DroneSsnyd>().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<DroneSsnydRcjg> subs = await client.Queryable<DroneSsnydRcjg>()
.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<DroneCaseInfoSingle>().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<DroneCaseInfoSatellite>().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<DroneCaseInfoMinerals>().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<DroneCaseInfoFLH>().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<DroneCaseInfoZdwt1>().FirstAsync(r => r.Id == caseid);
if (caseImg5 != null)
{
// 合并
AddImagesToList(caseImg5.anjianzhaopian, imageList);
}
break;
case "重点问题Ⅱ类":
var caseImg6 = await client.Queryable<DroneCaseInfoZdwt2>().FirstAsync(r => r.Id == caseid);
if (caseImg6 != null)
{
// 合并
AddImagesToList(caseImg6.anjianzhaopian, imageList);
}
break;
case "巡察审计":
//查询案件的填报(anjianzhaopian)和整改图片信息(chaichufugenghoupic),补办手续bubanzhaopian
var caseImg7 = await client.Queryable<DroneCaseInfoXcsj>().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<DroneImageRef>()
.WhereIF(!string.IsNullOrEmpty(caseid), r => r.CaseId == caseid)
.Where(r => imageList.Contains(r.FilePath))
.Select(r => new DroneImageRef()
{
Id = r.Id.SelectAll(),
})
.ToListAsync();
return new Response<List<DroneImageRef>>()
{
Result = caseList
};
}
void AddImagesToList(string images, List<string> list)
{
if (!string.IsNullOrEmpty(images))
{
list.AddRange(images.Split(',').Where(item => !string.IsNullOrWhiteSpace(item)));
}
}
public Response<bool> DeleteCaseImg(string path, string fieldName, string caseid, string dataTable)
{
try
{
client.Ado.BeginTran();
//删除相位角图片数据
client.Deleteable<DroneImageRef>(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<bool>
{
Result = true,
Message = "删除成功",
};
}
catch (Exception ex)
{
client.Ado.RollbackTran();
return new Response<bool>
{
Result = false,
Message = "删除失败",
};
}
}
#endregion
#region 获取图斑信息
/// <summary>
/// 获取图片信息
/// </summary>
/// <param name="caseid"></param>
/// <returns></returns>
public async Task<Response<List<DroneShpData>>> LoadDroneShpDataById(string caseid)
{
RefAsync<int> totalcount = 0;
var caseList = await client
.SqlQueryable<DroneShpData>("select st_astext(geom) as geom from drone_shp_data where relid = '" + caseid +
"'")
.ToListAsync();
return new Response<List<DroneShpData>>()
{
Result = caseList
};
}
/// <summary>
/// 获取图斑中心点数据
/// </summary>
/// <param name="tablename"></param>
/// <param name="filter"></param>
/// <returns></returns>
public dynamic GetCenterPoints(string tablename, string filter)
{
StringBuilder sql = new StringBuilder();
if (string.IsNullOrEmpty(filter))
{
filter = "1=1";
}
sql.AppendFormat(
$" SELECT gid,ST_AsText(ST_Transform(ST_Centroid(geom), 4326)) AS centroid_point \r\nFROM {tablename} where {filter}");
var result = client.Ado.SqlQuery<dynamic>(sql.ToString());
return result;
}
/// <summary>
/// 根据表名获取矢量切片
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
public byte[] QueryVectorTileByTable(QueryVectorTileByTableReq req)
{
VectorTileSearchModel searchModel = new VectorTileSearchModel
{
x = req.x,
y = req.y,
z = req.z,
//field = "gid,fwbh,bh,fwlx,\"jzfsQg\",bxdcyy,fwlb,\"kzgzcsQg\",aqjdnf,address,fwsjfs,jgsj,cs,\"jzndQg\",dcmj,ywlfbxqx,sfjgaqjd,sfkzjg,\"kzcszpQg\",\"houseType\",\"hzlxQg\",hzxm,\"jglxQg\",aqjdjl,\"czqtQg\",jzmc,\"lwgQg\",\"dbkjqtQg\",fwmj,fwyt,zff,\"jzytQg\",streetid,streetname,communityid,communityname,",
field = req.field,
table = req.table,
filter = req.filter,
};
var result = _commonDataManager.VectorTile(searchModel);
return result;
}
/// <summary>
/// 根据表名获取矢量切片
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
public async Task<byte[]> 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 案件操作历史记录
/// <summary>
/// 获取所有的案件信息
/// </summary>
/// <param name="req">案件编号查询</param>
/// <returns></returns>
public async Task<Response<PageInfo<List<DroneCaseInfoSingle>>>> LoadCaseInfoListForUpdate(
DroneCaseForChangeReq req)
{
RefAsync<int> totalcount = 0;
//var caseList = await client.Queryable<DroneCaseInfoSingle>()
// .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<DroneCaseInfoSingle>()
.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<PageInfo<List<DroneCaseInfoSingle>>>()
{
Result = new PageInfo<List<DroneCaseInfoSingle>>
{
Items = caseList,
Total = totalcount
}
};
}
/// <summary>
/// 获取单个案件信息
/// </summary>
/// <param name="id">案件id</param>
/// <returns></returns>
public async Task<Response<DroneCaseInfoSingle>> LoadCaseInfoById(string id)
{
var caseInfo = await client.Queryable<DroneCaseInfoSingle>().FirstAsync(r => r.Id == id);
return new Response<DroneCaseInfoSingle>()
{
Result = caseInfo
};
}
/// <summary>
/// 获取案件历史信息
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
public async Task<Response<PageInfo<List<DroneCaseInfoSingleHistory>>>> LoadCaseHistoryInfoList(PageReq req)
{
RefAsync<int> totalcount = 0;
var caseList = await client.Queryable<DroneCaseInfoSingleHistory>()
.WhereIF(!string.IsNullOrEmpty(req.key), r => r.Id == req.key)
.OrderByDescending(r => r.recordingtime)
.ToPageListAsync(req.page, req.limit, totalcount);
return new Response<PageInfo<List<DroneCaseInfoSingleHistory>>>()
{
Result = new PageInfo<List<DroneCaseInfoSingleHistory>>
{
Items = caseList,
Total = totalcount
}
};
}
//修改案件信息
public async Task<Response<bool>> UpdateCaseInfo(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<DroneCaseInfoSingleHistory>();
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<DroneShpDataHistory>();
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<bool>
{
Code = 200,
Result = flag,
Message = flag ? "更新成功" : "更新失败"
};
}
}
private async Task<StringBuilder> 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<Response<bool>> 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<DroneCaseInfoSingleHistory>();
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<DroneShpDataHistory>();
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<bool>
{
Code = 200,
Result = flag,
Message = flag ? "更新成功" : "更新失败"
};
}
}
private async Task<List<string>> 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<string> geomList = new List<string>();
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("文件解压失败");
}
});
}
/// <summary>
/// 修改案件信息
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public async Task<Response<bool>> 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<bool> { Result = true, Code = 200, Message = "更新成功" };
else
return new Response<bool> { 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<bool> { Result = true, Code = 200, Message = "更新成功" };
else
return new Response<bool> { 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<bool> { Result = true, Code = 200, Message = "更新成功" };
else
return new Response<bool> { 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<bool> { Result = true, Code = 200, Message = "更新成功" };
else
return new Response<bool> { 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<bool> { Result = true, Code = 200, Message = "更新成功" };
else
return new Response<bool> { 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<bool> { Result = true, Code = 200, Message = "更新成功" };
else
return new Response<bool> { 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<bool> { Result = true, Code = 200, Message = "更新成功" };
else
return new Response<bool> { 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<bool> { Result = true, Code = 200, Message = "更新成功" };
else
return new Response<bool> { Result = false, Code = 500, Message = "更新失败" };
}
default:
return new Response<bool> { Result = false, Code = 500, Message = "暂无该专题" };
}
}
/// <summary>
/// 修改案件信息
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public async Task<Response<bool>> 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<bool> { Result = true, Code = 200, Message = "更新成功" };
else
return new Response<bool> { 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<bool> { Result = true, Code = 200, Message = "更新成功" };
else
return new Response<bool> { 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<bool> { Result = true, Code = 200, Message = "更新成功" };
else
return new Response<bool> { 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<bool> { Result = true, Code = 200, Message = "更新成功" };
else
return new Response<bool> { 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<bool> { Result = true, Code = 200, Message = "更新成功" };
else
return new Response<bool> { 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<bool> { Result = true, Code = 200, Message = "更新成功" };
else
return new Response<bool> { 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<bool> { Result = true, Code = 200, Message = "更新成功" };
else
return new Response<bool> { 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<bool> { Result = true, Code = 200, Message = "更新成功" };
else
return new Response<bool> { 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<bool> { Result = true, Code = 200, Message = "更新成功" };
else
return new Response<bool> { Result = false, Code = 500, Message = "更新失败" };
}
default:
return new Response<bool> { Result = false, Code = 500, Message = "暂无该专题" };
}
}
public async Task<Response<bool>> 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<bool> { Result = false, Code = 500, Message = "案件已复提,无法审核" };
}
else
{
return new Response<bool> { Result = true, Code = 200, Message = "可以审核" };
}
}
}
#endregion
#region 导出shp文件 四种格式
#endregion
#region 导入案件信息
/// <summary>
/// 上传用户信息
/// </summary>
/// <param name="formFiles"></param>
/// <returns></returns>
public Response<bool> ImportUserInfo(IFormFileCollection formFiles)
{
IFormFile file = formFiles[0];
//存储文件到服务器
if (file != null)
{
if (file.FileName.IndexOf(".xls") > 0 || file.FileName.IndexOf(".xlsx") > 0)
{
//数据库导入
IWorkbook workbook = null;
if (file.FileName.IndexOf(".xlsx") > 0)
{
using (var stream = file.OpenReadStream())
{
workbook = new XSSFWorkbook(stream); //excel的版本2007
}
}
else if (file.FileName.IndexOf(".xls") > 0)
{
using (var stream = file.OpenReadStream())
{
workbook = new HSSFWorkbook(stream); //excel的版本2003
}
}
//数据处理
using (var uow = base.UnitWork.CreateContext())
{
//获取sheet
ISheet sheet;
sheet = workbook.GetSheetAt(0);
//处理sheet数据
string res = "";
if (sheet != null)
{
IRow firstRow = sheet.GetRow(0);
//获取有效数据行数
int lastRow = sheet.LastRowNum;
int rowCount = 0;
//具体excel数据解析
for (int i = 1; i <= lastRow; ++i)
{
IRow row = sheet.GetRow(i);
if (row == null || string.IsNullOrEmpty(row.GetCell(0).ToString())) continue;
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<SysDataItemDetail>()
.Where(r => r.ItemName == row.GetCell(4).ToString()).First();
if (ditem != null)
{
cas.typeid = ditem.ItemDetailId;
}
}
SysUser user = new SysUser();
user.Id = YitIdHelper.NextId();
user.CreateTime = DateTime.Now;
user.Name = row.GetCell(4).ToString();
user.CreateId = _auth.GetCurrentUser().User.Id;
user.Account = row.GetCell(5).ToString();
user.Password = Md5Helper.Encrypt(user.Account, 32).ToLower();
if (uow.User.IsAny(u => u.Account == user.Account))
{
res += "账号" + user.Account + "已存在,";
}
else
{
user.Secretkey = Md5Helper.Encrypt(CommonHelper.CreateNo(), 16).ToLower();
if (string.IsNullOrEmpty(user.Password))
{
user.Password = Md5Helper
.Encrypt(
DESEncrypt.Encrypt(Md5Helper.Hash(user.Account), user.Secretkey).ToLower(),
32).ToLower(); //如果客户端没提供密码,默认密码同账号
}
else
{
user.Password = Md5Helper
.Encrypt(DESEncrypt.Encrypt(user.Password, user.Secretkey).ToLower(), 32)
.ToLower();
}
uow.User.Insert(user);
if (!string.IsNullOrEmpty(row.GetCell(7).ToString()))
{
//为用户分配角色
SysUserRole userrole = new SysUserRole();
userrole.UserId = user.Id;
userrole.RoleId = Convert.ToInt64(row.GetCell(7).ToString());
//删除用户相关角色
uow.SysUserRole.DeleteById(user.Id);
//添加
uow.SysUserRole.Insert(userrole);
}
if (!string.IsNullOrEmpty(row.GetCell(2).ToString()))
{
//为用户分配部门
SysUserOrg userorg = new SysUserOrg();
userorg.UserId = user.Id;
userorg.OrgId = Convert.ToInt64(row.GetCell(2).ToString());
userorg.PositionId = 0;
userorg.Level = Convert.ToInt16(row.GetCell(3).ToString());
//删除用户相关部门
uow.SysUserOrg.DeleteById(user.Id);
//重新添加本次部门
uow.SysUserOrg.Insert(userorg);
}
}
}
}
var flag = uow.Commit();
return new Response<bool>
{
Result = flag,
Message = flag == true ? "更新成功 " + res : "更新失败"
};
}
}
else
{
return new Response<bool>
{
Result = false,
Message = "上传文件类型错误请上传Excel文件"
};
}
}
else
{
return new Response<bool>
{
Result = false,
Message = "文件为空"
};
}
}
#endregion
#region 测试代码
public Response<bool> UpdateYijian()
{
var caseInfo = client.Queryable<DroneCaseInfoSingle>().ToList();
//var caseInfo = client.Queryable<DroneCaseInfoSingle>().Where(r => r.case_no== "FN371325202408124154").ToList();
foreach (var item in caseInfo)
{
var tasklog = client.Queryable<WFTaskLog>().Where(r => r.ProcessId == item.Id)
.OrderByDescending(r => r.CreateDate).ToList();
if (tasklog.Count > 0)
{
//修改县级审核意见及结果
var info = tasklog.Where(r => r.UnitName == "县级审核").FirstOrDefault();
if (info != null)
{
item.xianjiyijian = info.Des;
item.xjshenhejieguo = info.OperationName;
item.verifyuser = info.UserName;
item.verifytime = DateTime.Parse(info.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"));
item.is_drawback = info.OperationName == "驳回" ? 1 : item.is_drawback;
}
//修改市级审核意见及结果
var infosj = tasklog.Where(r => r.UnitName == "市级审核").FirstOrDefault();
if (infosj != null)
{
item.shijiyijian = infosj.Des;
item.sjshenhejieguo = infosj.OperationName;
item.hexiaoren = infosj.UserName;
item.hexiaotime = DateTime.Parse(infosj.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"));
item.is_shijibohui = infosj.OperationName == "驳回" ? 1 : item.is_shijibohui;
}
client.Updateable(item).UpdateColumns(c => new
{
c.xianjiyijian,
c.xjshenhejieguo,
c.shijiyijian,
c.sjshenhejieguo,
c.verifyuser,
c.verifytime,
c.hexiaoren,
c.hexiaotime,
c.is_drawback,
c.is_shijibohui
})
.ExecuteCommand();
}
}
return new Response<bool> { };
}
public Response<bool> UpdateYijianwpxf()
{
var caseInfo = client.Queryable<DroneCaseInfoSatellite>().ToList();
//var caseInfo = client.Queryable<DroneCaseInfoSingle>().Where(r => r.case_no== "FN371325202408124154").ToList();
foreach (var item in caseInfo)
{
var tasklog = client.Queryable<WFTaskLog>().Where(r => r.ProcessId == item.Id)
.OrderByDescending(r => r.CreateDate).ToList();
if (tasklog.Count > 0)
{
//修改县级审核意见及结果
var info = tasklog.Where(r => r.UnitName == "县级审核").FirstOrDefault();
if (info != null)
{
item.xianjiyijian = info.Des;
item.xjshenhejieguo = info.OperationName;
item.verifyuser = info.UserName;
item.verifytime = DateTime.Parse(info.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"));
item.is_drawback = info.OperationName == "驳回" ? 1 : item.is_drawback;
}
//修改市级审核意见及结果
var infosj = tasklog.Where(r => r.UnitName == "市级审核").FirstOrDefault();
if (infosj != null)
{
item.shijiyijian = infosj.Des;
item.sjshenhejieguo = infosj.OperationName;
item.hexiaoren = infosj.UserName;
//item.hexiaotime = infosj.CreateDate.ToString("yyyy-MM-dd HH:mm:ss");
item.is_shijibohui = infosj.OperationName == "驳回" ? 1 : item.is_shijibohui;
}
client.Updateable(item).UpdateColumns(c => new
{
c.xianjiyijian,
c.xjshenhejieguo,
c.shijiyijian,
c.sjshenhejieguo,
c.verifyuser,
c.verifytime,
c.hexiaoren,
c.hexiaotime,
c.is_drawback,
c.is_shijibohui
}).ExecuteCommand();
}
}
return new Response<bool> { };
}
public Response<bool> UpdateYijianHnad()
{
var caseInfo = client.Queryable<DroneCaseInfoSingle>()
.Where(r => r.handle_status_name == "" || r.handle_status_name == null).ToList();
foreach (var item in caseInfo)
{
var task = client.Queryable<WFTask>().Where(r => r.ProcessId == item.Id).First(r => r.State == 1);
if (task != null)
{
if (task.UnitName == "待填报")
{
item.handle_status_name = task.UnitName;
item.handle_status_id = 1;
}
else if (task.UnitName == "待接收")
{
item.handle_status_name = task.UnitName;
item.handle_status_id = 0;
}
else if (task.UnitName == "待整改")
{
item.handle_status_name = task.UnitName;
item.handle_status_id = 2;
}
else if (task.UnitName == "县级审核")
{
item.handle_status_name = task.UnitName;
item.handle_status_id = 3;
}
client.Updateable(item).UpdateColumns(c => new
{
c.handle_status_name,
c.handle_status_id,
}).ExecuteCommand();
}
}
return new Response<bool> { };
}
public async Task<Response<bool>> SynchronousImg()
{
HttpClient _client = new HttpClient
{
BaseAddress = new Uri("http://localhost:98")
};
var caseInfo = client.Queryable<DroneCaseInfoSingle>().ToList();
List<string> noImg = new List<string>();
foreach (var item in caseInfo)
{
//chaichufugenghoupicanjianzhaopianbubanzhaopianxchczhaopian
if (!string.IsNullOrEmpty(item.chaichufugenghoupic))
{
var endStr = await GetEndStr(item.chaichufugenghoupic);
client.Updateable<DroneCaseInfoSingle>(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<DroneCaseInfoSingle>(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<DroneCaseInfoSingle>(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<DroneCaseInfoSingle>(item)
.UpdateColumns(r => new
{
xchczhaopian = endStr
}).Where(r => r.Id == item.Id).ExecuteCommand();
}
}
return new Response<bool> { };
}
private async Task<string> GetEndStr(string beginStr)
{
HttpClient _client = new HttpClient
{
BaseAddress = new Uri("http://localhost:98")
};
string endStr = "";
//chaichufugenghoupicanjianzhaopianbubanzhaopianxchczhaopian
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<Response<bool>>(responseBody);
if (obj.Result == false && obj.Code == 200)
{
//更新图片信息
img.Remove(it);
}
}
endStr = string.Join(",", img);
}
return endStr;
}
/// <summary>
/// 修改案件信息
/// </summary>
/// <param name="path"></param>
/// <param name="fieldName"></param>
/// <param name="caseid"></param>
/// <param name="dataTable"></param>
/// <returns></returns>
public Response<bool> UpdateCaseImg(string newpath, string oldpath, string newcaseid)
{
try
{
client.Ado.BeginTran();
//获取相位角图片数据
var olddif = client.Queryable<DroneImageRef>().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>(droneImageRef).ExecuteCommand();
}
client.Ado.CommitTran();
return new Response<bool>
{
Result = true,
Message = "更新成功",
};
}
catch (Exception ex)
{
client.Ado.RollbackTran();
return new Response<bool>
{
Result = false,
Message = "更新失败",
};
}
}
public Response<bool> 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<bool>
{
Result = true,
Message = "更新成功",
};
}
catch (Exception ex)
{
return new Response<bool>
{
Result = false,
Message = "更新失败",
};
}
}
#endregion
}