重复创建任务问题修复

usertest
嵇文龙 2 months ago
parent 1c0407ed7f
commit 0c963aa354

@ -130,7 +130,6 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction
TenantDb.QueryFilter.Clear<IOrgId>(); TenantDb.QueryFilter.Clear<IOrgId>();
} }
/// <summary> /// <summary>
/// 创建关联任务 /// 创建关联任务
/// </summary> /// </summary>
@ -154,106 +153,116 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction
if (task != null && task.TaskStatus != TaskStatusEnum.Cancel) if (task != null && task.TaskStatus != TaskStatusEnum.Cancel)
return DataResult.FailedWithDesc(nameof(MultiLanguageConst.TaskExists)); return DataResult.FailedWithDesc(nameof(MultiLanguageConst.TaskExists));
DataResult result = DataResult.Success;
if (request.TaskType == TaskBaseTypeEnum.WAIT_ORDER_AUDIT) if (request.TaskType == TaskBaseTypeEnum.WAIT_ORDER_AUDIT)
{ {
var result = await CheckRulesAsync(request.BusinessId, request.BusinessType.Value, RuleEngineType.COMMON_ORDER_AUDIT); result = await CheckRulesAsync(request.BusinessId, request.BusinessType.Value, RuleEngineType.COMMON_ORDER_AUDIT);
if (!result.Succeeded) if (!result.Succeeded)
return result; return result;
} }
long tenatId = long.Parse(User.TenantId); if (useTransaction)
string tenatName = Db.Queryable<SysTenant>().Where(x => x.Id == tenatId).Select(x => x.Name).First(); await TenantDb.Ado.BeginTranAsync();
var info = new TaskManageOrderMessageInfo try
{ {
Head = new TaskManageOrderMessageHeadInfo if (task == null)
{
GID = Guid.NewGuid().ToString(),
BSNO = request.BusinessId,
MessageType = "WORK_FLOW_TASK",
SenderId = "WorkFlow",
SenderName = "工作流平台",
ReceiverId = "TaskManage",
ReceiverName = "任务管理平台",
Version = "1.0",
RequestDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
RequestAction = "Add"
},
Main = new TaskManageOrderMessageMainInfo
{ {
TaskType = request.TaskType, long tenatId = long.Parse(User.TenantId);
TaskSource = TaskSourceEnum.WORK_FLOW, string tenatName = Db.Queryable<SysTenant>().Where(x => x.Id == tenatId).Select(x => x.Name).First();
TaskTitle = request.TaskTitle, var info = new TaskManageOrderMessageInfo
TaskDesp = request.TaskDescription, {
TaskUserId = User.UserId, Head = new TaskManageOrderMessageHeadInfo
TaskUserName = User.UserName, {
TaskTenatId = tenatId, GID = Guid.NewGuid().ToString(),
TaskTenatName = tenatName, BSNO = request.BusinessId,
IsCheckExistsByTaskType = true MessageType = "WORK_FLOW_TASK",
} SenderId = "WorkFlow",
}; SenderName = "工作流平台",
ReceiverId = "TaskManage",
ReceiverName = "任务管理平台",
Version = "1.0",
RequestDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
RequestAction = "Add"
},
Main = new TaskManageOrderMessageMainInfo
{
TaskType = request.TaskType,
TaskSource = TaskSourceEnum.WORK_FLOW,
TaskTitle = request.TaskTitle,
TaskDesp = request.TaskDescription,
TaskUserId = User.UserId,
TaskUserName = User.UserName,
TaskTenatId = tenatId,
TaskTenatName = tenatName,
IsCheckExistsByTaskType = true
}
};
if ((request.RecvUserIdList == null || request.RecvUserIdList.Length == 0) && IsOrderType(request.TaskType)) if ((request.RecvUserIdList == null || request.RecvUserIdList.Length == 0) && IsOrderType(request.TaskType))
{ {
//根据配置获取默认接收人 //根据配置获取默认接收人
info.Main.RecvUserInfoList = await GetRecvUsersAsync(request.BusinessId, request.BusinessType, request.TaskType); info.Main.RecvUserInfoList = await GetRecvUsersAsync(request.BusinessId, request.BusinessType, request.TaskType);
} }
else if (AuditTaskTypes.Contains(request.TaskType)) else if (AuditTaskTypes.Contains(request.TaskType))
{ {
//审核类型默认为提交人,生成工作流后替换为工作流执行人 //审核类型默认为提交人,生成工作流后替换为工作流执行人
info.Main.RecvUserInfoList = await FillInUserInfoAsync(long.Parse(User.UserId)); info.Main.RecvUserInfoList = await FillInUserInfoAsync(long.Parse(User.UserId));
} }
else else
{ {
info.Main.RecvUserInfoList = await FillInUserInfoAsync(request.RecvUserIdList); info.Main.RecvUserInfoList = await FillInUserInfoAsync(request.RecvUserIdList);
} }
if (info.Main.RecvUserInfoList == null || info.Main.RecvUserInfoList.Count == 0) if (info.Main.RecvUserInfoList == null || info.Main.RecvUserInfoList.Count == 0)
return DataResult.FailedWithDesc(nameof(MultiLanguageConst.TaskReceiverNotFound)); return DataResult.FailedWithDesc(nameof(MultiLanguageConst.TaskReceiverNotFound));
//仅为业务订单任务自动填充任务标题/描述 //仅为业务订单任务自动填充任务标题/描述
if (info.Main.TaskTitle.IsNullOrEmpty() && IsOrderType(request.TaskType)) if (info.Main.TaskTitle.IsNullOrEmpty() && IsOrderType(request.TaskType))
{ {
var biz = await TenantDb.Queryable<SeaExport>().Select(x => new var biz = await TenantDb.Queryable<SeaExport>().Select(x => new
{ {
x.Id, x.Id,
x.CustomerNo, x.CustomerNo,
x.MBLNO, x.MBLNO,
x.Vessel, x.Vessel,
x.Voyno, x.Voyno,
x.ETD, x.ETD,
}).FirstAsync(x => x.Id == request.BusinessId); }).FirstAsync(x => x.Id == request.BusinessId);
info.Main.TaskTitle = $"【{request.TaskType.GetDescription()}】{biz?.CustomerNo} {biz?.Vessel} {biz?.Voyno} ETD:{biz?.ETD?.ToString("yyyy-MM-dd")}"; info.Main.TaskTitle = $"【{request.TaskType.GetDescription()}】{biz?.CustomerNo} {biz?.Vessel} {biz?.Voyno} ETD:{biz?.ETD?.ToString("yyyy-MM-dd")}";
info.Main.MBlNo = biz?.MBLNO; info.Main.MBlNo = biz?.MBLNO;
info.Main.CUSTOMNER_NO = biz?.CustomerNo; info.Main.CUSTOMNER_NO = biz?.CustomerNo;
} }
info.Main.TaskDesp = info.Main.TaskDesp ?? info.Main.TaskTitle; info.Main.TaskDesp = info.Main.TaskDesp ?? info.Main.TaskTitle;
if (useTransaction) result = await ManagerService.InitTaskJob(info);
await TenantDb.Ado.BeginTranAsync(); if (!result.Succeeded)
return result;
try task = new BusinessTask
{ {
DataResult result = await ManagerService.InitTaskJob(info); BusinessId = request.BusinessId,
if (!result.Succeeded) BusinessType = request.BusinessType,
return result; TaskType = request.TaskType,
TaskStatus = TaskStatusEnum.Create,
RecvUsers = string.Join(',', info.Main.RecvUserInfoList.Select(x => x.RecvUserId)),
NextType = request.NextType,
CreateBy = long.Parse(User.UserId),
CreateTime = DateTime.Now
};
task = new BusinessTask if (IsOrderType(request.TaskType) && !task.NextType.HasValue)
{ task.NextType = await GetNextTypeAsync(task);
BusinessId = request.BusinessId,
BusinessType = request.BusinessType,
TaskType = request.TaskType,
TaskStatus = TaskStatusEnum.Create,
RecvUsers = string.Join(',', info.Main.RecvUserInfoList.Select(x => x.RecvUserId)),
NextType = request.NextType,
CreateBy = long.Parse(User.UserId),
CreateTime = DateTime.Now
};
if (IsOrderType(request.TaskType) && !task.NextType.HasValue) await TenantDb.Insertable(task).ExecuteCommandAsync();
task.NextType = await GetNextTypeAsync(task);
await TenantDb.Insertable(task).ExecuteCommandAsync(); result = await OnTaskCreated(task);
if (!result.Succeeded)
return result;
//记录日志
await LogService.WriteLogAsync(task);
}
//审核任务需创建工作流 //审核任务需创建工作流
if (AuditTaskTypes.Contains(request.TaskType)) if (AuditTaskTypes.Contains(request.TaskType))
@ -263,13 +272,6 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction
return result; return result;
} }
result = await OnTaskCreated(task);
if (!result.Succeeded)
return result;
//记录日志
await LogService.WriteLogAsync(task);
if (useTransaction) if (useTransaction)
await TenantDb.Ado.CommitTranAsync(); await TenantDb.Ado.CommitTranAsync();

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<NameOfLastUsedPublishProfile>D:\Code\DS\ds8-solution-pro\ds-wms-service\DS.WMS.OpApi\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile> <NameOfLastUsedPublishProfile>D:\Source\Repos\DS8\ds-wms-service\DS.WMS.OpApi\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
<Controller_SelectedScaffolderID>MvcControllerEmptyScaffolder</Controller_SelectedScaffolderID> <Controller_SelectedScaffolderID>MvcControllerEmptyScaffolder</Controller_SelectedScaffolderID>
<Controller_SelectedScaffolderCategoryPath>root/Common/MVC/Controller</Controller_SelectedScaffolderCategoryPath> <Controller_SelectedScaffolderCategoryPath>root/Common/MVC/Controller</Controller_SelectedScaffolderCategoryPath>
</PropertyGroup> </PropertyGroup>

Loading…
Cancel
Save