using ButcherFactory.BO.Utils; using Forks.EnterpriseServices.DomainObjects2; using Forks.EnterpriseServices.DomainObjects2.DQuery; using Forks.EnterpriseServices.SqlDoms; using Forks.JsonRpc.Client; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ButcherFactory.BO.LocalBL { public static class SegmentStockUpBL { const string RpcPath = @"/MainSystem/B3Sale/Rpcs/"; const string MESPath = @"/MainSystem/B3ClientService/Rpcs/"; /// /// /// /// GoodsCode:StringExt1,Weight:DecimalExt1 public static Tuple StockUpScan(string code) { var json = ButcherFactoryUtil.SecondUrlCall(MESPath + "SegmentInStoreRpc/StockUpScan", code); return JsonConvert.DeserializeObject>(json); } public static List GetSaleOutStoreList(DateTime date) { try { var json = RpcFacade.Call(RpcPath + "SaleOutStoreRpc/GetSaleOutStoreByDate", date); var list = JsonConvert.DeserializeObject>(json); foreach (var item in list) item.Date = date; return list; } catch { #if DEBUG throw; #endif return new List(); } } public static List GetLocalList(DateTime date) { using (var session = DmoSession.New()) { DeleteOld(session); var query = new DmoQuery(typeof(SegmentStockUp)); query.Where.Conditions.Add(DQCondition.EQ("Date", date)); return session.ExecuteList(query).Cast().ToList(); } } static void DeleteOld(IDmoSession session) { var delete = new DQDeleteDom(typeof(SegmentStockUp)); delete.Where.Conditions.Add(DQCondition.LessThan("Date", DateTime.Today.AddDays(-1))); session.ExecuteNonQuery(delete); } //当明细备完后,要返回该明细已备数量。 public static AlreadyStockUp Insert(SegmentStockUp detail, AlreadyStockUp already, decimal totalNumber, bool stockBySecond) { try { var json = JsonConvert.SerializeObject(new { DetailID = detail.DetailID, StandardPic = detail.StandardPic, BarCode = detail.BarCode, SecondNumber = detail.SecondNumber, UnitNumber = detail.UnitNumber }); var r = RpcFacade.Call(RpcPath + "SaleOutStoreRpc/InsertStockUpDetail", json, JsonConvert.SerializeObject(already), totalNumber, stockBySecond); var outSide = JsonConvert.DeserializeObject(r); if (outSide.State == 1) { using (var session = DmoSession.New()) { session.Insert(detail); session.Commit(); } } return outSide; } catch { return null; } } public static List SyncAlreadyNumber(IEnumerable detailIDs, long? maxID) { if (detailIDs.Count() == 0 && maxID == null) return new List(); var json = JsonConvert.SerializeObject(detailIDs); try { var result = RpcFacade.Call(RpcPath + "SaleOutStoreRpc/GetStockNumber", json, maxID); return JsonConvert.DeserializeObject>(result); } catch { #if DEBUG throw; #endif return new List(); } } public static List GetDeliverLineGroupList() { var json = RpcFacade.Call(RpcPath + "SaleOutStoreRpc/GetDeliverLineGroup"); return JsonConvert.DeserializeObject>(json); } } }