任务分配功能+任务创建调整

usertest
zhangxiaofeng 4 months ago
parent ae9686ff6c
commit a0d6e769c2

@ -1,16 +0,0 @@
namespace DS.WMS.Core.TaskPlat.Dtos
{
public class TaskAllocationSaveDto
{
/// <summary>
/// 分配对象编码 Operator=操作 VouchingClerk=单证 Sale=销售 Custom=报关员 FinancialStaff=财务 CustomerService=客服 Driver=司机 Dispatcher=派车调度人员
/// </summary>
public string AllocationTargetCode { get; set; }
/// <summary>
/// 任务类型编码列表
/// </summary>
public List<string> TaskTypeCodeList { get; set; }
}
}

@ -0,0 +1,63 @@
using SqlSugar;
namespace DS.WMS.Core.TaskPlat.Dtos
{
public class SaveTaskAllocationSettingDto
{
/// <summary>
/// 分配对象编码 Operator=操作 VouchingClerk=单证 Sale=销售 Custom=报关员 FinancialStaff=财务 CustomerService=客服 Driver=司机 Dispatcher=派车调度人员
/// </summary>
public string AllocationTargetCode { get; set; }
/// <summary>
/// 船公司ID
/// </summary>
public long? CarrierId { get; set; }
/// <summary>
/// 船公司代码
/// </summary>
public string? CarrierCode { get; set; }
/// <summary>
/// 船公司
/// </summary>
public string? Carrier { get; set; }
/// <summary>
/// 任务类型列表
/// </summary>
public List<TaskTypeInfoDto> TaskTypeList { get; set; }
}
public class TaskTypeInfoDto
{
/// <summary>
/// 任务类型编码
/// </summary>
public string TaskTypeCode { get; set; }
/// <summary>
/// 任务类型名称
/// </summary>
public string TaskTypeName { get; set; }
}
public class CarrierInfoDto
{
/// <summary>
/// 船公司ID
/// </summary>
public long? CarrierId { get; set; }
/// <summary>
/// 船公司代码
/// </summary>
public string? CarrierCode { get; set; }
/// <summary>
/// 船公司
/// </summary>
public string? Carrier { get; set; }
}
}

@ -13,6 +13,11 @@ namespace DS.WMS.Core.TaskPlat.Dtos
/// </summary>
public TaskBaseTypeEnum TaskType { get; set; }
/// <summary>
/// 校验任务类型重复是否判断任务类型
/// </summary>
public bool IsCheckExistsByTaskType { get; set; }
/// <summary>
/// 任务来源
/// </summary>

@ -13,7 +13,31 @@ namespace DS.WMS.Core.TaskPlat.Entity
/// 任务类型
/// </summary>
[SugarColumn(ColumnDescription = "任务类型编码", IsNullable = false, Length = 40)]
public string TaskType { get; set; }
public string TaskTypeCode { get; set; }
/// <summary>
/// 任务类型名称
/// </summary>
[SugarColumn(ColumnDescription = "任务类型名称", IsNullable = false, Length = 40)]
public string TaskTypeName { get; set; }
/// <summary>
/// 船公司ID
/// </summary>
[SugarColumn(ColumnDescription = "船公司ID", IsNullable = true)]
public long? CarrierId { get; set; }
/// <summary>
/// 船公司代码
/// </summary>
[SugarColumn(ColumnDescription = "船公司代码", IsNullable = true, Length = 20)]
public string? CarrierCode { get; set; }
/// <summary>
/// 船公司
/// </summary>
[SugarColumn(ColumnDescription = "船公司", IsNullable = true, Length = 20)]
public string? Carrier { get; set; }
/// <summary>
/// 是否分配至操作

@ -67,5 +67,9 @@ namespace DS.WMS.Core.TaskPlat.Interface
/// <param name="userInfos">要转交的人员信息列表</param>
Task<DataResult> TransferTask(long bsno, TaskBaseTypeEnum taskBaseTypeEnum, List<RecvUserInfo> userInfos);
/// <summary>
/// 保存任务分配设置
/// </summary>
Task<DataResult> SaveTaskAllocationSetting(SaveTaskAllocationSettingDto saveDto);
}
}

