提交人:陈绍鑫

日期:2025/7/10 17:00
内容:银行账户报表开发
This commit is contained in:
陈绍鑫 2025-07-11 11:59:58 +08:00
parent 3ae1e41926
commit dcb862d3c7
1 changed files with 20 additions and 21 deletions

View File

@ -3,6 +3,7 @@ package shkd.sys.sys.plugin.report;
import kd.bos.algo.DataSet; import kd.bos.algo.DataSet;
import kd.bos.algo.JoinDataSet; import kd.bos.algo.JoinDataSet;
import kd.bos.algo.JoinType; import kd.bos.algo.JoinType;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.db.DB; import kd.bos.db.DB;
import kd.bos.db.DBRoute; import kd.bos.db.DBRoute;
@ -20,6 +21,7 @@ import kd.bos.util.CollectionUtils;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
public class AccountbankReportPlugin extends AbstractReportListDataPlugin { public class AccountbankReportPlugin extends AbstractReportListDataPlugin {
@ -75,15 +77,7 @@ public class AccountbankReportPlugin extends AbstractReportListDataPlugin {
, null, null); , null, null);
String[] fieldNames = accountbankDataSet.getRowMeta().getFieldNames(); String[] fieldNames = accountbankDataSet.getRowMeta().getFieldNames();
// 创建一个新的数组长度是原数组长度 + 2因为要添加两个字段 String[] newFieldNames = ExpansionArray(fieldNames, Arrays.asList("fid", "fbasedataid as shkd_bz"));
String[] newFieldNames = new String[fieldNames.length + 2];
// 将原来的字段名数组复制到新数组
System.arraycopy(fieldNames, 0, newFieldNames, 0, fieldNames.length);
// 添加两个新的字段到新数组的末尾
newFieldNames[fieldNames.length] = "fid"; // 第一个新字段
newFieldNames[fieldNames.length + 1] = "fbasedataid as shkd_bz"; // 第二个新字段
// 查询多选币别 // 查询多选币别
DataSet currencydata = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("sys"), DataSet currencydata = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("sys"),
@ -94,30 +88,35 @@ public class AccountbankReportPlugin extends AbstractReportListDataPlugin {
DataSet finish = join.on("id", "fid").select(newFieldNames).finish(); DataSet finish = join.on("id", "fid").select(newFieldNames).finish();
String[] fieldNames1 = finish.getRowMeta().getFieldNames(); String[] fieldNames1 = finish.getRowMeta().getFieldNames();
// 创建一个新的数组长度是原数组长度 + 2因为要添加两个字段
String[] newFieldNames1 = new String[fieldNames1.length + 3];
// 将原来的字段名数组复制到新数组 String[] newFieldNames1 = ExpansionArray(fieldNames1, Arrays.asList("shkd_zhyeyb", "shkd_zhyebb", "shkd_zhyesj"));
System.arraycopy(fieldNames1, 0, newFieldNames1, 0, fieldNames1.length);
// 添加两个新的字段到新数组的末尾
newFieldNames1[fieldNames1.length] = "shkd_zhyeyb"; // 第一个新字段
newFieldNames1[fieldNames1.length + 1] = "shkd_zhyebb"; // 第二个新字段
newFieldNames1[fieldNames1.length + 2] = "shkd_zhyesj"; // 第三个新字段
// DynamicObjectCollection srcCollection = ORM.create().toPlainDynamicObjectCollection(finish.copy());
//查询余额 //查询余额
StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ \n"); StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ \n");
sqlBuilder.append("SELECT fbankacctid ,SUM(FDebitAmount-FCreditAmount) as shkd_zhyeyb,SUM(FDebitAmount*fexchangerate-FCreditAmount*fexchangerate) as shkd_zhyebb,fcurrencyid,MAX(FBizDate) as shkd_zhyesj\n" + sqlBuilder.append("SELECT fbankacctid ,SUM(FDebitAmount-FCreditAmount) as shkd_zhyeyb,SUM(FDebitAmount*fexchangerate-FCreditAmount*fexchangerate) as shkd_zhyebb,fcurrencyid,MAX(FBizDate) as shkd_zhyesj\n" +
"FROM t_cas_bankjournal \n" + "FROM t_cas_bankjournal WHERE FBizDate<'"+dateList.get(0)+"' \n" +
"GROUP BY fbankacctid, fcurrencyid"); "GROUP BY fbankacctid, fcurrencyid");
DataSet res = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder.toString());//财务云 DataSet res = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder.toString());//财务云
JoinDataSet join1 = finish.join(res, JoinType.LEFT);//左连接 JoinDataSet join1 = finish.join(res, JoinType.LEFT);//左连接
DataSet finish1 = join1.on("id", "fbankacctid").on("shkd_bz", "fcurrencyid").select(newFieldNames1).finish(); DataSet finish1 = join1.on("id", "fbankacctid").on("shkd_bz", "fcurrencyid").select(newFieldNames1).finish();
DynamicObjectCollection srcCollection = ORM.create().toPlainDynamicObjectCollection(finish1.copy());
return finish1; return finish1;
} }
String[] ExpansionArray(String[] fieldNames,List<String> list){
// 创建一个新的数组长度是原数组长度 + 3因为要添加两个字段
String[] newFieldNames = new String[fieldNames.length + list.size()];
// 将原来的字段名数组复制到新数组
System.arraycopy(fieldNames, 0, newFieldNames, 0, fieldNames.length);
for (int i = 0; i < list.size(); i++) {
// 添加两个新的字段到新数组的末尾
newFieldNames[fieldNames.length+i] = list.get(i); // 第i个新字段
}
return newFieldNames;
}
} }