diff --git a/client/pom.xml b/client/pom.xml
index b2c09d1..8785e61 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -6,12 +6,12 @@
com.ecep.contract
Contract-Manager
- 0.0.49-SNAPSHOT
+ 0.0.53-SNAPSHOT
com.ecep.contract
client
- 0.0.49-SNAPSHOT
+ 0.0.53-SNAPSHOT
${java.version}
@@ -22,7 +22,7 @@
com.ecep.contract
common
- 0.0.49-SNAPSHOT
+ 0.0.53-SNAPSHOT
@@ -78,6 +78,29 @@
2
+
+ org.codehaus.mojo
+ versions-maven-plugin
+ 2.16.2
+
+
+ true
+ increment-version
+ install
+
+ set
+
+
+ false
+ true
+
+ true
+ 3
+
+
+
+
+
diff --git a/common/pom.xml b/common/pom.xml
index e11a1da..ba67d1e 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -6,12 +6,12 @@
com.ecep.contract
Contract-Manager
- 0.0.49-SNAPSHOT
+ 0.0.53-SNAPSHOT
com.ecep.contract
common
- 0.0.49-SNAPSHOT
+ 0.0.53-SNAPSHOT
${java.version}
diff --git a/common/src/main/java/com/ecep/contract/model/Employee.java b/common/src/main/java/com/ecep/contract/model/Employee.java
index 121fb89..27cd84e 100644
--- a/common/src/main/java/com/ecep/contract/model/Employee.java
+++ b/common/src/main/java/com/ecep/contract/model/Employee.java
@@ -1,15 +1,29 @@
package com.ecep.contract.model;
-import jakarta.persistence.*;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
-import org.hibernate.proxy.HibernateProxy;
-
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Objects;
+import org.hibernate.proxy.HibernateProxy;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.JoinTable;
+import jakarta.persistence.ManyToMany;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Table;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
@Getter
@Setter
@jakarta.persistence.Entity
@@ -33,6 +47,7 @@ public class Employee implements BasedEntity, IdentityEntity, NamedEntity, Seria
@JoinColumn(name = "DEPARTMENT_ID")
@ManyToOne(fetch = FetchType.LAZY)
@ToString.Exclude
+ @JsonIgnoreProperties({ "leader" })
private Department department;
/**
@@ -87,6 +102,8 @@ public class Employee implements BasedEntity, IdentityEntity, NamedEntity, Seria
@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
@JoinTable(name = "EMPLOYEE_ROLES", joinColumns = @JoinColumn(name = "EMPLOYEE_ID"), inverseJoinColumns = @JoinColumn(name = "ROLE_ID"))
+ @ToString.Exclude
+ @JsonIgnore
private java.util.List roles = new java.util.ArrayList<>();
@Override
diff --git a/common/src/main/java/com/ecep/contract/model/EmployeeRole.java b/common/src/main/java/com/ecep/contract/model/EmployeeRole.java
index d0b07ee..e027e5e 100644
--- a/common/src/main/java/com/ecep/contract/model/EmployeeRole.java
+++ b/common/src/main/java/com/ecep/contract/model/EmployeeRole.java
@@ -6,55 +6,51 @@ import lombok.Setter;
import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
@Getter
@Setter
@jakarta.persistence.Entity
@Table(name = "EMPLOYEE_ROLE", schema = "supplier_ms")
public class EmployeeRole implements IdentityEntity, NamedEntity, Serializable {
- private static final long serialVersionUID = 1L;
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "ID", nullable = false)
- private Integer id;
+ private static final long serialVersionUID = 1L;
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "ID", nullable = false)
+ private Integer id;
- @Column(name = "CODE")
- private String code;
+ @Column(name = "CODE")
+ private String code;
- @Column(name = "NAME")
- private String name;
+ @Column(name = "NAME")
+ private String name;
- /**
- * 是否系统管理员
- */
- @Column(name = "SYS_ADMIN")
- private boolean systemAdministrator;
+ /**
+ * 是否系统管理员
+ */
+ @Column(name = "SYS_ADMIN")
+ private boolean systemAdministrator;
- /**
- * 是否管理层
- */
- @Column(name = "MANAGER")
- private boolean manager;
+ /**
+ * 是否管理层
+ */
+ @Column(name = "MANAGER")
+ private boolean manager;
- /**
- * 是否启用
- */
- @Column(name = "IS_ACTIVE")
- private boolean active = true;
+ /**
+ * 是否启用
+ */
+ @Column(name = "IS_ACTIVE")
+ private boolean active = true;
- @ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
- @JoinTable(
- name = "EMPLOYEE_ROLE_FUNCTIONS",
- joinColumns = @JoinColumn(name = "ROLE_ID"),
- inverseJoinColumns = @JoinColumn(name = "FUNC_ID")
- )
- private java.util.List functions = new java.util.ArrayList<>();
+ @ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
+ @JoinTable(name = "EMPLOYEE_ROLE_FUNCTIONS", joinColumns = @JoinColumn(name = "ROLE_ID"), inverseJoinColumns = @JoinColumn(name = "FUNC_ID"))
+ @JsonIgnore
+ private java.util.List functions = new java.util.ArrayList<>();
- @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
- @JoinTable(
- name = "EMPLOYEE_ROLES",
- joinColumns = @JoinColumn(name = "ROLE_ID"),
- inverseJoinColumns = @JoinColumn(name = "EMPLOYEE_ID")
- )
- private java.util.List employees = new java.util.ArrayList<>();
+ @ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
+ @JoinTable(name = "EMPLOYEE_ROLES", joinColumns = @JoinColumn(name = "ROLE_ID"), inverseJoinColumns = @JoinColumn(name = "EMPLOYEE_ID"))
+ @JsonIgnore
+ private java.util.List employees = new java.util.ArrayList<>();
}
diff --git a/pom.xml b/pom.xml
index c68b47d..657da93 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
com.ecep.contract
Contract-Manager
- 0.0.49-SNAPSHOT
+ 0.0.53-SNAPSHOT
pom
server
@@ -149,29 +149,6 @@
-
- org.codehaus.mojo
- versions-maven-plugin
- 2.16.2
-
-
- true
- increment-version
- install
-
- set
-
-
- false
- true
-
- true
- 3
-
-
-
-
-
diff --git a/server/pom.xml b/server/pom.xml
index 69a380f..7ad33a6 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -6,12 +6,12 @@
com.ecep.contract
Contract-Manager
- 0.0.49-SNAPSHOT
+ 0.0.53-SNAPSHOT
com.ecep.contract
server
- 0.0.49-SNAPSHOT
+ 0.0.53-SNAPSHOT
${java.version}
@@ -22,7 +22,7 @@
com.ecep.contract
common
- 0.0.49-SNAPSHOT
+ 0.0.53-SNAPSHOT
org.springframework.boot
@@ -48,16 +48,16 @@
spring-boot-starter-security
- org.springframework.boot
- spring-boot-starter-data-redis
-
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
org.springframework.boot
spring-boot-starter-mail
-
-
+
+
com.zaxxer
HikariCP
@@ -69,11 +69,11 @@
org.springframework.data
spring-data-jpa
-
-
-
-
-
+
+
+
+
+
com.mysql
@@ -89,6 +89,27 @@
+
+ org.codehaus.mojo
+ versions-maven-plugin
+ 2.16.2
+
+
+ true
+ increment-version
+ install
+
+ set
+
+
+ false
+ true
+ true
+ 3
+
+
+
+
org.springframework.boot
spring-boot-maven-plugin
@@ -103,5 +124,4 @@
-
\ No newline at end of file
diff --git a/server/src/main/java/com/ecep/contract/SpringApp.java b/server/src/main/java/com/ecep/contract/SpringApp.java
index 46b4465..bbb1b8a 100644
--- a/server/src/main/java/com/ecep/contract/SpringApp.java
+++ b/server/src/main/java/com/ecep/contract/SpringApp.java
@@ -1,10 +1,6 @@
package com.ecep.contract;
import java.time.Duration;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.format.DateTimeFormatter;
import java.util.Locale;
import java.util.Properties;
@@ -23,27 +19,20 @@ import org.springframework.boot.context.metrics.buffering.StartupTimeline;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
-import org.springframework.context.annotation.Bean;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.PropertiesPropertySource;
import org.springframework.core.env.PropertySource;
import org.springframework.core.metrics.StartupStep;
+import org.springframework.data.web.config.EnableSpringDataWebSupport;
+import org.springframework.data.web.config.EnableSpringDataWebSupport.PageSerializationMode;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import com.ecep.contract.cloud.CloudRepositoriesConfig;
import com.ecep.contract.ds.DsRepositoriesConfig;
import com.ecep.contract.util.TaskMonitorCenter;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
@SpringBootApplication(exclude = {
org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration.class,
@@ -52,6 +41,8 @@ import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
@EnableScheduling
@EnableAsync
@EnableCaching
+
+@EnableSpringDataWebSupport(pageSerializationMode = PageSerializationMode.VIA_DTO)
public class SpringApp {
private final TaskMonitorCenter taskMonitorCenter;
@@ -230,24 +221,6 @@ public class SpringApp {
}
}
- // Redis缓存配置已移至application.properties文件
- // Spring Boot会根据配置自动创建RedisCacheManager
-
- @Bean
- public ObjectMapper objectMapper() {
- ObjectMapper objectMapper = new ObjectMapper();
- JavaTimeModule javaTimeModule = new JavaTimeModule();
- javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ISO_LOCAL_DATE));
- javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(
- DateTimeFormatter.ofPattern(MyDateTimeUtils.DEFAULT_DATETIME_FORMAT_PATTERN)));
- javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
- javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ISO_LOCAL_DATE));
- javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(
- DateTimeFormatter.ofPattern(MyDateTimeUtils.DEFAULT_DATETIME_FORMAT_PATTERN)));
- javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ISO_LOCAL_TIME));
- objectMapper.registerModule(javaTimeModule);
- return objectMapper;
- }
public static TaskMonitorCenter getTaskMonitorCenter() {
return getBean(TaskMonitorCenter.class);
diff --git a/server/src/main/java/com/ecep/contract/cloud/AbstractCtx.java b/server/src/main/java/com/ecep/contract/cloud/AbstractCtx.java
index ffff8ad..43dad0b 100644
--- a/server/src/main/java/com/ecep/contract/cloud/AbstractCtx.java
+++ b/server/src/main/java/com/ecep/contract/cloud/AbstractCtx.java
@@ -38,8 +38,8 @@ public class AbstractCtx {
return confService;
}
-
- public boolean updateText(Supplier getter, Consumer setter, String text, MessageHolder holder, String topic) {
+ public boolean updateText(Supplier getter, Consumer setter, String text, MessageHolder holder,
+ String topic) {
if (!Objects.equals(getter.get(), text)) {
setter.accept(text);
holder.info(topic + "修改为: " + text);
@@ -48,7 +48,8 @@ public class AbstractCtx {
return false;
}
- public boolean updateAppendText(Supplier getter, Consumer setter, String text, MessageHolder holder, String topic) {
+ public boolean updateAppendText(Supplier getter, Consumer setter, String text, MessageHolder holder,
+ String topic) {
if (StringUtils.hasText(text)) {
String str = MyStringUtils.appendIfAbsent(getter.get(), text);
if (!Objects.equals(getter.get(), str)) {
@@ -60,19 +61,21 @@ public class AbstractCtx {
return false;
}
-
- public boolean updateLocalDate(Supplier getter, Consumer setter, java.sql.Date date, MessageHolder holder, String topic) {
+ public boolean updateLocalDate(Supplier getter, Consumer setter, java.sql.Date date,
+ MessageHolder holder, String topic) {
if (date != null) {
return updateLocalDate(getter, setter, date.toLocalDate(), holder, topic);
}
return false;
}
- public boolean updateLocalDate(Supplier getter, Consumer setter, LocalDate date, MessageHolder holder, String topic) {
+ public boolean updateLocalDate(Supplier getter, Consumer setter, LocalDate date,
+ MessageHolder holder, String topic) {
return updateLocalDate(getter, setter, date, holder, topic, false);
}
- public boolean updateLocalDate(Supplier getter, Consumer setter, LocalDate date, MessageHolder holder, String topic, boolean allowNull) {
+ public boolean updateLocalDate(Supplier getter, Consumer setter, LocalDate date,
+ MessageHolder holder, String topic, boolean allowNull) {
if (date == null && !allowNull) {
return false;
}
@@ -84,7 +87,8 @@ public class AbstractCtx {
return false;
}
- public boolean updateLocalDate(Supplier getter, Consumer setter, String strDate, MessageHolder holder, String topic) {
+ public boolean updateLocalDate(Supplier getter, Consumer setter, String strDate,
+ MessageHolder holder, String topic) {
LocalDate date = null;
if (StringUtils.hasText(strDate)) {
try {
@@ -96,7 +100,8 @@ public class AbstractCtx {
return updateLocalDate(getter, setter, date, holder, topic);
}
- public boolean updateLocalDate(Supplier getter, Consumer setter, Timestamp timestamp, MessageHolder holder, String topic) {
+ public boolean updateLocalDate(Supplier getter, Consumer setter, Timestamp timestamp,
+ MessageHolder holder, String topic) {
LocalDate date = null;
if (timestamp != null) {
@@ -109,7 +114,8 @@ public class AbstractCtx {
return updateLocalDate(getter, setter, date, holder, topic);
}
- public boolean updateLocalDateTime(Supplier getter, Consumer setter, Timestamp timestamp, MessageHolder holder, String topic) {
+ public boolean updateLocalDateTime(Supplier getter, Consumer setter,
+ Timestamp timestamp, MessageHolder holder, String topic) {
LocalDateTime dateTime = null;
if (timestamp != null) {
@@ -121,7 +127,11 @@ public class AbstractCtx {
holder.warn("解析日期" + timestamp + " 异常:" + e.getMessage());
}
}
+ return updateLocalDateTime(getter, setter, dateTime, holder, topic);
+ }
+ public boolean updateLocalDateTime(Supplier getter, Consumer setter,
+ LocalDateTime dateTime, MessageHolder holder, String topic) {
if (!Objects.equals(getter.get(), dateTime)) {
setter.accept(dateTime);
holder.info(topic + "修改为: " + dateTime);
@@ -130,7 +140,8 @@ public class AbstractCtx {
return false;
}
- public boolean updateInstant(Supplier getter, Consumer setter, Instant instant, MessageHolder holder, String topic) {
+ public boolean updateInstant(Supplier getter, Consumer setter, Instant instant,
+ MessageHolder holder, String topic) {
if (!Objects.equals(getter.get(), instant)) {
setter.accept(instant);
holder.info(topic + "修改为: " + instant);
@@ -139,13 +150,14 @@ public class AbstractCtx {
return false;
}
-
- public boolean updateNumber(Supplier getter, Consumer setter, BigDecimal value, MessageHolder holder, String topic) {
+ public boolean updateNumber(Supplier getter, Consumer setter, BigDecimal value,
+ MessageHolder holder, String topic) {
double val = value.doubleValue();
return updateNumber(getter, setter, val, holder, topic);
}
- public boolean updateNumber(Supplier getter, Consumer setter, double value, MessageHolder holder, String topic) {
+ public boolean updateNumber(Supplier getter, Consumer setter, double value, MessageHolder holder,
+ String topic) {
if (getter.get() == null || !NumberUtils.equals(getter.get(), value)) {
setter.accept(value);
holder.info(topic + "修改为: " + value);
@@ -154,7 +166,8 @@ public class AbstractCtx {
return false;
}
- public boolean updateNumber(Supplier getter, Consumer setter, float value, MessageHolder holder, String topic) {
+ public boolean updateNumber(Supplier getter, Consumer setter, float value, MessageHolder holder,
+ String topic) {
if (getter.get() == null || !NumberUtils.equals(getter.get(), value)) {
setter.accept(value);
holder.info(topic + "修改为: " + value);
@@ -163,8 +176,8 @@ public class AbstractCtx {
return false;
}
-
- public boolean updateNumber(Supplier getter, Consumer setter, Integer value, MessageHolder holder, String topic) {
+ public boolean updateNumber(Supplier getter, Consumer setter, Integer value, MessageHolder holder,
+ String topic) {
if (getter.get() == null || !NumberUtils.equals(getter.get(), value)) {
setter.accept(value);
holder.info(topic + "修改为: " + value);
diff --git a/server/src/main/java/com/ecep/contract/cloud/rk/CloudRkService.java b/server/src/main/java/com/ecep/contract/cloud/rk/CloudRkService.java
index b2fa62d..da5ef4c 100644
--- a/server/src/main/java/com/ecep/contract/cloud/rk/CloudRkService.java
+++ b/server/src/main/java/com/ecep/contract/cloud/rk/CloudRkService.java
@@ -5,13 +5,13 @@ import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.time.Instant;
+import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
-import com.ecep.contract.util.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +36,7 @@ import com.ecep.contract.ds.other.service.SysConfService;
import com.ecep.contract.model.CloudRk;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyBlackReason;
+import com.ecep.contract.util.FileUtils;
import com.ecep.contract.util.HttpJsonUtils;
import com.ecep.contract.util.MyStringUtils;
import com.fasterxml.jackson.annotation.JsonAlias;
@@ -200,7 +201,7 @@ public class CloudRkService implements IEntityService {
if (!reasonList.isEmpty()) {
companyBlackReasonRepository.saveAll(reasonList);
}
- cloudRk.setCloudBlackListUpdated(Instant.now());
+ cloudRk.setCloudBlackListUpdated(LocalDateTime.now());
}
private void toCompanyBlackReasonList(
@@ -234,12 +235,12 @@ public class CloudRkService implements IEntityService {
*/
public boolean checkBlackListUpdateElapse(
Company company, CloudRk cloudRk, BlackListUpdateContext context) {
- Instant start = cloudRk.getCloudBlackListUpdated();
+ LocalDateTime start = cloudRk.getCloudBlackListUpdated();
if (start == null) {
return true;
}
- Instant elapse = start.plusSeconds(context.getElapse());
- return elapse.isBefore(Instant.now());
+ LocalDateTime elapse = start.plusSeconds(context.getElapse());
+ return elapse.isBefore(LocalDateTime.now());
}
public CloudRk getOrCreateCloudRk(CloudInfo info) {
diff --git a/server/src/main/java/com/ecep/contract/cloud/rk/CloudRkSyncTask.java b/server/src/main/java/com/ecep/contract/cloud/rk/CloudRkSyncTask.java
index 7866a48..c2abcc7 100644
--- a/server/src/main/java/com/ecep/contract/cloud/rk/CloudRkSyncTask.java
+++ b/server/src/main/java/com/ecep/contract/cloud/rk/CloudRkSyncTask.java
@@ -1,7 +1,7 @@
package com.ecep.contract.cloud.rk;
-import java.time.Instant;
import java.time.LocalDate;
+import java.time.LocalDateTime;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
@@ -96,7 +96,7 @@ public class CloudRkSyncTask extends Tasker