From 3299a389bb149e3878f5790769e7d91ed7c8d4d6 Mon Sep 17 00:00:00 2001 From: yibo <361071264@qq.com> Date: Sat, 16 Sep 2017 17:25:46 +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 | 3 + .../BO/Bill/SecondOrder/SecondOrder.cs | 35 +++++ .../BO/Bill/SecondOrder/SecondOrder_Detail.cs | 19 +++ .../Rpcs/BillRpc/SecondOrderRpc.cs | 138 ++++++++++++++++++ 4 files changed, 195 insertions(+) create mode 100644 B3ClientService/BO/Bill/SecondOrder/SecondOrder.cs create mode 100644 B3ClientService/BO/Bill/SecondOrder/SecondOrder_Detail.cs create mode 100644 B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs diff --git a/B3ClientService/B3ClientService.csproj b/B3ClientService/B3ClientService.csproj index 2f5c9ad..91e7475 100644 --- a/B3ClientService/B3ClientService.csproj +++ b/B3ClientService/B3ClientService.csproj @@ -77,6 +77,8 @@ + + @@ -102,6 +104,7 @@ + diff --git a/B3ClientService/BO/Bill/SecondOrder/SecondOrder.cs b/B3ClientService/BO/Bill/SecondOrder/SecondOrder.cs new file mode 100644 index 0000000..6093e99 --- /dev/null +++ b/B3ClientService/BO/Bill/SecondOrder/SecondOrder.cs @@ -0,0 +1,35 @@ +using BWP.B3Frameworks.BO; +using Forks.EnterpriseServices.DomainObjects2; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TSingSoft.WebPluginFramework; + +namespace BWP.B3ClientService.BO +{ + [Serializable] + public class SecondOrder : Base + { + public bool Sync { get; set; } + + public DateTime ModifyTime { get; set; } + + public long OrderDetail_ID { get; set; } + + [ReferenceTo(typeof(OrderDetail), "Order")] + [Join("OrderDetail_ID", "ID")] + public int? Order { get; set; } + + [ReferenceTo(typeof(OrderDetail), "PlanNumber")] + [Join("OrderDetail_ID", "ID")] + public int? PlanNumber { get; set; } + + public int HotFadeNumber { get; set; } + + public bool IsOk { get; set; } + + public bool FinishGrade { get; set; } + } +} diff --git a/B3ClientService/BO/Bill/SecondOrder/SecondOrder_Detail.cs b/B3ClientService/BO/Bill/SecondOrder/SecondOrder_Detail.cs new file mode 100644 index 0000000..4ce7638 --- /dev/null +++ b/B3ClientService/BO/Bill/SecondOrder/SecondOrder_Detail.cs @@ -0,0 +1,19 @@ +using BWP.B3Frameworks.BO; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BWP.B3ClientService.BO +{ + [Serializable] + public class SecondOrder_Detail : Base + { + public long SecondOrder_ID { get; set; } + + public int Number { get; set; } + + public DateTime Time { get; set; } + } +} \ No newline at end of file diff --git a/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs b/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs new file mode 100644 index 0000000..3f5bbeb --- /dev/null +++ b/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs @@ -0,0 +1,138 @@ +using BWP.B3ClientService.BO; +using Forks.EnterpriseServices.DomainObjects2; +using Forks.EnterpriseServices.DomainObjects2.DQuery; +using Forks.EnterpriseServices.JsonRpc; +using Forks.EnterpriseServices.SqlDoms; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Web.Script.Serialization; +using TSingSoft.WebPluginFramework; + +namespace BWP.B3ClientService.Rpcs.BillRpc +{ + [Rpc] + public static class SecondOrderRpc + { + static JavaScriptSerializer serializer = new JavaScriptSerializer(); + + [Rpc] + public static string SyncSecondOrder(DateTime date) + { + var main = new JoinAlias(typeof(OrderDetail)); + var detail = new JoinAlias(typeof(SecondOrder)); + var query = new DQueryDom(main); + query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "OrderDetail_ID")); + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("Date", date))); + query.Where.Conditions.Add(DQCondition.Or(DQCondition.IsNull(DQExpression.Field(detail, "FinishGrade")), DQCondition.EQ(detail, "FinishGrade", false))); + query.Columns.Add(DQSelectColumn.Field("ID", main)); + query.Columns.Add(DQSelectColumn.Field("ID", detail)); + query.Columns.Add(DQSelectColumn.Field("Order", main)); + query.Columns.Add(DQSelectColumn.Field("PlanNumber", main)); + query.Columns.Add(DQSelectColumn.Field("HotFadeNumber", detail)); + query.Columns.Add(DQSelectColumn.Field("IsOk", detail)); + var list = new List(); + using (var session = Dmo.NewSession()) + { + using (var reader = session.ExecuteReader(query)) + { + while (reader.Read()) + { + var item = new SecondOrder(); + list.Add(item); + item.OrderDetail_ID = (long)reader[0]; + item.ID = (long?)reader[1] ?? 0; + item.Order = (int)reader[2]; + item.PlanNumber = (int)reader[3]; + item.HotFadeNumber = (int?)reader[4] ?? 0; + item.IsOk = (bool?)reader[5] ?? false; + } + } + } + return serializer.Serialize(list); + } + + [Rpc] + public static long InsertDetail(string json, string mainJson) + { + var detail = serializer.Deserialize(json); + + using (var session = Dmo.NewSession()) + { + if (detail.SecondOrder_ID == 0) + { + var entity = serializer.Deserialize(mainJson); + entity.ModifyTime = DateTime.Now; + session.Insert(entity); + detail.SecondOrder_ID = entity.ID; + } + else + UpdateMainNumber(session, detail.SecondOrder_ID, detail.Number); + session.Insert(detail); + session.Commit(); + } + return detail.SecondOrder_ID; + } + + [Rpc] + public static int DetailDetail(long id, long mainID, int number) + { + using (var session = Dmo.NewSession()) + { + var delete = new DQDeleteDom(typeof(SecondOrder_Detail)); + delete.Where.Conditions.Add(DQCondition.EQ("ID", id)); + session.ExecuteNonQuery(delete); + UpdateMainNumber(session, mainID, -number); + session.Commit(); + } + return 1; + } + + static void UpdateMainNumber(IDmoSession session, long id, int number) + { + var update = new DQUpdateDom(typeof(SecondOrder)); + 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("HotFadeNumber", DQExpression.Add(DQExpression.Field("HotFadeNumber"), DQExpression.Value(number)))); + session.ExecuteNonQuery(update); + } + + [Rpc] + public static long SetOk(long id, string json) + { + using (var session = Dmo.NewSession()) + { + if (id == 0) + { + var entity = serializer.Deserialize(json); + entity.ModifyTime = DateTime.Now; + entity.IsOk = true; + session.Insert(entity); + id = entity.ID; + } + else + { + var update = new DQUpdateDom(typeof(SecondOrder)); + 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("IsOk", true)); + session.ExecuteNonQuery(update); + } + session.Commit(); + } + return id; + } + + [Rpc] + public static string GetSecondOrderDetails(long id) + { + var query = new DmoQuery(typeof(SecondOrder_Detail)); + query.Where.Conditions.Add(DQCondition.EQ("SecondOrder_ID", id)); + return serializer.Serialize(query.EExecuteList().Cast().ToList()); + } + } +}