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, "进销存明细");//期末 }; }