using System.Data; using System.Data.SqlClient; using System.Dynamic; using System.Text; using Gs.Entity.BaseInfo; using Gs.Entity.Sys; using Gs.Toolbox; using Gs.Toolbox.ApiCore.Abstract.Mvc; using Gs.Toolbox.ApiCore.Common.Mvc; using Gs.Toolbox.ApiCore.Group; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using SqlSugar; using SqlDataAdapter = System.Data.SqlClient.SqlDataAdapter; namespace Gs.BaseInfo.Services; [ApiGroup(ApiGroupNames.BaseInfo)] public class MesItemsManager : Repository, IRomteService { private readonly IHttpContextAccessor _http; private readonly string _userCode, _userGuid, _orgFids; public MesItemsManager(IHttpContextAccessor httpContextAccessor) { _http = httpContextAccessor; (_userCode, _userGuid, _orgFids) = UtilityHelper.GetUserGuidAndOrgGuid(_http); } /// /// 查询列表,支持分页 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto> GetListPage(PageQuery query) { 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( (a, org, c, d, e, f, g, h, m) => new object[] { JoinType.Left, a.FSubsidiary == org.Fid, JoinType.Left, a.ItemUnit == c.Id.ToString(), JoinType.Left, a.Fpurchaseunitid == d.Id.ToString(), JoinType.Left, a.Saleunit == e.Id.ToString(), JoinType.Left, a.Storeunit == f.Id.ToString(), JoinType.Left, a.SubconUnit == g.Id.ToString(), JoinType.Left, a.ProduceUnit == h.Id.ToString(), JoinType.Left, a.DepotCode == m.DepotId.ToString() }) .Select((a, org, c, d, e, f, g, h, m) => new MesItems { FSubsidiary = "(" + org.FNumber + ")" + org.Name, ItemUnit = c.Fname, Fpurchaseunitid = d.Fname, Saleunit = e.Fname, Storeunit = f.Fname, SubconUnit = g.Fname, ProduceUnit = h.Fname, DepotCode = m.DepotName, Fforbidstatus = a.Fforbidstatus + ":" + (a.Fforbidstatus == "A" ? "正常" : "禁用"), DataType = a.DataType + ":" + SqlFunc.IF(a.DataType == "Z").Return("暂存") .ElseIF(a.DataType == "A").Return("创建") .ElseIF(a.DataType == "B").Return("审核中") .ElseIF(a.DataType == "C").Return("已审核") .ElseIF(a.DataType == "D").Return("重新审核") .End(a.DataType) }, true) .Where(_sbWhere.ToString()) .OrderBy(_sbBy.ToString()) .ToPageList(query.currentPage, query.everyPageSize, ref totalCount); pageList = new PageList(itemsList, totalCount, query.everyPageSize); return ReturnDto>.QuickReturn(pageList, ReturnCode.Success, "读取成功"); } catch (Exception ex) { return ReturnDto>.QuickReturn(pageList, ReturnCode.Default, ex.Message); } } /// /// 读取 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto GetModel([FromBody] dynamic model) { string guid = model.guid.ToString(); dynamic m = new ExpandoObject(); SqlParameter[] parameters = { new("@inMainGuid", guid), }; var dset = new DataSet(); try { dset = DbHelperSQL.RunProcedure("[prc_item_detail]", parameters, "0"); if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0) { var dr = dset.Tables[0].Rows[0]; m = dr.RowToDynamic(); } } catch (Exception ex) { LogHelper.Debug(ToString(), ex.Message); } if (m != null) return ReturnDto.QuickReturn(m, ReturnCode.Success, "读取成功!"); return ReturnDto.QuickReturn(m, ReturnCode.Default, "读取失败!"); } /// /// 读取列表,支持分页 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto> GetListSelect([FromBody] dynamic model) { int currentPage = model.currentPage; int everyPageSize = model.everyPageSize; string sortName = model.sortName; string keyWhere = model.keyWhere; string keyType = model.keyType; var dset = new DataSet(); try { using (var conn = new SqlConnection(DbHelperSQL.strConn)) { using (var cmd = new SqlCommand("[select_item]", conn)) { conn.Open(); cmd.CommandType = CommandType.StoredProcedure; SqlParameter[] parameters = { new("@inCurrentPage", currentPage), new("@inEveryPageSize", everyPageSize), new("@inSortName", sortName), new("@inSortOrder", ""), new("@inQueryWhere", keyWhere), new("@inP1",keyType),//当为:检验项目,iqc,ipqc,fqc时,免检时 特别加上过滤条件 new("@inP2", "") }; foreach (var parameter in parameters) cmd.Parameters.Add(parameter); using (var dt = new SqlDataAdapter(cmd)) { dt.Fill(dset, "0"); } } conn.Close(); } } catch (Exception ex) { LogHelper.Debug(ToString(), "GetListPage 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)] public ReturnDto> GetListPage2(PageQuery model) { var currentPage = model.currentPage; var everyPageSize = model.everyPageSize; var sortName = string.IsNullOrEmpty(model.sortName) ? "a.staff_no" : model.sortName; var keyWhere = model.keyWhere; string keyType = model.keyType; System.Text.StringBuilder sbJoin = new StringBuilder(); sbJoin.Append(" FROM MES_ITEMS [a]"); sbJoin.Append(" Left JOIN [SYS_ORGANIZATION] [Org] ON ( [a].[FSubsidiary] = [Org].[FID] )"); sbJoin.Append(" left join SYS_USER_BIND b on (b.userGuid='"+ keyType + "' and b.aboutGuid=a.guid)"); sbJoin.Append(" where 1=1 "); sbJoin.Append(keyWhere); var sbSql = new StringBuilder(); sbSql.Append(" SELECT * FROM "); sbSql.Append(" (SELECT N'(' +[Org].[FNumber] + N')' +[Org].[NAME] AS [FSubsidiary2]"); sbSql.Append(" ,a.item_id,a.item_no,a.item_name,a.item_model,a.guid,ROW_NUMBER() OVER(ORDER BY org.FNumber asc ,a.item_no asc) AS RowIndex "); //如果无关键字,无需找查绑定 if (string.IsNullOrEmpty(keyType)) { sbSql.Append(",cast(0 as bit) as chkInt"); } else sbSql.Append(",cast( (case when b.guid is null then 0 else 1 end) as bit) as chkInt "); sbSql.Append(sbJoin); sbSql.Append(") T"); sbSql.Append(" where T.rowindex>(" + currentPage + "-1)*" + everyPageSize + " and T.rowindex<=" + currentPage + "*" + everyPageSize); sbSql.Append(" select count(1) as intTotal "); sbSql.Append(sbJoin); 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, "读取成功"); } }