应收票据台账报表插件8
This commit is contained in:
		
							parent
							
								
									119ef80ad6
								
							
						
					
					
						commit
						32d5c27bce
					
				| 
						 | 
				
			
			@ -2,15 +2,19 @@ package shkd.sys.sys.plugin.report;
 | 
			
		|||
 | 
			
		||||
import kd.bos.algo.DataSet;
 | 
			
		||||
import kd.bos.algo.JoinType;
 | 
			
		||||
import kd.bos.context.RequestContext;
 | 
			
		||||
import kd.bos.db.DB;
 | 
			
		||||
import kd.bos.db.DBRoute;
 | 
			
		||||
import kd.bos.entity.report.AbstractReportListDataPlugin;
 | 
			
		||||
import kd.bos.entity.report.ReportQueryParam;
 | 
			
		||||
import kd.bos.orm.query.QCP;
 | 
			
		||||
import kd.bos.orm.query.QFilter;
 | 
			
		||||
import kd.bos.permission.api.HasPermOrgResult;
 | 
			
		||||
import kd.bos.servicehelper.QueryServiceHelper;
 | 
			
		||||
import kd.bos.servicehelper.permission.PermissionServiceHelper;
 | 
			
		||||
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.Collections;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
| 
						 | 
				
			
			@ -21,28 +25,64 @@ public class BillReceivableReportFormPlugin extends AbstractReportListDataPlugin
 | 
			
		|||
    @Override
 | 
			
		||||
    public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable {
 | 
			
		||||
 | 
			
		||||
        List<QFilter> listQFilter = ReportUtils.getListQFilter(reportQueryParam);
 | 
			
		||||
 | 
			
		||||
        HasPermOrgResult userHasPermOrgS = PermissionServiceHelper.getUserHasPermOrgs(
 | 
			
		||||
                RequestContext.get().getCurrUserId(),true);
 | 
			
		||||
        //有权的组织
 | 
			
		||||
        List<Long> hasPermOrgS = userHasPermOrgS.getHasPermOrgs();
 | 
			
		||||
 | 
			
		||||
        //票面基本信息1
 | 
			
		||||
        String selectFields = "id,company as shkd_skdw,bizdate as shkd_spyf,bizdate as shkd_sprq,draftbillno as shkd_pjhm," +
 | 
			
		||||
                "amount as shkd_hpje,availableamount as shkd_kyje,drawername as shkd_cprqc,delivername as shkd_jprqcqs," +
 | 
			
		||||
                "acceptername as shkd_cdrqc,issuedate as shkd_cprq, draftbillexpiredate as shkd_pjdqr";
 | 
			
		||||
        DataSet draftBillData = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(),"cdm_receivablebill",
 | 
			
		||||
                selectFields, new QFilter[]{new QFilter("source", QCP.not_equals,"cdm")}, null);
 | 
			
		||||
        String[] fieldNames = draftBillData.getRowMeta().getFieldNames();
 | 
			
		||||
        String[] newFieldNames1 = ReportUtils.ExpansionArray(fieldNames, Arrays.asList("shkd_txrq", "shkd_txjg","shkd_txje"));
 | 
			
		||||
                "supperbillamount as shkd_hpje,availableamount as shkd_kyje";
 | 
			
		||||
        QFilter qFilter1 = new QFilter("source", QCP.not_equals, "cdm");
 | 
			
		||||
        QFilter qFilter2 = new QFilter("company", QCP.in, hasPermOrgS);
 | 
			
		||||
        DataSet draftBillData1 = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(),"cdm_receivablebill",
 | 
			
		||||
                selectFields, new QFilter[]{qFilter1.and(qFilter2)}, null);
 | 
			
		||||
        String[] fieldNames = draftBillData1.getRowMeta().getFieldNames();
 | 
			
		||||
 | 
			
		||||
        //当前质押金额
 | 
			
		||||
        DataSet pledgeCyData = getPledgeCyData();
 | 
			
		||||
        String[] newFieldNames0 = ReportUtils.ExpansionArray(fieldNames, Collections.singletonList("shkd_zyje"));
 | 
			
		||||
 | 
			
		||||
        //拼接1
 | 
			
		||||
        DataSet finish1 = draftBillData1.join(pledgeCyData, JoinType.LEFT)
 | 
			
		||||
                .on("id", "pjid5").select(newFieldNames0).finish();
 | 
			
		||||
        String[] fieldNames1 = finish1.getRowMeta().getFieldNames();
 | 
			
		||||
 | 
			
		||||
        //票面基本信息2
 | 
			
		||||
        String fields2 = "id,drawername as shkd_cprqc,delivername as shkd_jprqcqs,acceptername as shkd_cdrqc," +
 | 
			
		||||
                "issuedate as shkd_cprq, draftbillexpiredate as shkd_pjdqr";
 | 
			
		||||
        DataSet draftBillData2 = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(),"cdm_receivablebill",
 | 
			
		||||
                fields2, new QFilter[]{qFilter1.and(qFilter2)}, null);
 | 
			
		||||
        String[] draftBillData2NewFieldNames = ReportUtils.ExpansionArray(fieldNames1,
 | 
			
		||||
                Arrays.asList("shkd_cprqc", "shkd_jprqcqs","shkd_cdrqc","shkd_cprq","shkd_pjdqr"));
 | 
			
		||||
 | 
			
		||||
        //拼接2
 | 
			
		||||
        DataSet finish2 = finish1.join(draftBillData2, JoinType.LEFT)
 | 
			
		||||
                .on("id", "id").select(draftBillData2NewFieldNames).finish();
 | 
			
		||||
        String[] finish2FieldNames2 = finish2.getRowMeta().getFieldNames();
 | 
			
		||||
 | 
			
		||||
        //拼接贴现、质押、质押解除、背书、托收相关字段
 | 
			
		||||
        String[] newFieldNames1 = ReportUtils.ExpansionArray(finish2FieldNames2, Arrays.asList("shkd_txrq", "shkd_txjg","shkd_txje"));
 | 
			
		||||
        String[] newFieldNames2 = ReportUtils.ExpansionArray(newFieldNames1, Arrays.asList("shkd_tsrq", "shkd_tsyh","shkd_tsje"));
 | 
			
		||||
        String[] newFieldNames3 = ReportUtils.ExpansionArray(newFieldNames2, Arrays.asList("shkd_bsrq", "shkd_bsr","shkd_bsje"));
 | 
			
		||||
        String[] newFieldNames4 = ReportUtils.ExpansionArray(newFieldNames3, Arrays.asList("shkd_zyrq", "shkd_zyr","shkd_yzyje"));
 | 
			
		||||
        String[] newFieldNames5 = ReportUtils.ExpansionArray(newFieldNames4, Arrays.asList("shkd_zyjcrq", "shkd_zyjcje"));
 | 
			
		||||
 | 
			
		||||
        //相关查询结果
 | 
			
		||||
        DataSet disCountData = getDisCountData();
 | 
			
		||||
        DataSet pledgeData = getPledgeData();
 | 
			
		||||
        DataSet rePledgeData = getRePledgeData();
 | 
			
		||||
        DataSet endorseData = getEndorseData();
 | 
			
		||||
        DataSet collectData = getCollectData();
 | 
			
		||||
        DataSet draftBillData2 = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(),"cdm_receivablebill",
 | 
			
		||||
                "id,draftbilltype.name as shkd_pjlx,description as shkd_skkxxz,description as shkd_bz", new QFilter[]{new QFilter("source", QCP.not_equals,"cdm")}, null);
 | 
			
		||||
        String[] newFieldNames5 = ReportUtils.ExpansionArray(newFieldNames4, Arrays.asList("shkd_pjlx", "shkd_skkxxz","shkd_bz"));
 | 
			
		||||
 | 
			
		||||
        return draftBillData.join(disCountData, JoinType.LEFT)
 | 
			
		||||
        //票面信息3
 | 
			
		||||
        DataSet draftBillData3 = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(),"cdm_receivablebill",
 | 
			
		||||
                "id,draftbilltype.name as shkd_pjlx,description as shkd_bz",
 | 
			
		||||
                new QFilter[]{new QFilter("source", QCP.not_equals,"cdm")}, null);
 | 
			
		||||
        String[] newFieldNames6 = ReportUtils.ExpansionArray(newFieldNames5, Arrays.asList("shkd_pjlx","shkd_bz"));
 | 
			
		||||
        
 | 
			
		||||
        return finish2.join(disCountData, JoinType.LEFT)
 | 
			
		||||
                .on("id","pjid3").select(newFieldNames1).finish()
 | 
			
		||||
                .join(collectData, JoinType.LEFT)
 | 
			
		||||
                .on("id","pjid1").select(newFieldNames2).finish()
 | 
			
		||||
