package com.pz.web.controller.system;

import cn.dev33.satoken.annotation.SaCheckPermission;
import com.pz.common.core.controller.BaseController;
import com.pz.common.core.domain.PageQuery;
import com.pz.common.core.domain.R;
import com.pz.common.core.page.TableDataInfo;
import com.pz.common.enums.HospitalLevel;
import com.pz.common.enums.HospitalType;
import com.pz.system.domain.bo.BusinessBo;
import com.pz.system.domain.bo.CityBo;
import com.pz.system.domain.vo.BusinessVo;
import com.pz.system.domain.vo.CityVo;
import com.pz.system.domain.vo.CommonKeyValuesVo;
import com.pz.system.service.ICityService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 公共接口
 *
 * @author ruoyi
 * @date 2023-09-07
 */
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/system/common")
public class CommonController extends BaseController {

    private final ICityService iCityService;

    /**
     * 医院等级列表
     */
    @GetMapping("/hospitalLevelList")
    public R<List<CommonKeyValuesVo>> hospitalLevelList() {
        List<CommonKeyValuesVo> enumList = Arrays.stream(HospitalLevel.values())
            .map(e -> {
                CommonKeyValuesVo commonKeyValuesVo = new CommonKeyValuesVo();
                commonKeyValuesVo.setCode(e.getCode());
                commonKeyValuesVo.setName(e.getName());
                return commonKeyValuesVo;
            })
            .collect(Collectors.toList());
        return R.ok(enumList);
    }

    /**
     * 医院类别列表
     */
    @GetMapping("/hospitalTypeList")
    public R<List<CommonKeyValuesVo>> hospitalTypeList() {
        List<CommonKeyValuesVo> enumList = Arrays.stream(HospitalType.values())
            .map(e -> {
                CommonKeyValuesVo commonKeyValuesVo = new CommonKeyValuesVo();
                commonKeyValuesVo.setCode(e.getCode());
                commonKeyValuesVo.setName(e.getName());
                return commonKeyValuesVo;
            })
            .collect(Collectors.toList());
        return R.ok(enumList);
    }

    /**
     * 城市列表
     */
    @GetMapping("/cityVoList")
    public R<List<CityVo>> cityVoList(CityBo bo) {
        return R.ok(iCityService.queryList(bo));
    }
}