parent
da1cff7235
commit
191ecc255f
|
@ -382,9 +382,9 @@ public class FinanceReportFormPlugin extends AbstractReportFormPlugin implement
|
|||
BigDecimal shkd_jtnbjkrzcb=new BigDecimal(0);//⑩集团内部借款融资成本(%)
|
||||
BigDecimal shkd_jtnbjkqx=new BigDecimal(0);//⑩集团内部借款期限
|
||||
for (DynamicObject rowDatum : rowData) {
|
||||
shkd_jtnbjkamount.subtract(rowDatum.getBigDecimal("shkd_jtnbjkamount"));
|
||||
shkd_jtnbjkrzcb.subtract(rowDatum.getBigDecimal("shkd_jtnbjkrzcb"));
|
||||
shkd_jtnbjkqx.subtract(rowDatum.getBigDecimal("shkd_jtnbjkqx"));
|
||||
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"));
|
||||
}
|
||||
DynamicObject dynamicObject = new DynamicObject(rowData.getDynamicObjectType());
|
||||
dynamicObject.set("shkd_org","合并抵消");
|
||||
|
|
|
@ -0,0 +1,334 @@
|
|||
package shkd.sys.sys.plugin.report;
|
||||
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.entity.LocaleString;
|
||||
import kd.bos.entity.datamodel.events.PackageDataEvent;
|
||||
import kd.bos.entity.report.*;
|
||||
import kd.bos.form.events.HyperLinkClickEvent;
|
||||
import kd.bos.form.events.HyperLinkClickListener;
|
||||
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.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 kd.bos.servicehelper.permission.PermissionServiceHelper;
|
||||
import shkd.sys.sys.plugin.report.domain.FinanceVarietyEnum;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
public class FinanceReportfordateFormPlugin extends AbstractReportFormPlugin implements HyperLinkClickListener {
|
||||
@Override
|
||||
public void hyperLinkClick(HyperLinkClickEvent hyperLinkClickEvent) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void packageData(PackageDataEvent evt) {
|
||||
|
||||
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());
|
||||
if (selorg==null){
|
||||
evt.getNoLinkKey().add(((ReportColumn)evt.getSource()).getFieldKey());
|
||||
return;
|
||||
}
|
||||
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
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
this.addItemClickListeners("toolbarap");
|
||||
ReportList reportlistap = this.getView().getControl("reportlistap");
|
||||
reportlistap.addHyperClickListener(this::hyperLinkClick);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initDefaultQueryParam(ReportQueryParam queryParam) {
|
||||
super.initDefaultQueryParam(queryParam);
|
||||
Boolean shkd_isone = (Boolean) this.getModel().getValue("shkd_isone");//是否在第一层
|
||||
if (!shkd_isone){
|
||||
ReportFilter filter = this.getView().getControl("reportfilterap");//调用页面的自动查询
|
||||
queryParam.setFilter(filter.getReportQueryParam().getFilter());
|
||||
}
|
||||
HasPermOrgResult userHasPermOrgs = PermissionServiceHelper.getUserHasPermOrgs(Long.parseLong(RequestContext.get().getUserId()));
|
||||
//有权的组织
|
||||
List<Long> hasPermOrgs = userHasPermOrgs.getHasPermOrgs();
|
||||
|
||||
|
||||
if (hasPermOrgs.size()==0){
|
||||
this.getModel().setValue("shkd_seluserpower", null);
|
||||
}else if (hasPermOrgs.size()!=0&&shkd_isone){//有组织权限隔离且在首层
|
||||
//获取有权组织里级别高的根节点组织
|
||||
List<Long> res=getSuperOrg(hasPermOrgs);
|
||||
Object[] longs = res.toArray(new Long[0]);
|
||||
this.getModel().setValue("shkd_seluserpower", longs);
|
||||
}else if (hasPermOrgs.size()!=0&&!shkd_isone){//有组织权限隔离但不在首层
|
||||
this.getModel().setValue("shkd_seluserpower", null);
|
||||
}
|
||||
//是否全部组织有权
|
||||
boolean hasallOrg = userHasPermOrgs.hasAllOrgPerm();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBindData(EventObject e) {
|
||||
super.afterBindData(e);
|
||||
ReportShowParameter formShowParameter = (ReportShowParameter) this.getView().getFormShowParameter();
|
||||
Object shkd_selorg = formShowParameter.getCustomParam("shkd_selorg");
|
||||
Object shkd_seldate = formShowParameter.getCustomParam("shkd_seldate");
|
||||
Object shkd_selmoney = formShowParameter.getCustomParam("shkd_selmoney");
|
||||
if (shkd_selorg != null) {
|
||||
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle((Long) shkd_selorg, "bos_org");
|
||||
this.getView().getModel().setValue("shkd_selorg", dynamicObject);
|
||||
this.getView().getModel().setValue("shkd_seldate", shkd_seldate);
|
||||
this.getView().getModel().setValue("shkd_selmoney", shkd_selmoney);
|
||||
this.getView().getModel().setValue("shkd_isone", false);
|
||||
this.getView().getModel().setValue("shkd_seluserpower", null);
|
||||
ReportFilter filter = this.getView().getControl("reportfilterap");//调用页面的自动查询
|
||||
filter.search();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCreateColumn(CreateColumnEvent event) {
|
||||
super.afterCreateColumn(event);
|
||||
ReportQueryParam queryParam = event.getQueryParam();
|
||||
FilterInfo filter = queryParam.getFilter();
|
||||
String shkd_money = filter.getString("shkd_selmoney");
|
||||
List<AbstractReportColumn> columns = event.getColumns();
|
||||
getColumns( columns,shkd_money);
|
||||
}
|
||||
|
||||
public List getColumns(List columns,String shkd_money) {
|
||||
//集团外债务融资
|
||||
List<AbstractReportColumn> jtwzwrz = ((ReportColumnGroup) columns.get(3)).getChildren();
|
||||
for (AbstractReportColumn child : jtwzwrz) {
|
||||
ReportColumnGroup reportColumnGroup= null;
|
||||
try {
|
||||
reportColumnGroup = (ReportColumnGroup) child;
|
||||
} catch (Exception e) {
|
||||
String localeValue_zh_cn = child.getCaption().getLocaleValue_zh_CN();
|
||||
if (localeValue_zh_cn.contains("金额")){
|
||||
LocaleString l = new LocaleString();
|
||||
l.put("zh_CN",localeValue_zh_cn+"("+ FinanceVarietyEnum.getshkd_selmoney(shkd_money)+")");
|
||||
child.setCaption(l);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
List<AbstractReportColumn> children = reportColumnGroup.getChildren();
|
||||
for (AbstractReportColumn abstractReportColumn : children) {
|
||||
String localeValue_zh_cn = abstractReportColumn.getCaption().getLocaleValue_zh_CN();
|
||||
if ("金额".contains(localeValue_zh_cn)){
|
||||
LocaleString l = new LocaleString();
|
||||
l.put("zh_CN",localeValue_zh_cn+"("+ FinanceVarietyEnum.getshkd_selmoney(shkd_money)+")");
|
||||
abstractReportColumn.setCaption(l);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//集团内债务融资
|
||||
List<AbstractReportColumn> jtnzwrz = ((ReportColumnGroup) columns.get(4)).getChildren();
|
||||
for (AbstractReportColumn child : jtnzwrz) {
|
||||
ReportColumnGroup reportColumnGroup= null;
|
||||
try {
|
||||
reportColumnGroup = (ReportColumnGroup) child;
|
||||
} catch (Exception e) {
|
||||
String localeValue_zh_cn = child.getCaption().getLocaleValue_zh_CN();
|
||||
if (localeValue_zh_cn.contains("金额")){
|
||||
LocaleString l = new LocaleString();
|
||||
l.put("zh_CN",localeValue_zh_cn+"("+ FinanceVarietyEnum.getshkd_selmoney(shkd_money)+")");
|
||||
child.setCaption(l);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
List<AbstractReportColumn> children = reportColumnGroup.getChildren();
|
||||
for (AbstractReportColumn abstractReportColumn : children) {
|
||||
String localeValue_zh_cn = abstractReportColumn.getCaption().getLocaleValue_zh_CN();
|
||||
if ("金额".contains(localeValue_zh_cn)){
|
||||
LocaleString l = new LocaleString();
|
||||
l.put("zh_CN",localeValue_zh_cn+"("+ FinanceVarietyEnum.getshkd_selmoney(shkd_money)+")");
|
||||
abstractReportColumn.setCaption(l);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//债务融资
|
||||
List<AbstractReportColumn> zwrz = ((ReportColumnGroup) columns.get(5)).getChildren();
|
||||
for (AbstractReportColumn child : zwrz) {
|
||||
ReportColumnGroup reportColumnGroup= null;
|
||||
try {
|
||||
reportColumnGroup = (ReportColumnGroup) child;
|
||||
} catch (Exception e) {
|
||||
String localeValue_zh_cn = child.getCaption().getLocaleValue_zh_CN();
|
||||
if (localeValue_zh_cn.contains("金额")){
|
||||
LocaleString l = new LocaleString();
|
||||
l.put("zh_CN",localeValue_zh_cn+"("+ FinanceVarietyEnum.getshkd_selmoney(shkd_money)+")");
|
||||
child.setCaption(l);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
List<AbstractReportColumn> children = reportColumnGroup.getChildren();
|
||||
for (AbstractReportColumn abstractReportColumn : children) {
|
||||
String localeValue_zh_cn = abstractReportColumn.getCaption().getLocaleValue_zh_CN();
|
||||
if ("金额".contains(localeValue_zh_cn)){
|
||||
LocaleString l = new LocaleString();
|
||||
l.put("zh_CN",localeValue_zh_cn+"("+ FinanceVarietyEnum.getshkd_selmoney(shkd_money)+")");
|
||||
abstractReportColumn.setCaption(l);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//权益融资
|
||||
List<AbstractReportColumn> qyrz = ((ReportColumnGroup) columns.get(6)).getChildren();
|
||||
for (AbstractReportColumn child : qyrz) {
|
||||
ReportColumnGroup reportColumnGroup= null;
|
||||
try {
|
||||
reportColumnGroup = (ReportColumnGroup) child;
|
||||
} catch (Exception e) {
|
||||
String localeValue_zh_cn = child.getCaption().getLocaleValue_zh_CN();
|
||||
if (localeValue_zh_cn.contains("金额")){
|
||||
LocaleString l = new LocaleString();
|
||||
l.put("zh_CN",localeValue_zh_cn+"("+ FinanceVarietyEnum.getshkd_selmoney(shkd_money)+")");
|
||||
child.setCaption(l);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
List<AbstractReportColumn> children = reportColumnGroup.getChildren();
|
||||
for (AbstractReportColumn abstractReportColumn : children) {
|
||||
String localeValue_zh_cn = abstractReportColumn.getCaption().getLocaleValue_zh_CN();
|
||||
if ("金额".contains(localeValue_zh_cn)){
|
||||
LocaleString l = new LocaleString();
|
||||
l.put("zh_CN",localeValue_zh_cn+"("+ FinanceVarietyEnum.getshkd_selmoney(shkd_money)+")");
|
||||
abstractReportColumn.setCaption(l);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//融资(含权益)
|
||||
List<AbstractReportColumn> rz = ((ReportColumnGroup) columns.get(7)).getChildren();
|
||||
for (AbstractReportColumn child : rz) {
|
||||
ReportColumnGroup reportColumnGroup= null;
|
||||
try {
|
||||
reportColumnGroup = (ReportColumnGroup) child;
|
||||
} catch (Exception e) {
|
||||
String localeValue_zh_cn = child.getCaption().getLocaleValue_zh_CN();
|
||||
if (localeValue_zh_cn.contains("金额")){
|
||||
LocaleString l = new LocaleString();
|
||||
l.put("zh_CN",localeValue_zh_cn+"("+ FinanceVarietyEnum.getshkd_selmoney(shkd_money)+")");
|
||||
child.setCaption(l);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
List<AbstractReportColumn> children = reportColumnGroup.getChildren();
|
||||
for (AbstractReportColumn abstractReportColumn : children) {
|
||||
String localeValue_zh_cn = abstractReportColumn.getCaption().getLocaleValue_zh_CN();
|
||||
if ("金额".contains(localeValue_zh_cn)){
|
||||
LocaleString l = new LocaleString();
|
||||
l.put("zh_CN",localeValue_zh_cn+"("+ FinanceVarietyEnum.getshkd_selmoney(shkd_money)+")");
|
||||
abstractReportColumn.setCaption(l);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return columns;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processRowData(String gridPK, DynamicObjectCollection rowData, ReportQueryParam queryParam) {
|
||||
super.processRowData(gridPK, rowData, queryParam);
|
||||
|
||||
if (rowData.size()==0){
|
||||
return;
|
||||
}
|
||||
//获取排序配置
|
||||
DynamicObject shkd_selorg = (DynamicObject) this.getModel().getValue("shkd_selorg");
|
||||
long id = shkd_selorg.getLong("id");
|
||||
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来存储转换后的结果
|
||||
Map<String, Integer> map = new HashMap<>();
|
||||
int s=0;
|
||||
// 假设你可以通过遍历DynamicObjectCollection,来获取其中的元素
|
||||
for (DynamicObject obj : shkd_entryentity) {
|
||||
DynamicObject key = obj.getDynamicObject("shkd_ywdy");
|
||||
int value = s++;
|
||||
map.put(key.getString("number"), value); // 将键值对放入HashMap
|
||||
}
|
||||
|
||||
//按字段 组织配置 排序
|
||||
|
||||
Collections.sort(rowData , new Comparator<DynamicObject>(){
|
||||
@Override
|
||||
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_jtnbjkamount=new BigDecimal(0);//⑩集团内部借款金额
|
||||
BigDecimal shkd_jtnbjkrzcb=new BigDecimal(0);//⑩集团内部借款融资成本(%)
|
||||
BigDecimal shkd_jtnbjkqx=new BigDecimal(0);//⑩集团内部借款期限
|
||||
for (DynamicObject rowDatum : rowData) {
|
||||
shkd_jtnbjkamount.subtract(rowDatum.getBigDecimal("shkd_jtnbjkamount"));
|
||||
shkd_jtnbjkrzcb.subtract(rowDatum.getBigDecimal("shkd_jtnbjkrzcb"));
|
||||
shkd_jtnbjkqx.subtract(rowDatum.getBigDecimal("shkd_jtnbjkqx"));
|
||||
}
|
||||
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);
|
||||
rowData.add(dynamicObject);
|
||||
}
|
||||
|
||||
private List<Long> getSuperOrg(List<Long> org){
|
||||
//组织和其对应直接上级
|
||||
Map<Long, Long> map = new HashMap();
|
||||
map=OrgUnitServiceHelper.getDirectSuperiorOrg(OrgViewType.OrgUnit, org);
|
||||
|
||||
Set<Long> existingOrgs = new HashSet<>(map.keySet());
|
||||
|
||||
// 2. 遍历 map,检查每个组织 a 的上级是否存在于 existingOrgs 中
|
||||
List<Long> result = new ArrayList<>();
|
||||
for (Long orgId : map.keySet()) {
|
||||
Long superior = map.get(orgId); // 获取当前组织的上级
|
||||
if (superior == null || !existingOrgs.contains(superior)) {
|
||||
// 如果上级不存在(或为 null),则保留当前组织
|
||||
result.add(orgId);
|
||||
}
|
||||
// 否则(上级存在),不加入 result(相当于删除)
|
||||
}
|
||||
List<Long> longs = new ArrayList<>(result);
|
||||
return longs;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,280 @@
|
|||
package shkd.sys.sys.plugin.report;
|
||||
|
||||
import kd.bos.algo.DataSet;
|
||||
import kd.bos.algo.JoinDataSet;
|
||||
import kd.bos.algo.JoinType;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.db.DB;
|
||||
import kd.bos.db.DBRoute;
|
||||
import kd.bos.entity.report.AbstractReportListDataPlugin;
|
||||
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.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
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.report.domain.FinanceVarietyEnum;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class FinanceReportfordatePlugin extends AbstractReportListDataPlugin {
|
||||
|
||||
private static final Log logger = LogFactory.getLog(FinanceReportfordatePlugin.class);
|
||||
|
||||
public List<QFilter> getListQFilter(ReportQueryParam reportQueryParam) {
|
||||
//过滤条件数组
|
||||
ArrayList<QFilter> filters = new ArrayList<>();
|
||||
//初始化过滤数据
|
||||
List<FilterItemInfo> initFilter = reportQueryParam.getFilter().getFilterItems();
|
||||
if (CollectionUtils.isNotEmpty(initFilter)) {
|
||||
for (FilterItemInfo filterItemInfo : initFilter) {
|
||||
// QFilter filter = new QFilter(filterItemInfo.getPropName(), filterItemInfo.getCompareType(), filterItemInfo.getValue());
|
||||
QFilter filter = new QFilter(filterItemInfo.getPropName(), QCP.equals, filterItemInfo.getValue());
|
||||
filters.add(filter);
|
||||
}
|
||||
}
|
||||
//快速过滤
|
||||
FastFilter fastFilter = reportQueryParam.getFilter().getFastFilter();
|
||||
if (fastFilter != null) {
|
||||
List<QFilter> fastFilterList = reportQueryParam.getFilter().getFastFilter().getQFilters();
|
||||
//添加过滤条件
|
||||
if (CollectionUtils.isNotEmpty(fastFilterList)) {
|
||||
filters.addAll(fastFilterList);
|
||||
}
|
||||
}
|
||||
return filters;
|
||||
}
|
||||
@Override
|
||||
public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable {
|
||||
//获取筛选器的值
|
||||
List<QFilter> listQFilter = getListQFilter(reportQueryParam);
|
||||
String shkd_selstartdate="";
|
||||
String shkd_selenddate="";
|
||||
List<String> dateList = new ArrayList<>();
|
||||
DynamicObject selorgDy = null;
|
||||
Double shkd_selmoney=0.0;
|
||||
DynamicObjectCollection shkd_seluserpower=null;
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
for (QFilter filter : listQFilter) {
|
||||
if (filter.getProperty().contains("shkd_selorg")) {
|
||||
selorgDy= (DynamicObject) filter.getValue();
|
||||
} else if (filter.getProperty().contains("shkd_selstartdate")) {
|
||||
shkd_selstartdate=sdf.format(filter.getValue());
|
||||
} else if (filter.getProperty().contains("shkd_selenddate")) {
|
||||
shkd_selenddate=sdf.format(filter.getValue());
|
||||
}else if (filter.getProperty().contains("shkd_selmoney")) {
|
||||
shkd_selmoney= Double.parseDouble((String) filter.getValue());
|
||||
}else if (filter.getProperty().contains("shkd_seluserpower")){
|
||||
shkd_seluserpower=(DynamicObjectCollection) filter.getValue();
|
||||
}
|
||||
}
|
||||
|
||||
HashMap<Long, List<Long>> map = new HashMap<>();//组织层级关系
|
||||
//如果有组织则单独处理,没有则走getOrgrelate方法
|
||||
if (shkd_seluserpower==null){
|
||||
getOrgrelate(map, selorgDy);
|
||||
}else {
|
||||
for (DynamicObject dynamicObject : shkd_seluserpower) {
|
||||
Long id = dynamicObject.getLong("id");//业务单元id
|
||||
List<Long> orgIds = new ArrayList<>(1);
|
||||
orgIds.add(id);
|
||||
//获取该组织的全部下级业务单元
|
||||
List<Long> allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, true);//包括自己
|
||||
map.put(id,allSubordinateOrgs);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//根据组织关系配置sql
|
||||
StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ ");
|
||||
getSQlBuilder(shkd_selstartdate,shkd_selenddate,map,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);
|
||||
|
||||
JoinDataSet join = res.join(balanceDataSet, JoinType.INNER);//连接组织
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public StringBuilder getSQlBuilder(String shkd_selstartdate,String shkd_selenddate,HashMap<Long, List<Long>> map,StringBuilder sqlBuilder){
|
||||
//组装组织分类
|
||||
StringBuilder orgclass=new StringBuilder(" case \n");
|
||||
StringBuilder orgclass1=new StringBuilder(" case \n");
|
||||
for (Map.Entry<Long, List<Long>> entry : map.entrySet()) {
|
||||
Long key = entry.getKey();
|
||||
List<Long> valueList = entry.getValue();
|
||||
String result = valueList.toString();
|
||||
result = result.substring(1, result.length() - 1);
|
||||
orgclass.append(" WHEN e.forgid IN ( "+result+" ) THEN "+key+" \n");
|
||||
orgclass1.append(" WHEN t5.fcompanyid IN ( "+result+" ) THEN "+key+" \n");
|
||||
}
|
||||
orgclass.append(" ELSE NULL \n");
|
||||
orgclass.append(" END AS zz \n");
|
||||
orgclass1.append(" ELSE NULL \n");
|
||||
orgclass1.append(" END AS zz \n");
|
||||
|
||||
String zqrz = getrzpzId(FinanceVarietyEnum.zqrz, "cfm_financingvarieties");//获取债券融资的融资品种
|
||||
String dqjk = getrzpzId(FinanceVarietyEnum.dqjk, "cfm_financingvarieties");//获取短期借款的融资品种
|
||||
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<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("SELECT \n");
|
||||
sqlBuilder.append("SUM(CASE WHEN djlx='债券发行' AND rzpz in ("+zqrz+") AND starttime <= '"+shkd_selstartdate+"' AND endtime > '"+shkd_selstartdate+"' THEN je ELSE 0 END ) AS shkd_zqrzqcye,\n" +
|
||||
" SUM(CASE WHEN djlx='债券发行' AND rzpz in ("+zqrz+") AND starttime > '"+shkd_selstartdate+"' AND starttime <= '"+shkd_selenddate+"' THEN je ELSE 0 END ) AS shkd_zqrzxzrze,\n" +
|
||||
" SUM(CASE WHEN djlx='债券发行' AND rzpz in ("+zqrz+") AND endtime > '"+shkd_selstartdate+"' AND endtime <= '"+shkd_selenddate+"' THEN je ELSE 0 END ) AS shkd_zqrzxzhke,\n" +
|
||||
" SUM(CASE WHEN djlx='债券发行' AND rzpz in ("+zqrz+") AND starttime <= '"+shkd_selenddate+"' AND endtime > '"+shkd_selenddate+"' THEN je ELSE 0 END ) AS shkd_zqrzqmye, \n");//①债券融资
|
||||
|
||||
sqlBuilder.append("SUM(CASE WHEN djlx='银行借款合同' AND rzpz in ("+dqjk+") AND starttime <= '"+shkd_selstartdate+" AND endtime > '"+shkd_selstartdate+"' THEN je ELSE 0 END ) AS ②短期借款期初余额,\n" +
|
||||
" SUM(CASE WHEN djlx='银行借款合同' AND rzpz in ("+dqjk+") AND starttime > '"+shkd_selstartdate+"' AND starttime <= '"+shkd_selenddate+"' THEN je ELSE 0 END ) AS ②短期借款新增融资额,\n" +
|
||||
" SUM(CASE WHEN djlx='银行借款合同' AND rzpz in ("+dqjk+") AND endtime > '"+shkd_selstartdate+"' AND endtime <= '"+shkd_selenddate+"' THEN je ELSE 0 END ) AS ②短期借款新增还款额,\n" +
|
||||
" SUM(CASE WHEN djlx='银行借款合同' AND rzpz in ("+dqjk+") AND starttime <= '"+shkd_selenddate+"' AND endtime > '"+shkd_selenddate+"' THEN je ELSE 0 END ) AS ②短期借款期末余额,");//②短期借款
|
||||
|
||||
sqlBuilder.append("zz \n");
|
||||
|
||||
sqlBuilder.append("FROM\n" +
|
||||
"(\n" +
|
||||
"SELECT\n" +
|
||||
"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" +
|
||||
orgclass +
|
||||
"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_rp_entry rpentry ON rpentry.fid = t1.fid -- 债券发行明细表\n" +
|
||||
"WHERE\n" +
|
||||
" t1.fbillstatus='C'\n" +
|
||||
" UNION ALL\n" +
|
||||
"SELECT \n" +
|
||||
" 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" +
|
||||
orgclass+
|
||||
"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" +
|
||||
"WHERE\n" +
|
||||
" t2.fbillstatus='C' AND e.floantype IN ('loan','sl')\n" +
|
||||
" AND t3.fbillstatus='C'\n" +
|
||||
" UNION ALL\n" +
|
||||
"SELECT\n" +
|
||||
"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" +
|
||||
orgclass+
|
||||
"FROM\n" +
|
||||
"t_cfm_loancontractbill t4 -- 融资租赁合同\n" +
|
||||
"INNER JOIN t_cfm_loancontractbill_e e ON e.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" +
|
||||
" UNION ALL\n" +
|
||||
" SELECT\n" +
|
||||
"t5.fbillno, 6666666666666666666 as rzpz,t5.famount as je,'开票登记' AS djlx,'' AS zqrlx,\n" +
|
||||
"t5.fissuedate AS starttime,\n" +
|
||||
"t5.fdraftbillexpiredate AS endtime,\n" +
|
||||
orgclass1+
|
||||
"FROM\n" +
|
||||
"t_cdm_draftbill t5 -- 开票登记\n" +
|
||||
"WHERE\n" +
|
||||
" t5.fbillstatus='C'\n" +
|
||||
" UNION ALL\n" +
|
||||
" SELECT \n" +
|
||||
" 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" +
|
||||
orgclass+
|
||||
"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" +
|
||||
"WHERE\n" +
|
||||
" t2.fbillstatus='C' AND e.floantype IN ('ec','entrust')\n" +
|
||||
" AND t3.fbillstatus='C'\n" +
|
||||
" ) AS hbb\n" +
|
||||
" GROUP BY zz");
|
||||
|
||||
return sqlBuilder;
|
||||
|
||||
}
|
||||
|
||||
public HashMap<Long, List<Long>> getOrgrelate(HashMap<Long, List<Long>> map,DynamicObject selorgDy){
|
||||
// 查询该组织的直接下级业务单元
|
||||
OrgTreeParam orgTreeParam=new OrgTreeParam();
|
||||
orgTreeParam.setId(selorgDy.getLong("id"));
|
||||
orgTreeParam.setOrgViewType(OrgViewType.OrgUnit);//设置视图方案为业务单元的
|
||||
orgTreeParam.setTreeBuildType(OrgTreeBuildType.FILL_HIDDEN_PARENT_DIRECT);
|
||||
List<TreeNode> treeNodes=OrgUnitServiceHelper.getTreeChildren(orgTreeParam);
|
||||
|
||||
for (TreeNode treeNode : treeNodes) {
|
||||
Long id = Long.valueOf(treeNode.getId());//业务单元id
|
||||
List<Long> orgIds = new ArrayList<>(1);
|
||||
orgIds.add(id);
|
||||
//获取该组织的全部下级业务单元
|
||||
List<Long> allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, true);//包括自己
|
||||
map.put(id,allSubordinateOrgs);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
public String getrzpzId(List<String> rzpz,String entity){
|
||||
QFilter qFilter = new QFilter("name", QCP.in, rzpz);
|
||||
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(","));
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue