package kd.cosmic.jkjt.tmc.bei.common; import kd.bos.algo.DataSet; import kd.bos.algo.Row; import kd.bos.entity.report.FilterInfo; import kd.bos.entity.report.FilterItemInfo; import kd.bos.entity.report.parser.QFilterParserFactory; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.orm.query.QFilter; import kd.bos.util.StringUtils; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; public class CommonUtils { private static final Log logger = LogFactory.getLog(CommonUtils.class); /** * 将金额(BigDecimal)转换为“万元”单位,保留1位小数 * * @param amount 金额(单位:元) * @return 转换后的万元字符串,如 "0.2万元" */ public static String convertToTenThousandYuan(BigDecimal amount) { if (amount == null) { return "0万元"; } // 转换为万元:除以 10000 BigDecimal tenThousand = amount.divide(new BigDecimal("10000"), 1, RoundingMode.HALF_UP); return tenThousand.stripTrailingZeros().toPlainString() + "万元"; } public static Set getFieldValue(DataSet ds, String fieldName){ Iterator it = ds.copy().iterator(); Set fieldValueSet = new HashSet<>(); while (it.hasNext()){ fieldValueSet.add(it.next().get(fieldName)); } return fieldValueSet; } public static DataSet joinDataSetList(List dataSetList){ DataSet dataSet = null; for(DataSet dt : dataSetList){ if(dataSet == null){ dataSet = dt; }else{ dataSet = dt.union(dataSet); } } return dataSet; } public static QFilter getQFilterFormInfo(FilterInfo filterInfo,String filterName,String qFilterName){ if(filterInfo != null){ FilterItemInfo filterItem = filterInfo.getFilterItem(filterName); if(filterItem != null){ QFilter filter = QFilterParserFactory.createQFilterProcessor(filterItem.getCompareType()) .buildQFilterByFilterItem(filterItem); if(StringUtils.isNotEmpty(qFilterName)){ filter.__setProperty(qFilterName); return filter; } } } return null; } }