wcs_server_kate_suzhou/WcsMain/ApiServe/Service/WmsService/ConveyService.cs
whm 1986f6dc06 更新内容:
1.新增接口,取消wms任务
2.更改wms最大任务数量26
3.根据PLC提供的数量分配前后区都有任务的箱子的去向
4.更改拣选时电子标签为常量
2024-10-14 14:04:36 +08:00

119 lines
4.3 KiB
C#

using System.Configuration;
using WcsMain.ApiServe.Controllers.Dto.WMSEntity;
using WcsMain.ApiServe.Controllers.Dto.WMSEntity.Convey;
using WcsMain.ApiServe.Factory;
using WcsMain.Common;
using WcsMain.DataBase.Dao;
using WcsMain.DataBase.TableEntity;
using WcsMain.DataService;
using WcsMain.Enum.Convey;
using WcsMain.EquipOperation.Convey;
using WcsMain.WcsAttribute.AutoFacAttribute;
namespace WcsMain.ApiServe.Service.WmsService;
[Service]
public class ConveyService(DataBaseData dataBaseData, AppConveyTaskDao conveyTaskDao, ConveyOperation conveyOperation)
{
/// <summary>
/// 接收WMS发送过来的输送线任务
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public WmsApiResponse GetConveyTask(List<GetConveyTaskRequest> request)
{
foreach(var item in request)
{
if (string.IsNullOrEmpty(item.VehicleNo) || item.TaskType == default || item.Locations == default || item.Locations.Length < 1)
{
return WmsApiResponseFactory.RequestErr("存在必填项未填");
}
if (item.TaskGroup == default)
{
item.TaskGroup = dataBaseData.GetNewUUID2(); // 当任务组为空时生成一个新的
}
}
List<AppConveyTask> conveyTasks = [];
DateTime now = DateTime.Now;
foreach (var item in request)
{
if (item.Locations == default) continue;
foreach (var location in item.Locations)
{
conveyTasks.Add(new AppConveyTask
{
TaskId = dataBaseData.GetNewUUID(),
TaskGroup = item.TaskGroup,
VehicleNo = item.VehicleNo,
TaskType = item.TaskType,
TaskStatus = (int)ConveyTaskStatusEnum.create,
Location = location,
CreatePerson = StaticData.StaticString.WMS,
CreateTime = now,
});
}
}
var insertResult = conveyTaskDao.Insert(conveyTasks);
return insertResult > 0 ? WmsApiResponseFactory.Success() : WmsApiResponseFactory.DataBaseErr();
}
/// <summary>
/// 释放输送线任务
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public WmsApiResponse DisposeVehicle(DisposeVehicleRequest request)
{
if(string.IsNullOrEmpty(request.Location)) return WmsApiResponseFactory.RequestErr("存在必填项未填");
var writeResult = conveyOperation.AllowPickStandGo(request.Location, 2);
if(string.IsNullOrEmpty(writeResult)) return WmsApiResponseFactory.Success();
return WmsApiResponseFactory.Fail(writeResult);
}
/// <summary>
/// 取消wms的箱式线任务
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public WmsApiResponse CancelConveyTask(List<GetConveyTaskRequest> request)
{
try
{
foreach (var item in request)
{
if (string.IsNullOrEmpty(item.VehicleNo) || item.TaskType == default || item.Locations == default || item.Locations.Length < 1)
{
return WmsApiResponseFactory.RequestErr("存在必填项未填");
}
//遍历所有点位
foreach (var location in item.Locations)
{
//生成删除的对象
var taskToDelete = new AppConveyTask
{
VehicleNo = item.VehicleNo,
Location = location
};
int deleteResult = conveyTaskDao.VehicledDelete(taskToDelete);
if (deleteResult > 0)
{
return WmsApiResponseFactory.Success("删除成功");
}
else
{
return WmsApiResponseFactory.DataBaseErr("删除失败");
}
}
}
}
catch (Exception ex)
{
ConsoleLog.Error(ex.ToString());
return WmsApiResponseFactory.Fail(ex);
}
return WmsApiResponseFactory.Success("没有找到匹配的记录");
}
}