生產訂單執行明細表二開增加字段

文章目錄

  • 生產訂單執行明細表二開增加字段
    • 業務背景
    • 業務需求
    • 方案設計
    • 詳細設計和實現
      • 標準報表引入到應用
      • 標準報表和過濾擴展
      • 添加字段
      • 創建插件,掛載插件
        • 新建類庫 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.pswp.cn/diannao/44113.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44113.shtml
英文地址,請注明出處:http://en.pswp.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. 服務治…

Android C++系列:Linux進程間關系

1. 終端 在UNIX系統中,用戶通過終端登錄系統后得到一個Shell進程,這個終端成為Shell進 程的控制終端(Controlling Terminal),在前面文章我們說過,控制終端是保存在PCB中的信 息,而我們知道fork會復制PCB中的信息,因此由Shell進程啟動的其它進程的控制終端也是 這個終端。…

OpenCV進行視頻分析(光流、目標跟蹤)----20240710

一、OpenCV進行光流分析 # 光流分析螞蟻軌跡 import numpy as np import cv2if __name__ == __main__:cap = cv2.VideoCapture(./pictures/ant.mp4)# ShiTomasi 角點檢測參數feature_params = dict(maxCorners=100

基于Java中的SSM框架實現水稻朔源信息系統項目【項目源碼】

基于Java中的SSM框架實現水稻朔源信息系統演示 SSM框架 SSM框架是基于Spring、SpringMVC以及Mybatis實現的針對JAVA WEB端應用的開發框架&#xff0c;通過SSM框架結構可以實現以上三種框架的優點集合&#xff0c;從而實現更加高效便捷的系統開發和呈現。該框架結構通過Spring框…

PolarisMesh源碼系列——服務如何注冊

前話 PolarisMesh&#xff08;北極星&#xff09;是騰訊開源的服務治理平臺&#xff0c;致力于解決分布式和微服務架構中的服務管理、流量管理、配置管理、故障容錯和可觀測性問題&#xff0c;針對不同的技術棧和環境提供服務治理的標準方案和最佳實踐。 PolarisMesh 官網&am…

main.cpp程序執行流程圖

當然&#xff0c;我會為你繪制一個程序執行流程圖&#xff0c;并用中文注釋來解釋 main.cpp 的代碼邏輯思想和執行流程。 程序執行流程圖 開始|V 初始化|V 打開攝像頭 (VideoCapture cap(0))|V 進入主循環 (while (true))|V 捕獲圖像 (cap >> srcImage)|V 圖像是否為空…

280個地級市金融集聚水平數據(2006-2022年)

2006年-2022年280個地級市金融集聚水平數據整理資源-CSDN文庫 金融集聚水平&#xff1a;衡量地級市金融發展的新維度 金融集聚水平是衡量一個地區金融發展程度的重要指標&#xff0c;它反映了金融機構、金融資源、金融服務在特定時間和空間的集中程度。這一指標的評估可以從多…

根據H在有限域GF(2^m)上求解生成矩陣G

原理 有時間再補充。 注1&#xff1a;使用高斯消去法。如果Py不為單位陣&#xff0c;則說明進行了列置換&#xff0c;此時G不是系統形式。 注2&#xff1a;校驗矩陣H必須是行滿秩才存在對應的生成矩陣G&#xff0c;且生成矩陣G通常不唯一。 matlab實現&#xff1a;只做列置…

視語坤川大模型智能體平臺亮相2024世界人工智能大會

7月4日-7月7日&#xff0c;以“以共商促共享以善治促善智”為主題的2024世界人工智能大會&#xff08;WAIC 2024&#xff09;在上海舉辦&#xff0c;世界頂級專家學者、知名企業代表、政界人士、高校組織等齊聚上海&#xff0c;共商發展、共話未來。 作為大會的重磅環節——昇…

Python面試題:編寫一個 Python 腳本來讀取 Excel 文件

要在 Python 中讀取 Excel 文件&#xff0c;可以使用 pandas 庫&#xff0c;這個庫提供了強大的數據處理和分析功能&#xff0c;并且支持讀取 Excel 文件。你還需要 openpyxl 庫來支持讀取 .xlsx 格式的 Excel 文件。以下是如何編寫一個腳本來讀取 Excel 文件的示例&#xff1a…

git 的cherry-pick選擇性提交

git cherry-pick 是 Git 中的一個非常有用的命令&#xff0c;它允許你將一個或多個特定的提交&#xff08;commit&#xff09;從一個分支應用到另一個分支上&#xff0c;而不是合并整個分支。 單個提交的 cherry-pick 假設你有一個 feature 分支&#xff0c;其中有一個提交&a…

【筆記】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…

【大模型】大規模部署LLM:挑戰與對策

大規模部署LLM&#xff1a;挑戰與對策 引言一、計算資源的挑戰1.1 計算成本1.2 能源消耗與碳足跡 二、維護與更新的挑戰2.1 模型更新與版本控制2.2 知識時效性 三、數據隱私與倫理考量3.1 數據隱私保護3.2 倫理與偏見 四、可擴展性與靈活性4.1 系統架構設計4.2 多語言與地域適應…