Commit c5c35d0e by 陶然

优化

parent 84f2e5cb
...@@ -215,7 +215,6 @@ namespace Kivii.Finances.Entities ...@@ -215,7 +215,6 @@ namespace Kivii.Finances.Entities
public DateTime OperateTime { get; set; } public DateTime OperateTime { get; set; }
[ApiMember(Description = "支付日期")] [ApiMember(Description = "支付日期")]
[InternalSetter]
public DateTime? PayedTime { get; set; } public DateTime? PayedTime { get; set; }
[IgnoreUpdate] [IgnoreUpdate]
......
...@@ -217,6 +217,10 @@ namespace Kivii.Finances.Entities ...@@ -217,6 +217,10 @@ namespace Kivii.Finances.Entities
[StringLength(2000), Default("")] [StringLength(2000), Default("")]
public string Remark { get; set; } public string Remark { get; set; }
#endregion #endregion
[Ignore]
public List<InvoiceApplyDetail> Details { get; set; }
} }
public enum InvoiceApplyType public enum InvoiceApplyType
......
...@@ -152,7 +152,6 @@ namespace Kivii.Finances.Entities ...@@ -152,7 +152,6 @@ namespace Kivii.Finances.Entities
#region 文本 摘要 备注 #region 文本 摘要 备注
[ApiMember(Description = "摘要,最大500字")] [ApiMember(Description = "摘要,最大500字")]
[IgnoreUpdate]
[StringLength(500), Default("")] [StringLength(500), Default("")]
public string Summary { get; set; } public string Summary { get; set; }
......
...@@ -89,8 +89,32 @@ namespace Kivii.Finances.Transforms ...@@ -89,8 +89,32 @@ namespace Kivii.Finances.Transforms
{ } { }
[RequiresAnyRole(SystemRoles.Everyone)] [RequiresAnyRole(SystemRoles.Everyone)]
public class InvoiceUpdate : RestfulUpdate<Invoice>
{
}
[RequiresAnyRole(SystemRoles.Everyone)]
public class InvoiceRead : RestfulRead<Invoice> public class InvoiceRead : RestfulRead<Invoice>
{ } {
public bool IncludeDetail { get; set; }
public override bool OnPostRestfulRead(IRequest req, IResponse res, System.Data.IDbConnection dbConnection, IRestfulReadResponse<Invoice> rtns)
{
if (IncludeDetail)
{
var details = dbConnection.Select<InvoiceDetail>(o => o.InvoiceKvid == Kvid);
rtns.Result.Details = new List<InvoiceDetail>();
foreach (var item in details)
{
var detail = new InvoiceDetail();
detail.PopulateWith(item);
rtns.Result.Details.Add(detail);
}
}
return base.OnPostRestfulRead(req, res, dbConnection, rtns);
}
}
[Api(Description = "插入发票")] [Api(Description = "插入发票")]
[RequiresAnyRole(SystemRoles.Everyone)] [RequiresAnyRole(SystemRoles.Everyone)]
...@@ -119,7 +143,6 @@ namespace Kivii.Finances.Transforms ...@@ -119,7 +143,6 @@ namespace Kivii.Finances.Transforms
(Payments.Exists(o => o.Kvid == Guid.Empty)).ThrowIfTrue("不存在的到账信息!"); (Payments.Exists(o => o.Kvid == Guid.Empty)).ThrowIfTrue("不存在的到账信息!");
(Payments.Exists(o => o.Amount <= 0)).ThrowIfTrue("未指定到账开票金额!"); (Payments.Exists(o => o.Amount <= 0)).ThrowIfTrue("未指定到账开票金额!");
(Payments.Sum(o => o.Amount) != Items.Sum(o => o.Amount)).ThrowIfTrue("到账开票金额和发票金额不一致!"); (Payments.Sum(o => o.Amount) != Items.Sum(o => o.Amount)).ThrowIfTrue("到账开票金额和发票金额不一致!");
} }
var conn = KiviiContext.GetOpenedDbConnection<Invoice>(); var conn = KiviiContext.GetOpenedDbConnection<Invoice>();
(conn.Exists<Invoice>(o => Sql.In(o.SerialNumber, Items.ConvertAll(p => p.SerialNumber)))).ThrowIfTrue("存在重复录入的发票信息"); (conn.Exists<Invoice>(o => Sql.In(o.SerialNumber, Items.ConvertAll(p => p.SerialNumber)))).ThrowIfTrue("存在重复录入的发票信息");
......
...@@ -134,6 +134,70 @@ namespace Kivii.Finances.Transforms ...@@ -134,6 +134,70 @@ namespace Kivii.Finances.Transforms
} }
} }
[Api(Description = "泛型结算更新")]
[RequiresAnyRole(SystemRoles.Everyone)]
public class SettlementUpdate : RestfulExecutionGeneric<Settlement>
{
public Settlement Item { get; set; }
public List<Settlement> Items { get; set; }
public override object OnExecutionGeneric<G>(IRequest req, IResponse res)
{
(Item == null && Items.IsNullOrEmpty()).ThrowIfTrue("请传入要结算的内容!");
if (Items.IsNullOrEmpty()) Items = new List<Settlement>();
if (Item != null) Items.Add(Item);
var connF = KiviiContext.GetOpenedDbConnection<Settlement>();
var connE = KiviiContext.GetOpenedDbConnection<G>();
var rtns = new RestfulCreateResponse<Settlement>();
rtns.Results = new List<Settlement>();
#region 合并数据库连接,并启用事务
IDbTransaction tranE = null, tranF = null;
if (connE.ConnectionString == connF.ConnectionString)
{
connF.Close();
connF = connE;
tranE = connE.OpenTransaction();
}
else
{
tranE = connE.OpenTransaction();
tranF = connF.OpenTransaction();
}
#endregion
try
{
foreach (var item in Items)
{
if (item.OnlyProperties.IsNullOrEmpty()) continue;
item.OnlyProperties.RemoveAll(o => o != "Remark" && o != "Summary");
if (item.OnlyProperties.IsNullOrEmpty()) continue;
connF.UpdateOnly(item);
rtns.Results.Add(item);
if (typeof(G) != typeof(Settlement))
{
var entitySettlement = new EntitySettlement<G>();
entitySettlement.PopulateInstance(item);
connE.UpdateOnly(entitySettlement);
}
}
tranE?.Commit();
tranF?.Commit();
}
catch (Exception ex)
{
tranE?.Rollback();
tranF?.Rollback();
throw ex;
}
return rtns;
}
}
[Api(Description = "结算读取")] [Api(Description = "结算读取")]
[RequiresAnyRole(SystemRoles.Everyone)] [RequiresAnyRole(SystemRoles.Everyone)]
public class SettlementRead : RestfulExecutionGeneric<Settlement> public class SettlementRead : RestfulExecutionGeneric<Settlement>
......
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