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 a1a77c5..ffa3168 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 @@ -3,6 +3,7 @@ package shkd.sys.sys.plugin.report; import kd.bos.bill.BillShowParameter; import kd.bos.bill.OperationStatus; import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.entity.LocaleString; import kd.bos.entity.datamodel.IDataModel; import kd.bos.entity.datamodel.events.PackageDataEvent; @@ -16,6 +17,7 @@ import kd.bos.filter.FilterColumn; import kd.bos.form.ClientProperties; import kd.bos.form.FormShowParameter; import kd.bos.form.ShowType; +import kd.bos.form.control.events.BeforeItemClickEvent; import kd.bos.form.control.events.FilterContainerInitEvent; import kd.bos.form.events.HyperLinkClickEvent; import kd.bos.form.events.HyperLinkClickListener; @@ -27,57 +29,96 @@ import kd.bos.report.filter.ReportFilter; import kd.bos.report.plugin.AbstractReportFormPlugin; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.QueryServiceHelper; +import kd.bos.servicehelper.org.OrgUnitServiceHelper; +import kd.bos.servicehelper.org.OrgViewType; import org.apache.commons.lang3.time.DateUtils; import java.text.SimpleDateFormat; import java.util.*; public class FinanceReportFormPlugin extends AbstractReportFormPlugin implements HyperLinkClickListener { - FilterContainerInitEvent contInitEvent; - ReportQueryParam queryParam; + @Override + public void packageData(PackageDataEvent evt) { - DynamicObject selorg; -// @Override -// public void packageData(PackageDataEvent evt) { -// -// if(evt.getFormatValue() != null && (evt.getFormatValue().toString().startsWith("139") -// -// || evt.getFormatValue().toString().startsWith("张") -// -// || evt.getFormatValue().toString().startsWith("00"))){ -// -// evt.getNoLinkKey().add(((ReportColumn)evt.getSource()).getFieldKey()); -// +// if ("shkd_orgnumber".equals(((ReportColumn)evt.getSource()).getFieldKey())){ +// String formatValue = (String)evt.getFormatValue(); +// DynamicObject selorg = QueryServiceHelper.queryOne("bos_org", "id,name,number", (new QFilter("number", QCP.equals, formatValue)).toArray()); +// Long pkValue = selorg.getLong("id"); +// List orgIds = new ArrayList<>(1); +// orgIds.add(pkValue); +// List allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, false);//不包括自己 +// if (allSubordinateOrgs.size()==0){ +// evt.getNoLinkKey().add(((ReportColumn)evt.getSource()).getFieldKey()); +// } // } -// -// } + if ("shkd_org".equals(((ReportColumn)evt.getSource()).getFieldKey())){ + String formatValue = (String)evt.getFormatValue(); + DynamicObject selorg = QueryServiceHelper.queryOne("bos_org", "id,name,number", (new QFilter("name", QCP.equals, formatValue)).toArray()); + Long pkValue = selorg.getLong("id"); + List orgIds = new ArrayList<>(1); + orgIds.add(pkValue); + List allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, false);//不包括自己 + if (allSubordinateOrgs.size()==0){ + evt.getNoLinkKey().add(((ReportColumn)evt.getSource()).getFieldKey()); + } + } + } @Override public void registerListener(EventObject e) { super.registerListener(e); + this.addItemClickListeners("toolbarap"); ReportList reportlistap = this.getView().getControl("reportlistap"); reportlistap.addHyperClickListener(this::hyperLinkClick); } @Override - public void hyperLinkClick(HyperLinkClickEvent hyperLinkClickEvent) { - if ("shkd_org".equals(hyperLinkClickEvent.getFieldName())) { + public void beforeItemClick(BeforeItemClickEvent evt) { + super.beforeItemClick(evt); + String itemKey = evt.getItemKey(); + if ("shkd_break".equals(itemKey)){ ReportFilter filter =this.getView().getControl("reportfilterap"); - IDataModel model = this.getView().getModel(); - String name = (String) hyperLinkClickEvent.getRowData().get(0);//公司名称 - DynamicObject selorg = QueryServiceHelper.queryOne("bos_org", "id,name,number", (new QFilter("name", QCP.equals, name)).toArray()); - Long pkValue = selorg.getLong("id"); - DynamicObject single = BusinessDataServiceHelper.loadSingle(pkValue, "bos_org"); - this.getModel().setValue("shkd_selorg",single); - Object shkd_selorg = this.getView().getModel().getValue("shkd_selorg"); - filter.search(); + DynamicObject shkd_selorg = (DynamicObject) this.getModel().getValue("shkd_selorg"); + DynamicObject single = BusinessDataServiceHelper.loadSingle(shkd_selorg.getLong("id"), "bos_org"); + DynamicObjectCollection structure = single.getDynamicObjectCollection("structure"); + DynamicObject viewparent=null; + for (DynamicObject dynamicObject : structure) { + DynamicObject fviewid = dynamicObject.getDynamicObject("view"); + if (OrgViewType.OrgUnit.equals(fviewid.getString("number"))){ + viewparent = dynamicObject.getDynamicObject("viewparent"); + } + } + if (viewparent!=null){ + this.getModel().setValue("shkd_selorg",viewparent); + filter.search(); + } } } + @Override + public void hyperLinkClick(HyperLinkClickEvent hyperLinkClickEvent) { + if ("shkd_orgnumber".equals(hyperLinkClickEvent.getFieldName())) { + ReportFilter filter =this.getView().getControl("reportfilterap"); + String number = (String) hyperLinkClickEvent.getRowData().get("shkd_orgnumber");//公司编码 + DynamicObject selorg = QueryServiceHelper.queryOne("bos_org", "id,name,number", (new QFilter("number", QCP.equals, number)).toArray()); + Long pkValue = selorg.getLong("id"); + DynamicObject single = BusinessDataServiceHelper.loadSingle(pkValue, "bos_org"); + this.getModel().setValue("shkd_selorg",single); + filter.search(); + } else if ("shkd_org".equals(hyperLinkClickEvent.getFieldName())) { + ReportFilter filter =this.getView().getControl("reportfilterap"); + String name = (String) hyperLinkClickEvent.getRowData().get("shkd_org");//公司名称 + DynamicObject selorg = QueryServiceHelper.queryOne("bos_org", "id,name,number", (new QFilter("name", QCP.equals, name)).toArray()); + Long pkValue = selorg.getLong("id"); + DynamicObject single = BusinessDataServiceHelper.loadSingle(pkValue, "bos_org"); + this.getModel().setValue("shkd_selorg",single); + filter.search(); + } + + } + @Override protected void filterContainerInit(FilterContainerInitEvent contInitEvent, ReportQueryParam queryParam) { - this.contInitEvent= contInitEvent; - this.queryParam= queryParam; super.filterContainerInit(contInitEvent, queryParam); } } 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 8607810..22950ed 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 @@ -13,6 +13,8 @@ import kd.bos.entity.report.FastFilter; import kd.bos.entity.report.FilterItemInfo; import kd.bos.entity.report.ReportQueryParam; import kd.bos.entity.tree.TreeNode; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; import kd.bos.org.model.OrgTreeBuildType; import kd.bos.org.model.OrgTreeParam; import kd.bos.orm.ORM; @@ -24,6 +26,7 @@ import kd.bos.servicehelper.QueryServiceHelper; import kd.bos.servicehelper.org.OrgUnitServiceHelper; import kd.bos.servicehelper.org.OrgViewType; import kd.bos.util.CollectionUtils; +import shkd.sys.sys.plugin.form.PaymentProcessingBillPlugin; import shkd.sys.sys.plugin.report.domain.FinanceVarietyEnum; import java.text.SimpleDateFormat; @@ -31,6 +34,8 @@ import java.util.*; import java.util.stream.Collectors; public class FinanceReportPlugin extends AbstractReportListDataPlugin { + + private static final Log logger = LogFactory.getLog(FinanceReportPlugin.class); public List getListQFilter(ReportQueryParam reportQueryParam) { //过滤条件数组 ArrayList filters = new ArrayList<>(); @@ -55,20 +60,6 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { return filters; } - /* - * 将过滤条件存在集合中 - * */ - private void getFilterList(List qFilters, List orgIds, List dateList) { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - for (QFilter filter : qFilters) { - if (filter.getProperty().contains("shkd_selorg")) { - DynamicObject org= (DynamicObject) filter.getValue(); - orgIds.add(org.getString("number")); - } else if (filter.getProperty().contains("shkd_seldate")) { - dateList.add(sdf.format(filter.getValue())); - } - } - } @Override public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable { @@ -87,7 +78,6 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { HashMap> map = new HashMap<>();//组织层级关系 getOrgrelate(map, selorgDy); - System.out.println(map); //根据组织关系配置sql StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ "); int size = map.size(); @@ -107,31 +97,64 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { } } - System.out.println(sqlBuilder); + logger.info("sqlBuilder信息:{}", sqlBuilder); DataSet res = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder.toString());//财务云 //业务单元数据集 DataSet balanceDataSet = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(),"bos_org","id,number as shkd_orgnumber,name as shkd_org", null, null); -// //当前业务单元的数据 -// MainEntityType uniondataEntityType = MetadataServiceHelper.getDataEntityType("cfm_loancontractbill"); -// String unionmainDbRouteKey = uniondataEntityType.getDBRouteKey(); -// StringBuilder sQlBuilder = getSQlBuilder(Arrays.asList(selorgDy.getLong("id")),selorgDy.getString("number")); -// DataSet nuion = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of(unionmainDbRouteKey), sQlBuilder.toString()); -// -// JoinDataSet join = res.join(balanceDataSet, JoinType.INNER);//连接组织 + JoinDataSet join = res.join(balanceDataSet, JoinType.INNER);//连接组织 //DataSet 转 DynamicObjectCollection // DynamicObjectCollection srcCollection = ORM.create().toPlainDynamicObjectCollection(res.copy()); // System.out.println(srcCollection); -// DataSet dataSet = join.on("orgnumber","shkd_orgnumber").select(new String[]{"shkd_orgnumber","shkd_org", "shkd_zqrzamount","shkd_dqjkamount","shkd_zqrzamount+shkd_dqjkamount as shkd_oneotnine"}).finish(); -// dataSet.addField("shkd_zqrzamount + shkd_dqjkamount","shkd_oneotnine");//1至9金额合计 -// return dataSet; - return res; + DataSet dataSet = join.on("shkd_orgnumber","shkd_orgnumber").select(new String[]{"shkd_orgnumber","shkd_org", + "shkd_zqrzamount","shkd_zqrzrzcb","shkd_zqrzqx", + "shkd_dqjkamount","shkd_dqjkrzcb","shkd_dqjkqx", + "shkd_zcqldamount","shkd_zcqldrzcb","shkd_zcqldqx", + "shkd_xmdkamount","shkd_xmdkrzcb","shkd_xmdkqx", + "shkd_rzzlamount","shkd_rzzlrzcb","shkd_rzzlqx", + "shkd_bxzjrzamount","shkd_bxzjrzrzcb","shkd_bxzjrzqx", + "shkd_yfpjamount","shkd_yfpjrzcb","shkd_yfpjqx", + "shkd_fjrqyjkamount","shkd_fjrqyjkrzcb","shkd_fjrqyjkqx", + "shkd_qtzwrzamount","shkd_qtzwrzrzcb","shkd_qtzwrzqx", + "shkd_jtnbjkamount","shkd_jtnbjkrzcb","shkd_jtnbjkqx", + "shkd_yxzamount","shkd_yxzrzcb","shkd_yxzqx", + "shkd_yxxtamount","shkd_yxxtrzcb","shkd_yxxtqx", + "shkd_qtqyrzamount","shkd_qtqyrzrzcb","shkd_qtqyrzqx", + //1至9合计 + "shkd_zqrzamount+shkd_dqjkamount+shkd_zcqldamount+shkd_xmdkamount+shkd_rzzlamount+shkd_bxzjrzamount+shkd_yfpjamount+shkd_fjrqyjkamount+shkd_qtzwrzamount as shkd_oneotnineje", + "case when (shkd_zqrzamount+shkd_dqjkamount+shkd_zcqldamount+shkd_xmdkamount+shkd_rzzlamount+shkd_bxzjrzamount+shkd_yfpjamount+shkd_fjrqyjkamount+shkd_qtzwrzamount+shkd_jtnbjkamount+shkd_yxzamount+shkd_yxxtamount+shkd_qtqyrzamount)=0 then 0 else " + + "(shkd_zqrzamount*shkd_zqrzrzcb+shkd_dqjkamount*shkd_dqjkrzcb+shkd_zcqldamount*shkd_zcqldrzcb+shkd_xmdkamount*shkd_xmdkrzcb+shkd_rzzlamount*shkd_rzzlrzcb+shkd_bxzjrzamount*shkd_bxzjrzrzcb+shkd_yfpjamount*shkd_yfpjrzcb+shkd_fjrqyjkamount*shkd_fjrqyjkrzcb+shkd_qtzwrzamount*shkd_qtzwrzrzcb)/(shkd_zqrzamount+shkd_dqjkamount+shkd_zcqldamount+shkd_xmdkamount+shkd_rzzlamount+shkd_bxzjrzamount+shkd_yfpjamount+shkd_fjrqyjkamount+shkd_qtzwrzamount) end as shkd_oneotninerzcb", + "case when (shkd_zqrzamount+shkd_dqjkamount+shkd_zcqldamount+shkd_xmdkamount+shkd_rzzlamount+shkd_bxzjrzamount+shkd_yfpjamount+shkd_fjrqyjkamount+shkd_qtzwrzamount+shkd_jtnbjkamount+shkd_yxzamount+shkd_yxxtamount+shkd_qtqyrzamount)=0 then 0 else " + + "(shkd_zqrzamount*shkd_zqrzqx+shkd_dqjkamount*shkd_dqjkqx+shkd_zcqldamount*shkd_zcqldqx+shkd_xmdkamount*shkd_xmdkqx+shkd_rzzlamount*shkd_rzzlqx+shkd_bxzjrzamount*shkd_bxzjrzqx+shkd_yfpjamount*shkd_yfpjqx+shkd_fjrqyjkamount*shkd_fjrqyjkqx+shkd_qtzwrzamount*shkd_qtzwrzqx)/(shkd_zqrzamount+shkd_dqjkamount+shkd_zcqldamount+shkd_xmdkamount+shkd_rzzlamount+shkd_bxzjrzamount+shkd_yfpjamount+shkd_fjrqyjkamount+shkd_qtzwrzamount) end as shkd_oneotnineqx", + + //1至10合计 + "shkd_zqrzamount+shkd_dqjkamount+shkd_zcqldamount+shkd_xmdkamount+shkd_rzzlamount+shkd_bxzjrzamount+shkd_yfpjamount+shkd_fjrqyjkamount+shkd_qtzwrzamount+shkd_jtnbjkamount as shkd_oneottenje", + "case when (shkd_zqrzamount+shkd_dqjkamount+shkd_zcqldamount+shkd_xmdkamount+shkd_rzzlamount+shkd_bxzjrzamount+shkd_yfpjamount+shkd_fjrqyjkamount+shkd_qtzwrzamount+shkd_jtnbjkamount)=0 then 0 else " + + "(shkd_zqrzamount*shkd_zqrzrzcb+shkd_dqjkamount*shkd_dqjkrzcb+shkd_zcqldamount*shkd_zcqldrzcb+shkd_xmdkamount*shkd_xmdkrzcb+shkd_rzzlamount*shkd_rzzlrzcb+shkd_bxzjrzamount*shkd_bxzjrzrzcb+shkd_yfpjamount*shkd_yfpjrzcb+shkd_fjrqyjkamount*shkd_fjrqyjkrzcb+shkd_qtzwrzamount*shkd_qtzwrzrzcb+shkd_jtnbjkamount*shkd_jtnbjkrzcb)/(shkd_zqrzamount+shkd_dqjkamount+shkd_zcqldamount+shkd_xmdkamount+shkd_rzzlamount+shkd_bxzjrzamount+shkd_yfpjamount+shkd_fjrqyjkamount+shkd_qtzwrzamount+shkd_jtnbjkamount) end as shkd_oneottenrzcb", + "case when (shkd_zqrzamount+shkd_dqjkamount+shkd_zcqldamount+shkd_xmdkamount+shkd_rzzlamount+shkd_bxzjrzamount+shkd_yfpjamount+shkd_fjrqyjkamount+shkd_qtzwrzamount+shkd_jtnbjkamount+shkd_yxzamount+shkd_yxxtamount+shkd_qtqyrzamount)=0 then 0 else " + + "(shkd_zqrzamount*shkd_zqrzqx+shkd_dqjkamount*shkd_dqjkqx+shkd_zcqldamount*shkd_zcqldqx+shkd_xmdkamount*shkd_xmdkqx+shkd_rzzlamount*shkd_rzzlqx+shkd_bxzjrzamount*shkd_bxzjrzqx+shkd_yfpjamount*shkd_yfpjqx+shkd_fjrqyjkamount*shkd_fjrqyjkqx+shkd_qtzwrzamount*shkd_qtzwrzqx+shkd_jtnbjkamount*shkd_jtnbjkqx)/(shkd_zqrzamount+shkd_dqjkamount+shkd_zcqldamount+shkd_xmdkamount+shkd_rzzlamount+shkd_bxzjrzamount+shkd_yfpjamount+shkd_fjrqyjkamount+shkd_qtzwrzamount+shkd_jtnbjkamount) end as shkd_oneottenqx", + + //11至13合计 + "shkd_yxzamount+shkd_yxxtamount+shkd_qtqyrzamount as shkd_11to13je", + "case when (shkd_yxzamount+shkd_yxxtamount+shkd_qtqyrzamount)=0 then 0 else " + + "(shkd_yxzamount*shkd_yxzrzcb+shkd_yxxtamount*shkd_yxxtrzcb+shkd_qtqyrzamount*shkd_qtqyrzrzcb)/(shkd_yxzamount+shkd_yxxtamount+shkd_qtqyrzamount) end as shkd_11to13rzcb", + "case when (shkd_yxzamount+shkd_yxxtamount+shkd_qtqyrzamount)=0 then 0 else " + + "(shkd_yxzamount*shkd_yxzqx+shkd_yxxtamount*shkd_yxxtqx+shkd_qtqyrzamount*shkd_qtqyrzqx)/(shkd_yxzamount+shkd_yxxtamount+shkd_qtqyrzamount) end as shkd_11to13qx", + + //1至13合计 + "shkd_zqrzamount+shkd_dqjkamount+shkd_zcqldamount+shkd_xmdkamount+shkd_rzzlamount+shkd_bxzjrzamount+shkd_yfpjamount+shkd_fjrqyjkamount+shkd_qtzwrzamount+shkd_jtnbjkamount+shkd_yxzamount+shkd_yxxtamount+shkd_qtqyrzamount as shkd_1to13je", + "case when (shkd_zqrzamount+shkd_dqjkamount+shkd_zcqldamount+shkd_xmdkamount+shkd_rzzlamount+shkd_bxzjrzamount+shkd_yfpjamount+shkd_fjrqyjkamount+shkd_qtzwrzamount+shkd_jtnbjkamount+shkd_yxzamount+shkd_yxxtamount+shkd_qtqyrzamount)=0 then 0 else " + + "(shkd_zqrzamount*shkd_zqrzrzcb+shkd_dqjkamount*shkd_dqjkrzcb+shkd_zcqldamount*shkd_zcqldrzcb+shkd_xmdkamount*shkd_xmdkrzcb+shkd_rzzlamount*shkd_rzzlrzcb+shkd_bxzjrzamount*shkd_bxzjrzrzcb+shkd_yfpjamount*shkd_yfpjrzcb+shkd_fjrqyjkamount*shkd_fjrqyjkrzcb+shkd_qtzwrzamount*shkd_qtzwrzrzcb+shkd_jtnbjkamount*shkd_jtnbjkrzcb+shkd_yxzamount*shkd_yxzrzcb+shkd_yxxtamount*shkd_yxxtrzcb+shkd_qtqyrzamount*shkd_qtqyrzrzcb)/(shkd_zqrzamount+shkd_dqjkamount+shkd_zcqldamount+shkd_xmdkamount+shkd_rzzlamount+shkd_bxzjrzamount+shkd_yfpjamount+shkd_fjrqyjkamount+shkd_qtzwrzamount+shkd_jtnbjkamount+shkd_yxzamount+shkd_yxxtamount+shkd_qtqyrzamount) end as shkd_1to13jrcb", + "case when (shkd_zqrzamount+shkd_dqjkamount+shkd_zcqldamount+shkd_xmdkamount+shkd_rzzlamount+shkd_bxzjrzamount+shkd_yfpjamount+shkd_fjrqyjkamount+shkd_qtzwrzamount+shkd_jtnbjkamount+shkd_yxzamount+shkd_yxxtamount+shkd_qtqyrzamount)=0 then 0 else " + + "(shkd_zqrzamount*shkd_zqrzqx+shkd_dqjkamount*shkd_dqjkqx+shkd_zcqldamount*shkd_zcqldqx+shkd_xmdkamount*shkd_xmdkqx+shkd_rzzlamount*shkd_rzzlqx+shkd_bxzjrzamount*shkd_bxzjrzqx+shkd_yfpjamount*shkd_yfpjqx+shkd_fjrqyjkamount*shkd_fjrqyjkqx+shkd_qtzwrzamount*shkd_qtzwrzqx+shkd_jtnbjkamount*shkd_jtnbjkqx+shkd_yxzamount*shkd_yxzqx+shkd_yxxtamount*shkd_yxxtqx+shkd_qtqyrzamount*shkd_qtqyrzqx)/(shkd_zqrzamount+shkd_dqjkamount+shkd_zcqldamount+shkd_xmdkamount+shkd_rzzlamount+shkd_bxzjrzamount+shkd_yfpjamount+shkd_fjrqyjkamount+shkd_qtzwrzamount+shkd_jtnbjkamount+shkd_yxzamount+shkd_yxxtamount+shkd_qtqyrzamount) end as shkd_1to13qx" + }).finish(); + return dataSet; } /* - * 银行借款合同拼接方法 + * * 拼接sql方法 * */ public StringBuilder getSQlBuilder(List dateList,List orgIds,String orgnumber,StringBuilder sqlBuilder){ @@ -140,27 +163,86 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { sqlBuilder.append("SELECT '"+orgnumber+"' as shkd_orgnumber, \n"); String zqrz = getrzpzId(FinanceVarietyEnum.zqrz, "cfm_financingvarieties");//获取债券融资的融资品种 String dqjk = getrzpzId(FinanceVarietyEnum.dqjk, "cfm_financingvarieties");//获取短期借款的融资品种 - sqlBuilder.append("SUM ( CASE WHEN rzpz in ("+zqrz+") THEN je ELSE 0 END ) AS shkd_zqrzamount,\n" + - "SUM ( CASE WHEN rzpz in ("+zqrz+") THEN je*zxll ELSE 0 END )/SUM ( CASE WHEN rzpz in ("+zqrz+") THEN je ELSE 0 END ) AS shkd_zqrzrzcb,\n" + - "SUM ( CASE WHEN rzpz in ("+zqrz+") THEN je*(y+m/12.0+d/365.0) ELSE 0 END )/SUM ( CASE WHEN rzpz in ("+zqrz+") THEN je ELSE 0 END ) AS shkd_zqrzqx ,\n");//债券融资 + String zcqld = getrzpzId(FinanceVarietyEnum.zcqld, "cfm_financingvarieties");//获取中长期流贷的融资品种 + String xmdk = getrzpzId(FinanceVarietyEnum.xmdk, "cfm_financingvarieties");//获取项目贷款的融资品种 + String bxzjrz = getrzpzId(FinanceVarietyEnum.bxzjrz, "cfm_financingvarieties");//获取保险资金融资的融资品种 + String fjrqyjk = getrzpzId(FinanceVarietyEnum.fjrqyjk, "cfm_financingvarieties");//获取非金融企业借款的融资品种 + Map qtzwrz = getrzpzIdmap(FinanceVarietyEnum.qtzwrz, "cfm_financingvarieties");//获取其他债务融资的融资品种 + String jtnbjk = getrzpzId(FinanceVarietyEnum.jtnbjk, "cfm_financingvarieties");//获取集团内部借款的融资品种 + String yxd = getrzpzId(FinanceVarietyEnum.yxd, "cfm_financingvarieties");//获取永续债的融资品种 + String yxxt = getrzpzId(FinanceVarietyEnum.yxxt, "cfm_financingvarieties");//获取永续信托的融资品种 + Map qtqyrz = getrzpzIdmap(FinanceVarietyEnum.qtqyrz, "cfm_financingvarieties");//获取其他权益融资的融资品种 + + + sqlBuilder.append("SUM ( CASE WHEN djlx='债券发行' AND rzpz in ("+zqrz+") THEN je ELSE 0 END ) AS shkd_zqrzamount,\n" + + "COALESCE(SUM(CASE WHEN djlx='债券发行' AND rzpz IN ("+zqrz+") THEN je*zxll ELSE 0 END)/NULLIF(SUM(CASE WHEN djlx='债券发行' AND rzpz IN ("+zqrz+") THEN je ELSE 0 END), 0),0) AS shkd_zqrzrzcb,\n" + + "COALESCE(SUM(CASE WHEN djlx='债券发行' AND rzpz IN ("+zqrz+") THEN je*(y + m/12.0 + d/365.0) ELSE 0 END)/NULLIF(SUM(CASE WHEN djlx='债券发行' AND rzpz IN ("+zqrz+") THEN je ELSE 0 END), 0),0) AS shkd_zqrzqx, \n");//债券融资 + + sqlBuilder.append("SUM ( CASE WHEN djlx='银行借款合同' AND rzpz in ("+dqjk+") THEN je ELSE 0 END ) AS shkd_dqjkamount,\n" + + "COALESCE(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+dqjk+") THEN je*zxll ELSE 0 END)/NULLIF(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+dqjk+") THEN je ELSE 0 END), 0),0) AS shkd_dqjkrzcb,\n" + + "COALESCE(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+dqjk+") THEN je*(y + m/12.0 + d/365.0) ELSE 0 END)/NULLIF(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+dqjk+") THEN je ELSE 0 END), 0),0) AS shkd_dqjkqx, \n");//短期借款 + + sqlBuilder.append("SUM ( CASE WHEN djlx='银行借款合同' AND rzpz in ("+zcqld+") THEN je ELSE 0 END ) AS shkd_zcqldamount,\n" + + "COALESCE(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+zcqld+") THEN je*zxll ELSE 0 END)/NULLIF(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+zcqld+") THEN je ELSE 0 END), 0),0) AS shkd_zcqldrzcb,\n" + + "COALESCE(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+zcqld+") THEN je*(y + m/12.0 + d/365.0) ELSE 0 END)/NULLIF(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+zcqld+") THEN je ELSE 0 END), 0),0) AS shkd_zcqldqx, \n");//中长期流贷 + + sqlBuilder.append("SUM ( CASE WHEN djlx='银行借款合同' AND rzpz in ("+xmdk+") THEN je ELSE 0 END ) AS shkd_xmdkamount,\n" + + "COALESCE(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+xmdk+") THEN je*zxll ELSE 0 END)/NULLIF(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+xmdk+") THEN je ELSE 0 END), 0),0) AS shkd_xmdkrzcb,\n" + + "COALESCE(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+xmdk+") THEN je*(y + m/12.0 + d/365.0) ELSE 0 END)/NULLIF(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+xmdk+") THEN je ELSE 0 END), 0),0) AS shkd_xmdkqx, \n");//项目贷款 + + sqlBuilder.append("SUM ( CASE WHEN djlx='融资租赁合同' THEN je ELSE 0 END ) AS shkd_rzzlamount,\n" + + "COALESCE(SUM(CASE WHEN djlx='融资租赁合同' THEN je*zxll ELSE 0 END)/NULLIF(SUM(CASE WHEN djlx='融资租赁合同' THEN je ELSE 0 END), 0),0) AS shkd_rzzlrzcb,\n" + + "COALESCE(SUM(CASE WHEN djlx='融资租赁合同' THEN je*(y + m/12.0 + d/365.0) ELSE 0 END)/NULLIF(SUM(CASE WHEN djlx='融资租赁合同' THEN je ELSE 0 END), 0),0) AS shkd_rzzlqx, \n");//融资租赁 + + sqlBuilder.append("SUM ( CASE WHEN djlx='银行借款合同' AND rzpz in ("+bxzjrz+") THEN je ELSE 0 END ) AS shkd_bxzjrzamount,\n" + + "COALESCE(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+bxzjrz+") THEN je*zxll ELSE 0 END)/NULLIF(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+bxzjrz+") THEN je ELSE 0 END), 0),0) AS shkd_bxzjrzrzcb,\n" + + "COALESCE(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+bxzjrz+") THEN je*(y + m/12.0 + d/365.0) ELSE 0 END)/NULLIF(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+bxzjrz+") THEN je ELSE 0 END), 0),0) AS shkd_bxzjrzqx, \n");//保险资金融资 + + sqlBuilder.append("SUM ( CASE WHEN djlx='开票登记' THEN je ELSE 0 END ) AS shkd_yfpjamount,\n" + + "0.0 AS shkd_yfpjrzcb,\n" + + "COALESCE(SUM(CASE WHEN djlx='开票登记' THEN je*(y + m/12.0 + d/365.0) ELSE 0 END)/NULLIF(SUM(CASE WHEN djlx='开票登记' THEN je ELSE 0 END), 0),0) AS shkd_yfpjqx, \n");//应付票据 + + sqlBuilder.append("SUM ( CASE WHEN zqrlx<>'innerunit' AND djlx='企业借款合同' AND rzpz in ("+fjrqyjk+") THEN je ELSE 0 END ) AS shkd_fjrqyjkamount,\n" + + "COALESCE(SUM(CASE WHEN zqrlx<>'innerunit' AND djlx='企业借款合同' AND rzpz IN ("+fjrqyjk+") THEN je*zxll ELSE 0 END)/NULLIF(SUM(CASE WHEN zqrlx<>'innerunit' AND djlx='企业借款合同' AND rzpz IN ("+fjrqyjk+") THEN je ELSE 0 END), 0),0) AS shkd_fjrqyjkrzcb,\n" + + "COALESCE(SUM(CASE WHEN zqrlx<>'innerunit' AND djlx='企业借款合同' AND rzpz IN ("+fjrqyjk+") THEN je*(y + m/12.0 + d/365.0) ELSE 0 END)/NULLIF(SUM(CASE WHEN zqrlx<>'innerunit' AND djlx='企业借款合同' AND rzpz IN ("+fjrqyjk+") THEN je ELSE 0 END), 0),0) AS shkd_fjrqyjkqx, \n");//非金融企业借款 + + sqlBuilder.append("SUM ( CASE WHEN (djlx='债券发行' AND rzpz in ("+qtzwrz.get("债券发行")+")) OR (djlx='银行借款合同' AND rzpz in ("+qtzwrz.get("银行借款合同")+")) THEN je ELSE 0 END ) AS shkd_qtzwrzamount,\n" + + "COALESCE(SUM(CASE WHEN (djlx='债券发行' AND rzpz in ("+qtzwrz.get("债券发行")+")) OR (djlx='银行借款合同' AND rzpz in ("+qtzwrz.get("银行借款合同")+")) THEN je*zxll ELSE 0 END)/NULLIF(SUM(CASE WHEN (djlx='债券发行' AND rzpz in ("+qtzwrz.get("债券发行")+")) OR (djlx='银行借款合同' AND rzpz in ("+qtzwrz.get("银行借款合同")+")) THEN je ELSE 0 END), 0),0) AS shkd_qtzwrzrzcb,\n" + + "COALESCE(SUM(CASE WHEN (djlx='债券发行' AND rzpz in ("+qtzwrz.get("债券发行")+")) OR (djlx='银行借款合同' AND rzpz in ("+qtzwrz.get("银行借款合同")+")) THEN je*(y + m/12.0 + d/365.0) ELSE 0 END)/NULLIF(SUM(CASE WHEN (djlx='债券发行' AND rzpz in ("+qtzwrz.get("债券发行")+")) OR (djlx='银行借款合同' AND rzpz in ("+qtzwrz.get("银行借款合同")+")) THEN je ELSE 0 END), 0),0) AS shkd_qtzwrzqx, \n");//其他债务融资 + + 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 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" + + "COALESCE(SUM(CASE WHEN djlx='债券发行' AND rzpz IN ("+yxd+") THEN je*(y + m/12.0 + d/365.0) ELSE 0 END)/NULLIF(SUM(CASE WHEN djlx='债券发行' AND rzpz IN ("+yxd+") THEN je ELSE 0 END), 0),0) AS shkd_yxzqx, \n");//永续债 + + sqlBuilder.append("SUM ( CASE WHEN djlx='银行借款合同' AND rzpz in ("+yxxt+") THEN je ELSE 0 END ) AS shkd_yxxtamount,\n" + + "COALESCE(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+yxxt+") THEN je*zxll ELSE 0 END)/NULLIF(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+yxxt+") THEN je ELSE 0 END), 0),0) AS shkd_yxxtrzcb,\n" + + "COALESCE(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+yxxt+") THEN je*(y + m/12.0 + d/365.0) ELSE 0 END)/NULLIF(SUM(CASE WHEN djlx='银行借款合同' AND rzpz IN ("+yxxt+") THEN je ELSE 0 END), 0),0) AS shkd_yxxtqx, \n");//永续信托 + + sqlBuilder.append("SUM ( CASE WHEN (djlx='银行借款合同' AND rzpz in ("+qtqyrz.get("银行借款合同")+")) OR (djlx='债权发行' AND rzpz in ("+qtqyrz.get("债券发行")+")) THEN je ELSE 0 END ) AS shkd_qtqyrzamount,\n" + + "COALESCE(SUM(CASE WHEN (djlx='银行借款合同' AND rzpz in ("+qtqyrz.get("银行借款合同")+")) OR (djlx='债权发行' AND rzpz in ("+qtqyrz.get("债券发行")+")) THEN je*zxll ELSE 0 END)/NULLIF(SUM(CASE WHEN (djlx='银行借款合同' AND rzpz in ("+qtqyrz.get("银行借款合同")+")) OR (djlx='债权发行' AND rzpz in ("+qtqyrz.get("债券发行")+")) THEN je ELSE 0 END), 0),0) AS shkd_qtqyrzrzcb,\n" + + "COALESCE(SUM(CASE WHEN (djlx='银行借款合同' AND rzpz in ("+qtqyrz.get("银行借款合同")+")) OR (djlx='债权发行' AND rzpz in ("+qtqyrz.get("债券发行")+")) THEN je*(y + m/12.0 + d/365.0) ELSE 0 END)/NULLIF(SUM(CASE WHEN (djlx='银行借款合同' AND rzpz in ("+qtqyrz.get("银行借款合同")+")) OR (djlx='债权发行' AND rzpz in ("+qtqyrz.get("债券发行")+")) THEN je ELSE 0 END), 0),0) AS shkd_qtqyrzqx \n");//其他权益融资 - sqlBuilder.append("SUM ( CASE WHEN rzpz in ("+dqjk+") THEN je ELSE 0 END ) AS shkd_dqjkamount,\n" + - "SUM ( CASE WHEN rzpz in ("+dqjk+") THEN je*zxll ELSE 0 END )/SUM ( CASE WHEN rzpz in ("+dqjk+") THEN je ELSE 0 END ) AS shkd_dqjkzrzcb,\n" + - "SUM ( CASE WHEN rzpz in ("+dqjk+") THEN je*(y+m/12.0+d/365.0) ELSE 0 END )/SUM ( CASE WHEN rzpz in ("+dqjk+") THEN je ELSE 0 END ) AS shkd_dqjkqx \n");//短期借款 sqlBuilder.append("FROM ( \n"); + sqlBuilder.append("SELECT\n" + - "t1.fbillno,t1.ffinproductid as rzpz,rpentry.fexdrawamount as je,e.forgid as zz,t.flatestrate as zxll,e.fterm AS qx,\n" + + "t1.fbillno,t1.ffinproductid as rzpz,rpentry.fexdrawamount as je,e.forgid as zz,t.flatestrate/100.0 as zxll,e.fterm AS qx,\n" + "CASE WHEN POSITION ( 'y' IN e.fterm ) > 0 THEN CAST ( SUBSTRING ( e.fterm FROM 1 FOR POSITION ( 'y' IN e.fterm ) - 1 ) AS INT ) ELSE 0 END AS y,\n" + "CASE WHEN POSITION ( 'm' IN e.fterm ) > 0 THEN CAST ( SUBSTRING ( e.fterm FROM CASE WHEN POSITION ( 'y' IN e.fterm ) > 0 THEN POSITION ( 'y' IN e.fterm ) + 1 ELSE 1 END FOR POSITION ( 'm' IN e.fterm ) - CASE WHEN POSITION ( 'y' IN e.fterm ) > 0 THEN POSITION ( 'y' IN e.fterm ) + 1 ELSE 1 END ) AS INT ) ELSE 0 END AS M,\n" + - "CASE WHEN POSITION ( 'd' IN e.fterm ) > 0 THEN CAST ( SUBSTRING ( e.fterm FROM CASE WHEN POSITION ( 'm' IN e.fterm ) > 0 THEN POSITION ( 'm' IN e.fterm ) + 1 WHEN POSITION ( 'y' IN e.fterm ) > 0 THEN POSITION ( 'y' IN e.fterm ) + 1 ELSE 1 END FOR POSITION ( 'd' IN e.fterm ) - CASE WHEN POSITION ( 'm' IN e.fterm ) > 0 THEN POSITION ( 'm' IN e.fterm ) + 1 WHEN POSITION ( 'y' IN e.fterm ) > 0 THEN POSITION ( 'y' IN e.fterm ) + 1 ELSE 1 END ) AS INT ) ELSE 0 END AS d \n" + + "CASE WHEN POSITION ( 'd' IN e.fterm ) > 0 THEN CAST ( SUBSTRING ( e.fterm FROM CASE WHEN POSITION ( 'm' IN e.fterm ) > 0 THEN POSITION ( 'm' IN e.fterm ) + 1 WHEN POSITION ( 'y' IN e.fterm ) > 0 THEN POSITION ( 'y' IN e.fterm ) + 1 ELSE 1 END FOR POSITION ( 'd' IN e.fterm ) - CASE WHEN POSITION ( 'm' IN e.fterm ) > 0 THEN POSITION ( 'm' IN e.fterm ) + 1 WHEN POSITION ( 'y' IN e.fterm ) > 0 THEN POSITION ( 'y' IN e.fterm ) + 1 ELSE 1 END ) AS INT ) ELSE 0 END AS d,\n" + + "'债券发行' AS djlx,\n" + + "'' AS zqrlx\n" + "FROM\n" + - " t_cfm_loanbill t1 \n" + - " INNER JOIN t_cfm_loanbill_e e ON e.fid = t1.fid \n" + - " INNER JOIN t_cfm_loanbill_t t ON t.fid = t1.fid \n" + - " INNER JOIN t_cfm_loanbill_rp_entry rpentry ON rpentry.fid = t1.fid \n" + + " t_cfm_loanbill t1 -- 债券发行\n" + + " INNER JOIN t_cfm_loanbill_e e ON e.fid = t1.fid -- 内连接组织拆分表\n" + + " INNER JOIN t_cfm_loanbill_t t ON t.fid = t1.fid -- 内连接最新利率拆分表\n" + + " INNER JOIN t_cfm_loanbill_rp_entry rpentry ON rpentry.fid = t1.fid -- 债券发行明细表\n" + "WHERE\n" + - " t1.fbillstatus='C'\n" + + " t1.fbillstatus='C' \n" + " and e.forgid IN ( "+result+" )\n" + " and t1.fbizdate <= '"+dateList.get(0)+"'\n" + " and rpentry.fexrepaymentdate > '"+dateList.get(0)+"' \n");//债券发行表 @@ -168,23 +250,85 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { sqlBuilder.append("UNION ALL \n"); sqlBuilder.append("SELECT \n" + - " t2.fbillno as fbillno,COALESCE( NULLIF ( t2.fk_shkd_basedatafield, 0 ), t2.ffinproductid ) AS rzpz,rpentry.fexdrawamount as je,e.forgid as zz ,t.flatestrate as zxll,CONCAT(TIMESTAMPDIFF(YEAR, t3.fbizdate, rpentry.fexrepaymentdate), 'y',TIMESTAMPDIFF(MONTH, t3.fbizdate, rpentry.fexrepaymentdate) % 12, 'm',DATEDIFF(DAY,t3.fbizdate, rpentry.fexrepaymentdate) % 30, 'd') AS qx,\n" + + " t2.fbillno as fbillno,COALESCE( NULLIF ( t2.fk_shkd_basedatafield, 0 ), t2.ffinproductid ) AS rzpz,rpentry.fexdrawamount as je,e.forgid as zz ,t.flatestrate/100.0 as zxll,CONCAT(TIMESTAMPDIFF(YEAR, t3.fbizdate, rpentry.fexrepaymentdate), 'y',TIMESTAMPDIFF(MONTH, t3.fbizdate, rpentry.fexrepaymentdate) % 12, 'm',DATEDIFF(DAY,t3.fbizdate, rpentry.fexrepaymentdate) % 30, 'd') AS qx,\n" + " TIMESTAMPDIFF(YEAR, t3.fbizdate, rpentry.fexrepaymentdate) AS y,\n" + " TIMESTAMPDIFF(MONTH, t3.fbizdate, rpentry.fexrepaymentdate) % 12 AS m,\n" + - " DATEDIFF(DAY,t3.fbizdate, rpentry.fexrepaymentdate) % 30 AS d\n" + + " DATEDIFF(DAY,t3.fbizdate, rpentry.fexrepaymentdate) % 30 AS d,\n" + + " '银行借款合同' AS djlx,\n" + + " '' AS zqrlx\n" + "FROM\n" + - " t_cfm_loancontractbill t2 \n" + - " INNER JOIN t_cfm_loancontractbill_e e ON e.fid = t2.fid \n" + - " INNER JOIN t_cfm_loanbill_e e1 ON e1.floancontractbillid = t2.fid \n" + - " INNER JOIN t_cfm_loanbill t3 ON t3.fid = e1.fid \n" + - " INNER JOIN t_cfm_loanbill_rp_entry rpentry ON rpentry.fid = t3.fid \n" + - " INNER JOIN t_cfm_loanbill_t t ON t.fid = t3.fid \n" + + " t_cfm_loancontractbill t2 --银行借款合同\n" + + " INNER JOIN t_cfm_loancontractbill_e e ON e.fid = t2.fid -- 内连接组织拆分表\n" + + " INNER JOIN t_cfm_loanbill_e e1 ON e1.floancontractbillid = t2.fid -- 内连接合同拆分表\n" + + " INNER JOIN t_cfm_loanbill t3 ON t3.fid = e1.fid -- 银行提款处理表\n" + + " INNER JOIN t_cfm_loanbill_rp_entry rpentry ON rpentry.fid = t3.fid -- 银行提款处理明细表\n" + + " INNER JOIN t_cfm_loanbill_t t ON t.fid = t3.fid -- 内连接最新利率拆分表\n" + "WHERE\n" + - " t2.fbillstatus='C' and e.floantype<>'finlease' \n" + - " AND t3.fbillstatus='C'\n" + - " and e.forgid IN ( "+result+" )\n" + - " and t3.fbizdate <= '"+dateList.get(0)+"'\n" + - " and rpentry.fexrepaymentdate > '"+dateList.get(0)+"' \n");//借款合同表 + " t2.fbillstatus='C' AND e.floantype IN ('loan','sl')\n" + + " AND t3.fbillstatus='C'\n" + + " and e.forgid IN ( "+result+" ) \n" + + " and t3.fbizdate <= '"+dateList.get(0)+"'\n" + + " and rpentry.fexrepaymentdate > '"+dateList.get(0)+"' \n");//借款合同表 + + sqlBuilder.append("UNION ALL \n"); + + sqlBuilder.append("SELECT\n" + + " t4.fbillno,t4.ffinproductid as rzpz,planmx.frentamt as je,e.forgid as zz,f.flatestrate/100.0 as zxll,CONCAT(TIMESTAMPDIFF(YEAR, t4.fstartdate, planmx.fpaydate), 'y',TIMESTAMPDIFF(MONTH, t4.fstartdate, planmx.fpaydate) % 12, 'm',DATEDIFF(DAY,t4.fstartdate, planmx.fpaydate) % 30, 'd') AS qx,\n" + + " TIMESTAMPDIFF(YEAR, t4.fstartdate, planmx.fpaydate) AS y,\n" + + " 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" + + "FROM\n" + + " t_cfm_loancontractbill t4 -- 融资租赁合同\n" + + " INNER JOIN t_cfm_loancontractbill_e e ON e.fid = t4.fid -- 内连接组织拆分表\n" + + " INNER JOIN t_cfm_loancontractbill_f f ON f.fid = t4.fid -- 内连接最新利率拆分表\n" + + " INNER JOIN t_cfm_contractbill_plan planmx ON planmx.fid = t4.fid -- 融资租赁合同明细表\n" + + "WHERE\n" + + " t4.fbillstatus='C' AND e.floantype='finlease'\n" + + " and e.forgid IN ( "+result+" )\n" + + " and t4.fstartdate <= '"+dateList.get(0)+"'\n" + + " and planmx.fpaydate > '"+dateList.get(0)+"' \n");//融资租赁合同 + + sqlBuilder.append("UNION ALL \n"); + + sqlBuilder.append("SELECT\n" + + " t5.fbillno, 6666666666666666666 as rzpz,t5.famount as je,t5.fcompanyid as zz,0/100.0 as zxll,CONCAT(TIMESTAMPDIFF(YEAR, t5.fissuedate, t5.fdraftbillexpiredate), 'y',TIMESTAMPDIFF(MONTH, t5.fissuedate, t5.fdraftbillexpiredate) % 12, 'm',DATEDIFF(DAY,t5.fissuedate, t5.fdraftbillexpiredate) % 30, 'd') AS qx,\n" + + " TIMESTAMPDIFF(YEAR, t5.fissuedate, t5.fdraftbillexpiredate) AS y,\n" + + " 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" + + "FROM\n" + + " t_cdm_draftbill t5 -- 开票登记\n" + + "WHERE\n" + + " t5.fbillstatus='C'\n" + + " and t5.fcompanyid IN ( "+result+" )\n" + + " and t5.fissuedate <= '"+dateList.get(0)+"'\n" + + " and t5.fdraftbillexpiredate > '"+dateList.get(0)+"' \n");//开票登记 + + sqlBuilder.append("UNION ALL \n"); + + sqlBuilder.append(" SELECT \n" + + " t2.fbillno as fbillno,COALESCE( NULLIF ( t2.fk_shkd_basedatafield, 0 ), t2.ffinproductid ) AS rzpz,rpentry.fexdrawamount as je,e.forgid as zz ,t.flatestrate/100.0 as zxll,CONCAT(TIMESTAMPDIFF(YEAR, t3.fbizdate, rpentry.fexrepaymentdate), 'y',TIMESTAMPDIFF(MONTH, t3.fbizdate, rpentry.fexrepaymentdate) % 12, 'm',DATEDIFF(DAY,t3.fbizdate, rpentry.fexrepaymentdate) % 30, 'd') AS qx,\n" + + " TIMESTAMPDIFF(YEAR, t3.fbizdate, rpentry.fexrepaymentdate) AS y,\n" + + " 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" + + "FROM\n" + + " t_cfm_loancontractbill t2 --企业借款合同\n" + + " INNER JOIN t_cfm_loancontractbill_e e ON e.fid = t2.fid -- 内连接组织拆分表\n" + + " INNER JOIN t_cfm_loanbill_e e1 ON e1.floancontractbillid = t2.fid -- 内连接合同拆分表\n" + + " INNER JOIN t_cfm_loanbill t3 ON t3.fid = e1.fid -- 银行提款处理表\n" + + " INNER JOIN t_cfm_loanbill_rp_entry rpentry ON rpentry.fid = t3.fid -- 银行提款处理明细表\n" + + " INNER JOIN t_cfm_loanbill_t t ON t.fid = t3.fid -- 内连接最新利率拆分表\n" + + "WHERE\n" + + " t2.fbillstatus='C' AND e.floantype IN ('ec','entrust')\n" + + " AND t3.fbillstatus='C'\n" + + " and e.forgid IN ( "+result+" ) \n" + + " and t3.fbizdate <= '"+dateList.get(0)+"'\n" + + " and rpentry.fexrepaymentdate > '"+dateList.get(0)+"' \n");//企业借款合同 sqlBuilder.append(") AS hbb"); return sqlBuilder; @@ -202,7 +346,6 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { Long id = Long.valueOf(treeNode.getId());//业务单元id List orgIds = new ArrayList<>(1); orgIds.add(id); - DynamicObject bos_org = BusinessDataServiceHelper.loadSingle(id,"bos_org");//直接下级业务单元 //获取该组织的全部下级业务单元 List allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, true);//包括自己 // OrgTreeParam param = new OrgTreeParam(); @@ -224,4 +367,22 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin { .collect(Collectors.joining(",")); return result; } + + + public Map getrzpzIdmap(Map> map ,String entity){ + Map resmap = new HashMap<>(); + for (Map.Entry> entry : map.entrySet()){ + String key = entry.getKey(); + List values = entry.getValue(); + QFilter qFilter = new QFilter("name", QCP.in, values); + DynamicObject[] ids = BusinessDataServiceHelper.load(entity, "id", qFilter.toArray()); + // 使用 Stream 来将 ids 数组转为逗号分隔的字符串 + String result = Arrays.stream(ids) + .map(id -> id.getString("id")) // 假设 getId() 返回 id 的值 + .collect(Collectors.joining(",")); + resmap.put(key,result); + } + + return resmap; + } } 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 75e13ac..67cd093 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 @@ -1,8 +1,7 @@ package shkd.sys.sys.plugin.report.domain; -import java.util.Arrays; -import java.util.List; +import java.util.*; /* * @@ -15,4 +14,37 @@ public class FinanceVarietyEnum { //②短期借款 public static final List dqjk = Arrays.asList("短期借款"); + + //③中长期流贷 + public static final List zcqld = Arrays.asList("中长期流动资金贷款"); + + //④项目贷款 + public static final List xmdk = Arrays.asList("固定资产贷款", "银行并购贷款"); + + //⑥保险资金融资 + public static final List bxzjrz = Arrays.asList("保险资金融资"); + + //⑧非金融企业借款 + public static final List fjrqyjk = Arrays.asList("短期借款","中长期流动资金贷款","固定资产贷款"); + + //⑨其他债务融资 + public static final Map> qtzwrz = new HashMap() {{ + put("债券发行", new ArrayList<>(Arrays.asList("资产支持专项计划", "资产支持票据"))); + put("银行借款合同", new ArrayList<>(Arrays.asList("债权融资计划"))); + }}; + + //⑩集团内部借款 + public static final List jtnbjk = Arrays.asList("短期借款","中长期流动资金贷款", "固定资产贷款"); + + //⑪永续债 + public static final List yxd = Arrays.asList("可续期公司债券","永续中期票据"); + + //⑫永续信托 + public static final List yxxt = Arrays.asList("永续信托"); + + //⑬其他权益融资 + public static final Map> qtqyrz = new HashMap() {{ + put("债券发行", new ArrayList<>(Arrays.asList("并表ABN"))); + put("银行借款合同", new ArrayList<>(Arrays.asList("其他权益融资"))); + }}; }