啊鑫
2025-09-13 aedc81d40157133df8b5c44d3fbabc803a0e6e75
WebApi/Gs.Warehouse/Services/MesDepotsManager.cs
@@ -9,6 +9,7 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
using NPOI.SS.Formula.Functions;
using SqlSugar;
namespace Gs.Warehouse.Services;
@@ -42,36 +43,32 @@
            var _sbBy =
                new StringBuilder(query.sortName + " " + query.sortOrder);
            var totalCount = 0;
            var itemsList = Db
                .Queryable<MesDepots, SysOrganization, MesStaff, MesCustomer,
                    MesSupplier, SysDepartment>((a, Org, c, d, f, g) =>
                    new object[]
            var itemsList = Db.Queryable<MesDepots, SysOrganization, MesStaff, MesCustomer, MesSupplier, SysDepartment>(
                    (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()
                        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 + ":"
                    {
                        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)
                        .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,
@@ -99,58 +96,46 @@
    {
        var currentPage = model.currentPage;
        var everyPageSize = model.everyPageSize;
        var sortName = string.IsNullOrEmpty(model.sortName)
            ? "a.PAGE_GROUP"
            : model.sortName;
        var sortName = string.IsNullOrEmpty(model.sortName) ? "a.PAGE_GROUP" : model.sortName;
        var keyWhere = model.keyWhere;
        var keyType = model.keyType;
        string keyType = model.keyType;
        string keyWord = model.keyWord;
        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");
        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(keyWord))
        {
            sbSql.Append(",'' as kcQty");
        }
        else
            sbSql.Append(
                ",cast( (select count(1)  from SYS_USER_BIND b where b.userGuid='" +
                keyType +
                "' and b.aboutGuid=a.guid  and b.fType='仓库')  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(", isnull((select top 1 库存对比 from [dbo].[即时库存差异表] where 物料ID=" + keyWord + " and 仓库ID=[a].[depot_id]),'('+a.depot_name+')0/0') AS [kcQty]  ");
        }
        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  and b.fType='仓库')  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 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();
@@ -161,10 +146,8 @@
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), "GetListPage error:" + ex.Message);
            return ReturnDto<PageList<dynamic>>.QuickReturn(
                default(PageList<dynamic>), ReturnCode.Exception, "读取失败");
            return ReturnDto<PageList<dynamic>>.QuickReturn(default(PageList<dynamic>), ReturnCode.Exception, "读取失败");
        }
        var _pglist = new PageList<dynamic>
        {
            total = 0,
@@ -175,8 +158,7 @@
        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 intTotal = int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
            var pages = intTotal % everyPageSize != 0
                ? intTotal / everyPageSize + 1
                : intTotal / everyPageSize;
@@ -186,10 +168,10 @@
            var _dy = dset.Tables[0].TableToDynamicList();
            _pglist.list = _dy;
        }
        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
            ReturnCode.Success, "读取成功");
    }
    /// <summary>
@@ -212,11 +194,9 @@
        //}
        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();
        m.list = lst.GetList(it => it.DepotGuid == m.Guid).OrderBy(it => it.DepotSectionCode).ToList();
        if (m != null)
            return ReturnDto<MesDepots>.QuickReturn(m, ReturnCode.Success,
                "读取成功!");
            return ReturnDto<MesDepots>.QuickReturn(m, ReturnCode.Success, "读取成功!");
        return ReturnDto<MesDepots>.QuickReturn(m, ReturnCode.Default, "读取失败!");
    }
