package com.example.his.api.mis.controller;

import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.example.his.api.common.result.R;
import com.example.his.api.mis.service.FlowRegulationService;
import com.example.his.api.mis.service.SystemService;
import com.example.his.api.req.MisFlowRegulation.editForm;
import com.example.his.api.req.MisFlowRegulation.SearchForm;
import com.example.his.api.req.MisSystem.UpdateModeForm;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@RestController
@RequestMapping("/mis/flowRegulation")
public class FlowRegulationController {

    @Resource
    private SystemService systemService;

    @Resource
    private FlowRegulationService flowRegulationService;

    /**
     * 人员调流-模式
     *
     * @return
     */
    @GetMapping("/searchMode")
    public R searchMode() {
        String value = systemService.getItemValue("auto_flow_regulation");
        return R.success(Boolean.parseBoolean(value));
    }

    /**
     * 人员调流-分页查询
     *
     * @param form
     * @return
     */
    @PostMapping("/searchFlowRegulationByPage")
    public R searchFlowRegulationByPage(@RequestBody @Valid SearchForm form) {
        Map param = BeanUtil.beanToMap(form);
        PageInfo<HashMap> list = flowRegulationService.searchFlowRegulationByPage(param);
        return R.success(list);
    }

    /**
     * 人员调流-编辑
     *
     * @param form
     * @return
     */
    @PostMapping("/editFlowRegulation")
    public R editFlowRegulation(@RequestBody @Valid editForm form) {
        Map param = BeanUtil.beanToMap(form);
        int rows = 0;
        if (ObjectUtil.isEmpty(param.get("id"))) {
            rows = flowRegulationService.insertFlowRegulation(param);
        } else {
            rows = flowRegulationService.updateFlowRegulation(param);
        }
        return R.success(rows);
    }

    /**
     * 人员调流-查询调流信息
     *
     * @param id
     * @return
     */
    @GetMapping("/searchFlowRegulationById")
    public R searchFlowRegulationById(@RequestParam int id) {
        HashMap map = flowRegulationService.searchFlowRegulationById(id);
        return R.success(map);
    }

    /**
     * 人员调流-获取推荐科室列表
     *
     * @return
     */
    @GetMapping("/searchRecommendedPlace")
    public R searchRecommendedPlace() {
        List list = flowRegulationService.searchRecommendedPlace();
        return R.success(list);
    }

    /**
     * 人员调流-删除
     *
     * @return
     */
    @GetMapping("/deleteFlowRegulationById/{id}")
    public R deleteFlowRegulationById(@PathVariable int id) {
        int rows = flowRegulationService.deleteFlowRegulationById(id);
        return R.success(rows);
    }

    /**
     * 人员调流-模式切换
     *
     * @param form
     * @return
     */
    @PostMapping("/updateMode")
    public R updateMode(@RequestBody @Valid UpdateModeForm form) {
        boolean bool = systemService.setItemValue("auto_flow_regulation", form.getMode().toString());
        return R.success(bool);
    }
}
