From fc9cba5f058089887aa7061d2e6b4006b9e04a9a Mon Sep 17 00:00:00 2001
From: 陈勇 <竞男@ASUNA>
Date: 星期二, 10 三月 2026 09:46:43 +0800
Subject: [PATCH] 同步
---
项目代码/WMS/WMSServer/WIDESEA_StorageTaskServices/AutoTask/AspNetCoreSchedule.cs | 327 +++++++++++++++++++++++++++++++++++-------------------
1 files changed, 211 insertions(+), 116 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageTaskServices/AutoTask/AspNetCoreSchedule.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageTaskServices/AutoTask/AspNetCoreSchedule.cs"
index 9463982..8cde817 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageTaskServices/AutoTask/AspNetCoreSchedule.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageTaskServices/AutoTask/AspNetCoreSchedule.cs"
@@ -1,7 +1,9 @@
锘縰sing Masuit.Tools;
+using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.Const;
using WIDESEA_DTO.WMS;
using WIDESEA_IServices;
@@ -13,36 +15,27 @@
{
public class MyBackgroundService : IHostedService, IDisposable
{
- private readonly ILogger<MyBackgroundService> _logger;
- private readonly IDt_PalletStockInfoRepository _palletStockInfoRepository;
- private readonly IDt_AreaInfoRepository _areaInfoRepository; //鍖哄煙
- private readonly IDt_TaskRepository _taskRepository;
- private readonly IDt_StationManagerRepository _stationManagerRepository;
- private readonly ISys_ConfigService _configService;
- private readonly ILocationInfoRepository _locationRepository;
- private readonly IVV_StockInfoRepository _VVStockInfoRepository;
- private readonly IUnitOfWorkManage _unitOfWorkManage;
- private readonly IDt_MESLockInfoRepository _MESLockInfoRepository;
+ private ILogger<MyBackgroundService> _logger;
+ private IDt_PalletStockInfoRepository _palletStockInfoRepository;
+ private IDt_AreaInfoRepository _areaInfoRepository; //鍖哄煙
+ private IDt_TaskRepository _taskRepository;
+ private IDt_StationManagerRepository _stationManagerRepository;
+ private ISys_ConfigService _configService;
+ private ILocationInfoRepository _locationRepository;
+ private IVV_StockInfoRepository _VVStockInfoRepository;
+ private IUnitOfWorkManage _unitOfWorkManage;
+ private IDt_MESLockInfoRepository _MESLockInfoRepository;
private Timer _timer;
- public MyBackgroundService(ILogger<MyBackgroundService> logger, ILocationInfoRepository locationRepository, IDt_AreaInfoRepository areaInfoRepository, IDt_TaskRepository taskRepository, IDt_StationManagerRepository stationManagerRepository, ISys_ConfigService configService, IDt_PalletStockInfoRepository palletStockInfoRepository, IVV_StockInfoRepository VV_StockInfoRepository, IUnitOfWorkManage unitOfWorkManage, IDt_MESLockInfoRepository MESLockInfoRepository)
+ public MyBackgroundService(/*ILogger<MyBackgroundService> logger, ILocationInfoRepository locationRepository, IDt_AreaInfoRepository areaInfoRepository, IDt_TaskRepository taskRepository, IDt_StationManagerRepository stationManagerRepository, ISys_ConfigService configService, IDt_PalletStockInfoRepository palletStockInfoRepository, IVV_StockInfoRepository VV_StockInfoRepository, IUnitOfWorkManage unitOfWorkManage, IDt_MESLockInfoRepository MESLockInfoRepository*/)
{
- _logger = logger;
- _locationRepository = locationRepository;
- _areaInfoRepository = areaInfoRepository;
- _taskRepository = taskRepository;
- _stationManagerRepository = stationManagerRepository;
- _configService = configService;
- _palletStockInfoRepository = palletStockInfoRepository;
- _VVStockInfoRepository = VV_StockInfoRepository;
- _unitOfWorkManage = unitOfWorkManage;
- _MESLockInfoRepository = MESLockInfoRepository;
+
}
public Task StartAsync(CancellationToken cancellationToken)
{
- _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(5));
+ //_timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(15));
return Task.CompletedTask;
}
@@ -50,6 +43,17 @@
{
try
{
+ IServiceScope scope = App.RootServices.CreateScope();
+ _logger = scope.ServiceProvider.GetService<ILogger<MyBackgroundService>>();
+ _locationRepository = scope.ServiceProvider.GetService<ILocationInfoRepository>();
+ _areaInfoRepository = scope.ServiceProvider.GetService<IDt_AreaInfoRepository>();
+ _taskRepository = scope.ServiceProvider.GetService<IDt_TaskRepository>();
+ _stationManagerRepository = scope.ServiceProvider.GetService<IDt_StationManagerRepository>();
+ _configService = scope.ServiceProvider.GetService<ISys_ConfigService>();
+ _palletStockInfoRepository = scope.ServiceProvider.GetService<IDt_PalletStockInfoRepository>();
+ _VVStockInfoRepository = scope.ServiceProvider.GetService<IVV_StockInfoRepository>();
+ _unitOfWorkManage = scope.ServiceProvider.GetService<IUnitOfWorkManage>();
+ _MESLockInfoRepository = scope.ServiceProvider.GetService<IDt_MESLockInfoRepository>();
//var area = _areaInfoRepository.QueryFirst(x => x.AreaCode == "GWSC1");
//if (area == null) { return; }
@@ -69,107 +73,198 @@
if (lockInfo.Where(x => x.LockStatue == 1).Count() > 10) return;
+ if (lockInfo.Count == 0) return;
- var lockCar = lockInfo.Where(x => x.LockStatue == 0).First();
-
- foreach (var item in lockInfo)
+ var lockCar = lockInfo.Where(x => x.LockStatue == 0).FirstOrDefault();
+ if (lockCar == null) return;
+ var hasTask = _taskRepository.QueryFirst(x => x.PalletCode == lockCar.CarBodyInfo.PalletCode);
+ if (hasTask != null)
{
- var hasTask = _taskRepository.QueryFirst(x => x.PalletCode == item.CarBodyInfo.PalletCode);
- if (hasTask != null)
- {
- Console.WriteLine("宸插瓨鍦ㄥ嚭搴撲换鍔�");
- continue;
- }
-
- List<Dt_StationManager> stationLists = null;
- if (item.CarBodyInfo.CarType == 1)
- {
- stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == item.TCLine && x.stationType == 2 && x.stationStatus == "1" && x.stationArea == "3");
- }
- else if (item.CarBodyInfo.CarType == 2)
- {
- stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == item.TCLine && x.stationType == 2 && x.stationStatus == "1" && x.stationArea == "4");
- }
- //else if (item.CarBodyInfo.CarType == 3)
- //{
- // stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == item.TCLine && x.stationType == 7 && x.stationStatus == "1" && x.stationArea == "3");
- //}
-
- var stock = _VVStockInfoRepository.QueryFirst(x => x.carBodyID == item.carBodyID);
- var lockStock = _palletStockInfoRepository.QueryFirst(x => x.carBodyID == item.carBodyID);
- var location = _locationRepository.QueryFirst(x => x.LocationCode == stock.LocationCode);
- location.LocationStatus = (int)LocationEnum.InStockDisable;
- item.LockStatue = 1;
- lockStock.TaskStatus = 1;
- if (stationLists == null || stationLists.Count == 0) throw new Exception("鍑哄簱绔欏彴鏈厤缃垨鏈惎鐢�");
-
- Dt_StationManager Outstation = null;
-
- //if (stationLists.Count > 1)
- //{
- // var Outtask = BaseDal.QueryData(x => x.Roadway == stationLists.FirstOrDefault().Roadway && x.TaskType == (int)TaskTypeEnum.Outbound).OrderByDescending(x => x.CreateDate).FirstOrDefault();
- // if (Outtask != null) Outstation = stationLists.Where(x => x.stationChildCode != task.NextAddress && x.stationChildCode != Outtask.CurrentAddress).FirstOrDefault();
- // else Outstation = stationLists.FirstOrDefault();
- //}
- //else
- //{
- Outstation = stationLists.FirstOrDefault();
- //}
- //var stationInfo = stationInfos.FirstOrDefault();
-
- // 鍒涘缓骞舵坊鍔犱换鍔″埌鏁版嵁搴�
- hasTask = new Dt_Task
- {
- Grade = 1,
- Roadway = Outstation.Roadway,
- TargetAddress = "RB043",
- Dispatchertime = DateTime.Now,
- NextAddress = Outstation.stationChildCode,
- OrderNo = null,
- PalletCode = stock.PalletCode,
- PVI = stock.PVI,
- SourceAddress = stock.LocationCode,
- CurrentAddress = stock.LocationCode,
- TaskState = (int)TaskOutStatusEnum.OutNew,
- TaskType = (int)TaskOutboundTypeEnum.Outbound,
- TaskNum = _taskRepository.GetTaskNo().Result,
- Creater = "System",
- CreateDate = DateTime.Now,
- TaskId = 0,
- };
-
- // 鍒涘缓浠诲姟浼犺緭鐢ㄧ殑DTO瀵硅薄
- var taskDTO = CreateTaskDTO(hasTask);
-
- // 鑾峰彇WMS IP鍦板潃鐢ㄤ簬鍙戦�佷换鍔¤姹�
- var wmsIpAddress = GetWCSIpReceiveTask();
- if (wmsIpAddress == null)
- {
- throw new InvalidOperationException("WMS IP 鏈厤缃�");
- }
-
- var tasks = new List<WMSTaskDTO>() { taskDTO };
- // 鍙戦�佷换鍔¤姹傚埌WMS
- var result = HttpHelper.PostAsync(wmsIpAddress, tasks.ToJsonString()).Result;
- WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
- if (content.Status)
- {
- _unitOfWorkManage.BeginTran();
- // 娣诲姞浠诲姟鍒版暟鎹簱
- _taskRepository.AddData(hasTask);
- // 鏇存柊搴撲綅浣嶇疆鐘舵�佷负涓嶅彲鐢�
- _locationRepository.UpdateData(location);
- _MESLockInfoRepository.UpdateData(item);
- _palletStockInfoRepository.UpdateData(lockStock);
- _unitOfWorkManage.CommitTran();
- }
+ Console.WriteLine("宸插瓨鍦ㄥ嚭搴撲换鍔�");
+ return;
}
+
+ List<Dt_StationManager> stationLists = null;
+ if (lockCar.CarBodyInfo.CarType == 1)
+ {
+ stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == lockCar.TCLine && x.stationType == 2 && x.stationStatus == "1" && x.stationArea == "3");
+ }
+ else if (lockCar.CarBodyInfo.CarType == 2)
+ {
+ stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == lockCar.TCLine && x.stationType == 2 && x.stationStatus == "1" && x.stationArea == "4");
+ }
+ //else if (item.CarBodyInfo.CarType == 3)
+ //{
+ // stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == item.TCLine && x.stationType == 7 && x.stationStatus == "1" && x.stationArea == "3");
+ //}
+
+ var stock = _VVStockInfoRepository.QueryFirst(x => x.carBodyID == lockCar.carBodyID);
+ var lockStock = _palletStockInfoRepository.QueryFirst(x => x.carBodyID == lockCar.carBodyID);
+ var location = _locationRepository.QueryFirst(x => x.LocationCode == stock.LocationCode);
+ location.LocationStatus = (int)LocationEnum.InStockDisable;
+ lockCar.LockStatue = 1;
+ lockStock.TaskStatus = 1;
+ if (stationLists == null || stationLists.Count == 0) throw new Exception("鍑哄簱绔欏彴鏈厤缃垨鏈惎鐢�");
+
+ Dt_StationManager Outstation = null;
+
+ //if (stationLists.Count > 1)
+ //{
+ // var Outtask = BaseDal.QueryData(x => x.Roadway == stationLists.FirstOrDefault().Roadway && x.TaskType == (int)TaskTypeEnum.Outbound).OrderByDescending(x => x.CreateDate).FirstOrDefault();
+ // if (Outtask != null) Outstation = stationLists.Where(x => x.stationChildCode != task.NextAddress && x.stationChildCode != Outtask.CurrentAddress).FirstOrDefault();
+ // else Outstation = stationLists.FirstOrDefault();
+ //}
+ //else
+ //{
+ Outstation = stationLists.FirstOrDefault();
+ //}
+ //var stationInfo = stationInfos.FirstOrDefault();
+
+ // 鍒涘缓骞舵坊鍔犱换鍔″埌鏁版嵁搴�
+ hasTask = new Dt_Task
+ {
+ Grade = 1,
+ Roadway = Outstation.Roadway,
+ TargetAddress = "RB043",
+ Dispatchertime = DateTime.Now,
+ NextAddress = Outstation.stationChildCode,
+ OrderNo = null,
+ PalletCode = stock.PalletCode,
+ PVI = stock.PVI,
+ SourceAddress = stock.LocationCode,
+ CurrentAddress = stock.LocationCode,
+ TaskState = (int)TaskOutStatusEnum.OutNew,
+ TaskType = (int)TaskOutboundTypeEnum.Outbound,
+ TaskNum = _taskRepository.GetTaskNo().Result,
+ Creater = "System",
+ CreateDate = DateTime.Now,
+ TaskId = 0,
+ };
+
+ // 鍒涘缓浠诲姟浼犺緭鐢ㄧ殑DTO瀵硅薄
+ var taskDTO = CreateTaskDTO(hasTask);
+
+ // 鑾峰彇WMS IP鍦板潃鐢ㄤ簬鍙戦�佷换鍔¤姹�
+ var wmsIpAddress = GetWCSIpReceiveTask();
+ if (wmsIpAddress == null)
+ {
+ throw new InvalidOperationException("WMS IP 鏈厤缃�");
+ }
+
+ var tasks = new List<WMSTaskDTO>() { taskDTO };
+ // 鍙戦�佷换鍔¤姹傚埌WMS
+ var result = HttpHelper.PostAsync(wmsIpAddress, tasks.ToJsonString()).Result;
+ WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+ if (content.Status)
+ {
+ _unitOfWorkManage.BeginTran();
+ // 娣诲姞浠诲姟鍒版暟鎹簱
+ _taskRepository.AddData(hasTask);
+ // 鏇存柊搴撲綅浣嶇疆鐘舵�佷负涓嶅彲鐢�
+ _locationRepository.UpdateData(location);
+ _MESLockInfoRepository.UpdateData(lockCar);
+ _palletStockInfoRepository.UpdateData(lockStock);
+ _unitOfWorkManage.CommitTran();
+ }
+
+ //foreach (var item in lockInfo)
+ //{
+ // var hasTask = _taskRepository.QueryFirst(x => x.PalletCode == item.CarBodyInfo.PalletCode);
+ // if (hasTask != null)
+ // {
+ // Console.WriteLine("宸插瓨鍦ㄥ嚭搴撲换鍔�");
+ // continue;
+ // }
+
+ // List<Dt_StationManager> stationLists = null;
+ // if (item.CarBodyInfo.CarType == 1)
+ // {
+ // stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == item.TCLine && x.stationType == 2 && x.stationStatus == "1" && x.stationArea == "3");
+ // }
+ // else if (item.CarBodyInfo.CarType == 2)
+ // {
+ // stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == item.TCLine && x.stationType == 2 && x.stationStatus == "1" && x.stationArea == "4");
+ // }
+ // //else if (item.CarBodyInfo.CarType == 3)
+ // //{
+ // // stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == item.TCLine && x.stationType == 7 && x.stationStatus == "1" && x.stationArea == "3");
+ // //}
+
+ // var stock = _VVStockInfoRepository.QueryFirst(x => x.carBodyID == item.carBodyID);
+ // var lockStock = _palletStockInfoRepository.QueryFirst(x => x.carBodyID == item.carBodyID);
+ // var location = _locationRepository.QueryFirst(x => x.LocationCode == stock.LocationCode);
+ // location.LocationStatus = (int)LocationEnum.InStockDisable;
+ // item.LockStatue = 1;
+ // lockStock.TaskStatus = 1;
+ // if (stationLists == null || stationLists.Count == 0) throw new Exception("鍑哄簱绔欏彴鏈厤缃垨鏈惎鐢�");
+
+ // Dt_StationManager Outstation = null;
+
+ // //if (stationLists.Count > 1)
+ // //{
+ // // var Outtask = BaseDal.QueryData(x => x.Roadway == stationLists.FirstOrDefault().Roadway && x.TaskType == (int)TaskTypeEnum.Outbound).OrderByDescending(x => x.CreateDate).FirstOrDefault();
+ // // if (Outtask != null) Outstation = stationLists.Where(x => x.stationChildCode != task.NextAddress && x.stationChildCode != Outtask.CurrentAddress).FirstOrDefault();
+ // // else Outstation = stationLists.FirstOrDefault();
+ // //}
+ // //else
+ // //{
+ // Outstation = stationLists.FirstOrDefault();
+ // //}
+ // //var stationInfo = stationInfos.FirstOrDefault();
+
+ // // 鍒涘缓骞舵坊鍔犱换鍔″埌鏁版嵁搴�
+ // hasTask = new Dt_Task
+ // {
+ // Grade = 1,
+ // Roadway = Outstation.Roadway,
+ // TargetAddress = "RB043",
+ // Dispatchertime = DateTime.Now,
+ // NextAddress = Outstation.stationChildCode,
+ // OrderNo = null,
+ // PalletCode = stock.PalletCode,
+ // PVI = stock.PVI,
+ // SourceAddress = stock.LocationCode,
+ // CurrentAddress = stock.LocationCode,
+ // TaskState = (int)TaskOutStatusEnum.OutNew,
+ // TaskType = (int)TaskOutboundTypeEnum.Outbound,
+ // TaskNum = _taskRepository.GetTaskNo().Result,
+ // Creater = "System",
+ // CreateDate = DateTime.Now,
+ // TaskId = 0,
+ // };
+
+ // // 鍒涘缓浠诲姟浼犺緭鐢ㄧ殑DTO瀵硅薄
+ // var taskDTO = CreateTaskDTO(hasTask);
+
+ // // 鑾峰彇WMS IP鍦板潃鐢ㄤ簬鍙戦�佷换鍔¤姹�
+ // var wmsIpAddress = GetWCSIpReceiveTask();
+ // if (wmsIpAddress == null)
+ // {
+ // throw new InvalidOperationException("WMS IP 鏈厤缃�");
+ // }
+
+ // var tasks = new List<WMSTaskDTO>() { taskDTO };
+ // // 鍙戦�佷换鍔¤姹傚埌WMS
+ // var result = HttpHelper.PostAsync(wmsIpAddress, tasks.ToJsonString()).Result;
+ // WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+ // if (content.Status)
+ // {
+ // _unitOfWorkManage.BeginTran();
+ // // 娣诲姞浠诲姟鍒版暟鎹簱
+ // _taskRepository.AddData(hasTask);
+ // // 鏇存柊搴撲綅浣嶇疆鐘舵�佷负涓嶅彲鐢�
+ // _locationRepository.UpdateData(location);
+ // _MESLockInfoRepository.UpdateData(item);
+ // _palletStockInfoRepository.UpdateData(lockStock);
+ // _unitOfWorkManage.CommitTran();
+ // }
+ //}
}
catch (Exception ex)
{
- ConsoleHelper.WriteErrorLine($"锛岄敊璇俊鎭細" + ex.Message);
+ ConsoleHelper.WriteErrorLine($"鎷夊姩閿佽溅鍑鸿溅閿欒淇℃伅锛�" + ex.Message);
}
- ConsoleHelper.WriteSuccessLine($"锛�" + DateTime.Now.ToString());
+ ConsoleHelper.WriteSuccessLine($"鎷夊姩閿佽溅锛�" + DateTime.Now.ToString());
}
public Task StopAsync(CancellationToken cancellationToken)
--
Gitblit v1.9.3