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