diff --git a/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs b/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs index cf1c65c..bf14542 100644 --- a/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs @@ -153,7 +153,8 @@ namespace BWP.B3ClientService.Rpcs.BillRpc query.Columns.Add(DQSelectColumn.Field("LiveColonyHouse_Name")); query.Columns.Add(DQSelectColumn.Field("IsHurryButcher")); query.Columns.Add(DQSelectColumn.Field("B3WeighBill_ID")); - query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Date", date), DQCondition.EQ("DeleteState", false), DQCondition.EQ("SecondarySplit", false))); + query.Columns.Add(DQSelectColumn.Field("SecondarySplit")); + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Date", date), DQCondition.EQ("DeleteState", false))); if (minOrder.HasValue) query.Where.Conditions.Add(DQCondition.GreaterThanOrEqual("Order", minOrder)); var list = new List(); @@ -171,6 +172,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc entity.LiveColonyHouse_Name = (string)reader[4]; entity.IsHurryButcher = (bool)reader[5]; entity.B3WeighBill_ID = (long?)reader[6]; + entity.SecondarySplit = (bool)reader[7]; list.Add(entity); } } @@ -201,9 +203,10 @@ namespace BWP.B3ClientService.Rpcs.BillRpc { insert = insert.ESerializeDateTime(); var entity = serializer.Deserialize(insert); - entity.ModifyTime = DateTime.Now; using (var session = Dmo.NewSession()) { + CheckCanInsert(session, entity.Order, entity.Date.Value); + entity.ModifyTime = DateTime.Now; UpdateOrder(session, entity.Order - 1, 1, entity.Date); session.Insert(entity); session.Commit(); @@ -211,6 +214,16 @@ namespace BWP.B3ClientService.Rpcs.BillRpc return entity.ID; } + static void CheckCanInsert(IDmoSession session, int order, DateTime date) + { + var query = new DQueryDom(new JoinAlias(typeof(OrderDetail))); + query.Range = SelectRange.Top(1); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Value(1), "c")); + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Date", date), DQCondition.EQ("DeleteState", false), DQCondition.EQ("SecondarySplit", true), DQCondition.GreaterThanOrEqual("Order", order))); + if (query.EExecuteScalar(session) != null) + throw new Exception("不允许插入到已进行烫毛计数顺序之前"); + } + static void UpdateOrderDetailPartial(IDmoSession session, long id, string property, object value) { var update = new DQUpdateDom(typeof(OrderDetail)); @@ -222,11 +235,25 @@ namespace BWP.B3ClientService.Rpcs.BillRpc } [Rpc] - public static int UpdateOrderProperty(long id, string property, object value) + public static int UpdateNum(long id, int number) + { + using (var session = Dmo.NewSession()) + { + var secondSplit = InnerBLUtil.GetDmoPropertyByID(session, typeof(OrderDetail), "SecondarySplit", id); + if (secondSplit) + throw new Exception("已进行烫毛计数,不能修改"); + UpdateOrderDetailPartial(session, id, "PlanNumber", number); + session.Commit(); + } + return 1; + } + + [Rpc] + public static int UpdateHurryFlag(long id, bool isHurryButcher) { using (var session = Dmo.NewSession()) { - UpdateOrderDetailPartial(session, id, property, value); + UpdateOrderDetailPartial(session, id, "IsHurryButcher", isHurryButcher); session.Commit(); } return 1; @@ -237,7 +264,9 @@ namespace BWP.B3ClientService.Rpcs.BillRpc { using (var session = Dmo.NewSession()) { - var entity = InnerBLUtil.GetSingleDmo(session, "ID", id, "Order", "Date"); + var entity = InnerBLUtil.GetSingleDmo(session, "ID", id, "Order", "Date", "SecondarySplit"); + if (entity.SecondarySplit) + throw new Exception("已进行烫毛计数,不能修改"); UpdateOrder(session, entity.Order, -1, entity.Date); UpdateOrderDetailPartial(session, id, "DeleteState", true); session.Commit(); @@ -265,7 +294,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.Where.Conditions.Add(DQCondition.And(DQCondition.GreaterThan("Order", greaterThanOrder), DQCondition.EQ("Date", date), DQCondition.EQ("DeleteState", false), DQCondition.EQ("SecondarySplit", false))); + update.Where.Conditions.Add(DQCondition.And(DQCondition.GreaterThan("Order", greaterThanOrder), DQCondition.EQ("Date", date), DQCondition.EQ("DeleteState", false))); session.ExecuteNonQuery(update); } } diff --git a/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs b/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs index e3bf7e0..8ad5b39 100644 --- a/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs @@ -1,4 +1,5 @@ using BWP.B3ClientService.BO; +using BWP.B3Frameworks.Utils; using Forks.EnterpriseServices.DomainObjects2; using Forks.EnterpriseServices.DomainObjects2.DQuery; using Forks.EnterpriseServices.JsonRpc; @@ -57,13 +58,14 @@ namespace BWP.B3ClientService.Rpcs.BillRpc } [Rpc] - public static long InsertDetail(string json, string mainJson) + public static long InsertDetail(string json, string mainJson, long orderDetailID) { json = json.ESerializeDateTime(); var detail = serializer.Deserialize(json); using (var session = Dmo.NewSession()) { + CheckOrderDelete(session, orderDetailID); if (detail.SecondOrder_ID == 0) { mainJson = mainJson.ESerializeDateTime(); @@ -72,6 +74,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc entity.IsOk = true; session.Insert(entity); detail.SecondOrder_ID = entity.ID; + UpdateOrderDetailHasSecondarySplit(session, entity.OrderDetail_ID); } else UpdateMainNumber(session, detail.SecondOrder_ID, detail.Number); @@ -81,8 +84,16 @@ namespace BWP.B3ClientService.Rpcs.BillRpc return detail.SecondOrder_ID; } + static void UpdateOrderDetailHasSecondarySplit(IDmoSession session, long id) + { + var update = new DQUpdateDom(typeof(OrderDetail)); + update.Columns.Add(new DQUpdateColumn("SecondarySplit", true)); + update.Where.Conditions.Add(DQCondition.EQ("ID", id)); + session.ExecuteNonQuery(update); + } + [Rpc] - public static int DetailDetail(long id, long mainID, int number) + public static int DeleteDetail(long id, long mainID, int number) { using (var session = Dmo.NewSession()) { @@ -106,10 +117,11 @@ namespace BWP.B3ClientService.Rpcs.BillRpc } [Rpc] - public static long SetFinish(long id, string json) + public static long SetFinish(long id, long orderDetailID, string json) { using (var session = Dmo.NewSession()) { + CheckOrderDelete(session, orderDetailID); if (id == 0) { var entity = serializer.Deserialize(json); @@ -129,6 +141,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc update.Columns.Add(new DQUpdateColumn("Finish", true)); session.ExecuteNonQuery(update); } + UpdateOrderDetailHasSecondarySplit(session, orderDetailID); session.Commit(); } return id; @@ -141,5 +154,12 @@ namespace BWP.B3ClientService.Rpcs.BillRpc query.Where.Conditions.Add(DQCondition.EQ("SecondOrder_ID", id)); return serializer.Serialize(query.EExecuteList().Cast().ToList()); } + + static void CheckOrderDelete(IDmoSession session, long id) + { + var delete = InnerBLUtil.GetDmoPropertyByID(session, typeof(OrderDetail), "DeleteState", id) ?? true; + if (delete) + throw new Exception("您正在操作的排宰顺序已被重新排序"); + } } }