diff --git a/B3ClientService/B3ClientService.csproj b/B3ClientService/B3ClientService.csproj index 20fdbbf..2a63910 100644 --- a/B3ClientService/B3ClientService.csproj +++ b/B3ClientService/B3ClientService.csproj @@ -91,6 +91,7 @@ + @@ -102,7 +103,7 @@ - + @@ -124,13 +125,14 @@ - + + diff --git a/B3ClientService/BO/Bill/CarcassStateWeight/CarcassStateWeight.cs b/B3ClientService/BO/Bill/CarcassStateWeight/CarcassStateWeight.cs index deaddcc..7513cbb 100644 --- a/B3ClientService/BO/Bill/CarcassStateWeight/CarcassStateWeight.cs +++ b/B3ClientService/BO/Bill/CarcassStateWeight/CarcassStateWeight.cs @@ -25,14 +25,19 @@ namespace BWP.B3ClientService.BO public decimal? Nubmber { get; set; } public decimal? State1Weight { get; set; } + public DateTime? State1WeightTime { get; set; } public decimal? State2Weight { get; set; } + public DateTime? State2WeightTime { get; set; } public decimal? State3Weight { get; set; } + public DateTime? State3WeightTime { get; set; } public decimal? State4Weight { get; set; } + public DateTime? State4WeightTime { get; set; } public decimal? State5Weight { get; set; } + public DateTime? State5WeightTime { get; set; } public NamedValue<胴体状态>? CurrentState { get; set; } 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/BO/Bill/WeightBill/WeightBill.cs b/B3ClientService/BO/Bill/WeightBill/WeightBill.cs index a66159d..9c1fbfc 100644 --- a/B3ClientService/BO/Bill/WeightBill/WeightBill.cs +++ b/B3ClientService/BO/Bill/WeightBill/WeightBill.cs @@ -15,6 +15,9 @@ namespace BWP.B3ClientService.BO public int RowVersion { get; set; } #region BasicFile + [DbColumn(DefaultValue = 0)] + public int PrintNumber { get; set; } + public long? AccountingUnit_ID { get; set; } public long? Department_ID { get; set; } diff --git a/B3ClientService/BO/Bill/WeightBill/WeightBillCheck.cs b/B3ClientService/BO/Bill/WeightBill/WeightBillCheck.cs new file mode 100644 index 0000000..86c4909 --- /dev/null +++ b/B3ClientService/BO/Bill/WeightBill/WeightBillCheck.cs @@ -0,0 +1,63 @@ +using Forks.EnterpriseServices.DomainObjects2; +using Forks.EnterpriseServices.DomainObjects2.DQuery; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using TSingSoft.WebPluginFramework; + +namespace BWP.B3ClientService.BO +{ + [Serializable] + [BOClass] + public class WeightBillCheck + { + public long ID { get; set; } + + [ReferenceTo(typeof(WeightBill), "B3ID")] + [Join("ID", "ID")] + public long? B3ID { get; set; } + + /// + /// 单据创建人用户名 + /// + public string Creator { get; set; } + + /// + /// 同步状态 + /// + public bool Sync { get; set; } + + public DateTime ModifyTime { get; set; } + + public static void Insert(long id, string creator) + { + if (Exist(id)) + return; + var entity = new WeightBillCheck(); + entity.ID = id; + entity.Creator = creator; + entity.ModifyTime = DateTime.Now; + using (var session = Dmo.NewSession()) + { + session.Insert(entity); + session.Commit(); + } + } + + static bool Exist(long id) + { + var query = new DQueryDom(new JoinAlias(typeof(WeightBillCheck))); + query.Where.Conditions.Add(DQCondition.EQ("ID", id)); + return query.EExists(); + } + + public static void SetSynced(long b3ID) + { + var update = new DQUpdateDom(typeof(WeightBillCheck)); + update.Columns.Add(new DQUpdateColumn("Sync", true)); + update.Where.Conditions.Add(DQCondition.EQ("B3ID", b3ID)); + update.EExecute(); + } + } +} diff --git a/B3ClientService/ClientSerializerBo/OrderDetail/ConfirmOrder.cs b/B3ClientService/ClientSerializerBo/OrderDetail/SelectHurryList.cs similarity index 53% rename from B3ClientService/ClientSerializerBo/OrderDetail/ConfirmOrder.cs rename to B3ClientService/ClientSerializerBo/OrderDetail/SelectHurryList.cs index 2d36dfb..a612f5e 100644 --- a/B3ClientService/ClientSerializerBo/OrderDetail/ConfirmOrder.cs +++ b/B3ClientService/ClientSerializerBo/OrderDetail/SelectHurryList.cs @@ -5,18 +5,18 @@ using System.Text; namespace BWP.B3ClientService { - public class ConfirmOrder + public class SelectHurryList { - public long ID { get; set; } - - public int Order { get; set; } + 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 Number { get; set; } + public int WeightNumber { get; set; } - public bool Confirmed { get; set; } + public int HurryNumber { get; set; } } } diff --git a/B3ClientService/ClientSerializerBo/WeightBill/WeightBillList.cs b/B3ClientService/ClientSerializerBo/WeightBill/WeightBillList.cs index d920f62..d52148b 100644 --- a/B3ClientService/ClientSerializerBo/WeightBill/WeightBillList.cs +++ b/B3ClientService/ClientSerializerBo/WeightBill/WeightBillList.cs @@ -30,5 +30,7 @@ namespace BWP.B3ClientService public string Remark { get; set; } public bool FinishWeight { get; set; } + + public int PrintNumber { get; set; } } } diff --git a/B3ClientService/Rpcs/BillRpc/GradeAndWeightRpc.cs b/B3ClientService/Rpcs/BillRpc/GradeAndWeightRpc.cs index 453a9a7..7da64c6 100644 --- a/B3ClientService/Rpcs/BillRpc/GradeAndWeightRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/GradeAndWeightRpc.cs @@ -19,27 +19,23 @@ namespace BWP.B3ClientService.Rpcs.BillRpc static JavaScriptSerializer serializer = new JavaScriptSerializer(); [Rpc] - public static string GetGradeAndWeightList(DateTime date, long? maxID) + public static string GetGradeAndWeightList(DateTime date, bool isTang) { - var main = new JoinAlias("_S1", typeof(SecondOrder)); - var order = new JoinAlias("_O1", typeof(OrderDetail)); - var relate = new JoinAlias(typeof(GradeTemp)); + var tech = isTang ? 0 : 1; + var main = new JoinAlias(typeof(SecondOrder)); + var order = new JoinAlias(typeof(OrderDetail)); + var relate = new JoinAlias(typeof(OrderGradeFinishRelate)); var query = new DQueryDom(main); - query.RegisterQueryTable(typeof(GradeTemp), new string[] { "OrdreID", "Tang", "TangAlready", "Mao", "MaoAlready" }, GradeTemp.Register(date, maxID)); query.From.AddJoin(JoinType.Left, new DQDmoSource(order), DQCondition.EQ(main, "OrderDetail_ID", order, "ID")); - query.From.AddJoin(JoinType.Left, new DQDmoSource(relate), DQCondition.EQ(main, "OrderDetail_ID", relate, "OrdreID")); + query.From.AddJoin(JoinType.Left, new DQDmoSource(relate), DQCondition.And(DQCondition.EQ(main, "OrderDetail_ID", relate, "OrderDetail_ID"), DQCondition.EQ(relate, "Technics", tech))); query.Columns.Add(DQSelectColumn.Field("OrderDetail_ID")); - query.Columns.Add(DQSelectColumn.Field("Order", order));//1 + query.Columns.Add(DQSelectColumn.Field("Order", order)); query.Columns.Add(DQSelectColumn.Field("PlanNumber", order)); - query.Columns.Add(DQSelectColumn.Field("HotFadeNumber"));//3 - query.Columns.Add(DQSelectColumn.Field("TangAlready", relate)); - query.Columns.Add(DQSelectColumn.Field("MaoAlready", relate));//5 - query.Columns.Add(DQSelectColumn.Field("Tang", relate)); - query.Columns.Add(DQSelectColumn.Field("Mao", relate));//7 + query.Columns.Add(DQSelectColumn.Field("HotFadeNumber")); + query.Columns.Add(DQSelectColumn.Field("Already", relate)); + query.Columns.Add(DQSelectColumn.Field("Finish", relate)); - query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("IsOk", true), DQCondition.Between(DQExpression.Field(order, "Date"), date, date + new TimeSpan(23, 59, 29)))); - if (maxID.HasValue) - query.Where.Conditions.Add(DQCondition.GreaterThan("ID", maxID)); + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("IsOk", true), DQCondition.EQ(order, "DeleteState", false), DQCondition.EQ(order, "Date", date))); var list = new List(); using (var session = Dmo.NewSession()) { @@ -47,31 +43,20 @@ namespace BWP.B3ClientService.Rpcs.BillRpc { while (reader.Read()) { - var tang = new GradeAndWeight(); - tang.OrderDetail_ID = (long)reader[0]; - tang.Order = (int)reader[1]; - tang.Number = (int)reader[3]; - tang.Finish = Convert.ToBoolean(reader[6]); - if (tang.Number != 0) + var entity = new GradeAndWeight(); + entity.Number = (int)reader[3]; + if (!isTang) { - tang.Technics = 0; - tang.Technics_Name = "烫褪"; - tang.Already = Convert.ToInt32(reader[4]); - list.Add(tang); + var total = (int)reader[2]; + entity.Number = total - entity.Number; } - - var lastNumber = (int)reader[2] - tang.Number; - if (lastNumber == 0) + if (entity.Number == 0) continue; - var mb = new GradeAndWeight(); - list.Add(mb); - mb.OrderDetail_ID = tang.OrderDetail_ID; - mb.Order = tang.Order; - mb.Number = lastNumber; - mb.Technics = 1; - mb.Technics_Name = "毛剥"; - mb.Already = Convert.ToInt32(reader[5]); - mb.Finish = Convert.ToBoolean(reader[7]); + entity.OrderDetail_ID = (long)reader[0]; + entity.Order = (int)reader[1]; + entity.Already = (int?)reader[4] ?? 0; + entity.Finish = (bool?)reader[5] ?? false; + list.Add(entity); } } } @@ -79,85 +64,26 @@ namespace BWP.B3ClientService.Rpcs.BillRpc return serializer.Serialize(list); } - class GradeTemp - { - public long OrdreID { get; set; } - - public bool Tang { get; set; } - - public int TangAlready { get; set; } - - public bool Mao { get; set; } - - public int MaoAlready { get; set; } - - public static DQueryDom Register(DateTime date, long? maxID) - { - var main = new JoinAlias("_S2", typeof(SecondOrder)); - var order = new JoinAlias("_O2", typeof(OrderDetail)); - var relate = new JoinAlias(typeof(OrderGradeFinishRelate)); - var query = new DQueryDom(main); - query.From.AddJoin(JoinType.Left, new DQDmoSource(order), DQCondition.EQ(main, "OrderDetail_ID", order, "ID")); - query.From.AddJoin(JoinType.Left, new DQDmoSource(relate), DQCondition.EQ(main, "OrderDetail_ID", relate, "OrderDetail_ID")); - query.Columns.Add(DQSelectColumn.Field("OrderDetail_ID")); - query.Columns.Add(DQSelectColumn.Create(DQExpression.Max(DQExpression.LogicCase(DQCondition.EQ(relate, "Technics", 0), DQExpression.Field(relate, "Finish"), DQExpression.Value(0))), "Tang")); - query.Columns.Add(DQSelectColumn.Create(DQExpression.Max(DQExpression.LogicCase(DQCondition.EQ(relate, "Technics", 0), DQExpression.Field(relate, "Already"), DQExpression.Value(0))), "TangAlready")); - query.Columns.Add(DQSelectColumn.Create(DQExpression.Max(DQExpression.LogicCase(DQCondition.EQ(relate, "Technics", 1), DQExpression.Field(relate, "Finish"), DQExpression.Value(0))), "Mao")); - query.Columns.Add(DQSelectColumn.Create(DQExpression.Max(DQExpression.LogicCase(DQCondition.EQ(relate, "Technics", 1), DQExpression.Field(relate, "Already"), DQExpression.Value(0))), "MaoAlready")); - query.GroupBy.Expressions.Add(DQExpression.Field("OrderDetail_ID")); - - query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("IsOk", true), DQCondition.Between(DQExpression.Field(order, "Date"), date, date + new TimeSpan(23, 59, 29)))); - if (maxID.HasValue) - query.Where.Conditions.Add(DQCondition.GreaterThan("ID", maxID)); - return query; - } - } - [Rpc] - public static string GetDetailsList(DateTime date, int top) - { - var query = new DmoQuery(typeof(GradeAndWeight_Detail)); - query.Where.Conditions.Add(DQCondition.EQ("Date", date)); - query.OrderBy.Expressions.Add(DQOrderByExpression.Create("Index", true)); - query.Range = SelectRange.Top(top); - return serializer.Serialize(query.EExecuteList()); - } - - [Rpc] - public static long UpdateOrInsertDetail(string json, bool fillTechnics) + public static long UpdateOrInsertDetail(string json) { json = json.ESerializeDateTime(); var entity = serializer.Deserialize(json); using (var session = Dmo.NewSession()) { if (entity.ID == 0) + { session.Insert(entity); + if (entity.OrderDetail_ID.HasValue) + AddAlready(session, entity.OrderDetail_ID.Value, entity.Technics); + } else session.Update(entity); - if (fillTechnics && entity.OrderDetail_ID.HasValue) - AddAlready(session, entity.OrderDetail_ID.Value, entity.Technics); session.Commit(); return entity.ID; } } - [Rpc] - public static int UpdateLivestock(long id, long liveStockID, string liveStockName,short techincs,string technicsName) - { - using (var session = Dmo.NewSession()) - { - var update = new DQUpdateDom(typeof(GradeAndWeight_Detail)); - update.Where.Conditions.Add(DQCondition.EQ("ID", id)); - update.Columns.Add(new DQUpdateColumn("Livestock_ID", liveStockID)); - update.Columns.Add(new DQUpdateColumn("Livestock_Name", liveStockName)); - update.Columns.Add(new DQUpdateColumn("Technics", techincs)); - update.Columns.Add(new DQUpdateColumn("Technics_Name", technicsName)); - session.ExecuteNonQuery(update); - session.Commit(); - } - return 1; - } - [Rpc] public static int SetGradeFinish(long orderDetailID, short technics) { @@ -233,19 +159,5 @@ namespace BWP.B3ClientService.Rpcs.BillRpc } return 1; } - - [Rpc] - public static int UpdateWeight(long id, decimal? weight) - { - using (var session = Dmo.NewSession()) - { - var update = new DQUpdateDom(typeof(GradeAndWeight_Detail)); - update.Where.Conditions.Add(DQCondition.EQ("ID", id)); - update.Columns.Add(new DQUpdateColumn("Weight", weight)); - session.ExecuteNonQuery(update); - session.Commit(); - } - return 1; - } } } diff --git a/B3ClientService/Rpcs/BillRpc/OrderConfirmRpc.cs b/B3ClientService/Rpcs/BillRpc/OrderConfirmRpc.cs deleted file mode 100644 index dfb5bfe..0000000 --- a/B3ClientService/Rpcs/BillRpc/OrderConfirmRpc.cs +++ /dev/null @@ -1,62 +0,0 @@ -using BWP.B3ClientService.BO; -using Forks.EnterpriseServices.DomainObjects2; -using Forks.EnterpriseServices.DomainObjects2.DQuery; -using Forks.EnterpriseServices.JsonRpc; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Web.Script.Serialization; -using TSingSoft.WebPluginFramework; - -namespace BWP.B3ClientService.Rpcs.BillRpc -{ - [Rpc] - public static class OrderConfirmRpc - { - static JavaScriptSerializer serializer = new JavaScriptSerializer(); - - [Rpc] - public static string GetConfirmOrder(DateTime date) - { - var query = new DQueryDom(new JoinAlias(typeof(OrderDetail))); - query.Columns.Add(DQSelectColumn.Field("ID")); - query.Columns.Add(DQSelectColumn.Field("Order")); - query.Columns.Add(DQSelectColumn.Field("B3WeighBill_ID")); - query.Columns.Add(DQSelectColumn.Field("LiveColonyHouse_Name")); - query.Columns.Add(DQSelectColumn.Field("PlanNumber")); - query.Columns.Add(DQSelectColumn.Field("Confirmed")); - query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Date", date), DQCondition.EQ("DeleteState", false))); - var list = new List(); - using (var session = Dmo.NewSession()) - { - using (var reader = session.ExecuteReader(query)) - { - while (reader.Read()) - { - var entity = new ConfirmOrder(); - entity.ID = (long)reader[0]; - entity.Order = (int)reader[1]; - entity.B3WeighBill_ID = (long?)reader[2]; - entity.LiveColonyHouse_Name = (string)reader[3]; - entity.Number = (int)reader[4]; - entity.Confirmed = (bool)reader[5]; - list.Add(entity); - } - } - } - - return serializer.Serialize(list); - } - - [Rpc] - public static int SetOrderConfirmed(long id) - { - var update = new DQUpdateDom(typeof(OrderDetail)); - update.Columns.Add(new DQUpdateColumn("Confirmed", true)); - 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..647fdbe 100644 --- a/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs @@ -20,25 +20,29 @@ 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)); + 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(alreadyNumber, "Already")); query.Columns.Add(DQSelectColumn.Field("WeighTime")); query.Columns.Add(DQSelectColumn.Field("B3ID")); query.Columns.Add(DQSelectColumn.Field("Show", relate)); 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)), DQExpression.IfNull(DQExpression.Field(already, "Number"), DQExpression.Value(0)))); + query.Where.Conditions.Add(DQCondition.InEQ(DQExpression.IfNull(DQExpression.Field(detail, "Number"), DQExpression.Value(0)), alreadyNumber)); if (showType == true) query.Where.Conditions.Add(DQCondition.Or(DQCondition.IsNull(DQExpression.Field(relate, "Show")), DQCondition.EQ(relate, "Show", true))); else if (showType == false) @@ -70,7 +74,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc return serializer.Serialize(result); } - class WeightDetailTemp + class OrderDetailTemp { public long WeightBill_ID { get; set; } @@ -78,35 +82,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 +121,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,27 +146,33 @@ 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.And(DQCondition.EQ("WeightBill_ID", wid), 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")); query.Columns.Add(DQSelectColumn.Field("SecondarySplit")); query.Columns.Add(DQSelectColumn.Field("Supplier_Name")); + query.Columns.Add(DQSelectColumn.Field("OrderState")); 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 +190,8 @@ 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; - } + entity.OrderState = (int)reader[9]; + entity.Date = date; list.Add(entity); } } @@ -192,26 +199,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) { @@ -223,11 +210,22 @@ namespace BWP.B3ClientService.Rpcs.BillRpc [Rpc] public static int GetCurrentOrder(long id) + { + return GetOrderDetailProperty(id, "Order"); + } + + [Rpc] + public static int GetCurrentOrderPlanNumber(long id) + { + return GetOrderDetailProperty(id, "PlanNumber"); + } + + static T GetOrderDetailProperty(long id, string property) { var query = new DQueryDom(new JoinAlias(typeof(OrderDetail))); - query.Columns.Add(DQSelectColumn.Field("Order")); + query.Columns.Add(DQSelectColumn.Field(property)); query.Where.Conditions.Add(DQCondition.EQ("ID", id)); - return query.EExecuteScalar(); + return (T)query.EExecuteScalar(); } [Rpc] @@ -237,7 +235,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc var entity = serializer.Deserialize(insert); using (var session = Dmo.NewSession()) { - //CheckCanInsert(session, entity.Order, entity.Date.Value); + CheckCanInsert(session, entity.Order, entity.Date.Value); entity.ModifyTime = DateTime.Now; UpdateOrder(session, entity.Order - 1, 1, entity.Date); session.Insert(entity); @@ -251,7 +249,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc 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))); + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Date", date), DQCondition.EQ("DeleteState", false), DQCondition.GreaterThanOrEqual("OrderState", 10), DQCondition.GreaterThanOrEqual("Order", order))); if (query.EExecuteScalar(session) != null) throw new Exception("不允许插入到已进行烫毛计数顺序之前"); } @@ -285,11 +283,12 @@ namespace BWP.B3ClientService.Rpcs.BillRpc { using (var session = Dmo.NewSession()) { - var entity = InnerBLUtil.GetSingleDmo(session, "ID", id, "Order", "Date", "SecondarySplit"); - //if (entity.SecondarySplit) - // throw new Exception("已进行烫毛计数,不能修改"); + var entity = InnerBLUtil.GetSingleDmo(session, "ID", id, "Order", "Date", "OrderState"); + if (entity.OrderState != 0) + throw new Exception("已开始宰杀,不能修改"); UpdateOrder(session, entity.Order, -1, entity.Date); UpdateOrderDetailPartial(session, id, "DeleteState", true); + ClearHurryRecordToOrderID(session, id); session.Commit(); } return 1; @@ -319,46 +318,58 @@ namespace BWP.B3ClientService.Rpcs.BillRpc session.ExecuteNonQuery(update); } + #endregion + + #region hurryButcher [Rpc] - public static string GetHurryRecords(long orderId) + public static string GetHurryRecordList(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 = GetOrderID(entity.WeightBill_ID); 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); + 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 +380,160 @@ 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(order, "WeightBill_ID", weightBillId)); + var hurry = GetHurryRecordNumber(weightBillId); + query.Columns.Add(DQSelectColumn.Field("ID", order)); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Subtract(DQExpression.IfNull(DQExpression.Field(detail, "Number"), DQExpression.Value(0)), DQExpression.IfNull(DQExpression.Field(order, "PlanNumber"), DQExpression.Value(0))), "last")); + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ(detail, "DeleteState", false), DQCondition.EQ(order, "DeleteState", false), DQCondition.EQ(order, "IsHurryButcher", false), DQCondition.EQ(detail, "WeightBill_ID", weightBillId))); + long? id = null; + using (var session = Dmo.NewSession()) + { + using (var reader = session.ExecuteReader(query)) + { + while (reader.Read()) + { + if (id.HasValue || Convert.ToInt32(reader[1]) - hurry != 0) + return -1; + id = (long)reader[0]; + } + } + } + return id; + } + + [Rpc] + public static string GetHurryRecord(long id) + { + var query = new DmoQuery(typeof(HurryRecord)); + query.Where.Conditions.Add(DQCondition.EQ("ID", id)); + var entity = query.EExecuteScalar(); + if (entity == null) + throw new Exception(string.Format("急宰单No.{0} 已被删除", id)); + return serializer.Serialize(entity); + } + + [Rpc] + public static string GetSelectHurryList(DateTime butcherDate) + { + 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, butcherDate); + 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", ""))); + + 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, DateTime date) + { + 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.And(DQCondition.EQ(detail, "WeightBill_ID", order, "WeightBill_ID"), DQCondition.EQ(order, "DeleteState", false))); + query.Columns.Add(DQSelectColumn.Field("WeightBill_ID", detail)); + query.GroupBy.Expressions.Add(DQExpression.Field(detail, "WeightBill_ID")); + query.Where.Conditions.Add(DQCondition.And(DQCondition.Or(DQCondition.IsNull(DQExpression.Field(order, "ID")), DQCondition.EQ(order, "Date", date)), DQCondition.EQ(detail, "DeleteState", false))); + + rootQuery.RegisterQueryTable(typeof(StartOrderTemp), new string[] { "WeightBill_ID" }, query); + var alias = new JoinAlias(typeof(StartOrderTemp)); + rootQuery.From.AddJoin(JoinType.Inner, new DQDmoSource(alias), DQCondition.EQ(rootAlias, "ID", alias, "WeightBill_ID")); + return alias; + } + } + #endregion + + #region orderConfirm + [Rpc] + 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("OrderState", state)); + update.Where.Conditions.Add(DQCondition.EQ("ID", id)); + update.EExecute(); + return 1; + } + + [Rpc] + public static long InsertByHurryRecord(string insert, long hurryID) + { + insert = insert.ESerializeDateTime(); + var entity = serializer.Deserialize(insert); + 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); + SetHurryRecordToOrderID(session, entity.ID, hurryID); + session.Commit(); + } + return entity.ID; + } + + static void SetHurryRecordToOrderID(IDmoSession session, long orderID, long hurryID) + { + var update = new DQUpdateDom(typeof(HurryRecord)); + update.Where.Conditions.Add(DQCondition.EQ("ID", hurryID)); + update.Columns.Add(new DQUpdateColumn("ToOrderDetail_ID", orderID)); + session.ExecuteNonQuery(update); + } + + static void ClearHurryRecordToOrderID(IDmoSession session, long orderID) + { + var update = new DQUpdateDom(typeof(HurryRecord)); + update.Where.Conditions.Add(DQCondition.EQ("ToOrderDetail_ID", orderID)); + update.Columns.Add(new DQUpdateColumn("ToOrderDetail_ID", DQExpression.NULL)); + session.ExecuteNonQuery(update); + } + + [Rpc] + public static int GetFinishNumbers(DateTime date) + { + var query = new DQueryDom(new JoinAlias(typeof(OrderDetail))); + query.Columns.Add(DQSelectColumn.Sum("PlanNumber")); + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("Date", date), DQCondition.EQ("OrderState", 20))); + return query.EExecuteScalar() ?? 0; + } + #endregion } } diff --git a/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs b/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs index 8ad5b39..5f81562 100644 --- a/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/SecondOrderRpc.cs @@ -35,6 +35,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc query.Columns.Add(DQSelectColumn.Field("HotFadeNumber", detail)); query.Columns.Add(DQSelectColumn.Field("IsOk", detail)); query.Columns.Add(DQSelectColumn.Field("Finish", detail)); + query.Where.Conditions.Add(DQCondition.GreaterThanOrEqual("OrderState", 10)); var list = new List(); using (var session = Dmo.NewSession()) { diff --git a/B3ClientService/Rpcs/BillRpc/TrunksIousOutInStoreRpc.cs b/B3ClientService/Rpcs/BillRpc/TrunksIousOutInStoreRpc.cs new file mode 100644 index 0000000..503959a --- /dev/null +++ b/B3ClientService/Rpcs/BillRpc/TrunksIousOutInStoreRpc.cs @@ -0,0 +1,129 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Web.Script.Serialization; +using BWP.B3ClientService.BO; +using BWP.B3ClientService.NamedValueTemplate; +using Forks.EnterpriseServices.DomainObjects2; +using Forks.EnterpriseServices.DomainObjects2.DQuery; +using Forks.EnterpriseServices.JsonRpc; + +namespace BWP.B3ClientService.Rpcs.BillRpc +{ + [Rpc] + public static class TrunksIousOutInStoreRpc + { + + [Rpc] + public static void UpdateCarcassStateWeight1(string code,decimal weight) + { + using (var session=Dmo.NewSession()) + { + var id = GetCarcassStateWeightId(session, code); + var updateDom=new DQUpdateDom(typeof(CarcassStateWeight)); + updateDom.Where.Conditions.Add(DQCondition.EQ("ID",id)); + updateDom.Columns.Add(new DQUpdateColumn("State1Weight",weight)); + updateDom.Columns.Add(new DQUpdateColumn("State1WeightTime", DateTime.Now)); + updateDom.Columns.Add(new DQUpdateColumn("CurrentState", 胴体状态.胴体称重)); + updateDom.Columns.Add(new DQUpdateColumn("CurrentWeight", weight)); + + session.ExecuteNonQuery(updateDom); + session.Commit(); + } + } + [Rpc] + public static void UpdateCarcassStateWeight2(string code, decimal weight) + { + using (var session = Dmo.NewSession()) + { + var id = GetCarcassStateWeightId(session, code); + var updateDom = new DQUpdateDom(typeof(CarcassStateWeight)); + updateDom.Where.Conditions.Add(DQCondition.EQ("ID", id)); + updateDom.Columns.Add(new DQUpdateColumn("State2Weight", weight)); + updateDom.Columns.Add(new DQUpdateColumn("State2WeightTime", DateTime.Now)); + updateDom.Columns.Add(new DQUpdateColumn("CurrentState", 胴体状态.入预冷库)); + updateDom.Columns.Add(new DQUpdateColumn("CurrentWeight", weight)); + + session.ExecuteNonQuery(updateDom); + session.Commit(); + } + } + [Rpc] + public static void UpdateCarcassStateWeight3(string code, decimal weight) + { + using (var session = Dmo.NewSession()) + { + var id = GetCarcassStateWeightId(session, code); + var updateDom = new DQUpdateDom(typeof(CarcassStateWeight)); + updateDom.Where.Conditions.Add(DQCondition.EQ("ID", id)); + updateDom.Columns.Add(new DQUpdateColumn("State3Weight", weight)); + updateDom.Columns.Add(new DQUpdateColumn("State3WeightTime", DateTime.Now)); + updateDom.Columns.Add(new DQUpdateColumn("CurrentState", 胴体状态.分割领用)); + updateDom.Columns.Add(new DQUpdateColumn("CurrentWeight", weight)); + + session.ExecuteNonQuery(updateDom); + session.Commit(); + } + } + [Rpc] + public static void UpdateCarcassStateWeight4(string code, decimal weight) + { + using (var session = Dmo.NewSession()) + { + var id = GetCarcassStateWeightId(session, code); + var updateDom = new DQUpdateDom(typeof(CarcassStateWeight)); + updateDom.Where.Conditions.Add(DQCondition.EQ("ID", id)); + updateDom.Columns.Add(new DQUpdateColumn("State4Weight", weight)); + updateDom.Columns.Add(new DQUpdateColumn("State4WeightTime", DateTime.Now)); + updateDom.Columns.Add(new DQUpdateColumn("CurrentState", 胴体状态.入销售库)); + updateDom.Columns.Add(new DQUpdateColumn("CurrentWeight", weight)); + + session.ExecuteNonQuery(updateDom); + session.Commit(); + } + } + [Rpc] + public static void UpdateCarcassStateWeight5(string code, decimal weight) + { + using (var session = Dmo.NewSession()) + { + var id = GetCarcassStateWeightId(session, code); + var updateDom = new DQUpdateDom(typeof(CarcassStateWeight)); + updateDom.Where.Conditions.Add(DQCondition.EQ("ID", id)); + updateDom.Columns.Add(new DQUpdateColumn("State5Weight", weight)); + updateDom.Columns.Add(new DQUpdateColumn("State5WeightTime", DateTime.Now)); + updateDom.Columns.Add(new DQUpdateColumn("CurrentState", 胴体状态.销售出库)); + updateDom.Columns.Add(new DQUpdateColumn("CurrentWeight", weight)); + + session.ExecuteNonQuery(updateDom); + session.Commit(); + } + } + + static long? GetCarcassStateWeightId(IDmoSession session, string code) + { + var list=new List(); + var query = new DQueryDom(new JoinAlias(typeof(CarcassStateWeight))); + query.Where.Conditions.Add(DQCondition.EQ("Code", code)); + query.Columns.Add(DQSelectColumn.Field("ID")); + using (var reader=session.ExecuteReader(query)) + { + while (reader.Read()) + { + var id = (long) reader[0]; + list.Add(id); + } + } + if (list.Count == 0) + { + throw new Exception("没有找到条码:"+code+" 对应的记录"); + } + if(list.Count>1) + { + throw new Exception("找到条码:" + code + " 对应的多条记录"); + } + return list[0]; + } + } +} diff --git a/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs b/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs index f3441ed..6cdd418 100644 --- a/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs @@ -40,6 +40,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc query.Columns.Add(DQSelectColumn.Field("Number", detail)); query.Columns.Add(DQSelectColumn.Field("Weight", detail)); query.Columns.Add(DQSelectColumn.Create(DQExpression.LogicCase(DQCondition.And(DQCondition.IsNotNull(DQExpression.Field(detail, "PiWeight")), DQCondition.IsNotNull(DQExpression.Field(detail, "MaoWeight"))), DQExpression.Value(1), DQExpression.Value(0)), "FinishWeight")); + query.Columns.Add(DQSelectColumn.Field("PrintNumber")); query.Where.Conditions.Add(DQCondition.And(DQCondition.Between("WeighTime", date, date + new TimeSpan(23, 59, 29)), DQCondition.EQ("DeleteState", false))); if (carID.HasValue) query.Where.Conditions.Add(DQCondition.EQ("Car_ID", carID)); @@ -65,6 +66,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc entity.Number = (int?)reader[9]; entity.Weight = (decimal?)reader[10]; entity.FinishWeight = Convert.ToBoolean(reader[11]); + entity.PrintNumber = (int)reader[12]; list.Add(entity); } } @@ -145,13 +147,14 @@ namespace BWP.B3ClientService.Rpcs.BillRpc static void FillServerUpdateFields(IDmoSession session, WeightBill dmo) { - var min = InnerBLUtil.GetSingleDmo(session, "ID", dmo.ID, "B3ID", "DeleteState", "Inspector_ID", "Inspector_Name", "HouseNames", "SanctionMoney"); + var min = InnerBLUtil.GetSingleDmo(session, "ID", dmo.ID, "B3ID", "DeleteState", "Inspector_ID", "Inspector_Name", "HouseNames", "SanctionMoney", "PrintNumber"); dmo.B3ID = min.B3ID; dmo.DeleteState = min.DeleteState; dmo.Inspector_ID = min.Inspector_ID; dmo.Inspector_Name = min.Inspector_Name; dmo.HouseNames = min.HouseNames; dmo.SanctionMoney = min.SanctionMoney; + dmo.PrintNumber = min.PrintNumber; dmo.Sync = false; dmo.ModifyTime = DateTime.Now; } @@ -226,6 +229,10 @@ namespace BWP.B3ClientService.Rpcs.BillRpc update.Columns.Add(new DQUpdateColumn("Sync", false)); update.Where.Conditions.Add(DQCondition.EQ("ID", id)); session.ExecuteNonQuery(update); + + var delete = new DQDeleteDom(typeof(WeightBillCheck)); + delete.Where.Conditions.Add(DQCondition.EQ("ID", id)); + session.ExecuteNonQuery(delete); session.Commit(); } @@ -250,8 +257,9 @@ namespace BWP.B3ClientService.Rpcs.BillRpc query.Columns.Add(DQSelectColumn.Field("ID")); query.Columns.Add(DQSelectColumn.Field("B3ID")); query.Columns.Add(DQSelectColumn.Field("SanctionMoney")); + query.Columns.Add(DQSelectColumn.Field("HouseNames")); query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.Between("WeighTime", date, date + new TimeSpan(23, 59, 29)))); - var result = query.EExecuteList().Select(x => new CTuple(x.Item1, x.Item2, x.Item3)); + var result = query.EExecuteList().Select(x => new CTuple(x.Item1, x.Item2, x.Item3, x.Item4)); return serializer.Serialize(result.ToList()); } @@ -301,5 +309,17 @@ namespace BWP.B3ClientService.Rpcs.BillRpc entity.Details = s.Select(x => new PWeightBill_SanctionDetail { AbnormalItem_Name = x.Item1, Number = x.Item2, Money = x.Item3 }).ToList(); return serializer.Serialize(entity); } + + [Rpc] + public static int DoCheck(long id, string creator) + { + var update = new DQUpdateDom(typeof(WeightBill)); + update.Where.Conditions.Add(DQCondition.EQ("ID", id)); + update.Columns.Add(new DQUpdateColumn("PrintNumber", DQExpression.Add(DQExpression.Field("PrintNumber"), DQExpression.Value(1)))); + update.EExecute(); + + WeightBillCheck.Insert(id, creator); + return 1; + } } } diff --git a/B3ClientService/Rpcs/RpcBO/Bill/GradeAndWeight/GradeAndWeight.cs b/B3ClientService/Rpcs/RpcBO/Bill/GradeAndWeight/GradeAndWeight.cs index 77d79ce..9a5f507 100644 --- a/B3ClientService/Rpcs/RpcBO/Bill/GradeAndWeight/GradeAndWeight.cs +++ b/B3ClientService/Rpcs/RpcBO/Bill/GradeAndWeight/GradeAndWeight.cs @@ -11,10 +11,6 @@ namespace BWP.B3ClientService.RpcBO public int Order { get; set; } - public short Technics { get; set; } - - public string Technics_Name { get; set; } - public int Number { get; set; } public int Already { get; set; } diff --git a/B3ClientService/Tasks/UpdateLoad/DoCheckBills.cs b/B3ClientService/Tasks/UpdateLoad/DoCheckBills.cs new file mode 100644 index 0000000..77080d1 --- /dev/null +++ b/B3ClientService/Tasks/UpdateLoad/DoCheckBills.cs @@ -0,0 +1,35 @@ +using BWP.B3ClientService.BO; +using Forks.EnterpriseServices.DomainObjects2; +using Forks.EnterpriseServices.DomainObjects2.DQuery; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using TSingSoft.WebPluginFramework.BWPClients; +using TSingSoft.WebPluginFramework; + +namespace BWP.B3ClientService.Tasks.UpdateLoad +{ + public static class DoCheckBills + { + public static void Execute(string uri) + { + var weightBills = GetWeightBillCheck(); + foreach (var item in weightBills) + { + var bwpClient = new BWPClient(uri, item.Item2); + bwpClient.Call("/MainSystem/B3ButcherManage/Rpcs/WeighBillRpc/DoCheck", item.Item1); + WeightBillCheck.SetSynced(item.Item1); + } + } + + static List> GetWeightBillCheck() + { + var query = new DQueryDom(new JoinAlias(typeof(WeightBillCheck))); + query.Columns.Add(DQSelectColumn.Field("B3ID")); + query.Columns.Add(DQSelectColumn.Field("Creator")); + query.Where.Conditions.Add(DQCondition.And(DQCondition.IsNotNull(DQExpression.Field("B3ID")), DQCondition.EQ("Sync", false))); + return query.EExecuteList(); + } + } +} diff --git a/B3ClientService/Tasks/UpdateLoad/UploadTest.cs b/B3ClientService/Tasks/UpdateLoad/UploadTest.cs index 82e9010..0a455fd 100644 --- a/B3ClientService/Tasks/UpdateLoad/UploadTest.cs +++ b/B3ClientService/Tasks/UpdateLoad/UploadTest.cs @@ -25,6 +25,8 @@ namespace BWP.B3ClientService.Tasks UpLoadWeightBill.Execute(serverUri); UploadOrderDetail.Execute(serverUri); UploadSecondOrder.Execute(serverUri); + + DoCheckBills.Execute(serverUri); } public string Name