package com.xinelu.manage.service.patienttaskstatistics;

import com.xinelu.manage.domain.patienttaskstatistics.PatientTaskStatistics;
import java.util.List;

/**
 * 患者任务统计Service接口
 *
 * @author haown
 * @date 2024-08-09
 */
public interface IPatientTaskStatisticsService {
    /**
     * 查询患者任务统计
     *
     * @param patientId 患者任务统计主键
     * @return 患者任务统计
     */
     PatientTaskStatistics selectPatientTaskStatisticsByPatientId(Long patientId);

    /**
     * 查询患者任务统计列表
     *
     * @param patientTaskStatistics 患者任务统计
     * @return 患者任务统计集合
     */
    List<PatientTaskStatistics> selectPatientTaskStatisticsList(PatientTaskStatistics patientTaskStatistics);

    /**
     * 新增患者任务统计
     *
     * @param patientTaskStatistics 患者任务统计
     * @return 结果
     */
    int insertPatientTaskStatistics(PatientTaskStatistics patientTaskStatistics);

    /**
     * 修改患者任务统计
     *
     * @param patientTaskStatistics 患者任务统计
     * @return 结果
     */
    int updatePatientTaskStatistics(PatientTaskStatistics patientTaskStatistics);

    /**
     * 批量删除患者任务统计
     *
     * @param patientIds 需要删除的患者任务统计主键集合
     * @return 结果
     */
    int deletePatientTaskStatisticsBySignPatientRecordIds(Long[] patientIds);

    /**
     * 删除患者任务统计信息
     *
     * @param patientId 患者任务统计主键
     * @return 结果
     */
    int deletePatientTaskStatisticsBySignPatientRecordId(Long patientId);

	/**
	 * 新增或修改患者任务统计
	 *
	 * @param patientTaskStatistics 患者任务统计
	 * @return 结果
	 */
	int insertOrUpdate(PatientTaskStatistics patientTaskStatistics);

	/**
	 * @description 修改任务总数、执行数、完成数
	 * @param patientId 签约记录主键
	 * @param type 字段种类，TASK_NUM：任务总数，TASK_EXECUTE_NUM: 任务执行数，TASK_FINISH_NUM：任务完成数
	 * @param count 数量
	 * @return 结果
	 * @Author haown
	 * @Date 2024-08-09 17:43
	*/
	int updateNum(Long patientId, String type, Integer count);

	/**
	 * @description 根据任务表主键列表修改任务总数、执行数、完成数
	 * @param manageRouteNodeId 任务表主键
	 * @param type 字段种类，TASK_NUM：任务总数，TASK_EXECUTE_NUM: 任务执行数，TASK_FINISH_NUM：任务完成数
	 * @return 结果
	 * @Author haown
	 * @Date 2024-8-12 17:19
	*/
	int updateNumByManageRouteNodeId(Long manageRouteNodeId, String type, Integer count);

	/**
	 * @description 修改患者统计表任务数量、下次任务
	 * @param patientIdList 患者主键列表
	 * @Author haown
	 * @Date 2024-8-14 11:37
	*/
	void updateNum(List<Long> patientIdList);
}
