parent
2f41312927
commit
4c6bc2dcea
|
@ -1,10 +1,14 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
|
||||
package shkd.sys.sys.plugin.report;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.EventObject;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
|
@ -31,109 +35,11 @@ import kd.tmc.fbp.common.helper.TmcOrgDataHelper;
|
|||
import kd.tmc.fbp.common.util.EmptyUtil;
|
||||
import kd.tmc.fca.common.enums.StatisCycleEnum;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class transbillreportnewFormPlugin extends AbstractReportFormPlugin implements HyperLinkClickListener {
|
||||
private static final String SYSTEM_TYPE = "tmc-fca-report";
|
||||
private static final String[] BANK_DIMENSION = new String[]{"sumlevel", "parentorg", "parentorgid", "bank", "bankid", "statcurrency", "upamount", "downamount", "differenceamount"};
|
||||
private static final String[] SON_ORG_DIMENSION = new String[]{"sumlevel", "parentorg", "parentorgid", "sonorg", "sonorgid", "statcurrency", "upamount", "downamount", "differenceamount"};
|
||||
|
||||
public transbillreportnewFormPlugin() {
|
||||
}
|
||||
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
ReportList reportlist = (ReportList)this.getView().getControl("reportlistap");
|
||||
reportlist.addHyperClickListener(this);
|
||||
BasedataEdit accountGroup = (BasedataEdit)this.getControl("filter_accountgroup");
|
||||
accountGroup.addBeforeF7SelectListener((evt) -> {
|
||||
DynamicObjectCollection parentOrg = (DynamicObjectCollection)this.getModel().getValue("filter_org");
|
||||
if (parentOrg != null && !parentOrg.isEmpty()) {
|
||||
List<Object> orgIdList = (List)parentOrg.stream().map((v) -> {
|
||||
return v.getDynamicObject("fbasedataid").getPkValue();
|
||||
}).collect(Collectors.toList());
|
||||
evt.getCustomQFilters().add(new QFilter("company", "in", orgIdList));
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
public void initDefaultQueryParam(ReportQueryParam queryParam) {
|
||||
List<Long> authOrgList = TmcOrgDataHelper.getAuthorizedBankOrgId(RequestContext.get().getCurrUserId(), this.getView().getFormShowParameter().getAppId(), this.getModel().getDataEntityType().getName(), "47150e89000000ac");
|
||||
BasedataEdit org = (BasedataEdit)this.getControl("filter_org");
|
||||
org.setQFilter(new QFilter("id", "in", this.getAuthParentOrgList(authOrgList)));
|
||||
BasedataEdit sonOrg = (BasedataEdit)this.getControl("filter_sonorg");
|
||||
sonOrg.setQFilter(new QFilter("id", "in", this.getAuthSonOrgList(authOrgList)));
|
||||
BasedataEdit currency = (BasedataEdit)this.getControl("filter_currency");
|
||||
currency.setQFilter(new QFilter("id", "in", this.getCurrencyIdList()));
|
||||
BasedataEdit bank = (BasedataEdit)this.getControl("filter_bank");
|
||||
bank.setQFilter(new QFilter("id", "in", this.getBankIdList(authOrgList)));
|
||||
BasedataEdit accountGroup = (BasedataEdit)this.getControl("filter_accountgroup");
|
||||
accountGroup.setQFilter(new QFilter("id", "in", this.getAccountGroupIdList(authOrgList)));
|
||||
this.setDefaultOrg();
|
||||
}
|
||||
|
||||
public void propertyChanged(PropertyChangedArgs e) {
|
||||
super.propertyChanged(e);
|
||||
switch (e.getProperty().getName()) {
|
||||
case "filter_dimension":
|
||||
ReportFilter rptFilter = (ReportFilter)this.getControl("reportfilterap");
|
||||
rptFilter.search();
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
public boolean verifyQuery(ReportQueryParam param) {
|
||||
Map<String, Object> paramMap = SnapDataHelper.transQueryParam(param);
|
||||
String filterPeriod = (String)paramMap.get("filter_period");
|
||||
if (EmptyUtil.isEmpty(filterPeriod)) {
|
||||
this.getView().showTipNotification(ResManager.loadKDString("统计周期条件不能为空。", "TransBillReportFormListPlugin_0", "tmc-fca-report", new Object[0]));
|
||||
return false;
|
||||
} else if (!Objects.equals(StatisCycleEnum.CONSTOM.getCode(), filterPeriod) || paramMap.get("filter_startdate") != null && paramMap.get("filter_enddate") != null) {
|
||||
if (EmptyUtil.isEmpty(this.getModel().getValue("filter_statcurrency"))) {
|
||||
this.getView().showTipNotification(ResManager.loadKDString("统计币种不能为空。", "TransBillReportFormListPlugin_3", "tmc-fca-report", new Object[0]));
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
this.getView().showTipNotification(ResManager.loadKDString("起止日期条件不能为空。", "TransBillReportFormListPlugin_1", "tmc-fca-report", new Object[0]));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void beforeQuery(ReportQueryParam queryParam) {
|
||||
super.beforeQuery(queryParam);
|
||||
String dimension = (String)this.getModel().getValue("filter_dimension");
|
||||
queryParam.getFilter().addFilterItem("filter_dimension", dimension);
|
||||
if ("bank".equals(dimension)) {
|
||||
this.rebuildColumn(BANK_DIMENSION);
|
||||
} else {
|
||||
this.rebuildColumn(SON_ORG_DIMENSION);
|
||||
}
|
||||
|
||||
DynamicObjectCollection sonOrg = (DynamicObjectCollection)this.getModel().getValue("filter_sonorg");
|
||||
if (sonOrg != null && !sonOrg.isEmpty()) {
|
||||
List<Object> orgIdList = (List)sonOrg.stream().map((v) -> {
|
||||
return v.getDynamicObject("fbasedataid").getPkValue();
|
||||
}).collect(Collectors.toList());
|
||||
queryParam.getFilter().getFilterItem("filter_sonorg").setValue(orgIdList);
|
||||
}
|
||||
|
||||
DynamicObjectCollection accountGroup = (DynamicObjectCollection)this.getModel().getValue("filter_accountgroup");
|
||||
List authOrgList;
|
||||
if (accountGroup != null && !accountGroup.isEmpty()) {
|
||||
authOrgList = (List)accountGroup.stream().map((v) -> {
|
||||
return v.getDynamicObject("fbasedataid").getPkValue();
|
||||
}).collect(Collectors.toList());
|
||||
queryParam.getFilter().getFilterItem("filter_accountgroup").setValue(authOrgList);
|
||||
}
|
||||
|
||||
authOrgList = TmcOrgDataHelper.getAuthorizedBankOrgId(RequestContext.get().getCurrUserId(), this.getView().getFormShowParameter().getAppId(), this.getModel().getDataEntityType().getName(), "47150e89000000ac");
|
||||
queryParam.getFilter().addFilterItem("orgIdList", this.getAuthParentOrgList(authOrgList));
|
||||
}
|
||||
|
||||
private static final String[] BANK_DIMENSION = new String[]{"sumlevel", "parentorg", "parentorgid", "bank", "bankid", "sonorg", "sonorgid", "shkd_subacct", "statcurrency", "shkd_qcye","shkd_qckyye", "upamount", "downamount", "differenceamount","shkd_qmye","shkd_qmkyye"};
|
||||
private static final String[] SON_ORG_DIMENSION = new String[]{"sumlevel", "parentorg", "parentorgid", "sonorg", "sonorgid", "statcurrency", "upamount", "downamount", "differenceamount","shkd_qcamount","shkd_qmamount"};
|
||||
@Override
|
||||
public void hyperLinkClick(HyperLinkClickEvent evt) {
|
||||
String field = evt.getFieldName();
|
||||
if ("upamount".equals(field) || "downamount".equals(field) || "differenceamount".equals(field)) {
|
||||
|
@ -142,6 +48,7 @@ public class transbillreportnewFormPlugin extends AbstractReportFormPlugin imple
|
|||
IReportListModel reportModel = reportList.getReportModel();
|
||||
DynamicObject rowData = reportModel.getRowData(rowIndex);
|
||||
ReportShowParameter param = new ReportShowParameter();
|
||||
|
||||
DynamicObjectCollection currency;
|
||||
Object[] currencyIds;
|
||||
if (EmptyUtil.isNoEmpty(rowData.get("parentorgid"))) {
|
||||
|
@ -214,46 +121,103 @@ public class transbillreportnewFormPlugin extends AbstractReportFormPlugin imple
|
|||
|
||||
}
|
||||
|
||||
private List<Long> getAuthParentOrgList(List<Long> authOrgList) {
|
||||
QFilter companyIdFilter = new QFilter("company", "in", authOrgList);
|
||||
DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "company", new QFilter[]{companyIdFilter});
|
||||
return (List)groupAccount.stream().map((g) -> {
|
||||
return g.getLong("company");
|
||||
}).collect(Collectors.toList());
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
ReportList reportlist = (ReportList)this.getView().getControl("reportlistap");
|
||||
reportlist.addHyperClickListener(this);
|
||||
BasedataEdit accountGroup = (BasedataEdit)this.getControl("filter_accountgroup");
|
||||
accountGroup.addBeforeF7SelectListener((evt) -> {
|
||||
DynamicObjectCollection parentOrg = (DynamicObjectCollection)this.getModel().getValue("filter_org");
|
||||
if (parentOrg != null && !parentOrg.isEmpty()) {
|
||||
List<Object> orgIdList = (List)parentOrg.stream().map((v) -> {
|
||||
return v.getDynamicObject("fbasedataid").getPkValue();
|
||||
}).collect(Collectors.toList());
|
||||
evt.getCustomQFilters().add(new QFilter("company", "in", orgIdList));
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
private List<Long> getAuthSonOrgList(List<Long> authOrgList) {
|
||||
QFilter companyIdFilter = new QFilter("entrys.bankacct.company", "in", authOrgList);
|
||||
DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "entrys.bankacct.company", new QFilter[]{companyIdFilter});
|
||||
return (List)groupAccount.stream().map((g) -> {
|
||||
return g.getLong("entrys.bankacct.company");
|
||||
}).collect(Collectors.toList());
|
||||
public void initDefaultQueryParam(ReportQueryParam queryParam) {
|
||||
List<Long> authOrgList = TmcOrgDataHelper.getAuthorizedBankOrgId(RequestContext.get().getCurrUserId(), this.getView().getFormShowParameter().getAppId(), this.getModel().getDataEntityType().getName(), "47150e89000000ac");
|
||||
BasedataEdit org = (BasedataEdit)this.getControl("filter_org");
|
||||
org.setQFilter(new QFilter("id", "in", this.getAuthParentOrgList(authOrgList)));
|
||||
BasedataEdit sonOrg = (BasedataEdit)this.getControl("filter_sonorg");
|
||||
sonOrg.setQFilter(new QFilter("id", "in", this.getAuthSonOrgList(authOrgList)));
|
||||
BasedataEdit currency = (BasedataEdit)this.getControl("filter_currency");
|
||||
currency.setQFilter(new QFilter("id", "in", this.getCurrencyIdList()));
|
||||
BasedataEdit bank = (BasedataEdit)this.getControl("filter_bank");
|
||||
bank.setQFilter(new QFilter("id", "in", this.getBankIdList(authOrgList)));
|
||||
BasedataEdit accountGroup = (BasedataEdit)this.getControl("filter_accountgroup");
|
||||
accountGroup.setQFilter(new QFilter("id", "in", this.getAccountGroupIdList(authOrgList)));
|
||||
this.setDefaultOrg();
|
||||
}
|
||||
|
||||
private List<Long> getCurrencyIdList() {
|
||||
QFilter filter = new QFilter("1", "=", 1);
|
||||
DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "currency", new QFilter[]{filter});
|
||||
return (List)groupAccount.stream().map((g) -> {
|
||||
return g.getLong("currency");
|
||||
}).collect(Collectors.toList());
|
||||
@Override
|
||||
public void propertyChanged(PropertyChangedArgs e) {
|
||||
super.propertyChanged(e);
|
||||
switch (e.getProperty().getName()) {
|
||||
case "filter_dimension":
|
||||
ReportFilter rptFilter = (ReportFilter)this.getControl("reportfilterap");
|
||||
rptFilter.search();
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
private List<Long> getBankIdList(List<Long> authOrgList) {
|
||||
QFilter companyIdFilter = new QFilter("company", "in", authOrgList);
|
||||
DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "accountbank.bank.id", new QFilter[]{companyIdFilter});
|
||||
return (List)groupAccount.stream().map((g) -> {
|
||||
return g.getLong("accountbank.bank.id");
|
||||
}).collect(Collectors.toList());
|
||||
@Override
|
||||
public boolean verifyQuery(ReportQueryParam param) {
|
||||
Map<String, Object> paramMap = SnapDataHelper.transQueryParam(param);
|
||||
String filterPeriod = (String)paramMap.get("filter_period");
|
||||
if (EmptyUtil.isEmpty(filterPeriod)) {
|
||||
this.getView().showTipNotification(ResManager.loadKDString("统计周期条件不能为空。", "TransBillReportFormListPlugin_0", "tmc-fca-report", new Object[0]));
|
||||
return false;
|
||||
} else if (!Objects.equals(StatisCycleEnum.CONSTOM.getCode(), filterPeriod) || paramMap.get("filter_startdate") != null && paramMap.get("filter_enddate") != null) {
|
||||
if (EmptyUtil.isEmpty(this.getModel().getValue("filter_statcurrency"))) {
|
||||
this.getView().showTipNotification(ResManager.loadKDString("统计币种不能为空。", "TransBillReportFormListPlugin_3", "tmc-fca-report", new Object[0]));
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
this.getView().showTipNotification(ResManager.loadKDString("起止日期条件不能为空。", "TransBillReportFormListPlugin_1", "tmc-fca-report", new Object[0]));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private List<Long> getAccountGroupIdList(List<Long> authOrgList) {
|
||||
QFilter companyIdFilter = new QFilter("company", "in", authOrgList);
|
||||
DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "id", new QFilter[]{companyIdFilter});
|
||||
return (List)groupAccount.stream().map((g) -> {
|
||||
return g.getLong("id");
|
||||
}).collect(Collectors.toList());
|
||||
@Override
|
||||
public void beforeQuery(ReportQueryParam queryParam) {
|
||||
super.beforeQuery(queryParam);
|
||||
String dimension = (String)this.getModel().getValue("filter_dimension");
|
||||
queryParam.getFilter().addFilterItem("filter_dimension", dimension);
|
||||
if ("bank".equals(dimension)) {//根据维度展示字段
|
||||
this.rebuildColumn(BANK_DIMENSION);
|
||||
} else {
|
||||
this.rebuildColumn(SON_ORG_DIMENSION);
|
||||
}
|
||||
|
||||
DynamicObjectCollection sonOrg = (DynamicObjectCollection)this.getModel().getValue("filter_sonorg");
|
||||
if (sonOrg != null && !sonOrg.isEmpty()) {
|
||||
List<Object> orgIdList = (List)sonOrg.stream().map((v) -> {
|
||||
return v.getDynamicObject("fbasedataid").getPkValue();
|
||||
}).collect(Collectors.toList());
|
||||
queryParam.getFilter().getFilterItem("filter_sonorg").setValue(orgIdList);
|
||||
}
|
||||
|
||||
DynamicObjectCollection accountGroup = (DynamicObjectCollection)this.getModel().getValue("filter_accountgroup");
|
||||
List authOrgList;
|
||||
if (accountGroup != null && !accountGroup.isEmpty()) {
|
||||
authOrgList = (List)accountGroup.stream().map((v) -> {
|
||||
return v.getDynamicObject("fbasedataid").getPkValue();
|
||||
}).collect(Collectors.toList());
|
||||
queryParam.getFilter().getFilterItem("filter_accountgroup").setValue(authOrgList);
|
||||
}
|
||||
|
||||
authOrgList = TmcOrgDataHelper.getAuthorizedBankOrgId(RequestContext.get().getCurrUserId(), this.getView().getFormShowParameter().getAppId(), this.getModel().getDataEntityType().getName(), "47150e89000000ac");
|
||||
queryParam.getFilter().addFilterItem("orgIdList", this.getAuthParentOrgList(authOrgList));
|
||||
}
|
||||
|
||||
|
||||
private void rebuildColumn(String[] fields) {
|
||||
ReportList listTable = (ReportList)this.getView().getControl("reportlistap");
|
||||
if (fields != null && fields.length >= 1) {
|
||||
|
@ -284,7 +248,41 @@ public class transbillreportnewFormPlugin extends AbstractReportFormPlugin imple
|
|||
|
||||
}
|
||||
}
|
||||
|
||||
private List<Long> getAuthParentOrgList(List<Long> authOrgList) {
|
||||
QFilter companyIdFilter = new QFilter("company", "in", authOrgList);
|
||||
DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "company", new QFilter[]{companyIdFilter});
|
||||
return (List)groupAccount.stream().map((g) -> {
|
||||
return g.getLong("company");
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
private List<Long> getAuthSonOrgList(List<Long> authOrgList) {
|
||||
QFilter companyIdFilter = new QFilter("entrys.bankacct.company", "in", authOrgList);
|
||||
DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "entrys.bankacct.company", new QFilter[]{companyIdFilter});
|
||||
return (List)groupAccount.stream().map((g) -> {
|
||||
return g.getLong("entrys.bankacct.company");
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
private List<Long> getCurrencyIdList() {
|
||||
QFilter filter = new QFilter("1", "=", 1);
|
||||
DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "currency", new QFilter[]{filter});
|
||||
return (List)groupAccount.stream().map((g) -> {
|
||||
return g.getLong("currency");
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
private List<Long> getBankIdList(List<Long> authOrgList) {
|
||||
QFilter companyIdFilter = new QFilter("company", "in", authOrgList);
|
||||
DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "accountbank.bank.id", new QFilter[]{companyIdFilter});
|
||||
return (List)groupAccount.stream().map((g) -> {
|
||||
return g.getLong("accountbank.bank.id");
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
private List<Long> getAccountGroupIdList(List<Long> authOrgList) {
|
||||
QFilter companyIdFilter = new QFilter("company", "in", authOrgList);
|
||||
DynamicObjectCollection groupAccount = QueryServiceHelper.query("fca_acctgroup", "id", new QFilter[]{companyIdFilter});
|
||||
return (List)groupAccount.stream().map((g) -> {
|
||||
return g.getLong("id");
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
private void setDefaultOrg() {
|
||||
Long org = RequestContext.get().getOrgId();
|
||||
String appId = this.getView().getFormShowParameter().getAppId();
|
||||
|
|
|
@ -5,27 +5,51 @@
|
|||
|
||||
package shkd.sys.sys.plugin.report;
|
||||
|
||||
import kd.bos.algo.DataSet;
|
||||
import kd.bos.algo.GroupbyDataSet;
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.alibaba.fastjson.JSONException;
|
||||
import com.google.common.collect.Lists;
|
||||
import kd.bos.algo.*;
|
||||
import kd.bos.algo.datatype.DateType;
|
||||
import kd.bos.algo.input.CollectionInput;
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.entity.DataEntityBase;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.db.DB;
|
||||
import kd.bos.db.DBRoute;
|
||||
import kd.bos.entity.report.ReportQueryParam;
|
||||
import kd.bos.orm.ORM;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.orm.query.QFilterHint;
|
||||
import kd.bos.servicehelper.DispatchServiceHelper;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.ebg.aqap.common.core.utils.Sequence;
|
||||
import kd.ebg.aqap.common.entity.biz.balance.BatchBalanceRequest;
|
||||
import kd.ebg.aqap.common.entity.biz.balance.BatchBalanceRequestBody;
|
||||
import kd.ebg.aqap.common.entity.biz.balance.BatchBalanceResponse;
|
||||
import kd.ebg.aqap.formplugin.exception.EBBizException;
|
||||
import kd.ebg.aqap.formplugin.util.StringUtil;
|
||||
import kd.ebg.egf.common.entity.base.EBHeader;
|
||||
import kd.ebg.egf.common.model.bank.BankAcnt;
|
||||
import kd.ebg.egf.common.repository.acnt.BankAcntRepository;
|
||||
import kd.tmc.fbp.common.enums.ReportOrgQueryWayEnum;
|
||||
import kd.tmc.fbp.common.helper.TmcBusinessBaseHelper;
|
||||
import kd.tmc.fbp.common.helper.TmcOrgDataHelper;
|
||||
import kd.tmc.fbp.common.util.DateUtils;
|
||||
import kd.tmc.fbp.common.util.EmptyUtil;
|
||||
import kd.tmc.fbp.report.data.AbstractTmcTreeReportDataPlugin;
|
||||
import kd.tmc.fca.common.enums.FcaTransDetailStatusEnum;
|
||||
import kd.tmc.fca.common.enums.FcaTransPayStatusEnum;
|
||||
import kd.tmc.fca.common.enums.StatisCycleEnum;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin {
|
||||
private static final String UP_BANK_SELECT = "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, currency, entrys.transamt as upamount, 0 as downamount";
|
||||
private static final String UP_SON_ORG_SELECT = "company.name as parentorg, company.id as parentorgid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, currency, entrys.transamt as upamount, 0 as downamount";
|
||||
|
@ -33,29 +57,33 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin {
|
|||
private static final String DOWN_SON_ORG_SELECT = "company.name as parentorg, company.id as parentorgid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, currency, 0 as upamount, entrys.transamt as downamount";
|
||||
private static final String BANK_SELECT = "parentorg, parentorgid, bank, bankid, upamount_report as upamount, downamount_report as downamount";
|
||||
private static final String SON_ORG_SELECT = "parentorg, parentorgid, sonorg, sonorgid, upamount_report as upamount, downamount_report as downamount";
|
||||
private static final String[] BANK_GROUP_SELECT = new String[]{"parentorg", "parentorgid", "bank", "bankid"};
|
||||
private static final String[] BANK_GROUP_SELECT = new String[]{"parentorg", "parentorgid", "bank", "bankid","sonorg","sonorgid","shkd_subacct"};
|
||||
private static final String[] SON_ORG_GROUP_SELECT = new String[]{"parentorg", "parentorgid", "sonorg", "sonorgid"};
|
||||
private List<String> sumAmountFieldList;
|
||||
private String sumNameField;
|
||||
private boolean isCompute = true;
|
||||
|
||||
public transbillreportnewPlugin() {
|
||||
}
|
||||
|
||||
public DataSet queryDataSet(ReportQueryParam reportQueryParam) {
|
||||
Map<String, Object> paramMap = this.transQueryParam(reportQueryParam);
|
||||
QFilter filter = this.initFilter(paramMap);
|
||||
QFilter filter = this.initFilter(paramMap);//过滤条件
|
||||
String upSelect;
|
||||
String downSelect;
|
||||
String[] groupSelect;
|
||||
StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ ");
|
||||
String select;
|
||||
if ("bank".equals(paramMap.get("filter_dimension"))) {
|
||||
upSelect = "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, currency, entrys.transamt as upamount, 0 as downamount";
|
||||
downSelect = "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, currency, 0 as upamount, entrys.transamt as downamount";
|
||||
select = "parentorg, parentorgid, bank, bankid, upamount_report as upamount, downamount_report as downamount";
|
||||
if ("bank".equals(paramMap.get("filter_dimension"))) {//默认开户行
|
||||
// upSelect = "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, currency, entrys.transamt as upamount, 0 as downamount";
|
||||
// downSelect = "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, currency, 0 as upamount, entrys.transamt as downamount";
|
||||
// select = "parentorg, parentorgid, bank, bankid, upamount_report as upamount, downamount_report as downamount";
|
||||
// groupSelect = BANK_GROUP_SELECT;
|
||||
// this.setSumNameField("bank");
|
||||
|
||||
upSelect = "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, currency, entrys.transamt as upamount, 0 as downamount,entrys.subacct as shkd_subacct";
|
||||
downSelect = "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, currency, 0 as upamount, entrys.transamt as downamount,entrys.subacct as shkd_subacct";
|
||||
select = "parentorg, parentorgid, bank, bankid, sonorg, sonorgid, upamount_report as upamount, downamount_report as downamount,shkd_subacct";
|
||||
groupSelect = BANK_GROUP_SELECT;
|
||||
this.setSumNameField("bank");
|
||||
} else {
|
||||
} else {//不走
|
||||
upSelect = "company.name as parentorg, company.id as parentorgid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, currency, entrys.transamt as upamount, 0 as downamount";
|
||||
downSelect = "company.name as parentorg, company.id as parentorgid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, currency, 0 as upamount, entrys.transamt as downamount";
|
||||
select = "parentorg, parentorgid, sonorg, sonorgid, upamount_report as upamount, downamount_report as downamount";
|
||||
|
@ -67,21 +95,73 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin {
|
|||
DataSet downDataSet = QueryServiceHelper.queryDataSet("fca_transdownbill", "fca_transdownbill", downSelect, filter.toArray(), "company");
|
||||
DataSet dataSet = upDataSet.union(downDataSet);
|
||||
dataSet = this.addExchangeRateAndCurrencyUnit(dataSet, paramMap);
|
||||
// DynamicObjectCollection srcCollection = ORM.create().toPlainDynamicObjectCollection(dataSet.copy());
|
||||
dataSet = dataSet.select(select);
|
||||
this.isCompute = false;
|
||||
GroupbyDataSet group = dataSet.groupBy(groupSelect);
|
||||
dataSet = group.sum("upamount").sum("downamount").finish();
|
||||
//链接期初期初余额表
|
||||
DataSet getqc = getqc(filter, paramMap);
|
||||
List<String> sumAmountFieldList = new ArrayList(2);
|
||||
|
||||
sumAmountFieldList.add("upamount");
|
||||
sumAmountFieldList.add("downamount");
|
||||
sumAmountFieldList.add("differenceamount");
|
||||
this.setSumAmountFieldList(sumAmountFieldList);
|
||||
dataSet = dataSet.addField("upamount - downamount", "differenceamount");
|
||||
JoinDataSet join = dataSet.join(getqc, JoinType.LEFT);//连接
|
||||
dataSet = join.on("shkd_subacct","shkd_subacct")
|
||||
.select(new String[]{"parentorg", "parentorgid", "bank", "bankid", "sonorg", "sonorgid", "upamount", "downamount","shkd_subacct","differenceamount","shkd_qcye","shkd_qckyye"}).finish();
|
||||
|
||||
//组装查询银企sql
|
||||
// DataSet getyq = getyqsql(filter, paramMap);
|
||||
|
||||
|
||||
//期末
|
||||
List<String> sumAmountFieldList1 = new ArrayList(5);
|
||||
sumAmountFieldList1.add("shkd_qcye");
|
||||
sumAmountFieldList1.add("shkd_qckyye");
|
||||
sumAmountFieldList1.add("upamount");
|
||||
sumAmountFieldList1.add("downamount");
|
||||
sumAmountFieldList1.add("shkd_qmye");
|
||||
sumAmountFieldList1.add("shkd_qmkyye");
|
||||
this.setSumAmountFieldList(sumAmountFieldList1);
|
||||
//期末余额
|
||||
dataSet = dataSet.addField("shkd_qcye+upamount- downamount", "shkd_qmye");
|
||||
dataSet = dataSet.addField("shkd_qckyye+upamount- downamount", "shkd_qmkyye");
|
||||
Object statCurrency = ((DynamicObject)paramMap.get("filter_statcurrency")).getPkValue();
|
||||
dataSet = dataSet.addField(String.valueOf(statCurrency), "currency");
|
||||
return dataSet;
|
||||
}
|
||||
|
||||
private DataSet getyqsql(QFilter filter, Map<String, Object> paramMap) {
|
||||
//获取截止日期
|
||||
List<QFilter.QFilterNest> nests = filter.getNests(true);//过滤条件
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
String enddate="";
|
||||
for (int i = 0; i <nests.size() ; i++) {
|
||||
QFilter filter1 = nests.get(i).getFilter();
|
||||
if ("entrys.paydate".equals(filter1.getProperty())){
|
||||
String cp = filter1.getCP();
|
||||
if (cp.contains("<")){//结束日期
|
||||
enddate=sdf.format(filter.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ ");
|
||||
sqlBuilder.append("SELECT faccountbankid, fmodifytime, fvalibalance as upamount,fcurrencyid as currency \n" +
|
||||
"FROM t_bei_bankbalance\n" +
|
||||
"WHERE (faccountbankid, fmodifytime) IN (\n" +
|
||||
" SELECT faccountbankid, MAX(fmodifytime)\n" +
|
||||
" FROM t_bei_bankbalance\n" +
|
||||
" WHERE fmodifytime <= '"+enddate+"'\n" +
|
||||
" GROUP BY faccountbankid\n" +
|
||||
")");
|
||||
DataSet res = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder.toString());//财务云
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
public List<String> groupFields() {
|
||||
List<String> groupFieldList = new ArrayList(2);
|
||||
groupFieldList.add("parentorg");
|
||||
|
@ -189,4 +269,163 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin {
|
|||
protected boolean isNeedDimCurrency() {
|
||||
return this.isCompute;
|
||||
}
|
||||
|
||||
public DataSet getqc(QFilter filter,Map<String, Object> paramMap){
|
||||
//组装期初的过滤条件
|
||||
List<QFilter.QFilterNest> nests = filter.getNests(true);//过滤条件
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
QFilter qFilter=null;
|
||||
String startdate="";
|
||||
for (int i = 0; i <nests.size() ; i++) {
|
||||
QFilter filter1 = nests.get(i).getFilter();
|
||||
if ("entrys.paydate".equals(filter1.getProperty())){
|
||||
String cp = filter1.getCP();
|
||||
if (cp.contains(">")){//开始日期
|
||||
qFilter=new QFilter("entrys.paydate", "<", filter1.getValue());
|
||||
startdate=sdf.format(filter1.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
// for (QFilter.QFilterNest nest : nests) {
|
||||
// String op = nest.getOp();
|
||||
// QFilter filter1 = nest.getFilter();
|
||||
// if (!"entrys.paydate".equals(filter1.getProperty())){
|
||||
// if ("AND".equals(op)){
|
||||
// qFilter.and(filter1);
|
||||
// }else {
|
||||
// qFilter.or(filter1);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// //查询期初数据
|
||||
// DataSet upDataSet = QueryServiceHelper.queryDataSet("fca_transupbill", "fca_transupbill",
|
||||
// "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, currency, entrys.transamt as upamount,entrys.subacct as shkd_subacct",
|
||||
// qFilter.toArray(), "company");//上划期初
|
||||
// DataSet downDataSet = QueryServiceHelper.queryDataSet("fca_transdownbill", "fca_transdownbill",
|
||||
// "company.name as parentorg, company.id as parentorgid, bank.name as bank, bank.id as bankid, entrys.e_useorg.name as sonorg, entrys.e_useorg.id as sonorgid, currency, -1*entrys.transamt as upamount,entrys.subacct as shkd_subacct",
|
||||
// qFilter.toArray(), "company");//下拨期初
|
||||
// DataSet dataSet = upDataSet.union(downDataSet);
|
||||
//
|
||||
// dataSet = addExchangeRateAndCurrencyUnit1(dataSet, paramMap);
|
||||
// dataSet = dataSet.select(new String[]{"parentorg", "parentorgid", "bank", "bankid", "sonorg", "sonorgid", "upamount_report as shkd_qcamount","shkd_subacct","currency"});
|
||||
// GroupbyDataSet group = dataSet.groupBy(new String[]{"parentorg", "parentorgid", "bank", "bankid","sonorg","sonorgid","shkd_subacct"});
|
||||
// dataSet = group.sum("shkd_qcamount").finish();
|
||||
StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ ");
|
||||
sqlBuilder.append("SELECT faccountbankid as shkd_subacct, fmodifytime,famount as downamount, fvalibalance as upamount,fcurrencyid as currency \n" +
|
||||
"FROM t_bei_bankbalance\n" +
|
||||
"WHERE (faccountbankid, fmodifytime) IN (\n" +
|
||||
" SELECT faccountbankid, MAX(fmodifytime)\n" +
|
||||
" FROM t_bei_bankbalance\n" +
|
||||
" WHERE fmodifytime < '"+startdate+"'\n" +
|
||||
" GROUP BY faccountbankid\n" +
|
||||
")");
|
||||
DataSet res = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder.toString());//财务云
|
||||
res = addExchangeRateAndCurrencyUnit1(res, paramMap);
|
||||
DataSet select = res.select(new String[]{"shkd_subacct","downamount as shkd_qcye","upamount as shkd_qckyye"});
|
||||
return select;
|
||||
}
|
||||
|
||||
protected DataSet addExchangeRateAndCurrencyUnit1(DataSet bizDataSet, Map<String, Object> paramMap) {
|
||||
String unit = null;
|
||||
boolean isNeedCurrencyUnit = true;
|
||||
boolean isNeedDimCurrency = true;
|
||||
String[] selectFields;
|
||||
if (isNeedDimCurrency) {
|
||||
DataSet exchangeRateSet = getExChangeRateDs1(bizDataSet, paramMap);
|
||||
if (isNeedCurrencyUnit) {
|
||||
unit = (String)paramMap.get("filter_currencyunit");
|
||||
}
|
||||
|
||||
selectFields = initSelectFields1(bizDataSet, unit, isNeedCurrencyUnit, isNeedDimCurrency);
|
||||
return bizDataSet.leftJoin(exchangeRateSet).on("currency", "tarcurrency").select(selectFields).finish();
|
||||
} else if (isNeedCurrencyUnit) {
|
||||
unit = (String)paramMap.get("filter_currencyunit");
|
||||
selectFields = initSelectFields1(bizDataSet, unit, isNeedCurrencyUnit, isNeedDimCurrency);
|
||||
return bizDataSet.select(selectFields);
|
||||
} else {
|
||||
return bizDataSet;
|
||||
}
|
||||
}
|
||||
|
||||
private String[] initSelectFields1(DataSet bizDataSet, String unit, boolean isNeedCurrencyUnit, boolean isNeedDimCurrency) {
|
||||
// List<String> amountFields = Collections.singletonList("upamount");
|
||||
List<String> amountFields = Arrays.asList("upamount", "downamount");
|
||||
// List<String> amountUnitFields = Collections.singletonList("upamount");
|
||||
List<String> amountUnitFields = Arrays.asList("upamount", "downamount");
|
||||
String[] oralfields = bizDataSet.getRowMeta().getFieldNames();
|
||||
List<String> fieldList = new ArrayList(oralfields.length);
|
||||
String[] var9 = oralfields;
|
||||
int var10 = oralfields.length;
|
||||
|
||||
for(int var11 = 0; var11 < var10; ++var11) {
|
||||
String field = var9[var11];
|
||||
if (!fieldList.contains(field) && !amountFields.contains(field) && !amountUnitFields.contains(field)) {
|
||||
fieldList.add(field);
|
||||
}
|
||||
}
|
||||
|
||||
Iterator var13 = amountUnitFields.iterator();
|
||||
|
||||
String field;
|
||||
while(var13.hasNext()) {
|
||||
field = (String)var13.next();
|
||||
if (isNeedCurrencyUnit) {
|
||||
fieldList.add(String.format(field + " / %s " + field, unit));
|
||||
} else {
|
||||
fieldList.add(field);
|
||||
}
|
||||
}
|
||||
|
||||
var13 = amountFields.iterator();
|
||||
|
||||
while(var13.hasNext()) {
|
||||
field = (String)var13.next();
|
||||
if (isNeedDimCurrency) {
|
||||
if (isNeedCurrencyUnit) {
|
||||
fieldList.add(String.format("(" + field + " * rate) / %s " + field + "_report", unit));
|
||||
} else {
|
||||
fieldList.add("(" + field + " * rate) " + field + "_report");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isNeedDimCurrency) {
|
||||
fieldList.add("tarcurrency");
|
||||
fieldList.add("rate");
|
||||
}
|
||||
|
||||
return (String[])fieldList.toArray(new String[0]);
|
||||
}
|
||||
|
||||
protected DataSet getExChangeRateDs1(DataSet dataSet, Map<String, Object> paramMap) {
|
||||
Long tarCurrencyId = (Long)((DynamicObject)paramMap.get("filter_statcurrency")).getPkValue();
|
||||
DataSet currencySet = dataSet.copy().groupBy(new String[]{"currency"}).finish();
|
||||
List<Long> currencyIdList = new ArrayList(10);
|
||||
currencySet.iterator().forEachRemaining((v) -> {
|
||||
currencyIdList.add(v.getLong("currency"));
|
||||
});
|
||||
long orgId = 0L;
|
||||
String queryWay = (String)paramMap.get("filter_queryway");
|
||||
boolean orgQueryWay = ReportOrgQueryWayEnum.ORG.getValue().equals(queryWay);
|
||||
if (orgQueryWay) {
|
||||
orgId = RequestContext.get().getOrgId();
|
||||
} else {
|
||||
DynamicObject orgView = (DynamicObject)paramMap.get("filter_orgview");
|
||||
if (EmptyUtil.isNoEmpty(orgView)) {
|
||||
orgId = Long.parseLong(TmcOrgDataHelper.getOrgRootId(orgView.getLong("id")));
|
||||
}
|
||||
}
|
||||
|
||||
if (orgId != 0L) {
|
||||
return TmcBusinessBaseHelper.getExChangeDataSet(currencyIdList, tarCurrencyId, orgId, new Date(), orgQueryWay);
|
||||
} else {
|
||||
String[] fieldNames = new String[]{"tarcurrency", "rate"};
|
||||
DataType[] dataTypes = new DataType[]{DataType.LongType, DataType.BigDecimalType};
|
||||
return createEmptyDataSet(fieldNames, dataTypes);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue