liusheng
8 天以前 34f78281cf395a24e1f3f1c3b861186ff8a03b7b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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 —— 出入院随访模块自带。
 *
 * <h3>来源对照(@ b25c3b51)</h3>
 * <table border="1">
 *   <tr><th>本方法</th><th>原方法</th><th>原 XML</th></tr>
 *   <tr><td>{@link #selectList}</td><td>{@code selectServiceSubtaskPreachformList}</td>
 *       <td>L44-73({@code del_flag = 0} + 8 个可选条件)</td></tr>
 *   <tr><td>{@link #insert}</td><td>{@code insertServiceSubtaskPreachform}</td>
 *       <td>L81-151({@code useGeneratedKeys},15 个可选列)</td></tr>
 * </table>
 *
 * <h3>⚠️ 与 smartor 的 Mapper 是两套等价的 SQL</h3>
 * 同 {@code VisitInhospMapper} 的纪律:改任一边必须同步另一边,并重跑
 * {@code verify_inhospvisit_mapper.py} 与 {@code verify_inhospvisit_sql_expansion.py}。
 */
@Mapper
public interface VisitPreachformMapper {
 
    /**
     * 按条件查(原 {@code selectServiceSubtaskPreachformList})。
     * <p>
     * 原 XML 的固定条件是 {@code del_flag = 0};其余 8 个字段为可选条件:
     * {@code subid / taskid / current_send_time / preachform / sendstate / orgid / sort / compensate_time}。
     * <b>全部照抄</b>——虽然调用点只用到 {@code subid + taskid + preachform},
     * 但完整照抄后"等价"就是可机械验证的事实(这是第 6d 步返工学到的)。
     */
    List<VisitPreachformRow> 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})。
     * <p>
     * ⚠️ 原方法名容易误解:它<b>不按 subtask 主键查</b>,而是以
     * {@code del_flag = 0} 加可选的 {@code taskid}、{@code orgid} 为条件。
     * 参数类型原为 {@code ServiceSubtask},实际只用到这两个字段。
     */
    List<VisitPreachformRow> selectByTaskidAndOrgid(@Param("taskid") Long taskid,
                                                    @Param("orgid") String orgid);
 
    /**
     * 按主键更新(原 {@code updateServiceSubtaskPreachform})。
     * <p>原 XML 的 WHERE 是 {@code where id = #{id}};SET 各列均为 {@code <if test="xxx != null">}。
     */
    int updateById(VisitPreachformRow row);
 
    /**
     * 按条件更新(原 {@code updateSSPByCondition})。
     * <p>
     * SET 子句与 {@link #updateById} <b>完全相同</b>,区别只在 WHERE:
     * 这里按 {@code subid / taskid / preachform / remark / orgid} 逐项可选,
     * 且<b>没有 id 条件</b>。两处刻意分开保留,不合并 —— 合并会改变"按什么定位行"的语义。
     */
    int updateByCondition(VisitPreachformRow row);
 
    /**
     * 按主键软删(原 {@code deleteServiceSubtaskPreachformById})。
     * <p>⚠️ 原标签是 {@code <update>} 不是 {@code delete}:实际执行 {@code set del_flag = 1}。
     */
    int softDeleteById(Long id);
 
    /**
     * 按主键集合软删(原 {@code deleteServiceSubtaskPreachformByIds})。
     * <p>⚠️ 同样是 {@code <update>},且走 {@code array} 集合:{@code where id in (...)}。
     */
    int softDeleteByIds(Long[] ids);
 
    /**
     * 按 {@code subid} 软删(原 {@code deleteServiceSubtaskPreachformBySubid})。
     * <p>⚠️ 原标签是 {@code <delete>} 但语句是 {@code update ... set del_flag = 1}(原样保留)。
     */
    int softDeleteBySubid(Long subid);
}