wcs_server_kate_suzhou/WcsMain/ApiServe/Service/WcsService/WmsTaskService.cs

137 lines
5.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using DataCheck;
using WcsMain.ApiServe.Controllers.Dto;
using WcsMain.ApiServe.Controllers.Dto.WcsDto.WmsTask;
using WcsMain.ApiServe.Controllers.Dto.WMSEntity.WmsTask;
using WcsMain.ApiServe.Factory;
using WcsMain.Business.CommonAction;
using WcsMain.DataBase.Dao;
using WcsMain.DataBase.TableEntity;
using WcsMain.DataService;
using WcsMain.Enum.TaskEnum;
using WcsMain.StaticData;
using WcsMain.WcsAttribute.AutoFacAttribute;
namespace WcsMain.ApiServe.Service.WcsService;
[Service]
public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDao, DataBaseData dataBaseData)
{
private readonly DataBaseData _dataBaseData = dataBaseData;
private readonly WmsTaskAction _wmsTaskAction = wmsTaskAction;
private readonly AppWmsTaskDao _wmsTaskDao = wmsTaskDao;
/// <summary>
/// 查询Wms 任务表
/// </summary>
/// <returns></returns>
public WcsApiResponse<List<AppWmsTask>> GetWmsTask()
{
List<AppWmsTask>? wmsTasks = _wmsTaskDao.SelectToWeb();
if(wmsTasks == default)
{
return WcsApiResponseFactory.DataBaseErr<List<AppWmsTask>>();
}
return WcsApiResponseFactory.Success(wmsTasks, "查询成功");
}
/// <summary>
/// 分页查询 Wms 任务表
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public WcsApiResponse<int, List<AppWmsTask>> GetWmsTaskWithPage(GetWmsTaskWithPageRequest request)
{
(List<AppWmsTask>? wmsTasks, int totalRows) = _wmsTaskDao.SelectPage(request);
if(wmsTasks == default)
{
return WcsApiResponseFactory.DataBaseErr<int, List<AppWmsTask>>();
}
return WcsApiResponseFactory.Success(totalRows, wmsTasks);
}
/// <summary>
/// Wcs 前端发来的任务
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public WcsApiResponse GetStackerTask(SetWmsTask request)
{
request.TaskId = _dataBaseData.GetNewUUID();
bool checkData = CheckData.CheckDataRules(request);
if (!checkData)
{
return WcsApiResponseFactory.RequestErr();
}
/* 插入库存信息 */ // ---- 库存由WMS管理数据库表也无需操作
AppWmsTask wmsTask = new()
{
TaskId = request.TaskId,
TaskType = request.TaskType,
TaskStatus = (int)WmsTaskStatusEnum.create,
Priority = request.Priority ?? 0,
Origin = request.Origin,
MidPoint = request.Midpoint,
Destination = request.Destination,
VehicleNo = request.VehicleNo,
VehicleSize = request.VehicleSize ?? -1,
Weight = request.Weight ?? -1,
CreateTime = DateTime.Now,
ModifyTime = DateTime.Now,
CreatePerson = StaticString.WCS,
};
/* 插入任务数据 */
//int insertRows = _wmsTaskDao.Insert(wmsTasks.ToArray()); // ---- 直接插入任务数据
int insertRows = _wmsTaskDao.InsertTaskAndMarkErr(wmsTask); // ---- 先清除这个料箱之前未作的任务,然后插入新数据
if (insertRows > 0)
{
return WcsApiResponseFactory.Success($"任务创建成功,任务号:{request.TaskId}");
}
return WcsApiResponseFactory.Fail("数据插入失败,请稍后重试或者联系我们");
}
/// <summary>
/// 变更任务状态
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public WcsApiResponse UpdateStackerTaskStatus(UpdateStackerTaskStatusRequest request)
{
bool checkData = CheckData.CheckDataRules(request);
if (!checkData)
{
return WcsApiResponseFactory.RequestErr();
}
/* 校验任务是否存在 */
var tasks = _wmsTaskDao.Select(new AppWmsTask { TaskId = request.TaskId });
if (tasks == default)
{
// 查询失败
return WcsApiResponseFactory.DataBaseErr();
}
if (tasks.Count == 0)
{
// 任务不存在
return WcsApiResponseFactory.Fail($"任务不存在,任务号:{request.TaskId}");
}
int? status = request.TaskStatus;
switch (status)
{
case 0:
string resetErrText = _wmsTaskAction.ResetWmsTaskStatus(request.TaskId, request.Destination, StaticString.WCS); // 重置任务
return string.IsNullOrEmpty(resetErrText) ? WcsApiResponseFactory.Success() : WcsApiResponseFactory.Fail(resetErrText);
case 3:
string completeErrText = _wmsTaskAction.CompleteWmsTaskStatus(request.TaskId, StaticString.WCS); // 完成任务
return string.IsNullOrEmpty(completeErrText) ? WcsApiResponseFactory.Success() : WcsApiResponseFactory.Fail(completeErrText);
case 999:
string deleteErrText = _wmsTaskAction.DeleteWmsTaskStatus(request.TaskId, StaticString.WCS); // 删除任务
return string.IsNullOrEmpty(deleteErrText) ? WcsApiResponseFactory.Success() : WcsApiResponseFactory.Fail(deleteErrText);
default:
return WcsApiResponseFactory.Fail($"任务状态不支持:任务状态:{request.TaskStatus}");
}
}
}