From ada33aa1f845a396d5f81cb5525009ae425a378f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9C=B1=E6=96=8C?= <1324361213@qq.com>
Date: Thu, 21 Aug 2025 21:28:37 +0800
Subject: [PATCH] 1
---
GZ_LTHReportForms.csproj | 135 ++++++-
JiXiaoKanBan/ResultsKanbanSumReport.cs | 13 +-
JiXiaoKanBan/ResultsKanbanSumReport_bak.cs | 215 +++++++++++
Services/JixiaoKanBanService.cs | 415 +++++++++++++++++++++
Services/TempTableService.cs | 48 +++
5 files changed, 816 insertions(+), 10 deletions(-)
create mode 100644 JiXiaoKanBan/ResultsKanbanSumReport_bak.cs
create mode 100644 Services/JixiaoKanBanService.cs
create mode 100644 Services/TempTableService.cs
diff --git a/GZ_LTHReportForms.csproj b/GZ_LTHReportForms.csproj
index b80a78f..a19fa45 100644
--- a/GZ_LTHReportForms.csproj
+++ b/GZ_LTHReportForms.csproj
@@ -37,6 +37,10 @@
..\..\GZ_LTHUPDATEVIEW\bin\Debug\Kingdee.BOS.App.dll
+
+ False
+ Library\Kingdee.BOS.App.Core.dll
+
..\..\GZ_LTHUPDATEVIEW\bin\Debug\Kingdee.BOS.Contracts.dll
@@ -46,17 +50,129 @@
..\..\GZ_LTHYJZZHTH\bin\Debug\Kingdee.BOS.DataEntity.dll
-
- ..\..\派诺裴豪-报表\派诺报表\代码\Pilot.Report\Pilot.Report\Pilot.Report.Exploitation\bin\Debug\NPOI.dll
+
+ False
+ Library\Kingdee.BOS.ServiceHelper.dll
-
- ..\..\派诺裴豪-报表\派诺报表\代码\Pilot.Report\Pilot.Report\Pilot.Report.Exploitation\bin\Debug\NPOI.OOXML.dll
+
+ False
+ Library\Kingdee.BOS.VerificationHelper.dll
-
- ..\..\派诺裴豪-报表\派诺报表\代码\Pilot.Report\Pilot.Report\Pilot.Report.Exploitation\bin\Debug\NPOI.OpenXml4Net.dll
+
+ False
+ Library\Kingdee.BOS.Web.dll
-
- ..\..\派诺裴豪-报表\派诺报表\代码\Pilot.Report\Pilot.Report\Pilot.Report.Exploitation\bin\Debug\NPOI.OpenXmlFormats.dll
+
+ False
+ Library\Kingdee.BOS.Web.HTML.dll
+
+
+ False
+ Library\Kingdee.BOS.Web.HTML.Core.dll
+
+
+ False
+ Library\Kingdee.BOS.WebApi.FormService.dll
+
+
+ False
+ Library\Kingdee.K3.BD.Contracts.dll
+
+
+ False
+ Library\Kingdee.K3.BD.ServiceHelper.dll
+
+
+ False
+ Library\Kingdee.K3.Core.dll
+
+
+ False
+ Library\Kingdee.K3.FIN.Business.PlugIn.dll
+
+
+ False
+ Library\Kingdee.K3.FIN.Core.dll
+
+
+ False
+ Library\Kingdee.K3.FIN.HS.Business.PlugIn.dll
+
+
+ False
+ Library\Kingdee.K3.FIN.HS.Common.BusinessEntity.dll
+
+
+ False
+ Library\Kingdee.K3.FIN.HS.Contracts.dll
+
+
+ False
+ Library\Kingdee.K3.FIN.HS.ServiceHelper.dll
+
+
+ False
+ Library\Kingdee.K3.FIN.ServiceHelper.dll
+
+
+ False
+ Library\Kingdee.K3.MFG.App.dll
+
+
+ False
+ Library\Kingdee.K3.MFG.BusinessCommon.dll
+
+
+ False
+ Library\Kingdee.K3.MFG.Contracts.dll
+
+
+ False
+ Library\Kingdee.K3.MFG.PLN.App.Core.dll
+
+
+ False
+ Library\Kingdee.K3.MFG.PLN.App.MrpModel.dll
+
+
+ False
+ Library\Kingdee.K3.MFG.PLN.Business.PlugIn.dll
+
+
+ False
+ Library\Kingdee.K3.MFG.PLN.Report.PlugIn.dll
+
+
+ False
+ Library\Kingdee.K3.MFG.ServiceHelper.dll
+
+
+ False
+ Library\Kingdee.K3.SCM.App.Core.dll
+
+
+ False
+ Library\Kingdee.K3.SCM.Common.BusinessEntity.dll
+
+
+ False
+ Library\Newtonsoft.Json.dll
+
+
+ False
+ Library\NPOI.dll
+
+
+ False
+ Library\NPOI.OOXML.dll
+
+
+ False
+ Library\NPOI.OpenXml4Net.dll
+
+
+ False
+ Library\NPOI.OpenXmlFormats.dll
@@ -69,9 +185,12 @@
+
+
+
diff --git a/JiXiaoKanBan/ResultsKanbanSumReport.cs b/JiXiaoKanBan/ResultsKanbanSumReport.cs
index d251b16..836535a 100644
--- a/JiXiaoKanBan/ResultsKanbanSumReport.cs
+++ b/JiXiaoKanBan/ResultsKanbanSumReport.cs
@@ -68,11 +68,20 @@ namespace GZ_LTHReportForms.JiXiaoKanBan
var salesPersons = customFilter["F_Salesperson"] as DynamicObjectCollection;
if (salesPersons.Count > 0)
{
- reportTitles.AddTitle("F_Salesperson", string.Join(",", salesPersons.Select(n => n["Name"].ToString())));
+ reportTitles.AddTitle("F_Salesperson", string.Join(",", salesPersons.Select(n => (n["F_Salesperson"] as DynamicObject)["Name"].ToString())));
}
var startDate = Convert.ToDateTime(customFilter["FSDate"]);
var endDate = Convert.ToDateTime(customFilter["FEDate"]);
+ if (startDate.Year != endDate.Year)
+ {
+ throw new Exception("开始时间和结束时间必须是同一年份");
+ }
+ if (startDate > endDate)
+ {
+ throw new Exception("开始时间不能大于结束时间");
+ }
+
reportTitles.AddTitle("FStartDate", startDate.ToString("yyyy-MM-dd"));
reportTitles.AddTitle("FEndDate", endDate.ToString("yyyy-MM-dd"));
@@ -102,7 +111,7 @@ namespace GZ_LTHReportForms.JiXiaoKanBan
customFilter["FEDate"]).ToString("yyyy-MM-dd");
string sql = string.Format(@"/*dialect*/
- EXEC GZ_JXKBHZB_LTH '{0}','{1}'
+ EXEC GZ_JXKBHZB_LTH '{0}','{1}','1'
SELECT
ROW_NUMBER() OVER (ORDER BY F_SBU DESC) AS FID,
ROW_NUMBER() OVER (ORDER BY F_SBU DESC) AS FIDENTITYID,
diff --git a/JiXiaoKanBan/ResultsKanbanSumReport_bak.cs b/JiXiaoKanBan/ResultsKanbanSumReport_bak.cs
new file mode 100644
index 0000000..7298ab8
--- /dev/null
+++ b/JiXiaoKanBan/ResultsKanbanSumReport_bak.cs
@@ -0,0 +1,215 @@
+using GZ_LTHReportForms.Services;
+using Kingdee.BOS;
+using Kingdee.BOS.App.Data;
+using Kingdee.BOS.Contracts.Report;
+using Kingdee.BOS.Core.Enums;
+using Kingdee.BOS.Core.Report;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.Util;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace GZ_LTHReportForms.JiXiaoKanBan
+{
+ [Description("【列表插件】绩效看板汇总报表【报表】"), HotUpdate]
+ public class ResultsKanbanSumReport_bak : SysReportBaseService
+ {
+ ///
+ /// 初始化
+ ///
+ public override void Initialize()
+ {
+ base.Initialize();
+ this.ReportProperty.ReportName = new LocaleValue("绩效看板汇总", base.Context.UserLocale.LCID);
+ this.ReportProperty.IsUIDesignerColumns = false;
+ // 简单账表类型:普通、树形、分页
+ this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;
+ this.IsCreateTempTableByPlugin = true;
+ //
+ this.IsCreateTempTableByPlugin = true;
+ //支持分组汇总
+ this.ReportProperty.IsGroupSummary = true;
+ //
+ this.ReportProperty.SimpleAllCols = false;
+ //
+ this.ReportProperty.IsDefaultOnlyDspSumAndDetailData = true;
+
+ // 设置精度控制
+ var list = new List
+ {
+ new DecimalControlField("FDECIMALS", "OrigInvoiceAmount"),
+ new DecimalControlField("FDECIMALS", "ExchangeRate"),
+ new DecimalControlField("FDECIMALS", "InvoiceAmountTHB"),
+ new DecimalControlField("FDECIMALS", "MonthEndExRate"),
+ new DecimalControlField("FDECIMALS", "RevaluationAountInTHB"),
+ new DecimalControlField("FDECIMALS", "UnrealizedGainLoss"),
+ };
+ this.ReportProperty.DecimalControlFieldList = list;
+ }
+
+ ///
+ /// 填充过滤条件
+ ///
+ ///
+ ///
+ public override ReportTitles GetReportTitles(IRptParams filter)
+ {
+
+ ReportTitles reportTitles = new ReportTitles();
+ DynamicObject customFilter = filter.FilterParameter.CustomFilter;
+ if (customFilter == null)
+ {
+ return reportTitles;
+ }
+ // 供需组织 List
+ var salesPersons = customFilter["F_Salesperson"] as DynamicObjectCollection;
+ if (salesPersons.Count > 0)
+ {
+ reportTitles.AddTitle("F_Salesperson", string.Join(",", salesPersons.Select(n => (n["F_Salesperson"] as DynamicObject)["Name"].ToString())));
+ }
+ var startDate = Convert.ToDateTime(customFilter["FSDate"]);
+ var endDate = Convert.ToDateTime(customFilter["FEDate"]);
+ reportTitles.AddTitle("FStartDate", startDate.ToString("yyyy-MM-dd"));
+ reportTitles.AddTitle("FEndDate", endDate.ToString("yyyy-MM-dd"));
+ return reportTitles;
+ }
+ ///
+ /// 显示报表数据
+ ///
+ ///
+ ///
+ public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
+ {
+ base.BuilderReportSqlAndTempTable(filter, tableName);
+ //获取过滤条件
+ string Filter = GetFilterWhere(filter);
+
+
+ DynamicObject customFilter = filter.FilterParameter.CustomFilter;
+ DateTime startDate = Convert.ToDateTime(customFilter["FSDate"]);
+ DateTime endDate = Convert.ToDateTime(customFilter["FEDate"]);
+ if (startDate.Year != endDate.Year)
+ {
+ throw new Exception("开始时间和结束时间必须是同一年份");
+ }
+ if (startDate > endDate)
+ {
+ throw new Exception("开始时间不能大于结束时间");
+ }
+ JixiaoKanBanService jixiaoKanBanService = new JixiaoKanBanService(this.Context);
+ var thisDateChange = jixiaoKanBanService.GetThisDateChangedSaleOrder(startDate, endDate);
+ var lastDateChange = jixiaoKanBanService.GetLastDateChangedSaleOrder(startDate);
+ var excludeOrder = jixiaoKanBanService.GetExcludeOrder();
+ // 获取当期和往期的金额
+ var thisDateOrderAmount = jixiaoKanBanService.GetThisDateOrderAmount(startDate, endDate);
+ var lastDateOrderAmount = jixiaoKanBanService.GetLastDateOrderAmount(startDate);
+ var sumAmount = jixiaoKanBanService.GetThisDateSumAmount();
+ string sql = $@"/*dialect*/SELECT
+ *,
+ 0 本年华夏云联业绩_万元,
+ 0 去年合计业绩额_万元,
+ 0 回款额_万元,
+ 0 已发货应收款_万元,
+ 0 已到期应收款_万元,
+ ROW_NUMBER() OVER (
+ ORDER BY
+ 销售员
+ ) FIDENTITYID INTO {tableName}
+FROM
+ {sumAmount}
+";
+ DBUtils.Execute(this.Context, sql);
+ }
+
+
+ ///
+ /// 报表列表头
+ ///
+ ///
+ ///
+ public override ReportHeader GetReportHeaders(IRptParams filter)
+ {
+ base.GetReportHeaders(filter);
+ DynamicObject customFilter = filter.FilterParameter.CustomFilter;
+ DateTime startDate = Convert.ToDateTime(customFilter["FSDate"]);
+ ReportHeader header = new ReportHeader();
+ var year = startDate.Year;
+
+ header.AddChild("F_SBU", new LocaleValue("SBU"), SqlStorageType.Sqlvarchar);
+ header.AddChild("F_MXQY", new LocaleValue("明细区域"), SqlStorageType.Sqlvarchar);
+ header.AddChild("销售员", new LocaleValue("销售员"), SqlStorageType.Sqlvarchar);
+ header.AddChild("本年业绩目标_万元", new LocaleValue("" + year + "年业绩目标(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("本年派诺业绩_万元", new LocaleValue("" + year + "派诺业绩(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("本年兴诺业绩_万元", new LocaleValue("" + year + "兴诺业绩(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("本年武汉派诺_万元", new LocaleValue("" + year + "武汉派诺(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("本年碳索业绩_万元", new LocaleValue("" + year + "碳索业绩(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("本年香港派诺业绩_万元", new LocaleValue("" + year + "香港派诺业绩(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("本年华夏云联业绩_万元", new LocaleValue("" + year + "华夏云联业绩(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("本年诺瓦数能业绩_万元", new LocaleValue("" + year + "诺瓦数能业绩(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("往年订单变更金额_万元", new LocaleValue("往年订单变更金额(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("本年业绩合计_万元", new LocaleValue("" + year + "合计业绩额(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("达标率", new LocaleValue("达标率"), SqlStorageType.Sqlvarchar);
+ header.AddChild("去年合计业绩额_万元", new LocaleValue("" + (year - 1) + "合计业绩额(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("同比增长率", new LocaleValue("同比增长率"), SqlStorageType.Sqlvarchar);
+ header.AddChild("本年回款目标_万元", new LocaleValue("" + year + "回款目标(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("回款额_万元", new LocaleValue("回款额(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("回款率", new LocaleValue("回款率"), SqlStorageType.Sqlvarchar);
+ header.AddChild("已发货应收款_万元", new LocaleValue("已发货应收款(万元)"), SqlStorageType.SqlDecimal);
+ header.AddChild("已到期应收款_万元", new LocaleValue("已到期应收款(万元)"), SqlStorageType.SqlDecimal);
+
+ foreach (var item in header.GetChilds())
+ {
+ item.Width = 160;
+ }
+ return header;
+ }
+
+
+
+ //报表过滤条件-多选销售员
+ private string GetFilterWhere(IRptParams filter)
+ {
+ DynamicObject customFilter = filter.FilterParameter.CustomFilter;
+ StringBuilder strwhere = new StringBuilder(); //创建字符串构建器;
+ strwhere.AppendLine("WHERE 1=1");
+ var xsy = customFilter["F_Salesperson"] as DynamicObjectCollection;
+ if (xsy.Count > 0)
+ {
+ List xsyList = new List();
+ //循环获取物料信息
+ foreach (DynamicObject dobj in xsy)
+ {
+ DynamicObject dynamic = dobj["F_Salesperson"] as DynamicObject;
+ xsyList.Add(dynamic["Name"].ToString());
+ }
+ strwhere.AppendLine(string.Format(@"AND 销售员 IN ({0})", string.Join(",", xsyList.Select(x => $"'{x}'"))));
+ }
+ return strwhere.ToString();
+ }
+
+ //设置报表合计列
+ public override List GetSummaryColumnInfo(IRptParams filter)
+ {
+ var result = base.GetSummaryColumnInfo(filter);
+ result.Add(new SummaryField("本年业绩目标_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("本年派诺业绩_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("本年兴诺业绩_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("本年武汉派诺_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("本年碳索业绩_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("本年香港派诺业绩_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("本年华夏云联业绩_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("往年订单变更金额_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("本年业绩合计_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("去年合计业绩额_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("回款额_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("已发货应收款_万元", BOSEnums.Enu_SummaryType.SUM));
+ result.Add(new SummaryField("已到期应收款_万元", BOSEnums.Enu_SummaryType.SUM));
+ return result;
+ }
+
+ }
+}
diff --git a/Services/JixiaoKanBanService.cs b/Services/JixiaoKanBanService.cs
new file mode 100644
index 0000000..87ee415
--- /dev/null
+++ b/Services/JixiaoKanBanService.cs
@@ -0,0 +1,415 @@
+using Kingdee.BOS;
+using Kingdee.BOS.App;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Kingdee.BOS.ServiceHelper;
+
+namespace GZ_LTHReportForms.Services
+{
+ public class JixiaoKanBanService
+ {
+ ///
+ /// 金蝶上下文类
+ ///
+ private Context ctx;
+ ///
+ /// 临时表列表
+ ///
+ private Dictionary tempTableDict;
+ ///
+ /// 临时表服务
+ ///
+ private TempTableService tempTableService;
+
+ public JixiaoKanBanService(Context ctx)
+ {
+ this.ctx = ctx;
+ tempTableService = new TempTableService(ctx);
+ tempTableDict = new Dictionary();
+ }
+
+ public void DeleteTempTable()
+ {
+ foreach (var item in tempTableDict.Values)
+ {
+ tempTableService.DropTempTable(item);
+ }
+ }
+
+ ///
+ /// 获取当期变更单
+ ///
+ ///
+ ///
+ ///
+ public string GetThisDateChangedSaleOrder(DateTime startDate, DateTime endDate)
+ {
+ var ThisYearChange = tempTableService.CreateTempTable();
+ this.tempTableDict.Add("ThisYearChange", ThisYearChange);
+ var sql = $@"/*dialect*/SELECT
+ MAX(t1.FID) ChangeOrderId, -- 变更单ID
+ t1.FPKIDX
+ INTO {ThisYearChange}
+FROM
+ T_SAL_XORDER t1
+ INNER JOIN T_SAL_XORDERFIN t1fin ON t1.FID = t1fin.FID
+WHERE
+ 1 = 1
+ AND t1fin.FISACTIVE = 'B'
+ AND t1fin.FACTIVEDATE >= {startDate.ToString("yyyy-MM-dd")}
+ AND t1fin.FACTIVEDATE <= {endDate.ToString("yyyy-MM-dd")}
+GROUP BY
+ t1.FPKIDX;
+";
+ DBServiceHelper.Execute(ctx, sql);
+ return ThisYearChange;
+ }
+
+ ///
+ /// 获取往期变更单
+ ///
+ ///
+ ///
+ public string GetLastDateChangedSaleOrder(DateTime startDate)
+ {
+ var LastYearChange = tempTableService.CreateTempTable();
+ this.tempTableDict.Add("LastYearChange", LastYearChange);
+ var sql = $@"/*dialect*/SELECT
+ MAX(t1.FID) ChangeOrderId, -- 变更单ID
+ t1.FPKIDX
+ INTO {LastYearChange}
+FROM
+ T_SAL_XORDER t1
+ INNER JOIN T_SAL_XORDERFIN t1fin ON t1.FID = t1fin.FID
+WHERE
+ 1 = 1
+ AND t1fin.FISACTIVE = 'B'
+ AND t1fin.FACTIVEDATE <= {startDate.ToString("yyyy-MM-dd")}
+GROUP BY
+ t1.FPKIDX;
+";
+ DBServiceHelper.Execute(ctx, sql);
+ return LastYearChange;
+ }
+
+ ///
+ /// 获取需要排除的销售订单
+ ///
+ ///
+ public string GetExcludeOrder()
+ {
+ var ExcludeOrder = tempTableService.CreateTempTable();
+ this.tempTableDict.Add("ExcludeOrder", ExcludeOrder);
+ var sql = $@"/*dialect*/SELECT
+ A.FID AS 'FID' --,a.FSALERID,
+ INTO {ExcludeOrder}
+FROM
+ T_SAL_ORDER A --销售订单表头
+ INNER JOIN T_ORG_ORGANIZATIONS_L B ON A.FSALEORGID = B.FORGID --组织表
+ INNER JOIN T_BD_CUSTOMER_L C ON C.FCUSTID = A.FCUSTID
+ AND C.FLOCALEID = 2052 --客户表
+ LEFT JOIN V_BD_SALESMAN_L L ON L.fid = A.FSALERID
+ LEFT JOIN T_PerformanceSharing M ON M.FSOURCEBILLNO = A.FBILLNO
+ AND M.FDOCUMENTSTATUS = 'C' --业绩分摊单表头
+ LEFT JOIN T_PerformanceSharingEntry N ON N.FID = M.FID --业绩分摊单表体
+ LEFT JOIN V_BD_SALESMAN_L O ON O.fid = N.FSALEID
+ LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACO ON ACO.名称 = O.FNAME --对接人力信息
+ LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACL ON ACL.名称 = L.FNAME --对接人力信息
+WHERE
+ A.FSALEORGID = 100302 -- 销售组织=珠海派诺
+ AND (
+ ACO.区域 = '碳索智控'
+ OR ACL.区域 = '碳索智控'
+ OR C.FNAME IN ('派诺科技(香港有限公司)', '武汉派诺科技发展有限公司') --
+ OR (
+ C.FCUSTID = 1150173
+ AND (
+ ACO.区域 = '决策团队'
+ OR ACL.区域 = '决策团队'
+ )
+ ) --1150173对应的是珠海兴诺能源技术有限公司
+ OR L.FNAME = '兴诺总'
+ OR A.FID IN (110185, 207800) -- 样机订单
+ )
+";
+ DBServiceHelper.Execute(ctx, sql);
+ return ExcludeOrder;
+ }
+
+ ///
+ /// 全组织根据日期显示订单金额(当期)
+ ///
+ ///
+ ///
+ ///
+ public string GetThisDateOrderAmount(DateTime startDate, DateTime endDate)
+ {
+ var ThisYearChange = tempTableDict["ThisYearChange"];
+ var ExcludeOrder = tempTableDict["ExcludeOrder"];
+ var ThisDateOrderAmount = tempTableService.CreateTempTable();
+ tempTableDict.Add("ThisDateOrderAmount", ThisDateOrderAmount);
+ var sql = $@"/*dialect*/SELECT
+ A.FBILLNO,
+ A.FSALEORGID AS FSALEORGID,
+ CASE
+ WHEN ISNULL (O.FNAME, '') = '' THEN ACL.区域
+ ELSE ACO.区域
+ END AS 'F_SBU',
+ CASE
+ WHEN ISNULL (O.FNAME, '') = '' THEN ACL.明细区域
+ ELSE ACO.明细区域
+ END AS 'F_MXQY',
+ CASE
+ WHEN ISNULL (O.FNAME, '') = '' THEN L.FNAME
+ ELSE O.FNAME
+ END AS '销售员',
+ CASE
+ WHEN n.FSHARERATE IS NULL THEN CASE
+ WHEN t1.ChangeOrderId IS NULL THEN ROUND(A.F_AMOUNTSTAR, 10)
+ ELSE ROUND(t1fen.FBILLALLAMOUNT_LC, 10)
+ END
+ ELSE CASE
+ WHEN t1.ChangeOrderId IS NULL THEN ROUND(A.F_AMOUNTSTAR * (n.FSHARERATE / 100), 10)
+ ELSE ROUND(
+ t1fen.FBILLALLAMOUNT_LC * (n.FSHARERATE / 100),
+ 10
+ )
+ END
+ END AS '合同总价'
+ INTO {ThisDateOrderAmount}
+FROM
+ T_SAL_ORDER A --销售订单表头
+ INNER JOIn T_SAL_ORDERFIN A_FIN on A.FID = A_FIN.FID -- 表头财务信息
+ LEFT JOIN {ThisYearChange} t1 on t1.FPKIDX = A.FID -- 今年变更的销售订单新变更单
+ LEFT JOIN T_SAL_XORDERFIN t1fen on t1.ChangeOrderId = t1fen.FID -- 关联变更单的金额
+ LEFT JOIN V_BD_SALESMAN_L L ON L.fid = A.FSALERID
+ left JOIN T_PerformanceSharing M ON M.FSOURCEBILLNO = A.FBILLNO
+ AND M.FDOCUMENTSTATUS = 'C'
+ left JOIN T_PerformanceSharingEntry N ON N.FID = M.FID
+ LEFT JOIN V_BD_SALESMAN_L O ON O.fid = N.FSALEID
+ LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACO ON ACO.名称 = O.FNAME
+ AND ISNULL (ACO.明细区域, '') != '' --对接人力信息
+ LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACL ON ACL.名称 = L.FNAME
+ AND ISNULL (ACL.明细区域, '') != '' --对接人力信息
+WHERE
+ 1 = 1
+ AND A.FAPPROVEDATE >= {startDate.ToString("yyyy-MM-dd")} --订单审核日期
+ AND A.FAPPROVEDATE < {endDate.AddDays(1).ToString("yyyy-MM-dd")} --订单审核日期
+ AND A.FDocumentStatus = 'C'
+ AND A.FManualClose <> '1'
+ AND A.FID NOT IN (
+ SELECT
+ FID
+ FROM
+ {ExcludeOrder}
+ )
+ AND A.F_contractnumber NOT LIKE 'Z%'
+";
+ DBServiceHelper.Execute(ctx, sql);
+ return ThisDateOrderAmount;
+ }
+
+ ///
+ /// 查询全组织根据往期日期显示订单金额
+ ///
+ ///
+ ///
+ public string GetLastDateOrderAmount(DateTime startDate)
+ {
+ var ThisYearChange = tempTableDict["ThisYearChange"];
+ var LastYearChange = tempTableDict["LastYearChange"];
+ var ExcludeOrder = tempTableDict["ExcludeOrder"];
+ var LastDateOrderAmount = tempTableService.CreateTempTable();
+ tempTableDict.Add("LastDateOrderAmount", LastDateOrderAmount);
+ var sql = $@"/*dialect*/SELECT
+ A.FBILLNO,
+ A.FSALEORGID AS FSALEORGID,
+ CASE
+ WHEN ISNULL (O.FNAME, '') = '' THEN ACL.区域
+ ELSE ACO.区域
+ END AS 'F_SBU',
+ CASE
+ WHEN ISNULL (O.FNAME, '') = '' THEN ACL.明细区域
+ ELSE ACO.明细区域
+ END AS 'F_MXQY',
+ CASE
+ WHEN ISNULL (O.FNAME, '') = '' THEN L.FNAME
+ ELSE O.FNAME
+ END AS '销售员',
+ CASE
+ WHEN n.FSHARERATE IS NULL THEN CASE
+ WHEN t2fen.FBILLALLAMOUNT_LC IS NULL THEN t1fen.FBILLALLAMOUNT_LC - A.F_AMOUNTSTAR
+ ELSE t1fen.FBILLALLAMOUNT_LC - t2fen.FBILLALLAMOUNT_LC
+ END
+ ELSE CASE
+ WHEN t1.ChangeOrderId IS NULL THEN ROUND(
+ t1fen.FBILLALLAMOUNT_LC - A.F_AMOUNTSTAR * (n.FSHARERATE / 100),
+ 10
+ )
+ ELSE ROUND(
+ t1fen.FBILLALLAMOUNT_LC - t2fen.FBILLALLAMOUNT_LC * (n.FSHARERATE / 100),
+ 10
+ )
+ END
+ END AS '变更金额'
+ INTO {LastDateOrderAmount}
+FROM
+ T_SAL_ORDER A --销售订单表头
+ INNER JOIn T_SAL_ORDERFIN A_FIN on A.FID = A_FIN.FID -- 表头财务信息
+ INNER JOIN {ThisYearChange} t1 on t1.FPKIDX = A.FID -- 当期变更的销售订单新变更单
+ LEFT JOIN T_SAL_XORDERFIN t1fen on t1.ChangeOrderId = t1fen.FID -- 关联变更单的金额
+ LEFT JOIN {LastYearChange} t2 on t1.FPKIDX = A.FID -- 往期变更的销售订单新变更单
+ LEFT JOIN T_SAL_XORDERFIN t2fen on t2.ChangeOrderId = t2fen.FID -- 关联变更单的金额
+ LEFT JOIN V_BD_SALESMAN_L L ON L.fid = A.FSALERID
+ left JOIN T_PerformanceSharing M ON M.FSOURCEBILLNO = A.FBILLNO
+ AND M.FDOCUMENTSTATUS = 'C'
+ left JOIN T_PerformanceSharingEntry N ON N.FID = M.FID
+ LEFT JOIN V_BD_SALESMAN_L O ON O.fid = N.FSALEID
+ LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACO ON ACO.名称 = O.FNAME
+ AND ISNULL (ACO.明细区域, '') != ''
+ LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACL ON ACL.名称 = L.FNAME
+ AND ISNULL (ACL.明细区域, '') != ''
+WHERE
+ 1 = 1
+ AND A.FAPPROVEDATE < {startDate.ToString("yyyy-MM-dd")} --订单审核日期
+ AND A.FDocumentStatus = 'C'
+ AND A.FManualClose <> '1'
+ AND A.FID NOT IN (
+ SELECT
+ FID
+ FROM
+ {ExcludeOrder}
+ )
+ AND A.F_contractnumber NOT LIKE 'Z%'
+";
+ DBServiceHelper.Execute(ctx, sql);
+ return LastDateOrderAmount;
+ }
+
+
+ public string GetThisDateSumAmount()
+ {
+ var ThisDateOrderAmount = tempTableDict["ThisDateOrderAmount"];
+ var LastDateOrderAmount = tempTableDict["LastDateOrderAmount"];
+ var SumAmount = tempTableService.CreateTempTable();
+ var ThisDateOrderAmountTemp = tempTableService.CreateTempTable();
+ var LastDateOrderAmountTemp = tempTableService.CreateTempTable();
+ var YJMB = tempTableService.CreateTempTable();
+ tempTableDict.Add("SumAmount", SumAmount);
+ tempTableDict.Add("ThisDateOrderAmountTemp", ThisDateOrderAmountTemp);
+ tempTableDict.Add("LastDateOrderAmountTemp", LastDateOrderAmountTemp);
+ tempTableDict.Add("YJMB", YJMB);
+ var sql1 = $@"/*dialect*/SELECT
+ F_SBU,
+ F_MXQY,
+ 销售员,
+ (
+ SELECT
+ ISNULL (SUM(合同总价), 0)
+ FROM
+ {ThisDateOrderAmount}
+ WHERE
+ FSALEORGID = '100302'
+ ) 本年派诺业绩_万元,
+ (
+ SELECT
+ ISNULL (SUM(合同总价), 0)
+ FROM
+ {ThisDateOrderAmount}
+ WHERE
+ FSALEORGID = '100303'
+ ) 本年兴诺业绩_万元,
+ (
+ SELECT
+ ISNULL (SUM(合同总价), 0)
+ FROM
+ {ThisDateOrderAmount}
+ WHERE
+ FSALEORGID = '100305'
+ ) 本年武汉派诺_万元,
+ (
+ SELECT
+ ISNULL (SUM(合同总价), 0)
+ FROM
+ {ThisDateOrderAmount}
+ WHERE
+ FSALEORGID = '438223'
+ ) 本年碳索业绩_万元,
+ (
+ SELECT
+ ISNULL (SUM(合同总价), 0)
+ FROM
+ {ThisDateOrderAmount}
+ WHERE
+ FSALEORGID = '438224'
+ ) 本年香港派诺业绩_万元,
+ (
+ SELECT
+ ISNULL (SUM(合同总价), 0)
+ FROM
+ {ThisDateOrderAmount}
+ WHERE
+ FSALEORGID = '1467475'
+ ) 本年诺瓦数能业绩_万元
+ INTO {ThisDateOrderAmountTemp}
+FROM
+ {ThisDateOrderAmount} t1
+GROUP BY
+ F_SBU,
+ F_MXQY,
+ 销售员
+";
+ DBServiceHelper.Execute(ctx, sql1);
+
+ var sql2 = $@"/*dialect*/SELECT
+ F_SBU,
+ F_MXQY,
+ 销售员,
+ SUM(变更金额) 变更金额 INTO {LastDateOrderAmountTemp}
+FROM
+ {LastDateOrderAmount} t1
+GROUP BY
+ F_SBU,
+ F_MXQY,
+ 销售员
+";
+ DBServiceHelper.Execute(ctx, sql2);
+
+ var sql3 = $@"/*dialect*/SELECT
+ FORMAT (A.F_VRYF_Date_83g, 'yyyy') AS '业绩日期',
+ C.FNAME AS '销售员',
+ B.FPerformanceTargets AS '业绩目标_万元',
+ B.FPAYMENTSUM AS '回款目标_万元'
+ INTO {YJMB}
+FROM
+ MBBA_t_Cust100002 A
+ INNER JOIN MBBA_t_Cust_Entry100003 B ON A.FID = B.FID
+ INNEr JOIN V_BD_SALESMAN_L C ON C.fid = B.FNAME
+WHERE
+ FORMAT (A.F_VRYF_Date_83g, 'yyyy') = '{2025}'
+";
+ DBServiceHelper.Execute(ctx, sql3);
+
+ var sql = $@"/*dialect*/SELECT
+ t1.*,
+ t2.变更金额 往年订单变更金额_万元,
+ t3.业绩日期,
+ t3.业绩目标_万元 本年业绩目标_万元,
+ t3.回款目标_万元,
+ 本年派诺业绩_万元 + 本年兴诺业绩_万元 + 本年武汉派诺_万元 + 本年碳索业绩_万元 + 本年香港派诺业绩_万元 + 本年诺瓦数能业绩_万元 + 变更金额 AS 本年业绩合计_万元
+ INTO {SumAmount}
+FROM
+ {ThisDateOrderAmountTemp} t1
+ LEFT JOIN {LastDateOrderAmountTemp} t2 ON t1.F_SBU = t2.F_SBU
+ AND t1.F_MXQY = t2.F_MXQY
+ AND t1.销售员 = t2.销售员
+ LEFT JOIN {YJMB} t3 ON t1.销售员 = t3.销售员
+";
+ DBServiceHelper.Execute(ctx, sql);
+ return SumAmount;
+ }
+ }
+}
diff --git a/Services/TempTableService.cs b/Services/TempTableService.cs
new file mode 100644
index 0000000..8f6e0fc
--- /dev/null
+++ b/Services/TempTableService.cs
@@ -0,0 +1,48 @@
+using Kingdee.BOS;
+using Kingdee.BOS.App;
+using Kingdee.BOS.Contracts;
+using Kingdee.BOS.Util;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace GZ_LTHReportForms.Services
+{
+ internal class TempTableService
+ {
+
+ private Context ctx;
+
+
+ public TempTableService(Context ctx)
+ {
+ this.ctx = ctx;
+ }
+ ///
+ /// 删除临时表
+ ///
+ ///
+ ///
+ public void DropTempTable(string tableName)
+ {
+ if (!tableName.IsNullOrEmptyOrWhiteSpace())
+ {
+ IDBService dbservice = ServiceHelper.GetService();
+ dbservice.DeleteTemporaryTableName(ctx, new string[] { tableName });
+ }
+ }
+ ///
+ /// 创建临时表
+ ///
+ ///
+ ///
+ public string CreateTempTable()
+ {
+ IDBService dbservice = ServiceHelper.GetService();
+ string[] temptables = dbservice.CreateTemporaryTableName(ctx, 1);
+ return temptables[0];
+ }
+ }
+}