提交人:陈绍鑫

日期:2025/4/23 16:30
内容:上划下拨(new)插件
This commit is contained in:
陈绍鑫 2025-04-28 15:47:49 +08:00
parent e7471cdc20
commit 81e5d0b906
2 changed files with 68 additions and 9 deletions

View File

@ -40,7 +40,7 @@ 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.util.stream.Collectors;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
@ -430,17 +430,56 @@ public class FinanceReportFormPlugin extends AbstractReportFormPlugin implement
private void setavg(CreateColumnEvent event){
ReportList list = this.getView().getControl("reportlistap");
ReportListModel reportModel = (ReportListModel) list.getReportModel();
int rowCount = reportModel.getReportTaskResult().getRowCount();
Map summaryValueMap = reportModel.getSummaryValueMap();
for (int i = 0; i < FinanceVarietyEnum.avg.size(); i++) {
BigDecimal totalInAmt = (BigDecimal) summaryValueMap.get( FinanceVarietyEnum.avg.get(i));
BigDecimal result = totalInAmt.divide(new BigDecimal(rowCount), 2, RoundingMode.HALF_UP);
summaryValueMap.put(FinanceVarietyEnum.avg.get(i),result.toString());
}
List<List<String>> nestedList = FinanceVarietyEnum.nestedList;
int rowCount = reportModel.getReportTaskResult().getRowCount();
//获取数据集合
DynamicObjectCollection rowData = reportModel.getRowData(0, rowCount);
List<DynamicObject> filteredList = rowData.stream()
.filter(obj -> !obj.getString("shkd_org").equals("合并抵消"))
.collect(Collectors.toList());//去除合并抵消
for (List<String> strings : nestedList) {
//金额合计
BigDecimal total = filteredList.stream()
.map(obj -> obj.getBigDecimal(strings.get(0))) // 提取每个对象的getNumber()
.filter(number -> number != null) // 排除null值如果有的话
.reduce(BigDecimal.ZERO, BigDecimal::add); // 使用BigDecimal.ZERO作为初始值并执行累加
BigDecimal rzcbtotal = filteredList.stream()
.map(obj -> {
BigDecimal number = obj.getBigDecimal(strings.get(0)); // 获取getNumber()
BigDecimal number1 = obj.getBigDecimal(strings.get(1)); // 获取getNumber1()
// 如果number或number1为null视为0避免NullPointerException
if (number == null) number = BigDecimal.ZERO;
if (number1 == null) number1 = BigDecimal.ZERO;
return number.multiply(number1); // 计算乘积
})
.reduce(BigDecimal.ZERO, BigDecimal::add); // 累加所有乘积
BigDecimal qxtotal = filteredList.stream()
.map(obj -> {
BigDecimal number = obj.getBigDecimal(strings.get(0)); // 获取getNumber()
BigDecimal number1 = obj.getBigDecimal(strings.get(2)); // 获取getNumber1()
// 如果number或number1为null视为0避免NullPointerException
if (number == null) number = BigDecimal.ZERO;
if (number1 == null) number1 = BigDecimal.ZERO;
return number.multiply(number1); // 计算乘积
})
.reduce(BigDecimal.ZERO, BigDecimal::add); // 累加所有乘积
summaryValueMap.put(strings.get(1),total.compareTo(BigDecimal.ZERO) == 0?BigDecimal.ZERO.toString():rzcbtotal.divide(total, 2, RoundingMode.HALF_UP).toString());
summaryValueMap.put(strings.get(2),total.compareTo(BigDecimal.ZERO) == 0?BigDecimal.ZERO.toString():qxtotal.divide(total, 2, RoundingMode.HALF_UP).toString());
}
// for (int i = 0; i < FinanceVarietyEnum.avg.size(); i++) {
// BigDecimal totalInAmt = (BigDecimal) summaryValueMap.get( FinanceVarietyEnum.avg.get(i));
// BigDecimal result = totalInAmt.divide(new BigDecimal(rowCount), 2, RoundingMode.HALF_UP);
// summaryValueMap.put(FinanceVarietyEnum.avg.get(i),result.toString());
// }
summaryValueMap.put("shkd_jtnbjkamount",new BigDecimal(0).toString());
summaryValueMap.put("shkd_jtnbjkrzcb",new BigDecimal(0).toString());
summaryValueMap.put("shkd_jtnbjkqx",new BigDecimal(0).toString());
}
}

View File

@ -86,4 +86,24 @@ public class FinanceVarietyEnum {
"shkd_11to13rzcb","shkd_11to13qx",
"shkd_1to13jrcb","shkd_1to13qx"
);
public static List<List<String>> nestedList = Arrays.asList(
Arrays.asList("shkd_zqrzamount", "shkd_zqrzrzcb","shkd_zqrzqx"),
Arrays.asList("shkd_dqjkamount", "shkd_dqjkrzcb","shkd_dqjkqx"),
Arrays.asList("shkd_zcqldamount", "shkd_zcqldrzcb","shkd_zcqldqx"),
Arrays.asList("shkd_xmdkamount", "shkd_xmdkrzcb","shkd_xmdkqx"),
Arrays.asList("shkd_rzzlamount", "shkd_rzzlrzcb","shkd_rzzlqx"),
Arrays.asList("shkd_bxzjrzamount", "shkd_bxzjrzrzcb","shkd_bxzjrzqx"),
Arrays.asList("shkd_yfpjamount", "shkd_yfpjrzcb","shkd_yfpjqx"),
Arrays.asList("shkd_fjrqyjkamount", "shkd_fjrqyjkrzcb","shkd_fjrqyjkqx"),
Arrays.asList("shkd_qtzwrzamount", "shkd_qtzwrzrzcb","shkd_qtzwrzqx"),
Arrays.asList("shkd_oneotnineje", "shkd_oneotninerzcb","shkd_oneotnineqx"),
Arrays.asList("shkd_jtnbjkamount", "shkd_jtnbjkrzcb","shkd_jtnbjkqx"),
Arrays.asList("shkd_oneottenje", "shkd_oneottenrzcb","shkd_oneottenqx"),
Arrays.asList("shkd_yxzamount", "shkd_yxzrzcb","shkd_yxzqx"),
Arrays.asList("shkd_yxxtamount", "shkd_yxxtrzcb","shkd_yxxtqx"),
Arrays.asList("shkd_qtqyrzamount", "shkd_qtqyrzrzcb","shkd_qtqyrzqx"),
Arrays.asList("shkd_11to13je", "shkd_11to13rzcb","shkd_11to13qx"),
Arrays.asList("shkd_1to13je", "shkd_1to13jrcb","shkd_1to13qx")
);
}