huawei
昨天 64e45c6c5817e3d9d823180946f3b4aa78fe6b6d
看板维护
已修改1个文件
已添加2个文件
436 ■■■■■ 文件已修改
WebApi/Gs.HostIIS/appsettings.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/Gs.Sys/Models/MesSimple.cs 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/Gs.Sys/Services/MesSimpleManager.cs 316 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/Gs.HostIIS/appsettings.json
@@ -6,7 +6,7 @@
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": "Data Source=192.168.8.8;Initial Catalog=YS_MES;User ID=sa;Password =JianHui@2025",
  "ConnectionStrings": "Data Source=192.168.8.8;Initial Catalog=GS_MES;User ID=sa;Password =JianHui@2025",
  "TestErpUrl": "http://60.204.140.168:8080//kingdee/billWriteIn",
  "TestErpUrl2": "http://60.204.140.168:8080//kingdee/transferDirect",
  "TestErpUrl3": "http://60.204.140.168:8080//kingdee/updateShdStatus",
WebApi/Gs.Sys/Models/MesSimple.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,118 @@
using SqlSugar;
namespace GS.Sys.Models;
/// <summary>
///     çœ‹æ¿ç›®å½•表(优化后)
/// </summary>
[SugarTable("MES_SIMPLE")]
public class MesSimple
{
    /// <summary>
    ///     ä¸»é”®ID (自增)
    /// </summary>
    [SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsIdentity = true)]
    public long Id { get; set; }
    /// <summary>
    ///     çˆ¶èŠ‚ç‚¹ID
    /// </summary>
    [SugarColumn(ColumnName = "parent_id")]
    public long? ParentId { get; set; }
    /// <summary>
    ///     èŠ‚ç‚¹å±‚çº§ (0=根节点, 1=一级子节点...)
    /// </summary>
    [SugarColumn(ColumnName = "node_level")]
    public int NodeLevel { get; set; }
    /// <summary>
    ///     èŠ‚ç‚¹ç±»åž‹ (0=目录, 1=轮播目录,2=轮播内容...)
    /// </summary>
    [SugarColumn(ColumnName = "node_type")]
    public byte NodeType { get; set; }
    /// <summary>
    ///     å”¯ä¸€ç¼–码
    /// </summary>
    [SugarColumn(ColumnName = "code")]
    public string? Code { get; set; }
    /// <summary>
    ///     åç§°
    /// </summary>
    [SugarColumn(ColumnName = "title")]
    public string Title { get; set; }
    /// <summary>
    ///     é“¾æŽ¥åœ°å€
    /// </summary>
    [SugarColumn(ColumnName = "url")]
    public string? Url { get; set; }
    /// <summary>
    ///     è½®æ’­æ—¶é•¿ï¼ˆç§’)
    /// </summary>
    [SugarColumn(ColumnName = "carousel_duration")]
    public int? CarouselDuration { get; set; }
    /// <summary>
    ///     æ˜¯å¦é»˜è®¤å±•å¼€
    /// </summary>
    [SugarColumn(ColumnName = "is_expanded")]
    public bool IsExpanded { get; set; }
    /// <summary>
    ///     æ˜¯å¦å¯ç”¨
    /// </summary>
    [SugarColumn(ColumnName = "is_enabled")]
    public bool IsEnabled { get; set; }
    /// <summary>
    ///     æŽ’序序号
    /// </summary>
    [SugarColumn(ColumnName = "sort_order")]
    public int SortOrder { get; set; }
    /// <summary>
    ///     åˆ›å»ºäºº
    /// </summary>
    [SugarColumn(ColumnName = "created_by")]
    public string CreatedBy { get; set; }
    /// <summary>
    ///     åˆ›å»ºæ—¶é—´
    /// </summary>
    [SugarColumn(ColumnName = "created_at")]
    public DateTime CreatedAt { get; set; }
    /// <summary>
    ///     æ›´æ–°äºº
    /// </summary>
    [SugarColumn(ColumnName = "updated_by")]
    public string? UpdatedBy { get; set; }
    /// <summary>
    ///     æ›´æ–°æ—¶é—´
    /// </summary>
    [SugarColumn(ColumnName = "updated_at")]
    public DateTime? UpdatedAt { get; set; }
    /// <summary>
    ///     æ˜¯å¦å·²åˆ é™¤ï¼ˆè½¯åˆ é™¤ï¼‰
    /// </summary>
    [SugarColumn(ColumnName = "is_deleted")]
    public bool IsDeleted { get; set; }
    /// <summary>
    ///     åˆ é™¤äºº
    /// </summary>
    [SugarColumn(ColumnName = "deleted_by")]
    public string? DeletedBy { get; set; }
    /// <summary>
    ///     åˆ é™¤æ—¶é—´
    /// </summary>
    [SugarColumn(ColumnName = "deleted_at")]
    public DateTime? DeletedAt { get; set; }
}
WebApi/Gs.Sys/Services/MesSimpleManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,316 @@
using Gs.Toolbox;
using Gs.Toolbox.ApiCore.Abstract.Mvc;
using Gs.Toolbox.ApiCore.Common.Mvc;
using Gs.Toolbox.ApiCore.Group;
using GS.Sys.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
using System.Data;
using System.Data.SqlClient;
namespace GS.Sys.Service;
/// <summary>
///     çœ‹æ¿ç›®å½•管理(存储过程版本)
/// </summary>
[ApiGroup(ApiGroupNames.Sys)]
public class MesSimpleManager : Repository<MesSimple>, IRomteService
{
    private readonly IHttpContextAccessor _http;
    private readonly string _userCode, _userGuid, _orgFids;
    public MesSimpleManager(IHttpContextAccessor httpContextAccessor)
    {
        _http = httpContextAccessor;
        (_userCode, _userGuid, _orgFids) = UtilityHelper.GetUserGuidAndOrgGuid(_http);
    }
    /// <summary>
    ///     æŸ¥è¯¢åˆ—表,支持分页
    /// </summary>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<PageList<dynamic>> GetListPage(PageQuery query)
    {
        try
        {
            // æ·»åŠ  'a.' å‰ç¼€ä»¥åŒ¹é…å­˜å‚¨è¿‡ç¨‹
            var sortField = "a." + (query.sortName?.Replace("a.", "") ?? "sort_order");
            var sortOrder = query.sortOrder?.ToUpper() ?? "ASC";
            // æž„建存储过程参数
            var parameters = new SqlParameter[]
            {
                new SqlParameter("@pageIndex", SqlDbType.Int) { Value = query.currentPage },
                new SqlParameter("@pageSize", SqlDbType.Int) { Value = query.everyPageSize },
                new SqlParameter("@sortField", SqlDbType.NVarChar, 50) { Value = sortField },
                new SqlParameter("@sortOrder", SqlDbType.NVarChar, 10) { Value = sortOrder },
                new SqlParameter("@keyWord", SqlDbType.NVarChar, 100) { Value = query.keyWord ?? "" },
                new SqlParameter("@keyWhere", SqlDbType.NVarChar, -1) { Value = "" }
            };
            // è°ƒç”¨å­˜å‚¨è¿‡ç¨‹ï¼ˆæ³¨æ„åç§°ï¼‰
            var dset = DbHelperSQL.RunProcedure("proc_MesSimple_GetListPage", parameters, "ResultSet");
            if (dset == null || dset.Tables.Count == 0 || dset.Tables[0].Rows.Count == 0)
            {
                var emptyList = new PageList<dynamic>(new List<dynamic>(), 0, query.everyPageSize);
                return ReturnDto<PageList<dynamic>>.QuickReturn<PageList<dynamic>>(emptyList, ReturnCode.Success, "暂无数据");
            }
            // èŽ·å–æ€»è®°å½•æ•°
            var totalCount = 0;
            if (dset.Tables[0].Rows.Count > 0)
            {
                var firstRow = dset.Tables[0].Rows[0];
                if (firstRow.Table.Columns.Contains("totalCount"))
                {
                    totalCount = Convert.ToInt32(firstRow["totalCount"]);
                }
            }
            // è½¬æ¢ä¸ºåŠ¨æ€å¯¹è±¡åˆ—è¡¨
            var itemsList = dset.Tables[0].TableToDynamicList();
            var pageList = new PageList<dynamic>(itemsList, totalCount, query.everyPageSize);
            return ReturnDto<PageList<dynamic>>.QuickReturn<PageList<dynamic>>(pageList, ReturnCode.Success, "读取成功");
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), $"GetListPage error: {ex.Message}\nStackTrace: {ex.StackTrace}");
            var emptyList = new PageList<dynamic>(new List<dynamic>(), 0, query.everyPageSize);
            return ReturnDto<PageList<dynamic>>.QuickReturn<PageList<dynamic>>(emptyList, ReturnCode.Exception, "查询失败:" + ex.Message);
        }
    }
    /// <summary>
    ///     è¯»å–单条记录
    /// </summary>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<dynamic> GetModel([FromBody] MesSimple model)
    {
        try
        {
            var parameters = new SqlParameter[]
            {
                new SqlParameter("@id", SqlDbType.BigInt) { Value = model.Id }
            };
            var dset = DbHelperSQL.RunProcedure("proc_MesSimple_GetModel", parameters, "ResultSet");
            if (dset == null || dset.Tables.Count == 0 || dset.Tables[0].Rows.Count == 0)
            {
                return ReturnDto<dynamic>.QuickReturn<dynamic>(null, ReturnCode.Default, "数据不存在!");
            }
            var m = dset.Tables[0].Rows[0].RowToDynamic();
            return ReturnDto<dynamic>.QuickReturn<dynamic>(m, ReturnCode.Success, "读取成功!");
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), $"GetModel error: {ex.Message}");
            return ReturnDto<dynamic>.QuickReturn<dynamic>(null, ReturnCode.Exception, "读取失败:" + ex.Message);
        }
    }
    /// <summary>
    ///     ä¿å­˜æ•°æ® (新增/修改)
    /// </summary>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<string> SaveModel([FromBody] MesSimple model)
    {
        try
        {
            if (string.IsNullOrWhiteSpace(model.Title))
            {
                return ReturnDto<string>.QuickReturn("", ReturnCode.Default, "名称不能为空!");
            }
            var parameters = new SqlParameter[]
            {
                new SqlParameter("@id", SqlDbType.BigInt) { Value = model.Id },
                new SqlParameter("@parentId", SqlDbType.BigInt) { Value = model.ParentId.HasValue ? (object)model.ParentId.Value : DBNull.Value },
                new SqlParameter("@nodeType", SqlDbType.TinyInt) { Value = model.NodeType },
                new SqlParameter("@code", SqlDbType.NVarChar, 50) { Value = string.IsNullOrEmpty(model.Code) ? DBNull.Value : model.Code },
                new SqlParameter("@title", SqlDbType.NVarChar, 255) { Value = model.Title },
                new SqlParameter("@url", SqlDbType.NVarChar, 500) { Value = string.IsNullOrEmpty(model.Url) ? DBNull.Value : model.Url },
                new SqlParameter("@carouselDuration", SqlDbType.Int) { Value = model.CarouselDuration.HasValue ? (object)model.CarouselDuration.Value : DBNull.Value },
                new SqlParameter("@isExpanded", SqlDbType.Bit) { Value = model.IsExpanded },
                new SqlParameter("@isEnabled", SqlDbType.Bit) { Value = model.IsEnabled },
                new SqlParameter("@sortOrder", SqlDbType.Int) { Value = model.SortOrder },
                new SqlParameter("@userCode", SqlDbType.NVarChar, 50) { Value = _userCode ?? "SYSTEM" },
                new SqlParameter("@outId", SqlDbType.BigInt) { Direction = ParameterDirection.Output },
                new SqlParameter("@outMsg", SqlDbType.NVarChar, 500) { Direction = ParameterDirection.Output }
            };
            // æ·»åŠ è°ƒè¯•æ—¥å¿—
            LogHelper.Debug(ToString(), $"SaveModel - å‚数数量: {parameters.Length}");
            DbHelperSQL.RunProcedure("proc_MesSimple_Save", parameters, "0");//ResultSet
            var outId = parameters[11].Value != DBNull.Value ? Convert.ToInt64(parameters[11].Value) : 0;
            var outMsg = parameters[12].Value != DBNull.Value ? parameters[12].Value.ToString() : "操作成功";
            if (outId > 0)
            {
                return ReturnDto<string>.QuickReturn(outId.ToString(), ReturnCode.Success, outMsg);
            }
            else
            {
                return ReturnDto<string>.QuickReturn("", ReturnCode.Default, outMsg);
            }
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), $"SaveModel error: {ex.Message}");
            return ReturnDto<string>.QuickReturn("", ReturnCode.Exception, "保存失败:" + ex.Message);
        }
    }
    /// <summary>
    ///     åˆ é™¤æ•°æ® (软删除) - ä¿®å¤ç‰ˆ
    /// </summary>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<int> DeleteModel([FromBody] JToken data)
    {
        try
        {
            string idStr = null;
            LogHelper.Debug(ToString(), $"DeleteModel received: {data?.ToString()}, Type: {data?.Type}");
            if (data == null)
            {
                return ReturnDto<int>.QuickReturn(0, ReturnCode.Default, "请选择要删除的数据!");
            }
            // æ™ºèƒ½è§£æžå„种数据格式
            if (data is JArray jArray)
            {
                if (jArray.Count == 0)
                {
                    return ReturnDto<int>.QuickReturn(0, ReturnCode.Default, "请选择要删除的数据!");
                }
                idStr = jArray[0].ToString();
            }
            else if (data is JValue jValue)
            {
                idStr = jValue.ToString();
            }
            else if (data is JObject jObject)
            {
                idStr = jObject["id"]?.ToString() ?? jObject["Id"]?.ToString();
            }
            else
            {
                idStr = data.ToString();
            }
            if (string.IsNullOrEmpty(idStr) || !long.TryParse(idStr, out long id))
            {
                return ReturnDto<int>.QuickReturn(0, ReturnCode.Default, $"无效的ID:{idStr}");
            }
            LogHelper.Debug(ToString(), $"DeleteModel parsed ID: {id}");
            // è°ƒç”¨å­˜å‚¨è¿‡ç¨‹ï¼ˆæ³¨æ„å‚数名是 @ids)
            var parameters = new SqlParameter[]
            {
                new SqlParameter("@ids", SqlDbType.NVarChar, -1) { Value = id.ToString() },
                new SqlParameter("@userCode", SqlDbType.NVarChar, 50) { Value = _userCode ?? "SYSTEM" },
                new SqlParameter("@outCode", SqlDbType.Int) { Direction = ParameterDirection.Output },
                new SqlParameter("@outMsg", SqlDbType.NVarChar, 500) { Direction = ParameterDirection.Output }
            };
            DbHelperSQL.RunProcedure("proc_MesSimple_Delete", parameters, "0");
            var outCode = parameters[2].Value != DBNull.Value ? Convert.ToInt32(parameters[2].Value) : 0;
            var outMsg = parameters[3].Value != DBNull.Value ? parameters[3].Value.ToString() : "未知错误";
            LogHelper.Debug(ToString(), $"DeleteModel result: code={outCode}, msg={outMsg}");
            if (outCode > 0)
            {
                return ReturnDto<int>.QuickReturn(outCode, ReturnCode.Success, outMsg);
            }
            else
            {
                return ReturnDto<int>.QuickReturn(0, ReturnCode.Default, outMsg);
            }
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), $"DeleteModel error: {ex.Message}\n{ex.StackTrace}");
            return ReturnDto<int>.QuickReturn(0, ReturnCode.Exception, "删除失败:" + ex.Message);
        }
    }
    /// <summary>
    ///     èŽ·å–æ ‘å½¢ç»“æž„
    /// </summary>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<List<dynamic>> GetTree(long? rootId = null)
    {
        try
        {
            var parameters = new SqlParameter[]
            {
                new SqlParameter("@RootId", SqlDbType.BigInt) { Value = rootId.HasValue ? (object)rootId.Value : DBNull.Value }
            };
            var dset = DbHelperSQL.RunProcedure("usp_MesSimple_GetTree", parameters, "ResultSet");
            if (dset == null || dset.Tables.Count == 0)
            {
                return ReturnDto<List<dynamic>>.QuickReturn<List<dynamic>>(new List<dynamic>(), ReturnCode.Success, "暂无数据");
            }
            var treeList = dset.Tables[0].TableToDynamicList();
            return ReturnDto<List<dynamic>>.QuickReturn<List<dynamic>>(treeList, ReturnCode.Success, "读取成功");
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), $"GetTree error: {ex.Message}");
            return ReturnDto<List<dynamic>>.QuickReturn<List<dynamic>>(new List<dynamic>(), ReturnCode.Exception, "查询失败:" + ex.Message);
        }
    }
    /// <summary>
    ///     æ›´æ–°æŽ’序序号
    /// </summary>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<bool> UpdateSortOrder(long id, int sortOrder)
    {
        try
        {
            var parameters = new SqlParameter[]
            {
                new SqlParameter("@Id", SqlDbType.BigInt) { Value = id },
                new SqlParameter("@NewSortOrder", SqlDbType.Int) { Value = sortOrder }
            };
            var dset = DbHelperSQL.RunProcedure("usp_MesSimple_UpdateSortOrder", parameters, "ResultSet");
            if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)
            {
                var row = dset.Tables[0].Rows[0];
                var rtnCode = Convert.ToInt32(row["rtnCode"]);
                var rtnMsg = row["rtnMsg"].ToString();
                if (rtnCode > 0)
                {
                    return ReturnDto<bool>.QuickReturn(true, ReturnCode.Success, rtnMsg);
                }
                else
                {
                    return ReturnDto<bool>.QuickReturn(false, ReturnCode.Default, rtnMsg);
                }
            }
            return ReturnDto<bool>.QuickReturn(false, ReturnCode.Default, "更新失败!");
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), $"UpdateSortOrder error: {ex.Message}");
            return ReturnDto<bool>.QuickReturn(false, ReturnCode.Exception, "更新失败:" + ex.Message);
        }
    }
}