@ -207,10 +207,7 @@ namespace DS.WMS.Core.TaskPlat.Method
public async Task<DataResult> InitTaskJob(TaskManageOrderMessageInfo info, IFormFile file = null, IFormFile modifyFile = null)
{
string batchNo = Guid.NewGuid().ToString();
//var a = user.UserId;
//var b = user.UserName;
//var c = user.TenantId;
//var d = user.OrgId;
try
{
logger.LogInformation("批次={no} 接收到创建任务报文 报文={msg}", batchNo, JsonConvert.SerializeObject(info));
@ -223,15 +220,19 @@ namespace DS.WMS.Core.TaskPlat.Method
if (info.Head.BSNO is not null or 0)
{
taskInfo = await tenantDb.Queryable<TaskBaseInfo>()
.Where(t => t.OUT_BS_NO == info.Head.BSNO)
.WhereIF(info.Main.IsCheckExistsByTaskType, t => t.TASK_TYPE == info.Main.TaskType.ToString())
.OrderByDescending(a => a.CreateTime)
.FirstAsync(t => t.OUT_BS_NO == info.Head.BSNO);
.FirstAsync();
}
// 否则通过Head.GID进行判断
else
{
taskInfo = await tenantDb.Queryable<TaskBaseInfo>()
.Where(t => t.OUT_BUSI_NO == $"{info.Head.SenderId}_{info.Head.GID}")
.WhereIF(info.Main.IsCheckExistsByTaskType, t => t.TASK_TYPE == info.Main.TaskType.ToString())
.OrderByDescending(a => a.CreateTime)
.FirstAsync(t => t.OUT_BUSI_NO == $"{info.Head.SenderId}_{info.Head.GID}");
.FirstAsync();
}
@ -1845,5 +1846,126 @@ namespace DS.WMS.Core.TaskPlat.Method
//var sql = queryable.Select<dynamic>(t => t).Distinct().ToSqlString();
//.WhereIF(taskStatLevel == TaskStatLevelEnum.EXCPTION, (t, a) => t.IS_EXCEPT == 1)
}
#region 任务分配相关
/// <summary>
/// 获取任务分配保存列表
/// </summary>
/// <param name="carrierId">船公司Id可选</param>
public async Task<DataResult<List<TaskAllocationtSet>>> GetTaskAllocationSettingList(long? carrierId)
{
var tenantDb = saasDbService.GetBizDbScopeById(user.TenantId);
var list = await tenantDb.Queryable<TaskAllocationtSet>()
.WhereIF(carrierId != null, x => x.CarrierId == carrierId)
.ToListAsync();
return DataResult<List<TaskAllocationtSet>>.Success(list);
}
/// <summary>
/// 获取任务分配表中已存在的船公司列表(用于查询)
/// </summary>
public async Task<DataResult<List<CarrierInfoDto>>> GetTaskAllocationSettingCarrierList()
{
var tenantDb = saasDbService.GetBizDbScopeById(user.TenantId);
var carrierList = await tenantDb.Queryable<TaskAllocationtSet>().Select(x => new CarrierInfoDto()
{
CarrierId = x.CarrierId,
Carrier = x.Carrier,
CarrierCode = x.CarrierCode
}).Distinct().ToListAsync();
return DataResult<List<CarrierInfoDto>>.Success(carrierList);
}
/// <summary>
/// 保存任务分配设置
/// </summary>
public async Task<DataResult> SaveTaskAllocationSetting(SaveTaskAllocationSettingDto saveDto)
{
var tenantDb = saasDbService.GetBizDbScopeById(user.TenantId);
if (string.IsNullOrEmpty(saveDto.CarrierCode))
{
saveDto.CarrierCode = null;
}
if (string.IsNullOrEmpty(saveDto.Carrier))
{
saveDto.Carrier = null;
}
if (saveDto.CarrierId == 0)
{
saveDto.CarrierId = null;
}
var fieldName = saveDto.AllocationTargetCode switch
{
"Operator" => nameof(TaskAllocationtSet.IsAllotOperator),
"VouchingClerk" => nameof(TaskAllocationtSet.IsAllotVouchingClerk),
"Sale" => nameof(TaskAllocationtSet.IsAllotSale),
"Custom" => nameof(TaskAllocationtSet.IsAllotCustom),
"FinancialStaff" => nameof(TaskAllocationtSet.IsAllotFinancialStaff),
"CustomerService" => nameof(TaskAllocationtSet.IsAllotCustomerService),
"Driver" => nameof(TaskAllocationtSet.IsAllotDriver),
"Dispatcher" => nameof(TaskAllocationtSet.IsAllotDispatcher),
_ => throw new NotImplementedException(),
};
try
{
// 先查出来已有的、指定船公司的配置
var oldSettingList = await tenantDb.Queryable<TaskAllocationtSet>().Where(x => x.CarrierId == saveDto.CarrierId).Select(x => new { x.Id, x.TaskTypeCode }).ToListAsync();
var oldSettingIdList = oldSettingList.Select(x => x.Id);
var oldSettingTypeCodeList = oldSettingList.Select(x => x.TaskTypeCode);
await tenantDb.Ado.BeginTranAsync();
// 将原有的状态设置为未分配
await tenantDb.Updateable<TaskAllocationtSet>()
.SetColumns(fieldName, false)
.Where(x => oldSettingIdList.Contains(x.Id))
.ExecuteCommandAsync();
// 补充缺少的任务类型
if (saveDto.TaskTypeList?.Any() == true)
{
var waitAddTypeCodeList = saveDto.TaskTypeList.Select(x => x.TaskTypeCode).Except(oldSettingTypeCodeList).ToList();
if (waitAddTypeCodeList.Count > 0)
{
waitAddTypeCodeList.Select(x => new TaskAllocationtSet()
{
CarrierId = saveDto.CarrierId,
Carrier = saveDto.Carrier,
CarrierCode = saveDto.CarrierCode,
TaskTypeCode = x,
TaskTypeName = saveDto.TaskTypeList.First(t => t.TaskTypeCode == x).TaskTypeName,
});
await tenantDb.Insertable(waitAddTypeCodeList).ExecuteCommandAsync();
}
var setTaskCodeList = saveDto.TaskTypeList.Select(x => x.TaskTypeCode);
// 更新指定船公司的配置
await tenantDb.Updateable<TaskAllocationtSet>()
.SetColumns(fieldName, true)
.Where(x => x.CarrierId == saveDto.CarrierId && setTaskCodeList.Contains(x.TaskTypeCode))
.ExecuteCommandAsync();
}
await tenantDb.Ado.CommitTranAsync();
}
catch (Exception ex)
{
await tenantDb.Ado.RollbackTranAsync();
logger.LogError(ex, "保存任务分配设置异常");
throw;
}
return DataResult.Successed(MultiLanguageConst.GetDescription(nameof(MultiLanguageConst.DataUpdateSuccess)));
}
#endregion
}
}

