package com.trs.ggzyexchange.controller;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.trs.ggzyexchange.api.vo.Result;
import com.trs.ggzyexchange.entity.*;
import com.trs.ggzyexchange.enums.ClassIfy;
import com.trs.ggzyexchange.service.GcBidopenrecordService;
import com.trs.ggzyexchange.service.GcNoticeandfileService;
import com.trs.ggzyexchange.service.TenderDetailsVoService;
import com.trs.ggzyexchange.utils.TenderDetailsVoUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 开标记录 前端控制器
 * </p>
 *
 * @author trs
 * @since 2023-02-16
 */
@RestController
@RequestMapping("/gc-bidopenrecord")
public class GcBidopenrecordController extends BaseController {

    @Autowired
    private GcBidopenrecordService gcBidopenrecordService;

    @Autowired
    private AreaDataName areaDataName;

    @Autowired
    private TenderDetailsVoService tenderDetailsVoService;

    @Autowired
    private GcNoticeandfileService gcNoticeandfileService;

    //@GetMapping(value = "/list")
    public Result<IPage<GcBidopenrecordVo>> queryPageList(GcBidopenrecord gcBidopenrecord,
                                                          @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                                          @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                                          HttpServletRequest req) {
        Page<GcBidopenrecord> page = new Page<GcBidopenrecord>(pageNo, pageSize);
        IPage<GcBidopenrecordVo> pageList = gcBidopenrecordService.queryGcBidopenrecordServiceList(page, gcBidopenrecord);
        List<GcBidopenrecordVo> records = pageList.getRecords();
        for (GcBidopenrecordVo record : records) {
            String regionCode = record.getRegionCode();
            String platformCode = record.getPlatformCode();
            String areaDataName = this.areaDataName.getAreaDataName(regionCode, platformCode);
            record.setArea(areaDataName);
        }
        pageList.setRecords(records);
        return Result.OK(pageList);
    }

    //@GetMapping(value = "/queryPageListUpdateEs")
    public Integer queryPageListUpdateEs() throws JsonProcessingException {
        int count = gcBidopenrecordService.count();
        Integer pageNo = 1;
        Integer pageSize = 1000;
        Integer pageNum = (int)Math.ceil((double)count/pageSize);
        List<TenderDetailsVo> tenderDetailsVos = new ArrayList<TenderDetailsVo>();
        for(int i = 1; i <= pageNum;i++){
            List<TenderDetailsVo> tenderDetailsVoListAll = getTenderDetailsVoListAll(i, pageSize);
            Boolean aBoolean = gcNoticeandfileService.parseTenderDetailsVo(tenderDetailsVoListAll);
        }
        return tenderDetailsVos.size();
    }

    public List<TenderDetailsVo> getTenderDetailsVoListAll(Integer pageNo,Integer pageSize){
        Page<GcBidopenrecord> page = new Page<GcBidopenrecord>(pageNo, pageSize);
        IPage<TenderDetailsVo> pageList = gcBidopenrecordService.queryGcBidopenrecordAllList(page);
        for (TenderDetailsVo record : pageList.getRecords()) {
            record.setNoticeTypeCode(ClassIfy.OPEN_RECORD.getCode());
            record.setNoticeTypeName(ClassIfy.OPEN_RECORD.getName());
            record.setTransactionTypeCode(ClassIfy.ENGINEERING_CONSTRUCTION.getCode());
            record.setTransactionTypeName(ClassIfy.ENGINEERING_CONSTRUCTION.getName());
            record = tenderDetailsVoService.getTenderDetailsVoAllOrther(record);
            TenderDetailsVoUtils.isNull(record);
        }
        return pageList.getRecords();
    }

}
