diff --git a/B3ClientService/BO/MaterialRequisitionRecord_/MaterialRequisitionRecord.cs b/B3ClientService/BO/MaterialRequisitionRecord_/MaterialRequisitionRecord.cs index 0fa8025..8a28858 100644 --- a/B3ClientService/BO/MaterialRequisitionRecord_/MaterialRequisitionRecord.cs +++ b/B3ClientService/BO/MaterialRequisitionRecord_/MaterialRequisitionRecord.cs @@ -13,6 +13,7 @@ namespace BWP.B3ClientService.BO [DFClass] public class MaterialRequisitionRecord : SyncBill { + public long? UpID { get; set; } public string BarCode { get; set; } public long? Goods_ID { get; set; } public string Goods_Name { get; set; } @@ -27,7 +28,7 @@ namespace BWP.B3ClientService.BO } [ReferenceTo(typeof(TrunksIousOutInStoreRecord), "Weight")] - [Join("BarCode", "BarCode")] + [Join("UpID", "ID")] public decimal? BeforeWeight { get; set; } public decimal? Weight { get; set; } @@ -42,6 +43,8 @@ namespace BWP.B3ClientService.BO public long? ProductBatch_ID { get; set; } + [ReferenceTo(typeof(ProductBatch),"Name")] + [Join("ProductBatch_ID", "ID")] public string ProductBatch { get; set; } public int RowVersion { get; set; } diff --git a/B3ClientService/BO/TrunksIousOutInStoreRecord_/TrunksIousOutInStoreRecord.cs b/B3ClientService/BO/TrunksIousOutInStoreRecord_/TrunksIousOutInStoreRecord.cs index 715973b..343a94a 100644 --- a/B3ClientService/BO/TrunksIousOutInStoreRecord_/TrunksIousOutInStoreRecord.cs +++ b/B3ClientService/BO/TrunksIousOutInStoreRecord_/TrunksIousOutInStoreRecord.cs @@ -11,6 +11,7 @@ namespace BWP.B3ClientService.BO [DFClass] public class TrunksIousOutInStoreRecord : SyncBill { + public long? UpID { get; set; } public string BarCode { get; set; } public long? Goods_ID { get; set; } public string Goods_Name { get; set; } @@ -23,7 +24,7 @@ namespace BWP.B3ClientService.BO } [ReferenceTo(typeof(GradeAndWeight_Detail), "Weight")] - [Join("BarCode", "BarCode")] + [Join("UpID", "ID")] public decimal? BeforeWeight { get; set; } public decimal? Weight { get; set; } @@ -38,6 +39,8 @@ namespace BWP.B3ClientService.BO public long? ProductBatch_ID { get; set; } + [ReferenceTo(typeof(ProductBatch), "Name")] + [Join("ProductBatch_ID", "ID")] public string ProductBatch { get; set; } public int RowVersion { get; set; } diff --git a/B3ClientService/Rpcs/BillRpc/MaterialRequisitionRecordRpc_/MaterialRequisitionRecordRpc.cs b/B3ClientService/Rpcs/BillRpc/MaterialRequisitionRecordRpc_/MaterialRequisitionRecordRpc.cs index 3e90635..fa42901 100644 --- a/B3ClientService/Rpcs/BillRpc/MaterialRequisitionRecordRpc_/MaterialRequisitionRecordRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/MaterialRequisitionRecordRpc_/MaterialRequisitionRecordRpc.cs @@ -18,33 +18,70 @@ namespace BWP.B3ClientService.Rpcs.BillRpc [Rpc] public static string GetUnSubmitList() { - var query = new DQueryDom(new JoinAlias(typeof(MaterialRequisitionRecord))); - query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("IsSubmited", false))); - query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID", true)); - var list = query.EExecuteDmoList("ID", "BarCode", "Goods_Name", "Goods_Code", "Goods_MainUnit", "Weight"); - return JsonConvert.SerializeObject(list); + return GetEntityList(false); } [Rpc] public static string GetSubmitedList() + { + return GetEntityList(true); + } + + static string GetEntityList(bool submited) { var query = new DQueryDom(new JoinAlias(typeof(MaterialRequisitionRecord))); - query.Where.Conditions.Add(DQCondition.EQ("IsSubmited", true)); + if (submited) + { + query.Where.Conditions.Add(DQCondition.EQ("IsSubmited", true)); + query.Range = SelectRange.Top(50); + } + else + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("IsSubmited", false))); query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID", true)); - query.Range = SelectRange.Top(50); - - var list = query.EExecuteDmoList("ID", "BarCode", "Goods_Name", "Goods_Code", "Goods_MainUnit", "Number", "BeforeWeight", "Weight"); + query.Columns.Add(DQSelectColumn.Field("ID")); + query.Columns.Add(DQSelectColumn.Field("BarCode")); + query.Columns.Add(DQSelectColumn.Field("Goods_Name")); + query.Columns.Add(DQSelectColumn.Field("Goods_Code")); + query.Columns.Add(DQSelectColumn.Field("Goods_MainUnit")); + query.Columns.Add(DQSelectColumn.Field("Weight")); + if (submited) + { + query.Columns.Add(DQSelectColumn.Field("Number")); + } + var list = new List(); + using (var session = Dmo.NewSession()) + { + using (var reader = session.ExecuteReader(query)) + { + while (reader.Read()) + { + var entity = new MaterialRequisitionRecord(); + list.Add(entity); + entity.ID = (long)reader[0]; + entity.BarCode = (string)reader[1]; + entity.Goods_Name = (string)reader[2]; + entity.Goods_Code = (string)reader[3]; + entity.Goods_MainUnit = (string)reader[4]; + entity.Weight = (decimal?)reader[5]; + if (submited) + { + entity.Number = (int)reader[6]; + } + } + } + } return JsonConvert.SerializeObject(list); } + [Rpc] public static string GetCodeStoreInfo(string code) { var main = new JoinAlias(typeof(TrunksIousOutInStoreRecord)); var take = new JoinAlias(typeof(MaterialRequisitionRecord)); var query = new DQueryDom(main); - query.From.AddJoin(JoinType.Left, new DQDmoSource(take), DQCondition.And(DQCondition.EQ(main, "BarCode", take, "BarCode"), DQCondition.EQ(take, "DeleteState", false))); + query.From.AddJoin(JoinType.Left, new DQDmoSource(take), DQCondition.And(DQCondition.EQ(main, "ID", take, "UpID"), DQCondition.EQ(take, "DeleteState", false))); query.Columns.Add(DQSelectColumn.Field("ID", main)); query.Columns.Add(DQSelectColumn.Field("Weight", main)); query.Columns.Add(DQSelectColumn.Field("Goods_Name", main)); @@ -76,6 +113,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc var record = JsonConvert.DeserializeObject(json); using (var session = Dmo.NewSession()) { + record.UpID = GetUpID(session, record.BarCode); record.CreateTime = record.ModifyTime = DateTime.Now; FillGoodsInfo(record, session); session.Insert(record); @@ -84,6 +122,15 @@ namespace BWP.B3ClientService.Rpcs.BillRpc return JsonConvert.SerializeObject(record); } + static long GetUpID(IDmoSession session, string barCode) + { + var query = new DQueryDom(new JoinAlias(typeof(TrunksIousOutInStoreRecord))); + query.Where.Conditions.Add(DQCondition.EQ("BarCode", barCode)); + query.Columns.Add(DQSelectColumn.Field("ID")); + query.Range = SelectRange.Top(1); + return query.EExecuteScalar(session); + } + static void FillGoodsInfo(MaterialRequisitionRecord record, IDmoSession session) { var query = new DQueryDom(new JoinAlias(typeof(ClientGoodsSet_Detail))); diff --git a/B3ClientService/Rpcs/BillRpc/TrunksIousOutInStoreRecord_/TrunksIousOutInStoreRecordRpc.cs b/B3ClientService/Rpcs/BillRpc/TrunksIousOutInStoreRecord_/TrunksIousOutInStoreRecordRpc.cs index f20a4e8..cd70fb9 100644 --- a/B3ClientService/Rpcs/BillRpc/TrunksIousOutInStoreRecord_/TrunksIousOutInStoreRecordRpc.cs +++ b/B3ClientService/Rpcs/BillRpc/TrunksIousOutInStoreRecord_/TrunksIousOutInStoreRecordRpc.cs @@ -11,6 +11,8 @@ using Forks.EnterpriseServices.SqlDoms; using Newtonsoft.Json; using TSingSoft.WebPluginFramework; using System.Web; +using System.Web.Script.Serialization; +using System.Collections.Generic; namespace BWP.B3ClientService.Rpcs.BillRpc.TrunksIousOutInStoreRecord_ { @@ -20,23 +22,51 @@ namespace BWP.B3ClientService.Rpcs.BillRpc.TrunksIousOutInStoreRecord_ [Rpc] public static string GetUnSubmitList() { - 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"); - return JsonConvert.SerializeObject(list); + return GetEntityList(false); } [Rpc] public static string GetSubmitedList() + { + return GetEntityList(true); + } + + static string GetEntityList(bool submited) { var query = new DQueryDom(new JoinAlias(typeof(TrunksIousOutInStoreRecord))); - query.Where.Conditions.Add(DQCondition.EQ("IsSubmited", true)); + query.Columns.Add(DQSelectColumn.Field("ID")); + query.Columns.Add(DQSelectColumn.Field("BarCode")); + query.Columns.Add(DQSelectColumn.Field("Goods_Name")); + query.Columns.Add(DQSelectColumn.Field("Number")); + query.Columns.Add(DQSelectColumn.Field("Weight")); + if (submited) + { + query.Columns.Add(DQSelectColumn.Field("BeforeWeight")); + query.Where.Conditions.Add(DQCondition.EQ("IsSubmited", true)); + query.Range = SelectRange.Top(50); + } + else + query.Where.Conditions.Add(DQCondition.Or(DQCondition.IsNull(DQExpression.Field("IsSubmited")), DQCondition.EQ("IsSubmited", false))); query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID", true)); - query.Range = SelectRange.Top(50); - - var list = query.EExecuteDmoList("ID", "BarCode", "Goods_Name", "Number", "BeforeWeight", "Weight"); - + var list = new List(); + using (var session = Dmo.NewSession()) + { + using (var reader = session.ExecuteReader(query)) + { + while (reader.Read()) + { + var entity = new TrunksIousOutInStoreRecord(); + list.Add(entity); + entity.ID = (long)reader[0]; + entity.BarCode = (string)reader[1]; + entity.Goods_Name = (string)reader[2]; + entity.Number = (int)reader[3]; + entity.Weight = (decimal?)reader[4]; + if (submited) + entity.BeforeWeight = (decimal?)reader[5]; + } + } + } return JsonConvert.SerializeObject(list); } @@ -53,7 +83,6 @@ namespace BWP.B3ClientService.Rpcs.BillRpc.TrunksIousOutInStoreRecord_ 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)); @@ -80,13 +109,14 @@ namespace BWP.B3ClientService.Rpcs.BillRpc.TrunksIousOutInStoreRecord_ { if (string.IsNullOrEmpty(barCode)) throw new Exception("条码不能为空"); - CheckCodeRight(barCode); + var upID = CheckCodeRight(barCode); using (var session = Dmo.NewSession()) { - var record = GetExist(session, barCode); + var record = GetExist(session, upID); if (record == null) { record = new TrunksIousOutInStoreRecord(); + record.UpID = upID; record.Goods_ID = goodsId; record.Goods_Name = goodsName; record.BarCode = barCode; @@ -107,10 +137,10 @@ namespace BWP.B3ClientService.Rpcs.BillRpc.TrunksIousOutInStoreRecord_ } } - private static TrunksIousOutInStoreRecord GetExist(IDmoSession session, string barCode) + private static TrunksIousOutInStoreRecord GetExist(IDmoSession session, long upID) { var query = new DmoQuery(typeof(TrunksIousOutInStoreRecord)); - query.Where.Conditions.Add(DQCondition.EQ("BarCode", barCode)); + query.Where.Conditions.Add(DQCondition.EQ("UpID", upID)); var res = session.ExecuteList(query).Cast().ToList(); if (res.Count > 0) { @@ -120,14 +150,15 @@ namespace BWP.B3ClientService.Rpcs.BillRpc.TrunksIousOutInStoreRecord_ return null; } - static void CheckCodeRight(string barCode) + static long CheckCodeRight(string barCode) { var query = new DQueryDom(new JoinAlias(typeof(GradeAndWeight_Detail))); query.Where.Conditions.Add(DQCondition.EQ("BarCode", barCode)); - query.Columns.Add(DQSelectColumn.Create(DQExpression.Value(1), "c")); + query.Columns.Add(DQSelectColumn.Field("ID")); query.Range = SelectRange.Top(1); if (query.EExecuteScalar() == null) throw new Exception("条码不正确"); + return query.EExecuteScalar(); } } }