| @ -1,13 +1,23 @@ | |||||
| using System; | |||||
| using Forks.EnterpriseServices.DomainObjects2; | |||||
| using System; | |||||
| using System.Collections.Generic; | using System.Collections.Generic; | ||||
| using System.Linq; | using System.Linq; | ||||
| using System.Text; | using System.Text; | ||||
| using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
| using TSingSoft.WebPluginFramework; | |||||
| namespace BWP.B3ClientService.BO | namespace BWP.B3ClientService.BO | ||||
| { | { | ||||
| [Serializable] | |||||
| public class Livestock : BaseInfo | |||||
| [Serializable, BOClass] | |||||
| [KeyField("ID", KeyGenType.assigned)] | |||||
| public class Livestock | |||||
| { | { | ||||
| public long ID { get; set; } | |||||
| public string Name { get; set; } | |||||
| public short Technics { get; set; } | |||||
| public int? SortNum { get; set; } | |||||
| } | } | ||||
| } | } | ||||
| @ -0,0 +1,32 @@ | |||||
| using BWP.B3Frameworks.BO; | |||||
| using Forks.EnterpriseServices.DomainObjects2; | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| namespace BWP.B3ClientService.BO | |||||
| { | |||||
| public class GradeAndWeight_Detail : Base | |||||
| { | |||||
| public int Index { get; set; } | |||||
| public long OrderDetail_ID { get; set; } | |||||
| [ReferenceTo(typeof(OrderDetail), "Order")] | |||||
| [Join("OrderDetail_ID", "ID")] | |||||
| public int? Order { get; set; } | |||||
| public short Technics { get; set; } | |||||
| public string Technics_Name { get; set; } | |||||
| public long Livestock_ID { get; set; } | |||||
| public string Livestock_Name { get; set; } | |||||
| public decimal? Weight { get; set; } | |||||
| public DateTime Time { get; set; } | |||||
| } | |||||
| } | |||||
| @ -1,29 +0,0 @@ | |||||
| 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 ButcherOrder : Base | |||||
| { | |||||
| public long BillID { get; set; } | |||||
| public long BillDetailID { get; set; } | |||||
| public int Order { get; set; } | |||||
| public int PlanNumber { get; set; } | |||||
| public DateTime Date { get; set; } | |||||
| public int HotFadeNumber { get; set; } | |||||
| public bool Sync { get; set; } | |||||
| public bool UpLoad { get; set; } | |||||
| } | |||||
| } | |||||
| @ -1,19 +0,0 @@ | |||||
| 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 ButcherOrder_Detail : Base | |||||
| { | |||||
| public long ButcherOrder_ID { get; set; } | |||||
| public DateTime Date { get; set; } | |||||
| public int Number { get; set; } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,20 @@ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| namespace BWP.B3ClientService.RpcBO | |||||
| { | |||||
| public class GradeAndWeight | |||||
| { | |||||
| public long OrderDetail_ID { get; set; } | |||||
| public int Order { get; set; } | |||||
| public string Technics_Name { get; set; } | |||||
| public int Number { get; set; } | |||||
| public int Already { get; set; } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,117 @@ | |||||
| using BWP.B3ClientService.BO; | |||||
| using BWP.B3ClientService.RpcBO; | |||||
| 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.Web.Script.Serialization; | |||||
| using TSingSoft.WebPluginFramework; | |||||
| namespace BWP.B3ClientService.Rpcs.BillRpc | |||||
| { | |||||
| [Rpc] | |||||
| public static class GradeAndWeightRpc | |||||
| { | |||||
| static JavaScriptSerializer serializer = new JavaScriptSerializer(); | |||||
| [Rpc] | |||||
| public static string GetGradeAndWeightList(DateTime date) | |||||
| { | |||||
| var main = new JoinAlias(typeof(SecondOrder)); | |||||
| var order = new JoinAlias(typeof(OrderDetail)); | |||||
| var detail = new JoinAlias(typeof(GradeAndWeight_Detail)); | |||||
| 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(detail), DQCondition.EQ(main, "OrderDetail_ID", detail, "OrderDetail_ID")); | |||||
| query.Columns.Add(DQSelectColumn.Field("OrderDetail_ID")); | |||||
| query.Columns.Add(DQSelectColumn.Field("Order", order)); | |||||
| query.Columns.Add(DQSelectColumn.Field("PlanNumber", order)); | |||||
| query.Columns.Add(DQSelectColumn.Field("HotFadeNumber")); | |||||
| query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(detail, "Technics", 0), DQExpression.Value(1), DQExpression.Value(0))), "Tang")); | |||||
| query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(detail, "Technics", 1), DQExpression.Value(1), DQExpression.Value(0))), "Mao")); | |||||
| query.GroupBy.Expressions.Add(DQExpression.Field("OrderDetail_ID")); | |||||
| query.GroupBy.Expressions.Add(DQExpression.Field(order, "Order")); | |||||
| query.GroupBy.Expressions.Add(DQExpression.Field(order, "PlanNumber")); | |||||
| query.GroupBy.Expressions.Add(DQExpression.Field("HotFadeNumber")); | |||||
| query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("IsOk", true), DQCondition.Between(DQExpression.Field(order, "Date"), date, date + new TimeSpan(23, 59, 29)))); | |||||
| var list = new List<GradeAndWeight>(); | |||||
| using (var session = Dmo.NewSession()) | |||||
| { | |||||
| using (var reader = session.ExecuteReader(query)) | |||||
| { | |||||
| while (reader.Read()) | |||||
| { | |||||
| var tang = new GradeAndWeight(); | |||||
| tang.OrderDetail_ID = (long)reader[0]; | |||||
| tang.Order = (int)reader[1]; | |||||
| tang.Number = (int)reader[3]; | |||||
| if (tang.Number != 0) | |||||
| { | |||||
| tang.Technics_Name = "烫褪"; | |||||
| tang.Already = Convert.ToInt32(reader[4]); | |||||
| list.Add(tang); | |||||
| } | |||||
| var lastNumber = (int)reader[2] - tang.Number; | |||||
| if (lastNumber == 0) | |||||
| continue; | |||||
| var mb = new GradeAndWeight(); | |||||
| list.Add(mb); | |||||
| mb.OrderDetail_ID = tang.OrderDetail_ID; | |||||
| mb.Order = tang.Order; | |||||
| mb.Number = lastNumber; | |||||
| mb.Technics_Name = "毛剥"; | |||||
| mb.Already = Convert.ToInt32(reader[5]); | |||||
| } | |||||
| } | |||||
| } | |||||
| return serializer.Serialize(list); | |||||
| } | |||||
| [Rpc] | |||||
| public static string GetDetailsList(DateTime start, DateTime end, int? order, int type) | |||||
| { | |||||
| var query = new DmoQuery(typeof(GradeAndWeight_Detail)); | |||||
| query.Where.Conditions.Add(DQCondition.Between("Time", start, end + new TimeSpan(23, 59, 29))); | |||||
| if (type != -1) | |||||
| query.Where.Conditions.Add(DQCondition.EQ("Technics", type)); | |||||
| if (order.HasValue) | |||||
| query.Where.Conditions.Add(DQCondition.EQ("Order", order)); | |||||
| query.OrderBy.Expressions.Add(DQOrderByExpression.Create("Time")); | |||||
| return serializer.Serialize(query.EExecuteList()); | |||||
| } | |||||
| [Rpc] | |||||
| public static long InsertDetail(string json) | |||||
| { | |||||
| json = json.ESerializeDateTime(); | |||||
| var entity = serializer.Deserialize<GradeAndWeight_Detail>(json); | |||||
| using (var session = Dmo.NewSession()) | |||||
| { | |||||
| session.Insert(entity); | |||||
| session.Commit(); | |||||
| return entity.ID; | |||||
| } | |||||
| } | |||||
| [Rpc] | |||||
| public static int FillWeight(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; | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -1,74 +0,0 @@ | |||||
| using BWP.B3ClientService.BO; | |||||
| using BWP.B3Frameworks.Utils; | |||||
| 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.Threading.Tasks; | |||||
| using TSingSoft.WebPluginFramework; | |||||
| namespace BWP.B3ClientService.Rpcs | |||||
| { | |||||
| [Rpc] | |||||
| public static class ButcherOrderRpc | |||||
| { | |||||
| [Rpc] | |||||
| public static List<ButcherOrder> GetButcherOrder(DateTime date) | |||||
| { | |||||
| var query = new DmoQuery(typeof(ButcherOrder)); | |||||
| query.Where.Conditions.Add(DQCondition.EQ("Date", date)); | |||||
| return query.EExecuteList().Cast<ButcherOrder>().ToList(); | |||||
| } | |||||
| [Rpc] | |||||
| public static List<ButcherOrder_Detail> GetOrderDetail(long orderID) | |||||
| { | |||||
| var query = new DmoQuery(typeof(ButcherOrder_Detail)); | |||||
| query.Where.Conditions.Add(DQCondition.EQ("ButcherOrder_ID", orderID)); | |||||
| query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID")); | |||||
| return query.EExecuteList().Cast<ButcherOrder_Detail>().ToList(); | |||||
| } | |||||
| static void UpdateButcherOrder(IDmoSession session, long id, int hotFadeNumber) | |||||
| { | |||||
| var order = InnerBLUtil.GetSingleDmo<ButcherOrder>(session, "ID", id, "HotFadeNumber", "Sync"); | |||||
| order.HotFadeNumber += hotFadeNumber; | |||||
| if (hotFadeNumber < 0 && order.Sync) | |||||
| order.Sync = false; | |||||
| var update = new DQUpdateDom(typeof(ButcherOrder)); | |||||
| update.Where.Conditions.Add(DQCondition.EQ("HotFadeNumber", order.HotFadeNumber)); | |||||
| update.Where.Conditions.Add(DQCondition.EQ("Sync", order.Sync)); | |||||
| update.Where.Conditions.Add(DQCondition.EQ("ID", id)); | |||||
| session.ExecuteNonQuery(update); | |||||
| } | |||||
| [Rpc] | |||||
| public static void InsertOrderDetail(long orderID, int number) | |||||
| { | |||||
| using (var session = Dmo.NewSession()) | |||||
| { | |||||
| var detail = new ButcherOrder_Detail(); | |||||
| detail.Number = number; | |||||
| detail.Date = DateTime.Now; | |||||
| detail.ButcherOrder_ID = orderID; | |||||
| session.Insert(detail); | |||||
| UpdateButcherOrder(session, orderID, detail.Number); | |||||
| session.Commit(); | |||||
| } | |||||
| } | |||||
| [Rpc] | |||||
| public static void DeleteOrderDetail(long id) | |||||
| { | |||||
| using (var session = Dmo.NewSession()) | |||||
| { | |||||
| var detail = InnerBLUtil.GetSingleDmo<ButcherOrder_Detail>(session, "ID", id, "ButcherOrder_ID", "Number"); | |||||
| UpdateButcherOrder(session, detail.ButcherOrder_ID, -detail.Number); | |||||
| session.Commit(); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||