parent
cd43de0e67
commit
0a093752ad
|
@ -0,0 +1,123 @@
|
|||
package shkd.sys.sys.plugin.report;
|
||||
|
||||
import kd.bos.algo.DataSet;
|
||||
import kd.bos.algo.JoinDataSet;
|
||||
import kd.bos.algo.JoinType;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.db.DB;
|
||||
import kd.bos.db.DBRoute;
|
||||
import kd.bos.entity.report.AbstractReportListDataPlugin;
|
||||
import kd.bos.entity.report.FastFilter;
|
||||
import kd.bos.entity.report.FilterItemInfo;
|
||||
import kd.bos.entity.report.ReportQueryParam;
|
||||
import kd.bos.logging.Log;
|
||||
import kd.bos.logging.LogFactory;
|
||||
import kd.bos.orm.ORM;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.bos.util.CollectionUtils;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class AccountbankReportPlugin extends AbstractReportListDataPlugin {
|
||||
|
||||
private static final Log logger = LogFactory.getLog(AccountbankReportPlugin.class);
|
||||
|
||||
public List<QFilter> getListQFilter(ReportQueryParam reportQueryParam) {
|
||||
//过滤条件数组
|
||||
ArrayList<QFilter> filters = new ArrayList<>();
|
||||
//初始化过滤数据
|
||||
List<FilterItemInfo> initFilter = reportQueryParam.getFilter().getFilterItems();
|
||||
if (CollectionUtils.isNotEmpty(initFilter)) {
|
||||
for (FilterItemInfo filterItemInfo : initFilter) {
|
||||
// QFilter filter = new QFilter(filterItemInfo.getPropName(), filterItemInfo.getCompareType(), filterItemInfo.getValue());
|
||||
QFilter filter = new QFilter(filterItemInfo.getPropName(), QCP.equals, filterItemInfo.getValue());
|
||||
filters.add(filter);
|
||||
}
|
||||
}
|
||||
//快速过滤
|
||||
FastFilter fastFilter = reportQueryParam.getFilter().getFastFilter();
|
||||
if (fastFilter != null) {
|
||||
List<QFilter> fastFilterList = reportQueryParam.getFilter().getFastFilter().getQFilters();
|
||||
//添加过滤条件
|
||||
if (CollectionUtils.isNotEmpty(fastFilterList)) {
|
||||
filters.addAll(fastFilterList);
|
||||
}
|
||||
}
|
||||
return filters;
|
||||
}
|
||||
@Override
|
||||
public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable {
|
||||
//获取筛选器的值
|
||||
List<QFilter> listQFilter = getListQFilter(reportQueryParam);
|
||||
List<String> dateList = new ArrayList<>();
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
for (QFilter filter : listQFilter) {
|
||||
if (filter.getProperty().contains("shkd_datefield")) {
|
||||
dateList.add(sdf.format(filter.getValue()));
|
||||
}
|
||||
}
|
||||
String selectFields="id,openorg.shkd_comcode as shkd_ssjtbm,openorg.shkd_comname as shkd_ssjtmc," +
|
||||
"openorg.number as shkd_khdwbm,openorg.name as shkd_khdwmc," +
|
||||
"openorg.shkd_comlevel as shkd_khdwqyjc,acctname as shkd_zhmc,bankaccountnumber as shkd_yhzh," +
|
||||
"shkd_subcompany as shkd_sfwnbdwzh,bank.name as shkd_khhmc,bank.number as shkd_khhbm," +
|
||||
"bank.country.name as shkd_khhszgj,shkd_bank_head_office as shkd_khhzh,currency," +
|
||||
// "123 as shkd_zhyeyb,123 as shkd_zhyebb,"+"'2025-07-09 11:31:12'"+" as shkd_zhyesj," +
|
||||
"shkd_accounttype as shkd_zhytbm,case when issetbankinterface=1 then '是' else '否' end as shkd_ktyqjk,shkd_direct_time1 as shkd_ktyqsj," +
|
||||
"shkd_accounttype as shkd_zhytmc,fundaccflag as shkd_jzjzzhbs,case when closedate IS NULL then acctstatus else (case when closedate>'"+dateList.get(0)+"' then 'normal' else 'closed' end) end as shkd_zhzt,closedate as shkd_xhrq," +
|
||||
"opendate as shkd_khrq,'"+dateList.get(0)+"' as shkd_sjrq,case when ismoneypool=1 then '是' else '否' end as shkd_sfzjczh";
|
||||
//银行账户数据集
|
||||
DataSet accountbankDataSet = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(),"am_accountbank",
|
||||
selectFields
|
||||
, null, null);
|
||||
|
||||
String[] fieldNames = accountbankDataSet.getRowMeta().getFieldNames();
|
||||
// 创建一个新的数组,长度是原数组长度 + 2(因为要添加两个字段)
|
||||
String[] newFieldNames = new String[fieldNames.length + 2];
|
||||
|
||||
// 将原来的字段名数组复制到新数组
|
||||
System.arraycopy(fieldNames, 0, newFieldNames, 0, fieldNames.length);
|
||||
|
||||
// 添加两个新的字段到新数组的末尾
|
||||
newFieldNames[fieldNames.length] = "fid"; // 第一个新字段
|
||||
newFieldNames[fieldNames.length + 1] = "fbasedataid as shkd_bz"; // 第二个新字段
|
||||
|
||||
// 查询多选币别
|
||||
DataSet currencydata = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("sys"),
|
||||
"select fid,fbasedataid from t_bd_accountbanks_cur");//系统云
|
||||
|
||||
JoinDataSet join = accountbankDataSet.join(currencydata, JoinType.INNER);//内连接
|
||||
|
||||
DataSet finish = join.on("id", "fid").select(newFieldNames).finish();
|
||||
|
||||
String[] fieldNames1 = finish.getRowMeta().getFieldNames();
|
||||
// 创建一个新的数组,长度是原数组长度 + 2(因为要添加两个字段)
|
||||
String[] newFieldNames1 = new String[fieldNames1.length + 2];
|
||||
|
||||
// 将原来的字段名数组复制到新数组
|
||||
System.arraycopy(fieldNames1, 0, newFieldNames1, 0, fieldNames1.length);
|
||||
|
||||
// 添加两个新的字段到新数组的末尾
|
||||
newFieldNames1[fieldNames1.length] = "shkd_zhyeyb"; // 第一个新字段
|
||||
newFieldNames1[fieldNames1.length + 1] = "shkd_zhyebb"; // 第二个新字段
|
||||
newFieldNames1[fieldNames1.length + 2] = "shkd_zhyesj"; // 第三个新字段
|
||||
// DynamicObjectCollection srcCollection = ORM.create().toPlainDynamicObjectCollection(finish.copy());
|
||||
//查询余额
|
||||
StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ \n");
|
||||
sqlBuilder.append("SELECT fbankacctid ,SUM(FDebitAmount-FCreditAmount) as shkd_zhyeyb,SUM(FDebitAmount*fexchangerate-FCreditAmount*fexchangerate) as shkd_zhyebb,fcurrencyid,MAX(FBizDate) as shkd_zhyesj\n" +
|
||||
"FROM t_cas_bankjournal \n" +
|
||||
"GROUP BY fbankacctid, fcurrencyid");
|
||||
|
||||
DataSet res = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder.toString());//财务云
|
||||
|
||||
JoinDataSet join1 = finish.join(res, JoinType.LEFT);//左连接
|
||||
DataSet finish1 = join1.on("id", "fbankacctid").on("shkd_bz", "fcurrencyid").select(newFieldNames1).finish();
|
||||
DynamicObjectCollection srcCollection = ORM.create().toPlainDynamicObjectCollection(finish1.copy());
|
||||
return finish1;
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue