parent
e7471cdc20
commit
81e5d0b906
|
@ -40,7 +40,7 @@ import kd.bos.servicehelper.org.OrgUnitServiceHelper;
|
||||||
import kd.bos.servicehelper.org.OrgViewType;
|
import kd.bos.servicehelper.org.OrgViewType;
|
||||||
import kd.bos.servicehelper.permission.PermissionServiceHelper;
|
import kd.bos.servicehelper.permission.PermissionServiceHelper;
|
||||||
import shkd.sys.sys.plugin.report.domain.FinanceVarietyEnum;
|
import shkd.sys.sys.plugin.report.domain.FinanceVarietyEnum;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
@ -430,17 +430,56 @@ public class FinanceReportFormPlugin extends AbstractReportFormPlugin implement
|
||||||
private void setavg(CreateColumnEvent event){
|
private void setavg(CreateColumnEvent event){
|
||||||
ReportList list = this.getView().getControl("reportlistap");
|
ReportList list = this.getView().getControl("reportlistap");
|
||||||
ReportListModel reportModel = (ReportListModel) list.getReportModel();
|
ReportListModel reportModel = (ReportListModel) list.getReportModel();
|
||||||
int rowCount = reportModel.getReportTaskResult().getRowCount();
|
|
||||||
Map summaryValueMap = reportModel.getSummaryValueMap();
|
Map summaryValueMap = reportModel.getSummaryValueMap();
|
||||||
for (int i = 0; i < FinanceVarietyEnum.avg.size(); i++) {
|
List<List<String>> nestedList = FinanceVarietyEnum.nestedList;
|
||||||
BigDecimal totalInAmt = (BigDecimal) summaryValueMap.get( FinanceVarietyEnum.avg.get(i));
|
int rowCount = reportModel.getReportTaskResult().getRowCount();
|
||||||
BigDecimal result = totalInAmt.divide(new BigDecimal(rowCount), 2, RoundingMode.HALF_UP);
|
//获取数据集合
|
||||||
summaryValueMap.put(FinanceVarietyEnum.avg.get(i),result.toString());
|
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_jtnbjkamount",new BigDecimal(0).toString());
|
||||||
summaryValueMap.put("shkd_jtnbjkrzcb",new BigDecimal(0).toString());
|
|
||||||
summaryValueMap.put("shkd_jtnbjkqx",new BigDecimal(0).toString());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -86,4 +86,24 @@ public class FinanceVarietyEnum {
|
||||||
"shkd_11to13rzcb","shkd_11to13qx",
|
"shkd_11to13rzcb","shkd_11to13qx",
|
||||||
"shkd_1to13jrcb","shkd_1to13qx"
|
"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")
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue