package com.zd.laboratory.mapper;

import java.util.List;
import java.util.Map;

import com.zd.common.core.domain.R;
import com.zd.laboratory.domain.LabViolation;
import com.zd.laboratory.domain.dto.LabViolationDTO;
import com.zd.laboratory.domain.vo.LabViolationColumnarVO;
import com.zd.laboratory.domain.vo.LabViolationInfoVO;
import com.zd.laboratory.domain.vo.LabViolationSubListVO;
import com.zd.laboratory.domain.vo.LabViolationVO;
import org.apache.ibatis.annotations.Param;

/**
 * 违规记录Mapper接口
 *
 * @author zd
 * @date 2021-09-01
 */
public interface LabViolationMapper {
    /**
     * 查询违规记录
     *
     * @param id 违规记录主键
     * @return 违规记录
     */
    public LabViolation selectLabViolationById(Long id);

    /**
     * 查询违规记录列表
     *
     * @param labViolation 违规记录
     * @return 违规记录集合
     */
    public List<LabViolationVO> selectLabViolationList(LabViolationVO labViolation);

    /**
     * 查询违规记录详细列表
     *
     * @param labViolation 违规记录
     * @return 违规记录集合
     */
    public List<LabViolationVO> getDetailList(LabViolationVO labViolation);

    /**
     * 查询违规记录列表
     *
     * @param labViolation 违规记录
     * @return 违规记录集合
     */
    public List<LabViolationVO> selectLabViolationVOList(LabViolationDTO labViolation);

    /**
     * 新增违规记录
     *
     * @param labViolation 违规记录
     * @return 结果
     */
    public int insertLabViolation(LabViolation labViolation);

    /**
     * 修改违规记录
     *
     * @param labViolation 违规记录
     * @return 结果
     */
    public int updateLabViolation(LabViolation labViolation);

    /**
     * 删除违规记录
     *
     * @param id 违规记录主键
     * @return 结果
     */
    public int deleteLabViolationById(Long id);

    /**
     * 批量删除违规记录
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteLabViolationByIds(Long[] ids);

    /**
     * 小程序工作台，查询违规记录统计
     *
     * @param labViolation
     * @return 小程序工作台，查询违规记录统计
     */
    public int myViolationCount(LabViolation labViolation);


    /**
     * 小程序查询违规记录列表
     *
     * @param labViolation 违规记录
     * @return 违规记录集合
     */
    public List<LabViolationVO> mylist(LabViolationVO labViolation);

    List<Map<String, Object>> statistics(LabViolation labViolation);

    List<LabViolationColumnarVO> columnar(LabViolationVO labViolationVO);

    List<LabViolationColumnarVO> columnarBySub(LabViolationVO labViolationVO);

    List<LabViolationSubListVO> subList(LabViolationVO labViolationVO);

    List<LabViolationVO> pageList(LabViolationVO labViolation);

    void updateLabViolationNum(Long userId);

    int updateStatus(@Param("id") Long id, @Param("i") Long i);

    int updateNegiveStatus(@Param("id") Long id,@Param("i") Long i);

    int updates(@Param("i") Long i,@Param("j") Long j, @Param("userId") Long userId);

    LabViolation selectByUserId(Long userId);

    int updateviolaton(@Param("userId") Long userId);

    int updateCreditScore(@Param("userId") Long userId, @Param("score") Integer score);

    LabViolationInfoVO getInfo(Long userid);

    int updateblackStatus(@Param("userId") Long joinUserId, @Param("deducPoints") Long deducPoints);


    int  updateUser(@Param("userId") Long joinUserId, @Param("deducPoints") Long deducPoints);

    int delByUserId(@Param("userId") Long userId);

    Integer checkDeptId(@Param("deptId")Long deptId);
}
