package cn.lihu.jh.module.ecg.controller.admin.appointment.vo; import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Date; /** * 管理后台 - 预约新增/修改 Request VO * *

⚠️ 关于 {@code registerDate} / {@code doctorTime} 的类型(2026-09-30 修正)

* 这两个字段原先声明为 {@code java.sql.Date}(经 {@code import java.sql.Date;} * 通配到本类的 {@code Date}),而对应的 {@code AppointmentDO} 是 {@code java.util.Date}。 * *

{@code java.sql.Date} 是**只表示日期**的 JDBC 类型。实测(写入 datetime 列): *

 *   setObject(java.util.Date)  → 2026-09-26 16:58:53   保留时分秒
 *   setObject(java.sql.Date)   → 2026-09-26 00:00:00   时间被丢弃
 * 
* 这正是 {@code appointment.register_date} 出现 {@code yyyy-MM-dd 00:00:00} * 的成因类型 —— 凡是从本 VO 取值落库的路径都会把时间截断。 * *

现统一为 {@code java.util.Date},与 DO 及各写入路径({@code new Date()})保持一致。 */ @Schema(description = "管理后台 - 预约新增/修改 Request VO") @Data public class AppointmentSaveReqVO { private Long id; @Schema(description = "预约申请号", example = "2024435") private String applyNo; @Schema(description = "就诊流水号", example = "2024546") //@NotEmpty(message = "就诊流水号") private String episodeId; /** * 患者来源类型 01问诊 02急诊 03体检 04住院 */ private Integer patSrc; @Schema(description = "患者编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29034") @NotEmpty(message = "患者编号不能为空") private String patId; @Schema(description = "患者姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") @NotEmpty(message = "患者姓名不能为空") private String patName; @Schema(description = "患者性别", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "患者性别不能为空") private Byte patGender; @Schema(description = "患者生日") private LocalDateTime patBirthday; @Schema(description = "患者手机") private String patMobile; @Schema(description = "患者电话") private String patPhone; @Schema(description = "身份证号", example = "798") private String patIdentityId; @Schema(description = "患者地址") private String patAddr; @Schema(description = "患者所在科室代码") private String patDeptCode; @Schema(description = "患者所在科室名称") private String patDeptDesc; @Schema(description = "患者所在病区代码") private String patWardCode; @Schema(description = "患者所在病区名称") private String patWardDesc; @Schema(description = "床号") private String patBedNo; @Schema(description = "预约日期", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "预约日期不能为空") private LocalDateTime bookDate; @Schema(description = "预约时间段", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "预约时间段不能为空") private Integer bookTimeslot; @Schema(description = "预约发生时间", requiredMode = Schema.RequiredMode.REQUIRED) //@NotNull(message = "预约发生时间不能为空") private LocalDateTime bookTime; @Schema(description = "预约检查类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @NotNull(message = "预约检查类型不能为空") private Integer bookCheckType; @Schema(description = "已付款") private Integer paid; // @TableField(exist = false) private String status; /** * 耐药性: 是否多耐1代表是,0代表不是 */ private String tolerance; /** * 住院号 */ private String hospitalNo; /** * 医保卡号 */ private String medicalCard; /** * 门诊号 */ private String outpatientNo; /** * 登记时间 */ private Date registerDate; /** * 开单医生 */ private String doctor; /** * 开单医生编码 */ private String doctorCode; /** * 开单时间 */ private Date doctorTime; // ==================== HIS 接入补充字段(2026-09-27 随表新增列一起加入) ==================== /** * 预约排序号(HIS 报文 patient.id.item[4]) */ private Integer bookSeqNum; /** * 优先级 / 加急标记:N=常规,J=加急(HIS 报文 zdy.jjbz) */ private String jjbz; /** * 检查方式编码(HIS 报文 methodCode.item[].code) */ private String methodCode; /** * 检查部位编码(HIS 报文 targetSiteCode.item.code) */ private String targetSiteCode; /** * 医嘱号(HIS 报文 observationRequest.id.item[root=2.16.156.10011.1.28].extension)。 * 与「申请单号 applyNo」不同。 */ private String doctorAdviceNo; /** * 检查房间名称(HIS 报文 ZDY.roomname) */ private String roomName; /** * 注意事项(HIS 报文 ZDY.remark) */ private String remark; }