package com.jjt.calc.service.impl;

import com.jjt.calc.domain.TwinCalcHourSpec;
import com.jjt.calc.mapper.TwinCalcHourSpecMapper;
import com.jjt.calc.service.ITwinCalcHourSpecService;
import com.jjt.common.utils.DateUtils;
import com.jjt.utils.Tools;
import javafx.util.Pair;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.time.LocalDate;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 按配方1小时统计数据Service业务层处理
 *
 * @author wukai
 * @date 2025-01-18
 */
@Service
public class TwinCalcHourSpecServiceImpl implements ITwinCalcHourSpecService {
    @Resource
    private TwinCalcHourSpecMapper twinCalcHourSpecMapper;

    /**
     * 查询按配方1小时统计数据
     *
     * @param id 按配方1小时统计数据主键
     * @return 按配方1小时统计数据
     */
    @Override
    public TwinCalcHourSpec selectTwinCalcHourSpecById(Long id) {
        return twinCalcHourSpecMapper.selectTwinCalcHourSpecById(id);
    }

    /**
     * 查询按配方1小时统计数据列表
     *
     * @param twinCalcHourSpec 按配方1小时统计数据
     * @return 按配方1小时统计数据
     */
    @Override
    public List<TwinCalcHourSpec> selectTwinCalcHourSpecList(TwinCalcHourSpec twinCalcHourSpec) {
        return twinCalcHourSpecMapper.selectTwinCalcHourSpecList(twinCalcHourSpec);
    }

    /**
     * 新增按配方1小时统计数据
     *
     * @param twinCalcHourSpec 按配方1小时统计数据
     * @return 结果
     */
    @Override
    public int insertTwinCalcHourSpec(TwinCalcHourSpec twinCalcHourSpec) {
        return twinCalcHourSpecMapper.insertTwinCalcHourSpec(twinCalcHourSpec);
    }

    /**
     * 修改按配方1小时统计数据
     *
     * @param twinCalcHourSpec 按配方1小时统计数据
     * @return 结果
     */
    @Override
    public int updateTwinCalcHourSpec(TwinCalcHourSpec twinCalcHourSpec) {
        return twinCalcHourSpecMapper.updateTwinCalcHourSpec(twinCalcHourSpec);
    }

    /**
     * 批量删除按配方1小时统计数据
     *
     * @param ids 需要删除的按配方1小时统计数据主键
     * @return 结果
     */
    @Override
    public int deleteTwinCalcHourSpecByIds(Long[] ids) {
        return twinCalcHourSpecMapper.deleteTwinCalcHourSpecByIds(ids);
    }

    /**
     * 删除按配方1小时统计数据信息
     *
     * @param id 按配方1小时统计数据主键
     * @return 结果
     */
    @Override
    public int deleteTwinCalcHourSpecById(Long id) {
        return twinCalcHourSpecMapper.deleteTwinCalcHourSpecById(id);
    }

    /**
     * 根据日期获取统计数据
     *
     * @param date 日期
     * @return 结果
     */
    @Override
    public List<TwinCalcHourSpec> selectTwinCalcHourSpecListByDate(Date date) {
        LocalDate localDate = DateUtils.toLocalDate(date);
        //计算统计时间
        Pair<Date, Date> pair = Tools.calcDay(localDate);
        Date sTime = pair.getKey();
        Date eTime = pair.getValue();
        TwinCalcHourSpec hour = new TwinCalcHourSpec();
        Map<String, Object> params = new HashMap<>(16);
        params.put("sTime", sTime);
        params.put("eTime", eTime);
        hour.setParams(params);
        return selectTwinCalcHourSpecList(hour);
    }
}
