using Forks.EnterpriseServices.DomainObjects2; using Forks.EnterpriseServices.DomainObjects2.DQuery; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ButcherManage.BO.LocalBL { public static class PickOutConfirmBL { public static List GetDmoList(DateTime butcherDate) { var json = SimpleRest.Call("/MainSystem/B3ClientService/Rpcs/PickOutConfirmRpc/GetList", butcherDate); var list = JsonConvert.DeserializeObject>(json); FillDetailWithLocal(list); return list; } static void FillDetailWithLocal(List list) { var query = new DQueryDom(new JoinAlias(typeof(PickOutConfirmLocal))); query.Columns.Add(DQSelectColumn.Field("ID")); query.Columns.Add(DQSelectColumn.Field("AlreadyNumber")); query.Columns.Add(DQSelectColumn.Field("ConfirmState")); query.Where.Conditions.Add(DQCondition.InList(DQExpression.Field("ID"), list.Select(x => DQExpression.Value(x.ID)).ToArray())); using (var session = DmoSession.New()) { using (var reader = session.ExecuteReader(query)) { while (reader.Read()) { var first = list.First(x => x.ID == (long)reader[0]); first.AlreadyNumber = (int)reader[1]; first.ConfirmState = (int)reader[2]; } } } } public static void ChangeState(long id, int state) { using (var session = DmoSession.New()) { Update(session, id, "ConfirmState", state); session.Commit(); } } public static void SaveRecord(PickOutRecord record) { using (var session = DmoSession.New()) { if (record.ID == 0) session.Insert(record); else session.Update(record); UpdateAlreadyNumber(session, record.Order_ID); session.Commit(); } } static void UpdateAlreadyNumber(IDmoSession session, long id) { var query = new DQueryDom(new JoinAlias(typeof(PickOutRecord))); query.Columns.Add(DQSelectColumn.Sum("Number")); query.Where.Conditions.Add(DQCondition.EQ("Order_ID", id)); var num = query.EExecuteScalar(session); Update(session, id, "AlreadyNumber", num); } static void Update(IDmoSession session, long id, string file, object value) where T : new() { var type = typeof(T); var query = new DQueryDom(new JoinAlias(type)); query.Where.Conditions.Add(DQCondition.EQ("ID", id)); query.Columns.Add(DQSelectColumn.Create(DQExpression.Value(1), "c")); if (query.EExecuteScalar(session) == null) { var entity = new T(); type.GetProperty("ID").SetValue(entity, id); type.GetProperty(file).SetValue(entity, value); session.Insert(entity); } else { var update = new DQUpdateDom(type); update.Where.Conditions.Add(DQCondition.EQ("ID", id)); update.Columns.Add(new DQUpdateColumn(file, value)); session.ExecuteNonQuery(update); } } public static List GetRecordList(long id) { var query = new DmoQuery(typeof(PickOutRecord)); query.Where.Conditions.Add(DQCondition.EQ("Order_ID", id)); query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID")); return query.EExecuteList().Cast().ToList(); } } }