已删除4个文件
已修改16个文件
已添加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: "å建人", |
| | |
| | | ], |
| | | [ |
| | | { |
| | | 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", |
| | | }, |
| | |
| | | { 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([ |
| | |
| | | }, |
| | | { |
| | | 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", |
| | |
| | | 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: [], |
| | |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "dispatchertime", |
| | | title: "ä»»å¡ä¸åæ¶é´", |
| | | field: "finishDate", |
| | | title: "宿æ¶é´", |
| | | type: "datetime", |
| | | width: 150, |
| | | align: "left", |
| | |
| | | }, |
| | | { |
| | | field: "operateType", |
| | | title: "夿³¨", |
| | | title: "æä½ç±»å", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | |
| | | 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++) |
| | | { |
| | |
| | | { |
| | | 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, |
| | |
| | | Layer = k + 1, |
| | | LocationStatus = LocationStatusEnum.Free.ObjToInt(), |
| | | LocationType = LocationTypeEnum.Cube.ObjToInt(), |
| | | RoadwayNo ="SC01_" +initializationLocationDTO.Roadway, |
| | | RoadwayNo = SC + initializationLocationDTO.Roadway, |
| | | Row = i + 1, |
| | | }; |
| | | |
| | |
| | | |
| | | private static bool _isRun; |
| | | |
| | | /// <summary> |
| | | /// æææ |
| | | /// </summary> |
| | | public static DateTime? ExpDateTime = null; |
| | | |
| | | /// <summary>æ¯å¦æ£å¨è¿è¡</summary> |
| | | public static bool IsBuild { get; set; } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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, |
| | | } |
| | | } |
| | |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_Core.LogHelper; |
| | | |
| | | namespace WIDESEA_Core.Extensions |
| | | { |
| | |
| | | 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();//注åæå¡ |
| | |
| | | .AsImplementedInterfaces() |
| | | .InstancePerLifetimeScope() |
| | | .PropertiesAutowired(); |
| | | |
| | | builder.RegisterType<RequestLogModel>().InstancePerLifetimeScope(); |
| | | } |
| | | } |
| | | } |
| | |
| | | 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; |
| | | } |
| | | } |
| | |
| | |  |
| | | 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; |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | |  |
| | | 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 |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; } |
| | | } |
| | | } |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Net; |
| | | using System.Text; |
| | | using System.Text.RegularExpressions; |
| | | using System.Threading.Tasks; |
| | |
| | | //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 { } |
| | |
| | | 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 |
| | | { |
| | |
| | | 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) |
| | | { |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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> |
| | | { |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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> |
| | | { |
| | | } |
| | | } |
| | |
| | | |
| | | namespace WIDESEA_Model.Models |
| | | { |
| | | [MultiTenant] |
| | | /// <summary> |
| | | /// æ¥å£æ¥å¿ |
| | | /// </summary> |
| | | [SugarTable(nameof(Sys_Log), "æ¥å£æ¥å¿")] |
| | | public class Sys_Log |
| | | { |
| | | /// <summary> |
| | |
| | | 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 = "ç¨æ·ä¸»é®")] |
| | |
| | | public int SourceId { get; set; } |
| | | |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "夿³¨")] |
| | | public string OperateType { get; set; } |
| | | public string OperateType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建人 |
| | |
| | | [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; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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) |
| | | { |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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) |
| | | { |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | 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: |
| | |
| | | } |
| | | 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 = "æå" }; |
| | |
| | | _repository = repository; |
| | | } |
| | | |
| | | [HttpPost, Route("InitializationLocation")] |
| | | [HttpPost, Route("InitializationLocation"), AllowAnonymous] |
| | | public WebResponseContent InitializationLocation([FromBody] InitializationLocationDTO initializationLocationDTO) |
| | | { |
| | | return Service.InitializationLocation(initializationLocationDTO); |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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) |
| | | { |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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\"}}"} |
| | | ------------------------------- |
| | | |
| | |
| | | }); ; |
| | | builder.ConfigureApplication(); |
| | | |
| | | App.ExpDateTime = DateTime.Parse("2025-09-01 00:00:00"); |
| | | |
| | | // 2ãé
ç½®æå¡ |
| | | builder.Services.AddSingleton(new AppSettings(builder.Configuration));//注å |
| | |
| | | // 注æï¼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", |