2025-05-19 14:01:14 +08:00
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>
2025-05-25 15:55:33 +08:00
public Response < List < OffenceResp > > CaseOffenceForExcel ( DateTime startTime , DateTime endTime , string tubanlaiyuan )
2025-05-19 14:01:14 +08:00
{
//核实后新增违法耕地 :占耕地的未归档图斑+占耕地的已归档的非农化类型图斑
//整改后剩余违法耕地 :占耕地的未归档的图斑
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 > ( ) ;
2025-05-25 15:55:33 +08:00
var tubanlaiyuanList =
string . IsNullOrEmpty ( tubanlaiyuan ) ? new List < string > ( ) : tubanlaiyuan . Split ( "," ) . ToList ( ) ;
2025-05-19 14:01:14 +08:00
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 )
2025-05-25 15:55:33 +08:00
. WhereIF ( ! string . IsNullOrEmpty ( tubanlaiyuan ) , ( a , b ) = > tubanlaiyuanList . Contains ( a . tubanlaiyuan ) )
2025-05-19 14:01:14 +08:00
. 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 )
2025-05-25 15:55:33 +08:00
. WhereIF ( ! string . IsNullOrEmpty ( tubanlaiyuan ) , ( a , b ) = > tubanlaiyuanList . Contains ( a . tubanlaiyuan ) )
2025-05-19 14:01:14 +08:00
. 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>
2025-05-25 15:55:33 +08:00
public Response < List < OffenceTBResp > > CaseOffencetbForExcel ( DateTime startTime , DateTime endTime ,
string tubanlaiyuan )
2025-05-19 14:01:14 +08:00
{
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 > ( ) ;
2025-05-25 15:55:33 +08:00
var tubanlaiyuanList =
string . IsNullOrEmpty ( tubanlaiyuan ) ? new List < string > ( ) : tubanlaiyuan . Split ( "," ) . ToList ( ) ;
2025-05-19 14:01:14 +08:00
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 )
2025-05-25 15:55:33 +08:00
. WhereIF ( ! string . IsNullOrEmpty ( tubanlaiyuan ) , ( a , b ) = > tubanlaiyuanList . Contains ( a . tubanlaiyuan ) )
2025-05-19 14:01:14 +08:00
. 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 )
2025-05-25 15:55:33 +08:00
. WhereIF ( ! string . IsNullOrEmpty ( tubanlaiyuan ) , ( a , b ) = > tubanlaiyuanList . Contains ( a . tubanlaiyuan ) )
2025-05-19 14:01:14 +08:00
. 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>
2025-05-25 15:55:33 +08:00
public Response < MemoryStream > CaseOfWrjqyxctbzgqktjbToExcel ( DateTime startTime , DateTime endTime ,
string tubanlaiyuan )
2025-05-19 14:01:14 +08:00
{
Response < MemoryStream > response = new Response < MemoryStream > ( ) ;
try
{
2025-05-25 15:55:33 +08:00
var list = CaseOffenceForExcel ( startTime , endTime , tubanlaiyuan ) . Result ;
2025-05-19 14:01:14 +08:00
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>
2025-05-25 15:55:33 +08:00
public Response < MemoryStream > CaseOfWrjqyxctbxfqktjbToExcel ( DateTime startTime , DateTime endTime ,
string tubanlaiyuan )
2025-05-19 14:01:14 +08:00
{
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 ( ) ;
2025-05-25 15:55:33 +08:00
sqlpart + = $" and tubanlaiyuan in ('{string.Join(" ',' ", tubanlaiyuanList)}')" ;
2025-05-19 14:01:14 +08:00
}
2025-05-25 15:55:33 +08:00
2025-05-19 14:01:14 +08:00
//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 )
{
2025-05-25 15:55:33 +08:00
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 ) ;
2025-05-30 14:49:58 +08:00
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 ) ;
}
2025-05-25 15:55:33 +08:00
}
break ;
2025-05-19 14:01:14 +08:00
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 = "更新失败" } ;
}
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 ( ) )
{
2025-05-25 15:55:33 +08:00
var data1 = await uow . ReSubmit . AsQueryable ( )
. Where ( r = > r . CaseNo = = originalcaseno & & r . SubjectKey = = subjectkey ) . ToListAsync ( ) ;
2025-05-19 14:01:14 +08:00
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 )
{
//chaichufugenghoupic, anjianzhaopian, bubanzhaopian, xchczhaopian
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 = "" ;
//chaichufugenghoupic, anjianzhaopian, bubanzhaopian, xchczhaopian
if ( ! string . IsNullOrEmpty ( beginStr ) )
{
var img = beginStr . Split ( ',' ) . ToList ( ) ;
foreach ( var it in img )
{
string url = $"/api/Platform/ExistsImg?path={Uri.EscapeDataString(it)}" ;
HttpResponseMessage response = await _client . GetAsync ( url ) ;
response . EnsureSuccessStatusCode ( ) ;
string responseBody = await response . Content . ReadAsStringAsync ( ) ;
var obj = Newtonsoft . Json . JsonConvert . DeserializeObject < 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
}