using System.Data;
using System.Text;
using Gs.Entity.Sys;
using Gs.Sys.Models;
using Gs.Toolbox;
using Gs.Toolbox.ApiCore.Abstract.Mvc;
using Gs.Toolbox.ApiCore.Common.Mvc;
using Gs.Toolbox.ApiCore.Group;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using static Gs.Toolbox.UtilityHelper;
namespace Gs.Sys.Services;
///
///
[ApiGroup(ApiGroupNames.Sys)]
public class OrganizationController : Repository, IRomteService
{
private readonly IHttpContextAccessor _http;
private readonly string _userCode, _userGuid, _orgFids;
public OrganizationController(IHttpContextAccessor httpContextAccessor)
{
_http = httpContextAccessor;
(_userCode, _userGuid, _orgFids) =
GetUserGuidAndOrgGuid(_http);
}
///
/// 查询列表,支持分页
///
///
///
[RequestMethod(RequestMethods.POST)]
public ReturnDto> GetListPage(PageQuery query)
{
string keyWord = query.keyWord;
var pageList = new PageList();
try
{
var _sbWhere = new StringBuilder(" 1=1" + query.keyWhere);
var _sbBy =
new StringBuilder(query.sortName + " " + query.sortOrder);
var totalCount = 0;
var itemsList = Db.Queryable()
.Where(_sbWhere.ToString())
.OrderBy(_sbBy.ToString())
.ToPageList(query.currentPage, query.everyPageSize,
ref totalCount);
pageList = new PageList(itemsList, totalCount,
query.everyPageSize);
if (!string.IsNullOrEmpty(keyWord))
{
System.Text.StringBuilder sbOrg = new StringBuilder();
System.Data.DataSet dataSet = new System.Data.DataSet();
dataSet = Gs.Toolbox.DbHelperSQL.Query(" select org_fid from [dbo].[SYS_USER_ORG] where user_guid='" + keyWord + "' order by org_fid asc");
if (dataSet != null && dataSet.Tables.Count > 0)
{
foreach (DataRow _row in dataSet.Tables[0].Rows)
{
if (sbOrg.Length > 0)
sbOrg.Append(", ");
sbOrg.Append(_row["org_fid"].ToString());
}
}
pageList.extendText = sbOrg.ToString();
}
return ReturnDto>.QuickReturn(pageList,
ReturnCode.Success, "读取成功");
}
catch (Exception ex)
{
return ReturnDto>.QuickReturn(pageList,
ReturnCode.Default, ex.Message);
}
}
///
/// 查询列表,支持分页,用于各种绑定
///
///
///
[RequestMethod(RequestMethods.POST)]
public ReturnDto> GetListPage2(PageQuery model)
{
var currentPage = model.currentPage;
var everyPageSize = model.everyPageSize;
var sortName = string.IsNullOrEmpty(model.sortName) ? "a.FNumber" : model.sortName;
var keyWhere = model.keyWhere;
string keyType = model.keyType;
var sbSql = new StringBuilder();
sbSql.Append("select * from ");
sbSql.Append("( ");
sbSql.Append("select top 100000 ROW_NUMBER() over(order by " + sortName + " " + model.sortOrder + ") as rowIndex,a.* ");
if (string.IsNullOrEmpty(keyType))
{
sbSql.Append(",cast(0 as bit) as chkInt");
}
else
sbSql.Append(",cast( (select count(1) from SYS_USER_BIND b where b.userGuid='" + keyType + "' and b.aboutGuid=cast( a.FID as nvarchar(50)) and b.fType='组织') as bit) as chkInt ");
sbSql.Append(" from SYS_ORGANIZATION a ");
sbSql.Append(keyWhere);
sbSql.Append(") as T ");
sbSql.Append(" where T.rowindex>(" + currentPage + "-1)*" + everyPageSize + " and T.rowindex<=" + currentPage + "*" + everyPageSize);
sbSql.Append(" order by rowindex asc ");
sbSql.Append(" select count(1) as intTotal from SYS_ORGANIZATION a where 1=1 ");
sbSql.Append(keyWhere);
var dset = new DataSet();
try
{
dset = DbHelperSQL.Query(sbSql.ToString());
}
catch (Exception ex)
{
LogHelper.Debug(ToString(), "GetListPage2 error:" + ex.Message);
return ReturnDto>.QuickReturn(default(PageList), ReturnCode.Exception, "读取失败");
}
var _pglist = new PageList
{
total = 0,
everyPageSize = 0,
pages = 0,
list = new List()
};
if (dset != null && dset.Tables.Count > 0 &&
dset.Tables[0].Rows.Count > 0) //有数据
{
var intTotal = int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
var pages = intTotal % everyPageSize != 0
? intTotal / everyPageSize + 1
: intTotal / everyPageSize;
_pglist.total = intTotal;
_pglist.everyPageSize = everyPageSize;
_pglist.pages = pages;
var _dy = dset.Tables[0].TableToDynamicList();
_pglist.list = _dy;
}
return ReturnDto>.QuickReturn(_pglist,
ReturnCode.Success, "读取成功");
}
///
/// 读取机构
///
///
///
[RequestMethod(RequestMethods.POST)]
[AllowAnonymous]
public ReturnDto GetModel([FromBody] SysOrganization model)
{
var m = base.GetById(model.Guid);
if (m != null)
return ReturnDto.QuickReturn(m, ReturnCode.Success,
"读取成功!");
return ReturnDto.QuickReturn(m, ReturnCode.Default,
"读取失败!");
}
private int IsChkOrUnChk(string guidList, bool status)
{
var cont = 0;
cont = base.GetList(it =>
it.Guid == Guid.Parse(guidList) && it.CheckStatus == status).Count;
return cont;
}
}