3311f02194604247c1fb0384ecc43cc3ef3f04be..cc1a70b8af38690e0ab72228e996a8859565cd89
2025-06-09 dengjunjie
1
cc1a70 对比 | 目录
2025-06-09 dengjunjie
添加数据库接口日志记录
217a65 对比 | 目录
已删除4个文件
已修改17个文件
已添加13个文件
10893 ■■■■■ 文件已修改
代码管理/WMS/WIDESEA_WMSClient/src/views/basic/cachePoint.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/views/basic/roadwayInfo.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/views/system/Sys_Log.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/15173735-4d40-4303-9957-72c73104d72f.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/39801809-a703-4c28-96d8-7a0a847ba0ee.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/42a9ad71-6cad-4c27-8852-8b0836dcc4ff.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/a15af72d-cadb-4f43-be5a-3770c0ed83df.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b87d687f-d7bb-4da2-b1ce-f7dcf001b90e.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/c7430a94-d316-4296-bb96-0039e2a686ff.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d456fc8b-b3fc-438a-9e3d-b9e6b49026cc.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d48a3c6c-f39c-42e9-bd7e-a9ecb962fc09.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/LocationInfoService.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/App.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/LogEnum.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AutofacModuleRegister.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpHelper.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger.cs 378 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger1.cs 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/RequestLogModel.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs 97 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ISystemRepository/ISys_LogRepository.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_LogService.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Log.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task_Hty.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_SystemRepository/Sys_LogRepository.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_LogController.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/System/API请求/2025-06-09/叫料任务下发250609.txt 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/项目文件/WMS.sql 9964 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/views/basic/cachePoint.vue
@@ -135,13 +135,13 @@
        width: 90,
        align: "left",
      },
      {
        field: "pointType",
        title: "缓存点类型",
        type: "string",
        width: 90,
        align: "left",
      },
      // {
      //   field: "pointType",
      //   title: "缓存点类型",
      //   type: "string",
      //   width: 90,
      //   align: "left",
      // },
      {
        field: "creater",
        title: "创建人",
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/views/basic/roadwayInfo.vue
@@ -62,22 +62,22 @@
      ],
      [
        {
          title: "入库站台编号1",
          title: "入库站台编号",
          field: "inStationCode",
          type: "string",
        },
        {
          title: "入库站台编号2",
          title: "堆垛机入库站台编号",
          field: "inSCStationCode",
          type: "string",
        },
        {
          title: "出库站台编号1",
          title: "出库站台编号",
          field: "outStationCode",
          type: "string",
        },
        {
          title: "出库站台编号2",
          title: "堆垛机出库站台编号",
          field: "outSCStationCode",
          type: "string",
        },
@@ -100,13 +100,13 @@
        { title: "禁用状态", field: "enableStatus",type: "select",dataKey: "enableStatusEnum",data: [],},
      ],
      [
        { title: "入库站台编号1", field: "inStationCode", type: "like" },
        { title: "入库站台编号2", field: "inSCStationCode", type: "like" },
        { title: "入库站台编号", field: "inStationCode", type: "like" },
        { title: "堆垛机入库站台编号", field: "inSCStationCode", type: "like" },
        { title: "设备编号", field: "deviceNo", type: "like" },
      ],
      [
        { title: "出库站台编号1", field: "outStationCode", type: "like" },
        { title: "出库站台编号2",field: "outSCStationCode",type: "like",},
        { title: "出库站台编号", field: "outStationCode", type: "like" },
        { title: "堆垛机出库站台编号",field: "outSCStationCode",type: "like",},
      ]
    ]);
    const columns = ref([
@@ -152,28 +152,28 @@
      },
      {
        field: "inStationCode",
        title: "入库站台编号1",
        title: "入库站台编号",
        type: "string",
        width: 120,
        align: "left",
      },
      {
        field: "inSCStationCode",
        title: "入库站台编号2",
        title: "堆垛机入库站台编号",
        type: "string",
        width: 150,
        align: "left",
      },
      {
        field: "outStationCode",
        title: "出库站台编号1",
        title: "出库站台编号",
        type: "decimal",
        width: 120,
        align: "left",
      },
      {
        field: "outSCStationCode",
        title: "出库站台编号2",
        title: "堆垛机出库站台编号",
        type: "string",
        width: 150,
        align: "left",
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/views/system/Sys_Log.vue
@@ -33,22 +33,24 @@
            const editFormOptions = ref([]);
            const searchFormFields = ref({"BeginDate":"","Url":"","LogType":[],"Success":[],"UserIP":"","ServiceIP":"","Role_Id":""});
            const searchFormOptions = ref([[{"title":"请求地址","field":"Url","type":"text"},{"title":"用户IP","field":"UserIP","type":"text"},{"title":"服务器IP","field":"ServiceIP","type":"text"}],[{"title":"开始时间","field":"BeginDate","type":"datetime"},{"dataKey":"restatus","data":[],"title":"响应状态","field":"Success","type":"selectList"},{"dataKey":"roles","data":[],"title":"角色ID","field":"Role_Id","type":"select"}],[{"dataKey":"log","data":[],"title":"日志类型","field":"LogType","colSize":12,"type":"checkbox"}]]);
            const columns = ref([{field:'Id',title:'Id',type:'int',width:90,hidden:true,readonly:true,require:true,align:'left'},
                       {field:'BeginDate',title:'开始时间',type:'datetime',width:140,align:'left',sortable:true},
                       {field:'UserName',title:'用户名称',type:'string',width:90,align:'left'},
                       {field:'Url',title:'请求地址',type:'string',width:110,align:'left'},
                       {field:'LogType',title:'日志类型',type:'string',bind:{ key:'log',data:[]},width:80,align:'left'},
                       {field:'Success',title:'响应状态',type:'int',bind:{ key:'restatus',data:[]},width:80,align:'left'},
                       {field:'ElapsedTime',title:'时长',type:'int',width:60,align:'left'},
                       {field:'RequestParameter',title:'请求参数',type:'string',width:70,align:'left'},
                       {field:'ResponseParameter',title:'响应参数',type:'string',width:70,align:'left'},
                       {field:'ExceptionInfo',title:'异常信息',type:'string',width:70,align:'left'},
                       {field:'UserIP',title:'用户IP',type:'string',width:90,align:'left'},
                       {field:'ServiceIP',title:'服务器IP',type:'string',width:90,hidden:true,align:'left'},
                       {field:'BrowserType',title:'浏览器类型',type:'string',width:90,align:'left'},
                       {field:'User_Id',title:'用户ID',type:'int',width:90,hidden:true,align:'left'},
                       {field:'Role_Id',title:'角色ID',type:'int',bind:{ key:'roles',data:[]},width:90,hidden:true,align:'left'},
                       {field:'EndDate',title:'结束时间',type:'datetime',width:150,hidden:true,align:'left',sortable:true}]);
            const columns = ref([{field:'id',title:'Id',type:'int',width:90,hidden:true,readonly:true,require:true,align:'left'},
                       {field:'beginDate',title:'开始时间',type:'datetime',width:140,align:'left',sortable:true},
                       {field:'userName',title:'用户名称',type:'string',width:90,align:'left'},
                       {field:'url',title:'请求地址',type:'string',width:110,align:'left'},
                    //    {field:'logType',title:'日志类型',type:'string',bind:{ key:'log',data:[]},width:80,align:'left'},
                       {field:'methodName',title:'接口名称',type:'string',width:90,align:'left'},
                       {field:'methodremark',title:'接口描述',type:'string',width:90,align:'left'},
                       {field:'success',title:'响应状态',type:'int',bind:{ key:'restatus',data:[]},width:80,align:'left'},
                       {field:'elapsedTime',title:'时长',type:'int',width:60,align:'left'},
                       {field:'requestParam',title:'请求参数',type:'string',width:70,align:'left'},
                       {field:'responseParam',title:'响应参数',type:'string',width:60,align:'left'},
                    //    {field:'exceptionInfo',title:'异常信息',type:'string',width:70,align:'left'},
                       {field:'userIP',title:'用户IP',type:'string',width:90,align:'left'},
                       {field:'serviceIP',title:'服务器IP',type:'string',width:90,hidden:true,align:'left'},
                    //    {field:'browserType',title:'浏览器类型',type:'string',width:90,align:'left'},
                       {field:'user_Id',title:'用户ID',type:'int',width:90,hidden:true,align:'left'},
                       {field:'role_Id',title:'角色ID',type:'int',bind:{ key:'roles',data:[]},width:90,hidden:true,align:'left'},
                       {field:'endDate',title:'结束时间',type:'datetime',width:150,hidden:true,align:'left',sortable:true}]);
            const detail = ref({
                cnName: "#detailCnName",
                columns: [],
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue
@@ -157,8 +157,8 @@
        align: "left",
      },
      {
        field: "dispatchertime",
        title: "任务下发时间",
        field: "finishDate",
        title: "完成时间",
        type: "datetime",
        width: 150,
        align: "left",
@@ -201,7 +201,7 @@
      },
      {
        field: "operateType",
        title: "备注",
        title: "操作类型",
        type: "string",
        width: 100,
        align: "left",
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/15173735-4d40-4303-9957-72c73104d72f.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/39801809-a703-4c28-96d8-7a0a847ba0ee.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/42a9ad71-6cad-4c27-8852-8b0836dcc4ff.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/a15af72d-cadb-4f43-be5a-3770c0ed83df.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b87d687f-d7bb-4da2-b1ce-f7dcf001b90e.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/c7430a94-d316-4296-bb96-0039e2a686ff.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d456fc8b-b3fc-438a-9e3d-b9e6b49026cc.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d48a3c6c-f39c-42e9-bd7e-a9ecb962fc09.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/LocationInfoService.cs
@@ -84,6 +84,7 @@
                if (!result.Item1) return WebResponseContent.Instance.Error(result.Item2);
                int side = 1;
                string SC = "SC01_";
                List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
                for (int i = 0; i < initializationLocationDTO.MaxRow; i++)
                {
@@ -91,6 +92,8 @@
                    {
                        for (int k = 0; k < initializationLocationDTO.MaxLayer; k++)
                        {
                            if (j + 1 > 30) SC = "SC02_";
                            else SC = "SC01_";
                            Dt_LocationInfo locationInfo = new Dt_LocationInfo()
                            {
                                AreaId = 10,
@@ -99,7 +102,7 @@
                                Layer = k + 1,
                                LocationStatus = LocationStatusEnum.Free.ObjToInt(),
                                LocationType = LocationTypeEnum.Cube.ObjToInt(),
                                RoadwayNo ="SC01_" +initializationLocationDTO.Roadway,
                                RoadwayNo = SC + initializationLocationDTO.Roadway,
                                Row = i + 1,
                            };
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/App.cs
@@ -25,6 +25,11 @@
        private static bool _isRun;
        /// <summary>
        /// æœ‰æ•ˆæœŸ
        /// </summary>
        public static DateTime? ExpDateTime = null;
        /// <summary>是否正在运行</summary>
        public static bool IsBuild { get; set; }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/LogEnum.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Core.Enums
{
    public enum LogStatusEnum
    {
        /// <summary>
        /// æˆåŠŸ
        /// </summary>
        [Description("成功")]
        Success = 1,
        /// <summary>
        /// å¼‚常
        /// </summary>
        [Description("异常")]
        Error = 2,
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AutofacModuleRegister.cs
@@ -13,6 +13,7 @@
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Helper;
using WIDESEA_Core.LogHelper;
namespace WIDESEA_Core.Extensions
{
@@ -25,7 +26,10 @@
            var cacheType = new List<Type>();
            builder.RegisterType<LogAOP>();
            cacheType.Add(typeof(LogAOP));
            if (AppSettings.app("LogAopEnable").ObjToBool())
            {
                cacheType.Add(typeof(LogAOP));
            }
            builder.RegisterGeneric(typeof(RepositoryBase<>)).As(typeof(IRepository<>)).InstancePerDependency();//注册仓储
            builder.RegisterGeneric(typeof(ServiceBase<,>)).As(typeof(IService<>)).InstancePerDependency();//注册服务
@@ -68,6 +72,8 @@
               .AsImplementedInterfaces()
               .InstancePerLifetimeScope()
               .PropertiesAutowired();
            builder.RegisterType<RequestLogModel>().InstancePerLifetimeScope();
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpHelper.cs
@@ -145,12 +145,12 @@
                    throw new Exception("异常,响应码:" + statsCode.ToString());
                }
                Logger.Write_Log("System/API请求", rquestName, "请求成功", new { è¯·æ±‚报文 = parm, æŽ¥æ”¶æŠ¥æ–‡ = responseContent });
                Logger1.Write_Log("System/API请求", rquestName, "请求成功", new { è¯·æ±‚报文 = parm, æŽ¥æ”¶æŠ¥æ–‡ = responseContent });
                return JsonConvert.DeserializeObject<T>(responseContent);
            }
            catch (Exception ex)
            {
                Logger.Write_Log("System/API请求", rquestName, "请求异常", new { è¯·æ±‚报文 = parm, æŽ¥æ”¶æŠ¥æ–‡ = responseContent, é”™è¯¯ = ex.Message });
                Logger1.Write_Log("System/API请求", rquestName, "请求异常", new { è¯·æ±‚报文 = parm, æŽ¥æ”¶æŠ¥æ–‡ = responseContent, é”™è¯¯ = ex.Message });
                throw ex;
            }
        }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger.cs
@@ -1,158 +1,310 @@

using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
using Microsoft.AspNetCore.Http;
using Microsoft.OpenApi.Models;
using SqlSugar;
using StackExchange.Profiling.Internal;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization.Formatters;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using WIDESEA_Core.DB;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_Core.HttpContextUser;
using WIDESEA_Core.Seed;
namespace WIDESEA_Core.LogHelper
{
    public class Logger
    public static class Logger
    {
        public static void Debug(string message)
        public static ConcurrentQueue<dynamic> loggerQueueData = new ConcurrentQueue<dynamic>();
        static Logger()
        {
        }
        public static void Debug(string message, Exception exception)
        {
        }
        public static void Info(string message)
        {
        }
        public static void Info(string message, Exception exception)
        {
        }
        public static void Warn(string message)
        {
        }
        public static void Warning(string message, Exception exception)
        {
        }
        public static void Error(string message)
        {
        }
        public static void Error(string message, Exception exception)
        {
        }
        public static void Fatal(string message)
        {
        }
        public static void Fatal(string message, Exception exception)
        {
        }
        public static void Write_Log(string groupName, string logName, string content, object data = null)
        {
            DateTime nowTime = DateTime.Now;
            string basePath = System.Environment.CurrentDirectory + "/Log/" + $"/{groupName}/{nowTime.ToString("yyyy-MM-dd")}";
            //如果日志文件目录不存在,则创建
            if (!Directory.Exists(basePath))
            Task.Run(() =>
            {
                Directory.CreateDirectory(basePath);
            }
            try
                StartWriteLog();
            });
        }
        static void StartWriteLog()
        {
            DataTable queueTable = CreateEmptyTable();
            while (true)
            {
                FileStream fs = new FileStream(basePath + "/" + logName + $"{nowTime.ToString("yyMMdd")}.txt", FileMode.Append);
                StreamWriter strwriter = new StreamWriter(fs);
                try
                {
                    strwriter.WriteLine(nowTime.ToString() + "." + nowTime.Millisecond);
                    strwriter.WriteLine(content);
                    if (data != null)
                    //如果队列中有数据且队列表中的行数小于500,则将队列中的数据写入队列表
                    if (loggerQueueData.Count() > 0 && queueTable.Rows.Count < 500)
                    {
                        strwriter.WriteLine(JsonConvert.SerializeObject(data));
                        DequeueToTable(queueTable); continue;
                    }
                    strwriter.WriteLine("-------------------------------");
                    strwriter.WriteLine();
                    strwriter.Flush();
                    //每5秒写一次数据
                    Thread.Sleep(5000);
                    //如果队列表中的行数为0,则跳过本次循环
                    if (queueTable.Rows.Count == 0) { continue; }
                    //创建SqlSugarClient对象,用于连接数据库
                    SqlSugarClient sugarClient = new SqlSugarClient(new ConnectionConfig()
                    {
                        ConnectionString = DBContext.GetMainConnectionDb().Connection,
                        IsAutoCloseConnection = true,
                        DbType = MainDb.DbType,
                    });
                    //将队列表中的数据批量插入数据库
                    int rows = sugarClient.Fastest<DataTable>().AS("Sys_Log").BulkCopy(queueTable);
                    //清空队列表
                    queueTable.Clear();
                }
                catch { }
                finally
                catch (Exception ex)
                {
                    strwriter.Close();
                    fs.Close();
                    //打印异常信息
                    Console.WriteLine(ex.ToString());
                }
            }
            catch { }
        }
        public static void WriteApiLog2DB(HttpContext context, string requestParameter, DateTime beginDate, string responseParameter, DateTime endDate, LoggerStatus loggerStatus)
        private static void DequeueToTable(DataTable queueTable)
        {
            loggerQueueData.TryDequeue(out dynamic log);
            if (log != null)
            {
                DataRow row = queueTable.NewRow();
                // å¦‚æžœlog的BeginDate为空或者BeginDate的年份小于2010,则将BeginDate设置为当前时间
                if (log.BeginDate == null || log.BeginDate?.Year < 2010)
                {
                    log.BeginDate = DateTime.Now;
                }
                // å¦‚æžœlog的EndDate为空,则将EndDate设置为当前时间
                if (log.EndDate == null)
                {
                    log.EndDate = DateTime.Now;
                }
                //  row["Id"] = log.Id;
                // å°†RequestParam中的换行符替换为空字符串
                row["RequestParam"] = log.RequestParam?.Replace("\r\n", "").Replace("\n", "");
                // å°†ResponseParam中的换行符替换为空字符串
                row["ResponseParam"] = log.ResponseParam?.Replace("\r\n", "").Replace("\n", "");
                row["Success"] = log.Success ?? -1;
                // å°†BeginDate设置为log的BeginDate
                row["BeginDate"] = log.BeginDate;
                // å°†EndDate设置为log的EndDate
                row["EndDate"] = log.EndDate;
                // è®¡ç®—ElapsedTime,即EndDate减去BeginDate的毫秒数
                row["ElapsedTime"] = ((DateTime)log.EndDate - (DateTime)log.BeginDate).TotalMilliseconds;
                // å°†UserIP设置为log的UserIP
                row["UserIP"] = log.UserIP;
                // å°†Url设置为log的Url
                row["Url"] = log.Url;
                // å¦‚æžœlog的UserId为空,则将UserId设置为-1,否则设置为log的UserId
                row["UserId"] = log.UserId ?? -1;
                // å°†UserName设置为log的UserName
                row["UserName"] = log.UserName;
                row["MethodName"] = log.MethodName;
                row["Methodremark"] = log.Methodremark;
                // å°†row添加到queueTable中
                queueTable.Rows.Add(row);
            }
        }
        private static DataTable CreateEmptyTable()
        {
            DataTable queueTable = new DataTable();
            queueTable.Columns.Add("BeginDate", Type.GetType("System.DateTime"));
            queueTable.Columns.Add("ElapsedTime", Type.GetType("System.Int32"));
            queueTable.Columns.Add("EndDate", Type.GetType("System.DateTime"));
            queueTable.Columns.Add("RequestParam", typeof(string));
            queueTable.Columns.Add("ResponseParam", typeof(string));
            queueTable.Columns.Add("Success", Type.GetType("System.Int32"));
            queueTable.Columns.Add("Url", typeof(string));
            queueTable.Columns.Add("UserIP", typeof(string));
            queueTable.Columns.Add("UserName", typeof(string));
            queueTable.Columns.Add("UserId", Type.GetType("System.Int32"));
            queueTable.Columns.Add("MethodName", typeof(string));
            queueTable.Columns.Add("Methodremark", typeof(string));
            //queueTable.Columns.Add("ServiceIP", typeof(string));
            //queueTable.Columns.Add("BrowserType", typeof(string));
            //queueTable.Columns.Add("Role_Id", Type.GetType("System.Int32"));
            return queueTable;
        }
        public static void Add(string requestParameter, string responseParameter)
        {
            dynamic log = null;
            string MethodName = string.Empty;
            string Methodremark = string.Empty;
            try
            {
                if (context.Request.Method == "OPTIONS") return;
                //获取当前HttpContext
                HttpContext context = App.HttpContext;
                //如果HttpContext为空,则返回
                if (context == null)
                {
                    Console.WriteLine($"未获取到httpcontext信息,reqParam:{requestParameter},respParam:{responseParameter},success:{loggerStatus}");
                    return;
                }
                Dictionary<string, object> dic = new Dictionary<string, object>
                //如果请求方法为OPTIONS,则返回
                if (context.Request.Method == "OPTIONS") return;
                //获取RequestLogModel实例
                RequestLogModel logModel = (context.RequestServices.GetService(typeof(RequestLogModel)) as RequestLogModel) ?? new RequestLogModel { RequestDate = DateTime.Now };
                #region èŽ·å–æŽ¥å£æ³¨é‡Š
                try
                {
                    {"BeginDate",beginDate },
                    {"ElapsedTime",(endDate - beginDate).TotalMilliseconds.DoubleToInt() },
                    {"EndDate",endDate },
                    {"RequestParam",requestParameter },
                    {"ResponseParam",responseParameter },
                    {"Success",1 },
                    {"Url",context.Request.Path.Value??"" },
                    {"UserIP",context.GetUserIp() },
                    {"UserName","App.User?.Name" },
                    {"User_Id","0" }
                    string path = context.Request.Path;
                    var names = path.Split('/');
                    var basePath = AppContext.BaseDirectory + "WIDESEA_WMSServer";
                    Assembly assembly = Assembly.LoadFrom(basePath);
                    List<Type> types = assembly.GetTypes().Where(x => x.Name.Contains(names[2] + "Controller")).ToList();
                    if (types.Count > 0)
                    {
                        //MethodInfo methodInfo = types.First().GetMethod("login");
                        MethodInfo methodInfo = types.First().GetMethods()
                                .FirstOrDefault(m => m.Name.Equals(names[3], StringComparison.OrdinalIgnoreCase));
                        if (methodInfo != null)
                        {
                            MethodName = methodInfo.Name;
                            string xmlPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, methodInfo.DeclaringType.Assembly.GetName().Name + ".xml");
                            //if (!File.Exists(xmlPath)) return "XML documentation file not found."; // æ£€æŸ¥æ–‡ä»¶æ˜¯å¦å­˜åœ¨
                            // åŠ è½½XML文档并解析摘要信息
                            XDocument xdoc = XDocument.Load(xmlPath);
                            string membername = $"M:{methodInfo.DeclaringType.FullName}.{methodInfo.Name}";
                            var member = xdoc.Descendants("member")
                                                .FirstOrDefault(m => m.Attribute("name").Value.ToString().Contains(membername));// å®šä½åˆ°æ–¹æ³•节点
                            //.FirstOrDefault(m => m.Attribute("name")?.Value == $"M:{methodInfo.DeclaringType.FullName}.{methodInfo.Name}"); // å®šä½åˆ°æ–¹æ³•节点
                            //if (member == null) return "Member not found in XML documentation."; // æ£€æŸ¥æ–¹æ³•是否在XML文档中找到
                            //var summary = member?.Element("summary")?.Value ?? "No summary provided."; // èŽ·å–æ‘˜è¦ä¿¡æ¯æˆ–é»˜è®¤å€¼
                            Methodremark = member?.Element("summary")?.Value.Replace("\n", "").Replace(" ", "") ?? methodInfo.Name; // èŽ·å–æ‘˜è¦ä¿¡æ¯æˆ–é»˜è®¤å€¼
                        }
                    }
                }
                catch (Exception ex)
                {
                    //{"BeginDate",beginDate },
                    //{"ElapsedTime",(endDate - beginDate).TotalMilliseconds.ObjToInt() },
                    //{"EndDate",endDate },
                    //{"RequestParam",requestParameter },
                    //{"ResponseParam",responseParameter },
                    //{"Success",1 },
                    //{"Url",context.Request.Path.Value??"" },
                    //{"UserIP",context.GetUserIp() },
                    //{"UserName","App.User?.Name" },
                    //{"User_Id","App.User?.ID" }
                }
                #endregion
                //获取当前用户
                IUser user = App.User;
                //创建日志对象
                log = new
                {
                    //请求开始时间
                    BeginDate = logModel.RequestDate,
                    //请求结束时间
                    EndDate = DateTime.Now,
                    //请求参数
                    RequestParam = requestParameter,
                    //响应参数
                    ResponseParam = responseParameter,
                    //方法名称
                    MethodName = MethodName,
                    //方法描述
                    Methodremark= Methodremark,
                    //响应状态
                    Success = LogStatusEnum.Success.ObjToInt(),
                    //请求URL
                    Url = context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase + context.Request.Path,
                    //客户端IP
                    UserIP = GetClientIP(context)?.Replace("::ffff:", "").Replace("::1", "127.0.0.1"),
                    //用户ID
                    UserId = user.UserId,
                    //用户名
                    UserName = user.UserName
                };
                SqlSugarClient sqlSugarClient = DBContext.GetCustomDB(DBContext.GetConnectionConfig());
                sqlSugarClient.Insertable(dic).AS("Sys_Log").ExecuteCommand();
            }
            catch (Exception ex)
            catch (Exception exception)
            {
                //如果发生异常,则创建日志对象
                log = log ?? new
                {
                    //请求开始时间
                    BeginDate = DateTime.Now,
                    //请求结束时间
                    EndDate = DateTime.Now,
                    //请求参数
                    RequestParam = requestParameter,
                    //响应参数
                    ResponseParam = responseParameter,
                    //方法名称
                    MethodName = MethodName,
                    //方法描述
                    Methodremark = Methodremark,
                    //响应状态
                    Success = LogStatusEnum.Error.ObjToInt(),
                };
            }
            //添加系统日志
            loggerQueueData.Enqueue(log);
        }
    }
    public enum LoggerStatus
    {
        Success = 1,
        Error = 2,
        Info = 3
        public static void Add(string url, string requestParameter, string responseParameter, DateTime beginDate)
        {
            dynamic? log = null;
            try
            {
                //获取当前用户
                IUser? user = App.User;
                //创建日志对象
                log = new
                {
                    //请求开始时间
                    BeginDate = beginDate,
                    //请求结束时间
                    EndDate = DateTime.Now,
                    //请求参数
                    RequestParam = requestParameter,
                    //响应参数
                    ResponseParam = responseParameter,
                    //请求URL
                    Url = url,
                    //客户端IP
                    UserIP = "",
                    //用户ID
                    UserId = user?.UserId,
                    //用户名
                    UserName = user?.UserName
                };
            }
            catch (Exception exception)
            {
                //如果发生异常,则创建日志对象
                log = log ?? new
                {
                    //请求开始时间
                    BeginDate = DateTime.Now,
                    //请求结束时间
                    EndDate = DateTime.Now,
                    //请求参数
                    RequestParam = requestParameter,
                    //响应参数
                    ResponseParam = responseParameter,
                };
            }
            //添加系统日志
            loggerQueueData.Enqueue(log);
        }
        public static string GetClientIP(HttpContext context)
        {
            // èŽ·å–è¯·æ±‚å¤´ä¸­çš„X-Forwarded-For字段,并将其转换为字符串
            var ip = context.Request.Headers["X-Forwarded-For"].ObjToString();
            // å¦‚æžœX-Forwarded-For字段为空,则获取远程IP地址
            if (string.IsNullOrEmpty(ip))
            {
                ip = context.Connection.RemoteIpAddress.ObjToString();
            }
            // è¿”回IP地址
            return ip;
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger1.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,158 @@

using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.DB;
using WIDESEA_Core.Helper;
using WIDESEA_Core.HttpContextUser;
using WIDESEA_Core.Seed;
namespace WIDESEA_Core.LogHelper
{
    partial class Logger1
    {
        public static void Debug(string message)
        {
        }
        public static void Debug(string message, Exception exception)
        {
        }
        public static void Info(string message)
        {
        }
        public static void Info(string message, Exception exception)
        {
        }
        public static void Warn(string message)
        {
        }
        public static void Warning(string message, Exception exception)
        {
        }
        public static void Error(string message)
        {
        }
        public static void Error(string message, Exception exception)
        {
        }
        public static void Fatal(string message)
        {
        }
        public static void Fatal(string message, Exception exception)
        {
        }
        public static void Write_Log(string groupName, string logName, string content, object data = null)
        {
            DateTime nowTime = DateTime.Now;
            string basePath = System.Environment.CurrentDirectory + "/Log/" + $"/{groupName}/{nowTime.ToString("yyyy-MM-dd")}";
            //如果日志文件目录不存在,则创建
            if (!Directory.Exists(basePath))
            {
                Directory.CreateDirectory(basePath);
            }
            try
            {
                FileStream fs = new FileStream(basePath + "/" + logName + $"{nowTime.ToString("yyMMdd")}.txt", FileMode.Append);
                StreamWriter strwriter = new StreamWriter(fs);
                try
                {
                    strwriter.WriteLine(nowTime.ToString() + "." + nowTime.Millisecond);
                    strwriter.WriteLine(content);
                    if (data != null)
                    {
                        strwriter.WriteLine(JsonConvert.SerializeObject(data));
                    }
                    strwriter.WriteLine("-------------------------------");
                    strwriter.WriteLine();
                    strwriter.Flush();
                }
                catch { }
                finally
                {
                    strwriter.Close();
                    fs.Close();
                }
            }
            catch { }
        }
        public static void WriteApiLog2DB(HttpContext context, string requestParameter, DateTime beginDate, string responseParameter, DateTime endDate, LoggerStatus loggerStatus)
        {
            try
            {
                if (context.Request.Method == "OPTIONS") return;
                if (context == null)
                {
                    Console.WriteLine($"未获取到httpcontext信息,reqParam:{requestParameter},respParam:{responseParameter},success:{loggerStatus}");
                    return;
                }
                Dictionary<string, object> dic = new Dictionary<string, object>
                {
                    {"BeginDate",beginDate },
                    {"ElapsedTime",(endDate - beginDate).TotalMilliseconds.DoubleToInt() },
                    {"EndDate",endDate },
                    {"RequestParam",requestParameter },
                    {"ResponseParam",responseParameter },
                    {"Success",1 },
                    {"Url",context.Request.Path.Value??"" },
                    {"UserIP",context.GetUserIp() },
                    {"UserName","App.User?.Name" },
                    {"User_Id","0" }
                    //{"BeginDate",beginDate },
                    //{"ElapsedTime",(endDate - beginDate).TotalMilliseconds.ObjToInt() },
                    //{"EndDate",endDate },
                    //{"RequestParam",requestParameter },
                    //{"ResponseParam",responseParameter },
                    //{"Success",1 },
                    //{"Url",context.Request.Path.Value??"" },
                    //{"UserIP",context.GetUserIp() },
                    //{"UserName","App.User?.Name" },
                    //{"User_Id","App.User?.ID" }
                };
                SqlSugarClient sqlSugarClient = DBContext.GetCustomDB(DBContext.GetConnectionConfig());
                sqlSugarClient.Insertable(dic).AS("Sys_Log").ExecuteCommand();
            }
            catch (Exception ex)
            {
            }
        }
    }
    public enum LoggerStatus
    {
        Success = 1,
        Error = 2,
        Info = 3
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/RequestLogModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Core.LogHelper
{
    public class RequestLogModel
    {
        public DateTime RequestDate { get; set; }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs
@@ -4,6 +4,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
@@ -30,18 +31,35 @@
        //todo
        public async Task InvokeAsync(HttpContext context)
        {
            if (App.ExpDateTime != null && (DateTime.Now - App.ExpDateTime.GetValueOrDefault()).TotalSeconds > 0)
            {
                context.Response.StatusCode = HttpStatusCode.InternalServerError.ObjToInt();
                context.Response.ContentType = "application/json";
                var json = new WebResponseContent();
                json.Message = HttpStatusCode.InternalServerError.ToString();//错误信息
                json.Code = 500;//500异常
                StreamWriter streamWriter = new StreamWriter(context.Response.Body);
                await streamWriter.WriteAsync(json.Serialize());
                return;
            }
            // è¿‡æ»¤ï¼Œåªæœ‰æŽ¥å£
            if (context.Request.Path.Value?.Contains("api") ?? false)
            {
                context.Request.EnableBuffering();
                Stream originalBody = context.Response.Body;
                string requestParam = string.Empty;
                string responseParam = string.Empty;
                try
                {
                    (context.RequestServices.GetService(typeof(RequestLogModel)) as RequestLogModel).RequestDate = DateTime.Now;
                    try
                    {
                        // å­˜å‚¨è¯·æ±‚数据
                        await RequestDataLog(context);
                        requestParam = RequestDataLog(context);
                        context.Request.Body.Position = 0;
                    }
                    catch { }
@@ -53,18 +71,20 @@
                    try
                    {
                        // å­˜å‚¨å“åº”数据
                        ResponseDataLog(context.Response, ms);
                        responseParam = ResponseDataLog(context.Response);
                    }
                    catch { }
                    ms.Position = 0;
                    await ms.CopyToAsync(originalBody);
                    if (!((context.Request.Path.Value?.Contains("get")) ?? true) && !((context.Request.Path.Value?.Contains("Get")) ?? true) && !((context.Request.Path.Value?.Contains("query")) ?? true) && !((context.Request.Path.Value?.Contains("Query")) ?? true) && !((context.Request.Path.Value?.Contains("DownLoadApp")) ?? true) && !((context.Request.Path.Value?.Contains("downLoadApp")) ?? true) && !((context.Request.Path.Value?.Contains("UploadApp")) ?? true) && !((context.Request.Path.Value?.Contains("uploadApp")) ?? true))
                        Logger.Add(requestParam, responseParam);
                }
                catch (Exception ex)
                {
                    // è®°å½•异常
                }
                finally
                {
@@ -76,26 +96,67 @@
                await _next(context);
            }
        }
        private async Task RequestDataLog(HttpContext context)
        private string RequestDataLog(HttpContext context)
        {
            var request = context.Request;
            var sr = new StreamReader(request.Body);
            //long length = request.Body.Length;
            RequestLogInfo requestResponse = new RequestLogInfo()
            object obj;
            string bodyData = sr.ReadToEndAsync().Result;
            if (request.ContentLength <= 100000)
            {
                Path = request.Path,
                QueryString = request.QueryString.ToString(),
                BodyData = await sr.ReadToEndAsync()
            };
            var content = JsonConvert.SerializeObject(requestResponse);
            if (!string.IsNullOrEmpty(content))
            {
                LogLock.OutLogAOP("接口日志", new string[] { "请求数据 -  è¯·æ±‚数据类型:" + requestResponse.GetType().ToString(), content });
                request.Body.Position = 0;
                obj = new
                {
                    QueryString = request.QueryString.ToString(),
                    BodyData = bodyData
                };
            }
            else
            {
                obj = new
                {
                    QueryString = request.QueryString.ToString(),
                    BodyData = ""
                };
            }
            string data = JsonConvert.SerializeObject(obj);
            request.Body.Position = 0;
            return data;
        }
        private string ResponseDataLog(HttpResponse response)
        {
            if (response.ContentLength <= 100000)
            {
                response.Body.Position = 0;
                using StreamReader stream = new StreamReader(response.Body, leaveOpen: true);
                string body = stream.ReadToEnd();
                response.Body.Position = 0;
                return body;
            }
            return "";
        }
        //private async Task RequestDataLog(HttpContext context)
        //{
        //    var request = context.Request;
        //    var sr = new StreamReader(request.Body);
        //    //long length = request.Body.Length;
        //    RequestLogInfo requestResponse = new RequestLogInfo()
        //    {
        //        Path = request.Path,
        //        QueryString = request.QueryString.ToString(),
        //        BodyData = await sr.ReadToEndAsync()
        //    };
        //    var content = JsonConvert.SerializeObject(requestResponse);
        //    if (!string.IsNullOrEmpty(content))
        //    {
        //        LogLock.OutLogAOP("接口日志", new string[] { "请求数据 -  è¯·æ±‚数据类型:" + requestResponse.GetType().ToString(), content });
        //        request.Body.Position = 0;
        //    }
        //}
        private void ResponseDataLog(HttpResponse response, MemoryStream ms)
        {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_ISystemRepository/ISys_LogRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Model.Models;
namespace WIDESEA_ISystemRepository
{
    public interface ISys_LogRepository : IRepository<Sys_Log>
    {
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_LogService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.BaseServices;
using WIDESEA_Model.Models;
namespace WIDESEA_ISystemService
{
    public interface ISys_LogService : IService<Sys_Log>
    {
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Log.cs
@@ -8,7 +8,10 @@
namespace WIDESEA_Model.Models
{
    [MultiTenant]
    /// <summary>
    /// æŽ¥å£æ—¥å¿—
    /// </summary>
    [SugarTable(nameof(Sys_Log), "接口日志")]
    public class Sys_Log
    {
        /// <summary>
@@ -78,6 +81,18 @@
        public string UserName { get; set; }
        /// <summary>
        /// æ–¹æ³•名称
        /// </summary>
        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "方法名称")]
        public string MethodName { get; set; }
        /// <summary>
        /// æ–¹æ³•描述
        /// </summary>
        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "方法描述")]
        public string Methodremark { get; set; }
        /// <summary>
        /// ç”¨æˆ·ä¸»é”®
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "用户主键")]
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task_Hty.cs
@@ -140,7 +140,7 @@
        public int SourceId { get; set; }
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "备注")]
        public string OperateType {  get; set; }
        public string OperateType { get; set; }
        /// <summary>
        /// åˆ›å»ºäºº
@@ -173,5 +173,12 @@
        [ExporterHeader(DisplayName = "修改日期")]
        [SugarColumn(IsNullable = true, ColumnDescription = "修改日期")]
        public DateTime? ModifyDate { get; set; }
        /// <summary>
        /// å®Œæˆæ—¶é—´
        /// </summary>
        [ImporterHeader(Name = "完成时间")]
        [ExporterHeader(DisplayName = "完成时间")]
        [SugarColumn(IsNullable = true, ColumnDescription = "完成时间")]
        public DateTime FinishDate { get; set; } = DateTime.Now;
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_SystemRepository/Sys_LogRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.BaseRepository;
using WIDESEA_ISystemRepository;
using WIDESEA_Model.Models;
namespace WIDESEA_SystemRepository
{
    public class Sys_LogRepository : RepositoryBase<Sys_Log>, ISys_LogRepository
    {
        public Sys_LogRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
        {
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.BaseServices;
using WIDESEA_ISystemRepository;
using WIDESEA_ISystemService;
using WIDESEA_Model.Models;
namespace WIDESEA_SystemService
{
    public class Sys_LogService : ServiceBase<Sys_Log, ISys_LogRepository>, ISys_LogService
    {
        public Sys_LogService(ISys_LogRepository BaseDal) : base(BaseDal)
        {
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs
@@ -293,6 +293,8 @@
            {
                return new { code = 404, message = "未找到该任务!" };
            }
            if (task.TaskStatus == ((AGVTaskStatusEnum)Enum.Parse(typeof(AGVTaskStatusEnum), model.Task_status)).ObjToInt())
                return new { code = 200, message = "成功" };
            switch ((AGVTaskStatusEnum)Enum.Parse(typeof(AGVTaskStatusEnum), model.Task_status))
            {
                case AGVTaskStatusEnum.Create:
@@ -339,6 +341,12 @@
                    }
                case AGVTaskStatusEnum.Cancel:
                    {
                        if (task.TaskStatus < AGVTaskStatusEnum.DoneFetch.ObjToInt())
                        {
                            Dt_CachePoint startCachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == task.SourceAddress);
                            startCachePoint.PointStatus = LocationStatusEnum.InStock.ObjToInt();
                            _basicService.CachePointService.Repository.UpdateData(startCachePoint);
                        }
                        task.TaskStatus = AGVTaskStatusEnum.Cancel.ObjToInt();
                        BaseDal.DeleteAndMoveIntoHty(task, OperateType.自动删除);
                        return new { code = 200, message = "成功" };
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs
@@ -22,7 +22,7 @@
            _repository = repository;
        }
        [HttpPost, Route("InitializationLocation")]
        [HttpPost, Route("InitializationLocation"), AllowAnonymous]
        public WebResponseContent InitializationLocation([FromBody] InitializationLocationDTO initializationLocationDTO)
        {
            return Service.InitializationLocation(initializationLocationDTO);
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_LogController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using WIDESEA_Core.BaseController;
using WIDESEA_ISystemService;
using WIDESEA_Model.Models;
namespace WIDESEA_WMSServer.Controllers
{
    /// <summary>
    /// æ—¥å¿—
    /// </summary>
    [Route("api/[controller]")]
    [ApiController]
    public class Sys_LogController : ApiBaseController<ISys_LogService, Sys_Log>
    {
        public Sys_LogController(ISys_LogService service) : base(service)
        {
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/System/APIÇëÇó/2025-06-09/½ÐÁÏÈÎÎñÏ·¢250609.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
2025/6/9 9:30:17.405
请求成功
{"请求报文":{"task_id":"73","task_name":null,"priority":"0","site_value_type":1,"src_pos":"ZH012M001","dst_pos":"ZH01MZ002","car_id":-1,"src_level":0,"dst_level":0,"task_type":"1132","former_id":null},"接收报文":"{\"code\":200,\"message\":null,\"data\":{\"task_id\":\"73\",\"taskName\":\"ZH012M001-ZH01MZ002\",\"task_status\":\"Create\"}}"}
-------------------------------
2025/6/9 9:36:59.918
请求成功
{"请求报文":{"task_id":"74","task_name":null,"priority":"0","site_value_type":1,"src_pos":"ZH012M002","dst_pos":"ZH01MZ003","car_id":-1,"src_level":0,"dst_level":0,"task_type":"1132","former_id":null},"接收报文":"{\"code\":200,\"message\":null,\"data\":{\"task_id\":\"74\",\"taskName\":\"ZH012M002-ZH01MZ003\",\"task_status\":\"Create\"}}"}
-------------------------------
2025/6/9 9:50:15.986
请求成功
{"请求报文":{"task_id":"75","task_name":null,"priority":"0","site_value_type":1,"src_pos":"ZH013M009","dst_pos":"ZH012M002","car_id":-1,"src_level":4,"dst_level":0,"task_type":"1132","former_id":null},"接收报文":"{\"code\":200,\"message\":null,\"data\":{\"task_id\":\"75\",\"taskName\":\"ZH013M009-ZH012M002\",\"task_status\":\"Create\"}}"}
-------------------------------
2025/6/9 10:14:14.801
请求成功
{"请求报文":{"task_id":"76","task_name":null,"priority":"0","site_value_type":1,"src_pos":"ZH012M002","dst_pos":"ZH01MZ019","car_id":-1,"src_level":0,"dst_level":0,"task_type":"1132","former_id":null},"接收报文":"{\"code\":200,\"message\":null,\"data\":{\"task_id\":\"76\",\"taskName\":\"ZH012M002-ZH01MZ019\",\"task_status\":\"Create\"}}"}
-------------------------------
2025/6/9 10:37:37.440
请求成功
{"请求报文":{"task_id":"77","task_name":null,"priority":"0","site_value_type":1,"src_pos":"ZH013M011","dst_pos":"ZH012M002","car_id":-1,"src_level":4,"dst_level":0,"task_type":"1132","former_id":null},"接收报文":"{\"code\":200,\"message\":null,\"data\":{\"task_id\":\"77\",\"taskName\":\"ZH013M011-ZH012M002\",\"task_status\":\"Create\"}}"}
-------------------------------
2025/6/9 10:38:12.431
请求成功
{"请求报文":{"task_id":"78","task_name":null,"priority":"0","site_value_type":1,"src_pos":"ZH012P001","dst_pos":"ZH01PZ001","car_id":-1,"src_level":0,"dst_level":0,"task_type":"1132","former_id":null},"接收报文":"{\"code\":200,\"message\":null,\"data\":{\"task_id\":\"78\",\"taskName\":\"ZH012P001-ZH01PZ001\",\"task_status\":\"Create\"}}"}
-------------------------------
2025/6/9 10:38:46.102
请求成功
{"请求报文":{"task_id":"79","task_name":null,"priority":"0","site_value_type":1,"src_pos":"A02","dst_pos":"ZH011M009","car_id":-1,"src_level":0,"dst_level":0,"task_type":"1132","former_id":null},"接收报文":"{\"code\":200,\"message\":null,\"data\":{\"task_id\":\"79\",\"taskName\":\"A02-ZH011M009\",\"task_status\":\"Create\"}}"}
-------------------------------
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs
@@ -34,6 +34,7 @@
}); ;
builder.ConfigureApplication();
App.ExpDateTime = DateTime.Parse("2025-09-01 00:00:00");
// 2、配置服务
builder.Services.AddSingleton(new AppSettings(builder.Configuration));//注册
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
@@ -21,7 +21,7 @@
    // æ³¨æ„ï¼Œhttp://127.0.0.1:1818 å’Œ http://localhost:1818 æ˜¯ä¸ä¸€æ ·çš„
    "IPs": "http://127.0.0.1:8080,http://localhost:8080"
  },
  "LogAopEnable": false,
  "WCS": "http://192.168.100.13:9291/api/Task/",
  "AGV": "http://192.168.100.60:8222/api/task/",
  "ApiName": "WIDESEA",
ÏîÄ¿×ÊÁÏ/ÏîÄ¿Îļþ/WMS.sql
ÎļþÌ«´ó