package com.glxp.mipsdl.config;

import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.glxp.mipsdl.util.DictUtl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.HashMap;

/**
 * 医院编码字典配置类
 */
@Slf4j
@Component
public class HosDictConfig {

    @PostConstruct
    public void initHospDict() {
        log.info("系统启动中，初始化医院编码字典");
        String json = ResourceUtil.readUtf8Str("hosp_dict.json");
        if (StrUtil.isNotBlank(json)) {
            JSONArray jsonArray = JSONUtil.parseArray(json);
            if (jsonArray.size() > 0) {
                DictUtl.HOSP_CODE = new ArrayList<>(jsonArray.size());
                DictUtl.HOSP_NAME = new ArrayList<>(jsonArray.size());
                DictUtl.HOSP_DICT = new HashMap<>(jsonArray.size());
                jsonArray.forEach(item -> {
                    JSONObject jsonObject = JSONUtil.parseObj(item);
                    String code = jsonObject.get("code", String.class);
                    String name = jsonObject.get("name", String.class);
                    DictUtl.HOSP_CODE.add(code);
                    DictUtl.HOSP_NAME.add(name);
                    DictUtl.HOSP_DICT.put(code, name);
                });
                log.info("医院编码字典初始化完成，编码数量为： {}", jsonArray.size());
            } else {
                log.info("初始化医院编码字典失败，字典文件为空");
            }
        } else {
            log.error("初始化医院编码字典失败，字典文件为空");
        }
    }

}
