/*
*所有关于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);
}
///
/// 手动完成穿梭车的任务,比如在穿梭车发生报警情况,由人工手动处理的任务
///
/// 穿梭车的任务号
///
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;
}
}
}