package com.ssm.manage.service;

import com.github.pagehelper.PageInfo;
import com.ssm.core.service.BaseService;
import com.ssm.manage.entity.CardChangeInProject;
import com.ssm.manage.entity.CardChangeList;
import com.ssm.manage.entity.CardChangeOutProject;
import com.ssm.manage.entity.SmsException;
import com.ssm.manage.extendEntity.StoreDaily;
import com.ssm.manage.query.CardChangeListRequest;
import com.ssm.manage.query.StoreDailyRequest;
import com.ssm.manage.response.CardChangeDayVo;
import com.ssm.manage.response.CardChangeInProjectResponse;
import com.ssm.manage.response.CardChangeOutProjectResponse;

import javax.smartcardio.Card;
import java.util.Date;
import java.util.List;

public interface SsmCardChangeService extends BaseService<CardChangeList> {
    PageInfo<CardChangeList> selectPage(CardChangeListRequest cardChangeListRequest);
    PageInfo<CardChangeList> selectPageNew(CardChangeListRequest cardChangeListRequest);
    PageInfo<CardChangeList> pageDetail(CardChangeListRequest cardChangeListRequest);

    int add(CardChangeListRequest cardChangeListRequest) throws SmsException;
    int addNew(CardChangeListRequest cardChangeListRequest) throws SmsException;

    int updateStaff(CardChangeListRequest cardChangeListRequest) throws SmsException;

    int cancel(CardChangeListRequest cardChangeListRequest) throws SmsException;

    int NTAdd(CardChangeListRequest cardChangeListRequest) throws SmsException;

    int sendAudit(CardChangeListRequest cardChangeListRequest)throws SmsException;

    int revoke(CardChangeListRequest cardChangeListRequest)throws SmsException;

    int audit(CardChangeListRequest cardChangeListRequest)throws SmsException;

    int unAudit(CardChangeListRequest cardChangeListRequest)throws SmsException;
    List<CardChangeInProjectResponse> selectList(Long storeId, String date);
    List<CardChangeInProjectResponse> selectListByStartTimeAndEndTime(Long storeId, String date,Date startTime,Date endTime);
    List<CardChangeInProjectResponse> selectListByStartTimeAndEndTime(Long storeId,Date startTime,Date endTime);
    List<CardChangeInProjectResponse> selectListAbnormal(Long storeId, String date);
    List<CardChangeInProject> selectListchia(Long storeId, Date startDate, Date endDate);
    List<CardChangeList> selectListSalem(CardChangeList cardChangeList);
    int updateState(CardChangeListRequest cardChangeListRequest,String loginAccount)throws SmsException;

    List<CardChangeList> selectFKJ(CardChangeList cardChangeList);
    List<CardChangeList> selectFKJByDate(CardChangeList cardChangeList);

    List<CardChangeOutProjectResponse> selectOutList(Long storeId, String date);

    List<CardChangeDayVo> selectByDay(List<Long> storeIds, Date startTime, Date endTime);

    List<StoreDaily> selectByDayGroupByDateAndStoreId(StoreDailyRequest storeDailyRequest);

    List<CardChangeList> selectNew(CardChangeListRequest cardChangeListRequest);
}
