package digital.laboratory.platform.entrustment.convert;

import com.alibaba.fastjson.JSONArray;
import digital.laboratory.platform.sys.entity.DrugLite;

import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 毒品概要实体 转换类
 *
 */
public class DrugLiteConvert {
    /**
     * 因为从数据库取出来的字段属性实际是一个JSONObject数组，没有对应的getset方法，所以需要转换
     * @param drugLitesJson
     * @return
     */
    public static List<DrugLite> convertDirtyLiteByJSON(List<DrugLite> drugLitesJson) {
        if (drugLitesJson == null) {
            return Collections.emptyList();
        }
        String drugToString = JSONArray.toJSONString(drugLitesJson);
        List<DrugLite> drugLiteList = JSONArray.parseArray(drugToString, DrugLite.class).stream().sorted(Comparator.comparing(DrugLite::getName)).collect(Collectors.toList());;
        return drugLiteList;
    }

    /**
     * 将药物列表名称连接成字符串。
     *
     * @param drugLitesJson 药物列表（JSON格式）
     * @param delimiter     分隔符
     * @return 连接后的字符串
     */
    public static String joiningDrugListNameToStr(List<DrugLite> drugLitesJson, String delimiter) {
        return convertDirtyLiteByJSON(drugLitesJson)
                .stream()
                .map(DrugLite::getName)
                .collect(Collectors.joining(delimiter));
    }
}
