/*
|
*所有关于Dt_TaskRGVinfo类的业务代码应在此处编写
|
*可使用repository.调用常用方法,获取EF/Dapper等信息
|
*如果需要事务请使用repository.DbContextBeginTransaction
|
*也可使用DBServerProvider.手动获取数据库相关信息
|
*用户信息、权限、角色等使用UserContext.Current操作
|
*Dt_TaskRGVinfoService对增、删、改查、导入、导出、审核业务代码扩展参照ServiceFunFilter
|
*/
|
using WIDESEA_Core.BaseProvider;
|
using WIDESEA_Core.Extensions.AutofacManager;
|
using WIDESEA_Entity.DomainModels;
|
using System.Linq;
|
using WIDESEA_Core.Utilities;
|
using System.Linq.Expressions;
|
using WIDESEA_Core.Extensions;
|
using Microsoft.EntityFrameworkCore;
|
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.AspNetCore.Http;
|
using WIDESEA_Services.IRepositories;
|
using System;
|
using WIDESEA_Services.Repositories;
|
using WIDESEA_Common;
|
using WIDESEA_Common.TaskEnum;
|
using WIDESEA_Core.Services;
|
using WIDESEA_Core.Enums;
|
using WIDESEA_Services.Services.APIInvoke.RGV;
|
|
namespace WIDESEA_Services.Services
|
{
|
public partial class Dt_TaskRGVinfoService
|
{
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
private readonly IDt_TaskRGVinfoRepository _repository;//访问数据库
|
|
[ActivatorUtilitiesConstructor]
|
public Dt_TaskRGVinfoService(
|
IDt_TaskRGVinfoRepository dbRepository,
|
IHttpContextAccessor httpContextAccessor
|
)
|
: base(dbRepository)
|
{
|
_httpContextAccessor = httpContextAccessor;
|
_repository = dbRepository;
|
//多租户会用到这init代码,其他情况可以不用
|
//base.Init(dbRepository);
|
}
|
|
|
/// <summary>
|
/// 手动完成穿梭车的任务,比如在穿梭车发生报警情况,由人工手动处理的任务
|
/// </summary>
|
/// <param name="taskId">穿梭车的任务号</param>
|
/// <returns></returns>
|
public static WebResponseContent FinishedRgvTask(SaveModel saveModel)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
string taskId = saveModel.MainData["taskId"].ToString();
|
Dt_TaskRGVinfo taskRGVinfo = Dt_TaskRGVinfoRepository.Instance.FindFirst(x => x.rgvtask_taskId == taskId);
|
if (taskRGVinfo == null)
|
content.Error($"手动完成穿梭车任务出错,没有找到任务号:【{taskId}】对应的任务");
|
else
|
{
|
content = CommonFunction.FinishedRgvTask(taskRGVinfo, "system");
|
if (content.Status)
|
content.OK("手动完成穿梭车任务成功");
|
else
|
content.Error($"手动完成穿梭车任务出错:" + content.Message);
|
}
|
}
|
catch (Exception ex)
|
{
|
content.Error($"手动完成穿梭车任务出错:" + ex.Message);
|
}
|
Logger.AddLog(LoggerType.Add, saveModel, content, content);
|
return content;
|
}
|
|
public override WebResponseContent Add(SaveModel saveModel)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
string taskType = saveModel.MainData["rgvtask_taskType"]?.ToString();
|
string rgvtask_startNode = saveModel.MainData["rgvtask_startNode"]?.ToString();
|
string rgvtask_endNode = saveModel.MainData["rgvtask_endNode"]?.ToString();
|
string rgvtask_barCode = saveModel.MainData["rgvtask_barCode"]?.ToString();
|
if (string.IsNullOrEmpty(taskType) || string.IsNullOrEmpty(rgvtask_startNode) ||
|
string.IsNullOrEmpty(rgvtask_endNode) || string.IsNullOrEmpty(rgvtask_barCode))
|
return content.Error("请维护全部信息.");
|
|
if (repository.Exists(x => x.rgvtask_wcsTaskNumber == 0 && x.rgvtask_taskId == "0"))
|
return content.Error("当前存在手动任务,请等待完成后在创建。");
|
|
Dt_TaskRGVinfo rgvTask = new Dt_TaskRGVinfo()
|
{
|
rgvtask_areaCode = "",
|
rgvtask_backup_1 = "",
|
rgvtask_backup_2 = "",
|
rgvtask_backup_3 = "",
|
rgvtask_barCode = rgvtask_barCode,
|
rgvtask_creator = "",
|
rgvtask_dispatchertime = null,
|
rgvtask_endNode = rgvtask_endNode,
|
rgvtask_groupId = "",
|
rgvtask_id = Guid.NewGuid(),
|
rgvtask_msgTime = null,
|
rgvtask_order = 1,
|
rgvtask_priorityCode = "1",
|
rgvtask_startNode = rgvtask_startNode,
|
rgvtask_taskId = "0",
|
rgvtask_taskStatus = RGVTaskState.RgvTaskState_Wait_Send.ToString(),
|
rgvtask_taskType = taskType,
|
rgvtask_warehouser = "",
|
rgvtask_wcsTaskNumber = 0
|
};
|
repository.Add(rgvTask, true);
|
content.OK("添加成功");
|
}
|
catch (Exception ex)
|
{
|
content.Error("创建失败:" + ex.Message);
|
}
|
return content;
|
}
|
|
public override WebResponseContent Del(object[] keys, bool delList = true)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
content = Dt_TaskRGVinfoRepository.Instance.DbContextBeginTransaction(() =>
|
{
|
foreach (var item in keys)
|
{
|
Guid id = Guid.Parse(item.ToString());
|
Dt_TaskRGVinfo task = Dt_TaskRGVinfoRepository.Instance.FindFirst(r => r.rgvtask_id == id);
|
if (null != task)
|
{
|
//调取RGV接口取消
|
WebResponseContent webResponse= RGVAPIInvokeTaskCancel.CancelTaskFromRGV(task.rgvtask_taskId);
|
if (webResponse.Status)
|
{
|
CommonFunction.AddRgvTaskToHistory(task, Dt_TaskRGVinfoRepository.Instance, Dt_TaskRGVinfo_HtyRepository.Instance);
|
|
}
|
|
}
|
}
|
return content.OK("删除成功");
|
});
|
|
}
|
catch (Exception ex)
|
{
|
|
content.Error("删除失败:" + ex.Message);
|
}
|
return content;
|
}
|
}
|
}
|