REQ-3581: 接口

This commit is contained in:
yanglin 2025-02-27 09:39:20 +08:00
parent 37bf2db22f
commit 6a516391c1
63 changed files with 1311 additions and 1235 deletions

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api;
import cn.axzo.framework.domain.web.result.ApiResult;
@ -44,15 +45,13 @@ public interface EssApi {
* 查询单位电子签开通情况
*/
@PostMapping("api/ess/getOrgAuthStates")
ApiResult<List<GetOrgAuthStatesResponse>> getOrgAuthStates(
@RequestBody @Valid GetOrgAuthStatesRequest request);
ApiResult<List<GetOrgAuthStatesResponse>> getOrgAuthStates(@RequestBody @Valid GetOrgAuthStatesRequest request);
/**
* 查询用户电子签开通情况(认证)
*/
@PostMapping("api/ess/getPersonAuthState")
ApiResult<GetPersonAuthStateResponse> getPersonAuthState(
@RequestBody @Valid GetPersonAuthStateRequest request);
ApiResult<GetPersonAuthStateResponse> getPersonAuthState(@RequestBody @Valid GetPersonAuthStateRequest request);
/**
* 获取电子签登录链接
@ -65,50 +64,43 @@ public interface EssApi {
* 获取内嵌页面链接, 有效期为5分钟
*/
@PostMapping("api/ess/getEmbedWebUrl")
ApiResult<GetEmbedWebUrlResponse> getEmbedWebUrl(
@RequestBody @Valid GetEmbedWebUrlRequest request);
ApiResult<GetEmbedWebUrlResponse> getEmbedWebUrl(@RequestBody @Valid GetEmbedWebUrlRequest request);
/**
* 查询单位已启用的印章以及授权人员列表等等
*/
@PostMapping("api/ess/getOrgEnabledSeals")
ApiResult<List<EssOrgAndSealInfo>> getOrgEnabledSeals(
@RequestBody @Valid GetSealsRequest request);
ApiResult<List<EssOrgAndSealInfo>> getOrgEnabledSeals(@RequestBody @Valid GetSealsRequest request);
/**
* 查询印章管理员
*/
@PostMapping("api/ess/getSealPersons")
ApiResult<List<EssSealPersonInfo>> getSealPersons(
@RequestBody @Valid GetSealPersonRequest request);
ApiResult<List<EssSealPersonInfo>> getSealPersons(@RequestBody @Valid GetSealPersonRequest request);
/**
* 添加印章人员
*/
@PostMapping("api/ess/addSealPerson")
ApiResult<Void> addSealPerson(
@RequestBody @Valid AddSealPersonRequest request);
ApiResult<Void> addSealPerson(@RequestBody @Valid AddSealPersonRequest request);
/**
* 删除印章人员
*/
@PostMapping("api/ess/removeSealPerson")
ApiResult<Void> removeSealPerson(
@RequestBody @Valid RemoveSealPersonRequest request);
ApiResult<Void> removeSealPerson(@RequestBody @Valid RemoveSealPersonRequest request);
/**
* 单个人印章授权(去授权)
*/
@PostMapping("api/ess/addSealAuthorization")
ApiResult<Void> addSealAuthorization(
@RequestBody @Valid AddSealAuthorizationRequest request);
ApiResult<Void> addSealAuthorization(@RequestBody @Valid AddSealAuthorizationRequest request);
/**
* 单个人印章取消授权
*/
@PostMapping("api/ess/removeSealAuthorization")
ApiResult<Void> removeSealAuthorization(
@RequestBody @Valid RemoveSealAuthorizationRequest request);
ApiResult<Void> removeSealAuthorization(@RequestBody @Valid RemoveSealAuthorizationRequest request);
/**
* 通过文件创建合同
@ -121,8 +113,7 @@ public interface EssApi {
* 获取签署链接, 有效期为5分钟
*/
@PostMapping("api/ess/getContractSignUrl")
ApiResult<GetSignUrlResponse> getContractSignUrl(
@RequestBody @Valid GetSignUrlRequest request);
ApiResult<GetSignUrlResponse> getContractSignUrl(@RequestBody @Valid GetSignUrlRequest request);
/**
* 获取合同PDF文件地址. 下载链接有效期为5分钟
@ -135,15 +126,13 @@ public interface EssApi {
* 从腾讯电子签下载合同PDF文件
*/
@PostMapping("api/ess/saveContractSnapshot")
ApiResult<Void> saveContractSnapshot(
@RequestBody @Valid SaveContractSnapshotRequest request);
ApiResult<Void> saveContractSnapshot(@RequestBody @Valid SaveContractSnapshotRequest request);
/**
* 撤销合同
*/
@PostMapping("api/ess/revokeContract")
ApiResult<Void> revokeContract(
@RequestBody @Valid RevokeContractRequest request);
ApiResult<Void> revokeContract(@RequestBody @Valid RevokeContractRequest request);
/**
* 获取合同详情, 通过合同id

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api;
import org.springframework.cloud.openfeign.EnableFeignClients;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api;
import cn.axzo.framework.domain.web.result.ApiResult;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.domain;
import lombok.Getter;
@ -9,7 +10,8 @@ import java.util.List;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class CreateContractByFile extends CreateContractInfo {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.domain;
import cn.axzo.nanopart.ess.api.domain.contract.Approver;
@ -20,7 +21,8 @@ import static java.util.stream.Collectors.toSet;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public abstract class CreateContractInfo {
/**
@ -66,9 +68,7 @@ public abstract class CreateContractInfo {
public Set<Long> getApproverOuIds() {
if (approvers == null)
return Collections.emptySet();
return approvers.stream()
.map(Approver::getOuId)
.collect(toSet());
return approvers.stream().map(Approver::getOuId).collect(toSet());
}
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.domain;
import com.alibaba.fastjson.JSON;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.domain;
import lombok.Getter;
@ -6,7 +7,8 @@ import lombok.Setter;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class EssOrgInfo {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.domain;
import cn.axzo.nanopart.ess.api.enums.EssSealType;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.domain;
import lombok.Getter;
@ -6,7 +7,8 @@ import lombok.Setter;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class EssSealPersonInfo {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.domain;
import lombok.Getter;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.domain;
import cn.axzo.nanopart.ess.api.domain.contract.OrgPersonInfo;
@ -21,7 +22,6 @@ public interface OrgPerson {
}
static boolean equals(OrgPerson a, OrgPerson b) {
return Objects.equals(a.getOuId(), b.getOuId())
&& Objects.equals(a.getPersonId(), b.getPersonId());
return Objects.equals(a.getOuId(), b.getOuId()) && Objects.equals(a.getPersonId(), b.getPersonId());
}
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.domain;
import lombok.AccessLevel;
@ -20,16 +21,12 @@ public class OrgPersons<T extends OrgPerson> {
}
public Optional<T> findByPerson(OrgPerson person) {
return persons.stream()
.filter(p -> Objects.equals(p.getOuId(), person.getOuId())
&& Objects.equals(p.getPersonId(), person.getPersonId()))
.findFirst();
return persons.stream().filter(p -> Objects.equals(p.getOuId(), person.getOuId())
&& Objects.equals(p.getPersonId(), person.getPersonId())).findFirst();
}
public Optional<T> findByOrgId(Long ouId) {
return persons.stream()
.filter(p -> Objects.equals(p.getOuId(), ouId))
.findFirst();
return persons.stream().filter(p -> Objects.equals(p.getOuId(), ouId)).findFirst();
}
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.domain;
import lombok.Getter;
@ -6,7 +7,8 @@ import lombok.Setter;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class PersonProfileInfo {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.domain.contract;
import cn.axzo.nanopart.ess.api.domain.OrgPerson;
@ -59,14 +60,16 @@ public class Approver implements OrgPerson {
getOrCreateExtension().put("essRecipientId", essRecipientId);
}
@JsonIgnore @JSONField(serialize = false)
@JsonIgnore
@JSONField(serialize = false)
public String getEssRecipientId() {
if (internal == null)
return null;
return internal.getString("essRecipientId");
}
@JsonIgnore @JSONField(serialize = false)
@JsonIgnore
@JSONField(serialize = false)
public JSONObject getOrCreateExtension() {
if (internal == null)
internal = new JSONObject();
@ -77,12 +80,14 @@ public class Approver implements OrgPerson {
return signPerson != null;
}
@JsonIgnore @JSONField(serialize = false)
@JsonIgnore
@JSONField(serialize = false)
public Long getOuId() {
return signPerson == null ? 0L : signPerson.getOuId();
}
@JsonIgnore @JSONField(serialize = false)
@JsonIgnore
@JSONField(serialize = false)
public Long getPersonId() {
return signPerson == null ? 0L : signPerson.getPersonId();
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.domain.contract;
import cn.axzo.nanopart.ess.api.enums.EssContractApproveState;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.domain.contract;
import cn.axzo.nanopart.ess.api.enums.EssContractState;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.domain.contract;
import cn.axzo.nanopart.ess.api.domain.OrgPerson;
@ -9,7 +10,8 @@ import javax.validation.constraints.NotNull;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class OrgPersonInfo implements OrgPerson {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.domain.contract;
import lombok.Getter;
@ -8,7 +9,8 @@ import lombok.Setter;
*
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class SignOption {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.enums;
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.enums;
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.enums;
import lombok.Getter;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.enums;
import lombok.AccessLevel;
@ -23,8 +24,7 @@ public enum EssContractApproveState {
FORWARD("已转他人处理"),
RELIEVED("解除协议(已解除)"),
FILLREJECT("拒绝填写"),
EXCEPTION("异常")
;
EXCEPTION("异常");
private final String description;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.enums;
import lombok.AccessLevel;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.enums;
import lombok.Getter;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.enums;
import lombok.AccessLevel;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.enums;
import lombok.Getter;
@ -16,6 +17,5 @@ public enum EssSealState {
// 停用
DISABLED,
// 启用
ENABLED
;
ENABLED;
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.enums;
import lombok.Getter;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.enums;
import cn.axzo.framework.rocketmq.Event;
@ -23,10 +24,7 @@ public enum MQEvent {
private final Event.EventCode eventCode;
MQEvent(String model, String tag, String desc) {
this.eventCode = Event.EventCode.builder()
.module(model)
.name(tag)
.build();
this.eventCode = Event.EventCode.builder().module(model).name(tag).build();
this.model = model;
this.tag = tag;
this.desc = desc;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.enums;
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.mq;
import cn.axzo.nanopart.ess.api.domain.contract.EssContractInfo;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.mq;
import cn.axzo.nanopart.ess.api.domain.contract.EssContractInfo;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.mq;
import cn.hutool.core.lang.UUID;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import com.alibaba.fastjson.JSON;
@ -10,7 +11,8 @@ import javax.validation.constraints.NotNull;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class AddSealAuthorizationRequest implements SealAndPersonRequest {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import com.alibaba.fastjson.JSON;
@ -10,7 +11,8 @@ import javax.validation.constraints.NotNull;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class AddSealPersonRequest {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import com.alibaba.fastjson.JSON;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import com.alibaba.fastjson.JSON;
@ -13,7 +14,8 @@ import java.util.List;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class CallbackRequest {
@JsonProperty(value = "MsgId")
@ -38,7 +40,8 @@ public class CallbackRequest {
return JSON.toJSONString(this);
}
@Setter @Getter
@Setter
@Getter
public static class OrgAuthorizationFinish {
// 第三方应用的应用编号
private String ApplicationId;
@ -64,7 +67,8 @@ public class CallbackRequest {
private String AdminMobile;
}
@Setter @Getter
@Setter
@Getter
public static class OrgPersonJoin {
// 第三方应用的应用编号
private String ApplicationId;
@ -78,7 +82,8 @@ public class CallbackRequest {
private String EmployeeMobile;
}
@Setter @Getter
@Setter
@Getter
public static class SealOperate {
// 第三方应用的应用编号
private String ApplicationId;
@ -120,7 +125,8 @@ public class CallbackRequest {
private JSONArray AuthorizedUsers;
}
@Setter @Getter
@Setter
@Getter
public static class ContractStateChanged {
// 第三方平台子客企业的唯一标识
private String ApplicationId;
@ -154,7 +160,8 @@ public class CallbackRequest {
private Integer OccurTime;
}
@Setter @Getter
@Setter
@Getter
public static class FlowApproverDetail {
// 如果第三方子企业员工签署, 此字段为第三方子企业员工的唯一标识
private String ProxyOperatorOpenId;
@ -184,7 +191,8 @@ public class CallbackRequest {
private long ApproverDeadline;
}
@Setter @Getter
@Setter
@Getter
public static class SuperAdminChanged {
// 第三方应用的应用编号
private String ApplicationId;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import cn.axzo.nanopart.ess.api.domain.OrgPerson;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import cn.axzo.nanopart.ess.api.domain.CreateContractByFile;
@ -25,7 +26,8 @@ public class CreateContractByFileRequest extends CreateContractRequest {
@NotNull(message = "byFile不能为空")
private CreateContractByFile byFile;
@JsonIgnore @JSONField(serialize = false)
@JsonIgnore
@JSONField(serialize = false)
public CreateContractInfo getContract() {
return byFile;
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import cn.axzo.nanopart.ess.api.domain.CreateContractInfo;
@ -44,7 +45,8 @@ public abstract class CreateContractRequest {
@NotNull(message = "creator不能为空")
private OperatorInfo creator;
@JsonIgnore @JSONField(serialize = false)
@JsonIgnore
@JSONField(serialize = false)
public abstract CreateContractInfo getContract();
}

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import com.alibaba.fastjson.JSON;
@ -9,7 +10,8 @@ import javax.validation.constraints.NotBlank;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class DownloadSingedContractPdfRequest {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import com.alibaba.fastjson.JSON;
@ -9,7 +10,8 @@ import javax.validation.constraints.NotBlank;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class GetContractDetailByContractIdRequest {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import cn.axzo.nanopart.ess.api.domain.OrgPerson;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import cn.axzo.nanopart.ess.api.enums.EssEmbedType;
@ -10,7 +11,8 @@ import javax.validation.constraints.NotNull;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class GetEmbedWebUrlRequest {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import com.alibaba.fastjson.JSON;
@ -10,7 +11,8 @@ import java.util.Set;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class GetOrgAuthStatesRequest {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import cn.axzo.nanopart.ess.api.domain.OrgPerson;
@ -10,7 +11,8 @@ import javax.validation.constraints.NotNull;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class GetPersonAuthStateRequest implements OrgPerson {
/**
* 单位id

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import lombok.Getter;
@ -8,7 +9,8 @@ import javax.validation.constraints.NotBlank;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class GetSealPersonRequest {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import com.alibaba.fastjson.JSON;
@ -10,7 +11,8 @@ import java.util.Set;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class GetSealsRequest {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import cn.axzo.nanopart.ess.api.domain.OrgPerson;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import com.alibaba.fastjson.JSON;
@ -10,7 +11,8 @@ import javax.validation.constraints.NotNull;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class RemoveSealAuthorizationRequest implements SealAndPersonRequest {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import com.alibaba.fastjson.JSON;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import com.alibaba.fastjson.JSON;
@ -9,7 +10,8 @@ import javax.validation.constraints.NotBlank;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class RevokeContractRequest {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
import com.alibaba.fastjson.JSON;
@ -9,7 +10,8 @@ import javax.validation.constraints.NotBlank;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class SaveContractSnapshotRequest {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.request;
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.response;
import com.alibaba.fastjson.JSON;
@ -7,7 +8,8 @@ import lombok.Setter;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class CreateConsoleLoginUrlResponse {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.response;
import com.alibaba.fastjson.JSON;
@ -9,7 +10,8 @@ import java.util.List;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class CreateContractByFileResponse {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.response;
import com.alibaba.fastjson.JSON;
@ -7,7 +8,8 @@ import lombok.Setter;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class DownloadSingedContractPdfResponse {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.response;
import cn.axzo.nanopart.ess.api.domain.contract.EssContractInfo;
@ -8,7 +9,8 @@ import lombok.Setter;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class GetContractDetailByContractIdResponse {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.response;
import lombok.Getter;
@ -6,7 +7,8 @@ import lombok.Setter;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class GetContractSignUrlResponse {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.response;
import com.alibaba.fastjson.JSON;
@ -7,7 +8,8 @@ import lombok.Setter;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class GetEmbedWebUrlResponse {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.response;
import com.alibaba.fastjson.JSON;
@ -7,7 +8,8 @@ import lombok.Setter;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class GetOrgAuthStatesResponse {
/**

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.response;
import com.alibaba.fastjson.JSON;
@ -7,7 +8,8 @@ import lombok.Setter;
/**
* @author yanglin
*/
@Setter @Getter
@Setter
@Getter
public class GetPersonAuthStateResponse {
/**
@ -15,7 +17,6 @@ public class GetPersonAuthStateResponse {
*/
private boolean isAuthorized;
@Override
public String toString() {
return JSON.toJSONString(this);

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.response;
import com.alibaba.fastjson.JSON;

View File

@ -1,3 +1,4 @@
package cn.axzo.nanopart.ess.api.utils;
import lombok.AccessLevel;
@ -10,9 +11,7 @@ import lombok.Getter;
@Getter
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public enum YesOrNo {
YES("YES", ""),
NO("NO", "")
;
YES("YES", ""), NO("NO", "");
private final String code;
private final String desc;