diff --git a/BWP.B3_YunKen.Web/Pages/B3YunKen/Reports/ProduceFinishDiffReport.cs b/BWP.B3_YunKen.Web/Pages/B3YunKen/Reports/ProduceFinishDiffReport.cs index 9c167d2..6d7148e 100644 --- a/BWP.B3_YunKen.Web/Pages/B3YunKen/Reports/ProduceFinishDiffReport.cs +++ b/BWP.B3_YunKen.Web/Pages/B3YunKen/Reports/ProduceFinishDiffReport.cs @@ -17,6 +17,7 @@ using BWP.B3UnitedInfos.BO; using BWP.Web.Layout; using BWP.Web.Utils; using BWP.Web.WebControls; +using Forks.EnterpriseServices.DataForm; using Forks.EnterpriseServices.DomainObjects2; using Forks.EnterpriseServices.DomainObjects2.DQuery; using Forks.EnterpriseServices.SqlDoms; @@ -45,44 +46,167 @@ namespace BWP.Web.Pages.B3YunKen.Reports } } - private ChoiceBox _goods, _brandItem, _productLine, _goodsProperty, _goodsPropertyCatalog; + private ChoiceBox _goods, _brandItem, _productLine, _goodsProperty, _goodsPropertyCatalog, _productionUnit; + private CheckBoxListWithReverseSelect _checkbox; + [DFClass] + private class InStoreData + { + public DateTime? Date { get; set; } + public long Goods_ID { get; set; } + public long? BrandItem_ID { get; set; } + public Money? SumNumber { get; set; } + public Money? SumSecondNumber { get; set; } + public long? GoodsBatch_ID { get; set; } + } + + private DQueryDom GetInStoreQuery() + { + var inStore = new JoinAlias(typeof(ProductInStore)); + var detail = new JoinAlias(typeof(ProductInStore_Detail)); + var query = new DQueryDom(inStore); + query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(detail, "ProductInStore_ID", inStore, "ID")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet("convert(varchar(100),InStoreDate,23)"), "InStoreDate")); + query.Columns.Add(DQSelectColumn.Field("Goods_ID", detail)); + query.Columns.Add(DQSelectColumn.Field("BrandItem_ID", detail)); + query.Columns.Add(DQSelectColumn.Sum(detail, "Number", "SumNumber")); + query.Columns.Add(DQSelectColumn.Sum(detail, "SecondNumber", "SumSecondNumber")); + query.Columns.Add(DQSelectColumn.Field("GoodsBatch_ID", detail)); + query.Where.Conditions.Add(DQCondition.Or(DQCondition.EQ("BillState", 单据状态.已审核), DQCondition.EQ("BillState", 单据状态.已完毕))); + query.Where.Conditions.Add(DQCondition.EQ("Domain_ID",DomainContext.Current.ID)); + query.GroupBy.Expressions.Add(DQExpression.Snippet("convert(varchar(100),InStoreDate,23)")); + query.GroupBy.Expressions.Add(DQExpression.Field(detail, "Goods_ID")); + query.GroupBy.Expressions.Add(DQExpression.Field(detail, "BrandItem_ID")); + query.GroupBy.Expressions.Add(DQExpression.Field(detail, "GoodsBatch_ID")); + return query; + } + + [DFClass] + private class FinishData + { + public DateTime? Date { get; set; } + public long Goods_ID { get; set; } + public long? BrandItem_ID { get; set; } + public Money? SumNumber { get; set; } + public Money? SumSecondNumber { get; set; } + public string ProductionUnit_Name { get; set; } + public string Employee_Name { get; set; } + public long? GoodsBatch_ID { get; set; } + } protected override DQueryDom GetQueryDom() { var dom = base.GetQueryDom(); - dom.Where.Conditions.Add(DQCondition.EQ("Domain_ID", DomainContext.Current.ID)); var bill = JoinAlias.Create("bill"); - _displayOptionHelper.AddAlias("bill", bill); - var detail = new JoinAlias("detail", typeof(ProduceFinish_Detail)); - _displayOptionHelper.AddAlias("detail", detail); - - dom.From.AddJoin(JoinType.Inner, new DQDmoSource(detail), + dom.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(bill, "ID", detail, "ProduceFinish_ID")); - - var inDetail = new JoinAlias("inDetail", typeof(ProductInStore_Detail)); - _displayOptionHelper.AddAlias("inDetail", inDetail); - - dom.From.AddJoin(JoinType.Inner, new DQDmoSource(inDetail), DQCondition.EQ(inDetail, "ProduceFinish_Detail_ID", detail, "ID")); - //var deparetment1 = dom.EJoin(aliasName: "department1"); - //TreeUtil.AddTreeCondition(dom, mQueryContainer, "Department_ID", deparetment1); - + dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet("convert(varchar(100),Date,23)"), "InStoreDate")); + dom.Columns.Add(DQSelectColumn.Field("Goods_ID", detail)); + dom.Columns.Add(DQSelectColumn.Field("BrandItem_ID", detail)); + dom.Columns.Add(DQSelectColumn.Sum(detail, "Number", "SumNumber")); + dom.Columns.Add(DQSelectColumn.Sum(detail, "SecondNumber", "SumSecondNumber")); + dom.Columns.Add(DQSelectColumn.Field("ProductionUnit_Name", bill)); + dom.Columns.Add(DQSelectColumn.Field("Employee_Name", bill)); + dom.Columns.Add(DQSelectColumn.Field("GoodsBatch_ID", detail)); + dom.Where.Conditions.Add(DQCondition.Or(DQCondition.EQ("BillState", 单据状态.已审核), DQCondition.EQ("BillState", 单据状态.已完毕))); + dom.Where.Conditions.Add(DQCondition.EQ("Domain_ID", DomainContext.Current.ID)); + dom.GroupBy.Expressions.Add(DQExpression.Snippet("convert(varchar(100),Date,23)")); + dom.GroupBy.Expressions.Add(DQExpression.Field(detail, "Goods_ID")); + dom.GroupBy.Expressions.Add(DQExpression.Field(detail, "BrandItem_ID")); + dom.GroupBy.Expressions.Add(DQExpression.Field(bill, "ProductionUnit_Name")); + dom.GroupBy.Expressions.Add(DQExpression.Field(bill, "Employee_Name")); + dom.GroupBy.Expressions.Add(DQExpression.Field(detail, "BrandItem_ID")); + dom.GroupBy.Expressions.Add(DQExpression.Field(detail, "GoodsBatch_ID")); + var finishData = new JoinAlias("finiData", typeof(FinishData)); + var inStoreData = new JoinAlias("inData",typeof(InStoreData)); + var query = new DQueryDom(finishData); + query.RegisterQueryTable(typeof(FinishData), new List { "Date", "Goods_ID", "BrandItem_ID", "SumNumber", "SumSecondNumber", "ProductionUnit_Name", "Employee_Name", "GoodsBatch_ID" }, dom); + query.RegisterQueryTable(typeof(InStoreData), new List { "Date", "Goods_ID", "BrandItem_ID", "SumNumber", "SumSecondNumber", "GoodsBatch_ID" }, GetInStoreQuery()); + query.From.AddJoin(JoinType.Left, new DQDmoSource(inStoreData), DQCondition.And(DQCondition.EQ(finishData, "Goods_ID", inStoreData, "Goods_ID"), DQExpression.Snippet("datediff(day,finiData.Date,inData.Date) = 1"), DQCondition.EQ(finishData, "BrandItem_ID", inStoreData, "BrandItem_ID"), DQCondition.EQ(finishData, "GoodsBatch_ID", inStoreData, "GoodsBatch_ID"))); var goods1 = new JoinAlias("goods", typeof(Goods)); - dom.From.AddJoin(JoinType.Left, new DQDmoSource(goods1), - DQCondition.EQ(goods1, "ID", detail, "Goods_ID")); + query.From.AddJoin(JoinType.Left, new DQDmoSource(goods1), + DQCondition.EQ(goods1, "ID", finishData, "Goods_ID")); var goodsProperty1 = new JoinAlias("goodsProperty", typeof(GoodsProperty)); - dom.From.AddJoin(JoinType.Left, new DQDmoSource(goodsProperty1), + query.From.AddJoin(JoinType.Left, new DQDmoSource(goodsProperty1), DQCondition.EQ(goodsProperty1, "ID", goods1, "GoodsProperty_ID")); var goodsPropertyCatalog1 = new JoinAlias("goodsPropertyCatalog", typeof(GoodsPropertyCatalog)); - dom.From.AddJoin(JoinType.Left, new DQDmoSource(goodsPropertyCatalog1), + query.From.AddJoin(JoinType.Left, new DQDmoSource(goodsPropertyCatalog1), DQCondition.EQ(goodsPropertyCatalog1, "ID", goodsProperty1, "GoodsPropertyCatalog_ID")); + var goodsBatch = new JoinAlias("goodsBatch", typeof(GoodsBatch)); + query.From.AddJoin(JoinType.Left, new DQDmoSource(goodsBatch), + DQCondition.EQ(goodsBatch, "ID", finishData, "GoodsBatch_ID")); + + var brandItem = new JoinAlias(typeof(BrandItem)); + query.From.AddJoin(JoinType.Left, new DQDmoSource(brandItem), + DQCondition.EQ(finishData, "BrandItem_ID", brandItem, "ID")); + //_displayOptionHelper.AddAlias("departmen1t", deparetment1); + _displayOptionHelper.AddAlias("goodsBatch", goodsBatch); _displayOptionHelper.AddAlias("goods", goods1); _displayOptionHelper.AddAlias("goodsProperty", goodsProperty1); _displayOptionHelper.AddAlias("goodsPropertyCatalog", goodsPropertyCatalog1); + foreach (ListItem field in _checkbox.Items) { + if (field.Selected) { + switch (field.Text) { + case "生产单位": + case "经办人": + query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(finishData,field.Value), field.Text)); + query.GroupBy.Expressions.Add(DQExpression.Field(finishData,field.Value)); + break; + case "存货分类": + query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(goods1, field.Value), field.Text)); + query.GroupBy.Expressions.Add(DQExpression.Field(goods1, field.Value)); + break; + case "品牌项": + query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(brandItem, field.Value), field.Text)); + query.GroupBy.Expressions.Add(DQExpression.Field(brandItem, field.Value)); + break; + case "产品线": + case "存货编码": + case "存货名称": + case "存货规格": + case "辅单位": + case "主单位": + query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(goods1, field.Value), field.Text)); + query.GroupBy.Expressions.Add(DQExpression.Field(goods1, field.Value)); + break; + case "存货批号": + query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(goodsBatch, field.Value), field.Text)); + query.GroupBy.Expressions.Add(DQExpression.Field(goodsBatch, field.Value)); + break; + case "辅数量": + query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field(finishData, field.Value)), field.Text)); + break; + case "主数量": + query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field(finishData, field.Value)), field.Text)); + break; + case "入库辅数量": + query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field(inStoreData, field.Value)), field.Text)); + break; + case "入库主数量": + query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field(inStoreData, field.Value)), field.Text)); + break; + case "差异主数量": + var diffNum = DQExpression.Sum(DQExpression.Field(finishData, "SumNumber")).ESubtract(DQExpression.Sum(DQExpression.Field(inStoreData, "SumNumber"))); + query.Columns.Add(DQSelectColumn.Create(diffNum, field.Text)); + break; + case "差异辅数量": + var diffSecondNum = DQExpression.Sum(DQExpression.Field(finishData, "SumSecondNumber")).ESubtract(DQExpression.Sum(DQExpression.Field(inStoreData, "SumSecondNumber"))); + query.Columns.Add(DQSelectColumn.Create(diffSecondNum, field.Text)); + break; + //case "上次停用时间": + // query.Columns.Add(DQSelectColumn.Create(DQExpression.SubQuery(GetLastStopTime(bill)), field.Text)); + // break; + //case "经销商": + // var jxs = DQExpression.LogicCase(DQCondition.EQ("IsDealers", DQExpression.Value(true)), DQExpression.Field("Name"), DQExpression.SubQuery(GetJingXiaoShang(bill))); + // query.Columns.Add(DQSelectColumn.Create(jxs, field.Text)); + // break; + } + } + } //var customer = new JoinAlias(typeof(Customer)); //dom.From.AddJoin(JoinType.Left, new DQDmoSource(customer), DQCondition.EQ(bill, "Customer_ID", customer, "ID")); //if (!_customerCatalog.IsEmpty) { @@ -96,7 +220,7 @@ namespace BWP.Web.Pages.B3YunKen.Reports // dom.Where.Conditions.Add(DQCondition.Or(conditions)); //} if (!_goodsProperty.IsEmpty) { - dom.Where.Conditions.EFieldInList(DQExpression.Field(detail, "GoodsProperty_ID"), _goodsProperty.GetValues()); + query.Where.Conditions.EFieldInList(DQExpression.Field(goods1, "GoodsProperty_ID"), _goodsProperty.GetValues()); } if (!_goodsPropertyCatalog.IsEmpty) { @@ -108,54 +232,84 @@ namespace BWP.Web.Pages.B3YunKen.Reports var value = values[index]; conditions.Add(DQCondition.EQ(goodsPropertyCatalog1, "TreeDeep" + strs[index] + "ID", value)); } - dom.Where.Conditions.Add(DQCondition.Or(conditions)); + query.Where.Conditions.Add(DQCondition.Or(conditions)); } _displayOptionHelper.AddSelectColumns(dom, name => OptionIsSelected("显示字段", name), SumColumnIndexs); if (!_goods.IsEmpty) { - dom.Where.Conditions.Add(DQCondition.InList(DQExpression.Field(detail, "Goods_ID"), _goods.GetValues().Select(x => DQExpression.Value(x)).ToArray())); + query.Where.Conditions.Add(DQCondition.InList(DQExpression.Field(finishData, "Goods_ID"), _goods.GetValues().Select(x => DQExpression.Value(x)).ToArray())); } if (!_brandItem.IsEmpty) { - dom.Where.Conditions.Add(DQCondition.InList(DQExpression.Field(detail, "BrandItem_ID"), _brandItem.GetValues().Select(x => DQExpression.Value(x)).ToArray())); + query.Where.Conditions.Add(DQCondition.InList(DQExpression.Field(finishData, "BrandItem_ID"), _brandItem.GetValues().Select(x => DQExpression.Value(x)).ToArray())); } if (!_productLine.IsEmpty) { - dom.Where.Conditions.Add(DQCondition.InList(DQExpression.Field(goods1, "ProductLine_ID"), _productLine.GetValues().Select(x => DQExpression.Value(x)).ToArray())); + query.Where.Conditions.Add(DQCondition.InList(DQExpression.Field(goods1, "ProductLine_ID"), _productLine.GetValues().Select(x => DQExpression.Value(x)).ToArray())); + } + if (!_productionUnit.IsEmpty) { + query.Where.Conditions.Add(DQCondition.InList(DQExpression.Field(finishData, "ProductionUnit_ID"), _productionUnit.GetValues().Select(x => DQExpression.Value(x)).ToArray())); } - dom.Where.Conditions.Add(DQCondition.EQ(bill, "BillState", 单据状态.已审核)); - return dom; + return query; } - protected override void AddQueryOptions(VLayoutPanel vPanel) { - _displayOptionHelper.AddOptionItem("生产单位", "bill", "ProductionUnit_Name"); - _displayOptionHelper.AddOptionItem("经办人", "bill", "Employee_Name"); - _displayOptionHelper.AddOptionItem("存货分类", "goods", "GoodsPropertyCatalog_Name"); - if(_useBrandItem) - _displayOptionHelper.AddOptionItem("品牌项", "detail", "BrandItem_Name"); - _displayOptionHelper.AddOptionItem("产品线", "goods", "ProductLine_Name"); - _displayOptionHelper.AddOptionItem("存货编码", "goods", "Code"); - _displayOptionHelper.AddOptionItem("存货名称", "goods", "Name"); - _displayOptionHelper.AddOptionItem("存货规格", "goods", "Spec"); - _displayOptionHelper.AddOptionItem("辅单位", "goods", "SecondUnit"); - _displayOptionHelper.AddOptionItem("主单位", "goods", "MainUnit"); - _displayOptionHelper.AddOptionItem("存货批号", "detail", "GoodsBatch_Name"); - _displayOptionHelper.AddOptionItem("辅数量", "detail", "SecondNumber"); - _displayOptionHelper.AddOptionItem("主数量", "detail", "Number"); - _displayOptionHelper.AddOptionItem("入库辅数量", "inDetail", "SecondNumber"); - _displayOptionHelper.AddOptionItem("入库主数量", "inDetail", "Number"); - var detail = JoinAlias.Create("detail"); - var inDetail = JoinAlias.Create("inDetail"); - _displayOptionHelper.AddOptionItem("差异数量", () => { - return DQExpression.Field(detail, "Number").ESubtract(DQExpression.Field(inDetail, "Number")); - }, sum: true); - _displayOptionHelper.AddOptionItem("差异辅数量", () => { - return DQExpression.Field(detail, "SecondNumber").ESubtract(DQExpression.Field(inDetail, "SecondNumber")); - }, sum: true); - var showFieldsSection = mPageLayoutManager.AddSection("显示字段", "显示字段"); - var showFields = _displayOptionHelper.GetAllDisplayNames().Select(displayName => new Tuple(displayName, displayName)).ToList(); - showFieldsSection.ApplyLayout(showFields, mPageLayoutManager); - AddQueryOption("显示字段", showFields.EToList(x => x.Item1), _displayOptionHelper.GetDefaultSelelectedDisplayNames()); - base.AddQueryOptions(vPanel); + protected override void InitQueryPanel(QueryPanel queryPanel) + { + base.InitQueryPanel(queryPanel); + var panel = queryPanel.CreateTab("显示字段"); + + _checkbox = new CheckBoxListWithReverseSelect { RepeatColumns = 6, RepeatDirection = RepeatDirection.Horizontal }; + _checkbox.Items.Add(new ListItem("生产单位", "ProductionUnit_Name")); + _checkbox.Items.Add(new ListItem("经办人", "Employee_Name")); + _checkbox.Items.Add(new ListItem("存货分类","GoodsPropertyCatalog_Name")); + _checkbox.Items.Add(new ListItem("品牌项","Name")); + _checkbox.Items.Add(new ListItem("产品线","ProductLine_Name")); + _checkbox.Items.Add(new ListItem("存货编码","Code")); + _checkbox.Items.Add(new ListItem("存货名称","Name")); + _checkbox.Items.Add(new ListItem("存货规格","Spec")); + _checkbox.Items.Add(new ListItem("辅单位","SecondUnit")); + _checkbox.Items.Add(new ListItem("主单位","MainUnit")); + _checkbox.Items.Add(new ListItem("存货批号","Name")); + _checkbox.Items.Add(new ListItem("辅数量","SumSecondNumber")); + _checkbox.Items.Add(new ListItem("主数量","SumNumber")); + _checkbox.Items.Add(new ListItem("入库辅数量","SumSecondNumber")); + _checkbox.Items.Add(new ListItem("入库主数量","SumNumber")); + _checkbox.Items.Add(new ListItem("差异辅数量", "DiffSecondNumber")); + _checkbox.Items.Add(new ListItem("差异主数量", "DiffNumber")); + panel.EAdd(_checkbox); + mQueryControls.Add("显示字段", _checkbox); + mQueryControls.EnableHoldLastControlNames.Add("显示字段"); } + //protected override void AddQueryOptions(VLayoutPanel vPanel) { + // _displayOptionHelper.AddOptionItem("生产单位", "finiData", "ProductionUnit_Name"); + // _displayOptionHelper.AddOptionItem("经办人", "finiData", "Employee_Name"); + // _displayOptionHelper.AddOptionItem("存货分类", "goods", "GoodsPropertyCatalog_Name"); + // if(_useBrandItem) + // _displayOptionHelper.AddOptionItem("品牌项", "finiData", "BrandItem_Name"); + // _displayOptionHelper.AddOptionItem("产品线", "goods", "ProductLine_Name"); + // _displayOptionHelper.AddOptionItem("存货编码", "goods", "Code"); + // _displayOptionHelper.AddOptionItem("存货名称", "goods", "Name"); + // _displayOptionHelper.AddOptionItem("存货规格", "goods", "Spec"); + // _displayOptionHelper.AddOptionItem("辅单位", "goods", "SecondUnit"); + // _displayOptionHelper.AddOptionItem("主单位", "goods", "MainUnit"); + // _displayOptionHelper.AddOptionItem("存货批号", "goodsBatch", "Name"); + // _displayOptionHelper.AddOptionItem("辅数量", "finiData", "SumSecondNumber"); + // _displayOptionHelper.AddOptionItem("主数量", "finiData", "SumNumber"); + // _displayOptionHelper.AddOptionItem("入库辅数量", "inData", "SumSecondNumber"); + // _displayOptionHelper.AddOptionItem("入库主数量", "inData", "SumNumber"); + // var detail = JoinAlias.Create("finiData"); + // var inDetail = JoinAlias.Create("inData"); + // _displayOptionHelper.AddOptionItem("差异数量", () => { + // return DQExpression.Field(detail, "SumNumber").ESubtract(DQExpression.Field(inDetail, "SumNumber")); + // }, sum: true); + // _displayOptionHelper.AddOptionItem("差异辅数量", () => { + // return DQExpression.Field(detail, "SumSecondNumber").ESubtract(DQExpression.Field(inDetail, "SumSecondNumber")); + // }, sum: true); + // var showFieldsSection = mPageLayoutManager.AddSection("显示字段", "显示字段"); + // var showFields = _displayOptionHelper.GetAllDisplayNames().Select(displayName => new Tuple(displayName, displayName)).ToList(); + // showFieldsSection.ApplyLayout(showFields, mPageLayoutManager); + // AddQueryOption("显示字段", showFields.EToList(x => x.Item1), _displayOptionHelper.GetDefaultSelelectedDisplayNames()); + // base.AddQueryOptions(vPanel); + //} + protected override void AddQueryControls(VLayoutPanel vPanel) { base.AddQueryControls(vPanel); @@ -170,7 +324,7 @@ namespace BWP.Web.Pages.B3YunKen.Reports //layoutManager.Add("Employee_ID", QueryCreator.DFChoiceBoxEnableMultiSelection(mDFInfo.Fields["Employee_ID"], mQueryContainer, "Employee_ID", B3FrameworksConsts.DataSources.授权员工全部)); //layoutManager["Employee_ID"].NotAutoAddToContainer = true; - layoutManager.Add("ProductionUnit_ID", new SimpleLabel("生产单位"), mQueryContainer.AddLink(new ChoiceBoxMultiSelectLink(QueryCreator.DFChoiceBoxEnableMultiSelection(mDFInfo.Fields["ProductionUnit_ID"], B3ProduceUnitedInfosDataSources.生产单位全部), s => long.Parse(s)), "ProductionUnit_ID")); + layoutManager.Add("ProductionUnit_ID", new SimpleLabel("生产单位"), mQueryContainer.AddLink(new ChoiceBoxMultiSelectLink(_productionUnit = QueryCreator.DFChoiceBoxEnableMultiSelection(mDFInfo.Fields["ProductionUnit_ID"], B3ProduceUnitedInfosDataSources.生产单位全部), s => long.Parse(s)), "ProductionUnit_ID")); layoutManager["ProductionUnit_ID"].NotAutoAddToContainer = true; layoutManager.Add("GoodsProperty_ID", new SimpleLabel("存货属性"), _goodsProperty = new ChoiceBox() { DataKind = B3UnitedInfosConsts.DataSources.存货属性全部, Width = Unit.Empty, EnableTopItem = true, EnableMultiSelection = true, EnableMultiSelectionViewer = true, EnableInputArgument = true }, false); diff --git a/BWP.B3_YunKen.Web/Pages/B3YunKen/Reports/ProduceFinishDiffReport.xml b/BWP.B3_YunKen.Web/Pages/B3YunKen/Reports/ProduceFinishDiffReport.xml index c986fce..b470ad6 100644 --- a/BWP.B3_YunKen.Web/Pages/B3YunKen/Reports/ProduceFinishDiffReport.xml +++ b/BWP.B3_YunKen.Web/Pages/B3YunKen/Reports/ProduceFinishDiffReport.xml @@ -5,9 +5,10 @@ + + @@ -35,6 +36,7 @@ + - + --> \ No newline at end of file