@ -1,46 +0,0 @@
using DS.Module.Core;
using DS.Module.Core.Attributes;
using DS.Module.DjyServiceStatus;
using DS.WMS.Core.TaskPlat.Dtos;
using DS.WMS.Core.TaskPlat.Interface;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
namespace DS.WMS.TaskApi.Controllers;
/// <summary>
/// 任务分配相关接口
/// </summary>
public class TaskAllocationController : ApiController
{
private readonly ITaskManageService taskManageService;
public TaskAllocationController(ITaskManageService taskManageService)
{
this.taskManageService = taskManageService;
}
/// <summary>
/// 获取未设置分配的任务类型列表
/// </summary>
[HttpGet("GetUnSetTaskTypeList")]
public async Task<DataResult> GetUnSetTaskTypeList([FromQuery] long[] taskIds, [FromBody] List<RecvUserInfo> userInfo)
{
//await taskManageService.SetTaskOwner(taskIds, userInfo);
//return DataResult.SuccessedWithDesc(nameof(MultiLanguageConst.OperationSuccess));
return default;
}
/// <summary>
/// 任务分配设置保存
/// </summary>
[HttpPost("Save")]
public async Task<DataResult> Save()
{
//await taskManageService.SetTaskOwner(taskIds, userInfo);
//return DataResult.SuccessedWithDesc(nameof(MultiLanguageConst.OperationSuccess));
return default;
}
}

@ -208,4 +208,13 @@ public class TaskManageController : ApiController
return PhysicalFile(fileFullPath, "application/octet-stream", fileName);
}
///// <summary>
///// 保存任务分配设置
///// </summary>
//[HttpPost("SaveTaskAllocationSetting")]
//public async Task<DataResult> SaveTaskAllocationSetting(SaveTaskAllocationSettingDto saveDto)
//{
// var result = await taskManageService.SaveTaskAllocationSetting(saveDto);
// return result;
//}
}
Loading…
Cancel
Save