4021 lines
178 KiB
C#
4021 lines
178 KiB
C#
using System.Data;
|
||
using System.IO.Compression;
|
||
using System.Text;
|
||
using Infrastructure;
|
||
using Infrastructure.Extensions;
|
||
using Infrastructure.Helpers;
|
||
using Microsoft.Extensions.Configuration;
|
||
using NetTopologySuite.Features;
|
||
using NetTopologySuite.Geometries;
|
||
using NetTopologySuite.IO;
|
||
using Newtonsoft.Json;
|
||
using Newtonsoft.Json.Linq;
|
||
using NPOI.HSSF.UserModel;
|
||
using NPOI.SS.UserModel;
|
||
using NPOI.SS.Util;
|
||
using OpenAuth.App.BaseApp.Base;
|
||
using OpenAuth.App.BaseApp.Shape;
|
||
using OpenAuth.App.BasicQueryService;
|
||
using OpenAuth.App.Common;
|
||
using OpenAuth.App.FormModule;
|
||
using OpenAuth.App.Interface;
|
||
using OpenAuth.App.Request;
|
||
using OpenAuth.App.ServiceApp.DroneCaseInfo.Request;
|
||
using OpenAuth.App.ServiceApp.DroneCaseInfo.Response;
|
||
using OpenAuth.App.ServiceApp.Request;
|
||
using OpenAuth.App.ServiceApp.Response;
|
||
using OpenAuth.Repository;
|
||
using OpenAuth.Repository.Domain;
|
||
using SqlSugar;
|
||
using Shapefile = NetTopologySuite.IO.Esri.Shapefile;
|
||
|
||
namespace OpenAuth.App.ServiceApp.DroneCaseInfo;
|
||
|
||
public class DroneCaseInfoMineralsApp : SqlSugarBaseApp<DroneCaseInfoMinerals, SugarDbContext>
|
||
{
|
||
private readonly IConfiguration _configuration;
|
||
private readonly ISqlSugarClient client;
|
||
private readonly WFProcessApp _processApp;
|
||
private readonly ShpLayerSourceApp _shpLayerSourceApp;
|
||
CommonDataManager _commonDataManager;
|
||
|
||
public DroneCaseInfoMineralsApp(ISugarUnitOfWork<SugarDbContext> unitWork,
|
||
ISimpleClient<DroneCaseInfoMinerals> repository, IAuth auth, ISqlSugarClient sqlSugarClient,
|
||
IConfiguration configuration, WFProcessApp processApp, ShpLayerSourceApp shpLayerSourceApp,
|
||
CommonDataManager commonDataManager) : base(unitWork,
|
||
repository,
|
||
auth)
|
||
{
|
||
_configuration = configuration;
|
||
_processApp = processApp;
|
||
_shpLayerSourceApp = shpLayerSourceApp;
|
||
this.client = sqlSugarClient;
|
||
_commonDataManager = commonDataManager;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 案件详情
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns></returns>
|
||
public async Task<Response<AddOrUpdateDroneCaseInfoReqExtCurrent>> GetCaseInfo(string id)
|
||
{
|
||
var res = new AddOrUpdateDroneCaseInfoReqExtCurrent();
|
||
res.Init();
|
||
//详情
|
||
DroneCaseInfoMinerals info = null;
|
||
var flag = StringExtension.IsGuid(id);
|
||
if (flag)
|
||
{
|
||
info = await Repository.AsSugarClient().Queryable<DroneCaseInfoMinerals>().Where(c => c.Id == id)
|
||
.FirstAsync();
|
||
}
|
||
else
|
||
{
|
||
info = await Repository.AsSugarClient().Queryable<DroneCaseInfoMinerals>().Where(c => c.case_no == id)
|
||
.FirstAsync();
|
||
}
|
||
|
||
//历史案件
|
||
var relationCaseNoList = await this.Repository.AsSugarClient().Queryable<DroneCaseInfoRelation>()
|
||
.Where(a => a.caseid == info.Id).Select(a => a.relation_case_no).ToListAsync();
|
||
|
||
//案件标签
|
||
var tags = await this.Repository.AsSugarClient().Queryable<DroneCaseInfoTag>()
|
||
.LeftJoin<SysCategory>((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
|
||
{
|
||
if (!string.IsNullOrEmpty(info.centerlng_base))
|
||
{
|
||
res.lng = Decimal.Round(Decimal.Parse(info.centerlng_base), 6);
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(info.centerlat_base))
|
||
{
|
||
res.lat = Decimal.Round(Decimal.Parse(info.centerlat_base), 6);
|
||
}
|
||
}
|
||
|
||
res.info = info;
|
||
res.relationCaseNo = relationCaseNoList;
|
||
res.tags = tags;
|
||
|
||
return new Response<AddOrUpdateDroneCaseInfoReqExtCurrent>
|
||
{
|
||
Result = res,
|
||
Message = "获取数据成功"
|
||
};
|
||
}
|
||
|
||
/// <summary>
|
||
/// 案件详情
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns></returns>
|
||
public async Task<Response<DroneCaseInfoMinerals>> GetCaseInfoById(string id)
|
||
{
|
||
var info = await Repository.AsSugarClient().Queryable<DroneCaseInfoMinerals>()
|
||
.Where(c => c.Id == id)
|
||
.FirstAsync();
|
||
info.hefapanding_fill = "加工".Equals(info.typename) ? info.hefapanding_jgfill : info.hefapanding_fill;
|
||
return new Response<DroneCaseInfoMinerals>
|
||
{
|
||
Result = info,
|
||
Message = "获取数据成功"
|
||
};
|
||
}
|
||
|
||
#region 工作管理
|
||
|
||
/// <summary>
|
||
/// 图斑调整
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns>查询待填报图斑</returns>
|
||
[Obsolete]
|
||
public async Task<Response<PageInfo<List<dynamic>>>> LoadModifyingTaskList(MineralsTaskListReq req)
|
||
{
|
||
RefAsync<int> total = 0;
|
||
using var db = Repository.AsSugarClient();
|
||
var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoMineralsSchemeCode").Value;
|
||
var authStrategyContext = _auth.GetCurrentUser();
|
||
if (authStrategyContext == null)
|
||
{
|
||
throw new Exception("用户未登录");
|
||
}
|
||
|
||
var user = authStrategyContext.User;
|
||
var orgList = authStrategyContext.Orgs;
|
||
var orgIds = orgList.Select(x => x.Id.ToString()).ToList();
|
||
var isCity = 0;
|
||
if (authStrategyContext.User.Id.Equals(-1))
|
||
{
|
||
isCity = 1;
|
||
}
|
||
|
||
var year = req.year == 0 ? DateTime.Now.Year + "" : req.year + "";
|
||
//var dateTime = req.year == 0 ? DateTime.Now : new DateTime(req.year, 1, 1);
|
||
DateTime? startTime = null, endTime = null;
|
||
if (req.startTime != null && req.endTime != null)
|
||
{
|
||
startTime = DateTime.Parse(req.startTime);
|
||
endTime = DateTime.Parse(req.endTime).AddDays(1).AddMilliseconds(-1);
|
||
}
|
||
// todo 县级驳回 市级驳回
|
||
|
||
var result = await db.Queryable<DroneCaseInfoMinerals>()
|
||
.LeftJoin<WFTask>((m, t) => m.Id.Equals(t.ProcessId))
|
||
.LeftJoin<DroneTaskFavorite>((m, t, f) => f.TaskId.Equals(t.Id) && f.FavoriteUserId == user.Id.ToString())
|
||
.Where((m, t) => t.State.Equals(1)) // 激活状态任务
|
||
.Where((m, t) => t.ProcessCode.Equals(schemeCode))
|
||
.Where((m, t) => m.handle_status_id.Equals(1)) // 图斑状态
|
||
.Where(m => m.is_closed.Equals(0))
|
||
.WhereIF(
|
||
!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("市级驳回") &&
|
||
req.nowStatus.Contains("县级驳回"),
|
||
(m, t) => m.is_tbsjbohui > 0 || m.is_tbxjbohui > 0 || m.is_zgsjbohui > 0 || m.is_zgxjbohui > 0)
|
||
.WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("市级驳回"),
|
||
(m, t) => m.is_tbsjbohui > 0 || m.is_zgsjbohui > 0)
|
||
.WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("县级驳回"),
|
||
(m, t) => m.is_tbxjbohui > 0 || m.is_zgxjbohui > 0)
|
||
.WhereIF(req.year != 0, m => m.syear_base.Equals(req.year.ToString()))
|
||
//.Where(m => m.syear_base.Equals(year))
|
||
//.Where(m => SqlFunc.DateIsSame(Convert.ToDateTime(m.xiafatime_base), dateTime, DateType.Year))
|
||
.WhereIF(isCity.Equals(0), (m, t) =>
|
||
orgIds.Contains(m.countyid) || orgIds.Contains(m.streetid) || orgIds.Contains(m.communityid)) // 数据权限
|
||
.WhereIF(!string.IsNullOrEmpty(req.countyid), m => m.countyid.Equals(req.countyid)) // 县区
|
||
.WhereIF(!string.IsNullOrEmpty(req.streetid), m => m.streetid.Equals(req.streetid)) // 街镇
|
||
.WhereIF(!string.IsNullOrEmpty(req.caseNo), m => m.case_no.Contains(req.caseNo)) // 图斑号查询
|
||
.WhereIF(!string.IsNullOrEmpty(req.tubanlaiyuan), m => m.tubanlaiyuan.Equals(req.tubanlaiyuan)) // 图斑来源
|
||
.WhereIF(!string.IsNullOrEmpty(req.typename), m => m.typename.Equals(req.typename)) // 图斑类型 开采 加工
|
||
.WhereIF(req.type == 1, (m, t, f) => f.FavoriteUserId.Equals(user.Id.ToString()))
|
||
.WhereIF(!string.IsNullOrEmpty(req.startTime) && !string.IsNullOrEmpty(req.endTime), m =>
|
||
SqlFunc.Between(m.xiafatime_base, startTime,
|
||
endTime)) // 时间段查询
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("weifaarea_base"), m => SqlFunc.ToDouble(m.weifaarea_base),
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("gengdi_area"), m => SqlFunc.ToDouble(m.weifaarea_base),
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("synchronoustime"),
|
||
m => m.xiafatime_base,
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
//县区 街镇 图斑号 处理状态 图斑类型 总面积 违法面积 耕地面积
|
||
.Select<dynamic>((m, t, f) => new
|
||
{
|
||
Fid = f.Id,
|
||
id = m.Id,
|
||
processid = t.ProcessId,
|
||
processcode = t.ProcessCode, // 流程编码
|
||
taskid = t.Id,
|
||
caseno = m.case_no,
|
||
handlestatusid = m.handle_status_id, // 处理状态
|
||
unitname = t.UnitName, // 节点名称
|
||
tubanlaiyuan = m.tubanlaiyuan, // 图斑来源
|
||
typename = m.typename, // 图斑类型
|
||
geomid = m.geomid, // 图斑id
|
||
weifaarea = m.weifaarea_punish, // 违法面积
|
||
countyid = m.countyid, // 县区
|
||
countyname = m.countyname, // 县区
|
||
streetid = m.streetid, // 街镇
|
||
streetname = m.streetname, // 街镇
|
||
m.weifaarea_base, // 图斑面积
|
||
gengdi_area = m.gengdi_area, // 耕地面积
|
||
//is_shijibohui:市级驳回 is_drawback: 县级驳回
|
||
is_shijibohui = m.is_zgsjbohui,
|
||
is_drawback = m.is_zgxjbohui,
|
||
shijibohui_count = m.is_tbsjbohui + m.is_zgsjbohui,
|
||
illegalarea = string.IsNullOrEmpty(m.weifazhandiarea_base)
|
||
? m.weifakaicaiarea_base
|
||
: m.weifazhandiarea_base // 违法面积
|
||
})
|
||
.ToPageListAsync(req.page, req.limit, total);
|
||
|
||
return new Response<PageInfo<List<dynamic>>>
|
||
{
|
||
Result = new PageInfo<List<dynamic>>
|
||
{
|
||
Total = total,
|
||
Items = result
|
||
}
|
||
};
|
||
}
|
||
|
||
/// <summary>
|
||
/// 图斑填报
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns>查询待填报,整改的图斑</returns>
|
||
public async Task<Response<PageInfo<List<dynamic>>>> LoadReportingTaskList(MineralsTaskListReq req)
|
||
{
|
||
RefAsync<int> total = 0;
|
||
using var db = Repository.AsSugarClient();
|
||
var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoMineralsSchemeCode").Value;
|
||
|
||
var authStrategyContext = _auth.GetCurrentUser();
|
||
if (authStrategyContext == null)
|
||
{
|
||
throw new Exception("用户未登录");
|
||
}
|
||
|
||
var user = authStrategyContext.User;
|
||
var orgList = authStrategyContext.Orgs;
|
||
var orgIds = orgList.Select(x => x.Id.ToString()).ToList();
|
||
var isCity = 0;
|
||
if (authStrategyContext.User.Id.Equals(-1))
|
||
{
|
||
isCity = 1;
|
||
}
|
||
|
||
List<int> statusList = null;
|
||
if (!string.IsNullOrEmpty(req.nowStatus))
|
||
{
|
||
var temp = req.nowStatus.Split(",").ToList();
|
||
temp.Remove("市级驳回");
|
||
temp.Remove("县级驳回");
|
||
statusList = temp.Select(int.Parse).ToList();
|
||
}
|
||
|
||
var year = req.year == 0 ? DateTime.Now.Year + "" : req.year + "";
|
||
//var dateTime = req.year == 0 ? DateTime.Now : new DateTime(req.year, 1, 1);
|
||
DateTime? startTime = null, endTime = null;
|
||
if (req.startTime != null && req.endTime != null)
|
||
{
|
||
startTime = DateTime.Parse(req.startTime);
|
||
endTime = DateTime.Parse(req.endTime).AddDays(1).AddMilliseconds(-1);
|
||
}
|
||
|
||
DateTime now = DateTime.Now;
|
||
var result = await db.Queryable<DroneCaseInfoMinerals>()
|
||
.LeftJoin<WFTask>((m, t) => m.Id.Equals(t.ProcessId))
|
||
.LeftJoin<DroneTaskFavorite>((m, t, f) => f.TaskId.Equals(t.Id) && f.FavoriteUserId == user.Id.ToString())
|
||
.Where((m, t) => t.State.Equals(1)) // 激活状态任务
|
||
.Where((m, t) => t.ProcessCode.Equals(schemeCode))
|
||
.Where((m, t) => m.handle_status_id.Equals(1) || m.handle_status_id.Equals(2)) // 图斑状态
|
||
.Where(m => m.is_closed.Equals(0))
|
||
.WhereIF(
|
||
!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("市级驳回") &&
|
||
req.nowStatus.Contains("县级驳回"),
|
||
(m, t) => m.is_tbsjbohui > 0 || m.is_tbxjbohui > 0 || m.is_zgsjbohui > 0 || m.is_zgxjbohui > 0)
|
||
.WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("市级驳回"),
|
||
(m, t) => m.is_tbsjbohui > 0)
|
||
.WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("县级驳回"),
|
||
(m, t) => m.is_tbxjbohui > 0)
|
||
.WhereIF(req.year != 0, m => m.syear_base.Equals(req.year.ToString()))
|
||
//.Where(m => m.syear_base.Equals(year))
|
||
//.Where(m => SqlFunc.DateIsSame(Convert.ToDateTime(m.xiafatime_base), dateTime, DateType.Year))
|
||
.WhereIF(isCity.Equals(0), (m, t) =>
|
||
orgIds.Contains(m.countyid) || orgIds.Contains(m.streetid) || orgIds.Contains(m.communityid)) // 数据权限
|
||
.WhereIF(!string.IsNullOrEmpty(req.countyid), m => m.countyid.Equals(req.countyid)) // 县区
|
||
.WhereIF(!string.IsNullOrEmpty(req.streetid), m => m.streetid.Equals(req.streetid)) // 街镇
|
||
.WhereIF(!string.IsNullOrEmpty(req.caseNo), m => m.case_no.Contains(req.caseNo)) // 图斑号查询
|
||
.WhereIF(!string.IsNullOrEmpty(req.tubanlaiyuan), m => m.tubanlaiyuan.Equals(req.tubanlaiyuan)) // 图斑来源
|
||
.WhereIF(!string.IsNullOrEmpty(req.typename), m => m.typename.Equals(req.typename)) // 图斑类型 开采 加工
|
||
.WhereIF(req.type == 1, (m, t, f) => f.FavoriteUserId.Equals(user.Id.ToString()))
|
||
.WhereIF(statusList != null && statusList.Any(), m => statusList.Contains((int)m.handle_status_id)) // 图斑状态
|
||
// todo
|
||
.WhereIF(!string.IsNullOrEmpty(req.startTime) && !string.IsNullOrEmpty(req.endTime), m =>
|
||
SqlFunc.Between(m.xiafatime_base, startTime, endTime)) // 时间段查询
|
||
//县区 街镇 图斑号 处理状态 图斑类型 总面积 违法面积 耕地面积
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("weifaarea_base"), m => SqlFunc.ToDouble(m.weifaarea_base),
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("gengdi_area"), m => SqlFunc.ToDouble(m.weifaarea_base),
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("synchronoustime"),
|
||
m => m.xiafatime_base,
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
.Select<dynamic>((m, t, f) => new
|
||
{
|
||
Fid = f.Id,
|
||
id = m.Id,
|
||
processid = t.ProcessId,
|
||
processcode = t.ProcessCode, // 流程编码
|
||
taskid = t.Id,
|
||
caseno = m.case_no,
|
||
handlestatusid = m.handle_status_id, // 处理状态
|
||
unitname = t.UnitName,
|
||
tubanlaiyuan = m.tubanlaiyuan, // 图斑来源
|
||
typename = m.typename, // 图斑类型
|
||
geomid = m.geomid, // 图斑id
|
||
weifaarea = m.weifaarea_punish, // 违法面积
|
||
countyid = m.countyid, // 县区
|
||
countyname = m.countyname, // 县区
|
||
streetid = m.streetid, // 街镇
|
||
streetname = m.streetname, // 街镇
|
||
m.weifaarea_base, // 图斑面积
|
||
gengdi_area = m.gengdi_area, // 耕地面积
|
||
shijibohui_count = SqlFunc.IsNull(m.is_tbsjbohui, 0) + SqlFunc.IsNull(m.is_zgsjbohui, 0),
|
||
is_shijibohui = m.is_tbsjbohui,
|
||
is_drawback = m.is_tbxjbohui,
|
||
illegalarea = string.IsNullOrEmpty(m.weifazhandiarea_base)
|
||
? m.weifakaicaiarea_base
|
||
: m.weifazhandiarea_base, // 违法面积
|
||
timeout = (now > (t.TimeoutNotice ?? now)) ? 1 : 0
|
||
})
|
||
.ToPageListAsync(req.page, req.limit, total);
|
||
|
||
return new Response<PageInfo<List<dynamic>>>
|
||
{
|
||
Result = new PageInfo<List<dynamic>>
|
||
{
|
||
Total = total,
|
||
Items = result
|
||
}
|
||
};
|
||
}
|
||
|
||
/// <summary>
|
||
/// 填报审核
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
/// <exception cref="Exception"></exception>
|
||
public async Task<Response<PageInfo<List<MineralsCaseInfoResponse>>>> LoadReportingAuditTaskList(MineralsTaskListReq req)
|
||
{
|
||
RefAsync<int> total = 0;
|
||
using var db = Repository.AsSugarClient();
|
||
var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoMineralsSchemeCode").Value;
|
||
var authStrategyContext = _auth.GetCurrentUser();
|
||
if (authStrategyContext == null)
|
||
{
|
||
throw new Exception("用户未登录");
|
||
}
|
||
|
||
var user = authStrategyContext.User;
|
||
|
||
var orgList = authStrategyContext.Orgs;
|
||
var orgIds = orgList.Select(x => x.Id.ToString()).ToList();
|
||
var isCity = 0;
|
||
if (authStrategyContext.User.Id.Equals(-1))
|
||
{
|
||
isCity = 1;
|
||
}
|
||
|
||
var orgLevel = orgList.Min(a => a.Level); // 0 临沂市 1 县区 2-街镇
|
||
if (orgLevel.Equals(0))
|
||
{
|
||
isCity = 1;
|
||
}
|
||
|
||
var year = req.year == 0 ? DateTime.Now.Year + "" : req.year + "";
|
||
|
||
//var dateTime = req.year == 0 ? DateTime.Now : new DateTime(req.year, 1, 1);
|
||
|
||
var result = await db.Queryable<DroneCaseInfoMinerals>()
|
||
.LeftJoin<WFTask>((m, t) => m.Id.Equals(t.ProcessId))
|
||
.LeftJoin<DroneTaskFavorite>((m, t, f) => f.TaskId.Equals(t.Id) && f.FavoriteUserId == user.Id.ToString())
|
||
.Where((m, t) => t.State.Equals(1)) // 激活状态任务
|
||
.Where((m, t) => t.ProcessCode.Equals(schemeCode))
|
||
.Where(m => m.is_closed.Equals(0))
|
||
.WhereIF(
|
||
!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("市级驳回") &&
|
||
req.nowStatus.Contains("县级驳回"),
|
||
(m, t) => m.is_tbsjbohui > 0 || m.is_tbxjbohui > 0 || m.is_zgsjbohui > 0 || m.is_zgxjbohui > 0)
|
||
.WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("市级驳回"),
|
||
(m, t) => m.is_tbsjbohui > 0)
|
||
.WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("县级驳回"),
|
||
(m, t) => m.is_tbxjbohui > 0)
|
||
.WhereIF(orgLevel.Equals(0), m => m.handle_status_id.Equals(4))
|
||
.WhereIF(orgLevel != 0, (m, t) => m.handle_status_id.Equals(3)) // 图斑状态
|
||
.WhereIF(req.year != 0, m => m.syear_base.Equals(req.year.ToString()))
|
||
//.Where(m => m.syear_base.Equals(year))
|
||
//.Where(m => SqlFunc.DateIsSame(Convert.ToDateTime(m.xiafatime_base), dateTime, DateType.Year))
|
||
.WhereIF(isCity.Equals(0), (m, t) =>
|
||
orgIds.Contains(m.countyid) || orgIds.Contains(m.streetid) || orgIds.Contains(m.communityid)) // 数据权限
|
||
.WhereIF(!string.IsNullOrEmpty(req.countyid), m => m.countyid.Equals(req.countyid)) // 县区
|
||
.WhereIF(!string.IsNullOrEmpty(req.streetid), m => m.streetid.Equals(req.streetid)) // 街镇
|
||
.WhereIF(!string.IsNullOrEmpty(req.caseNo), m => m.case_no.Contains(req.caseNo)) // 图斑号查询
|
||
.WhereIF(!string.IsNullOrEmpty(req.tubanlaiyuan), m => m.tubanlaiyuan.Equals(req.tubanlaiyuan)) // 图斑来源
|
||
.WhereIF(!string.IsNullOrEmpty(req.typename), m => m.typename.Equals(req.typename)) // 图斑类型 开采 加工
|
||
.WhereIF(req.type == 1, (m, t, f) => f.FavoriteUserId.Equals(user.Id.ToString()))
|
||
.WhereIF(!string.IsNullOrEmpty(req.startTime) && !string.IsNullOrEmpty(req.endTime), m =>
|
||
SqlFunc.Between(m.xiafatime_base, Convert.ToDateTime(req.startTime),
|
||
Convert.ToDateTime(req.endTime))) // 时间段查询
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("weifaarea_base"), m => SqlFunc.ToDouble(m.weifaarea_base),
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("gengdi_area"), m => SqlFunc.ToDouble(m.weifaarea_base),
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("synchronoustime"),
|
||
m => m.xiafatime_base,
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
//县区 街镇 图斑号 处理状态 图斑类型 总面积 违法面积 耕地面积
|
||
.Select<MineralsCaseInfoResponse>((m, t, f) => new MineralsCaseInfoResponse()
|
||
{
|
||
Fid = f.Id,
|
||
id = m.Id,
|
||
processid = t.ProcessId,
|
||
processcode = t.ProcessCode, // 流程编码
|
||
taskid = t.Id,
|
||
caseno = m.case_no,
|
||
handlestatusid = m.handle_status_id, // 处理状态
|
||
unitname = t.UnitName,
|
||
tubanlaiyuan = m.tubanlaiyuan, // 图斑来源
|
||
typename = m.typename, // 图斑类型
|
||
geomid = m.geomid, // 图斑id
|
||
weifaarea = m.weifaarea_punish, // 违法面积
|
||
countyid = m.countyid, // 县区
|
||
countyname = m.countyname, // 县区
|
||
streetid = m.streetid, // 街镇
|
||
streetname = m.streetname, // 街镇
|
||
weifaarea_base = m.weifaarea_base, // 图斑面积
|
||
gengdi_area = m.gengdi_area, // 耕地面积
|
||
is_tbsjbohui = m.is_tbsjbohui,
|
||
is_zgsjbohui = m.is_zgsjbohui,
|
||
is_shijibohui = m.is_tbsjbohui, //填报市级驳回
|
||
is_drawback = m.is_tbxjbohui, // 填报县级驳回
|
||
weifakaicaiarea_base = m.weifakaicaiarea_base ,
|
||
weifazhandiarea_base = m.weifazhandiarea_base,
|
||
})
|
||
.ToPageListAsync(req.page, req.limit, total);
|
||
|
||
foreach (var caseinfo in result)
|
||
{
|
||
caseinfo.shijibohui_count = caseinfo.is_tbsjbohui ?? 0 + caseinfo.is_zgsjbohui ?? 0;
|
||
caseinfo.illegalarea = caseinfo.typename.Equals("开采")
|
||
? caseinfo.weifakaicaiarea_base
|
||
: caseinfo.weifazhandiarea_base; // 违法面积
|
||
|
||
}
|
||
return new Response<PageInfo<List<MineralsCaseInfoResponse>>>
|
||
{
|
||
Result = new PageInfo<List<MineralsCaseInfoResponse>>
|
||
{
|
||
Total = total,
|
||
Items = result
|
||
}
|
||
};
|
||
}
|
||
|
||
/// <summary>
|
||
/// 图斑查处
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
/// <exception cref="Exception"></exception>
|
||
public async Task<Response<PageInfo<List<dynamic>>>> LoadExaminingTaskList(MineralsTaskListReq req)
|
||
{
|
||
RefAsync<int> total = 0;
|
||
using var db = Repository.AsSugarClient();
|
||
var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoMineralsSchemeCode").Value;
|
||
var authStrategyContext = _auth.GetCurrentUser();
|
||
if (authStrategyContext == null)
|
||
{
|
||
throw new Exception("用户未登录");
|
||
}
|
||
|
||
var user = authStrategyContext.User;
|
||
|
||
var orgList = authStrategyContext.Orgs;
|
||
var orgIds = orgList.Select(x => x.Id.ToString()).ToList();
|
||
var isCity = 0;
|
||
if (authStrategyContext.User.Id.Equals(-1))
|
||
{
|
||
isCity = 1;
|
||
}
|
||
|
||
//var dateTime = req.year == 0 ? DateTime.Now : new DateTime(req.year, 1, 1);
|
||
var year = req.year == 0 ? DateTime.Now.Year + "" : req.year + "";
|
||
|
||
var result = await db.Queryable<DroneCaseInfoMinerals>()
|
||
.LeftJoin<WFTask>((m, t) => m.Id.Equals(t.ProcessId))
|
||
.LeftJoin<DroneTaskFavorite>((m, t, f) => f.TaskId.Equals(t.Id) && f.FavoriteUserId == user.Id.ToString())
|
||
.Where((m, t) => t.State.Equals(1)) // 激活状态任务
|
||
.Where((m, t) => t.ProcessCode.Equals(schemeCode))
|
||
.Where((m, t) => m.handle_status_id.Equals(5)) // 图斑状态 待查处
|
||
.Where(m => m.is_closed.Equals(0)) // 未关闭任务
|
||
.WhereIF(
|
||
!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("市级驳回") &&
|
||
req.nowStatus.Contains("县级驳回"),
|
||
(m, t) => m.is_tbsjbohui > 0 || m.is_tbxjbohui > 0 || m.is_zgsjbohui > 0 || m.is_zgxjbohui > 0)
|
||
.WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("市级驳回"),
|
||
(m, t) => m.is_zgsjbohui > 0)
|
||
.WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("县级驳回"),
|
||
(m, t) => m.is_zgxjbohui > 0)
|
||
.WhereIF(req.year != 0, m => m.syear_base.Equals(req.year.ToString()))
|
||
//.Where(m => m.syear_base.Equals(year))
|
||
//.Where(m => SqlFunc.DateIsSame(Convert.ToDateTime(m.xiafatime_base), dateTime, DateType.Year))
|
||
.WhereIF(isCity.Equals(0), (m, t) =>
|
||
orgIds.Contains(m.countyid) || orgIds.Contains(m.streetid) || orgIds.Contains(m.communityid)) // 数据权限
|
||
.WhereIF(req.register != null, m => m.islian_punish.Equals(req.register))
|
||
.WhereIF(!string.IsNullOrEmpty(req.countyid), m => m.countyid.Equals(req.countyid)) // 县区
|
||
.WhereIF(!string.IsNullOrEmpty(req.streetid), m => m.streetid.Equals(req.streetid)) // 街镇
|
||
.WhereIF(!string.IsNullOrEmpty(req.caseNo), m => m.case_no.Contains(req.caseNo)) // 图斑号查询
|
||
.WhereIF(!string.IsNullOrEmpty(req.tubanlaiyuan), m => m.tubanlaiyuan.Equals(req.tubanlaiyuan)) // 图斑来源
|
||
.WhereIF(!string.IsNullOrEmpty(req.typename), m => m.typename.Equals(req.typename)) // 图斑类型 开采 加工
|
||
.WhereIF(req.type == 1, (m, t, f) => f.FavoriteUserId.Equals(user.Id.ToString()))
|
||
.WhereIF(!string.IsNullOrEmpty(req.startTime) && !string.IsNullOrEmpty(req.endTime), m =>
|
||
SqlFunc.Between(m.xiafatime_base, Convert.ToDateTime(req.startTime),
|
||
Convert.ToDateTime(req.endTime))) // 时间段查询
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("weifaarea_base"), m => SqlFunc.ToDouble(m.weifaarea_base),
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("gengdi_area"), m => SqlFunc.ToDouble(m.weifaarea_base),
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("synchronoustime"),
|
||
m => m.xiafatime_base,
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
//县区 街镇 图斑号 处理状态 图斑类型 总面积 违法面积 耕地面积
|
||
.Select<dynamic>((m, t, f) => new
|
||
{
|
||
Fid = f.Id,
|
||
id = m.Id,
|
||
processid = t.ProcessId,
|
||
processcode = t.ProcessCode, // 流程编码
|
||
taskid = t.Id,
|
||
caseno = m.case_no,
|
||
handlestatusid = m.handle_status_id, // 处理状态
|
||
unitname = t.UnitName,
|
||
tubanlaiyuan = m.tubanlaiyuan, // 图斑来源
|
||
typename = m.typename, // 图斑类型
|
||
geomid = m.geomid, // 图斑id
|
||
weifaarea = m.weifaarea_punish, // 违法面积
|
||
countyid = m.countyid, // 县区
|
||
countyname = m.countyname, // 县区
|
||
streetid = m.streetid, // 街镇
|
||
streetname = m.streetname, // 街镇
|
||
m.weifaarea_base, // 图斑面积
|
||
gengdi_area = m.gengdi_area, // 耕地面积
|
||
shijibohui_count = m.is_tbsjbohui + m.is_zgsjbohui,
|
||
is_shijibohui = m.is_zgsjbohui,
|
||
is_drawback = m.is_zgxjbohui,
|
||
illegalarea = m.typename.Equals("开采") ? m.weifakaicaiarea_base : m.weifazhandiarea_base // 违法面积
|
||
})
|
||
.ToPageListAsync(req.page, req.limit, total);
|
||
|
||
return new Response<PageInfo<List<dynamic>>>
|
||
{
|
||
Result = new PageInfo<List<dynamic>>
|
||
{
|
||
Total = total,
|
||
Items = result
|
||
}
|
||
};
|
||
}
|
||
|
||
/// <summary>
|
||
/// 查处审核
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
/// <exception cref="Exception"></exception>
|
||
[Obsolete(message: "矿产专题已不使用")]
|
||
public async Task<Response<PageInfo<List<dynamic>>>> LoadExaminingAuditTaskList(MineralsTaskListReq req)
|
||
{
|
||
RefAsync<int> total = 0;
|
||
using var db = Repository.AsSugarClient();
|
||
var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoMineralsSchemeCode").Value;
|
||
var authStrategyContext = _auth.GetCurrentUser();
|
||
if (authStrategyContext == null)
|
||
{
|
||
throw new Exception("用户未登录");
|
||
}
|
||
|
||
var user = authStrategyContext.User;
|
||
|
||
var orgList = authStrategyContext.Orgs;
|
||
var orgIds = orgList.Select(x => x.Id.ToString()).ToList();
|
||
var isCity = 0;
|
||
if (authStrategyContext.User.Id.Equals(-1))
|
||
{
|
||
isCity = 1;
|
||
}
|
||
|
||
var orgLevel = orgList.Min(a => a.Level); // 0 临沂市 1 县区 2-街镇
|
||
if (orgLevel.Equals(0))
|
||
{
|
||
isCity = 1;
|
||
}
|
||
|
||
//var dateTime = req.year == 0 ? DateTime.Now : new DateTime(req.year, 1, 1);
|
||
var year = req.year == 0 ? DateTime.Now.Year + "" : req.year + "";
|
||
|
||
|
||
var result = await db.Queryable<DroneCaseInfoMinerals>()
|
||
.LeftJoin<WFTask>((m, t) => m.Id.Equals(t.ProcessId))
|
||
.LeftJoin<DroneTaskFavorite>((m, t, f) => f.TaskId.Equals(t.Id) && f.FavoriteUserId == user.Id.ToString())
|
||
.Where((m, t) => t.State.Equals(1)) // 激活状态任务
|
||
.Where((m, t) => t.ProcessCode.Equals(schemeCode))
|
||
.Where(m => m.is_closed.Equals(0)) // 未关闭任务
|
||
.WhereIF(
|
||
!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("市级驳回") &&
|
||
req.nowStatus.Contains("县级驳回"),
|
||
(m, t) => m.is_tbsjbohui > 0 || m.is_tbxjbohui > 0 || m.is_zgsjbohui > 0 || m.is_zgxjbohui > 0)
|
||
.WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("市级驳回"),
|
||
(m, t) => m.is_zgsjbohui > 0)
|
||
.WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("县级驳回"),
|
||
(m, t) => m.is_zgxjbohui > 0)
|
||
.WhereIF(orgLevel.Equals(0), m => m.handle_status_id.Equals(7))
|
||
.WhereIF(orgLevel != 0, m => m.handle_status_id.Equals(6)) // 图斑状态
|
||
.WhereIF(req.year != 0, m => m.syear_base.Equals(req.year.ToString()))
|
||
//.Where(m=>m.syear_base.Equals(year))
|
||
//.Where(m => SqlFunc.DateIsSame(Convert.ToDateTime(m.xiafatime_base), dateTime, DateType.Year))
|
||
.WhereIF(isCity.Equals(0), (m, t) =>
|
||
orgIds.Contains(m.countyid) || orgIds.Contains(m.streetid) || orgIds.Contains(m.communityid)) // 数据权限
|
||
.WhereIF(req.register != null, m => m.islian_punish.Equals(req.register))
|
||
.WhereIF(!string.IsNullOrEmpty(req.countyid), m => m.countyid.Equals(req.countyid)) // 县区
|
||
.WhereIF(!string.IsNullOrEmpty(req.streetid), m => m.streetid.Equals(req.streetid)) // 街镇
|
||
.WhereIF(!string.IsNullOrEmpty(req.caseNo), m => m.case_no.Contains(req.caseNo)) // 图斑号查询
|
||
.WhereIF(!string.IsNullOrEmpty(req.tubanlaiyuan), m => m.tubanlaiyuan.Equals(req.tubanlaiyuan)) // 图斑来源
|
||
.WhereIF(!string.IsNullOrEmpty(req.typename), m => m.typename.Equals(req.typename)) // 图斑类型 开采 加工
|
||
.WhereIF(req.type == 1, (m, t, f) => f.FavoriteUserId.Equals(user.Id.ToString()))
|
||
.WhereIF(!string.IsNullOrEmpty(req.startTime) && !string.IsNullOrEmpty(req.endTime), m =>
|
||
SqlFunc.Between(m.xiafatime_base, Convert.ToDateTime(req.startTime),
|
||
Convert.ToDateTime(req.endTime))) // 时间段查询
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("weifaarea_base"), m => SqlFunc.ToDouble(m.weifaarea_base),
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("gengdi_area"), m => SqlFunc.ToDouble(m.weifaarea_base),
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("synchronoustime"),
|
||
m => m.xiafatime_base,
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
//县区 街镇 图斑号 处理状态 图斑类型 总面积 违法面积 耕地面积
|
||
.Select<dynamic>((m, t, f) => new
|
||
{
|
||
Fid = f.Id,
|
||
id = m.Id,
|
||
processid = t.ProcessId,
|
||
processcode = t.ProcessCode, // 流程编码
|
||
taskid = t.Id,
|
||
caseno = m.case_no,
|
||
handlestatusid = m.handle_status_id, // 处理状态
|
||
unitname = t.UnitName,
|
||
tubanlaiyuan = m.tubanlaiyuan, // 图斑来源
|
||
typename = m.typename, // 图斑类型
|
||
geomid = m.geomid, // 图斑id
|
||
weifaarea = m.weifaarea_punish, // 违法面积
|
||
countyid = m.countyid, // 县区
|
||
countyname = m.countyname, // 县区
|
||
streetid = m.streetid, // 街镇
|
||
streetname = m.streetname, // 街镇
|
||
m.weifaarea_base, // 图斑面积
|
||
gengdi_area = m.gengdi_area, // 耕地面积
|
||
shijibohui_count = m.is_tbsjbohui + m.is_zgsjbohui,
|
||
m.is_tbsjbohui,
|
||
m.is_zgsjbohui,
|
||
m.is_tbxjbohui,
|
||
m.is_zgxjbohui,
|
||
illegalarea = m.typename.Equals("开采") ? m.weifakaicaiarea_base : m.weifazhandiarea_base // 违法面积
|
||
})
|
||
.ToPageListAsync(req.page, req.limit, total);
|
||
|
||
|
||
return new Response<PageInfo<List<dynamic>>>
|
||
{
|
||
Result = new PageInfo<List<dynamic>>
|
||
{
|
||
Total = total,
|
||
Items = result
|
||
}
|
||
};
|
||
}
|
||
|
||
/// <summary>
|
||
/// 图斑整改
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
/// <exception cref="Exception"></exception>
|
||
public async Task<Response<PageInfo<List<dynamic>>>> LoadRectifyingTaskList(MineralsTaskListReq req)
|
||
{
|
||
RefAsync<int> total = 0;
|
||
using var db = Repository.AsSugarClient();
|
||
var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoMineralsSchemeCode").Value;
|
||
var authStrategyContext = _auth.GetCurrentUser();
|
||
if (authStrategyContext == null)
|
||
{
|
||
throw new Exception("用户未登录");
|
||
}
|
||
|
||
var user = authStrategyContext.User;
|
||
|
||
var orgList = authStrategyContext.Orgs;
|
||
var orgIds = orgList.Select(x => x.Id.ToString()).ToList();
|
||
var isCity = 0;
|
||
if (authStrategyContext.User.Id.Equals(-1))
|
||
{
|
||
isCity = 1;
|
||
}
|
||
|
||
//var dateTime = req.year == 0 ? DateTime.Now : new DateTime(req.year, 1, 1);
|
||
var year = req.year == 0 ? DateTime.Now.Year + "" : req.year + "";
|
||
|
||
var result = await db.Queryable<DroneCaseInfoMinerals>()
|
||
.LeftJoin<WFTask>((m, t) => m.Id.Equals(t.ProcessId))
|
||
.LeftJoin<DroneTaskFavorite>((m, t, f) => f.TaskId.Equals(t.Id) && f.FavoriteUserId == user.Id.ToString())
|
||
.Where((m, t) => t.State.Equals(1)) // 激活状态任务
|
||
.Where((m, t) => t.ProcessCode.Equals(schemeCode))
|
||
.Where((m, t) => m.handle_status_id.Equals(8)) // 图斑状态 查处后待整改
|
||
.Where(m => m.is_closed.Equals(0)) // 未关闭任务
|
||
.WhereIF(
|
||
!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("市级驳回") &&
|
||
req.nowStatus.Contains("县级驳回"),
|
||
(m, t) => m.is_tbsjbohui > 0 || m.is_tbxjbohui > 0 || m.is_zgsjbohui > 0 || m.is_zgxjbohui > 0)
|
||
.WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("市级驳回"),
|
||
(m, t) => m.is_zgsjbohui > 0)
|
||
.WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("县级驳回"),
|
||
(m, t) => m.is_zgxjbohui > 0)
|
||
.WhereIF(req.year != 0, m => m.syear_base.Equals(req.year.ToString()))
|
||
//.Where(m=>m.syear_base.Equals(year))
|
||
//.Where(m => SqlFunc.DateIsSame(Convert.ToDateTime(m.xiafatime_base), dateTime, DateType.Year))
|
||
.WhereIF(isCity.Equals(0), (m, t) =>
|
||
orgIds.Contains(m.countyid) || orgIds.Contains(m.streetid) || orgIds.Contains(m.communityid)) // 数据权限
|
||
.WhereIF(!string.IsNullOrEmpty(req.countyid), m => m.countyid.Equals(req.countyid)) // 县区
|
||
.WhereIF(!string.IsNullOrEmpty(req.streetid), m => m.streetid.Equals(req.streetid)) // 街镇
|
||
.WhereIF(!string.IsNullOrEmpty(req.caseNo), m => m.case_no.Contains(req.caseNo)) // 图斑号查询
|
||
.WhereIF(!string.IsNullOrEmpty(req.tubanlaiyuan), m => m.tubanlaiyuan.Equals(req.tubanlaiyuan)) // 图斑来源
|
||
.WhereIF(!string.IsNullOrEmpty(req.typename), m => m.typename.Equals(req.typename)) // 图斑类型 开采 加工
|
||
.WhereIF(req.type == 1, (m, t, f) => f.FavoriteUserId.Equals(user.Id.ToString()))
|
||
.WhereIF(!string.IsNullOrEmpty(req.startTime) && !string.IsNullOrEmpty(req.endTime), m =>
|
||
SqlFunc.Between(m.xiafatime_base, Convert.ToDateTime(req.startTime),
|
||
Convert.ToDateTime(req.endTime))) // 时间段查询
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("weifaarea_base"), m => SqlFunc.ToDouble(m.weifaarea_base),
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("gengdi_area"), m => SqlFunc.ToDouble(m.weifaarea_base),
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("synchronoustime"),
|
||
m => m.xiafatime_base,
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
//县区 街镇 图斑号 处理状态 图斑类型 总面积 违法面积 耕地面积
|
||
.Select<dynamic>((m, t, f) => new
|
||
{
|
||
Fid = f.Id,
|
||
id = m.Id,
|
||
processid = t.ProcessId,
|
||
processcode = t.ProcessCode, // 流程编码
|
||
taskid = t.Id,
|
||
caseno = m.case_no,
|
||
handlestatusid = m.handle_status_id, // 处理状态
|
||
unitname = t.UnitName,
|
||
tubanlaiyuan = m.tubanlaiyuan, // 图斑来源
|
||
typename = m.typename, // 图斑类型
|
||
geomid = m.geomid, // 图斑id
|
||
weifaarea = m.weifaarea_punish, // 违法面积
|
||
countyid = m.countyid, // 县区
|
||
countyname = m.countyname, // 县区
|
||
streetid = m.streetid, // 街镇
|
||
streetname = m.streetname, // 街镇
|
||
m.weifaarea_base, // 图斑面积
|
||
gengdi_area = m.gengdi_area, // 耕地面积
|
||
shijibohui_count = m.is_tbsjbohui + m.is_zgsjbohui,
|
||
is_shijibohui = m.is_zgsjbohui,
|
||
is_drawback = m.is_zgxjbohui,
|
||
illegalarea = m.typename.Equals("开采") ? m.weifakaicaiarea_base : m.weifazhandiarea_base // 违法面积
|
||
})
|
||
.ToPageListAsync(req.page, req.limit, total);
|
||
|
||
|
||
return new Response<PageInfo<List<dynamic>>>
|
||
{
|
||
Result = new PageInfo<List<dynamic>>
|
||
{
|
||
Total = total,
|
||
Items = result
|
||
}
|
||
};
|
||
}
|
||
|
||
/// <summary>
|
||
/// 整改审核
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
/// <exception cref="Exception"></exception>
|
||
public async Task<Response<PageInfo<List<dynamic>>>> LoadRectifyingAuditTaskList(MineralsTaskListReq req)
|
||
{
|
||
RefAsync<int> total = 0;
|
||
using var db = Repository.AsSugarClient();
|
||
var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoMineralsSchemeCode").Value;
|
||
var authStrategyContext = _auth.GetCurrentUser();
|
||
if (authStrategyContext == null)
|
||
{
|
||
throw new Exception("用户未登录");
|
||
}
|
||
|
||
var user = authStrategyContext.User;
|
||
|
||
var orgList = authStrategyContext.Orgs;
|
||
var orgIds = orgList.Select(x => x.Id.ToString()).ToList();
|
||
var isCity = 0;
|
||
if (authStrategyContext.User.Id.Equals(-1))
|
||
{
|
||
isCity = 1;
|
||
}
|
||
|
||
var orgLevel = orgList.Min(a => a.Level); // 0 临沂市 1 县区 2-街镇
|
||
if (orgLevel.Equals(0))
|
||
{
|
||
isCity = 1;
|
||
}
|
||
|
||
//var dateTime = req.year == 0 ? DateTime.Now : new DateTime(req.year, 1, 1);
|
||
var year = req.year == 0 ? DateTime.Now.Year + "" : req.year + "";
|
||
|
||
var result = await db.Queryable<DroneCaseInfoMinerals>()
|
||
.LeftJoin<WFTask>((m, t) => m.Id.Equals(t.ProcessId))
|
||
.LeftJoin<DroneTaskFavorite>((m, t, f) => f.TaskId.Equals(t.Id) && f.FavoriteUserId == user.Id.ToString())
|
||
.Where((m, t) => t.State.Equals(1)) // 激活状态任务
|
||
.Where((m, t) => t.ProcessCode.Equals(schemeCode))
|
||
.Where(m => m.is_closed.Equals(0)) // 未关闭任务
|
||
.WhereIF(
|
||
!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("市级驳回") &&
|
||
req.nowStatus.Contains("县级驳回"),
|
||
(m, t) => m.is_tbsjbohui > 0 || m.is_tbxjbohui > 0 || m.is_zgsjbohui > 0 || m.is_zgxjbohui > 0)
|
||
.WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("市级驳回"),
|
||
(m, t) => m.is_zgsjbohui > 0)
|
||
.WhereIF(!string.IsNullOrEmpty(req.nowStatus) && req.nowStatus.Contains("县级驳回"),
|
||
(m, t) => m.is_zgxjbohui > 0)
|
||
.WhereIF(orgLevel.Equals(0), m => m.handle_status_id.Equals(10))
|
||
.WhereIF(orgLevel != 0, m => m.handle_status_id.Equals(9))
|
||
.WhereIF(req.year != 0, m => m.syear_base.Equals(req.year.ToString()))
|
||
//.Where(m=>m.syear_base.Equals(year))
|
||
//.Where(m => SqlFunc.DateIsSame(Convert.ToDateTime(m.xiafatime_base), dateTime, DateType.Year))
|
||
.WhereIF(isCity.Equals(0), (m, t) =>
|
||
orgIds.Contains(m.countyid) || orgIds.Contains(m.streetid) || orgIds.Contains(m.communityid)) // 数据权限
|
||
.WhereIF(!string.IsNullOrEmpty(req.countyid), m => m.countyid.Equals(req.countyid)) // 县区
|
||
.WhereIF(!string.IsNullOrEmpty(req.streetid), m => m.streetid.Equals(req.streetid)) // 街镇
|
||
.WhereIF(!string.IsNullOrEmpty(req.caseNo), m => m.case_no.Contains(req.caseNo)) // 图斑号查询
|
||
.WhereIF(!string.IsNullOrEmpty(req.tubanlaiyuan), m => m.tubanlaiyuan.Equals(req.tubanlaiyuan)) // 图斑来源
|
||
.WhereIF(!string.IsNullOrEmpty(req.typename), m => m.typename.Equals(req.typename)) // 图斑类型 开采 加工
|
||
.WhereIF(req.type == 1, (m, t, f) => f.FavoriteUserId.Equals(user.Id.ToString()))
|
||
.WhereIF(!string.IsNullOrEmpty(req.startTime) && !string.IsNullOrEmpty(req.endTime), m =>
|
||
SqlFunc.Between(m.xiafatime_base, Convert.ToDateTime(req.startTime),
|
||
Convert.ToDateTime(req.endTime))) // 时间段查询
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("weifaarea_base"), m => SqlFunc.ToDouble(m.weifaarea_base),
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("gengdi_area"), m => SqlFunc.ToDouble(m.weifaarea_base),
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
.OrderByIF(
|
||
!string.IsNullOrEmpty(req.sortType) && !string.IsNullOrEmpty(req.order) &&
|
||
req.sortType.Equals("synchronoustime"),
|
||
m => m.xiafatime_base,
|
||
req.order != null && req.order.ToLower().Equals("desc") ? OrderByType.Desc : OrderByType.Asc)
|
||
//县区 街镇 图斑号 处理状态 图斑类型 总面积 违法面积 耕地面积
|
||
.Select<dynamic>((m, t, f) => new
|
||
{
|
||
Fid = f.Id,
|
||
id = m.Id,
|
||
processid = t.ProcessId,
|
||
processcode = t.ProcessCode, // 流程编码
|
||
taskid = t.Id,
|
||
caseno = m.case_no,
|
||
handlestatusid = m.handle_status_id, // 处理状态
|
||
unitname = t.UnitName,
|
||
tubanlaiyuan = m.tubanlaiyuan, // 图斑来源
|
||
typename = m.typename, // 图斑类型
|
||
geomid = m.geomid, // 图斑id
|
||
weifaarea = m.weifaarea_punish, // 违法面积
|
||
countyid = m.countyid, // 县区
|
||
countyname = m.countyname, // 县区
|
||
streetid = m.streetid, // 街镇
|
||
streetname = m.streetname, // 街镇
|
||
m.weifaarea_base, // 图斑面积
|
||
gengdi_area = m.gengdi_area, // 耕地面积
|
||
shijibohui_count = m.is_tbsjbohui + m.is_zgsjbohui,
|
||
is_shijibohui = m.is_zgsjbohui,
|
||
is_drawback = m.is_zgxjbohui,
|
||
illegalarea = m.typename.Equals("开采") ? m.weifakaicaiarea_base : m.weifazhandiarea_base // 违法面积
|
||
})
|
||
.ToPageListAsync(req.page, req.limit, total);
|
||
|
||
return new Response<PageInfo<List<dynamic>>>
|
||
{
|
||
Result = new PageInfo<List<dynamic>>
|
||
{
|
||
Total = total,
|
||
Items = result
|
||
}
|
||
};
|
||
}
|
||
|
||
#endregion
|
||
|
||
/// <summary>
|
||
/// 图斑列表
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
public async Task<Response<PageInfo<List<dynamic>>>> LoadCaseInfoMineralsTuBanList(CaseInfoMineralsTuBanReq req)
|
||
{
|
||
var authStrategyContext = _auth.GetCurrentUser();
|
||
var user = authStrategyContext.User;
|
||
RefAsync<int> totalcount = 0;
|
||
string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id;
|
||
int level = client.Ado.GetInt(sql1);
|
||
//该用户下包含所有部门
|
||
List<string> deplist = new List<string>();
|
||
string sqlpart = " ";
|
||
if (user != null && user.Id != -1 && level != 0)
|
||
{
|
||
var departs = client.Queryable<SysUserOrg>().Where(r => r.UserId == user.Id).ToList();
|
||
foreach (var item in departs)
|
||
{
|
||
var list = client.Queryable<SysOrg>().ToChildList(it => it.ParentId, item.OrgId)
|
||
?.Select(it => it.Id.ToString()).ToList();
|
||
deplist = deplist.Union(list).ToList();
|
||
}
|
||
|
||
string orgs = "\'" + string.Join("\',\'", deplist) + "\'";
|
||
sqlpart = $" and (weizhixiannum_base in ({orgs}) or weizhizhennum_base in ({orgs})) ";
|
||
}
|
||
|
||
var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoMineralsSchemeCode").Value;
|
||
|
||
string sqlcount =
|
||
$" select count(a.\"Id\")\r\n from drone_caseinfo_minerals 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\",a.syear_base,a.tubannum_base,a.laiyuan_base,a.weizhixianname_base,a.weizhizhenname_base,a.weizhicunname_base,a.type_base,a.kuangzhong_kcfill,a.shuoming_fill,a.zhongdianname_base,a.ziranbaohuname_base,a.weifaarea_base,a.gengdi_area,a.jbntarea_base,a.weifakaicaiarea_base,a.weifazhandiarea_base,a.jiagongzhuti_jgfill," +
|
||
$"a.kaicaiarea_kcfill,a.weifaarea_punish,b.\"ItemName\" as status_base,c.\"ItemName\" as hefapanding_fill,f.\"ItemName\" as hefapanding_jgfill,a.xiafatime_base,case when a.type_base = '加工' THEN a.jiagongzhuti_jgfill ELSE a.kaicaizhuti_kcfill END as kaicaizhuti_kcfill,d.\"ItemName\" as wefatype_kcfill,e.\"ItemName\" as weifatype_jgfill,a.zhenggaitype_jgzhg,a.chulishixian_base from drone_caseinfo_minerals a " +
|
||
$" LEFT JOIN wf_process s on s.\"InstanceInfo\"->>'pkeyValue'=a.\"Id\" and s.\"SchemeCode\"='" +
|
||
schemeCode + "' " +
|
||
$" left join sys_dataitemdetail b on CAST(a.status_base as VARCHAR)=b.\"ItemValue\" and b.\"ItemCode\"='kcdangqianzhuangtai' " +
|
||
$" left join sys_dataitemdetail c on CAST(a.hefapanding_fill as VARCHAR)=c.\"ItemValue\" and c.\"ItemCode\"='kcpandingjieguo' " +
|
||
$" left join sys_dataitemdetail d on CAST(a.wefatype_kcfill as VARCHAR)=d.\"ItemValue\" and d.\"ItemCode\"='kaicaiweifa' " +
|
||
$" left join sys_dataitemdetail f on CAST(a.hefapanding_jgfill as VARCHAR)=f.\"ItemValue\" and f.\"ItemCode\"='kcpandingjieguo' " +
|
||
$" left join sys_dataitemdetail e on CAST(a.weifatype_jgfill as VARCHAR)=e.\"ItemValue\" and e.\"ItemCode\"='jiagongweifa' " +
|
||
$" where 1=1 and is_closed=0 and s.\"Id\" is not null ";
|
||
|
||
if (!string.IsNullOrEmpty(req.syear_base))
|
||
{
|
||
sqlpart = sqlpart + $" and syear_base ='{req.syear_base}'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.startTime) && !string.IsNullOrEmpty(req.endTime))
|
||
{
|
||
DateTime datetime = DateTime.Parse(req.endTime);
|
||
DateTime datetime1 = datetime.AddDays(1);
|
||
sqlpart = sqlpart + $" and xiafatime_base between TO_DATE('" + req.startTime +
|
||
$"','YYYY-MM-DD') and TO_DATE('" + datetime1.ToString("yyyy-MM-dd") + $"','YYYY-MM-DD')";
|
||
}
|
||
|
||
|
||
if (!string.IsNullOrEmpty(req.type_base))
|
||
{
|
||
sqlpart = sqlpart + $" and type_base='" + req.type_base + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.tubanlaiyuan))
|
||
{
|
||
var tubanlaiyuanList = req.tubanlaiyuan.Split(",").ToList();
|
||
sqlpart = sqlpart + $" and laiyuan_base in ('{string.Join("','", tubanlaiyuanList)}')";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.kuangzhong_kcfill))
|
||
{
|
||
sqlpart = sqlpart + $" and kuangzhong_kcfill='" + req.kuangzhong_kcfill + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.zhenggaitype_jgzhg))
|
||
{
|
||
sqlpart = sqlpart + $" and zhenggaitype_jgzhg='" + req.zhenggaitype_jgzhg + "'";
|
||
}
|
||
|
||
|
||
if (req.hefapanding_fill < 100)
|
||
{
|
||
sqlpart = sqlpart + $" and hefapanding_fill=" + req.hefapanding_fill + "";
|
||
}
|
||
|
||
|
||
if (!string.IsNullOrEmpty(req.countyid))
|
||
{
|
||
sqlpart = sqlpart + $" and weizhixiannum_base='" + req.countyid + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.streetid))
|
||
{
|
||
sqlpart = sqlpart + $" and weizhizhennum_base='" + req.streetid + "'";
|
||
}
|
||
|
||
|
||
if (!string.IsNullOrEmpty(req.status_base))
|
||
{
|
||
string[] str = req.status_base.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 status_base in (" + statuslist + ")";
|
||
}
|
||
}
|
||
|
||
if (req.weifatype_jgfill < 100)
|
||
{
|
||
sqlpart = sqlpart + $" and weifatype_jgfill=" + req.weifatype_jgfill + "";
|
||
}
|
||
|
||
if (req.wefatype_kcfill < 100)
|
||
{
|
||
sqlpart = sqlpart + $" and wefatype_kcfill=" + req.wefatype_kcfill + "";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.zhongdianflag_base))
|
||
{
|
||
sqlpart = sqlpart + $" and zhongdianflag_base='" + req.zhongdianflag_base + "'";
|
||
}
|
||
|
||
|
||
if (!string.IsNullOrEmpty(req.tubannum_base))
|
||
{
|
||
sqlpart = sqlpart + $" and tubannum_base like '%" + req.tubannum_base + "%'";
|
||
}
|
||
|
||
|
||
if (!string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2))
|
||
{
|
||
sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(weifaarea_base, '')::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(weifaarea_base, '')::numeric, 0) AS numeric)> " +
|
||
double.Parse(req.tubanArea1);
|
||
}
|
||
else if (string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2))
|
||
{
|
||
sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(weifaarea_base, '')::numeric, 0) AS numeric)< " +
|
||
double.Parse(req.tubanArea2);
|
||
}
|
||
|
||
var count = await client.Ado.GetIntAsync(sqlcount + sqlpart);
|
||
|
||
|
||
sqlpart += $" ORDER BY xiafatime_base desc";
|
||
sqlpart += $" limit " + req.limit + " offset " + (req.page - 1) * req.limit;
|
||
Console.Write(sql + sqlpart);
|
||
var info = await client.SqlQueryable<dynamic>(sql + sqlpart).ToListAsync();
|
||
|
||
|
||
foreach (var item in info)
|
||
{
|
||
item.hefapanding_fill = "加工".Equals(item.type_base) ? item.hefapanding_jgfill : item.hefapanding_fill;
|
||
|
||
item.hefapanding_fill = "加工".Equals(item.type_base) ? item.hefapanding_jgfill : item.hefapanding_fill;
|
||
}
|
||
|
||
return new Response<PageInfo<List<dynamic>>>
|
||
{
|
||
Result = new PageInfo<List<dynamic>>
|
||
{
|
||
Items = info,
|
||
Total = count
|
||
}
|
||
};
|
||
}
|
||
|
||
/// <summary>
|
||
/// 图斑收藏
|
||
/// </summary>
|
||
/// <param name="model"></param>
|
||
/// <returns></returns>
|
||
public async Task<Response<bool>> AddTaskFavorite(DroneTaskFavorite model)
|
||
{
|
||
var count = await Repository.ChangeRepository<SugarRepositiry<DroneTaskFavorite>>().AsQueryable()
|
||
.Where(c => c.TaskId == model.TaskId && c.FavoriteUserId == model.FavoriteUserId).CountAsync();
|
||
if (count > 0)
|
||
{
|
||
return new Response<bool>
|
||
{
|
||
Code = 500,
|
||
Result = false,
|
||
Message = "案件已收藏"
|
||
};
|
||
}
|
||
|
||
var flag = await Repository.ChangeRepository<SugarRepositiry<DroneTaskFavorite>>().InsertAsync(model);
|
||
return new Response<bool>
|
||
{
|
||
Result = flag,
|
||
Message = flag ? "收藏成功" : "收藏失败"
|
||
};
|
||
}
|
||
|
||
/// <summary>
|
||
/// 取消收藏
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns></returns>
|
||
public async Task<Response<bool>> CancelTaskFavorite(string id)
|
||
{
|
||
var flag = await Repository.ChangeRepository<SugarRepositiry<DroneTaskFavorite>>().DeleteByIdAsync(id);
|
||
return new Response<bool>
|
||
{
|
||
Result = flag,
|
||
Message = flag ? "删除成功" : "删除失败"
|
||
};
|
||
}
|
||
|
||
|
||
#region 统计台账
|
||
|
||
//开采台账
|
||
public async Task<Response<PageInfo<List<MineralsLedgerResp>>>> LoadMineralsLedger(QueryCaseOffencetReq req)
|
||
{
|
||
var authStrategyContext = _auth.GetCurrentUser();
|
||
var user = authStrategyContext.User;
|
||
if (user == null)
|
||
{
|
||
return new Response<PageInfo<List<MineralsLedgerResp>>>
|
||
{
|
||
Code = 401,
|
||
Message = "Unauthorized"
|
||
};
|
||
}
|
||
|
||
RefAsync<int> totalcount = 0;
|
||
string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=@UserId";
|
||
int level = client.Ado.GetInt(sql1, new { UserId = user.Id });
|
||
|
||
List<string> deplist = new List<string>();
|
||
if (level != 0 && user.Id != -1)
|
||
{
|
||
var departs = client.Queryable<SysUserOrg>().Where(r => r.UserId == user.Id).ToList();
|
||
foreach (var item in departs)
|
||
{
|
||
var list = client.Queryable<SysOrg>().ToChildList(it => it.ParentId, item.OrgId)
|
||
?.Select(it => it.Id.ToString()).ToList();
|
||
deplist = deplist.Union(list).ToList();
|
||
}
|
||
}
|
||
|
||
string sqlpart = BuildSqlPart(req, level, deplist);
|
||
var resubmit = client.Queryable<ReSubmit>().Select(r => r.CaseNo).ToList();
|
||
string sql =
|
||
$"select syear_base,tubannum_base,miaoshu_base,original_case_no,TO_CHAR(rcvtime_base, 'YYYY-MM-DD HH24:MI:SS') AS rcvtime_base,case WHEN wefatype_kcfill = 1 THEN '无证开采类' WHEN wefatype_kcfill = 2 THEN '越界开采类' WHEN wefatype_kcfill = 3 THEN '持证矿山类' WHEN wefatype_kcfill = 4 THEN '以项目名义类' WHEN wefatype_kcfill = 5 THEN '其他' END as wefatype_kcfill, TO_CHAR(xiafatime_base, 'YYYY-MM-DD HH24:MI:SS') AS xiafatime_base,CASE WHEN caichujiazhi_kcfill > 10 THEN '是' ELSE '否' END AS isshexing,laiyuan_base,(COALESCE(weizhixiannum_base::text, '') || ' ' || COALESCE(weizhixianname_base, '')) as weizhixianname_base,(COALESCE(weizhizhennum_base::text, '') || ' ' || COALESCE(weizhizhenname_base, '')) as weizhizhenname_base,(COALESCE(weizhicunnum_base::text, '') || ' ' || COALESCE(weizhicunname_base, '')) as weizhicunname_base,kaicaizhuti_kcfill,case WHEN zhutitype_kcfill = 1 THEN '单位' WHEN zhutitype_kcfill = 2 THEN '企业' WHEN zhutitype_kcfill = 3 THEN '个人' END as zhutitype_kcfill,TO_CHAR(fashentime_kcfill, 'YYYY-MM-DD HH24:MI:SS') AS fashentime_kcfill,TO_CHAR(endtime_kcfill, 'YYYY-MM-DD HH24:MI:SS') AS endtime_kcfill," +
|
||
$"kuangzhong_kcfill,kaicaiarea_kcfill,fangliang_kcfill,chafengliang_kcfill,caichujiazhi_kcfill,CASE WHEN hefaqingxing_kcfill = '1' THEN '是' ELSE '否' END AS hefaqingxing_kcfill,ishedaocaisha_kcfill,CASE WHEN hefapanding_fill = '1' THEN '是' ELSE '否' END AS hefapanding_fill,CASE WHEN islian_punish = '1' THEN '是' ELSE '否' END AS islian_punish," +
|
||
$"isnewadd_kcfill,iszhongda_kcfill,iszhongdian_kcfill,tianbaoren_fill,xianshenheren_fill,TO_CHAR(chulishixian_base, 'YYYY-MM-DD HH24:MI:SS') AS chulishixian_base ,shuoming_fill from drone_caseinfo_minerals" +
|
||
$" 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 and type_base = '开采'";
|
||
var a = sql + sqlpart;
|
||
var caseList =
|
||
await client.SqlQueryable<MineralsLedgerResp>(sql + sqlpart)
|
||
.Where(r => !resubmit.Contains(r.original_case_no))
|
||
.ToPageListAsync(req.page, req.limit, totalcount);
|
||
|
||
|
||
return new Response<PageInfo<List<MineralsLedgerResp>>>
|
||
{
|
||
Result = new PageInfo<List<MineralsLedgerResp>>
|
||
{
|
||
Items = caseList,
|
||
Total = totalcount
|
||
}
|
||
};
|
||
}
|
||
|
||
public Response<MemoryStream> ListToExcelMineralsLedger(List<MineralsLedgerResp> list, List<ModuleColumn> headers)
|
||
{
|
||
var response = new Response<MemoryStream>();
|
||
|
||
try
|
||
{
|
||
var workbook = new HSSFWorkbook();
|
||
|
||
var contentStyle = CreateCellStyle(workbook, false);
|
||
var headerStyle = CreateCellStyle(workbook, true);
|
||
|
||
int sheetCount = list.Count / 60000 + 1;
|
||
|
||
for (int k = 0; k < sheetCount; k++)
|
||
{
|
||
var sheet = workbook.CreateSheet("Sheet" + k);
|
||
CreateHeaderRow(sheet, headers, headerStyle);
|
||
|
||
var rowsToWrite = list.Skip(k * 60000).Take(60000).ToList();
|
||
FillSheetWithData(workbook, sheet, rowsToWrite, headers, contentStyle);
|
||
}
|
||
|
||
using (var ms = new MemoryStream())
|
||
{
|
||
workbook.Write(ms);
|
||
response.Result = new MemoryStream(ms.ToArray());
|
||
}
|
||
|
||
response.Code = 200;
|
||
response.Message = "获取成功";
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
response.Code = 500;
|
||
response.Message = ex.Message;
|
||
}
|
||
|
||
return response;
|
||
}
|
||
|
||
public ICellStyle CreateCellStyle(HSSFWorkbook workbook, bool isHeader)
|
||
{
|
||
var font = workbook.CreateFont();
|
||
font.FontName = "Microsoft YaHei";
|
||
font.FontHeightInPoints = 12;
|
||
|
||
if (isHeader)
|
||
{
|
||
font.Boldweight = (short)FontBoldWeight.Bold;
|
||
}
|
||
|
||
var style = workbook.CreateCellStyle();
|
||
style.BorderBottom = BorderStyle.Thin;
|
||
style.BorderLeft = BorderStyle.Thin;
|
||
style.BorderRight = BorderStyle.Thin;
|
||
style.BorderTop = BorderStyle.Thin;
|
||
style.Alignment = HorizontalAlignment.Center;
|
||
style.VerticalAlignment = VerticalAlignment.Center;
|
||
style.SetFont(font);
|
||
style.WrapText = true;
|
||
|
||
return style;
|
||
}
|
||
|
||
private void CreateHeaderRow(ISheet sheet, List<ModuleColumn> headers, ICellStyle headerStyle)
|
||
{
|
||
var rowHeader = sheet.CreateRow(0);
|
||
rowHeader.Height = 20 * 30;
|
||
|
||
for (int i = 0; i < headers.Count; i++)
|
||
{
|
||
var header = headers[i];
|
||
var cell = rowHeader.CreateCell(i);
|
||
cell.CellStyle = headerStyle;
|
||
cell.SetCellValue(header.value);
|
||
}
|
||
|
||
sheet.SetColumnWidth(0, 10 * 256);
|
||
|
||
sheet.SetColumnWidth(1, 18 * 256);
|
||
sheet.SetColumnWidth(2, 28 * 256);
|
||
|
||
sheet.SetColumnWidth(3, 28 * 256);
|
||
sheet.SetColumnWidth(4, 15 * 256);
|
||
sheet.SetColumnWidth(5, 30 * 256);
|
||
sheet.SetColumnWidth(6, 50 * 256);
|
||
sheet.SetColumnWidth(7, 50 * 256);
|
||
sheet.SetColumnWidth(8, 50 * 256);
|
||
|
||
sheet.SetColumnWidth(9, 30 * 256);
|
||
sheet.SetColumnWidth(10, 20 * 256);
|
||
sheet.SetColumnWidth(11, 28 * 256);
|
||
sheet.SetColumnWidth(12, 28 * 256);
|
||
sheet.SetColumnWidth(13, 20 * 256);
|
||
sheet.SetColumnWidth(14, 20 * 256);
|
||
sheet.SetColumnWidth(15, 20 * 256);
|
||
sheet.SetColumnWidth(16, 28 * 256);
|
||
sheet.SetColumnWidth(17, 20 * 256);
|
||
sheet.SetColumnWidth(18, 20 * 256);
|
||
sheet.SetColumnWidth(19, 12 * 256);
|
||
sheet.SetColumnWidth(20, 20 * 256);
|
||
sheet.SetColumnWidth(21, 20 * 256);
|
||
sheet.SetColumnWidth(22, 31 * 256);
|
||
sheet.SetColumnWidth(23, 10 * 256);
|
||
sheet.SetColumnWidth(24, 24 * 256);
|
||
sheet.SetColumnWidth(25, 20 * 256);
|
||
sheet.SetColumnWidth(26, 12 * 256);
|
||
sheet.SetColumnWidth(27, 24 * 256);
|
||
sheet.SetColumnWidth(28, 30 * 256);
|
||
sheet.SetColumnWidth(29, 30 * 256);
|
||
sheet.SetColumnWidth(30, 30 * 256);
|
||
}
|
||
|
||
private void FillSheetWithData(HSSFWorkbook workbook, ISheet sheet, List<MineralsLedgerResp> list,
|
||
List<ModuleColumn> headers,
|
||
ICellStyle contentStyle)
|
||
{
|
||
// 创建一个数值格式的CellStyle
|
||
ICellStyle numericStyle = workbook.CreateCellStyle();
|
||
|
||
// 创建一个数据格式对象
|
||
IDataFormat dataFormat = workbook.CreateDataFormat();
|
||
var font = workbook.CreateFont();
|
||
font.FontName = "Microsoft YaHei";
|
||
font.FontHeightInPoints = 12;
|
||
// 设置单元格格式为数值型
|
||
numericStyle.DataFormat = dataFormat.GetFormat("0.00");
|
||
numericStyle.BorderBottom = BorderStyle.Thin;
|
||
numericStyle.BorderLeft = BorderStyle.Thin;
|
||
numericStyle.BorderRight = BorderStyle.Thin;
|
||
numericStyle.BorderTop = BorderStyle.Thin;
|
||
numericStyle.Alignment = HorizontalAlignment.Center;
|
||
numericStyle.VerticalAlignment = VerticalAlignment.Center;
|
||
numericStyle.SetFont(font);
|
||
for (int i = 0; i < list.Count; i++)
|
||
{
|
||
var item = list[i];
|
||
var dataRow = sheet.CreateRow(i + 1);
|
||
for (int j = 0; j < headers.Count; j++)
|
||
{
|
||
var cell = dataRow.CreateCell(j);
|
||
cell.CellStyle = contentStyle;
|
||
|
||
if (headers[j].key == "xuhao")
|
||
{
|
||
cell.SetCellValue(i + 1);
|
||
}
|
||
else
|
||
{
|
||
var objValue = GetCellValue(item, headers[j].key);
|
||
cell.SetCellValue(objValue);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
private string GetCellValue(MineralsLedgerResp item, string key)
|
||
{
|
||
return key switch
|
||
{
|
||
"syear_base" => item.syear_base,
|
||
"tubannum_base" => item.tubannum_base,
|
||
"laiyuan_base" => item.laiyuan_base,
|
||
"weizhixianname_base" => item.weizhixianname_base,
|
||
"weizhizhenname_base" => item.weizhizhenname_base,
|
||
"weizhicunname_base" => item.weizhicunname_base,
|
||
"fashentime_kcfill" => item.fashentime_kcfill == null
|
||
? ""
|
||
: item.fashentime_kcfill.ToString("yyyy-MM-dd HH:mm:ss"),
|
||
"endtime_kcfill" => item.endtime_kcfill == null ? "" : item.endtime_kcfill.ToString("yyyy-MM-dd HH:mm:ss"),
|
||
"kaicaizhuti_kcfill" => item.kaicaizhuti_kcfill,
|
||
"zhutitype_kcfill" => item.zhutitype_kcfill,
|
||
"kuangzhong_kcfill" => item.kuangzhong_kcfill,
|
||
"kaicaiarea_kcfill" => item.kaicaiarea_kcfill,
|
||
"fangliang_kcfill" => item.fangliang_kcfill == null ? "" : item.fangliang_kcfill.ToString(),
|
||
"chafengliang_kcfill" => item.chafengliang_kcfill == null ? "" : item.chafengliang_kcfill.ToString(),
|
||
"isshexing" => item.isshexing,
|
||
"hefaqingxing_kcfill" => item.hefaqingxing_kcfill,
|
||
"ishedaocaisha_kcfill" => item.ishedaocaisha_kcfill,
|
||
"hefapanding_fill" => item.hefapanding_fill,
|
||
"islian_punish" => item.islian_punish,
|
||
"iszhongda_kcfill" => item.iszhongda_kcfill,
|
||
"isnewadd_kcfill" => item.isnewadd_kcfill,
|
||
"iszhongdian_kcfill" => item.iszhongdian_kcfill,
|
||
"tianbaoren_fill" => item.tianbaoren_fill,
|
||
"xianshenheren_fill" => item.xianshenheren_fill,
|
||
"chulishixian_base" => item.chulishixian_base,
|
||
"shuoming_fill" => item.shuoming_fill,
|
||
_ => string.Empty,
|
||
};
|
||
}
|
||
|
||
//加工台账
|
||
public async Task<Response<PageInfo<List<MineralsProcessResp>>>> LoadMineralsProcess(QueryCaseOffencetReq req)
|
||
{
|
||
var authStrategyContext = _auth.GetCurrentUser();
|
||
var user = authStrategyContext.User;
|
||
if (user == null)
|
||
{
|
||
return new Response<PageInfo<List<MineralsProcessResp>>>
|
||
{
|
||
Code = 401,
|
||
Message = "Unauthorized"
|
||
};
|
||
}
|
||
|
||
RefAsync<int> totalcount = 0;
|
||
string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=@UserId";
|
||
int level = client.Ado.GetInt(sql1, new { UserId = user.Id });
|
||
|
||
List<string> deplist = new List<string>();
|
||
if (level != 0 && user.Id != -1)
|
||
{
|
||
var departs = client.Queryable<SysUserOrg>().Where(r => r.UserId == user.Id).ToList();
|
||
foreach (var item in departs)
|
||
{
|
||
var list = client.Queryable<SysOrg>().ToChildList(it => it.ParentId, item.OrgId)
|
||
?.Select(it => it.Id.ToString()).ToList();
|
||
deplist = deplist.Union(list).ToList();
|
||
}
|
||
}
|
||
|
||
string sqlpart = BuildSqlPart(req, level, deplist);
|
||
var resubmit = client.Queryable<ReSubmit>().Select(r => r.CaseNo).ToList();
|
||
string sql =
|
||
$"select syear_base,tubannum_base,type_base,original_case_no,miaoshu_base, TO_CHAR(xiafatime_base, 'YYYY-MM-DD HH24:MI:SS') AS xiafatime_base,TO_CHAR(rcvtime_base, 'YYYY-MM-DD HH24:MI:SS') AS rcvtime_base,laiyuan_base,weizhixiannum_base,(COALESCE(weizhixiannum_base::text, '') || ' ' || COALESCE(weizhixianname_base, '')) as weizhixianname_base,(COALESCE(weizhizhennum_base::text, '') || ' ' || COALESCE(weizhizhenname_base, '')) as weizhizhenname_base,(COALESCE(weizhicunnum_base::text, '') || ' ' || COALESCE(weizhicunname_base, '')) as weizhicunname_base,danweiname_jgzhg, case WHEN weifatype_jgfill = 1 THEN '违法占地' WHEN weifatype_jgfill = 2 THEN '购销非法开采矿产品' WHEN weifatype_jgfill = 3 THEN '其他' END as weifatype_jgfill,zhenggaitype_jgzhg,tianbaoren_fill," +
|
||
$"xianshenheren_fill,TO_CHAR(chulishixian_base, 'YYYY-MM-DD HH24:MI:SS') AS chulishixian_base,shuoming_fill " +
|
||
$" from drone_caseinfo_minerals 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 and type_base = '加工' ";
|
||
var a = sql + sqlpart;
|
||
var caseList =
|
||
await client.SqlQueryable<MineralsProcessResp>(sql + sqlpart)
|
||
.Where(r => !resubmit.Contains(r.original_case_no))
|
||
.ToPageListAsync(req.page, req.limit, totalcount);
|
||
|
||
|
||
return new Response<PageInfo<List<MineralsProcessResp>>>
|
||
{
|
||
Result = new PageInfo<List<MineralsProcessResp>>
|
||
{
|
||
Items = caseList,
|
||
Total = totalcount
|
||
}
|
||
};
|
||
}
|
||
|
||
public Response<MemoryStream> ListToExcelMineralsProcess(List<MineralsProcessResp> list, List<ModuleColumn> headers)
|
||
{
|
||
var response = new Response<MemoryStream>();
|
||
|
||
try
|
||
{
|
||
var workbook = new HSSFWorkbook();
|
||
|
||
var contentStyle = CreateCellStyle(workbook, false);
|
||
var headerStyle = CreateCellStyle(workbook, true);
|
||
|
||
int sheetCount = list.Count / 60000 + 1;
|
||
|
||
for (int k = 0; k < sheetCount; k++)
|
||
{
|
||
var sheet = workbook.CreateSheet("Sheet" + k);
|
||
CreateHeaderRowProcess(sheet, headers, headerStyle);
|
||
|
||
var rowsToWrite = list.Skip(k * 60000).Take(60000).ToList();
|
||
FillSheetWithDataProcess(workbook, sheet, rowsToWrite, headers, contentStyle);
|
||
}
|
||
|
||
using (var ms = new MemoryStream())
|
||
{
|
||
workbook.Write(ms);
|
||
response.Result = new MemoryStream(ms.ToArray());
|
||
}
|
||
|
||
response.Code = 200;
|
||
response.Message = "获取成功";
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
response.Code = 500;
|
||
response.Message = ex.Message;
|
||
}
|
||
|
||
return response;
|
||
}
|
||
|
||
private void CreateHeaderRowProcess(ISheet sheet, List<ModuleColumn> headers, ICellStyle headerStyle)
|
||
{
|
||
var rowHeader = sheet.CreateRow(0);
|
||
rowHeader.Height = 20 * 30;
|
||
|
||
for (int i = 0; i < headers.Count; i++)
|
||
{
|
||
var header = headers[i];
|
||
var cell = rowHeader.CreateCell(i);
|
||
cell.CellStyle = headerStyle;
|
||
cell.SetCellValue(header.value);
|
||
//sheet.SetColumnWidth(i, 20 * 350);
|
||
}
|
||
|
||
sheet.SetColumnWidth(0, 10 * 256);
|
||
|
||
sheet.SetColumnWidth(1, 18 * 256);
|
||
sheet.SetColumnWidth(2, 28 * 256);
|
||
|
||
sheet.SetColumnWidth(3, 28 * 256);
|
||
sheet.SetColumnWidth(4, 15 * 256);
|
||
sheet.SetColumnWidth(5, 30 * 256);
|
||
sheet.SetColumnWidth(6, 50 * 256);
|
||
sheet.SetColumnWidth(7, 50 * 256);
|
||
sheet.SetColumnWidth(8, 50 * 256);
|
||
|
||
sheet.SetColumnWidth(9, 30 * 256);
|
||
sheet.SetColumnWidth(10, 24 * 256);
|
||
sheet.SetColumnWidth(11, 24 * 256);
|
||
sheet.SetColumnWidth(12, 24 * 256);
|
||
sheet.SetColumnWidth(13, 24 * 256);
|
||
sheet.SetColumnWidth(14, 24 * 256);
|
||
sheet.SetColumnWidth(15, 24 * 256);
|
||
}
|
||
|
||
private void FillSheetWithDataProcess(HSSFWorkbook workbook, ISheet sheet, List<MineralsProcessResp> list,
|
||
List<ModuleColumn> headers,
|
||
ICellStyle contentStyle)
|
||
{
|
||
// 创建一个数值格式的CellStyle
|
||
ICellStyle numericStyle = workbook.CreateCellStyle();
|
||
|
||
// 创建一个数据格式对象
|
||
IDataFormat dataFormat = workbook.CreateDataFormat();
|
||
var font = workbook.CreateFont();
|
||
font.FontName = "Microsoft YaHei";
|
||
font.FontHeightInPoints = 12;
|
||
// 设置单元格格式为数值型
|
||
numericStyle.DataFormat = dataFormat.GetFormat("0.00");
|
||
numericStyle.BorderBottom = BorderStyle.Thin;
|
||
numericStyle.BorderLeft = BorderStyle.Thin;
|
||
numericStyle.BorderRight = BorderStyle.Thin;
|
||
numericStyle.BorderTop = BorderStyle.Thin;
|
||
numericStyle.Alignment = HorizontalAlignment.Center;
|
||
numericStyle.VerticalAlignment = VerticalAlignment.Center;
|
||
numericStyle.SetFont(font);
|
||
for (int i = 0; i < list.Count; i++)
|
||
{
|
||
var item = list[i];
|
||
var dataRow = sheet.CreateRow(i + 1);
|
||
for (int j = 0; j < headers.Count; j++)
|
||
{
|
||
var cell = dataRow.CreateCell(j);
|
||
cell.CellStyle = contentStyle;
|
||
if (headers[j].key == "xuhao")
|
||
{
|
||
cell.SetCellValue(i + 1);
|
||
}
|
||
else
|
||
{
|
||
var objValue = GetCellValueProcess(item, headers[j].key);
|
||
cell.SetCellValue(objValue);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
private string GetCellValueProcess(MineralsProcessResp item, string key)
|
||
{
|
||
return key switch
|
||
{
|
||
"syear_base" => item.syear_base,
|
||
"tubannum_base" => item.tubannum_base,
|
||
"laiyuan_base" => item.laiyuan_base,
|
||
"weizhixianname_base" => item.weizhixianname_base,
|
||
"weizhizhenname_base" => item.weizhizhenname_base,
|
||
"weizhicunname_base" => item.weizhicunname_base,
|
||
"danweiname_jgzhg" => item.danweiname_jgzhg,
|
||
"weifatype_jgfill" => item.weifatype_jgfill,
|
||
"zhenggaitype_jgzhg" => item.zhenggaitype_jgzhg,
|
||
"tianbaoren_fill" => item.tianbaoren_fill,
|
||
"xianshenheren_fill" => item.xianshenheren_fill,
|
||
"chulishixian_base" => item.chulishixian_base,
|
||
"shuoming_fill" => item.shuoming_fill,
|
||
_ => string.Empty,
|
||
};
|
||
}
|
||
|
||
private string BuildSqlPart(QueryCaseOffencetReq req, int level, List<string> deplist)
|
||
{
|
||
string result = string.Empty;
|
||
if (!string.IsNullOrEmpty(req.AreaId) && req.AreaId != "0")
|
||
{
|
||
if (level == 0)
|
||
{
|
||
result += $" AND weizhixiannum_base = " + req.AreaId;
|
||
}
|
||
|
||
if (level == 1)
|
||
{
|
||
result += $" AND weizhizhennum_base =" + req.AreaId;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (deplist.Any())
|
||
{
|
||
string orgs = string.Join(",", deplist.Select(dep => $"'{dep}'"));
|
||
return
|
||
$" AND (weizhixiannum_base IN ({orgs}) OR weizhizhennum_base IN ({orgs}) OR weizhicunnum_base IN ({orgs}))";
|
||
}
|
||
}
|
||
|
||
if (req.StartTime.Year != 0001)
|
||
{
|
||
result += $" AND xiafatime_base >= '" + req.StartTime + "' and xiafatime_base <= '" + req.EndTime + "'";
|
||
}
|
||
|
||
|
||
return result;
|
||
}
|
||
|
||
#endregion
|
||
|
||
public Response<List<CaseInfoMineralTubanExport>> LoadCaseInfoMineralsExportTuBanList(CaseInfoMineralsTuBanReq req)
|
||
{
|
||
var authStrategyContext = _auth.GetCurrentUser();
|
||
var user = authStrategyContext.User;
|
||
RefAsync<int> totalcount = 0;
|
||
string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id;
|
||
int level = client.Ado.GetInt(sql1);
|
||
//该用户下包含所有部门
|
||
List<string> deplist = new List<string>();
|
||
string sqlpart = " ";
|
||
if (user != null && user.Id != -1 && level != 0)
|
||
{
|
||
var departs = client.Queryable<SysUserOrg>().Where(r => r.UserId == user.Id).ToList();
|
||
foreach (var item in departs)
|
||
{
|
||
var list = client.Queryable<SysOrg>().ToChildList(it => it.ParentId, item.OrgId)
|
||
?.Select(it => it.Id.ToString()).ToList();
|
||
deplist = deplist.Union(list).ToList();
|
||
}
|
||
|
||
string orgs = "\'" + string.Join("\',\'", deplist) + "\'";
|
||
sqlpart = $" and (weizhixiannum_base in ({orgs}) or weizhizhennum_base in ({orgs})) ";
|
||
}
|
||
|
||
string sql =
|
||
$"select a.\"Id\",a.syear_base,a.tubannum_base,a.laiyuan_base,a.weizhixianname_base,a.weizhizhenname_base,a.weizhicunname_base,a.type_base,a.kuangzhong_kcfill,a.shuoming_fill,a.zhongdianname_base,a.ziranbaohuname_base,a.weifaarea_base,a.gengdi_area,a.jbntarea_base,a.gid geomid,a.jiagongzhuti_jgfill," +
|
||
$"a.kaicaiarea_kcfill,a.weifaarea_punish,b.\"ItemName\" as status_base,c.\"ItemName\" as hefapanding_fill,f.\"ItemName\" as hefapanding_jgfill,a.xiafatime_base,a.kaicaizhuti_kcfill,d.\"ItemName\" as wefatype_kcfill,e.\"ItemName\" as weifatype_jgfill,a.zhenggaitype_jgzhg,a.chulishixian_base from drone_caseinfo_minerals a " +
|
||
$" left join sys_dataitemdetail b on CAST(a.status_base as VARCHAR)=b.\"ItemValue\" and b.\"ItemCode\"='kcdangqianzhuangtai' " +
|
||
$" left join sys_dataitemdetail c on CAST(a.hefapanding_fill as VARCHAR)=c.\"ItemValue\" and c.\"ItemCode\"='kcpandingjieguo' " +
|
||
$" left join sys_dataitemdetail d on CAST(a.wefatype_kcfill as VARCHAR)=d.\"ItemValue\" and d.\"ItemCode\"='kaicaiweifa' " +
|
||
$" left join sys_dataitemdetail f on CAST(a.hefapanding_jgfill as VARCHAR)=f.\"ItemValue\" and d.\"ItemCode\"='kcpandingjieguo' " +
|
||
$" left join sys_dataitemdetail e on CAST(a.weifatype_jgfill as VARCHAR)=e.\"ItemValue\" and e.\"ItemCode\"='jiagongweifa' " +
|
||
$" LEFT JOIN wf_process s on s.\"InstanceInfo\"->>'pkeyValue'=a.\"Id\" where 1=1 and is_closed=0 and s.\"Id\" is not null ";
|
||
if (!string.IsNullOrEmpty(req.syear_base))
|
||
{
|
||
sqlpart = sqlpart + $" and syear_base ='{req.syear_base}'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.startTime) && !string.IsNullOrEmpty(req.endTime))
|
||
{
|
||
DateTime datetime = DateTime.Parse(req.endTime);
|
||
DateTime datetime1 = datetime.AddDays(1);
|
||
sqlpart = sqlpart + $" and xiafatime_base between TO_DATE('" + req.startTime +
|
||
$"','YYYY-MM-DD') and TO_DATE('" + datetime1.ToString("yyyy-MM-dd") + $"','YYYY-MM-DD')";
|
||
}
|
||
|
||
|
||
if (!string.IsNullOrEmpty(req.type_base))
|
||
{
|
||
sqlpart = sqlpart + $" and type_base='" + req.type_base + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.tubanlaiyuan))
|
||
{
|
||
var tubanlaiyuanList = req.tubanlaiyuan.Split(",").ToList();
|
||
sqlpart = sqlpart + $" and laiyuan_base in ('{string.Join("','", tubanlaiyuanList)}')";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.zhenggaitype_jgzhg))
|
||
{
|
||
sqlpart = sqlpart + $" and zhenggaitype_jgzhg='" + req.zhenggaitype_jgzhg + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.kuangzhong_kcfill))
|
||
{
|
||
sqlpart = sqlpart + $" and kuangzhong_kcfill='" + req.kuangzhong_kcfill + "'";
|
||
}
|
||
|
||
|
||
if (req.hefapanding_fill < 100)
|
||
{
|
||
sqlpart = sqlpart + $" and hefapanding_fill=" + req.hefapanding_fill + "";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.countyid))
|
||
{
|
||
sqlpart = sqlpart + $" and weizhixiannum_base='" + req.countyid + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.streetid))
|
||
{
|
||
sqlpart = sqlpart + $" and weizhizhennum_base='" + req.streetid + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.status_base))
|
||
{
|
||
string[] str = req.status_base.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 status_base in (" + statuslist + ")";
|
||
}
|
||
}
|
||
|
||
if (req.weifatype_jgfill < 100)
|
||
{
|
||
sqlpart = sqlpart + $" and weifatype_jgfill=" + req.weifatype_jgfill + "";
|
||
}
|
||
|
||
if (req.wefatype_kcfill < 100)
|
||
{
|
||
sqlpart = sqlpart + $" and wefatype_kcfill=" + req.wefatype_kcfill + "";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.zhongdianflag_base))
|
||
{
|
||
sqlpart = sqlpart + $" and zhongdianflag_base='" + req.zhongdianflag_base + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.tubannum_base))
|
||
{
|
||
sqlpart = sqlpart + $" and tubannum_base like '%" + req.tubannum_base + "%'";
|
||
}
|
||
|
||
|
||
if (!string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2))
|
||
{
|
||
sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(weifaarea_base, '')::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(weifaarea_base, '')::numeric, 0) AS numeric)> " +
|
||
double.Parse(req.tubanArea1);
|
||
}
|
||
else if (string.IsNullOrEmpty(req.tubanArea1) && !string.IsNullOrEmpty(req.tubanArea2))
|
||
{
|
||
sqlpart = sqlpart + $" and CAST(COALESCE(NULLIF(weifaarea_base, '')::numeric, 0) AS numeric)< " +
|
||
double.Parse(req.tubanArea2);
|
||
}
|
||
|
||
|
||
sqlpart += $" ORDER BY xiafatime_base desc";
|
||
var info = client.Ado.SqlQuery<CaseInfoMineralTubanExport>(sql + sqlpart);
|
||
|
||
Response<List<CaseInfoMineralTubanExport>> response = new Response<List<CaseInfoMineralTubanExport>>();
|
||
response.Result = info;
|
||
return response;
|
||
}
|
||
|
||
public Response<MemoryStream> ListToExcelTuban(List<CaseInfoMineralTubanExport> list, List<ModuleColumn> headers)
|
||
{
|
||
Response<MemoryStream> response = new Response<MemoryStream>();
|
||
try
|
||
{
|
||
HSSFWorkbook workbook = new HSSFWorkbook();
|
||
|
||
#region 内容样式
|
||
|
||
IFont font1 = workbook.CreateFont(); //创建一个字体样式对象
|
||
font1.FontName = "Microsoft YaHei"; //和excel里面的字体对应
|
||
//font1.Boldweight = short.MaxValue;//字体加粗
|
||
font1.FontHeightInPoints = 12; //字体大小
|
||
ICellStyle style = workbook.CreateCellStyle(); //创建样式对象
|
||
style.BorderBottom = BorderStyle.Thin;
|
||
style.BorderLeft = BorderStyle.Thin;
|
||
style.BorderRight = BorderStyle.Thin;
|
||
style.BorderTop = BorderStyle.Thin;
|
||
style.Alignment = HorizontalAlignment.Center;
|
||
style.VerticalAlignment = VerticalAlignment.Center;
|
||
style.SetFont(font1); //将字体样式赋给样式对象
|
||
style.WrapText = true;
|
||
|
||
#endregion
|
||
|
||
#region 标题样式
|
||
|
||
IFont font = workbook.CreateFont(); //创建一个字体样式对象
|
||
font.FontName = "Microsoft YaHei"; //和excel里面的字体对应
|
||
font.Boldweight = (short)FontBoldWeight.Bold; //字体加粗
|
||
font.FontHeightInPoints = 12; //字体大小
|
||
ICellStyle style1 = workbook.CreateCellStyle(); //创建样式对象
|
||
style1.BorderBottom = BorderStyle.Thin;
|
||
style1.BorderLeft = BorderStyle.Thin;
|
||
style1.BorderRight = BorderStyle.Thin;
|
||
style1.BorderTop = BorderStyle.Thin;
|
||
style1.Alignment = HorizontalAlignment.Center;
|
||
style1.VerticalAlignment = VerticalAlignment.Center;
|
||
style1.SetFont(font); //将字体样式赋给样式对象
|
||
|
||
// 创建一个数值格式的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 ("syear_base".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 20 * 300);
|
||
}
|
||
else if ("tubannum_base".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 20 * 300);
|
||
}
|
||
else if ("weizhixianname_base".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 25 * 300);
|
||
}
|
||
else if ("weizhizhenname_base".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 15 * 300);
|
||
}
|
||
else if ("weizhicunname_base".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 20 * 300);
|
||
}
|
||
else if ("type_base".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 15 * 320);
|
||
}
|
||
|
||
else if ("kuangzhong_kcfill".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 20 * 350);
|
||
}
|
||
else if ("shuoming_fill".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 20 * 320);
|
||
}
|
||
else if ("zhongdianname_base".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 15 * 300);
|
||
}
|
||
else if ("ziranbaohuname_base".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 15 * 300);
|
||
}
|
||
else if ("weifaarea_base".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 15 * 300);
|
||
}
|
||
else if ("jbntarea_base".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 15 * 300);
|
||
}
|
||
else if ("kaicaiarea_kcfill".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 12 * 300);
|
||
}
|
||
else if ("weifaarea_punish".Equals(headers[i].key))
|
||
|
||
{
|
||
sheet.SetColumnWidth(i, 12 * 300);
|
||
}
|
||
else if ("status_base".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 12 * 300);
|
||
}
|
||
else if ("hefapanding_fill".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 20 * 320);
|
||
}
|
||
else if ("xiafatime_base".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 12 * 300);
|
||
}
|
||
else if ("kaicaizhuti_kcfill".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 12 * 300);
|
||
}
|
||
else if ("wefatype_kcfill".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 12 * 300);
|
||
}
|
||
|
||
else if ("weifatype_jgfill".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 15 * 300);
|
||
}
|
||
else if ("zhenggaitype_jgzhg".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 15 * 300);
|
||
}
|
||
else if ("chulishixian_base".Equals(headers[i].key))
|
||
{
|
||
sheet.SetColumnWidth(i, 12 * 300);
|
||
}
|
||
}
|
||
|
||
#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 ("syear_base".Equals(headers[j].key))
|
||
{
|
||
objValue = item.syear_base;
|
||
}
|
||
else if ("tubannum_base".Equals(headers[j].key))
|
||
{
|
||
objValue = item.tubannum_base;
|
||
}
|
||
else if ("weizhixianname_base".Equals(headers[j].key))
|
||
{
|
||
objValue = item.weizhixianname_base;
|
||
}
|
||
else if ("weizhizhenname_base".Equals(headers[j].key))
|
||
{
|
||
objValue = item.weizhizhenname_base;
|
||
}
|
||
else if ("weizhicunname_base".Equals(headers[j].key))
|
||
{
|
||
objValue = item.weizhicunname_base;
|
||
}
|
||
|
||
else if ("type_base".Equals(headers[j].key))
|
||
{
|
||
objValue = item.type_base;
|
||
}
|
||
|
||
else if ("weifaarea_base".Equals(headers[j].key))
|
||
{
|
||
if (string.IsNullOrEmpty(item.weifaarea_base))
|
||
{
|
||
objValue = item.weifaarea_base;
|
||
}
|
||
else
|
||
{
|
||
objValue = double.Parse(item.weifaarea_base).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 ("jbntarea_base".Equals(headers[j].key))
|
||
{
|
||
if (string.IsNullOrEmpty(item.jbntarea_base))
|
||
{
|
||
objValue = item.jbntarea_base;
|
||
}
|
||
else
|
||
{
|
||
objValue = double.Parse(item.jbntarea_base).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 ("kaicaiarea_kcfill".Equals(headers[j].key))
|
||
{
|
||
if (string.IsNullOrEmpty(item.kaicaiarea_kcfill))
|
||
{
|
||
objValue = item.kaicaiarea_kcfill;
|
||
}
|
||
else
|
||
{
|
||
objValue = double.Parse(item.kaicaiarea_kcfill).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 ("weifaarea_punish".Equals(headers[j].key))
|
||
{
|
||
if (string.IsNullOrEmpty(item.weifaarea_punish))
|
||
{
|
||
objValue = item.weifaarea_punish;
|
||
}
|
||
else
|
||
{
|
||
objValue = double.Parse(item.weifaarea_punish).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 ("kuangzhong_kcfill".Equals(headers[j].key))
|
||
|
||
{
|
||
objValue = item.kuangzhong_kcfill;
|
||
}
|
||
else if ("shuoming_fill".Equals(headers[j].key))
|
||
{
|
||
objValue = item.shuoming_fill;
|
||
}
|
||
else if ("xiafatime_base".Equals(headers[j].key))
|
||
{
|
||
if (string.IsNullOrEmpty(item.xiafatime_base))
|
||
{
|
||
objValue = item.xiafatime_base;
|
||
}
|
||
else
|
||
{
|
||
DateTime dateValue2;
|
||
DateTime.TryParse(item.xiafatime_base, out dateValue2);
|
||
objValue = dateValue2.ToString("yyyy-MM-dd HH:mm:ss");
|
||
}
|
||
}
|
||
else if ("zhongdianname_base".Equals(headers[j].key))
|
||
{
|
||
objValue = item.zhongdianname_base;
|
||
}
|
||
else if ("ziranbaohuname_base".Equals(headers[j].key))
|
||
{
|
||
objValue = item.ziranbaohuname_base;
|
||
}
|
||
|
||
else if ("status_base".Equals(headers[j].key))
|
||
{
|
||
objValue = item.status_base;
|
||
}
|
||
else if ("hefapanding_fill".Equals(headers[j].key))
|
||
{
|
||
if ("加工".Equals(item.type_base))
|
||
{
|
||
objValue = item.hefapanding_jgfill;
|
||
}
|
||
else
|
||
{
|
||
objValue = item.hefapanding_fill;
|
||
}
|
||
}
|
||
else if ("kaicaizhuti_kcfill".Equals(headers[j].key))
|
||
{
|
||
if ("加工".Equal(item.type_base))
|
||
{
|
||
objValue = item.jiagongzhuti_jgfill;
|
||
}
|
||
else
|
||
{
|
||
objValue = item.kaicaizhuti_kcfill;
|
||
}
|
||
}
|
||
|
||
else if ("wefatype_kcfill".Equals(headers[j].key))
|
||
{
|
||
objValue = item.wefatype_kcfill;
|
||
}
|
||
|
||
|
||
else if ("weifatype_jgfill".Equals(headers[j].key))
|
||
{
|
||
objValue = item.weifatype_jgfill;
|
||
}
|
||
|
||
else if ("zhenggaitype_jgzhg".Equals(headers[j].key))
|
||
{
|
||
objValue = item.zhenggaitype_jgzhg;
|
||
}
|
||
else if ("chulishixian_base".Equals(headers[j].key))
|
||
{
|
||
if (item.chulishixian_base.IsNullOrEmpty() ||
|
||
"0001-01-01 00:00:00".Equals(item.chulishixian_base.ToString("yyyy-MM-dd HH:mm:ss")))
|
||
{
|
||
objValue = "";
|
||
}
|
||
else
|
||
{
|
||
objValue = item.chulishixian_base.ToString("yyyy-MM-dd HH:mm:ss");
|
||
}
|
||
}
|
||
|
||
|
||
//创建单元格
|
||
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 void ExportIllegalCaiKuangShapefile(CaseInfoMineralsTuBanReq req, string shpFilePath, string shpFilePathzip)
|
||
{
|
||
var response = LoadCaseInfoMineralsExportTuBanList(req).Result;
|
||
List<CaseInfoMineralTubanExport> list = new List<CaseInfoMineralTubanExport>();
|
||
for (int i = 0; i < response.Count; i++)
|
||
{
|
||
var caseinfo = response[i];
|
||
if (!string.IsNullOrEmpty(caseinfo.geomid))
|
||
{
|
||
list.Add(caseinfo);
|
||
}
|
||
}
|
||
|
||
List<int> 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,typename,is_illegal_name,ST_AsText(geom) AS geom FROM view_drone_caseinfo_minerals WHERE gid IN ({gidsString})";
|
||
|
||
// 执行查询
|
||
var data = client.Ado.SqlQuery<dynamic>(query);
|
||
if (data == null || data.Count == 0)
|
||
{
|
||
throw new Exception("暂无数据");
|
||
}
|
||
|
||
List<IFeature> features = new List<IFeature>();
|
||
|
||
foreach (var row in data)
|
||
{
|
||
var geometry = ParseGeometry(row.geom);
|
||
if (geometry == null)
|
||
{
|
||
throw new Exception("数据不可用");
|
||
}
|
||
|
||
//var attributes = new AttributesTable
|
||
//{
|
||
// { "gid", row.gid },
|
||
// {"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.typename == null ? "" : row.typename },
|
||
{ "判定结果", row.is_illegal_name == null ? "" : row.is_illegal_name },
|
||
};
|
||
|
||
IFeature feature = new Feature(geometry, attributes);
|
||
features.Add(feature);
|
||
}
|
||
|
||
if (features.Count == 0)
|
||
{
|
||
throw new Exception("数据不可用");
|
||
}
|
||
|
||
// 导出 SHP 文件及其关联文件
|
||
//ExportToShapefileFour(shpFilePath, features);
|
||
ExportToShapefileFour(shpFilePath, features);
|
||
// 将文件打包成 ZIP
|
||
CreateZipFromShapefiles(shpFilePath, shpFilePathzip);
|
||
}
|
||
|
||
public async Task<Response<Dictionary<string, object>>> LoadMyUncompletedKuangChanTask(MineralsTaskListReq req)
|
||
{
|
||
//获取当前用户
|
||
var authStrategyContext = _auth.GetCurrentUser();
|
||
var user = authStrategyContext.User;
|
||
RefAsync<int> totalcount = 0;
|
||
string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id;
|
||
int level = client.Ado.GetInt(sql1);
|
||
//该用户下包含所有部门
|
||
List<string> deplist = new List<string>();
|
||
string sqlpart = " ";
|
||
if (user != null && user.Id != -1 && level != 0)
|
||
{
|
||
var departs = client.Queryable<SysUserOrg>().Where(r => r.UserId == user.Id).ToList();
|
||
foreach (var item in departs)
|
||
{
|
||
var list = client.Queryable<SysOrg>().ToChildList(it => it.ParentId, item.OrgId)
|
||
?.Select(it => it.Id.ToString()).ToList();
|
||
deplist = deplist.Union(list).ToList();
|
||
}
|
||
|
||
string orgs = "\'" + string.Join("\',\'", deplist) + "\'";
|
||
sqlpart =
|
||
$" and (c.weizhixiannum_base in ({orgs}) or c.weizhizhennum_base in ({orgs}) or c.weizhicunname_base in ({orgs})) ";
|
||
}
|
||
|
||
var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoMineralsSchemeCode").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\n RIGHT JOIN drone_caseinfo_minerals c on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" where a.\"ProcessCode\"='" +
|
||
schemeCode + "' ";
|
||
|
||
sql =
|
||
$"select a.\"Id\" as taskId,a.\"UnitName\" as unitName,c.type_base as typename,b.\"Title\" as title,c.xiafatime_base as createDate,c.tubannum_base as caseNo,c.weizhixianname_base countyname,c.weizhizhenname_base streetname,c.weizhicunname_base communityname,\r\nc.weifaarea_base area,a.\"ProcessCode\" as processcode,a.\"ProcessId\" as processid," +
|
||
$"c.jbntarea_base as gengdiArea,weifaarea_punish as illeagalArea,c.gid geomid,c.\"Id\" as caseid \r\n from wf_task a LEFT JOIN wf_process " +
|
||
$"b on a.\"ProcessId\"=b.\"Id\" \r\n RIGHT JOIN drone_caseinfo_minerals c on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" where a.\"ProcessCode\"='" +
|
||
schemeCode + "' ";
|
||
|
||
|
||
sqlpart = sqlpart + $" and a.\"UnitName\" in ('待填报','待整改','待查处','查处后待整改') 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_minerals 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.type_base as typename,b.\"Title\" as title,c.xiafatime_base as createDate,c.tubannum_base as caseNo,c.weizhixianname_base countyname,c.weizhizhenname_base streetname,c.weizhicunname_base communityname,\r\nc.weifaarea_base area,a.\"ProcessCode\" as processcode,a.\"ProcessId\" as processid," +
|
||
$"c.jbntarea_base as gengdiArea,weifaarea_punish as illeagalArea ,c.gid geomid,c.\"Id\" as caseid \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_minerals c on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" where a.\"ProcessCode\"='" +
|
||
schemeCode + "' ";
|
||
|
||
sqlpart = sqlpart + $" and a.\"UserId\"='" + user.Id + "' and a.\"State\"=3 ";
|
||
allCount = await client.Ado.GetIntAsync(sqlcount + sqlpart);
|
||
}
|
||
|
||
if (req.year != 0)
|
||
{
|
||
sqlpart = sqlpart + $" and EXTRACT(YEAR FROM xiafatime_base) = {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 TO_DATE(xiafatime_base, 'YYYY-MM-DD') between TO_DATE('" + req.startTime +
|
||
$"','YYYY-MM-DD') and TO_DATE('" + datetime1.ToString("yyyy-MM-dd") + $"','YYYY-MM-DD')";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.caseNo))
|
||
{
|
||
sqlpart = sqlpart + $" and c.tubannum_base like '%" + req.caseNo + "%'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.typename))
|
||
{
|
||
sqlpart = sqlpart + $" and c.type_base='" + req.typename + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.nowStatus))
|
||
{
|
||
sqlpart = sqlpart + $" and c.status_base='" + req.nowStatus + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.tubanlaiyuan))
|
||
{
|
||
sqlpart = sqlpart + $" and laiyuan_base='" + req.tubanlaiyuan + "'";
|
||
}
|
||
|
||
|
||
if (!string.IsNullOrEmpty(req.countyid))
|
||
{
|
||
sqlpart = sqlpart + $" and weizhixiannum_base='" + req.countyid + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.streetid))
|
||
{
|
||
sqlpart = sqlpart + $" and weizhizhennum_base='" + req.streetid + "'";
|
||
}
|
||
|
||
|
||
var info = await client.SqlQueryable<dynamic>(sql + sqlpart).ToPageListAsync(req.page, req.limit, totalcount);
|
||
Dictionary<string, object> dic = new Dictionary<string, object>();
|
||
dic.Add("allcount", allCount);
|
||
|
||
PageInfo<List<dynamic>> list1 = new PageInfo<List<dynamic>>
|
||
{
|
||
Items = info,
|
||
Total = totalcount,
|
||
};
|
||
dic.Add("list", list1);
|
||
return new Response<Dictionary<string, object>>
|
||
{
|
||
Result = dic
|
||
};
|
||
}
|
||
|
||
public async Task<Response<Dictionary<string, object>>> LoadAllKuangChanTask(MineralsTaskListReq req)
|
||
{
|
||
//获取当前用户
|
||
var authStrategyContext = _auth.GetCurrentUser();
|
||
var user = authStrategyContext.User;
|
||
RefAsync<int> totalcount = 0;
|
||
string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id;
|
||
int level = client.Ado.GetInt(sql1);
|
||
//该用户下包含所有部门
|
||
List<string> deplist = new List<string>();
|
||
string sqlpart = " ";
|
||
if (user != null && user.Id != -1 && level != 0)
|
||
{
|
||
var departs = client.Queryable<SysUserOrg>().Where(r => r.UserId == user.Id).ToList();
|
||
foreach (var item in departs)
|
||
{
|
||
var list = client.Queryable<SysOrg>().ToChildList(it => it.ParentId, item.OrgId)
|
||
?.Select(it => it.Id.ToString()).ToList();
|
||
deplist = deplist.Union(list).ToList();
|
||
}
|
||
|
||
string orgs = "\'" + string.Join("\',\'", deplist) + "\'";
|
||
sqlpart =
|
||
$" and (c.weizhixiannum_base in ({orgs}) or c.weizhizhennum_base in ({orgs}) or c.weizhicunname_base in ({orgs})) ";
|
||
}
|
||
|
||
var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoMineralsSchemeCode").Value;
|
||
string sql = "";
|
||
string sqlcount = "";
|
||
int allCount = 0;
|
||
|
||
sqlcount =
|
||
$"select count(a.*) from drone_caseinfo_minerals 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 and b.\"SchemeCode\"='" +
|
||
schemeCode + "' ";
|
||
|
||
sql =
|
||
$"select c.type_base as typename,c.laiyuan_base as tubanlaiyuan,b.\"Title\" as title,c.xiafatime_base as identificationTime,c.tubannum_base as caseNo,c.weizhixianname_base countyname,c.weizhizhenname_base streetname,c.weizhicunname_base communityname,\r\nc.weifaarea_base area," +
|
||
$"c.jbntarea_base as gengdiArea,weifaarea_punish as illeagalArea,c.gid geomid,c.\"Id\" \r\n from wf_process b " +
|
||
$" RIGHT JOIN drone_caseinfo_minerals c on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" where 1=1 and is_closed=0 and b.\"Id\" is not null and b.\"SchemeCode\"='" +
|
||
schemeCode + "' ";
|
||
|
||
|
||
|
||
allCount = await client.Ado.GetIntAsync(sqlcount + sqlpart);
|
||
|
||
|
||
|
||
|
||
if (req.year != 0)
|
||
{
|
||
sqlpart = sqlpart + $" and EXTRACT(YEAR FROM xiafatime_base) = {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 TO_DATE(xiafatime_base, 'YYYY-MM-DD') between TO_DATE('" + req.startTime +
|
||
$"','YYYY-MM-DD') and TO_DATE('" + datetime1.ToString("yyyy-MM-dd") + $"','YYYY-MM-DD')";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.caseNo))
|
||
{
|
||
sqlpart = sqlpart + $" and c.tubannum_base like '%" + req.caseNo + "%'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.typename))
|
||
{
|
||
sqlpart = sqlpart + $" and c.type_base='" + req.typename + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.nowStatus))
|
||
{
|
||
sqlpart = sqlpart + $" and c.status_base='" + req.nowStatus + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.tubanlaiyuan))
|
||
{
|
||
sqlpart = sqlpart + $" and laiyuan_base='" + req.tubanlaiyuan + "'";
|
||
}
|
||
|
||
|
||
if (!string.IsNullOrEmpty(req.countyid))
|
||
{
|
||
sqlpart = sqlpart + $" and weizhixiannum_base='" + req.countyid + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.streetid))
|
||
{
|
||
sqlpart = sqlpart + $" and weizhizhennum_base='" + req.streetid + "'";
|
||
}
|
||
|
||
|
||
var info = await client.SqlQueryable<dynamic>(sql + sqlpart).ToPageListAsync(req.page, req.limit, totalcount);
|
||
Dictionary<string, object> dic = new Dictionary<string, object>();
|
||
dic.Add("allcount", allCount);
|
||
|
||
PageInfo<List<dynamic>> list1 = new PageInfo<List<dynamic>>
|
||
{
|
||
Items = info,
|
||
Total = totalcount,
|
||
};
|
||
dic.Add("list", list1);
|
||
return new Response<Dictionary<string, object>>
|
||
{
|
||
Result = dic
|
||
};
|
||
}
|
||
|
||
public async Task<Response<PageInfo<List<dynamic>>>> LoadTaskList(TaskListReq req)
|
||
{
|
||
//获取当前用户
|
||
var authStrategyContext = _auth.GetCurrentUser();
|
||
var user = authStrategyContext.User;
|
||
RefAsync<int> totalcount = 0;
|
||
string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id;
|
||
int level = client.Ado.GetInt(sql1);
|
||
//该用户下包含所有部门
|
||
List<string> deplist = new List<string>();
|
||
string sqlpart = " ";
|
||
if (user != null && user.Id != -1 && level != 0)
|
||
{
|
||
var departs = client.Queryable<SysUserOrg>().Where(r => r.UserId == user.Id).ToList();
|
||
foreach (var item in departs)
|
||
{
|
||
var list = client.Queryable<SysOrg>().ToChildList(it => it.ParentId, item.OrgId)
|
||
?.Select(it => it.Id.ToString()).ToList();
|
||
deplist = deplist.Union(list).ToList();
|
||
}
|
||
|
||
string orgs = "\'" + string.Join("\',\'", deplist) + "\'";
|
||
sqlpart =
|
||
$" and (c.weizhixiannum_base in ({orgs}) or c.weizhizhennum_base in ({orgs}) or c.weizhicunname_base in ({orgs})) ";
|
||
}
|
||
|
||
var schemeCode = _configuration.GetSection("AppSetting:DroneCaseInfoMineralsSchemeCode").Value;
|
||
string sql = "";
|
||
if (req.type == 0)
|
||
{
|
||
sql =
|
||
$"select t.\"Id\" as Fid,a.\"Id\" as taskId,a.\"UnitName\" as unitName,c.type_base as typename,b.\"Title\" as title,c.xiafatime_base as createDate,c.tubannum_base as caseNo,c.weizhixianname_base countyname,c.weizhizhenname_base streetname,c.weizhicunname_base communityname,\r\nc.weifaarea_base area,a.\"ProcessCode\" as processcode,a.\"ProcessId\" as processid," +
|
||
$"c.jbntarea_base,gengdi_area,weifaarea_punish as illeagalArea,c.gid geomid,c.\"Id\" as caseid \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\n RIGHT JOIN drone_caseinfo_minerals c on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" where a.\"ProcessCode\"='" +
|
||
schemeCode + "' ";
|
||
}
|
||
else
|
||
{
|
||
sql =
|
||
$"select t.\"Id\" as Fid,a.\"Id\" as taskId,a.\"UnitName\" as unitName,c.type_base as typename,b.\"Title\" as title,c.xiafatime_base as createDate,c.tubannum_base as caseNo,c.weizhixianname_base countyname,c.weizhizhenname_base streetname,c.weizhicunname_base communityname,\r\nc.weifaarea_base area,a.\"ProcessCode\" as processcode,a.\"ProcessId\" as processid," +
|
||
$"c.jbntarea_base,gengdi_area,weifaarea_punish as illeagalArea,c.gid geomid,c.\"Id\" as caseid \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\n RIGHT JOIN drone_caseinfo_minerals c on b.\"InstanceInfo\"->>'pkeyValue'=c.\"Id\" where a.\"ProcessCode\"='" +
|
||
schemeCode + "' ";
|
||
}
|
||
|
||
sqlpart = sqlpart + $" and a.\"UnitName\" in ('待填报','待整改','待查处','查处后待整改') and a.\"State\"=1 ";
|
||
if (req.year != 0)
|
||
{
|
||
sqlpart = sqlpart + $" and EXTRACT(YEAR FROM xiafatime_base) = {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 TO_DATE(xiafatime_base, 'YYYY-MM-DD') between TO_DATE('" + req.startTime +
|
||
$"','YYYY-MM-DD') and TO_DATE('" + datetime1.ToString("yyyy-MM-dd") + $"','YYYY-MM-DD')";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.caseNo))
|
||
{
|
||
sqlpart = sqlpart + $" and c.tubannum_base like '%" + req.caseNo + "%'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.isBuildName))
|
||
{
|
||
sqlpart = sqlpart + $" and c.type_base='" + req.isBuildName + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.nowStatus))
|
||
{
|
||
sqlpart = sqlpart + $" and c.status_base='" + req.nowStatus + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.tubanlaiyuan))
|
||
{
|
||
sqlpart = sqlpart + $" and laiyuan_base='" + req.tubanlaiyuan + "'";
|
||
}
|
||
|
||
|
||
if (!string.IsNullOrEmpty(req.countyid))
|
||
{
|
||
sqlpart = sqlpart + $" and weizhixiannum_base='" + req.countyid + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.streetid))
|
||
{
|
||
sqlpart = sqlpart + $" and weizhizhennum_base='" + req.streetid + "'";
|
||
}
|
||
|
||
|
||
var info = await client.SqlQueryable<dynamic>(sql + sqlpart).ToPageListAsync(req.page, req.limit, totalcount);
|
||
|
||
|
||
return new Response<PageInfo<List<dynamic>>>
|
||
{
|
||
Result = new PageInfo<List<dynamic>>
|
||
{
|
||
Items = info,
|
||
Total = totalcount
|
||
}
|
||
};
|
||
}
|
||
|
||
public void UpdateDroneCaseInfo(DronCaseSingleCityUpdateReq req)
|
||
{
|
||
var authStrategyContext = _auth.GetCurrentUser();
|
||
var user = authStrategyContext.User;
|
||
|
||
|
||
if (!string.IsNullOrEmpty(req.communityid) && !string.IsNullOrEmpty(req.communityname))
|
||
{
|
||
client.Updateable<DroneCaseInfoMinerals>().SetColumns(c => new DroneCaseInfoMinerals
|
||
{
|
||
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<DroneCaseInfoSingle>().SetColumns(c => new DroneCaseInfoSingle
|
||
{
|
||
countyid = req.countyid,
|
||
countyname = req.countyname,
|
||
streetid = req.streetid,
|
||
streetname = req.streetname
|
||
}).Where(a => a.Id == req.Id).ExecuteCommand();
|
||
}
|
||
}
|
||
|
||
public async Task<Response<string>> CaseRecover(CaseRecoverReq req)
|
||
{
|
||
var authStrategyContext = _auth.GetCurrentUser();
|
||
var user = authStrategyContext.User;
|
||
using var db = Repository.AsSugarClient();
|
||
|
||
var relationships = new List<DroneCaseSplit>(req.parts.Count);
|
||
var caseId = Guid.NewGuid().ToString();
|
||
try
|
||
{
|
||
await db.Ado.BeginTranAsync(IsolationLevel.ReadCommitted);
|
||
List<string> oldcaseids = new List<string>();
|
||
List<string> oldcaseids1 = new List<string>();
|
||
Dictionary<string, string> map = new Dictionary<string, string>();
|
||
map.Add("caseId", req.caseid);
|
||
string sql5 = "select new_case_id from drone_case_split where original_case_id='" + req.caseid +
|
||
"' and is_recover=0";
|
||
var caseids1 = await db.Ado.SqlQueryAsync<string>(sql5);
|
||
if (caseids1.Count > 0)
|
||
{
|
||
return new Response<string>
|
||
{
|
||
Result = "还原失败",
|
||
Message = "当前选中的案件还有分割的子案件不允许还原"
|
||
};
|
||
}
|
||
|
||
if (req.type == 0)
|
||
{
|
||
while (true)
|
||
{
|
||
string sql = "select original_case_id from drone_case_split where new_case_id='" + map["caseId"] +
|
||
"' and is_recover=0";
|
||
var caseids = await db.Ado.SqlQuerySingleAsync<string>(sql);
|
||
if (string.IsNullOrEmpty(caseids))
|
||
{
|
||
break;
|
||
}
|
||
|
||
map["caseId"] = caseids;
|
||
}
|
||
|
||
if (map["caseId"] == req.caseid)
|
||
{
|
||
return new Response<string>
|
||
{
|
||
Result = "还原失败",
|
||
Message = "案件未拆不允许还原"
|
||
};
|
||
}
|
||
|
||
oldcaseids.Add(map["caseId"]);
|
||
caseId = map["caseId"];
|
||
while (true)
|
||
{
|
||
string param = "";
|
||
for (int i = 0; i < oldcaseids.Count; i++)
|
||
{
|
||
if (oldcaseids.Count - 1 == i)
|
||
{
|
||
param = "'" + oldcaseids[i] + "'";
|
||
}
|
||
else
|
||
{
|
||
param = "'" + oldcaseids[i] + "',";
|
||
}
|
||
}
|
||
|
||
string sql1 = "select new_case_id from drone_case_split where original_case_id in (" + param +
|
||
") and is_recover=0";
|
||
var caseids = await db.Ado.SqlQueryAsync<string>(sql1);
|
||
if (caseids == null || caseids.Count == 0)
|
||
{
|
||
break;
|
||
}
|
||
|
||
oldcaseids.Clear();
|
||
oldcaseids.AddRange(caseids);
|
||
oldcaseids1.AddRange(caseids);
|
||
}
|
||
|
||
|
||
var process1 = await Repository.ChangeRepository<SugarRepositiry<WFProcess>>().AsQueryable()
|
||
.Where(t => SqlFunc.JsonField(t.InstanceInfo, "pkeyValue").Equals(caseId))
|
||
.FirstAsync();
|
||
await _processApp.RecoverProcess(process1.Id);
|
||
// 还原案件
|
||
await db.Updateable<DroneCaseInfoSingle>().SetColumns(c => new DroneCaseInfoSingle
|
||
{
|
||
is_closed = 0,
|
||
is_split = 2
|
||
}).Where(a => a.Id == caseId).ExecuteCommandAsync();
|
||
foreach (var casePart in oldcaseids1)
|
||
{
|
||
// 根据案件id取得流程
|
||
var process2 = await Repository.ChangeRepository<SugarRepositiry<WFProcess>>().AsQueryable()
|
||
.Where(t => SqlFunc.JsonField(t.InstanceInfo, "pkeyValue").Equals(casePart))
|
||
.FirstAsync();
|
||
// 作废流程
|
||
var result = await _processApp.DeleteProcess(process2.Id);
|
||
var original = await db.Queryable<DroneCaseInfoSingle>().FirstAsync(t => t.Id == casePart);
|
||
await db.Updateable<DroneCaseSplit>().SetColumns(c => new DroneCaseSplit
|
||
{
|
||
IsRecover = 1
|
||
}).Where(a => a.NewCaseId == casePart).ExecuteCommandAsync();
|
||
// 关闭案件
|
||
await db.Updateable<DroneCaseInfoSingle>().SetColumns(c => new DroneCaseInfoSingle
|
||
{
|
||
is_closed = 1
|
||
}).Where(a => a.Id == casePart).ExecuteCommandAsync();
|
||
|
||
/* var splitRelation = new DroneCaseSplit();
|
||
splitRelation.NewCaseId = caseId;
|
||
splitRelation.OriginalCaseId = casePart.caseid;
|
||
relationships.Add(splitRelation);*/
|
||
}
|
||
|
||
await db.Ado.CommitTranAsync();
|
||
return new Response<string>
|
||
{
|
||
Result = "还原成功",
|
||
Message = "还原成功"
|
||
};
|
||
}
|
||
else
|
||
{
|
||
foreach (var casePart in req.parts)
|
||
{
|
||
var original = await db.Queryable<DroneCaseInfoSingle>().FirstAsync(t => t.Id == casePart.caseid);
|
||
// 关闭案件
|
||
var record = new DroneCaseInfoSingle
|
||
{
|
||
Id = casePart.caseid,
|
||
is_closed = 1
|
||
};
|
||
await db.Updateable(record).ExecuteCommandAsync();
|
||
// 根据案件id取得流程
|
||
var process2 = await Repository.ChangeRepository<SugarRepositiry<WFProcess>>().AsQueryable()
|
||
.Where(t => SqlFunc.JsonField(t.InstanceInfo, "pkeyValue").Equals(casePart.caseid))
|
||
.FirstAsync();
|
||
// 作废流程
|
||
var result = await _processApp.DeleteProcess(process2.Id);
|
||
var splitRelation1 = new DroneCaseSplit();
|
||
splitRelation1.NewCaseId = caseId;
|
||
splitRelation1.OriginalCaseId = casePart.caseid;
|
||
relationships.Add(splitRelation1);
|
||
}
|
||
|
||
await db.Insertable(relationships).ExecuteCommandAsync();
|
||
// 生成新案件
|
||
var caseList = new List<DroneCaseInfoSingle>();
|
||
var original1 = await db.Queryable<DroneCaseInfoSingle>().FirstAsync(t => t.Id == req.parts[0].caseid);
|
||
var process = await Repository.ChangeRepository<SugarRepositiry<WFProcess>>().AsQueryable()
|
||
.Where(t => SqlFunc.JsonField(t.InstanceInfo, "pkeyValue").Equals(original1.case_no))
|
||
.FirstAsync();
|
||
var wktReader = new WKTReader();
|
||
var caseInfo = original1.MapTo<DroneCaseInfoSingle>();
|
||
caseInfo.Id = caseId;
|
||
caseInfo.nongyongdi_area = req.nongyongdi_area;
|
||
caseInfo.gengdi_area = req.gengdi_area;
|
||
caseInfo.yongjiujibennongtian_area = req.yongjiujibennongtian_area;
|
||
caseInfo.shengtaibaohuhongxian_area = req.shengtaibaohuhongxian_area;
|
||
caseInfo.guotukongjianguihua_area = req.guotukongjianguihua_area;
|
||
caseInfo.zhongdianquyu_area = req.zhongdianquyu_area;
|
||
caseInfo.area = req.area;
|
||
// 设置时间
|
||
caseInfo.createtime = DateTime.Now;
|
||
// 设置创建人
|
||
caseInfo.createuser = user.Id + "";
|
||
caseInfo.createusername = user.Name;
|
||
// 填充图斑信息
|
||
var geometry = wktReader.Read(req.geom);
|
||
var gidStr = _commonDataManager.GetMaxKeyVal("gid", "drone_shp_data", 1);
|
||
var insertObj = new Dictionary<string, object>
|
||
{
|
||
{ "gid", gidStr.ToInt() },
|
||
{ "geom", geometry.AsBinary() }
|
||
};
|
||
// 插入图斑
|
||
await db.Insertable(insertObj).AS("drone_shp_data").ExecuteCommandAsync();
|
||
caseInfo.geomid = gidStr;
|
||
caseList.Add(caseInfo);
|
||
|
||
await db.Insertable(caseList).ExecuteCommandAsync();
|
||
|
||
// 发起新流程
|
||
var processId = Guid.NewGuid().ToString();
|
||
var instanceInfo = process.InstanceInfo;
|
||
instanceInfo.pkeyValue = caseInfo.Id;
|
||
string x = Json.ToJson(instanceInfo);
|
||
Console.WriteLine("instance: " + x);
|
||
await _processApp.SaveDraft(caseInfo.Id, process.SchemeCode, user.Id + "",
|
||
Json.ToJson(instanceInfo), process.ParentProcessId, process.ParentNodeId, process.ParentTaskId, 0,
|
||
caseInfo.case_description);
|
||
await _processApp.Create(caseInfo.Id, process.SchemeCode, user.Id + "", null, Json.ToJson(instanceInfo),
|
||
caseInfo.case_description);
|
||
|
||
await db.Ado.CommitTranAsync();
|
||
|
||
return new Response<string>
|
||
{
|
||
Result = "拆分成功",
|
||
Message = "拆分成功"
|
||
};
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
await db.Ado.RollbackTranAsync();
|
||
throw e;
|
||
}
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 关闭案件
|
||
/// </summary>
|
||
/// <param name="id">案件id</param>
|
||
/// <returns></returns>
|
||
public async Task<Response<bool>> CloseMineralCaseInfo(string id, string closereason)
|
||
{
|
||
var user = _auth.GetCurrentUser().User;
|
||
var info = client.Queryable<DroneCaseInfoMinerals>().Where(r => r.Id == id).First();
|
||
using (var uow = base.UnitWork.CreateContext())
|
||
{
|
||
await uow.DroneCaseInfoMinerals.UpdateAsync(c => new DroneCaseInfoMinerals()
|
||
{
|
||
is_closed = 1,
|
||
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<bool>
|
||
{
|
||
Result = true,
|
||
Message = "关闭成功"
|
||
};
|
||
}
|
||
else
|
||
{
|
||
return new Response<bool>
|
||
{
|
||
Code = 500,
|
||
Result = false,
|
||
Message = "关闭失败"
|
||
};
|
||
}
|
||
}
|
||
}
|
||
|
||
#region
|
||
|
||
/// <summary>
|
||
/// 获取待审核图斑--矿产
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
public async Task<Response<PageInfo<List<dynamic>>>> LoadCaseInfoCheckTuBanList(CaseInfoTypeName req)
|
||
{
|
||
var authStrategyContext = _auth.GetCurrentUser();
|
||
var user = authStrategyContext.User;
|
||
RefAsync<int> totalcount = 0;
|
||
string sql1 = "select min(\"Level\") from sys_userorg where \"UserId\"=" + user.Id;
|
||
int level = client.Ado.GetInt(sql1);
|
||
//该用户下包含所有部门
|
||
List<string> deplist = new List<string>();
|
||
string sqlpart = " ";
|
||
if (user != null && user.Id != -1 && level != 0)
|
||
{
|
||
var departs = client.Queryable<SysUserOrg>().Where(r => r.UserId == user.Id).ToList();
|
||
foreach (var item in departs)
|
||
{
|
||
var list = client.Queryable<SysOrg>().ToChildList(it => it.ParentId, item.OrgId)
|
||
?.Select(it => it.Id.ToString()).ToList();
|
||
deplist = deplist.Union(list).ToList();
|
||
}
|
||
|
||
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.tubannum_base as case_no,miaoshu_base as case_description,type_base as typename,weizhixianname_base as countyname,weizhizhenname_base as streetname,weizhicunname_base as communityname,panduren_base as identification_user,createdtime_base as createtime,c.original_case_no,is_closed," +
|
||
$"b.\"Id\" as processid from drone_caseinfo_minerals 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.feifacaikuang + "' where 1=1 ";
|
||
|
||
|
||
if (!string.IsNullOrEmpty(req.typename))
|
||
{
|
||
sqlpart = sqlpart + $" and type_base='" + req.typename + "'";
|
||
}
|
||
|
||
|
||
if (!string.IsNullOrEmpty(req.countyid))
|
||
{
|
||
sqlpart = sqlpart + $" and weizhixiannum_base='" + req.countyid + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.streetid))
|
||
{
|
||
sqlpart = sqlpart + $" and weizhizhennum_base='" + req.streetid + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.communityid))
|
||
{
|
||
sqlpart = sqlpart + $" and weizhicunnum_base='" + 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";
|
||
}
|
||
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.tubannum_base like '%" + req.caseNo + "%'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.originalCaseNo))
|
||
{
|
||
sqlpart = sqlpart + $" and c.original_case_no like '%" + req.originalCaseNo + "%'";
|
||
}
|
||
|
||
sqlpart += $" ORDER BY createdtime_base desc";
|
||
Console.WriteLine(sql + sqlpart);
|
||
var info = await client.SqlQueryable<dynamic>(sql + sqlpart).ToPageListAsync(req.page, req.limit, totalcount);
|
||
|
||
|
||
return new Response<PageInfo<List<dynamic>>>
|
||
{
|
||
Result = new PageInfo<List<dynamic>>
|
||
{
|
||
Items = info,
|
||
Total = totalcount
|
||
}
|
||
};
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 采矿统计
|
||
|
||
public Response<List<OffenceMineralsResp>> CaseMineralsForExcel(DateTime startTime, DateTime endTime)
|
||
{
|
||
// Desc:处理状态 1-待填报, 2-待整改, 3-待县级审核,
|
||
// 4-待市级审核 5-待查处 6. 查处待县级审核 7. 查处待市级审核
|
||
// 8. 查处后待整改 9. 整改后待县级审核 10. 整改后待市级审核 99-已归档
|
||
var user = _auth.GetCurrentUser().User;
|
||
var orgIds = base._auth.GetCurrentUser().Orgs;
|
||
List<OffenceMineralsResp> listResp = new List<OffenceMineralsResp>();
|
||
List<SysOrg> org = new List<SysOrg>();
|
||
List<DroneCaseInfoMinerals> caseList = new List<DroneCaseInfoMinerals>();
|
||
if (orgIds.Any(r => r.Level == 0) || user.Id == -1) // 查询全部
|
||
{
|
||
org = client.Queryable<SysOrg>().Where(r => r.Level == 1).ToList();
|
||
caseList = client.Queryable<DroneCaseInfoMinerals>()
|
||
.LeftJoin<WFProcess>((a, b) => SqlFunc.JsonField(b.InstanceInfo, "pkeyValue") == a.Id)
|
||
.Where((a, b) => a.is_closed == 0)
|
||
.Where((a, b) => !string.IsNullOrEmpty(b.Id))
|
||
.WhereIF(startTime.Year != 0001, (a, b) => a.xiafatime_base >= startTime && a.xiafatime_base <= endTime)
|
||
.ToList();
|
||
}
|
||
else if (orgIds.Any(r => r.Level == 1))
|
||
{
|
||
//县区数据
|
||
org = client.Queryable<SysOrg>()
|
||
.Where(r => r.Level == 2 && orgIds.Select(a => a.Id).Contains(r.ParentId)).ToList();
|
||
caseList = client.Queryable<DroneCaseInfoMinerals>()
|
||
.LeftJoin<WFProcess>((a, b) => SqlFunc.JsonField(b.InstanceInfo, "pkeyValue") == a.Id)
|
||
.Where((a, b) => a.is_closed == 0)
|
||
.Where((a, b) => !string.IsNullOrEmpty(b.Id))
|
||
.WhereIF(startTime.Year != 0001, (a, b) => a.xiafatime_base >= startTime && a.xiafatime_base <= endTime)
|
||
.ToList();
|
||
}
|
||
|
||
foreach (var item in org)
|
||
{
|
||
var countyIdString = item.Id.ToString();
|
||
var casesForCounty = caseList.Where(r => r.countyid == countyIdString || r.streetid == countyIdString)
|
||
.ToList();
|
||
//下发图斑
|
||
var xfwtzs = casesForCounty.Count();
|
||
//合法 填合法,且审核通过
|
||
var hf = casesForCounty.Count(r => r.hefapanding_fill == 1 && r.handle_status_id == 99);
|
||
//违法 只要填违法就算
|
||
var wf = casesForCounty.Count(r => r.hefapanding_fill == 2);
|
||
//其他 填其他,且审核通过
|
||
var qt = casesForCounty.Count(r => r.hefapanding_fill == 3 && r.handle_status_id == 99);
|
||
//已完成归档 违法的,且审核归档的
|
||
var ywcgd = casesForCounty.Count(r => r.hefapanding_fill == 2 && r.handle_status_id == 99);
|
||
//未完成归档 违法的,未审核归档的
|
||
var wwcgd = casesForCounty.Count(r => r.hefapanding_fill == 3 && r.handle_status_id != 99);
|
||
//违法采矿
|
||
var wfck = casesForCounty.Count(r =>
|
||
r.hefapanding_fill == 3 && r.handle_status_id != 99 && r.typename == "开采");
|
||
//违法加工
|
||
var wfjg = casesForCounty.Count(r =>
|
||
r.hefapanding_fill == 3 && r.handle_status_id != 99 && r.typename == "加工");
|
||
//整改率
|
||
var zgl = wf != 0 ? Math.Round((double)ywcgd / wf, 2) * 100 : 0;
|
||
//驳回率
|
||
//var bohui = casesForCounty.Count(r => r.is_tbsjbohui > 0 || r.is_zgsjbohui > 0);
|
||
var bhl = xfwtzs != 0
|
||
? Math.Round(
|
||
(double)casesForCounty.Where(r => (r.is_tbsjbohui ?? 0) > 0 || (r.is_zgsjbohui ?? 0) > 0)
|
||
.Sum(r => (r.is_tbsjbohui ?? 0) + (r.is_zgsjbohui ?? 0)) / xfwtzs, 2) * 100
|
||
: 0;
|
||
//上报率 上报数/县区图斑总数 上报数指县区填报的图斑并通过市级审核的图斑数
|
||
var shangbao = casesForCounty.Count(r => r.handle_status_id != 99);
|
||
var sbl = xfwtzs != 0 ? Math.Round((double)shangbao / xfwtzs, 2) * 100 : 0;
|
||
OffenceMineralsResp offenceResp = new()
|
||
{
|
||
countyid = item.Id,
|
||
countyname = item.Name,
|
||
xfwtzs = xfwtzs,
|
||
hf = hf,
|
||
wf = wf,
|
||
qt = qt,
|
||
ywcgd = ywcgd,
|
||
wwcgd = wwcgd,
|
||
wfck = wfck,
|
||
wfjg = wfjg,
|
||
zgl = Math.Round(zgl, 2),
|
||
bhl = Math.Round(bhl, 2),
|
||
sbl = Math.Round(sbl, 2)
|
||
};
|
||
listResp.Add(offenceResp);
|
||
}
|
||
|
||
listResp = listResp.OrderByDescending(r => r.zgl).ToList();
|
||
|
||
return new Response<List<OffenceMineralsResp>>
|
||
{
|
||
Result = listResp,
|
||
Message = "获取数据成功"
|
||
};
|
||
}
|
||
|
||
public Response<MemoryStream> CaseOfMineralsToExcel(DateTime startTime, DateTime endTime)
|
||
{
|
||
Response<MemoryStream> response = new Response<MemoryStream>();
|
||
try
|
||
{
|
||
var list = CaseMineralsForExcel(startTime, endTime).Result;
|
||
HSSFWorkbook workbook = new HSSFWorkbook();
|
||
|
||
#region 样式设置
|
||
|
||
ICellStyle CreateCellStyle(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign,
|
||
VerticalAlignment vAlign, bool bold = false)
|
||
{
|
||
IFont font = wb.CreateFont();
|
||
font.FontName = fontName;
|
||
font.FontHeightInPoints = fontHeight;
|
||
font.IsBold = bold;
|
||
|
||
ICellStyle style = wb.CreateCellStyle();
|
||
style.BorderBottom = BorderStyle.Thin;
|
||
style.BorderLeft = BorderStyle.Thin;
|
||
style.BorderRight = BorderStyle.Thin;
|
||
style.BorderTop = BorderStyle.Thin;
|
||
style.Alignment = hAlign;
|
||
style.VerticalAlignment = vAlign;
|
||
style.SetFont(font);
|
||
style.WrapText = true;
|
||
|
||
return style;
|
||
}
|
||
|
||
ICellStyle CreateCellStyle2(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign,
|
||
VerticalAlignment vAlign, bool bold = false)
|
||
{
|
||
IFont font = wb.CreateFont();
|
||
font.FontName = fontName;
|
||
font.FontHeightInPoints = fontHeight;
|
||
font.IsBold = bold;
|
||
|
||
ICellStyle style = wb.CreateCellStyle();
|
||
style.Alignment = hAlign;
|
||
style.VerticalAlignment = vAlign;
|
||
style.SetFont(font);
|
||
style.WrapText = true;
|
||
|
||
return style;
|
||
}
|
||
|
||
// 创建右对齐样式
|
||
ICellStyle rightAlignStyle = workbook.CreateCellStyle();
|
||
rightAlignStyle.Alignment = HorizontalAlignment.Right; // 设置右对齐
|
||
rightAlignStyle.VerticalAlignment = VerticalAlignment.Center;
|
||
IFont font = workbook.CreateFont();
|
||
font.FontName = "宋体";
|
||
font.FontHeightInPoints = 12;
|
||
rightAlignStyle.SetFont(font);
|
||
rightAlignStyle.WrapText = true;
|
||
//第二个sheet右对齐样式
|
||
ICellStyle rightAlignStyle2 = workbook.CreateCellStyle();
|
||
rightAlignStyle2.Alignment = HorizontalAlignment.Right; // 设置右对齐
|
||
rightAlignStyle2.VerticalAlignment = VerticalAlignment.Center;
|
||
IFont font1 = workbook.CreateFont();
|
||
font1.FontName = "宋体";
|
||
font1.FontHeightInPoints = 9;
|
||
rightAlignStyle2.SetFont(font1);
|
||
rightAlignStyle2.WrapText = true;
|
||
|
||
ICellStyle contentStyle =
|
||
CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
|
||
ICellStyle titleStyle =
|
||
CreateCellStyle2(workbook, 10, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
|
||
ICellStyle headerStyle1 = CreateCellStyle2(workbook, 18, "方正小标宋简体", HorizontalAlignment.Center,
|
||
VerticalAlignment.Center);
|
||
ICellStyle headerStyle2 =
|
||
CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Right, VerticalAlignment.Center);
|
||
ICellStyle headerStyle3 =
|
||
CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
|
||
//第二个sheet
|
||
ICellStyle contentStyle22 =
|
||
CreateCellStyle(workbook, 12, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
|
||
ICellStyle titleStyle2 =
|
||
CreateCellStyle2(workbook, 9, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
|
||
ICellStyle headerStyle21 = CreateCellStyle2(workbook, 18, "方正小标宋简体", HorizontalAlignment.Center,
|
||
VerticalAlignment.Center);
|
||
ICellStyle headerStyle23 =
|
||
CreateCellStyle(workbook, 12, "黑体", HorizontalAlignment.Center, VerticalAlignment.Center);
|
||
ICellStyle beizhuStyle21 =
|
||
CreateCellStyle2(workbook, 9, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
|
||
|
||
#endregion
|
||
|
||
#region 第一个sheet
|
||
|
||
#region 创建表头
|
||
|
||
IRow CreateRowWithHeight(ISheet sht, int rowIndex, float heightInPoints)
|
||
{
|
||
IRow row = sht.CreateRow(rowIndex);
|
||
row.HeightInPoints = heightInPoints;
|
||
return row;
|
||
}
|
||
|
||
void SetCellStyle(IRow row, ICellStyle style)
|
||
{
|
||
foreach (ICell cell in row.Cells)
|
||
{
|
||
cell.CellStyle = style;
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
|
||
#endregion
|
||
|
||
|
||
#region 第二个sheet
|
||
|
||
ISheet sheet2 = workbook.CreateSheet("Sheet2");
|
||
|
||
#region 创建表头
|
||
|
||
IRow row20 = CreateRowWithHeight(sheet2, 0, 38);
|
||
row20.CreateCell(0).SetCellValue("汇总表");
|
||
//for (int k = 1; k < 8; k++) row20.CreateCell(k);
|
||
|
||
IRow row21 = CreateRowWithHeight(sheet2, 1, 27);
|
||
row21.CreateCell(0).SetCellValue("统计时间:" + DateTime.Now.ToString("yyyy年M月d日HH:mm"));
|
||
row21.CreateCell(1);
|
||
row21.CreateCell(2);
|
||
row21.CreateCell(3);
|
||
row21.CreateCell(4);
|
||
row21.CreateCell(5);
|
||
row21.CreateCell(6);
|
||
row21.CreateCell(7);
|
||
row21.CreateCell(8);
|
||
row21.CreateCell(9);
|
||
row21.CreateCell(10);
|
||
row21.CreateCell(11);
|
||
row21.CreateCell(12);
|
||
|
||
IRow row22 = CreateRowWithHeight(sheet2, 2, 17);
|
||
row22.CreateCell(0).SetCellValue("序号");
|
||
row22.CreateCell(1).SetCellValue("县区");
|
||
row22.CreateCell(2).SetCellValue("下发问题总数");
|
||
row22.CreateCell(3).SetCellValue("合法");
|
||
row22.CreateCell(4).SetCellValue("其他");
|
||
row22.CreateCell(5).SetCellValue("违法");
|
||
row22.CreateCell(6).SetCellValue("已完成归档");
|
||
row22.CreateCell(7).SetCellValue("未完成归档");
|
||
row22.CreateCell(8).SetCellValue("未完成归档");
|
||
row22.CreateCell(9);
|
||
row22.CreateCell(10).SetCellValue("整改率(%)");
|
||
row22.CreateCell(11).SetCellValue("驳回率(%)");
|
||
row22.CreateCell(12).SetCellValue("上报率(%)");
|
||
|
||
IRow row23 = CreateRowWithHeight(sheet2, 3, 17);
|
||
row23.CreateCell(0).SetCellValue("序号");
|
||
row23.CreateCell(1).SetCellValue("县区");
|
||
row23.CreateCell(2).SetCellValue("下发问题总数");
|
||
row23.CreateCell(3).SetCellValue("合法");
|
||
row23.CreateCell(4).SetCellValue("其他");
|
||
row23.CreateCell(5).SetCellValue("违法");
|
||
row23.CreateCell(6).SetCellValue("已完成归档");
|
||
row23.CreateCell(7).SetCellValue("未完成归档");
|
||
row23.CreateCell(8).SetCellValue("违法采矿");
|
||
row23.CreateCell(9).SetCellValue("违法加工");
|
||
row23.CreateCell(10).SetCellValue("整改率(%)");
|
||
row23.CreateCell(11).SetCellValue("驳回率(%)");
|
||
row23.CreateCell(12).SetCellValue("上报率(%)");
|
||
|
||
// 设置样式
|
||
SetCellStyle(row20, headerStyle21);
|
||
SetCellStyle(row21, titleStyle2);
|
||
SetCellStyle(row22, headerStyle23);
|
||
SetCellStyle(row23, headerStyle23);
|
||
row21.Cells[7].CellStyle = rightAlignStyle2;
|
||
|
||
// 合并单元格
|
||
sheet2.AddMergedRegion(new CellRangeAddress(0, 0, 0, 10)); // 合并标题行
|
||
sheet2.AddMergedRegion(new CellRangeAddress(1, 1, 0, 2));
|
||
//sheet2.AddMergedRegion(new CellRangeAddress(2, 2, 2, 3));
|
||
//sheet2.AddMergedRegion(new CellRangeAddress(2, 2, 4, 5));
|
||
//sheet2.AddMergedRegion(new CellRangeAddress(2, 2, 6, 7));
|
||
sheet2.AddMergedRegion(new CellRangeAddress(2, 3, 0, 0));
|
||
sheet2.AddMergedRegion(new CellRangeAddress(2, 3, 1, 1));
|
||
sheet2.AddMergedRegion(new CellRangeAddress(2, 3, 2, 2));
|
||
sheet2.AddMergedRegion(new CellRangeAddress(2, 3, 3, 3));
|
||
sheet2.AddMergedRegion(new CellRangeAddress(2, 3, 4, 4));
|
||
sheet2.AddMergedRegion(new CellRangeAddress(2, 3, 5, 5));
|
||
sheet2.AddMergedRegion(new CellRangeAddress(2, 3, 6, 6));
|
||
sheet2.AddMergedRegion(new CellRangeAddress(2, 3, 7, 7));
|
||
sheet2.AddMergedRegion(new CellRangeAddress(2, 3, 10, 10));
|
||
sheet2.AddMergedRegion(new CellRangeAddress(2, 3, 11, 11));
|
||
sheet2.AddMergedRegion(new CellRangeAddress(2, 2, 8, 9));
|
||
|
||
// 设置列宽
|
||
int[] normalColumns2 = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
|
||
foreach (var index in normalColumns2) sheet2.SetColumnWidth(index, 11 * 256); // 设置列宽
|
||
sheet2.SetColumnWidth(0, 6 * 256); // 设置列宽
|
||
sheet2.SetColumnWidth(1, 10 * 256); // 设置列宽
|
||
|
||
#endregion
|
||
|
||
#region 填充数据
|
||
|
||
for (int i = 0; i < list.Count - 1; i++)
|
||
{
|
||
var rowIndex = i + 4; // 数据从第5行开始
|
||
var row = CreateRowWithHeight(sheet2, rowIndex, 34);
|
||
row.CreateCell(0).SetCellValue(i + 1);
|
||
row.CreateCell(1).SetCellValue(list[i].countyname ?? "");
|
||
row.CreateCell(2).SetCellValue(list[i].xfwtzs);
|
||
row.CreateCell(3).SetCellValue(list[i].hf);
|
||
row.CreateCell(4).SetCellValue(list[i].qt);
|
||
row.CreateCell(5).SetCellValue(list[i].wf);
|
||
row.CreateCell(6).SetCellValue(list[i].ywcgd);
|
||
row.CreateCell(7).SetCellValue(list[i].wwcgd);
|
||
row.CreateCell(8).SetCellValue(list[i].wfck);
|
||
row.CreateCell(9).SetCellValue(list[i].wfjg);
|
||
row.CreateCell(10).SetCellValue(list[i].zgl);
|
||
row.CreateCell(11).SetCellValue(list[i].bhl);
|
||
row.CreateCell(12).SetCellValue(list[i].sbl);
|
||
SetCellStyle(row, contentStyle22);
|
||
}
|
||
|
||
#endregion
|
||
|
||
#endregion
|
||
|
||
response.Result = new MemoryStream();
|
||
workbook.Write(response.Result);
|
||
response.Result.Position = 0;
|
||
workbook.Close();
|
||
|
||
response.Code = 200;
|
||
response.Message = "获取成功";
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
response.Code = 500;
|
||
response.Message = ex.Message;
|
||
}
|
||
|
||
return response;
|
||
}
|
||
|
||
#endregion
|
||
|
||
|
||
#region 新汇总
|
||
|
||
public Response<List<OffenceMineralsNewResp>> CaseMineralsForExcelNew(DateTime startTime, DateTime endTime,string tubanlaiyuan)
|
||
{
|
||
// Desc:处理状态 1-待填报, 2-待整改, 3-待县级审核,
|
||
// 4-待市级审核 5-待查处 6. 查处待县级审核 7. 查处待市级审核
|
||
// 8. 查处后待整改 9. 整改后待县级审核 10. 整改后待市级审核 99-已归档
|
||
var user = _auth.GetCurrentUser().User;
|
||
var orgIds = base._auth.GetCurrentUser().Orgs;
|
||
List<OffenceMineralsNewResp> listResp = new List<OffenceMineralsNewResp>();
|
||
List<SysOrg> org = new List<SysOrg>();
|
||
List<DroneCaseInfoMinerals> caseList = new List<DroneCaseInfoMinerals>();
|
||
List<string> tubanlaiyuanList = string.IsNullOrEmpty(tubanlaiyuan)
|
||
? new List<string>()
|
||
: tubanlaiyuan.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||
if (orgIds.Any(r => r.Level == 0) || user.Id == -1) // 查询全部
|
||
{
|
||
org = client.Queryable<SysOrg>().Where(r => r.Level == 1).ToList();
|
||
caseList = client.Queryable<DroneCaseInfoMinerals>()
|
||
.LeftJoin<WFProcess>((a, b) => SqlFunc.JsonField(b.InstanceInfo, "pkeyValue") == a.Id)
|
||
.Where((a, b) => a.is_closed == 0)
|
||
.Where((a, b) => !string.IsNullOrEmpty(b.Id))
|
||
.WhereIF(!string.IsNullOrEmpty(tubanlaiyuan),(a,b)=>tubanlaiyuanList.Contains(a.tubanlaiyuan))
|
||
.WhereIF(startTime.Year != 0001, (a, b) => a.xiafatime_base >= startTime && a.xiafatime_base <= endTime)
|
||
.ToList();
|
||
}
|
||
else if (orgIds.Any(r => r.Level == 1))
|
||
{
|
||
//县区数据
|
||
org = client.Queryable<SysOrg>()
|
||
.Where(r => r.Level == 2 && orgIds.Select(a => a.Id).Contains(r.ParentId)).ToList();
|
||
caseList = client.Queryable<DroneCaseInfoMinerals>()
|
||
.LeftJoin<WFProcess>((a, b) => SqlFunc.JsonField(b.InstanceInfo, "pkeyValue") == a.Id)
|
||
.Where((a, b) => a.is_closed == 0)
|
||
.Where((a, b) => !string.IsNullOrEmpty(b.Id))
|
||
.WhereIF(!string.IsNullOrEmpty(tubanlaiyuan),(a,b)=>tubanlaiyuanList.Contains(a.tubanlaiyuan))
|
||
.WhereIF(startTime.Year != 0001, (a, b) => a.xiafatime_base >= startTime && a.xiafatime_base <= endTime)
|
||
.ToList();
|
||
}
|
||
|
||
foreach (var item in org)
|
||
{
|
||
var countyIdString = item.Id.ToString();
|
||
var casesForCounty = caseList.Where(r => r.countyid == countyIdString || r.streetid == countyIdString)
|
||
.ToList();
|
||
//下发图斑
|
||
var xfwtzs = casesForCounty.Count();
|
||
//已完成
|
||
var ywc = casesForCounty.Count(r => r.handle_status_id == 99);
|
||
//未完成
|
||
var wwc = casesForCounty.Count(r => r.handle_status_id != 99);
|
||
//完成率
|
||
var wcl = xfwtzs != 0 ? Math.Round((double)ywc / xfwtzs, 2) * 100 : 0;
|
||
//定性合法(开采和加工)
|
||
var dxhf = casesForCounty.Count(r =>
|
||
(r.hefapanding_fill == 1 || r.hefapanding_jgfill == 1) && r.handle_status_id == 99);
|
||
//定性违法(开采和加工)
|
||
var dxwf = casesForCounty.Count(r =>
|
||
(r.hefapanding_fill == 2 || r.hefapanding_jgfill == 2) && r.handle_status_id == 99);
|
||
//定性其他(开采和加工)
|
||
var dxqt = casesForCounty.Count(r =>
|
||
(r.hefapanding_fill == 3 || r.hefapanding_jgfill == 3) && r.handle_status_id == 99);
|
||
//未定性
|
||
var dxwdx = casesForCounty.Count(r => r.handle_status_id != 99);
|
||
//分类 非法开采 定性违法里的非法开采
|
||
var flffkc = casesForCounty.Count(r => r.hefapanding_fill == 2 && r.handle_status_id == 99);
|
||
//分类 非法违法 定性违法里的非法加工
|
||
var flffjg = casesForCounty.Count(r => r.hefapanding_jgfill == 2 && r.handle_status_id == 99);
|
||
//超期未报
|
||
var cqwb = casesForCounty.Count(r =>
|
||
r.handle_status_id != 99 && DateTime.Now.AddDays(-90) > r.xiafatime_base);
|
||
OffenceMineralsNewResp offenceResp = new()
|
||
{
|
||
countyid = item.Id,
|
||
countyname = item.Name,
|
||
xfwtzs = xfwtzs,
|
||
ywc = ywc,
|
||
wwc = wwc,
|
||
wcl = Math.Round(wcl, 2),
|
||
dxhf = dxhf,
|
||
dxwf = dxwf,
|
||
dxqt = dxqt,
|
||
dxwdx = dxwdx,
|
||
flffkc = flffkc,
|
||
flffjg = flffjg,
|
||
cqwb = cqwb
|
||
};
|
||
listResp.Add(offenceResp);
|
||
}
|
||
|
||
listResp = listResp.OrderByDescending(r => r.wcl).ToList();
|
||
|
||
return new Response<List<OffenceMineralsNewResp>>
|
||
{
|
||
Result = listResp,
|
||
Message = "获取数据成功"
|
||
};
|
||
}
|
||
|
||
public Response<MemoryStream> CaseOfMineralsToExcelNew(DateTime startTime, DateTime endTime,string tubanlaiyuan)
|
||
{
|
||
Response<MemoryStream> response = new Response<MemoryStream>();
|
||
try
|
||
{
|
||
var list = CaseMineralsForExcelNew(startTime, endTime,tubanlaiyuan).Result;
|
||
HSSFWorkbook workbook = new HSSFWorkbook();
|
||
|
||
#region 样式设置
|
||
|
||
ICellStyle CreateCellStyle(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign,
|
||
VerticalAlignment vAlign, bool bold = false)
|
||
{
|
||
IFont font = wb.CreateFont();
|
||
font.FontName = fontName;
|
||
font.FontHeightInPoints = fontHeight;
|
||
font.IsBold = bold;
|
||
|
||
ICellStyle style = wb.CreateCellStyle();
|
||
style.BorderBottom = BorderStyle.Thin;
|
||
style.BorderLeft = BorderStyle.Thin;
|
||
style.BorderRight = BorderStyle.Thin;
|
||
style.BorderTop = BorderStyle.Thin;
|
||
style.Alignment = hAlign;
|
||
style.VerticalAlignment = vAlign;
|
||
style.SetFont(font);
|
||
style.WrapText = true;
|
||
|
||
return style;
|
||
}
|
||
|
||
ICellStyle CreateCellStyle2(HSSFWorkbook wb, short fontHeight, string fontName, HorizontalAlignment hAlign,
|
||
VerticalAlignment vAlign, bool bold = false)
|
||
{
|
||
IFont font = wb.CreateFont();
|
||
font.FontName = fontName;
|
||
font.FontHeightInPoints = fontHeight;
|
||
font.IsBold = bold;
|
||
|
||
ICellStyle style = wb.CreateCellStyle();
|
||
style.Alignment = hAlign;
|
||
style.VerticalAlignment = vAlign;
|
||
style.SetFont(font);
|
||
style.WrapText = true;
|
||
|
||
return style;
|
||
}
|
||
|
||
// 创建右对齐样式
|
||
ICellStyle rightAlignStyle = workbook.CreateCellStyle();
|
||
rightAlignStyle.Alignment = HorizontalAlignment.Right; // 设置右对齐
|
||
rightAlignStyle.VerticalAlignment = VerticalAlignment.Center;
|
||
IFont font = workbook.CreateFont();
|
||
font.FontName = "宋体";
|
||
font.FontHeightInPoints = 12;
|
||
rightAlignStyle.SetFont(font);
|
||
rightAlignStyle.WrapText = true;
|
||
//第二个sheet右对齐样式
|
||
ICellStyle rightAlignStyle2 = workbook.CreateCellStyle();
|
||
rightAlignStyle2.Alignment = HorizontalAlignment.Right; // 设置右对齐
|
||
rightAlignStyle2.VerticalAlignment = VerticalAlignment.Center;
|
||
IFont font1 = workbook.CreateFont();
|
||
font1.FontName = "宋体";
|
||
font1.FontHeightInPoints = 9;
|
||
rightAlignStyle2.SetFont(font1);
|
||
rightAlignStyle2.WrapText = true;
|
||
|
||
ICellStyle contentStyle =
|
||
CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
|
||
ICellStyle titleStyle =
|
||
CreateCellStyle2(workbook, 10, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
|
||
ICellStyle headerStyle1 = CreateCellStyle2(workbook, 18, "方正小标宋简体", HorizontalAlignment.Center,
|
||
VerticalAlignment.Center);
|
||
ICellStyle headerStyle2 =
|
||
CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Right, VerticalAlignment.Center);
|
||
ICellStyle headerStyle3 =
|
||
CreateCellStyle(workbook, 16, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
|
||
//第二个sheet
|
||
ICellStyle contentStyle22 =
|
||
CreateCellStyle(workbook, 12, "宋体", HorizontalAlignment.Center, VerticalAlignment.Center);
|
||
ICellStyle titleStyle2 =
|
||
CreateCellStyle2(workbook, 9, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
|
||
ICellStyle headerStyle21 = CreateCellStyle2(workbook, 18, "方正小标宋简体", HorizontalAlignment.Center,
|
||
VerticalAlignment.Center);
|
||
ICellStyle headerStyle23 =
|
||
CreateCellStyle(workbook, 12, "黑体", HorizontalAlignment.Center, VerticalAlignment.Center);
|
||
ICellStyle beizhuStyle21 =
|
||
CreateCellStyle2(workbook, 9, "宋体", HorizontalAlignment.Left, VerticalAlignment.Center);
|
||
|
||
#endregion
|
||
|
||
#region 第一个sheet
|
||
|
||
#region 创建表头
|
||
|
||
IRow CreateRowWithHeight(ISheet sht, int rowIndex, float heightInPoints)
|
||
{
|
||
IRow row = sht.CreateRow(rowIndex);
|
||
row.HeightInPoints = heightInPoints;
|
||
return row;
|
||
}
|
||
|
||
void SetCellStyle(IRow row, ICellStyle style)
|
||
{
|
||
foreach (ICell cell in row.Cells)
|
||
{
|
||
cell.CellStyle = style;
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
|
||
#endregion
|
||
|
||
|
||
#region 第二个sheet
|
||
|
||
ISheet sheet2 = workbook.CreateSheet("Sheet2");
|
||
|
||
#region 创建表头
|
||
|
||
IRow row20 = CreateRowWithHeight(sheet2, 0, 42);
|
||
row20.CreateCell(0).SetCellValue("汇总表");
|
||
|
||
IRow row22 = CreateRowWithHeight(sheet2, 1, 24);
|
||
|
||
row22.CreateCell(0).SetCellValue("县区");
|
||
row22.CreateCell(1).SetCellValue("下发线索总数(个)");
|
||
row22.CreateCell(2).SetCellValue("总数");
|
||
row22.CreateCell(3);
|
||
row22.CreateCell(4);
|
||
row22.CreateCell(5).SetCellValue("定性");
|
||
row22.CreateCell(6);
|
||
row22.CreateCell(7);
|
||
row22.CreateCell(8);
|
||
row22.CreateCell(9).SetCellValue("分类");
|
||
row22.CreateCell(10);
|
||
row22.CreateCell(11).SetCellValue("超期未报(个)");
|
||
|
||
IRow row23 = CreateRowWithHeight(sheet2, 2, 69);
|
||
|
||
row23.CreateCell(0);
|
||
row23.CreateCell(1);
|
||
row23.CreateCell(2).SetCellValue("已完成(个)");
|
||
row23.CreateCell(3).SetCellValue("未完成(个)");
|
||
row23.CreateCell(4).SetCellValue("完成率(%)");
|
||
row23.CreateCell(5).SetCellValue("合法(个)");
|
||
row23.CreateCell(6).SetCellValue("违法(个)");
|
||
row23.CreateCell(7).SetCellValue("其他(个)");
|
||
row23.CreateCell(8).SetCellValue("未定性(个)");
|
||
row23.CreateCell(9).SetCellValue("非法开采(个)");
|
||
row23.CreateCell(10).SetCellValue("非法加工(个)");
|
||
row23.CreateCell(11);
|
||
|
||
// 设置样式
|
||
SetCellStyle(row20, headerStyle21);
|
||
|
||
SetCellStyle(row22, headerStyle23);
|
||
SetCellStyle(row23, headerStyle23);
|
||
|
||
|
||
// 合并单元格
|
||
sheet2.AddMergedRegion(new CellRangeAddress(0, 0, 0, 11)); // 合并标题行
|
||
sheet2.AddMergedRegion(new CellRangeAddress(1, 2, 0, 0));
|
||
sheet2.AddMergedRegion(new CellRangeAddress(1, 2, 1, 1));
|
||
sheet2.AddMergedRegion(new CellRangeAddress(1, 1, 2, 4));
|
||
sheet2.AddMergedRegion(new CellRangeAddress(1, 1, 5, 8));
|
||
sheet2.AddMergedRegion(new CellRangeAddress(1, 1, 9, 10));
|
||
sheet2.AddMergedRegion(new CellRangeAddress(1, 2, 11, 11));
|
||
|
||
|
||
// 设置列宽
|
||
int[] normalColumns2 = { 0, 1, 2, 3, 4, 5, 6, 7, 8 };
|
||
foreach (var index in normalColumns2) sheet2.SetColumnWidth(index, 9 * 256); // 设置列宽
|
||
int[] normalColumns1 = { 9, 10, 11 };
|
||
foreach (var index in normalColumns1) sheet2.SetColumnWidth(index, 12 * 256); // 设置列宽
|
||
|
||
#endregion
|
||
|
||
#region 填充数据
|
||
|
||
for (int i = 0; i < list.Count - 1; i++)
|
||
{
|
||
var rowIndex = i + 3; // 数据从第5行开始
|
||
var row = CreateRowWithHeight(sheet2, rowIndex, 34);
|
||
row.CreateCell(0).SetCellValue(list[i].countyname ?? "");
|
||
row.CreateCell(1).SetCellValue(list[i].xfwtzs);
|
||
row.CreateCell(2).SetCellValue(list[i].ywc);
|
||
row.CreateCell(3).SetCellValue(list[i].wwc);
|
||
row.CreateCell(4).SetCellValue(list[i].wcl);
|
||
row.CreateCell(5).SetCellValue(list[i].dxhf);
|
||
row.CreateCell(6).SetCellValue(list[i].dxwf);
|
||
row.CreateCell(7).SetCellValue(list[i].dxqt);
|
||
row.CreateCell(8).SetCellValue(list[i].dxwdx);
|
||
row.CreateCell(9).SetCellValue(list[i].flffkc);
|
||
row.CreateCell(10).SetCellValue(list[i].flffjg);
|
||
row.CreateCell(11).SetCellValue(list[i].cqwb);
|
||
SetCellStyle(row, contentStyle22);
|
||
}
|
||
|
||
#endregion
|
||
|
||
#endregion
|
||
|
||
response.Result = new MemoryStream();
|
||
workbook.Write(response.Result);
|
||
response.Result.Position = 0;
|
||
workbook.Close();
|
||
|
||
response.Code = 200;
|
||
response.Message = "获取成功";
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
response.Code = 500;
|
||
response.Message = ex.Message;
|
||
}
|
||
|
||
return response;
|
||
}
|
||
|
||
#endregion
|
||
|
||
public void ExportToShapefileFour(string shpPath, List<IFeature> features)
|
||
{
|
||
//var geometryFactory = new GeometryFactory();
|
||
|
||
//// 写入 CPG 文件(定义字符编码)
|
||
//var cpgPath = System.IO.Path.ChangeExtension(shpPath, "cpg");
|
||
//File.WriteAllText(cpgPath, "UTF-8", Encoding.UTF8);
|
||
//// 获取 SHP 文件头
|
||
//var header = ShapefileDataWriter.GetHeader(features[0], features.Count);
|
||
|
||
//// 创建 ShapefileDataWriter
|
||
//var shapeFileWriter = new ShapefileDataWriter(shpPath, geometryFactory)
|
||
//{
|
||
// Header = header
|
||
//};
|
||
|
||
//// 写入 SHP 文件
|
||
//shapeFileWriter.Write(features);
|
||
|
||
// 写入 CPG 文件(定义字符编码)
|
||
string prjStr =
|
||
@"GEOGCS[""GCS_China_Geodetic_Coordinate_System_2000"",DATUM[""D_China_2000"",SPHEROID[""CGCS2000"",6378137.0,298.257222101]],PRIMEM[""Greenwich"",0.0],UNIT[""Degree"",0.0174532925199433]]";
|
||
var cpgPath = Path.ChangeExtension(shpPath, "prj");
|
||
File.WriteAllText(cpgPath, prjStr, Encoding.UTF8);
|
||
|
||
Shapefile.WriteAllFeatures(features, shpPath, encoding: Encoding.UTF8);
|
||
}
|
||
|
||
public void CreateZipFromShapefiles(string shpPath, string zipPath)
|
||
{
|
||
var files = new List<string>
|
||
{
|
||
Path.ChangeExtension(shpPath, "cpg"),
|
||
shpPath,
|
||
Path.ChangeExtension(shpPath, "shx"),
|
||
Path.ChangeExtension(shpPath, "dbf"),
|
||
Path.ChangeExtension(shpPath, "prj")
|
||
};
|
||
|
||
using (var zipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Create))
|
||
{
|
||
foreach (var file in files)
|
||
{
|
||
if (File.Exists(file))
|
||
{
|
||
zipArchive.CreateEntryFromFile(file, Path.GetFileName(file));
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
public Geometry ParseGeometry(string wkt)
|
||
{
|
||
if (string.IsNullOrEmpty(wkt))
|
||
{
|
||
return null;
|
||
}
|
||
|
||
var reader = new WKTReader();
|
||
return reader.Read(wkt);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取待审核图斑--矿产
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <returns></returns>
|
||
public async Task<Response<List<CaseInfoMineralTubanExport>>> 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<string> deplist = new List<string>();
|
||
string sqlpart = " ";
|
||
if (user != null && user.Id != -1 && level != 0)
|
||
{
|
||
var departs = client.Queryable<SysUserOrg>().Where(r => r.UserId == user.Id).ToList();
|
||
foreach (var item in departs)
|
||
{
|
||
var list = client.Queryable<SysOrg>().ToChildList(it => it.ParentId, item.OrgId)
|
||
?.Select(it => it.Id.ToString()).ToList();
|
||
deplist = deplist.Union(list).ToList();
|
||
}
|
||
|
||
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.tubannum_base as case_no,miaoshu_base as case_description,type_base as typename,weizhixianname_base as countyname,weizhizhenname_base as streetname,weizhicunname_base as communityname,panduren_base as identification_user,createdtime_base as createtime,c.original_case_no,is_closed," +
|
||
$"b.\"Id\" as processid,c.gid as geomid from drone_caseinfo_minerals 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.feifacaikuang + "' where 1=1 ";
|
||
|
||
|
||
if (!string.IsNullOrEmpty(req.typename))
|
||
{
|
||
sqlpart = sqlpart + $" and type_base='" + req.typename + "'";
|
||
}
|
||
|
||
|
||
if (!string.IsNullOrEmpty(req.countyid))
|
||
{
|
||
sqlpart = sqlpart + $" and weizhixiannum_base='" + req.countyid + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.streetid))
|
||
{
|
||
sqlpart = sqlpart + $" and weizhizhennum_base='" + req.streetid + "'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.communityid))
|
||
{
|
||
sqlpart = sqlpart + $" and weizhicunnum_base='" + 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";
|
||
}
|
||
else if ("复提待审核".Equal(req.nowStatus))
|
||
{
|
||
sqlpart = sqlpart + $" and ( b.\"Id\" is null and is_closed=0 or a.\"Id\" is not null) ";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
// 待审核接口
|
||
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.caseNo))
|
||
{
|
||
sqlpart = sqlpart + $" and c.tubannum_base like '%" + req.caseNo + "%'";
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(req.originalCaseNo))
|
||
{
|
||
sqlpart = sqlpart + $" and c.original_case_no like '%" + req.originalCaseNo + "%'";
|
||
}
|
||
|
||
sqlpart += $" ORDER BY createdtime_base desc";
|
||
Console.WriteLine(sql + sqlpart);
|
||
var info = await client.SqlQueryable<CaseInfoMineralTubanExport>(sql + sqlpart).ToListAsync();
|
||
return new Response<List<CaseInfoMineralTubanExport>>
|
||
{
|
||
Result = info
|
||
};
|
||
}
|
||
|
||
/// <summary>
|
||
/// </summary>
|
||
/// <param name="req"></param>
|
||
/// <param name="shpFilePath"></param>
|
||
/// <param name="shpFilePathzip"></param>
|
||
/// <exception cref="Exception"></exception>
|
||
public void ExportApprovalCaseInfoShapefile(CaseInfoTypeName req, string shpFilePath, string shpFilePathzip)
|
||
{
|
||
var response = LoadCaseInfoCheckList(req).Result.Result;
|
||
List<CaseInfoMineralTubanExport> list = new List<CaseInfoMineralTubanExport>();
|
||
for (int i = 0; i < response.Count; i++)
|
||
{
|
||
var caseinfo = response[i];
|
||
if (!string.IsNullOrEmpty(caseinfo.geomid))
|
||
{
|
||
list.Add(caseinfo);
|
||
}
|
||
}
|
||
|
||
List<int> 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 gid,case_no,typename,is_illegal_name,ST_AsText(geom) AS geom FROM view_drone_caseinfo_minerals WHERE gid IN ({gidsString})";
|
||
|
||
// 执行查询
|
||
var data = client.Ado.SqlQuery<dynamic>(query);
|
||
if (data == null || data.Count == 0)
|
||
{
|
||
throw new Exception("暂无数据");
|
||
}
|
||
|
||
List<IFeature> features = new List<IFeature>();
|
||
|
||
foreach (var row in data)
|
||
{
|
||
var geometry = ParseGeometry(row.geom);
|
||
if (geometry == null)
|
||
{
|
||
throw new Exception("数据不可用");
|
||
}
|
||
|
||
var attributes = new AttributesTable
|
||
{
|
||
{ "gid", row.gid },
|
||
{ "图斑编号", row.case_no == null ? "" : row.case_no },
|
||
{ "图斑类型", row.typename == null ? "" : row.typename },
|
||
{ "判定结果", row.is_illegal_name == null ? "" : row.is_illegal_name },
|
||
};
|
||
|
||
IFeature feature = new Feature(geometry, attributes);
|
||
features.Add(feature);
|
||
}
|
||
|
||
if (features.Count == 0)
|
||
{
|
||
throw new Exception("数据不可用");
|
||
}
|
||
|
||
// 导出 SHP 文件及其关联文件
|
||
//ExportToShapefileFour(shpFilePath, features);
|
||
ExportToShapefileFour(shpFilePath, features);
|
||
// 将文件打包成 ZIP
|
||
CreateZipFromShapefiles(shpFilePath, shpFilePathzip);
|
||
}
|
||
} |