Commit b069c70d by 陶然

优化

parent 3946dc4a
......@@ -38,7 +38,6 @@ namespace Kivii.Finances.Transforms
(settlements.ConvertAll(o => o.Currency).Distinct().ToList().Count != 1).ThrowIfTrue("存在不相符的货币单位!");
var currency = settlements.ConvertAll(o => o.Currency).Distinct().ToList()[0];
(currency == CurrencyUnit.Unsupported).ThrowIfTrue("不支持的货币单位!");
var amountSettlement = settlements.Sum(o => o.Amount);
var amountSettlementPlan = settlements.Sum(o => o.AmountPlan);
var amountPayed = settlements.Sum(o => o.AmountPayment);
......
......@@ -41,6 +41,12 @@ namespace Kivii.Finances.Transforms
List<Settlement> settlementsOffsetPreUpdate = new List<Settlement>();
List<Settlement> settlementsOffsetPreInsert = new List<Settlement>();
var queryBillKvids = connF.From<BillDetail>();
queryBillKvids.SelectDistinct(o => o.BillKvid);
queryBillKvids.Where(o => Sql.In(o.BizKvid, settlements.ConvertAll(p => p.Kvid)));
//查出所有的Bill Kvid集合
var billKvids = connF.Column<Guid>(queryBillKvids);
var queryPays =connF.From<Pay>();
queryPays.Where(o => o.BizType == typeof(Settlement).FullName && Sql.In(o.BizKvid, Kvids));
var allPays = connF.Select(queryPays);
......@@ -224,6 +230,13 @@ namespace Kivii.Finances.Transforms
connE.Insert(entitySettlement);
}
}
if (!billKvids.IsNullOrEmpty())
{
var updateBills = connE.From<Bill>();
updateBills = updateBills.Update(o => o.Summary);
updateBills = updateBills.Where(o => Sql.In(o.Kvid, billKvids));
connE.UpdateOnly<Bill>(new Bill { Summary = "当前账单结算项目可能被删除或作废,请查看详情或重新制作账单!" }, updateBills);
}
tranE?.Commit();
tranF?.Commit();
}
......
......@@ -150,7 +150,7 @@ namespace Kivii.Finances.Transforms
var connF = KiviiContext.GetOpenedDbConnection<Settlement>();
var connE = KiviiContext.GetOpenedDbConnection<G>();
var rtns = new RestfulCreateResponse<Settlement>();
var rtns = new RestfulUpdateResponse<Settlement>();
rtns.Results = new List<Settlement>();
#region 合并数据库连接,并启用事务
......@@ -412,7 +412,7 @@ namespace Kivii.Finances.Transforms
var updateBills = connE.From<Bill>();
updateBills = updateBills.Update(o => o.Summary);
updateBills = updateBills.Where(o => Sql.In(o.Kvid, billKvids));
connE.UpdateOnly<Bill>(new Bill { Summary = "账单内容发生变动,请核查!" }, updateBills);
connE.UpdateOnly<Bill>(new Bill { Summary = "当前账单结算项目可能被删除或作废,请查看详情或重新制作账单!" }, updateBills);
}
#endregion
......@@ -625,4 +625,55 @@ namespace Kivii.Finances.Transforms
return rtns;
}
}
[Api(Description = "结算业务查询")]
[RequiresAnyRole(SystemRoles.Everyone)]
public class SettlementQueryBiz : RestfulExecution<Settlement>
{
#region QueryArgs
public virtual int? Skip { get; set; }
public virtual int? Take { get; set; }
public virtual string OrderBy { get; set; }
public string OrderByDesc { get; set; }
public virtual string Include { get; set; }
public virtual string Fields { get; set; }
public string QueryKeys { get; set; }
public string QueryValues { get; set; }
#endregion
public Guid PaymentKvid { get; set; }
[ApiMember(Description ="付款Kvid集合")]//收款登记的Payment(PaymentType.DynamicPay),通过当前Payment可以查到对应收款登记的是哪些结算项
public List<Guid> PaymentKvids { get; set; }
public override object OnExecution(IRequest req, IResponse res)
{
(PaymentKvid == Guid.Empty && PaymentKvids.IsNullOrEmpty()).ThrowIfTrue("请传入PaymentKvid");
if (PaymentKvids.IsNullOrEmpty()) PaymentKvids = new List<Guid>();
if (PaymentKvid != Guid.Empty) PaymentKvids.Add(PaymentKvid);
var conn = KiviiContext.GetOpenedDbConnection<Settlement>();
var dynamicParams = Request.GetRequestParams();
var autoQuery = Request.TryResolve<IAutoQueryDb>();
autoQuery.IncludeTotal = true;
var request = new RestfulQuery<Settlement>();
request = request.PopulateWith(this);
var sqlExpress = autoQuery.CreateQuery(Request, conn, request, dynamicParams);
var queryPays = conn.From<Pay>();
queryPays.Where(o => o.FromType == PayType.Payment && o.BizType == typeof(Settlement).FullName && o.OffsetKvid == Guid.Empty && Sql.In(o.FromKvid, PaymentKvids));
queryPays.Select(o => o.BizKvid);
sqlExpress.Where(o => Sql.In(o.Kvid, queryPays));
var rtns = autoQuery.Execute(Request, conn, request, sqlExpress);
return rtns;
}
}
}
\ No newline at end of file
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