嘉兴访客

This commit is contained in:
zjf committed 2025-06-05 13:40:28 +08:00
1 parent 82641f15c3
commit 4d3903e0f5
9 files changed
+651 -3

No files matched your search

@@ -23,9 +23,11 @@ import com.bsd.pjcloud.common.core.constant.ServiceNameConstants;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.thirdparty.dto.visitor.VisitorObjectResponse;
import com.bsd.pjcloud.thirdparty.dto.visitor.request.make.CheckOutRequest;
import com.bsd.pjcloud.thirdparty.dto.visitor.request.make.QueryAppointmentRecordsRequest;
import com.bsd.pjcloud.thirdparty.dto.visitor.request.make.RegisterAppointmentRequest;
import com.bsd.pjcloud.thirdparty.dto.visitor.request.make.VisitorAppointmentRequest;
import com.bsd.pjcloud.thirdparty.dto.visitor.response.make.AppointmentData;
import com.bsd.pjcloud.thirdparty.dto.visitor.response.make.QueryAppointmentRecordsResponse;
import com.bsd.pjcloud.thirdparty.dto.visitor.response.make.RegisterAppointmentResponse;
import com.bsd.pjcloud.thirdparty.dto.person.AddPersonRequest;
import com.bsd.pjcloud.thirdparty.dto.person.AddPersonResponse;
@@ -66,6 +68,14 @@ public interface RemoterVisitorService {
@PostMapping("/visitors/appointment")
VisitorObjectResponse<AppointmentData> createVisitorAppointment(@Valid @RequestBody VisitorAppointmentRequest request);
/**
* 查询访客预约记录v2
* @param request 查询访客预约记录请求参数
* @return 查询访客预约记录响应结果
*/
@PostMapping("/visitors/appointment/records")
@Operation(summary = "查询访客预约记录v2", description = "根据查询条件查询预约记录")
R<QueryAppointmentRecordsResponse> queryAppointmentRecords(@Valid @RequestBody QueryAppointmentRecordsRequest request);
/**
* 取消预约
@@ -0,0 +1,130 @@
package com.bsd.pjcloud.thirdparty.dto.visitor.request.make;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.*;
import lombok.Data;
/**
* 查询访客预约记录v2请求参数
* API路径:/api/visitor/v2/appointment/records
*/
@Data
@Schema(description = "查询访客预约记录v2请求参数")
public class QueryAppointmentRecordsRequest {
/**
* 被访人唯一标识(可选)
* 查询人员列表v2接口获取返回报文中的personId字段
*/
@Schema(description = "被访人唯一标识")
private String receptionistId;
/**
* 访客姓名(可选)
* 长度不超过32,支持中英文字符,不能包含 ' / \ : * ? " < >
*/
@Size(max = 32, message = "访客姓名长度不超过32个字符")
@Pattern(regexp = "^[^'/\\\\:*?\"<>]*$", message = "访客姓名包含非法字符")
@Schema(description = "访客姓名")
private String visitorName;
/**
* 联系电话(可选)
* 建议填写手机号码
*/
@Schema(description = "联系电话")
private String phoneNo;
/**
* 预计来访时间范围-开始(可选)
* 时间参数需满足ISO8601格式:yyyy-MM-ddTHH:mm:ss+当前时区
* 例如北京时间:2018-07-26T15:00:00+08:00
*/
@Schema(description = "预计来访时间范围-开始", example = "2018-07-26T15:00:00+08:00")
private String visitStartTimeBegin;
/**
* 预计来访时间范围-结束(可选)
* 时间参数需满足ISO8601格式:yyyy-MM-ddTHH:mm:ss+当前时区
* 例如北京时间:2018-07-26T15:00:00+08:00
*/
@Schema(description = "预计来访时间范围-结束", example = "2018-07-26T15:00:00+08:00")
private String visitStartTimeEnd;
/**
* 预计离开时间范围-开始(可选)
* 时间参数需满足ISO8601格式:yyyy-MM-ddTHH:mm:ss+当前时区
* 例如北京时间:2018-07-26T15:00:00+08:00
*/
@Schema(description = "预计离开时间范围-开始", example = "2018-07-26T15:00:00+08:00")
private String visitEndTimeBegin;
/**
* 预计离开时间范围-结束(可选)
* 时间参数需满足ISO8601格式:yyyy-MM-ddTHH:mm:ss+当前时区
* 例如北京时间:2018-07-26T15:00:00+08:00
*/
@Schema(description = "预计离开时间范围-结束", example = "2018-07-26T15:00:00+08:00")
private String visitEndTimeEnd;
/**
* 页码(必填)
* pageNo要求大于0不超过2147483647
*/
@NotNull(message = "页码不能为空")
@Min(value = 1, message = "页码必须大于0")
@Max(value = 2147483647, message = "页码不能超过2147483647")
@Schema(description = "页码", required = true)
private Integer pageNo;
/**
* 页大小(必填)
* pageSize要求大于0且不超过1000
*/
@NotNull(message = "页大小不能为空")
@Min(value = 1, message = "页大小必须大于0")
@Max(value = 1000, message = "页大小不能超过1000")
@Schema(description = "页大小", required = true)
private Integer pageSize;
/**
* 访客验证码(可选)
* 为访客管理组件提供,用于访客在访客机登记的凭证
*/
@Schema(description = "访客验证码")
private String verificationCode;
/**
* 访客状态(可选)
* 0:待审核(预约待审批)
* 1:正常(预约成功或预约审批成功后<未登记>:当前时间未超过预计来访时间)
* 2:迟到(预约成功或预约审批成功后<未登记>:当前时间超过预计来访时间,但未超过预计离开时间)
* 3:失效(预约成功或预约审批成功后<未登记>:当前时间已超过预计离开时间)
* 4:审核退回(预约待审批,审批人员审批退回)
* 5:超期自动签离(超期未签离记录访客,由后台任务定时处理签离)
* 6:已签离(访客签离)
* 7:超期未签离(访客登记,当前时间已超过预计离开时间,还未进行签离)
* 8:已到达(访客登记,当前时间未超过预计离开时间)
* 9:审核失效(预约待审批,一直到当前时间超过预计离开时间,还未审批通过)
* 10:邀约中(员工发起邀约,访客还未应邀)
* 11:邀约失效(员工发起邀约,一直到当前时间超过预计离开时间,访客还未应邀)
*/
@Min(value = 0, message = "访客状态值无效")
@Max(value = 11, message = "访客状态值无效")
@Schema(description = "访客状态")
private Integer visitorStatus;
/**
* 访客二维码内容(可选)
* 支持动态二维码或者静态二维码
*/
@Schema(description = "访客二维码内容")
private String QRCode;
/**
* 预约记录ID(可选)
* 访客预约v2接口获取返回报文中的orderId字段
*/
@Schema(description = "预约记录ID")
private String orderId;
}
@@ -0,0 +1,264 @@
package com.bsd.pjcloud.thirdparty.dto.visitor.response.make;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
/**
* 查询访客预约记录v2响应参数
*/
@Data
@Schema(description = "查询访客预约记录v2响应参数")
public class QueryAppointmentRecordsResponse {
/**
* 返回码,0 – 成功,其他- 失败
*/
@Schema(description = "返回码,0 – 成功,其他- 失败")
private String code;
/**
* 返回描述
*/
@Schema(description = "返回描述")
private String msg;
/**
* 访客预约记录
*/
@Schema(description = "访客预约记录")
private QueryRecordsData data;
@Data
@Schema(description = "访客预约记录数据")
public static class QueryRecordsData {
/**
* 记录总数
*/
@Schema(description = "记录总数")
private Integer total;
/**
* 页码
*/
@Schema(description = "页码")
private Integer pageNo;
/**
* 页大小
*/
@Schema(description = "页大小")
private Integer pageSize;
/**
* 预约记录列表
*/
@Schema(description = "预约记录列表")
private List<AppointmentRecord> list;
}
@Data
@Schema(description = "预约记录详情")
public static class AppointmentRecord {
/**
* 预约记录ID,可作为修改预约的依据
*/
@Schema(description = "预约记录ID")
private String appointRecordId;
/**
* 被访人唯一标识
*/
@Schema(description = "被访人唯一标识")
private String receptionistId;
/**
* 被访人姓名
*/
@Schema(description = "被访人姓名")
private String receptionistName;
/**
* 被访人所属组织编码
*/
@Schema(description = "被访人所属组织编码")
private String receptionistCode;
/**
* 预计来访时间
*/
@Schema(description = "预计来访时间", example = "2018-07-26T15:00:00+08:00")
private String visitStartTime;
/**
* 预计离开时间
*/
@Schema(description = "预计离开时间", example = "2018-07-26T19:00:00+08:00")
private String visitEndTime;
/**
* 来访事由
*/
@Schema(description = "来访事由")
private String visitPurpose;
/**
* 访客姓名
*/
@Schema(description = "访客姓名")
private String visitorName;
/**
* 来访单位
*/
@Schema(description = "来访单位")
private String visitorWorkUnit;
/**
* 访客住址
*/
@Schema(description = "访客住址")
private String visitorAddress;
/**
* 访客Id
*/
@Schema(description = "访客Id")
private String visitorId;
/**
* 访客验证码
*/
@Schema(description = "访客验证码")
private String verificationCode;
/**
* 动态二维码
*/
@Schema(description = "动态二维码")
private String QRCode;
/**
* 性别,1-男,2-女
*/
@Schema(description = "性别,1-男,2-女")
private Integer gender;
/**
* 联系电话
*/
@Schema(description = "联系电话")
private String phoneNo;
/**
* 访客车牌号
*/
@Schema(description = "访客车牌号")
private String plateNo;
/**
* 证件类型
*/
@Schema(description = "证件类型")
private Integer certificateType;
/**
* 证件号
*/
@Schema(description = "证件号")
private String certificateNo;
/**
* 图片的相对Uri
*/
@Schema(description = "图片的相对Uri")
private String picUri;
/**
* 图片服务器索引码
*/
@Schema(description = "图片服务器索引码")
private String svrIndexCode;
/**
* 访客状态
*/
@Schema(description = "访客状态")
private Integer visitorStatus;
/**
* 证件地址
*/
@Schema(description = "证件地址")
private String certAddr;
/**
* 发证机关
*/
@Schema(description = "发证机关")
private String certIssuer;
/**
* 民族
*/
@Schema(description = "民族")
private Integer nation;
/**
* 籍贯
*/
@Schema(description = "籍贯")
private String birthplace;
/**
* 访客记录唯一标识
*/
@Schema(description = "访客记录唯一标识")
private String orderId;
/**
* 权限下发指定的资源点集合
*/
@Schema(description = "权限下发指定的资源点集合")
private DesignatedResources designatedResources;
/**
* 权限组名称集合
*/
@Schema(description = "权限组名称集合")
private List<String> privilegeGroupNames;
/**
* 证件照相对URL
*/
@Schema(description = "证件照相对URL")
private String identityUri;
/**
* 证件照对应图片服务器serviceNodes
*/
@Schema(description = "证件照对应图片服务器serviceNodes")
private String identitySvrCode;
}
@Data
@Schema(description = "权限下发指定的资源点集合")
public static class DesignatedResources {
/**
* 参数类型
* 门禁点1,梯控楼层2,门口机3,围墙机4,停车库5
*/
@Schema(description = "参数类型")
private String paramKey;
/**
* 设备的indexCode集合
*/
@Schema(description = "设备的indexCode集合")
private List<String> paramValues;
}
}