liusheng
4 天以前 0bbbd746e8c39d91ad7b47a4e36e29ab972dc98c
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
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>
 *   <tr><td>{@code patMedOuthosp.outhospno}</td><td>{@code hospno}</td></tr>
 * </table>
 * 所以本类<b>只</b>补父类确实没有的字段,不做重复定义 ——
 * 重复定义会让"哪个字段才是真正落库的"变得不清楚。
 * <p>
 * ⚠️ {@code hospno} 原先只在本类里声明,导致出院链路({@code addSubTaskByRule})
 * 根本没有这个载体、{@code service_subtask.hospno} 一直落空。
 * 现已上提到父类 {@link VisitSubtaskDraft},本类不再重复声明。
 *
 * <h3>为什么要单独一个类(而不是往 VisitSubtaskDraft 里加字段)</h3>
 * {@code insertServiceSubtask} 有 39 个条件列({@code <if test="xxx != null">})。
 * 给共享的 {@code VisitSubtaskDraft} 加字段,就必须同时决定"要不要在
 * {@code VisitTaskCreateApiImpl#toSubtaskEntity} 里补映射"——
 * 补了映射会让<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.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 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;
    }
}