tangjiang há 7 meses atrás
pai
commit
7116ccf394

+ 69 - 3
src/DataSharing/Province/SendTask/TaskSubmitCaseInfoJob.cs

@@ -466,9 +466,75 @@ namespace DataSharing.Province.SendTask
                         }
                         else
                         {
-                            //组装这一条数据
-                            listOrder.Add(sendTask.RequestData);
-                            taskData.Add(sendTask);
+                            ////组装这一条数据
+                            //listOrder.Add(sendTask.RequestData);
+                            //taskData.Add(sendTask);
+                            var existsTaskOrder = taskData.FirstOrDefault(p => p.ProvinceNo == sendTask.ProvinceNo);
+                            //没有这条数据直接添加
+                            if (existsTaskOrder is null)
+                            {
+                                //组装这一条数据
+                                listOrder.Add(sendTask.RequestData);
+                                taskData.Add(sendTask);
+                            }
+                            else
+                            {
+                                //有这条数据,有这个工单数据,
+                                //比较写入时间,取最后写入的数据,将前面的数据写成已推送
+                                if (existsTaskOrder.CreationTime < sendTask.CreationTime)
+                                {
+                                    //移除之前数据,写入最新数据
+                                    taskData.Remove(existsTaskOrder);
+                                    taskData.Add(sendTask);
+                                    listOrder.Remove(existsTaskOrder.RequestData);
+                                    listOrder.Add(sendTask.RequestData);
+
+                                    //删除待推送表
+                                    await _waitSendTaskSubmitCaseInfoRepository.RemoveAsync(existsTaskOrder, cancellationToken: context.CancellationToken);
+                                    #region 处理数据推送主表数据
+                                    //查询主表
+                                    var sendData = await _sendTaskSubmitCaseInfoRepository.GetAsync(p => p.Id == existsTaskOrder.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 _sendTaskSubmitCaseInfoRepository.UpdateAsync(sendData, cancellationToken: context.CancellationToken);
+                                    }
+                                    #endregion
+                                }
+                                else
+                                {
+                                    //已经是最新数据,则直接将数据修改为已推送
+                                    //删除待推送表
+                                    await _waitSendTaskSubmitCaseInfoRepository.RemoveAsync(sendTask, cancellationToken: context.CancellationToken);
+                                    #region 处理数据推送主表数据
+                                    //查询主表
+                                    var sendData = await _sendTaskSubmitCaseInfoRepository.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 _sendTaskSubmitCaseInfoRepository.UpdateAsync(sendData, cancellationToken: context.CancellationToken);
+                                    }
+                                    #endregion
+                                }
+
+
+
+
+
+
+                            }
                         }
                     }
                 }

+ 65 - 3
src/DataSharing/Province/SendTask/TaskSubmitCaseRecordJob.cs

@@ -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);