package com.ltgk.catches.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ltgk.catches.domain.entity.TpFishCatch;
import com.ltgk.common.validation.groups.Detail;
import com.ltgk.common.validation.groups.Update;

import javax.validation.constraints.NotNull;

/**
 * 渔获上岸记录 服务接口
 *
 * @author Qi ChengBin
 * @date 2025-01-07
 */
public interface ITpFishCatchService extends IService<TpFishCatch> {

    /**
     * 根据主键获取渔获上岸记录详细信息
     *
     * @param id: 渔获上岸记录表主键
     * @return com.ltgk.catches.domain.entity.TpFishCatch
     * @author Qi ChengBin
     * @date 2025/1/8 09:45
     */
    TpFishCatch getTpFishCatchDetailById(@NotNull(message = "渔获上岸记录主键不能为空", groups = {Detail.class}) String id);

    /**
     * 新增渔获上岸记录及其详细信息
     *
     * @param tpFishCatch: 渔获上岸记录数据传输对象
     * @return boolean
     * @author Qi ChengBin
     * @date 2025/1/8 13:51
     */
    boolean saveTpFishCatch(TpFishCatch tpFishCatch);

    /**
     * 修改渔获上岸记录及其详细信息
     * -- 详细信息，先删除再新增
     *
     * @param tpFishCatch: 渔获上岸记录数据传输对象
     * @return boolean
     * @author Qi ChengBin
     * @date 2025/1/8 14:04
     */
    boolean updateTpFishCatch(TpFishCatch tpFishCatch);

    /**
     * 删除渔获上岸记录及其渔获上岸记录详细信息
     *
     * @param id: 渔获上岸记录主键
     * @return boolean
     * @author Qi ChengBin
     * @date 2025/1/8 14:40
     */
    boolean removeFishCatchAndCatchRecordById(@NotNull(message = "渔获上岸记录主键不能为空！", groups = {Update.class}) String id);

    /**
     * 获取指定时间范围内的渔获上岸总量
     *
     * @param startTime: 开始时间
     * @param endTime:   结束时间
     * @return java.lang.String
     * @author Qi ChengBin
     * @date 2025/1/8 15:33
     */
    String rangeTotalNum(String startTime, String endTime);
}