屠宰场客户端
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.

98 lines
3.0 KiB

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using BO;
using BO.Utils;
using Distribution.LocalBo;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.JsonRpc.Client;
using Newtonsoft.Json;
namespace Distribution
{
public class SaleOutStoreRpc
{
//已天为单位更新
public static BindingList<SaleOutStore> SyncList(DateTime date, string customerName,string sendLineName,string billstate,bool updateLocalDb)
{
var resList=new BindingList<SaleOutStore>();
if (LoginRpcUtil.TestConnection(100))
{
var json = RpcFacade.Call<string>("/MainSystem/B3ClientService/Rpcs/BillRpc/SaleOutStoreRpc/SyncList", date,customerName,sendLineName,billstate);
var list = JsonConvert.DeserializeObject<List<SaleOutStore>>(json);
if (updateLocalDb)
{
//销售出库本地只添加,不做更新操作 特别是已配货数量这块 已本地为主
AddLocalSaleOutStore(list);
}
foreach (SaleOutStore store in list)
{
resList.Add(store);
}
}
else
{
var dmoquery = new DmoQuery(typeof(SaleOutStore));
dmoquery.Where.Conditions.Add(DQCondition.GreaterThanOrEqual("LoadTime", date));
dmoquery.Where.Conditions.Add(DQCondition.LessThan("LoadTime", date.AddDays(1)));
if (!string.IsNullOrWhiteSpace(customerName))
{
dmoquery.Where.Conditions.Add(DQCondition.EQ("Customer_Name", customerName));
}
if (!string.IsNullOrWhiteSpace(sendLineName))
{
dmoquery.Where.Conditions.Add(DQCondition.EQ("DeliverGoodsLine_Name", sendLineName));
}
if (!string.IsNullOrWhiteSpace(sendLineName))
{
dmoquery.Where.Conditions.Add(DQCondition.EQ("BillState", billstate));
}
var list = new List<SaleOutStore>();
using (var session=LocalDmoSession.New())
{
list =session.ExecuteList(dmoquery).Cast<SaleOutStore>().ToList();
}
foreach (SaleOutStore store in list)
{
resList.Add(store);
}
}
return resList;
}
private static void AddLocalSaleOutStore(List<SaleOutStore> list)
{
if (list.Count == 0)
{
return;
}
using (var session=LocalDmoSession.New())
{
foreach (SaleOutStore store in list)
{
if (!IsExist(session, store.SaleOutStoreDetail_ID))
{
session.Insert(store);
}
}
session.Commit();
}
}
static bool IsExist(IDmoSession session, long detailid)
{
var query=new DQueryDom(new JoinAlias(typeof(SaleOutStore)));
query.Where.Conditions.Add(DQCondition.EQ("SaleOutStoreDetail_ID",detailid));
query.Columns.Add(DQSelectColumn.Field("SaleOutStoreDetail_ID"));
var res = session.ExecuteScalar(query);
if (res is DBNull || res == null)
{
return false;
}
return true;
}
}
}