| 
						 | 
				
			
			@ -50,8 +90,10 @@ public class BillReceivableReportFormPlugin extends AbstractReportListDataPlugin
 | 
			
		|||
                .on("id","pjid2").select(newFieldNames3).finish()
 | 
			
		||||
                .join(pledgeData, JoinType.LEFT)
 | 
			
		||||
                .on("id","pjid4").select(newFieldNames4).finish()
 | 
			
		||||
                .join(draftBillData2, JoinType.LEFT)
 | 
			
		||||
                .on("id","id").select(newFieldNames5).finish();
 | 
			
		||||
                .join(rePledgeData, JoinType.LEFT)
 | 
			
		||||
                .on("id","pjid6").select(newFieldNames5).finish()
 | 
			
		||||
                .join(draftBillData3, JoinType.LEFT)
 | 
			
		||||
                .on("id","id").select(newFieldNames6).finish();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //贴现
 | 
			
		||||
| 
						 | 
				
			
			@ -61,9 +103,9 @@ public class BillReceivableReportFormPlugin extends AbstractReportListDataPlugin
 | 
			
		|||
                        "    pjid3,\n" +
 | 
			
		||||
                        "    MAX(discountid) AS discountid,\n" +
 | 
			
		||||
                        "    MAX(discounttradetype) AS discounttradetype,\n" +
 | 
			
		||||
                        "    LISTAGG(TO_CHAR(bizdate, 'YYYY-MM-DD'),'\n') WITHIN GROUP (ORDER BY bizdate ASC) AS shkd_txrq, \n" +
 | 
			
		||||
                        "    LISTAGG(disfrecbodyname || ';' || TO_CHAR(discamt, '999,999,999,999.99'),'\n') \n" +
 | 
			
		||||
                        "    WITHIN GROUP (ORDER BY bizdate ASC) AS shkd_txjg,\n" +
 | 
			
		||||
                        "    LISTAGG(TO_CHAR(bizdate, 'YYYY-MM-DD'),';') WITHIN GROUP (ORDER BY bizdate) AS shkd_txrq, \n" +
 | 
			
		||||
                        "    LISTAGG(disfrecbodyname || ';' || TO_CHAR(discamt, '999,999,999,999.99'),';') \n" +
 | 
			
		||||
                        "    WITHIN GROUP (ORDER BY bizdate) AS shkd_txjg,\n" +
 | 
			
		||||
                        "    SUM(discamt) AS shkd_txje\n" +
 | 
			
		||||
                        "   FROM (\n" +
 | 
			
		||||
                        "    SELECT \n" +
 | 
			
		||||
