Files
ww-jst/wmsjst/JSMachine.WMS.Business/RcsCallBack/ServiceImpl/StatePattern/PutdownCompleted/StockAreaHandler.cs
T
2026-09-02 16:31:50 +08:00

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;
}
}
}