using Kingdee.BOS.App.Data; using Kingdee.BOS; using Kingdee.BOS.Contracts.Report; 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; using Pilot.Report.Exploitation.PublicClass; using DocumentFormat.OpenXml.Bibliography; using DocumentFormat.OpenXml.Spreadsheet; using NPOI.SS.Formula.Functions; using Pilot.Report.Exploitation.Common; namespace Pilot.Report.Exploitation.SaleOrderProgress { /// /// 销售业绩排行榜报表 /// [Description("【列表插件】销售业绩排行榜【报表】"), HotUpdate] public class PHBSaleOrderReport : SysReportBaseService { private string tableNameView = EnvironmentTEST.tableNameView_TEST; /// /// 初始化 /// 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; // 单据主键:两行FID相同,则为同一单的两条分录,单据编号可以不重复显示 this.ReportProperty.PrimaryKeyFieldName = "FID"; // 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 ReportHeader GetReportHeaders(IRptParams filter) { DynamicObject customFilter = filter.FilterParameter.CustomFilter; base.GetReportHeaders(filter); ReportHeader header = new ReportHeader(); // 下单时间 string fDate = customFilter["F_Date"]?.ToString(); int year = Convert.ToInt32(fDate.Split('-')[0]); header.AddChild("SBU", new LocaleValue("部门(SBU)"), SqlStorageType.Sqlvarchar); header.AddChild("DetailArea", new LocaleValue("区域明细"), SqlStorageType.Sqlvarchar); header.AddChild("GName", new LocaleValue("职位名称"), SqlStorageType.Sqlvarchar); header.AddChild("Salesperson", new LocaleValue("姓名"), SqlStorageType.Sqlvarchar); header.AddChild("RDate", new LocaleValue("入司时间"), SqlStorageType.SqlDatetime); header.AddChild("ZWDate", new LocaleValue("担任本职位日期"), SqlStorageType.SqlDatetime); header.AddChild("XSDate", new LocaleValue("担任销售日期"), SqlStorageType.SqlDatetime); header.AddChild("RZYear", new LocaleValue("入职年限"), SqlStorageType.Sqlvarchar); header.AddChild("CliqueBG", new LocaleValue("派诺集团-已进行集团业绩调整(含往年订单变更)"), SqlStorageType.SqlDecimal); header.AddChild("PNBG", new LocaleValue("派诺业绩(含往年订单变更)"), SqlStorageType.SqlDecimal); header.AddChild("XNBG", new LocaleValue("兴诺业绩(含往年订单变更)"), SqlStorageType.SqlDecimal); header.AddChild("WHPNBG", new LocaleValue("武汉派诺业绩(含往年订单变更)"), SqlStorageType.SqlDecimal); header.AddChild("TSBG", new LocaleValue("广东碳索业绩(含往年订单变更)"), SqlStorageType.SqlDecimal); header.AddChild("XGPNBG", new LocaleValue("香港派诺业绩(含往年订单变更)"), SqlStorageType.SqlDecimal); header.AddChild("HXYLBG", new LocaleValue("华夏云联业绩(含往年订单变更)"), SqlStorageType.SqlDecimal); header.AddChild("DNLJYJ", new LocaleValue("当年累计业绩"), SqlStorageType.SqlDecimal); header.AddChild("WNBGHTE", new LocaleValue("往年变更合同额"), SqlStorageType.SqlDecimal); header.AddChild("JTHKHJ", new LocaleValue("集团回款合计"), SqlStorageType.SqlDecimal); header.AddChild("PNLJHKE", new LocaleValue("派诺累计回款额"), SqlStorageType.SqlDecimal); header.AddChild("XNLJHKE", new LocaleValue("兴诺累计回款额"), SqlStorageType.SqlDecimal); header.AddChild("WHPNLJHKE", new LocaleValue("武汉派诺累计回款额"), SqlStorageType.SqlDecimal); header.AddChild("GDTSLJHKE", new LocaleValue("广东碳索累计回款额"), SqlStorageType.SqlDecimal); header.AddChild("XGPNLJHKE", new LocaleValue("香港派诺累计回款额"), SqlStorageType.SqlDecimal); header.AddChild("HXYLLJHKE", new LocaleValue("华夏云联累计回款额"), SqlStorageType.SqlDecimal); header.AddChild("XXSMB", new LocaleValue(year + "年销售目标-新"), SqlStorageType.SqlDecimal); header.AddChild("DBL1", new LocaleValue(year + "年达标率(不含往年订单变更)-新"), SqlStorageType.SqlDecimal); header.AddChild("YXSMB", new LocaleValue(year + "年销售目标-原"), SqlStorageType.SqlDecimal); header.AddChild("DBL2", new LocaleValue(year + "年达标率(不含往年订单变更)-原"), SqlStorageType.SqlDecimal); header.AddChild("MBTZJE", new LocaleValue("目标调整金额"), SqlStorageType.SqlDecimal); header.AddChild("NDXSE1", new LocaleValue((year - 1) + "年度销售额"), SqlStorageType.SqlDecimal); header.AddChild("NDXSE2", new LocaleValue((year - 2) + "年度销售额"), SqlStorageType.SqlDecimal); header.AddChild("NDXSE3", new LocaleValue((year - 3) + "年度销售额"), SqlStorageType.SqlDecimal); header.AddChild("NDXSE4", new LocaleValue((year - 4) + "年度销售额"), SqlStorageType.SqlDecimal); header.AddChild("NDXSE5", new LocaleValue((year - 5) + "年度销售额"), SqlStorageType.SqlDecimal); header.AddChild("NDXSE6", new LocaleValue((year - 6) + "年度销售额"), SqlStorageType.SqlDecimal); foreach (var item in header.GetChilds()) { item.Width = 160; } return header; } /// /// 显示报表数据 /// /// /// public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) { DynamicObject customFilter = filter.FilterParameter.CustomFilter; // 组织列表 var organizationList = (customFilter["FZuZhi"] as DynamicObjectCollection)?.Select(n => (n["FZuZhi"] as DynamicObject)["ID"].ToString()).ToList(); // 组织 var organization = organizationList == null ? "" : (string.Join(",", organizationList)); // 开始日期 string fStrartDate = customFilter["FStrartDate"]?.ToString(); // 结束日期 string fEndDate = customFilter["FEndDate"]?.ToString(); // 审核开始日期 string fSDate = customFilter["FSDate"]?.ToString(); // 审核结束日期 string fEDate = customFilter["FEDate"]?.ToString(); // 下单时间 string fDate = customFilter["F_Date"]?.ToString(); int year = Convert.ToInt32(fDate.Split('-')[0]); base.BuilderReportSqlAndTempTable(filter, tableName); string sql = string.Format(@"/*dialect*/ Select CASE WHEN ISNULL(X2.FNAME,'') = '' THEN S.区域 ELSE S2.区域 END as 'SBU',--部门SBU CASE WHEN ISNULL(X2.FNAME,'') = '' THEN S.明细区域 ELSE S2.明细区域 END as 'DetailArea',--区域明细 G.GFNAME as 'GName', --职位名称 CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END as 'Salesperson', --销售员 ISNULL(G2.FSTARTDATE,'') as 'RDate',--入司时间 ISNULL(G.FSTARTDATE,'') as 'ZWDate', --担任本职位日期 CASE WHEN ISNULL(G3.FSTARTDATE,'')='' THen null ELSE ISNULL(G3.FSTARTDATE,'') END as 'XSDate',--担任销售日期 ROUND((DATEDIFF(DAY, ISNULL(G2.FSTARTDATE,''), GETDATE()) / 365.0), 1) as 'RZYear',--入职年限 --ISNULL(Y2.FSHARERATE,100) as 'FSHARERATE', --分摊比例 ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0) as 'CliqueBG',--派诺集团-已进行集团业绩调整(含往年订单变更) CASE WHEN A.FSaleOrgId = 100302 THEN ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0) ELSE null END as 'PNBG',--派诺业绩(含往年订单变更) CASE WHEN A.FSaleOrgId = 100303 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'XNBG',--兴诺业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100) CASE WHEN A.FSaleOrgId = 100305 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'WHPNBG',--武汉派诺业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100) CASE WHEN A.FSaleOrgId = 438223 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'TSBG',--碳索业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100) CASE WHEN A.FSaleOrgId = 438224 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'XGPNBG',--香港派诺业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100) CASE WHEN A.FSaleOrgId = 533896 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'HXYLBG',--华夏云联业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100) CASE WHEN YEAR(A.FDATE) = {0} THEN (Select SUM(a1.FALLAMOUNT_LC) as 'FALLAMOUNT_LC' From T_SAL_ORDERENTRY_F a1 JOIN T_SAL_ORDERENTRY a2 on a1.FENTRYID = a2.FENTRYID Where a2.FMANUALROWCLOSE!='1' AND a1.FID = A.FID)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'DNLJYJ',--当年累计业绩 CASE WHEN YEAR(A.FDATE)<{0} THEN ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0) ELSE null END as 'WNBGHTE',--往年变更合同额(派诺+兴诺+武兴派诺) ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) as 'JTHKHJ',--集团回款合计 CASE WHEN A.FSaleOrgId = 100302 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'PNLJHKE',--派诺累计回款额 CASE WHEN A.FSaleOrgId = 100303 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'XNLJHKE',--兴诺累计回款额 CASE WHEN A.FSaleOrgId = 100305 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'WHPNLJHKE',--武汉派诺累计回款额 CASE WHEN A.FSaleOrgId = 438223 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'GDTSLJHKE',--广东碳索累计回款额 CASE WHEN A.FSaleOrgId = 438224 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'XGPNLJHKE',--香港派诺累计回款额 CASE WHEN A.FSaleOrgId = 533896 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'HXYLLJHKE',--华夏云联累计回款额 ISNULL(G4.FPERFORMANCETARGETS,0) as 'XXSMB',--2024年销售目标-新 CASE WHEN ISNULL(G4.FPERFORMANCETARGETS,0) = 0 THEN 0 ELSE ROUND((ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100)/ISNULL(G4.FPERFORMANCETARGETS,0),2) END as 'DBL1',--2024年达成率(不含往年订单变更) ISNULL(G4.FPERFORMANCETARGETS,0) as 'YXSMB',--2024年销售目标-原 CASE WHEN ISNULL(G4.FPERFORMANCETARGETS,0) = 0 THEN 0 ELSE ROUND((ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100)/ISNULL(G4.FPERFORMANCETARGETS,0),2) END as 'DBL2',--2024年达成率(不含往年订单变更) ISNULL(G4.FPERFORMANCETARGETS,0)-ISNULL(G4.FPERFORMANCETARGETS,0) as 'MBTZJE',--目标调整金额 CASE WHEN YEAR(A.FDATE) = {1} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE1',--2024年度销售额 CASE WHEN YEAR(A.FDATE) = {2} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE2',--2023年度销售额 CASE WHEN YEAR(A.FDATE) = {3} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE3',--2022年度销售额 CASE WHEN YEAR(A.FDATE) = {4} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE4',--2021年度销售额 CASE WHEN YEAR(A.FDATE) = {5} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE5',--2020年度销售额 CASE WHEN YEAR(A.FDATE) = {6} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE6'--2019年度销售额 INTO #TABLETMEP1 From T_SAL_ORDER A --销售订单 LEFT JOIN (Select FNumber,FENTRYID From T_BAS_ASSISTANTDATAENTRY Where FID = '670cc977263353') W8 --合同类型 on W8.FENTRYID = A.F_ORDERCATEGORY LEFT JOIN T_SAL_ORDERFIN B on A.FID = B.FID LEFT JOIN V_BD_SALESMAN_L X on X.fid = A.FSALERID LEFT JOIN T_BD_CUSTOMER_L K on K.FCUSTID = A.FCUSTID LEFT JOIN --收款退款单 T_AR_REFUNDBILL C on C.F_VRYF_TEXT_83G = A.F_CONTRACTNUMBER LEFT JOIN T_PerformanceSharing Y on Y.FSOURCEBILLNO = A.FBILLNO LEFT JOIN T_PerformanceSharingEntry Y2 on Y2.FID = Y.FID LEFT JOIN V_BD_SALESMAN_L X2 on Y2.FSALEID = X2.fid LEFT JOIN {7} S on X.FNAME = S.名称 LEFT JOIN {7} S2 on X2.FNAME = S2.名称 LEFT JOIN (Select a1.FNAME,a2.*,a3.FNAME as 'GFNAME' From T_HR_EMPINFO_L a1 JOIN T_BD_STAFFTEMP a2 on a1.FID = a2.FID LEFT JOIN T_ORG_POST_L a3 on a2.FPOSTID = a3.FPOSTID Where a2.FENTRYID in (Select * From V_User_FID_GW)) G on G.FNAME = (CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END) LEFT JOIN --获取入司时间 V_User_FID_GW2 G2 on G2.FNAME = (CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END) LEFT JOIN --获取销售任刚时间 V_User_FID_GW3 G3 on G3.FNAME = (CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END) LEFT JOIN--业绩目标回款表 (Select a2.FPERFORMANCETARGETS,a2.FPAYMENTSUM,a3.FNAME From MBBA_t_Cust100002 a1 JOIn MBBA_t_Cust_Entry100003 a2 on a1.FID = a2.FID JOIN V_BD_SALESMAN_L a3 on a2.FNAME = a3.fid Where a1.FDOCUMENTSTATUS = 'C' AND F_MBBA_Combo_qtr = '{0}') G4 on G4.FNAME = (CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END) LEFT JOIN (Select a2.FBILLNO2,CASE WHEN ISNULL(a2.FALLAMOUNT2,0)>ISNULL(b1.FALLAMOUNT3,0) THEN ISNULL(b1.FALLAMOUNT3,0) ELSE ISNULL(a2.FALLAMOUNT2,0) END as 'FALLAMOUNT' From T_AutoWrireRecord a1 JOIN T_AutoWrireRecordEntry a2 on a1.FID = a2.FID LEFT JOIN (Select a1.FID,SUM(CAST(a2.FALLAMOUNT3 as DECIMAL(10,2))) as 'FALLAMOUNT3' From T_AutoWrireRecord a1 JOIN T_AutoWrireRecordEntry2 a2 on a1.FID = a2.FID Where a1.FDOCUMENTSTATUS = 'C' AND Year(a2.FDATE3) = '{0}' GROUP BY a1.FID) b1 on b1.FID = a1.FID Where a1.FDOCUMENTSTATUS = 'C') H on H.FBILLNO2 = A.FBILLNO Where A.FDOCUMENTSTATUS = 'C' AND W8.FNumber != 'Z' --AND ISNULL(X.FNAME,'') != '' AND A.FSALEORGID = 100302 AND S.区域 != '碳索智控' AND A.FMANUALCLOSE != '1' AND ISNULL(K.FNAME,'') NOT IN ('派诺科技(香港)有限公司','武汉派诺科技发展有限公司') AND X.FNAME != '兴诺总' ", year, year - 1, year - 2, year - 3, year - 4, year - 5, year - 6, tableNameView); if (!string.IsNullOrEmpty(organization)) { sql += string.Format(@" AND A.FSaleOrgId in ({0})", organization); } if (!string.IsNullOrEmpty(fStrartDate)) { sql += string.Format(@" AND A.FDate >= '{0}'", fStrartDate); } if (!string.IsNullOrEmpty(fEndDate)) { sql += string.Format(@" AND A.FDate <= '{0}'", fEndDate); } if (!string.IsNullOrEmpty(fSDate)) { sql += string.Format(@" AND A.FAPPROVEDATE >= '{0}'", fSDate); } if (!string.IsNullOrEmpty(fEDate)) { sql += string.Format(@" AND A.FAPPROVEDATE < DATEADD(DAY, 1, CONVERT(DATE, '{0}'))", fEDate); } sql += string.Format(@";"); sql += string.Format(@"/*dialect*/ Select CASE WHEN ISNULL(X2.FNAME,'') = '' THEN S.区域 ELSE S2.区域 END as 'SBU',--部门SBU CASE WHEN ISNULL(X2.FNAME,'') = '' THEN S.明细区域 ELSE S2.明细区域 END as 'DetailArea',--区域明细 G.GFNAME as 'GName', --职位名称 CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END as 'Salesperson', --销售员 ISNULL(G2.FSTARTDATE,'') as 'RDate',--入司时间 ISNULL(G.FSTARTDATE,'') as 'ZWDate', --担任本职位日期 CASE WHEN ISNULL(G3.FSTARTDATE,'')='' THen null ELSE ISNULL(G3.FSTARTDATE,'') END as 'XSDate',--担任销售日期 ROUND((DATEDIFF(DAY, ISNULL(G2.FSTARTDATE,''), GETDATE()) / 365.0), 1) as 'RZYear',--入职年限 --ISNULL(Y2.FSHARERATE,100) as 'FSHARERATE', --分摊比例 ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0) as 'CliqueBG',--派诺集团-已进行集团业绩调整(含往年订单变更) CASE WHEN A.FSaleOrgId = 100302 THEN ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0) ELSE null END as 'PNBG',--派诺业绩(含往年订单变更) CASE WHEN A.FSaleOrgId = 100303 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'XNBG',--兴诺业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100) CASE WHEN A.FSaleOrgId = 100305 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'WHPNBG',--武汉派诺业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100) CASE WHEN A.FSaleOrgId = 438223 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'TSBG',--碳索业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100) CASE WHEN A.FSaleOrgId = 438224 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'XGPNBG',--香港派诺业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100) CASE WHEN A.FSaleOrgId = 533896 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'HXYLBG',--华夏云联业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100) CASE WHEN YEAR(A.FDATE) = {0} THEN (Select SUM(a1.FALLAMOUNT_LC) as 'FALLAMOUNT_LC' From T_SAL_ORDERENTRY_F a1 JOIN T_SAL_ORDERENTRY a2 on a1.FENTRYID = a2.FENTRYID Where a2.FMANUALROWCLOSE!='1' AND a1.FID = A.FID)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'DNLJYJ',--当年累计业绩 CASE WHEN YEAR(A.FDATE)<{0} THEN ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0) ELSE null END as 'WNBGHTE',--往年变更合同额(派诺+兴诺+武兴派诺) ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) as 'JTHKHJ',--集团回款合计 CASE WHEN A.FSaleOrgId = 100302 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'PNLJHKE',--派诺累计回款额 CASE WHEN A.FSaleOrgId = 100303 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'XNLJHKE',--兴诺累计回款额 CASE WHEN A.FSaleOrgId = 100305 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'WHPNLJHKE',--武汉派诺累计回款额 CASE WHEN A.FSaleOrgId = 438223 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'GDTSLJHKE',--广东碳索累计回款额 CASE WHEN A.FSaleOrgId = 438224 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'XGPNLJHKE',--香港派诺累计回款额 CASE WHEN A.FSaleOrgId = 533896 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'HXYLLJHKE',--华夏云联累计回款额 ISNULL(G4.FPERFORMANCETARGETS,0) as 'XXSMB',--2024年销售目标-新 CASE WHEN ISNULL(G4.FPERFORMANCETARGETS,0) = 0 THEN 0 ELSE ROUND((ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100)/ISNULL(G4.FPERFORMANCETARGETS,0),2) END as 'DBL1',--2024年达成率(不含往年订单变更) ISNULL(G4.FPERFORMANCETARGETS,0) as 'YXSMB',--2024年销售目标-原 CASE WHEN ISNULL(G4.FPERFORMANCETARGETS,0) = 0 THEN 0 ELSE ROUND((ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100)/ISNULL(G4.FPERFORMANCETARGETS,0),2) END as 'DBL2',--2024年达成率(不含往年订单变更) ISNULL(G4.FPERFORMANCETARGETS,0)-ISNULL(G4.FPERFORMANCETARGETS,0) as 'MBTZJE',--目标调整金额 CASE WHEN YEAR(A.FDATE) = {1} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE1',--2024年度销售额 CASE WHEN YEAR(A.FDATE) = {2} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE2',--2023年度销售额 CASE WHEN YEAR(A.FDATE) = {3} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE3',--2022年度销售额 CASE WHEN YEAR(A.FDATE) = {4} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE4',--2021年度销售额 CASE WHEN YEAR(A.FDATE) = {5} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE5',--2020年度销售额 CASE WHEN YEAR(A.FDATE) = {6} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE6'--2019年度销售额 INTO #TABLETMEP2 From T_SAL_ORDER A --销售订单 LEFT JOIN (Select FNumber,FENTRYID From T_BAS_ASSISTANTDATAENTRY Where FID = '670cc977263353') W8 --合同类型 on W8.FENTRYID = A.F_ORDERCATEGORY LEFT JOIN T_SAL_ORDERFIN B on A.FID = B.FID LEFT JOIN V_BD_SALESMAN_L X on X.fid = A.FSALERID LEFT JOIN T_BD_CUSTOMER_L K on K.FCUSTID = A.FCUSTID LEFT JOIN --收款退款单 T_AR_REFUNDBILL C on C.F_VRYF_TEXT_83G = A.F_CONTRACTNUMBER LEFT JOIN T_PerformanceSharing Y on Y.FSOURCEBILLNO = A.FBILLNO LEFT JOIN T_PerformanceSharingEntry Y2 on Y2.FID = Y.FID LEFT JOIN V_BD_SALESMAN_L X2 on Y2.FSALEID = X2.fid LEFT JOIN {7} S on X.FNAME = S.名称 LEFT JOIN {7} S2 on X2.FNAME = S2.名称 LEFT JOIN (Select a1.FNAME,a2.*,a3.FNAME as 'GFNAME' From T_HR_EMPINFO_L a1 JOIN T_BD_STAFFTEMP a2 on a1.FID = a2.FID LEFT JOIN T_ORG_POST_L a3 on a2.FPOSTID = a3.FPOSTID Where a2.FENTRYID in (Select * From V_User_FID_GW)) G on G.FNAME = (CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END) LEFT JOIN --获取入司时间 V_User_FID_GW2 G2 on G2.FNAME = (CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END) LEFT JOIN --获取销售任刚时间 V_User_FID_GW3 G3 on G3.FNAME = (CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END) LEFT JOIN--业绩目标回款表 (Select a2.FPERFORMANCETARGETS,a2.FPAYMENTSUM,a3.FNAME From MBBA_t_Cust100002 a1 JOIn MBBA_t_Cust_Entry100003 a2 on a1.FID = a2.FID JOIN V_BD_SALESMAN_L a3 on a2.FNAME = a3.fid Where a1.FDOCUMENTSTATUS = 'C' AND F_MBBA_Combo_qtr = '{0}') G4 on G4.FNAME = (CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END) LEFT JOIN (Select a2.FBILLNO2,CASE WHEN ISNULL(a2.FALLAMOUNT2,0)>ISNULL(b1.FALLAMOUNT3,0) THEN ISNULL(b1.FALLAMOUNT3,0) ELSE ISNULL(a2.FALLAMOUNT2,0) END as 'FALLAMOUNT' From T_AutoWrireRecord a1 JOIN T_AutoWrireRecordEntry a2 on a1.FID = a2.FID LEFT JOIN (Select a1.FID,SUM(CAST(a2.FALLAMOUNT3 as DECIMAL(10,2))) as 'FALLAMOUNT3' From T_AutoWrireRecord a1 JOIN T_AutoWrireRecordEntry2 a2 on a1.FID = a2.FID Where a1.FDOCUMENTSTATUS = 'C' AND Year(a2.FDATE3) = '{0}' GROUP BY a1.FID) b1 on b1.FID = a1.FID Where a1.FDOCUMENTSTATUS = 'C') H on H.FBILLNO2 = A.FBILLNO Where A.FDOCUMENTSTATUS = 'C' AND W8.FNumber != 'Z' --AND ISNULL(X.FNAME,'') != '' AND A.FSALEORGID != 100302 AND A.FMANUALCLOSE != '1'" , year, year - 1, year - 2, year - 3, year - 4, year - 5, year - 6, tableNameView); if (!string.IsNullOrEmpty(organization)) { sql += string.Format(@" AND A.FSaleOrgId in ({0})", organization); } if (!string.IsNullOrEmpty(fStrartDate)) { sql += string.Format(@" AND A.FDate >= '{0}'", fStrartDate); } if (!string.IsNullOrEmpty(fEndDate)) { sql += string.Format(@" AND A.FDate <= '{0}'", fEndDate); } if (!string.IsNullOrEmpty(fSDate)) { sql += string.Format(@" AND A.FAPPROVEDATE >= '{0}'", fSDate); } if (!string.IsNullOrEmpty(fEDate)) { sql += string.Format(@" AND A.FAPPROVEDATE < DATEADD(DAY, 1, CONVERT(DATE, '{0}'))", fEDate); } sql += string.Format(@";"); sql += string.Format(@"/*dialect*/Select * INTO #TABLETMEP3 From #TABLETMEP1 UNION ALL (Select * From #TABLETMEP2)"); sql += string.Format(@"/*dialect*/ Select SBU,DetailArea,GName,Salesperson,RDate,ZWDate,XSDate,RZYear,SUM(CliqueBG)/10000'CliqueBG',SUM(PNBG)/10000'PNBG',SUM(XNBG)/10000'XNBG', SUM(WHPNBG)/10000'WHPNBG',SUM(TSBG)/10000'TSBG',SUM(XGPNBG)/10000'XGPNBG',SUM(HXYLBG)/10000'HXYLBG',SUM(DNLJYJ)/10000'DNLJYJ',SUM(WNBGHTE)/10000'WNBGHTE',SUM(JTHKHJ)/10000'JTHKHJ',SUM(PNLJHKE)/10000'PNLJHKE', SUM(XNLJHKE)/10000'XNLJHKE',SUM(WHPNLJHKE)/10000'WHPNLJHKE',SUM(GDTSLJHKE)/10000'GDTSLJHKE',SUM(XGPNLJHKE)/10000'XGPNLJHKE',SUM(HXYLLJHKE)/10000'HXYLLJHKE',SUM(XXSMB)/10000'XXSMB',SUM(DBL1)/10000'DBL1', SUM(YXSMB)/10000'YXSMB',SUM(DBL2)/10000'DBL2',SUM(MBTZJE)/10000'MBTZJE',SUM(NDXSE1)/10000'NDXSE1',SUM(NDXSE2)/10000'NDXSE2',SUM(NDXSE3)/10000'NDXSE3',SUM(NDXSE4)/10000'NDXSE4',SUM(NDXSE5)/10000'NDXSE5',SUM(NDXSE6)/10000'NDXSE6' INTO #TABLETMEP4 From #TABLETMEP3 GROUP BY SBU,DetailArea,GName,Salesperson,RDate,ZWDate,XSDate,RZYear;"); sql += string.Format(@"/*dialect*/ SELECT *, ROW_NUMBER() OVER (ORDER BY Sort) AS FID, ROW_NUMBER() OVER (ORDER BY Sort) AS FIDENTITYID INTO {0} FROM(SELECT *,1 Sort FROM #TABLETMEP4 UNION ALL SELECT '总合计:','','','',null,null,null,null, SUM(CliqueBG)'CliqueBG',SUM(PNBG)'PNBG',SUM(XNBG)'XNBG', SUM(WHPNBG)'WHPNBG',SUM(TSBG)'TSBG',SUM(XGPNBG)'XGPNBG',SUM(HXYLBG)'HXYLBG',SUM(DNLJYJ)'DNLJYJ',SUM(WNBGHTE)'WNBGHTE',SUM(JTHKHJ)'JTHKHJ',SUM(PNLJHKE)'PNLJHKE', SUM(XNLJHKE)'XNLJHKE',SUM(WHPNLJHKE)'WHPNLJHKE',SUM(GDTSLJHKE)'GDTSLJHKE',SUM(XGPNLJHKE)'XGPNLJHKE',SUM(HXYLLJHKE)'HXYLLJHKE',SUM(XXSMB)'XXSMB',SUM(DBL1)'DBL1', SUM(YXSMB)'YXSMB',SUM(DBL2)'DBL2',SUM(MBTZJE)'MBTZJE',SUM(NDXSE1)'NDXSE1',SUM(NDXSE2)'NDXSE2',SUM(NDXSE3)'NDXSE3',SUM(NDXSE4)'NDXSE4',SUM(NDXSE5)'NDXSE5',SUM(NDXSE6)'NDXSE6', 0 Sort FROM #TABLETMEP4) t1 order by Sort;", tableName); Loghelp.Log("BuilderReportSqlAndTempTable"); Loghelp.Log(sql); DBUtils.Execute(this.Context, sql); } /// /// 获取前端组件转换过滤条件 /// /// /// //public override ReportTitles GetReportTitles(IRptParams filter) //{ // ReportTitles reportTitles = new ReportTitles(); // DynamicObject customFilter = filter.FilterParameter.CustomFilter; // if (customFilter != null) // { // // 年份 // string fDate = customFilter["F_Date"]?.ToString(); // // 开始日期 // string fStrartDate = customFilter["FStrartDate"]?.ToString(); // // 结束日期 // string fEndDate = customFilter["FEndDate"]?.ToString(); // // 组织 // var organizationList = (customFilter["FZuZhi"] as DynamicObjectCollection)?.Select(n => (n["FZuZhi"] as DynamicObject)["Name"].ToString()).ToList(); // //这里是报表页面的标识 // reportTitles.AddTitle("FDate", fDate == null ? "" : Convert.ToDateTime(fDate).ToString("yyyy-MM-dd")); // reportTitles.AddTitle("FStrartDate", string.IsNullOrWhiteSpace(fStrartDate) ? "" : Convert.ToDateTime(fStrartDate).ToString("yyyy-MM-dd")); // reportTitles.AddTitle("FEndDate", string.IsNullOrWhiteSpace(fEndDate) ? "" : Convert.ToDateTime(fEndDate).ToString("yyyy-MM-dd")); // reportTitles.AddTitle("FZuZhi", organizationList == null ? "" : string.Join(",", organizationList)); // } // return reportTitles; //} } }