152 lines
5.8 KiB
C#
152 lines
5.8 KiB
C#
using DataCheck;
|
||
using WcsMain.ApiServe.Dto;
|
||
using WcsMain.ApiServe.Dto.WcsDto.WmsTask;
|
||
using WcsMain.ApiServe.Dto.WMSEntity.WmsTask;
|
||
using WcsMain.ApiServe.Factory;
|
||
using WcsMain.Business.CommonAction;
|
||
using WcsMain.Common.DataService;
|
||
using WcsMain.Constant.Enum.Stacker;
|
||
using WcsMain.DataBase.Dao;
|
||
using WcsMain.DataBase.TableEntity;
|
||
using WcsMain.StaticData;
|
||
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
||
|
||
namespace WcsMain.ApiServe.Service.WcsService;
|
||
|
||
[Service]
|
||
public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDao, DataBaseData dataBaseData)
|
||
{
|
||
/// <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.GetNewUUID2();
|
||
bool checkData = CheckData.CheckDataRules(request);
|
||
if (!checkData)
|
||
{
|
||
return WcsApiResponseFactory.RequestErr();
|
||
}
|
||
/* 插入库存信息 */ // ---- 库存由WMS管理,数据库表也无需操作
|
||
AppWmsTask wmsTask = new()
|
||
{
|
||
TaskId = request.TaskId,
|
||
WcsId = dataBaseData.GetNewUUID2(),
|
||
TaskType = request.TaskType,
|
||
TaskStatus = request.TaskStatus == default ? (int)WmsTaskStatusEnum.create : request.TaskStatus,
|
||
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}");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 更新任务状态
|
||
/// </summary>
|
||
/// <param name="request"></param>
|
||
/// <returns></returns>
|
||
public WcsApiResponse UpdateWmsTaskStatus(UpdateWmsTaskStatusRequest request)
|
||
{
|
||
if(request.WmsTaskId == default || request.Status == default)
|
||
{
|
||
return WcsApiResponseFactory.RequestErr();
|
||
}
|
||
var updateResult = wmsTaskDao.Update(new AppWmsTask { TaskId = request.WmsTaskId, TaskStatus = request.Status, TaskMsg = $"WCS界面修改状态:{request.Status}" });
|
||
if(updateResult > 0)
|
||
{
|
||
return WcsApiResponseFactory.Success();
|
||
}
|
||
return WcsApiResponseFactory.DataBaseErr();
|
||
}
|
||
|
||
|
||
|
||
} |