质量报表如何增加显示平均合格率
需求:质量报表需要根据统计出来的数据中的检验数量与合格数量计算平均合格率。
二开方案如下:(说明:如果存在分页显示的情况,此例计算出的平均合格率是所有数据的合格数量之和与检验数量之和的比值,而非当前显示页数据的统计)
1、BOS设计器扩展按相关报表,表体增加小数类型字段;(本例以供应商质量统计表为例)
2、扩展对应的报表过滤界面,在显示隐藏列中增加文本类型字段:平均合格率(供应商质量统计表过滤界面)
3、二开服务插件继承标准产品报表服务插件,挂在报表的服务插件上,取消标准产品插件启用即可;
4、示例代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using Kingdee.K3.Core.MFG.EntityHelper;
using Kingdee.BOS.App.Data;
using Kingdee.K3.MFG.App;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
namespace Kingdee.K3.MFG.QM.App.ReportPlugIn.Defect
{
public class TestRpt : SupplierQuaStatisticRpt
{
public override void BuilderReportSqlAndTempTable(BOS.Core.Report.IRptParams filter, string tableName)
{
base.BuilderReportSqlAndTempTable(filter, tableName);
string sql = string.Format(@"ALTER TABLE {0} ADD FAVQUAPERCENT DECIMAL(23,10) ", tableName);
DBUtils.Execute(this.Context, sql);
decimal percent = 0;
sql = string.Format(@"
SELECT CONVERT(DECIMAL(5,2),ISNULL(SUM(T1.FQUALIFIEDQTY)/SUM(T1.FINSPECTQTY),0)*100) as FAVQUAPERCENT
FROM {0} T1
", tableName);
DynamicObjectCollection result= AppServiceContext.DbUtils.ExecuteDynamicObject(this.Context, sql);
if (!result.IsEmpty())
{
percent = result.FirstOrDefault().GetDynamicValue<decimal>("FAVQUAPERCENT");
}
string updateSql = string.Format(@"UPDATE {0} SET FAVQUAPERCENT= {1} ", tableName, percent);
DBUtils.Execute(this.Context, updateSql);
}
}
}
质量报表如何增加显示平均合格率
本文2024-09-23 03:28:36发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-159107.html