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