提交人:陈绍鑫

日期:2025/5/29 12:30
内容:开票登记转换规则插件
This commit is contained in:
陈绍鑫 2025-05-30 11:48:09 +08:00
parent 9ecadc415b
commit f754990c9e
1 changed files with 91 additions and 23 deletions

View File

@ -30,6 +30,7 @@ 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.BusinessDataServiceHelper;
import kd.bos.servicehelper.DispatchServiceHelper;
import kd.bos.servicehelper.QueryServiceHelper;
import kd.ebg.aqap.common.core.utils.Sequence;
@ -41,6 +42,7 @@ 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.cdm.common.constant.CdmEntityConst;
import kd.tmc.fbp.common.enums.ReportOrgQueryWayEnum;
import kd.tmc.fbp.common.helper.TmcBusinessBaseHelper;
import kd.tmc.fbp.common.helper.TmcOrgDataHelper;
@ -278,19 +280,45 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin {
Date startOfYear = calendar.getTime();
// 将年初日期格式化为字符串
//业务单元数据集
DataSet balanceDataSet = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(),"bd_accountbanks","id,number as shkd_orgnumber,name as shkd_org", null, null);
//获取建行的银行id
DynamicObject[] banks = BusinessDataServiceHelper.load("bd_finorginfo", "id", new QFilter("bank_cate.name", QCP.equals, "建设银行").toArray());
List<Long> idList = Arrays.stream(banks) // banks 数组转换为流
.map(bank -> (Long)bank.get("id")) // 提取 id 字段并转换为字符串
.collect(Collectors.toList()); // 收集到 List
String bankids = idList.toString();
bankids = bankids.substring(1, bankids.length() - 1);
String startOfYearStr = sdf.format(startOfYear);
StringBuilder sqlBuilder1 = new StringBuilder("/*dialect*/ ");
sqlBuilder1.append("SELECT faccountbankid as shkd_subacct, fcreatetime,famount as downamount, fvalibalance as upamount,fcurrencyid as currency \n" +
"FROM t_bei_bankbalance\n" +
"WHERE (faccountbankid, fcreatetime) IN (\n" +
" SELECT faccountbankid, MAX(fcreatetime)\n" +
// sqlBuilder1.append("SELECT faccountbankid as shkd_subacct, fcreatetime,famount as downamount, fvalibalance as upamount,fcurrencyid as currency \n" +
// "FROM t_bei_bankbalance\n" +
// "WHERE (faccountbankid, fcreatetime) IN (\n" +
// " SELECT faccountbankid, MAX(fcreatetime)\n" +
// " FROM t_bei_bankbalance\n" +
// " WHERE fcreatetime < '"+startOfYearStr+"'\n" +
// " GROUP BY faccountbankid\n" +
// ")");
sqlBuilder1.append("SELECT \n" +
" shkd_subacct,fmodifytime,fbizdate,downamount,currency,fbankid,fk_shkd_depositbalance,\n" +
" CASE \n" +
" WHEN fbankid in (\n" +
bankids
+
" ) THEN upamount\n" +
" ELSE fk_shkd_depositbalance\n" +
" END AS upamount\n" +
"FROM (\n" +
" SELECT \n" +
" fmodifytime,fbizdate,faccountbankid AS shkd_subacct,famount AS downamount,fvalibalance AS upamount,fcurrencyid AS currency,fbankid,fk_shkd_depositbalance,\n" +
" ROW_NUMBER() OVER (\n" +
" PARTITION BY faccountbankid \n" +
" ORDER BY fbizdate DESC, fmodifytime DESC\n" +
" ) AS rn\n" +
" FROM t_bei_bankbalance\n" +
" WHERE fcreatetime < '"+startOfYearStr+"'\n" +
" GROUP BY faccountbankid\n" +
")");
" WHERE fbizdate < '"+startOfYearStr+"'\n" +
")\n" +
"WHERE rn = 1 ");
//年初余额
DataSet ncres = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder1.toString());//财务云
ncres = addExchangeRateAndCurrencyUnit1(ncres, paramMap);
@ -331,14 +359,34 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin {
//期末余额
StringBuilder sqlBuilder2 = new StringBuilder("/*dialect*/ ");
sqlBuilder2.append("SELECT faccountbankid as shkd_subacct, fcreatetime,famount as downamount, fvalibalance as upamount,fcurrencyid as currency \n" +
"FROM t_bei_bankbalance\n" +
"WHERE (faccountbankid, fcreatetime) IN (\n" +
" SELECT faccountbankid, MAX(fcreatetime)\n" +
// sqlBuilder2.append("SELECT faccountbankid as shkd_subacct, fcreatetime,famount as downamount, fvalibalance as upamount,fcurrencyid as currency \n" +
// "FROM t_bei_bankbalance\n" +
// "WHERE (faccountbankid, fcreatetime) IN (\n" +
// " SELECT faccountbankid, MAX(fcreatetime)\n" +
// " FROM t_bei_bankbalance\n" +
// " WHERE fcreatetime "+endQCP+" '"+enddate+"'\n" +
// " GROUP BY faccountbankid\n" +
// ")");
sqlBuilder2.append("SELECT \n" +
" shkd_subacct,fmodifytime,fbizdate,downamount,currency,fbankid,fk_shkd_depositbalance,\n" +
" CASE \n" +
" WHEN fbankid in (\n" +
bankids
+
" ) THEN upamount\n" +
" ELSE fk_shkd_depositbalance\n" +
" END AS upamount\n" +
"FROM (\n" +
" SELECT \n" +
" fmodifytime,fbizdate,faccountbankid AS shkd_subacct,famount AS downamount,fvalibalance AS upamount,fcurrencyid AS currency,fbankid,fk_shkd_depositbalance,\n" +
" ROW_NUMBER() OVER (\n" +
" PARTITION BY faccountbankid \n" +
" ORDER BY fbizdate DESC, fmodifytime DESC\n" +
" ) AS rn\n" +
" FROM t_bei_bankbalance\n" +
" WHERE fcreatetime "+endQCP+" '"+enddate+"'\n" +
" GROUP BY faccountbankid\n" +
")");
" WHERE fbizdate "+endQCP+" '"+enddate+"'\n" +
")\n" +
"WHERE rn = 1 ");
DataSet qmres = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder2.toString());//财务云
qmres = addExchangeRateAndCurrencyUnit1(qmres, paramMap);
qmres = qmres.select(new String[]{"shkd_subacct","upamount_report as shkd_qmkyye"});
@ -348,14 +396,34 @@ public class transbillreportnewPlugin extends AbstractTmcTreeReportDataPlugin {
//期初可用余额
StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ ");
sqlBuilder.append("SELECT faccountbankid as shkd_subacct, fcreatetime,famount as downamount, fvalibalance as upamount,fcurrencyid as currency \n" +
"FROM t_bei_bankbalance\n" +
"WHERE (faccountbankid, fcreatetime) IN (\n" +
" SELECT faccountbankid, MAX(fcreatetime)\n" +
// sqlBuilder.append("SELECT faccountbankid as shkd_subacct, fcreatetime,famount as downamount, fvalibalance as upamount,fcurrencyid as currency \n" +
// "FROM t_bei_bankbalance\n" +
// "WHERE (faccountbankid, fcreatetime) IN (\n" +
// " SELECT faccountbankid, MAX(fcreatetime)\n" +
// " FROM t_bei_bankbalance\n" +
// " WHERE fcreatetime < '"+startdate+"'\n" +
// " GROUP BY faccountbankid\n" +
// ")");
sqlBuilder.append("SELECT \n" +
" shkd_subacct,fmodifytime,fbizdate,downamount,currency,fbankid,fk_shkd_depositbalance,\n" +
" CASE \n" +
" WHEN fbankid in (\n" +
bankids
+
" ) THEN upamount\n" +
" ELSE fk_shkd_depositbalance\n" +
" END AS upamount \n" +
"FROM (\n" +
" SELECT \n" +
" fmodifytime,fbizdate,faccountbankid AS shkd_subacct,famount AS downamount,fvalibalance AS upamount,fcurrencyid AS currency,fbankid,fk_shkd_depositbalance,\n" +
" ROW_NUMBER() OVER (\n" +
" PARTITION BY faccountbankid \n" +
" ORDER BY fbizdate DESC, fmodifytime DESC\n" +
" ) AS rn\n" +
" FROM t_bei_bankbalance\n" +
" WHERE fcreatetime < '"+startdate+"'\n" +
" GROUP BY faccountbankid\n" +
")");
" WHERE fbizdate < '"+startdate+"'\n" +
")\n" +
"WHERE rn = 1 ");
DataSet res = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder.toString());//财务云
res = addExchangeRateAndCurrencyUnit1(res, paramMap);
DataSet select = res.select(new String[]{"shkd_subacct","upamount_report as shkd_qckyye"});