|
|
|
@ -28,63 +28,48 @@ namespace BWP.B3QingDaoWanFu.TypeIOCs |
|
|
|
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
[TypeIOC(typeof(StatPayBL), typeof(StatPayBL.BaseBLIOCs.AfterInsert))] |
|
|
|
public class StatPayAfterInsertBLTypeIoc : StatPayBL.BaseBLIOCs.AfterInsert |
|
|
|
[TypeIOC(typeof(StatPayBL), typeof(StatPayBL.BaseBLIOCs.BeforeInsert))] |
|
|
|
public class StatPayAfterInsertBLTypeIoc : StatPayBL.BaseBLIOCs.BeforeInsert |
|
|
|
{ |
|
|
|
public void Invoke(IDmoContext context, StatPay dmo) |
|
|
|
{ |
|
|
|
if (dmo.Weigh_ID == null) |
|
|
|
return; |
|
|
|
var details = GetFarmerDetail(context.Session, dmo.Weigh_ID.Value); |
|
|
|
var total = details.Sum(x => x.Item2 ?? 0); |
|
|
|
var details = GetFarmerDetails(dmo.Weigh_ID.Value); |
|
|
|
foreach (var detail in details) |
|
|
|
{ |
|
|
|
var arr = new List<Tuple<string, object>>(); |
|
|
|
if (total != 0) |
|
|
|
if ((dmo.RealNumber ?? 0) != 0) |
|
|
|
{ |
|
|
|
var v = dmo.RealWeight * detail.Item2 / total; |
|
|
|
if (v.HasValue) |
|
|
|
detail.ExeWeight = dmo.RealWeight * detail.Number / dmo.RealNumber; |
|
|
|
var money = detail.Money; |
|
|
|
if (dmo.PurchaseType_Name == "业务" && dmo.PayTarget == 付款对象.养殖户) |
|
|
|
{ |
|
|
|
v = decimal.Round(v.Value, 2); |
|
|
|
arr.Add(new Tuple<string, object>("ExeWeight", v)); |
|
|
|
var extMoney = dmo.JingJianFee / dmo.RealNumber * detail.Number; |
|
|
|
if (extMoney.HasValue) |
|
|
|
extMoney = decimal.Round(extMoney.Value, 2); |
|
|
|
money += (extMoney ?? 0); |
|
|
|
} |
|
|
|
detail.ExtMoney = money; |
|
|
|
} |
|
|
|
if (detail.Item3 != null) |
|
|
|
{ |
|
|
|
arr.Add(new Tuple<string, object>("ExtMoney", detail.Item3)); |
|
|
|
} |
|
|
|
if (arr.Any()) |
|
|
|
UpdateProperty(detail.Item1, context.Session, arr.ToArray()); |
|
|
|
|
|
|
|
dmo.FarmerDetails.Add(detail); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
List<Tuple<long, int?, decimal?>> GetFarmerDetail(IDmoSession session, long weightID) |
|
|
|
IEnumerable<Weigh_FarmerDetail> GetFarmerDetails(long weightID) |
|
|
|
{ |
|
|
|
var query = new DQueryDom(new JoinAlias(typeof(Weigh_FarmerDetail))); |
|
|
|
var query = new DmoQuery(typeof(Weigh_FarmerDetail)); |
|
|
|
query.Where.Conditions.Add(DQCondition.EQ("Weigh_ID", weightID)); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("ID")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("Number")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("Money")); |
|
|
|
return query.EExecuteList<long, int?, decimal?>(session); |
|
|
|
} |
|
|
|
|
|
|
|
void UpdateProperty(long id, IDmoSession session, params Tuple<string, object>[] par) |
|
|
|
{ |
|
|
|
var update = new DQUpdateDom(typeof(Weigh_FarmerDetail)); |
|
|
|
update.Where.Conditions.Add(DQCondition.EQ("ID", id)); |
|
|
|
foreach (var item in par) |
|
|
|
update.Columns.Add(new DQUpdateColumn(item.Item1, item.Item2)); |
|
|
|
session.ExecuteNonQuery(update); |
|
|
|
return query.EExecuteList().Cast<Weigh_FarmerDetail>(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[TypeIOC(typeof(StatPayBL), typeof(StatPayBL.BaseBLIOCs.AfterSave))] |
|
|
|
public class StatPayAfterSaveBLTypeIoc : StatPayBL.BaseBLIOCs.AfterSave |
|
|
|
{ |
|
|
|
public void Invoke(IDmoContext context, StatPay dmo) |
|
|
|
{ |
|
|
|
CompareDetailMoney(dmo); |
|
|
|
var 死猪奖罚设置ID = 36; |
|
|
|
dmo.DeadPigRewardMoney = dmo.OtherRewardDetails.Where(x => x.Sanction_ID == 死猪奖罚设置ID).Sum(x => (x.Money ?? 0).Value); |
|
|
|
var butcherdetail = dmo.Details.FirstOrDefault(x => x.HogGrade_ID.HasValue); |
|
|
|
@ -110,6 +95,35 @@ namespace BWP.B3QingDaoWanFu.TypeIOCs |
|
|
|
if (dmo.ActualPrice.HasValue) |
|
|
|
dmo.ActualPrice = decimal.Round(dmo.ActualPrice.Value.Value, 2); |
|
|
|
} |
|
|
|
|
|
|
|
if (dmo.ID == 0) |
|
|
|
{ |
|
|
|
foreach (var item in dmo.FarmerDetails) |
|
|
|
context.Session.Update(item); |
|
|
|
dmo.FarmerDetails.Clear(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void CompareDetailMoney(StatPay dmo) |
|
|
|
{ |
|
|
|
if (dmo.ID == 0) |
|
|
|
return; |
|
|
|
foreach (var detail in dmo.FarmerDetails) |
|
|
|
{ |
|
|
|
if ((dmo.RealNumber ?? 0) != 0) |
|
|
|
{ |
|
|
|
detail.ExeWeight = dmo.RealWeight * detail.Number / dmo.RealNumber; |
|
|
|
var money = detail.Money; |
|
|
|
if (dmo.PurchaseType_Name == "业务" && dmo.PayTarget == 付款对象.养殖户) |
|
|
|
{ |
|
|
|
var extMoney = dmo.JingJianFee / dmo.RealNumber * detail.Number; |
|
|
|
if (extMoney.HasValue) |
|
|
|
extMoney = decimal.Round(extMoney.Value, 2); |
|
|
|
money += (extMoney ?? 0); |
|
|
|
} |
|
|
|
detail.ExtMoney = money; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |