|
@@ -83,12 +83,74 @@ namespace DataSharing.Province.SendTask
|
|
|
{
|
|
|
//状态更改为推送中
|
|
|
sendTask.State = EWaitSendTaskState.Pushing;
|
|
|
+ ////使用乐观锁,控制数据
|
|
|
+ //if (await _waitSendTaskSubmitCaseRecordRepository.Updateable(sendTask).ExecuteCommandWithOptLockAsync() > 0)
|
|
|
+ //{
|
|
|
+ // //组装这一条数据
|
|
|
+ // listOrder.Add(sendTask.RequestData);
|
|
|
+ // taskData.Add(sendTask);
|
|
|
+ //}
|
|
|
//使用乐观锁,控制数据
|
|
|
if (await _waitSendTaskSubmitCaseRecordRepository.Updateable(sendTask).ExecuteCommandWithOptLockAsync() > 0)
|
|
|
{
|
|
|
- //组装这一条数据
|
|
|
- listOrder.Add(sendTask.RequestData);
|
|
|
- taskData.Add(sendTask);
|
|
|
+ var existsTaskCall = taskData.FirstOrDefault(p => p.RequestData.PhoneNumber == sendTask.RequestData.PhoneNumber &&
|
|
|
+ p.RequestData.PhoneStatus == sendTask.RequestData.PhoneStatus && p.RequestData.AccordUrl == sendTask.RequestData.AccordUrl);
|
|
|
+
|
|
|
+ if (existsTaskCall is null)//没有这条数据直接添加
|
|
|
+ {
|
|
|
+ //组装这一条数据
|
|
|
+ listOrder.Add(sendTask.RequestData);
|
|
|
+ taskData.Add(sendTask);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (string.IsNullOrEmpty(existsTaskCall.RequestData.CaseSerial) && !string.IsNullOrEmpty(sendTask.RequestData.CaseSerial))
|
|
|
+ {
|
|
|
+ taskData.Remove(existsTaskCall);
|
|
|
+ taskData.Add(sendTask);
|
|
|
+ listOrder.Remove(existsTaskCall.RequestData);
|
|
|
+ listOrder.Add(sendTask.RequestData);
|
|
|
+ //删除之前数据待推送表数据
|
|
|
+ await _waitSendTaskSubmitCaseRecordRepository.RemoveAsync(existsTaskCall, cancellationToken: context.CancellationToken);
|
|
|
+ #region 处理推送主表数据
|
|
|
+ //查询主表
|
|
|
+ var sendData = await _sendTaskSubmitCaseRecordRepository.GetAsync(p => p.Id == existsTaskCall.Id, context.CancellationToken);
|
|
|
+ if (sendData != null)
|
|
|
+ {
|
|
|
+ sendData.LastTime = DateTime.Now;
|
|
|
+ sendData.SendTimes = sendData.SendTimes + 1;
|
|
|
+
|
|
|
+ if (sendData.FirstTime is null)
|
|
|
+ sendData.FirstTime = DateTime.Now;
|
|
|
+
|
|
|
+ sendData.IsSuccess = ESendTaskState.PushSuccess;
|
|
|
+ await _sendTaskSubmitCaseRecordRepository.UpdateAsync(sendData, cancellationToken: context.CancellationToken);
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //删除本条数据待推送表数据
|
|
|
+ await _waitSendTaskSubmitCaseRecordRepository.RemoveAsync(sendTask, cancellationToken: context.CancellationToken);
|
|
|
+ #region 处理推送主表数据
|
|
|
+ //查询主表
|
|
|
+ var sendData = await _sendTaskSubmitCaseRecordRepository.GetAsync(p => p.Id == sendTask.Id, context.CancellationToken);
|
|
|
+ if (sendData != null)
|
|
|
+ {
|
|
|
+ sendData.LastTime = DateTime.Now;
|
|
|
+ sendData.SendTimes = sendData.SendTimes + 1;
|
|
|
+
|
|
|
+ if (sendData.FirstTime is null)
|
|
|
+ sendData.FirstTime = DateTime.Now;
|
|
|
+
|
|
|
+ sendData.IsSuccess = ESendTaskState.PushSuccess;
|
|
|
+ await _sendTaskSubmitCaseRecordRepository.UpdateAsync(sendData, cancellationToken: context.CancellationToken);
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
_logger.LogWarning("业务汇聚-电话记录锁定条数--------------------------------------" + taskData.Count);
|