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.
 
 

91 lines
3.1 KiB

using B3DealerClient.BO;
using Forks.EnterpriseServices.DomainObjects2;
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 System.Collections;
namespace B3DealerClient.BL
{
public static class FreshInStoreBL
{
const string MethodPath = @"/MainSystem/B3Dealer/Rpcs/PayBillRpc/";
public static List<FreshInStore> GetDmoList(object condition)
{
var method = MethodPath + "GetPayBillList";
var json = RpcFacade.Call<string>(method, JsonConvert.SerializeObject(condition));
return JsonConvert.DeserializeObject<List<FreshInStore>>(json);
}
public static List<FreshInStore_Detail> GetDmoDetailList(long id)
{
var method = MethodPath + "GetPayBillDetails";
var json = RpcFacade.Call<string>(method, id);
var list = JsonConvert.DeserializeObject<List<FreshInStore_Detail>>(json);
FillAlreadyInfo(list);
return list;
}
static void FillAlreadyInfo(List<FreshInStore_Detail> details)
{
if (details.Count == 0)
return;
var query = new DQueryDom(new JoinAlias(typeof(FreshInStore_Record)));
query.Columns.Add(DQSelectColumn.Field("DetailID"));
query.Columns.Add(DQSelectColumn.Field("Weight"));
query.Columns.Add(DQSelectColumn.Field("Number"));
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 long FinishInStore(long id, long inStoreID)
{
var target = GetReceiveInfo(id);
return RpcFacade.Call<long>(MethodPath + "FreshFinishInStore", JsonConvert.SerializeObject(target), inStoreID);
}
private static IList GetReceiveInfo(long id)
{
var query = new DmoQuery(typeof(FreshInStore_Record));
query.Where.Conditions.Add(DQCondition.EQ("BillID", id));
return query.EExecuteList();
}
public static void InsertRecord(FreshInStore_Record record)
{
using (var session = DmoSession.New())
{
var id = GetExistID(session, record);
if (id.HasValue)
{
record.ID = id.Value;
session.Update(record);
}
else
session.Insert(record);
session.Commit();
}
}
static long? GetExistID(IDmoSession session, FreshInStore_Record record)
{
var query = new DQueryDom(new JoinAlias(typeof(FreshInStore_Record)));
query.Columns.Add(DQSelectColumn.Field("ID"));
query.Where.Conditions.Add(DQCondition.EQ("DetailID", record.DetailID));
return query.EExecuteScalar<long?>(session);
}
}
}