refactor: 重构WebSocket服务及相关实体类

重构WebSocket服务名称从WebSocketService改为WebSocketClientService,并实现Serializable接口
添加WebSocket常量定义和消息处理实现
优化实体类equals和hashCode方法
修复控制器路径和日志配置
添加查询服务和任务接口方法
This commit is contained in:
2025-09-17 11:45:50 +08:00
parent 30deb0a280
commit c42ff7501d
152 changed files with 1933 additions and 999 deletions

View File

@@ -4,4 +4,5 @@ public class ProjectConstant {
public final static String KEY_CUSTOMER_SATISFACTION_SURVEY_TEMPLATE = "project.customer-satisfaction-survey.template";
public static final String KEY_BASE_PATH = "project.base.path";
}

View File

@@ -1,4 +1,16 @@
package com.ecep.contract.constant;
public class WebSocketConstant {
public static final String MESSAGE_ID_FIELD_NAME = "messageId";
public static final String MESSAGE_TYPE_FIELD_NAME = "messageType";
public static final String SUCCESS_FIELD_VALUE = "success";
public static final String MESSAGE_FIELD_NAME = "message";
public static final String ERROR_CODE_FIELD_NAME = "errorCode";
public static final String SERVICE_FIELD_NAME = "service";
public static final String METHOD_FIELD_NAME = "method";
public static final String ARGUMENTS_FIELD_NAME = "arguments";
public static final String SESSION_ID_FIELD_NAME = "sessionId";
}

View File

@@ -6,6 +6,8 @@ import java.time.LocalDate;
import java.util.List;
import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.hibernate.annotations.ColumnDefault;
import com.ecep.contract.VendorType;
@@ -56,6 +58,7 @@ public class CompanyVendor implements IdentityEntity, CompanyBasedEntity, Serial
private Company company;
@OneToMany(mappedBy = "vendor", fetch = FetchType.LAZY)
@JsonIgnore
@ToString.Exclude
private List<CompanyVendorEntity> entities;

View File

