From 6d3ea08855337c0cfcc60df2903d3431611c7097 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期六, 13 十二月 2025 17:36:56 +0800
Subject: [PATCH] 优化程序,输送线入库按钮对接
---
项目代码/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs | 124 +++++++++++++++++++++++++++++++----------
1 files changed, 94 insertions(+), 30 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
index f501dc9..c3526ee 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -24,8 +24,10 @@
using System.Linq;
using System.Net.Http.Headers;
using System.Security.Policy;
+using System.Threading.Tasks;
using WIDESEA_DTO.Agv;
using WIDESEA_External.Model;
+using WIDESEAWCS_BasicInfoService;
using WIDESEAWCS_Common;
using WIDESEAWCS_Common.APIEnum;
using WIDESEAWCS_Common.TaskEnum;
@@ -63,6 +65,7 @@
private readonly IApiInfoRepository _apiInfoRepository;
private readonly ILocationInfoRepository _locationInfoRepository;
private readonly ILocationInfoService _locationInfoService;
+ private readonly ILocationStatusChangeRecordService _locationStatusChangeRecordService;
private Dictionary<string, OrderByType> _taskOrderBy = new()
{
@@ -80,7 +83,7 @@
public List<int> TaskRelocationTypes => typeof(TaskTypeEnum).GetEnumIndexList().Where(x => x >= 900 && x < 1000).ToList();
- public TaskService(ITaskRepository BaseDal, IMapper mapper, ICacheService cacheService, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IApiInfoRepository apiInfoRepository,ILocationInfoRepository locationInfoRepository,IUnitOfWorkManage unitOfWorkManage, ILocationInfoService locationInfoService) : base(BaseDal)
+ public TaskService(ITaskRepository BaseDal, IMapper mapper, ICacheService cacheService, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IApiInfoRepository apiInfoRepository,ILocationInfoRepository locationInfoRepository,IUnitOfWorkManage unitOfWorkManage, ILocationInfoService locationInfoService,ILocationStatusChangeRecordService locationStatusChangeRecordService) : base(BaseDal)
{
_mapper = mapper;
_cacheService = cacheService;
@@ -93,6 +96,7 @@
_locationInfoRepository = locationInfoRepository;
_unitOfWorkManage = unitOfWorkManage;
_locationInfoService = locationInfoService;
+ _locationStatusChangeRecordService=locationStatusChangeRecordService;
}
static object lock_taskReceive = new object();
/// <summary>
@@ -156,9 +160,8 @@
BaseDal.AddData(tasks);
_locationInfoRepository.UpdateData(locationInfos);
_unitOfWorkManage.CommitTran();
-
_taskExecuteDetailService.AddTaskExecuteDetail(tasks.Select(x => x.TaskNum).ToList(), "鎺ユ敹WMS浠诲姟");
-
+ _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfos, LocationStatusEnum.InStock, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, tasks.Select(x => x.TaskNum).ToList());
content = tasks.Count > 0 ? content.OK("鎴愬姛!"+(errorMsg.IsNullOrEmpty()? "": errorMsg)) : content.Error("澶辫触");
}
}
@@ -168,46 +171,105 @@
}
return content;
}
- static object lock_containerFlow = new object();
+
/// <summary>
/// 瀹瑰櫒鍏ュ簱鍒涘缓浠诲姟
/// </summary>
/// <returns></returns>
- public WebResponseContent ContainerFlow(ContainerFlowDTO containerFlowDTO, string deviceCode)
+ public WebResponseContent ContainerFlow(ContainerFlowDTO containerFlowDTO, string deviceCode, string stationCode)
{
WebResponseContent content = new WebResponseContent();
try
{
- lock (lock_containerFlow)
+ List<Dt_LocationInfo> locationInfos = _locationInfoRepository.QueryData();
+ Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.PalletCode == containerFlowDTO.ContainerCode);
+ if (locationInfo != null) throw new Exception($"搴撲綅鏂欑鍙穥containerFlowDTO.ContainerCode}宸插瓨鍦�");
+ if (BaseDal.QueryFirst(x => x.PalletCode == containerFlowDTO.ContainerCode && x.TaskType == TaskTypeEnum.Inbound.ObjToInt() && x.TaskState == TaskStatusEnum.CL_Executing.ObjToInt() && x.DeviceCode== deviceCode) != null)
{
- List<Dt_LocationInfo> locationInfos = _locationInfoRepository.QueryData();
- Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x=>x.PalletCode== containerFlowDTO.ContainerCode);
- if (locationInfo != null) throw new Exception($"搴撲綅鏂欑鍙穥containerFlowDTO.ContainerCode}宸插瓨鍦�");
- if (BaseDal.QueryFirst(x=>x.PalletCode==containerFlowDTO.ContainerCode)!=null) throw new Exception($"鏂欑鍙穥containerFlowDTO.ContainerCode}浠诲姟宸插瓨鍦�");
- Dt_LocationInfo? noInLocation = locationInfos.FirstOrDefault(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt());
- if (noInLocation == null) throw new Exception($"鍙敤璐т綅涓嶈冻!");
- Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt() && x.StationDeviceCode == deviceCode);
- //鍒涘缓浠诲姟
- Dt_Task task = new Dt_Task();
- task.PalletCode = containerFlowDTO.ContainerCode;
- task.SourceAddress = containerFlowDTO.SlotCode;
- task.CurrentAddress = containerFlowDTO.SlotCode;
- task.NextAddress = stationManger.StationCode;
- task.TargetAddress = "";
- task.WMSId = "";
- task.TaskType = TaskTypeEnum.Inbound.ObjToInt();
- task.Roadway = noInLocation.RoadwayNo;
- task.DeviceCode = stationManger.StationDeviceCode;
- task.TaskState = TaskStatusEnum.CL_Executing.ObjToInt();
- //娣诲姞浠诲姟
- BaseDal.AddData(task);
- _taskExecuteDetailService.AddTaskExecuteDetail(new List<int>() { task.TaskNum }, "鍒涘缓鍏ュ簱浠诲姟");
- content.OK("鎴愬姛");
+ return content.OK();
}
+ else if(BaseDal.QueryFirst(x => x.PalletCode == containerFlowDTO.ContainerCode) != null)
+ {
+ throw new Exception($"鏂欑鍙穥containerFlowDTO.ContainerCode}浠诲姟宸插瓨鍦�");
+ }
+ Dt_LocationInfo? noInLocation = locationInfos.FirstOrDefault(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt());
+ if (noInLocation == null) throw new Exception($"鍙敤璐т綅涓嶈冻!");
+ Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt() && x.StationDeviceCode == deviceCode);
+ //鍒涘缓浠诲姟
+ Dt_Task task = new Dt_Task();
+ task.PalletCode = containerFlowDTO.ContainerCode;
+ task.SourceAddress = containerFlowDTO.SlotCode;
+ task.CurrentAddress = containerFlowDTO.SlotCode;
+ task.NextAddress = stationManger.StationCode;
+ task.TargetAddress = "";
+ task.WMSId = "";
+ task.TaskType = TaskTypeEnum.Inbound.ObjToInt();
+ task.Roadway = noInLocation.RoadwayNo;
+ task.DeviceCode = stationManger.StationDeviceCode;
+ task.TaskState = TaskStatusEnum.CL_Executing.ObjToInt();
+ //娣诲姞浠诲姟
+ BaseDal.AddData(task);
+ _taskExecuteDetailService.AddTaskExecuteDetail(new List<int>() { task.TaskNum }, "鍒涘缓鍏ュ簱浠诲姟");
+ content.OK("鎴愬姛");
}
catch (Exception ex)
{
content.Error($"閿欒淇℃伅:{ex.Message}");
+ }
+ return content;
+ }
+ /// <summary>
+ /// 鎾澧欏垵濮嬪寲
+ /// </summary>
+ /// <returns></returns>
+ public WebResponseContent InitLight()
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ EPLightContent lightContent = INITIALIZATION();
+ if (lightContent.Result != "0") throw new Exception($"{lightContent.Msg}");
+ content.OK();
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
+ }
+ return content;
+ }
+ /// <summary>
+ /// 缁撴潫浣滀笟
+ /// </summary>
+ /// <returns></returns>
+ public WebResponseContent EndLight()
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ EPLightContent lightContent = ENDWORK();
+ if (lightContent.Result != "0") throw new Exception($"{lightContent.Msg}");
+ content.OK();
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
+ }
+ return content;
+ }
+ /// <summary>
+ /// 鎾澧欎寒鐏�
+ /// </summary>
+ /// <returns></returns>
+ public WebResponseContent SendLight(TaskSendLight taskSendLight)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ EPLightContent pLightContent = new EPLightContent();
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
}
return content;
}
@@ -239,7 +301,7 @@
_locationInfoRepository.UpdateData(locationInfo);
_unitOfWorkManage.CommitTran();
_taskExecuteDetailService.AddTaskExecuteDetail(new List<int>() { task.TaskNum }, $"鍒嗛厤璐т綅{locationInfo.LocationCode}");
-
+ _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, LocationStatusEnum.Free, LocationStatusEnum.Lock, LocationChangeType.InboundAssignLocation, task.TaskNum);
content.OK("鎴愬姛");
}
}
@@ -513,6 +575,7 @@
_locationInfoRepository.UpdateData(locationInfo);
BaseDal.DeleteAndMoveIntoHty(task, App.User?.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
_unitOfWorkManage.CommitTran();
+ _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, LocationStatusEnum.Lock, LocationStatusEnum.Free, LocationChangeType.OutboundCompleted, task.TaskNum);
}
else if(task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍏ュ簱浠诲姟瀹屾垚閫昏緫
{
@@ -548,6 +611,7 @@
_locationInfoRepository.UpdateData(locationInfo);
BaseDal.DeleteAndMoveIntoHty(task, App.User?.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
_unitOfWorkManage.CommitTran();
+ _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, LocationStatusEnum.Lock, LocationStatusEnum.InStock, LocationChangeType.InboundCompleted, task.TaskNum);
}
content.OK("浠诲姟瀹屾垚");
}
--
Gitblit v1.9.3