Merge remote-tracking branch 'origin/S06' into S06
This commit is contained in:
commit
0a38291987
@ -194,6 +194,14 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
return default;
|
return default;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//虽然在引发事件之前做了判断,引发之后并不一定立即处理,在此过程中轨迹内容仍然可能被修改,所以要二次进行判断。
|
||||||
|
//通过来源指示是否为手动操作
|
||||||
|
var manualOperation = @event.Source == (int) TrackSourceEnum.Artificial;
|
||||||
|
//轨迹内容标识不允许手动创建的
|
||||||
|
if (manualOperation && @event.IsAdd && trackContent.IsAllowManuallyCreate == false) return;
|
||||||
|
//轨迹内容标识不允许手动更新的
|
||||||
|
if (manualOperation && !@event.IsAdd && trackContent.IsAllowManuallyUpdate == false) return;
|
||||||
|
|
||||||
var insertTracks = await UpsertTrackAsync(@event, canNextOrderIds, trackContent);
|
var insertTracks = await UpsertTrackAsync(@event, canNextOrderIds, trackContent);
|
||||||
|
|
||||||
if (canNextOrderIds.Count == 0) return trackContent;
|
if (canNextOrderIds.Count == 0) return trackContent;
|
||||||
@ -262,15 +270,11 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
var orderIds = @event.OrderIdentifiers.Select(x => x.OrderId).ToArray();
|
var orderIds = @event.OrderIdentifiers.Select(x => x.OrderId).ToArray();
|
||||||
|
|
||||||
// important:轨迹code相同,时间、发生地不同的,可能存在多条!!
|
// important:轨迹code相同,时间、发生地不同的,可能存在多条!!
|
||||||
//todo:查出多条轨迹,同订单同code也可能出现多条,
|
|
||||||
//按同code找轨迹如果有多条则不允许修改,如果没有则进行新增
|
|
||||||
var tracks = await _trackDetailsEsRepository.GetListAsync(orderIds, @event.TrackCode, true);
|
var tracks = await _trackDetailsEsRepository.GetListAsync(orderIds, @event.TrackCode, true);
|
||||||
|
|
||||||
var insertTracks = new List<TrackDetailsIndex>();
|
var insertTracks = new List<TrackDetailsIndex>();
|
||||||
var updateTracks = new List<TrackDetailsIndex>();
|
var updateTracks = new List<TrackDetailsIndex>();
|
||||||
|
|
||||||
//todo:标识轨迹内容是否是重复的,将来需要替换会从轨迹内容中获取
|
|
||||||
var isRepeatable = true;
|
|
||||||
foreach (var order in @event.OrderIdentifiers)
|
foreach (var order in @event.OrderIdentifiers)
|
||||||
{
|
{
|
||||||
TrackDetailsIndex? track;
|
TrackDetailsIndex? track;
|
||||||
@ -299,12 +303,13 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
// 场景B:允许重复,一条 => 新增(约束受限新增,否则跳过新增)
|
// 场景B:允许重复,一条 => 新增(约束受限新增,否则跳过新增)
|
||||||
// 场景C:允许重复,多条 => 新增(约束受限新增,否则跳过新增)
|
// 场景C:允许重复,多条 => 新增(约束受限新增,否则跳过新增)
|
||||||
// 场景D:不允许重复,零条 => 新增
|
// 场景D:不允许重复,零条 => 新增
|
||||||
// 场景E:不允许重复,一条 => 更新
|
// 场景E:不允许重复,一条 => 跳过
|
||||||
// 场景F:不允许重复,(理想不会出现多条) => 跳过
|
// 场景F:不允许重复,(理想不会出现多条) => 跳过
|
||||||
var existTracks = tracks.Where(x => x.OrderId == order.OrderId).ToArray();
|
var existTracks = tracks.Where(x => x.OrderId == order.OrderId).ToArray();
|
||||||
track = existTracks.FirstOrDefault();
|
track = existTracks.FirstOrDefault();
|
||||||
|
|
||||||
if (isRepeatable && existTracks.Length >= 1)
|
//覆盖场景:B,C
|
||||||
|
if (trackContent.IsRepeatable && existTracks.Length >= 1)
|
||||||
{
|
{
|
||||||
if (existTracks.Any(x => x.TrackPlace == @event.TrackPlace && x.TrackTime == @event.TrackTime))
|
if (existTracks.Any(x => x.TrackPlace == @event.TrackPlace && x.TrackTime == @event.TrackTime))
|
||||||
{
|
{
|
||||||
@ -316,10 +321,14 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
track = null;
|
track = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isRepeatable && existTracks.Length > 1)
|
//不允许重复,并且记录大于等于一条,跳过
|
||||||
|
//覆盖场景:E,F
|
||||||
|
if (!trackContent.IsRepeatable && existTracks.Length >= 1)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//其余情况:A,D都为新增操作,无需检查数量,track为null执行新增操作
|
||||||
}
|
}
|
||||||
|
|
||||||
if (track == default)
|
if (track == default)
|
||||||
@ -344,7 +353,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
TrackStatusCode = trackContent.TrackStatusCode,
|
TrackStatusCode = trackContent.TrackStatusCode,
|
||||||
TrackContent = trackContent.TrackContent,
|
TrackContent = trackContent.TrackContent,
|
||||||
TrackEnContent = trackContent.TrackEnContent,
|
TrackEnContent = trackContent.TrackEnContent,
|
||||||
//新增轨迹明细字段
|
//S06新增轨迹明细字段
|
||||||
IsVisibility = @event.IsVisibility,
|
IsVisibility = @event.IsVisibility,
|
||||||
Source = @event.Source,
|
Source = @event.Source,
|
||||||
Remarks = @event.Remarks ?? GlobalConst.EmptyString,
|
Remarks = @event.Remarks ?? GlobalConst.EmptyString,
|
||||||
@ -377,14 +386,11 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
|||||||
track.UpdateUser = @event.OperationMan ?? GlobalConst.SystemUser;
|
track.UpdateUser = @event.OperationMan ?? GlobalConst.SystemUser;
|
||||||
track.UpdateTime = DateTime.Now;
|
track.UpdateTime = DateTime.Now;
|
||||||
|
|
||||||
//允许二次修改,在修改了轨迹内容后进行修改轨迹操作,如果输入的轨迹内容和英文则进行更改
|
//允许二次修改,在修改了轨迹内容后进行修改轨迹操作,如果输入的轨迹内容则以输入为准
|
||||||
track.TrackStatus = trackContent.TrackStatus; //todo?允许修改状么?
|
|
||||||
track.TrackContent = @event.Content ?? trackContent.TrackContent;
|
track.TrackContent = @event.Content ?? trackContent.TrackContent;
|
||||||
track.TrackEnContent = @event.EnStatus ?? trackContent.TrackEnContent;
|
track.TrackEnContent = @event.EnStatus ?? trackContent.TrackEnContent;
|
||||||
|
//S06新增
|
||||||
//todo:修改轨迹增加字段(其中某些字段不允许更改)
|
|
||||||
track.IsVisibility = @event.IsVisibility;
|
track.IsVisibility = @event.IsVisibility;
|
||||||
//track.Source = @event.Source; //来源不允许更改
|
|
||||||
track.Remarks = @event.Remarks ?? GlobalConst.EmptyString;
|
track.Remarks = @event.Remarks ?? GlobalConst.EmptyString;
|
||||||
track.Files = @event.Files?.Select(x => new FileItem
|
track.Files = @event.Files?.Select(x => new FileItem
|
||||||
{
|
{
|
||||||
|
|||||||
@ -82,7 +82,7 @@ public partial class TrackService : ApplicationService, ITrackService
|
|||||||
}
|
}
|
||||||
|
|
||||||
//不允许手动更新
|
//不允许手动更新
|
||||||
if (manualOperation && !input.IsAdd && trackContent.IsAllowManuallyUpdate)
|
if (manualOperation && !input.IsAdd && !trackContent.IsAllowManuallyUpdate)
|
||||||
{
|
{
|
||||||
throw new BusinessException(message: $"轨迹代码:{input.TrackCode}不允许手动更新");
|
throw new BusinessException(message: $"轨迹代码:{input.TrackCode}不允许手动更新");
|
||||||
}
|
}
|
||||||
@ -90,7 +90,7 @@ public partial class TrackService : ApplicationService, ITrackService
|
|||||||
var tracks = await _trackDetailsEsRepository.GetListAsync(new[] { order.Id }, input.TrackCode, true);
|
var tracks = await _trackDetailsEsRepository.GetListAsync(new[] { order.Id }, input.TrackCode, true);
|
||||||
|
|
||||||
//轨迹内容不允许重复,并且已经存在了轨迹记录
|
//轨迹内容不允许重复,并且已经存在了轨迹记录
|
||||||
if (!trackContent.IsRepeatable && tracks.Count >= 1)
|
if (input.IsAdd && !trackContent.IsRepeatable && tracks.Count >= 1)
|
||||||
{
|
{
|
||||||
throw new BusinessException(message: $"轨迹代码:{input.TrackCode}不允许重复添加");
|
throw new BusinessException(message: $"轨迹代码:{input.TrackCode}不允许重复添加");
|
||||||
}
|
}
|
||||||
@ -281,7 +281,7 @@ public partial class TrackService : ApplicationService, ITrackService
|
|||||||
}
|
}
|
||||||
|
|
||||||
//不允许手动更新
|
//不允许手动更新
|
||||||
if (manualOperation && !input.IsAdd && trackContent.IsAllowManuallyUpdate)
|
if (manualOperation && !input.IsAdd && !trackContent.IsAllowManuallyUpdate)
|
||||||
{
|
{
|
||||||
throw new BusinessException(message: $"轨迹代码:{input.TrackCode}不允许手动更新");
|
throw new BusinessException(message: $"轨迹代码:{input.TrackCode}不允许手动更新");
|
||||||
}
|
}
|
||||||
@ -289,7 +289,7 @@ public partial class TrackService : ApplicationService, ITrackService
|
|||||||
var tracks = await _trackDetailsEsRepository.GetListAsync(new[] { order.Id }, input.TrackCode, true);
|
var tracks = await _trackDetailsEsRepository.GetListAsync(new[] { order.Id }, input.TrackCode, true);
|
||||||
|
|
||||||
//轨迹内容不允许重复,并且已经存在了轨迹记录
|
//轨迹内容不允许重复,并且已经存在了轨迹记录
|
||||||
if (!trackContent.IsRepeatable && tracks.Count >= 1)
|
if (input.IsAdd && !trackContent.IsRepeatable && tracks.Count >= 1)
|
||||||
{
|
{
|
||||||
throw new BusinessException(message: $"轨迹代码:{input.TrackCode}不允许重复添加");
|
throw new BusinessException(message: $"轨迹代码:{input.TrackCode}不允许重复添加");
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user