package com.diagbot.facade;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.diagbot.dto.LisConfigDTO;
import com.diagbot.entity.TranLisConfig;
import com.diagbot.enums.IsDeleteEnum;
import com.diagbot.service.impl.TranLisConfigServiceImpl;
import com.diagbot.util.BeanUtil;
import com.diagbot.util.EntityUtil;
import org.springframework.stereotype.Component;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
 * 
 * @author wangfeng
 * @Description: TODO
 * @date 2019年2月13日 下午1:34:31
 */
@Component
public class TranLisConfigFacade extends TranLisConfigServiceImpl{

	/**
	 * 根据医院编码查询公表映射配置
	 *
	 * @param hospitalCode
	 * @return
	 */
	public List<LisConfigDTO> getLisConfigByhospitalIds(String hospitalCode) {

		QueryWrapper<TranLisConfig> lisConfig = new QueryWrapper<>();
	    //System.out.println("hospitalCode==="+hospitalCode);
		lisConfig.eq("is_deleted", IsDeleteEnum.N.getKey()).eq("hospital_code", hospitalCode);
		List<TranLisConfig> data = list(lisConfig);
		List<LisConfigDTO> datas = BeanUtil.listCopyTo(data, LisConfigDTO.class);
		//System.out.println("json=="+GsonUtil.toJson(datas));
		return datas;
	}

	/**
	 * 根据医院编码获取化验公表映射关系-itemName不为空 Map<mealName,Map<itemName,uniqueName>>
	 *
	 * @return
	 */
	public Map<String, Map<String, String>> getLisConfigByHosCode_NotEmptyItemName(String hosCode) {
		Map<String, Map<String, String>> retMap = new LinkedHashMap<>();
		QueryWrapper<TranLisConfig> lisConfigQueryWrapper = new QueryWrapper<>();
		lisConfigQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).eq("hospital_code",hosCode).
				isNotNull("item_name").and(i->i.ne("item_name",""));
		List<TranLisConfig> lisConfigList = this.list(lisConfigQueryWrapper);
		Map<String, List<TranLisConfig>> lisConfigMap = EntityUtil.makeEntityListMap(lisConfigList, "mealName");
		for (Map.Entry<String, List<TranLisConfig>> entry : lisConfigMap.entrySet()) {
			if (entry.getValue().size() > 0) {
				retMap.put(entry.getKey(), EntityUtil.makeMapWithKeyValue(entry.getValue(), "itemName", "uniqueName"));
			} else {
				retMap.put(entry.getKey(), null);
			}
		}
		return retMap;
	}

	/**
	 * 根据医院编码获取化验公表映射关系-itemName为空 Map<mealName,uniqueName>
	 *
	 * @return
	 */
	public Map<String, String> getLisConfigByHosCode_EmptyItemName(String hosCode) {
		QueryWrapper<TranLisConfig> lisConfigQueryWrapper = new QueryWrapper<>();
		lisConfigQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).eq("hospital_code",hosCode).
				isNull("item_name").or(i->i.eq("item_name",""));
		List<TranLisConfig> lisConfigList = this.list(lisConfigQueryWrapper);
		Map<String, String> retMap = EntityUtil.makeMapWithKeyValue(lisConfigList, "mealName", "uniqueName");
		return retMap;
	}
}