当前位置: 首页 > 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}
}
报表挂载插件

在这里插入图片描述

相关文章:

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

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

“数字孪生+大模型“:打造设施农业全场景数字化运营新范式

设施农业是一个高度复杂和精细化管理的行业,涉及环境控制、作物生长、病虫害防治、灌溉施肥等诸多环节。传统的人工管理模式已经难以应对日益增长的市场需求和管理挑战。智慧农业的兴起为设施农业带来了新的机遇。将前沿信息技术与农业生产深度融合,实现农业生产的数字化、网络…...

zeppline 连接flink 1.17报错

Caused by: java.io.IOException: More than 1 flink scala jar files: /BigData/run/zeppelin/interpreter/flink/zeppelin-flink-0.11.1-2.12.jar,/BigData/run/zeppelin/interpreter/flink/._zeppelin-flink-0.11.1-2.12.jar 解决方案&#xff1a; 重新编译zepplin代码&…...

【机器视觉】【目标检测】【面试】独家问题总结表格

简述anchor free和anchor boxanchor free是对gt实际的左上和右下的点做回归,anchor box是对辅助框即锚框做回归说说对锚框的理解锚框是辅助框, 可以通过预设的长宽比设定,也可以通过k-means算法聚类数据集得到目标检测的指标MAP,FLOPS,FPS,参数量简述非极大值抑制(NMS)非极大…...

从零开始,快速打造API:揭秘 Python 库toapi的神奇力量

在开发过程中&#xff0c;我们常常需要从不同的网站获取数据&#xff0c;有时候还需要将这些数据转化成API接口提供给前端使用。传统的方法可能需要大量的时间和精力去编写代码。但今天我要介绍一个神奇的Python库——toapi&#xff0c;它可以让你在几分钟内创建API接口&#x…...

如何理解复信号z的傅里叶变换在频率v<0的时候恒为0,是解析信号

考虑例子2.12.1的说法。 首先我尝试解释第二个说法。需要注意一个事实是 实函数f的傅里叶变换F的实部是偶函数&#xff0c;虚部是奇函数。如图所示&#xff1a; 注意的是这个图中虽然是离散傅里叶变换的性质&#xff0c;但是对于一般的傅里叶变换的性质是适用的。 推导过程如下…...

大型赛事5G室内无线网络保障方案

大型活动往往才是国家综合实力的重要体现&#xff0c;其无线网络通信保障工作需融合各类新兴的5G业务应用&#xff0c;是一项技术难度高、方案复杂度高的系统工程。尤其在活动人员复杂、现场突发情况多、网络不稳定等情况下&#xff0c;如何形成一套高效、稳定的应急通信解决方…...

windows 2012域服务SYSVOL复制异常

这边文章是我多年前在BBS提问的&#xff0c;后来有高手回答&#xff0c;我把他保存了下来&#xff0c;最近服务器出现问题&#xff0c;终于有翻出来了&#xff01;发出来希望能帮到更多人。 问题 我的环境&#xff0c;windows 2012。最近改了一些域策略&#xff0c;发现没有正…...

动态规划,蒙特卡洛,TD,Qlearing,Sars,DQN,REINFORCE算法对比

动态规划&#xff08;Dynamic Programming, DP&#xff09;通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划的步骤 识别子问题&#xff1a;定义问题的递归解法&#xff0c;识别状态和选择。确定DP数组&#xff1a;确定存储子问题解的数据结构&#xff…...

HarmonyOS开发商城商品详情页

目录 一:功能概述 二:代码实现 三:效果图 一:功能概述 这一节,我们实现商品详情页的开发,具体流程就是在首页的商品列表点击商品跳转到商品详情页面,同时传递参数到该页面,通过参数调用商品详情接口在详情页展示商品的的详情信息。这里我们为了方便返回首页,在最顶…...

OS_操作系统的运行环境

2024.06.11:操作系统的运行环境学习笔记 第3节 操作系统的运行环境 3.1 操作系统引导3.2 操作系统内核3.2.1 内核资源管理3.2.2 内核基本功能 3.3 CPU的双重工作模式3.3.1 CPU处于用户态&#xff08;目态&#xff09;3.3.2 CPU处于内核态&#xff08;管态&#xff09; 3.4 特权…...

