金蝶云星空《资产实物清单》报表添加字段

 

 一、业务需求

 查看资产实物清单可查看对应物料编码

image

 

二、详细设计

1、编写报表插件

1.1 新建类,继承原报表插件,重写相关事件

相关引用:
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Util;
using Kingdee.K3.FIN.FA.App.Report;

 

using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Util;
using Kingdee.K3.FIN.FA.App.Report;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace Krystal.K3.App.Report.FIN.FA
{
    /// <summary>
    /// 功能描述    :AssetObjectListServiceExtend  
    /// 创 建 者    :Administrator
    /// 创建日期    :2026/1/13 14:42:49 
    /// 最后修改者  :Krystal
    /// 最后修改日期:2026/1/13 14:42:49 
    /// </summary>
    [Description("资产实物清单报表服务插件二开-报表插件"), HotUpdate]
    public class AssetObjectListServiceExtend: AssetObjectListService
    {
        
        #region <方法>
        private void AddSecondField(string tableName)
        {
            //1、对临时表tableName添加字段销售类型
            //添加的字段长度,类型,是否为空,尽量和原字段保持一致,添加的字段中间加上二开标识,防止和标准产品字段冲突
            StringBuilder sqlStr = new StringBuilder();
            sqlStr.AppendFormat(@"alter table {0} add F_Krystal_MNumber varchar(100) NOT NULL default '';", tableName);
            int uc = DBUtils.Execute(this.Context, sqlStr.ToString());


            //测试表结构用,比如查看现有字段
            //string sql1 = string.Format(@"select top 10000 * from {0}", tableName);
            //var sd = DBUtils.ExecuteDynamicObject(this.Context, sql1);


            //2、更新该字段
            sqlStr.Clear();
            sqlStr.AppendFormat(@" MERGE INTO {0} T0", tableName);
            sqlStr.AppendFormat(@" using ( SELECT b.FASSETNO ,b.FMATERIALNO,c.FNUMBER FMNUMBER
                                FROM t_fa_card a 
                                 LEFT JOIN T_FA_CARDDETAIL b ON a.FALTERID=b.FALTERID join T_BD_MATERIAL  c on c.FMATERIALID=b.FMATERIALNO
                                WHERE a.FDOCUMENTSTATUS='C' AND a.FISNEWREC='2' AND b.FMATERIALNO>0) T ");
            sqlStr.AppendFormat(@" ON T0.FAssetNO=T.FAssetNO ");
            sqlStr.AppendFormat(@" WHEN matched THEN UPDATE SET F_Krystal_MNumber=T.FMNUMBER;");
            int uc1 = DBUtils.Execute(this.Context, sqlStr.ToString());
        }
        #endregion <方法>

        #region <事件>
        public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
        {
            //调用基类的方法,获取初步的查询结果到临时表tableName【基类默认的存放查询结果的临时表】
            base.BuilderReportSqlAndTempTable(filter, tableName);
            //构造过滤条件
            //DynamicObject dyFilter = this.GetFilter(filter);
            this.AddSecondField(tableName);
        }
        #endregion <事件>
    }
}
View Code

 

1.2 编译:

image

 

 

2、扩展《资产实物清单》

添加文本,重命名为物料编码,标识和插件一致

image

 

取消原来插件,注册新插件

image

 

3、扩展《资产实物清单过滤条件》

在显示隐藏列界面添加文本,重命名为物料编码,标识和插件一致

image

 

三、测试

image

 

image

 

posted @ 2026-01-15 17:37  lanrenka  阅读(1)  评论(0)    收藏  举报