package com.dsk.cscec.controller;


import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.cscec.domain.bo.AddDCustomerLaborLeaderBo;
import com.dsk.cscec.domain.bo.AdvisoryBodyBo;
import com.dsk.cscec.domain.bo.CustomerCooperationBo;
import com.dsk.cscec.domain.bo.CustomerInfoBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyVo;
import com.dsk.cscec.domain.vo.CustomerApproveVo;
import com.dsk.cscec.domain.vo.CustomerCooperationVo;
import com.dsk.cscec.domain.vo.CustomerInfoVo;
import com.dsk.cscec.service.ICustomerInfoService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 供应商相关
 *
 * @author
 * @since 2023-12-10
 */
@RequiredArgsConstructor
@RestController
@RequestMapping("/customerInfo")
public class CustomerInfoController extends BaseController {
    /**
     * 服务对象
     */
    private final ICustomerInfoService iCustomerInfoService;


    /**
     * 供应商分类列表
     */
    @PostMapping("/list")
    public TableDataInfo<CustomerInfoVo> list(@Validated @RequestBody CustomerInfoBo bo, @RequestBody PageQuery query) {
        return iCustomerInfoService.queryPageList(bo, query);
    }

    /**
     * 内部合作-咨询机构合作记录
     */
    @GetMapping("/advisoryList")
    public TableDataInfo<AdvisoryBodyVo> advisoryList(@Validated AdvisoryBodyBo bo, PageQuery query) {
        return iCustomerInfoService.queryAdvisoryList(bo, query);
    }

    /**
     * 内部合作-咨询机构合作记录导出
     */
    @GetMapping("/advisoryExport")
    public void advisoryExport(@Validated AdvisoryBodyBo bo, PageQuery query, HttpServletResponse response) {
        List<AdvisoryBodyVo> listVo = iCustomerInfoService.queryAdvisoryList(bo, query).getRows();
        ExcelUtil.exportExcel(listVo, "咨询机构合作记录", AdvisoryBodyVo.class, response);
    }

    /**
     * 合作记录-供应商准入情况
     */
    @GetMapping("/approveInfo")
    public R<CustomerApproveVo> getApproveInfo(CustomerInfoBo bo) {
        return R.ok(iCustomerInfoService.queryApproveByBo(bo));
    }

    /**
     * 内部合作-供应商合作记录
     */
    @GetMapping("/cooperationList")
    public TableDataInfo<CustomerCooperationVo> cooperationList(@Validated CustomerCooperationBo bo, PageQuery query) {
        return iCustomerInfoService.queryCooperationList(bo, query);
    }

    /**
     * 查询供应商基本情况
     */
    @GetMapping("/queryBasicInfo")
    public R<Map<String, Long>> queryBasicInfo() {
        return R.ok(iCustomerInfoService.queryBasicInfo());
    }

    /**
     * 校验劳务队长身份证号是否存在
     */
    @GetMapping("/checkLaborLeaderIdExist/{laborLeaderId}")
    public R<List<CustomerInfoVo>> checkLaborLeaderIdExist(@PathVariable String laborLeaderId) {
        return R.ok(iCustomerInfoService.checkLaborLeaderIdExist(laborLeaderId));
    }

    /**
     * 添加劳务队队长
     */
    @PostMapping("addLaborLeader")
    public R<Void> addLaborLeader(@RequestBody AddDCustomerLaborLeaderBo bo) {
        return toAjax(iCustomerInfoService.addLaborLeader(bo));
    }
}