| 
						 | 
				
			
			@ -72,11 +114,11 @@ public class BillReceivableReportFormPlugin extends AbstractReportListDataPlugin
 | 
			
		|||
                        "        t2.ftradetype AS discounttradetype,\n" +
 | 
			
		||||
                        "        t2.frecbodyname AS disfrecbodyname,\n" +
 | 
			
		||||
                        "        t2.FBIZDATE AS bizdate,\n" +
 | 
			
		||||
                        "        t2.fdiscamt AS discamt\n" +
 | 
			
		||||
                        "        t3.fdis_discamt AS discamt\n" +
 | 
			
		||||
                        "    FROM \n" +
 | 
			
		||||
                        "        CTSK0414_FI.t_cdm_draftbill t1\n" +
 | 
			
		||||
                        "    LEFT JOIN \n" +
 | 
			
		||||
                        "        CTSK0414_FI.t_cdm_drafttrdbill_entry t3 ON t1.fid = t3.fdraftbillid\n" +
 | 
			
		||||
                        "        CTSK0414_FI.t_cdm_discountentry t3 ON t1.fid = t3.fdis_selectbillid\n" +
 | 
			
		||||
                        "    LEFT JOIN \n" +
 | 
			
		||||
                        "        CTSK0414_FI.t_cdm_drafttradebill t2 ON t2.fid = t3.fid\n" +
 | 
			
		||||
                        "    WHERE \n" +
 | 
			
		||||