@@ -228,26 +208,26 @@
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<string?> EditModel([FromBody] MesDepots model)
    {
        var sbMsg = new StringBuilder();
        System.Text.StringBuilder sbMsg = new System.Text.StringBuilder();
        try
        {
            var Remark55 = model.Remark5;
            var Guid55 = model.Guid;
            string Remark55 = model.Remark5;
            string Guid55 = model.Guid;
            //if (!string.IsNullOrEmpty(Remark55))
            //{
            DbHelperSQL.ExecuteSql(" update MES_DEPOTS set Remark5='" +
                                   Remark55 + "' where guid='" + Guid55 + "'");
            Gs.Toolbox.DbHelperSQL.ExecuteSql(" update MES_DEPOTS set Remark5='" + Remark55 + "' where guid='" + Guid55 + "'");
            //}
            Db.Ado.BeginTran();
            var _manager = new MesDepotSectionsManager();
            var _upLst = new List<MesDepotSections>();
            var _addLst = new List<MesDepotSections>();
            foreach (var m in model.list)
            {
                if (UtilityHelper.CheckGuid(m.Guid))
                {
                    m.LastupdateBy = _userCode;
                    m.LastupdateDate = DateTime.Now;
                    var iCount = checkIsExist(m.Guid.ToString());
                    int iCount = checkIsExist(m.Guid.ToString());
                    if (iCount <= 0)
                    {
                        _upLst.Add(m);
@@ -256,7 +236,7 @@
                    {
                        if (sbMsg.Length > 0)
                            sbMsg.Append(", ");
                        sbMsg.Append("【" + m.DepotSectionName + "】");
                        sbMsg.Append("【" + m.DepotSectionName.ToString() + "】");
                    }
                }
                else
@@ -269,7 +249,7 @@
                    m.LastupdateDate = DateTime.Now;
                    _addLst.Add(m);
                }
            }
            Db.Updateable(_upLst).IgnoreColumns(true).ExecuteCommand();
            _manager.InsertRange(_addLst);
            Db.Ado.CommitTran();
@@ -278,14 +258,12 @@
        {
            LogHelper.Debug(ToString(), "EditModel error:" + ex.Message);
            Db.Ado.RollbackTran();
            return ReturnDto<string>.QuickReturn("", ReturnCode.Exception,
                ex.Message);
            return ReturnDto<string>.QuickReturn("", ReturnCode.Exception, ex.Message);
        }
        var strmsg = "操作成功!";
        string strmsg = "操作成功!";
        if (sbMsg.Length > 0)
            strmsg = "操作成功,其中" + sbMsg + "已产生交易信息,没有被编辑!";
        return ReturnDto<string>.QuickReturn(model.Guid,
            strmsg = "操作成功,其中" + sbMsg.ToString() + "已产生交易信息,没有被编辑!";
        return ReturnDto<string>.QuickReturn(model.Guid.ToString(),
            ReturnCode.Success, strmsg);
    }
@@ -302,43 +280,36 @@
        var cont = 0;
        // cont = IsChkOrUnChkByMx(intArray[0], true);
        if (cont > 0)
            return ReturnDto<int>.QuickReturn(default(int?),
                ReturnCode.Exception, "删除失败,该信息已被审核!");
            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "删除失败,该信息已被审核!");
        cont = checkIsExist(intArray[0]);
        if (cont > 0)
            return ReturnDto<int>.QuickReturn(default(int?),
                ReturnCode.Exception, "删除失败,该库位已产生交易信息!");
            return ReturnDto<int>.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<int>.QuickReturn(rtnInt, ReturnCode.Success,
                "操作成功,共删除" + rtnInt + "条数据!");
        return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception,
            "删除失败,请重试!");
            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, "操作成功,共删除" + rtnInt + "条数据!");
        return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, "删除失败,请重试!");
    }
    /// <summary>
    ///     判断是否被用过
    /// 判断是否被用过
    /// </summary>
    /// <param name="strGuid"></param>
    /// <returns></returns>
    private int checkIsExist(string strGuid)
    {
        var j = 0;
        var sb = new 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 + "'");
        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(DbHelperSQL.GetSingle(sb.ToString()).ToString());
            j = int.Parse(Gs.Toolbox.DbHelperSQL.GetSingle(sb.ToString()).ToString());
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), "checkIsExist error:" + ex.Message);
        }
        return j;
    }
}