parent
5b90bed913
commit
84a2521dd2
|
@ -3,6 +3,7 @@ package shkd.sys.sys.plugin.report;
|
||||||
import kd.bos.bill.BillShowParameter;
|
import kd.bos.bill.BillShowParameter;
|
||||||
import kd.bos.bill.OperationStatus;
|
import kd.bos.bill.OperationStatus;
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
import kd.bos.dataentity.entity.LocaleString;
|
import kd.bos.dataentity.entity.LocaleString;
|
||||||
import kd.bos.entity.datamodel.IDataModel;
|
import kd.bos.entity.datamodel.IDataModel;
|
||||||
import kd.bos.entity.datamodel.events.PackageDataEvent;
|
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.ClientProperties;
|
||||||
import kd.bos.form.FormShowParameter;
|
import kd.bos.form.FormShowParameter;
|
||||||
import kd.bos.form.ShowType;
|
import kd.bos.form.ShowType;
|
||||||
|
import kd.bos.form.control.events.BeforeItemClickEvent;
|
||||||
import kd.bos.form.control.events.FilterContainerInitEvent;
|
import kd.bos.form.control.events.FilterContainerInitEvent;
|
||||||
import kd.bos.form.events.HyperLinkClickEvent;
|
import kd.bos.form.events.HyperLinkClickEvent;
|
||||||
import kd.bos.form.events.HyperLinkClickListener;
|
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.report.plugin.AbstractReportFormPlugin;
|
||||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
import kd.bos.servicehelper.QueryServiceHelper;
|
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 org.apache.commons.lang3.time.DateUtils;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class FinanceReportFormPlugin extends AbstractReportFormPlugin implements HyperLinkClickListener {
|
public class FinanceReportFormPlugin extends AbstractReportFormPlugin implements HyperLinkClickListener {
|
||||||
FilterContainerInitEvent contInitEvent;
|
@Override
|
||||||
ReportQueryParam queryParam;
|
public void packageData(PackageDataEvent evt) {
|
||||||
|
|
||||||
DynamicObject selorg;
|
// if ("shkd_orgnumber".equals(((ReportColumn)evt.getSource()).getFieldKey())){
|
||||||
// @Override
|
// String formatValue = (String)evt.getFormatValue();
|
||||||
// public void packageData(PackageDataEvent evt) {
|
// DynamicObject selorg = QueryServiceHelper.queryOne("bos_org", "id,name,number", (new QFilter("number", QCP.equals, formatValue)).toArray());
|
||||||
//
|
// Long pkValue = selorg.getLong("id");
|
||||||
// if(evt.getFormatValue() != null && (evt.getFormatValue().toString().startsWith("139")
|
// List<Long> orgIds = new ArrayList<>(1);
|
||||||
//
|
// orgIds.add(pkValue);
|
||||||
// || evt.getFormatValue().toString().startsWith("张")
|
// List<Long> allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, false);//不包括自己
|
||||||
//
|
// if (allSubordinateOrgs.size()==0){
|
||||||
// || evt.getFormatValue().toString().startsWith("00"))){
|
// evt.getNoLinkKey().add(((ReportColumn)evt.getSource()).getFieldKey());
|
||||||
//
|
// }
|
||||||
// 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<Long> orgIds = new ArrayList<>(1);
|
||||||
|
orgIds.add(pkValue);
|
||||||
|
List<Long> allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, false);//不包括自己
|
||||||
|
if (allSubordinateOrgs.size()==0){
|
||||||
|
evt.getNoLinkKey().add(((ReportColumn)evt.getSource()).getFieldKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerListener(EventObject e) {
|
public void registerListener(EventObject e) {
|
||||||
super.registerListener(e);
|
super.registerListener(e);
|
||||||
|
this.addItemClickListeners("toolbarap");
|
||||||
ReportList reportlistap = this.getView().getControl("reportlistap");
|
ReportList reportlistap = this.getView().getControl("reportlistap");
|
||||||
reportlistap.addHyperClickListener(this::hyperLinkClick);
|
reportlistap.addHyperClickListener(this::hyperLinkClick);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void hyperLinkClick(HyperLinkClickEvent hyperLinkClickEvent) {
|
public void beforeItemClick(BeforeItemClickEvent evt) {
|
||||||
if ("shkd_org".equals(hyperLinkClickEvent.getFieldName())) {
|
super.beforeItemClick(evt);
|
||||||
|
String itemKey = evt.getItemKey();
|
||||||
|
if ("shkd_break".equals(itemKey)){
|
||||||
ReportFilter filter =this.getView().getControl("reportfilterap");
|
ReportFilter filter =this.getView().getControl("reportfilterap");
|
||||||
IDataModel model = this.getView().getModel();
|
DynamicObject shkd_selorg = (DynamicObject) this.getModel().getValue("shkd_selorg");
|
||||||
String name = (String) hyperLinkClickEvent.getRowData().get(0);//公司名称
|
DynamicObject single = BusinessDataServiceHelper.loadSingle(shkd_selorg.getLong("id"), "bos_org");
|
||||||
DynamicObject selorg = QueryServiceHelper.queryOne("bos_org", "id,name,number", (new QFilter("name", QCP.equals, name)).toArray());
|
DynamicObjectCollection structure = single.getDynamicObjectCollection("structure");
|
||||||
Long pkValue = selorg.getLong("id");
|
DynamicObject viewparent=null;
|
||||||
DynamicObject single = BusinessDataServiceHelper.loadSingle(pkValue, "bos_org");
|
for (DynamicObject dynamicObject : structure) {
|
||||||
this.getModel().setValue("shkd_selorg",single);
|
DynamicObject fviewid = dynamicObject.getDynamicObject("view");
|
||||||
Object shkd_selorg = this.getView().getModel().getValue("shkd_selorg");
|
if (OrgViewType.OrgUnit.equals(fviewid.getString("number"))){
|
||||||
filter.search();
|
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
|
@Override
|
||||||
protected void filterContainerInit(FilterContainerInitEvent contInitEvent, ReportQueryParam queryParam) {
|
protected void filterContainerInit(FilterContainerInitEvent contInitEvent, ReportQueryParam queryParam) {
|
||||||
this.contInitEvent= contInitEvent;
|
|
||||||
this.queryParam= queryParam;
|
|
||||||
super.filterContainerInit(contInitEvent, queryParam);
|
super.filterContainerInit(contInitEvent, queryParam);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,8 @@ import kd.bos.entity.report.FastFilter;
|
||||||
import kd.bos.entity.report.FilterItemInfo;
|
import kd.bos.entity.report.FilterItemInfo;
|
||||||
import kd.bos.entity.report.ReportQueryParam;
|
import kd.bos.entity.report.ReportQueryParam;
|
||||||
import kd.bos.entity.tree.TreeNode;
|
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.OrgTreeBuildType;
|
||||||
import kd.bos.org.model.OrgTreeParam;
|
import kd.bos.org.model.OrgTreeParam;
|
||||||
import kd.bos.orm.ORM;
|
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.OrgUnitServiceHelper;
|
||||||
import kd.bos.servicehelper.org.OrgViewType;
|
import kd.bos.servicehelper.org.OrgViewType;
|
||||||
import kd.bos.util.CollectionUtils;
|
import kd.bos.util.CollectionUtils;
|
||||||
|
import shkd.sys.sys.plugin.form.PaymentProcessingBillPlugin;
|
||||||
import shkd.sys.sys.plugin.report.domain.FinanceVarietyEnum;
|
import shkd.sys.sys.plugin.report.domain.FinanceVarietyEnum;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
@ -31,6 +34,8 @@ import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class FinanceReportPlugin extends AbstractReportListDataPlugin {
|
public class FinanceReportPlugin extends AbstractReportListDataPlugin {
|
||||||
|
|
||||||
|
private static final Log logger = LogFactory.getLog(FinanceReportPlugin.class);
|
||||||
public List<QFilter> getListQFilter(ReportQueryParam reportQueryParam) {
|
public List<QFilter> getListQFilter(ReportQueryParam reportQueryParam) {
|
||||||
//过滤条件数组
|
//过滤条件数组
|
||||||
ArrayList<QFilter> filters = new ArrayList<>();
|
ArrayList<QFilter> filters = new ArrayList<>();
|
||||||
|
@ -55,20 +60,6 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin {
|
||||||
return filters;
|
return filters;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* 将过滤条件存在集合中
|
|
||||||
* */
|
|
||||||
private void getFilterList(List<QFilter> qFilters, List<String> orgIds, List<String> 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
|
@Override
|
||||||
public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable {
|
public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable {
|
||||||
|
@ -87,7 +78,6 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin {
|
||||||
|
|
||||||
HashMap<Long, List<Long>> map = new HashMap<>();//组织层级关系
|
HashMap<Long, List<Long>> map = new HashMap<>();//组织层级关系
|
||||||
getOrgrelate(map, selorgDy);
|
getOrgrelate(map, selorgDy);
|
||||||
System.out.println(map);
|
|
||||||
//根据组织关系配置sql
|
//根据组织关系配置sql
|
||||||
StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ ");
|
StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ ");
|
||||||
int size = map.size();
|
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 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);
|
DataSet balanceDataSet = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(),"bos_org","id,number as shkd_orgnumber,name as shkd_org", null, null);
|
||||||
|
|
||||||
// //当前业务单元的数据
|
JoinDataSet join = res.join(balanceDataSet, JoinType.INNER);//连接组织
|
||||||
// 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);//连接组织
|
|
||||||
//DataSet 转 DynamicObjectCollection
|
//DataSet 转 DynamicObjectCollection
|
||||||
// DynamicObjectCollection srcCollection = ORM.create().toPlainDynamicObjectCollection(res.copy());
|
// DynamicObjectCollection srcCollection = ORM.create().toPlainDynamicObjectCollection(res.copy());
|
||||||
// System.out.println(srcCollection);
|
// 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 dataSet = join.on("shkd_orgnumber","shkd_orgnumber").select(new String[]{"shkd_orgnumber","shkd_org",
|
||||||
// dataSet.addField("shkd_zqrzamount + shkd_dqjkamount","shkd_oneotnine");//1至9金额合计
|
"shkd_zqrzamount","shkd_zqrzrzcb","shkd_zqrzqx",
|
||||||
// return dataSet;
|
"shkd_dqjkamount","shkd_dqjkrzcb","shkd_dqjkqx",
|
||||||
return res;
|
"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方法
|
* 拼接sql方法
|
||||||
* */
|
* */
|
||||||
public StringBuilder getSQlBuilder(List<String> dateList,List<Long> orgIds,String orgnumber,StringBuilder sqlBuilder){
|
public StringBuilder getSQlBuilder(List<String> dateList,List<Long> orgIds,String orgnumber,StringBuilder sqlBuilder){
|
||||||
|
@ -140,27 +163,86 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin {
|
||||||
sqlBuilder.append("SELECT '"+orgnumber+"' as shkd_orgnumber, \n");
|
sqlBuilder.append("SELECT '"+orgnumber+"' as shkd_orgnumber, \n");
|
||||||
String zqrz = getrzpzId(FinanceVarietyEnum.zqrz, "cfm_financingvarieties");//获取债券融资的融资品种
|
String zqrz = getrzpzId(FinanceVarietyEnum.zqrz, "cfm_financingvarieties");//获取债券融资的融资品种
|
||||||
String dqjk = getrzpzId(FinanceVarietyEnum.dqjk, "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" +
|
String zcqld = getrzpzId(FinanceVarietyEnum.zcqld, "cfm_financingvarieties");//获取中长期流贷的融资品种
|
||||||
"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" +
|
String xmdk = getrzpzId(FinanceVarietyEnum.xmdk, "cfm_financingvarieties");//获取项目贷款的融资品种
|
||||||
"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 bxzjrz = getrzpzId(FinanceVarietyEnum.bxzjrz, "cfm_financingvarieties");//获取保险资金融资的融资品种
|
||||||
|
String fjrqyjk = getrzpzId(FinanceVarietyEnum.fjrqyjk, "cfm_financingvarieties");//获取非金融企业借款的融资品种
|
||||||
|
Map<String, String> 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<String, String> 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("FROM ( \n");
|
||||||
|
|
||||||
sqlBuilder.append("SELECT\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 ( '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 ( '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" +
|
"FROM\n" +
|
||||||
" t_cfm_loanbill t1 \n" +
|
" t_cfm_loanbill t1 -- 债券发行\n" +
|
||||||
" INNER JOIN t_cfm_loanbill_e e ON e.fid = t1.fid \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_t t ON t.fid = t1.fid -- 内连接最新利率拆分表\n" +
|
||||||
" INNER JOIN t_cfm_loanbill_rp_entry rpentry ON rpentry.fid = t1.fid \n" +
|
" INNER JOIN t_cfm_loanbill_rp_entry rpentry ON rpentry.fid = t1.fid -- 债券发行明细表\n" +
|
||||||
"WHERE\n" +
|
"WHERE\n" +
|
||||||
" t1.fbillstatus='C'\n" +
|
" t1.fbillstatus='C' \n" +
|
||||||
" and e.forgid IN ( "+result+" )\n" +
|
" and e.forgid IN ( "+result+" )\n" +
|
||||||
" and t1.fbizdate <= '"+dateList.get(0)+"'\n" +
|
" and t1.fbizdate <= '"+dateList.get(0)+"'\n" +
|
||||||
" and rpentry.fexrepaymentdate > '"+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("UNION ALL \n");
|
||||||
|
|
||||||
sqlBuilder.append("SELECT \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(YEAR, t3.fbizdate, rpentry.fexrepaymentdate) AS y,\n" +
|
||||||
" TIMESTAMPDIFF(MONTH, t3.fbizdate, rpentry.fexrepaymentdate) % 12 AS m,\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" +
|
"FROM\n" +
|
||||||
" t_cfm_loancontractbill t2 \n" +
|
" t_cfm_loancontractbill t2 --银行借款合同\n" +
|
||||||
" INNER JOIN t_cfm_loancontractbill_e e ON e.fid = t2.fid \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_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 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_rp_entry rpentry ON rpentry.fid = t3.fid -- 银行提款处理明细表\n" +
|
||||||
" INNER JOIN t_cfm_loanbill_t t ON t.fid = t3.fid \n" +
|
" INNER JOIN t_cfm_loanbill_t t ON t.fid = t3.fid -- 内连接最新利率拆分表\n" +
|
||||||
"WHERE\n" +
|
"WHERE\n" +
|
||||||
" t2.fbillstatus='C' and e.floantype<>'finlease' \n" +
|
" t2.fbillstatus='C' AND e.floantype IN ('loan','sl')\n" +
|
||||||
" AND t3.fbillstatus='C'\n" +
|
" AND t3.fbillstatus='C'\n" +
|
||||||
" and e.forgid IN ( "+result+" )\n" +
|
" and e.forgid IN ( "+result+" ) \n" +
|
||||||
" and t3.fbizdate <= '"+dateList.get(0)+"'\n" +
|
" and t3.fbizdate <= '"+dateList.get(0)+"'\n" +
|
||||||
" and rpentry.fexrepaymentdate > '"+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");
|
sqlBuilder.append(") AS hbb");
|
||||||
return sqlBuilder;
|
return sqlBuilder;
|
||||||
|
@ -202,7 +346,6 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin {
|
||||||
Long id = Long.valueOf(treeNode.getId());//业务单元id
|
Long id = Long.valueOf(treeNode.getId());//业务单元id
|
||||||
List<Long> orgIds = new ArrayList<>(1);
|
List<Long> orgIds = new ArrayList<>(1);
|
||||||
orgIds.add(id);
|
orgIds.add(id);
|
||||||
DynamicObject bos_org = BusinessDataServiceHelper.loadSingle(id,"bos_org");//直接下级业务单元
|
|
||||||
//获取该组织的全部下级业务单元
|
//获取该组织的全部下级业务单元
|
||||||
List<Long> allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, true);//包括自己
|
List<Long> allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, true);//包括自己
|
||||||
// OrgTreeParam param = new OrgTreeParam();
|
// OrgTreeParam param = new OrgTreeParam();
|
||||||
|
@ -224,4 +367,22 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin {
|
||||||
.collect(Collectors.joining(","));
|
.collect(Collectors.joining(","));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Map<String, String> getrzpzIdmap(Map<String, List<String>> map ,String entity){
|
||||||
|
Map<String, String> resmap = new HashMap<>();
|
||||||
|
for (Map.Entry<String, List<String>> entry : map.entrySet()){
|
||||||
|
String key = entry.getKey();
|
||||||
|
List<String> 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
package shkd.sys.sys.plugin.report.domain;
|
package shkd.sys.sys.plugin.report.domain;
|
||||||
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
|
@ -15,4 +14,37 @@ public class FinanceVarietyEnum {
|
||||||
|
|
||||||
//②短期借款
|
//②短期借款
|
||||||
public static final List<String> dqjk = Arrays.asList("短期借款");
|
public static final List<String> dqjk = Arrays.asList("短期借款");
|
||||||
|
|
||||||
|
//③中长期流贷
|
||||||
|
public static final List<String> zcqld = Arrays.asList("中长期流动资金贷款");
|
||||||
|
|
||||||
|
//④项目贷款
|
||||||
|
public static final List<String> xmdk = Arrays.asList("固定资产贷款", "银行并购贷款");
|
||||||
|
|
||||||
|
//⑥保险资金融资
|
||||||
|
public static final List<String> bxzjrz = Arrays.asList("保险资金融资");
|
||||||
|
|
||||||
|
//⑧非金融企业借款
|
||||||
|
public static final List<String> fjrqyjk = Arrays.asList("短期借款","中长期流动资金贷款","固定资产贷款");
|
||||||
|
|
||||||
|
//⑨其他债务融资
|
||||||
|
public static final Map<String, List<String>> qtzwrz = new HashMap() {{
|
||||||
|
put("债券发行", new ArrayList<>(Arrays.asList("资产支持专项计划", "资产支持票据")));
|
||||||
|
put("银行借款合同", new ArrayList<>(Arrays.asList("债权融资计划")));
|
||||||
|
}};
|
||||||
|
|
||||||
|
//⑩集团内部借款
|
||||||
|
public static final List<String> jtnbjk = Arrays.asList("短期借款","中长期流动资金贷款", "固定资产贷款");
|
||||||
|
|
||||||
|
//⑪永续债
|
||||||
|
public static final List<String> yxd = Arrays.asList("可续期公司债券","永续中期票据");
|
||||||
|
|
||||||
|
//⑫永续信托
|
||||||
|
public static final List<String> yxxt = Arrays.asList("永续信托");
|
||||||
|
|
||||||
|
//⑬其他权益融资
|
||||||
|
public static final Map<String, List<String>> qtqyrz = new HashMap() {{
|
||||||
|
put("债券发行", new ArrayList<>(Arrays.asList("并表ABN")));
|
||||||
|
put("银行借款合同", new ArrayList<>(Arrays.asList("其他权益融资")));
|
||||||
|
}};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue