From 7b09609df18c0db0b281467f42ec8994ae18ec33 Mon Sep 17 00:00:00 2001 From: yibo <361071264@qq.com> Date: Wed, 18 Oct 2017 15:47:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- B3ClientService/B3ClientService.csproj | 1 + .../BO/Bill/OrderDetail/HurryRecord.cs | 14 +- .../BO/Bill/OrderDetail/OrderDetail.cs | 7 +- .../BO/Bill/SecondOrder/SecondOrder.cs | 1 + .../OrderDetail/SelectHurryList.cs | 22 ++ .../Rpcs/BillRpc/OrderConfirmRpc.cs | 6 +- .../Rpcs/BillRpc/OrderDetailRpc.cs | 212 ++++++++++++------ 7 files changed, 189 insertions(+), 74 deletions(-) create mode 100644 B3ClientService/ClientSerializerBo/OrderDetail/SelectHurryList.cs diff --git a/B3ClientService/B3ClientService.csproj b/B3ClientService/B3ClientService.csproj index 40bffa7..9855860 100644 --- a/B3ClientService/B3ClientService.csproj +++ b/B3ClientService/B3ClientService.csproj @@ -100,6 +100,7 @@ + diff --git a/B3ClientService/BO/Bill/OrderDetail/HurryRecord.cs b/B3ClientService/BO/Bill/OrderDetail/HurryRecord.cs index 4ab0efc..edccaae 100644 --- a/B3ClientService/BO/Bill/OrderDetail/HurryRecord.cs +++ b/B3ClientService/BO/Bill/OrderDetail/HurryRecord.cs @@ -10,12 +10,20 @@ namespace BWP.B3ClientService.BO [Serializable] public class HurryRecord : Base { - public long FromOrderDetail_ID { get; set; } + public long WeightBill_ID { get; set; } - [ReferenceTo(typeof(OrderDetail), "B3WeighBill_ID")] - [Join("FromOrderDetail_ID", "ID")] + [ReferenceTo(typeof(WeightBill), "B3ID")] + [Join("WeightBill_ID", "ID")] public long? B3WeighBill_ID { get; set; } + [ReferenceTo(typeof(WeightBill), "Supplier_Name")] + [Join("WeightBill_ID", "ID")] + public string Supplier_Name { get; set; } + + [ReferenceTo(typeof(WeightBill), "HouseNames")] + [Join("WeightBill_ID", "ID")] + public string LiveColonyHouse_Name { get; set; } + public long? ToOrderDetail_ID { get; set; } [ReferenceTo(typeof(OrderDetail), "Order")] diff --git a/B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs b/B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs index cc318e9..8f60964 100644 --- a/B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs +++ b/B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs @@ -30,18 +30,15 @@ namespace BWP.B3ClientService.BO public int PlanNumber { get; set; } - //public int? HotFadeNumber { get; set; } - - //public int? PeelingNumber { get; set; } - public string LiveColonyHouse_Name { get; set; } public bool IsHurryButcher { get; set; } public bool SecondarySplit { get; set; } + //0 = 未开始; 10 = 已开始; 20 = 已完毕; [DbColumn(DefaultValue = 0)] - public bool Confirmed { get; set; } + public int OrderState { get; set; } [NonDmoProperty] public int HurryNumber { get; set; } diff --git a/B3ClientService/BO/Bill/SecondOrder/SecondOrder.cs b/B3ClientService/BO/Bill/SecondOrder/SecondOrder.cs index 43ce1ed..7dbdf44 100644 --- a/B3ClientService/BO/Bill/SecondOrder/SecondOrder.cs +++ b/B3ClientService/BO/Bill/SecondOrder/SecondOrder.cs @@ -28,6 +28,7 @@ namespace BWP.B3ClientService.BO public int HotFadeNumber { get; set; } + //是否可以上传B3 public bool IsOk { get; set; } [DbColumn(DefaultValue = 1)] diff --git a/B3ClientService/ClientSerializerBo/OrderDetail/SelectHurryList.cs b/B3ClientService/ClientSerializerBo/OrderDetail/SelectHurryList.cs new file mode 100644 index 0000000..a612f5e --- /dev/null +++ b/B3ClientService/ClientSerializerBo/OrderDetail/SelectHurryList.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace BWP.B3ClientService +{ + public class SelectHurryList + { + public long WeightBill_ID { get; set; } + + public long? B3WeighBill_ID { get; set; } + + public string Supplier_Name { get; set; } + + public string LiveColonyHouse_Name { get; set; } + + public int WeightNumber { get; set; } + + public int HurryNumber { get; set; } + } +} diff --git a/B3ClientService/Rpcs/BillRpc/OrderConfirmRpc.cs b/B3ClientService/Rpcs/BillRpc/OrderConfirmRpc.cs index dfb5bfe..0e35644 100644 --- a/B3ClientService/Rpcs/BillRpc/OrderConfirmRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/OrderConfirmRpc.cs @@ -50,10 +50,12 @@ namespace BWP.B3ClientService.Rpcs.BillRpc } [Rpc] - public static int SetOrderConfirmed(long id) + public static int SetOrderState(long id,int state) { + if (!(state == 0 || state == 10 || state == 20)) + throw new Exception(string.Format("错误的状态输入 {0}", state)); var update = new DQUpdateDom(typeof(OrderDetail)); - update.Columns.Add(new DQUpdateColumn("Confirmed", true)); + update.Columns.Add(new DQUpdateColumn("OrderState", state)); update.Where.Conditions.Add(DQCondition.EQ("ID", id)); update.EExecute(); return 1; diff --git a/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs b/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs index 94cda1c..074cb91 100644 --- a/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs @@ -20,20 +20,23 @@ namespace BWP.B3ClientService.Rpcs.BillRpc { static JavaScriptSerializer serializer = new JavaScriptSerializer(); + #region 排宰 [Rpc] public static string GetNeedOrderWeightBill(DateTime date, bool? showType) { 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 detail = WeightDetailTemp.Register(query, main); var already = OrderDetailTemp.Register(query, main); + var hurry = HurryOrderTemp.Register(query, main, true); query.Columns.Add(DQSelectColumn.Field("ID")); query.Columns.Add(DQSelectColumn.Field("Supplier_Name")); query.Columns.Add(DQSelectColumn.Field("HouseNames")); query.Columns.Add(DQSelectColumn.Field("Number", detail)); - query.Columns.Add(DQSelectColumn.Field("Number", already)); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Add(DQExpression.IfNull(DQExpression.Field(already, "Number"), DQExpression.Value(0)), DQExpression.IfNull(DQExpression.Field(hurry, "Number"), DQExpression.Value(0))), "Already")); query.Columns.Add(DQSelectColumn.Field("WeighTime")); query.Columns.Add(DQSelectColumn.Field("B3ID")); query.Columns.Add(DQSelectColumn.Field("Show", relate)); @@ -70,7 +73,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc return serializer.Serialize(result); } - class WeightDetailTemp + class OrderDetailTemp { public long WeightBill_ID { get; set; } @@ -78,35 +81,35 @@ namespace BWP.B3ClientService.Rpcs.BillRpc public static JoinAlias Register(DQueryDom rootQuery, JoinAlias rootAlias) { - var query = new DQueryDom(new JoinAlias(typeof(WeightBill_Detail))); + var query = new DQueryDom(new JoinAlias(typeof(OrderDetail))); query.Columns.Add(DQSelectColumn.Field("WeightBill_ID")); - query.Columns.Add(DQSelectColumn.Sum("Number")); + query.Columns.Add(DQSelectColumn.Sum("PlanNumber")); query.GroupBy.Expressions.Add(DQExpression.Field("WeightBill_ID")); query.Where.Conditions.Add(DQCondition.EQ("DeleteState", false)); - rootQuery.RegisterQueryTable(typeof(WeightDetailTemp), new string[] { "WeightBill_ID", "Number" }, query); - - var alias = new JoinAlias(typeof(WeightDetailTemp)); + rootQuery.RegisterQueryTable(typeof(OrderDetailTemp), new string[] { "WeightBill_ID", "Number" }, query); + var alias = new JoinAlias(typeof(OrderDetailTemp)); rootQuery.From.AddJoin(JoinType.Left, new DQDmoSource(alias), DQCondition.EQ(rootAlias, "ID", alias, "WeightBill_ID")); return alias; } } - class OrderDetailTemp + class HurryOrderTemp { public long WeightBill_ID { get; set; } public int? Number { get; set; } - public static JoinAlias Register(DQueryDom rootQuery, JoinAlias rootAlias) + public static JoinAlias Register(DQueryDom rootQuery, JoinAlias rootAlias, bool unOrder, string joinField = "ID") { - var query = new DQueryDom(new JoinAlias(typeof(OrderDetail))); + var query = new DQueryDom(new JoinAlias(typeof(HurryRecord))); query.Columns.Add(DQSelectColumn.Field("WeightBill_ID")); - query.Columns.Add(DQSelectColumn.Sum("PlanNumber")); + query.Columns.Add(DQSelectColumn.Sum("HurryNumber")); query.GroupBy.Expressions.Add(DQExpression.Field("WeightBill_ID")); - query.Where.Conditions.Add(DQCondition.EQ("DeleteState", false)); - rootQuery.RegisterQueryTable(typeof(OrderDetailTemp), new string[] { "WeightBill_ID", "Number" }, query); - var alias = new JoinAlias(typeof(OrderDetailTemp)); - rootQuery.From.AddJoin(JoinType.Left, new DQDmoSource(alias), DQCondition.EQ(rootAlias, "ID", alias, "WeightBill_ID")); + if (unOrder) + query.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field("ToOrderDetail_ID"))); + rootQuery.RegisterQueryTable(typeof(HurryOrderTemp), new string[] { "WeightBill_ID", "Number" }, query); + var alias = new JoinAlias(typeof(HurryOrderTemp)); + rootQuery.From.AddJoin(JoinType.Left, new DQDmoSource(alias), DQCondition.EQ(rootAlias, joinField, alias, "WeightBill_ID")); return alias; } } @@ -117,7 +120,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc var totalNumber = GetWeightNumber(weightID); var alreadyNumber = GetAlreadyNumberWithoutBack(weightID, backId); - return totalNumber - alreadyNumber; + return totalNumber - alreadyNumber - HurryRecordUnOrderNumber(weightID); } static int GetWeightNumber(long wid) @@ -142,14 +145,25 @@ namespace BWP.B3ClientService.Rpcs.BillRpc return 0; } + static int HurryRecordUnOrderNumber(long wid) + { + var query = new DQueryDom(new JoinAlias(typeof(HurryRecord))); + query.Columns.Add(DQSelectColumn.Sum("HurryNumber")); + query.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field("ToOrderDetail_ID"))); + var rst = query.EExecuteScalar(); + if (rst != null) + return Convert.ToInt32(rst); + return 0; + } + [Rpc] - public static string GetOrderDetail(DateTime date, bool onlyNormal) + public static string GetOrderDetail(DateTime date) { var query = new DQueryDom(new JoinAlias(typeof(OrderDetail))); query.Columns.Add(DQSelectColumn.Field("ID")); query.Columns.Add(DQSelectColumn.Field("WeightBill_ID")); query.Columns.Add(DQSelectColumn.Field("Order")); - query.Columns.Add(DQSelectColumn.Field("PlanNumber")); + query.Columns.Add(DQSelectColumn.Field("PlanNumber")); query.Columns.Add(DQSelectColumn.Field("LiveColonyHouse_Name")); query.Columns.Add(DQSelectColumn.Field("IsHurryButcher")); query.Columns.Add(DQSelectColumn.Field("B3WeighBill_ID")); @@ -157,12 +171,6 @@ namespace BWP.B3ClientService.Rpcs.BillRpc query.Columns.Add(DQSelectColumn.Field("Supplier_Name")); query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Date", date), DQCondition.EQ("DeleteState", false))); - if (onlyNormal) - { - var record = HurryRecordTemp.Register(query, query.From.RootSource.Alias); - query.Columns.Add(DQSelectColumn.Field("Number", record)); - query.Where.Conditions.Add(DQCondition.EQ("IsHurryButcher", false)); - } var list = new List(); using (var session = Dmo.NewSession()) { @@ -180,11 +188,6 @@ namespace BWP.B3ClientService.Rpcs.BillRpc entity.B3WeighBill_ID = (long?)reader[6]; entity.SecondarySplit = (bool)reader[7]; entity.Supplier_Name = (string)reader[8]; - if (onlyNormal) - { - entity.HurryNumber = Convert.ToInt32(reader[9] ?? 0); - entity.PlanNumber += entity.HurryNumber; - } list.Add(entity); } } @@ -192,26 +195,6 @@ namespace BWP.B3ClientService.Rpcs.BillRpc return serializer.Serialize(list); } - class HurryRecordTemp - { - public long OrderDetail_ID { get; set; } - - public int? Number { get; set; } - - public static JoinAlias Register(DQueryDom rootQuery, JoinAlias rootAlias) - { - var query = new DQueryDom(new JoinAlias(typeof(HurryRecord))); - query.Columns.Add(DQSelectColumn.Field("FromOrderDetail_ID")); - query.Columns.Add(DQSelectColumn.Sum("HurryNumber")); - query.GroupBy.Expressions.Add(DQExpression.Field("FromOrderDetail_ID")); - rootQuery.RegisterQueryTable(typeof(HurryRecordTemp), new string[] { "OrderDetail_ID", "Number" }, query); - - var alias = new JoinAlias(typeof(HurryRecordTemp)); - rootQuery.From.AddJoin(JoinType.Left, new DQDmoSource(alias), DQCondition.EQ(rootAlias, "ID", alias, "OrderDetail_ID")); - return alias; - } - } - [Rpc] public static int GetMaxOrder(DateTime date) { @@ -319,46 +302,59 @@ namespace BWP.B3ClientService.Rpcs.BillRpc session.ExecuteNonQuery(update); } + #endregion + + #region hurryButcher [Rpc] - public static string GetHurryRecords(long orderId) + public static string GetHurryRecords(long weightId) { var query = new DmoQuery(typeof(HurryRecord)); - query.Where.Conditions.Add(DQCondition.EQ("FromOrderDetail_ID", orderId)); + query.Where.Conditions.Add(DQCondition.EQ("WeightBill_ID", weightId)); return serializer.Serialize(query.EExecuteList().Cast().ToList()); } [Rpc] - public static int DeleteHurryRecord(long id) + public static long? DeleteHurryRecord(long id) { + long? orderID; using (var session = Dmo.NewSession()) { - var hurryNumber = InnerBLUtil.GetDmoPropertyByID(session, typeof(HurryRecord), "HurryNumber", id); + var entity = InnerBLUtil.GetSingleDmo(session, "ID", id, "HurryNumber", "WeightBill_ID"); + orderID = GetOrderID(entity.WeightBill_ID); var delete = new DQDeleteDom(typeof(HurryRecord)); delete.Where.Conditions.Add(DQCondition.EQ("ID", id)); session.ExecuteNonQuery(delete); - AddOrderNumber(session, id, hurryNumber); + if (orderID > 0) + AddOrderNumber(session, orderID.Value, entity.HurryNumber); session.Commit(); } - return 1; + return orderID; } [Rpc] - public static int InsertHurryRecord(string detail) + public static string InsertHurryRecord(string detail) { detail = detail.ESerializeDateTime(); var entity = serializer.Deserialize(detail); + long? orderID = null; using (var session = Dmo.NewSession()) { session.Insert(entity); - AddOrderNumber(session, entity.ID, -entity.HurryNumber); - - var query = new DQueryDom(new JoinAlias(typeof(HurryRecord))); - query.Columns.Add(DQSelectColumn.Sum("HurryNumber")); - query.Where.Conditions.Add(DQCondition.EQ("FromOrderDetail_ID", entity.FromOrderDetail_ID)); - var r= Convert.ToInt32(query.EExecuteScalar(session) ?? 0); + orderID = GetOrderID(entity.WeightBill_ID); + if (orderID > 0) + AddOrderNumber(session, orderID.Value, -entity.HurryNumber); session.Commit(); - return r; } + return string.Format("{0}|{1}", orderID, entity.ID); + } + + [Rpc] + public static int GetHurryRecordNumber(long weightId) + { + var query = new DQueryDom(new JoinAlias(typeof(HurryRecord))); + query.Columns.Add(DQSelectColumn.Sum("HurryNumber")); + query.Where.Conditions.Add(DQCondition.EQ("WeightBill_ID", weightId)); + return Convert.ToInt32(query.EExecuteScalar() ?? 0); } static void AddOrderNumber(IDmoSession session, long ID, int subNumber) @@ -369,5 +365,93 @@ namespace BWP.B3ClientService.Rpcs.BillRpc update.Columns.Add(new DQUpdateColumn("PlanNumber", DQExpression.Add(DQExpression.Field("PlanNumber"), DQExpression.Value(subNumber)))); session.ExecuteNonQuery(update); } + + static long? GetOrderID(long weightBillId) + { + var detail = new JoinAlias(typeof(WeightBill_Detail)); + var order = new JoinAlias(typeof(OrderDetail)); + var query = new DQueryDom(detail); + query.From.AddJoin(JoinType.Left, new DQDmoSource(order), DQCondition.EQ(detail, "WeightBill_ID", order, "WeightBill_ID")); + var hurry = HurryOrderTemp.Register(query, detail, false, "WeightBill_ID"); + query.Columns.Add(DQSelectColumn.Field("ID", order)); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Subtract(DQExpression.Subtract(DQExpression.IfNull(DQExpression.Field(detail, "Number"), DQExpression.Value(0)), DQExpression.IfNull(DQExpression.Field(order, "PlanNumber"), DQExpression.Value(0))), DQExpression.IfNull(DQExpression.Field(hurry, "Number"), DQExpression.Value(0))), "last")); + query.Columns.Add(DQSelectColumn.Field("PlanNumber", order)); + query.Columns.Add(DQSelectColumn.Field("Number", hurry)); + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ(detail, "DeleteState", false), DQCondition.EQ(order, "DeleteState", false), DQCondition.EQ(order, "IsHurryButcher", false))); + long? id = null; + using (var session = Dmo.NewSession()) + { + using (var reader = session.ExecuteReader(query)) + { + while (reader.Read()) + { + if (id.HasValue || Convert.ToInt32(reader[1]) != 0) + return -1; + id = (long)reader[0]; + } + } + } + return id; + } + + [Rpc] + public static string GetSelectHurryList() + { + var bill = new JoinAlias(typeof(WeightBill)); + var detail = new JoinAlias(typeof(WeightBill_Detail)); + var query = new DQueryDom(bill); + query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.And(DQCondition.EQ(bill, "ID", detail, "WeightBill_ID"), DQCondition.EQ(detail, "DeleteState", false))); + var hurry = HurryOrderTemp.Register(query, bill, false); + var start = StartOrderTemp.Register(query, bill); + query.Columns.Add(DQSelectColumn.Field("ID")); + query.Columns.Add(DQSelectColumn.Field("B3ID")); + query.Columns.Add(DQSelectColumn.Field("Supplier_Name")); + query.Columns.Add(DQSelectColumn.Field("HouseNames")); + query.Columns.Add(DQSelectColumn.Field("Number", detail)); + query.Columns.Add(DQSelectColumn.Field("Number", hurry)); + + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.InEQ("HouseNames", ""), DQCondition.IsNull(DQExpression.Field(start, "WeightBill_ID")))); + + var list = new List(); + using (var session = Dmo.NewSession()) + { + using (var reader = session.ExecuteReader(query)) + { + while (reader.Read()) + { + var entity = new SelectHurryList(); + entity.WeightBill_ID = (long)reader[0]; + entity.B3WeighBill_ID = (long?)reader[1]; + entity.Supplier_Name = (string)reader[2]; + entity.LiveColonyHouse_Name = (string)reader[3]; + entity.WeightNumber = (int?)reader[4] ?? 0; + entity.HurryNumber = Convert.ToInt32(reader[5] ?? 0); + list.Add(entity); + } + } + } + + return serializer.Serialize(list); + } + + class StartOrderTemp + { + public long WeightBill_ID { get; set; } + + public static JoinAlias Register(DQueryDom rootQuery, JoinAlias rootAlias) + { + var query = new DQueryDom(new JoinAlias(typeof(OrderDetail))); + query.Columns.Add(DQSelectColumn.Field("WeightBill_ID")); + query.GroupBy.Expressions.Add(DQExpression.Field("WeightBill_ID")); + query.Where.Conditions.Add(DQCondition.EQ("DeleteState", false)); + query.Having.Conditions.Add(DQCondition.GreaterThanOrEqual(DQExpression.Min(DQExpression.Field("OrderState")), DQExpression.Value(10))); + + rootQuery.RegisterQueryTable(typeof(StartOrderTemp), new string[] { "WeightBill_ID" }, query); + var alias = new JoinAlias(typeof(StartOrderTemp)); + rootQuery.From.AddJoin(JoinType.Left, new DQDmoSource(alias), DQCondition.EQ(rootAlias, "ID", alias, "WeightBill_ID")); + return alias; + } + } + #endregion } }