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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package com.ruoyi.common.core.service.dto;
 
import java.util.Date;
 
/**
 * 门急诊随访专用草稿({@link VisitSubtaskDraft} 的扩展)。
 *
 * <h3>只放"父类真的没有"的字段</h3>
 * 门诊的 {@code boxedServiceSubtask}(原 {@code PatMedOuthospServiceImpl} L525-581)
 * 往子任务上设 35 个值,其中<b>绝大多数父类已有等价字段</b>:
 * <table border="1">
 *   <tr><th>门诊写法</th><th>父类字段</th></tr>
 *   <tr><td>{@code patArchive.name}</td><td>{@code sendname}</td></tr>
 *   <tr><td>{@code patArchive.idcardno}</td><td>{@code sfzh}</td></tr>
 *   <tr><td>{@code patArchive.telcode}(空则 {@code relativetelcode})</td><td>{@code phone}</td></tr>
 *   <tr><td>{@code patArchive.sex} / {@code age}</td><td>{@code sex} / {@code age}</td></tr>
 *   <tr><td>{@code patMedOuthosp.id}</td><td>{@code inhospid}</td></tr>
 * </table>
 * 所以本类<b>只</b>补三个父类确实没有的字段,不做重复定义 ——
 * 重复定义会让"哪个字段才是真正落库的"变得不清楚。
 *
 * <h3>为什么要单独一个类(而不是往 VisitSubtaskDraft 里加字段)</h3>
 * {@code insertServiceSubtask} 有 39 个条件列({@code <if test="xxx != null">})。
 * 给共享的 {@code VisitSubtaskDraft} 加字段,就必须同时决定"要不要在
 * {@code VisitTaskCreateApiBridge#toSubtaskEntity} 里补映射"——
 * 补了映射会让<b>出入院那条已验收的写入路径多写列</b>。
 * 所以按"另建门诊专用草稿"处理:{@code VisitSubtaskDraft} 与出入院链路<b>一行不动</b>,
 * 桥里用 {@code instanceof} 分流映射。
 *
 * @see VisitSubtaskDraft
 * @see com.ruoyi.common.core.service.VisitTaskCreateApi#insertSubtask(VisitSubtaskDraft)
 */
public class OuthospSubtaskDraft extends VisitSubtaskDraft {
 
    private static final long serialVersionUID = 1L;
 
    /**
     * 门诊号(原 {@code patMedOuthosp.outhospno} → 落库到 {@code service_subtask.hospno})。
     * <p>
     * ⚠️ 父类 {@link VisitSubtaskDraft} <b>没有</b> {@code hospno} 字段
     * ({@code ServiceSubtask} 实体有,父类漏了),所以这里是必需的补充。
     */
    private String hospno;
 
    /**
     * 门诊就诊日期(原 {@code patMedOuthosp.admitdate})。
     * <p>
     * 父类没有对应字段,但它有两处用途:
     * <ol>
     *   <li>落库到 {@code admindate} 列;</li>
     *   <li>作为 {@code longSendTime} 的计算基准
     *       ({@code addDays(admitdate, sendDay)})。</li>
     * </ol>
     * 用途 2 由调用方自己算完写进父类的 {@code longSendTime}/{@code visitTime},
     * 本字段只为用途 1(落库)。
     */
    private Date admitdate;
 
    /**
     * 门诊指定的随访时间(原 {@code patMedOuthosp.fudate})。
     * <p>
     * 非空时由<b>调用方</b>用它覆盖按 {@code sendDay} 算出的时间并写进父类的
     * {@code longSendTime}/{@code visitTime} —— 本字段不落库,只作为"调用方算过它"的留痕载体。
     * <p>
     * ⚠️ 若某天要让桥自己参与这个覆盖计算,必须同时改
     * {@code toSubtaskEntity} 与出入院侧的对应用法,不可只改一边。
     */
    private Date fudate;
 
    /**
     * 完成时间(原实现的 {@code setFinishtime})。
     * <p>
     * 门诊 {@code boxedServiceSubtask} 里没有设它;实际设置它的是<b>停旧子任务</b>那条路径
     * (走 {@code VisitPendingSubtaskDto#finishtime})。
     * 本字段保留是为了让"草稿也能承载 finishtime"这一能力可用,
     * 桥侧对应映射 {@code e.setFinishtime(...)}。
     */
    private Date finishtime;
 
    /**
     * 入院/门诊标识(原 {@code serviceSubtask.setHospType("1")})。
     * <p>
     * ⚠️ 原实现是<b>硬编码 "1"</b>,并不读 {@code serviceTask.getHospType()};
     * 出入院侧同类位置硬编码 "2"、宣教侧 "6"。
     * <p>
     * ⚠️ 注意 {@code VisitLongTaskDto} 里那个 {@code hosType}(少个 p)是历史笔误,
     * 且全仓无人读取它 —— 不要把它与这里的 {@code hospType} 混为一谈。
     */
    private String hospType;
 
    public String getHospno() {
        return hospno;
    }
 
    public void setHospno(String hospno) {
        this.hospno = hospno;
    }
 
    public Date getAdmitdate() {
        return admitdate;
    }
    public void setAdmitdate(Date admitdate) {
        this.admitdate = admitdate;
    }
 
    public Date getFudate() {
        return fudate;
    }
 
    public void setFudate(Date fudate) {
        this.fudate = fudate;
    }
 
    public Date getFinishtime() {
        return finishtime;
    }
 
    public void setFinishtime(Date finishtime) {
        this.finishtime = finishtime;
    }
 
    public String getHospType() {
        return hospType;
    }
 
    public void setHospType(String hospType) {
        this.hospType = hospType;
    }
}