package com.yinet.wsyy.service.impl;

import java.text.SimpleDateFormat;
import java.util.*;

import com.yinet.wsyy.domain.Wsyy;
import com.yinet.wsyy.domain.WsyyQuantum;
import com.yinet.wsyy.mapper.WsyyMapper;
import com.yinet.wsyy.mapper.WsyyQuantumMapper;
import com.yinet.wsyy.mapper.WsyySettingMapper;
import com.yinet.wsyy.service.IWsyyQuantumService;
import com.yinet.wsyy.service.IWsyyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yinet.common.core.text.Convert;

/**
 * 网上预约列表Service业务层处理
 *
 * @author yinet
 * @date 2019-09-02
 */
@Service
public class WsyyServiceImpl implements IWsyyService {
    @Autowired
    private WsyyMapper wsyyMapper;
    @Autowired
    private WsyyQuantumMapper wsyyQuantumMapper;
    @Autowired
    private WsyySettingMapper wsyySettingMapper;

    /**
     * 查询网上预约列表列表
     *
     * @param wsyy 网上预约列表
     * @return 网上预约列表
     */
    @Override
    public List<Wsyy> selectWsyyList(Wsyy wsyy) {
        return wsyyMapper.selectWsyyList(wsyy);
    }
    /**
     * 查询网上预约列表列表
     *
     * @param wsyy 网上预约列表
     * @return 网上预约列表
     */
    @Override
    public List<Wsyy> selectWsyyListExcel(Wsyy wsyy) {
        return wsyyMapper.selectWsyyListExcel(wsyy);
    }

    /**
     * 新增网上预约列表
     *
     * @param wsyy 网上预约列表
     * @return 结果
     */
    @Override
    public int insertWsyy(Wsyy wsyy) {
        if (wsyyMapper.selectByIdNumforData(wsyy.getIdNum(), wsyy.getBookedDay()) > 0) {
            return 3;
        } else if (wsyyMapper.selectCountForTime(Long.parseLong(wsyy.getBookedTime()), wsyy.getBookedDay(), wsyy.getType()) > wsyySettingMapper.selectWsyySetting().getTimeScope()) {
            return 2;
        } else {
            wsyy.setWsyyId(UUID.randomUUID().toString().replaceAll("-", ""));
            wsyy.setSubmitTime(new Date());
            return wsyyMapper.insertWsyy(wsyy);
        }
    }


    /**
     * 删除网上预约列表对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteWsyyByIds(String ids) {
        return wsyyMapper.deleteWsyyByIds(Convert.toStrArray(ids));
    }

    @Override
    public LinkedHashMap<String, List<Integer>> selectTimeNum(Date bookedDay, Long type) {
        List<WsyyQuantum> wsyyQuantums = wsyyQuantumMapper.selectWsyyQuantumList("1");
        LinkedHashMap<String, List<Integer>> map = new LinkedHashMap();
        for (WsyyQuantum item : wsyyQuantums) {
            int i = wsyyMapper.selectCountForTime(item.getWsyyQuantumId(), bookedDay, type);
            String timeQuantum = item.getTimeQuantum();
            int i1 = Integer.parseInt(item.getWsyyQuantumId().toString());
            map.put(timeQuantum, new ArrayList<Integer>() {
                {
                    add(i1);
                    add(i);
                }
            });
            timeQuantum = null;
        }
        return map;
    }
}
