package nckd.jxccl.base.common.algo;

import kd.bos.algo.CustomAggFunction;
import kd.bos.algo.DataType;

/**
* 自定义聚合函数类（假设按字典序求最大字符串）
* @author W.Y.C
* @date 2025/12/27 16:57
* @version 1.0
*/
public class GroupMaxStrFunction extends CustomAggFunction<String> {
    public GroupMaxStrFunction() {
        super("group_maxstr", DataType.StringType); // 注册函数名和返回类型
    }

    @Override
    public String newAggValue() {
        return ""; // 初始化为空字符串
    }

    @Override
    public String addValue(String oldValue, Object newValue) {
        String curRowData = String.valueOf(newValue);
        // 按字典序比较，取较大值（若需其他规则，可修改比较逻辑）
        return oldValue.compareTo(curRowData) < 0 ? curRowData : oldValue;
    }

    @Override
    public String combineAggValue(String paramT1, String paramT2) {
        // 如果不需要分批处理，可直接返回 null
        return null;
    }

    @Override
    public Object getResult(String result) {
        return result;
    }
}
/*

// 2. 在业务代码中使用
GroupMaxStrFunction groupMaxStr = new GroupMaxStrFunction();
DataSet resultDataSet = dataSet.groupBy("分组字段")
        .agg(groupMaxStr, "p_1", "max_p1") // 对 p_1 字段应用自定义聚合，结果别名为 max_p1
        .finish();
*/
