package com.ruoyi.inhospvisit.mapper;
import com.ruoyi.common.core.service.dto.VisitPreachformRow;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 随访子任务「执行方式明细」({@code service_subtask_preachform})Mapper —— 出入院随访模块自带。
*
*
来源对照(@ b25c3b51)
*
* | 本方法 | 原方法 | 原 XML |
* | {@link #selectList} | {@code selectServiceSubtaskPreachformList} |
* L44-73({@code del_flag = 0} + 8 个可选条件) |
* | {@link #insert} | {@code insertServiceSubtaskPreachform} |
* L81-151({@code useGeneratedKeys},15 个可选列) |
*
*
* ⚠️ 与 smartor 的 Mapper 是两套等价的 SQL
* 同 {@code VisitInhospMapper} 的纪律:改任一边必须同步另一边,并重跑
* {@code verify_inhospvisit_mapper.py} 与 {@code verify_inhospvisit_sql_expansion.py}。
*/
@Mapper
public interface VisitPreachformMapper {
/**
* 按条件查(原 {@code selectServiceSubtaskPreachformList})。
*
* 原 XML 的固定条件是 {@code del_flag = 0};其余 8 个字段为可选条件:
* {@code subid / taskid / current_send_time / preachform / sendstate / orgid / sort / compensate_time}。
* 全部照抄——虽然调用点只用到 {@code subid + taskid + preachform},
* 但完整照抄后"等价"就是可机械验证的事实(这是第 6d 步返工学到的)。
*/
List selectList(VisitPreachformRow query);
/**
* 新增(原 {@code insertServiceSubtaskPreachform},自增主键回填到 {@code id})。
*/
int insert(VisitPreachformRow row);
// ==========================================================================
// 以下 7 个方法为「跨模块 SQL 收口」补齐 —— 原 smartor 的
// ServiceSubtaskPreachformMapper 共 9 个方法,本模块原先只有 2 个。
// 逐方法与原 XML 对应,条件/列/顺序照抄,不做精简。
// ==========================================================================
/**
* 按主键查(原 {@code selectServiceSubtaskPreachformById})。
*/
VisitPreachformRow selectById(Long id);
/**
* 按 {@code taskid + orgid} 查(原 {@code selectBySubtask})。
*
* ⚠️ 原方法名容易误解:它不按 subtask 主键查,而是以
* {@code del_flag = 0} 加可选的 {@code taskid}、{@code orgid} 为条件。
* 参数类型原为 {@code ServiceSubtask},实际只用到这两个字段。
*/
List selectByTaskidAndOrgid(@Param("taskid") Long taskid,
@Param("orgid") String orgid);
/**
* 按主键更新(原 {@code updateServiceSubtaskPreachform})。
* 原 XML 的 WHERE 是 {@code where id = #{id}};SET 各列均为 {@code }。
*/
int updateById(VisitPreachformRow row);
/**
* 按条件更新(原 {@code updateSSPByCondition})。
*
* SET 子句与 {@link #updateById} 完全相同,区别只在 WHERE:
* 这里按 {@code subid / taskid / preachform / remark / orgid} 逐项可选,
* 且没有 id 条件。两处刻意分开保留,不合并 —— 合并会改变"按什么定位行"的语义。
*/
int updateByCondition(VisitPreachformRow row);
/**
* 按主键软删(原 {@code deleteServiceSubtaskPreachformById})。
*
⚠️ 原标签是 {@code } 不是 {@code delete}:实际执行 {@code set del_flag = 1}。
*/
int softDeleteById(Long id);
/**
* 按主键集合软删(原 {@code deleteServiceSubtaskPreachformByIds})。
* ⚠️ 同样是 {@code },且走 {@code array} 集合:{@code where id in (...)}。
*/
int softDeleteByIds(Long[] ids);
/**
* 按 {@code subid} 软删(原 {@code deleteServiceSubtaskPreachformBySubid})。
* ⚠️ 原标签是 {@code } 但语句是 {@code update ... set del_flag = 1}(原样保留)。
*/
int softDeleteBySubid(Long subid);
}