首页 > 其他分享 >委外订单执行明细表增加二开字段

委外订单执行明细表增加二开字段

时间:2024-08-06 14:09:38浏览次数:6  
标签:插件 string 二开 委外 BOS Kingdee 明细表 using Krystal

 

## 业务背景
目前的逻辑是入库数量/计划数量=达成率,需要加入计划完成时间和数据/实际完成时间和数量=达成率。

## 业务需求
过滤框提供输入时间段,作为入库单的时间限制,算出入库数,实际达成率=入库数/计划数*100%。

## 方案设计
二开标准产品,添加字段,创建插件继承标准产品插件,重写方法,申请一个临时表,获取初步的查询结果到临时表,然后关联处理得到新的列插入到报表的临时表
## 详细设计
### 扩展《委外订单执行明细表》
引入,扩展,添加入库数和实际达成率

 

 

 

 

 

 

 

 

 

 

 

 

### 扩展《委外订单执行明细过滤》
引入,扩展,快捷过滤添加两个日期控件。

 

 

 

 

 

 

 

### 创建插件,并实现报表逻辑修改
#### 创建插件,添加引用

 

#### 创建类,继承原数据源类ROExecuteDetailRpt

重写BuilderReportSqlAndTempTable

using Kingdee.BOS.App.Data;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Core.Util;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using Kingdee.K3.MFG.SUB.App.ReportPlugIn.ROExecute;
using System;
using System.ComponentModel;
using System.Text;


namespace Krystal.K3.SCGL.App.Report.SUB
{
    /// <summary>
    /// 功能描述    :Krystal_ROExecuteDetailRpt  
    /// 创 建 者    :Administrator
    /// 创建日期    :2024/7/12 17:33:14 
    /// 最后修改者  :Krystal
    /// 最后修改日期:2024/7/12 17:33:14 
    /// </summary>
    [Description("委外订单执行明细表服务端插件二开-报表插件"), HotUpdate]
    public class Krystal_ROExecuteDetailRpt: ROExecuteDetailRpt
    {
        #region <常量>
        #endregion <常量>

        #region <变量>
        /// <summary>
        /// 页面过滤参数
        /// </summary>
        FilterArgs _filterArgs = new FilterArgs();

        private string[] rptTempTableNames;


        #endregion <变量>


        #region <方法>

        /// <summary>
        /// 获取过滤条件
        /// </summary>
        /// <param name="filter"></param>
        private DynamicObject GetFilter(IRptParams filter)
        {
            DynamicObject dyFilter = filter.FilterParameter.CustomFilter;
            _filterArgs.ISBeginTime = this.GetDataByKey(dyFilter, "F_Krystal_InStockBeginTime") == string.Empty ? DateTime.MinValue : Convert.ToDateTime(this.GetDataByKey(dyFilter, "F_Krystal_InStockBeginTime"));
            _filterArgs.ISEndTime = this.GetDataByKey(dyFilter, "F_Krystal_InStockEndTime") == string.Empty ? DateTime.MaxValue : Convert.ToDateTime(this.GetDataByKey(dyFilter, "F_Krystal_InStockEndTime"));
            return dyFilter;
        }


        /// <summary>
        /// 构建报表sql和临时表
        /// 申请一个临时表,获取初步的查询结果到临时表,然后关联处理得到新的列插入到报表的临时表
        /// </summary>
        /// <param name="filter"></param>
        /// <param name="tableName"></param>
        public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
        {
            IDBService dbservice = Kingdee.BOS.App.ServiceHelper.GetService<IDBService>();
            rptTempTableNames = dbservice.CreateTemporaryTableName(this.Context, 1);
            string strTable = rptTempTableNames[0];

            //调用基类的方法,获取初步的查询结果到临时表
            base.BuilderReportSqlAndTempTable(filter, strTable);

            DynamicObject dyFilter = this.GetFilter(filter);

            StringBuilder sb = new StringBuilder();
            sb.AppendLine(string.Format(@"/*dialect*/SELECT T1.*,isnull(MOE.FInstockQty,0) F_Krystal_InStockQty,(case when T1.FPLANQTY>0 then round(isnull(MOE.FInstockQty,0)*1.0/T1.FPLANQTY,4)*100 else 0 end) F_Krystal_FinishPercent"));
            sb.AppendFormat(" into {0} ", tableName);
            sb.AppendFormat(" FROM {0} T1", strTable);
            sb.AppendFormat(@" LEFT JOIN (SELECT  b.FMOENTRYID FENTRYID ,SUM(b.FREALQTY) FInstockQty
     FROM T_PRD_INSTOCK a JOIN T_PRD_INSTOCKENTRY b ON a.FID=b.FID
     WHERE a.FDOCUMENTSTATUS='C' AND CONVERT(varchar(100), a.FAPPROVEDATE, 23) BETWEEN '{0}' AND '{1}'
      GROUP BY b.FMOENTRYID ) MOE ON T1.FMOENTRYID=MOE.FENTRYID", _filterArgs.ISBeginTime, _filterArgs.ISEndTime);
            //DBUtils.Execute(this.Context, "DROP TABLE " + tableName);
            DBUtils.Execute(this.Context, sb.ToString());

        }

