diff --git a/B3ClientService/B3ClientService.csproj b/B3ClientService/B3ClientService.csproj index cdb24f9..d458659 100644 --- a/B3ClientService/B3ClientService.csproj +++ b/B3ClientService/B3ClientService.csproj @@ -148,6 +148,7 @@ + @@ -160,6 +161,7 @@ + diff --git a/B3ClientService/BO/Bill/OrderDetail/OrderConfirmDetial.cs b/B3ClientService/BO/Bill/OrderDetail/OrderConfirmDetial.cs new file mode 100644 index 0000000..ae698e0 --- /dev/null +++ b/B3ClientService/BO/Bill/OrderDetail/OrderConfirmDetial.cs @@ -0,0 +1,14 @@ +using BWP.B3Frameworks.BO; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace BWP.B3ClientService.BO +{ + public class OrderConfirmDetial : Base + { + public long OrderDetail_ID { get; set; } + public int? Number { get; set; } + } +} diff --git a/B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs b/B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs index d55120a..c870919 100644 --- a/B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs +++ b/B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs @@ -60,5 +60,8 @@ namespace BWP.B3ClientService.BO [DbColumn(DefaultValue = 1)] public bool AlreadyDeath { get; set; } + + [NonDmoProperty] + public int? ConfirmNumber { get; set; } } } diff --git a/B3ClientService/BO/Bill/SecondOrder/SecondOrder_Detail.cs b/B3ClientService/BO/Bill/SecondOrder/SecondOrder_Detail.cs index 4ce7638..8c25cb8 100644 --- a/B3ClientService/BO/Bill/SecondOrder/SecondOrder_Detail.cs +++ b/B3ClientService/BO/Bill/SecondOrder/SecondOrder_Detail.cs @@ -14,6 +14,6 @@ namespace BWP.B3ClientService.BO public int Number { get; set; } - public DateTime Time { get; set; } + public DateTime? Time { get; set; } } } \ No newline at end of file diff --git a/B3ClientService/BO/Bill/WeightBill/SelfHelpSendMsg.cs b/B3ClientService/BO/Bill/WeightBill/SelfHelpSendMsg.cs new file mode 100644 index 0000000..d146115 --- /dev/null +++ b/B3ClientService/BO/Bill/WeightBill/SelfHelpSendMsg.cs @@ -0,0 +1,25 @@ +using BWP.B3Frameworks.BO; +using Forks.EnterpriseServices.DomainObjects2; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using TSingSoft.WebPluginFramework; + +namespace BWP.B3ClientService.BO.Bill +{ + [Serializable] + [KeyField("WeightBill_ID", KeyGenType.assigned)] + public class SelfHelpSendMsg : Base + { + public long WeightBill_ID { get; set; } + + [ReferenceTo(typeof(WeightBill), "Car_Name")] + [Join("WeightBill_ID", "ID")] + public string Car_Name { get; set; } + + [ReferenceTo(typeof(WeightBill), "Supplier_Name")] + [Join("WeightBill_ID", "ID")] + public string Supplier_Name { get; set; } + } +} diff --git a/B3ClientService/NamedValueTemplate.cs b/B3ClientService/NamedValueTemplate.cs index f2ed0ff..f6bf8a5 100644 --- a/B3ClientService/NamedValueTemplate.cs +++ b/B3ClientService/NamedValueTemplate.cs @@ -20,8 +20,10 @@ namespace BWP.B3ClientService.NamedValueTemplate public static readonly NamedValue<终端> 白条入库 = new NamedValue<终端>(0); public static readonly NamedValue<终端> 白条领用 = new NamedValue<终端>(1); public static readonly NamedValue<终端> 分割生产 = new NamedValue<终端>(2); - public static readonly NamedValue<终端> 分割入库 = new NamedValue<终端>(3); + public static readonly NamedValue<终端> 扫码入库 = new NamedValue<终端>(3); public static readonly NamedValue<终端> 赶猪确认 = new NamedValue<终端>(103); + public static readonly NamedValue<终端> 上线确认 = new NamedValue<终端>(104); + public static readonly NamedValue<终端> 烫毛分线 = new NamedValue<终端>(105); } public sealed class 适用客户端 diff --git a/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs b/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs index 1313b2f..c8fb1a9 100644 --- a/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs @@ -5,6 +5,7 @@ using Forks.EnterpriseServices.DomainObjects2; using Forks.EnterpriseServices.DomainObjects2.DQuery; using Forks.EnterpriseServices.JsonRpc; using Forks.EnterpriseServices.SqlDoms; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; @@ -239,7 +240,77 @@ namespace BWP.B3ClientService.Rpcs.BillRpc return serializer.Serialize(list); } - [Rpc] + [Rpc(RpcFlags.SkipAuth)] + public static string GetConfirmOrder(DateTime date) + { + var main = new JoinAlias(typeof(OrderDetail)); + var detail = new JoinAlias(typeof(OrderConfirmDetial)); + var query = new DQueryDom(main); + query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "OrderDetail_ID")); + 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("LiveColonyHouse_Name")); + query.Columns.Add(DQSelectColumn.Field("IsHurryButcher")); + query.Columns.Add(DQSelectColumn.Field("B3WeighBill_ID")); + query.Columns.Add(DQSelectColumn.Field("SecondarySplit")); + query.Columns.Add(DQSelectColumn.Field("OrderState")); + foreach (var item in query.Columns) + query.GroupBy.Expressions.Add(item.Expression); + query.Columns.Add(DQSelectColumn.Sum(detail, "Number")); + + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Date", date), DQCondition.EQ("DeleteState", false), DQCondition.EQ("IsDrop", false))); + var list = new List(); + using (var session = Dmo.NewSession()) + { + using (var reader = session.ExecuteReader(query)) + { + while (reader.Read()) + { + var entity = new OrderDetail(); + entity.ID = (long)reader[0]; + entity.WeightBill_ID = (long)reader[1]; + entity.Order = (int)reader[2]; + entity.PlanNumber = (int)reader[3]; + entity.LiveColonyHouse_Name = (string)reader[4]; + entity.IsHurryButcher = (bool)reader[5]; + entity.B3WeighBill_ID = (long?)reader[6]; + entity.SecondarySplit = (bool)reader[7]; + entity.OrderState = (int)reader[8]; + entity.ConfirmNumber = (int?)reader[9]; + list.Add(entity); + } + } + } + return JsonConvert.SerializeObject(list); + } + + [Rpc(RpcFlags.SkipAuth)] + public static string GetOrderConfirmDetail(long orderID) + { + var query = new DmoQuery(typeof(OrderConfirmDetial)); + query.Where.Conditions.Add(DQCondition.EQ("OrderDetail_ID", orderID)); + query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID")); + return JsonConvert.SerializeObject(query.EExecuteList()); + } + + [Rpc(RpcFlags.SkipAuth)] + public static long SaveConfirmDetail(string obj) + { + var detail = JsonConvert.DeserializeObject(obj); + using (var session = Dmo.NewSession()) + { + if(detail.ID==0) + session.Insert(detail); + else + session.Update(detail); + session.Commit(); + return detail.ID; + } + } + + [Rpc(RpcFlags.SkipAuth)] public static int GetMaxOrder(DateTime date) { var query = new DQueryDom(new JoinAlias(typeof(OrderDetail))); @@ -248,7 +319,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc return query.EExecuteScalar() ?? 0; } - [Rpc] + [Rpc(RpcFlags.SkipAuth)] public static int GetCurrentOrder(long id) { return GetOrderDetailProperty(id, "Order"); @@ -376,7 +447,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc #endregion #region hurryButcher - [Rpc] + [Rpc(RpcFlags.SkipAuth)] public static string GetHurryRecordList(long weightId) { var query = new DmoQuery(typeof(HurryRecord)); @@ -537,7 +608,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc #endregion #region orderConfirm - [Rpc] + [Rpc(RpcFlags.SkipAuth)] public static int SetOrderState(long id, int state) { if (!(state == 0 || state == 10 || state == 20)) @@ -623,7 +694,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc return query.EExecuteScalar(session); } - [Rpc] + [Rpc(RpcFlags.SkipAuth)] public static long InsertByHurryRecord(string insert, long hurryID) { insert = insert.ESerializeDateTime(); @@ -656,7 +727,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc session.ExecuteNonQuery(update); } - [Rpc] + [Rpc(RpcFlags.SkipAuth)] public static int GetFinishNumbers(DateTime date) { var query = new DQueryDom(new JoinAlias(typeof(OrderDetail))); diff --git a/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs b/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs index 1836bd2..a17edcd 100644 --- a/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs @@ -1,9 +1,11 @@ using BWP.B3ClientService.BO; +using BWP.B3Frameworks.BO; using BWP.B3Frameworks.Utils; using Forks.EnterpriseServices.DomainObjects2; using Forks.EnterpriseServices.DomainObjects2.DQuery; using Forks.EnterpriseServices.JsonRpc; using Forks.EnterpriseServices.SqlDoms; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; @@ -17,9 +19,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc [Rpc] public static class SecondOrderRpc { - static JavaScriptSerializer serializer = new JavaScriptSerializer(); - - [Rpc] + [Rpc(RpcFlags.SkipAuth)] public static string SyncSecondOrder(DateTime date) { var main = new JoinAlias(typeof(OrderDetail)); @@ -55,36 +55,46 @@ namespace BWP.B3ClientService.Rpcs.BillRpc } } } - return serializer.Serialize(list); + return JsonConvert.SerializeObject(list); } - [Rpc] + [Rpc(RpcFlags.SkipAuth)] public static long InsertDetail(string json, string mainJson, long orderDetailID) { - json = json.ESerializeDateTime(); - var detail = serializer.Deserialize(json); - + var detail = JsonConvert.DeserializeObject(json); + detail.Time = DateTime.Now; using (var session = Dmo.NewSession()) { CheckOrderDelete(session, orderDetailID); if (detail.SecondOrder_ID == 0) { - mainJson = mainJson.ESerializeDateTime(); - var entity = serializer.Deserialize(mainJson); + var entity = JsonConvert.DeserializeObject(mainJson); entity.ModifyTime = DateTime.Now; + entity.HotFadeNumber = detail.Number; entity.IsOk = true; session.Insert(entity); detail.SecondOrder_ID = entity.ID; + UpdateOrInsert(session, detail); UpdateOrderDetailHasSecondarySplit(session, entity.OrderDetail_ID); } else - UpdateMainNumber(session, detail.SecondOrder_ID, detail.Number); - session.Insert(detail); + { + UpdateOrInsert(session, detail); + UpdateMainNumber(session, detail.SecondOrder_ID); + } session.Commit(); } return detail.SecondOrder_ID; } + static void UpdateOrInsert(IDmoSession session, T entity) where T : Base + { + if (entity.ID == 0) + session.Insert(entity); + else + session.Update(entity); + } + static void UpdateOrderDetailHasSecondarySplit(IDmoSession session, long id) { var update = new DQUpdateDom(typeof(OrderDetail)); @@ -93,7 +103,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc session.ExecuteNonQuery(update); } - [Rpc] + [Rpc(RpcFlags.SkipAuth)] public static int DeleteDetail(long id, long mainID, int number) { using (var session = Dmo.NewSession()) @@ -101,24 +111,34 @@ namespace BWP.B3ClientService.Rpcs.BillRpc var delete = new DQDeleteDom(typeof(SecondOrder_Detail)); delete.Where.Conditions.Add(DQCondition.EQ("ID", id)); session.ExecuteNonQuery(delete); - UpdateMainNumber(session, mainID, -number); + UpdateMainNumber(session, mainID); session.Commit(); } return 1; } - static void UpdateMainNumber(IDmoSession session, long id, int number) + static void UpdateMainNumber(IDmoSession session, long id) { + var number = GetHotFadeNumber(session, id); + 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("RowVersion", DQExpression.Add(DQExpression.Field("RowVersion"), DQExpression.Value(1)))); - update.Columns.Add(new DQUpdateColumn("HotFadeNumber", DQExpression.Add(DQExpression.Field("HotFadeNumber"), DQExpression.Value(number)))); + update.Columns.Add(new DQUpdateColumn("HotFadeNumber", number)); session.ExecuteNonQuery(update); } - [Rpc] + static int GetHotFadeNumber(IDmoSession session,long secondOrderID) + { + var query = new DQueryDom(new JoinAlias(typeof(SecondOrder_Detail))); + query.Columns.Add(DQSelectColumn.Sum("Number")); + query.Where.Conditions.Add(DQCondition.EQ("SecondOrder_ID", secondOrderID)); + return query.EExecuteScalar(session) ?? 0; + } + + [Rpc(RpcFlags.SkipAuth)] public static long SetFinish(long id, long orderDetailID, string json) { using (var session = Dmo.NewSession()) @@ -126,7 +146,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc CheckOrderDelete(session, orderDetailID); if (id == 0) { - var entity = serializer.Deserialize(json); + var entity = JsonConvert.DeserializeObject(json); entity.ModifyTime = DateTime.Now; entity.IsOk = true; entity.Finish = true; @@ -148,14 +168,14 @@ namespace BWP.B3ClientService.Rpcs.BillRpc session.Commit(); } return id; - } + } - [Rpc] + [Rpc(RpcFlags.SkipAuth)] 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()); + return JsonConvert.SerializeObject(query.EExecuteList().Cast().ToList()); } static void CheckOrderDelete(IDmoSession session, long id) diff --git a/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs b/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs index 95c2da9..39610bc 100644 --- a/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs @@ -1,4 +1,5 @@ using BWP.B3ClientService.BO; +using BWP.B3ClientService.BO.Bill; using BWP.B3ClientService.Tasks.UpdateLoad; using BWP.B3Frameworks.Utils; using Forks.EnterpriseServices.DomainObjects2; @@ -6,6 +7,7 @@ using Forks.EnterpriseServices.DomainObjects2.DQuery; using Forks.EnterpriseServices.JsonRpc; using Forks.EnterpriseServices.SqlDoms; using Forks.JsonRpc.Client.Data; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; @@ -88,15 +90,34 @@ namespace BWP.B3ClientService.Rpcs.BillRpc var fQuery = new DmoQuery(typeof(WeightBill_FarmerDetail)); fQuery.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("WeightBill_ID", id))); entity.FarmerDetails = fQuery.EExecuteList().Cast().ToList(); + DeleteMsg(id, null); return serializer.Serialize(entity); } + static void DeleteMsg(long id, IDmoSession session) + { + var delete = new DQDeleteDom(typeof(SelfHelpSendMsg)); + delete.Where.Conditions.Add(DQCondition.EQ("WeightBill_ID", id)); + if (session == null) + delete.EExecute(); + else + session.ExecuteNonQuery(delete); + } + + [Rpc] + public static string GetMsgList() + { + var query = new DmoQuery(typeof(SelfHelpSendMsg)); + query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID")); + return JsonConvert.SerializeObject(query.EExecuteList()); + } + [Rpc] public static string UpdateOrInsert(string json, string recordDetail) { json = json.ESerializeDateTime(); var dmo = serializer.Deserialize(json); - var f = dmo.FarmerDetails.FirstOrDefault(x => !x.DeleteState); + var f = dmo.FarmerDetails.FirstOrDefault(x => !x.DeleteState); if (f == null) dmo.Farmer_ID = null; else @@ -239,6 +260,9 @@ namespace BWP.B3ClientService.Rpcs.BillRpc var delete = new DQDeleteDom(typeof(WeightBillCheck)); delete.Where.Conditions.Add(DQCondition.EQ("ID", id)); session.ExecuteNonQuery(delete); + + DeleteMsg(id, session); + session.Commit(); } diff --git a/B3ClientService/Rpcs/SelfHelpRpc.cs b/B3ClientService/Rpcs/SelfHelpRpc.cs index 2f603f4..842db33 100644 --- a/B3ClientService/Rpcs/SelfHelpRpc.cs +++ b/B3ClientService/Rpcs/SelfHelpRpc.cs @@ -1,4 +1,5 @@ using BWP.B3ClientService.BO; +using BWP.B3ClientService.BO.Bill; using BWP.B3Frameworks.Utils; using Forks.EnterpriseServices.DomainObjects2; using Forks.EnterpriseServices.DomainObjects2.DQuery; @@ -146,6 +147,8 @@ namespace BWP.B3ClientService.Rpcs weight.FarmerDetails.Add(d); } FillSendPigWeightID(session, id, weight.ID); + var msg = new SelfHelpSendMsg() { WeightBill_ID = weight.ID }; + session.Insert(msg); session.Commit(); return JsonConvert.SerializeObject(weight); } @@ -190,10 +193,25 @@ namespace BWP.B3ClientService.Rpcs var f = LoadList(session, new Tuple("WeightBill_ID", id), new Tuple("DeleteState", false)); dmo.Details.AddRange(w); dmo.FarmerDetails.AddRange(f); + + InsertSelfHelpSendMsg(session, id); + return JsonConvert.SerializeObject(dmo); } } + static void InsertSelfHelpSendMsg(IDmoSessionWithTransaction session, long id) + { + var q = new DQueryDom(new JoinAlias(typeof(SelfHelpSendMsg))); + q.Columns.Add(DQSelectColumn.Create(DQExpression.Value(1), "c")); + q.Where.Conditions.Add(DQCondition.EQ("WeightBill_ID", id)); + if (q.EExecuteScalar(session) == null) + { + session.Insert(new SelfHelpSendMsg { WeightBill_ID = id }); + session.Commit(); + } + } + [Rpc(RpcFlags.SkipAuth)] public static string GetWeightDetail(long id) { diff --git a/WebFolder/config/NamedValue/B3ClientService.xml b/WebFolder/config/NamedValue/B3ClientService.xml index d035171..4f32519 100644 --- a/WebFolder/config/NamedValue/B3ClientService.xml +++ b/WebFolder/config/NamedValue/B3ClientService.xml @@ -11,8 +11,10 @@ - - + + + +