You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

90 lines
3.2 KiB

using B3DealerClient.BO;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.JsonRpc.Client;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using B3DealerClient.Utils;
using Forks.EnterpriseServices.DomainObjects2;
namespace B3DealerClient.BL
{
public static class CarcassInStoreBL
{
const string MethodPath = @"/MainSystem/B3Dealer/Rpcs/PayBillRpc/";
public static List<CarcassInStore> GetDmoList(object condition)
{
var method = MethodPath + "GetPayBillList";
var json = RpcFacade.Call<string>(method, JsonConvert.SerializeObject(condition));
return JsonConvert.DeserializeObject<List<CarcassInStore>>(json);
}
public static List<CarcassInStore_Detail> GetDmoDetailList(long id)
{
var method = MethodPath + "GetPayBillDetails";
var json = RpcFacade.Call<string>(method, id);
var list = JsonConvert.DeserializeObject<List<CarcassInStore_Detail>>(json);
FillAlreadyInfo(list);
return list;
}
static void FillAlreadyInfo(List<CarcassInStore_Detail> details)
{
if (details.Count == 0)
return;
var query = new DQueryDom(new JoinAlias(typeof(CarcassInStore_Receive)));
query.Columns.Add(DQSelectColumn.Field("DetailID"));
query.Columns.Add(DQSelectColumn.Sum("NetWeight"));
query.Columns.Add(DQSelectColumn.Sum("Pics"));
query.GroupBy.Expressions.Add(DQExpression.Field("DetailID"));
query.Where.Conditions.Add(DQCondition.InList(DQExpression.Field("DetailID"), details.Select(x => DQExpression.Value(x.ID)).ToArray()));
var list = query.EExecuteList<long, decimal, decimal>();
foreach (var item in list)
{
var first = details.First(x => x.ID == item.Item1);
first.AlreadyNumber = item.Item2;
first.AlreadySecondNumber = item.Item3;
}
}
public static IEnumerable<CarcassInStore_Receive> GetDetailReceive(long detailID)
{
var query = new DmoQuery(typeof(CarcassInStore_Receive));
query.Where.Conditions.Add(DQCondition.EQ("DetailID", detailID));
return query.EExecuteList().Cast<CarcassInStore_Receive>();
}
public static IEnumerable<CarcassInStore_Receive> GetBillReceive(long mainID)
{
var query = new DmoQuery(typeof(CarcassInStore_Receive));
query.Where.Conditions.Add(DQCondition.EQ("MainID", mainID));
return query.EExecuteList().Cast<CarcassInStore_Receive>();
}
public static void InsertRecord(CarcassInStore_Receive record)
{
using (var session = DmoSession.New())
{
session.Insert(record);
session.Commit();
}
}
public static void Delete(long id)
{
var del = new DQDeleteDom(typeof(CarcassInStore_Receive));
del.Where.Conditions.Add(DQCondition.EQ("ID", id));
del.EExecute();
}
public static long FinishInStore(long id,long inStoreID)
{
var target = GetBillReceive(id);
return RpcFacade.Call<long>(MethodPath + "FinishInStore", JsonConvert.SerializeObject(target), inStoreID);
}
}
}