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.Stacker;
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;
///
/// 查询Wms 任务表
///
///
public WcsApiResponse> GetWmsTask()
{
List? wmsTasks = _wmsTaskDao.SelectToWeb();
if(wmsTasks == default)
{
return WcsApiResponseFactory.DataBaseErr>();
}
return WcsApiResponseFactory.Success(wmsTasks, "查询成功");
}
///
/// 分页查询 Wms 任务表
///
///
///
public WcsApiResponse> GetWmsTaskWithPage(GetWmsTaskWithPageRequest request)
{
(List? wmsTasks, int totalRows) = _wmsTaskDao.SelectPage(request);
if(wmsTasks == default)
{
return WcsApiResponseFactory.DataBaseErr>();
}
return WcsApiResponseFactory.Success(totalRows, wmsTasks);
}
///
/// Wcs 前端发来的任务
///
///
///
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("数据插入失败,请稍后重试或者联系我们");
}
///
/// 变更任务状态
///
///
///
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}");
}
}
}