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<PickOutConfirmDmo> GetDmoList(DateTime butcherDate)
|
|
{
|
|
var json = SimpleRest.Call<string>("/MainSystem/B3ClientService/Rpcs/PickOutConfirmRpc/GetList", butcherDate);
|
|
var list = JsonConvert.DeserializeObject<List<PickOutConfirmDmo>>(json);
|
|
FillDetailWithLocal(list);
|
|
return list;
|
|
}
|
|
|
|
static void FillDetailWithLocal(List<PickOutConfirmDmo> 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<PickOutConfirmLocal>(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<int>(session);
|
|
Update<PickOutConfirmLocal>(session, id, "AlreadyNumber", num);
|
|
}
|
|
|
|
static void Update<T>(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<PickOutRecord> 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<PickOutRecord>().ToList();
|
|
}
|
|
}
|
|
}
|