@@ -1,5 +1,6 @@
package com.ecep.contract.model;
import java.io.Serializable;
import java.util.Objects;
import com.ecep.contract.CompanyVendorFileType;
@@ -19,7 +20,8 @@ import lombok.ToString;
@Entity
@Table(name = "COMPANY_VENDOR_FILE_TYPE_LOCAL")
@ToString
public class CompanyVendorFileTypeLocal extends BaseEnumEntity<CompanyVendorFileType> {
public class CompanyVendorFileTypeLocal extends BaseEnumEntity<CompanyVendorFileType> implements Serializable {
private static final long serialVersionUID = 1L;
@Override
public final boolean equals(Object object) {
if (this == object)

View File

@@ -1,5 +1,6 @@
package com.ecep.contract.model;
import java.io.Serializable;
import java.util.Objects;
import com.ecep.contract.ContractFileType;
@@ -20,7 +21,8 @@ import lombok.ToString;
@Entity
@Table(name = "CONTRACT_FILE_TYPE_LOCAL")
@ToString
public class ContractFileTypeLocal extends BaseEnumEntity<ContractFileType> {
public class ContractFileTypeLocal extends BaseEnumEntity<ContractFileType> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 建议的文件名
*/

View File

@@ -64,6 +64,7 @@ public class ContractGroup implements IdentityEntity, NamedEntity, Serializable
@Override
public final int hashCode() {
super.hashCode();
return HibernateProxyUtils.hashCode(this);
}
}

View File

@@ -1,5 +1,6 @@
package com.ecep.contract.model;
import java.io.Serializable;
import java.util.Objects;
import com.ecep.contract.util.HibernateProxyUtils;
@@ -22,7 +23,8 @@ import lombok.ToString;
@Entity
@Table(name = "CUSTOMER_CATALOG", schema = "supplier_ms")
@ToString
public class CustomerCatalog implements BasedEntity, IdentityEntity {
public class CustomerCatalog implements BasedEntity, IdentityEntity, Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)

View File

@@ -1,5 +1,6 @@
package com.ecep.contract.model;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Objects;
@@ -27,7 +28,8 @@ import lombok.ToString;
@Entity
@Table(name = "PROJECT_CUSTOMER_SATISFACTION_SURVEY", schema = "supplier_ms")
@ToString
public class CustomerSatisfactionSurvey implements IdentityEntity, ProjectBasedEntity {
public class CustomerSatisfactionSurvey implements IdentityEntity, ProjectBasedEntity, Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)

View File

@@ -1,5 +1,6 @@
package com.ecep.contract.model;
import java.io.Serializable;
import java.util.Objects;
import com.ecep.contract.util.HibernateProxyUtils;
@@ -24,7 +25,8 @@ import lombok.ToString;
@Setter
@Entity
@Table(name = "PRODUCT_DELIVERY_SIGN_METHOD", schema = "supplier_ms")
public class DeliverySignMethod implements BasedEntity, IdentityEntity {
public class DeliverySignMethod implements BasedEntity, IdentityEntity , Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)

View File

@@ -117,8 +117,11 @@ public class Employee implements BasedEntity, IdentityEntity, NamedEntity, Seria
public final boolean equals(Object object) {
if (this == object)
return true;
if (object == null || HibernateProxyUtils.isNotEffectiveClassEquals(this, object))
if (object == null)
return false;
if (HibernateProxyUtils.isNotEffectiveClassEquals(object, this)) {
return false;
}
Employee employee = (Employee) object;
return getId() != null && Objects.equals(getId(), employee.getId());
}

View File

@@ -1,28 +1,21 @@
package com.ecep.contract.model;
import java.util.Objects;
import com.ecep.contract.util.HibernateProxyUtils;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.util.Objects;
@Getter
@Setter
@Entity
@Table(name = "CONTRACT_EXTEND_VENDOR_INFO", schema = "supplier_ms")
@ToString
public class ExtendVendorInfo implements IdentityEntity {
public class ExtendVendorInfo implements IdentityEntity, Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)

View File

@@ -3,11 +3,13 @@ package com.ecep.contract.model;
import jakarta.persistence.Embeddable;
import lombok.Data;
import java.io.Serializable;
import java.time.MonthDay;
@Embeddable
@Data
public class HistoryPrice {
public class HistoryPrice implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 税率1% =1100% =100
*/
@@ -22,7 +24,6 @@ public class HistoryPrice {
private double postTaxPrice;
/**
* 12-31, 字符串方式存储
* {@link com.ecep.contract.manager.ds.MonthDayConverter}
*/
private MonthDay monthDay;
}

View File

@@ -1,5 +1,6 @@
package com.ecep.contract.model;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Objects;
@@ -21,7 +22,8 @@ import lombok.ToString;
@Entity
@Table(name = "HOLIDAY_TABLE")
@ToString
public class HolidayTable {
public class HolidayTable implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID", nullable = false)
@JdbcTypeCode(SqlTypes.DATE)

View File

@@ -1,5 +1,6 @@
package com.ecep.contract.model;
import java.io.Serializable;
import java.time.Year;
import java.util.Objects;
@@ -26,7 +27,8 @@ import lombok.ToString;
@ToString
@Entity
@Table(name = "INVENTORY_HISTORY", schema = "supplier_ms")
public class InventoryHistoryPrice implements IdentityEntity {
public class InventoryHistoryPrice implements IdentityEntity, Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)

View File

@@ -29,7 +29,7 @@ import lombok.ToString;
@Entity
@Table(name = "PROJECT_FILE")
@ToString
public class ProjectFile implements IdentityEntity, ProjectBasedEntity, Serializable {
public class ProjectFile implements IdentityEntity, ProjectBasedEntity, java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id

View File

@@ -1,5 +1,6 @@
package com.ecep.contract.model;
import java.io.Serializable;
import java.util.Objects;
import com.ecep.contract.ProjectFileType;
@@ -16,7 +17,8 @@ import lombok.ToString;
@Entity
@Table(name = "PROJECT_FILE_TYPE_LOCAL")
@ToString
public class ProjectFileTypeLocal extends BaseEnumEntity<ProjectFileType> {
public class ProjectFileTypeLocal extends BaseEnumEntity<ProjectFileType> implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Override
public final boolean equals(Object object) {
if (this == object) {

View File

@@ -32,7 +32,8 @@ import lombok.ToString;
@Entity
@Table(name = "PROJECT_FUND_PLAN")
@ToString
public class ProjectFundPlan implements IdentityEntity, ProjectBasedEntity {
public class ProjectFundPlan implements IdentityEntity, ProjectBasedEntity, java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)

View File

@@ -30,7 +30,8 @@ import lombok.ToString;
@Entity
@Table(name = "PROJECT_QUOTATION")
@ToString
public class ProjectQuotation implements IdentityEntity, ProjectBasedEntity {
public class ProjectQuotation implements IdentityEntity, ProjectBasedEntity, java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)

View File

@@ -1,5 +1,6 @@
package com.ecep.contract.model;
import java.io.Serializable;
import java.util.Objects;
import com.ecep.contract.util.HibernateProxyUtils;
@@ -20,7 +21,8 @@ import lombok.Setter;
@Setter
@Entity
@Table(name = "PROJECT_SALE_TYPE")
public class ProjectSaleType implements IdentityEntity, NamedEntity, BasedEntity {
public class ProjectSaleType implements IdentityEntity, NamedEntity, BasedEntity, Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)

View File

@@ -27,7 +27,8 @@ import lombok.ToString;
@Setter
@Entity
@Table(name = "PROJECT_SALE_TYPE_REQ_FILE_TYPE")
public class ProjectSaleTypeRequireFileType implements IdentityEntity, BasedEntity {
public class ProjectSaleTypeRequireFileType implements IdentityEntity, BasedEntity, java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)

View File

@@ -21,7 +21,7 @@ import lombok.Setter;
@Setter
@Entity
@Table(name = "PROJECT_TYPE")
public class ProjectType implements IdentityEntity, NamedEntity, BasedEntity, Serializable {
public class ProjectType implements IdentityEntity, NamedEntity, BasedEntity, java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID", nullable = false)

View File

@@ -27,7 +27,8 @@ import lombok.ToString;
@Entity
@Table(name = "PURCHASE_BILL_VOUCHER", schema = "supplier_ms")
@ToString
public class PurchaseBillVoucher implements IdentityEntity, BasedEntity {
public class PurchaseBillVoucher implements IdentityEntity, BasedEntity, java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)

View File

@@ -26,7 +26,8 @@ import lombok.ToString;
@Entity
@Table(name = "PURCHASE_BILL_VOUCHER_ITEM", schema = "supplier_ms")
@ToString
public class PurchaseBillVoucherItem implements IdentityEntity, BasedEntity {
public class PurchaseBillVoucherItem implements IdentityEntity, BasedEntity, java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)

View File

@@ -27,7 +27,8 @@ import lombok.ToString;
@Entity
@Table(name = "PURCHASE_ORDER", schema = "supplier_ms")
@ToString
public class PurchaseOrder implements IdentityEntity, BasedEntity, ContractBasedEntity {
public class PurchaseOrder implements IdentityEntity, BasedEntity, ContractBasedEntity, java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)

View File

@@ -27,7 +27,8 @@ import lombok.ToString;
@Entity
@Table(name = "PURCHASE_ORDER_ITEM", schema = "supplier_ms")
@ToString
public class PurchaseOrderItem implements IdentityEntity, BasedEntity {
public class PurchaseOrderItem implements IdentityEntity, BasedEntity, java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)

View File

@@ -27,7 +27,8 @@ import lombok.ToString;
@Entity
@Table(name = "PURCHASE_RECEIPT", schema = "supplier_ms")
@ToString
public class PurchaseReceipt implements IdentityEntity, BasedEntity {
public class PurchaseReceipt implements IdentityEntity, BasedEntity, java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)

View File

@@ -27,7 +27,8 @@ import lombok.ToString;
@Entity
@Table(name = "PURCHASE_SETTLE_VOUCHER", schema = "supplier_ms")
@ToString
public class PurchaseSettlementVoucher implements IdentityEntity, BasedEntity {
public class PurchaseSettlementVoucher implements IdentityEntity, BasedEntity, java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)

View File

@@ -26,7 +26,8 @@ import lombok.ToString;
@Entity
@Table(name = "PURCHASE_SETTLE_VOUCHER_ITEM", schema = "supplier_ms")
@ToString
public class PurchaseSettlementVoucherItem implements IdentityEntity, BasedEntity {
public class PurchaseSettlementVoucherItem implements IdentityEntity, BasedEntity, java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)

View File

@@ -27,7 +27,8 @@ import lombok.ToString;
@Entity
@Table(name = "SALES_BILL_VOUCHER", schema = "supplier_ms")
@ToString
public class SalesBillVoucher implements IdentityEntity, BasedEntity {
public class SalesBillVoucher implements IdentityEntity, BasedEntity, java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)

View File

@@ -26,7 +26,8 @@ import lombok.ToString;
@Entity
@Table(name = "SALES_BILL_VOUCHER_ITEM", schema = "supplier_ms")
@ToString
public class SalesBillVoucherItem implements IdentityEntity, BasedEntity {
public class SalesBillVoucherItem implements IdentityEntity, BasedEntity, java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)

View File

@@ -1,5 +1,6 @@
package com.ecep.contract.model;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Objects;
@@ -27,7 +28,8 @@ import lombok.ToString;
@Entity
@Table(name = "CONTRACT_SALES_ORDER", schema = "supplier_ms")
@ToString
public class SalesOrder implements IdentityEntity, BasedEntity, ContractBasedEntity {
public class SalesOrder implements IdentityEntity, BasedEntity, ContractBasedEntity, Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)

View File

@@ -1,4 +1,44 @@
package com.ecep.contract.model;
public class SalesOrderInvoice {
import com.ecep.contract.util.HibernateProxyUtils;
import jakarta.persistence.*;
import lombok.*;
import org.hibernate.proxy.HibernateProxy;
import java.io.Serializable;
import java.util.Objects;
/**
* 销售订单发票
*/
@Getter
@Setter
@RequiredArgsConstructor
@Entity
@Table(name = "SALES_ORDER_INVOICE", schema = "supplier_ms")
@ToString
public class SalesOrderInvoice implements IdentityEntity, Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)
private Integer id;
@Override
public final boolean equals(Object o) {
if (this == o) return true;
if (o == null) return false;
if (HibernateProxyUtils.isNotEffectiveClassEquals(o, this)) {
return false;
}
SalesOrderInvoice that = (SalesOrderInvoice) o;
return getId() != null && Objects.equals(getId(), that.getId());
}
@Override
public final int hashCode() {
return HibernateProxyUtils.hashCode(this);
}
}

View File

@@ -1,5 +1,6 @@
package com.ecep.contract.model;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Objects;
@@ -27,7 +28,8 @@ import lombok.ToString;
@Entity
@Table(name = "CONTRACT_SALES_ORDER_ITEM", schema = "supplier_ms")
@ToString
public class SalesOrderItem implements IdentityEntity, BasedEntity {
public class SalesOrderItem implements IdentityEntity, BasedEntity, Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)

View File

@@ -1,19 +1,14 @@
package com.ecep.contract.model;
import java.util.Objects;
import com.ecep.contract.util.HibernateProxyUtils;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.util.Objects;
/**
* 采购合同类型
*/
@@ -22,7 +17,8 @@ import lombok.ToString;
@Entity
@Table(name = "VENDOR_GROUP", schema = "supplier_ms")
@ToString
public class VendorGroup implements IdentityEntity, NamedEntity, BasedEntity {
public class VendorGroup implements IdentityEntity, NamedEntity, BasedEntity, Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID", nullable = false)

View File

@@ -1,5 +1,6 @@
package com.ecep.contract.model;
import java.io.Serializable;
import java.util.Objects;
import com.ecep.contract.ContractFileType;
@@ -27,7 +28,8 @@ import lombok.ToString;
@Setter
@Entity
@Table(name = "VENDOR_GROUP_REQ_FILE_TYPE")
public class VendorGroupRequireFileType implements IdentityEntity, BasedEntity {
public class VendorGroupRequireFileType implements IdentityEntity, BasedEntity, Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)

View File

@@ -1,5 +1,6 @@
package com.ecep.contract.model;
import java.io.Serializable;
import java.util.Objects;
import com.ecep.contract.VendorType;
@@ -19,7 +20,8 @@ import lombok.ToString;
@Entity
@Table(name = "VENDOR_TYPE_LOCAL")
@ToString(callSuper = true)
public class VendorTypeLocal extends BaseEnumEntity<VendorType> {
public class VendorTypeLocal extends BaseEnumEntity<VendorType> implements Serializable {
private static final long serialVersionUID = 1L;
@Override
public final boolean equals(Object object) {

View File

@@ -3,12 +3,15 @@ package com.ecep.contract.model;
import jakarta.persistence.Embeddable;
import lombok.Data;
import java.io.Serializable;
/**
* 体积尺寸
*/
@Embeddable
@Data
public class VolumeSize {
public class VolumeSize implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 体积
*/

View File

@@ -1,12 +1,13 @@
package com.ecep.contract.msg;
import com.ecep.contract.constant.WebSocketConstant;
import lombok.Data;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import lombok.Data;
@Data
public class SimpleMessage {
@@ -16,6 +17,9 @@ public class SimpleMessage {
private String method;
private Object data;
private List<String> parameterTypes;
/**
* @see WebSocketConstant#ARGUMENTS_FIELD_NAME
*/
private List<Object> arguments;
public void setArguments(Object... arguments) {

View File

@@ -2,6 +2,8 @@ package com.ecep.contract.util;
import org.hibernate.proxy.HibernateProxy;
import java.util.Objects;
public class HibernateProxyUtils {
private static boolean useProxy = true;
@@ -19,14 +21,12 @@ public class HibernateProxyUtils {
Class<?> thisEffectiveClass = that instanceof HibernateProxy
? ((HibernateProxy) that).getHibernateLazyInitializer().getPersistentClass()
: that.getClass();
if (thisEffectiveClass != oEffectiveClass)
return false;
return true;
return thisEffectiveClass != oEffectiveClass;
}
public static int hashCode(Object that) {
if (!useProxy) {
return that.hashCode();
return that.getClass().hashCode();
}
return that instanceof HibernateProxy
? ((HibernateProxy) that).getHibernateLazyInitializer().getPersistentClass().hashCode()