package com.dsk.web.controller.dsk;

import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.dsk.dto.JskCombineBidPageDto;
import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.system.domain.dsk.dto.JskCombineCertificateDto;
import com.dsk.system.domain.dsk.dto.JskCombineSearchDto;
import com.dsk.system.domain.dsk.vo.JskCombineBidProjectExportVo;
import com.dsk.system.domain.dsk.vo.JskCombineWinBidProjectExportVo;
import com.dsk.system.dskService.JskCombineInfoService;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.util.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

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

/**
 * 集团户相关信息
 *
 * @author lcl
 * @create 2023/8/7
 */
@Slf4j
@RestController
@RequestMapping(value = "/combine/info")
public class JskCombineInfoController extends BaseController {

    @Autowired
    private JskCombineInfoService baseService;

    /**
     * 集团成员列表
     */
    @PostMapping("/memberList")
    public TableDataInfo memberList(@RequestBody JskCombineSearchDto dto) throws Exception {
        return baseService.memberList(dto);
    }

    /**
     * 分组成员数量
     */
    @PostMapping("/group/memberCount")
    public R groupMemberCount(@RequestBody JskCombineSearchDto dto) {
        return baseService.groupMemberCount(dto);
    }

    /**
     * 集团业绩列表
     */
    @PostMapping("/businessList")
    public TableDataInfo businessList(@RequestBody JskCombineSearchDto dto) throws Exception {
        return baseService.businessList(dto);
    }

    /**
     * 集团资质列表
     */
    @PostMapping("/certificateList")
    public TableDataInfo certificateList(@RequestBody JskCombineSearchDto dto) throws Exception {
        return baseService.certificateList(dto);
    }

    /**
     * 集团成员资质列表
     */
    @PostMapping("/member/certificateList")
    public TableDataInfo menberCertificateList(@RequestBody JskCombineCertificateDto dto) throws Exception {
        return baseService.menberCertificateList(dto);
    }

    /**
     * 集团资质分组统计
     */
    @PostMapping("/group/certificateCount")
    public R groupCertificateCount(@RequestBody JskCombineSearchDto dto) throws Exception {
        return baseService.groupCertificateCount(dto);
    }

    /**
     * 集团户搜索
     */
    @PostMapping("/index")
    public AjaxResult index(@RequestBody JSONObject object) {
        return baseService.index(object);
    }

    /**
     * 查央企
     */
    @PostMapping("/centralEnterprse")
    public AjaxResult centralEnterprse() {
        return baseService.centralEnterprse();
    }

    /**
     * 查央企子公司
     */
    @PostMapping("/centralEnterprse/child")
    public AjaxResult centralEnterprseChild() {
        return baseService.centralEnterprseChild();
    }

    /**
     * 查央企子公司  翻页
     */
    @PostMapping("/centralEnterprse/child/page")
    public AjaxResult centralEnterprseChildPage(@RequestBody JSONObject object) {
        return baseService.centralEnterprseChildPage(object);
    }

    /**
     * 查地方国企
     */
    @PostMapping("/centralEnterprse/local")
    public AjaxResult centralEnterprseLocal(@RequestBody JSONObject object) {
        return baseService.centralEnterprseLocal(object);
    }

    /**
     * 查地方国企 翻页
     */
    @PostMapping("/centralEnterprse/local/page")
    public AjaxResult centralEnterprseLocalPage(@RequestBody JSONObject object) {
        return baseService.centralEnterprseLocalPage(object);
    }

    /**
     * 民营企业
     */
    @PostMapping("/centralEnterprse/social")
    public AjaxResult centralEnterprseSocial() {
        return baseService.centralEnterprseSocial();
    }

    /**
     * 民营企业  翻页
     */
    @PostMapping("/centralEnterprse/social/page")
    public AjaxResult centralEnterprseSocialPage(@RequestBody JSONObject object) {
        return baseService.centralEnterprseSocialPage(object);
    }


    /**
     * 导出中标业绩
     */
    @PostMapping("/export/win/bid")
    @PreAuthorize("@ss.hasPermi('combine:info:export:win:bid')")
    public void exportWinBid(@RequestBody JskCombineSearchDto dto, HttpServletResponse response) {
        List<JskCombineWinBidProjectExportVo> list = baseService.exportWinBid(dto);
        ExcelUtil<JskCombineWinBidProjectExportVo> util = new ExcelUtil<>(JskCombineWinBidProjectExportVo.class);
        util.exportExcel(response, list, "集团中标", dto.getCombineName().concat("中标业绩清单"), true);
//        String fileName = util.localInit(list, "集团中标", dto.getCombineName().concat("中标业绩清单"), true);
    }

    /**
     * 导出招标业绩
     */
    @PostMapping("/export/bid")
    @PreAuthorize("@ss.hasPermi('combine:info:export:bid')")
    public void exportBid(@RequestBody JskCombineBidPageDto dto, HttpServletResponse response) {
        List<JskCombineBidProjectExportVo> list = baseService.exportBid(dto);
        ExcelUtil<JskCombineBidProjectExportVo> util = new ExcelUtil<>(JskCombineBidProjectExportVo.class);
        util.exportExcel(response, list, "集团招标", dto.getCombineName().concat("招标公告清单"), true);
    }


    /**
     *  集团招标分页列表
     */
    @PostMapping("/bidPage")
    public TableDataInfo bidPage(@RequestBody JskCombineBidPageDto dto) throws Exception {
        return baseService.bidPage(dto);
    }
}
