Commit 68854abf by 陶然

优化

parent 6180ebee
......@@ -2,6 +2,7 @@
using Kivii;
using Kivii.Finances.Entities;
using Kivii.Linq;
using Njzj.Finances.Bocoms.Extensions;
using System;
using System.Collections.Generic;
using System.Data;
......@@ -68,16 +69,12 @@ namespace Njzj.Bocoms.Openapis
{
if (!preSettlements.Exists(o => o.Kvid == kvid)) notMatchBizKvids.Add(kvid);
}
if (!notMatchBizKvids.IsNullOrEmpty())
{
var updateWriteOffs = connE.From<WriteOffResultNotify>();
updateWriteOffs = updateWriteOffs.Update(o => o.Status);
updateWriteOffs = updateWriteOffs.Where(o => Sql.In(o.BizKvid, notMatchBizKvids));
connE.UpdateOnly(new WriteOffResultNotify { Status = int.MaxValue }, updateWriteOffs);
}
writeOffs.RemoveAll(o => Sql.In(o.BizKvid, notMatchBizKvids));
var matchWriteOffs = new List<WriteOffResultNotify>();
var breakWriteOffs = new List<WriteOffResultNotify>();//错误消息队列 要移除的
var payments = new List<Payment>();
List<string> serialNumbers = new List<string>();
foreach (var item in writeOffs)
{
if (item.biz_content.bill_wo_state != "03")
......@@ -88,6 +85,12 @@ namespace Njzj.Bocoms.Openapis
bool matched = false;
foreach (var pay in item.biz_content.pay_detail_list)
{
if (pay.jnl_write_off_amt.IsNullOrEmpty() || pay.jnl_write_off_amt.ToLower() == "null")
{
if (!notMatchBizKvids.Exists(o => o == item.BizKvid)) notMatchBizKvids.Add(item.BizKvid);
matched = false;
break;
}
var split = pay.vch_no.Split('-');
if (split.Length != 3)
{
......@@ -102,6 +105,7 @@ namespace Njzj.Bocoms.Openapis
TaskContext.Message = $"Error:10003,[{item.BillId}]vch_no截取的流水号是空!";
continue;
}
serialNumbers.Add(serialNumber);
var payment = connF.Single<Payment>(o => o.SerialNumber == serialNumber && o.OffsetKvid == Guid.Empty && o.Type == PaymentType.Bank);
if (payment == null)
{
......@@ -111,13 +115,25 @@ namespace Njzj.Bocoms.Openapis
payments.Add(payment);
matched = true;
}
if (matched) matchWriteOffs.Add(item);
if (matched)
{
matchWriteOffs.Add(item);
}
}
if (!notMatchBizKvids.IsNullOrEmpty())
{
var updateWriteOffs = connE.From<WriteOffResultNotify>();
updateWriteOffs = updateWriteOffs.Update(o => o.Status);
updateWriteOffs = updateWriteOffs.Where(o => Sql.In(o.BizKvid, notMatchBizKvids));
connE.UpdateOnly(new WriteOffResultNotify { Status = int.MaxValue }, updateWriteOffs);
}
if (matchWriteOffs.IsNullOrEmpty())
{
TaskContext.Message = $"{writeOffs.Count}条待处理通知,尚未匹配到流水信息!";
return true;
}
#endregion
#region 合并数据库连接,并启用事务
IDbTransaction tranE = null, tranF = null;
......@@ -240,6 +256,17 @@ namespace Njzj.Bocoms.Openapis
tranF?.Rollback();
throw ex;
}
finally
{
if (!serialNumbers.IsNullOrEmpty())
{
var th = KiviiContext.NewThread(() =>
{
serialNumbers.AutoBizMark(50, "智慧记账自动标记");
});
th.Start();
}
}
return true;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment