| @ -0,0 +1,90 @@ | |||
| using BWP.B3ClientService.BO; | |||
| using Forks.EnterpriseServices.DomainObjects2; | |||
| using Forks.EnterpriseServices.DomainObjects2.DQuery; | |||
| using Forks.EnterpriseServices.JsonRpc; | |||
| using Forks.EnterpriseServices.SqlDoms; | |||
| using Newtonsoft.Json; | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using TSingSoft.WebPluginFramework; | |||
| namespace BWP.B3ClientService.Rpcs | |||
| { | |||
| [Rpc] | |||
| public static class SegmentSaleOutStoreRpc | |||
| { | |||
| [Rpc(RpcFlags.SkipAuth)] | |||
| public static string GetSegmentInfo(string barCode) | |||
| { | |||
| var main = new JoinAlias(typeof(SegmentProductionInfo)); | |||
| var goods = new JoinAlias(typeof(Goods)); | |||
| var query = new DQueryDom(main); | |||
| query.From.AddJoin(JoinType.Left, new DQDmoSource(goods), DQCondition.EQ(main, "Goods_ID", goods, "ID")); | |||
| query.Columns.Add(DQSelectColumn.Field("Code", goods)); | |||
| query.Columns.Add(DQSelectColumn.Field("Weight")); | |||
| query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("IsDelete", false), DQCondition.EQ("BarCode", barCode))); | |||
| query.Range = SelectRange.Top(1); | |||
| var rst = query.EExecuteScalar<string, decimal?>(); | |||
| var entity = new ExtensionObj(); | |||
| if (rst != null) | |||
| { | |||
| entity.StringExt1 = rst.Item1; | |||
| entity.DecimalExt1 = rst.Item2; | |||
| } | |||
| return JsonConvert.SerializeObject(entity); | |||
| } | |||
| [Rpc(RpcFlags.SkipAuth)] | |||
| public static int UploadSegmentInfo(string json) | |||
| { | |||
| var list = JsonConvert.DeserializeObject<List<SegmentSaleOutStoreObj>>(json); | |||
| using (var session = Dmo.NewSession()) | |||
| { | |||
| foreach (var item in list) | |||
| { | |||
| var id = GetSegmentID(item.BarCode, session); | |||
| if (id == null) | |||
| Insert(item, session); | |||
| else | |||
| Update(id.Value, item, session); | |||
| } | |||
| session.Commit(); | |||
| } | |||
| return 1; | |||
| } | |||
| static long? GetSegmentID(string code, IDmoSession session) | |||
| { | |||
| if (string.IsNullOrEmpty(code)) | |||
| return null; | |||
| var query = new DQueryDom(new JoinAlias(typeof(SegmentProductionInfo))); | |||
| query.Columns.Add(DQSelectColumn.Field("ID")); | |||
| query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("IsDelete", false), DQCondition.EQ("BarCode", code))); | |||
| return query.EExecuteScalar<long>(session); | |||
| } | |||
| static void Update(long id, SegmentSaleOutStoreObj obj, IDmoSession session) | |||
| { | |||
| var update = new DQUpdateDom(typeof(SegmentProductionInfo)); | |||
| update.Columns.Add(new DQUpdateColumn("PickTime", obj.Time)); | |||
| update.Where.Conditions.Add(DQCondition.EQ("ID", id)); | |||
| session.ExecuteNonQuery(update); | |||
| } | |||
| static void Insert(SegmentSaleOutStoreObj obj, IDmoSession session) | |||
| { | |||
| var entity = new SegmentProductionInfo(); | |||
| entity.BarCode = obj.BarCode; | |||
| entity.PickTime = obj.Time; | |||
| session.Insert(entity); | |||
| } | |||
| } | |||
| class SegmentSaleOutStoreObj | |||
| { | |||
| public string BarCode { get; set; } | |||
| public DateTime? Time { get; set; } | |||
| } | |||
| } | |||