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 SyncList(DateTime date, string customerName,string sendLineName,string billstate,bool updateLocalDb) { var resList=new BindingList(); if (LoginRpcUtil.TestConnection(100)) { var json = RpcFacade.Call("/MainSystem/B3ClientService/Rpcs/BillRpc/SaleOutStoreRpc/SyncList", date,customerName,sendLineName,billstate); var list = JsonConvert.DeserializeObject>(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(); using (var session=LocalDmoSession.New()) { list =session.ExecuteList(dmoquery).Cast().ToList(); } foreach (SaleOutStore store in list) { resList.Add(store); } } return resList; } private static void AddLocalSaleOutStore(List 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; } } }