diff --git a/B3ClientService/B3ClientService.csproj b/B3ClientService/B3ClientService.csproj index 750e969..221af3d 100644 --- a/B3ClientService/B3ClientService.csproj +++ b/B3ClientService/B3ClientService.csproj @@ -211,6 +211,7 @@ + diff --git a/B3ClientService/BO/Bill/SegmentProductionInfo.cs b/B3ClientService/BO/Bill/SegmentProductionInfo.cs index 52f581e..820528a 100644 --- a/B3ClientService/BO/Bill/SegmentProductionInfo.cs +++ b/B3ClientService/BO/Bill/SegmentProductionInfo.cs @@ -1,8 +1,10 @@ -using BWP.B3Frameworks.BO; +using BWP.B3ClientService.NamedValueTemplate; +using BWP.B3Frameworks.BO; using Forks.EnterpriseServices; using Forks.EnterpriseServices.DataDictionary; using Forks.EnterpriseServices.DataForm; using Forks.EnterpriseServices.DomainObjects2; +using Forks.Utils; using System; using System.Collections.Generic; using System.Data; @@ -73,9 +75,24 @@ namespace BWP.B3ClientService.BO #endregion - #region 销售时间 - [LogicName("销售时间")] + #region 领用信息 + + [LogicName("领用人员")] + public long? PickWorker_ID { get; set; } + + [LogicName("领用工作单元")] + public long? PickWorkUnit_ID { get; set; } + + [LogicName("领用时间")] public DateTime? PickTime { get; set; } + + [LogicName("领用类型")] + public NamedValue<领用类型>? PickType { get; set; } + + [LogicName("领用数量")] + [DbColumn(DefaultValue = 1)] + public decimal? PickNumber { get; set; } + #endregion public bool IsSync { get; set; } @@ -86,5 +103,9 @@ namespace BWP.B3ClientService.BO public long? BillID { get; set; } public long? DetailID { get; set; } + + [ReferenceTo(typeof(Goods), "Name")] + [Join("Goods_ID", "ID")] + public string Goods_Name { get; set; } } } diff --git a/B3ClientService/NamedValueTemplate.cs b/B3ClientService/NamedValueTemplate.cs index c393724..f65c341 100644 --- a/B3ClientService/NamedValueTemplate.cs +++ b/B3ClientService/NamedValueTemplate.cs @@ -21,6 +21,7 @@ namespace BWP.B3ClientService.NamedValueTemplate public static readonly NamedValue<终端> 白条领用 = new NamedValue<终端>(1); public static readonly NamedValue<终端> 分割生产 = new NamedValue<终端>(2); public static readonly NamedValue<终端> 扫码入库 = new NamedValue<终端>(3); + public static readonly NamedValue<终端> 分割领用 = new NamedValue<终端>(4); //51-100供B3用 public static readonly NamedValue<终端> 赶猪确认 = new NamedValue<终端>(103); public static readonly NamedValue<终端> 上线确认 = new NamedValue<终端>(104); diff --git a/B3ClientService/OfflinRpc/SegmentPickUpRpc.cs b/B3ClientService/OfflinRpc/SegmentPickUpRpc.cs new file mode 100644 index 0000000..5cd596d --- /dev/null +++ b/B3ClientService/OfflinRpc/SegmentPickUpRpc.cs @@ -0,0 +1,122 @@ +using BWP.B3ClientService.BO; +using BWP.B3ClientService.NamedValueTemplate; +using Forks.EnterpriseServices.DomainObjects2; +using Forks.EnterpriseServices.DomainObjects2.DQuery; +using Forks.EnterpriseServices.JsonRpc; +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 SegmentPickUpRpc + { + [Rpc(RpcFlags.SkipAuth)] + public static string GetScanInfo(string barCode) + { + var query = new DQueryDom(new JoinAlias(typeof(SegmentProductionInfo))); + query.Columns.Add(DQSelectColumn.Field("Goods_ID")); + query.Columns.Add(DQSelectColumn.Field("Goods_Name")); + query.Columns.Add(DQSelectColumn.Field("Weight")); + query.Where.Conditions.Add(DQCondition.EQ("BarCode", barCode)); + var r = query.EExecuteScalar(); + if (r == null) + return null; + return JsonConvert.SerializeObject(new ExtensionObj { LongExt1 = r.Item1, StringExt1 = r.Item2, DecimalExt1 = r.Item3 }); + } + + [Rpc(RpcFlags.SkipAuth)] + public static string GetBeforeInfo(List codeList) + { + var query = new DQueryDom(new JoinAlias(typeof(SegmentProductionInfo))); + query.Columns.Add(DQSelectColumn.Field("BarCode")); + query.Columns.Add(DQSelectColumn.Field("Weight")); + query.Columns.Add(DQSelectColumn.Field("Goods_ID")); + query.Columns.Add(DQSelectColumn.Field("Goods_Name")); + query.Where.Conditions.Add(DQCondition.And(DQCondition.IsNotNull(DQExpression.Field("Goods_ID")), DQCondition.InList(DQExpression.Field("BarCode"), codeList.Select(x => DQExpression.Value(x)).ToArray()))); + var result = query.EExecuteList(); + var back = result.Select(x => new ExtensionObj { StringExt1 = x.Item1, DecimalExt1 = x.Item2, LongExt1 = x.Item3, StringExt2 = x.Item4 }); + return JsonConvert.SerializeObject(back); + } + + [Rpc(RpcFlags.SkipAuth)] + public static int UploadSegmentInfo(string jsonArr) + { + var list = JsonConvert.DeserializeObject>(jsonArr); + using (var session = Dmo.NewSession()) + { + foreach (var item in list) + { + var id = GetID(item.BarCode, session); + if (id.HasValue) + Update(id.Value, item, session); + else + Insert(item, session); + } + session.Commit(); + } + return 1; + } + + static long? GetID(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.EQ("BarCode", code)); + return query.EExecuteScalar(session); + } + + static void Update(long id, SegmentPickUpObj obj, IDmoSession session) + { + var update = new DQUpdateDom(typeof(SegmentProductionInfo)); + update.Columns.Add(new DQUpdateColumn("PickWorker_ID", obj.TakeOutWorker_ID)); + update.Columns.Add(new DQUpdateColumn("PickWorkUnit_ID", obj.WorkUnit_ID)); + update.Columns.Add(new DQUpdateColumn("PickTime", obj.Time)); + update.Columns.Add(new DQUpdateColumn("PickNumber", 1)); + update.Columns.Add(new DQUpdateColumn("PickType", 领用类型.分割领用)); + update.Where.Conditions.Add(DQCondition.EQ("ID", id)); + session.ExecuteNonQuery(update); + } + + static void Insert(SegmentPickUpObj obj, IDmoSession session) + { + var entity = new SegmentProductionInfo(); + entity.BarCode = obj.BarCode; + entity.Goods_ID = obj.Goods_ID; + entity.PickWorker_ID = obj.TakeOutWorker_ID; + entity.PickWorkUnit_ID = obj.WorkUnit_ID; + entity.Weight = obj.Weight; + entity.PickTime = obj.Time; + entity.PickNumber = obj.Number; + entity.PickType = 领用类型.分割领用; + if (string.IsNullOrEmpty(entity.BarCode)) + entity.ProductBatch_ID = obj.ProductBatch_ID; + session.Insert(entity); + } + } + + class SegmentPickUpObj + { + public string BarCode { get; set; } + + public long TakeOutWorker_ID { get; set; } + + public long? WorkUnit_ID { get; set; } + + public long? ProductBatch_ID { get; set; } + + public long? Goods_ID { get; set; } + + public decimal? Weight { get; set; } + + public DateTime? Time { get; set; } + + public int Number { get; set; } + } +} diff --git a/WebFolder/config/NamedValue/B3ClientService.xml b/WebFolder/config/NamedValue/B3ClientService.xml index f511286..07e8444 100644 --- a/WebFolder/config/NamedValue/B3ClientService.xml +++ b/WebFolder/config/NamedValue/B3ClientService.xml @@ -12,6 +12,7 @@ +