using System.Data; 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 Newtonsoft.Json.Linq; using NPOI.SS.Formula.Functions; using SqlSugar; namespace Gs.Warehouse.Services; [ApiGroup(ApiGroupNames.PerMission)] public class MesDepotsManager : Repository, IRomteService { private readonly IHttpContextAccessor _http; private readonly string _userCode, _userGuid, _orgFids; public MesDepotsManager(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, f, g) => new object[] { JoinType.Left, a.FSubsidiary == Org.Fid, JoinType.Left, a.CreateBy == c.Id.ToString(), JoinType.Left,d.Id.ToString()==a.ClientId.ToString(), JoinType.Left,f.Id.ToString()==a.SuppLierId.ToString(), JoinType.Left,g.Id.ToString()==a.department.ToString(), }).Select((a, Org, c, d, f, g) => new MesDepots { FSubsidiary = "(" + Org.FNumber + ")" + Org.Name, OrgName = Org.Name, OrgId = Org.FNumber, CreateBy = c.StaffName.ToString(), ClientId = d.CustName, SuppLierId = f.SuppName, department = g.Departmentname, IsNg = a.IsNg + ":" + (a.IsNg == "A" ? "正常" : "禁用"), DocumentStatus = a.DocumentStatus + ":" + SqlFunc.IF(a.DocumentStatus == "Z").Return("暂存") .ElseIF(a.DocumentStatus == "A").Return("创建") .ElseIF(a.DocumentStatus == "B").Return("审核中") .ElseIF(a.DocumentStatus == "C").Return("已审核") .ElseIF(a.DocumentStatus == "D").Return("重新审核") .End(a.DocumentStatus) }, 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> GetListPage2(PageQuery model) { var currentPage = model.currentPage; var everyPageSize = model.everyPageSize; var sortName = string.IsNullOrEmpty(model.sortName) ? "a.PAGE_GROUP" : model.sortName; var keyWhere = model.keyWhere; string keyType = model.keyType; var sbSql = new StringBuilder(); sbSql.Append(" SELECT * FROM "); sbSql.Append(" (SELECT N'(' +[Org].[FNumber] + N')' +[Org].[NAME] AS [FSubsidiary2] ,"); sbSql.Append(" [Org].[NAME] AS [OrgName] , [Org].[FNumber] AS [OrgId] , CAST([c].[staff_name]"); sbSql.Append(" AS NVARCHAR(MAX)) AS [CreateBy] , [d].[cust_name] AS [ClientId] ,"); sbSql.Append(" [f].[supp_name] AS [SuppLierId] , [g].[departmentname] AS [department2] ,"); sbSql.Append(" ( CASE WHEN ( [a].[is_ng] = N'A' ) THEN N'正常' ELSE N'禁用' END ) AS [IsNg] "); sbSql.Append(", [a].*,ROW_NUMBER() OVER(ORDER BY org.FNumber asc ,a.depot_code asc) AS RowIndex "); 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=a.guid) as bit) as chkInt "); sbSql.Append(" FROM [MES_DEPOTS] [a] Left JOIN [SYS_ORGANIZATION] [Org] ON ( [a].[FSubsidiary] = [Org].[FID] )"); sbSql.Append(" Left JOIN [MES_STAFF] [c] ON ( [a].[create_by] = CAST([c].[id] AS NVARCHAR(50))) "); sbSql.Append(" Left JOIN [MES_CUSTOMER] [d] ON (CAST([d].[id] AS NVARCHAR(50)) = CAST([a].[Client_Id] AS NVARCHAR(50))) "); sbSql.Append(" Left JOIN [MES_SUPPLIER] [f] ON (CAST([f].[id] AS NVARCHAR(50)) = CAST([a].[SUPPLIER_ID] AS NVARCHAR(50))) "); sbSql.Append(" Left JOIN [SYS_DEPARTMENT] [g] ON (CAST([g].[id] AS NVARCHAR(50)) = CAST([a].[department] AS NVARCHAR(50))) "); sbSql.Append(" WHERE 1=1"); sbSql.Append(keyWhere); sbSql.Append(") T"); sbSql.Append(" where T.rowindex>(" + currentPage + "-1)*" + everyPageSize + " and T.rowindex<=" + currentPage + "*" + everyPageSize); sbSql.Append(" select count(1) as intTotal FROM [MES_DEPOTS] [a] Left JOIN [SYS_ORGANIZATION] [Org] ON ( [a].[FSubsidiary] = [Org].[FID] )"); sbSql.Append(" Left JOIN [MES_STAFF] [c] ON ( [a].[create_by] = CAST([c].[id] AS NVARCHAR(50))) "); sbSql.Append(" Left JOIN [MES_CUSTOMER] [d] ON (CAST([d].[id] AS NVARCHAR(50)) = CAST([a].[Client_Id] AS NVARCHAR(50))) "); sbSql.Append(" Left JOIN [MES_SUPPLIER] [f] ON (CAST([f].[id] AS NVARCHAR(50)) = CAST([a].[SUPPLIER_ID] AS NVARCHAR(50))) "); sbSql.Append(" Left JOIN [SYS_DEPARTMENT] [g] ON (CAST([g].[id] AS NVARCHAR(50)) = CAST([a].[department] AS NVARCHAR(50))) "); sbSql.Append(" WHERE 1=1"); sbSql.Append(keyWhere); var dset = new DataSet(); try { dset = DbHelperSQL.Query(sbSql.ToString()); } 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 GetModel([FromBody] MesDepots model) { var m = base.GetById(model.Guid); string _CreateBy = m.CreateBy; try { m.CreateBy = Gs.Toolbox.DbHelperSQL.GetSingle("select top 1 staff_name from [dbo].[MES_STAFF] where id='" + _CreateBy + "'").ToString(); } catch (Exception ex) { Gs.Toolbox.LogHelper.Debug(this.ToString(), "读取负责人error," + ex.Message); } m.IsNg = m.IsNg + ":" + (m.IsNg == "A" ? "正常" : "禁用"); var lst = new MesDepotSectionsManager(); m.list = lst.GetList(it => it.DepotGuid == m.Guid).OrderBy(it => it.DepotSectionCode).ToList(); if (m != null) return ReturnDto.QuickReturn(m, ReturnCode.Success, "读取成功!"); return ReturnDto.QuickReturn(m, ReturnCode.Default, "读取失败!"); } /// /// 增加或编辑实体 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto EditModel([FromBody] MesDepots model) { System.Text.StringBuilder sbMsg = new System.Text.StringBuilder(); try { Db.Ado.BeginTran(); var _manager = new MesDepotSectionsManager(); var _upLst = new List(); var _addLst = new List(); foreach (var m in model.list) { if (UtilityHelper.CheckGuid(m.Guid)) { m.LastupdateBy = _userCode; m.LastupdateDate = DateTime.Now; int iCount = checkIsExist(m.Guid.ToString()); if (iCount <= 0) { _upLst.Add(m); } else { if (sbMsg.Length > 0) sbMsg.Append(", "); sbMsg.Append("【" + m.DepotSectionName.ToString() + "】"); } } else { m.Guid = Guid.NewGuid(); m.DepotGuid = model.Guid; m.CreateDate = DateTime.Now; m.CreateBy = _userCode; m.LastupdateBy = _userCode; m.LastupdateDate = DateTime.Now; _addLst.Add(m); } } Db.Updateable(_upLst).IgnoreColumns(true).ExecuteCommand(); _manager.InsertRange(_addLst); Db.Ado.CommitTran(); } catch (Exception ex) { LogHelper.Debug(ToString(), "EditModel error:" + ex.Message); Db.Ado.RollbackTran(); return ReturnDto.QuickReturn("", ReturnCode.Exception, ex.Message); } string strmsg = "操作成功!"; if (sbMsg.Length > 0) strmsg = "操作成功,其中" + sbMsg.ToString() + "已产生交易信息,没有被编辑!"; return ReturnDto.QuickReturn(model.Guid.ToString(), ReturnCode.Success, strmsg); } /// /// 删除明细实体,支持批量删除 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto DeleteModelMx([FromBody] JArray guidList) { var intArray = guidList.ToObject(); var cont = 0; // cont = IsChkOrUnChkByMx(intArray[0], true); if (cont > 0) return ReturnDto.QuickReturn(default(int?), ReturnCode.Exception, "删除失败,该信息已被审核!"); cont = checkIsExist(intArray[0]); if (cont > 0) return ReturnDto.QuickReturn(default(int?), ReturnCode.Exception, "删除失败,该库位已产生交易信息!"); int? rtnInt = (int)ReturnCode.Default; var _manager = new MesDepotSectionsManager(); rtnInt = _manager.DeleteById(intArray) ? intArray.Length : 0; if (rtnInt > 0) return ReturnDto.QuickReturn(rtnInt, ReturnCode.Success, "操作成功,共删除" + rtnInt + "条数据!"); return ReturnDto.QuickReturn(rtnInt, ReturnCode.Exception, "删除失败,请重试!"); } /// /// 判断是否被用过 /// /// /// private int checkIsExist(string strGuid) { int j = 0; System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("select count(1) from [dbo].MES_INV_ITEM_IN_C_DETAILS c left join [dbo].[MES_DEPOT_SECTIONS] t on c.DEPOT_SECTION_CODE=t.depot_section_code where t.guid ='" + strGuid + "'"); try { j = int.Parse(Gs.Toolbox.DbHelperSQL.GetSingle(sb.ToString()).ToString()); } catch (Exception ex) { LogHelper.Debug(ToString(), "checkIsExist error:" + ex.Message); } return j; } }