        /// <summary>
        /// 查询条件标题
        /// </summary>
        /// <param name="filter"></param>
        /// <returns></returns>
        public override ReportTitles GetReportTitles(IRptParams filter)
        {
            ReportTitles reportTitle = base.GetReportTitles(filter);
            reportTitle.AddTitle("F_Krystal_InStockTitle"
                , string.Format("{0}--{1}"
                , FieldFormatterUtil.GetDateFormatString(base.Context, _filterArgs.ISBeginTime)
                , FieldFormatterUtil.GetDateFormatString(base.Context, _filterArgs.ISEndTime)));


            return reportTitle;
        }

        #endregion <方法>

        #region 过滤参数 FilterArgs
        internal class FilterArgs
        {
            public DateTime ISBeginTime { get; set; }//起始年月
            public DateTime ISEndTime { get; set; }//结束年月
        }
        #endregion
    }
}
完整代码

 

 #### 报表挂载插件

 

标签:插件,string,二开,委外,BOS,Kingdee,明细表,using,Krystal
From: https://www.cnblogs.com/lanrenka/p/18298285

相关文章

  • 呆滞料分析报表二开增加自定义字段
     业务背景物料资料添加了自定义字段,在呆滞料分析无法直观看到,同时不能直观看到物料在仓库多久了。 业务需求在呆滞料分析报表显示物料的品牌型号,以及计算物料库龄。 方案设计二开标准产品,添加字段,创建插件继承标准产品插件,重写方法,自定义临时表获取初步查询......
  • 精美小剧场短剧影视短视频小程序源码+支付收益+付费短剧小程序源码,全开源支持二开
    精美小剧场短剧影视短视频小程序源码+支付收益+付费短剧小程序源码,全开源支持二开###精美小剧场短剧影视短视频小程序源码+支付收益+付费短剧小程序源码,全开源支持二开在数字化时代,短视频和小剧场短剧已成为人们日常生活中不可或缺的娱乐方式。随着技术的进步和市场的需求,......
  • 亲测二开网盘源码支持微信登录易支付码支付
    新运营级限速网盘系统网站源码是一款非常实用的系统,可以帮助您打造一个安全可靠的网盘分享平台。该系统支持用户使用微信码登录,上传文件分享链接可自定义,文件可一键保存到我的网盘。此外,该系统还支持微信和支付宝官方接口,易支付接口不强制且可自定义。需要注意的是,为了保障......
  • E9-根据主表选择框值判断改变主表、明细表字段的属性
    一、流程表单开发过程中,标准的属性联动功能无法满足特定情况下的字段属性联动功能时,使用了以下JavaScript代码进行控制。二、代码实现了根据表单字段的值动态显示或隐藏特定字段,同时修改字段的属性。这在需要根据用户输入动态调整表单显示三、代码如下(供参考)//将字段名称转......
  • 生产订单执行明细表二开增加字段
    业务背景业务需求方案设计详细设计和实现  一、业务背景标准产品目前的逻辑是入库数量/计划数量=达成率,需要加入计划完成时间和数据/实际完成时间和数量=达成率。 二、业务需求过滤匡提供输入时间段,作为入库单的时间限制,算出入库数,实际达成率=入库数/计划数*100%。......
  • 创新赋能,高效二开!CRMEB 标准版 v5.4公测版发布
    历经十年磨砺,CRMEB标准版如今已成为众多技术开发者与企业二次开发、构建定制化项目的热门系统,其全开源无加密、功能齐全、独立部署的特质,造就了标准版系统方便二开的优势,不仅深受开发者喜爱,更因其实用性和可靠性赢得了众多长期回购用户的青睐。如今,我们紧跟市场趋势,持续创......
  • 5.FineReport制作明细表
    1.首先连接自带的sqlite数据库,具体方法点击下面的链接FineReport连接自带的sqlite数据库2.文件–新建普通报表3.新建数据库查询4.查询自带的销量表5.按shift键选中左下角的地区到销量字段,拖动到右边的格子中,选从左往右6.添加标题,并调整对齐,边框线,背景色和字体颜色......
  • 交友系统定制版源码| 相亲交友小程序源码全开源可二开_打造独特的社交交友系统
    交友系统源码的实现涉及到多个方面,包括前端页面设计、后端逻辑处理、数据库设计以及用户交互等。以下是一个简单的交友系统源码实现的基本框架和关键步骤: 1.数据库设计:用户表:存储用户基本信息,如用户ID、用户名、密码、头像、性别、年龄、地理位置等。消息表:存储用户之......
  • 基于SSM+Vue的酒店管理系统设计与实现(SSM技术栈的酒店管理系统,非常适合二开各种酒店
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我自己的网站自己的小程序(小蔡coding)代码参考数据库参考源码获取前言......
  • 好代码资源网整站打包代码(包含了最新数据),集成了深度二开的ripro主题,非常适合做资源网
    好代码资源网是基于wordpress开发的一个资源分享类网站,在开发者圈子里还算小有名气,这里分享婴整站打包代码(包含了最新数据)。网站本身集成了深度二开的ripro主题,非常适合做资源网站创业用。资源下载类网站目前还是红利期,搞个特价主机和域名,再用这个代码搭建起来就可以投入运营......