生产订单执行明细表二开增加字段

文章目录

  • 生产订单执行明细表二开增加字段
    • 业务背景
    • 业务需求
    • 方案设计
    • 详细设计和实现
      • 标准报表引入到应用
      • 标准报表和过滤扩展
      • 添加字段
      • 创建插件,挂载插件
        • 新建类库 Krystal.K3.SCGL.App.Report,添加引用
        • 创建类,继承报表原插件
        • 重写BuilderReportSqlAndTempTable方法,对临时表添加自定义字段,对添加的字段进行逻辑计算后赋值
        • 如果入库数,需要汇总。
        • 测试

生产订单执行明细表二开增加字段

业务背景

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

业务需求

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

方案设计

二开标准产品,添加字段,创建插件继承标准产品插件,重写方法,修改临时表添加字段,更新字段取值,替换标准产品插件。

详细设计和实现

标准报表引入到应用

查询《生产订单执行明细表》引入到应用,同样引入《生产订单执行明细表过滤》
在这里插入图片描述

标准报表和过滤扩展

扩展《生产订单执行明细表》,重命名标识后保存。
在这里插入图片描述
扩展《生产订单执行明细表过滤》,重命名标识后保存。
在这里插入图片描述

添加字段

生产订单执行明细报表新增字段,字段的标识名命名一致。
在这里插入图片描述
在这里插入图片描述
保存后。
在这里插入图片描述

生产订单执行明细报表过滤框的快捷界面添加查询条件-入库的起止日期,日期控件,默认今天。
在这里插入图片描述
生产订单执行明细报表过滤框的显示隐藏列添加过滤字段,字段的标识名和报表一致。
在这里插入图片描述

创建插件,挂载插件

新建类库 Krystal.K3.SCGL.App.Report,添加引用

在这里插入图片描述

创建类,继承报表原插件

在这里插入图片描述

