添加项目文件。

This commit is contained in:
李琼海 2025-04-15 11:22:03 +08:00
parent fe9c490ef0
commit 6ef4560649
8 changed files with 863 additions and 0 deletions

View File

@ -0,0 +1,68 @@
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.List.PlugIn.Args;
using Kingdee.BOS.Core.Util;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TenderItem.Induct
{
/// <summary>
/// 【单据插件】填充中标项目分类
/// </summary>
[Description("【单据插件】填充中标项目分类"), HotUpdate]
public class FillComboFieldPlugIn: AbstractBillPlugIn
{
public override void DataChanged(DataChangedEventArgs e)
{
base.DataChanged(e);
//this.View.ShowMessage("触发");
if (e.Field.Key == "F_CYG_BidSerial")
{
string newValue = Convert.ToString(e.NewValue);
string sql1 = string.Format(@"/*dialect*/
Select
FBIDPROJECTTYPE
From
MBBA_t_Cust100005
Where FTENDER = '{0}'", newValue);
var NameList = DBUtils.ExecuteDynamicObject(Context, sql1);
string Name = "";
if (NameList.Count != 0)
{
Name = NameList[0]["FBIDPROJECTTYPE"].ToString();
}
string sql2 = string.Format(@"/*dialect*/
SELECT
A.FMASTERID
FROM
T_BAS_ASSISTANTDATAENTRY A
JOIN
T_BAS_ASSISTANTDATAENTRY_L B
on A.FENTRYID = B.FENTRYID
Where B.FLOCALEID = 2052
AND A.FID = '6716fb25f5fc9d'
AND B.FDataValue = '{0}'", Name);
var NumberList = DBUtils.ExecuteDynamicObject(Context, sql2);
var Number = "";
if (NumberList.Count != 0)
{
Number = NumberList[0]["FMASTERID"].ToString();
}
this.View.Model.SetValue("F_CYG_WinningProject", Number);
}
}
}
}

View File

@ -0,0 +1,100 @@
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.BusinessFlow;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace TenderItem.Induct
{
/// <summary>
/// 【表单插件】导入前事件
/// 查询Excel中的标书编号
/// 删除数据库中存在对应标书编号的数据
/// 实现重复标书覆盖效果
/// </summary>
[Description("【表单插件】导入前事件"), HotUpdate]
public class FormOperationServicePlugIn : AbstractListPlugIn
{
/// <summary>
/// 导入之前方法
/// </summary>
/// <param name="e"></param>
public override void BeforeImportData(BeforeImportDataArgs e)
{
base.BeforeImportData(e);
string FTenderList = "";
var dataTable = e.DataSource.Tables[0];
//循环找到所有标书编号
for (int i = 0; i < dataTable.Rows.Count; i++)
{
var FTender = dataTable.Rows[i]["FTender"];
var FBidProjectType = dataTable.Rows[i]["FBidProjectType"];
string sql2 = string.Format(@"/*dialect*/
SELECT
A.FMASTERID
FROM
T_BAS_ASSISTANTDATAENTRY A
JOIN
T_BAS_ASSISTANTDATAENTRY_L B
on A.FENTRYID = B.FENTRYID
Where B.FLOCALEID = 2052
AND A.FID = '6716fb25f5fc9d'
AND B.FDataValue = '{0}'", FBidProjectType);
var FBidProjectTypeList = DBUtils.ExecuteDynamicObject(Context, sql2);
var FBidProjectTypeId = "";
if (FBidProjectTypeList.Count != 0)
{
FBidProjectTypeId = FBidProjectTypeList[0]["FMASTERID"].ToString();
}
string sql = string.Format(@"Update
T_CRM_CONTRACT
Set F_CYG_WinningProject = '{1}'
Where F_CYG_BidSerial = '{0}'", FTender, FBidProjectTypeId);
DBUtils.ExecuteDynamicObject(Context, sql);
decimal n1 = 0;
decimal n2 = 0;
string nn1 = dataTable.Rows[i]["FWinningBid"].ToString();
string nn2 = dataTable.Rows[i]["FFrameVolume"].ToString();
if(!string.IsNullOrEmpty(nn1))
{
n1 = Convert.ToDecimal(nn1);
}
if(!string.IsNullOrEmpty(nn2))
{
n2 = Convert.ToDecimal(nn2);
}
dataTable.Rows[i]["FWinningBidSubtotal"] = n1 + n2;
FTenderList += "'" + FTender + "',";
}
FTenderList += "'0'";
string sqlDelete = string.Format(@"Delete MBBA_t_Cust100005 where FTender in ({0})", FTenderList);
DBUtils.ExecuteDynamicObject(this.Context, sqlDelete);
//this.View.ShowErrMessage("引入数据操作(测试是否进入插件!!!)");
}
}
}

View File

@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("TenderItem.Induct")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("TenderItem.Induct")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("b19f9275-cf4f-45ad-a0b1-a138317ddf6b")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,36 @@
using Kingdee.BOS.Core.Report.PlugIn;
using Kingdee.BOS.Core.Report.PlugIn.Args;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TenderItem.Induct
{
[Description("【报表表单插件】投标项目报表"), HotUpdate]
public class TenderFormServicePlugIn: AbstractSysReportPlugIn
{
public override void FormatCellValue(FormatCellValueArgs args)
{
// 格式化日期
base.FormatCellValue(args);
if (args.Header.ColType == Kingdee.BOS.SqlStorageType.SqlDatetime)
{
DateTime value = Convert.ToDateTime(args.FormateValue);
string afterValue = value.ToString("yyyy-MM-dd");
args.FormateValue = afterValue;
}
// 格式化金额 汇率不格式化
if (args.Header.ColType == Kingdee.BOS.SqlStorageType.SqlDecimal)
{
decimal value = decimal.Parse(args.FormateValue);
// 千分位
string afterValue = value.ToString("N");
args.FormateValue = afterValue;
}
}
}
}

View File

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B19F9275-CF4F-45AD-A0B1-A138317DDF6B}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>TenderItem.Induct</RootNamespace>
<AssemblyName>TenderItem.Induct</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Kingdee.BOS">
<HintPath>..\..\AccountingVoucher\AccountingVoucher.BOS\bin\Debug\Kingdee.BOS.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.App">
<HintPath>..\..\AccountingVoucher\AccountingVoucher.BOS\bin\Debug\Kingdee.BOS.App.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.Contracts">
<HintPath>..\..\AccountingVoucher\AccountingVoucher.BOS\bin\Debug\Kingdee.BOS.Contracts.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.Core">
<HintPath>..\..\AccountingVoucher\AccountingVoucher.BOS\bin\Debug\Kingdee.BOS.Core.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.DataEntity">
<HintPath>..\..\AccountingVoucher\AccountingVoucher.BOS\bin\Debug\Kingdee.BOS.DataEntity.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.Web">
<HintPath>..\..\AccountingVoucher\AccountingVoucher.BOS\bin\Debug\Kingdee.BOS.Web.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.Web.HTML">
<HintPath>..\..\AccountingVoucher\AccountingVoucher.BOS\bin\Debug\Kingdee.BOS.Web.HTML.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.Web.HTML.Core">
<HintPath>..\..\AccountingVoucher\AccountingVoucher.BOS\bin\Debug\Kingdee.BOS.Web.HTML.Core.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.MFG.PLN.Business.PlugIn">
<HintPath>..\..\AccountingVoucher\AccountingVoucher.BOS\bin\Debug\Kingdee.K3.MFG.PLN.Business.PlugIn.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="FillComboFieldPlugIn.cs" />
<Compile Include="TenderFormServicePlugIn.cs" />
<Compile Include="TenderProjectReportPlugin2.cs" />
<Compile Include="TenderProjectReportPlugin.cs" />
<Compile Include="FormOperationServicePlugIn.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>copy $(TargetPath) "F:\金蝶\WebSite\Bin\$(TargetFileName)"</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,316 @@
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Contracts.Report;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Orm.Cvp;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using Kingdee.BOS;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TenderItem.Induct
{
/// <summary>
/// 【列表插件】投标项目数据简单报表
/// </summary>
[Description("【列表插件】投标项目数据报表"), HotUpdate]
public class TenderProjectReportPlugin : SysReportBaseService
{
/// <summary>
/// 初始化
/// </summary>
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<DecimalControlField>
{
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)
{
base.GetReportHeaders(filter);
ReportHeader header = new ReportHeader();
if (this.Context.UserLocale.LCID == 2052)
{
header.AddChild("Year", new LocaleValue("年份"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderNumber", new LocaleValue("招标编号"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderMain", new LocaleValue("标书主编号"), SqlStorageType.Sqlvarchar);
header.AddChild("Tender", new LocaleValue("标书编号"), SqlStorageType.Sqlvarchar);
header.AddChild("ProjectName", new LocaleValue("项目名称"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderingUnit", new LocaleValue("招标单位"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProjectType", new LocaleValue("中标项目分类"), SqlStorageType.Sqlvarchar);
header.AddChild("ProvincesHead", new LocaleValue("省区负责人"), SqlStorageType.Sqlvarchar);
header.AddChild("Authorizer", new LocaleValue("授权人"), SqlStorageType.Sqlvarchar);
header.AddChild("Region", new LocaleValue("大区"), SqlStorageType.Sqlvarchar);
header.AddChild("Provinces", new LocaleValue("省区"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProductsType", new LocaleValue("中标产品分类"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProducts", new LocaleValue("中标产品"), SqlStorageType.Sqlvarchar);
header.AddChild("BidPackageNumber", new LocaleValue("中标包号"), SqlStorageType.Sqlvarchar);
header.AddChild("WinningBid", new LocaleValue("中标额(万元)"), SqlStorageType.SqlDecimal);
header.AddChild("FrameVolume", new LocaleValue("框架标预估体量"), SqlStorageType.SqlDecimal);
header.AddChild("WinningBidSubtotal", new LocaleValue("中标额小计"), SqlStorageType.SqlDecimal);
header.AddChild("BidsDate", new LocaleValue("开标时间"), SqlStorageType.SqlDatetime);
header.AddChild("InstallationIllustrate", new LocaleValue("安装说明"), SqlStorageType.Sqlvarchar);
header.AddChild("Remark", new LocaleValue("备注"), SqlStorageType.Sqlvarchar);
header.AddChild("ContractOriginalReturns", new LocaleValue("合同原件返回额"), SqlStorageType.SqlDecimal);
header.AddChild("AmountOrder", new LocaleValue("下单金额"), SqlStorageType.SqlDecimal);
header.AddChild("AmountOriginalOrder", new LocaleValue("下单无原件金额"), SqlStorageType.SqlDecimal);
header.AddChild("ContractAmountOrder", new LocaleValue("合同返回未下单金额"), SqlStorageType.SqlDecimal);
header.AddChild("BidderNotAgency", new LocaleValue("中标未签约且未下单(万元)"), SqlStorageType.SqlDecimal);
header.AddChild("Sales", new LocaleValue("销售额"), SqlStorageType.SqlDecimal);
header.AddChild("InvoicedAmount", new LocaleValue("已开票额"), SqlStorageType.SqlDecimal);
header.AddChild("UnbilledAmount", new LocaleValue("未开票额"), SqlStorageType.SqlDecimal);
header.AddChild("ProjectSpecialIllustrate", new LocaleValue("项目特殊情况说明"), SqlStorageType.Sqlvarchar);
header.AddChild("Cost", new LocaleValue("成本"), SqlStorageType.SqlDecimal);
}
else
{
header.AddChild("Year", new LocaleValue("Year"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderNumber", new LocaleValue("TenderNumber"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderMain", new LocaleValue("TenderMain"), SqlStorageType.Sqlvarchar);
header.AddChild("Tender", new LocaleValue("Tender"), SqlStorageType.Sqlvarchar);
header.AddChild("ProjectName", new LocaleValue("ProjectName"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderingUnit", new LocaleValue("TenderingUnit"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProjectType", new LocaleValue("BidProjectType"), SqlStorageType.Sqlvarchar);
header.AddChild("ProvincesHead", new LocaleValue("ProvincesHead"), SqlStorageType.Sqlvarchar);
header.AddChild("Authorizer", new LocaleValue("Authorizer"), SqlStorageType.Sqlvarchar);
header.AddChild("Region", new LocaleValue("Region"), SqlStorageType.Sqlvarchar);
header.AddChild("Provinces", new LocaleValue("Provinces"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProductsType", new LocaleValue("BidProductsType"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProducts", new LocaleValue("BidProducts"), SqlStorageType.Sqlvarchar);
header.AddChild("BidPackageNumber", new LocaleValue("BidPackageNumber"), SqlStorageType.Sqlvarchar);
header.AddChild("WinningBid", new LocaleValue("WinningBid"), SqlStorageType.SqlDecimal);
header.AddChild("FrameVolume", new LocaleValue("FrameVolume"), SqlStorageType.SqlDecimal);
header.AddChild("WinningBidSubtotal", new LocaleValue("WinningBidSubtotal"), SqlStorageType.SqlDecimal);
header.AddChild("BidsDate", new LocaleValue("InstallationIllustrate"), SqlStorageType.SqlDatetime);
header.AddChild("InstallationIllustrate", new LocaleValue("InstallationIllustrate"), SqlStorageType.Sqlvarchar);
header.AddChild("Remark", new LocaleValue("Remark"), SqlStorageType.Sqlvarchar);
header.AddChild("ContractOriginalReturns", new LocaleValue("ContractOriginalReturns"), SqlStorageType.SqlDecimal);
header.AddChild("AmountOrder", new LocaleValue("AmountOrder"), SqlStorageType.SqlDecimal);
header.AddChild("AmountOriginalOrder", new LocaleValue("AmountOriginalOrder"), SqlStorageType.SqlDecimal);
header.AddChild("ContractAmountOrder", new LocaleValue("ContractAmountOrder"), SqlStorageType.SqlDecimal);
header.AddChild("BidderNotAgency", new LocaleValue("BidderNotAgency"), SqlStorageType.SqlDecimal);
header.AddChild("Sales", new LocaleValue("Sales"), SqlStorageType.SqlDecimal);
header.AddChild("InvoicedAmount", new LocaleValue("InvoicedAmount"), SqlStorageType.SqlDecimal);
header.AddChild("UnbilledAmount", new LocaleValue("UnbilledAmount"), SqlStorageType.SqlDecimal);
header.AddChild("ProjectSpecialIllustrate", new LocaleValue("ProjectSpecialIllustrate"), SqlStorageType.Sqlvarchar);
header.AddChild("Cost", new LocaleValue("Cost"), SqlStorageType.SqlDecimal);
}
foreach (var item in header.GetChilds())
{
item.Width = 150;
}
return header;
}
public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
{
DynamicObject customFilter = filter.FilterParameter.CustomFilter;
// 年份
string fDate = customFilter["FDate"]?.ToString();
// 标书编号
string fTender = customFilter["FTender"]?.ToString();
base.BuilderReportSqlAndTempTable(filter, tableName);
string sql = string.Format(@"/*dialect*/
Select
A.FYEAR as [Year],
A.FTenderNumber as TenderNumber,
A.FTenderMain as TenderMain,
A.FTender as Tender,
A.FProjectName as ProjectName,
A.FTenderingUnit as TenderingUnit,
A.FBidProjectType as BidProjectType,
A.FProvincesHead as ProvincesHead,
A.FAuthorizer as Authorizer,
A.FRegion as Region,
A.FProvinces as Provinces,
A.FBidProductsType as BidProductsType,
A.FBidProducts as BidProducts,
A.FBidPackageNumber as BidPackageNumber,
A.FWinningBid as WinningBid,
A.FFrameVolume as FrameVolume,
A.FWinningBidSubtotal as WinningBidSubtotal,
A.FBidsDate as BidsDate,
A.FInstallationIllustrate as InstallationIllustrate,
A.FRemark as Remark,
CASE WHEN ISNULL(E.F_CYG_Paperreturndate,'')='' THEN 0
ELSE (Select FCONTRACTAMOUNT_LC From T_CRM_CONTRACTFIN WHere FId = E.FID)
END as ContractOriginalReturns, --
ISNULL((Select
Sum(q.FAllAmount_LC)
From T_SAL_ORDERENTRY_F q
JOIN
T_SAL_ORDERENTRY w
on q.FID = w.FID
Where q.FID = B.FID
AND w.F_CYG_CheckBalance1 != 1),0) as AmountOrder, --
CASE WHEN ISNULL(E.F_CYG_Paperreturndate,'')='' THEN ISNULL((Select FCONTRACTAMOUNT_LC From T_CRM_CONTRACTFIN WHere FId = E.FID),0)
ELSE 0
END as AmountOriginalOrder, --
((CASE WHEN ISNULL(E.F_CYG_PAPERRETURNDATE,'')='' THEN 0
ELSE (Select FCONTRACTAMOUNT_LC From T_CRM_CONTRACTFIN WHere FId = E.FID)
END)-(ISNULL((Select
Sum(q.FAllAmount_LC)
From T_SAL_ORDERENTRY_F q
JOIN
T_SAL_ORDERENTRY w
on q.FID = w.FID
Where q.FID = B.FID
AND w.F_CYG_CheckBalance1 != 1),0))) as ContractAmountOrder, --
((A.FWinningBidSubtotal)-(CASE WHEN ISNULL(E.F_CYG_Paperreturndate,'')='' THEN 0
ELSE (Select FCONTRACTAMOUNT_LC From T_CRM_CONTRACTFIN WHere FId = E.FID)
END)-(CASE WHEN ISNULL(E.F_CYG_Paperreturndate,'')='' THEN ISNULL((Select FCONTRACTAMOUNT_LC From T_CRM_CONTRACTFIN WHere FId = E.FID),0)
ELSE 0
END)) as BidderNotAgency, --
CASE WHEN D.FID in (Select Ae.FID From
(Select WW.FID,SUM(EE.FMustqty) as 'FMustqty',Sum(EE.FRealQty) as 'FRealQty'
From
(Select W.FSID,E.FID
From T_AR_RECEIVABLEENTRY_LK W
--Where FSTABLENAME = 'T_SAL_RETURNSTOCKENTRY'
JOIN
T_AR_RECEIVABLEENTRY E
on W.FENTRYID = E.FENTRYID AND W.FSTABLENAME = 'T_SAL_RETURNSTOCKENTRY') WW
JOIN
T_SAL_RETURNSTOCKENTRY EE
on WW.FSID = EE.FENTRYID
Group by WW.FID) Ae
Where Ae.FMustqty=Ae.FRealQty)
THEN 0
ELSE
ISNULL((Select SUM(FALLAMOUNT) From T_AR_RECEIVABLEENTRY Where FID = D.FID),0)
END as Sales,--
ISNull((Select SUM(FOPENAMOUNTFOR) From T_AR_RECEIVABLEENTRY Where FID = D.FID),0) as InvoicedAmount, --
((CASE WHEN D.FID in (Select Ae.FID From
(Select WW.FID,SUM(EE.FMustqty) as 'FMustqty',Sum(EE.FRealQty) as 'FRealQty'
From
(Select W.FSID,E.FID
From T_AR_RECEIVABLEENTRY_LK W
--Where FSTABLENAME = 'T_SAL_RETURNSTOCKENTRY'
JOIN
T_AR_RECEIVABLEENTRY E
on W.FENTRYID = E.FENTRYID AND W.FSTABLENAME = 'T_SAL_RETURNSTOCKENTRY') WW
JOIN
T_SAL_RETURNSTOCKENTRY EE
on WW.FSID = EE.FENTRYID
Group by WW.FID) Ae
Where Ae.FMustqty=Ae.FRealQty)
THEN 0
ELSE
ISNULL((Select SUM(FALLAMOUNT) From T_AR_RECEIVABLEENTRY Where FID = D.FID),0)
END)
-(ISNull((Select SUM(FOPENAMOUNTFOR) From T_AR_RECEIVABLEENTRY Where FID = D.FID),0))) as UnbilledAmount, --
A.FProjectSpecialIllustrate as ProjectSpecialIllustrate, --
0 as Cost --
Into #TempTable1 ");
sql += string.Format(@"From MBBA_t_Cust100005 A --投标项目表
Left JOIN --
T_SAL_ORDER B
on A.FTender = B.FTENDERNO
AND B.FBusinessType != 'RETURNSO'
AND B.F_CYG_CheckBalance != 1
AND B.FDocumentStatus = 'C'
AND B.FCloseStatus = 'A'
AND B.FCancelStatus = 'A'
Left JOIN --
T_SAL_OUTSTOCK C
on A.FTENDER = C.FTENDERNO
AND C.FDocumentStatus = 'C'
AND C.FCancelStatus = 'A'
Left JOIN --
T_AR_RECEIVABLE D
on A.FTENDER = D.FTENDERNO
AND D.FDocumentStatus = 'C'
AND D.FWRITTENOFFSTATUS != 'C' --
AND D.FCancelStatus = 'A'
Left JOIN --
T_CRM_CONTRACT E
on E.F_CYG_BidSerial = A.FTENDER
AND E.FDocumentStatus = 'C'
AND E.FCloseStatus = 'A'
AND E.FCancelStatus = 'A'
Where 1=1");
//过滤条件
if (!string.IsNullOrEmpty(fDate))
{
string dateString = fDate.Split('-')[0];
sql += string.Format(@" AND A.FYEAR = {0}", dateString);
}
if (!string.IsNullOrEmpty(fTender))
{
sql += string.Format(@" AND A.FTender = '{0}'", fTender);
}
sql += string.Format(@";");
sql += string.Format(@"/*dialect*/
Select
ROW_NUMBER() OVER (ORDER BY Year) AS FID,
ROW_NUMBER() OVER (ORDER BY Year) AS FIDENTITYID,
*
into {0}
From #TempTable1", tableName);
DBUtils.Execute(this.Context, sql);
}
/// <summary>
/// 获取前端组件转换过滤条件
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
public override ReportTitles GetReportTitles(IRptParams filter)
{
ReportTitles reportTitles = new ReportTitles();
DynamicObject customFilter = filter.FilterParameter.CustomFilter;
if (customFilter != null)
{
// 截至日期
string fDate = customFilter["FDate"]?.ToString();
// 标书编号
string fTender = customFilter["FTender"]?.ToString();
//这里是报表页面的标识
reportTitles.AddTitle("FTender", fTender == null ? "" : fTender);
reportTitles.AddTitle("FDate", fDate == null ? "" : Convert.ToDateTime(fDate).ToString("yyyy-MM-dd"));
}
return reportTitles;
}
}
}

View File

@ -0,0 +1,203 @@
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Contracts.Report;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Orm.Cvp;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using Kingdee.BOS;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TenderItem.Induct
{
/// <summary>
/// 【列表插件】投标项目数据简单报表2
/// </summary>
[Description("【列表插件】投标项目数据报表2"), HotUpdate]
public class TenderProjectReportPlugin2 : SysReportBaseService
{
/// <summary>
/// 初始化
/// </summary>
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<DecimalControlField>
{
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)
{
base.GetReportHeaders(filter);
ReportHeader header = new ReportHeader();
if (this.Context.UserLocale.LCID == 2052)
{
header.AddChild("Year", new LocaleValue("年份"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderNumber", new LocaleValue("招标编号"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderMain", new LocaleValue("标书主编号"), SqlStorageType.Sqlvarchar);
header.AddChild("Tender", new LocaleValue("标书编号"), SqlStorageType.Sqlvarchar);
header.AddChild("ProjectName", new LocaleValue("项目名称"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderingUnit", new LocaleValue("招标单位"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProjectType", new LocaleValue("中标项目分类"), SqlStorageType.Sqlvarchar);
header.AddChild("ProvincesHead", new LocaleValue("省区负责人"), SqlStorageType.Sqlvarchar);
header.AddChild("Authorizer", new LocaleValue("授权人"), SqlStorageType.Sqlvarchar);
header.AddChild("Region", new LocaleValue("大区"), SqlStorageType.Sqlvarchar);
header.AddChild("Provinces", new LocaleValue("省区"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProductsType", new LocaleValue("中标产品分类"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProducts", new LocaleValue("中标产品"), SqlStorageType.Sqlvarchar);
header.AddChild("BidPackageNumber", new LocaleValue("中标包号"), SqlStorageType.Sqlvarchar);
header.AddChild("WinningBid", new LocaleValue("中标额(万元)"), SqlStorageType.SqlDecimal);
header.AddChild("FrameVolume", new LocaleValue("框架标预估体量"), SqlStorageType.SqlDecimal);
header.AddChild("WinningBidSubtotal", new LocaleValue("中标额小计"), SqlStorageType.SqlDecimal);
header.AddChild("BidsDate", new LocaleValue("开标时间"), SqlStorageType.SqlDatetime);
header.AddChild("InstallationIllustrate", new LocaleValue("安装说明"), SqlStorageType.Sqlvarchar);
header.AddChild("Remark", new LocaleValue("备注"), SqlStorageType.Sqlvarchar);
header.AddChild("ContractOriginalReturns", new LocaleValue("合同原件返回额"), SqlStorageType.SqlDecimal);
header.AddChild("AmountOrder", new LocaleValue("下单金额"), SqlStorageType.SqlDecimal);
header.AddChild("AmountOriginalOrder", new LocaleValue("下单无原件金额"), SqlStorageType.SqlDecimal);
header.AddChild("ContractAmountOrder", new LocaleValue("合同返回未下单金额"), SqlStorageType.SqlDecimal);
header.AddChild("BidderNotAgency", new LocaleValue("中标未签约且未下单(万元)"), SqlStorageType.SqlDecimal);
header.AddChild("Sales", new LocaleValue("销售额"), SqlStorageType.SqlDecimal);
header.AddChild("InvoicedAmount", new LocaleValue("已开票额"), SqlStorageType.SqlDecimal);
header.AddChild("UnbilledAmount", new LocaleValue("未开票额"), SqlStorageType.SqlDecimal);
header.AddChild("ProjectSpecialIllustrate", new LocaleValue("项目特殊情况说明"), SqlStorageType.Sqlvarchar);
header.AddChild("Cost", new LocaleValue("成本"), SqlStorageType.SqlDecimal);
}
else
{
header.AddChild("Year", new LocaleValue("Year"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderNumber", new LocaleValue("TenderNumber"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderMain", new LocaleValue("TenderMain"), SqlStorageType.Sqlvarchar);
header.AddChild("Tender", new LocaleValue("Tender"), SqlStorageType.Sqlvarchar);
header.AddChild("ProjectName", new LocaleValue("ProjectName"), SqlStorageType.Sqlvarchar);
header.AddChild("TenderingUnit", new LocaleValue("TenderingUnit"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProjectType", new LocaleValue("BidProjectType"), SqlStorageType.Sqlvarchar);
header.AddChild("ProvincesHead", new LocaleValue("ProvincesHead"), SqlStorageType.Sqlvarchar);
header.AddChild("Authorizer", new LocaleValue("Authorizer"), SqlStorageType.Sqlvarchar);
header.AddChild("Region", new LocaleValue("Region"), SqlStorageType.Sqlvarchar);
header.AddChild("Provinces", new LocaleValue("Provinces"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProductsType", new LocaleValue("BidProductsType"), SqlStorageType.Sqlvarchar);
header.AddChild("BidProducts", new LocaleValue("BidProducts"), SqlStorageType.Sqlvarchar);
header.AddChild("BidPackageNumber", new LocaleValue("BidPackageNumber"), SqlStorageType.Sqlvarchar);
header.AddChild("WinningBid", new LocaleValue("WinningBid"), SqlStorageType.SqlDecimal);
header.AddChild("FrameVolume", new LocaleValue("FrameVolume"), SqlStorageType.SqlDecimal);
header.AddChild("WinningBidSubtotal", new LocaleValue("WinningBidSubtotal"), SqlStorageType.SqlDecimal);
header.AddChild("BidsDate", new LocaleValue("InstallationIllustrate"), SqlStorageType.SqlDatetime);
header.AddChild("InstallationIllustrate", new LocaleValue("InstallationIllustrate"), SqlStorageType.Sqlvarchar);
header.AddChild("Remark", new LocaleValue("Remark"), SqlStorageType.Sqlvarchar);
header.AddChild("ContractOriginalReturns", new LocaleValue("ContractOriginalReturns"), SqlStorageType.SqlDecimal);
header.AddChild("AmountOrder", new LocaleValue("AmountOrder"), SqlStorageType.SqlDecimal);
header.AddChild("AmountOriginalOrder", new LocaleValue("AmountOriginalOrder"), SqlStorageType.SqlDecimal);
header.AddChild("ContractAmountOrder", new LocaleValue("ContractAmountOrder"), SqlStorageType.SqlDecimal);
header.AddChild("BidderNotAgency", new LocaleValue("BidderNotAgency"), SqlStorageType.SqlDecimal);
header.AddChild("Sales", new LocaleValue("Sales"), SqlStorageType.SqlDecimal);
header.AddChild("InvoicedAmount", new LocaleValue("InvoicedAmount"), SqlStorageType.SqlDecimal);
header.AddChild("UnbilledAmount", new LocaleValue("UnbilledAmount"), SqlStorageType.SqlDecimal);
header.AddChild("ProjectSpecialIllustrate", new LocaleValue("ProjectSpecialIllustrate"), SqlStorageType.Sqlvarchar);
header.AddChild("Cost", new LocaleValue("Cost"), SqlStorageType.SqlDecimal);
}
foreach (var item in header.GetChilds())
{
item.Width = 150;
}
return header;
}
public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
{
DynamicObject customFilter = filter.FilterParameter.CustomFilter;
// 年份
string fDate = customFilter["FDate"]?.ToString();
// 标书编号
string fTender = customFilter["FTender"]?.ToString();//FTender
base.BuilderReportSqlAndTempTable(filter, tableName);
string sql = string.Format(@"/*dialect*/
SELECT
*
INTO #TempTable1
FROM
T_DB_TESTVIEW
WHERE 1=1");
//过滤条件
if (!string.IsNullOrEmpty(fDate))
{
string dateString = fDate.Split('-')[0];
sql += string.Format(@" AND YEAR = {0}", dateString);
}
if (!string.IsNullOrEmpty(fTender))
{
sql += string.Format(@" AND Tender = '{0}'", fTender);
}
sql += string.Format(@";");
sql += string.Format(@"/*dialect*/
Select
ROW_NUMBER() OVER (ORDER BY Year) AS FID,
ROW_NUMBER() OVER (ORDER BY Year) AS FIDENTITYID,
*
INTO {0}
From #TempTable1", tableName);
DBUtils.Execute(this.Context, sql);
}
/// <summary>
/// 获取前端组件转换过滤条件
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
public override ReportTitles GetReportTitles(IRptParams filter)
{
ReportTitles reportTitles = new ReportTitles();
DynamicObject customFilter = filter.FilterParameter.CustomFilter;
if (customFilter != null)
{
// 截至日期
string fDate = customFilter["FDate"]?.ToString();
// 标书编号
string fTender = customFilter["FTender"]?.ToString();
//这里是报表页面的标识
reportTitles.AddTitle("FTender", fTender == null ? "" : fTender);
reportTitles.AddTitle("FDate", fDate == null ? "" : Convert.ToDateTime(fDate).ToString("yyyy-MM-dd"));
}
return reportTitles;
}
}
}

25
TenderItem.sln Normal file
View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.11.35327.3
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TenderItem.Induct", "TenderItem.Induct\TenderItem.Induct.csproj", "{B19F9275-CF4F-45AD-A0B1-A138317DDF6B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B19F9275-CF4F-45AD-A0B1-A138317DDF6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B19F9275-CF4F-45AD-A0B1-A138317DDF6B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B19F9275-CF4F-45AD-A0B1-A138317DDF6B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B19F9275-CF4F-45AD-A0B1-A138317DDF6B}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {62FD1093-89C0-435F-86D4-BD6B63A15E7C}
EndGlobalSection
EndGlobal