package com.zcloud.service.map.impl;

import com.zcloud.entity.Page;
import com.zcloud.entity.PageData;
import com.zcloud.mapper.datasource.bus.CorpInfoMapper;
import com.zcloud.mapper.datasource.map.BiMapMapper;
import com.zcloud.mapper.dsno2.keyProjects.VideoManagerMapper;
import com.zcloud.mapper.dsno2.map.FireResourcesMapper;
import com.zcloud.service.gatemachine.GateMachineService;
import com.zcloud.service.map.AbsFireSourcesHandel;
import com.zcloud.service.map.AssemblyBeanFactory;
import com.zcloud.service.map.BiMapService;
import com.zcloud.util.Tools;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * 说明:TODO
 * 作者:wangxuan
 * 官网:www.zcloudchina.com
 */
@Service
public class BiMapServiceImpl implements BiMapService {

    @Resource
    private BiMapMapper biMapMapper;

    @Resource
    private FireResourcesMapper fireResourcesMapper;
    @Resource
    private GateMachineService gateMachineService;
    @Resource
    private VideoManagerMapper videoManagerMapper;


    @Resource
    private CorpInfoMapper corpInfoMapper;


    /**
     * @Description: 人记录
     * @Author: dearLin
     * @Date: 2023/9/18/018 10:18
     * @Param: [com.zcloud.entity.Page] [page]
     * @Return: java.util.List<com.zcloud.entity.PageData>
     */
    @Override
    public List<PageData> getDoorWayPeopleRecords(Page page) {
        return biMapMapper.getPeopleRecordslistPage(page);
    }

    /**
     * @Description: 车记录
     * @Author: dearLin
     * @Date: 2023/9/18/018 10:18
     * @Param: [com.zcloud.entity.Page] [page]
     * @Return: java.util.List<com.zcloud.entity.PageData>
     */
    @Override
    public List<PageData> getDoorWayCarRecords(Page page) {
        return biMapMapper.getCarRecordslistPage(page);
    }

    @Override
    public PageData getRiskIdentificationCount(PageData pageData) {
        return biMapMapper.getRiskIdentificationCount(pageData);
        // bus_riskunit
        // bus_identificationparts
    }


    public PageData listbymeteorological(PageData pd) throws Exception {
        return biMapMapper.listbymeteorological(pd);
    }

    @Override
    public List<String> getCorpinfoIds(PageData pd) {
        String area = pd.getString("AREA");
        if (StringUtils.isNotBlank(area)) {
            String[] ArrayDATA_IDS = area.split(",");
            return biMapMapper.getCorpinfoIds(ArrayDATA_IDS);
        }
        String gangkou = pd.getString("GANGKOU");
        if (StringUtils.equals("00003", gangkou)) {
            String[] ArrayDATA_IDS = new String[]{"1", "2"};
            return biMapMapper.getCorpinfoIds(ArrayDATA_IDS);
        }
        return new ArrayList<>();
    }

    @Override
    public PageData getPersonPositioningCount(PageData pageData) {
        return biMapMapper.getPersonPositioningCount(pageData);
    }

    @Override
    public List<PageData> getRiskIndex(PageData pageData) {
        return biMapMapper.getRiskIndex(pageData);
    }

    @Override
    public List<PageData> inAndoutPeoCarToday(PageData pageData) {
        return biMapMapper.inAndoutPeoCarToday(pageData);
    }

    /**
     * @Description: 不一定用
     * @Author: dearLin
     * @Date: 2023/9/20/020 16:42
     * @Param: [com.zcloud.entity.PageData] [pageData]
     * @Return: java.util.LinkedList<com.zcloud.entity.PageData>
     */
    @Override
    public LinkedList<PageData> getFireControl(PageData pageData) throws Exception {
//        GANGKOU   00003 秦皇岛岗
//        AREA   区域
//        CORPINFO_ID   区域

        String area = pageData.getString("AREA");
        List<String> corpinfoIds = null;
        if (StringUtils.isNotBlank(area)) {
            String[] ArrayDATA_IDS = area.split(",");
            corpinfoIds = corpInfoMapper.getCorpinfoIds(ArrayDATA_IDS);
        } else {
            String gangkou = pageData.getString("GANGKOU");
            if (StringUtils.equals("00003", gangkou)) {
                String[] ArrayDATA_IDS = new String[]{"1", "2"};
                corpinfoIds = corpInfoMapper.getCorpinfoIds(ArrayDATA_IDS);
            }
        }
        if (corpinfoIds != null && corpinfoIds.size() > 0) {
            if (Tools.isEmpty(pageData.getString("CORPINFO_ID"))) {
                pageData.put("list", corpinfoIds);
            }
        }
        String fireresourcesType = pageData.getString("TYPE");
        // 目前没有消防点位
        AbsFireSourcesHandel invokeStrategy = AssemblyBeanFactory.getInvokeStrategy(fireresourcesType);
        if (invokeStrategy != null) {
            return invokeStrategy.assemblyDataHandel(pageData);
        }

        return new LinkedList<>();
    }


    @Override
    public LinkedList<PageData> getFireRescueTeam(PageData pageData) {
        return fireResourcesMapper.getRescueTeamDataList(pageData);
    }

    @Override
    public PageData getGatesInAndOutNumById(PageData pageData) {
        return null;
    }
}