重写BuilderReportSqlAndTempTable方法,对临时表添加自定义字段,对添加的字段进行逻辑计算后赋值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#region << 版 本 注 释 >>
/*----------------------------------------------------------------* 版权所有 (c) 2024  NJRN 保留所有权利。* CLR版本:4.0.30319.42000* 机器名称:INC1507245* 公司名称:Increase* 命名空间:Krystal.K3.SCGL.App.Report.PRD* 唯一标识:5d1dc27c-1776-4835-9f85-739566192920* 文件名:Krystal_MOExecuteDetailRpt* 当前用户域:INC1507245* * 创建者:Krystal* 电子邮箱:543375940@qq.com* 创建时间:2024/7/8 14:48:36* 版本:V1.0.0* 描述:** ----------------------------------------------------------------* 修改人:* 时间:* 修改说明:** 版本:V1.0.1*----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using Kingdee.K3.MFG.PRD.App.ReportPlugIn.MOExecute;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Krystal.K3.SCGL.App.Report.PRD
{/// <summary>/// 功能描述    :Krystal_MOExecuteDetailRpt  /// 创 建 者    :Administrator/// 创建日期    :2024/7/8 14:48:36 /// 最后修改者  :Krystal/// 最后修改日期:2024/7/8 14:48:36 /// </summary>[Description("生产订单执行明细表服务端插件二开-报表插件"), HotUpdate]public class Krystal_MOExecuteDetailRpt: MOExecuteDetailRpt{#region <常量>#endregion <常量>#region <变量>/// <summary>/// 页面过滤参数/// </summary>FilterArgs _filterArgs = new FilterArgs();#endregion <变量>#region <属性>#endregion <属性>#region <构造方法和析构方法>#endregion <构造方法和析构方法>#region <方法>public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName){//调用基类的方法,获取初步的查询结果到临时表tableName【基类默认的存放查询结果的临时表】base.BuilderReportSqlAndTempTable(filter, tableName);//构造过滤条件DynamicObject dyFilter = this.GetFilter(filter);this.AddSecondField(tableName);}//, IRptParams filter/// <summary>/// 添加字段入库数,实际达成率/// </summary>/// <param name="tableName"></param>private void AddSecondField(string tableName){//1、对临时表tableName添加字段入库数,实际达成率//添加的字段长度,类型,是否为空,尽量和原字段保持一致//,添加的字段中间加上二开标识,防止和标准产品字段冲突StringBuilder sqlStr = new StringBuilder();sqlStr.AppendFormat(@"alter table {0} add F_XHWT_InStockQty decimal(23, 10) NOT NULL default 0;alter table {0} add F_XHWT_FinishPercent decimal(19, 2) NOT NULL default 0;", tableName);int uc = DBUtils.Execute(this.Context, sqlStr.ToString());// 高级过滤条件已自动存放在FilterParameter.FilterString中,账表插件可以直接拿来使用//var commonFilter = filter.FilterParameter.FilterString;//测试临时表//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.FMOENTRYID ,SUM(b.FREALQTY) FInstockQtyFROM T_PRD_INSTOCK a JOIN T_PRD_INSTOCKENTRY b ON a.FID=b.FIDWHERE a.FDOCUMENTSTATUS='C' AND a.FAPPROVEDATE BETWEEN '{0}' AND '{1}'GROUP BY b.FMOENTRYID ) T ", _filterArgs.ISBeginTime, _filterArgs.ISEndTime);sqlStr.AppendFormat(@" ON T0.FMOENTRYID=T.FMOENTRYID ");//round(20 * 1.0 / 120, 4) * 100sqlStr.AppendFormat(@" WHEN matched THEN UPDATE SET F_XHWT_InStockQty=T.FInstockQty
,F_XHWT_FinishPercent=(case when T0.FPLANQTY>0 then round(T.FInstockQty*1.0/T0.FPLANQTY,4)*100 else 0 end) ");int uc1 = DBUtils.Execute(this.Context, sqlStr.ToString());}/// <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>/// 查询条件标题/// </summary>/// <param name="filter"></param>/// <returns></returns>public override ReportTitles GetReportTitles(IRptParams filter){ReportTitles reportTitle = base.GetReportTitles(filter);string beginApplicationMonthStr = _filterArgs.ISBeginTime.ToString("yyyy-MM-dd");string endApplicationMonthStr = _filterArgs.ISEndTime.ToString("yyyy-MM-dd");reportTitle.AddTitle("F_Krystal_InStockTitle", string.Format("{0}{1}{2}", beginApplicationMonthStr, Kingdee.BOS.Resource.ResManager.LoadKDString(" 至 ", "004102030003172", Kingdee.BOS.Resource.SubSystemType.SCM), endApplicationMonthStr));return reportTitle;}#endregion <方法>#region 过滤参数 FilterArgsinternal class FilterArgs{public DateTime ISBeginTime { get; set; }//起始年月public DateTime ISEndTime { get; set; }//结束年月}#endregion}
}

在这里插入图片描述

如果入库数,需要汇总。
/// <summary>
/// 构造汇总字段信息集合
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
public override List<SummaryField> GetSummaryColumnInfo(IRptParams filter)
{var lstGroupField = base.GetSummaryColumnInfo(filter);lstGroupField.Add(new Kingdee.BOS.Core.Report.SummaryField("F_Krystal_InStockQty", BOSEnums.Enu_SummaryType.SUM));return lstGroupField;
}
测试

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/44113.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【微服务】Spring Cloud中如何使用Eureka

文章目录 强烈推荐引言主要功能Eureka 的架构使用示例Eureka Server 配置Eureka Client 配置示例服务服务发现调用示例 Spring Cloud如何实现服务的注册?1. 搭建 Eureka 服务注册中心2. 配置服务注册到 Eureka3. 验证服务注册 总结应用场景1. 动态服务发现2. 负载均衡3. 服务治…

基于Java中的SSM框架实现水稻朔源信息系统项目【项目源码】

基于Java中的SSM框架实现水稻朔源信息系统演示 SSM框架 SSM框架是基于Spring、SpringMVC以及Mybatis实现的针对JAVA WEB端应用的开发框架&#xff0c;通过SSM框架结构可以实现以上三种框架的优点集合&#xff0c;从而实现更加高效便捷的系统开发和呈现。该框架结构通过Spring框…

PolarisMesh源码系列——服务如何注册

前话 PolarisMesh&#xff08;北极星&#xff09;是腾讯开源的服务治理平台&#xff0c;致力于解决分布式和微服务架构中的服务管理、流量管理、配置管理、故障容错和可观测性问题&#xff0c;针对不同的技术栈和环境提供服务治理的标准方案和最佳实践。 PolarisMesh 官网&am…

280个地级市金融集聚水平数据(2006-2022年)

2006年-2022年280个地级市金融集聚水平数据整理资源-CSDN文库 金融集聚水平&#xff1a;衡量地级市金融发展的新维度 金融集聚水平是衡量一个地区金融发展程度的重要指标&#xff0c;它反映了金融机构、金融资源、金融服务在特定时间和空间的集中程度。这一指标的评估可以从多…

视语坤川大模型智能体平台亮相2024世界人工智能大会

7月4日-7月7日&#xff0c;以“以共商促共享以善治促善智”为主题的2024世界人工智能大会&#xff08;WAIC 2024&#xff09;在上海举办&#xff0c;世界顶级专家学者、知名企业代表、政界人士、高校组织等齐聚上海&#xff0c;共商发展、共话未来。 作为大会的重磅环节——昇…

【笔记】Android V 应用SDK升级适配和问题

说明 随着Google释放的Android版本,系统升级SDK到35,应用也需要升级上去,不然会报错。 Android Studio Jellyfish | 2023.3.1 | Android Developers Android Studio 预览版中的新功能 | Android Developers 当前版本的Android Studio

Elasticsearch:深度学习与机器学习:了解差异

作者&#xff1a;来自 Elastic Elastic Platform Team 近年来&#xff0c;两项突破性技术一直站在创新的最前沿 —— 机器学习 (machine learning - ML) 和深度学习 (deep learning - DL)。人工智能 (AI) 的这些子集远不止是流行语。它们是推动医疗保健、金融等各行业进步的关键…

Java面试八股之MySQL索引B+树、全文索引、哈希索引

MySQL索引B树、全文索引、哈希索引 注意&#xff1a;B树中B不是代表二叉树&#xff08;binary&#xff09;&#xff0c;而是代表平衡&#xff08;balance&#xff09;&#xff0c;因为B树是从最早的平衡二叉树演化而来&#xff0c;但是B树不是一个二叉树。 B树的高度一般在2~…

es是如何处理索引数据的变动的?

1 概述 es是如何处理索引数据的变动的&#xff1f; 或者说索引数据变动时&#xff0c;es会执行哪些操作&#xff1f; refresh、fsync、merge 和 flush 操作有何作用&#xff1f; es是如何确保即使es发生宕机数据也不丢失的&#xff1f; 在回答上述问题前&#xff0c;可以先…

文件操作和IO流

前言&#x1f440;~ 上一章我们介绍了多线程进阶的相关内容&#xff0c;今天来介绍使用java代码对文件的一些操作 文件&#xff08;file&#xff09; 文件路径&#xff08;Path&#xff09; 文件类型 文件操作 文件系统操作&#xff08;File类&#xff09; 文件内容的读…

leetcode--恢复二叉搜索树

leetcode地址&#xff1a;恢复二叉搜索树 给你二叉搜索树的根节点 root &#xff0c;该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下&#xff0c;恢复这棵树 。 示例 1&#xff1a; 输入&#xff1a;root [1,3,null,null,2] 输出&#xff1a;[3,1,null…

AirPods Pro新功能前瞻:iOS 18的五大创新亮点

随着科技的不断进步&#xff0c;苹果公司一直在探索如何通过创新提升用户体验。iOS 18的推出&#xff0c;不仅仅是iPhone的一次系统更新&#xff0c;更是苹果生态链中重要一环——AirPods Pro的一次重大升级。 据悉&#xff0c;iOS 18将为AirPods Pro带来五项新功能&#xff0…

设计模式探索:观察者模式

1. 观察者模式 1.1 什么是观察者模式 观察者模式用于建立一种对象与对象之间的依赖关系&#xff0c;当一个对象发生改变时将自动通知其他对象&#xff0c;其他对象会相应地作出反应。 在观察者模式中有如下角色&#xff1a; Subject&#xff08;抽象主题/被观察者&#xf…

详细分析@FunctionalInterface的基本知识(附Demo)

目录 前言1. 基本知识2. Demo 前言 Java的基本知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;Spring框架从入门到学精&#xff08;全&#xff09; 1. 基本知识 FunctionalInterface 是 Java 8 引入的一个注…

外卖商城平台小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;商家管理&#xff0c;骑手管理&#xff0c;商品类型管理&#xff0c;商品信息管理&#xff0c;订单信息管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;商品信息&#…

模板初阶详解

目录 泛型编程函数模板函数模板概念函数模板格式函数模板的原理函数模板的实例化隐式实例化强制类型转换的疑惑 显式实例化 模板参数的匹配原则 类模板类模板的定义格式类模板的实例化 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f41…

微信小程序接口wx.getLocation违规导致封禁解决办法

1、找到站内信的这个封禁的通知&#xff08;功能封禁的通知&#xff0c;而不是处理警告的通知&#xff09; 2、点击通知会有申诉链接&#xff0c;点开申诉链接 申诉原因可参考下面的内容&#xff1a; 1.小程序哪些板块已除去收集地理位置、2.哪些板块需要收集地理位置、3.详细…

WindowsMac共享文件夹设置

共享文件夹设置 共享文件夹设置Windows系统设置步骤一&#xff1a;设置共享文件夹步骤二: 访问共享文件夹 Mac系统中设置共享文件夹步骤一&#xff1a;设置共享文件夹步骤二&#xff1a;访问共享文件夹 小贴士结论 共享文件夹设置 有时需要在多台电脑之间共享文件夹&#xff0…

4.MkDocs样式

学习 Admonitions(警告) - Material for MkDocs (wdk-docs.github.io) 提示 - Material for MkDocs 中文文档 (llango.com) Buttons(按钮) - Material for MkDocs (wdk-docs.github.io) 建议去看这些网站&#xff0c;更为详细。 常用功能 便利贴 ​​ 开启 markdown_ex…

Gemma2——Google 新开源大型语言模型完整应用指南

0.引言 Gemma 2以前代产品为基础&#xff0c;提供增强的性能和效率&#xff0c;以及一系列创新功能&#xff0c;使其在研究和实际应用中都具有特别的吸引力。Gemma 2 的与众不同之处在于&#xff0c;它能够提供与更大的专有模型相当的性能&#xff0c;但其软件包专为更广泛的可…