76 lines
2.8 KiB
C#
76 lines
2.8 KiB
C#
using JSMachine.WMS.App.Dto;
|
|
using JSMachine.WMS.App.Dto.Enum;
|
|
using JSMachine.WMS.App.IService;
|
|
using JSMachine.WMS.App.ServiceImpl;
|
|
using JSMachine.WMS.Business.Common.IService;
|
|
using JSMachine.WMS.Business.RcsCallBack.IService.StaePattern;
|
|
using JSMachine.WMS.Business.SSE;
|
|
using JSMachine.WMS.RPC.RcsRPC.Dto.In;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using static JSMachine.WMS.App.Dto.StorageRackDto;
|
|
|
|
namespace JSMachine.WMS.Business.RcsCallBack.ServiceImpl.StatePattern.PutdownCompleted
|
|
{
|
|
/// <summary>
|
|
/// 存储区(包括中转区)放货完成处理器
|
|
/// </summary>
|
|
public class StockAreaHandler : PutdownCompletedStateHandler
|
|
{
|
|
public StockAreaHandler(
|
|
IStorageRackService storageRackService,
|
|
IAGVTaskService agvTaskService,
|
|
IElevatorPlcQueueService elevatorPlcQueueService,
|
|
IElevatorCountService elevatorCountService,
|
|
IERPTaskService erpTaskService) :
|
|
base(storageRackService, agvTaskService, elevatorPlcQueueService, elevatorCountService, erpTaskService)
|
|
{
|
|
}
|
|
|
|
public async override Task<bool> HandleAsync(AgvExcutionInfo agvExcutionInfo, AGVTaskDto agvTask, StorageRackDto destWarehouse)
|
|
{
|
|
//1.将物料绑定到目标库位
|
|
//2.解锁目标库位
|
|
//3.更改agv任务为完成
|
|
|
|
destWarehouse.BingdingMaterial(new MateriaInfo
|
|
{
|
|
BarCode = agvTask.BarCode,
|
|
MateriaBatch = agvTask.MateriaBatch,
|
|
MateriaCode = agvTask.MateriaCode,
|
|
MateriaName = agvTask.MateriaName,
|
|
MateriaNum = agvTask.MateriaNum.ToString(),
|
|
MateriaType = agvTask.MateriaType,
|
|
OrderNo = agvTask.OrderNo
|
|
});
|
|
destWarehouse.IsLock = false;
|
|
|
|
await _storageRackService.EditSingal(destWarehouse);
|
|
|
|
await CompleteTask(agvTask);
|
|
|
|
//更新erp任务为完成状态
|
|
if (agvTask.TaskType == TaskTypeEnum.PdaIn ||
|
|
agvTask.TaskType == TaskTypeEnum.TailIn ||
|
|
agvTask.TaskType == TaskTypeEnum.TransferStockIn)
|
|
{
|
|
ERPTaskDto erpTask = await _erpTaskService.GetSingalByExpression(p => p.Id == agvTask.ErpTaskId);
|
|
if (erpTask != null)
|
|
{
|
|
erpTask.TaskStatus = TaskStatusEnum.Completed;
|
|
erpTask.TaskMsg = "";
|
|
await _erpTaskService.EditSingalWithSpecificCols(erpTask, ["TaskStatus", "TaskMsg"]);
|
|
}
|
|
}
|
|
|
|
//发送广播通知前端网站刷新页面
|
|
SseEngine.BrodCast(agvTask.Floor.ToString());
|
|
|
|
return true;
|
|
}
|
|
}
|
|
}
|