| 
						 | 
				
			
			@ -105,16 +147,16 @@ public class BillReceivableReportFormPlugin extends AbstractReportListDataPlugin
 | 
			
		|||
                        "        t2.ftradetype AS discounttradetype,\n" +
 | 
			
		||||
                        "        t2.fbeendorsortext AS endorsename,\n" +
 | 
			
		||||
                        "        t2.FBIZDATE AS bizdate,\n" +
 | 
			
		||||
                        "        t2.famount AS endorseamt\n" +
 | 
			
		||||
                        "    FROM CTSK0414_FI.t_cdm_draftbill t1\n" +
 | 
			
		||||
                        "    LEFT JOIN CTSK0414_FI.t_cdm_drafttrdbill_entry t3 \n" +
 | 
			
		||||
                        "        t3.fs_billamount AS endorseamt\n" +
 | 
			
		||||
                        "    FROM t_cdm_draftbill t1\n" +
 | 
			
		||||
                        "    LEFT JOIN t_cdm_drafttrdbill_entry t3 \n" +
 | 
			
		||||
                        "        ON t1.fid = t3.fdraftbillid\n" +
 | 
			
		||||
                        "    LEFT JOIN CTSK0414_FI.t_cdm_drafttradebill t2 \n" +
 | 
			
		||||
                        "    LEFT JOIN t_cdm_drafttradebill t2 \n" +
 | 
			
		||||
                        "        ON t2.fid = t3.fid\n" +
 | 
			
		||||
                        "    WHERE \n" +
 | 
			
		||||
                        "        t1.fsource <> 'cdm' \n" +
 | 
			
		||||
                        "        AND t2.ftradetype = 'endorse'\n" +
 | 
			
		||||
                        ") src\n" +
 | 
			
		||||
                        "   ) src\n" +
 | 
			
		||||
                        "   GROUP BY pjid2;");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -126,17 +168,17 @@ public class BillReceivableReportFormPlugin extends AbstractReportListDataPlugin
 | 
			
		|||
                        "    t2.fid AS discountid," +
 | 
			
		||||
                        "    t2.ftradetype AS discounttradetype," +
 | 
			
		||||
                        "    t4.freceivername AS shkd_tsyh," +
 | 
			
		||||
                        "    t2.FBIZDATE AS shkd_tsrq," +
 | 
			
		||||
                        "    TO_CHAR(t2.FBIZDATE, 'YYYY-MM-DD') AS shkd_tsrq," +
 | 
			
		||||
                        "    t2.fcollection AS shkd_tsje" +
 | 
			
		||||
                        "    FROM CTSK0414_FI.t_cdm_draftbill t1" +
 | 
			
		||||
                        "    LEFT JOIN CTSK0414_FI.t_cdm_draftbill_e t4 ON t4.fid = t1.fid" +
 | 
			
		||||
                        "    LEFT JOIN CTSK0414_FI.t_cdm_drafttrdbill_entry t3 ON t1.fid = t3.fdraftbillid" +
 | 
			
		||||
                        "    LEFT JOIN  CTSK0414_FI.t_cdm_drafttradebill t2 ON t2.fid = t3.fid" +
 | 
			
		||||
                        "    FROM t_cdm_draftbill t1" +
 | 
			
		||||
                        "    LEFT JOIN t_cdm_draftbill_e t4 ON t4.fid = t1.fid" +
 | 
			
		||||
                        "    LEFT JOIN t_cdm_drafttrdbill_entry t3 ON t1.fid = t3.fdraftbillid" +
 | 
			
		||||
                        "    LEFT JOIN  t_cdm_drafttradebill t2 ON t2.fid = t3.fid" +
 | 
			
		||||
                        "    WHERE t1.fsource <> 'cdm' AND t2.ftradetype = 'collect'");
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //托收
 | 
			
		||||
    //质押
 | 
			
		||||
    private DataSet getPledgeData(){
 | 
			
		||||
        return DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"),
 | 
			
		||||
                "/*dialect*/ SELECT \n" +
 | 
			
		||||
| 
						 | 
				
			
			@ -157,16 +199,75 @@ public class BillReceivableReportFormPlugin extends AbstractReportListDataPlugin
 | 
			
		|||
                        "        t2.ftradetype AS tradetype4,\n" +
 | 
			
		||||
                        "        t2.fpledgeetext AS pledgename,\n" +
 | 
			
		||||
                        "        t2.FBIZDATE AS bizdate,\n" +
 | 
			
		||||
                        "        t2.famount AS pledgeamt\n" +
 | 
			
		||||
                        "    FROM CTSK0414_FI.t_cdm_draftbill t1\n" +
 | 
			
		||||
                        "    LEFT JOIN CTSK0414_FI.t_cdm_drafttrdbill_entry t3 ON t1.fid = t3.fdraftbillid\n" +
 | 
			
		||||
                        "    LEFT JOIN  CTSK0414_FI.t_cdm_drafttradebill t2 ON t2.fid = t3.fid\n" +
 | 
			
		||||
                        "        t3.fs_billamount AS pledgeamt\n" +
 | 
			
		||||
                        "    FROM t_cdm_draftbill t1\n" +
 | 
			
		||||
                        "    LEFT JOIN t_cdm_drafttrdbill_entry t3 ON t1.fid = t3.fdraftbillid\n" +
 | 
			
		||||
                        "    LEFT JOIN  t_cdm_drafttradebill t2 ON t2.fid = t3.fid\n" +
 | 
			
		||||
                        "    WHERE t1.fsource <> 'cdm' AND t2.ftradetype = 'pledge'\n" +
 | 
			
		||||
                        ") src\n" +
 | 
			
		||||
                        "   ) src\n" +
 | 
			
		||||
                        "   GROUP BY pjid4;");
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //质押解除
 | 
			
		||||
    private DataSet getRePledgeData(){
 | 
			
		||||
        return DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"),
 | 
			
		||||
                "/*dialect*/ SELECT \n" +
 | 
			
		||||
                        "    pjid6,\n" +
 | 
			
		||||
                        "    MAX(t2id6) AS t2id6,\n" +
 | 
			
		||||
                        "    MAX(tradetype4) AS tradetype4,\n" +
 | 
			
		||||
                        "    LISTAGG(\n" +
 | 
			
		||||
                        "        TO_CHAR(bizdate, 'YYYY-MM-DD'),'\n' \n" +
 | 
			
		||||
                        "    ) WITHIN GROUP (ORDER BY bizdate) AS shkd_zyjcrq,\n" +
 | 
			
		||||
                        "    LISTAGG(\n" +
 | 
			
		||||
                        "        TO_CHAR(pledgeamt, '999,999,999,999.99'),'\n' \n" +
 | 
			
		||||
                        "    ) WITHIN GROUP (ORDER BY bizdate) AS shkd_zyjcje\n" +
 | 
			
		||||
                        "   FROM (\n" +
 | 
			
		||||
                        "    SELECT \n" +
 | 
			
		||||
                        "        t1.fid AS pjid6,\n" +
 | 
			
		||||
                        "        t2.fid AS t2id6,\n" +
 | 
			
		||||
                        "        t2.ftradetype AS tradetype4,\n" +
 | 
			
		||||
                        "        t2.fpledgeetext AS pledgename,\n" +
 | 
			
		||||
                        "        t2.FBIZDATE AS bizdate,\n" +
 | 
			
		||||
                        "        t3.fs_billamount AS pledgeamt\n" +
 | 
			
		||||
                        "    FROM CTSK0414_FI.t_cdm_draftbill t1\n" +
 | 
			
		||||
                        "    LEFT JOIN CTSK0414_FI.t_cdm_drafttrdbill_entry t3 ON t1.fid = t3.fdraftbillid\n" +
 | 
			
		||||
                        "    LEFT JOIN  CTSK0414_FI.t_cdm_drafttradebill t2 ON t2.fid = t3.fid\n" +
 | 
			
		||||
                        "    WHERE t1.fsource <> 'cdm' AND t2.ftradetype = 'rlspledge'\n" +
 | 
			
		||||
                        "   ) src\n" +
 | 
			
		||||
                        "   GROUP BY pjid6;");
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //质押金额合计-质押解除金额合计
 | 
			
		||||
    private DataSet getPledgeCyData(){
 | 
			
		||||
        return DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"),
 | 
			
		||||
                "/*dialect*/ SELECT \n" +
 | 
			
		||||
                        "    pjid5,\n" +
 | 
			
		||||
                        "    MAX(CASE WHEN ftradetype = 'rlspledge' THEN fbizdate END) AS shkd_zyjcrq,\n" +
 | 
			
		||||
                        "    SUM(CASE WHEN ftradetype = 'rlspledge' THEN fs_billamount ELSE 0 END) AS shkd_zyjcje,\n" +
 | 
			
		||||
                        "    SUM(CASE WHEN ftradetype = 'pledge' THEN fs_billamount ELSE 0 END) AS shkd_zyjehj,\n" +
 | 
			
		||||
                        "    TO_CHAR(SUM(CASE WHEN ftradetype = 'pledge' THEN fs_billamount ELSE 0 END) - " +
 | 
			
		||||
                        "   SUM(CASE WHEN ftradetype = 'rlspledge' THEN fs_billamount ELSE 0 END), '999,999,999,999.99') " +
 | 
			
		||||
                        "   AS shkd_zyje\n" +
 | 
			
		||||
                        "   FROM (\n" +
 | 
			
		||||
                        "    SELECT \n" +
 | 
			
		||||
                        "        t1.fid AS pjid5,\n" +
 | 
			
		||||
                        "        t1.fbillno AS billno,\n" +
 | 
			
		||||
                        "        t2.fbizdate,\n" +
 | 
			
		||||
                        "        t3.fs_billamount,\n" +
 | 
			
		||||
                        "        t2.ftradetype\n" +
 | 
			
		||||
                        "    FROM CTSK0414_FI.t_cdm_draftbill t1\n" +
 | 
			
		||||
                        "    LEFT JOIN CTSK0414_FI.t_cdm_drafttrdbill_entry t3 \n" +
 | 
			
		||||
                        "        ON t1.fid = t3.fdraftbillid\n" +
 | 
			
		||||
                        "    LEFT JOIN CTSK0414_FI.t_cdm_drafttradebill t2 \n" +
 | 
			
		||||
                        "        ON t2.fid = t3.fid\n" +
 | 
			
		||||
                        "    WHERE \n" +
 | 
			
		||||
                        "        t1.fsource <> 'cdm' \n" +
 | 
			
		||||
                        "        AND t2.ftradetype IN ('pledge', 'rlspledge')\n" +
 | 
			
		||||
                        "   ) src\n" +
 | 
			
		||||
                        "   GROUP BY pjid5;");
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue