diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/RecvUserInfo.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/RecvUserInfo.cs
new file mode 100644
index 00000000..1ca03597
--- /dev/null
+++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/RecvUserInfo.cs
@@ -0,0 +1,18 @@
+namespace DS.WMS.Core.TaskPlat.Dtos
+{
+ ///
+ /// 任务接收人信息
+ ///
+ public class RecvUserInfo
+ {
+ ///
+ /// 接收人信息主键
+ ///
+ public long RecvUserId { get; set; }
+
+ ///
+ /// 接收人信息姓名
+ ///
+ public string RecvUserName { get; set; }
+ }
+}
diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/TaskManageOrderMessageMainInfo.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/TaskManageOrderMessageMainInfo.cs
index 03b3cd32..7b6889c0 100644
--- a/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/TaskManageOrderMessageMainInfo.cs
+++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/TaskManageOrderMessageMainInfo.cs
@@ -56,25 +56,30 @@ namespace DS.WMS.Core.TaskPlat.Dtos
public int IsException { get; set; } = 0;
///
- /// 任务对应操作人ID
+ /// 任务对应操作人ID(任务制单人)
///
public string TaskUserId { get; set; }
///
- /// 任务对应操作人名称
+ /// 任务对应操作人名称(任务制单人)
///
public string TaskUserName { get; set; }
///
- /// 任务对应接收操作人ID
+ /// 任务对应接收操作人ID(任务接收人)
///
public string RecvUserId { get; set; }
///
- /// 任务对应接收操作人名称
+ /// 任务对应接收操作人名称(任务接收人)
///
public string RecvUserName { get; set; }
+ ///
+ /// 任务接收人列表
+ ///
+ public List RecvUserInfoList { get; set; }
+
///
/// 任务对应接收操作人ID(大简云账户体系)
///
diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskBaseAllocation.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskBaseAllocation.cs
new file mode 100644
index 00000000..3235be40
--- /dev/null
+++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskBaseAllocation.cs
@@ -0,0 +1,37 @@
+using DS.Module.Core.Data;
+using SqlSugar;
+
+namespace DS.WMS.Core.TaskPlat.Entity
+{
+ ///
+ /// 任务归属关系表
+ ///
+ [SugarTable("task_base_allocation", "任务归属关系表")]
+ public class TaskBaseAllocation : BaseModelV2
+ {
+ ///
+ /// 任务主键
+ ///
+ [SugarColumn(ColumnDescription = "任务主键", IsNullable = false)]
+ public long TaskId { get; set; }
+
+ ///
+ /// 所属人员主键
+ ///
+ [SugarColumn(ColumnDescription = "所属人员主键", IsNullable = false)]
+ public long UserId { get; set; }
+
+ ///
+ /// 所属人员姓名
+ ///
+ [SugarColumn(ColumnDescription = "所属人员姓名", IsNullable = false, Length = 255)]
+ public string UserName { get; set; }
+
+ ///
+ /// 所属机构主键
+ ///
+ [SugarColumn(ColumnDescription = "所属机构主键", IsNullable = true)]
+ public long? OrgId { get; set; }
+ }
+
+}
\ No newline at end of file
diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageService.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageService.cs
index 8c47d9d0..a4c6bac1 100644
--- a/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageService.cs
+++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageService.cs
@@ -64,13 +64,17 @@ namespace DS.WMS.Core.TaskPlat.Method
_logger.LogInformation("接收到任务状态修改报文 任务主键={id} 状态设置={status}", taskInfo.Id, taskStatusEnum.ToString());
taskInfo.STATUS = taskStatusEnum.ToString();
+ taskInfo.RealUserId = long.Parse(user.UserId);
+ taskInfo.RealUserName = user.UserName;
await tenantDb.Updateable(taskInfo).UpdateColumns(x => new
{
x.UpdateBy,
x.UpdateTime,
x.UpdateUserName,
- x.STATUS
+ x.STATUS,
+ x.RealUserId,
+ x.RealUserName
}).ExecuteCommandAsync();
return DataResult.Successed(MultiLanguageConst.GetDescription(nameof(MultiLanguageConst.DataUpdateSuccess)));
@@ -156,37 +160,57 @@ namespace DS.WMS.Core.TaskPlat.Method
BATCH_STATIC = info.Main.BatchStatic,
DJYUserId = info.Head.DJYUserId,
OUT_BS_NO = info.Head.BSNO,
+ CreateTime = DateTime.Now,
};
- long taskReqUserId = 0;
+ // 人员字段说明:
+ // TaskBaseInfo.CreateBy 创建人:谁创建的,只有一个人(可能是某个租户的管理员,因为任务可以由外部(邮件)创建,无法为每个人创建接口授权信息)
+ // TaskBaseInfo.TASK_REQ_USERID 制单人:只有一个人,使用任务创建报文中传入的TaskUserId
+ // TaskBaseAllocation.UserId 任务关系:任务属于谁,谁能够查看并处理,可能是多个人(可能是多个人一起处理);取值优先级:TaskBaseInfo.TASK_REQ_USERID>关联订单>TaskBaseInfo.CreateBy
+ // TaskBaseInfo.RealUserId 实际操作人:谁实际处理的,只有一个人
+
+ // 创建人
+ taskInfo.CreateBy = long.Parse(user.UserId);
+ taskInfo.CreateUserName = user.UserName;
+
+ // 制单人
+ long taskReqUserId = 0;
if (!string.IsNullOrWhiteSpace(info.Main.TaskUserId))
{
if (long.TryParse(info.Main.TaskUserId, out taskReqUserId))
{
taskInfo.TASK_REQ_USERID = taskReqUserId;
+ taskInfo.TASK_REQ_USERNAME = info.Main.TaskUserName;
}
}
- // 忽略
- taskInfo.CreateBy = long.Parse(user.UserId);
- taskInfo.CreateTime = DateTime.Now;
-
- //taskInfo.CreatedUserId = userTendInfo.userId;
- //taskInfo.CreatedUserName = userTendInfo.userName;
- //taskInfo.TenantId = userTendInfo.tendId;
- //taskInfo.TenantName = userTendInfo.tenantName;
+ _logger.LogInformation("批次={no} 获取登录人详情 recvUserId={recvUserId} UserId={UserId}", batchNo,
+ info.Main.RecvUserId,
+ user.UserId);
- if (info.Main.TaskType == TaskBaseTypeEnum.TRUCK_DISPATCH || info.Main.TaskType == TaskBaseTypeEnum.CAUTION_NOTICE)
+ // 任务所属人员列表
+ // 如果明确指出接收人(接收人列表),则将任务作为个人任务
+ if (info.Main.RecvUserInfoList?.Count > 0)
{
+ _logger.LogInformation("批次={no} 接收人列表 recvUserList={recvUserList} ", batchNo,
+ JsonConvert.SerializeObject(info.Main.RecvUserInfoList));
+
taskInfo.IS_PUBLIC = 0;
+ var allocationList = info.Main.RecvUserInfoList.Select(x => new TaskBaseAllocation
+ {
+ TaskId = taskInfo.Id,
+ UserId = x.RecvUserId,
+ UserName = x.RecvUserName
+ }).ToList();
+ await tenantDb.Insertable(allocationList).ExecuteCommandAsync();
+
}
+ // 否则判断任务关联订单,如果能关联到,则判断任务设置的角色;如果有设置,则将任务挂载到订单的指定角色上;如果没关联到或者没有设置,则作为公共任务
else
{
taskInfo.IS_PUBLIC = 1;
+ //
}
- _logger.LogInformation("批次={no} 获取登录人详情 userid={userid} UserId={UserId}", batchNo,
- info.Main.RecvUserId,
- user.UserId);
if (info.Main != null && info.Main.TruckInfo != null && info.Main.TruckInfo.NeedArriveTime.HasValue)
{