From b23cff63f8b2b17881615ed5de9ee0ae8299460c Mon Sep 17 00:00:00 2001 From: yibo <361071264@qq.com> Date: Sat, 28 Apr 2018 10:13:16 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E8=BF=9B=E9=94=80=E5=AD=98=E6=B1=87?= =?UTF-8?q?=E6=80=BB=E8=B0=83=E6=95=B4=E5=92=8C=E8=A1=A5=E5=85=85=EF=BC=9B?= =?UTF-8?q?2=E3=80=81=E7=99=BD=E6=9D=A1=E6=B1=87=E6=80=BB=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=20=E6=97=A5=E6=9C=9F=E6=9F=A5=E8=AF=A2=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=B1=A0=E5=AE=B0=E6=97=A5=E6=9C=9F=E5=92=8C=E6=89=B9?= =?UTF-8?q?=E6=AC=A1=E6=97=A5=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CarcassGradeAnalyse.cs | 45 +++++++++++----- .../CarcassDetailDialog.cs | 53 ++++++++++++------- .../CarcassInOutStoreAnalyse.cs | 15 +++--- 3 files changed, 75 insertions(+), 38 deletions(-) diff --git a/B3ClientService.Web/Pages/B3ClientService/Reports/CarcassGradeAnalyse_/CarcassGradeAnalyse.cs b/B3ClientService.Web/Pages/B3ClientService/Reports/CarcassGradeAnalyse_/CarcassGradeAnalyse.cs index f8b9b5e..96d2d7d 100644 --- a/B3ClientService.Web/Pages/B3ClientService/Reports/CarcassGradeAnalyse_/CarcassGradeAnalyse.cs +++ b/B3ClientService.Web/Pages/B3ClientService/Reports/CarcassGradeAnalyse_/CarcassGradeAnalyse.cs @@ -161,10 +161,12 @@ namespace BWP.Web.Pages.B3ClientService.Reports.CarcassGradeAnalyse_ var livestock = new JoinAlias(typeof(Livestock)); var inGoods = new JoinAlias("iGoods", typeof(Goods)); var outGoods = new JoinAlias("oGoods", typeof(Goods)); + var batch = new JoinAlias(typeof(ProductBatch)); var query = new DQueryDom(main); query.From.AddJoin(JoinType.Left, new DQDmoSource(livestock), DQCondition.EQ(main, "Livestock_ID", livestock, "ID")); query.From.AddJoin(JoinType.Left, new DQDmoSource(inGoods), DQCondition.EQ(main, "InStoreGoods_ID", inGoods, "ID")); query.From.AddJoin(JoinType.Left, new DQDmoSource(outGoods), DQCondition.EQ(main, "SaleGoods_ID", outGoods, "ID")); + query.From.AddJoin(JoinType.Left, new DQDmoSource(batch), DQCondition.EQ(main, "ProductBatch_ID", batch, "ID")); query.Columns.Add(DQSelectColumn.Field("Livestock_ID")); query.Columns.Add(DQSelectColumn.Field("Name", livestock)); query.Columns.Add(DQSelectColumn.Field("GradeWeight")); @@ -177,8 +179,11 @@ namespace BWP.Web.Pages.B3ClientService.Reports.CarcassGradeAnalyse_ query.Columns.Add(DQSelectColumn.Field("Name", outGoods)); query.Columns.Add(DQSelectColumn.Field("PickWeight")); + query.Columns.Add(DQSelectColumn.Field("ButcherDate")); + query.Columns.Add(DQSelectColumn.Field("Date", batch)); + if (butcherDate.Value.HasValue) - query.Where.Conditions.Add(DQCondition.EQ("ButcherDate", butcherDate.Date)); + query.Where.Conditions.Add(DQCondition.Or(DQCondition.EQ("ButcherDate", butcherDate.Date), DQCondition.EQ(batch, "Date", butcherDate.Date))); var list = new List(); using (var session = Dmo.NewSession()) @@ -187,18 +192,34 @@ namespace BWP.Web.Pages.B3ClientService.Reports.CarcassGradeAnalyse_ { while (reader.Read()) { + var dt1 = (DateTime?)reader[9]; + var dt2 = (DateTime?)reader[10]; + var isButcherData = butcherDate.Value == null; + var isBatchData = isButcherData; + if (butcherDate.Value.HasValue) + { + if (dt1 == null || dt1 != butcherDate.Date) + isButcherData = false; + if (dt2 == null || dt2 != butcherDate.Date) + isBatchData = false; + } var entity = new TempData(); - entity.Livestock_ID = (long?)reader[0]; - entity.Livestock_Name = (string)reader[1]; - entity.LWeight = (decimal?)reader[2]; - - entity.IGoods_ID = (long?)reader[3]; - entity.IGoods_Name = (string)reader[4]; - entity.IWeight = (decimal?)reader[5]; - - entity.OGoods_ID = (long?)reader[6]; - entity.OGoods_Name = (string)reader[7]; - entity.OWeight = (decimal?)reader[8]; + if (isButcherData) + { + entity.Livestock_ID = (long?)reader[0]; + entity.Livestock_Name = (string)reader[1]; + entity.LWeight = (decimal?)reader[2]; + } + if (isBatchData) + { + entity.IGoods_ID = (long?)reader[3]; + entity.IGoods_Name = (string)reader[4]; + entity.IWeight = (decimal?)reader[5]; + + entity.OGoods_ID = (long?)reader[6]; + entity.OGoods_Name = (string)reader[7]; + entity.OWeight = (decimal?)reader[8]; + } list.Add(entity); } } diff --git a/B3ClientService.Web/Pages/B3ClientService/Reports/CarcassInOutStoreAnalyse_/CarcassDetailDialog.cs b/B3ClientService.Web/Pages/B3ClientService/Reports/CarcassInOutStoreAnalyse_/CarcassDetailDialog.cs index cb450a0..f4924e6 100644 --- a/B3ClientService.Web/Pages/B3ClientService/Reports/CarcassInOutStoreAnalyse_/CarcassDetailDialog.cs +++ b/B3ClientService.Web/Pages/B3ClientService/Reports/CarcassInOutStoreAnalyse_/CarcassDetailDialog.cs @@ -52,7 +52,7 @@ namespace BWP.Web.Pages.B3ClientService.Reports.CarcassInOutStoreAnalyse_ var goodsName = string.Empty; if (GoodsID.HasValue) goodsName = WebBLUtil.GetDmoPropertyByID(typeof(Goods), "Name", GoodsID.Value); - var billName = "期末"; + var billName = "期初"; switch (Flag) { case 0: @@ -64,6 +64,9 @@ namespace BWP.Web.Pages.B3ClientService.Reports.CarcassInOutStoreAnalyse_ case 2: billName = "销售出库"; break; + case -2: + billName = "期初"; + break; } return string.Format("{0}{1}信息", goodsName, billName); @@ -80,22 +83,27 @@ namespace BWP.Web.Pages.B3ClientService.Reports.CarcassInOutStoreAnalyse_ { var sumColumns = new List(); var query = new DQueryDom(new JoinAlias(typeof(UnionTemp))); - query.RegisterQueryTable(typeof(UnionTemp), new string[] { "ProductBatch_ID", "Weight", "Time", "Flag" }, GetUnionDom(endTime)); + var time = Flag == -1 ? startTime : endTime; + query.RegisterQueryTable(typeof(UnionTemp), new string[] { "ProductBatch_ID", "Weight", "Time", "Flag" }, GetUnionDom(time, Flag != -1)); query.Columns.Add(DQSelectColumn.Field("ProductBatch_Name", "批次")); - if (Flag == -1) + if (Flag < 0) { query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Value(1), DQExpression.Value(-1))).ECastType(), "头数")); query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Field("Weight"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Weight")))).ECastType(), "重量")); + query.Having.Conditions.Add(DQCondition.Or(DQCondition.InEQ(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Value(1), DQExpression.Value(-1))), DQExpression.Value(0)), DQCondition.InEQ(DQExpression.IfNull(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Field("Weight"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Weight")))), DQExpression.Value(0)), DQExpression.Value(0)))); } else { query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", Flag)), DQExpression.Value(1))).ECastType(), "头数")); query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", Flag)), DQExpression.Field("Weight"))).ECastType(), "重量")); + + query.Where.Conditions.Add(DQCondition.GreaterThanOrEqual("Time", startTime)); + + query.Having.Conditions.Add(DQCondition.Or(DQCondition.InEQ(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Value(1), DQExpression.Value(-1))), DQExpression.Value(0)), DQCondition.InEQ(DQExpression.IfNull(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Field("Weight"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Weight")))), DQExpression.Value(0)), DQExpression.Value(0)))); } query.GroupBy.Expressions.Add(DQExpression.Field("ProductBatch_Name")); - query.Having.Conditions.Add(DQCondition.Or(DQCondition.InEQ(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Value(1), DQExpression.Value(-1))), DQExpression.Value(0)), DQCondition.InEQ(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Field("Weight"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Weight")))), DQExpression.Value(0)))); var args = new LoadArguments(query); for (var idx = 1; idx < query.Columns.Count; idx++) { @@ -126,59 +134,64 @@ namespace BWP.Web.Pages.B3ClientService.Reports.CarcassInOutStoreAnalyse_ public string ProductBatch_Name { get; set; } } - DQueryDom GetUnionDom(DateTime endTime) + DQueryDom GetUnionDom(DateTime endTime, bool eq) { - var u1 = GetInStore(endTime); - var u2 = GetPickOutStore(endTime); + var u1 = GetInStore(endTime, eq); + var u2 = GetPickOutStore(endTime, eq); u1.UnionNext.Select = u2; u1.UnionNext.Type = UnionType.All; - u2.UnionNext.Select = GetSaleOutStore(endTime); + u2.UnionNext.Select = GetSaleOutStore(endTime, eq); u2.UnionNext.Type = UnionType.All; return u1; } - DQueryDom GetInStore(DateTime endTime) + DQueryDom GetInStore(DateTime endTime, bool eq) { var query = new DQueryDom(new JoinAlias("_inStore", typeof(CarcassFullInfo))); query.Columns.Add(DQSelectColumn.Field("ProductBatch_ID")); query.Columns.Add(DQSelectColumn.Field("InStoreWeight")); query.Columns.Add(DQSelectColumn.Field("InStoreTime")); query.Columns.Add(DQSelectColumn.Create(DQExpression.Value(0), "Falg")); - query.Where.Conditions.Add(DQCondition.LessThanOrEqual("InStoreTime", endTime)); - AddGoodsCondition(query, "InStoreGoods_ID"); + query.Where.Conditions.Add(DQCondition.And(DateCondition(endTime, "InStoreTime", eq), GoodsCondition("InStoreGoods_ID"))); return query; } - DQueryDom GetPickOutStore(DateTime endTime) + DQueryDom GetPickOutStore(DateTime endTime, bool eq) { var query = new DQueryDom(new JoinAlias("_pickOut", typeof(CarcassFullInfo))); query.Columns.Add(DQSelectColumn.Field("ProductBatch_ID")); query.Columns.Add(DQSelectColumn.Field("PickWeight")); query.Columns.Add(DQSelectColumn.Field("PickTime")); query.Columns.Add(DQSelectColumn.Create(DQExpression.Value(1), "Falg")); - query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("PickType", 0), DQCondition.LessThanOrEqual("PickTime", endTime))); - AddGoodsCondition(query, "InStoreGoods_ID"); + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("PickType", 0), DateCondition(endTime, "PickTime", eq), GoodsCondition("InStoreGoods_ID"))); return query; } - DQueryDom GetSaleOutStore(DateTime endTime) + DQueryDom GetSaleOutStore(DateTime endTime, bool eq) { var query = new DQueryDom(new JoinAlias("_saleOut", typeof(CarcassFullInfo))); query.Columns.Add(DQSelectColumn.Field("ProductBatch_ID")); query.Columns.Add(DQSelectColumn.Field("PickWeight")); query.Columns.Add(DQSelectColumn.Field("PickTime")); query.Columns.Add(DQSelectColumn.Create(DQExpression.Value(2), "Falg")); - query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("PickType", 1), DQCondition.LessThanOrEqual("PickTime", endTime))); - AddGoodsCondition(query, "SaleGoods_ID"); + query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("PickType", 1), DateCondition(endTime, "PickTime", eq), GoodsCondition("SaleGoods_ID"))); return query; } - void AddGoodsCondition(DQueryDom query, string goodsField) + IDQExpression DateCondition(DateTime endTime, string fieldName, bool eq) + { + if (eq) + return DQCondition.LessThanOrEqual(fieldName, endTime); + else + return DQCondition.LessThan(fieldName, endTime); + } + + IDQExpression GoodsCondition(string goodsField) { if (GoodsID.HasValue) - query.Where.Conditions.Add(DQCondition.EQ(goodsField, GoodsID)); + return DQCondition.EQ(goodsField, GoodsID); else - query.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field(goodsField))); + return DQCondition.IsNull(DQExpression.Field(goodsField)); } } } diff --git a/B3ClientService.Web/Pages/B3ClientService/Reports/CarcassInOutStoreAnalyse_/CarcassInOutStoreAnalyse.cs b/B3ClientService.Web/Pages/B3ClientService/Reports/CarcassInOutStoreAnalyse_/CarcassInOutStoreAnalyse.cs index 8925fd6..dd541b1 100644 --- a/B3ClientService.Web/Pages/B3ClientService/Reports/CarcassInOutStoreAnalyse_/CarcassInOutStoreAnalyse.cs +++ b/B3ClientService.Web/Pages/B3ClientService/Reports/CarcassInOutStoreAnalyse_/CarcassInOutStoreAnalyse.cs @@ -55,17 +55,20 @@ namespace BWP.Web.Pages.B3ClientService.Reports.CarcassInOutStoreAnalyse_ var gName = (string)row["Goods_Name"]; var url = BuildUrl(string.Format("{0}", row["Goods_ID"])); url = WpfPageUrl.ToGlobal(url); - url = AspUtil.AddParamToUrl(url, "flag", "0"); - SetCellAtt(tr.Cells[4], url, "进销存明细"); + url = AspUtil.AddParamToUrl(url, "flag", "-1"); + SetCellAtt(tr.Cells[3], url, "进销存明细");//期初 + + url = AspUtil.UpdateUrlParam(url, "flag", "0"); + SetCellAtt(tr.Cells[4], url, "进销存明细");//入库 url = AspUtil.UpdateUrlParam(url, "flag", "1"); - SetCellAtt(tr.Cells[6], url, "进销存明细"); + SetCellAtt(tr.Cells[6], url, "进销存明细");//领用 url = AspUtil.UpdateUrlParam(url, "flag", "2"); - SetCellAtt(tr.Cells[7], url, "进销存明细"); + SetCellAtt(tr.Cells[7], url, "进销存明细");//销售 - url = AspUtil.UpdateUrlParam(url, "flag", "-1"); - SetCellAtt(tr.Cells[9], url, "进销存明细"); + url = AspUtil.UpdateUrlParam(url, "flag", "-2"); + SetCellAtt(tr.Cells[9], url, "进销存明细");//期末 }; }