first commit
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
using JSMachine.WMS.App.Dto;
|
||||
using JSMachine.WMS.App.Dto.Enum;
|
||||
using JSMachine.WMS.App.IService;
|
||||
using JSMachine.WMS.Business.Common.IService;
|
||||
using JSMachine.WMS.Business.Common.Models;
|
||||
using JSMachine.WMS.Business.StockIn.IService;
|
||||
using JSMachine.WMS.Business.StockIn.ServiceImpl.Strategy;
|
||||
using JSMachine.WMS.Common.Cache;
|
||||
using JSMachine.WMS.Infrastructure;
|
||||
using JSMachine.WMS.Infrastructure.Helper;
|
||||
using JSMachine.WMS.Job.Enum;
|
||||
using JSMachine.WMS.Job.JobAttributes;
|
||||
using Newtonsoft.Json;
|
||||
using Quartz;
|
||||
|
||||
namespace JSMachine.WMS.Job.Job
|
||||
{
|
||||
[DisallowConcurrentExecution]
|
||||
[PersistJobDataAfterExecution]
|
||||
[Job(Name = nameof(StockInSecondFloorJob)
|
||||
, Group = nameof(StockInSecondFloorJob) + "_Group"
|
||||
, Description = "入库二楼任务生成作业"
|
||||
, ScheduleType = ScheduleType.Simple
|
||||
, IntervalMilliSeconds = 2000
|
||||
, RepeatCount = 0
|
||||
, StartTimeStr = null)]
|
||||
public class StockInSecondFloorJob : IJob
|
||||
{
|
||||
private static readonly ICommonService CommonService = GlobalServericeProvidor.GetService<ICommonService>();
|
||||
private static readonly IAGVTaskService AgvTaskService = GlobalServericeProvidor.GetService<IAGVTaskService>();
|
||||
private static readonly IStorageRackService StorageRackService = GlobalServericeProvidor.GetService<IStorageRackService>();
|
||||
private static readonly IERPTaskService ErpTaskService = GlobalServericeProvidor.GetService<IERPTaskService>();
|
||||
private static readonly IElevatorPlcQueueService ElevatorPlcQueueService = GlobalServericeProvidor.GetService<IElevatorPlcQueueService>();
|
||||
|
||||
public async Task Execute(IJobExecutionContext context)
|
||||
{
|
||||
if (StockInSecondFloorCache.StockInSecondFloorQue.TryDequeue(out AllowPickUpInfo allowPickUpInfo))
|
||||
{
|
||||
//二楼提升机出口可以取货,生成二楼agv任务
|
||||
IStockInStrategy stockInStrategy = StrategyFactory.CreateStockInStrategy(
|
||||
TransportEnum.Elevator,
|
||||
FloorEnum.SecondFloor,
|
||||
allowPickUpInfo.AgvTask.MateriaBatch);
|
||||
|
||||
StorageRackDto destWarehouseSecondFloor = await stockInStrategy.CalCulateWarehouse();
|
||||
if (destWarehouseSecondFloor == null)
|
||||
{
|
||||
LogHelper.Warn($"二楼暂无可用的库位,AgvTask {allowPickUpInfo.AgvTask.Id} 对应的二楼任务暂无法生成");
|
||||
//队列再写回去,没有库位的时候队列再写回去,此时整理出空余库位后任务会继续生成(可考虑给pda弹窗报警)
|
||||
StockInSecondFloorCache.StockInSecondFloorQue.Enqueue(allowPickUpInfo);
|
||||
return;
|
||||
}
|
||||
|
||||
ERPTaskDto erpTask = await ErpTaskService.GetSingalByExpression(p => p.Id == allowPickUpInfo.AgvTask.ErpTaskId);
|
||||
|
||||
allowPickUpInfo.StartWarehouseSecondFloor.BingdingMaterial(new App.Dto.StorageRackDto.MateriaInfo
|
||||
{
|
||||
BarCode = allowPickUpInfo.AgvTask.BarCode,
|
||||
MateriaBatch = allowPickUpInfo.AgvTask.MateriaBatch,
|
||||
MateriaName = allowPickUpInfo.AgvTask.MateriaName,
|
||||
MateriaType = allowPickUpInfo.AgvTask.MateriaType,
|
||||
MateriaCode = allowPickUpInfo.AgvTask.MateriaCode,
|
||||
MateriaNum = allowPickUpInfo.AgvTask.MateriaNum.ToString(),
|
||||
OrderNo = allowPickUpInfo.AgvTask.OrderNo
|
||||
});
|
||||
|
||||
await CommonService.CreateAndInsertAgvTask(new AgvTaskCreationParam()
|
||||
{
|
||||
StartPosition = allowPickUpInfo.StartWarehouseSecondFloor,
|
||||
EndPosition = destWarehouseSecondFloor,
|
||||
ErpTaskId = erpTask.Id,
|
||||
TaskType = destWarehouseSecondFloor.Transport == TransportEnum.NormalArea ? erpTask.TaskType : TaskTypeEnum.TransferStockIn,
|
||||
ErpUploadStatus = (erpTask.TaskType == TaskTypeEnum.TailIn || destWarehouseSecondFloor.Transport != TransportEnum.NormalArea) ?
|
||||
ErpUploadStatusEnum.Unnecessary : ErpUploadStatusEnum.WaittingToUpload
|
||||
});
|
||||
|
||||
await ElevatorPlcQueueService.DeleteById(allowPickUpInfo.ElevatorPlcQueue.Id);
|
||||
LogHelper.Info($"入库任务已生成,提升机队列被删除,队列原始信息 {JsonConvert.SerializeObject(allowPickUpInfo.ElevatorPlcQueue)}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user