当前位置: 首页 > news >正文

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

文章目录

  • 委外订单执行明细表增加二开字段
    • 业务背景
    • 业务需求
    • 方案设计
    • 详细设计
      • 扩展《委外订单执行明细表》
      • 扩展《委外订单执行明细过滤》
      • 创建插件,并实现报表逻辑修改
        • 创建插件,添加引用
        • 创建类,继承原数据源类ROExecuteDetailRpt
        • 报表挂载插件

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

业务背景

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

业务需求

过滤框提供输入时间段,作为入库单的时间限制,算出入库数,实际达成率=入库数/计划数*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) FInstockQtyFROM T_PRD_INSTOCK a JOIN T_PRD_INSTOCKENTRY b ON a.FID=b.FIDWHERE 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 过滤参数 FilterArgsinternal class FilterArgs{public DateTime ISBeginTime { get; set; }//起始年月public DateTime ISEndTime { get; set; }//结束年月}#endregion}
}
报表挂载插件

在这里插入图片描述

http://www.lryc.cn/news/413261.html

相关文章:

  • “数字孪生+大模型“:打造设施农业全场景数字化运营新范式
  • zeppline 连接flink 1.17报错
  • 【机器视觉】【目标检测】【面试】独家问题总结表格
  • 从零开始,快速打造API:揭秘 Python 库toapi的神奇力量
  • 如何理解复信号z的傅里叶变换在频率v<0的时候恒为0,是解析信号
  • 大型赛事5G室内无线网络保障方案
  • windows 2012域服务SYSVOL复制异常
  • 动态规划,蒙特卡洛,TD,Qlearing,Sars,DQN,REINFORCE算法对比
  • HarmonyOS开发商城商品详情页
  • OS_操作系统的运行环境
  • Maven下载和安装(详细版)
  • 【优秀python大屏案例】基于python flask的前程无忧大数据岗位分析可视化大屏设计与实现
  • 简单的docker学习 第3章docker镜像
  • jquery.ajax + antd.Upload.customRequest文件上传进度
  • 一层5x1神经网络绘制训练100轮后权重变化的图像
  • Project #0 - C++ Primer
  • git提交commit信息规范,fix,feat
  • 服务器 Linux 的文件系统初探
  • 关于Unity转微信小程序的流程记录
  • AI入门指南:什么是人工智能、机器学习、神经网络、深度学习?
  • 网络安全中的IOC是指的什么?
  • 掌握AJAX技术:从基础到实战
  • Unity UGUI 实战学习笔记(6)
  • iOS面试之属性关键字(二):常见面试题
  • java开发设计模式详解
  • windows中node版本的切换(nvm管理工具),解决项目兼容问题 node版本管理、国内npm源镜像切换(保姆级教程,值得收藏)
  • 测试面试宝典(四十四)—— APP测试和web测试有什么区别?
  • 力扣高频SQL 50题(基础版)第三十七题
  • web基础之CSS
  • 全球轻型卡车胎市场规划预测:2030年市场规模将接近1153亿元,未来六年CAGR为2.0%