资产实物清单报表增加自定义字段原创
金蝶云社区-大雾森林迷了鹿
大雾森林迷了鹿
26人赞赏了该文章 200次浏览 未经作者许可,禁止转载编辑于2024年05月07日 14:29:26

前提:1、BOS对【资产卡片】对应页签增加相关字段例如:实物里增加设备编号【F_EQUIPMENTNUMBER】,发票里增加合同号【F_CONTRACTNUMBER
2、BOS对【资产实物清单增加相关字段与【资产卡片】中的保持一致 例如:设备编号【F_EQUIPMENTNUMBER】,合同号【F_CONTRACTNUMBER

3、编译以下插件,放到服务器上,BOS资产实物清单】服务器插件中注册编译好的插件

using Kingdee.BOS;

using Kingdee.BOS.App.Data;

using Kingdee.BOS.Contracts;

using Kingdee.BOS.Core.Report;

using Kingdee.BOS.Util;

using Kingdee.K3.FIN.FA.App.Report;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Kingdee.BOS.ServiceFacade;


namespace ExtAssetObjectListService

{


    public class ExtAssetObjectListService : AssetObjectListService

    {

        private string[] customRptTempTableNames;


        // DynamicObjectToJson对象转JSON

        private static string DynamicObjectToJson(object obj)

        {

            var jsonSerializerProxy = new JsonSerializerProxy(Encoding.UTF8, false);

            var jsonData = jsonSerializerProxy.Serialize(obj);

            return jsonData;

        }

        public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)

        {

            // 为了查看日志  K/3 Cloud会把各种错误信息,自动输出到站点目录 ..\WebSite\App_Data\Log 下的日志文件中

            // Kingdee.BOS.Log.Logger.Info("【BuilderReportSqlAndTempTable】", "第一次tableName" + tableName);

            // 创建临时表,用于存放自己的数据

            IDBService dBService = Kingdee.BOS.App.ServiceHelper.GetService<IDBService>();

            customRptTempTableNames = dBService.CreateTemporaryTableName(this.Context, 1);

            string strTable = customRptTempTableNames[0];

            // 调用基类的方法,获取初步的查询结果到临时表

            base.BuilderReportSqlAndTempTable(filter, strTable);

            // 对初步的查询结果进行处理,然后写回基类默认的存放查询结果的临时表

            StringBuilder sb = new StringBuilder();

            string strSql = "/*dialect*/SELECT t1.*,a2.F_EQUIPMENTNUMBER,a3.F_CONTRACTNUMBER into {0} FROM {1} t1 left join t_fa_card a1 on t1.FALTERID = a1.FALTERID left join T_FA_CARDDETAIL a2 on a1.FALTERID = a2.FALTERID left join T_FA_INVOICE a3 on a1.FALTERID = a3.FALTERID";

            sb.AppendFormat(strSql,tableName,strTable);  

            DBUtils.Execute(this.Context, sb.ToString());

        }

        public override ReportHeader GetReportHeaders(IRptParams filter)

        {

           ReportHeader reportHeader = base.GetReportHeaders(filter);

            reportHeader.AddChild("F_EQUIPMENTNUMBER", new LocaleValue("设备编号"));

            reportHeader.AddChild("F_CONTRACTNUMBER", new LocaleValue("合同号"));

            return reportHeader;

        }

        public override void CloseReport()

        {

            // 删除临时表

            if (customRptTempTableNames.IsNullOrEmptyOrWhiteSpace()) 

            {

                return;

            }

            IDBService dBService = Kingdee.BOS.App.ServiceHelper.GetService<Kingdee.BOS.Contracts.IDBService>();

            dBService.DeleteTemporaryTableName(this.Context, customRptTempTableNames);

            base.CloseReport();

        }

    }

}

1715061916770.png


1715063224791.jpg

赞 26