package com.ruoyi.common.core.service; import com.ruoyi.common.core.service.dto.VisitPreachformRow; import java.util.List; /** * 随访子任务「执行方式明细」({@code service_subtask_preachform})的对外契约。 * *

为什么需要它(跨模块 SQL 收口)

* 这张表的归属模块是 {@code ruoyi-inhospvisit},但在收口之前: * * 这违反了"各模块独占自己的数据访问"的原则:改任一边的 SQL 都可能与另一边漂移。 * 本契约把"读写这张表"收敛成唯一入口,调用方一律经此访问。 * *

⚠️ 本契约是纯数据访问,不含任何业务判断

* 逐方法与原 {@code ServiceSubtaskPreachformMapper} 对应,条件/列/顺序照抄。 * "什么时候该插一条、该置什么状态"属于调用方的业务,留在调用方。 * *

⚠️ 三个 softDelete* 是"软删"

* 原实现里 {@code deleteServiceSubtaskPreachformById / ByIds / BySubid} 的语句 * 都是 {@code update ... set del_flag = 1}(其中一个还用 {@code } 标签包着 update)。 * 本契约按实际行为命名为 {@code softDelete*},语义不变。 * * @see VisitPreachformRow */ public interface PreachformApi { /** * 按主键查(原 {@code selectServiceSubtaskPreachformById})。 * * @return 行;不存在返回 {@code null} */ VisitPreachformRow findById(Long id); /** * 按条件查(原 {@code selectServiceSubtaskPreachformList})。 *

* 固定条件 {@code del_flag = 0},其余 8 个字段为可选条件: * {@code subid / taskid / currentSendTime / preachform / sendstate / orgid / sort / compensateTime}。 * * @param query 查询条件(非 null 字段参与过滤) * @return 行集合;无匹配返回空集合(不返回 null) */ List findList(VisitPreachformRow query); /** * 按 {@code taskid + orgid} 查(原 {@code selectBySubtask})。 *

* ⚠️ 原方法名易误解:它不按 subtask 主键查,而是以 * {@code del_flag = 0} 加可选的 {@code taskid}、{@code orgid} 为条件。 */ List findByTaskidAndOrgid(Long taskid, String orgid); /** * 新增(原 {@code insertServiceSubtaskPreachform})。 *

自增主键会回填到 {@code row.id}(对应原 XML 的 {@code useGeneratedKeys})。 * * @return true = 落库成功(原返回 {@code int},此处按"== 1"折算) */ boolean insert(VisitPreachformRow row); /** * 按主键更新(原 {@code updateServiceSubtaskPreachform},WHERE {@code id = #{id}})。 */ boolean updateById(VisitPreachformRow row); /** * 按条件更新(原 {@code updateSSPByCondition})。 *

* SET 子句与 {@link #updateById} 相同,区别只在 WHERE: * 按 {@code subid / taskid / preachform / remark / orgid} 逐项可选,且没有 id 条件。 * 两处刻意不合并 —— 合并会改变"按什么定位行"的语义。 */ boolean updateByCondition(VisitPreachformRow row); /** * 按主键软删(原 {@code deleteServiceSubtaskPreachformById})。 */ boolean softDeleteById(Long id); /** * 按主键集合软删(原 {@code deleteServiceSubtaskPreachformByIds})。 */ boolean softDeleteByIds(Long[] ids); /** * 按 {@code subid} 软删(原 {@code deleteServiceSubtaskPreachformBySubid})。 */ boolean softDeleteBySubid(Long subid); }