mirror of
https://gitee.com/jzsw-it/yexuejc-base.git
synced 2025-12-23 02:19:26 +08:00
🏗️ (结构/架构): 重命名响应对象类名并优化工具类
- 将 ResponseVO 重命名为 BasicResponse - 将 ListResponseVO 重命名为 ListResponse 并添加 totalCount 字段 - 将 ObjectResponseVO 重命名为 ObjectResponse - 将 SignRequestVO 重命名为 SignRequest - 将 SignResponseVO 重命名为 SignResponse - 在 ObjUtil 中添加 parseBigDecimal、compareLength、equals 和 sub 方法 - 优化 ObjUtil 中的字段复制日志记录 - 更新 maven-compiler-plugin 配置源码和目标版本为 16
This commit is contained in:
@@ -11,7 +11,7 @@ import com.yexuejc.base.util.JsonUtil;
|
|||||||
* @author ISC
|
* @author ISC
|
||||||
* @date 2023/08/18
|
* @date 2023/08/18
|
||||||
*/
|
*/
|
||||||
public class ResponseVO implements Serializable {
|
public class BasicResponse implements Serializable {
|
||||||
|
|
||||||
public enum Codes {
|
public enum Codes {
|
||||||
/** 处理成功 */ SUCCESS("S"),
|
/** 处理成功 */ SUCCESS("S"),
|
||||||
@@ -38,10 +38,10 @@ public class ResponseVO implements Serializable {
|
|||||||
/** 业务异常 */
|
/** 业务异常 */
|
||||||
private String bizMessage;
|
private String bizMessage;
|
||||||
|
|
||||||
public ResponseVO() {
|
public BasicResponse() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResponseVO(String code, String msg) {
|
public BasicResponse(String code, String msg) {
|
||||||
this.code = code;
|
this.code = code;
|
||||||
this.message = msg;
|
this.message = msg;
|
||||||
}
|
}
|
||||||
@@ -50,7 +50,7 @@ public class ResponseVO implements Serializable {
|
|||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResponseVO setCode(String code) {
|
public BasicResponse setCode(String code) {
|
||||||
this.code = code;
|
this.code = code;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -59,7 +59,7 @@ public class ResponseVO implements Serializable {
|
|||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResponseVO setMessage(String message) {
|
public BasicResponse setMessage(String message) {
|
||||||
this.message = message;
|
this.message = message;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -68,7 +68,7 @@ public class ResponseVO implements Serializable {
|
|||||||
return bizCode;
|
return bizCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResponseVO setBizCode(String bizCode) {
|
public BasicResponse setBizCode(String bizCode) {
|
||||||
this.bizCode = bizCode;
|
this.bizCode = bizCode;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -77,7 +77,7 @@ public class ResponseVO implements Serializable {
|
|||||||
return bizMessage;
|
return bizMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResponseVO setBizMessage(String bizMessage) {
|
public BasicResponse setBizMessage(String bizMessage) {
|
||||||
this.bizMessage = bizMessage;
|
this.bizMessage = bizMessage;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -87,8 +87,8 @@ public class ResponseVO implements Serializable {
|
|||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static ResponseVO success() {
|
public static BasicResponse success() {
|
||||||
return new ResponseVO(Codes.SUCCESS.code, SymbolicConsts.EMPTY);
|
return new BasicResponse(Codes.SUCCESS.code, SymbolicConsts.EMPTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -97,8 +97,8 @@ public class ResponseVO implements Serializable {
|
|||||||
* @param message
|
* @param message
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static ResponseVO success(String message) {
|
public static BasicResponse success(String message) {
|
||||||
return new ResponseVO(Codes.SUCCESS.code, message);
|
return new BasicResponse(Codes.SUCCESS.code, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -107,8 +107,8 @@ public class ResponseVO implements Serializable {
|
|||||||
* @param message
|
* @param message
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static ResponseVO fail(String message) {
|
public static BasicResponse fail(String message) {
|
||||||
return new ResponseVO(Codes.SYSTEM_ERROR.code, message);
|
return new BasicResponse(Codes.SYSTEM_ERROR.code, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -117,8 +117,8 @@ public class ResponseVO implements Serializable {
|
|||||||
* @param errorCode
|
* @param errorCode
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static ResponseVO fail4Code(String errorCode) {
|
public static BasicResponse fail4Code(String errorCode) {
|
||||||
return new ResponseVO(errorCode, SymbolicConsts.EMPTY);
|
return new BasicResponse(errorCode, SymbolicConsts.EMPTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -129,8 +129,8 @@ public class ResponseVO implements Serializable {
|
|||||||
* @param message
|
* @param message
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static ResponseVO fail(String errorCode, String message) {
|
public static BasicResponse fail(String errorCode, String message) {
|
||||||
return new ResponseVO(errorCode, message);
|
return new BasicResponse(errorCode, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
123
src/main/java/com/yexuejc/base/pojo/ListResponse.java
Normal file
123
src/main/java/com/yexuejc/base/pojo/ListResponse.java
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
package com.yexuejc.base.pojo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* API結果が戻りする、集合型
|
||||||
|
*
|
||||||
|
* @author ISC
|
||||||
|
* @date 2023/08/18
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class ListResponse<T> extends BasicResponse {
|
||||||
|
|
||||||
|
/** 数据对象 */
|
||||||
|
private List<T> data;
|
||||||
|
/** 总件数 */
|
||||||
|
private Long totalCount;
|
||||||
|
|
||||||
|
public ListResponse() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public ListResponse(List<T> data) {
|
||||||
|
this.data = data;
|
||||||
|
this.totalCount = data == null ? 0L : (long) data.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ListResponse(List<T> data, Long totalCount) {
|
||||||
|
this.data = data;
|
||||||
|
this.totalCount = totalCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ListResponse(String code, String msg, List<T> data, Long totalCount) {
|
||||||
|
super(code, msg);
|
||||||
|
this.data = data;
|
||||||
|
this.totalCount = totalCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> ListResponse<T> of(List<T> pagedList, long count) {
|
||||||
|
return new ListResponse<>(pagedList, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<T> getData() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setData(List<T> data) {
|
||||||
|
this.data = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getTotalCount() {
|
||||||
|
return totalCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTotalCount(Long totalCount) {
|
||||||
|
this.totalCount = totalCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建成功结果
|
||||||
|
*
|
||||||
|
* @param data
|
||||||
|
* @param <T>
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static <T> ListResponse<T> success(List<T> data) {
|
||||||
|
return new ListResponse<>(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建失败并设定message,默认code
|
||||||
|
*
|
||||||
|
* @param message
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static ListResponse<String> fail(String message) {
|
||||||
|
ListResponse<String> vo = new ListResponse<>();
|
||||||
|
vo.setCode(Codes.SYSTEM_ERROR.code).setMessage(message);
|
||||||
|
return vo;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建失败并设定message,code
|
||||||
|
*
|
||||||
|
* @param errorCode
|
||||||
|
* @param message
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static ListResponse<String> fail(String errorCode, String message) {
|
||||||
|
ListResponse<String> vo = new ListResponse<>();
|
||||||
|
vo.setCode(errorCode).setMessage(message);
|
||||||
|
return vo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListResponse<T> setCode(String code) {
|
||||||
|
super.setCode(code);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListResponse<T> setMessage(String message) {
|
||||||
|
super.setMessage(message);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListResponse<T> setBizCode(String errCode) {
|
||||||
|
super.setBizCode(errCode);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListResponse<T> setBizMessage(String errCodeDes) {
|
||||||
|
super.setBizMessage(errCodeDes);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return super.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,104 +0,0 @@
|
|||||||
package com.yexuejc.base.pojo;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.yexuejc.base.constant.SymbolicConsts;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* API結果が戻りする、集合型
|
|
||||||
*
|
|
||||||
* @author ISC
|
|
||||||
* @date 2023/08/18
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class ListResponseVO<T> extends ResponseVO {
|
|
||||||
|
|
||||||
private List<T> data;
|
|
||||||
|
|
||||||
public ListResponseVO() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ListResponseVO(List<T> data) {
|
|
||||||
this.data = data;
|
|
||||||
setMessage(SymbolicConsts.EMPTY);
|
|
||||||
setCode(Codes.SUCCESS.code);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ListResponseVO(List<T> data, String code, String msg) {
|
|
||||||
super(code, msg);
|
|
||||||
this.data = data;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<T> getData() {
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ListResponseVO<T> setData(List<T> data) {
|
|
||||||
this.data = data;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建成功结果
|
|
||||||
* @param data
|
|
||||||
* @return
|
|
||||||
* @param <T>
|
|
||||||
*/
|
|
||||||
public static <T> ListResponseVO<T> success(List<T> data) {
|
|
||||||
return new ListResponseVO<>(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建失败并设定message,默认code
|
|
||||||
* @param message
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static ListResponseVO<String> fail(String message) {
|
|
||||||
ListResponseVO<String> vo = new ListResponseVO<>();
|
|
||||||
vo.setCode(Codes.SYSTEM_ERROR.code).setMessage(message);
|
|
||||||
return vo;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建失败并设定message,code
|
|
||||||
* @param errorCode
|
|
||||||
* @param message
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static ListResponseVO<String> fail(String errorCode, String message) {
|
|
||||||
ListResponseVO<String> vo = new ListResponseVO<>();
|
|
||||||
vo.setCode(errorCode).setMessage(message);
|
|
||||||
return vo;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ListResponseVO<T> setCode(String code) {
|
|
||||||
super.setCode(code);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ListResponseVO<T> setMessage(String message) {
|
|
||||||
super.setMessage(message);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ListResponseVO<T> setBizCode(String errCode) {
|
|
||||||
super.setBizCode(errCode);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ListResponseVO<T> setBizMessage(String errCodeDes) {
|
|
||||||
super.setBizMessage(errCodeDes);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return super.toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -9,20 +9,20 @@ import com.yexuejc.base.constant.SymbolicConsts;
|
|||||||
* @author ISC
|
* @author ISC
|
||||||
* @date 2023/08/18
|
* @date 2023/08/18
|
||||||
*/
|
*/
|
||||||
public class ObjectResponseVO<T> extends ResponseVO {
|
public class ObjectResponse<T> extends BasicResponse {
|
||||||
|
|
||||||
private T data;
|
private T data;
|
||||||
|
|
||||||
public ObjectResponseVO() {
|
public ObjectResponse() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public ObjectResponseVO(T data) {
|
public ObjectResponse(T data) {
|
||||||
this.data = data;
|
this.data = data;
|
||||||
setMessage(SymbolicConsts.EMPTY);
|
setMessage(SymbolicConsts.EMPTY);
|
||||||
setCode(Codes.SUCCESS.code);
|
setCode(Codes.SUCCESS.code);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ObjectResponseVO(T data, String code, String msg) {
|
public ObjectResponse(T data, String code, String msg) {
|
||||||
super(code, msg);
|
super(code, msg);
|
||||||
this.data = data;
|
this.data = data;
|
||||||
}
|
}
|
||||||
@@ -32,7 +32,7 @@ public class ObjectResponseVO<T> extends ResponseVO {
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ObjectResponseVO<T> setData(T data) {
|
public ObjectResponse<T> setData(T data) {
|
||||||
this.data = data;
|
this.data = data;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -43,8 +43,8 @@ public class ObjectResponseVO<T> extends ResponseVO {
|
|||||||
* @return
|
* @return
|
||||||
* @param <T>
|
* @param <T>
|
||||||
*/
|
*/
|
||||||
public static <T> ObjectResponseVO<T> success(T data) {
|
public static <T> ObjectResponse<T> success(T data) {
|
||||||
return new ObjectResponseVO<>(data);
|
return new ObjectResponse<>(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -52,8 +52,8 @@ public class ObjectResponseVO<T> extends ResponseVO {
|
|||||||
* @param message
|
* @param message
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static ObjectResponseVO<String> fail(String message) {
|
public static ObjectResponse<String> fail(String message) {
|
||||||
ObjectResponseVO<String> vo = new ObjectResponseVO<>();
|
ObjectResponse<String> vo = new ObjectResponse<>();
|
||||||
vo.setCode(Codes.SYSTEM_ERROR.code).setMessage(message);
|
vo.setCode(Codes.SYSTEM_ERROR.code).setMessage(message);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
@@ -64,32 +64,32 @@ public class ObjectResponseVO<T> extends ResponseVO {
|
|||||||
* @param message
|
* @param message
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static ObjectResponseVO<String> fail(String errorCode, String message) {
|
public static ObjectResponse<String> fail(String errorCode, String message) {
|
||||||
ObjectResponseVO<String> vo = new ObjectResponseVO<>();
|
ObjectResponse<String> vo = new ObjectResponse<>();
|
||||||
vo.setCode(errorCode).setMessage(message);
|
vo.setCode(errorCode).setMessage(message);
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ObjectResponseVO<T> setCode(String code) {
|
public ObjectResponse<T> setCode(String code) {
|
||||||
super.setCode(code);
|
super.setCode(code);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ObjectResponseVO<T> setMessage(String message) {
|
public ObjectResponse<T> setMessage(String message) {
|
||||||
super.setMessage(message);
|
super.setMessage(message);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ObjectResponseVO<T> setBizCode(String bizCode) {
|
public ObjectResponse<T> setBizCode(String bizCode) {
|
||||||
super.setBizCode(bizCode);
|
super.setBizCode(bizCode);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ObjectResponseVO<T> setBizMessage(String bizMessage) {
|
public ObjectResponse<T> setBizMessage(String bizMessage) {
|
||||||
super.setBizMessage(bizMessage);
|
super.setBizMessage(bizMessage);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -10,7 +10,7 @@ import com.yexuejc.base.util.JsonUtil;
|
|||||||
* @author: maxf
|
* @author: maxf
|
||||||
* @date: 2018/5/12 14:52
|
* @date: 2018/5/12 14:52
|
||||||
*/
|
*/
|
||||||
public class SignRequestVO implements Serializable {
|
public class SignRequest implements Serializable {
|
||||||
private static final long serialVersionUID = 9171765814642105098L;
|
private static final long serialVersionUID = 9171765814642105098L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -6,7 +6,7 @@ package com.yexuejc.base.pojo;
|
|||||||
* @author maxiaofeng
|
* @author maxiaofeng
|
||||||
* @date 2025/9/25 17:35
|
* @date 2025/9/25 17:35
|
||||||
*/
|
*/
|
||||||
public class SignResponseVO<T> extends ObjectResponseVO<T> {
|
public class SignResponse<T> extends ObjectResponse<T> {
|
||||||
/**
|
/**
|
||||||
* 签名
|
* 签名
|
||||||
*/
|
*/
|
||||||
@@ -16,37 +16,37 @@ public class SignResponseVO<T> extends ObjectResponseVO<T> {
|
|||||||
return sign;
|
return sign;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SignResponseVO<T> setSign(String sign) {
|
public SignResponse<T> setSign(String sign) {
|
||||||
this.sign = sign;
|
this.sign = sign;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SignResponseVO<T> setData(T data) {
|
public SignResponse<T> setData(T data) {
|
||||||
super.setData(data);
|
super.setData(data);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SignResponseVO<T> setMessage(String message) {
|
public SignResponse<T> setMessage(String message) {
|
||||||
super.setMessage(message);
|
super.setMessage(message);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SignResponseVO<T> setCode(String code) {
|
public SignResponse<T> setCode(String code) {
|
||||||
super.setCode(code);
|
super.setCode(code);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SignResponseVO<T> setBizCode(String bizCode) {
|
public SignResponse<T> setBizCode(String bizCode) {
|
||||||
super.setBizCode(bizCode);
|
super.setBizCode(bizCode);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SignResponseVO<T> setBizMessage(String message) {
|
public SignResponse<T> setBizMessage(String message) {
|
||||||
super.setBizMessage(message);
|
super.setBizMessage(message);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -1,17 +1,32 @@
|
|||||||
package com.yexuejc.base.util;
|
package com.yexuejc.base.util;
|
||||||
|
|
||||||
import com.yexuejc.base.annotation.ToUeProperty;
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.*;
|
import java.io.IOException;
|
||||||
|
import java.io.ObjectInputStream;
|
||||||
|
import java.io.ObjectOutputStream;
|
||||||
|
import java.lang.reflect.Array;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import com.yexuejc.base.annotation.ToUeProperty;
|
||||||
|
import com.yexuejc.base.exception.BaseException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对象工具:对类的操作
|
* 对象工具:对类的操作
|
||||||
*
|
*
|
||||||
@@ -27,6 +42,160 @@ public class ObjUtil {
|
|||||||
private ObjUtil() {
|
private ObjUtil() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将对象转换为BigDecimal
|
||||||
|
*
|
||||||
|
* @param obj 要转换的对象
|
||||||
|
* @return BigDecimal
|
||||||
|
*/
|
||||||
|
public static BigDecimal parseBigDecimal(Object obj) {
|
||||||
|
if (StrUtil.isEmpty(obj)) {
|
||||||
|
return BigDecimal.ZERO;
|
||||||
|
}
|
||||||
|
if (obj instanceof BigDecimal) {
|
||||||
|
return (BigDecimal) obj;
|
||||||
|
}
|
||||||
|
return new BigDecimal(obj.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 比较两个对象的长度或大小
|
||||||
|
*
|
||||||
|
* @param obj1 第一个对象
|
||||||
|
* @param obj2 第二个对象
|
||||||
|
* @return 长度相等返回true,否则返回false
|
||||||
|
*/
|
||||||
|
public static boolean compareLength(Object obj1, Object obj2) {
|
||||||
|
// 如果两个对象都为null,返回true
|
||||||
|
if (obj1 == null && obj2 == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果只有一个对象为null,返回false
|
||||||
|
if (obj1 == null || obj2 == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果是字符串类型,比较字符数
|
||||||
|
if (obj1 instanceof String && obj2 instanceof String) {
|
||||||
|
String str1 = (String) obj1;
|
||||||
|
String str2 = (String) obj2;
|
||||||
|
return str1.length() == str2.length();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果是集合类型,比较元素数量
|
||||||
|
if (obj1 instanceof Collection<?> && obj2 instanceof Collection<?>) {
|
||||||
|
Collection<?> coll1 = (Collection<?>) obj1;
|
||||||
|
Collection<?> coll2 = (Collection<?>) obj2;
|
||||||
|
return coll1.size() == coll2.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果是数组类型,比较数组长度
|
||||||
|
if (obj1.getClass().isArray() && obj2.getClass().isArray()) {
|
||||||
|
return java.lang.reflect.Array.getLength(obj1) == java.lang.reflect.Array.getLength(obj2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 其他类型返回false
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断多个对象是否相等
|
||||||
|
*
|
||||||
|
* @param obj1 目标对象
|
||||||
|
* @param tagObjs 标记对象
|
||||||
|
* @return 多个对象是否相等的判断结果
|
||||||
|
*/
|
||||||
|
public static boolean equals(Object obj1, Object... tagObjs) {
|
||||||
|
for (Object tagObj : tagObjs) {
|
||||||
|
if (!isEqual(obj1, tagObj)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断两个对象是否相等
|
||||||
|
*
|
||||||
|
* @param obj1 目标对象
|
||||||
|
* @param obj2 标记对象
|
||||||
|
* @return 对象是否相等的判断结果
|
||||||
|
*/
|
||||||
|
private static boolean isEqual(Object obj1, Object obj2) {
|
||||||
|
// 使用标准的Objects.equals处理基本的相等情况
|
||||||
|
if (java.util.Objects.equals(obj1, obj2)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// 特殊处理:将null与空字符串视为相等
|
||||||
|
if ((obj1 == null && "".equals(obj2)) || (obj2 == null && "".equals(obj1))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理数值类型的比较
|
||||||
|
if (obj1 instanceof Number && obj2 instanceof Number) {
|
||||||
|
Number n1 = (Number) obj1;
|
||||||
|
Number n2 = (Number) obj2;
|
||||||
|
return n1.doubleValue() == n2.doubleValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取对象的子对象
|
||||||
|
* <p>支持的对象类型:String、数组和集合(List,Set)。不支持Map。</p>
|
||||||
|
*
|
||||||
|
* @param obj 目标对象
|
||||||
|
* @param beginIndex 开始索引
|
||||||
|
* @param endIndex 结束索引
|
||||||
|
* @return 子字符串
|
||||||
|
* @throws BaseException 开始索引大于结束索引时抛出异常
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public static <T> T sub(T obj, int beginIndex, int endIndex) throws BaseException {
|
||||||
|
if (StrUtil.isEmpty(obj)) {
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
if (beginIndex < 0) {
|
||||||
|
beginIndex = 0;
|
||||||
|
}
|
||||||
|
if (endIndex < beginIndex) {
|
||||||
|
throw new BaseException("开始索引大于结束索引。");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (obj instanceof String) {
|
||||||
|
String str = (String) obj;
|
||||||
|
if (endIndex > str.length()) {
|
||||||
|
endIndex = str.length();
|
||||||
|
}
|
||||||
|
return (T) str.substring(beginIndex, endIndex);
|
||||||
|
}
|
||||||
|
if (obj.getClass().isArray()) {
|
||||||
|
if (endIndex > Array.getLength(obj)) {
|
||||||
|
endIndex = Array.getLength(obj);
|
||||||
|
}
|
||||||
|
int newSize = endIndex - beginIndex;
|
||||||
|
T newArray = (T) Array.newInstance(obj.getClass().getComponentType(), newSize);
|
||||||
|
|
||||||
|
for (int i = 0; i < newSize; i++) {
|
||||||
|
Array.set(newArray, i, Array.get(obj, beginIndex + i));
|
||||||
|
}
|
||||||
|
return newArray;
|
||||||
|
}
|
||||||
|
if (obj instanceof Collection<?>) {
|
||||||
|
Collection<?> coll = (Collection<?>) obj;
|
||||||
|
if (endIndex > coll.size()) {
|
||||||
|
endIndex = coll.size();
|
||||||
|
}
|
||||||
|
int newSize = endIndex - beginIndex;
|
||||||
|
return (T) coll.stream().skip(beginIndex).limit(newSize).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
throw new BaseException("不支持的类型。");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>把对象按照{@link ToUeProperty}注解转换</p>
|
* <p>把对象按照{@link ToUeProperty}注解转换</p>
|
||||||
* <i>字段值为空不输出</i>
|
* <i>字段值为空不输出</i>
|
||||||
@@ -228,10 +397,8 @@ public class ObjUtil {
|
|||||||
if (null == obj) {
|
if (null == obj) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
boolean b = obj.getClass().isPrimitive()
|
boolean b = obj.getClass()
|
||||||
|| obj instanceof Integer || obj instanceof Character || obj instanceof Boolean
|
.isPrimitive() || obj instanceof Integer || obj instanceof Character || obj instanceof Boolean || obj instanceof Number || obj instanceof String || obj instanceof Double || obj instanceof Float || obj instanceof Short || obj instanceof Long || obj instanceof Byte;
|
||||||
|| obj instanceof Number || obj instanceof String || obj instanceof Double || obj instanceof Float
|
|
||||||
|| obj instanceof Short || obj instanceof Long || obj instanceof Byte;
|
|
||||||
if (b) {
|
if (b) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -298,8 +465,7 @@ public class ObjUtil {
|
|||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.warning(lowerCaseFirstChar(f.getName()) + " field copy failed. " + e.getMessage());
|
log.warning(lowerCaseFirstChar(f.getName()) + " field copy failed. " + e.getMessage());
|
||||||
log.log(Level.FINER, lowerCaseFirstChar(f.getName()) +
|
log.log(Level.FINER, lowerCaseFirstChar(f.getName()) + " field copy failed. The exception information is as follows:", e);
|
||||||
" field copy failed. The exception information is as follows:", e);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return o;
|
return o;
|
||||||
@@ -341,8 +507,7 @@ public class ObjUtil {
|
|||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.warning(lowerCaseFirstChar(fieldName) + " field copy failed. " + e.getMessage());
|
log.warning(lowerCaseFirstChar(fieldName) + " field copy failed. " + e.getMessage());
|
||||||
log.log(Level.FINER, lowerCaseFirstChar(fieldName) +
|
log.log(Level.FINER, lowerCaseFirstChar(fieldName) + " field copy failed. The exception information is as follows:", e);
|
||||||
" field copy failed. The exception information is as follows:", e);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return o;
|
return o;
|
||||||
@@ -359,9 +524,7 @@ public class ObjUtil {
|
|||||||
List<Method> methodList = new ArrayList<>();
|
List<Method> methodList = new ArrayList<>();
|
||||||
Method[] methods = beanClass.getDeclaredMethods();
|
Method[] methods = beanClass.getDeclaredMethods();
|
||||||
if (StrUtil.isNotEmpty(startsWith)) {
|
if (StrUtil.isNotEmpty(startsWith)) {
|
||||||
methodList.addAll(Arrays.stream(methods)
|
methodList.addAll(Arrays.stream(methods).filter(method -> method.getName().startsWith(startsWith)).collect(Collectors.toList()));
|
||||||
.filter(method -> method.getName().startsWith(startsWith))
|
|
||||||
.collect(Collectors.toList()));
|
|
||||||
} else {
|
} else {
|
||||||
methodList.addAll(Arrays.asList(methods));
|
methodList.addAll(Arrays.asList(methods));
|
||||||
}
|
}
|
||||||
@@ -406,7 +569,7 @@ public class ObjUtil {
|
|||||||
* 查找目标类中的字段
|
* 查找目标类中的字段
|
||||||
*
|
*
|
||||||
* @param targetClass 目标类
|
* @param targetClass 目标类
|
||||||
* @param fieldName 字段名
|
* @param fieldName 字段名
|
||||||
* @return 找到的字段,未找到返回null
|
* @return 找到的字段,未找到返回null
|
||||||
*/
|
*/
|
||||||
private static Field findTargetField(Class<?> targetClass, String fieldName) {
|
private static Field findTargetField(Class<?> targetClass, String fieldName) {
|
||||||
@@ -426,8 +589,8 @@ public class ObjUtil {
|
|||||||
* 查找setter方法
|
* 查找setter方法
|
||||||
*
|
*
|
||||||
* @param targetClass 目标类
|
* @param targetClass 目标类
|
||||||
* @param fieldName 字段名
|
* @param fieldName 字段名
|
||||||
* @param paramType 参数类型
|
* @param paramType 参数类型
|
||||||
* @return 找到的setter方法,未找到返回null
|
* @return 找到的setter方法,未找到返回null
|
||||||
*/
|
*/
|
||||||
private static Method findSetterMethod(Class<?> targetClass, String fieldName, Class<?> paramType) {
|
private static Method findSetterMethod(Class<?> targetClass, String fieldName, Class<?> paramType) {
|
||||||
@@ -442,8 +605,8 @@ public class ObjUtil {
|
|||||||
/**
|
/**
|
||||||
* 复制字段值
|
* 复制字段值
|
||||||
*
|
*
|
||||||
* @param source 源对象
|
* @param source 源对象
|
||||||
* @param target 目标对象
|
* @param target 目标对象
|
||||||
* @param sourceField 源字段
|
* @param sourceField 源字段
|
||||||
* @param targetField 目标字段
|
* @param targetField 目标字段
|
||||||
* @throws IllegalAccessException 反射访问异常
|
* @throws IllegalAccessException 反射访问异常
|
||||||
@@ -462,8 +625,8 @@ public class ObjUtil {
|
|||||||
* 设置字段值
|
* 设置字段值
|
||||||
*
|
*
|
||||||
* @param target 目标对象
|
* @param target 目标对象
|
||||||
* @param field 字段
|
* @param field 字段
|
||||||
* @param value 值
|
* @param value 值
|
||||||
* @throws IllegalAccessException 反射访问异常
|
* @throws IllegalAccessException 反射访问异常
|
||||||
*/
|
*/
|
||||||
private static void setFieldValue(Object target, Field field, Object value) throws IllegalAccessException {
|
private static void setFieldValue(Object target, Field field, Object value) throws IllegalAccessException {
|
||||||
|
|||||||
Reference in New Issue
Block a user