Browse Source

添加字符串到DateTime的扩展方法并更新FJService

在 `PrimitiveTypeExtensions.cs` 文件中添加了一个新的扩展方法类 `PrimitiveTypeExtensions`,用于扩展基础数据类型。该类包含两个方法:
- `GetDateTime(this string time)`:将字符串转换为 `DateTime` 对象,使用固定格式 `yyyyMMddHHmmss`。
- `GetDateTime(this string time, ILogger<FJService> logger)`:同样将字符串转换为 `DateTime` 对象,但如果转换失败,会记录日志并返回当前时间。

在 `FJService.cs` 文件中:
- 引入了 `wms.service.Extensions` 命名空间。
- 在 `GetFlowExceptionResults` 方法中,使用新的 `GetDateTime` 扩展方法替换了原有的时间处理逻辑。
- 在 `GetFlowExceptionResults` 方法中,修改了 `res.ResMsg` 的赋值逻辑,增加了时间戳。
- 在另一个方法中,同样使用新的 `GetDateTime` 扩展方法替换了原有的时间处理逻辑。
林豪 左 1 year ago
parent
commit
b92edf0fd4
2 changed files with 45 additions and 19 deletions
  1. 41 0
      wms.service/Extensions/PrimitiveTypeExtensions.cs
  2. 4 19
      wms.service/Service/FJService.cs

+ 41 - 0
wms.service/Extensions/PrimitiveTypeExtensions.cs

@@ -0,0 +1,41 @@
+using Microsoft.Extensions.Logging;
+using System;
+using wms.service.Service;
+
+namespace wms.service.Extensions
+{
+    /// <summary>
+    ///  专注于扩展基础数据类型(如整数、字符串等)
+    /// </summary>
+    public static class PrimitiveTypeExtensions
+    {
+        public static DateTime GetDateTime(this string time) => DateTime.ParseExact(time, "yyyyMMddHHmmss", null);
+
+        /// <summary>
+        ///  获取时间
+        /// </summary>
+        /// <param name="time">数据源</param>
+        /// <param name="logger">日志服务</param>
+        /// <returns></returns>
+        public static DateTime GetDateTime(this string time, ILogger<FJService> logger)
+        {
+            DateTime prodate = DateTime.Now;
+            DateTime item = prodate;
+            if (!string.IsNullOrEmpty(time) && DateTime.TryParseExact(time, "yyyyMMddHHmmss", null, System.Globalization.DateTimeStyles.None, out prodate))
+            {
+                prodate = DateTime.ParseExact(time, "yyyyMMddHHmmss", null);
+            }
+            else
+            {
+                if (logger != null)
+                {
+                    logger.LogInformation("生产日期格式不对,系统默认使用当前时间");
+                }
+
+                prodate = item;
+            }
+
+            return prodate;
+        }
+    }
+}

+ 4 - 19
wms.service/Service/FJService.cs

@@ -26,6 +26,7 @@ using wms.dto.request.hj;
 using wms.dto.request.share;
 using wms.dto.response;
 using wms.dto.response.fj;
+using wms.service.Extensions;
 using wms.service.IService;
 using wms.sqlsugar;
 using wms.sqlsugar.model;
@@ -852,15 +853,7 @@ namespace wms.service.Service
             var res = new SRes();
 
             //时间处理
-            var prodate = DateTime.Now;
-            if (!string.IsNullOrEmpty(reqDto.ProductDate) && DateTime.TryParse(reqDto.ProductDate, out prodate))
-            {
-                prodate = DateTime.Parse(reqDto.ProductDate);
-            }
-            else
-            {
-                _logger.LogInformation("生产日期格式不对,系统默认使用当前时间");
-            }
+            var prodate = reqDto.ProductDate.GetDateTime(_logger);
 
             //是否有异常
             if (_baseErrorInfoRepository.AsQueryable().With(SqlWith.NoLock).Any(x=> x.Message.Contains(reqDto.qrCode) && x.AddTime > prodate))
@@ -869,7 +862,7 @@ namespace wms.service.Service
                 if (regInfo!=null) //表示此工字轮注册时失败
                 {
                     res.ResCode = ResponseStatusCodeEnum.Sucess.GetHashCode();
-                    res.ResMsg = regInfo.Message;
+                    res.ResMsg = regInfo.Message+ $"[{prodate:yyyy-MM-dd hh:mm:ss}]";
                     return res;
                 }
                 var flow= _baseErrorInfoRepository.AsQueryable().With(SqlWith.NoLock).First(x => x.BusName == "江景获取流向" && x.Message.Contains(reqDto.qrCode) && x.AddTime > prodate);
@@ -1372,15 +1365,7 @@ namespace wms.service.Service
             var dateTime = DateTime.Now.AddHours(-12);
             #region 超时判断
             //获取时间
-            var prodate = DateTime.Now;
-            if (!string.IsNullOrEmpty(reqDto.ProductDate) && DateTime.TryParse(reqDto.ProductDate, out prodate))
-            {
-                prodate = DateTime.Parse(reqDto.ProductDate);
-            }
-            else
-            {
-                _logger.LogInformation("生产日期格式不对,系统默认使用当前时间");
-            }
+            var prodate = reqDto.ProductDate.GetDateTime(_logger);
 
             if (prodate<dateTime)
             {