using System.Diagnostics; using System.Drawing; using System.Dynamic; using System.Text; using DocumentFormat.OpenXml.Wordprocessing; using Hopetry.App.Common; using Infrastructure; using Infrastructure.Extensions; using Infrastructure.Helpers; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Microsoft.VisualBasic; using NetTaste; using NetTopologySuite.Features; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XWPF.UserModel; using NUnit.Framework.Internal; using OpenAuth.App.BaseApp.Base; using OpenAuth.App.BaseApp.Shape; using OpenAuth.App.BasicQueryService; using OpenAuth.App.Common; using OpenAuth.App.FormModule; using OpenAuth.App.FormScheme.FormHelpers; 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.Response; using OpenAuth.Repository; using OpenAuth.Repository.Domain; using SqlSugar; using static ICSharpCode.SharpZipLib.Zip.ExtendedUnixData; using PictureType = NPOI.XWPF.UserModel.PictureType; namespace OpenAuth.App.ServiceApp.DroneCaseInfo; public partial class DroneCaseInfoSingleApp : SqlSugarBaseApp { private readonly IConfiguration _configuration; private readonly ISqlSugarClient client; private readonly WFProcessApp _processApp; private readonly ShpLayerSourceApp _shpLayerSourceApp; private readonly WFSchemeInfoApp _wfSchemeInfoApp; private ILogger _logger; CommonDataManager _commonDataManager; public DroneCaseInfoSingleApp(ISugarUnitOfWork unitWork, ILogger logger, ISimpleClient repository, IAuth auth, ISqlSugarClient sqlSugarClient, IConfiguration configuration, WFProcessApp processApp, ShpLayerSourceApp shpLayerSourceApp, WFSchemeInfoApp wfSchemeInfoApp, CommonDataManager commonDataManager) : base(unitWork, repository, auth) { _configuration = configuration; _processApp = processApp; _shpLayerSourceApp = shpLayerSourceApp; this.client = sqlSugarClient; _processApp = processApp; _wfSchemeInfoApp = wfSchemeInfoApp; _auth = auth; _logger = logger; _commonDataManager = commonDataManager; } /// /// 查询案件列表 /// /// /// public async Task>>> LoadCaseInfoListInterface(QueryCaseInfoListReq req) { using var db = Repository.AsSugarClient(); var userInfo = _auth.GetCurrentUser(); //返回值 RefAsync total = 0; //查询条件 var query = QueryCaseInfoList(db, req, userInfo.User); var querySql = query.ToSqlString(); if (!userInfo.User.Id.Equals(-1)) { var idList = string.Join(",", userInfo.Orgs.Select(t => t.Id).MapToList()); idList = idList.Replace(",", "','"); var whereSql = $"select CAST(\"Id\" AS VARCHAR) from sys_org where string_to_array(\"CascadeId\",'.') && ARRAY['{idList}']"; querySql = $" select * from ({query.ToSqlString()}) t where communityid in ({whereSql}) "; } var caseList = await db.SqlQueryable(querySql) .ToPageListAsync(req.page, req.limit, total); /*.Select(c => new DroneCaseInfoExtCurrent() { Id = c.Id, CaseNo = c.CaseNo, CaseName = c.CaseName, CaseDescription = c.CaseDescription, StartTime = c.StartTime, EndTime = c.EndTime, Address = c.Address, Lng = c.Lng, Lat = c.Lat, typeid = c.typeid, TypeName = c.TypeName, handle_status_id = c.handle_status_id, HandleStatusName = c.HandleStatusName, CaseStatusId = c.CaseStatusId, CaseStatusName = c.CaseStatusName, createtime = c.createtime, createuser = c.createuser, DroneNo = c.DroneNo, DealUserId = c.DealUserId, DealUsername = c.DealUsername, CreateUsername = c.CreateUsername, IsDelete = c.IsDelete, countyid = c.countyid, CountyName = c.CountyName, streetid = c.streetid, StreetName = c.StreetName, communityid = c.communityid, CommunityName = c.CommunityName, Remark = c.Remark, IsClosed = c.IsClosed, Area = c.Area, IsIllegal = c.IsIllegal, CloseUser = c.CloseUser, CloseTime = c.CloseTime, identification_user = c.identification_user, identification_time = c.identification_time, IsIntact = c.IsIntact, CloseUserId = c.CloseUserId, identification_userid = c.identification_userid, VerifyUserId = c.VerifyUserId, VerifyUser = c.VerifyUser, VerifyTime = c.VerifyTime, IsImprove = c.IsImprove, ImproveReason = c.ImproveReason, is_dispense = c.is_dispense, DispenseUserid = c.DispenseUserid, DispenseTime = c.DispenseTime, DispenseUsername = c.DispenseUsername, verifystatus = c.verifystatus, VerifyStatusName = c.VerifyStatusName, IsChecked = c.IsChecked, DealTime = c.DealTime, PrePhaseTime = c.PrePhaseTime, LaterPhaseTime = c.LaterPhaseTime, PrePhaseImg = c.PrePhaseImg, LaterPhaseImg = c.LaterPhaseImg, IsVerification = c.IsVerification, is_drawback = c.is_drawback, BackToUserid = c.BackToUserid, BackToUsername = c.BackToUsername, })*/ return new Response>> { Result = new PageInfo> { Items = caseList, Total = total } }; } /// /// 案件详情 /// /// /// public async Task> GetCaseInfo(string id) { var res = new AddOrUpdateDroneCaseInfoReqExtCurrent(); res.Init(); //详情 DroneCaseInfoSingle info = null; var flag = StringExtension.IsGuid(id); if (flag) { info = await Repository.AsSugarClient().Queryable().Where(c => c.Id == id) .FirstAsync(); } else { info = await Repository.AsSugarClient().Queryable().Where(c => c.case_no == id) .FirstAsync(); } //历史案件 var relationCaseNoList = await this.Repository.AsSugarClient().Queryable() .Where(a => a.caseid == info.Id).Select(a => a.relation_case_no).ToListAsync(); //案件标签 var tags = await this.Repository.AsSugarClient().Queryable() .LeftJoin((t, c) => t.tagid == c.Id.ToString()) .Where((t, c) => t.caseid == info.Id && c.TypeId == "DRONE_CASE_TAG") .Select((t, c) => c.Name).ToListAsync(); //图斑的中心点 StringBuilder sql = new StringBuilder(); sql.AppendFormat( $"SELECT st_astext(ST_Centroid(geom)) lnglat FROM \"drone_shp_data\" where relid = '{info.Id}' and geom is not null"); var dt = await this.Repository.AsSugarClient().Ado.GetDataTableAsync(sql.ToString()); if (dt.Rows.Count > 0) { string lngLat = dt.Rows[0]["lnglat"].ToString(); lngLat = lngLat.Replace("POINT(", "").Replace(")", ""); var lngLats = lngLat.Split(" "); res.lng = Decimal.Round(Decimal.Parse(lngLats[0]), 6); res.lat = Decimal.Round(Decimal.Parse(lngLats[1]), 6); } else { res.lng = info.lng; res.lat = info.lat; } res.info = info; res.relationCaseNo = relationCaseNoList; res.tags = tags; return new Response { Result = res, Message = "获取数据成功" }; } public async Task> GetCaseInfoById(string id) { var info = await Repository.AsSugarClient().Queryable().Where(c => c.Id == id) .FirstAsync(); return new Response { Result = info, Message = "获取数据成功" }; } /// /// 案件导出 /// /// /// public string DroneCaseInfoExport(string id) { using (var db = Repository.AsSugarClient()) { var model = GetCaseInfo(id); var info = (DroneCaseInfoSingle)model.Result.Result.info; Dictionary dic = new Dictionary(); dic.Add("CASE_NO", info.case_no); dic.Add("CREATEUSERNAME", info.createusername); dic.Add("ADDRESS", info.address); dic.Add("LNG", info.lng); dic.Add("LAT", info.lat); dic.Add("DEAL_USERNAME", info.deal_username); dic.Add("HANDLE_STATUS_NAME", info.handle_status_name); dic.Add("CASE_DESCRIPTION", info.case_description); dic.Add("CREATETIME", info.createtime); var root = AppDomain.CurrentDomain.BaseDirectory; string pathGuid = Guid.NewGuid().ToString(); var out_path = "ExportWordModel\\" + pathGuid + "\\drone_enforcement.docx"; if (!Directory.Exists(root + "ExportWordModel\\" + pathGuid)) { Directory.CreateDirectory(root + "ExportWordModel\\" + pathGuid); } WordHelper.Export(root + "ExportWordModel\\drone_enforcement.docx", root + out_path, dic); XWPFDocument doc = null; //打开文件 using (var stream = File.OpenRead(root + out_path)) { doc = new XWPFDocument(stream); //创建一个word文档 } out_path = "ExportWordModel\\" + pathGuid + "\\drone_enforcement_n.docx"; string picFilePath = _configuration.GetSection("PictureFilesPath").Value; //表格 var table = doc.Tables[0]; //列 var cell = table.Rows[4].GetCell(1); foreach (var para in cell.Paragraphs) { var runs = para.Runs; foreach (var gr in runs) { var text = gr.Text; gr.ReplaceText("#PICLIST#", ""); // todo 取案件图片,问题是得取哪些图片 var picList = new List(); foreach (var item in picList) { if (!File.Exists(picFilePath + item)) continue; //图片路径 var image = Image.FromFile(picFilePath + item); //添加图片 gr.AddPicture(ImageHelper.ImgToStream(image), (int)PictureType.PNG, Guid.NewGuid().ToString() + ".png", image.Width * 800, image.Height * 800); } break; } } using (FileStream fs = new FileStream(root + out_path, FileMode.OpenOrCreate, FileAccess.Write)) { doc.Write(fs); Console.WriteLine("生成word成功"); } Task.Run(() => { //过一分钟后把文件夹删除 Thread.Sleep(1000 * 30); Directory.Delete(root + "ExportWordModel\\" + pathGuid, true); }); return out_path; } } /// /// 查询条件组装 /// /// /// /// /// /// private ISugarQueryable QueryCaseInfoList(ISqlSugarClient db, QueryCaseInfoListReq req, SysUser user, int? is_order = 1, List roles = null) { DateTime? threeTime = DateTime.Now.AddDays(-3); DateTime? sevenTime = DateTime.Now.AddDays(-7); //查询用户角色绑定的流程有哪些 var flowList = new List(); var flowSorts = new List(); var roleNameList = new List(); //查询部门及下级部门 var orgid = db.Queryable().ToChildList(a => a.ParentId, req.countyid).Select(a => a.Id.ToString()) .ToList(); if (roles != null && req.is_verify_filter != null) { flowList = db.Queryable() .Where(c => roles.Contains(c.SecondId) && c.Key == Define.FLOW_ROLE).Select(c => c.FirstId).ToList(); //查询用户绑定的流程Sort flowSorts = db.Queryable() .Where(c => flowList.Contains(c.Id) && c.status == 0 && c.instance_name == "CaseVerify") .Select(c => c.sort).ToList(); roleNameList = db.Queryable().Where(c => roles.Contains(c.Id.ToString())).Select(c => c.Name) .ToList(); } //待优化 var casetype = db.Queryable() .LeftJoin((a, b) => a.FirstId == b.FirstId) .LeftJoin((a, b, c) => b.SecondId == c.RoleId.ToString()) .Where((a, b, c) => c.UserId == user.Id && a.Key == Define.TOPIC_CASETYPE && b.Key == Define.TOPIC_ROLE) .Select(a => a.SecondId).Distinct().ToList(); var query = db.Queryable() .Where(c => c.is_delete == 0 || c.is_delete == null) //关键字过滤数据 .WhereIF(!string.IsNullOrEmpty(req.key), c => c.case_no.Contains(req.key) || c.case_name.Contains(req.key) || c.case_description.Contains(req.key)) //是否完整:判读页面 用来查看是否已判读的 .WhereIF(req.is_intact != null && req.is_intact != 0, c => c.is_intact == req.is_intact) .WhereIF(req.is_intact == 0, c => c.is_intact == null || c.is_intact == 0) //上报人 .WhereIF(req.is_reporter == 1 && user.Account != Define.SYSTEM_USERNAME, c => c.createuser == user.Id.ToString()) //处理人:相当于 局管理员和乡镇管理员用 .WhereIF(req.is_dealer == 1 && user.Account != Define.SYSTEM_USERNAME, c => SqlFunc.Subqueryable() .Where(it => it.OrgId.ToString() == c.communityid && it.UserId == user.Id).Any() || SqlFunc.Subqueryable() .Where(it => it.OrgId.ToString() == c.streetid && it.UserId == user.Id).Any() || SqlFunc.Subqueryable() .Where(it => it.OrgId.ToString() == c.countyid && it.UserId == user.Id).Any() || c.createuser == user.Id.ToString()) //执行人过滤:相当于 执法人员用 .WhereIF(req.dispense_dealer == 1 && user.Account != Define.SYSTEM_USERNAME, c => SqlFunc.Subqueryable().Where(it => it.SecondId == c.Id && it.Key == Define.USERDRONECASE && it.FirstId == user.Id.ToString()).Any()) //专题权限过滤 .WhereIF(req.is_dealer == 1 && user.Account != Define.SYSTEM_USERNAME, c => casetype.Contains(c.typeid)) //分发状态:乡镇管理员用来查是否分发的 .WhereIF(req.is_dispense == 0, c => c.is_dispense == null || c.is_dispense == 0) .WhereIF(req.is_dispense == 1, c => c.is_dispense == 1) //处理状态:未办理、办理中、已办结 .WhereIF(req.handle_status_id != null, c => c.handle_status_id == req.handle_status_id) //案件状态 .WhereIF(!string.IsNullOrEmpty(req.case_status_id), c => c.case_status_id == req.case_status_id) //开始时间 .WhereIF(req.report_start_time != null, c => c.createtime >= req.report_start_time) //结束时间 .WhereIF(req.report_end_time != null, c => c.createtime <= req.report_end_time) //上报人 .WhereIF(!string.IsNullOrEmpty(req.report_name), c => c.createusername.Contains(req.report_name)) //执行人 .WhereIF(!string.IsNullOrEmpty(req.deal_username), c => c.deal_username.Contains(req.deal_username)) //判读开始时间 .WhereIF(req.identification_start_time != null, c => c.identification_time >= req.identification_start_time) //判读结束时间 .WhereIF(req.identification_end_time != null, c => c.identification_time <= req.identification_end_time) //县id .WhereIF(!string.IsNullOrEmpty(req.countyid), c => c.countyid.Equals(req.countyid)) ////镇id .WhereIF(!string.IsNullOrEmpty(req.streetid), c => c.streetid.Equals(req.streetid)) ////村id .WhereIF(!string.IsNullOrEmpty(req.communityid), c => c.communityid.Equals(req.communityid)) //判读人id .WhereIF(!string.IsNullOrEmpty(req.identification_userid), c => c.identification_userid == req.identification_userid) //判读人 .WhereIF(!string.IsNullOrEmpty(req.identification_user), c => c.identification_user.Contains(req.identification_user)) //判读人账号 .WhereIF(!string.IsNullOrEmpty(req.identification_account), c => SqlFunc.Subqueryable().Where(it => c.identification_userid == it.Id.ToString() && it.Account == req.identification_account).Any()) //审核人 .WhereIF(!string.IsNullOrEmpty(req.verify_user), c => c.verifyuser.Contains(req.verify_user)) //是否违法 .WhereIF(req.is_illegal != null, c => c.is_illegal == req.is_illegal) ////是否核销 //.WhereIF(req.is_verification == 1, c => c.IsVerification == req.is_verification) //.WhereIF(req.is_verification == 0, c => c.IsVerification == null || c.IsVerification == 0) //是否退回 .WhereIF(req.is_drawback == 0, c => c.is_drawback == null || c.is_drawback == 0) .WhereIF(req.is_drawback == 1, c => c.is_drawback == 1) ////是否根据退回给谁过滤 //.WhereIF(req.is_back_to_userid == 1, c => c.BackToUserid == user.Id.ToString()) //是否核查过滤 .WhereIF(req.is_examine == 0, c => c.is_jieshou == null || c.is_jieshou == 0) .WhereIF(req.is_examine == 1, c => c.is_jieshou == 1) //处理措施 .WhereIF(!string.IsNullOrEmpty(req.measure_name), c => c.measure_name == req.measure_name) //处理措施 .WhereIF(req.measure_name_type == 0, c => c.measure_name == "拟拆除") .WhereIF(req.measure_name_type == 1, c => c.measure_name == "查处") .WhereIF(req.measure_name_type == 2, c => c.measure_name == "拟完善手续") ////工作区过滤 //.WhereIF(!string.IsNullOrEmpty(req.work_area_name), // c => SqlFunc.Subqueryable() // .Where(it => it.Id.ToString() == c.communityid && it.CustomCode == req.work_area_name).Any()) //审核权限过滤 .WhereIF(req.is_verify_filter == 1, c => flowSorts.Contains(c.verifystatus) && roleNameList.Contains("案件审核")) .WhereIF(req.is_verify_filter == 0, c => !flowSorts.Contains(c.verifystatus)) /* * 统计相关用到的过滤条件 */ //超期时间标识 .WhereIF(req.out_time_flag == 1, c => c.identification_time >= threeTime) //1-3天 .WhereIF(req.out_time_flag == 2, c => c.identification_time < threeTime && c.identification_time > sevenTime) //3-7天 .WhereIF(req.out_time_flag == 3, c => c.identification_time < sevenTime) //7天以上 .WhereIF(req.out_time_flag == 4, c => c.identification_time > DateTime.Now.AddDays(-30) && c.identification_time < DateTime.Now.AddDays(-7)) //30天内 .WhereIF(req.out_time_flag == 5, c => c.identification_time < DateTime.Now.AddDays(-30)) //30天以上 //是否处理 .WhereIF(req.is_deal == 1, c => c.handle_status_id != 0 || (c.handle_status_id == 0 && c.is_jieshou == 1)) //是否整改完成 .WhereIF(req.is_complete == 0, c => c.handle_status_id != 2) //24小时未核查 .WhereIF(req.is_not_deal_hour24 == 1, c => c.handle_status_id == 0 && (c.is_jieshou == null || c.is_jieshou == 0) && c.identification_time < DateTime.Now.AddDays(-1)) //案件编号 .WhereIF(!string.IsNullOrEmpty(req.case_no), c => c.case_no.Contains(req.case_no)) //案件类型 .WhereIF(!string.IsNullOrEmpty(req.typeid), c => c.typeid == req.typeid) //地址 .WhereIF(!string.IsNullOrEmpty(req.address), c => c.address.Contains(req.address)) //案件描述 .WhereIF(!string.IsNullOrEmpty(req.case_description), c => c.case_description.Contains(req.case_description)); if (!string.IsNullOrEmpty(req.work_area_name)) { var orgList = db.Queryable().Where(c => c.CustomCode == req.work_area_name).Select(c => c.Id) .ToList(); } //标签检索 if (!string.IsNullOrEmpty(req.tagids)) { var tags = req.tagids.Trim().Split(",").ToList(); var ids = db.Queryable().Where(a => req.tagids.Contains(a.tagid)).Select(a => a.caseid) .ToList(); query = query.Where(c => ids.Contains(c.Id)); } //排序 if (is_order == 1) { if (req.is_intact == 1 && req.handle_status_id == 0) query = query.OrderBy(c => c.identification_time, OrderByType.Desc); else if (req.is_intact == 1 && req.handle_status_id == 1) query = query.OrderBy(c => c.deal_time, OrderByType.Desc); else if (req.is_intact == 1 && req.handle_status_id == 2) query = query.OrderBy(c => c.verifytime, OrderByType.Desc); else query = query.OrderBy(c => c.createtime, OrderByType.Desc); } return query; } #region 查询待办任务统计数据 /// /// 查询待办任务统计数据 /// /// 年份 /// #region 注释修改前方法 //public async Task>> LoadTaskCount(int year, string tubanlaiyuan, string picihao, int illegal) //{ // Console.WriteLine("开始时间:" + DateTime.Now.ToString()); // // // //获取当前用户 // var authStrategyContext = _auth.GetCurrentUser(); // var user = authStrategyContext.User; // var orgList = authStrategyContext.Orgs; // var leafNode = new List(); // // 统计该区划下数据 计算那些祖先节点不存在于列表中的 // var isCity = 0; // isCity 等于1时,查询全市区数据 // if (user.Id == -1) // { // isCity = 1; // } // else // { // foreach (var sysOrg in orgList) // { // if (sysOrg.ParentId == 0) // 该节点是临沂市 // { // isCity = 1; // orgList = orgList.Where(t => t.ParentId.Equals(sysOrg.Id)).ToList(); // // 跳出for循环 // break; // } // var ids = sysOrg.CascadeId.Split("."); // // 排队自身 // if (orgList.Any(org => org.Id != sysOrg.Id && ids.Contains(org.Id.ToString()))) // { // leafNode.Add(sysOrg); // } // } // if (isCity != 1) // 顶级节点 // { // orgList = orgList.Except(leafNode).ToList(); // } // } // var orgIds = orgList.Select(x => x.Id.ToString()).ToList(); // var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoSchemeCode").Value; // // 查询数据 // var dateTime = year == 0 ? DateTime.Now : new DateTime(year, 1, 1); // Console.WriteLine("组织运行结束时间:" + DateTime.Now.ToString()); // using var db = Repository.AsSugarClient(); // var query = db.Queryable() // .LeftJoin((t, p) => t.ProcessId == p.Id) // .LeftJoin((t, p, c) => p.Id == c.Id) // .Where((t, p, c) => SqlFunc.DateIsSame((DateTime)t.CreateDate, dateTime, DateType.Year)) // .Where((t, p, c) => c.countyid != null) // .Where((t, p, c) => p.SchemeCode.Equals(schemeCode)) // .WhereIF(!string.IsNullOrEmpty(tubanlaiyuan), (t, p, c) => c.tubanlaiyuan.Equals(tubanlaiyuan)) // .WhereIF(!string.IsNullOrEmpty(picihao), (t, p, c) => c.tubanlaiyuan.Equals(picihao)) // .WhereIF(isCity == 0, (t, p, c) // => orgIds.Contains(c.countyid) || orgIds.Contains(c.streetid) || orgIds.Contains(c.communityid)) // .Select((t, p, c) => new // { // taskid = t.Id, // taskstatus = t.State, // unitname = t.UnitName, // 初审(待审核) 复审(待销号) // isouttime = t.IsOutTime, // 0未超期,1超期,2严重超期 // isbuildingname = c.is_build_name, // 标注类型 在建 已建成 持续变化 // isillegal = c.is_illegal, // 0-合法,1-违法,2-其他 // caseno = c.case_no, // countyname = c.countyname, // countyid = c.countyid, // streetname = c.streetname, // streatid = c.streetid, // receive = c.is_jieshou, // illegaltype = c.weifaleixing, // 违法类型 0非农化1非粮化 // measurename = c.measure_name, // 整改措施(0拆除复耕1补办手续 // handstatusid = c.handle_status_id, // 5 已归档 // handstatusname = c.handle_status_name // 4. 待核销 5. 已 // }); // var info = await query.ToListAsync(); // Console.WriteLine("主查询运行结束时间:" + DateTime.Now.ToString()); // // todo 判断当前用户是市级人员还是县级人员 市级待核销任务 县级审核任务 // // 县级待审核,市级,待销号 县级, (待核销+已核销)/总数 市级,已核销/总数 // // 查询信息包含 区划 任务id 督办时间 ,案件部门信息 is_illegal weifaleixing measure_name // // 如果是市级是不是查整个人临沂市的数据 // // 返回 level areaid areaname // var dataList = new List(info.Count); // // 取得所有区县或乡镇信息 // // //合法:已经归档的合法案件 is_illegal // //违法:已经归档的违法案件,未归档的案件 is_illegal // //其他:已经归档的其他案件 is_illegal // //非粮化:已经归档的非粮化 weifaleixing // //补办手续:已经归档的补办手续 measure_name // //拆除拆除复耕:已经归档的拆除 measure_name // if (isCity == 1) // { // var groupDataList = info.GroupBy(d => new { d.countyid, d.countyname }); // foreach (var grouping in groupDataList) // { // dynamic item = new ExpandoObject(); // item.level = 1; // item.areaid = grouping.Key.countyid; // 区划id // item.areaname = grouping.Key.countyname; // 区划名称 // // 任务总数 // item.totaltask = grouping.GroupBy(t => t.caseno).Count(); // // 接收案件任务 // item.receivetask = grouping.Where(t => t.receive.Equals(1)).GroupBy(t => t.caseno).Count(); // // 处理状态 0待接收1待判定2待整改3县级审核4市级审核5已归档 // // 已核销任务数 // item.verificatedtask = // grouping.Where(t => t.handstatusid != null && t.handstatusid.Equals(5)).GroupBy(t => t.caseno) // .Count(); // // // 超期任务数 // item.overduetask = grouping.Where(t => t.handstatusid != null && t.handstatusid.Equals(5)).Where(t => // (t.isouttime != null && t.isouttime.Equals(1)) || // (t.isouttime != null && t.isouttime.Equals(2))) // .GroupBy(t => t.caseno).Count(); // // 待核销任务数 // item.verifytask = grouping // .WhereIF(illegal != 0, // t => t.isillegal.Equals(0) || t.isillegal.Equals(2) || // (t.isillegal.Equals(1) && t.illegaltype.Equals(1))) // 审核监督(填报审核) // .WhereIF(illegal == 0, t => t.isillegal.Equals(1) && t.illegaltype.Equals(0)) // 整改审核 // .Where(t => t.unitname != null && t.unitname.Equals("市级审核") && t.taskstatus != null && // t.taskstatus.Equals(1)).GroupBy(t => t.caseno).Count(); // //合法案件 // item.legalcase = grouping.Where(t => // t.isillegal != null && t.isillegal.Equals(0) && t.handstatusid != null && // t.handstatusid.Equals(5)).GroupBy(t => t.caseno).Count(); // // 其它案件 // item.ilegalcase = grouping.Where(t => // t.isillegal != null && t.isillegal.Equals(2) && t.handstatusid != null && // t.handstatusid.Equals(5)) // .GroupBy(t => t.caseno).Count(); // // 非粮化 // item.nonfoodcase = grouping.Where(t => // t.isillegal != null && t.isillegal.Equals(1) && t.illegaltype != null && t.illegaltype.Equals(1) && // t.handstatusid != null && // t.handstatusid.Equals(5)).GroupBy(t => t.caseno).Count(); // // 补办手续 整改措施(0拆除复耕1补办手续) // item.makeupcase = grouping.Where(t => // t.handstatusid != null && t.handstatusid.Equals(5) && t.isillegal != null && // t.isillegal.Equals(1) && t.measurename != null && t.measurename.Equals("1")) // .GroupBy(t => t.caseno) // .Count(); // // 复耕 // item.rehabilitationcase = grouping.Where(t => // t.handstatusid != null && t.handstatusid.Equals(5) && t.isillegal != null && // t.isillegal.Equals(1) && t.measurename != null && t.measurename.Equals("0")) // .GroupBy(t => t.caseno) // .Count(); // // 市级,已核销/总数 // // 县级(待审核) 市级(待销号) // dataList.Add(item); // } // } // else // { // var groupDataList = info.GroupBy(d => new { d.streatid, d.streetname }); // foreach (var grouping in groupDataList) // { // dynamic item = new ExpandoObject(); // item.level = 2; // item.areaid = grouping.Key.streatid; // 区划id // item.areaname = grouping.Key.streetname; // 区划名称 // item.totaltask = grouping.GroupBy(t => t.caseno).Count(); // 任务总数 // // 接收案件任务 // item.receivetask = grouping.Where(t => t.receive.Equals(1)).GroupBy(t => t.caseno).Count(); // // 处理状态 0待接收1待判定2待整改3县级审核4市级审核5已归档 // // 已核销任务数 // item.verificatedtask = // grouping.Where(t => t.handstatusid != null && t.handstatusid.Equals(5)).GroupBy(t => t.caseno) // .Count(); // // // 超期任务数 // item.overduetask = grouping.Where(t => // (t.isouttime != null && t.isouttime.Equals(1)) || // (t.isouttime != null && t.isouttime.Equals(2))) // .GroupBy(t => t.caseno).Count(); // // 待审核任务数 // item.verifytask = grouping // .Where(t => t.unitname != null && t.unitname.Equals("县级审核") && t.taskstatus != null && // t.taskstatus.Equals(1)) // .WhereIF(illegal != 0, // t => t.isillegal.Equals(0) || t.isillegal.Equals(2) || // (t.isillegal.Equals(1) && t.illegaltype.Equals(1))) // 审核监督 // .WhereIF(illegal == 0, t => t.isillegal.Equals(1) && t.illegaltype.Equals(0)) // 违法 // .GroupBy(t => t.caseno).Count(); // //合法案件 // item.legalcase = grouping.Where(t => // t.isillegal != null && t.isillegal.Equals(0) && t.handstatusid != null && // t.handstatusid.Equals(5)).GroupBy(t => t.caseno).Count(); // // 其它案件 // item.ilegalcase = grouping.Where(t => // t.isillegal != null && t.isillegal.Equals(2) && t.handstatusid != null && // t.handstatusid.Equals(5)) // .GroupBy(t => t.caseno).Count(); // // 非粮化 // item.nonfoodcase = grouping.Where(t => // t.isillegal != null && t.isillegal.Equals(1) && t.illegaltype != null && t.illegaltype.Equals(1) && // t.handstatusid != null && // t.handstatusid.Equals(5)).GroupBy(t => t.caseno).Count(); // // 补办手续 // item.makeupcase = grouping.Where(t => // t.handstatusid != null && t.handstatusid.Equals(5) && t.isillegal != null && // t.isillegal.Equals(1) && t.measurename != null && t.measurename.Equals("1")) // .GroupBy(t => t.caseno) // .Count(); // // 复耕 // item.rehabilitationcase = grouping.Where(t => // t.handstatusid != null && t.handstatusid.Equals(5) && t.isillegal != null && // t.isillegal.Equals(1) && t.measurename != null && t.measurename.Equals("0")) // .GroupBy(t => t.caseno) // .Count(); // dataList.Add(item); // } // } // Console.WriteLine("统计计算结束时间:" + DateTime.Now.ToString()); // return new Response> // { // Result = dataList // }; //} #endregion // TODO 优化中 public async Task>> LoadTaskCount(int year, string tubanlaiyuan, string picihao, int illegal) { Stopwatch stopwatch = new Stopwatch(); //获取当前用户 var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; var orgList = authStrategyContext.Orgs; var leafNode = new List(); // 统计该区划下数据 计算那些祖先节点不存在于列表中的 var isCity = 0; // isCity 等于1时,查询全市区数据 if (user.Id == -1) { isCity = 1; } else { foreach (var sysOrg in orgList) { if (sysOrg.ParentId == 0) // 该节点是临沂市 { isCity = 1; orgList = orgList.Where(t => t.ParentId.Equals(sysOrg.Id)).ToList(); // 跳出for循环 break; } var ids = sysOrg.CascadeId.Split("."); // 排队自身 if (orgList.Any(org => org.Id != sysOrg.Id && ids.Contains(org.Id.ToString()))) { leafNode.Add(sysOrg); } } if (isCity != 1) // 顶级节点 { orgList = orgList.Except(leafNode).ToList(); } } var orgIds = orgList.Select(x => x.Id.ToString()).ToList(); var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoSchemeCode").Value; // 查询数据 var dateTime = year == 0 ? DateTime.Now : new DateTime(year, 1, 1); var query = client.Queryable() //.LeftJoin((t, p) => t.ProcessId == p.Id) .LeftJoin((p, c) => p.Id == c.Id) .LeftJoin((p, c, o) => c.countyid == o.Id.ToString()) .WhereIF(year != 0, (p, c, o) => SqlFunc.DateIsSame((DateTime)c.synchronoustime, dateTime, DateType.Year)) //.Where((t, p, c, o) => t.State == 1) .Where((p, c, o) => c.countyid != null) .Where((p, c, o) => c.is_closed.Equals(0)) .Where((p, c, o) => c.typename.Equals("农用地")) .Where((p, c, o) => p.SchemeCode.Equals(schemeCode)) .WhereIF(!string.IsNullOrEmpty(tubanlaiyuan), (p, c, o) => c.tubanlaiyuan.Equals(tubanlaiyuan)) .WhereIF(!string.IsNullOrEmpty(picihao), (p, c, o) => c.tubanlaiyuan.Equals(picihao)) .WhereIF(isCity == 0, (p, c, o) => orgIds.Contains(c.countyid) || orgIds.Contains(c.streetid) || orgIds.Contains(c.communityid)) .GroupByIF(isCity == 1, (p, c, o) => new { c.countyid, c.countyname }) .GroupByIF(isCity != 1, (p, c, o) => new { c.streetid, c.streetname }); List info; if (isCity == 1) { info = await query .GroupBy((p, c, o) => o.SortNo) .OrderBy((p, c, o) => o.SortNo) .Select((p, c, o) => new CaseInfoStatisticResp { level = 1, areaid = c.countyid, // 区划ID areaname = c.countyname, // 区划名称 totaltask = SqlFunc.AggregateCount("*"), // 下发 任务总数 // 待审核 待核销 填报审核 verifytask = SqlFunc.AggregateSum(SqlFunc.IIF( (c.is_illegal.Equals(0) || c.is_illegal.Equals(2) || (c.is_illegal.Equals(1) && c.weifaleixing.Equals(1))) && c.handle_status_name.Equals("市级审核"), 1, 0)), // 整改审核 待审核 verifytask1 = SqlFunc.AggregateSum(SqlFunc.IIF( (c.is_illegal.Equals(1) && c.weifaleixing.Equals(0)) && c.handle_status_name.Equals("市级审核"), 1, 0)), receivetask = SqlFunc.AggregateSum(SqlFunc.IIF(c.is_jieshou == 1, 1, 0)), // 接收 // 非粮化 nonfoodcase nonfoodcase = SqlFunc.AggregateSum( SqlFunc.IIF(c.is_illegal == 1 && c.weifaleixing == 1 && c.handle_status_id == 5, 1, 0)), //举证合法 legalcase legalcase = SqlFunc.AggregateSum(SqlFunc.IIF(c.is_illegal == 0 && c.handle_status_id == 5, 1, 0)), //举证其它 ilegalcase ilegalcase = SqlFunc.AggregateSum(SqlFunc.IIF(c.is_illegal == 2 && c.handle_status_id == 5, 1, 0)), sortno = o.SortNo, // 补办手续 makeupcase = SqlFunc.AggregateSum(SqlFunc.IIF( c.is_illegal == 1 && c.handle_status_id == 5 && c.measure_name.Equals("1"), 1, 0)), //复耕 rehabilitationcase = SqlFunc.AggregateSum(SqlFunc.IIF( c.is_illegal == 1 && c.handle_status_id == 5 && c.measure_name.Equals("0"), 1, 0)), countyid = c.countyid, countyname = c.countyname }).ToListAsync(); } else { info = await query.Select((p, c) => new CaseInfoStatisticResp { level = 2, areaid = c.streetid, // 区划ID areaname = c.streetname, // 区划名称 totaltask = SqlFunc.AggregateCount("*"), /* 1 填报审核 * .WhereIF(illegal != 0, t => t.isillegal.Equals(0) || t.isillegal.Equals(2) || (t.isillegal.Equals(1) && t.illegaltype.Equals(1))) // 审核监督 */ //待核销 填报审核 verifytask = SqlFunc.AggregateSum(SqlFunc.IIF( (c.is_illegal.Equals(0) || c.is_illegal.Equals(2) || (c.is_illegal.Equals(1) && c.weifaleixing.Equals(1))) && c.handle_status_name.Equals("县级审核"), 1, 0)), // 整改审核 verifytask1 = SqlFunc.AggregateSum(SqlFunc.IIF( c.is_illegal.Equals(1) && c.weifaleixing.Equals(0) && c.handle_status_name.Equals("县级审核"), 1, 0)), receivetask = SqlFunc.AggregateSum(SqlFunc.IIF(c.is_jieshou == 1, 1, 0)), // 非粮化 nonfoodcase nonfoodcase = SqlFunc.AggregateSum( SqlFunc.IIF(c.is_illegal == 1 && c.weifaleixing == 1 && c.handle_status_id == 5, 1, 0)), //举证合法 legalcase legalcase = SqlFunc.AggregateSum(SqlFunc.IIF(c.is_illegal == 0 && c.handle_status_id == 5, 1, 0)), //举证其它 ilegalcase ilegalcase = SqlFunc.AggregateSum(SqlFunc.IIF(c.is_illegal == 2 && c.handle_status_id == 5, 1, 0)), // 补办手续 makeupcase = SqlFunc.AggregateSum(SqlFunc.IIF( c.is_illegal == 1 && c.handle_status_id == 5 && c.measure_name.Equals("1"), 1, 0)), //复耕 rehabilitationcase = SqlFunc.AggregateSum(SqlFunc.IIF( c.is_illegal == 1 && c.handle_status_id == 5 && c.measure_name.Equals("0"), 1, 0)), streetid = c.streetid, streetname = c.streetname }).ToListAsync(); } Console.WriteLine($"耗时:{stopwatch.ElapsedMilliseconds}"); return new Response> { Result = info }; } public async Task>> LoadTaskCountOld(int year, string tubanlaiyuan, string picihao, int illegal) { //获取当前用户 var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; var orgList = authStrategyContext.Orgs; var leafNode = new List(); // 统计该区划下数据 计算那些祖先节点不存在于列表中的 var isCity = 0; // isCity 等于1时,查询全市区数据 if (user.Id == -1) { isCity = 1; } else { foreach (var sysOrg in orgList) { if (sysOrg.ParentId == 0) // 该节点是临沂市 { isCity = 1; orgList = orgList.Where(t => t.ParentId.Equals(sysOrg.Id)).ToList(); // 跳出for循环 break; } var ids = sysOrg.CascadeId.Split("."); // 排队自身 if (orgList.Any(org => org.Id != sysOrg.Id && ids.Contains(org.Id.ToString()))) { leafNode.Add(sysOrg); } } if (isCity != 1) // 顶级节点 { orgList = orgList.Except(leafNode).ToList(); } } var orgIds = orgList.Select(x => x.Id.ToString()).ToList(); var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoSchemeCode").Value; // 查询数据 var dateTime = year == 0 ? DateTime.Now : new DateTime(year, 1, 1); var query = client.Queryable() .LeftJoin((t, p) => t.ProcessId == p.Id) .LeftJoin((t, p, c) => p.Id == c.Id) .WhereIF(year != 0, (t, p, c) => SqlFunc.DateIsSame((DateTime)c.synchronoustime, dateTime, DateType.Year)) .Where((t, p, c) => c.countyid != null) .Where((t, p, c) => c.is_closed.Equals(0)) .Where((t, p, c) => c.typename.Equals("农用地")) .Where((t, p, c) => p.SchemeCode.Equals(schemeCode)) .WhereIF(!string.IsNullOrEmpty(tubanlaiyuan), (t, p, c) => c.tubanlaiyuan.Equals(tubanlaiyuan)) .WhereIF(!string.IsNullOrEmpty(picihao), (t, p, c) => c.tubanlaiyuan.Equals(picihao)) .WhereIF(isCity == 0, (t, p, c) => orgIds.Contains(c.countyid) || orgIds.Contains(c.streetid) || orgIds.Contains(c.communityid)); // todo 判断当前用户是市级人员还是县级人员 市级待核销任务 县级审核任务 // 县级待审核,市级,待销号 县级, (待核销+已核销)/总数 市级,已核销/总数 // 查询信息包含 区划 任务id 督办时间 ,案件部门信息 is_illegal weifaleixing measure_name // 如果是市级是不是查整个人临沂市的数据 // 返回 level areaid areaname var dataList = new List(); // 取得所有区县或乡镇信息 // //合法:已经归档的合法案件 is_illegal //违法:已经归档的违法案件,未归档的案件 is_illegal //其他:已经归档的其他案件 is_illegal //非粮化:已经归档的非粮化 weifaleixing //补办手续:已经归档的补办手续 measure_name //拆除拆除复耕:已经归档的拆除 measure_name if (isCity == 1) { DateTime time1 = DateTime.Now; var groupDataList = await query.GroupBy((t, p, c) => new { c.countyid, c.countyname }).Select((t, p, c) => new { c.countyid, c.countyname, list = SqlFunc.Subqueryable() .LeftJoin((s, f) => s.Id == f.ProcessId) .Where((s, f) => s.is_closed.Equals(0)) .Where((s, f) => s.typename.Equals("农用地")) .Where(s => s.countyid == c.countyid).ToList((s, f) => new ExamineItemResponse { taskid = f.Id, taskstatus = f.State, unitname = f.UnitName, // 初审(待审核) 复审(待销号) isouttime = f.IsOutTime, // 0未超期,1超期,2严重超期 isbuildingname = s.is_build_name, // 标注类型 在建 已建成 持续变化 isillegal = s.is_illegal, // 0-合法,1-违法,2-其他 caseno = s.case_no, countyname = s.countyname, countyid = s.countyid, streetname = s.streetname, streatid = s.streetid, receive = s.is_jieshou, isclosed = s.is_closed, issplit = s.is_split, illegaltype = s.weifaleixing, // 违法类型 0非农化1非粮化 measurename = s.measure_name, // 整改措施(0拆除复耕1补办手续 handstatusid = s.handle_status_id, // 5 已归档 handstatusname = s.handle_status_name // 4. 待核销 5. 已 }) }).ToListAsync(); DateTime time2 = DateTime.Now; Console.WriteLine("groupby:" + (time2 - time1).TotalMilliseconds); foreach (var grouping in groupDataList) { dynamic item = new ExpandoObject(); item.level = 1; item.areaid = grouping.countyid; // 区划id item.areaname = grouping.countyname; // 区划名称 string sql = $"select \"SortNo\" from sys_org where \"Id\"=" + grouping.countyid; var sortNo = client.Ado.GetInt(sql); item.sortno = sortNo; // 任务总数 item.totaltask = grouping.list.GroupBy(t => t.caseno).Count(); // 接收案件任务 item.receivetask = grouping.list.Where(t => t.receive.Equals(1) && t.isclosed.Equals(0)) .GroupBy(t => t.caseno).Count(); // 处理状态 0待接收1待判定2待整改3县级审核4市级审核5已归档 // 已核销任务数 item.verificatedtask = grouping.list.Where(t => t.handstatusid != null && t.handstatusid.Equals(5)).GroupBy(t => t.caseno) .Count(); // // 超期任务数 item.overduetask = grouping.list.Where(t => t.handstatusid != null && t.handstatusid.Equals(5)).Where( t => (t.isouttime != null && t.isouttime.Equals(1)) || (t.isouttime != null && t.isouttime.Equals(2))) .GroupBy(t => t.caseno).Count(); // 待核销任务数 item.verifytask = grouping.list .WhereIF(illegal != 0, t => t.isillegal.Equals(0) || t.isillegal.Equals(2) || (t.isillegal.Equals(1) && t.illegaltype.Equals(1))) // 审核监督(填报审核) .WhereIF(illegal == 0, t => t.isillegal.Equals(1) && t.illegaltype.Equals(0)) // 整改审核 .Where(t => t.unitname != null && t.unitname.Equals("市级审核") && t.taskstatus != null && t.taskstatus.Equals(1)).GroupBy(t => t.caseno).Count(); //合法案件 item.legalcase = grouping.list.Where(t => t.isillegal != null && t.isillegal.Equals(0) && t.handstatusid != null && t.handstatusid.Equals(5)).GroupBy(t => t.caseno).Count(); // 其它案件 item.ilegalcase = grouping.list.Where(t => t.isillegal != null && t.isillegal.Equals(2) && t.handstatusid != null && t.handstatusid.Equals(5)) .GroupBy(t => t.caseno).Count(); // 非粮化 item.nonfoodcase = grouping.list.Where(t => t.isillegal != null && t.isillegal.Equals(1) && t.illegaltype != null && t.illegaltype.Equals(1) && t.handstatusid != null && t.handstatusid.Equals(5)).GroupBy(t => t.caseno).Count(); // 补办手续 整改措施(0拆除复耕1补办手续) item.makeupcase = grouping.list.Where(t => t.handstatusid != null && t.handstatusid.Equals(5) && t.isillegal != null && t.isillegal.Equals(1) && t.measurename != null && t.measurename.Equals("1")) .GroupBy(t => t.caseno) .Count(); // 复耕 item.rehabilitationcase = grouping.list.Where(t => t.handstatusid != null && t.handstatusid.Equals(5) && t.isillegal != null && t.isillegal.Equals(1) && t.measurename != null && t.measurename.Equals("0")) .GroupBy(t => t.caseno) .Count(); // 市级,已核销/总数 // 县级(待审核) 市级(待销号) dataList.Add(item); } dataList = dataList.OrderBy(a => a.sortno).ToList(); } else { var groupDataList = await query.GroupBy((t, p, c) => new { c.streetid, c.streetname }).Select((t, p, c) => new { c.streetid, c.streetname, list = SqlFunc.Subqueryable() .LeftJoin((s, f) => s.Id == f.ProcessId) .Where((s, f) => s.is_closed.Equals(0)) .Where((s, f) => s.typename.Equals("农用地")) .Where(s => s.streetid == c.streetid).ToList((s, f) => new ExamineItemResponse { taskid = f.Id, taskstatus = f.State, unitname = f.UnitName, // 初审(待审核) 复审(待销号) isouttime = f.IsOutTime, // 0未超期,1超期,2严重超期 isbuildingname = s.is_build_name, // 标注类型 在建 已建成 持续变化 isillegal = s.is_illegal, // 0-合法,1-违法,2-其他 caseno = s.case_no, countyname = s.countyname, countyid = s.countyid, streetname = s.streetname, streatid = s.streetid, receive = s.is_jieshou, isclosed = s.is_closed, issplit = s.is_split, illegaltype = s.weifaleixing, // 违法类型 0非农化1非粮化 measurename = s.measure_name, // 整改措施(0拆除复耕1补办手续 handstatusid = s.handle_status_id, // 5 已归档 handstatusname = s.handle_status_name // 4. 待核销 5. 已 }) }).ToListAsync(); foreach (var grouping in groupDataList) { dynamic item = new ExpandoObject(); item.level = 2; item.areaid = grouping.streetid; // 区划id item.areaname = grouping.streetname; // 区划名称 item.totaltask = grouping.list.GroupBy(t => t.caseno).Count(); // 任务总数 // 接收案件任务 item.receivetask = grouping.list.Where(t => t.receive.Equals(1)).GroupBy(t => t.caseno).Count(); // 处理状态 0待接收1待判定2待整改3县级审核4市级审核5已归档 // 已核销任务数 item.verificatedtask = grouping.list.Where(t => t.handstatusid != null && t.handstatusid.Equals(5)).GroupBy(t => t.caseno) .Count(); // // 超期任务数 item.overduetask = grouping.list.Where(t => (t.isouttime != null && t.isouttime.Equals(1)) || (t.isouttime != null && t.isouttime.Equals(2))) .GroupBy(t => t.caseno).Count(); // 待审核任务数 // 违法 0-合法,1-违法,2-其他 违法类型 0非农化1非粮化 item.verifytask = grouping.list .Where(t => t.unitname != null && t.unitname.Equals("县级审核") && t.taskstatus != null && t.taskstatus.Equals(1)) .WhereIF(illegal != 0, t => t.isillegal.Equals(0) || t.isillegal.Equals(2) || (t.isillegal.Equals(1) && t.illegaltype.Equals(1))) // 审核监督 .WhereIF(illegal == 0, t => t.isillegal.Equals(1) && t.illegaltype.Equals(0)) // 违法 .GroupBy(t => t.caseno).Count(); //合法案件 item.legalcase = grouping.list.Where(t => t.isillegal != null && t.isillegal.Equals(0) && t.handstatusid != null && t.handstatusid.Equals(5)).GroupBy(t => t.caseno).Count(); // 其它案件 item.ilegalcase = grouping.list.Where(t => t.isillegal != null && t.isillegal.Equals(2) && t.handstatusid != null && t.handstatusid.Equals(5)) .GroupBy(t => t.caseno).Count(); // 非粮化 item.nonfoodcase = grouping.list.Where(t => t.isillegal != null && t.isillegal.Equals(1) && t.illegaltype != null && t.illegaltype.Equals(1) && t.handstatusid != null && t.handstatusid.Equals(5)).GroupBy(t => t.caseno).Count(); // 补办手续 item.makeupcase = grouping.list.Where(t => t.handstatusid != null && t.handstatusid.Equals(5) && t.isillegal != null && t.isillegal.Equals(1) && t.measurename != null && t.measurename.Equals("1")) .GroupBy(t => t.caseno) .Count(); // 复耕 item.rehabilitationcase = grouping.list.Where(t => t.handstatusid != null && t.handstatusid.Equals(5) && t.isillegal != null && t.isillegal.Equals(1) && t.measurename != null && t.measurename.Equals("0")) .GroupBy(t => t.caseno) .Count(); dataList.Add(item); } } Console.WriteLine("统计计算结束时间:" + DateTime.Now.ToString()); return new Response> { Result = dataList }; } //填报审核测试 public async Task>> LoadTaskCountTBSHTest(int year, string tubanlaiyuan, string picihao, int illegal) { //获取当前用户 var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; var orgList = authStrategyContext.Orgs; var leafNode = new List(); // 统计该区划下数据 计算那些祖先节点不存在于列表中的 var isCity = 0; // isCity 等于1时,查询全市区数据 if (user.Id == -1) { isCity = 1; } else { foreach (var sysOrg in orgList) { if (sysOrg.ParentId == 0) // 该节点是临沂市 { isCity = 1; orgList = orgList.Where(t => t.ParentId.Equals(sysOrg.Id)).ToList(); // 跳出for循环 break; } var ids = sysOrg.CascadeId.Split("."); // 排队自身 if (orgList.Any(org => org.Id != sysOrg.Id && ids.Contains(org.Id.ToString()))) { leafNode.Add(sysOrg); } } if (isCity != 1) // 顶级节点 { orgList = orgList.Except(leafNode).ToList(); } } var orgIds = orgList.Select(x => x.Id.ToString()).ToList(); var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoSchemeCode").Value; // 查询数据 var dateTime = year == 0 ? DateTime.Now : new DateTime(year, 1, 1); var dataList = new List(); if (isCity == 1) { //待审核 var verifytaskList = await client.Queryable() .LeftJoin((t, p) => t.ProcessId == p.Id) .LeftJoin((t, p, c) => p.Id == c.Id) .WhereIF(year != 0, (t, p, c) => SqlFunc.DateIsSame((DateTime)c.synchronoustime, dateTime, DateType.Year)) .Where((t, p, c) => t.UnitName == "市级审核" && t.State == 1 && t.ProcessCode == schemeCode) .Where((t, p, c) => c.countyid != null && c.is_closed.Equals(0) && c.typename.Equals("农用地")) .Where((t, p, c) => p.SchemeCode.Equals(schemeCode)) .WhereIF(!string.IsNullOrEmpty(tubanlaiyuan), (t, p, c) => c.tubanlaiyuan.Equals(tubanlaiyuan)) .WhereIF(!string.IsNullOrEmpty(picihao), (t, p, c) => c.tubanlaiyuan.Equals(picihao)) .WhereIF(isCity == 0, (t, p, c) => orgIds.Contains(c.countyid) || orgIds.Contains(c.streetid) || orgIds.Contains(c.communityid)) .GroupBy((t, p, c) => new { c.countyid }) .Select((t, p, c) => new { c.countyid, verifytask = SqlFunc.AggregateCount(1) }).ToListAsync(); string sql = $"with t as (" + $"select " + $"d.handle_status_id," + $"d.countyid," + $"d.is_illegal," + $"d.is_jieshou," + $"d.weifaleixing from drone_caseinfo_single d " + $"left join wf_process p on d.\"Id\"=p.\"Id\" " + $"where d.typename='农用地' and p.\"SchemeCode\"='{schemeCode}' and d.countyid is not null and d.is_closed=0" + $"),xiafa as(" + $"select countyid,count(1) as totaltask from t GROUP BY countyid" + $"),jieshou as (" + $"select countyid,count(1) as receivetask from t where is_jieshou=1 GROUP BY countyid" + $"),feiliang as (" + $"select countyid,count(1) as nonfoodcase from t where weifaleixing=1 and handle_status_id=5 GROUP BY countyid" + $"),hefa as (" + $"select countyid,count(1) as legalcase from t where is_illegal=0 and handle_status_id=5 GROUP BY countyid" + $"),qita as (" + $"select countyid,count(1) as ilegalcase from t where is_illegal=2 and handle_status_id=5 GROUP BY countyid)" + $"select xiafa.countyid as areaid,o.\"Name\" as areaname,o.\"SortNo\" as sortno," + $"xiafa.totaltask," + $"jieshou.receivetask," + $"feiliang.nonfoodcase," + $"hefa.legalcase," + $"qita.ilegalcase from xiafa " + $"left join jieshou on xiafa.countyid=jieshou.countyid " + $"left join feiliang on xiafa.countyid=feiliang.countyid " + $"left join hefa on xiafa.countyid=hefa.countyid " + $"left join qita on xiafa.countyid=qita.countyid " + $"left join sys_org o on xiafa.countyid=o.\"Id\"::varchar"; var queryList = await client.SqlQueryable(sql).ToListAsync(); #region 注释 ////基础查询 //var query = client.Queryable() // .LeftJoin((d, p) => d.Id == p.Id) // .Where((d, p) => d.typename == "农用地" && d.countyid != null && d.is_closed == 0) // .Where((d, p) => p.SchemeCode == schemeCode) // .Select(d => new // { // d.handle_status_id, // d.countyid, // d.is_illegal, // d.is_jieshou, // d.weifaleixing // }); //// 下发 //var xiafaQuery = query.GroupBy(d => d.countyid) // .Select(d => new // { // d.countyid, // totaltask = SqlFunc.AggregateCount(1) // }); ////接收 //var jieshouQuery = query.Where(d => d.is_jieshou == 1) // .GroupBy(d => d.countyid) // .Select(d => new // { // d.countyid, // receivetask = SqlFunc.AggregateCount(1) // }); ////非粮 //var feiliangQuery = query.Where(d => d.weifaleixing == 1 && d.handle_status_id == 5) // .GroupBy(d => d.countyid) // .Select(d => new // { // d.countyid, // nonfoodcase = SqlFunc.AggregateCount(1) // }); ////合法案件 //var legalQuery = query.Where(d => d.is_illegal == 0 && d.handle_status_id == 5) // .GroupBy(d => d.countyid) // .Select(d => new // { // d.countyid, // legalcase = SqlFunc.AggregateCount(1) // }); ////其它案件 //var ilegalQuery = query.Where(d => d.is_illegal == 2 && d.handle_status_id == 5) // .GroupBy(d => d.countyid) // .Select(d => new // { // d.countyid, // ilegalcase = SqlFunc.AggregateCount(1) // }); //var queryList = await xiafaQuery.LeftJoin(jieshouQuery, (xf, js) => xf.countyid == js.countyid) // .LeftJoin(feiliangQuery, (xf, js, fl) => xf.countyid == fl.countyid) // .LeftJoin(legalQuery, (xf, js, fl, hf) => xf.countyid == hf.countyid) // .LeftJoin(ilegalQuery, (xf, js, fl, hf, qt) => xf.countyid == qt.countyid) // .LeftJoin((xf, js, fl, hf, qt, o) => xf.countyid == o.Id.ToString()) // .Select((xf, js, fl, hf, qt, o) => new // { // areaid = xf.countyid, // xf.totaltask, // js.receivetask, // fl.nonfoodcase, // hf.legalcase, // qt.ilegalcase, // areaname = o.Name, // sortno = o.SortNo, // }).ToListAsync(); #endregion dataList = (from item in queryList join task in verifytaskList on item.areaid equals task.countyid into temp from data in temp.DefaultIfEmpty() orderby item.sortno select new { item.areaid, item.totaltask, item.receivetask, item.nonfoodcase, item.legalcase, item.ilegalcase, item.areaname, item.sortno, verifytask = data == null ? 0 : data.verifytask, level = 1 } as dynamic).ToList(); } else { } return new Response> { Result = dataList }; } #endregion /// /// 查询案件统计数据 /// /// 年份 /// public async Task>> LoadDroneCaseInfoCount(int year) { //获取当前用户 var user = _auth.GetCurrentUser().User; //该用户下包含所有部门 List deplist = new List(); long level = 0; if (user != null && user.Id != -1) { var departs = client.Queryable().Where(r => r.UserId == user.Id).ToList(); foreach (var item in departs) { var list = client.Queryable().ToChildList(it => it.ParentId, item.OrgId) ?.Select(it => it.Id.ToString()).ToList(); deplist = deplist.Union(list).ToList(); } //获取用户分配部门的最高级别 var uorg = departs.OrderBy(r => r.Level).FirstOrDefault(); if (uorg != null) { level = uorg.Level; } } DateTime begintime = DateTime.Now.AddYears(-1); DateTime endtime = DateTime.Now; if (year != 0) { begintime = Convert.ToDateTime(year.ToString() + "-01-01"); endtime = Convert.ToDateTime((year + 1).ToString() + "-01-01"); } //查询数据 var query = client.Queryable() .WhereIF(year != 0, r => r.createtime >= begintime && r.createtime < endtime) .WhereIF(user.Id != -1, r => deplist.Contains(r.countyid) || deplist.Contains(r.streetid) || deplist.Contains(r.countyid)); List res = new List(); //按级别聚合 switch (level) { case 0: res = await query.GroupBy(c => new { c.countyid, c.countyname }) .Select(c => new { areaid = c.countyid, areaname = c.countyname, level = 1, count = SqlFunc.AggregateCount(c.Id) }).ToListAsync(); // Process result0 break; case 1: res = await query.GroupBy(c => new { c.streetid, c.streetname }) .Select(c => new { areaid = c.streetid, areaname = c.streetname, level = 2, count = SqlFunc.AggregateCount(c.Id) }) .ToListAsync(); // Process result1 break; case 2: res = await query.GroupBy(c => new { c.communityid, c.communityname }) .Select(c => new { areaid = c.communityid, areaname = c.communityname, level = 3, count = SqlFunc.AggregateCount(c.Id) }) .ToListAsync(); // Process result2 break; default: // Handle default case break; } return new Response> { Result = res }; } /// /// 查询案件详细信息 /// /// 请求数据信息 /// public async Task>>> LoadDroneCaseInfoDetail(DroneInfoStatisticsReq req) { //定义且实例化分页数据 RefAsync totalcount = 0; //获取当前用户 var user = _auth.GetCurrentUser().User; //该用户下包含所有部门 List deplist = new List(); long level = 0; if (user != null && user.Id != -1) { var departs = client.Queryable().Where(r => r.UserId == user.Id).ToList(); foreach (var item in departs) { var list = client.Queryable().ToChildList(it => it.ParentId, item.OrgId) ?.Select(it => it.Id.ToString()).ToList(); deplist = deplist.Union(list).ToList(); } //获取用户分配部门的最高级别 var uorg = departs.OrderBy(r => r.Level).FirstOrDefault(); if (uorg != null) { level = uorg.Level; } } DateTime begintime = DateTime.Now.AddYears(-1); DateTime endtime = DateTime.Now; if (req.year != 0) { begintime = Convert.ToDateTime(req.year.ToString() + "-01-01"); endtime = Convert.ToDateTime((req.year + 1).ToString() + "-01-01"); } //查询数 if (req.type == 0) { var info = await client.Queryable().LeftJoin((r, c) => r.case_no == c.CaseNo && c.FavoriteUserId == user.Id.ToString()) .WhereIF(req.year != 0, r => r.createtime >= begintime && r.createtime < endtime) //年份 .WhereIF(req.level == 1, r => r.countyid == req.areaid) //统计页面传的区域id .WhereIF(req.level == 2, r => r.streetid == req.areaid) .WhereIF(req.level == 3, r => r.communityid == req.areaid) .WhereIF(!string.IsNullOrEmpty(req.countyid), r => r.countyid == req.countyid) //县 .WhereIF(!string.IsNullOrEmpty(req.streetid), r => r.streetid == req.streetid) //镇 .WhereIF(!string.IsNullOrEmpty(req.geomid), r => r.geomid == req.geomid) //图斑号 .WhereIF(req.is_illegal != null, r => r.is_illegal == req.is_illegal) //图斑类型 .WhereIF(req.weifaleixing != null, r => r.weifaleixing == req.weifaleixing) //违法类型 .WhereIF(!string.IsNullOrEmpty(req.measure_name), r => r.measure_name == req.measure_name) //整改措施 .WhereIF(req.is_build_complete != null, r => r.is_build_complete == req.is_build_complete) //标注类型 .WhereIF(req.handle_status_id != null, r => r.handle_status_id == req.handle_status_id) //图斑状态 .WhereIF(user.Id != -1, r => deplist.Contains(r.countyid) || deplist.Contains(r.streetid) || deplist.Contains(r.countyid)) //非超级管理员用户筛选 .OrderByIF(string.IsNullOrEmpty(req.sort), r => r.createtime) .Select((r, c) => new { id = r.Id, //主键 r.case_name, //名称 r.case_description, //描述 r.case_no, //案件编号 r.geomid, r.address, //地址 r.createtime, //时间 r.area, //面积(总) r.nongyongdi_area, //农用地面积 r.gengdi_area, //耕地面积 r.yongjiujibennongtian_area, //永久基本农田面积 r.zhongdianquyu_area, //重点区域面积 r.shengtaibaohuhongxian_area, //生态保护红线面积 r.guotukongjianguihua_area, //国土空间规划面积 Fid = c.Id }).ToPageListAsync(req.page, req.limit, totalcount); return new Response>> { Result = new PageInfo> { Items = info, Total = totalcount } }; } else { //查询数据 var info = await client.Queryable() .RightJoin((r, c) => r.case_no == c.CaseNo && c.FavoriteUserId == user.Id.ToString()) .WhereIF(req.year != 0, r => r.createtime >= begintime && r.createtime < endtime) //年份 .WhereIF(req.level == 1, r => r.countyid == req.areaid) //统计页面传的区域id .WhereIF(req.level == 2, r => r.streetid == req.areaid) .WhereIF(req.level == 3, r => r.communityid == req.areaid) .WhereIF(!string.IsNullOrEmpty(req.countyid), r => r.countyid == req.countyid) //县 .WhereIF(!string.IsNullOrEmpty(req.streetid), r => r.streetid == req.streetid) //镇 .WhereIF(!string.IsNullOrEmpty(req.geomid), r => r.geomid == req.geomid) //图斑号 .WhereIF(req.is_illegal != null, r => r.is_illegal == req.is_illegal) //图斑类型 .WhereIF(req.weifaleixing != null, r => r.weifaleixing == req.weifaleixing) //违法类型 .WhereIF(!string.IsNullOrEmpty(req.measure_name), r => r.measure_name == req.measure_name) //整改措施 .WhereIF(req.is_build_complete != null, r => r.is_build_complete == req.is_build_complete) //标注类型 .WhereIF(req.handle_status_id != null, r => r.handle_status_id == req.handle_status_id) //图斑状态 .WhereIF(user.Id != -1, r => deplist.Contains(r.countyid) || deplist.Contains(r.streetid) || deplist.Contains(r.countyid)) //非超级管理员用户筛选 .OrderByIF(string.IsNullOrEmpty(req.sort), r => r.createtime) .Select((r, c) => new { id = r.Id, //主键 r.case_name, //名称 r.case_description, //描述 r.case_no, //案件编号 r.geomid, r.address, //地址 r.createtime, //时间 r.area, //面积(总) r.nongyongdi_area, //农用地面积 r.gengdi_area, //耕地面积 r.yongjiujibennongtian_area, //永久基本农田面积 r.zhongdianquyu_area, //重点区域面积 r.shengtaibaohuhongxian_area, //生态保护红线面积 r.guotukongjianguihua_area, //国土空间规划面积 Fid = c.Id }).ToPageListAsync(req.page, req.limit, totalcount); return new Response>> { Result = new PageInfo> { Items = info, Total = totalcount } }; } } /// /// 查询任务列表数据 /// /// 区域id /// 等级 /// 年 /// 标注类型 /// 图斑号 /// public async Task>>> LoadTaskDetailList(TaskDetailReq req) { // todo 批次号, //获取当前用户 var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; var orgList = authStrategyContext.Orgs; var leafNode = new List(); // 统计该区划下数据 计算那些祖先节点不存在于列表中的 var isCity = 0; if (user.Id == -1) { isCity = 1; } else { foreach (var sysOrg in orgList) { if (sysOrg.ParentId == 0) { isCity = 1; orgList = orgList.Where(t => t.ParentId.Equals(0)).ToList(); break; } var ids = sysOrg.CascadeId.Split("."); if (orgList.Any(org => org.Id != sysOrg.Id && ids.Contains(org.Id.ToString()))) { leafNode.Add(sysOrg); } } if (isCity != 1) // 顶级节点 { orgList = orgList.Except(leafNode).ToList(); } } var orgIds = orgList.Select(x => x.Id.ToString()).ToList(); var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoSchemeCode").Value; // 查询数据 var dateTime = req.year == 0 ? DateTime.Now : new DateTime(req.year, 1, 1); int totalCount = 0; using (var db = Repository.AsSugarClient()) { var info = db.Queryable() .LeftJoin((t, p) => t.ProcessId == p.Id && p.SchemeCode.Equals(schemeCode)) .LeftJoin((t, p, c) => p.Id == c.Id) .LeftJoin((t, p, c, f) => f.TaskId == t.Id && f.FavoriteUserId == user.Id.ToString()) .WhereIF(req.year != 0, (t, p, c, f) => SqlFunc.DateIsSame((DateTime)c.synchronoustime, dateTime, DateType.Year)) .Where((t, p, c, f) => c.countyid != null) .Where((t, p, c, f) => c.is_closed.Equals(0) || c.is_split.Equals(1)) //.Where((t, p, c, f) => p.SchemeCode.Equals(schemeCode)) .WhereIF(!string.IsNullOrEmpty(req.tubanlaiyuan), (t, p, c, f) => c.tubanlaiyuan.Equals(req.tubanlaiyuan)) .WhereIF(!string.IsNullOrEmpty(req.picihao), (t, p, c, f) => c.picihao.Equals(req.picihao)) // 激活状态 .Where((t, p, c, f) => t.State.Equals(1)) .WhereIF(req.type == 1, (t, p, c, f) => f.FavoriteUserId.Equals(user.Id.ToString())) .WhereIF(isCity == 0, (t, p, c, f) => (orgIds.Contains(c.countyid) || orgIds.Contains(c.streetid) || orgIds.Contains(c.communityid)) && t.UnitName.Equals("县级审核")) .WhereIF(isCity == 1, (t, p, c, f) => t.UnitName.Equals("市级审核")) // 图斑编号即案件编号 .WhereIF(!string.IsNullOrEmpty(req.geomid), (t, p, c, f) => c.case_no.Contains(req.geomid)) .Where((t, p, c, f) => c.is_illegal.Equals(0) || c.is_illegal.Equals(2) || (c.is_illegal.Equals(1) && c.weifaleixing.Equals(1))) // 标注类型-> 合法 其他 非粮化 拆除复耕 补办手续 .WhereIF(!string.IsNullOrEmpty(req.is_build_name) && req.is_build_name.Equals("合法"), (t, p, c, f) => c.is_illegal.Equals(0)) .WhereIF(!string.IsNullOrEmpty(req.is_build_name) && req.is_build_name.Equals("其他"), (t, p, c, f) => c.is_illegal.Equals(2)) .WhereIF(!string.IsNullOrEmpty(req.is_build_name) && req.is_build_name.Equals("非粮化"), (t, p, c, f) => c.weifaleixing.Equals(1)) .WhereIF(!string.IsNullOrEmpty(req.is_build_name) && req.is_build_name.Equals("拆除复耕"), (t, p, c, f) => c.measure_name.Equals("0")) .WhereIF(!string.IsNullOrEmpty(req.is_build_name) && req.is_build_name.Equals("补办手续"), (t, p, c, f) => c.measure_name.Equals("1")) .WhereIF(!string.IsNullOrEmpty(req.areaid), (t, p, c, f) => c.countyid.Equals(req.areaid) || c.streetid.Equals(req.areaid)) // 驳回过滤 .WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Length > 5, (t, p, c, f) => c.is_drawback.Equals(1) || c.is_shijibohui.Equals(1)) .WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Length < 5 && req.nowStatus.Contains("市级驳回"), (t, p, c, f) => c.is_shijibohui.Equals(1)) .WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Length < 5 && req.nowStatus.Contains("县级驳回"), (t, p, c, f) => c.is_drawback.Equals(1)) .OrderByIF(!string.IsNullOrEmpty(req.sort) && !SqlFunc.ToLower("CreateDate").Equals(req.sort.ToLower()), $"CAST({req.sort} AS numeric) {req.order}") .OrderByIF(string.IsNullOrEmpty(req.sort) || req.sort.ToLower().Equals("CreateDate".ToLower()), (t, p, c, f) => t.CreateDate, (string.IsNullOrEmpty(req.order) || req.order.Equals("asc")) ? OrderByType.Asc : OrderByType.Desc) .Select((t, p, c, f) => new { Fid = f.Id, schemeId = p.SchemeId, taskeid = t.Id, taskstate = t.State, tasktype = t.Type, processcode = t.ProcessCode, processid = t.ProcessId, unitname = t.UnitName, isouttime = t.IsOutTime, c.case_no, c.case_description, c.address, c.geomid, c.area, c.nongyongdi_area, c.gengdi_area, c.yongjiujibennongtian_area, c.zhongdianquyu_area, c.shengtaibaohuhongxian_area, c.guotukongjianguihua_area, c.Id, c.is_illegal, c.is_build_name, c.countyid, c.countyname, c.streetname, c.communityname, c.streetid, c.communityid, c.is_drawback, c.is_shijibohui, c.xianjiyijian, c.shijiyijian, c.xjshenhejieguo, c.sjshenhejieguo }).ToPageList(req.page, req.limit, ref totalCount); return new Response>> { Result = new PageInfo> { Items = info, Total = totalCount } }; } // /*foreach (dynamic o in info) { var taskId = (string)o.taskeid; var schemeId = (string)o.schemeid; // 查询任务信息 using var db = Repository.AsSugarClient(); var wfTask = await db.Queryable().Where(a => a.Id.Equals(taskId)).FirstAsync(); var unitId = wfTask.UnitId; var isSupervise = wfTask.IsSupervise; //未超时,短暂超时和严重超时 o.supervisestate = 0; //未超时 o.cancelsupervise = 0; // 是否可取消督办 // 督办任务 if (isSupervise.Equals(1)) { var superviseTime = wfTask.SuperviseTime; var wfScheme = await db.Queryable().Where(a => a.Id.Equals(schemeId)).FirstAsync(); var contentJObject = (JObject)JsonConvert.DeserializeObject(wfScheme.Content); var wfData = (JArray)contentJObject["wfData"]; foreach (var unit in wfData) { var id = unit["id"]?.ToString(); if (id != null && id.Equals(unitId)) { // 超时通知 isOvertimeMessage //第一次通知(时) overtimeMessageStart //通知间隔(时) overtimeMessageInterval 1 // 超时流转时间(时) overtimeGo 12 // 超时通知策略 overtimeMessageType // todo 查询超时配置 if (unit["isOvertimeMessage"].ToBool()) { DateTime now = DateTime.Now; var overtimeMessageInterval = unit["overtimeMessageInterval"].ToInt(); var overtimeGo = unit["overtimeGo"].ToInt(); if (now .CompareTo(superviseTime.ToDateTime() .AddHours(overtimeGo + overtimeMessageInterval)) > 0) { // 严重超期 o.supervisestate = 2; } else if (now.CompareTo(superviseTime.ToDateTime().AddHours(overtimeGo)) > 0) { o.supervisestate = 1; // 短暂超期 } } } } o.cancelsupervise = 0; var superviseId = (long)o.superviseid; // 设置督办是否可取消 if (user.Id.Equals(-1)) { o.cancelsupervise = 1; } else { //当前用户所属部门 var orgIds = authStrategyContext.Orgs.Select(x => x.Id).ToList(); var count = await db.Queryable() .LeftJoin((u, uo) => u.Id == uo.UserId) .LeftJoin((u, uo, g) => uo.OrgId == g.Id) .Where($"string_to_array(g.\"CascadeId\",'.') && ARRAY['{string.Join(",", orgIds)}']") .Where((u, uo, g) => u.Id == superviseId).CountAsync(); if (count > 0) { o.cancelsupervise = 1; } } } }*/ } /// /// 查询任务列表数据 /// /// 区域id /// 等级 /// 年 /// 标注类型 /// 图斑号 /// public async Task>>> LoadTaskIllegalDetailList(TaskDetailReq req) { // todo 批次号, //获取当前用户 var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; var orgList = authStrategyContext.Orgs; var leafNode = new List(); // 统计该区划下数据 计算那些祖先节点不存在于列表中的 var isCity = 0; if (user.Id == -1) { isCity = 1; } else { foreach (var sysOrg in orgList) { if (sysOrg.ParentId == 0) { isCity = 1; orgList = orgList.Where(t => t.ParentId.Equals(0)).ToList(); break; } var ids = sysOrg.CascadeId.Split("."); if (orgList.Any(org => org.Id != sysOrg.Id && ids.Contains(org.Id.ToString()))) { leafNode.Add(sysOrg); } } if (isCity != 1) // 顶级节点 { orgList = orgList.Except(leafNode).ToList(); } } var orgIds = orgList.Select(x => x.Id.ToString()).ToList(); var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoSchemeCode").Value; // 查询数据 var dateTime = req.year == 0 ? DateTime.Now : new DateTime(req.year, 1, 1); RefAsync totalCount = 0; using var db = Repository.AsSugarClient(); var info = await db.Queryable() .LeftJoin((t, p) => t.ProcessId == p.Id) .LeftJoin((t, p, c) => SqlFunc.JsonField(p.InstanceInfo, "pkeyValue") == c.Id) .LeftJoin((t, p, c, f) => f.TaskId == t.Id && f.FavoriteUserId == user.Id.ToString()) .WhereIF(req.year != 0, (t, p, c, f) => SqlFunc.DateIsSame((DateTime)c.synchronoustime, dateTime, DateType.Year)) .Where((t, p, c, f) => c.countyid != null) .Where((t, p, c, f) => c.is_closed.Equals(0) || c.is_split.Equals(1)) .Where((t, p, c, f) => c.weifaleixing.Equals(0)) // 非农化 .Where((t, p, c, f) => c.is_illegal.Equals(1)) // 违法 .Where((t, p, c, f) => p.SchemeCode.Equals(schemeCode)) .WhereIF(!string.IsNullOrEmpty(req.tubanlaiyuan), (t, p, c, f) => c.tubanlaiyuan.Equals(req.tubanlaiyuan)) .WhereIF(!string.IsNullOrEmpty(req.picihao), (t, p, c, f) => c.tubanlaiyuan.Equals(req.picihao)) // 激活状态 .Where((t, p, c, f) => t.State.Equals(1)) .WhereIF(req.type == 1, (t, p, c, f) => f.FavoriteUserId.Equals(user.Id.ToString())) .WhereIF(isCity == 0, (t, p, c, f) => (orgIds.Contains(c.countyid) || orgIds.Contains(c.streetid) || orgIds.Contains(c.communityid)) && t.UnitName.Equals("县级审核")) .WhereIF(isCity == 1, (t, p, c, f) => t.UnitName.Equals("市级审核")) // 图斑编号即案件编号 .WhereIF(!string.IsNullOrEmpty(req.geomid), (t, p, c, f) => c.case_no.Contains(req.geomid)) // 标注类型-> 非粮化 拆除复耕 补办手续 .WhereIF(!string.IsNullOrEmpty(req.is_build_name) && req.is_build_name.Equals("非粮化"), (t, p, c, f) => c.weifaleixing.Equals(1)) .WhereIF(!string.IsNullOrEmpty(req.is_build_name) && req.is_build_name.Equals("拆除复耕"), (t, p, c, f) => c.measure_name.Equals("0")) .WhereIF(!string.IsNullOrEmpty(req.is_build_name) && req.is_build_name.Equals("补办手续"), (t, p, c, f) => c.measure_name.Equals("1")) .WhereIF(string.IsNullOrEmpty(req.is_build_name), (t, p, c, f) => c.is_illegal.Equals(1)) .WhereIF(!string.IsNullOrEmpty(req.areaid), (t, p, c, f) => c.countyid.Equals(req.areaid) || c.streetid.Equals(req.areaid)) // 驳回过滤 .WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Length > 5, (t, p, c, f) => c.is_drawback.Equals(1) || c.is_shijibohui.Equals(1)) .WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Length < 5 && req.nowStatus.Contains("市级驳回"), (t, p, c, f) => c.is_shijibohui.Equals(1)) .WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Length < 5 && req.nowStatus.Contains("县级驳回"), (t, p, c, f) => c.is_drawback.Equals(1)) .OrderByIF(!string.IsNullOrEmpty(req.sort) && !SqlFunc.ToLower("CreateDate").Equals(req.sort.ToLower()), $"CAST({req.sort} AS numeric) {req.order}") .OrderByIF(string.IsNullOrEmpty(req.sort) || req.sort.ToLower().Equals("CreateDate".ToLower()), (t, p, c, f) => t.CreateDate, (string.IsNullOrEmpty(req.order) || req.order.Equals("asc")) ? OrderByType.Asc : OrderByType.Desc) .Select((t, p, c, f) => new { Fid = f.Id, schemeId = p.SchemeId, taskeid = t.Id, taskstate = t.State, tasktype = t.Type, processcode = t.ProcessCode, processid = t.ProcessId, unitname = t.UnitName, isouttime = t.IsOutTime, c.case_no, c.case_description, c.address, c.geomid, c.area, c.nongyongdi_area, c.gengdi_area, c.yongjiujibennongtian_area, c.zhongdianquyu_area, c.shengtaibaohuhongxian_area, c.guotukongjianguihua_area, c.Id, c.is_illegal, c.is_build_name, c.countyid, c.countyname, c.streetname, c.communityname, c.streetid, c.communityid, c.is_drawback, c.is_shijibohui, c.xianjiyijian, c.shijiyijian, c.xjshenhejieguo, c.sjshenhejieguo }) .ToPageListAsync(req.page, req.limit, totalCount); return new Response>> { Result = new PageInfo> { Items = info, Total = totalCount } }; } public void GenModel() { using (var db = Repository.AsSugarClient()) { db.DbFirst.IsCreateAttribute().StringNullable().CreateClassFile("c:\\Demo\\1", "Models"); } } public void UpdateDroneCaseInfo(DronCaseSingleCityUpdateReq req) { var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; /* try {*/ if (!string.IsNullOrEmpty(req.communityid) && !string.IsNullOrEmpty(req.communityname)) { client.Updateable().SetColumns(c => new DroneCaseInfoSingle { countyid = req.countyid, countyname = req.countyname, streetid = req.streetid, streetname = req.streetname, communityid = req.communityid, communityname = req.communityname }).Where(a => a.Id == req.Id).ExecuteCommand(); } else { client.Updateable().SetColumns(c => new DroneCaseInfoSingle { countyid = req.countyid, countyname = req.countyname, streetid = req.streetid, streetname = req.streetname }).Where(a => a.Id == req.Id).ExecuteCommand(); } // 根据案件id取得流程 /* var process = await Repository.ChangeRepository>().AsQueryable() .Where(t => SqlFunc.JsonField(t.InstanceInfo, "pkeyValue").Equals(req.Id)&&t.EnabledMark==1) .FirstAsync(); var original1 = await db.Queryable().FirstAsync(t => t.Id == req.Id); var caseInfo = original1.MapTo(); // 作废流程 var result = _processApp.DeleteProcess(process.Id); // 发起新流程 var processId = Guid.NewGuid().ToString(); var instanceInfo = process.InstanceInfo; instanceInfo.pkeyValue = req.Id; string x = Json.ToJson(instanceInfo); await _processApp.SaveDraft(caseInfo.Id, process.SchemeCode, user.Id + "", Json.ToJson(instanceInfo), process.ParentProcessId, process.ParentNodeId, process.ParentTaskId, 0, caseInfo.case_description); await _processApp.Create(caseInfo.Id, process.SchemeCode, user.Id + "", null, Json.ToJson(instanceInfo), caseInfo.case_description); } catch (Exception e) { await db.Ado.RollbackTranAsync(); throw e; }*/ } public string dealIllegalCaseInfo(DealIllegalCaseInfo req) { string sql = $"update drone_caseinfo_single set result_name='" + req.resultName + "',registr_number='" + req.registrNumber + "',illegal_contact='" + req.illegalContact + "',illegal_shenfenzhenghao='" + req.illegalShenfenzhenghao + "' where \"Id\"='" + req.id + "'"; client.Ado.ExecuteCommand(sql); return "修改成功"; } public string dronecaseinfoFavarite(string caseInfo, int type) { var user = _auth.GetCurrentUser().User; string id = Guid.NewGuid().ToString(); string sql = ""; if (type == 1) { sql = sql + "insert into drone_case_favorite values(" + id + "," + caseInfo + "," + user.Id + ")"; } if (type == 0) { sql = sql + "delete from drone_case_favorite where \"CaseNo\"=" + caseInfo + " and \"FavoriteUserId\"=" + user.Id; } client.Ado.ExecuteCommand(sql); return "收藏成功"; } public async Task>>> getFavariteList(int page, int limit) { var user = _auth.GetCurrentUser().User; RefAsync totalNumber = 0; var table = await client.Queryable().Where(o => long.Parse(o.FavoriteUserId) == user.Id) .ToPageListAsync(page, limit, totalNumber); return new Response>>() { Result = new PageInfo> { Items = table, Total = totalNumber } }; } public async Task> AddCaseFavorite(DroneCaseFavorite model) { var _count = await base.Repository.ChangeRepository>().AsQueryable() .Where(c => c.CaseNo == model.CaseNo && c.FavoriteUserId == model.FavoriteUserId).CountAsync(); if (_count > 0) return new Response { Code = 500, Result = false, Message = "案件已收藏" }; var flag = await base.Repository.ChangeRepository>().InsertAsync(model); if (flag) return new Response { Result = true, Message = "收藏成功" }; else return new Response { Code = 500, Result = false, Message = "收藏失败" }; } public async Task> DeleteFavoriteCase(string id) { var flag = await base.Repository.ChangeRepository>().DeleteByIdAsync(id); if (flag) return new Response { Result = true, Message = "删除成功" }; else return new Response { Code = 500, Result = false, Message = "删除失败" }; } public async Task> AddTaskFavorite(DroneTaskFavorite model) { var _count = await base.Repository.ChangeRepository>().AsQueryable() .Where(c => c.TaskId == model.TaskId && c.FavoriteUserId == model.FavoriteUserId).CountAsync(); if (_count > 0) return new Response { Code = 500, Result = false, Message = "案件已收藏" }; var flag = await base.Repository.ChangeRepository>().InsertAsync(model); if (flag) return new Response { Result = true, Message = "收藏成功" }; else return new Response { Code = 500, Result = false, Message = "收藏失败" }; } public async Task> DeleteTaskFavoriteCase(string id) { var flag = await base.Repository.ChangeRepository>().DeleteByIdAsync(id); if (flag) return new Response { Result = true, Message = "删除成功" }; else return new Response { Code = 500, Result = false, Message = "删除失败" }; } public async Task>>> LoadTaskList(TaskListReq req) { //获取当前用户 var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; RefAsync totalcount = 0; string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id; int level = client.Ado.GetInt(sql1); //该用户下包含所有部门 List deplist = new List(); string sqlpart = " "; if (user != null && user.Id != -1 && level != 0) { var departs = client.Queryable().Where(r => r.UserId == user.Id).ToList(); foreach (var item in departs) { var list = client.Queryable().ToChildList(it => it.ParentId, item.OrgId) ?.Select(it => it.Id.ToString()).ToList(); deplist = deplist.Union(list).ToList(); } string orgs = "\'" + string.Join("\',\'", deplist) + "\'"; sqlpart = $" and (c.countyid in ({orgs}) or c.streetid in ({orgs}) or c.communityid in ({orgs})) "; } var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoSchemeCode").Value; string sql = ""; if (req.type == 0) { sql = $"select c.is_drawback,c.is_shijibohui,c.xianjiyijian,c.shijiyijian,c.xjshenhejieguo,c.sjshenhejieguo, t.\"Id\" as Fid, a.\"Id\" as taskId,a.\"UnitName\" as unitName,c.synchronoustime as createDate,c.is_split,c.case_no as caseNo,c.countyname,c.streetname,c.is_build_name as isBuildName,\r\nc.area,a.\"ProcessCode\" as processcode,a.\"ProcessId\" as processid," + $"c.gengdi_area as gengdiArea,yongjiujibennongtian_area as yongjiujibennongtianArea ,nongyongdi_area as nongyongdiArea,c.geomid,c.\"Id\" as id \r\n from wf_task a LEFT JOIN drone_task_favorite t on a.\"Id\"=t.\"TaskId\" and t.\"FavoriteUserId\"='" + user.Id + "' LEFT JOIN wf_process " + $"b on a.\"ProcessId\"=b.\"Id\" \r\nLEFT JOIN drone_caseinfo_single c on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" where a.\"ProcessCode\"='" + schemeCode + "' "; } else { sql = $"select c.is_drawback,c.is_shijibohui,c.xianjiyijian,c.shijiyijian,c.xjshenhejieguo,c.sjshenhejieguo,t.\"Id\" as Fid, a.\"Id\" as taskId,a.\"UnitName\" as unitName,c.is_split,c.synchronoustime as createDate,c.case_no as caseNo,c.countyname,c.streetname,c.is_build_name as isBuildName,\r\nc.area,a.\"ProcessCode\" as processcode,a.\"ProcessId\" as processid," + $"c.gengdi_area as gengdiArea,yongjiujibennongtian_area as yongjiujibennongtianArea ,nongyongdi_area as nongyongdiArea,c.geomid,c.\"Id\" as id \r\n from wf_task a RIGHT JOIN drone_task_favorite t on a.\"Id\"=t.\"TaskId\" and t.\"FavoriteUserId\"='" + user.Id + "' LEFT JOIN wf_process " + $"b on a.\"ProcessId\"=b.\"Id\" \r\nLEFT JOIN drone_caseinfo_single c on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" where a.\"ProcessCode\"='" + schemeCode + "' "; } if (req.isIllegal < 100) { sqlpart = sqlpart + $" and c.is_illegal=" + req.isIllegal + ""; } if (req.weifaleixing < 100) { sqlpart = sqlpart + $" and c.weifaleixing=" + req.weifaleixing + ""; } if (!string.IsNullOrEmpty(req.measureName)) { sqlpart = sqlpart + $" and c.measure_name='" + req.measureName + "'"; } if (req.landType == null) // 图斑调整查询 , landType 不为空时,为接收办理 { sqlpart = sqlpart + $" and ( (c.typename = '农用地' and a.\"UnitName\" in ('待填报','待接收')) or ( c.typename in ('推堆土','建设用地') and a.\"UnitName\" = '待接收')) "; // 任务状态 1-激活状态 3- sqlpart = sqlpart + " and (a.\"State\"=1 or (a.\"State\"= 7 and c.is_split = 1))"; sqlpart = sqlpart + " and (c.is_closed = 0 or (c.is_closed = 1 and c.is_split = '1'))"; /*if (user != null && user.Id.Equals(-1)) { // System用户 sqlpart = sqlpart + "and (a.\"State\"=1 or (a.\"State\"= 7 and c.is_split = 1))"; } else { // 普通用户 sqlpart = sqlpart + "and a.\"State\"=1"; }*/ } else { sqlpart = sqlpart + "and a.\"State\"=1 "; } if (0 == req.landType) { sqlpart = sqlpart + $" and c.typename like '%农用地%'"; } else if (1 == req.landType) { sqlpart = sqlpart + $" and c.typename like '%建设用地%'"; } else if (2 == req.landType) { sqlpart = sqlpart + $" and c.typename like '%推堆土%'"; } if (req.year != 0) { sqlpart = sqlpart + $" and EXTRACT(YEAR FROM c.synchronoustime) = {req.year}"; } if (!string.IsNullOrEmpty(req.tubanlaiyuan)) { sqlpart = sqlpart + $" and c.tubanlaiyuan='" + req.tubanlaiyuan + "'"; } if (!string.IsNullOrEmpty(req.picihao)) { sqlpart = sqlpart + $" and c.picihao='" + req.picihao + "'"; } if (!string.IsNullOrEmpty(req.isBuildName)) { sqlpart = sqlpart + $" and c.is_build_name='" + req.isBuildName + "'"; } if (!string.IsNullOrEmpty(req.startTime) && !string.IsNullOrEmpty(req.endTime)) { DateTime datetime = DateTime.Parse(req.endTime); DateTime datetime1 = datetime.AddDays(1); sqlpart = sqlpart + $" and synchronoustime between TO_DATE('" + req.startTime + $"','YYYY-MM-DD') and TO_DATE('" + datetime1.ToString("yyyy-MM-dd") + $"','YYYY-MM-DD')"; } if (!string.IsNullOrEmpty(req.streetid)) { sqlpart = sqlpart + $" and c.streetid='" + req.streetid + "'"; } if (!string.IsNullOrEmpty(req.countyid)) { sqlpart = sqlpart + $" and c.countyid='" + req.countyid + "'"; } if (!string.IsNullOrEmpty(req.caseNo)) { sqlpart = sqlpart + $" and c.case_no like '%" + req.caseNo + "%'"; } if (!string.IsNullOrEmpty(req.nowStatus)) { string[] str = req.nowStatus.Split(","); int isDarwback = 0; string strstatus = ""; for (int i = 0; i < str.Length; i++) { // 县级驳回 is_drawback 市级驳回 is_shijibohui if (req.nowStatus.Contains("市级驳回") && req.nowStatus.Contains("县级驳回")) { sqlpart = sqlpart + $" and (c.is_drawback = '1' or c.is_shijibohui = '1')"; continue; } if ("县级驳回".Equals(str[i])) { sqlpart = sqlpart + $" and c.is_drawback = '1'"; continue; } if ("市级驳回".Equals(str[i])) { sqlpart = sqlpart + $" and c.is_shijibohui = '1'"; continue; } strstatus = strstatus + "'" + str[i] + "'" + ","; } if (!string.IsNullOrEmpty(strstatus)) { string statuslist = strstatus.Substring(0, strstatus.Length - 1); sqlpart = sqlpart + $" and a.\"UnitName\" in (" + statuslist + ")"; } else { sqlpart = sqlpart + $" and a.\"UnitName\" in ('待接收','待填报','待整改')"; } } else { sqlpart = sqlpart + $" and a.\"UnitName\" in ('待接收','待填报','待整改')"; } if (!string.IsNullOrEmpty(req.isSplit)) { string[] str = req.isSplit.Split(","); if (str.Length == 1) { if (str[0].Equals("正常")) { sqlpart = sqlpart + "and (c.is_split = '0' or c.is_split = '2')"; } else { sqlpart = sqlpart + "and c.is_split = '1'"; } } } if (req.isOutTime == 0) { sqlpart = sqlpart + $" and a.\"IsOutTime\"=" + req.isOutTime + ""; } if (req.isOutTime == 1) { sqlpart = sqlpart + $" and a.\"IsOutTime\">=" + req.isOutTime + ""; } if (!string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(c.area AS numeric) between " + double.Parse(req.tubanArea1) + " and " + double.Parse(req.tubanArea2); } if (!string.IsNullOrEmpty(req.gengdiArea1) && !string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(c.gengdi_area AS numeric) between " + double.Parse(req.gengdiArea1) + " and " + double.Parse(req.gengdiArea2); } if (!string.IsNullOrEmpty(req.sortType)) { if ("synchronoustime".Equals(req.sortType)) { sqlpart += $" order by {req.sortType} {req.order}"; } else { //sqlpart += $" order by CAST(" + req.sortType + $" AS numeric) {req.order}"; sqlpart += $" order by CAST(COALESCE(NULLIF(" + req.sortType + $", '')::numeric, 0) AS numeric) {req.order}"; } } else { sqlpart += $" ORDER BY c.synchronoustime desc"; } var info = await client.SqlQueryable(sql + sqlpart).ToPageListAsync(req.page, req.limit, totalcount); foreach (dynamic o in info) { if (o.is_split == 1) { o.unitname = "已关闭"; } } return new Response>> { Result = new PageInfo> { Items = info, Total = totalcount } }; } public async Task>> LoadMyUncompletedTask(TaskUncompletReq req) { //获取当前用户 var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; RefAsync totalcount = 0; string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id; int level = client.Ado.GetInt(sql1); //该用户下包含所有部门 List deplist = new List(); string sqlpart = " "; if (user != null && user.Id != -1 && level != 0) { var departs = client.Queryable().Where(r => r.UserId == user.Id).ToList(); foreach (var item in departs) { var list = client.Queryable().ToChildList(it => it.ParentId, item.OrgId) ?.Select(it => it.Id.ToString()).ToList(); deplist = deplist.Union(list).ToList(); } string orgs = "\'" + string.Join("\',\'", deplist) + "\'"; sqlpart = $" and (c.countyid in ({orgs}) or c.streetid in ({orgs}) or c.communityid in ({orgs})) "; } var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoSchemeCode").Value; string sql = ""; string sqlcount = ""; int allCount = 0; if (req.type == 0) { sqlcount = $"select count(a.*) from wf_task a LEFT JOIN wf_process " + $"b on a.\"ProcessId\"=b.\"Id\" \r\nLEFT JOIN drone_caseinfo_single c on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" where a.\"ProcessCode\"='" + schemeCode + "' "; if (string.IsNullOrEmpty(req.lat) || string.IsNullOrEmpty(req.lng)) { sql = $"select 0 as distance, a.\"Id\" as taskId,a.\"UnitName\" as unitName,c.typename,b.\"Title\" as title,c.synchronoustime as createDate,c.case_no as caseNo,c.countyname,c.streetname,c.communityname,\r\nc.area,a.\"ProcessCode\" as processcode,a.\"ProcessId\" as processid," + $"c.gengdi_area as gengdiArea,yongjiujibennongtian_area as yongjiujibennongtianArea ,c.is_shijibohui,nongyongdi_area as nongyongdiArea,c.geomid,c.\"Id\" as caseid,c.is_drawback as isDrawback \r\n from wf_task a LEFT JOIN wf_process " + $"b on a.\"ProcessId\"=b.\"Id\" \r\nLEFT JOIN drone_caseinfo_single c on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" where a.\"ProcessCode\"='" + schemeCode + "' "; } else { sql = $"select earth_distance(ll_to_earth (c.lat,c.lng),ll_to_earth(" + req.lat + "," + req.lng + $")) as distance,a.\"Id\" as taskId,a.\"UnitName\" as unitName,c.typename,b.\"Title\" as title,c.synchronoustime as createDate,c.case_no as caseNo,c.countyname,c.streetname,c.communityname,\r\nc.area,a.\"ProcessCode\" as processcode,a.\"ProcessId\" as processid," + $"c.gengdi_area as gengdiArea,yongjiujibennongtian_area as yongjiujibennongtianArea ,c.is_shijibohui,nongyongdi_area as nongyongdiArea,c.geomid,c.\"Id\" as caseid,c.is_drawback as isDrawback \r\n from wf_task a LEFT JOIN wf_process " + $"b on a.\"ProcessId\"=b.\"Id\" \r\nLEFT JOIN drone_caseinfo_single c on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" where a.\"ProcessCode\"='" + schemeCode + "' "; } sqlpart = sqlpart + $" and a.\"UnitName\" in ('待接收','待填报','待整改') and c.is_closed=0 and a.\"State\"=1 "; allCount = await client.Ado.GetIntAsync(sqlcount + sqlpart); } if (req.type == 1) { sqlcount = $"select count(a.*) from wf_task a " + $" RIGHT JOIN ( select \"ProcessId\",max(\"CreateDate\") as createtime from\r\n\twf_task where \"UserId\"='" + user.Id + $"' and \"State\"=3 GROUP BY \"ProcessId\" ) t on a.\"CreateDate\"=t.createtime and a.\"UserId\"='" + user.Id + $"' and a.\"State\"=3 " + $" RIGHT JOIN wf_process " + $"b on a.\"ProcessId\"=b.\"Id\" \r\n RIGHT JOIN drone_caseinfo_single c on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" where a.\"ProcessCode\"='" + schemeCode + "' "; sql = $"select DISTINCT(a.\"ProcessId\") as proid, a.\"Id\" as taskId,concat('已',SUBSTRING(a.\"UnitName\" from 2 for 2)) as unitName,c.typename,b.\"Title\" as title,c.synchronoustime as createDate,c.case_no as caseNo,c.countyname,c.streetname,c.communityname,\r\nc.area,a.\"ProcessCode\" as processcode,a.\"ProcessId\" as processid," + $"c.gengdi_area as gengdiArea,yongjiujibennongtian_area as yongjiujibennongtianArea ,c.is_shijibohui,nongyongdi_area as nongyongdiArea,c.geomid,c.\"Id\" as caseid,c.is_drawback as isDrawback \r\n from wf_task a " + $" RIGHT JOIN (select \"ProcessId\",max(\"CreateDate\") as createtime from\r\n\twf_task where \"UserId\"='" + user.Id + $"' and \"State\"=3 GROUP BY \"ProcessId\" ) t on a.\"CreateDate\"=t.createtime and a.\"UserId\"='" + user.Id + $"' and a.\"State\"=3 " + $" RIGHT JOIN wf_process " + $"b on a.\"ProcessId\"=b.\"Id\" \r\n RIGHT JOIN drone_caseinfo_single c on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" where a.\"ProcessCode\"='" + schemeCode + "' "; sqlpart = sqlpart + $" and a.\"UserId\"='" + user.Id + "' and c.is_closed=0 and a.\"State\"=3 "; allCount = await client.Ado.GetIntAsync(sqlcount + sqlpart); } if (!string.IsNullOrEmpty(req.caseNo)) { sqlpart = sqlpart + $" and c.case_no like '%" + req.caseNo + "%'"; } if (!string.IsNullOrEmpty(req.typename)) { sqlpart = sqlpart + $" and c.typename='" + req.typename + "'"; } if (!string.IsNullOrEmpty(req.nowStatus)) { string[] str = req.nowStatus.Split(","); int isDarwback = 0; string strstatus = ""; if (req.nowStatus.Contains("市级驳回") && req.nowStatus.Contains("县级驳回")) { sqlpart = sqlpart + $" and (c.is_drawback = '1' or c.is_shijibohui = '1')"; } else if (req.nowStatus.Contains("县级驳回")) { sqlpart = sqlpart + $" and c.is_drawback = '1'"; } else if (req.nowStatus.Contains("市级驳回")) { sqlpart = sqlpart + $" and c.is_shijibohui = '1'"; } for (int i = 0; i < str.Length; i++) { if ("县级驳回".Equals(str[i])) { continue; } if ("市级驳回".Equals(str[i])) { continue; } strstatus = strstatus + "'" + str[i] + "'" + ","; } if (!string.IsNullOrEmpty(strstatus)) { string statuslist = strstatus.Substring(0, strstatus.Length - 1); sqlpart = sqlpart + $" and a.\"UnitName\" in (" + statuslist + ")"; } else { sqlpart = sqlpart + $" and a.\"UnitName\" in ('待接收','待填报','待整改')"; } } else { sqlpart = sqlpart + $" and a.\"UnitName\" in ('待接收','待填报','待整改')"; } if (!string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.area, '')::numeric, 0) AS numeric) between " + double.Parse(req.tubanArea1) + " and " + double.Parse(req.tubanArea2); } else if (!string.IsNullOrEmpty(req.tubanArea1) && string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.area, '')::numeric, 0) AS numeric)> " + double.Parse(req.tubanArea1); } else if (string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.area, '')::numeric, 0) AS numeric)< " + double.Parse(req.tubanArea2); } if (!string.IsNullOrEmpty(req.gengdiArea1) && !string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.gengdi_area, '')::numeric, 0) AS numeric) between " + double.Parse(req.gengdiArea1) + " and " + double.Parse(req.gengdiArea2); } else if (!string.IsNullOrEmpty(req.gengdiArea1) && string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.gengdi_area, '')::numeric, 0) AS numeric)> " + double.Parse(req.gengdiArea1); } else if (string.IsNullOrEmpty(req.gengdiArea1) && !string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.gengdi_area, '')::numeric, 0) AS numeric)< " + double.Parse(req.gengdiArea2); } if (!string.IsNullOrEmpty(req.nongyongdiArea1) && !string.IsNullOrEmpty(req.nongyongdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.nongyongdi_area, '')::numeric, 0) AS numeric) between " + double.Parse(req.nongyongdiArea1) + " and " + double.Parse(req.nongyongdiArea2); } else if (!string.IsNullOrEmpty(req.nongyongdiArea1) && string.IsNullOrEmpty(req.nongyongdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.nongyongdi_area, '')::numeric, 0) AS numeric)> " + double.Parse(req.nongyongdiArea1); } else if (string.IsNullOrEmpty(req.nongyongdiArea1) && !string.IsNullOrEmpty(req.nongyongdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.nongyongdi_area, '')::numeric, 0) AS numeric)< " + double.Parse(req.nongyongdiArea2); } if (!string.IsNullOrEmpty(req.jibenArea1) && !string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.yongjiujibennongtian_area, '')::numeric, 0) AS numeric) between " + double.Parse(req.jibenArea1) + " and " + double.Parse(req.jibenArea2); } else if (!string.IsNullOrEmpty(req.jibenArea1) && string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.yongjiujibennongtian_area, '')::numeric, 0) AS numeric)> " + double.Parse(req.jibenArea1); } else if (string.IsNullOrEmpty(req.jibenArea1) && !string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.yongjiujibennongtian_area, '')::numeric, 0) AS numeric)< " + double.Parse(req.jibenArea2); } if (string.IsNullOrEmpty(req.lat) || string.IsNullOrEmpty(req.lng)) { sqlpart += $" ORDER BY c.synchronoustime desc"; } else { sqlpart += $" ORDER BY distance"; } Console.WriteLine(sql + sqlpart); var info = await client.SqlQueryable(sql + sqlpart).ToPageListAsync(req.page, req.limit, totalcount); Dictionary dic = new Dictionary(); dic.Add("allcount", allCount); PageInfo> list1 = new PageInfo> { Items = info, Total = totalcount, }; dic.Add("list", list1); return new Response> { Result = dic }; } public async Task>> LoadLanLingMyUncompletedTask(TaskUncompletReq req) { //获取当前用户 var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; RefAsync totalcount = 0; string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id; int level = client.Ado.GetInt(sql1); //该用户下包含所有部门 List deplist = new List(); string sqlpart = " "; string sqlpart1 = " "; if (user != null && user.Id != -1 && level != 0) { var departs = client.Queryable().Where(r => r.UserId == user.Id).ToList(); foreach (var item in departs) { var list = client.Queryable().ToChildList(it => it.ParentId, item.OrgId) ?.Select(it => it.Id.ToString()).ToList(); deplist = deplist.Union(list).ToList(); } string orgs = "\'" + string.Join("\',\'", deplist) + "\'"; sqlpart = $" and (e.countyid in ({orgs}) or e.streetid in ({orgs}) or e.communityid in ({orgs})) "; sqlpart1 = $" and (c.countyid in ({orgs}) or c.streetid in ({orgs}) or c.communityid in ({orgs})) "; } var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoSchemeCode").Value; string sql = ""; string sqlcount = ""; int allCount = 0; sqlcount = $"select count(a.*) from wf_task a LEFT JOIN wf_process " + $"b on a.\"ProcessId\"=b.\"Id\" \r\nLEFT JOIN drone_ssnyd c on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" where 1=1 and a.\"ProcessCode\"='004' "; string sqlcount1 = $"select count(a.*) from wf_task a LEFT JOIN wf_process " + $"b on a.\"ProcessId\"=b.\"Id\" \r\nLEFT JOIN drone_ssnyd_rcjg d on b.\"InstanceInfo\"->>'pkeyValue'=d.\"Id\" RIGHT JOIN drone_ssnyd c on c.\"Id\"=d.ssnyd_id where 1=1 and a.\"ProcessCode\"='005'"; // $"a.\"ProcessCode\"='" + // schemeCode + "' "; sql = $"select * from ((select a.\"Id\" as taskId,a.\"UnitName\" as unitName,c.xiangmu_name as title,c.handle_status_id,c.synchronoustime as createDate," + $"c.xiangmu_no as caseNo,c.countyname,c.streetname,c.communityname,c.countyid,c.streetid,c.communityid,\r\n a.\"ProcessCode\" as processcode,a.\"ProcessId\" as processid,a.\"Type\" as type,a.\"ChildSchemeInfoCode\" as childSchemeInfoCode," + $"c.gengdi_area as gengdiArea,yongjiujibennongtian_area as yongjiujibennongtianArea ,nongyongdi_area as nongyongdiArea,c.geomid," + $"c.\"Id\" as caseid\r\n from wf_task a LEFT JOIN wf_process b on a.\"ProcessId\"=b.\"Id\"\r\nLEFT JOIN drone_ssnyd c " + $"on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" where 1=1 and a.\"ProcessCode\"='004' and a.\"UnitName\" in ('开工核查','开工问题整改','建中核查','建中问题整改','完工核查','完工问题整改','日常监管','监管问题整改','现场复核','监管接收')" + $" and a.\"State\"=1 ) UNION \r\n\r\n(select a.\"Id\" as taskId,a.\"UnitName\" as unitName,c.xiangmu_name as title,c.handle_status_id,c.synchronoustime as createDate,c.xiangmu_no as caseNo,c.countyname,c.streetname,c.communityname,c.countyid,c.streetid,c.communityid," + $"\r\n a.\"ProcessCode\" as processcode,a.\"ProcessId\" as processid,a.\"Type\" as type,a.\"ChildSchemeInfoCode\" as childSchemeInfoCode,c.gengdi_area as gengdiArea,yongjiujibennongtian_area as yongjiujibennongtianArea ,nongyongdi_area as nongyongdiArea,c.geomid,c.\"Id\" as caseid\r\n" + $" from wf_task a LEFT JOIN wf_process b on a.\"ProcessId\"=b.\"Id\"\r\nLEFT JOIN drone_ssnyd_rcjg d on b.\"InstanceInfo\"->>'pkeyValue'=d.\"Id\" RIGHT JOIN drone_ssnyd c on c.\"Id\"=d.ssnyd_id where 1=1 " + $" and a.\"ProcessCode\"='005' and a.\"UnitName\" in ('开工核查','开工问题整改','建中核查','建中问题整改','完工核查','完工问题整改','日常监管','监管问题整改','现场复核','监管接收') and a.\"State\"=1 )) e where 1=1 "; string sqlpart2 = sqlpart1 + $" and a.\"UnitName\" in ('开工核查','开工问题整改','建中核查','建中问题整改','完工核查','完工问题整改','日常监管','监管问题整改','现场复核','监管接收') and a.\"State\"=1 "; allCount = await client.Ado.GetIntAsync(sqlcount + sqlpart2); var allCount1 = await client.Ado.GetIntAsync(sqlcount1 + sqlpart2); allCount = allCount + allCount1; if (!string.IsNullOrEmpty(req.caseNo)) { //sqlpart = sqlpart + $" and e.xiangmu_no like '%" + req.caseNo + "%'"; sqlpart = sqlpart + $" and (e.caseno like '%" + req.caseNo + "%' or e.title like '%" + req.caseNo+"%') "; } if (!string.IsNullOrEmpty(req.caseid)) { //sqlpart = sqlpart + $" and e.xiangmu_no like '%" + req.caseNo + "%'"; sqlpart = sqlpart + $" and e.caseid='{req.caseid}' "; } if (!string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.area, '')::numeric, 0) AS numeric) between " + double.Parse(req.tubanArea1) + " and " + double.Parse(req.tubanArea2); } else if (!string.IsNullOrEmpty(req.tubanArea1) && string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.area, '')::numeric, 0) AS numeric)> " + double.Parse(req.tubanArea1); } else if (string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.area, '')::numeric, 0) AS numeric)< " + double.Parse(req.tubanArea2); } if (!string.IsNullOrEmpty(req.gengdiArea1) && !string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.gengdi_area, '')::numeric, 0) AS numeric) between " + double.Parse(req.gengdiArea1) + " and " + double.Parse(req.gengdiArea2); } else if (!string.IsNullOrEmpty(req.gengdiArea1) && string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.gengdi_area, '')::numeric, 0) AS numeric)> " + double.Parse(req.gengdiArea1); } else if (string.IsNullOrEmpty(req.gengdiArea1) && !string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.gengdi_area, '')::numeric, 0) AS numeric)< " + double.Parse(req.gengdiArea2); } if (!string.IsNullOrEmpty(req.nongyongdiArea1) && !string.IsNullOrEmpty(req.nongyongdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.nongyongdi_area, '')::numeric, 0) AS numeric) between " + double.Parse(req.nongyongdiArea1) + " and " + double.Parse(req.nongyongdiArea2); } else if (!string.IsNullOrEmpty(req.nongyongdiArea1) && string.IsNullOrEmpty(req.nongyongdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.nongyongdi_area, '')::numeric, 0) AS numeric)> " + double.Parse(req.nongyongdiArea1); } else if (string.IsNullOrEmpty(req.nongyongdiArea1) && !string.IsNullOrEmpty(req.nongyongdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.nongyongdi_area, '')::numeric, 0) AS numeric)< " + double.Parse(req.nongyongdiArea2); } if (!string.IsNullOrEmpty(req.jibenArea1) && !string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.yongjiujibennongtian_area, '')::numeric, 0) AS numeric) between " + double.Parse(req.jibenArea1) + " and " + double.Parse(req.jibenArea2); } else if (!string.IsNullOrEmpty(req.jibenArea1) && string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.yongjiujibennongtian_area, '')::numeric, 0) AS numeric)> " + double.Parse(req.jibenArea1); } else if (string.IsNullOrEmpty(req.jibenArea1) && !string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.yongjiujibennongtian_area, '')::numeric, 0) AS numeric)< " + double.Parse(req.jibenArea2); } if (req.handle_status_id != null) { sqlpart = sqlpart + $" and handle_status_id={req.handle_status_id} "; } sqlpart += $" ORDER BY e.createdate desc"; Console.WriteLine(sql + sqlpart); var info = await client.SqlQueryable(sql + sqlpart).ToPageListAsync(req.page, req.limit, totalcount); Dictionary dic = new Dictionary(); dic.Add("allcount", allCount); PageInfo> list1 = new PageInfo> { Items = info, Total = totalcount, }; dic.Add("list", list1); return new Response> { Result = dic }; } public async Task>> LoadLanLingChildTask(string caseid) { Dictionary dic = new Dictionary(); string sql = $"select a.\"Id\" as taskId,d.*\r\n from wf_task a LEFT JOIN wf_process b on a.\"ProcessId\"=b.\"Id\"\r\nLEFT JOIN drone_ssnyd_rcjg d " + $" on b.\"InstanceInfo\"->>'pkeyValue'=d.\"Id\" where d.ssnyd_id='" + caseid + "' and is_lishi=1"; var list = client.Ado.SqlQuery(sql); dic.Add("list", list); return new Response> { Result = dic }; } public async Task>> LoadLanLingMyTask(TaskUncompletReq req) { //获取当前用户 var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; RefAsync totalcount = 0; string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id; int level = client.Ado.GetInt(sql1); //该用户下包含所有部门 List deplist = new List(); string sqlpart = " "; string sqlpart1 = " "; if (user != null && user.Id != -1 && level != 0) { var departs = client.Queryable().Where(r => r.UserId == user.Id).ToList(); foreach (var item in departs) { var list = client.Queryable().ToChildList(it => it.ParentId, item.OrgId) ?.Select(it => it.Id.ToString()).ToList(); deplist = deplist.Union(list).ToList(); } string orgs = "\'" + string.Join("\',\'", deplist) + "\'"; // sqlpart = $" and (e.countyid in ({orgs}) or e.streetid in ({orgs}) or e.communityid in ({orgs})) "; sqlpart = $" and (c.countyid in ({orgs}) or c.streetid in ({orgs}) or c.communityid in ({orgs})) "; } var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoSchemeCode").Value; string sql = ""; string sqlcount = ""; int allCount = 0; sqlcount = $"select count(a.*) from wf_task a INNER JOIN ( select \"ProcessId\",max(\"CreateDate\") as createtime from wf_task GROUP BY \"ProcessId\" ) t on a.\"CreateDate\"=t.createtime LEFT JOIN wf_process " + $"b on a.\"ProcessId\"=b.\"Id\" \r\nLEFT JOIN drone_ssnyd c on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" where 1=1 "; string sqlcount1 = $"select count(a.*) from wf_task a LEFT JOIN wf_process " + $"b on a.\"ProcessId\"=b.\"Id\" \r\nLEFT JOIN drone_ssnyd_rcjg c on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" RIGHT JOIN drone_ssnyd d on d.\"Id\"=c.ssnyd_id where 1=1 and a.\"ProcessCode\"='005'"; // $"a.\"ProcessCode\"='" + // schemeCode + "' "; sql = $"select a.\"Id\" as taskId,a.\"UnitName\" as unitName,c.xiangmu_name as title,c.synchronoustime as createDate," + $"c.xiangmu_no as caseNo,c.countyname,c.streetname,c.communityname,c.countyid,c.streetid,c.communityid,\r\n a.\"ProcessCode\" as processcode,a.\"ProcessId\" as processid,a.\"Type\" as type,a.\"ChildSchemeInfoCode\" as childSchemeInfoCode," + $"c.gengdi_area as gengdiArea,yongjiujibennongtian_area as yongjiujibennongtianArea ,nongyongdi_area as nongyongdiArea,c.geomid," + $"c.\"Id\" as caseid\r\n from wf_task a INNER JOIN ( select \"ProcessId\",max(\"CreateDate\") as createtime from wf_task GROUP BY \"ProcessId\" ) t on a.\"CreateDate\"=t.createtime LEFT JOIN wf_process b on a.\"ProcessId\"=b.\"Id\"\r\nLEFT JOIN drone_ssnyd c " + $"on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" where 1=1 and c.\"Id\" is not null "; string sqlpart2 = sqlpart1 + $" and c.\"Id\" is not null "; allCount = await client.Ado.GetIntAsync(sqlcount + sqlpart2); //var allCount1 = await client.Ado.GetIntAsync(sqlcount1 + sqlpart2); if (!string.IsNullOrEmpty(req.caseNo)) { sqlpart = sqlpart + $" and c.xiangmu_no like '%" + req.caseNo + "%'"; //sqlpart = sqlpart + $" and e.caseno like '%" + req.caseNo + "%'"; } if (!string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.area, '')::numeric, 0) AS numeric) between " + double.Parse(req.tubanArea1) + " and " + double.Parse(req.tubanArea2); } else if (!string.IsNullOrEmpty(req.tubanArea1) && string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.area, '')::numeric, 0) AS numeric)> " + double.Parse(req.tubanArea1); } else if (string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.area, '')::numeric, 0) AS numeric)< " + double.Parse(req.tubanArea2); } if (!string.IsNullOrEmpty(req.gengdiArea1) && !string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.gengdi_area, '')::numeric, 0) AS numeric) between " + double.Parse(req.gengdiArea1) + " and " + double.Parse(req.gengdiArea2); } else if (!string.IsNullOrEmpty(req.gengdiArea1) && string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.gengdi_area, '')::numeric, 0) AS numeric)> " + double.Parse(req.gengdiArea1); } else if (string.IsNullOrEmpty(req.gengdiArea1) && !string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.gengdi_area, '')::numeric, 0) AS numeric)< " + double.Parse(req.gengdiArea2); } if (!string.IsNullOrEmpty(req.nongyongdiArea1) && !string.IsNullOrEmpty(req.nongyongdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.nongyongdi_area, '')::numeric, 0) AS numeric) between " + double.Parse(req.nongyongdiArea1) + " and " + double.Parse(req.nongyongdiArea2); } else if (!string.IsNullOrEmpty(req.nongyongdiArea1) && string.IsNullOrEmpty(req.nongyongdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.nongyongdi_area, '')::numeric, 0) AS numeric)> " + double.Parse(req.nongyongdiArea1); } else if (string.IsNullOrEmpty(req.nongyongdiArea1) && !string.IsNullOrEmpty(req.nongyongdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.nongyongdi_area, '')::numeric, 0) AS numeric)< " + double.Parse(req.nongyongdiArea2); } if (!string.IsNullOrEmpty(req.jibenArea1) && !string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.yongjiujibennongtian_area, '')::numeric, 0) AS numeric) between " + double.Parse(req.jibenArea1) + " and " + double.Parse(req.jibenArea2); } else if (!string.IsNullOrEmpty(req.jibenArea1) && string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.yongjiujibennongtian_area, '')::numeric, 0) AS numeric)> " + double.Parse(req.jibenArea1); } else if (string.IsNullOrEmpty(req.jibenArea1) && !string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(c.yongjiujibennongtian_area, '')::numeric, 0) AS numeric)< " + double.Parse(req.jibenArea2); } sqlpart += $" ORDER BY c.synchronoustime desc"; Console.WriteLine(sql + sqlpart); var info = await client.SqlQueryable(sql + sqlpart).ToPageListAsync(req.page, req.limit, totalcount); Dictionary dic = new Dictionary(); dic.Add("allcount", allCount); PageInfo> list1 = new PageInfo> { Items = info, Total = totalcount, }; dic.Add("list", list1); return new Response> { Result = dic }; } public Response> loadStreet() { var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; string sql0 = "select count(\"Level\") from sys_userorg where \"UserId\"=" + user.Id; int cout = client.Ado.GetInt(sql0); if (cout == 0 && user.Id != -1) { List lists = new List(); Response> response = new Response>(); response.Result = lists; return response; } string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id; int level = client.Ado.GetInt(sql1); if (user != null && user.Id != -1 && level != 0) { string sql = $"select \"OrgId\" from sys_userorg where \"Level\"=1 and \"UserId\"=" + user.Id; string sql2 = $"select \"OrgId\" from sys_userorg where \"Level\"=2 and \"UserId\"=" + user.Id; var level1 = client.Ado.SqlQuery(sql); var level2 = client.Ado.SqlQuery(sql2); string sql3 = ""; string sql4 = ""; if (level1.Count > 0) { string str = ""; for (int i = 0; i < level1.Count; i++) { var item = level1[i]; if (i == level1.Count - 1) { str = str + "'" + item.OrgId + "'"; } else { str = str + "'" + item.OrgId + "',"; } } sql3 = $"select \"Id\",\"Name\" from sys_org where \"ParentId\" in(" + str + ")"; } if (level2.Count > 0) { string str = ""; for (int i = 0; i < level2.Count; i++) { var item = level2[i]; if (i == level2.Count - 1) { str = str + "'" + item.OrgId + "'"; } else { str = str + "'" + item.OrgId + "',"; } } sql4 = $"select \"Id\",\"Name\" from sys_org where \"Id\" in(" + str + ")"; } List list = new List(); if (!string.IsNullOrEmpty(sql3)) { var list1 = client.Ado.SqlQuery(sql3); list.AddRange(list1); } if (!string.IsNullOrEmpty(sql4)) { var list2 = client.Ado.SqlQuery(sql4); list.AddRange(list2); } Response> response = new Response>(); response.Result = list; return response; } else { string sql5 = $"select \"Id\",\"Name\" from sys_org where \"Level\"=2"; var list2 = client.Ado.SqlQuery(sql5); Response> response = new Response>(); response.Result = list2; return response; } } public async Task>>> LoadCaseInfoTuBanList(CaseInfoTuBanReq req) { var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; RefAsync totalcount = 0; string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id; int level = client.Ado.GetInt(sql1); //该用户下包含所有部门 List deplist = new List(); string sqlpart = " "; if (user != null && user.Id != -1 && level != 0) { var departs = client.Queryable().Where(r => r.UserId == user.Id).ToList(); foreach (var item in departs) { var list = client.Queryable().ToChildList(it => it.ParentId, item.OrgId) ?.Select(it => it.Id.ToString()).ToList(); deplist = deplist.Union(list).ToList(); } string orgs = "\'" + string.Join("\',\'", deplist) + "\'"; sqlpart = $" and (countyid in ({orgs}) or streetid in ({orgs}) or communityid in ({orgs})) "; } var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoSchemeCode").Value; string sqlcount = $" select count(a.\"Id\")\r\n from drone_caseinfo_single a LEFT JOIN wf_process b on b.\"InstanceInfo\"->>'pkeyValue'=a.\"Id\" and b.\"SchemeCode\"='" + schemeCode + "' where 1=1 and is_closed=0 and b.\"Id\" is not null "; string sql = $" select a.\"Id\",tubanlaiyuan,countyname,streetname,communityname,case_no as caseNo,synchronoustime identificationTime,area,\r\n gengdi_area as gengdiArea,typename,yongjiujibennongtian_area yongjiujibennongtianarea,nongyongdi_area nongyongdiarea, " + $"case when is_illegal=0 \r\n then '合法' when is_illegal=1 then '违法' when is_illegal=2 then '其他' else '违法' end as isIllegal,handle_status_name as handleStatusName," + $"xiangmumc,xiangmuzhuti,actual_use_to as actualUseTo,case when weifaleixing=0 \r\n then '非农化违法用地' when weifaleixing=1 then '非粮化违法用地' end as weifaleixing," + $"case when cast(measure_name AS numeric)=0 \r\n then '拆除复耕' when cast(measure_name AS numeric)=1 then '补办手续' end as measureName,\r\nqita_use_to as qitaUseTo\r\n from drone_caseinfo_single a" + $" LEFT JOIN wf_process b on b.\"InstanceInfo\"->>'pkeyValue'=a.\"Id\" and b.\"SchemeCode\"='" + schemeCode + "' where 1=1 and is_closed=0 and b.\"Id\" is not null "; if (req.year != 0) { sqlpart = sqlpart + $" and EXTRACT(YEAR FROM a.synchronoustime) = {req.year}"; } if (!string.IsNullOrEmpty(req.tubanlaiyuan)) { var tubanlaiyuan = req.tubanlaiyuan; var tubanlaiyuanList = tubanlaiyuan.Split(',').ToList(); sqlpart = sqlpart + $" and tubanlaiyuan in ('{string.Join("','", tubanlaiyuanList)}')"; } if (!string.IsNullOrEmpty(req.startTime) && !string.IsNullOrEmpty(req.endTime)) { DateTime datetime = DateTime.Parse(req.endTime); DateTime datetime1 = datetime.AddDays(1); sqlpart = sqlpart + $" and synchronoustime between TO_DATE('" + req.startTime.ToString("yyyy-MM-dd") + $"','YYYY-MM-DD') and TO_DATE('" + datetime1.ToString("yyyy-MM-dd") + $"','YYYY-MM-DD')"; } if (!string.IsNullOrEmpty(req.weifaleixing)) { // 判断违法 sqlpart = sqlpart + "and is_illegal = '1'"; sqlpart = sqlpart + $" and weifaleixing='" + req.weifaleixing + "'"; } if (!string.IsNullOrEmpty(req.measureName)) { // 判定违法 sqlpart = sqlpart + "and is_illegal = '1'"; sqlpart = sqlpart + $" and measure_name='" + req.measureName + "'"; } if (!string.IsNullOrEmpty(req.typename)) { sqlpart = sqlpart + $" and typename='" + req.typename + "'"; } if (!string.IsNullOrEmpty(req.picihao)) { sqlpart = sqlpart + $" and picihao='" + req.picihao + "'"; } if (!string.IsNullOrEmpty(req.isBuildName)) { sqlpart = sqlpart + $" and is_build_name='" + req.isBuildName + "'"; } if (req.isIllegal < 5) { sqlpart = sqlpart + $" and is_illegal=" + req.isIllegal + ""; } if (!string.IsNullOrEmpty(req.countyid)) { sqlpart = sqlpart + $" and countyid='" + req.countyid + "'"; } if (!string.IsNullOrEmpty(req.streetid)) { sqlpart = sqlpart + $" and streetid='" + req.streetid + "'"; } if (!string.IsNullOrEmpty(req.nowStatus)) { string[] str = req.nowStatus.Split(","); string strstatus = ""; for (int i = 0; i < str.Length; i++) { strstatus = strstatus + "'" + str[i] + "'" + ","; } if (!string.IsNullOrEmpty(strstatus)) { string statuslist = strstatus.Substring(0, strstatus.Length - 1); sqlpart = sqlpart + $" and handle_status_name in (" + statuslist + ")"; } } if (!string.IsNullOrEmpty(req.caseNo)) { sqlpart = sqlpart + $" and case_no like '%" + req.caseNo + "%'"; } if (!string.IsNullOrEmpty(req.originalcaseno)) { sqlpart = sqlpart + $" and original_case_no like '%" + req.originalcaseno + "%'"; } if (!string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(area, '')::numeric, 0) AS numeric) between " + double.Parse(req.tubanArea1) + " and " + double.Parse(req.tubanArea2); } else if (!string.IsNullOrEmpty(req.tubanArea1) && string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(area, '')::numeric, 0) AS numeric)> " + double.Parse(req.tubanArea1); } else if (string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(area, '')::numeric, 0) AS numeric)< " + double.Parse(req.tubanArea2); } if (!string.IsNullOrEmpty(req.gengdiArea1) && !string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(gengdi_area, '')::numeric, 0) AS numeric) between " + double.Parse(req.gengdiArea1) + " and " + double.Parse(req.gengdiArea2); } else if (!string.IsNullOrEmpty(req.gengdiArea1) && string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(gengdi_area, '')::numeric, 0) AS numeric)> " + double.Parse(req.gengdiArea1); } else if (string.IsNullOrEmpty(req.gengdiArea1) && !string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(gengdi_area, '')::numeric, 0) AS numeric)< " + double.Parse(req.gengdiArea2); } if (!string.IsNullOrEmpty(req.jibenArea1) && !string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(yongjiujibennongtian_area, '')::numeric, 0) AS numeric) between " + double.Parse(req.jibenArea1) + " and " + double.Parse(req.jibenArea2); } else if (!string.IsNullOrEmpty(req.jibenArea1) && string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(yongjiujibennongtian_area, '')::numeric, 0) AS numeric)> " + double.Parse(req.jibenArea1); } else if (string.IsNullOrEmpty(req.jibenArea1) && !string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(yongjiujibennongtian_area, '')::numeric, 0) AS numeric)< " + double.Parse(req.jibenArea2); } var count = await client.Ado.GetIntAsync(sqlcount + sqlpart); sqlpart += $" ORDER BY synchronoustime desc "; sqlpart += $" limit " + req.limit + " offset " + (req.page - 1) * req.limit; Console.Write(sql + sqlpart); var info = await client.SqlQueryable(sql + sqlpart).ToListAsync(); //var aaa = client.SqlQueryable(sql + sqlpart).ToSqlString(); foreach (var item in info) { if ("其他".Equals(item.isillegal)) { if ("1".Equals(item.qitauseto)) { item.actualuseto = "不改变原用地性质的光伏用地"; } else if ("2".Equals(item.qitauseto)) { item.actualuseto = "设施农业用地"; } else if ("3".Equals(item.qitauseto)) { item.actualuseto = "农村道路"; } else if ("4".Equals(item.qitauseto)) { item.actualuseto = "实地未变化"; } else if ("5".Equals(item.qitauseto)) { item.actualuseto = "临时用地"; } else { item.actualuseto = ""; } } } return new Response>> { Result = new PageInfo> { Items = info, Total = count } }; } public async Task>>> LoadCaseInfoTuBanList1(CaseInfoTuBanReq req) { RefAsync totalcount = 0; var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoSchemeCode").Value; var info = await client.Queryable() .LeftJoin((c, p) => SqlFunc.JsonField(p.InstanceInfo, "pkeyValue") == c.Id && p.SchemeCode == schemeCode) .Where((c, p) => c.is_closed == 0 && p.Id != null) .OrderByDescending(c => c.synchronoustime) .Select((c, p) => (dynamic)new { c.Id, c.tubanlaiyuan, c.countyname, c.streetname, c.communityname, c.case_no, c.identification_time, c.area, c.gengdi_area, c.typename, c.yongjiujibennongtian_area, c.nongyongdi_area, c.is_illegal, c.handleusername, c.xiangmumc, c.xiangmuzhuti, c.actual_use_to, c.weifaleixing, c.measure_name, c.qitafujian }) .ToPageListAsync(req.page, req.limit, totalcount); return new Response>> { Result = new PageInfo> { Items = info, Total = totalcount } }; } public async Task>> LoadCaseInfoTuBanListApp(CaseInfoTuBanReq req) { var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; RefAsync totalcount = 0; string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id; int level = client.Ado.GetInt(sql1); //该用户下包含所有部门 List deplist = new List(); string sqlpart = " "; if (user != null && user.Id != -1 && level != 0) { var departs = client.Queryable().Where(r => r.UserId == user.Id).ToList(); foreach (var item in departs) { var list = client.Queryable().ToChildList(it => it.ParentId, item.OrgId) ?.Select(it => it.Id.ToString()).ToList(); deplist = deplist.Union(list).ToList(); } string orgs = "\'" + string.Join("\',\'", deplist) + "\'"; sqlpart = $" and (countyid in ({orgs}) or streetid in ({orgs}) or communityid in ({orgs})) "; } string sqlcount = $"select count(*) from drone_caseinfo_single a " + $" LEFT JOIN wf_process b on b.\"InstanceInfo\"->>'pkeyValue'=a.\"Id\" where 1=1 and is_closed=0 and b.\"Id\" is not null "; var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoSchemeCode").Value; int allCount = client.Ado.GetInt(sqlcount + sqlpart); string sql = $" select a.\"Id\",tubanlaiyuan,countyname,streetname,communityname,is_shijibohui,case_no as caseNo,synchronoustime identificationTime,area,\r\n gengdi_area as gengdiArea,typename,yongjiujibennongtian_area yongjiujibennongtianarea," + $"case when is_illegal=0 \r\n then '合法' when is_illegal=1 then '违法' when is_illegal=2 then '其他' else '违法' end as isIllegal,handle_status_name as handleStatusName," + $"xiangmumc,xiangmuzhuti,actual_use_to as actualUseTo,case when weifaleixing=0 \r\n then '非农化违法用地' when weifaleixing=1 then '非粮化违法用地' end as weifaleixing," + $"case when cast(measure_name AS numeric)=0 \r\n then '拆除复耕' when cast(measure_name AS numeric)=1 then '补办手续' end as measureName,\r\nqita_use_to as qitaUseTo\r\n from drone_caseinfo_single a " + $" LEFT JOIN wf_process b on b.\"InstanceInfo\"->>'pkeyValue'=a.\"Id\" and b.\"SchemeCode\"='" + schemeCode + $"' where 1=1 and is_closed=0 and b.\"Id\" is not null "; if (req.year != 0) { sqlpart = sqlpart + $" and EXTRACT(YEAR FROM synchronoustime) = {req.year}"; } if (!string.IsNullOrEmpty(req.startTime) && !string.IsNullOrEmpty(req.endTime)) { DateTime datetime = DateTime.Parse(req.endTime); DateTime datetime1 = datetime.AddDays(1); sqlpart = sqlpart + $" and synchronoustime between TO_DATE('" + req.startTime + $"','YYYY-MM-DD') and TO_DATE('" + datetime1.ToString("yyyy-MM-dd") + $"','YYYY-MM-DD')"; } if (!string.IsNullOrEmpty(req.weifaleixing)) { // 判断违法 sqlpart = sqlpart + "and is_illegal = '1'"; sqlpart = sqlpart + $" and weifaleixing='" + req.weifaleixing + "'"; } if (!string.IsNullOrEmpty(req.measureName)) { // 判定违法 sqlpart = sqlpart + "and is_illegal = '1'"; sqlpart = sqlpart + $" and measure_name='" + req.measureName + "'"; } if (!string.IsNullOrEmpty(req.typename)) { sqlpart = sqlpart + $" and typename='" + req.typename + "'"; } if (!string.IsNullOrEmpty(req.tubanlaiyuan)) { sqlpart = sqlpart + $" and tubanlaiyuan='" + req.tubanlaiyuan + "'"; } if (!string.IsNullOrEmpty(req.picihao)) { sqlpart = sqlpart + $" and picihao='" + req.picihao + "'"; } if (!string.IsNullOrEmpty(req.isBuildName)) { sqlpart = sqlpart + $" and is_build_name='" + req.isBuildName + "'"; } if (req.isIllegal < 5) { sqlpart = sqlpart + $" and is_illegal=" + req.isIllegal + ""; } if (!string.IsNullOrEmpty(req.countyid)) { sqlpart = sqlpart + $" and countyid='" + req.countyid + "'"; } if (!string.IsNullOrEmpty(req.streetid)) { sqlpart = sqlpart + $" and streetid='" + req.streetid + "'"; } if (!string.IsNullOrEmpty(req.nowStatus)) { sqlpart = sqlpart + $" and handle_status_name='" + req.nowStatus + "'"; } if (!string.IsNullOrEmpty(req.caseNo)) { sqlpart = sqlpart + $" and case_no like '%" + req.caseNo + "%'"; } if (!string.IsNullOrEmpty(req.originalcaseno)) { sqlpart = sqlpart + $" and original_case_no like '%" + req.originalcaseno + "%'"; } if (!string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(area, '')::numeric, 0) AS numeric) between " + double.Parse(req.tubanArea1) + " and " + double.Parse(req.tubanArea2); } else if (!string.IsNullOrEmpty(req.tubanArea1) && string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(area, '')::numeric, 0) AS numeric)> " + double.Parse(req.tubanArea1); } else if (string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(area, '')::numeric, 0) AS numeric)< " + double.Parse(req.tubanArea2); } if (!string.IsNullOrEmpty(req.gengdiArea1) && !string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(gengdi_area, '')::numeric, 0) AS numeric) between " + double.Parse(req.gengdiArea1) + " and " + double.Parse(req.gengdiArea2); } else if (!string.IsNullOrEmpty(req.gengdiArea1) && string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(gengdi_area, '')::numeric, 0) AS numeric)> " + double.Parse(req.gengdiArea1); } else if (string.IsNullOrEmpty(req.gengdiArea1) && !string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(gengdi_area, '')::numeric, 0) AS numeric)< " + double.Parse(req.gengdiArea2); } if (!string.IsNullOrEmpty(req.jibenArea1) && !string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(yongjiujibennongtian_area, '')::numeric, 0) AS numeric) between " + double.Parse(req.jibenArea1) + " and " + double.Parse(req.jibenArea2); } else if (!string.IsNullOrEmpty(req.jibenArea1) && string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(yongjiujibennongtian_area, '')::numeric, 0) AS numeric)> " + double.Parse(req.jibenArea1); } else if (string.IsNullOrEmpty(req.jibenArea1) && !string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(yongjiujibennongtian_area, '')::numeric, 0) AS numeric)< " + double.Parse(req.jibenArea2); } sqlpart += $" ORDER BY synchronoustime desc"; var info = await client.SqlQueryable(sql + sqlpart).ToPageListAsync(req.page, req.limit, totalcount); foreach (var item in info) { if ("其他".Equals(item.isillegal)) { if ("1".Equals(item.qitauseto)) { item.actualuseto = "不改变原用地性质的光伏用地"; } else if ("2".Equals(item.qitauseto)) { item.actualuseto = "设施农业用地"; } else if ("3".Equals(item.qitauseto)) { item.actualuseto = "农村道路"; } else if ("4".Equals(item.qitauseto)) { item.actualuseto = "实地未变化"; } else if ("5".Equals(item.qitauseto)) { item.actualuseto = "临时用地"; } else { item.actualuseto = ""; } } } Dictionary dic = new Dictionary(); dic.Add("allcount", allCount); PageInfo> list1 = new PageInfo> { Items = info, Total = totalcount, }; dic.Add("list", list1); return new Response> { Result = dic }; } public Response> ExprotLoadCaseInfoTuBanList(CaseInfoTuBanReq req) { var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; RefAsync totalcount = 0; string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id; int level = client.Ado.GetInt(sql1); //该用户下包含所有部门 List deplist = new List(); string sqlpart = " "; if (user != null && user.Id != -1 && level != 0) { var departs = client.Queryable().Where(r => r.UserId == user.Id).ToList(); foreach (var item in departs) { var list = client.Queryable().ToChildList(it => it.ParentId, item.OrgId) ?.Select(it => it.Id.ToString()).ToList(); deplist = deplist.Union(list).ToList(); } string orgs = "\'" + string.Join("\',\'", deplist) + "\'"; sqlpart = $" and (countyid in ({orgs}) or streetid in ({orgs}) or communityid in ({orgs})) "; } string sql = $" select picihao,xjshenhejieguo,sjshenhejieguo,xianjiyijian,shijiyijian,verifyuser,case_description,hexiaoren,verifytime,hexiaotime,tubanlaiyuan,countyname,streetname,communityname,case_no as caseNo,synchronoustime identificationTime,area,\r\n gengdi_area as gengdiArea,typename,jieshou_people,jieshou_time,pandingyijushuoming,examiner_name,examine_time," + $"transactor_name,transact_time,yongjiujibennongtian_area yongjiujibennongtianarea,remark,nongyongdi_area nongyongdiarea,shengtaibaohuhongxian_area shengtaibaohuhongxianarea," + $"case when is_illegal=0 \r\n then '合法' when is_illegal=1 then '违法' when is_illegal=2 then '其他' else '违法' end as isIllegal,handle_status_name as handleStatusName," + $"xiangmumc,xiangmuzhuti,actual_use_to as actualUseTo,case when weifaleixing=0 \r\n then '非农化违法用地' when weifaleixing=1 then '非粮化违法用地' end as weifaleixing," + $"case when cast(measure_name AS numeric)=0 \r\n then '拆除复耕' when cast(measure_name AS numeric)=1 then '补办手续' end as measureName,\r\nqita_use_to as qitaUseTo,geomid\r\n from drone_caseinfo_single a " + $" LEFT JOIN wf_process b on b.\"InstanceInfo\"->>'pkeyValue'=a.\"Id\" where 1=1 and is_closed=0 and b.\"Id\" is not null "; if (req.year != 0) { sqlpart = sqlpart + $" and EXTRACT(YEAR FROM synchronoustime) = {req.year}"; } if (!string.IsNullOrEmpty(req.startTime) && !string.IsNullOrEmpty(req.endTime)) { DateTime datetime = DateTime.Parse(req.endTime); DateTime datetime1 = datetime.AddDays(1); sqlpart = sqlpart + $" and synchronoustime between TO_DATE('" + req.startTime + $"','YYYY-MM-DD') and TO_DATE('" + datetime1.ToString("yyyy-MM-dd") + $"','YYYY-MM-DD')"; } if (!string.IsNullOrEmpty(req.weifaleixing)) { // 判断违法 sqlpart = sqlpart + "and is_illegal = '1'"; sqlpart = sqlpart + $" and weifaleixing='" + req.weifaleixing + "'"; } if (!string.IsNullOrEmpty(req.measureName)) { // 判定违法 sqlpart = sqlpart + "and is_illegal = '1'"; sqlpart = sqlpart + $" and measure_name='" + req.measureName + "'"; } if (!string.IsNullOrEmpty(req.typename)) { sqlpart = sqlpart + $" and typename='" + req.typename + "'"; } if (!string.IsNullOrEmpty(req.tubanlaiyuan)) { var tubanlaiyuanList = req.tubanlaiyuan.Split(",").ToList(); sqlpart = sqlpart + $" and tubanlaiyuan in ('{string.Join("','", tubanlaiyuanList)}')"; } if (!string.IsNullOrEmpty(req.picihao)) { sqlpart = sqlpart + $" and picihao='" + req.picihao + "'"; } if (!string.IsNullOrEmpty(req.isBuildName)) { sqlpart = sqlpart + $" and is_build_name='" + req.isBuildName + "'"; } if (req.isIllegal < 5) { sqlpart = sqlpart + $" and is_illegal=" + req.isIllegal + ""; } if (!string.IsNullOrEmpty(req.countyid)) { sqlpart = sqlpart + $" and countyid='" + req.countyid + "'"; } if (!string.IsNullOrEmpty(req.streetid)) { sqlpart = sqlpart + $" and streetid='" + req.streetid + "'"; } if (!string.IsNullOrEmpty(req.nowStatus)) { string[] str = req.nowStatus.Split(","); string strstatus = ""; for (int i = 0; i < str.Length; i++) { strstatus = strstatus + "'" + str[i] + "'" + ","; } if (!string.IsNullOrEmpty(strstatus)) { string statuslist = strstatus.Substring(0, strstatus.Length - 1); sqlpart = sqlpart + $" and handle_status_name in (" + statuslist + ")"; } } if (!string.IsNullOrEmpty(req.caseNo)) { sqlpart = sqlpart + $" and case_no like '%" + req.caseNo + "%'"; } if (!string.IsNullOrEmpty(req.originalcaseno)) { sqlpart = sqlpart + $" and original_case_no like '%" + req.originalcaseno + "%'"; } if (!string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(area, '')::numeric, 0) AS numeric) between " + double.Parse(req.tubanArea1) + " and " + double.Parse(req.tubanArea2); } else if (!string.IsNullOrEmpty(req.tubanArea1) && string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(area, '')::numeric, 0) AS numeric)> " + double.Parse(req.tubanArea1); } else if (string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(area, '')::numeric, 0) AS numeric)< " + double.Parse(req.tubanArea2); } if (!string.IsNullOrEmpty(req.gengdiArea1) && !string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(gengdi_area, '')::numeric, 0) AS numeric) between " + double.Parse(req.gengdiArea1) + " and " + double.Parse(req.gengdiArea2); } else if (!string.IsNullOrEmpty(req.gengdiArea1) && string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(gengdi_area, '')::numeric, 0) AS numeric)> " + double.Parse(req.gengdiArea1); } else if (string.IsNullOrEmpty(req.gengdiArea1) && !string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(gengdi_area, '')::numeric, 0) AS numeric)< " + double.Parse(req.gengdiArea2); } if (!string.IsNullOrEmpty(req.jibenArea1) && !string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(yongjiujibennongtian_area, '')::numeric, 0) AS numeric) between " + double.Parse(req.jibenArea1) + " and " + double.Parse(req.jibenArea2); } else if (!string.IsNullOrEmpty(req.jibenArea1) && string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(yongjiujibennongtian_area, '')::numeric, 0) AS numeric)> " + double.Parse(req.jibenArea1); } else if (string.IsNullOrEmpty(req.jibenArea1) && !string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(yongjiujibennongtian_area, '')::numeric, 0) AS numeric)< " + double.Parse(req.jibenArea2); } sqlpart += $" ORDER BY synchronoustime desc"; var info = client.Ado.SqlQuery(sql + sqlpart); foreach (var item in info) { if ("其他".Equals(item.isIllegal)) { item.actualUseTo = item.qitaUseTo; } } Response> response = new Response>(); response.Result = info; return response; } public Response> ExprotLoadCaseInfoSsnyTuBanList(CaseInfoTuBanReq req) { var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; RefAsync totalcount = 0; string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id; int level = client.Ado.GetInt(sql1); //该用户下包含所有部门 List deplist = new List(); string sqlpart = " "; if (user != null && user.Id != -1 && level != 0) { var departs = client.Queryable().Where(r => r.UserId == user.Id).ToList(); foreach (var item in departs) { var list = client.Queryable().ToChildList(it => it.ParentId, item.OrgId) ?.Select(it => it.Id.ToString()).ToList(); deplist = deplist.Union(list).ToList(); } string orgs = "\'" + string.Join("\',\'", deplist) + "\'"; sqlpart = $" and (countyid in ({orgs}) or streetid in ({orgs}) or communityid in ({orgs})) "; } string sql = $" select picihao,xjshenhejieguo,sjshenhejieguo,xianjiyijian,shijiyijian,verifyuser,case_description,hexiaoren,verifytime,hexiaotime,tubanlaiyuan,countyname,streetname,communityname,case_no as caseNo,synchronoustime identificationTime,area,\r\n gengdi_area as gengdiArea,typename,jieshou_people,jieshou_time,pandingyijushuoming,examiner_name,examine_time," + $"transactor_name,transact_time,yongjiujibennongtian_area yongjiujibennongtianarea,remark,nongyongdi_area nongyongdiarea,shengtaibaohuhongxian_area shengtaibaohuhongxianarea," + $"case when is_illegal=0 \r\n then '合法' when is_illegal=1 then '违法' when is_illegal=2 then '其他' else '违法' end as isIllegal,handle_status_name as handleStatusName," + $"xiangmumc,xiangmuzhuti,actual_use_to as actualUseTo,case when weifaleixing=0 \r\n then '非农化违法用地' when weifaleixing=1 then '非粮化违法用地' end as weifaleixing," + $"case when cast(measure_name AS numeric)=0 \r\n then '拆除复耕' when cast(measure_name AS numeric)=1 then '补办手续' end as measureName,\r\nqita_use_to as qitaUseTo,geomid\r\n from drone_ssnyd a " + $" LEFT JOIN wf_process b on b.\"InstanceInfo\"->>'pkeyValue'=a.\"Id\" where 1=1 and is_closed=0 and b.\"Id\" is not null "; if (req.year != 0) { sqlpart = sqlpart + $" and EXTRACT(YEAR FROM synchronoustime) = {req.year}"; } if (!string.IsNullOrEmpty(req.startTime) && !string.IsNullOrEmpty(req.endTime)) { DateTime datetime = DateTime.Parse(req.endTime); DateTime datetime1 = datetime.AddDays(1); sqlpart = sqlpart + $" and synchronoustime between TO_DATE('" + req.startTime + $"','YYYY-MM-DD') and TO_DATE('" + datetime1.ToString("yyyy-MM-dd") + $"','YYYY-MM-DD')"; } if (!string.IsNullOrEmpty(req.weifaleixing)) { // 判断违法 sqlpart = sqlpart + "and is_illegal = '1'"; sqlpart = sqlpart + $" and weifaleixing='" + req.weifaleixing + "'"; } if (!string.IsNullOrEmpty(req.measureName)) { // 判定违法 sqlpart = sqlpart + "and is_illegal = '1'"; sqlpart = sqlpart + $" and measure_name='" + req.measureName + "'"; } if (!string.IsNullOrEmpty(req.typename)) { sqlpart = sqlpart + $" and typename='" + req.typename + "'"; } if (!string.IsNullOrEmpty(req.tubanlaiyuan)) { var tubanlaiyuanList = req.tubanlaiyuan.Split(",").ToList(); sqlpart = sqlpart + $" and tubanlaiyuan in ('{string.Join("','", tubanlaiyuanList)}')"; } if (!string.IsNullOrEmpty(req.picihao)) { sqlpart = sqlpart + $" and picihao='" + req.picihao + "'"; } if (!string.IsNullOrEmpty(req.isBuildName)) { sqlpart = sqlpart + $" and is_build_name='" + req.isBuildName + "'"; } if (req.isIllegal < 5) { sqlpart = sqlpart + $" and is_illegal=" + req.isIllegal + ""; } if (!string.IsNullOrEmpty(req.countyid)) { sqlpart = sqlpart + $" and countyid='" + req.countyid + "'"; } if (!string.IsNullOrEmpty(req.streetid)) { sqlpart = sqlpart + $" and streetid='" + req.streetid + "'"; } if (!string.IsNullOrEmpty(req.nowStatus)) { string[] str = req.nowStatus.Split(","); string strstatus = ""; for (int i = 0; i < str.Length; i++) { strstatus = strstatus + "'" + str[i] + "'" + ","; } if (!string.IsNullOrEmpty(strstatus)) { string statuslist = strstatus.Substring(0, strstatus.Length - 1); sqlpart = sqlpart + $" and handle_status_name in (" + statuslist + ")"; } } if (!string.IsNullOrEmpty(req.caseNo)) { sqlpart = sqlpart + $" and case_no like '%" + req.caseNo + "%'"; } if (!string.IsNullOrEmpty(req.originalcaseno)) { sqlpart = sqlpart + $" and original_case_no like '%" + req.originalcaseno + "%'"; } if (!string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(area, '')::numeric, 0) AS numeric) between " + double.Parse(req.tubanArea1) + " and " + double.Parse(req.tubanArea2); } else if (!string.IsNullOrEmpty(req.tubanArea1) && string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(area, '')::numeric, 0) AS numeric)> " + double.Parse(req.tubanArea1); } else if (string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(area, '')::numeric, 0) AS numeric)< " + double.Parse(req.tubanArea2); } if (!string.IsNullOrEmpty(req.gengdiArea1) && !string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(gengdi_area, '')::numeric, 0) AS numeric) between " + double.Parse(req.gengdiArea1) + " and " + double.Parse(req.gengdiArea2); } else if (!string.IsNullOrEmpty(req.gengdiArea1) && string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(gengdi_area, '')::numeric, 0) AS numeric)> " + double.Parse(req.gengdiArea1); } else if (string.IsNullOrEmpty(req.gengdiArea1) && !string.IsNullOrEmpty(req.gengdiArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(gengdi_area, '')::numeric, 0) AS numeric)< " + double.Parse(req.gengdiArea2); } if (!string.IsNullOrEmpty(req.jibenArea1) && !string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(yongjiujibennongtian_area, '')::numeric, 0) AS numeric) between " + double.Parse(req.jibenArea1) + " and " + double.Parse(req.jibenArea2); } else if (!string.IsNullOrEmpty(req.jibenArea1) && string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(yongjiujibennongtian_area, '')::numeric, 0) AS numeric)> " + double.Parse(req.jibenArea1); } else if (string.IsNullOrEmpty(req.jibenArea1) && !string.IsNullOrEmpty(req.jibenArea2)) { sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(yongjiujibennongtian_area, '')::numeric, 0) AS numeric)< " + double.Parse(req.jibenArea2); } sqlpart += $" ORDER BY synchronoustime desc"; var info = client.Ado.SqlQuery(sql + sqlpart); foreach (var item in info) { if ("其他".Equals(item.isIllegal)) { item.actualUseTo = item.qitaUseTo; } } Response> response = new Response>(); response.Result = info; return response; } public void ExportCaseInfoShapefile(CaseInfoTuBanReq req, string shpFilePath, string shpFilePathzip) { var response = ExprotLoadCaseInfoTuBanList(req).Result; List list = new List(); for (int i = 0; i < response.Count; i++) { var caseinfo = response[i]; if (!string.IsNullOrEmpty(caseinfo.geomid)) { list.Add(caseinfo); } } List gids = list.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 a.gid, ST_AsText(a.geom) AS geom,b.tubanlaiyuan,b.case_no,b.countyname,b.streetname,b.communityname FROM drone_shp_data a left join drone_caseinfo_single b on a.relid=b.\"Id\" 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,createtime,synchronoustime,tubanlaiyuan,ST_AsText(geom) AS geom FROM view_drone_caseinfo_shp WHERE gid IN ({gidsString})"; // 执行查询 var data = client.Ado.SqlQuery(query); if (data == null || data.Count == 0) { throw new Exception("暂无数据"); } List features = new List(); foreach (var row in data) { var geometry = ParseGeometry(row.geom); if (geometry == null) { throw new Exception("数据不可用"); } //var attributes = new AttributesTable //{ // { "gid", row.gid }, // {"laiyuan",row.tubanlaiyuan==null?"无":row.tubanlaiyuan }, // {"case_no",row.case_no==null?"无":row.case_no }, // {"countyname",row.countyname==null?"无":row.countyname }, // {"streetname",row.streetname ==null?"无":row.streetname}, // {"comname",row.communityname ==null?"无":row.communityname} //}; 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.ToString() }, { "处理措施", 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 Response ListToExcelTuban(List list, List headers) { Response response = new Response(); try { HSSFWorkbook workbook = new HSSFWorkbook(); #region 内容样式 IFont font1 = workbook.CreateFont(); //创建一个字体样式对象 font1.FontName = "Microsoft YaHei"; //和excel里面的字体对应 //font1.Boldweight = short.MaxValue;//字体加粗 font1.FontHeightInPoints = 12; //字体大小 ICellStyle style = workbook.CreateCellStyle(); //创建样式对象 style.BorderBottom = BorderStyle.Thin; style.BorderLeft = BorderStyle.Thin; style.BorderRight = BorderStyle.Thin; style.BorderTop = BorderStyle.Thin; style.Alignment = HorizontalAlignment.Center; style.VerticalAlignment = VerticalAlignment.Center; style.SetFont(font1); //将字体样式赋给样式对象 style.WrapText = true; #endregion #region 标题样式 IFont font = workbook.CreateFont(); //创建一个字体样式对象 font.FontName = "Microsoft YaHei"; //和excel里面的字体对应 font.Boldweight = (short)FontBoldWeight.Bold; //字体加粗 font.FontHeightInPoints = 12; //字体大小 ICellStyle style1 = workbook.CreateCellStyle(); //创建样式对象 style1.BorderBottom = BorderStyle.Thin; style1.BorderLeft = BorderStyle.Thin; style1.BorderRight = BorderStyle.Thin; style1.BorderTop = BorderStyle.Thin; style1.Alignment = HorizontalAlignment.Center; style1.VerticalAlignment = VerticalAlignment.Center; style1.SetFont(font); //将字体样式赋给样式对象 // 创建一个数值格式的CellStyle ICellStyle numericStyle = workbook.CreateCellStyle(); // 创建一个数据格式对象 IDataFormat dataFormat = workbook.CreateDataFormat(); var font11 = 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(font11); #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); if ("xuhao".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 4 * 350); } else if ("tubanlaiyuan".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 20 * 300); } else if ("picihao".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 20 * 300); } else if ("countyname".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 25 * 300); } else if ("streetname".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 15 * 300); } else if ("communityname".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 20 * 300); } else if ("typename".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 15 * 320); } else if ("caseNo".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 20 * 350); } else if ("identificationTime".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 20 * 320); } else if ("area".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 15 * 300); } else if ("gengdiArea".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 15 * 300); } else if ("yongjiujibennongtianarea".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 15 * 300); } else if ("nongyongdiarea".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 15 * 300); } else if ("shengtaibaohuhongxianarea".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 20 * 300); } else if ("isillegal".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 12 * 300); } else if ("handleStatusName".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 12 * 300); } else if ("jieshou_people".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 12 * 300); } else if ("jieshou_time".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 20 * 320); } else if ("xiangmumc".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 12 * 300); } else if ("xiangmuzhuti".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 12 * 300); } else if ("actualUseTo".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 12 * 300); } else if ("weifaleixing".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 15 * 300); } else if ("pandingyijushuoming".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 15 * 300); } else if ("examiner_name".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 12 * 300); } else if ("examine_time".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 20 * 320); } else if ("measureName".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 12 * 300); } else if ("transactor_name".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 12 * 300); } else if ("transact_time".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 20 * 320); } else if ("remark".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 20 * 320); } else if ("xjshenhejieguo".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 20 * 320); } else if ("sjshenhejieguo".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 20 * 320); } else if ("xianjiyijian".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 20 * 320); } else if ("shijiyijian".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 20 * 320); } else if ("verifyuser".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 12 * 300); } else if ("hexiaoren".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 12 * 300); } else if ("verifytime".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 20 * 320); } else if ("hexiaotime".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 20 * 320); } else if ("case_description".Equals(headers[i].key)) { sheet.SetColumnWidth(i, 20 * 320); } } #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++) //循环数据 { var item = list[k * 60000 + i]; //获取数据 IRow dataRow = sheet.CreateRow(i + 1); //创建行 string qitauseto = ""; for (int j = 0; j < headers.Count; j++) //循环表头 { var objValue = ""; if ("xuhao".Equals(headers[j].key)) { objValue = i + 1 + ""; } if ("tubanlaiyuan".Equals(headers[j].key)) { objValue = item.tubanlaiyuan; } else if ("countyname".Equals(headers[j].key)) { objValue = item.countyname; } else if ("streetname".Equals(headers[j].key)) { objValue = item.streetname; } else if ("communityname".Equals(headers[j].key)) { objValue = item.communityname; } else if ("typename".Equals(headers[j].key)) { objValue = item.typename; } else if ("caseNo".Equals(headers[j].key)) { objValue = item.caseNo; } else if ("identificationTime".Equals(headers[j].key)) { if (item.identificationTime.IsNullOrEmpty() || "0001-01-01 00:00:00".Equals(item.identificationTime.ToString("yyyy-MM-dd HH:mm:ss"))) { objValue = ""; } else { objValue = item.identificationTime.ToString("yyyy-MM-dd HH:mm:ss"); } } else if ("area".Equals(headers[j].key)) { if (string.IsNullOrEmpty(item.area)) { objValue = item.area; } else { objValue = double.Parse(item.area).ToString("F2"); } //创建单元格 var cell = dataRow.CreateCell(j); cell.CellStyle = numericStyle; if (objValue != null && !string.IsNullOrEmpty(objValue.ToString())) { cell.SetCellType(CellType.Numeric); cell.SetCellValue(double.Parse(objValue)); } else { cell.SetCellValue(0.00d); //填充Excel单元格 } continue; } else if ("gengdiArea".Equals(headers[j].key)) { if (string.IsNullOrEmpty(item.gengdiArea)) { objValue = item.gengdiArea; } else { objValue = double.Parse(item.gengdiArea).ToString("F2"); } var cell = dataRow.CreateCell(j); cell.CellStyle = numericStyle; if (objValue != null && !string.IsNullOrEmpty(objValue.ToString())) { cell.SetCellType(CellType.Numeric); cell.SetCellValue(double.Parse(objValue)); } else { cell.SetCellValue(0.00d); //填充Excel单元格 } continue; } else if ("yongjiujibennongtianarea".Equals(headers[j].key)) { if (string.IsNullOrEmpty(item.yongjiujibennongtianarea)) { objValue = item.yongjiujibennongtianarea; } else { objValue = double.Parse(item.yongjiujibennongtianarea).ToString("F2"); } var cell = dataRow.CreateCell(j); cell.CellStyle = numericStyle; if (objValue != null && !string.IsNullOrEmpty(objValue.ToString())) { cell.SetCellType(CellType.Numeric); cell.SetCellValue(double.Parse(objValue)); } else { cell.SetCellValue(0.00d); //填充Excel单元格 } continue; } else if ("nongyongdiarea".Equals(headers[j].key)) { if (string.IsNullOrEmpty(item.nongyongdiarea)) { objValue = item.nongyongdiarea; } else { objValue = double.Parse(item.nongyongdiarea).ToString("F2"); } var cell = dataRow.CreateCell(j); cell.CellStyle = numericStyle; if (objValue != null && !string.IsNullOrEmpty(objValue.ToString())) { cell.SetCellType(CellType.Numeric); cell.SetCellValue(double.Parse(objValue)); } else { cell.SetCellValue(0.00d); //填充Excel单元格 } continue; } else if ("shengtaibaohuhongxianarea".Equals(headers[j].key)) { if (string.IsNullOrEmpty(item.shengtaibaohuhongxianarea)) { objValue = item.shengtaibaohuhongxianarea; } else { objValue = double.Parse(item.shengtaibaohuhongxianarea).ToString("F2"); } var cell = dataRow.CreateCell(j); cell.CellStyle = numericStyle; if (objValue != null && !string.IsNullOrEmpty(objValue.ToString())) { cell.SetCellType(CellType.Numeric); cell.SetCellValue(double.Parse(objValue)); } else { cell.SetCellValue(0.00d); //填充Excel单元格 } continue; } else if ("isillegal".Equals(headers[j].key)) { if ("其他".Equals(item.isIllegal)) { objValue = item.isIllegal; if ("1".Equals(item.qitaUseTo)) { qitauseto = "不改变原用地性质的光伏用地"; } else if ("2".Equals(item.qitaUseTo)) { qitauseto = "设施农业用地"; } else if ("3".Equals(item.qitaUseTo)) { qitauseto = "农村道路"; } else if ("4".Equals(item.qitaUseTo)) { qitauseto = "实地未变化"; } else if ("5".Equals(item.qitaUseTo)) { qitauseto = "临时用地"; } else { item.actualUseTo = ""; } } else { objValue = item.isIllegal; } } else if ("handleStatusName".Equals(headers[j].key)) { objValue = item.handleStatusName; } else if ("jieshou_people".Equals(headers[j].key)) { objValue = item.jieshou_people; } else if ("jieshou_time".Equals(headers[j].key)) { if (string.IsNullOrEmpty(item.jieshou_time)) { objValue = item.jieshou_time; } else { DateTime dateValue2; DateTime.TryParse(item.jieshou_time, out dateValue2); objValue = dateValue2.ToString("yyyy-MM-dd HH:mm:ss"); } } else if ("xiangmumc".Equals(headers[j].key)) { objValue = item.xiangmumc; } else if ("xiangmuzhuti".Equals(headers[j].key)) { objValue = item.xiangmuzhuti; } else if ("actualUseTo".Equals(headers[j].key)) { if ("其他".Equals(item.isIllegal)) { if (string.IsNullOrEmpty(item.qitaUseTo)) { objValue = ""; } else { objValue = qitauseto; } } else { objValue = item.actualUseTo; } } else if ("weifaleixing".Equals(headers[j].key)) { objValue = item.weifaleixing; } else if ("pandingyijushuoming".Equals(headers[j].key)) { objValue = item.pandingyijushuoming; } else if ("examiner_name".Equals(headers[j].key)) { objValue = item.examiner_name; } else if ("examine_time".Equals(headers[j].key)) { if (item.examine_time.IsNullOrEmpty() || "0001-01-01 00:00:00".Equals(item.examine_time.ToString("yyyy-MM-dd HH:mm:ss"))) { objValue = ""; } else { objValue = item.examine_time.ToString("yyyy-MM-dd HH:mm:ss"); } } else if ("measureName".Equals(headers[j].key)) { objValue = item.measureName; } else if ("transactor_name".Equals(headers[j].key)) { objValue = item.transactor_name; } else if ("transact_time".Equals(headers[j].key)) { if (item.transact_time.IsNullOrEmpty() || "0001-01-01 00:00:00".Equals(item.transact_time.ToString("yyyy-MM-dd HH:mm:ss"))) { objValue = ""; } else { objValue = item.transact_time.ToString("yyyy-MM-dd HH:mm:ss"); } } else if ("remark".Equals(headers[j].key)) { objValue = item.remark; } else if ("xjshenhejieguo".Equals(headers[j].key)) { objValue = item.xjshenhejieguo; } else if ("sjshenhejieguo".Equals(headers[j].key)) { objValue = item.sjshenhejieguo; } else if ("xianjiyijian".Equals(headers[j].key)) { objValue = item.xianjiyijian; } else if ("shijiyijian".Equals(headers[j].key)) { objValue = item.shijiyijian; } else if ("verifyuser".Equals(headers[j].key)) { objValue = item.verifyuser; } else if ("hexiaoren".Equals(headers[j].key)) { objValue = item.hexiaoren; } else if ("verifytime".Equals(headers[j].key)) { if (item.verifytime.IsNullOrEmpty() || "0001-01-01 00:00:00".Equals(item.verifytime.ToString("yyyy-MM-dd HH:mm:ss"))) { objValue = ""; } else { objValue = item.verifytime.ToString("yyyy-MM-dd HH:mm:ss"); } } else if ("hexiaotime".Equals(headers[j].key)) { if (string.IsNullOrEmpty(item.hexiaotime)) { objValue = item.hexiaotime; } else { DateTime dateValue2; DateTime.TryParse(item.hexiaotime, out dateValue2); objValue = dateValue2.ToString("yyyy-MM-dd HH:mm:ss"); } } else if ("case_description".Equals(headers[j].key)) { objValue = item.case_description; } //创建单元格 dataRow.CreateCell(j); dataRow.Cells[j].CellStyle = style; //添加单元格样式 if (objValue != null && !string.IsNullOrEmpty(objValue.ToString())) { dataRow.Cells[j].SetCellValue(objValue.ToString()); //填充Excel单元格 } else { dataRow.Cells[j].SetCellValue(""); //填充Excel单元格 } } } #endregion response.Result = new MemoryStream(); workbook.Write(response.Result); workbook = null; response.Result.Close(); response.Result.Dispose(); response.Code = 200; response.Message = "获取成功"; } } catch (Exception ex) { response.Code = 500; response.Message = ex.Message; } return response; } public async Task>>> LoadCaseInfoIllegalList(CaseInfoTuBanReq req) { var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; RefAsync totalcount = 0; string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id; int level = client.Ado.GetInt(sql1); //该用户下包含所有部门 List deplist = new List(); string sqlpart = " "; if (user != null && user.Id != -1 && level != 0) { var departs = client.Queryable().Where(r => r.UserId == user.Id).ToList(); foreach (var item in departs) { var list = client.Queryable().ToChildList(it => it.ParentId, item.OrgId) ?.Select(it => it.Id.ToString()).ToList(); deplist = deplist.Union(list).ToList(); } string orgs = "\'" + string.Join("\',\'", deplist) + "\'"; sqlpart = $" and (countyid in ({orgs}) or streetid in ({orgs}) or communityid in ({orgs})) "; } string sql = $" select \"Id\",countyname,streetname,case_no as caseNo,createtime identificationTime,area,\r\n gengdi_area as gengdiArea,case when is_illegal=0 \r\n 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 \r\n then '非农化违法用地' when weifaleixing=1 then '非粮化违法用地' end as weifaleixing,illegal_contact as illegalContact,illegal_shenfenzhenghao as illegalShenfenzhenghao," + $"case when cast(measure_name AS numeric)=0 \r\n 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 " + $"\r\n from drone_caseinfo_single where 1=1 and is_illegal=1 "; if (req.year != 0) { sqlpart = sqlpart + $" and EXTRACT(YEAR FROM synchronoustime) = {req.year}"; } if (!string.IsNullOrEmpty(req.tubanlaiyuan)) { sqlpart = sqlpart + $" and tubanlaiyuan='" + req.tubanlaiyuan + "'"; } if (!string.IsNullOrEmpty(req.picihao)) { sqlpart = sqlpart + $" and picihao='" + req.picihao + "'"; } if (!string.IsNullOrEmpty(req.isBuildName)) { sqlpart = sqlpart + $" and is_build_name='" + req.isBuildName + "'"; } if (!string.IsNullOrEmpty(req.countyid)) { sqlpart = sqlpart + $" and countyid='" + req.countyid + "'"; } if (!string.IsNullOrEmpty(req.streetid)) { sqlpart = sqlpart + $" and streetid='" + req.streetid + "'"; } if (!string.IsNullOrEmpty(req.nowStatus)) { sqlpart = sqlpart + $" and handle_status_name='" + req.nowStatus + "'"; } if (!string.IsNullOrEmpty(req.caseNo)) { sqlpart = sqlpart + $" and case_no like '%" + req.caseNo + "%'"; } var info = await client.SqlQueryable(sql + sqlpart).ToPageListAsync(req.page, req.limit, totalcount); return new Response>> { Result = new PageInfo> { Items = info, Total = totalcount } }; } public Response> ExprotLoadCaseInfoIllegalList(CaseInfoTuBanReq req) { var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; RefAsync totalcount = 0; string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id; int level = client.Ado.GetInt(sql1); //该用户下包含所有部门 List deplist = new List(); string sqlpart = " "; if (user != null && user.Id != -1 && level != 0) { var departs = client.Queryable().Where(r => r.UserId == user.Id).ToList(); foreach (var item in departs) { var list = client.Queryable().ToChildList(it => it.ParentId, item.OrgId) ?.Select(it => it.Id.ToString()).ToList(); deplist = deplist.Union(list).ToList(); } string orgs = "\'" + string.Join("\',\'", deplist) + "\'"; sqlpart = $" and (countyid in ({orgs}) or c.streetid in ({orgs}) or c.communityid in ({orgs})) "; } string sql = $" select \"Id\",countyname,streetname,case_no as caseNo,createtime identificationTime,area,\r\n gengdi_area as gengdiArea,case when is_illegal=0 \r\n 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 \r\n then '非农化违法用地' when weifaleixing=1 then '非粮化违法用地' end as weifaleixing,illegal_contact as illegalContact,illegal_shenfenzhenghao as illegalShenfenzhenghao," + $"case when cast(measure_name AS numeric)=0 \r\n 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" + $"\r\n from drone_caseinfo_single where 1=1 is_illegal=1 "; if (req.year != 0) { sqlpart = sqlpart + $" and EXTRACT(YEAR FROM synchronoustime) = {req.year}"; } if (!string.IsNullOrEmpty(req.tubanlaiyuan)) { sqlpart = sqlpart + $" and tubanlaiyuan='" + req.tubanlaiyuan + "'"; } if (!string.IsNullOrEmpty(req.picihao)) { sqlpart = sqlpart + $" and picihao='" + req.picihao + "'"; } if (!string.IsNullOrEmpty(req.isBuildName)) { sqlpart = sqlpart + $" and is_build_name='" + req.isBuildName + "'"; } if (!string.IsNullOrEmpty(req.countyid)) { sqlpart = sqlpart + $" and countyid='" + req.countyid + "'"; } if (!string.IsNullOrEmpty(req.streetid)) { sqlpart = sqlpart + $" and streetid='" + req.streetid + "'"; } if (!string.IsNullOrEmpty(req.nowStatus)) { sqlpart = sqlpart + $" and handle_status_name='" + req.nowStatus + "'"; } if (!string.IsNullOrEmpty(req.caseNo)) { sqlpart = sqlpart + $" and case_no like '%" + req.caseNo + "%'"; } var info = client.Ado.SqlQuery(sql + sqlpart); Response> response = new Response>(); response.Result = info; return response; } public Response ListToExcelIllegal(List list, List headers) { Response response = new Response(); try { HSSFWorkbook workbook = new HSSFWorkbook(); #region 内容样式 IFont font1 = workbook.CreateFont(); //创建一个字体样式对象 font1.FontName = "Microsoft YaHei"; //和excel里面的字体对应 //font1.Boldweight = short.MaxValue;//字体加粗 font1.FontHeightInPoints = 12; //字体大小 ICellStyle style = workbook.CreateCellStyle(); //创建样式对象 style.BorderBottom = BorderStyle.Thin; style.BorderLeft = BorderStyle.Thin; style.BorderRight = BorderStyle.Thin; style.BorderTop = BorderStyle.Thin; style.Alignment = HorizontalAlignment.Center; style.VerticalAlignment = VerticalAlignment.Center; style.SetFont(font1); //将字体样式赋给样式对象 style.WrapText = true; #endregion #region 标题样式 IFont font = workbook.CreateFont(); //创建一个字体样式对象 font.FontName = "Microsoft YaHei"; //和excel里面的字体对应 font.Boldweight = (short)FontBoldWeight.Bold; //字体加粗 font.FontHeightInPoints = 12; //字体大小 ICellStyle style1 = workbook.CreateCellStyle(); //创建样式对象 style1.BorderBottom = BorderStyle.Thin; style1.BorderLeft = BorderStyle.Thin; style1.BorderRight = BorderStyle.Thin; style1.BorderTop = BorderStyle.Thin; style1.Alignment = HorizontalAlignment.Center; style1.VerticalAlignment = VerticalAlignment.Center; style1.SetFont(font); //将字体样式赋给样式对象 #endregion #region 创建表头 int m = list.Count / 60000 + 1; for (int k = 0; k < m; k++) { ISheet sheet = workbook.CreateSheet("Sheet" + k.ToString()); IRow rowHeader = sheet.CreateRow(0); rowHeader.Height = 20 * 30; for (int i = 0; i < headers.Count; i++) { ModuleColumn header = headers[i]; rowHeader.CreateCell(i); rowHeader.Cells[i].CellStyle = style1; rowHeader.Cells[i].SetCellValue(header.value); sheet.SetColumnWidth(i, 20 * 350); } #endregion #region 填充数据 var val = (k + 1) * 60000; var num = 60000; if (val > list.Count) { num = list.Count - k * 60000; } for (int i = 0; i < num; i++) //循环数据 { var item = list[k * 60000 + i]; //获取数据 IRow dataRow = sheet.CreateRow(i + 1); //创建行 for (int j = 0; j < headers.Count; j++) //循环表头 { var objValue = ""; if ("countyname".Equals(headers[j].key)) { objValue = item.countyname; } else if ("streetname".Equals(headers[j].key)) { objValue = item.streetname; } else if ("caseNo".Equals(headers[j].key)) { objValue = item.caseNo; } else if ("identificationTime".Equals(headers[j].key)) { objValue = item.identificationTime.ToString("yyyy-MM-dd HH:mm:ss"); } else if ("area".Equals(headers[j].key)) { objValue = item.area; } else if ("gengdiArea".Equals(headers[j].key)) { objValue = item.gengdiArea; } else if ("isillegal".Equals(headers[j].key)) { objValue = item.isIllegal; } else if ("handleStatusName".Equals(headers[j].key)) { objValue = item.handleStatusName; } else if ("xiangmumc".Equals(headers[j].key)) { objValue = item.xiangmumc; } else if ("xiangmuzhuti".Equals(headers[j].key)) { objValue = item.xiangmuzhuti; } else if ("weifaleixing".Equals(headers[j].key)) { objValue = item.weifaleixing; } else if ("measureName".Equals(headers[j].key)) { objValue = item.measureName; } else if ("resultName".Equals(headers[j].key)) { objValue = item.resultName; } else if ("registrNumber".Equals(headers[j].key)) { objValue = item.registrNumber; } else if ("illegalContact".Equals(headers[j].key)) { objValue = item.illegalContact; } else if ("illegalShenfenzhenghao".Equals(headers[j].key)) { objValue = item.illegalShenfenzhenghao; } //创建单元格 dataRow.CreateCell(j); dataRow.Cells[j].CellStyle = style; //添加单元格样式 if (objValue != null && !string.IsNullOrEmpty(objValue.ToString())) { dataRow.Cells[j].SetCellValue(objValue.ToString()); //填充Excel单元格 } else { dataRow.Cells[j].SetCellValue(""); //填充Excel单元格 } } } } #endregion response.Result = new MemoryStream(); workbook.Write(response.Result); workbook = null; response.Result.Close(); response.Result.Dispose(); response.Code = 200; response.Message = "获取成功"; } catch (Exception ex) { response.Code = 500; response.Message = ex.Message; } return response; } public string getShpDataInfo(QueryShpDataInfo shpDataInfo) { /* string sql = "SELECT ST_AsText(ST_Centroid(geom)) FROM drone_shp_data where gid =" + shpDataInfo.gid; string point = client.Ado.GetString(sql); string[] lat = point.Replace("POINT(", "").Replace(")", "").Split(" "); double maxLat = double.Parse(lat[0]) + 0.5; double mixLat = double.Parse(lat[0]) - 0.5; double maxLng = double.Parse(lat[1]) + 0.4; double minLng = double.Parse(lat[1]) - 0.4;*/ // string bbox = mixLat + "," + minLng + "," + maxLat + "," + maxLng; /* string bbox = "118.098230269564,34.5705540674492,118.108435854995,34.579809145669"; string layers = StringUtil.Join(shpDataInfo.layers, ","); string url = "http://192.168.10.132:8080/geoserver/ne/wms?service=WMS&version=1.1.0&request=GetMap&layers="; url = url + layers + "&CQL_FILTER =INCLUDE;" + "case_no=" + shpDataInfo.relid + "&bbox=" + bbox + "&width=768&height=646&srs=EPSG:4326&format=image/png&TRANSPARENT=TRUE"; Console.WriteLine(url); // string url1 = "http://60.213.14.14:8060/geoserver/feixian/wms?service=WMS&version=1.1.0&request=GetMap&layers=feixian:images,feixian:zhenjie,feixian:anjianjilu&CQL_FILTER=Name=%27%E5%88%98%E6%B4%8B%27;INCLUDE;streetid=%27c0069852-a10c-4017-b8da-3386c165968e%27&bbox=117.607435742,35.02093722300003,118.23673036800008,35.55038089100005&width=768&height=646&srs=EPSG:4326&format=image/png&TRANSPARENT=TRUE"; var draftResult = url.GetAsync().Result; byte[] img = draftResult.GetBytesAsync().Result; MemoryStream memStream = new MemoryStream(img); Image imge = Image.FromStream(memStream); imge.Save("D:/fwtool/" + "abc.png");*/ return ""; } private ISugarQueryable QueryCaseInfoSingleList(SqlSugarClient db, QueryCaseInfoListReq req, SysUser user, int? is_order = 1, List roles = null) { DateTime? threeTime = DateTime.Now.AddDays(-3); DateTime? sevenTime = DateTime.Now.AddDays(-7); //查询用户角色绑定的流程有哪些 var flowList = new List(); var flowSorts = new List(); var roleNameList = new List(); //查询部门及下级部门 var orgid = db.Queryable().ToChildList(a => a.ParentId, req.countyid).Select(a => a.Id.ToString()) .ToList(); if (roles != null && req.is_verify_filter != null) { flowList = db.Queryable() .Where(c => roles.Contains(c.SecondId) && c.Key == Define.FLOW_ROLE).Select(c => c.FirstId).ToList(); //查询用户绑定的流程Sort flowSorts = db.Queryable() .Where(c => flowList.Contains(c.Id) && c.status == 0 && c.instance_name == "CaseVerify") .Select(c => c.sort).ToList(); roleNameList = db.Queryable().Where(c => roles.Contains(c.Id.ToString())).Select(c => c.Name) .ToList(); } //待优化 var casetype = db.Queryable() .LeftJoin((a, b) => a.FirstId == b.FirstId) .LeftJoin((a, b, c) => b.SecondId == c.RoleId.ToString()) .Where((a, b, c) => c.UserId == user.Id && a.Key == Define.TOPIC_CASETYPE && b.Key == Define.TOPIC_ROLE) .Select(a => a.SecondId).Distinct().ToList(); var query = db.Queryable().Where(c => c.is_delete == 0 || c.is_delete == null) //关键字过滤数据 .WhereIF(!string.IsNullOrEmpty(req.key), c => c.case_no.Contains(req.key) || c.case_name.Contains(req.key) || c.case_description.Contains(req.key)) //是否完整:判读页面 用来查看是否已判读的 .WhereIF(req.is_intact != null && req.is_intact != 0, c => c.is_intact == req.is_intact) .WhereIF(req.is_intact == 0, c => c.is_intact == null || c.is_intact == 0) //上报人 .WhereIF(req.is_reporter == 1 && user.Account != Define.SYSTEM_USERNAME, c => c.createuser == user.Id.ToString()) //处理人:相当于 局管理员和乡镇管理员用 .WhereIF(req.is_dealer == 1 && user.Account != Define.SYSTEM_USERNAME, c => SqlFunc.Subqueryable() .Where(it => it.OrgId.ToString() == c.communityid && it.UserId == user.Id).Any() || SqlFunc.Subqueryable() .Where(it => it.OrgId.ToString() == c.streetid && it.UserId == user.Id).Any() || SqlFunc.Subqueryable() .Where(it => it.OrgId.ToString() == c.countyid && it.UserId == user.Id).Any() || c.createuser == user.Id.ToString()) //执行人过滤:相当于 执法人员用 .WhereIF(req.dispense_dealer == 1 && user.Account != Define.SYSTEM_USERNAME, c => SqlFunc.Subqueryable().Where(it => it.SecondId == c.Id && it.Key == Define.USERDRONECASE && it.FirstId == user.Id.ToString()).Any()) ////专题权限过滤 //.WhereIF(req.is_dealer == 1 && user.Account != Define.SYSTEM_USERNAME, c => (SqlFunc.Subqueryable() // .Where(dr2 => SqlFunc.Subqueryable() // .Where(dr1 => SqlFunc.Subqueryable() // .Where(sur => sur.UserId == user.Id) // .Select(sur => sur.RoleId.ToString()) // .Contains(dr1.SecondId) && dr1.Key == Define.TOPIC_ROLE).Select(dr1 => dr1.FirstId) // .Contains(dr2.FirstId) && dr2.Key == Define.TOPIC_CASETYPE).Select(dr2 => dr2.SecondId)).Contains(c.typeid)) //专题权限过滤 .WhereIF(req.is_dealer == 1 && user.Account != Define.SYSTEM_USERNAME, c => casetype.Contains(c.typeid)) //分发状态:乡镇管理员用来查是否分发的 .WhereIF(req.is_dispense == 0, c => c.is_dispense == null || c.is_dispense == 0) .WhereIF(req.is_dispense == 1, c => c.is_dispense == 1) //处理状态:未办理、办理中、已办结 .WhereIF(req.handle_status_id != null, c => c.handle_status_id == req.handle_status_id) //案件状态 .WhereIF(!string.IsNullOrEmpty(req.case_status_id), c => c.case_status_id == req.case_status_id) //开始时间 .WhereIF(req.report_start_time != null, c => c.createtime >= req.report_start_time) //结束时间 .WhereIF(req.report_end_time != null, c => c.createtime <= req.report_end_time) //上报人 .WhereIF(!string.IsNullOrEmpty(req.report_name), c => c.createusername.Contains(req.report_name)) //执行人 .WhereIF(!string.IsNullOrEmpty(req.deal_username), c => c.deal_username.Contains(req.deal_username)) //判读开始时间 .WhereIF(req.identification_start_time != null, c => c.identification_time >= req.identification_start_time) //判读结束时间 .WhereIF(req.identification_end_time != null, c => c.identification_time <= req.identification_end_time) //县id .WhereIF(!string.IsNullOrEmpty(req.countyid), c => orgid.Contains(c.countyid) || orgid.Contains(c.streetid) || orgid.Contains(c.communityid)) ////镇id //.WhereIF(!string.IsNullOrEmpty(req.countyid), c => orgid.Contains(c.streetid)) ////村id //.WhereIF(!string.IsNullOrEmpty(req.countyid), c => orgid.Contains(c.communityid)) //判读人id .WhereIF(!string.IsNullOrEmpty(req.identification_userid), c => c.identification_userid == req.identification_userid) //判读人 .WhereIF(!string.IsNullOrEmpty(req.identification_user), c => c.identification_user.Contains(req.identification_user)) //判读人账号 .WhereIF(!string.IsNullOrEmpty(req.identification_account), c => SqlFunc.Subqueryable().Where(it => c.identification_userid == it.Id.ToString() && it.Account == req.identification_account).Any()) //审核人 .WhereIF(!string.IsNullOrEmpty(req.verify_user), c => c.verifyuser.Contains(req.verify_user)) //是否违法 .WhereIF(req.is_illegal != null, c => c.is_illegal == req.is_illegal) //是否核销 //.WhereIF(req.is_verification == 1, c => c.is_verification == req.is_verification) //.WhereIF(req.is_verification == 0, c => c.is_verification == null || c.is_verification == 0) //是否退回 .WhereIF(req.is_drawback == 0, c => c.is_drawback == null || c.is_drawback == 0) .WhereIF(req.is_drawback == 1, c => c.is_drawback == 1) //是否根据退回给谁过滤 //.WhereIF(req.is_back_to_userid == 1, c => c.back_to_userid == user.Id.ToString()) //是否核查过滤 //.WhereIF(req.is_examine == 0, c => c.is_examine == null || c.is_examine == 0) //.WhereIF(req.is_examine == 1, c => c.is_examine == 1) //处理措施 .WhereIF(!string.IsNullOrEmpty(req.measure_name), c => c.measure_name == req.measure_name) //处理措施 .WhereIF(req.measure_name_type == 0, c => c.measure_name == "拟拆除") .WhereIF(req.measure_name_type == 1, c => c.measure_name == "查处") .WhereIF(req.measure_name_type == 2, c => c.measure_name == "拟完善手续") //工作区过滤 .WhereIF(!string.IsNullOrEmpty(req.work_area_name), c => SqlFunc.Subqueryable() .Where(it => it.Id.ToString() == c.communityid && it.CustomCode == req.work_area_name).Any()) //审核权限过滤 .WhereIF(req.is_verify_filter == 1, c => flowSorts.Contains(c.verifystatus) && roleNameList.Contains("案件审核")) .WhereIF(req.is_verify_filter == 0, c => !flowSorts.Contains(c.verifystatus)) /* * 统计相关用到的过滤条件 */ //超期时间标识 .WhereIF(req.out_time_flag == 1, c => c.identification_time >= threeTime) //1-3天 .WhereIF(req.out_time_flag == 2, c => c.identification_time < threeTime && c.identification_time > sevenTime) //3-7天 .WhereIF(req.out_time_flag == 3, c => c.identification_time < sevenTime) //7天以上 .WhereIF(req.out_time_flag == 4, c => c.identification_time > DateTime.Now.AddDays(-30) && c.identification_time < DateTime.Now.AddDays(-7)) //30天内 .WhereIF(req.out_time_flag == 5, c => c.identification_time < DateTime.Now.AddDays(-30)) //30天以上 //是否处理 //.WhereIF(req.is_deal == 1, c => c.handle_status_id != 0 || (c.handle_status_id == 0 && c.is_examine == 1)) //是否整改完成 .WhereIF(req.is_complete == 0, c => c.handle_status_id != 2) //24小时未核查 // .WhereIF(req.is_not_deal_hour24 == 1, c => c.handle_status_id == 0 && (c.is_examine == null || c.is_examine == 0) && c.identification_time < DateTime.Now.AddDays(-1)) //村名称 .WhereIF(!string.IsNullOrEmpty(req.communityname), c => c.communityname.Contains(req.communityname)) //案件编号 .WhereIF(!string.IsNullOrEmpty(req.case_no), c => c.case_no.Contains(req.case_no)) //案件类型 .WhereIF(!string.IsNullOrEmpty(req.typeid), c => c.typeid == req.typeid) //地址 .WhereIF(!string.IsNullOrEmpty(req.address), c => c.address.Contains(req.address)) //案件描述 .WhereIF(!string.IsNullOrEmpty(req.case_description), c => c.case_description.Contains(req.case_description)); if (!string.IsNullOrEmpty(req.work_area_name)) { var orgList = db.Queryable().Where(c => c.CustomCode == req.work_area_name).Select(c => c.Id) .ToList(); } //标签检索 if (!string.IsNullOrEmpty(req.tagids)) { var tags = req.tagids.Trim().Split(",").ToList(); var ids = db.Queryable().Where(a => req.tagids.Contains(a.tagid)).Select(a => a.caseid) .ToList(); query = query.Where(c => ids.Contains(c.Id)); } //排序 if (is_order == 1) { if (req.is_intact == 1 && req.handle_status_id == 0) query = query.OrderBy(c => c.identification_time, OrderByType.Desc); else if (req.is_intact == 1 && req.handle_status_id == 1) query = query.OrderBy(c => c.deal_time, OrderByType.Desc); else if (req.is_intact == 1 && req.handle_status_id == 2) query = query.OrderBy(c => c.verifytime, OrderByType.Desc); else query = query.OrderBy(c => c.createtime, OrderByType.Desc); } return query; } public async Task>> Test(int year, string tubanlaiyuan, string picihao, int illegal) { //获取当前用户 var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; var orgList = authStrategyContext.Orgs; var leafNode = new List(); // 统计该区划下数据 计算那些祖先节点不存在于列表中的 var isCity = 0; // isCity 等于1时,查询全市区数据 if (user.Id == -1) { isCity = 1; } else { foreach (var sysOrg in orgList) { if (sysOrg.ParentId == 0) // 该节点是临沂市 { isCity = 1; orgList = orgList.Where(t => t.ParentId.Equals(sysOrg.Id)).ToList(); // 跳出for循环 break; } var ids = sysOrg.CascadeId.Split("."); // 排队自身 if (orgList.Any(org => org.Id != sysOrg.Id && ids.Contains(org.Id.ToString()))) { leafNode.Add(sysOrg); } } if (isCity != 1) // 顶级节点 { orgList = orgList.Except(leafNode).ToList(); } } var orgIds = orgList.Select(x => x.Id.ToString()).ToList(); var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoSchemeCode").Value; // 查询数据 var dateTime = year == 0 ? DateTime.Now : new DateTime(year, 1, 1); DateTime time1 = DateTime.Now; var query = client.Queryable() .LeftJoin((t, p) => t.ProcessId == p.Id) .LeftJoin((t, p, c) => p.Id == c.Id) .Where((t, p, c) => SqlFunc.DateIsSame((DateTime)c.synchronoustime, dateTime, DateType.Year)) .Where((t, p, c) => c.countyid != null) .Where((t, p, c) => c.is_closed.Equals(0)) .Where((t, p, c) => p.SchemeCode.Equals(schemeCode)) .WhereIF(!string.IsNullOrEmpty(tubanlaiyuan), (t, p, c) => c.tubanlaiyuan.Equals(tubanlaiyuan)) .WhereIF(!string.IsNullOrEmpty(picihao), (t, p, c) => c.tubanlaiyuan.Equals(picihao)) .WhereIF(isCity == 0, (t, p, c) => orgIds.Contains(c.countyid) || orgIds.Contains(c.streetid) || orgIds.Contains(c.communityid)); // todo 判断当前用户是市级人员还是县级人员 市级待核销任务 县级审核任务 // 县级待审核,市级,待销号 县级, (待核销+已核销)/总数 市级,已核销/总数 // 查询信息包含 区划 任务id 督办时间 ,案件部门信息 is_illegal weifaleixing measure_name // 如果是市级是不是查整个人临沂市的数据 // 返回 level areaid areaname var dataList = new List(); // 取得所有区县或乡镇信息 // //合法:已经归档的合法案件 is_illegal //违法:已经归档的违法案件,未归档的案件 is_illegal //其他:已经归档的其他案件 is_illegal //非粮化:已经归档的非粮化 weifaleixing //补办手续:已经归档的补办手续 measure_name //拆除拆除复耕:已经归档的拆除 measure_name if (isCity == 1) { var groupDataList = await query.GroupBy((t, p, c) => new { c.countyid, c.countyname }).Select((t, p, c) => new { c.countyid, c.countyname, list = SqlFunc.Subqueryable() .LeftJoin((s, f) => s.Id == f.ProcessId) .Where(s => s.countyid == c.countyid).ToList((s, f) => new ExamineItemResponse { taskid = f.Id, taskstatus = f.State, unitname = f.UnitName, // 初审(待审核) 复审(待销号) isouttime = f.IsOutTime, // 0未超期,1超期,2严重超期 isbuildingname = s.is_build_name, // 标注类型 在建 已建成 持续变化 isillegal = s.is_illegal, // 0-合法,1-违法,2-其他 caseno = s.case_no, countyname = s.countyname, countyid = s.countyid, streetname = s.streetname, streatid = s.streetid, receive = s.is_jieshou, isclosed = s.is_closed, issplit = s.is_split, illegaltype = s.weifaleixing, // 违法类型 0非农化1非粮化 measurename = s.measure_name, // 整改措施(0拆除复耕1补办手续 handstatusid = s.handle_status_id, // 5 已归档 handstatusname = s.handle_status_name // 4. 待核销 5. 已 }) }).ToListAsync(); DateTime time2 = DateTime.Now; Console.WriteLine("groupby:" + (time2 - time1).TotalMilliseconds / 1000); foreach (var grouping in groupDataList) { dynamic item = new ExpandoObject(); item.level = 1; item.areaid = grouping.countyid; // 区划id item.areaname = grouping.countyname; // 区划名称 // 任务总数 string sql = $"select \"SortNo\" from sys_org where \"Id\"=" + grouping.countyid; var sortNo = client.Ado.GetInt(sql); item.sortno = sortNo; item.totaltask = grouping.list.GroupBy(t => t.caseno).Count(); // 接收案件任务 item.receivetask = grouping.list.Where(t => t.receive.Equals(1) && t.isclosed.Equals(0)) .GroupBy(t => t.caseno).Count(); // 处理状态 0待接收1待判定2待整改3县级审核4市级审核5已归档 // 已核销任务数 item.verificatedtask = grouping.list.Where(t => t.handstatusid != null && t.handstatusid.Equals(5)).GroupBy(t => t.caseno) .Count(); // // 超期任务数 item.overduetask = grouping.list.Where(t => t.handstatusid != null && t.handstatusid.Equals(5)).Where( t => (t.isouttime != null && t.isouttime.Equals(1)) || (t.isouttime != null && t.isouttime.Equals(2))) .GroupBy(t => t.caseno).Count(); // 待核销任务数 item.verifytask = grouping.list .WhereIF(illegal != 0, t => t.isillegal.Equals(0) || t.isillegal.Equals(2) || (t.isillegal.Equals(1) && t.illegaltype.Equals(1))) // 审核监督(填报审核) .WhereIF(illegal == 0, t => t.isillegal.Equals(1) && t.illegaltype.Equals(0)) // 整改审核 .Where(t => t.unitname != null && t.unitname.Equals("市级审核") && t.taskstatus != null && t.taskstatus.Equals(1)).GroupBy(t => t.caseno).Count(); //合法案件 item.legalcase = grouping.list.Where(t => t.isillegal != null && t.isillegal.Equals(0) && t.handstatusid != null && t.handstatusid.Equals(5)).GroupBy(t => t.caseno).Count(); // 其它案件 item.ilegalcase = grouping.list.Where(t => t.isillegal != null && t.isillegal.Equals(2) && t.handstatusid != null && t.handstatusid.Equals(5)) .GroupBy(t => t.caseno).Count(); // 非粮化 item.nonfoodcase = grouping.list.Where(t => t.isillegal != null && t.isillegal.Equals(1) && t.illegaltype != null && t.illegaltype.Equals(1) && t.handstatusid != null && t.handstatusid.Equals(5)).GroupBy(t => t.caseno).Count(); // 补办手续 整改措施(0拆除复耕1补办手续) item.makeupcase = grouping.list.Where(t => t.handstatusid != null && t.handstatusid.Equals(5) && t.isillegal != null && t.isillegal.Equals(1) && t.measurename != null && t.measurename.Equals("1")) .GroupBy(t => t.caseno) .Count(); // 复耕 item.rehabilitationcase = grouping.list.Where(t => t.handstatusid != null && t.handstatusid.Equals(5) && t.isillegal != null && t.isillegal.Equals(1) && t.measurename != null && t.measurename.Equals("0")) .GroupBy(t => t.caseno) .Count(); // 市级,已核销/总数 // 县级(待审核) 市级(待销号) dataList.Add(item); } DateTime time3 = DateTime.Now; Console.WriteLine("统计时间:" + (time3 - time2).TotalMilliseconds / 1000); dataList = dataList.OrderBy(a => a.sortno).ToList(); } else { var groupDataList = await query.GroupBy((t, p, c) => new { c.streetid, c.streetname }).Select((t, p, c) => new { c.streetid, c.streetname, list = SqlFunc.Subqueryable() .LeftJoin((s, f) => s.Id == f.ProcessId) .Where(s => s.streetid == c.streetid).ToList((s, f) => new ExamineItemResponse { taskid = f.Id, taskstatus = f.State, unitname = f.UnitName, // 初审(待审核) 复审(待销号) isouttime = f.IsOutTime, // 0未超期,1超期,2严重超期 isbuildingname = s.is_build_name, // 标注类型 在建 已建成 持续变化 isillegal = s.is_illegal, // 0-合法,1-违法,2-其他 caseno = s.case_no, countyname = s.countyname, countyid = s.countyid, streetname = s.streetname, streatid = s.streetid, receive = s.is_jieshou, isclosed = s.is_closed, issplit = s.is_split, illegaltype = s.weifaleixing, // 违法类型 0非农化1非粮化 measurename = s.measure_name, // 整改措施(0拆除复耕1补办手续 handstatusid = s.handle_status_id, // 5 已归档 handstatusname = s.handle_status_name // 4. 待核销 5. 已 }) }).ToListAsync(); foreach (var grouping in groupDataList) { dynamic item = new ExpandoObject(); item.level = 2; item.areaid = grouping.streetid; // 区划id item.areaname = grouping.streetname; // 区划名称 item.totaltask = grouping.list.GroupBy(t => t.caseno).Count(); // 任务总数 // 接收案件任务 item.receivetask = grouping.list.Where(t => t.receive.Equals(1)).GroupBy(t => t.caseno).Count(); // 处理状态 0待接收1待判定2待整改3县级审核4市级审核5已归档 // 已核销任务数 item.verificatedtask = grouping.list.Where(t => t.handstatusid != null && t.handstatusid.Equals(5)).GroupBy(t => t.caseno) .Count(); // // 超期任务数 item.overduetask = grouping.list.Where(t => (t.isouttime != null && t.isouttime.Equals(1)) || (t.isouttime != null && t.isouttime.Equals(2))) .GroupBy(t => t.caseno).Count(); // 待审核任务数 item.verifytask = grouping.list .Where(t => t.unitname != null && t.unitname.Equals("县级审核") && t.taskstatus != null && t.taskstatus.Equals(1)) .WhereIF(illegal != 0, t => t.isillegal.Equals(0) || t.isillegal.Equals(2) || (t.isillegal.Equals(1) && t.illegaltype.Equals(1))) // 审核监督 .WhereIF(illegal == 0, t => t.isillegal.Equals(1) && t.illegaltype.Equals(0)) // 违法 .GroupBy(t => t.caseno).Count(); //合法案件 item.legalcase = grouping.list.Where(t => t.isillegal != null && t.isillegal.Equals(0) && t.handstatusid != null && t.handstatusid.Equals(5)).GroupBy(t => t.caseno).Count(); // 其它案件 item.ilegalcase = grouping.list.Where(t => t.isillegal != null && t.isillegal.Equals(2) && t.handstatusid != null && t.handstatusid.Equals(5)) .GroupBy(t => t.caseno).Count(); // 非粮化 item.nonfoodcase = grouping.list.Where(t => t.isillegal != null && t.isillegal.Equals(1) && t.illegaltype != null && t.illegaltype.Equals(1) && t.handstatusid != null && t.handstatusid.Equals(5)).GroupBy(t => t.caseno).Count(); // 补办手续 item.makeupcase = grouping.list.Where(t => t.handstatusid != null && t.handstatusid.Equals(5) && t.isillegal != null && t.isillegal.Equals(1) && t.measurename != null && t.measurename.Equals("1")) .GroupBy(t => t.caseno) .Count(); // 复耕 item.rehabilitationcase = grouping.list.Where(t => t.handstatusid != null && t.handstatusid.Equals(5) && t.isillegal != null && t.isillegal.Equals(1) && t.measurename != null && t.measurename.Equals("0")) .GroupBy(t => t.caseno) .Count(); dataList.Add(item); } } Console.WriteLine("统计计算结束时间:" + DateTime.Now.ToString()); return new Response> { Result = dataList }; } public async Task>>> LoadCaseInfoCheckTuBanList(CaseInfoTypeName req) { var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; RefAsync totalcount = 0; string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id; int level = client.Ado.GetInt(sql1); //该用户下包含所有部门 List deplist = new List(); string sqlpart = " "; if (user != null && user.Id != -1 && level != 0) { var departs = client.Queryable().Where(r => r.UserId == user.Id).ToList(); foreach (var item in departs) { var list = client.Queryable().ToChildList(it => it.ParentId, item.OrgId) ?.Select(it => it.Id.ToString()).ToList(); deplist = deplist.Union(list).ToList(); } string orgs = "\'" + string.Join("\',\'", deplist) + "\'"; sqlpart = $" and (countyid in ({orgs}) or streetid in ({orgs}) or communityid in ({orgs})) "; } string sql = $"select case when a.\"Id\" is not null then '复提' when b.\"Id\" is null and is_closed=0 then '待审核' when b.\"Id\" is not null and is_closed=0 then '已审核' \r\nwhen is_closed=1 then '已关闭' end as checkStatus ," + $"a.\"Id\" as retributeId,c.\"Id\",c.case_no,case_description,typename,countyname,streetname,communityname,identification_user,identification_time,createtime,c.original_case_no,is_closed," + $"b.\"Id\" as processid, c.geomid from drone_caseinfo_single c LEFT JOIN wf_process b on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" LEFT JOIN drone_resubmit a on a.\"CaseNo\"=c.original_case_no and a.\"SubjectKey\"='" + TubanZhuanTi.weifayongdi + "' where 1=1 "; if (!string.IsNullOrEmpty(req.typename)) { sqlpart = sqlpart + $" and typename='" + req.typename + "'"; } if (!string.IsNullOrEmpty(req.countyid)) { sqlpart = sqlpart + $" and countyid='" + req.countyid + "'"; } if (!string.IsNullOrEmpty(req.streetid)) { sqlpart = sqlpart + $" and streetid='" + req.streetid + "'"; } if (!string.IsNullOrEmpty(req.communityid)) { sqlpart = sqlpart + $" and communityid='" + req.communityid + "'"; } if (!string.IsNullOrEmpty(req.nowStatus)) { if ("待审核".Equal(req.nowStatus)) { sqlpart = sqlpart + $" and b.\"Id\" is null and is_closed=0 and a.\"Id\" is null"; } else if ("已审核".Equal(req.nowStatus)) { sqlpart = sqlpart + $" and b.\"Id\" is not null and is_closed=0"; } else if ("已关闭".Equal(req.nowStatus)) { sqlpart = sqlpart + $" and is_closed=1"; } else if ("复提".Equal(req.nowStatus)) { sqlpart = sqlpart + $" and a.\"Id\" is not null and is_closed=0"; } else if ("复提待审核".Equal(req.nowStatus)) { sqlpart = sqlpart + $" and ( b.\"Id\" is null and is_closed=0 or a.\"Id\" is not null) "; } } if (!string.IsNullOrEmpty(req.caseNo)) { sqlpart = sqlpart + $" and c.case_no like '%" + req.caseNo + "%'"; } if (!string.IsNullOrEmpty(req.originalCaseNo)) { sqlpart = sqlpart + $" and c.original_case_no like '%" + req.originalCaseNo + "%'"; } sqlpart += $" ORDER BY createtime desc"; Console.WriteLine(sql + sqlpart); var info = await client.SqlQueryable(sql + sqlpart).ToPageListAsync(req.page, req.limit, totalcount); return new Response>> { Result = new PageInfo> { Items = info, Total = totalcount } }; } #region 案件关闭 /// /// 关闭案件 /// /// 案件id /// public async Task> CloseSingleCaseInfo(string id, string closereason) { var user = _auth.GetCurrentUser().User; using (var uow = base.UnitWork.CreateContext()) { var info = client.Queryable().Where(r => r.Id == id).First(); await uow.DroneCaseInfoSingle.UpdateAsync(c => new DroneCaseInfoSingle() { is_closed = 1, is_intact = 99, close_time = DateTime.Now, close_user = user.Name, close_userid = user.Id.ToString(), close_reason = closereason }, c => c.Id == id); var flag = uow.Commit(); var flags = flag; //更新航飞库数据 //if (info != null && !string.IsNullOrEmpty(info.original_case_no)) //{ // var param = new // { // CaseNo = info.original_case_no, // Reason = closereason // }; // var url = _configuration.GetSection("AppSetting:ResubmitUrl").Value; // var apiUrl = url + "api/DroneCaseinfo/CloseCaseInfo"; // var urlflag = await HttpMethods.Post(apiUrl, Json.ToJson(param)); // var reslut = (JObject)JsonConvert.DeserializeObject(urlflag); // flags = flag && (bool)reslut["result"]; //} if (flags) { return new Response { Result = true, Message = "关闭成功" }; } else { return new Response { Code = 500, Result = false, Message = "关闭失败" }; } } } #endregion public DroneCaseInfoSingle GetCaseInfoById1(string caseId) { return Repository.AsSugarClient().Queryable().InSingle(caseId); } public bool TempToNonGrain() { var user = _auth.GetCurrentUser(); Console.WriteLine("=============================================="); // 取得案件信息 var caseList = Repository.AsSugarClient().Queryable() .Where(a => a.is_closed.Equals(0)) .Where(a => a.weifaleixing.Equals(1)) .Where(a => a.handle_status_id.Equals(5)) .Where(a => a.handle_status_name.Equals("已归档")) .Where(a => !string.IsNullOrEmpty(a.gengdi_area) && double.Parse(a.gengdi_area) > 0) .Where(a => a.is_illegal.Equals(1)).ToList(); foreach (var originCaseInfo in caseList) { // 违法用地专题判断违法+非粮化+已归档+耕地不为0的图斑 // 非粮化案件信息 var nonGrainCaseInfo = originCaseInfo.MapTo(); // todo 接收时间如何做 nonGrainCaseInfo.jieshou_time = null; var newProcessId = Guid.NewGuid().ToString(); nonGrainCaseInfo.Id = newProcessId; nonGrainCaseInfo.handle_status_id = 2; nonGrainCaseInfo.handle_status_name = "待整改"; // 去掉字段 /*nonGrainCaseInfo.verifytime = null; nonGrainCaseInfo.verifyuser = null; nonGrainCaseInfo.verifyuserid = null; nonGrainCaseInfo.verifytime = null; nonGrainCaseInfo.verifystatus = null; nonGrainCaseInfo.hexiaotime = null; nonGrainCaseInfo.is_drawback = null;*/ //nonGrainCaseInfo.is_shijibohui = null; //nonGrainCaseInfo.xianjiyijian = null; //nonGrainCaseInfo.hexiaotime = null; //nonGrainCaseInfo.hexiaoren = null; //nonGrainCaseInfo.is_illegal = 0; } Console.WriteLine("=============================================="); return true; } public List ListAllNonGrainCase() { return Repository.AsSugarClient().Queryable() .Where(a => a.is_closed.Equals(0)) .Where(a => a.weifaleixing.Equals(1)) .Where(a => a.handle_status_id.Equals(5)) .Where(a => a.handle_status_name.Equals("已归档")) .Where(a => !string.IsNullOrEmpty(a.gengdi_area) && double.Parse(a.gengdi_area) > 0) .Where(a => a.is_illegal.Equals(1)).ToList(); } public List GetShpData(string geomid) { var gids = geomid.Split(",").Select(int.Parse).ToList(); return Repository.ChangeRepository>().AsSugarClient() .Queryable().Where(a => gids.Contains(a.gid)).ToList(); } public void SaveShpData(DroneShpData shp) { using var db = Repository.AsSugarClient(); db.Insertable(shp).ExecuteCommand(); } public void ExportApprovalCaseInfoShapefile(CaseInfoTypeName req, string shpFilePath, string shpFilePathzip) { // todo 优化 ,2 条件未生效 var response = LoadCaseInfoCheckList(req).Result.Result; // todo 修改实体 List list = new List(); for (int i = 0; i < response.Count; i++) { var caseinfo = response[i]; if (!string.IsNullOrEmpty(caseinfo.geomid)) { list.Add(caseinfo); } } List gids = list.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 == 0) { throw new Exception("无匹配数据"); } string gidsString = string.Join(",", gids); //string query = $"SELECT a.gid, ST_AsText(a.geom) AS geom,b.tubanlaiyuan,b.case_no,b.countyname,b.streetname,b.communityname FROM drone_shp_data a left join drone_caseinfo_single b on a.relid=b.\"Id\" 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,createtime,synchronoustime,tubanlaiyuan,ST_AsText(geom) AS geom FROM view_drone_caseinfo_shp WHERE gid IN ({gidsString})"; // 执行查询 var data = client.Ado.SqlQuery(query); if (data == null || data.Count == 0) { throw new Exception("暂无数据"); } List features = new List(); foreach (var row in data) { var geometry = ParseGeometry(row.geom); if (geometry == null) { throw new Exception("数据不可用"); } // 原始图斑编号 //图斑编号 图斑描述 //图斑类型 // 县 //镇 // 判读人 //判读时间 // 状态 var attributes = new AttributesTable { { "gid", row.gid }, { "图斑编号", row.case_no == null ? "" : row.case_no }, { "当前状态", row.handle_status_name == null ? "" : row.handle_status_name }, { "判读状态", row.is_intact_name == null ? "" : row.is_intact_name }, { "图斑类型", row.typename == null ? "" : row.typename }, { "判定结果", row.is_illegal_name == null ? "" : row.is_illegal_name }, { "图斑面积(亩)", row.area == null ? "" : row.area }, { "耕地面积", row.gengdi_area == null ? "" : row.gengdi_area }, { "永农面积", row.yongjiujibennongtian_area == null ? "" : row.yongjiujibennongtian_area }, { "项目名称", row.xiangmumc == null ? "" : row.xiangmumc }, { "违法类型", row.weifaleixing == null ? "" : row.weifaleixing.ToString() }, { "处理措施", 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 async Task>> LoadCaseInfoCheckList(CaseInfoTypeName req) { var authStrategyContext = _auth.GetCurrentUser(); var user = authStrategyContext.User; string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id; int level = client.Ado.GetInt(sql1); //该用户下包含所有部门 List deplist = new List(); string sqlpart = " "; if (user != null && user.Id != -1 && level != 0) { var departs = client.Queryable().Where(r => r.UserId == user.Id).ToList(); foreach (var item in departs) { var list = client.Queryable().ToChildList(it => it.ParentId, item.OrgId) ?.Select(it => it.Id.ToString()).ToList(); deplist = deplist.Union(list).ToList(); } string orgs = "\'" + string.Join("\',\'", deplist) + "\'"; sqlpart = $" and (countyid in ({orgs}) or streetid in ({orgs}) or communityid in ({orgs})) "; } string sql = $"select case when a.\"Id\" is not null then '复提' when b.\"Id\" is null and is_closed=0 then '待审核' when b.\"Id\" is not null and is_closed=0 then '已审核' \r\nwhen is_closed=1 then '已关闭' end as checkStatus ," + $"a.\"Id\" as retributeId,c.\"Id\",c.case_no,case_description,typename,countyname,streetname,communityname,identification_user,identification_time,createtime,c.original_case_no,is_closed," + $"b.\"Id\" as processid, c.geomid from drone_caseinfo_single c LEFT JOIN wf_process b on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" LEFT JOIN drone_resubmit a on a.\"CaseNo\"=c.original_case_no and a.\"SubjectKey\"='" + TubanZhuanTi.weifayongdi + "' where 1=1 "; if (!string.IsNullOrEmpty(req.typename)) { sqlpart = sqlpart + $" and typename='" + req.typename + "'"; } if (!string.IsNullOrEmpty(req.countyid)) { sqlpart = sqlpart + $" and countyid='" + req.countyid + "'"; } if (!string.IsNullOrEmpty(req.streetid)) { sqlpart = sqlpart + $" and streetid='" + req.streetid + "'"; } if (!string.IsNullOrEmpty(req.communityid)) { sqlpart = sqlpart + $" and communityid='" + req.communityid + "'"; } sqlpart = sqlpart + $"and ((a.\"Id\" is not null) or (b.\"Id\" is null and is_closed=0 and a.\"Id\" is null))"; if (!string.IsNullOrEmpty(req.nowStatus)) { if ("待审核".Equal(req.nowStatus)) { sqlpart = sqlpart + $" and b.\"Id\" is null and is_closed=0 and a.\"Id\" is null"; } else if ("已审核".Equal(req.nowStatus)) { sqlpart = sqlpart + $" and b.\"Id\" is not null and is_closed=0"; } else if ("已关闭".Equal(req.nowStatus)) { sqlpart = sqlpart + $" and is_closed=1"; } else if ("复提".Equal(req.nowStatus)) { sqlpart = sqlpart + $" and a.\"Id\" is not null"; } else if ("复提待审核".Equal(req.nowStatus)) { sqlpart = sqlpart + $" and ( b.\"Id\" is null and is_closed=0 or a.\"Id\" is not null) "; } } if (!string.IsNullOrEmpty(req.caseNo)) { sqlpart = sqlpart + $" and c.case_no like '%" + req.caseNo + "%'"; } if (!string.IsNullOrEmpty(req.originalCaseNo)) { sqlpart = sqlpart + $" and c.original_case_no like '%" + req.originalCaseNo + "%'"; } sqlpart += $" ORDER BY createtime desc"; Console.WriteLine(sql + sqlpart); var info = await client.SqlQueryable(sql + sqlpart).ToListAsync(); return new Response> { Result = info, }; } public TubanSplit CalTubanArea(TubanSplit split) { TubanSplit tubanSplit = new TubanSplit(); string geomwkt = split.wktgeom; string mianjisql = $"select sum(c.have_intersection) from (SELECT ST_Area(ST_Transform(st_setsrid(ST_Intersection(st_setsrid(ST_Force2D(a.geometry)\r\n , 4326)," + $"st_setsrid(ST_Force2D(b.geometry), 4326)),4326),4527)) AS have_intersection from geoserver_gengdi\r\n a ," + $"(select '" + geomwkt + $"' as geometry ) b) c where c.have_intersection>0;"; Console.Write(mianjisql); double gengdimianji = client.Ado.GetDouble(mianjisql); tubanSplit.gengdi = Math.Round(gengdimianji * 0.0015, 2); string jibensql = $"select sum(c.have_intersection) from (SELECT ST_Area(ST_Transform(st_setsrid(ST_Intersection(st_setsrid(ST_Force2D(a.geometry)\r\n , 4326)," + $"st_setsrid(ST_Force2D(b.geometry), 4326)),4326),4527)) AS have_intersection from geoserver_jibennongtian\r\n a ," + $"(select '" + geomwkt + $"' as geometry ) b) c where c.have_intersection>0;"; double jibenminaji = client.Ado.GetDouble(jibensql); tubanSplit.jibennongtian = Math.Round(jibenminaji * 0.0015, 2); string nongyongsql = $"select sum(c.have_intersection) from (SELECT ST_Area(ST_Transform(st_setsrid(ST_Intersection(st_setsrid(ST_Force2D(a.geometry)\r\n , 4326)," + $"st_setsrid(ST_Force2D(b.geometry), 4326)),4326),4527)) AS have_intersection from geoserver_nongyongdi\r\n a ," + $"(select '" + geomwkt + $"' as geometry ) b) c where c.have_intersection>0;"; double nongyongmianji = client.Ado.GetDouble(nongyongsql); tubanSplit.nongyongdi = Math.Round(nongyongmianji * 0.0015, 2); string shengtaisql = $"select sum(c.have_intersection) from (SELECT ST_Area(ST_Transform(st_setsrid(ST_Intersection(st_setsrid(ST_Force2D(a.geometry)\r\n , 4326)," + $"st_setsrid(ST_Force2D(b.geometry), 4326)),4326),4527)) AS have_intersection from geoserver_shengtaihongxian\r\n a ," + $"(select '" + geomwkt + $"' as geometry ) b) c where c.have_intersection>0;"; double shengtaimianji = client.Ado.GetDouble(shengtaisql); tubanSplit.shengtaihongxian = Math.Round(shengtaimianji * 0.0015, 2); string zongmianji = $"select sum(c.have_intersection) from (SELECT ST_Area(ST_Transform(st_setsrid(b.geometry, 4326), 4527)) AS have_intersection " + $" from (select ST_Force2D('" + geomwkt + $"') as geometry) b) c"; double totalmianji = client.Ado.GetDouble(zongmianji); tubanSplit.totalmianji = Math.Round(totalmianji * 0.0015, 2); return tubanSplit; } public TubanSplit SplitAndCalTubanArea(TubanSplit split) { TubanSplit tubanSplit = new TubanSplit(); string geomwkt = split.wktgeom; string splitgengdi = $"select st_astext(st_union(c.geomstr)) from(select ST_Force2D(b.geomstr) as geomstr from(select st_astext(a.intersection) as geomstr from( " + $"SELECT ST_Intersection('" + geomwkt + $"', st_astext(geometry)) AS intersection FROM geoserver_gengdi) a " + $"where a.intersection != '010300000000000000') b where b.geomstr like '%POLYGON%') c"; var gengdigeom = client.Ado.GetString(splitgengdi); tubanSplit.gengdituban = gengdigeom; /* string splitjiben = $"select st_astext(st_union(c.geomstr)) from(select ST_Force2D(b.geomstr) as geomstr from(select st_astext(a.intersection) as geomstr from( " + $"SELECT ST_Intersection('" + geomwkt + $"', st_astext(geometry)) AS intersection FROM geoserver_jibennongtian) a " + $"where a.intersection != '010300000000000000') b where b.geomstr like '%POLYGON%') c"; var jibengeom = client.Ado.GetString(splitjiben); tubanSplit.jibennongtiantuban = jibengeom;*/ string splitnongyong = $"select st_astext(st_union(c.geomstr)) from(select ST_Force2D(b.geomstr) as geomstr from(select st_astext(a.intersection) as geomstr from( " + $"SELECT ST_Intersection('" + geomwkt + $"', st_astext(geometry)) AS intersection FROM geoserver_nongyongdi) a " + $"where a.intersection != '010300000000000000') b where b.geomstr like '%POLYGON%') c"; var nongyonggeom = client.Ado.GetString(splitnongyong); tubanSplit.nongyongdituban = nongyonggeom; string splitshengtai = $"select st_astext(st_union(c.geomstr)) from(select ST_Force2D(b.geomstr) as geomstr from(select st_astext(a.intersection) as geomstr from( " + $"SELECT ST_Intersection('" + geomwkt + $"', st_astext(geometry)) AS intersection FROM geoserver_shengtaihongxian) a " + $"where a.intersection != '010300000000000000') b where b.geomstr like '%POLYGON%') c"; var shengtaigeom = client.Ado.GetString(splitshengtai); tubanSplit.shengtaihongxiantuban = shengtaigeom; string difsql = $"select st_astext(st_union(c.geom)) from ( "; bool flag = false; if (!string.IsNullOrEmpty(gengdigeom) && !string.IsNullOrEmpty(nongyonggeom)) { string diff1 = $"select st_astext(st_union(a.intersection)) as dif from(SELECT ST_Difference('" + nongyonggeom + $"','" + gengdigeom + $"') AS intersection ) a "; var diffgeom1 = client.Ado.GetString(diff1); tubanSplit.nongyongdituban = diffgeom1; flag = true; } /* if (!string.IsNullOrEmpty(tubanSplit.gengdituban)) { string sqlgeng = $"\r\nWITH test_abc AS (Select 1 as id,'"+ tubanSplit.gengdituban + $"' as geom )," + $" original_points AS (\r\n\r\n SELECT \r\n id, \r\n (ST_DumpPoints(geom)).path[1] AS ring_index, \r\n (ST_DumpPoints(geom)).path[2] AS point_index, " + $" ST_X((ST_DumpPoints(geom)).geom) AS lon,\r\n ST_Y((ST_DumpPoints(geom)).geom) AS lat\r\n FROM test_abc\r\n),\r\nrounded_points AS ( " + $" SELECT \r\n id, ring_index,\r\n point_index,\r\n round(lon::numeric, 8) AS lon,\r\n round(lat::numeric, 8) AS lat\r\n FROM original_points\r\n)\r\n\r\nSELECT \r\n t.id,\r\n st_astext(ST_SetSRID(ST_MakePolygon(" + $" ST_MakeLine(\r\n ARRAY(\r\n SELECT ST_MakePoint(p.lon, p.lat)\r\n FROM rounded_points p\r\n WHERE p.id = t.id AND p.ring_index = 1" + $" ORDER BY p.point_index\r\n )\r\n )\r\n ), 4326)) AS geomrounded \r\nFROM test_abc t\r\nGROUP BY t.id;"; var geng8 = client.Ado.SqlQuerySingle(sqlgeng); tubanSplit.gengdituban = geng8.geomrounded; } if (!string.IsNullOrEmpty(tubanSplit.nongyongdituban)) { string sqlgeng = $"\r\nWITH test_abc AS (Select 1 as id,'" + tubanSplit.nongyongdituban + $"' as geom )," + $" original_points AS (\r\n\r\n SELECT \r\n id, \r\n (ST_DumpPoints(geom)).path[1] AS ring_index, \r\n (ST_DumpPoints(geom)).path[2] AS point_index, " + $" ST_X((ST_DumpPoints(geom)).geom) AS lon,\r\n ST_Y((ST_DumpPoints(geom)).geom) AS lat\r\n FROM test_abc\r\n),\r\nrounded_points AS ( " + $" SELECT \r\n id, ring_index,\r\n point_index,\r\n round(lon::numeric, 8) AS lon,\r\n round(lat::numeric, 8) AS lat\r\n FROM original_points\r\n)\r\n\r\nSELECT \r\n t.id,\r\n st_astext(ST_SetSRID(ST_MakePolygon(" + $" ST_MakeLine(\r\n ARRAY(\r\n SELECT ST_MakePoint(p.lon, p.lat)\r\n FROM rounded_points p\r\n WHERE p.id = t.id AND p.ring_index = 1" + $" ORDER BY p.point_index\r\n )\r\n )\r\n ), 4326)) AS geomrounded \r\nFROM test_abc t\r\nGROUP BY t.id;"; var geng8 = client.Ado.SqlQuerySingle(sqlgeng); tubanSplit.nongyongdituban = geng8.geomrounded; }*/ if (!string.IsNullOrEmpty(gengdigeom)) { difsql = difsql + $"(select ST_Force2D('" + gengdigeom + $"') as geom ) UNION"; } /*if (!string.IsNullOrEmpty(jibengeom)) { difsql = difsql + $" (select ST_Force2D('" + jibengeom + $"') as geom ) UNION"; }*/ if (!string.IsNullOrEmpty(nongyonggeom)) { difsql = difsql + $" (select ST_Force2D('" + nongyonggeom + $"') as geom ) UNION"; } if (!string.IsNullOrEmpty(shengtaigeom)) { difsql = difsql + $" (select ST_Force2D('" + shengtaigeom + $"') as geom ) UNION"; } difsql = difsql.Substring(0, difsql.Length - 5); difsql = difsql + $" ) c"; Console.Write(difsql); var difgeom = client.Ado.GetString(difsql); string diff = $"select st_astext(st_union(a.intersection)) as dif from(SELECT ST_Difference('" + geomwkt + $"','" + difgeom + $"') AS intersection ) a "; var diffgeom = client.Ado.GetString(diff); tubanSplit.remaintuban = diffgeom; string mianjisql = $"select sum(c.have_intersection) from (SELECT ST_Area(ST_Transform(st_setsrid(ST_Intersection(st_setsrid(ST_Force2D(a.geometry)\r\n , 4326)," + $"st_setsrid(ST_Force2D(b.geometry), 4326)),4326),4527)) AS have_intersection from geoserver_gengdi\r\n a ," + $"(select '" + geomwkt + $"' as geometry ) b) c where c.have_intersection>0;"; Console.Write(mianjisql); double gengdimianji = client.Ado.GetDouble(mianjisql); tubanSplit.gengdi = Math.Round(gengdimianji * 0.0015, 2); /* string jibensql = $"select sum(c.have_intersection) from (SELECT ST_Area(ST_Transform(st_setsrid(ST_Intersection(st_setsrid(ST_Force2D(a.geometry)\r\n , 4326)," + $"st_setsrid(ST_Force2D(b.geometry), 4326)),4326),4527)) AS have_intersection from geoserver_jibennongtian\r\n a ," + $"(select '" + geomwkt + $"' as geometry ) b) c where c.have_intersection>0;"; double jibenminaji = client.Ado.GetDouble(jibensql); tubanSplit.jibennongtian = Math.Round(jibenminaji * 0.0015, 2);*/ string nongyongsql = $"select sum(c.have_intersection) from (SELECT ST_Area(ST_Transform(st_setsrid(ST_Intersection(st_setsrid(ST_Force2D(a.geometry)\r\n , 4326)," + $"st_setsrid(ST_Force2D(b.geometry), 4326)),4326),4527)) AS have_intersection from geoserver_nongyongdi\r\n a ," + $"(select '" + geomwkt + $"' as geometry ) b) c where c.have_intersection>0;"; double nongyongmianji = client.Ado.GetDouble(nongyongsql); tubanSplit.nongyongdi = Math.Round(nongyongmianji * 0.0015, 2); if (flag) { tubanSplit.nongyongdi = Math.Round((nongyongmianji - gengdimianji) * 0.0015, 2); } string shengtaisql = $"select sum(c.have_intersection) from (SELECT ST_Area(ST_Transform(st_setsrid(ST_Intersection(st_setsrid(ST_Force2D(a.geometry)\r\n , 4326)," + $"st_setsrid(ST_Force2D(b.geometry), 4326)),4326),4527)) AS have_intersection from geoserver_shengtaihongxian\r\n a ," + $"(select '" + geomwkt + $"' as geometry ) b) c where c.have_intersection>0;"; double shengtaimianji = client.Ado.GetDouble(shengtaisql); tubanSplit.shengtaihongxian = Math.Round(shengtaimianji * 0.0015, 2); return tubanSplit; } public TubanSplit SplitTubanBackYuan(TubanSplit split) { TubanSplit tubanSplit = new TubanSplit(); string geomwkt = split.wktgeom; string mianjisql = $"select st_astext(c.geometry) as geom from (SELECT a.geometry,ST_Area(ST_Transform(st_setsrid(ST_Intersection(st_setsrid(ST_Force2D(a.geometry)\r\n , 4326)," + $"st_setsrid(ST_Force2D(b.geometry), 4326)),4326),4527)) AS have_intersection from geoserver_gengdi\r\n a ," + $"(select '" + geomwkt + $"' as geometry ) b) c where c.have_intersection>0;"; Console.Write(mianjisql); List gengdimianji = client.Ado.SqlQuery(mianjisql); tubanSplit.gengdituban = string.Join(",", gengdimianji); /* string jibensql = $"select sum(c.have_intersection) from (SELECT ST_Area(ST_Transform(st_setsrid(ST_Intersection(st_setsrid(ST_Force2D(a.geometry)\r\n , 4326)," + $"st_setsrid(ST_Force2D(b.geometry), 4326)),4326),4527)) AS have_intersection from geoserver_jibennongtian\r\n a ," + $"(select '" + geomwkt + $"' as geometry ) b) c where c.have_intersection>0;"; double jibenminaji = client.Ado.GetDouble(jibensql); tubanSplit.jibennongtian = Math.Round(jibenminaji * 0.0015, 2);*/ string nongyongsql = $"select st_astext(c.geometry) from (SELECT a.geometry, ST_Area(ST_Transform(st_setsrid(ST_Intersection(st_setsrid(ST_Force2D(a.geometry)\r\n , 4326)," + $"st_setsrid(ST_Force2D(b.geometry), 4326)),4326),4527)) AS have_intersection from geoserver_nongyongdi\r\n a ," + $"(select '" + geomwkt + $"' as geometry ) b) c where c.have_intersection>0;"; List nongyongmianji = client.Ado.SqlQuery(nongyongsql); tubanSplit.nongyongdituban = string.Join(",", nongyongmianji); string shengtaisql = $"select st_astext(c.geometry) from (SELECT a.geometry,ST_Area(ST_Transform(st_setsrid(ST_Intersection(st_setsrid(ST_Force2D(a.geometry)\r\n , 4326)," + $"st_setsrid(ST_Force2D(b.geometry), 4326)),4326),4527)) AS have_intersection from geoserver_shengtaihongxian\r\n a ," + $"(select '" + geomwkt + $"' as geometry ) b) c where c.have_intersection>0;"; List shengtaimianji = client.Ado.SqlQuery(shengtaisql); tubanSplit.shengtaihongxiantuban = string.Join(",", shengtaimianji); return tubanSplit; } public List> rebackzhuantipic(string zhunti, string caseid) { List> listobj = new List>(); Zhuanti zhuanti = new Zhuanti(zhunti); List> list = zhuanti.Names; string daicha = zhuanti.daicha; string sql = $"select original_case_no from " + daicha + $" where \"Id\"='" + caseid + $"'"; string originalcaseno = client.Ado.GetString(sql); string sql1 = $" select fujian from "; for (int i = 0; i < list.Count; i++) { Dictionary dic = list[i]; string result = ""; if ("drone_caseinfo_minerals".Equals(dic["name"])) { string zhuantisql = $"select zhaopian_fill as chufafujian,zhaopianqian_jgzhg luoshifile,zhaopianhou_jgzhg zhaopianhou,zhaopian_reform fujianreform from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"' and is_closed = 0"; List listdy = client.Ado.SqlQuery(zhuantisql); if (listdy == null || listdy.Count == 0) { continue; } else { for (int j = 0; j < listdy.Count; j++) { if (!string.IsNullOrEmpty(listdy[j].chufafujian)) { result = result + listdy[j].chufafujian + ","; } if (!string.IsNullOrEmpty(listdy[j].luoshifile)) { result = result + listdy[j].luoshifile + ","; } if (!string.IsNullOrEmpty(listdy[j].fujianreform)) { result = result + listdy[j].fujianreform + ","; } if (!string.IsNullOrEmpty(listdy[j].zhaopianhou)) { result = result + listdy[j].zhaopianhou + ","; } } } } else if ("drone_caseinfo_gdflh".Equals(dic["name"])) { string zhuantisql = $"select anjianzhaopian as chufafujian,chaichufugenghoupic luoshifile from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"' and is_closed = 0"; List listdy = client.Ado.SqlQuery(zhuantisql); if (listdy == null || listdy.Count == 0) { continue; } else { for (int j = 0; j < listdy.Count; j++) { if (!string.IsNullOrEmpty(listdy[j].chufafujian)) { result = result + listdy[j].chufafujian + ","; } if (!string.IsNullOrEmpty(listdy[j].luoshifile)) { result = result + listdy[j].luoshifile + ","; } } } } else if ("drone_caseinfo_zdwt2".Equals(dic["name"])) { string zhuantisql = $"select anjianzhaopian as chufafujian from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"' and is_closed = 0"; List listdy = client.Ado.SqlQuery(zhuantisql); if (listdy == null || listdy.Count == 0) { continue; } else { for (int j = 0; j < listdy.Count; j++) { if (!string.IsNullOrEmpty(listdy[j].chufafujian)) { result = result + listdy[j].chufafujian + ","; } } } } else if ("drone_caseinfo_zdwt1".Equals(dic["name"])) { string zhuantisql = $"select anjianzhaopian as chufafujian from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"' and is_closed = 0"; List listdy = client.Ado.SqlQuery(zhuantisql); if (listdy == null || listdy.Count == 0) { continue; } else { for (int j = 0; j < listdy.Count; j++) { if (!string.IsNullOrEmpty(listdy[j].chufafujian)) { result = result + listdy[j].chufafujian + ","; } } } } else if ("drone_caseinfo_single".Equals(dic["name"])) { string zhuantisql = $"select anjianzhaopian as chufafujian,chaichufugenghoupic luoshifile,bubanzhaopian fujianreform from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"' and is_closed = 0"; List listdy = client.Ado.SqlQuery(zhuantisql); if (listdy == null || listdy.Count == 0) { continue; } else { for (int j = 0; j < listdy.Count; j++) { if (!string.IsNullOrEmpty(listdy[j].chufafujian)) { result = result + listdy[j].chufafujian + ","; } if (!string.IsNullOrEmpty(listdy[j].luoshifile)) { result = result + listdy[j].luoshifile + ","; } if (!string.IsNullOrEmpty(listdy[j].fujianreform)) { result = result + listdy[j].fujianreform + ","; } } } } else if ("drone_caseinfo_wpxf".Equals(dic["name"])) { string zhuantisql = $"select anjianzhaopian as chufafujian,chaichufugenghoupic luoshifile,bubanzhaopian fujianreform from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"' and is_closed = 0"; List listdy = client.Ado.SqlQuery(zhuantisql); if (listdy == null || listdy.Count == 0) { continue; } else { for (int j = 0; j < listdy.Count; j++) { if (!string.IsNullOrEmpty(listdy[j].chufafujian)) { result = result + listdy[j].chufafujian + ","; } if (!string.IsNullOrEmpty(listdy[j].luoshifile)) { result = result + listdy[j].luoshifile + ","; } if (!string.IsNullOrEmpty(listdy[j].fujianreform)) { result = result + listdy[j].fujianreform + ","; } } } } else if ("drone_caseinfo_xcsj".Equals(dic["name"])) { string zhuantisql = $"select anjianzhaopian as chufafujian,chaichufugenghoupic luoshifile,bubanzhaopian fujianreform from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"' and is_closed = 0"; List listdy = client.Ado.SqlQuery(zhuantisql); if (listdy == null || listdy.Count == 0) { continue; } else { for (int j = 0; j < listdy.Count; j++) { if (!string.IsNullOrEmpty(listdy[j].chufafujian)) { result = result + listdy[j].chufafujian + ","; } if (!string.IsNullOrEmpty(listdy[j].luoshifile)) { result = result + listdy[j].luoshifile + ","; } if (!string.IsNullOrEmpty(listdy[j].fujianreform)) { result = result + listdy[j].fujianreform + ","; } } } } /* else if ("drone_caseinfo_stxf".Equals(dic["name"])) { string zhuantisql = $"select fujian chufafujian from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"'"; dynamic listdy = client.Ado.SqlQuerySingle(zhuantisql); if (!string.IsNullOrEmpty(listdy.chufafujian)) { result = result + listdy.chufafujian + ","; } }*/ else if ("drone_caseinfo_sthx".Equals(dic["name"])) { string zhuantisql = $"select anjianzhaopian as chufafujian from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"' and is_closed = 0"; List listdy = client.Ado.SqlQuery(zhuantisql); if (listdy == null || listdy.Count == 0) { continue; } else { for (int j = 0; j < listdy.Count; j++) { if (!string.IsNullOrEmpty(listdy[j].chufafujian)) { result = result + listdy[j].chufafujian + ","; } } } } if (!string.IsNullOrEmpty(result)) { string sub = result.Substring(0, result.Length - 1); string[] listdys = sub.Split(','); List listobj1 = new List(); for (int j = 0; j < listdys.Length; j++) { string path = listdys[j]; string sql2 = $"select * from drone_image_ref where \"FilePath\"='" + path + $"'"; dynamic listdy = client.Ado.SqlQuerySingle(sql2); if (listdy != null) { listobj1.Add(listdy); } else { if (!string.IsNullOrEmpty(path)) { dynamic dy = new ExpandoObject(); dy.FilePath = path; listobj1.Add(dy); } } } dic.Add("val", listobj1); listobj.Add(dic); } } return listobj; } /// /// 复制图片 /// /// /// public async Task>> CopyImg(CopyImageReq req) { using var httpClient = new HttpClient(); var config = ConfigHelper.GetConfigRoot(); var baseUrl = config["ImgServer"]; var url = baseUrl + "/api/Platform/NewCopyImg"; string images = string.Join(",", req.images); List strings = new List(); var param = new Dictionary() { { "path", images } }; var content = new FormUrlEncodedContent(param); var copyFileResponse = await httpClient.PostAsync(url, content); if (copyFileResponse.IsSuccessStatusCode) { var resultContent = await copyFileResponse.Content.ReadAsStringAsync(); var obj = JsonConvert.DeserializeObject>>(resultContent); if (!obj.Code.Equals(200)) { throw new Exception("复制文件失败"); } foreach (var sysUploadFileNew in obj.Result) { var originalPath = sysUploadFileNew.OriginalPath; var newFilePath = sysUploadFileNew.FilePath; strings.Add(newFilePath); string sql = $"select * from drone_image_ref where \"FilePath\"='" + originalPath + $"'"; DroneImageRef droneref = client.SqlQueryable(sql).First(); if (droneref != null) { DroneImageRef droneImageRef = new DroneImageRef() { Id = Guid.NewGuid().ToString(), CaseId = req.caseid, FilePath = newFilePath, Orientation = droneref.Orientation, CreateTime = DateTime.Now, Lng = droneref.Lng, Lat = droneref.Lat, }; await client.Insertable(droneImageRef).ExecuteCommandAsync(); } } } return new Response> { Result = strings }; } public List> rebackzhuantifujian(string zhunti, string caseid) { List> listobj = new List>(); Zhuanti zhuanti = new Zhuanti(zhunti); List> list = zhuanti.Names; string daicha = zhuanti.daicha; string sql = $"select original_case_no from " + daicha + $" where \"Id\"='" + caseid + $"'"; string originalcaseno = client.Ado.GetString(sql); Dictionary v9 = new Dictionary(); v9.Add("name", daicha); v9.Add("zname", zhunti); list.Add(v9); for (int i = 0; i < list.Count; i++) { Dictionary dic = list[i]; string result = ""; if ("drone_caseinfo_minerals".Equals(dic["name"])) { string zhuantisql = $"select fujian_fill fufill,chufafile_punish as chufafujian,luoshifile_punish luoshifile,fujian_reform fujianreform,fujian_jgzhg fujianjgzhg from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"' and is_closed = 0 and \"Id\"!='" + caseid + $"'"; List listdy = client.Ado.SqlQuery(zhuantisql); if (listdy == null || listdy.Count == 0) { continue; } else { for (int j = 0; j < listdy.Count; j++) { if (!string.IsNullOrEmpty(listdy[j].fufill)) { result = result + listdy[j].fufill + ","; } if (!string.IsNullOrEmpty(listdy[j].chufafujian)) { result = result + listdy[j].chufafujian + ","; } if (!string.IsNullOrEmpty(listdy[j].luoshifile)) { result = result + listdy[j].luoshifile + ","; } if (!string.IsNullOrEmpty(listdy[j].fujianreform)) { result = result + listdy[j].fujianreform + ","; } if (!string.IsNullOrEmpty(listdy[j].fujianjgzhg)) { result = result + listdy[j].fujianjgzhg + ","; } } } } else if ("drone_caseinfo_gdflh".Equals(dic["name"])) { string zhuantisql = $"select zhenggaifujian as chufafujian,fujian luoshifile from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"' and is_closed = 0 and \"Id\"!='" + caseid + $"'"; List listdy = client.Ado.SqlQuery(zhuantisql); if (listdy == null || listdy.Count == 0) { continue; } else { for (int j = 0; j < listdy.Count; j++) { if (!string.IsNullOrEmpty(listdy[j].chufafujian)) { result = result + listdy[j].chufafujian + ","; } if (!string.IsNullOrEmpty(listdy[j].luoshifile)) { result = result + listdy[j].luoshifile + ","; } } } } else if ("drone_caseinfo_zdwt2".Equals(dic["name"])) { string zhuantisql = $"select hefafujian as chufafujian,fujian luoshifile from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"' and is_closed = 0 and \"Id\"!='" + caseid + $"'"; List listdy = client.Ado.SqlQuery(zhuantisql); if (listdy == null || listdy.Count == 0) { continue; } else { for (int j = 0; j < listdy.Count; j++) { if (!string.IsNullOrEmpty(listdy[j].chufafujian)) { result = result + listdy[j].chufafujian + ","; } if (!string.IsNullOrEmpty(listdy[j].luoshifile)) { result = result + listdy[j].luoshifile + ","; } } } } else if ("drone_caseinfo_zdwt1".Equals(dic["name"])) { string zhuantisql = $"select hefafujian as chufafujian,fujian luoshifile,qitafujian fujianreform from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"' and is_closed = 0 and \"Id\"!='" + caseid + $"'"; List listdy = client.Ado.SqlQuery(zhuantisql); if (listdy == null || listdy.Count == 0) { continue; } else { for (int j = 0; j < listdy.Count; j++) { if (!string.IsNullOrEmpty(listdy[j].chufafujian)) { result = result + listdy[j].chufafujian + ","; } if (!string.IsNullOrEmpty(listdy[j].luoshifile)) { result = result + listdy[j].luoshifile + ","; } if (!string.IsNullOrEmpty(listdy[j].fujianreform)) { result = result + listdy[j].fujianreform + ","; } } } } else if ("drone_caseinfo_single".Equals(dic["name"])) { string zhuantisql = $"select hefafujian as chufafujian,fujian luoshifile,qitafujian fujianreform,zhenggaifujian,yanshoubiao from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"' and is_closed = 0 and \"Id\"!='" + caseid + $"'"; List listdy = client.Ado.SqlQuery(zhuantisql); if (listdy == null || listdy.Count == 0) { continue; } else { for (int j = 0; j < listdy.Count; j++) { if (!string.IsNullOrEmpty(listdy[j].chufafujian)) { result = result + listdy[j].chufafujian + ","; } if (!string.IsNullOrEmpty(listdy[j].luoshifile)) { result = result + listdy[j].luoshifile + ","; } if (!string.IsNullOrEmpty(listdy[j].fujianreform)) { result = result + listdy[j].fujianreform + ","; } if (!string.IsNullOrEmpty(listdy[j].zhenggaifujian)) { result = result + listdy[j].zhenggaifujian + ","; } if (!string.IsNullOrEmpty(listdy[j].yanshoubiao)) { result = result + listdy[j].yanshoubiao + ","; } } } } else if ("drone_caseinfo_wpxf".Equals(dic["name"])) { string zhuantisql = $"select hefafujian as chufafujian,fujian luoshifile,qitafujian fujianreform,zhenggaifujian,yanshoubiao from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"' and is_closed = 0 and \"Id\"!='" + caseid + $"'"; List listdy = client.Ado.SqlQuery(zhuantisql); if (listdy == null || listdy.Count == 0) { continue; } else { for (int j = 0; j < listdy.Count; j++) { if (!string.IsNullOrEmpty(listdy[j].chufafujian)) { result = result + listdy[j].chufafujian + ","; } if (!string.IsNullOrEmpty(listdy[j].luoshifile)) { result = result + listdy[j].luoshifile + ","; } if (!string.IsNullOrEmpty(listdy[j].fujianreform)) { result = result + listdy[j].fujianreform + ","; } if (!string.IsNullOrEmpty(listdy[j].zhenggaifujian)) { result = result + listdy[j].zhenggaifujian + ","; } if (!string.IsNullOrEmpty(listdy[j].yanshoubiao)) { result = result + listdy[j].yanshoubiao + ","; } } } } else if ("drone_caseinfo_xcsj".Equals(dic["name"])) { string zhuantisql = $"select hefafujian as chufafujian,fujian luoshifile,qitafujian fujianreform,zhenggaifujian,yanshoubiao from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"' and is_closed = 0 and \"Id\"!='" + caseid + $"'"; List listdy = client.Ado.SqlQuery(zhuantisql); if (listdy == null || listdy.Count == 0) { continue; } else { for (int j = 0; j < listdy.Count; j++) { if (!string.IsNullOrEmpty(listdy[j].chufafujian)) { result = result + listdy[j].chufafujian + ","; } if (!string.IsNullOrEmpty(listdy[j].luoshifile)) { result = result + listdy[j].luoshifile + ","; } if (!string.IsNullOrEmpty(listdy[j].fujianreform)) { result = result + listdy[j].fujianreform + ","; } if (!string.IsNullOrEmpty(listdy[j].zhenggaifujian)) { result = result + listdy[j].zhenggaifujian + ","; } if (!string.IsNullOrEmpty(listdy[j].yanshoubiao)) { result = result + listdy[j].yanshoubiao + ","; } } } } else if ("drone_caseinfo_stxf".Equals(dic["name"])) { string zhuantisql = $"select fujian chufafujian from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"' and is_closed = 0 and \"Id\"!='" + caseid + $"'"; List listdy = client.Ado.SqlQuery(zhuantisql); if (listdy == null || listdy.Count == 0) { continue; } else { for (int j = 0; j < listdy.Count; j++) { if (!string.IsNullOrEmpty(listdy[j].chufafujian)) { result = result + listdy[j].chufafujian + ","; } } } } else if ("drone_caseinfo_sthx".Equals(dic["name"])) { string zhuantisql = $"select hefafujian as chufafujian,fujian luoshifile,qitafujian fujianreform,zhenggaifujian from " + dic["name"] + $" where original_case_no='" + originalcaseno + $"' and is_closed = 0 and \"Id\"!='" + caseid + $"'"; List listdy = client.Ado.SqlQuery(zhuantisql); if (listdy == null || listdy.Count == 0) { continue; } else { for (int j = 0; j < listdy.Count; j++) { if (!string.IsNullOrEmpty(listdy[j].chufafujian)) { result = result + listdy[j].chufafujian + ","; } if (!string.IsNullOrEmpty(listdy[j].luoshifile)) { result = result + listdy[j].luoshifile + ","; } if (!string.IsNullOrEmpty(listdy[j].fujianreform)) { result = result + listdy[j].fujianreform + ","; } if (!string.IsNullOrEmpty(listdy[j].zhenggaifujian)) { result = result + listdy[j].zhenggaifujian + ","; } } } } if (!string.IsNullOrEmpty(result)) { string sub = result.Substring(0, result.Length - 1); string[] listdys = sub.Split(','); List> listobj1 = new List>(); for (int j = 0; j < listdys.Length; j++) { Dictionary dic1 = new Dictionary(); string path = listdys[j]; if (!string.IsNullOrEmpty(path)) { dic1.Add("path", path); listobj1.Add(dic1); } } dic.Add("val", listobj1); listobj.Add(dic); } } return listobj; } /// /// 复制图片 /// /// /// public async Task>> Copyfujian(List sourceFilePathall) { using var httpClient = new HttpClient(); var config = ConfigHelper.GetConfigRoot(); var baseUrl = config["ImgServer"]; var url = baseUrl + "/api/Platform/NewCopyImg"; string images = string.Join(",", sourceFilePathall); List strings = new List(); var param = new Dictionary() { { "path", images } }; var content = new FormUrlEncodedContent(param); var copyFileResponse = await httpClient.PostAsync(url, content); if (copyFileResponse.IsSuccessStatusCode) { var resultContent = await copyFileResponse.Content.ReadAsStringAsync(); var obj = JsonConvert.DeserializeObject>>(resultContent); if (!obj.Code.Equals(200)) { throw new Exception("复制文件失败"); } foreach (var sysUploadFileNew in obj.Result) { var originalPath = sysUploadFileNew.OriginalPath; var newFilePath = sysUploadFileNew.FilePath; strings.Add(newFilePath); } } return new Response> { Result = strings }; } public void ExportCaseInfoSsnydShapefile(CaseInfoTuBanReq req, string shpFilePath, string shpFilePathzip) { var response = ExprotLoadCaseInfoSsnyTuBanList(req).Result; List list = new List(); for (int i = 0; i < response.Count; i++) { var caseinfo = response[i]; if (!string.IsNullOrEmpty(caseinfo.geomid)) { list.Add(caseinfo); } } List gids = list.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 a.gid, ST_AsText(a.geom) AS geom,b.tubanlaiyuan,b.case_no,b.countyname,b.streetname,b.communityname FROM drone_shp_data a left join drone_caseinfo_single b on a.relid=b.\"Id\" 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,createtime,synchronoustime,tubanlaiyuan,ST_AsText(geom) AS geom FROM view_drone_caseinfo_shp WHERE gid IN ({gidsString})"; // 执行查询 var data = client.Ado.SqlQuery(query); if (data == null || data.Count == 0) { throw new Exception("暂无数据"); } List features = new List(); foreach (var row in data) { var geometry = ParseGeometry(row.geom); if (geometry == null) { throw new Exception("数据不可用"); } //var attributes = new AttributesTable //{ // { "gid", row.gid }, // {"laiyuan",row.tubanlaiyuan==null?"无":row.tubanlaiyuan }, // {"case_no",row.case_no==null?"无":row.case_no }, // {"countyname",row.countyname==null?"无":row.countyname }, // {"streetname",row.streetname ==null?"无":row.streetname}, // {"comname",row.communityname ==null?"无":row.communityname} //}; 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.ToString() }, { "处理措施", 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); } #region 查询子流程信息 #endregion }