From 1b6ccb64675e5262a2f7135697edc7466ffc14bf Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期二, 04 三月 2025 17:20:05 +0800
Subject: [PATCH] 优化
---
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs | 156 +++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 148 insertions(+), 8 deletions(-)
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
index 48f30ad..514860b 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -200,7 +200,8 @@
TaskType = (int)TaskOutboundTypeEnum.InToOut,
TaskNum = await BaseDal.GetTaskNo(),
Creater = "Systeam",
- ProductionLine = result.ProductionLine
+ ProductionLine = result.ProductionLine,
+ ProcessCode = result.ProcessCode,
};
return taskNG;
}
@@ -258,7 +259,8 @@
TaskType = (int)TaskOutboundTypeEnum.InToOut,
TaskNum = await BaseDal.GetTaskNo(),
Creater = "Systeam",
- ProductionLine = result.ProductionLine
+ ProductionLine = result.ProductionLine,
+ ProcessCode = result.ProcessCode,
};
return taskNG;
}
@@ -291,7 +293,8 @@
TaskType = (int)TaskOutboundTypeEnum.InToOut,
TaskNum = await BaseDal.GetTaskNo(),
Creater = "Systeam",
- ProductionLine = result.ProductionLine
+ ProductionLine = result.ProductionLine,
+ ProcessCode = result.ProcessCode,
};
return task;
}
@@ -368,7 +371,8 @@
TaskType = (int)TaskOutboundTypeEnum.InToOut,
TaskNum = await BaseDal.GetTaskNo(),
Creater = "Systeam",
- ProductionLine = result.ProductionLine
+ ProductionLine = result.ProductionLine,
+ ProcessCode = result.ProcessCode,
};
return taskNG;
}
@@ -418,6 +422,7 @@
TaskNum = await BaseDal.GetTaskNo(),
Creater = "Systeam",
ProductionLine = result.ProductionLine,
+ ProcessCode = result.ProcessCode,
};
int lastStatus = locationInfo.LocationStatus;
ConsoleHelper.WriteSuccessLine($"淇敼鍓嶏細" + lastStatus.ToString());
@@ -454,6 +459,10 @@
else
{
locations = await _locationRepository.QueryDataAsync(x => x.LocationStatus == (int)LocationEnum.Distribute && x.RoadwayNo == requestTask.Roadways && x.EnalbeStatus == 1 && x.LocationType == 1);
+ if (locations == null)
+ {
+ locations = await _locationRepository.QueryDataAsync(x => x.LocationStatus == (int)LocationEnum.Free && x.RoadwayNo == requestTask.Roadways && x.EnalbeStatus == 1 && x.LocationType == 1);
+ }
}
if (locations == null)
@@ -653,6 +662,7 @@
TaskNum = await BaseDal.GetTaskNo(),
Creater = "Systeam",
ProductionLine = result.ProductionLine,
+ ProcessCode = result.ProcessCode,
};
return Epmtytask;
}
@@ -714,6 +724,7 @@
TaskNum = await BaseDal.GetTaskNo(),
Creater = "Systeam",
ProductionLine = result.ProductionLine,
+ ProcessCode = result.ProcessCode,
};
var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing);
@@ -793,14 +804,21 @@
{
try
{
- Thread.Sleep(10000);
+ Thread.Sleep(TimeSpan.FromMinutes(10));
+
var area = await _areaInfoRepository.QueryFirstAsync(x => x.AreaCode == "GWSC1");
+ var devices = SqlSugarHelper.DbWCS.Queryable<Dt_DeviceInfo>()
+ .Where(x => x.DeviceStatus == "1")
+ .Where(x => x.DeviceCode.Contains("GWSC"))
+ .ToList();
+ var deviceCode = devices.Select(x => x.DeviceCode).ToList();
var stockInfo = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
.Includes(x => x.LocationInfo) // 棰勫姞杞絃ocationInfo
.Includes(x => x.StockInfoDetails) // 棰勫姞杞絊tockInfoDetails
.Where(x => x.AreaCode == area.AreaCode && x.OutboundTime < DateTime.Now && x.IsFull == true) // 杩囨护鏉′欢
.Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID) // 杩囨护鏉′欢
+ .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
.OrderBy(x => x.OutboundTime) // 鎺掑簭
.ToListAsync(); // 鑾峰彇绗竴涓厓绱�
@@ -872,7 +890,7 @@
WebResponseContent content = new WebResponseContent();
try
{
- var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == taskDTO.Position);
+ var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == taskDTO.Position && x.stationStatus == "1");
var locations = _locationRepository.QueryData(x => x.RoadwayNo == station.Roadway && x.LocationStatus == (int)LocationEnum.Free && x.LocationType == 1);
if (locations.Count > 10)
@@ -957,6 +975,9 @@
#region 甯告俯3鍑哄簱鑷冲寘瑁�
+ // 鐢ㄤ簬杩借釜姣忎釜璇锋眰鐨勮皟鐢ㄦ鏁板拰鏈�鍚庤姹傛椂闂淬��
+ private static readonly Dictionary<string, (int Count, DateTime LastRequestTime)> requestTracker = new();
+
/// <summary>
/// 甯告俯3鍑哄簱鑷冲寘瑁�
/// </summary>
@@ -967,18 +988,49 @@
WebResponseContent content = new WebResponseContent();
try
{
- Dt_StationManager station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == json.Position && x.stationType == 12 && x.stationArea == "Call");
+ //string requestKey = JsonConvert.SerializeObject(json);
+ //// 妫�鏌ヨ姹傛鏁板拰鏃堕棿闄愬埗
+ //if (requestTracker.TryGetValue(requestKey, out var requestInfo))
+ //{
+ // if (requestInfo.Count >= 9 && DateTime.Now < requestInfo.LastRequestTime.AddMinutes(5))
+ // {
+ // // 濡傛灉璇锋眰娆℃暟瓒呰繃闄愬埗涓旀湭瓒呰繃10鍒嗛挓锛屾姏鍑哄紓甯�
+ // throw new InvalidOperationException("璇锋眰娆℃暟宸茶揪鍒伴檺鍒讹紝璇风◢鍚庡啀璇曘��");
+ // }
+ //}
+ //// 鏇存柊璇锋眰璺熻釜淇℃伅
+ //if (requestTracker.ContainsKey(requestKey))
+ //{
+ // requestTracker[requestKey] = (requestInfo.Count + 1, DateTime.Now);
+ //}
+ //else
+ //{
+ // requestTracker[requestKey] = (1, DateTime.Now);
+ //}
+ //LogFactory.GetLog("甯告俯3鍑哄簱鑷冲寘瑁�").Info(true, $"甯告俯3鍑哄簱鑷冲寘瑁呬紶鍏ュ弬鏁帮細" + JsonConvert.SerializeObject(json, Formatting.Indented));
+
+ Dt_StationManager station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == json.Position && x.stationType == 12 && x.stationArea == "Call");
+ if (station == null) { throw new Exception($"鏈壘鍒板寘瑁呯珯鍙颁俊鎭紝璇锋鏌ヤ紶鍏ュ弬鏁皗json.Position}"); }
+
+ var devices = SqlSugarHelper.DbWCS.Queryable<Dt_DeviceInfo>()
+ .Where(x => x.DeviceStatus == "1")
+ .Where(x => x.DeviceCode.Contains("CWSC")) // 杩囨护鏉′欢
+ .ToList();
+ var deviceCode = devices.Select(x => x.DeviceCode).ToList();
+
+ //LogFactory.GetLog("甯告俯3鍑哄簱鑷冲寘瑁�").Info(true, $"甯告俯3鍑哄簱鑷冲寘瑁呬紶鍏ュ弬鏁帮細" + JsonConvert.SerializeObject(json, Formatting.Indented));
var stockInfo = _stockInfoRepository.Db.Queryable<DtStockInfo>()
.Where(x => x.ProductionLine == station.productLine)
.Includes(x => x.LocationInfo) // 棰勫姞杞絃ocationInfo
.Where(x => x.AreaCode == "CWSC3" && x.IsFull == true) // 杩囨护鏉′欢
.Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock) // 杩囨护鏉′欢
+ .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
.OrderBy(x => x.OutboundTime) // 鎺掑簭
.First(); // 鑾峰彇绗竴涓厓绱�
//DtStockInfo stockInfo = _stockInfoRepository.QueryFirst(X => X.IsFull && X.AreaCode == "CWSC3" && X.ProductionLine == station.productLine);
- if (stockInfo == null) throw new Exception("搴撳唴鏃犳弧瓒虫潯浠剁殑搴撳瓨鍙嚭搴�");
+ if (stockInfo == null) throw new Exception($"搴撳唴{station.productLine}鏃犳弧瓒虫潯浠剁殑搴撳瓨鍙嚭搴�");
DtLocationInfo locationInfo = _locationRepository.QueryFirst(x => x.AreaId == 5 && x.LocationCode == stockInfo.LocationCode);
@@ -1002,6 +1054,7 @@
TaskNum = await BaseDal.GetTaskNo(),
Creater = "Systeam",
ProductionLine = stockInfo.ProductionLine,
+ ProcessCode = stockInfo.ProcessCode,
};
WMSTaskDTO taskDTO = CreateTaskDTO(task);
@@ -1145,4 +1198,91 @@
}
#endregion
+
+ #region 鍒嗗绌烘鍏ュ簱鏀逛负鐩存帴鍑哄簱
+
+ public async Task<WebResponseContent> SetEmptyOutbyInToOutAsync(RequestTaskDto request)
+ {
+ WebResponseContent content = new WebResponseContent();
+ var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == request.PalletCode);
+ if (!task.IsNullOrEmpty())
+ {
+ var fromStation = await _stationManagerRepository.QueryFirstAsync(x => x.stationChildCode == request.Position);
+ var toStation = await _stationManagerRepository.QueryFirstAsync(x => x.stationType == 7 && x.productLine == fromStation.productLine && x.stationArea == fromStation.stationArea);
+ if (!toStation.IsNullOrEmpty())
+ {
+ var location = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress && x.AreaId == int.Parse(fromStation.stationArea));
+ task.TargetAddress = toStation.stationLocation;
+ task.NextAddress = toStation.stationChildCode;
+ task.Grade = 3;
+ task.TaskType = (int)TaskOutboundTypeEnum.InToOut;
+ task.TaskState = (int)TaskOutStatusEnum.OutNew;
+
+ location.LocationStatus = (int)LocationEnum.Free;
+
+ await _locationRepository.UpdateDataAsync(location);
+ await BaseDal.UpdateDataAsync(task);
+ return content.OK("鎴愬姛");
+ }
+ else
+ {
+ ConsoleHelper.WriteErrorLine("鍒嗗绌烘鍏ュ簱鏀逛负鐩存帴鍑哄簱:鏈壘鍒板搴旂珯鍙�");
+ content.Error("鏈壘鍒板搴旂珯鍙�");
+ }
+ }
+ else
+ {
+ ConsoleHelper.WriteErrorLine("鍒嗗绌烘鍏ュ簱鏀逛负鐩存帴鍑哄簱:鏈壘鍒颁换鍔�");
+ content.Error("鏈壘鍒颁换鍔�");
+ }
+ return content;
+ }
+
+ #endregion
+
+ #region 鍒嗗绌烘鍑哄簱鏀逛负鐩存帴鍑哄簱
+
+ /// <summary>
+ /// 鍒嗗绌烘鍑哄簱鏀逛负鐩存帴鍑哄簱
+ /// </summary>
+ /// <param name="request"></param>
+ /// <returns></returns>
+ public async Task<WebResponseContent> SetEmptyOutbyInToOutOneAsync(RequestTaskDto request)
+ {
+ WebResponseContent content = new WebResponseContent();
+ var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == request.PalletCode);
+ if (!task.IsNullOrEmpty())
+ {
+ var toStation = await _stationManagerRepository.QueryFirstAsync(x => x.stationChildCode == request.Position);
+ var fromStation = await _stationManagerRepository.QueryFirstAsync(x => x.stationType == 6 && x.productLine == toStation.productLine && x.stationArea == toStation.stationArea);
+ if (!fromStation.IsNullOrEmpty())
+ {
+ //var location = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress && x.AreaId == int.Parse(fromStation.stationArea));
+ task.SourceAddress = toStation.stationLocation;
+ task.CurrentAddress = toStation.stationChildCode;
+ task.Grade = 3;
+ task.TaskType = (int)TaskOutboundTypeEnum.InToOut;
+ task.TaskState = (int)TaskOutStatusEnum.OutNew;
+
+ //location.LocationStatus = (int)LocationEnum.Free;
+
+ //await _locationRepository.UpdateDataAsync(location);
+ await BaseDal.UpdateDataAsync(task);
+ return content.OK("鎴愬姛");
+ }
+ else
+ {
+ ConsoleHelper.WriteErrorLine("鍒嗗绌烘鍑哄簱鏀逛负鐩存帴鍑哄簱:鏈壘鍒板搴旂珯鍙�");
+ content.Error("鏈壘鍒板搴旂珯鍙�");
+ }
+ }
+ else
+ {
+ ConsoleHelper.WriteErrorLine("鍒嗗绌烘鍑哄簱鏀逛负鐩存帴鍑哄簱:鏈壘鍒颁换鍔�");
+ content.Error("鏈壘鍒颁换鍔�");
+ }
+ return content;
+ }
+
+ #endregion
}
\ No newline at end of file
--
Gitblit v1.9.3