diff --git a/B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs b/B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs index 272212f..e30bf26 100644 --- a/B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs +++ b/B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs @@ -8,7 +8,7 @@ using System.Threading.Tasks; namespace BWP.B3ClientService.BO { [Serializable] - public class OrderDetail : SyncBill + public class OrderDetail : SyncBill,IWithRowVersion { public long? AccountingUnit_ID { get; set; } @@ -47,5 +47,8 @@ namespace BWP.B3ClientService.BO [DbColumn(DefaultValue = 0)] public bool IsDrop { get; set; } + + [DbColumn(DefaultValue = 0)] + public int RowVersion { get; set; } } } diff --git a/B3ClientService/BO/Bill/SecondOrder/SecondOrder.cs b/B3ClientService/BO/Bill/SecondOrder/SecondOrder.cs index 7dbdf44..7ac8162 100644 --- a/B3ClientService/BO/Bill/SecondOrder/SecondOrder.cs +++ b/B3ClientService/BO/Bill/SecondOrder/SecondOrder.cs @@ -10,7 +10,7 @@ using TSingSoft.WebPluginFramework; namespace BWP.B3ClientService.BO { [Serializable] - public class SecondOrder : Base + public class SecondOrder : Base, IWithRowVersion { public bool Sync { get; set; } @@ -35,5 +35,8 @@ namespace BWP.B3ClientService.BO public bool Finish { get; set; } public bool FinishGrade { get; set; } + + [DbColumn(DefaultValue = 0)] + public int RowVersion { get; set; } } } diff --git a/B3ClientService/Rpcs/BillRpc/DropPigRpc.cs b/B3ClientService/Rpcs/BillRpc/DropPigRpc.cs index cdf65c4..c208538 100644 --- a/B3ClientService/Rpcs/BillRpc/DropPigRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/DropPigRpc.cs @@ -72,6 +72,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc update.Columns.Add(new DQUpdateColumn("PlanNumber", DQExpression.Subtract(DQExpression.Field("PlanNumber"), DQExpression.Value(number)))); update.Columns.Add(new DQUpdateColumn("Sync", false)); update.Columns.Add(new DQUpdateColumn("ModifyTime", DateTime.Now)); + update.Columns.Add(new DQUpdateColumn("RowVersion", DQExpression.Add(DQExpression.Field("RowVersion"), DQExpression.Value(1)))); update.Where.Conditions.Add(DQCondition.EQ("ID", id)); session.ExecuteNonQuery(update); } @@ -89,6 +90,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc update.Columns.Add(new DQUpdateColumn("HotFadeNumber", DQExpression.Subtract(DQExpression.Field("HotFadeNumber"), DQExpression.Value(number)))); update.Columns.Add(new DQUpdateColumn("Sync", false)); update.Columns.Add(new DQUpdateColumn("ModifyTime", DateTime.Now)); + update.Columns.Add(new DQUpdateColumn("RowVersion", DQExpression.Add(DQExpression.Field("RowVersion"), DQExpression.Value(1)))); update.Where.Conditions.Add(DQCondition.EQ("ID", info.Item1.Value)); session.ExecuteNonQuery(update); var iDetail = new SecondOrder_Detail(); diff --git a/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs b/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs index fe80cc0..770745b 100644 --- a/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs @@ -260,6 +260,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc update.Columns.Add(new DQUpdateColumn(property, value)); update.Columns.Add(new DQUpdateColumn("Sync", false)); update.Columns.Add(new DQUpdateColumn("ModifyTime", DateTime.Now)); + update.Columns.Add(new DQUpdateColumn("RowVersion", DQExpression.Add(DQExpression.Field("RowVersion"), DQExpression.Value(1)))); update.Where.Conditions.Add(DQCondition.EQ("ID", id)); session.ExecuteNonQuery(update); } @@ -314,6 +315,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc update.Columns.Add(new DQUpdateColumn("Order", DQExpression.Add(DQExpression.Field("Order"), DQExpression.Value(offset)))); update.Columns.Add(new DQUpdateColumn("Sync", false)); update.Columns.Add(new DQUpdateColumn("ModifyTime", DateTime.Now)); + update.Columns.Add(new DQUpdateColumn("RowVersion", DQExpression.Add(DQExpression.Field("RowVersion"), DQExpression.Value(1)))); update.Where.Conditions.Add(DQCondition.And(DQCondition.GreaterThan("Order", greaterThanOrder), DQCondition.EQ("Date", date), DQCondition.EQ("DeleteState", false))); session.ExecuteNonQuery(update); } @@ -377,6 +379,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc var update = new DQUpdateDom(typeof(OrderDetail)); update.Where.Conditions.Add(DQCondition.EQ("ID", ID)); update.Columns.Add(new DQUpdateColumn("Sync", false)); + update.Columns.Add(new DQUpdateColumn("RowVersion", DQExpression.Add(DQExpression.Field("RowVersion"), DQExpression.Value(1)))); update.Columns.Add(new DQUpdateColumn("PlanNumber", DQExpression.Add(DQExpression.Field("PlanNumber"), DQExpression.Value(subNumber)))); session.ExecuteNonQuery(update); } diff --git a/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs b/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs index 5f81562..e8ebd77 100644 --- a/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs @@ -113,6 +113,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc update.Where.Conditions.Add(DQCondition.EQ("ID", id)); update.Columns.Add(new DQUpdateColumn("Sync", false)); update.Columns.Add(new DQUpdateColumn("ModifyTime", DateTime.Now)); + update.Columns.Add(new DQUpdateColumn("RowVersion", DQExpression.Add(DQExpression.Field("RowVersion"), DQExpression.Value(1)))); update.Columns.Add(new DQUpdateColumn("HotFadeNumber", DQExpression.Add(DQExpression.Field("HotFadeNumber"), DQExpression.Value(number)))); session.ExecuteNonQuery(update); } @@ -138,6 +139,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc update.Where.Conditions.Add(DQCondition.EQ("ID", id)); update.Columns.Add(new DQUpdateColumn("Sync", false)); update.Columns.Add(new DQUpdateColumn("ModifyTime", DateTime.Now)); + update.Columns.Add(new DQUpdateColumn("RowVersion", DQExpression.Add(DQExpression.Field("RowVersion"), DQExpression.Value(1)))); update.Columns.Add(new DQUpdateColumn("IsOk", true)); update.Columns.Add(new DQUpdateColumn("Finish", true)); session.ExecuteNonQuery(update); diff --git a/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs b/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs index 6cdd418..dd28d69 100644 --- a/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs @@ -227,6 +227,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc var update = new DQUpdateDom(typeof(WeightBill)); update.Columns.Add(new DQUpdateColumn("DeleteState", true)); update.Columns.Add(new DQUpdateColumn("Sync", false)); + update.Columns.Add(new DQUpdateColumn("RowVersion", DQExpression.Add(DQExpression.Field("RowVersion"), DQExpression.Value(1)))); update.Where.Conditions.Add(DQCondition.EQ("ID", id)); session.ExecuteNonQuery(update); diff --git a/B3ClientService/Tasks/UpdateLoad/UpLoadWeightBill.cs b/B3ClientService/Tasks/UpdateLoad/UpLoadWeightBill.cs index 5020974..ef18093 100644 --- a/B3ClientService/Tasks/UpdateLoad/UpLoadWeightBill.cs +++ b/B3ClientService/Tasks/UpdateLoad/UpLoadWeightBill.cs @@ -49,8 +49,8 @@ namespace BWP.B3ClientService.Tasks.UpdateLoad var money = 0m; if (back.SectionDetails != null) money = back.SectionDetails.Sum(x => x.Item2 ?? 0); - SetBillAsSynced(item.ID, item.B3ID.Value, money, context.Session); - + SetBackInfoToBill(item.ID, item.B3ID.Value, money, context.Session); + SetBillAsSync(item.ID, item.RowVersion, context.Session); context.Commit(); } } @@ -132,16 +132,23 @@ namespace BWP.B3ClientService.Tasks.UpdateLoad Delete("WeightBill_ID", mainID, session, true); } - static void SetBillAsSynced(long id, long B3ID, decimal money, IDmoSession session) + static void SetBackInfoToBill(long id, long B3ID, decimal money, IDmoSession session) { var update = new DQUpdateDom(typeof(WeightBill)); - update.Columns.Add(new DQUpdateColumn("Sync", true)); update.Columns.Add(new DQUpdateColumn("B3ID", B3ID)); update.Columns.Add(new DQUpdateColumn("SanctionMoney", money)); update.Where.Conditions.Add(DQCondition.EQ("ID", id)); session.ExecuteNonQuery(update); } + static void SetBillAsSync(long id, int rowVersion, IDmoSession session) + { + var update = new DQUpdateDom(typeof(WeightBill)); + update.Columns.Add(new DQUpdateColumn("Sync", true)); + update.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("ID", id), DQCondition.EQ("RowVersion", rowVersion))); + session.ExecuteNonQuery(update); + } + static IEnumerable GetDetails(long id) { var query = new DmoQuery(typeof(T)); diff --git a/B3ClientService/Tasks/UpdateLoad/UploadOrderDetail.cs b/B3ClientService/Tasks/UpdateLoad/UploadOrderDetail.cs index f77f635..4501600 100644 --- a/B3ClientService/Tasks/UpdateLoad/UploadOrderDetail.cs +++ b/B3ClientService/Tasks/UpdateLoad/UploadOrderDetail.cs @@ -68,7 +68,8 @@ namespace BWP.B3ClientService.Tasks.UpdateLoad { Update(item, context.Session); } - SetAllItemAsSync(context.Session, group.Select(x => DQExpression.Value(x.ID))); + foreach (var item in group) + SetItemAsSync(context.Session, item.ID, item.RowVersion); #endregion context.Commit(); @@ -110,11 +111,11 @@ namespace BWP.B3ClientService.Tasks.UpdateLoad session.ExecuteNonQuery(update); } - static void SetAllItemAsSync(IDmoSession session, IEnumerable ids) + static void SetItemAsSync(IDmoSession session, long id, int rowVersion) { var update = new DQUpdateDom(typeof(OrderDetail)); update.Columns.Add(new DQUpdateColumn("Sync", true)); - update.Where.Conditions.Add(DQCondition.InList(DQExpression.Field("ID"), ids.ToArray())); + update.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("ID", id), DQCondition.EQ("RowVersion", rowVersion))); session.ExecuteNonQuery(update); } } diff --git a/B3ClientService/Tasks/UpdateLoad/UploadSecondOrder.cs b/B3ClientService/Tasks/UpdateLoad/UploadSecondOrder.cs index 776e2ad..ad08be7 100644 --- a/B3ClientService/Tasks/UpdateLoad/UploadSecondOrder.cs +++ b/B3ClientService/Tasks/UpdateLoad/UploadSecondOrder.cs @@ -30,14 +30,14 @@ namespace BWP.B3ClientService.Tasks.UpdateLoad { var sync = serializer.Serialize(new CTuple(item.Item1, item.Item2)); bwpClient.Call("/MainSystem/B3ButcherManage/Rpcs/ButcherOrderRpc/UpdateHotFadeNumber", sync); - SetSyncd(context.Session, item.Item1); + SetSyncd(context.Session, item.Item4, item.Item5); context.Commit(); } } } } - private static List> GetAllNeedSyncBill() + private static List> GetAllNeedSyncBill() { var main = new JoinAlias(typeof(SecondOrder)); var order = new JoinAlias(typeof(OrderDetail)); @@ -46,16 +46,18 @@ namespace BWP.B3ClientService.Tasks.UpdateLoad query.Columns.Add(DQSelectColumn.Field("OrderDetail_ID")); query.Columns.Add(DQSelectColumn.Field("HotFadeNumber")); query.Columns.Add(DQSelectColumn.Field("Creator", order)); + query.Columns.Add(DQSelectColumn.Field("ID")); + query.Columns.Add(DQSelectColumn.Field("RowVersion")); query.OrderBy.Expressions.Add(DQOrderByExpression.Create("OrderDetail_ID")); query.Where.Conditions.Add(DQCondition.And(DQCondition.IsNotNull(DQExpression.Field(order, "B3ID")), DQCondition.EQ(main, "IsOk", true), DQCondition.EQ(main, "Sync", false))); - return query.EExecuteList().Select(x => new CTuple(x.Item1, x.Item2, x.Item3)).ToList(); + return query.EExecuteList(); } - static void SetSyncd(IDmoSession session, long orderDetailID) + static void SetSyncd(IDmoSession session, long id, int rowVersion) { var update = new DQUpdateDom(typeof(SecondOrder)); update.Columns.Add(new DQUpdateColumn("Sync", true)); - update.Where.Conditions.Add(DQCondition.EQ("OrderDetail_ID", orderDetailID)); + update.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("ID", id), DQCondition.EQ("RowVersion", rowVersion))); session.ExecuteNonQuery(update); } }