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 5303604..1817ceb 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 @@ -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 listQFilter = ReportUtils.getListQFilter(reportQueryParam); + HasPermOrgResult userHasPermOrgS = PermissionServiceHelper.getUserHasPermOrgs( + RequestContext.get().getCurrUserId(),true); + //有权的组织 + List 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;"); + + } } \ No newline at end of file