From 0b5321001e60da04290473017710c5d230f306c5 Mon Sep 17 00:00:00 2001 From: yibo <361071264@qq.com> Date: Sun, 4 Feb 2018 19:49:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=90=E5=93=81=E5=85=A5=E5=BA=93=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=EF=BC=9B=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- B3ClientService/B3ClientService.csproj | 1 + .../TrunksIousOutInStoreRecord.cs | 15 ++- .../TrunksIousOutInStoreRecordRpc.cs | 108 +++++------------- .../Tasks/UpdateLoad/UploadTest.cs | 2 +- .../UploadTrunksIousOutInStoreRecord.cs | 64 +++++++++++ 5 files changed, 104 insertions(+), 86 deletions(-) create mode 100644 B3ClientService/Tasks/UpdateLoad/UploadTrunksIousOutInStoreRecord.cs diff --git a/B3ClientService/B3ClientService.csproj b/B3ClientService/B3ClientService.csproj index df12c72..f516619 100644 --- a/B3ClientService/B3ClientService.csproj +++ b/B3ClientService/B3ClientService.csproj @@ -177,6 +177,7 @@ + diff --git a/B3ClientService/BO/TrunksIousOutInStoreRecord_/TrunksIousOutInStoreRecord.cs b/B3ClientService/BO/TrunksIousOutInStoreRecord_/TrunksIousOutInStoreRecord.cs index 52ab2b4..715973b 100644 --- a/B3ClientService/BO/TrunksIousOutInStoreRecord_/TrunksIousOutInStoreRecord.cs +++ b/B3ClientService/BO/TrunksIousOutInStoreRecord_/TrunksIousOutInStoreRecord.cs @@ -9,7 +9,7 @@ namespace BWP.B3ClientService.BO { [Serializable] [DFClass] - public class TrunksIousOutInStoreRecord: ClientSyncBase + public class TrunksIousOutInStoreRecord : SyncBill { public string BarCode { get; set; } public long? Goods_ID { get; set; } @@ -28,17 +28,20 @@ namespace BWP.B3ClientService.BO public decimal? Weight { get; set; } - public string CarcassStatus { get; set; }// 胴体状态 - public bool? IsSubmited { get; set; }//界面有2个状态 待提交 已提交 , 有条码有重量为已提交 - public decimal? LossWeight{ get; set; }//损耗 + public long? WorkShop_ID { get; set; } + + public long? WorkUnit_ID { get; set; } + public long? Store_ID { get; set; } - public string BiaoShi { get; set; }//用来记录那个工作台或者哪台触摸屏做的 + public long? ProductBatch_ID { get; set; } - public string Store { get; set; } + public string ProductBatch { get; set; } + public int RowVersion { get; set; } + public DateTime? CreateTime { get; set; } } } diff --git a/B3ClientService/Rpcs/BillRpc/TrunksIousOutInStoreRecord_/TrunksIousOutInStoreRecordRpc.cs b/B3ClientService/Rpcs/BillRpc/TrunksIousOutInStoreRecord_/TrunksIousOutInStoreRecordRpc.cs index ee0f596..fba0402 100644 --- a/B3ClientService/Rpcs/BillRpc/TrunksIousOutInStoreRecord_/TrunksIousOutInStoreRecordRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/TrunksIousOutInStoreRecord_/TrunksIousOutInStoreRecordRpc.cs @@ -1,5 +1,4 @@ - -using System; +using System; using System.Linq; using BWP.B3ClientService.BO; using BWP.B3ClientService.Utils; @@ -11,11 +10,10 @@ using Forks.EnterpriseServices.JsonRpc; using Forks.EnterpriseServices.SqlDoms; using Newtonsoft.Json; using TSingSoft.WebPluginFramework; +using System.Web; namespace BWP.B3ClientService.Rpcs.BillRpc.TrunksIousOutInStoreRecord_ { - - [Rpc] public static class TrunksIousOutInStoreRecordRpc { @@ -25,8 +23,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc.TrunksIousOutInStoreRecord_ var query = new DQueryDom(new JoinAlias(typeof(TrunksIousOutInStoreRecord))); query.Where.Conditions.Add(DQCondition.Or(DQCondition.IsNull(DQExpression.Field("IsSubmited")), DQCondition.EQ("IsSubmited", false))); query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID", true)); - var list = query.EExecuteDmoList("ID", "BarCode", "Goods_Name", "Number", "Weight", "LossWeight"); - + var list = query.EExecuteDmoList("ID", "BarCode", "Goods_Name", "Number", "Weight"); return JsonConvert.SerializeObject(list); } @@ -38,68 +35,45 @@ namespace BWP.B3ClientService.Rpcs.BillRpc.TrunksIousOutInStoreRecord_ query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID", true)); query.Range = SelectRange.Top(50); - var list = query.EExecuteDmoList("ID", "BarCode", "Goods_Name", "Number","BeforeWeight", "Weight", "LossWeight"); + var list = query.EExecuteDmoList("ID", "BarCode", "Goods_Name", "Number", "BeforeWeight", "Weight"); return JsonConvert.SerializeObject(list); } [Rpc] - public static long SetWeight(long id,decimal weight,string biaoshi,string store) - { - var query = new DQUpdateDom(typeof(TrunksIousOutInStoreRecord)); - query.Columns.Add(new DQUpdateColumn("Weight", weight)); - query.Columns.Add(new DQUpdateColumn("IsSubmited", true)); - if (!string.IsNullOrWhiteSpace(biaoshi)) - { - query.Columns.Add(new DQUpdateColumn("BiaoShi", biaoshi)); - } - if (!string.IsNullOrWhiteSpace(store)) - { - query.Columns.Add(new DQUpdateColumn("Store", store)); - } -// query.Columns.Add(new DQUpdateColumn("LossWeight", )); -//todo 这里要算损耗 - query.Where.Conditions.Add(DQCondition.EQ("ID", id)); - query.EExecute(); - return id; - } - - [Rpc] - public static long Insert(string json) + public static long SetWeight(string json) { - var clientRecord = JsonConvert.DeserializeObject(json); + var entity = JsonConvert.DeserializeObject(json); using (var session = Dmo.NewSession()) { - var record = new TrunksIousOutInStoreRecord(); - DmoUtil.CopyDmoFields(clientRecord, record, "ID", "B3_ID", "CreateTime"); - session.Insert(record); + var update = new DQUpdateDom(typeof(TrunksIousOutInStoreRecord)); + update.Columns.Add(new DQUpdateColumn("Creator", entity.Creator)); + update.Columns.Add(new DQUpdateColumn("Weight", entity.Weight)); + update.Columns.Add(new DQUpdateColumn("WorkShop_ID", entity.WorkShop_ID)); + update.Columns.Add(new DQUpdateColumn("WorkUnit_ID", entity.WorkUnit_ID)); + update.Columns.Add(new DQUpdateColumn("Store_ID", entity.Store_ID)); + update.Columns.Add(new DQUpdateColumn("ProductBatch_ID", entity.ProductBatch_ID)); + update.Columns.Add(new DQUpdateColumn("ProductBatch", entity.ProductBatch)); + update.Columns.Add(new DQUpdateColumn("IsSubmited", true)); + update.Columns.Add(new DQUpdateColumn("Sync", false)); + update.Columns.Add(new DQUpdateColumn("CreateTime", DateTime.Now)); + update.Columns.Add(new DQUpdateColumn("RowVersion", DQExpression.Add(DQExpression.Field("RowVersion"), DQExpression.Value(1)))); + update.Where.Conditions.Add(DQCondition.EQ("ID", entity.ID)); + session.ExecuteNonQuery(update); session.Commit(); - return record.ID; } - + return 0; } [Rpc] public static string GetFinalCode(string barCode) { - var netUrl=new B3ClientServiceOnLineConfig().OutNetUrl; - barCode = barCode.Replace(netUrl+"?", ""); - - var code = UrlUtil.GetValueByKey("code", barCode); - if (string.IsNullOrWhiteSpace(code)) - { - code = UrlUtil.GetValueByKey("CODE", barCode); - } - if (string.IsNullOrWhiteSpace(code)) - { - code = barCode; - } - return code; - + var uri = new Uri(barCode); + return HttpUtility.ParseQueryString(uri.Query)["code"]; } [Rpc] - public static long SimpleInsertOrUpdate(long goodsId,string goodsName,string barCode) + public static long SimpleInsertOrUpdate(long goodsId, string goodsName, string barCode) { using (var session = Dmo.NewSession()) @@ -112,23 +86,25 @@ namespace BWP.B3ClientService.Rpcs.BillRpc.TrunksIousOutInStoreRecord_ record.Goods_Name = goodsName; record.BarCode = barCode; record.IsSubmited = false; + record.ModifyTime = DateTime.Now; session.Insert(record); } else { record.Goods_ID = goodsId; record.Goods_Name = goodsName; + record.Sync = false; + record.RowVersion += 1; session.Update(record); } session.Commit(); return record.ID; } - } - private static TrunksIousOutInStoreRecord GetExist(IDmoSession session, string barCode) + private static TrunksIousOutInStoreRecord GetExist(IDmoSession session, string barCode) { - var query=new DmoQuery(typeof(TrunksIousOutInStoreRecord)); + var query = new DmoQuery(typeof(TrunksIousOutInStoreRecord)); query.Where.Conditions.Add(DQCondition.EQ("BarCode", barCode)); var res = session.ExecuteList(query).Cast().ToList(); if (res.Count > 0) @@ -138,31 +114,5 @@ namespace BWP.B3ClientService.Rpcs.BillRpc.TrunksIousOutInStoreRecord_ //throw new Exception("存在多条记录,请找管理员"); return null; } - - [Rpc] - public static int Update(string json) - { - var clientRecord = JsonConvert.DeserializeObject(json); - using (var session = Dmo.NewSession()) - { - var record = session.Load(new DmoIdentity(typeof(TrunksIousOutInStoreRecord), clientRecord.Service_ID ?? 0)); - DmoUtil.CopyDmoFields(clientRecord, record, "ID", "B3_ID", "CreateTime"); - session.Update(record); - } - return 1; - } - - [Rpc] - public static int Delete(long id) - { - var delDom = new DQDeleteDom(typeof(TrunksIousOutInStoreRecord)); - delDom.Where.Conditions.Add(DQCondition.EQ("ID", id)); - using (var session = Dmo.NewSession()) - { - session.Update(delDom); - } - return 1; - } - } } diff --git a/B3ClientService/Tasks/UpdateLoad/UploadTest.cs b/B3ClientService/Tasks/UpdateLoad/UploadTest.cs index 0a455fd..f9ea976 100644 --- a/B3ClientService/Tasks/UpdateLoad/UploadTest.cs +++ b/B3ClientService/Tasks/UpdateLoad/UploadTest.cs @@ -25,8 +25,8 @@ namespace BWP.B3ClientService.Tasks UpLoadWeightBill.Execute(serverUri); UploadOrderDetail.Execute(serverUri); UploadSecondOrder.Execute(serverUri); - DoCheckBills.Execute(serverUri); + UploadTrunksIousOutInStoreRecord.Execute(serverUri); } public string Name diff --git a/B3ClientService/Tasks/UpdateLoad/UploadTrunksIousOutInStoreRecord.cs b/B3ClientService/Tasks/UpdateLoad/UploadTrunksIousOutInStoreRecord.cs new file mode 100644 index 0000000..e6f5e10 --- /dev/null +++ b/B3ClientService/Tasks/UpdateLoad/UploadTrunksIousOutInStoreRecord.cs @@ -0,0 +1,64 @@ +using BWP.B3ClientService.BO; +using Forks.EnterpriseServices.BusinessInterfaces; +using Forks.EnterpriseServices.DomainObjects2; +using Forks.EnterpriseServices.DomainObjects2.DQuery; +using Forks.EnterpriseServices.SqlDoms; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Web.Script.Serialization; +using TSingSoft.WebPluginFramework; +using TSingSoft.WebPluginFramework.BWPClients; + +namespace BWP.B3ClientService.Tasks.UpdateLoad +{ + public static class UploadTrunksIousOutInStoreRecord + { + public static void Execute(string uri) + { + //获取所有未上传的数据 + var allBill = GetAllNeedSyncBill(); + foreach (var group in allBill.GroupBy(x => x.Creator)) + { + var bwpClient = new BWPClient(uri, group.Key); + foreach (var item in group) + { + using (var context = new TransactionContext()) + { + var result = bwpClient.Call("/MainSystem/B3ButcherManage/Rpcs/ProductInStoreRpc/InsertOrUpdate", JsonConvert.SerializeObject(item)); + if (result.HasValue) + SetB3ID(context.Session, item.ID, result.Value); + SetSyncd(context.Session, item.ID, item.RowVersion); + context.Commit(); + } + } + } + } + + private static IEnumerable GetAllNeedSyncBill() + { + var query = new DmoQuery(typeof(TrunksIousOutInStoreRecord)); + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("IsSubmited", true), DQCondition.EQ("Sync", false))); + return query.EExecuteList().Cast(); + } + + static void SetB3ID(IDmoSession session, long id, long B3ID) + { + var update = new DQUpdateDom(typeof(TrunksIousOutInStoreRecord)); + update.Columns.Add(new DQUpdateColumn("B3ID", B3ID)); + update.Where.Conditions.Add(DQCondition.EQ("ID", id)); + session.ExecuteNonQuery(update); + } + + static void SetSyncd(IDmoSession session, long id, int rowVersion) + { + var update = new DQUpdateDom(typeof(TrunksIousOutInStoreRecord)); + update.Columns.Add(new DQUpdateColumn("Sync", true)); + update.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("ID", id), DQCondition.EQ("RowVersion", rowVersion))); + session.ExecuteNonQuery(update); + } + } +}