cnf
2025-08-23 f6a81c5426bfa0000113729bff128abb87576623
1增加了通用控件选择库位 2增加撤回报工,自动入库维护功能
已修改3个文件
已添加1个文件
424 ■■■■■ 文件已修改
.gitignore 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/Gs.Warehouse/Services/MesAutoRkController.cs 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/Gs.Warehouse/Services/MesDepotSectionsManager.cs 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/Gs.Wom/Service/MesScrksqDjManager.cs 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -187,3 +187,4 @@
/WebApi/.vs/GsMesSolution/FileContentIndex
/WebApi/.idea/.idea.GsMesSolution/.idea
/WebApi/.vs/GsMesSolution/v17
/.vs
WebApi/Gs.Warehouse/Services/MesAutoRkController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,214 @@
using System.Data;
using System.Dynamic;
using System.Text;
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 Newtonsoft.Json.Linq;
using static Gs.Toolbox.UtilityHelper;
namespace Gs.Wom.WorkService
{
    [ApiGroup(ApiGroupNames.WOM)]
    public class MesAutoRkController : IRomteService
    {
        private readonly IHttpContextAccessor _http;
        private readonly string _userCode, _userGuid, _orgFids;
        public MesAutoRkController(IHttpContextAccessor httpContextAccessor)
        {
            _http = httpContextAccessor;
            (_userCode, _userGuid, _orgFids) = GetUserGuidAndOrgGuid(_http);
        }
        #region
        /// <summary>
        /// è¯»å–列表,支持分页
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [RequestMethod(RequestMethods.POST)]
        public ReturnDto<PageList<dynamic>> GetListPage([FromBody] PageQuery model)
        {
            int currentPage = model.currentPage;
            int everyPageSize = model.everyPageSize;
            string sortName = string.IsNullOrEmpty(model.sortName) ? "org.FNumber" : model.sortName;
            string keyWhere = model.keyWhere;
            System.Text.StringBuilder _w = new StringBuilder();
            _w.Append(" from [dbo].[MES_BACK_FLASH] a");
            _w.Append(" left join MES_ITEMS i on a.ItemID=i.item_id  ");
            _w.Append(" left join MES_DEPOTS d on a.depotId=d.depot_id ");
            _w.Append(" left join SYS_DEPARTMENT m on a.departmentId=m.departmentid ");
            _w.Append(" left join SYS_ORGANIZATION org on i.FSubsidiary=org.FID");
            _w.Append(" where 1=1 " + keyWhere);
            System.Text.StringBuilder 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.*,'('+org.FNumber+')'+org.NAME as orgName  ");
            sbSql.Append(",i.item_no as itemNo,i.item_name as itemName,i.item_model as itemModel,d.depot_name as depotName,m.departmentname as bmName");
            sbSql.Append(_w);
            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 ");
            sbSql.Append(_w);
            DataSet dset = new DataSet();
            try
            {
                dset = Gs.Toolbox.DbHelperSQL.Query(sbSql.ToString());
            }
            catch (Exception ex)
            {
                Gs.Toolbox.LogHelper.Debug(this.ToString(), "GetListPage error:" + ex.Message);
                return ReturnDto<PageList<dynamic>>.QuickReturn(default(PageList<dynamic>), ReturnCode.Exception, "读取失败");
            }
            PageList<dynamic> _pglist = new PageList<dynamic>
            {
                total = 0,
                everyPageSize = 0,
                pages = 0,
                list = new List<dynamic>()
            };
            if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)//有数据
            {
                int intTotal = int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
                int pages = (intTotal % everyPageSize != 0) ? (intTotal / everyPageSize + 1) : (intTotal / everyPageSize);
                _pglist.total = intTotal;
                _pglist.everyPageSize = everyPageSize;
                _pglist.pages = pages;
                List<dynamic> _dy = dset.Tables[0].TableToDynamicList();
                _pglist.list = _dy;
            }
            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist, ReturnCode.Success, "读取成功");
        }
        /// <summary>
        /// åˆ é™¤å®žä½“
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [RequestMethod(RequestMethods.POST)]
        public ReturnDto<int?> DeleteModel([FromBody] JArray guidList)
        {
            var intArray = guidList.ToObject<string[]>();
            string guid = intArray[0];
            int rtnInt = (int)ReturnCode.Default;
            int cont = 0;
            try
            {
                cont = isChkOrUnChk(guid, 1);
                if (cont > 0)
                    return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "删除失败,该信息已被审核!");
                StringBuilder strSql = new StringBuilder();
                strSql.Append(" delete from MES_BACK_FLASH ");
                strSql.Append(" where guid='" + guid + "'");
                int rows = DbHelperSQL.ExecuteSql(strSql.ToString());
                rtnInt = rows;
            }
            catch (Exception ex)
            {
                LogHelper.Debug(this.ToString(), "DeleteModel error:" + ex.Message);
                rtnInt = (int)ReturnCode.Exception;
                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "删除失败," + ex.Message);
            }
            if (rtnInt > 0)
                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Success, "操作成功,共删除" + rtnInt.ToString() + "条数据!");
            else
                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "删除失败,请重试!");
        }
        /// <summary>
        /// å¢žåŠ å®žä½“
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [RequestMethod(RequestMethods.POST)]
        public ReturnDto<ExpandoObject> EditModel([FromBody] dynamic model)
        {
            string itemId = model.itemId;
            string departmentId = model.departmentId;
            string depotId = model.depotId;
            int? rtnInt = (int)ReturnCode.Default;
            dynamic mObj = new ExpandoObject();
            mObj.outMsg = "";
            mObj.outSum = -1;
            mObj.outGuid = "";
            mObj.outNo = "";
            StringBuilder strSql = new StringBuilder();
            string guid = Guid.NewGuid().ToString();
            strSql.Append(" insert into MES_BACK_FLASH");
            strSql.Append(" ([guid] ,[ItemId] ,[departmentId] ,[depotId],createBy,createDate,checkStatus)");
            strSql.Append(" values(");
            strSql.Append(" '" + guid + "','" + itemId + "','" + departmentId + "'," + depotId + ",'" + _userCode + "',getdate(),0)");
            try
            {
                rtnInt = DbHelperSQL.ExecuteSql(strSql.ToString());
                mObj.outMsg = "操作成功!";
                mObj.outSum = rtnInt;
                mObj.outGuid = guid;
                mObj.outNo = itemId;
            }
            catch (Exception ex)
            {
                LogHelper.Debug(this.ToString(), "EditModel error:" + ex.Message);
                rtnInt = (int)ReturnCode.Exception;
                mObj.outMsg = ex.Message;
                mObj.outSum = -1;
            }
            if (mObj.outSum <= 0)
                return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg);
            return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg);
        }
        /// <summary>
        /// è¯»å–实体
        /// </summary>
        /// <param name="guid"></param>
        /// <returns></returns>
        [RequestMethod(RequestMethods.POST)]
        [AllowAnonymous]
        public ReturnDto<System.Dynamic.ExpandoObject> GetModel([FromBody] dynamic model)
        {
            dynamic m = new System.Dynamic.ExpandoObject();
            System.Text.StringBuilder sbSql = new StringBuilder();
            sbSql.Append("select top 1 a.*,org.FID as orgId ,i.item_no as itemNo,i.item_name as itemName,i.item_model as itemModel from MES_BACK_FLASH a left join MES_ITEMS i on a.ItemID=i.item_id left join SYS_ORGANIZATION org on i.FSubsidiary=org.FID where 1=1 and a.guid='" + model.guid.ToString() + "' ");
            try
            {
                DataSet dset = new DataSet();
                dset = DbHelperSQL.Query(sbSql.ToString());
                if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)
                {
                    System.Data.DataRow dr = dset.Tables[0].Rows[0];
                    m = dr.RowToDynamic();
                    return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "读取成功!");
                }
                else
                    return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "读取失败!");
            }
            catch (Exception ex)
            {
                LogHelper.Debug(this.ToString(), "GetModel error:" + ex.Message);
                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "读取失败!");
            }
        }
        /// <summary>
        /// åˆ¤æ–­æ˜¯å¦å®¡æ ¸
        /// </summary>
        /// <param name="guidList"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        private int isChkOrUnChk(string guidList, int status)
        {
            int cont = 0;
            cont = int.Parse(DbHelperSQL.GetSingle("select count(1) from MES_BACK_FLASH where guid='" + guidList + "' and isnull(checkstatus,0)=" + status + "").ToString());
            return cont;
        }
        #endregion
    }
}
WebApi/Gs.Warehouse/Services/MesDepotSectionsManager.cs
@@ -1,7 +1,12 @@
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 SqlSugar;
using System.Data;
using System.Text;
namespace Gs.Warehouse.Services;
@@ -9,4 +14,143 @@
public class MesDepotSectionsManager : Repository<MesDepotSections>,
    IRomteService
{
    /// <summary>
    ///     æŸ¥è¯¢åˆ—表,支持分页
    /// </summary>
    /// <param name="query"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<PageList<MesDepotSections>> GetListPage(PageQuery query)
    {
        var pageList = new PageList<MesDepotSections>();
        try
        {
            var _sbWhere = new StringBuilder(" 1=1" + query.keyWhere);
            var _sbBy = new StringBuilder(query.sortName + " " + query.sortOrder);
            var totalCount = 0;
            var itemsList = Db.Queryable<MesDepots,MesDepotSections, SysOrganization, MesStaff, MesCustomer, MesSupplier, SysDepartment>(
                    (a, b,Org, c, d, f, g) => new object[]
                    {
                        JoinType.Left, a.Guid == b.DepotGuid,
                        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, b, Org, c, d, f, g) => new MesDepotSections
                    {
                        Guid=b.Guid,
                        DepotSectionCode=b.DepotSectionCode.ToString(),
                        DepotSectionName=b.DepotSectionName.ToString(),
                        CreateBy = c.StaffName.ToString()
                    }, true)
                .Where(_sbWhere.ToString())
                .OrderBy(_sbBy.ToString())
                .ToPageList(query.currentPage, query.everyPageSize,
                    ref totalCount);
            pageList = new PageList<MesDepotSections>(itemsList, totalCount,
                query.everyPageSize);
            return ReturnDto<PageList<MesDepotSections>>.QuickReturn(pageList,
                ReturnCode.Success, "读取成功");
        }
        catch (Exception ex)
        {
            return ReturnDto<PageList<MesDepotSections>>.QuickReturn(pageList,
                ReturnCode.Default, ex.Message);
        }
    }
    /// <summary>
    ///     æŸ¥è¯¢åˆ—表,支持分页,用于各种绑定
    /// </summary>
    /// <param name="query"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<PageList<dynamic>> 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] ");
        // æ·»åŠ MesDepotSections表的字段
        sbSql.Append(" , [b].[DepotSectionCode] AS [DepotSectionCode] ");
        sbSql.Append(" , [b].[DepotSectionName] AS [DepotSectionName] ");
        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 ");
        }
        // æ·»åŠ LEFT JOIN MesDepotSections表
        sbSql.Append(" FROM [MES_DEPOTS] [a] ");
        sbSql.Append(" Left JOIN [MES_DEPOT_SECTIONS] [b] ON [a].[Guid] = [b].[DepotGuid] "); // æ–°å¢žçš„JOIN
        sbSql.Append(" 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);
        // åŒæ—¶éœ€è¦ä¿®æ”¹è®¡æ•°æŸ¥è¯¢ï¼Œæ·»åŠ ç›¸åŒçš„JOIN条件
        sbSql.Append(" select count(1) as intTotal  FROM [MES_DEPOTS] [a] ");
        sbSql.Append(" Left JOIN [MES_DEPOT_SECTIONS] [b] ON [a].[Guid] = [b].[DepotGuid] "); // æ–°å¢žçš„JOIN
        sbSql.Append(" 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<PageList<dynamic>>.QuickReturn(default(PageList<dynamic>), ReturnCode.Exception, "读取失败");
        }
        var _pglist = new PageList<dynamic>
        {
            total = 0,
            everyPageSize = 0,
            pages = 0,
            list = new List<dynamic>()
        };
        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<PageList<dynamic>>.QuickReturn(_pglist,
            ReturnCode.Success, "读取成功");
    }
}
WebApi/Gs.Wom/Service/MesScrksqDjManager.cs
@@ -198,4 +198,69 @@
        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "操作成功!");
    }
    /// <summary>
    ///     æ’¤å›žæŠ¥å·¥
    /// </summary>
    /// <param name="mode"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<ExpandoObject> EditModelChbg([FromBody] dynamic mode)
    {
        string _guid = mode.guid;
        string _billNo = mode.billNo;
        string _inFieldValue = mode.inFieldValue;
        string _proName = "prc_pda_scbg_withdraw";
        dynamic m = new ExpandoObject();
        m.outSum = -1;
        m.outMsg = "";
        if (!Guid.TryParse(_userGuid, out Guid userGuid))
            throw new ArgumentException("无效的 UserGuid");
        if (!Guid.TryParse(_guid, out Guid orderGuid))
            throw new ArgumentException("无效的 OrderGuid");
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        {
            using (var cmd = new SqlCommand(_proName, conn))
            {
                try
                {
                    conn.Open();
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlParameter[] parameters =
                    {
                        new("@outMsg", SqlDbType.NVarChar, 2500),
                        new("@outSum", SqlDbType.Int),
                        new("@inEdtUserGuid", userGuid),
                        new("@inOrderGuid", orderGuid),
                        new("@pi_inventoryAppBillNo",_billNo),
                        new("@in1", ""),
                        new("@in2", ""),
                        new("@in3", "")
                    };
                    parameters[0].Direction = ParameterDirection.Output;
                    parameters[1].Direction = ParameterDirection.Output;
                    foreach (var parameter in parameters)
                        cmd.Parameters.Add(parameter);
                    cmd.ExecuteNonQuery();
                    m.outMsg = parameters[0].Value.ToString();
                    m.outSum = int.Parse(parameters[1].Value.ToString());
                }
                catch (Exception ex)
                {
                    LogHelper.Debug(ToString(),
                        "prc_pda_scbg_withdraw error:" + ex.Message);
                    m.outMsg = ex.Message;
                    return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
                        ex.Message);
                }
                finally
                {
                    conn.Close();
                }
            }
        }
        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "操作成功!");
    }
}