package com.yem.rf.utils; import com.yem.wm.utils.YEM; import kd.bos.algo.DataSet; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.metadata.IDataEntityProperty; import kd.bos.dataentity.metadata.clr.DataEntityPropertyCollection; import kd.bos.entity.report.FilterInfo; import kd.bos.orm.ORM; import kd.bos.orm.query.QFilter; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; /** * @Description: TODO * @Date: 2024/7/8 11:17 * @Created: by ZZSLL */ public class RFUtils { public static QFilter getBaseQFilter() { return new QFilter("billstatus", "in", new String[]{"C"}); } public static QFilter getBaseQFilter(String[] args) { return new QFilter("billstatus", "in", args); } public static String formatDate(Date date) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); return formatter.format(date); } public static String formatDate(Date date, String format) { SimpleDateFormat formatter = new SimpleDateFormat(format); return formatter.format(date); } public static String printBigDecimal(Object number) { BigDecimal num = new BigDecimal(String.valueOf(number)); return num.stripTrailingZeros().toPlainString(); } public static List> debugDataSet(DataSet dataSet) { dataSet = dataSet.copy(); List> list = new ArrayList<>(); DynamicObjectCollection collection = ORM.create().toPlainDynamicObjectCollection(dataSet); for (DynamicObject dynamicObject : collection) { Map map = new LinkedHashMap<>(); DataEntityPropertyCollection properties = dynamicObject.getDataEntityType().getProperties(); for (IDataEntityProperty property : properties) { String name = property.getName(); if (dynamicObject.containsProperty(name)) { Object value = dynamicObject.get(name); map.put(name, value); } } list.add(map); } return list; } public static Object debugGetIfExist(DataSet dataSet, String propName, int idx) { dataSet = dataSet.copy(); List> collection = debugDataSet(dataSet); if (idx > collection.size()) { return "idx > Collection.size() |" + idx + " > " + collection.size(); } Map dynamicObject = collection.get(idx); if (dynamicObject.containsKey(propName)) { return dynamicObject.get(propName); } else { return "不存在属性: " + propName; } } public static List debugGetIfExist(DataSet dataSet, String propName) { dataSet = dataSet.copy(); List list = new ArrayList<>(); List> collection = debugDataSet(dataSet); for (Map dynamicObject : collection) { if (dynamicObject.containsKey(propName)) { list.add(dynamicObject.get(propName)); } } return list; } public static List getFBaseDataIds(FilterInfo filter, String propName) { List ids = new ArrayList<>(); DynamicObjectCollection collection = filter.getDynamicObjectCollection(propName); if (collection != null) { for (DynamicObject d : collection) { long id = d.getLong("id"); ids.add(id); } } return ids; } public static String concatFBaseDataFilter(List ids, String propName) { StringBuilder sb = new StringBuilder(); if (YEM.isNotEmpty(ids)) { sb.append(" AND ").append(propName).append(" IN ("); for (Long i : ids) { int idx = ids.indexOf(i); if (idx == ids.size() - 1) { sb.append(i); } else { sb.append(i).append(","); } } sb.append(")"); } return sb.toString(); } }