cnf
2025-08-23 f6a81c5426bfa0000113729bff128abb87576623
WebApi/Gs.Warehouse/Services/MesDepotsManager.cs
@@ -8,6 +8,7 @@
using Gs.Toolbox.ApiCore.Group;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
using NPOI.SS.Formula.Functions;
using SqlSugar;
@@ -86,6 +87,96 @@
    }
    /// <summary>
    ///     查询列表,支持分页
    /// </summary>
    /// <param name="query"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<PageList<MesDepots>> GetListPage3(PageQuery query)
    {
        var pageList = new PageList<MesDepots>();
        try
        {
            // 构建查询条件
            var whereClause = "1=1" + (string.IsNullOrEmpty(query.keyWhere) ? "" : query.keyWhere);
            var orderBy = $"{query.sortName ?? "DepotCode"} {query.sortOrder ?? "ASC"}";
            var totalCount = 0;
            // 使用更清晰的查询语法
            var queryable = Db.Queryable<MesDepots>()
                .LeftJoin<SysOrganization>((a, Org) => a.FSubsidiary == Org.Fid)
                .LeftJoin<MesStaff>((a, c) => a.CreateBy == c.Id.ToString())
                .LeftJoin<MesCustomer>((a, d) => d.Id.ToString() == a.ClientId.ToString())
                .LeftJoin<MesSupplier>((a, f) => f.Id.ToString() == a.SuppLierId.ToString())
                .LeftJoin<SysDepartment>((a, g) => g.Id.ToString() == a.department.ToString())
                .LeftJoin<MesItems>((a, h) => h.DepotCode.ToString() == a.DepotId.ToString())
                .Where(whereClause)
                .GroupBy(a => new {
                    a.Guid,
                    a.DepotCode,
                    a.DepotName,
                    a.DepotId,
                    a.FSubsidiary,
                    a.CreateBy,
                    a.ClientId,
                    a.SuppLierId,
                    a.department,
                    a.IsNg,
                    a.DocumentStatus
                })
                .OrderBy(orderBy);
            // 使用更安全的映射方式
            var itemsList = queryable.Select<MesDepots>(a => new MesDepots
            {
                Guid = a.Guid,
                DepotCode = a.DepotCode,
                DepotName = a.DepotName,
                DepotId = a.DepotId,
                FSubsidiary = SqlFunc.Subqueryable<SysOrganization>()
                    .Where(org => org.Fid == a.FSubsidiary)
                    .Select(org => "(" + org.FNumber + ")" + org.Name),
                OrgName = SqlFunc.Subqueryable<SysOrganization>()
                    .Where(org => org.Fid == a.FSubsidiary)
                    .Select(org => org.Name),
                OrgId = SqlFunc.Subqueryable<SysOrganization>()
                    .Where(org => org.Fid == a.FSubsidiary)
                    .Select(org => org.FNumber),
                CreateBy = SqlFunc.Subqueryable<MesStaff>()
                    .Where(staff => staff.Id.ToString() == a.CreateBy)
                    .Select(staff => staff.StaffName),
                ClientId = SqlFunc.Subqueryable<MesCustomer>()
                    .Where(cust => cust.Id.ToString() == a.ClientId)
                    .Select(cust => cust.CustName),
                SuppLierId = SqlFunc.Subqueryable<MesSupplier>()
                    .Where(supp => supp.Id.ToString() == a.SuppLierId)
                    .Select(supp => supp.SuppName),
                department = SqlFunc.Subqueryable<SysDepartment>()
                    .Where(dept => dept.Id.ToString() == a.department)
                    .Select(dept => dept.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)
            })
            .ToPageList(query.currentPage, query.everyPageSize, ref totalCount);
            pageList = new PageList<MesDepots>(itemsList, totalCount, query.everyPageSize);
            return ReturnDto<PageList<MesDepots>>.QuickReturn(pageList, ReturnCode.Success, "读取成功");
        }
        catch (Exception ex)
        {
            return ReturnDto<PageList<MesDepots>>.QuickReturn(pageList,
                ReturnCode.Default, $"系统错误: {ex.Message}");
        }
    }
    /// <summary>
    ///     查询列表,支持分页,用于各种绑定
    /// </summary>
    /// <param name="query"></param>