简单账表通过服务插件增加自定义字段排序没效果
金蝶云社区-土豆
土豆
0人赞赏了该文章 990次浏览 未经作者许可,禁止转载编辑于2017年11月15日 10:27:56

在应收款明细表的过滤条件框中增加了自定义文本字段F_zc_GroupCust,在应收款明细表单据体中增加了字段F_zc_GroupCustId
下面代码 在原始数据中没有F_zc_GroupCust字段 ,所以要在filter.FilterParameter.SortString替换掉。
通过后面的拼接sql代码执行成功,但是排序失效(order by升序 降序都没反映)
[Description("简单账表--【应收款明细表】")]
public class ZCARDetailReportService : ARDetailReportService
{
private string[] customRptTempTableName;

public override void BuilderReportSqlAndTempTable(Kingdee.BOS.Core.Report.IRptParams filter, string tableName)
{
string sortString = "";
IDBService dbservice = Kingdee.BOS.App.ServiceHelper.GetService();
customRptTempTableName = dbservice.CreateTemporaryTableName(this.Context, 1);
string tablenameExt = customRptTempTableName[0];

//自定义排序
if (filter.FilterParameter.SortString.Contains("F_zc_GroupCust ASC,"))
{
filter.FilterParameter.SortString=filter.FilterParameter.SortString.Replace("F_zc_GroupCust ASC,", "");
sortString = " Order By F_zc_GroupCustId ASC";
}
if (filter.FilterParameter.SortString.Contains(",F_zc_GroupCust ASC"))
{
filter.FilterParameter.SortString=filter.FilterParameter.SortString.Replace(",F_zc_GroupCust ASC", "");
sortString = " Order By F_zc_GroupCustId ASC";
}
if (filter.FilterParameter.SortString.Contains("F_zc_GroupCust DESC,"))
{
filter.FilterParameter.SortString=filter.FilterParameter.SortString.Replace("F_zc_GroupCust DESC,", "");
sortString = " Order By F_zc_GroupCustId DESC";
}
if (filter.FilterParameter.SortString.Contains(",F_zc_GroupCust DESC"))
{
filter.FilterParameter.SortString=filter.FilterParameter.SortString.Replace(",F_zc_GroupCust DESC", "");
sortString = " Order By F_zc_GroupCustId DESC";
}
if (filter.FilterParameter.SortString.Contains("F_zc_GroupCust ASC"))
{
filter.FilterParameter.SortString = filter.FilterParameter.SortString.Replace("F_zc_GroupCust ASC", "");
sortString = " Order By F_zc_GroupCustId ASC";
}
if (filter.FilterParameter.SortString.Contains("F_zc_GroupCust DESC"))
{
filter.FilterParameter.SortString = filter.FilterParameter.SortString.Replace("F_zc_GroupCust DESC", "");
sortString = " Order By F_zc_GroupCustId DESC";
}

base.BuilderReportSqlAndTempTable(filter, tablenameExt);

StringBuilder sb = new StringBuilder();
//根据过滤条件查询出来的临时表 再加上自定义查询条件
string strsql = "/*dialect*/select t1.* ,case when ISNULL(a9.FName,'')<>'' then a9.FName"
+ " when ISNULL(a10.FName,'')<>'' then a10.FName end F_zc_GroupCustId"
+ " into {0} "
+ " from {1} t1"
+ " left join T_AR_RECEIVABLE a3 on t1.FFormID='AR_receivable' and t1.fid=a3.fid"
+ " left join T_AR_OTHERRECABLE a4 on t1.FFormID='AR_OtherRecAble' and t1.fid=a4.fid"
+ " left join T_AR_RECEIVEBILLENTRY a5 on t1.fformid='AR_RECEIVEBILL' and t1.fid=a5.FID AND a5.FSEQ=1"
+ " left join T_AR_REFUNDBILLENTRY a6 on t1.fformid='AR_REFUNDBILL' and t1.fid=a5.FID AND a5.FSEQ=1"
+ " left join T_BD_CUSTOMER a7 on a7.FCUSTID=a3.F_zc_GroupCustId and a7.FISGROUP=1"
+ " left join T_BD_CUSTOMER_L a9 on a7.FCUSTID=a9.FCUSTID"
+ " left join T_BD_CUSTOMER a8 on a8.FCUSTID=a4.F_zc_GroupCustId and a8.FISGROUP=1"
+ " left join T_BD_CUSTOMER_L a10 on a8.FCUSTID=a10.FCUSTID";
sb.AppendFormat(strsql, tableName, tablenameExt);

DynamicObject customFil = filter.FilterParameter.CustomFilter;
string sWhere = string.Empty;
DynamicObject obj = customFil["F_zc_GroupCustId"] as DynamicObject;
if (obj != null)
{
sWhere = string.Format(" Where a3.F_zc_GroupCustId = '{0}' or a4.F_zc_GroupCustId='{1}'", obj[0], obj[0]);
}
DBUtils.Execute(this.Context, sb.ToString() + sWhere + sortString);
}

public override void CloseReport()
{
base.CloseReport();
if (string.IsNullOrWhiteSpace(customRptTempTableName.ToString()))
{
return;
}
IDBService dbService = Kingdee.BOS.App.ServiceHelper.GetService();
dbService.DeleteTemporaryTableName(this.Context, customRptTempTableName);
}