From b7ee8c173ae75cfe32e58cc42020267fd155158a Mon Sep 17 00:00:00 2001
From: xxyy <cathay_xy@163.com>
Date: 星期五, 07 三月 2025 15:30:48 +0800
Subject: [PATCH] 增强缓存操作的线程安全性

---
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs |  102 +++++++++-----------------------------------------
 1 files changed, 19 insertions(+), 83 deletions(-)

diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
index e696df4..6d021a8 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -81,86 +81,6 @@
         {
             if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
             {
-                #region 鑰佺増鏈�
-                //var process = await SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>()
-                //    .FirstAsync(x => x.EquipmentName == task.Roadway);
-                //var info = JsonConvert.DeserializeObject<ResponseEqptRunDto>(process.ProcessValue);
-                //if (!task.Roadway.Contains("FR") && stock.ProcessCode != "OCVB")  //闈炲垎瀹瑰簱鍖轰笌褰撳墠宸ュ簭鏄疧CVB鍧囦笂鎶OM鍑哄叆绔�
-                //{
-                //    var agingOutputDto = MapToAgingOutputDto(stock);
-                //    content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto);
-                //    //ValidateResponse(content);
-                //    var result = JsonConvert.DeserializeObject<BasicResult>(content.Data.ToString());
-                //    if (!result.Success || !agingOutputDto.SerialNos[0].SerialNoResult)
-                //    {
-                //        if (result.MessageCode == "E10001")
-                //        {
-                //            var area = _areaInfoRepository.QueryFirst(x => x.AreaCode == stock.AreaCode);
-                //            if (area == null)
-                //            {
-                //                throw new Exception("鏈壘鍒板搴旂殑搴撳尯淇℃伅");
-                //            }
-                //            var trayCells = new TrayCellsStatusDto()
-                //            {
-                //                Software = area.Spare3,
-                //                TrayBarcode = task.PalletCode,
-                //                EquipmentCode = area.Spare2,
-                //                SceneType = area.Spare4
-                //            };
-                //            content = await _cellStateService.GetTrayCellStatusAsync(trayCells);
-                //            if (!content.Status) return content;
-
-                //            var ResultTray = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
-                //            if (ResultTray.SerialNos.Count > 0)
-                //            {
-                //                var parameterInfo = JsonConvert.DeserializeObject<List<ParameterInfo>>(stock.ParameterInfos).FirstOrDefault(y => y.Description.Contains("鏃堕棿"));
-                //                if (parameterInfo == null) throw new Exception("");
-
-                //                var outHours = (DateTime.Now - (stock.LinedProcessFeedbackTime == null ? stock.CreateDate : stock.LinedProcessFeedbackTime.ToDateTime())).TotalHours;
-
-                //                var isNG = outHours > parameterInfo.LowerSpecificationsLimit.ToDouble() && outHours < parameterInfo.UpperSpecificationsLimit.ToDouble();
-
-                //                var defectCode = string.Empty;
-                //                if (!isNG) defectCode = "TQCK";
-                //                var outputDto = new AgingOutputDto
-                //                {
-                //                    OpFlag = 1,
-                //                    Software = area.Spare3,
-                //                    EquipmentCode = area.Spare2,
-                //                    TrayBarcode = stock.PalletCode,
-                //                    SerialNos = ResultTray.SerialNos.Select(x => new SerialNoOutDto
-                //                    {
-                //                        SlotNo = x.PositionNo,
-                //                        SerialNo = x.SerialNo,
-                //                        SerialNoResult = true, //isNG,
-                //                        ParameterInfo = new List<ParameterInfoOutput> {
-                //                            new ParameterInfoOutput() {
-                //                                Value = outHours.ToString(),
-                //                                ParameterCode =parameterInfo.ParameterCode,
-                //                                ParameterDesc = parameterInfo.Description,
-                //                                ParameterResult  = "OK", //isNG.ToString(),
-                //                                TargetValue = parameterInfo.TargetValue,
-                //                                LowerLomit = parameterInfo.LowerSpecificationsLimit,
-                //                                UpperLimit = parameterInfo.UpperSpecificationsLimit,
-                //                                DefectCode = defectCode,
-                //                                UOMCode = parameterInfo.UOMCode,
-                //                            }
-                //                        }
-                //                    }).ToList()
-                //                };
-
-                //                content = await _agingInOrOutInputService.GetOCVOutputAsync(outputDto);
-                //                result = JsonConvert.DeserializeObject<BasicResult>(content.Data.ToString());
-                //                if (!result.Success)
-                //                    task.Remark = "NG";
-                //            }
-                //        }
-                //        else
-                //            task.Remark = "NG";
-                //    }
-                //}
-                #endregion 鑰佺増鏈�
-
                 if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
                 {
                     if (!task.Roadway.Contains("FR") && stock.ProcessCode != "OCVB")
@@ -215,8 +135,21 @@
                 await DeleteTaskAsync(task.TaskId);
                 await AddTaskHtyAsync(taskHty);
             });
-
-            _simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { stock.PalletCode });
+            try
+            {
+                using(_simpleCacheService.AcquireLock(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, 2000))
+                {
+                    _simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { stock.PalletCode });
+                }
+            }
+            catch (Exception ex)
+            {
+                LogFactory.GetLog("鍒犻櫎缂撳瓨澶辫触").Error(true, $"{stock.PalletCode}_鍒犻櫎缂撳瓨澶辫触锛屽紓甯镐俊鎭細{ex.Message}");
+                using(_simpleCacheService.AcquireLock(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, 2000))
+                {
+                    _simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { stock.PalletCode });
+                }
+            }
 
             return content.OK("浠诲姟瀹屾垚鎴愬姛", task.Remark);
         }
@@ -453,7 +386,10 @@
                 _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(locationInf, lastStatus, (int)StatusChangeTypeEnum.AutomaticStorage, task.TaskNum);
 
                 stock.StockInfoDetails = new List<DtStockInfoDetail>() { { stock.StockInfoDetails[0] } };
-                _simpleCacheService.HashAdd(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, stock.PalletCode, stock);
+                using(_simpleCacheService.AcquireLock(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, 2000))
+                {
+                    _simpleCacheService.HashAdd(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, stock.PalletCode, stock);
+                }
 
                 content.OK("鍏ュ簱浠诲姟瀹屾垚鎴愬姛");
             }

--
Gitblit v1.9.3