From 9ff4395e28b2ec86cfa8595b8aa48f1832afa415 Mon Sep 17 00:00:00 2001 From: chenshaoxin <1981897232@qq.com> Date: Wed, 7 May 2025 13:21:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BA=BA=EF=BC=9A=E9=99=88?= =?UTF-8?q?=E7=BB=8D=E9=91=AB=20=E6=97=A5=E6=9C=9F=EF=BC=9A2025/4/23=2016?= =?UTF-8?q?=EF=BC=9A30=20=E5=86=85=E5=AE=B9:=E4=B8=8A=E5=88=92=E4=B8=8B?= =?UTF-8?q?=E6=8B=A8=EF=BC=88new=EF=BC=89=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/FinanceReportFormPlugin.java | 56 ++++-- .../plugin/report/FinanceReportPlugin.java | 97 ++++++++- .../FinanceReportfordateFormPlugin.java | 97 ++++++++- .../report/FinanceReportfordatePlugin.java | 189 +++++++++++++----- .../report/domain/FinanceVarietyEnum.java | 2 +- 5 files changed, 365 insertions(+), 76 deletions(-) diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportFormPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportFormPlugin.java index 2d8b438..b9289bf 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportFormPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportFormPlugin.java @@ -385,19 +385,13 @@ public class FinanceReportFormPlugin extends AbstractReportFormPlugin implement } private void addheji(DynamicObjectCollection rowData){ - BigDecimal shkd_jtnbjkamount=new BigDecimal(0.0);//⑩集团内部借款金额 - BigDecimal shkd_jtnbjkrzcb=new BigDecimal(0.0);//⑩集团内部借款融资成本(%) - BigDecimal shkd_jtnbjkqx=new BigDecimal(0.0);//⑩集团内部借款期限 + BigDecimal shkd_jtnbjkamountcjdx=new BigDecimal(0.0);//⑩集团内部借款金额 for (DynamicObject rowDatum : rowData) { - shkd_jtnbjkamount=shkd_jtnbjkamount.subtract(rowDatum.getBigDecimal("shkd_jtnbjkamount")); - shkd_jtnbjkrzcb=shkd_jtnbjkrzcb.subtract(rowDatum.getBigDecimal("shkd_jtnbjkrzcb")); - shkd_jtnbjkqx=shkd_jtnbjkqx.subtract(rowDatum.getBigDecimal("shkd_jtnbjkqx")); + shkd_jtnbjkamountcjdx=shkd_jtnbjkamountcjdx.subtract(rowDatum.getBigDecimal("shkd_jtnbjkamountcjdx")); } DynamicObject dynamicObject = new DynamicObject(rowData.getDynamicObjectType()); dynamicObject.set("shkd_org","合并抵消"); - dynamicObject.set("shkd_jtnbjkamount",shkd_jtnbjkamount); - dynamicObject.set("shkd_jtnbjkrzcb",shkd_jtnbjkrzcb); - dynamicObject.set("shkd_jtnbjkqx",shkd_jtnbjkqx); + dynamicObject.set("shkd_jtnbjkamount",shkd_jtnbjkamountcjdx); rowData.add(dynamicObject); } @@ -473,13 +467,45 @@ public class FinanceReportFormPlugin extends AbstractReportFormPlugin implement summaryValueMap.put(strings.get(1),total.compareTo(BigDecimal.ZERO) == 0?BigDecimal.ZERO.toString():rzcbtotal.divide(total, 2, RoundingMode.HALF_UP).toString()); summaryValueMap.put(strings.get(2),total.compareTo(BigDecimal.ZERO) == 0?BigDecimal.ZERO.toString():qxtotal.divide(total, 2, RoundingMode.HALF_UP).toString()); + if ("shkd_jtnbjkamount".equals(strings.get(0))){//集团内部借款单独处理 + //抵消金额合计 + BigDecimal cjdxtotal = filteredList.stream() + .map(obj -> obj.getBigDecimal("shkd_jtnbjkamountcjdx")) // 提取每个对象的getNumber()值 + .filter(number -> number != null) // 排除null值(如果有的话) + .reduce(BigDecimal.ZERO, BigDecimal::add); // 使用BigDecimal.ZERO作为初始值,并执行累加 + BigDecimal subtract = total.subtract(cjdxtotal);//抵消后的金额 + BigDecimal dxrzcbtotal = filteredList.stream() + .map(obj -> { + BigDecimal number = obj.getBigDecimal("shkd_jtnbjkamount"); // 获取金额 + BigDecimal number1 = obj.getBigDecimal("shkd_jtnbjkamountcjdx"); // 获取抵消金额 + BigDecimal number2 = obj.getBigDecimal("shkd_jtnbjkrzcb"); // 获取融资成本 + // 如果number或number1为null,视为0,避免NullPointerException + if (number == null) number = BigDecimal.ZERO; + if (number1 == null) number1 = BigDecimal.ZERO; + if (number2 == null) number2 = BigDecimal.ZERO; + + return (number.subtract(number1)).multiply(number2); // 计算乘积 + }) + .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加所有乘积 + + BigDecimal dxqxtotal = filteredList.stream() + .map(obj -> { + BigDecimal number = obj.getBigDecimal("shkd_jtnbjkamount"); // 获取金额 + BigDecimal number1 = obj.getBigDecimal("shkd_jtnbjkamountcjdx"); // 获取抵消金额 + BigDecimal number2 = obj.getBigDecimal("shkd_jtnbjkqx"); // 获取融资成本 + // 如果number或number1为null,视为0,避免NullPointerException + if (number == null) number = BigDecimal.ZERO; + if (number1 == null) number1 = BigDecimal.ZERO; + if (number2 == null) number2 = BigDecimal.ZERO; + + return (number.subtract(number1)).multiply(number2); // 计算乘积 + }) + .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加所有乘积 + summaryValueMap.put("shkd_jtnbjkamount",subtract); + summaryValueMap.put("shkd_jtnbjkrzcb",subtract.compareTo(BigDecimal.ZERO) == 0?BigDecimal.ZERO.toString():dxrzcbtotal.divide(subtract, 2, RoundingMode.HALF_UP).toString()); + summaryValueMap.put("shkd_jtnbjkqx",subtract.compareTo(BigDecimal.ZERO) == 0?BigDecimal.ZERO.toString():dxqxtotal.divide(subtract, 2, RoundingMode.HALF_UP).toString()); + } } -// for (int i = 0; i < FinanceVarietyEnum.avg.size(); i++) { -// BigDecimal totalInAmt = (BigDecimal) summaryValueMap.get( FinanceVarietyEnum.avg.get(i)); -// BigDecimal result = totalInAmt.divide(new BigDecimal(rowCount), 2, RoundingMode.HALF_UP); -// summaryValueMap.put(FinanceVarietyEnum.avg.get(i),result.toString()); -// } - summaryValueMap.put("shkd_jtnbjkamount",new BigDecimal(0).toString()); } } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportPlugin.java index 689c2ee..a7a4103 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportPlugin.java @@ -85,9 +85,35 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { DecimalFormat df = new DecimalFormat("#"); String selmoney = df.format(shkd_selmoney); HashMap> map = new HashMap<>();//组织层级关系 + + HashMap> cjdxmap = new HashMap<>();//合并抵消组织层级关系 + HashMap> xjdxmap = new HashMap<>();//合并抵消组织层级关系 //如果有组织则单独处理,没有则走getOrgrelate方法 if (shkd_seluserpower==null){ + //获取该合并层所有下级 getOrgrelate(map, selorgDy); + + //获取该组织的全部下级业务单元 + Long id = selorgDy.getLong("id");//业务单元id + List orgIds = new ArrayList<>(1); + orgIds.add(id); + List allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, false);//不包括自己 + + //获取此级抵消的业务单元 + OrgTreeParam orgTreeParam=new OrgTreeParam(); + orgTreeParam.setId(selorgDy.getLong("id")); + orgTreeParam.setOrgViewType(OrgViewType.OrgUnit);//设置视图方案为业务单元的 + orgTreeParam.setTreeBuildType(OrgTreeBuildType.FILL_HIDDEN_PARENT_DIRECT); + List treeNodes=OrgUnitServiceHelper.getTreeChildren(orgTreeParam); + List idList = treeNodes.stream() + .map(treeNode -> Long.valueOf(treeNode.getId())) + .collect(Collectors.toList()); + cjdxmap.put(id,idList); + + //获取下级已经抵消的业务单元 + List result = new ArrayList<>(allSubordinateOrgs); + result.removeAll(idList); + xjdxmap.put(id,result); }else { for (DynamicObject dynamicObject : shkd_seluserpower) { Long id = dynamicObject.getLong("id");//业务单元id @@ -96,6 +122,29 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { //获取该组织的全部下级业务单元 List allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, true);//包括自己 map.put(id,allSubordinateOrgs); + + Map orgParentMap = OrgUnitServiceHelper.getDirectSuperiorOrg(OrgViewType.OrgUnit, orgIds);//获取直接上级 + //获取该组织上级的全部下级业务单元 + Long Parentid = orgParentMap.get(id);//业务单元id + List ParentorgIds = new ArrayList<>(1); + ParentorgIds.add(Parentid); + List ParentallSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, false);//不包括自己 + //获取此级抵消的业务单元 + OrgTreeParam orgTreeParam=new OrgTreeParam(); +// orgTreeParam.setId(selorgDy.getLong("id")); + orgTreeParam.setId(orgParentMap.get(id)); + orgTreeParam.setOrgViewType(OrgViewType.OrgUnit);//设置视图方案为业务单元的 + orgTreeParam.setTreeBuildType(OrgTreeBuildType.FILL_HIDDEN_PARENT_DIRECT); + List treeNodes=OrgUnitServiceHelper.getTreeChildren(orgTreeParam); + List idList = treeNodes.stream() + .map(treeNode -> Long.valueOf(treeNode.getId())) + .collect(Collectors.toList()); + cjdxmap.put(orgParentMap.get(id),idList); + + //获取下级已经抵消的业务单元 + List result = new ArrayList<>(ParentallSubordinateOrgs); + result.removeAll(idList); + xjdxmap.put(orgParentMap.get(id),result); } } @@ -105,15 +154,19 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { int size = map.size(); int index = 0; for (Map.Entry> entry : map.entrySet()) { + Long key = entry.getKey(); // 获取key + Map orgParentMap = OrgUnitServiceHelper.getDirectSuperiorOrg(OrgViewType.OrgUnit, Collections.singletonList(key));//获取直接上级 + List cjdx=cjdxmap.get(orgParentMap.get(key)); + List xjdx=xjdxmap.get(orgParentMap.get(key)); DynamicObject bos_org = BusinessDataServiceHelper.loadSingle(key,"bos_org");//直接下级业务单元 List value = entry.getValue(); // 获取value - getSQlBuilder(dateList,value,bos_org.getString("number"),sqlBuilder); + getSQlBuilder(dateList,value,bos_org.getString("number"),sqlBuilder,cjdx,xjdx); index++; // 判断是否是最后一项 if (index == size) { - +// break; } else { sqlBuilder.append("\n union all \n"); } @@ -150,10 +203,11 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { "shkd_yfpjamount/ "+selmoney+" as shkd_yfpjamount","shkd_yfpjrzcb","shkd_yfpjqx", "shkd_fjrqyjkamount/ "+selmoney+" as shkd_fjrqyjkamount","shkd_fjrqyjkrzcb","shkd_fjrqyjkqx", "shkd_qtzwrzamount/ "+selmoney+" as shkd_qtzwrzamount","shkd_qtzwrzrzcb","shkd_qtzwrzqx", - "shkd_jtnbjkamount/ "+selmoney+" as shkd_jtnbjkamount","shkd_jtnbjkrzcb","shkd_jtnbjkqx", + "(shkd_jtnbjkamount-shkd_jtnbjkamountxjdx)/ "+selmoney+" as shkd_jtnbjkamount","shkd_jtnbjkrzcb","shkd_jtnbjkqx", "shkd_yxzamount/ "+selmoney+" as shkd_yxzamount","shkd_yxzrzcb","shkd_yxzqx", "shkd_yxxtamount/ "+selmoney+" as shkd_yxxtamount","shkd_yxxtrzcb","shkd_yxxtqx", "shkd_qtqyrzamount/ "+selmoney+" as shkd_qtqyrzamount","shkd_qtqyrzrzcb","shkd_qtqyrzqx", + "shkd_jtnbjkamountcjdx","shkd_jtnbjkamountxjdx", //1至9合计 "(shkd_zqrzamount+shkd_dqjkamount+shkd_zcqldamount+shkd_xmdkamount+shkd_rzzlamount+shkd_bxzjrzamount+shkd_yfpjamount+shkd_fjrqyjkamount+shkd_qtzwrzamount)/"+selmoney+" as shkd_oneotnineje", "case when (shkd_zqrzamount+shkd_dqjkamount+shkd_zcqldamount+shkd_xmdkamount+shkd_rzzlamount+shkd_bxzjrzamount+shkd_yfpjamount+shkd_fjrqyjkamount+shkd_qtzwrzamount)=0 then 0 else " + @@ -188,9 +242,23 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { /* * 拼接sql方法 * */ - public StringBuilder getSQlBuilder(List dateList,List orgIds,String orgnumber,StringBuilder sqlBuilder){ + public StringBuilder getSQlBuilder(List dateList,List orgIds,String orgnumber,StringBuilder sqlBuilder,List cjdx,List xjdx){ String result = orgIds.toString(); result = result.substring(1, result.length() - 1); + + String cjdxresult = cjdx.toString(); + if (cjdx.size()==0){ + cjdxresult="123";//设置一个不存在的id + }else { + cjdxresult = cjdxresult.substring(1, cjdxresult.length() - 1); + } + + String xjdxresult = xjdx.toString(); + if (xjdx.size()==0){ + xjdxresult="123"; + }else { + xjdxresult = xjdxresult.substring(1, xjdxresult.length() - 1); + } sqlBuilder.append("SELECT '"+orgnumber+"' as shkd_orgnumber, \n"); String zqrz = getrzpzId(FinanceVarietyEnum.zqrz, "cfm_financingvarieties");//获取债券融资的融资品种 String dqjk = getrzpzId(FinanceVarietyEnum.dqjk, "cfm_financingvarieties");//获取短期借款的融资品种 @@ -244,6 +312,9 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { sqlBuilder.append("SUM ( CASE WHEN zqrlx='innerunit' AND djlx='企业借款合同' AND rzpz in ("+jtnbjk+") THEN je ELSE 0 END ) AS shkd_jtnbjkamount,\n" + "COALESCE(SUM(CASE WHEN zqrlx='innerunit' AND djlx='企业借款合同' AND rzpz IN ("+jtnbjk+") THEN je*zxll ELSE 0 END)/NULLIF(SUM(CASE WHEN zqrlx='innerunit' AND djlx='企业借款合同' AND rzpz IN ("+jtnbjk+") THEN je ELSE 0 END), 0),0) AS shkd_jtnbjkrzcb,\n" + "COALESCE(SUM(CASE WHEN zqrlx='innerunit' AND djlx='企业借款合同' AND rzpz IN ("+jtnbjk+") THEN je*(y + m/12.0 + d/365.0) ELSE 0 END)/NULLIF(SUM(CASE WHEN zqrlx='innerunit' AND djlx='企业借款合同' AND rzpz IN ("+jtnbjk+") THEN je ELSE 0 END), 0),0) AS shkd_jtnbjkqx, \n");//集团内部借款 + sqlBuilder.append("SUM ( CASE WHEN dx='此级抵消' AND zqrlx='innerunit' AND djlx='企业借款合同' AND rzpz in ("+jtnbjk+") THEN je ELSE 0 END ) AS shkd_jtnbjkamountcjdx,\n");//集团内部借款(此级抵消) + sqlBuilder.append("SUM ( CASE WHEN dx='下级抵消' AND zqrlx='innerunit' AND djlx='企业借款合同' AND rzpz in ("+jtnbjk+") THEN je ELSE 0 END ) AS shkd_jtnbjkamountxjdx,\n");//集团内部借款(下级抵消) + sqlBuilder.append("SUM ( CASE WHEN djlx='债券发行' AND rzpz in ("+yxd+") THEN je ELSE 0 END ) AS shkd_yxzamount,\n" + "COALESCE(SUM(CASE WHEN djlx='债券发行' AND rzpz IN ("+yxd+") THEN je*zxll ELSE 0 END)/NULLIF(SUM(CASE WHEN djlx='债券发行' AND rzpz IN ("+yxd+") THEN je ELSE 0 END), 0),0) AS shkd_yxzrzcb,\n" + @@ -267,7 +338,8 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { "TIMESTAMPDIFF(MONTH, t1.fbizdate, rpentry.fexrepaymentdate) % 12 AS m,\n" + "DATEDIFF(DAY,t1.fbizdate, rpentry.fexrepaymentdate) % 30 AS d,\n" + "'债券发行' AS djlx,\n" + - "'' AS zqrlx\n" + + "'' AS zqrlx,\n" + + "'' AS dx\n" + "FROM\n" + " t_cfm_loanbill t1 -- 债券发行\n" + " INNER JOIN t_cfm_loanbill_e e ON e.fid = t1.fid -- 内连接组织拆分表\n" + @@ -289,7 +361,8 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { " TIMESTAMPDIFF(MONTH, t3.fbizdate, rpentry.fexrepaymentdate) % 12 AS m,\n" + " DATEDIFF(DAY,t3.fbizdate, rpentry.fexrepaymentdate) % 30 AS d,\n" + " '银行借款合同' AS djlx,\n" + - " '' AS zqrlx\n" + + " '' AS zqrlx,\n" + + " '' AS dx\n" + "FROM\n" + " t_cfm_loancontractbill t2 --银行借款合同\n" + " INNER JOIN t_cfm_loancontractbill_e e ON e.fid = t2.fid -- 内连接组织拆分表\n" + @@ -320,7 +393,8 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { " TIMESTAMPDIFF(MONTH, t4.fstartdate, planmx.fpaydate) % 12 AS m,\n" + " DATEDIFF(DAY,t4.fstartdate, planmx.fpaydate) % 30 AS d,\n" + " '融资租赁合同' AS djlx,\n" + - " '' AS zqrlx\n" + + " '' AS zqrlx,\n" + + " '' AS dx\n" + "FROM\n" + " t_cfm_loancontractbill t4 -- 融资租赁合同\n" + " INNER JOIN t_cfm_loancontractbill_e e ON e.fid = t4.fid -- 内连接组织拆分表\n" + @@ -339,7 +413,8 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { " TIMESTAMPDIFF(MONTH, t5.fissuedate, t5.fdraftbillexpiredate) % 12 AS m,\n" + " DATEDIFF(DAY,t5.fissuedate, t5.fdraftbillexpiredate) % 30 AS d,\n" + " '开票登记' AS djlx,\n" + - " '' AS zqrlx\n" + + " '' AS zqrlx,\n" + + " '' AS dx\n" + "FROM\n" + " t_cdm_draftbill t5 -- 开票登记\n" + "WHERE\n" + @@ -358,7 +433,11 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { " TIMESTAMPDIFF(MONTH, t3.fbizdate, rpentry.fexrepaymentdate) % 12 AS m,\n" + " DATEDIFF(DAY,t3.fbizdate, rpentry.fexrepaymentdate) % 30 AS d,\n" + " '企业借款合同' AS djlx,\n" + - " e.fcreditortype AS zqrlx\n" + + " e.fcreditortype AS zqrlx,\n" + + " (CASE\n" + + " WHEN e.fcreditorgid IN ("+cjdxresult+") THEN '此级抵消'\n" + + " WHEN e.fcreditorgid IN ("+xjdxresult+") THEN '下级抵消'\n" + + " ELSE '不抵消' END) AS dx \n" + "FROM\n" + " t_cfm_loancontractbill t2 --企业借款合同\n" + " INNER JOIN t_cfm_loancontractbill_e e ON e.fid = t2.fid -- 内连接组织拆分表\n" + diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportfordateFormPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportfordateFormPlugin.java index 15c64ce..c0af974 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportfordateFormPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportfordateFormPlugin.java @@ -9,12 +9,14 @@ import kd.bos.entity.report.*; import kd.bos.form.ShowType; import kd.bos.form.events.HyperLinkClickEvent; import kd.bos.form.events.HyperLinkClickListener; +import kd.bos.mvc.report.ReportListModel; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.permission.api.HasPermOrgResult; import kd.bos.report.ReportList; import kd.bos.report.ReportShowParameter; import kd.bos.report.events.CreateColumnEvent; +import kd.bos.report.events.SummaryEvent; import kd.bos.report.filter.ReportFilter; import kd.bos.report.plugin.AbstractReportFormPlugin; import kd.bos.servicehelper.BusinessDataServiceHelper; @@ -25,7 +27,9 @@ import kd.bos.servicehelper.permission.PermissionServiceHelper; import shkd.sys.sys.plugin.report.domain.FinanceVarietyEnum; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; +import java.util.stream.Collectors; public class FinanceReportfordateFormPlugin extends AbstractReportFormPlugin implements HyperLinkClickListener { @Override @@ -126,11 +130,13 @@ public class FinanceReportfordateFormPlugin extends AbstractReportFormPlugin im @Override public void afterCreateColumn(CreateColumnEvent event) { super.afterCreateColumn(event); + setsummaryValueMap(event); ReportQueryParam queryParam = event.getQueryParam(); FilterInfo filter = queryParam.getFilter(); String shkd_money = filter.getString("shkd_selmoney"); List columns = event.getColumns(); getColumns( columns,shkd_money); + } public List getColumns(List columns,String shkd_money) { @@ -255,7 +261,7 @@ public class FinanceReportfordateFormPlugin extends AbstractReportFormPlugin im QFilter filter = new QFilter("shkd_org", QCP.equals, id); DynamicObject paixu = BusinessDataServiceHelper.loadSingle("shkd_orgorderby", filter.toArray()); if (paixu==null){ - + addheji(rowData); }else { DynamicObjectCollection shkd_entryentity = paixu.getDynamicObjectCollection("shkd_entryentity"); // 创建一个HashMap来存储转换后的结果 @@ -275,14 +281,31 @@ public class FinanceReportfordateFormPlugin extends AbstractReportFormPlugin im public int compare(DynamicObject dynamicObject1, DynamicObject dynamicObject2) { return (map.get(dynamicObject1.getString("shkd_orgnumber"))==null?100:map.get(dynamicObject1.getString("shkd_orgnumber")))-(map.get(dynamicObject2.getString("shkd_orgnumber"))==null?100:map.get(dynamicObject2.getString("shkd_orgnumber"))); } - }); + addheji(rowData); } - - } + private void addheji(DynamicObjectCollection rowData){ + BigDecimal shkd_jtnbjkqcyecjdx=new BigDecimal(0.0);//⑩集团内部期初余额 + BigDecimal shkd_jtnbjkxzrzecjdx=new BigDecimal(0.0);//⑩集团内部借款新增融资额 + BigDecimal shkd_jtnbjkxzhkecjdx=new BigDecimal(0.0);//⑩集团内部借款新增还款额 + BigDecimal shkd_jtnbjkqmyecjdx=new BigDecimal(0.0);//⑩集团内部期末余额 + for (DynamicObject rowDatum : rowData) { + shkd_jtnbjkqcyecjdx=shkd_jtnbjkqcyecjdx.subtract(rowDatum.getBigDecimal("shkd_jtnbjkqcyecjdx")); + shkd_jtnbjkxzrzecjdx=shkd_jtnbjkxzrzecjdx.subtract(rowDatum.getBigDecimal("shkd_jtnbjkxzrzecjdx")); + shkd_jtnbjkxzhkecjdx=shkd_jtnbjkxzhkecjdx.subtract(rowDatum.getBigDecimal("shkd_jtnbjkxzhkecjdx")); + shkd_jtnbjkqmyecjdx=shkd_jtnbjkqmyecjdx.subtract(rowDatum.getBigDecimal("shkd_jtnbjkqmyecjdx")); + } + DynamicObject dynamicObject = new DynamicObject(rowData.getDynamicObjectType()); + dynamicObject.set("shkd_org","合并抵消"); + dynamicObject.set("shkd_jtnbjkqcye",shkd_jtnbjkqcyecjdx); + dynamicObject.set("shkd_jtnbjkxzrze",shkd_jtnbjkxzrzecjdx); + dynamicObject.set("shkd_jtnbjkxzhke",shkd_jtnbjkxzhkecjdx); + dynamicObject.set("shkd_jtnbjkqmye",shkd_jtnbjkqmyecjdx); + rowData.add(dynamicObject); + } private List getSuperOrg(List org){ //组织和其对应直接上级 @@ -304,4 +327,70 @@ public class FinanceReportfordateFormPlugin extends AbstractReportFormPlugin im List longs = new ArrayList<>(result); return longs; } + + private void setsummaryValueMap(CreateColumnEvent event){ + ReportList list = this.getView().getControl("reportlistap"); + ReportListModel reportModel = (ReportListModel) list.getReportModel(); + Map summaryValueMap = reportModel.getSummaryValueMap(); + int rowCount = reportModel.getReportTaskResult().getRowCount(); + //获取数据集合 + DynamicObjectCollection rowData = reportModel.getRowData(0, rowCount); + List filteredList = rowData.stream() + .filter(obj -> !obj.getString("shkd_org").equals("合并抵消")) + .collect(Collectors.toList());//去除合并抵消 + + BigDecimal dxqcyetotal = filteredList.stream() + .map(obj -> { + BigDecimal number = obj.getBigDecimal("shkd_jtnbjkqcye"); // 获取金额 + BigDecimal number1 = obj.getBigDecimal("shkd_jtnbjkqcyecjdx"); // 获取抵消金额 + // 如果number或number1为null,视为0,避免NullPointerException + if (number == null) number = BigDecimal.ZERO; + if (number1 == null) number1 = BigDecimal.ZERO; + + return (number.subtract(number1)); + }) + .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加所有 + + BigDecimal dxxzrzetotal = filteredList.stream() + .map(obj -> { + BigDecimal number = obj.getBigDecimal("shkd_jtnbjkxzrze"); // 获取金额 + BigDecimal number1 = obj.getBigDecimal("shkd_jtnbjkxzrzecjdx"); // 获取抵消金额 + // 如果number或number1为null,视为0,避免NullPointerException + if (number == null) number = BigDecimal.ZERO; + if (number1 == null) number1 = BigDecimal.ZERO; + + return (number.subtract(number1)); + }) + .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加所有乘积 + + BigDecimal dxxzhketotal = filteredList.stream() + .map(obj -> { + BigDecimal number = obj.getBigDecimal("shkd_jtnbjkxzhke"); // 获取金额 + BigDecimal number1 = obj.getBigDecimal("shkd_jtnbjkxzhkecjdx"); // 获取抵消金额 + // 如果number或number1为null,视为0,避免NullPointerException + if (number == null) number = BigDecimal.ZERO; + if (number1 == null) number1 = BigDecimal.ZERO; + + return (number.subtract(number1)); + }) + .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加所有乘积 + + BigDecimal dxqmyetotal = filteredList.stream() + .map(obj -> { + BigDecimal number = obj.getBigDecimal("shkd_jtnbjkqmye"); // 获取金额 + BigDecimal number1 = obj.getBigDecimal("shkd_jtnbjkqmyecjdx"); // 获取抵消金额 + // 如果number或number1为null,视为0,避免NullPointerException + if (number == null) number = BigDecimal.ZERO; + if (number1 == null) number1 = BigDecimal.ZERO; + + return (number.subtract(number1)); + }) + .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加所有乘积 + + summaryValueMap.put("shkd_jtnbjkqcye",dxqcyetotal.toString()); + summaryValueMap.put("shkd_jtnbjkxzrze",dxxzrzetotal.toString()); + summaryValueMap.put("shkd_jtnbjkxzhke",dxxzhketotal.toString()); + summaryValueMap.put("shkd_jtnbjkqmye",dxqmyetotal.toString()); + } + } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportfordatePlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportfordatePlugin.java index 3a76fd2..a8e7ba8 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportfordatePlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/FinanceReportfordatePlugin.java @@ -85,10 +85,37 @@ public class FinanceReportfordatePlugin extends AbstractReportListDataPlugin { String selmoney = df.format(shkd_selmoney); HashMap> map = new HashMap<>();//组织层级关系 + + HashMap> cjdxmap = new HashMap<>();//合并抵消组织层级关系 + HashMap> xjdxmap = new HashMap<>();//合并抵消组织层级关系 + List ids = new ArrayList<>(); //如果有组织则单独处理,没有则走getOrgrelate方法 if (shkd_seluserpower==null){ + //获取该合并层所有下级 getOrgrelate(map, selorgDy); + + //获取该组织的全部下级业务单元 + Long id = selorgDy.getLong("id");//业务单元id + List orgIds = new ArrayList<>(1); + orgIds.add(id); + List allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, false);//不包括自己 + + //获取此级抵消的业务单元 + OrgTreeParam orgTreeParam=new OrgTreeParam(); + orgTreeParam.setId(selorgDy.getLong("id")); + orgTreeParam.setOrgViewType(OrgViewType.OrgUnit);//设置视图方案为业务单元的 + orgTreeParam.setTreeBuildType(OrgTreeBuildType.FILL_HIDDEN_PARENT_DIRECT); + List treeNodes=OrgUnitServiceHelper.getTreeChildren(orgTreeParam); + List idList = treeNodes.stream() + .map(treeNode -> Long.valueOf(treeNode.getId())) + .collect(Collectors.toList()); + cjdxmap.put(id,idList); + + //获取下级已经抵消的业务单元 + List result = new ArrayList<>(allSubordinateOrgs); + result.removeAll(idList); + xjdxmap.put(id,result); }else { for (DynamicObject dynamicObject : shkd_seluserpower) { Long id = dynamicObject.getLong("id");//业务单元id @@ -97,6 +124,29 @@ public class FinanceReportfordatePlugin extends AbstractReportListDataPlugin { //获取该组织的全部下级业务单元 List allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, true);//包括自己 map.put(id,allSubordinateOrgs); + + Map orgParentMap = OrgUnitServiceHelper.getDirectSuperiorOrg(OrgViewType.OrgUnit, orgIds);//获取直接上级 + //获取该组织上级的全部下级业务单元 + Long Parentid = orgParentMap.get(id);//业务单元id + List ParentorgIds = new ArrayList<>(1); + ParentorgIds.add(Parentid); + List ParentallSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, false);//不包括自己 + //获取此级抵消的业务单元 + OrgTreeParam orgTreeParam=new OrgTreeParam(); +// orgTreeParam.setId(selorgDy.getLong("id")); + orgTreeParam.setId(orgParentMap.get(id)); + orgTreeParam.setOrgViewType(OrgViewType.OrgUnit);//设置视图方案为业务单元的 + orgTreeParam.setTreeBuildType(OrgTreeBuildType.FILL_HIDDEN_PARENT_DIRECT); + List treeNodes=OrgUnitServiceHelper.getTreeChildren(orgTreeParam); + List idList = treeNodes.stream() + .map(treeNode -> Long.valueOf(treeNode.getId())) + .collect(Collectors.toList()); + cjdxmap.put(orgParentMap.get(id),idList); + + //获取下级已经抵消的业务单元 + List result = new ArrayList<>(ParentallSubordinateOrgs); + result.removeAll(idList); + xjdxmap.put(orgParentMap.get(id),result); } } @@ -106,7 +156,7 @@ public class FinanceReportfordatePlugin extends AbstractReportListDataPlugin { //根据组织关系配置sql StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ "); - getSQlBuilder(shkd_selstartdate,shkd_selenddate,map,sqlBuilder); + getSQlBuilder(shkd_selstartdate,shkd_selenddate,map,sqlBuilder,cjdxmap,xjdxmap); logger.info("sqlBuilder信息:{}", sqlBuilder); DataSet res = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder.toString());//财务云 @@ -130,10 +180,12 @@ public class FinanceReportfordatePlugin extends AbstractReportListDataPlugin { "shkd_yfpjqcye/ "+selmoney+" as shkd_yfpjqcye", "shkd_yfpjxzrze/ "+selmoney+" as shkd_yfpjxzrze", "shkd_yfpjxzhke/ "+selmoney+" as shkd_yfpjxzhke", "shkd_yfpjqmye/ "+selmoney+" as shkd_yfpjqmye",//⑦应付票据 "shkd_fjrqyjkqcye/ "+selmoney+" as shkd_fjrqyjkqcye", "shkd_fjrqyjkxzrze/ "+selmoney+" as shkd_fjrqyjkxzrze", "shkd_fjrqyjkxzhke/ "+selmoney+" as shkd_fjrqyjkxzhke", "shkd_fjrqyjkqmye/ "+selmoney+" as shkd_fjrqyjkqmye",//⑧非金融企业借款 "shkd_qtzwrzqcye/ "+selmoney+" as shkd_qtzwrzqcye", "shkd_qtzwrzxzrze/ "+selmoney+" as shkd_qtzwrzxzrze", "shkd_qtzwrzxzhke/ "+selmoney+" as shkd_qtzwrzxzhke", "shkd_qtzwrzqmye/ "+selmoney+" as shkd_qtzwrzqmye",//⑨其他债务融资 - "shkd_jtnbjkqcye/ "+selmoney+" as shkd_jtnbjkqcye", "shkd_jtnbjkxzrze/ "+selmoney+" as shkd_jtnbjkxzrze", "shkd_jtnbjkxzhke/ "+selmoney+" as shkd_jtnbjkxzhke", "shkd_jtnbjkqmye/ "+selmoney+" as shkd_jtnbjkqmye",//⑩集团内部借款 + "(shkd_jtnbjkqcye-shkd_jtnbjkqcyexjdx)/ "+selmoney+" as shkd_jtnbjkqcye", "(shkd_jtnbjkxzrze-shkd_jtnbjkxzrzexjdx)/ "+selmoney+" as shkd_jtnbjkxzrze", "(shkd_jtnbjkxzhke-shkd_jtnbjkxzhkexjdx)/ "+selmoney+" as shkd_jtnbjkxzhke", "(shkd_jtnbjkqmye-shkd_jtnbjkqmyexjdx)/ "+selmoney+" as shkd_jtnbjkqmye",//⑩集团内部借款 "shkd_yxzqcye/ "+selmoney+" as shkd_yxzqcye", "shkd_yxzxzrze/ "+selmoney+" as shkd_yxzxzrze", "shkd_yxzxzhke/ "+selmoney+" as shkd_yxzxzhke", "shkd_yxzqmye/ "+selmoney+" as shkd_yxzqmye",//⑪永续债 "shkd_yxxtqcye/ "+selmoney+" as shkd_yxxtqcye", "shkd_yxxtxzrze/ "+selmoney+" as shkd_yxxtxzrze", "shkd_yxxtxzhke/ "+selmoney+" as shkd_yxxtxzhke", "shkd_yxxtqmye/ "+selmoney+" as shkd_yxxtqmye",//⑫永续信托 "shkd_qtqyrzqcye/ "+selmoney+" as shkd_qtqyrzqcye", "shkd_qtqyrzxzrze/ "+selmoney+" as shkd_qtqyrzxzrze", "shkd_qtqyrzxzhke/ "+selmoney+" as shkd_qtqyrzxzhke", "shkd_qtqyrzqmye/ "+selmoney+" as shkd_qtqyrzqmye",//⑬其他权益融资 + "shkd_jtnbjkqcyecjdx/ "+selmoney+" as shkd_jtnbjkqcyecjdx", "shkd_jtnbjkxzrzecjdx/ "+selmoney+" as shkd_jtnbjkxzrzecjdx", "shkd_jtnbjkxzhkecjdx/ "+selmoney+" as shkd_jtnbjkxzhkecjdx", "shkd_jtnbjkqmyecjdx/ "+selmoney+" as shkd_jtnbjkqmyecjdx",//⑩集团内部借款cjdx + "shkd_jtnbjkqcyexjdx/ "+selmoney+" as shkd_jtnbjkqcyexjdx", "shkd_jtnbjkxzrzexjdx/ "+selmoney+" as shkd_jtnbjkxzrzexjdx", "shkd_jtnbjkxzhkexjdx/ "+selmoney+" as shkd_jtnbjkxzhkexjdx", "shkd_jtnbjkqmyexjdx/ "+selmoney+" as shkd_jtnbjkqmyexjdx",//⑩集团内部借款xjdx //1至9合计 "(shkd_zqrzqcye+shkd_dqjkqcye+shkd_zcqldqcye+shkd_xmdkqcye+shkd_rzzlqcye+shkd_bxzjrzqcye+shkd_yfpjqcye+shkd_fjrqyjkqcye+shkd_qtzwrzqcye)/"+selmoney+" as shkd_1to9qcye", "(shkd_zqrzxzrze+shkd_dqjkxzrze+shkd_zcqldxzrze+shkd_xmdkxzrze+shkd_rzzlxzrze+shkd_bxzjrzxzrze+shkd_yfpjxzrze+shkd_fjrqyjkxzrze+shkd_qtzwrzxzrze)/"+selmoney+" as shkd_1to9xzrze", @@ -156,54 +208,54 @@ public class FinanceReportfordatePlugin extends AbstractReportListDataPlugin { "(shkd_zqrzqmye+shkd_dqjkqmye+shkd_zcqldqmye+shkd_xmdkqmye+shkd_rzzlqmye+shkd_bxzjrzqmye+shkd_yfpjqmye+shkd_fjrqyjkqmye+shkd_qtzwrzqmye+shkd_yxzqmye+shkd_yxxtqmye+shkd_qtqyrzqmye)/"+selmoney+" as shkd_1to13qmye" }).finish(); - DataSet dataSet2 = dataSet.groupBy(null).sum("shkd_jtnbjkqcye").sum("shkd_jtnbjkxzrze").sum("shkd_jtnbjkxzhke").sum("shkd_jtnbjkqmye").finish(); +// DataSet dataSet2 = dataSet.groupBy(null).sum("shkd_jtnbjkqcye").sum("shkd_jtnbjkxzrze").sum("shkd_jtnbjkxzhke").sum("shkd_jtnbjkqmye").finish(); +// +// DataSet ds = dataSet2.addField("'合并抵消'","shkd_org").addField("''","shkd_orgnumber"); +// ds.addFields(new String[]{},new String[]{}); +// ds = ds.addNullField( +// "shkd_zqrzqcye","shkd_zqrzxzrze","shkd_zqrzxzhke","shkd_zqrzqmye", +// "shkd_dqjkqcye","shkd_dqjkxzrze","shkd_dqjkxzhke","shkd_dqjkqmye", +// "shkd_zcqldqcye","shkd_zcqldxzrze","shkd_zcqldxzhke","shkd_zcqldqmye", +// "shkd_xmdkqcye","shkd_xmdkxzrze","shkd_xmdkxzhke","shkd_xmdkqmye", +// "shkd_rzzlqcye","shkd_rzzlxzrze","shkd_rzzlxzhke","shkd_rzzlqmye", +// "shkd_bxzjrzqcye","shkd_bxzjrzxzrze","shkd_bxzjrzxzhke","shkd_bxzjrzqmye", +// "shkd_yfpjqcye","shkd_yfpjxzrze","shkd_yfpjxzhke","shkd_yfpjqmye", +// "shkd_fjrqyjkqcye","shkd_fjrqyjkxzrze","shkd_fjrqyjkxzhke","shkd_fjrqyjkqmye", +// "shkd_qtzwrzqcye","shkd_qtzwrzxzrze","shkd_qtzwrzxzhke","shkd_qtzwrzqmye", +// +// "shkd_yxzqcye","shkd_yxzxzrze","shkd_yxzxzhke","shkd_yxzqmye", +// "shkd_yxxtqcye","shkd_yxxtxzrze","shkd_yxxtxzhke","shkd_yxxtqmye", +// "shkd_qtqyrzqcye","shkd_qtqyrzxzrze","shkd_qtqyrzxzhke","shkd_qtqyrzqmye", +// "shkd_1to9qcye","shkd_1to9xzrze","shkd_1to9xzhke","shkd_1to9qmye", +// "shkd_1to10qcye","shkd_1to10xzrze","shkd_1to10xzhke","shkd_1to10qmye", +// "shkd_11to13qcye","shkd_11to13xzrze","shkd_11to13xzhke","shkd_11to13qmye", +// "shkd_1to13qcye","shkd_1to13xzrze","shkd_1to13xzhke","shkd_1to13qmye" +// ); +// ds=ds.select( +// "shkd_orgnumber","shkd_org", +// "shkd_zqrzqcye","shkd_zqrzxzrze","shkd_zqrzxzhke","shkd_zqrzqmye", +// "shkd_dqjkqcye","shkd_dqjkxzrze","shkd_dqjkxzhke","shkd_dqjkqmye", +// "shkd_zcqldqcye","shkd_zcqldxzrze","shkd_zcqldxzhke","shkd_zcqldqmye", +// "shkd_xmdkqcye","shkd_xmdkxzrze","shkd_xmdkxzhke","shkd_xmdkqmye", +// "shkd_rzzlqcye","shkd_rzzlxzrze","shkd_rzzlxzhke","shkd_rzzlqmye", +// "shkd_bxzjrzqcye","shkd_bxzjrzxzrze","shkd_bxzjrzxzhke","shkd_bxzjrzqmye", +// "shkd_yfpjqcye","shkd_yfpjxzrze","shkd_yfpjxzhke","shkd_yfpjqmye", +// "shkd_fjrqyjkqcye","shkd_fjrqyjkxzrze","shkd_fjrqyjkxzhke","shkd_fjrqyjkqmye", +// "shkd_qtzwrzqcye","shkd_qtzwrzxzrze","shkd_qtzwrzxzhke","shkd_qtzwrzqmye", +// "shkd_jtnbjkqcye*-1 as shkd_jtnbjkqcye","shkd_jtnbjkxzrze*-1 as shkd_jtnbjkxzrze","shkd_jtnbjkxzhke*-1 as shkd_jtnbjkxzhke","shkd_jtnbjkqmye*-1 as shkd_jtnbjkqmye", +// "shkd_yxzqcye","shkd_yxzxzrze","shkd_yxzxzhke","shkd_yxzqmye", +// "shkd_yxxtqcye","shkd_yxxtxzrze","shkd_yxxtxzhke","shkd_yxxtqmye", +// "shkd_qtqyrzqcye","shkd_qtqyrzxzrze","shkd_qtqyrzxzhke","shkd_qtqyrzqmye", +// "shkd_1to9qcye","shkd_1to9xzrze","shkd_1to9xzhke","shkd_1to9qmye", +// "shkd_1to10qcye","shkd_1to10xzrze","shkd_1to10xzhke","shkd_1to10qmye", +// "shkd_11to13qcye","shkd_11to13xzrze","shkd_11to13xzhke","shkd_11to13qmye", +// "shkd_1to13qcye","shkd_1to13xzrze","shkd_1to13xzhke","shkd_1to13qmye"); +// DataSet union = dataSet.union(ds); - DataSet ds = dataSet2.addField("'合并抵消'","shkd_org").addField("''","shkd_orgnumber"); - ds.addFields(new String[]{},new String[]{}); - ds = ds.addNullField( - "shkd_zqrzqcye","shkd_zqrzxzrze","shkd_zqrzxzhke","shkd_zqrzqmye", - "shkd_dqjkqcye","shkd_dqjkxzrze","shkd_dqjkxzhke","shkd_dqjkqmye", - "shkd_zcqldqcye","shkd_zcqldxzrze","shkd_zcqldxzhke","shkd_zcqldqmye", - "shkd_xmdkqcye","shkd_xmdkxzrze","shkd_xmdkxzhke","shkd_xmdkqmye", - "shkd_rzzlqcye","shkd_rzzlxzrze","shkd_rzzlxzhke","shkd_rzzlqmye", - "shkd_bxzjrzqcye","shkd_bxzjrzxzrze","shkd_bxzjrzxzhke","shkd_bxzjrzqmye", - "shkd_yfpjqcye","shkd_yfpjxzrze","shkd_yfpjxzhke","shkd_yfpjqmye", - "shkd_fjrqyjkqcye","shkd_fjrqyjkxzrze","shkd_fjrqyjkxzhke","shkd_fjrqyjkqmye", - "shkd_qtzwrzqcye","shkd_qtzwrzxzrze","shkd_qtzwrzxzhke","shkd_qtzwrzqmye", - - "shkd_yxzqcye","shkd_yxzxzrze","shkd_yxzxzhke","shkd_yxzqmye", - "shkd_yxxtqcye","shkd_yxxtxzrze","shkd_yxxtxzhke","shkd_yxxtqmye", - "shkd_qtqyrzqcye","shkd_qtqyrzxzrze","shkd_qtqyrzxzhke","shkd_qtqyrzqmye", - "shkd_1to9qcye","shkd_1to9xzrze","shkd_1to9xzhke","shkd_1to9qmye", - "shkd_1to10qcye","shkd_1to10xzrze","shkd_1to10xzhke","shkd_1to10qmye", - "shkd_11to13qcye","shkd_11to13xzrze","shkd_11to13xzhke","shkd_11to13qmye", - "shkd_1to13qcye","shkd_1to13xzrze","shkd_1to13xzhke","shkd_1to13qmye" - ); - ds=ds.select( - "shkd_orgnumber","shkd_org", - "shkd_zqrzqcye","shkd_zqrzxzrze","shkd_zqrzxzhke","shkd_zqrzqmye", - "shkd_dqjkqcye","shkd_dqjkxzrze","shkd_dqjkxzhke","shkd_dqjkqmye", - "shkd_zcqldqcye","shkd_zcqldxzrze","shkd_zcqldxzhke","shkd_zcqldqmye", - "shkd_xmdkqcye","shkd_xmdkxzrze","shkd_xmdkxzhke","shkd_xmdkqmye", - "shkd_rzzlqcye","shkd_rzzlxzrze","shkd_rzzlxzhke","shkd_rzzlqmye", - "shkd_bxzjrzqcye","shkd_bxzjrzxzrze","shkd_bxzjrzxzhke","shkd_bxzjrzqmye", - "shkd_yfpjqcye","shkd_yfpjxzrze","shkd_yfpjxzhke","shkd_yfpjqmye", - "shkd_fjrqyjkqcye","shkd_fjrqyjkxzrze","shkd_fjrqyjkxzhke","shkd_fjrqyjkqmye", - "shkd_qtzwrzqcye","shkd_qtzwrzxzrze","shkd_qtzwrzxzhke","shkd_qtzwrzqmye", - "shkd_jtnbjkqcye*-1 as shkd_jtnbjkqcye","shkd_jtnbjkxzrze*-1 as shkd_jtnbjkxzrze","shkd_jtnbjkxzhke*-1 as shkd_jtnbjkxzhke","shkd_jtnbjkqmye*-1 as shkd_jtnbjkqmye", - "shkd_yxzqcye","shkd_yxzxzrze","shkd_yxzxzhke","shkd_yxzqmye", - "shkd_yxxtqcye","shkd_yxxtxzrze","shkd_yxxtxzhke","shkd_yxxtqmye", - "shkd_qtqyrzqcye","shkd_qtqyrzxzrze","shkd_qtqyrzxzhke","shkd_qtqyrzqmye", - "shkd_1to9qcye","shkd_1to9xzrze","shkd_1to9xzhke","shkd_1to9qmye", - "shkd_1to10qcye","shkd_1to10xzrze","shkd_1to10xzhke","shkd_1to10qmye", - "shkd_11to13qcye","shkd_11to13xzrze","shkd_11to13xzhke","shkd_11to13qmye", - "shkd_1to13qcye","shkd_1to13xzrze","shkd_1to13xzhke","shkd_1to13qmye"); - DataSet union = dataSet.union(ds); - - return union; + return dataSet; } - public StringBuilder getSQlBuilder(String shkd_selstartdate,String shkd_selenddate,HashMap> map,StringBuilder sqlBuilder){ + public StringBuilder getSQlBuilder(String shkd_selstartdate,String shkd_selenddate,HashMap> map,StringBuilder sqlBuilder,HashMap> cjdxmap,HashMap> xjdxmap){ //组装组织分类 StringBuilder orgclass=new StringBuilder(" case \n"); StringBuilder orgclass1=new StringBuilder(" case \n"); @@ -220,6 +272,36 @@ public class FinanceReportfordatePlugin extends AbstractReportListDataPlugin { orgclass1.append(" ELSE NULL \n"); orgclass1.append(" END AS zz \n"); + StringBuilder dxorgclass=new StringBuilder(" (case \n"); + for (Map.Entry> entry : map.entrySet()) { + Long key = entry.getKey(); + List valueList = entry.getValue(); + String result = valueList.toString(); + result = result.substring(1, result.length() - 1); + Map orgParentMap = OrgUnitServiceHelper.getDirectSuperiorOrg(OrgViewType.OrgUnit, Collections.singletonList(key));//获取直接上级 + List cjdx=cjdxmap.get(orgParentMap.get(key)); + List xjdx=xjdxmap.get(orgParentMap.get(key)); + String cjdxresult = cjdx.toString(); + if (cjdx.size()==0){ + cjdxresult="123";//设置一个不存在的id + }else { + cjdxresult = cjdxresult.substring(1, cjdxresult.length() - 1); + } + + String xjdxresult = xjdx.toString(); + if (xjdx.size()==0){ + xjdxresult="123"; + }else { + xjdxresult = xjdxresult.substring(1, xjdxresult.length() - 1); + } + dxorgclass.append(" WHEN e.fcreditorgid IN ( "+cjdxresult+" ) and e.forgid in ("+result+") THEN '此级抵消' \n"); + dxorgclass.append(" WHEN e.fcreditorgid IN ( "+xjdxresult+" ) and e.forgid in ("+result+") THEN '下级抵消' \n"); + } + dxorgclass.append(" ELSE '不抵消'\n" + + "END) AS dx, \n"); + + + String zqrz = getrzpzId(FinanceVarietyEnum.zqrz, "cfm_financingvarieties");//获取债券融资的融资品种 String dqjk = getrzpzId(FinanceVarietyEnum.dqjk, "cfm_financingvarieties");//获取短期借款的融资品种 String zcqld = getrzpzId(FinanceVarietyEnum.zcqld, "cfm_financingvarieties");//获取中长期流贷的融资品种 @@ -283,6 +365,14 @@ public class FinanceReportfordatePlugin extends AbstractReportListDataPlugin { " SUM(CASE WHEN djlx='企业借款合同' AND zqrlx='innerunit' AND rzpz in ("+jtnbjk+") AND starttime > '"+shkd_selstartdate+"' AND starttime <= '"+shkd_selenddate+"' THEN je ELSE 0 END ) AS shkd_jtnbjkxzrze,\n" + " SUM(CASE WHEN djlx='企业借款合同' AND zqrlx='innerunit' AND rzpz in ("+jtnbjk+") AND endtime > '"+shkd_selstartdate+"' AND endtime <= '"+shkd_selenddate+"' THEN je ELSE 0 END ) AS shkd_jtnbjkxzhke,\n" + " SUM(CASE WHEN djlx='企业借款合同' AND zqrlx='innerunit' AND rzpz in ("+jtnbjk+") AND starttime <= '"+shkd_selenddate+"' AND endtime > '"+shkd_selenddate+"' THEN je ELSE 0 END ) AS shkd_jtnbjkqmye,\n");//⑩集团内部借款 + sqlBuilder.append("SUM(CASE WHEN dx='此级抵消' and djlx='企业借款合同' AND zqrlx='innerunit' AND rzpz in ("+jtnbjk+") AND starttime <= '"+shkd_selstartdate+"' AND endtime > '"+shkd_selstartdate+"' THEN je ELSE 0 END ) AS shkd_jtnbjkqcyecjdx,\n" + + " SUM(CASE WHEN dx='此级抵消' and djlx='企业借款合同' AND zqrlx='innerunit' AND rzpz in ("+jtnbjk+") AND starttime > '"+shkd_selstartdate+"' AND starttime <= '"+shkd_selenddate+"' THEN je ELSE 0 END ) AS shkd_jtnbjkxzrzecjdx,\n" + + " SUM(CASE WHEN dx='此级抵消' and djlx='企业借款合同' AND zqrlx='innerunit' AND rzpz in ("+jtnbjk+") AND endtime > '"+shkd_selstartdate+"' AND endtime <= '"+shkd_selenddate+"' THEN je ELSE 0 END ) AS shkd_jtnbjkxzhkecjdx,\n" + + " SUM(CASE WHEN dx='此级抵消' and djlx='企业借款合同' AND zqrlx='innerunit' AND rzpz in ("+jtnbjk+") AND starttime <= '"+shkd_selenddate+"' AND endtime > '"+shkd_selenddate+"' THEN je ELSE 0 END ) AS shkd_jtnbjkqmyecjdx,\n");//⑩集团内部借款此级抵消 + sqlBuilder.append("SUM(CASE WHEN dx='下级抵消' and djlx='企业借款合同' AND zqrlx='innerunit' AND rzpz in ("+jtnbjk+") AND starttime <= '"+shkd_selstartdate+"' AND endtime > '"+shkd_selstartdate+"' THEN je ELSE 0 END ) AS shkd_jtnbjkqcyexjdx,\n" + + " SUM(CASE WHEN dx='下级抵消' and djlx='企业借款合同' AND zqrlx='innerunit' AND rzpz in ("+jtnbjk+") AND starttime > '"+shkd_selstartdate+"' AND starttime <= '"+shkd_selenddate+"' THEN je ELSE 0 END ) AS shkd_jtnbjkxzrzexjdx,\n" + + " SUM(CASE WHEN dx='下级抵消' and djlx='企业借款合同' AND zqrlx='innerunit' AND rzpz in ("+jtnbjk+") AND endtime > '"+shkd_selstartdate+"' AND endtime <= '"+shkd_selenddate+"' THEN je ELSE 0 END ) AS shkd_jtnbjkxzhkexjdx,\n" + + " SUM(CASE WHEN dx='下级抵消' and djlx='企业借款合同' AND zqrlx='innerunit' AND rzpz in ("+jtnbjk+") AND starttime <= '"+shkd_selenddate+"' AND endtime > '"+shkd_selenddate+"' THEN je ELSE 0 END ) AS shkd_jtnbjkqmyexjdx,\n");//⑩集团内部借款下级抵消 sqlBuilder.append("SUM(CASE WHEN djlx='银行借款合同' AND rzpz in ("+yxd+") AND starttime <= '"+shkd_selstartdate+"' AND endtime > '"+shkd_selstartdate+"' THEN je ELSE 0 END ) AS shkd_yxzqcye,\n" + " SUM(CASE WHEN djlx='银行借款合同' AND rzpz in ("+yxd+") AND starttime > '"+shkd_selstartdate+"' AND starttime <= '"+shkd_selenddate+"' THEN je ELSE 0 END ) AS shkd_yxzxzrze,\n" + @@ -307,6 +397,7 @@ public class FinanceReportfordatePlugin extends AbstractReportListDataPlugin { "t1.fbillno,t1.ffinproductid as rzpz,rpentry.fexdrawamount as je,'债券发行' AS djlx,'' AS zqrlx,\n" + "t1.fbizdate AS starttime,\n" + "rpentry.fexrepaymentdate AS endtime,\n" + + "''AS dx, \n" + orgclass + "FROM\n" + " t_cfm_loanbill t1 -- 债券发行\n" + @@ -319,6 +410,7 @@ public class FinanceReportfordatePlugin extends AbstractReportListDataPlugin { " t2.fbillno as fbillno,COALESCE( NULLIF ( t2.fk_shkd_basedatafield, 0 ), t2.ffinproductid ) AS rzpz,rpentry.fexdrawamount as je,'银行借款合同' AS djlx,'' AS zqrlx,\n" + " t3.fbizdate AS starttime,\n" + " rpentry.fexrepaymentdate AS endtime,\n" + + "''AS dx, \n" + orgclass+ "FROM\n" + " t_cfm_loancontractbill t2 --银行借款合同\n" + @@ -334,6 +426,7 @@ public class FinanceReportfordatePlugin extends AbstractReportListDataPlugin { "t4.fbillno,t4.ffinproductid as rzpz,planmx.frentamt as je,'融资租赁合同' AS djlx,'' AS zqrlx,\n" + "t4.fstartdate AS starttime,\n" + "planmx.fpaydate AS endtime,\n" + + "''AS dx, \n" + orgclass+ "FROM\n" + "t_cfm_loancontractbill t4 -- 融资租赁合同\n" + @@ -346,6 +439,7 @@ public class FinanceReportfordatePlugin extends AbstractReportListDataPlugin { "t5.fbillno, 6666666666666666666 as rzpz,t5.famount as je,'开票登记' AS djlx,'' AS zqrlx,\n" + "t5.fissuedate AS starttime,\n" + "t5.fdraftbillexpiredate AS endtime,\n" + + "''AS dx, \n" + orgclass1+ "FROM\n" + "t_cdm_draftbill t5 -- 开票登记\n" + @@ -356,6 +450,7 @@ public class FinanceReportfordatePlugin extends AbstractReportListDataPlugin { " t2.fbillno as fbillno,COALESCE( NULLIF ( t2.fk_shkd_basedatafield, 0 ), t2.ffinproductid ) AS rzpz,rpentry.fexdrawamount as je,'企业借款合同' AS djlx,e.fcreditortype AS zqrlx,\n" + " t3.fbizdate AS starttime,\n" + "rpentry.fexrepaymentdate AS endtime,\n" + + dxorgclass+ orgclass+ "FROM\n" + " t_cfm_loancontractbill t2 --企业借款合同\n" + diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/domain/FinanceVarietyEnum.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/domain/FinanceVarietyEnum.java index efe05a2..8ccfcd7 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/domain/FinanceVarietyEnum.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/report/domain/FinanceVarietyEnum.java @@ -19,7 +19,7 @@ public class FinanceVarietyEnum { public static final List zcqld = Arrays.asList("中长期流动资金贷款"); //④项目贷款 - public static final List xmdk = Arrays.asList("固定资产贷款", "银行并购贷款"); + public static final List xmdk = Arrays.asList("固定资产贷款", "银行并购贷款","股票增持贷款"); //⑥保险资金融资 public static final List bxzjrz = Arrays.asList("保险资金融资");