diff --git a/B3ClientService/BO/Bill/WeightBill/WeightBill.cs b/B3ClientService/BO/Bill/WeightBill/WeightBill.cs index 216e7de..28ccf1b 100644 --- a/B3ClientService/BO/Bill/WeightBill/WeightBill.cs +++ b/B3ClientService/BO/Bill/WeightBill/WeightBill.cs @@ -76,15 +76,15 @@ namespace BWP.B3ClientService.BO [DbColumn(DefaultValue = 0)] public bool AlreadyHouse { get; set; } - private readonly WeightBill_DetailCollection mDetails = new WeightBill_DetailCollection(); + private WeightBill_DetailCollection mDetails = new WeightBill_DetailCollection(); [OneToMany(typeof(WeightBill_Detail), "ID")] [Join("ID", "WeightBill_ID")] - public WeightBill_DetailCollection Details { get { return mDetails; } } + public WeightBill_DetailCollection Details { get { return mDetails; } set { mDetails = value; } } - private readonly WeightBill_FarmerDetailCollection mFarmerDetails = new WeightBill_FarmerDetailCollection(); + private WeightBill_FarmerDetailCollection mFarmerDetails = new WeightBill_FarmerDetailCollection(); [OneToMany(typeof(WeightBill_FarmerDetail), "ID")] [Join("ID", "WeightBill_ID")] - public WeightBill_FarmerDetailCollection FarmerDetails { get { return mFarmerDetails; } } + public WeightBill_FarmerDetailCollection FarmerDetails { get { return mFarmerDetails; } set { mFarmerDetails = value; } } private readonly WeightBill_HouseDetailCollection mHouseDetails = new WeightBill_HouseDetailCollection(); [OneToMany(typeof(WeightBill_HouseDetail), "ID")] diff --git a/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs b/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs index d9dc115..b14dc92 100644 --- a/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs @@ -24,7 +24,27 @@ namespace BWP.B3ClientService.Rpcs.BillRpc if (dmo.ID == 0) session.Insert(dmo); else + { + foreach (var item in dmo.FarmerDetails) + { + if (item.ID == 0) + session.Insert(item); + else + session.Update(item); + } + + foreach (var item in dmo.Details) + { + if (item.ID == 0) + session.Insert(item); + else + session.Update(item); + } + dmo.FarmerDetails = new WeightBill_FarmerDetailCollection(); + dmo.Details = new WeightBill_DetailCollection(); session.Update(dmo); + + } session.Commit(); } var result = new BackRpcObj(); @@ -33,7 +53,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc foreach (var d in dmo.Details) details.DetailBack.Add(new BackRpcObj() { Flag = d.Index.ToString(), ID = d.ID }); result.DetailBack.Add(details); - var farmerDetails = new BackRpcObj() { Flag = "Details" }; + var farmerDetails = new BackRpcObj() { Flag = "FarmerDetails" }; foreach (var d in dmo.FarmerDetails) farmerDetails.DetailBack.Add(new BackRpcObj() { Flag = d.Index.ToString(), ID = d.ID }); result.DetailBack.Add(farmerDetails); @@ -66,14 +86,14 @@ namespace BWP.B3ClientService.Rpcs.BillRpc return GetSyncBaseB3Ids(ids); } - [Rpc] + [Rpc] public static List> SyncWeightDetailB3Ids(List ids) { return GetSyncBaseB3Ids(ids); } - + [Rpc] - public static List> SyncFarmerDetailB3Ids(List ids) + public static List> SyncFarmerDetailB3Ids(List ids) { return GetSyncBaseB3Ids(ids); } @@ -90,7 +110,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc [Rpc] - public static List GetNoHouseInfoWeightBills(DateTime date) + public static List GetNoHouseInfoWeightBills(DateTime date) { var query = new DQueryDom(new JoinAlias(typeof(WeightBill))); query.Where.Conditions.Add(DQCondition.And(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.Between("WeighTime", date.Date, date.Date + new TimeSpan(23, 59, 29))))); @@ -99,19 +119,35 @@ namespace BWP.B3ClientService.Rpcs.BillRpc query.Columns.Add(DQSelectColumn.Field("Supplier_Name")); query.Columns.Add(DQSelectColumn.Field("AlreadyHouse")); var result = query.EExecuteList(); - var list = new List(); + var list = new List(); foreach (var item in result) { + var bill = new WeightWithHouseDetail(); var entity = new WeightBill(); - list.Add(entity); + bill.Bill = entity; + list.Add(bill); entity.ID = item.Item1; entity.B3ID = item.Item2; entity.Supplier_Name = item.Item3; entity.AlreadyHouse = item.Item4; } + var details = GetWeillHouseDetail(list.Select(x =>x.Bill.ID)); + foreach (var item in list) + { + var tags = details.Where(x => x.WeightBill_ID == item.Bill.ID); + if (tags.Any()) + item.Detail = tags.ToArray(); + } return list; } + static IEnumerable GetWeillHouseDetail(IEnumerable billIDs) + { + var query = new DmoQuery(typeof(WeightBill_HouseDetail)); + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.InList(DQExpression.Field("WeightBill_ID"), billIDs.Select(x => DQExpression.Value(x)).ToArray()))); + return query.EExecuteList().Cast(); + } + [Rpc] public static int InsertWeightBillHouseDetail(WeightBill bo) { @@ -153,4 +189,13 @@ namespace BWP.B3ClientService.Rpcs.BillRpc return Convert.ToInt32(result); } } + + [RpcObject] + public class WeightWithHouseDetail + { + public WeightBill Bill { get; set; } + + + public WeightBill_HouseDetail[] Detail { get; set; } + } }