From 0f66629e8b5fa38c8d7a2230f8b7db96a6cbf92c Mon Sep 17 00:00:00 2001 From: wenlukang1 Date: Thu, 24 Jul 2025 18:25:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=94=E6=94=B6=E7=A5=A8=E6=8D=AE=E5=8F=B0?= =?UTF-8?q?=E8=B4=A6=E6=8A=A5=E8=A1=A8=E6=8F=92=E4=BB=B66?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BillReceivableReportFormPlugin.java | 205 ++++++++++-------- 1 file changed, 113 insertions(+), 92 deletions(-) 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 84e5ada..6b4517a 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 @@ -10,110 +10,116 @@ import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.QueryServiceHelper; +import java.util.Arrays; +import java.util.List; + /** * 报表界面插件 */ 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," + + String selectFields = "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,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 = ExpansionArray(fieldNames, Arrays.asList("shkd_txrq", "shkd_txjg","shkd_txje")); + String[] newFieldNames2 = ExpansionArray(newFieldNames1, Arrays.asList("shkd_tsrq", "shkd_tsyh","shkd_tsje")); + String[] newFieldNames3 = ExpansionArray(newFieldNames2, Arrays.asList("shkd_bsrq", "shkd_bsr","shkd_bsje")); + String[] newFieldNames4 = ExpansionArray(newFieldNames3, Arrays.asList("shkd_zyrq", "shkd_zyr","shkd_yzyje")); DataSet disCountData = getDisCountData(); DataSet pledgeData = getPledgeData(); DataSet endorseData = getEndorseData(); DataSet collectData = getCollectData(); - return draftBillData.join(disCountData, JoinType.LEFT).select("shkd_txrq,shkd_txjg,shkd_txje") - .on("shkd_id","pjid3").finish() - .join(collectData, JoinType.LEFT).select("shkd_tsrq,shkd_tsje") - .on("shkd_id","pjid1").finish() - .join(endorseData, JoinType.LEFT).select("shkd_bsrq,shkd_bsr,shkd_bsje") - .on("shkd_id","pjid2").finish() - .join(pledgeData, JoinType.LEFT).select("shkd_zyrq,shkd_zyr,shkd_zyje") - .on("shkd_id","pjid4").finish(); + return draftBillData.join(disCountData, JoinType.LEFT) + .on("shkd_id","pjid3").select(newFieldNames1).finish() + .join(collectData, JoinType.LEFT) + .on("shkd_id","pjid1").select(newFieldNames2).finish() + .join(endorseData, JoinType.LEFT) + .on("shkd_id","pjid2").select(newFieldNames3).finish() + .join(pledgeData, JoinType.LEFT) + .on("shkd_id","pjid4").select(newFieldNames4).finish(); } //贴现 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"); + "/*dialect*/ SELECT \n" + + " pjid3,\n" + + " MAX(discountid) AS discountid,\n" + + " MAX(discounttradetype) AS discounttradetype,\n" + + " LISTAGG(TO_CHAR(bizdate, 'YYYY-MM-DD'),';') WITHIN GROUP (ORDER BY bizdate ASC) AS shkd_txrq, \n" + + " LISTAGG(disfrecbodyname || ';' || TO_CHAR(discamt, '999,999,999,999.99'),';') \n" + + " WITHIN GROUP (ORDER BY bizdate ASC) AS shkd_txjg,\n" + + " SUM(discamt) AS shkd_txje\n" + + " FROM (\n" + + " SELECT \n" + + " t1.fid AS pjid3,\n" + + " t2.fid AS discountid,\n" + + " t2.ftradetype AS discounttradetype,\n" + + " t2.frecbodyname AS disfrecbodyname,\n" + + " t2.FBIZDATE AS bizdate,\n" + + " t2.fdiscamt 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" + + " LEFT JOIN \n" + + " CTSK0414_FI.t_cdm_drafttradebill t2 ON t2.fid = t3.fid\n" + + " WHERE \n" + + " t1.fsource <> 'cdm'\n" + + " AND t2.ftradetype = 'discount'\n" + + " ) src\n" + + " GROUP BY pjid3;"); } //背书 private DataSet getEndorseData() { return DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), - "/*dialect*/SELECT " + - " pjid2," + - " MAX(discountid) AS discountid," + - " MAX(discounttradetype) AS discounttradetype," + - " LISTAGG(" + - " TO_CHAR(bizdate, 'YYYY-MM-DD'), '/n'" + - " ) WITHIN GROUP (ORDER BY bizdate) AS shkd_bsrq, " + - " LISTAGG(" + - " endorsename || ';' || TO_CHAR(endorseamt, '999,999,999,999.99'),'/n'" + - " ) WITHIN GROUP (ORDER BY bizdate) AS shkd_bsr," + - " SUM(endorseamt) AS shkd_bsje" + - "FROM (" + - " SELECT " + - " t1.fid AS pjid2," + - " t2.fid AS discountid," + - " t2.ftradetype AS discounttradetype," + - " t2.fbeendorsortext AS endorsename," + - " t2.FBIZDATE AS bizdate," + - " t2.famount AS endorseamt" + - " 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 = 'endorse'" + - ") src" + - "GROUP BY pjid2;"); + "/*dialect*/ SELECT \n" + + " pjid2,\n" + + " MAX(discountid) AS discountid,\n" + + " MAX(discounttradetype) AS discounttradetype,\n" + + " LISTAGG(TO_CHAR(bizdate, 'YYYY-MM-DD'), ';') WITHIN GROUP (ORDER BY bizdate ASC) AS shkd_bsrq,\n" + + " LISTAGG(endorsename || ';' || TO_CHAR(endorseamt, '999,999,999,999.99'), ';') WITHIN GROUP " + + " (ORDER BY bizdate ASC) 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 \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 = 'endorse'\n" + + ") src\n" + + " GROUP BY pjid2;"); } //托收 private DataSet getCollectData(){ return DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), - "/*dialect*/SELECT " + + "SELECT " + " t1.fid AS pjid1," + " t2.fid AS discountid," + " t2.ftradetype AS discounttradetype," + - " t4.freceivername AS shkd_tsjg," + + " t4.freceivername AS shkd_tsyh," + " t2.FBIZDATE AS shkd_tsrq," + " t2.fcollection AS shkd_tsje" + - "FROM CTSK0414_FI.t_cdm_draftbill t1" + + " 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" + @@ -124,32 +130,47 @@ public class BillReceivableReportFormPlugin extends AbstractReportListDataPlugin //托收 private DataSet getPledgeData(){ return DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), - "/*dialect*/SELECT " + - " pjid4," + - " MAX(t2id4) AS t2id4," + - " MAX(tradetype4) AS tradetype4," + - " LISTAGG(" + - " TO_CHAR(bizdate, 'YYYY-MM-DD'),';' " + - " ) WITHIN GROUP (ORDER BY bizdate) AS shkd_zyrq," + - " LISTAGG(" + - " pledgename || ';' || TO_CHAR(pledgeamt, '999,999,999,999.99'),';'" + - " ) WITHIN GROUP (ORDER BY bizdate) AS shkd_zyr," + - " SUM(pledgeamt) AS shkd_zyje" + - "FROM (" + - " SELECT " + - " t1.fid AS pjid4," + - " t2.fid AS t2id4," + - " t2.ftradetype AS tradetype4," + - " t2.fpledgeetext AS pledgename," + - " t2.FBIZDATE AS bizdate," + - " t2.famount AS pledgeamt" + - " 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 = 'pledge'" + - ") src" + - "GROUP BY pjid4"); + "/*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 ASC) AS shkd_zyrq,\n" + + " LISTAGG(\n" + + " pledgename || ';' || TO_CHAR(pledgeamt, '999,999,999,999.99'),';'\n" + + " ) WITHIN GROUP (ORDER BY bizdate ASC) AS shkd_zyr,\n" + + " SUM(pledgeamt) AS shkd_yzyje\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;"); } + + private String[] ExpansionArray(String[] fieldNames, List list){ + + // 创建一个新的数组 + String[] newFieldNames = new String[fieldNames.length + list.size()]; + + // 将原来的字段名数组复制到新数组 + System.arraycopy(fieldNames, 0, newFieldNames, 0, fieldNames.length); + + for (int i = 0; i < list.size(); i++) { + // 添加两个新的字段到新数组的末尾 + newFieldNames[fieldNames.length+i] = list.get(i); // 第i个新字段 + } + return newFieldNames; + } } \ No newline at end of file