Maven下载和安装(详细版)

前言 Maven 的含义 Maven 是一个 java 项目管理 和构建工具&#xff0c;他可以定义项目结构&#xff0c;项目依托&#xff0c;并使用统一的方式进行自动化构建&#xff0c;是 java项目不可或缺的工具。 Maven 的 优点 1 提供 标准化的项目结构&#xff08;具体规定了文件的…...

【优秀python大屏案例】基于python flask的前程无忧大数据岗位分析可视化大屏设计与实现

随着大数据和人工智能技术的迅猛发展&#xff0c;数据分析和可视化在各个行业中的应用越来越广泛。特别是在招聘领域&#xff0c;大数据分析不仅能够帮助企业更好地了解市场需求&#xff0c;还能为求职者提供科学的职业规划建议。本文探讨了基于Python Flask框架的前程无忧大数…...

简单的docker学习 第3章docker镜像

第3章 Docker 镜像 3.1镜像基础 3.1.1 镜像简介 ​ 镜像是一种轻量级、可执行的独立软件包&#xff0c;也可以说是一个精简的操作系统。镜像中包含应用软件及应用软件的运行环境。具体来说镜像包含运行某个软件所需的所有内容&#xff0c;包括代码、库、环境变量和配置文件等…...

jquery.ajax + antd.Upload.customRequest文件上传进度

前情提要&#xff1a;大文件分片上传&#xff0c;需要利用Upload的customRequest属性自定义上传方法。也就是无法通过给Upload的action属性赋值上传地址进行上传&#xff0c;所以Upload组件自带的上传进度条&#xff0c;也没法直接用了&#xff0c;需要在customRequest中加工一…...

一层5x1神经网络绘制训练100轮后权重变化的图像

要完成这个任务&#xff0c;我们可以使用Python中的PyTorch库来建立一个简单的神经网络&#xff0c;网络结构只有一个输入层和一个输出层&#xff0c;输入层有5个节点&#xff0c;输出层有1个节点。训练过程中&#xff0c;我们将记录权重的变化&#xff0c;并在训练100轮后绘制…...

Project #0 - C++ Primer

知识点 1.pragma once C和C中的一个非标准但广泛支持的预处理指令&#xff0c;用于使当前源文件在单次编译中只被包含一次。 #pragma once class F {}; // 不管被导入多少次&#xff0c;只处理他一次2.explicit C中的一个关键字&#xff0c;它用来修饰只有一个参数的类构造函…...

git提交commit信息规范,fix,feat

可以确保团体合作中&#xff0c;从你的提交记录可以识别出你的动作 feat&#xff1a;新功能&#xff08;featuer&#xff09;fix: 修补bugdocs&#xff1a; 文档&#xff08;documentation&#xff09;style&#xff1a;格式&#xff08;修改样式&#xff0c;不影响代码运行的…...

服务器 Linux 的文件系统初探

好久没更新文章了&#xff0c;最近心血来潮&#xff0c;重新开始知识的累计&#xff0c;做出知识的沉淀~ 万事万物皆文件 文件系统&#xff1a;操作系统如何管理文件&#xff0c;内部定义了一些规则或者定义所以在 Linux 中所有的东西都是以文件的方式进行操作在 Linux 中&am…...

关于Unity转微信小程序的流程记录

1.准备工作 1.unity微信小程序转换工具&#xff0c;minigame插件&#xff0c;导入后工具栏出现“微信小游戏" 2.微信开发者工具稳定版 3.MP微信公众平台申请微信小游戏&#xff0c;获得游戏appid 4.unity转webgl开发平台&#xff0c;Player Setting->Other Setting…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明&#xff0c;此教程是针对Simulink编译模型并导入Veristand中编写的&#xff0c;同时需要注意的是老用户编译可能用的是Veristand Model Framework&#xff0c;那个是历史版本&#xff0c;且NI不会再维护&#xff0c;新版本编译支持为VeriStand Model Generation Suppo…...