diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/BillReceivableReportFormPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/BillReceivableReportFormPlugin.java index e75286b..53754f6 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/BillReceivableReportFormPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/BillReceivableReportFormPlugin.java @@ -1,10 +1,12 @@ package shkd.sys.sys.plugin.report; import kd.bos.algo.DataSet; +import kd.bos.algo.JoinDataSet; +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.report.plugin.AbstractReportFormPlugin; -import kd.sdk.plugin.Plugin; +import kd.bos.servicehelper.QueryServiceHelper; /** * 报表界面插件 @@ -12,6 +14,136 @@ import kd.sdk.plugin.Plugin; public class BillReceivableReportFormPlugin extends AbstractReportListDataPlugin { @Override public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable { + String selectFields = "id as shkd_id,company.name 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"; + DataSet draftBillData = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(),"cdm_receivablebill", + selectFields, null, null); + + DataSet disCountData = getDisCountData(); + JoinDataSet select = draftBillData.join(disCountData).select(""); + + DataSet pledgeData = getPledgeData(); + DataSet endorseData = getEndorseData(); + DataSet collectData = getCollectData(); return null; } + + //贴现 + private DataSet getDisCountData(){ + return DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), + "/*dialect*/SELECT " + + " pjid3," + + " MAX(discountid) AS discountid," + + " MAX(discounttradetype) AS discounttradetype," + + " LISTAGG(" + + " TO_CHAR(discountdate, 'YYYY-MM-DD'), -- 格式化日期" + + " ';' " + + " ) WITHIN GROUP (ORDER BY discountdate) AS shkd_txrq, -- 按日期排序" + +// " -- 合并所有记录为 \"贴现人;金额; 贴现人;金额; ...\" 格式" + + " LISTAGG(" + + " disfrecbodyname || ';' || TO_CHAR(discamt, '999,999,999,999.99')," + +// " ';' -- 用分号分隔" + + " ) WITHIN GROUP (ORDER BY discountdate) AS shkd_txjg" + + "FROM (" + + " SELECT " + + " t1.fid AS pjid3," + + " t2.fid AS discountid," + + " t2.ftradetype AS discounttradetype," + + " t2.frecbodyname AS disfrecbodyname," + + " t2.FBIZDATE AS discountdate," + + " t2.fdiscamt AS discamt" + + " FROM " + + " CTSK0414_FI.t_cdm_draftbill t1" + + " 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" + + " WHERE " + + " t1.fsource <> 'cdm'" + + " AND t2.ftradetype = 'discount'" + + ") src" + + "GROUP BY pjid3"); + + } + + //背书 + private DataSet getEndorseData() { + return DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), + "/*dialect*/SELECT \n" + + " pjid2,\n" + + " MAX(discountid) AS discountid,\n" + + " MAX(discounttradetype) AS discounttradetype,\n" + + " LISTAGG(\n" + + " TO_CHAR(bizdate, 'YYYY-MM-DD'), '\\n' \n" + + " ) WITHIN GROUP (ORDER BY bizdate) AS shkd_bsrq, \n" + + " LISTAGG(\n" + + " endorsename || ';' || TO_CHAR(endorseamt, '999,999,999,999.99'),'\\n'\n" + + " ) WITHIN GROUP (ORDER BY bizdate) AS shkd_bsr,\n" + + " SUM(endorseamt) AS shkd_bsje\n" + + "FROM (\n" + + " SELECT \n" + + " t1.fid AS pjid2,\n" + + " t2.fid AS discountid,\n" + + " 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 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 = 'endorse'\n" + + ") src\n" + + "GROUP BY pjid2;"); + } + + //托收 + private DataSet getCollectData(){ + return DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), + "/*dialect*/SELECT \n" + + " t1.fid AS pjid1,\n" + + " t2.fid AS discountid,\n" + + " t2.ftradetype AS discounttradetype,\n" + + " t4.freceivername AS shkd_tsjg,\n" + + " t2.FBIZDATE AS shkd_tsrq,\n" + + " t2.fcollection AS shkd_tsje\n" + + "FROM CTSK0414_FI.t_cdm_draftbill t1\n" + + " LEFT JOIN CTSK0414_FI.t_cdm_draftbill_e t4 ON t4.fid = t1.fid\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 = 'collect'"); + + } + + //托收 + private DataSet getPledgeData(){ + return DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), + "/*dialect*/SELECT \n" + + " pjid4,\n" + + " MAX(t2id4) AS t2id4,\n" + + " MAX(tradetype4) AS tradetype4,\n" + + " LISTAGG(\n" + + " TO_CHAR(bizdate, 'YYYY-MM-DD'),';' \n" + + " ) WITHIN GROUP (ORDER BY bizdate) AS shkd_zyrq,\n" + + " LISTAGG(\n" + + " pledgename || ';' || TO_CHAR(pledgeamt, '999,999,999,999.99'),';'\n" + + " ) WITHIN GROUP (ORDER BY bizdate) AS shkd_zyr,\n" + + " SUM(pledgeamt) AS shkd_zyje\n" + + "FROM (\n" + + " SELECT \n" + + " t1.fid AS pjid4,\n" + + " t2.fid AS t2id4,\n" + + " 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" + + " WHERE t1.fsource <> 'cdm' AND t2.ftradetype = 'pledge'\n" + + ") src\n" + + "GROUP BY pjid4"); + + } + } \ No newline at end of file