diff --git a/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs b/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs index c42f79a..1313b2f 100644 --- a/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs @@ -74,6 +74,44 @@ namespace BWP.B3ClientService.Rpcs.BillRpc return serializer.Serialize(result); } + [Rpc] + public static Tuple GetEveryNumberTuple(DateTime date) + { + var main = new JoinAlias(typeof(WeightBill)); + var detail = new JoinAlias(typeof(WeightBill_Detail)); + var relate = new JoinAlias(typeof(WeightBillShowRelate)); + var query = new DQueryDom(main); + query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.And(DQCondition.EQ(main, "ID", detail, "WeightBill_ID"), DQCondition.EQ(detail, "DeleteState", false))); + query.From.AddJoin(JoinType.Left, new DQDmoSource(relate), DQCondition.EQ(main, "ID", relate, "WeightBill_ID")); + var already = OrderDetailTemp.Register(query, main); + var hurry = HurryOrderTemp.Register(query, main, true); + query.Columns.Add(DQSelectColumn.Field("Show", relate)); + query.Columns.Add(DQSelectColumn.Sum(detail, "Number")); + var alreadyNumber = DQExpression.Add(DQExpression.IfNull(DQExpression.Field(already, "Number"), DQExpression.Value(0)), DQExpression.IfNull(DQExpression.Field(hurry, "Number"), DQExpression.Value(0))); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(alreadyNumber), "Already")); + query.GroupBy.Expressions.Add(DQExpression.Field(relate, "Show")); + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.Between("WeighTime", date.Date, date.Date + new TimeSpan(23, 59, 29)), DQCondition.InEQ("HouseNames", ""))); + query.Where.Conditions.Add(DQCondition.InEQ(DQExpression.IfNull(DQExpression.Field(detail, "Number"), DQExpression.Value(0)), alreadyNumber)); + var n1 = 0; + var n2 = 0; + using (var session = Dmo.NewSession()) + { + using (var reader = session.ExecuteReader(query)) + { + while (reader.Read()) + { + var last = Convert.ToInt32(reader[1] ?? 0) - Convert.ToInt32(reader[2] ?? 0); + var type = (bool?)reader[0]; + if (type == false) + n2 = last; + else + n1 += last; + } + } + } + return new Tuple(n1, n2); + } + class OrderDetailTemp { public long WeightBill_ID { get; set; }