diff --git a/.trae/rules/project_rules.md b/.trae/rules/project_rules.md
index efcec4a..4a81c3e 100644
--- a/.trae/rules/project_rules.md
+++ b/.trae/rules/project_rules.md
@@ -1,12 +1,22 @@
+# server 模块
Java 21
Spring Boot 3.3.7
Spring Data JPA 3.3.7
-JavaFX 21
-ControlsFX 11.1.2
MySQL 8.0.33
Lombok 1.18.32
POI 5.2.5
PDFBox 3.0.1
+Redis
+
+# client 模块
+Java 21
+JavaFX 21
+ControlsFX 11.1.2
+Lombok 1.18.32
+caffeine 3.1.8
+.fxml 界面UI, /client/src/main/resources/ui/ 目录下
+websocket 与 server 模块通信
+
ignore:
- .idea
diff --git a/client/pom.xml b/client/pom.xml
index e5acc9b..de2a1e4 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -6,12 +6,12 @@
com.ecep.contract
Contract-Manager
- 0.0.80-SNAPSHOT
+ 0.0.84-SNAPSHOT
com.ecep.contract
client
- 0.0.80-SNAPSHOT
+ 0.0.84-SNAPSHOT
${java.version}
@@ -22,7 +22,7 @@
com.ecep.contract
common
- 0.0.80-SNAPSHOT
+ 0.0.84-SNAPSHOT
org.springframework.boot
@@ -73,12 +73,6 @@
okhttp
4.12.0
-
-
- com.squareup.okhttp3
- okhttp-ws
- 3.4.2
-
diff --git a/client/src/main/java/com/ecep/contract/Desktop.java b/client/src/main/java/com/ecep/contract/Desktop.java
index 15ce1a5..b8c7ced 100644
--- a/client/src/main/java/com/ecep/contract/Desktop.java
+++ b/client/src/main/java/com/ecep/contract/Desktop.java
@@ -37,10 +37,12 @@ import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import lombok.Getter;
+import lombok.Setter;
import okhttp3.Cookie;
import okhttp3.CookieJar;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
+import okhttp3.WebSocket;
/**
* JavaFx 应用程序
@@ -74,7 +76,6 @@ public class Desktop extends Application {
@Getter
private OkHttpClient httpClient;
-
public void setActiveEmployeeId(int activeEmployeeId) {
activeEmployee.getId().set(activeEmployeeId);
}
@@ -174,7 +175,7 @@ public class Desktop extends Application {
Properties properties = new Properties();
File configFile = new File("config.properties");
if (configFile.exists()) {
- holder.debug("读取配置文件 " + configFile.getName() + "...");
+ holder.info("读取配置文件 " + configFile.getAbsolutePath() + "...");
try (FileInputStream input = new FileInputStream(configFile)) {
properties.load(input);
holder.info("配置文件读取成功.");
@@ -183,6 +184,8 @@ public class Desktop extends Application {
logger.error(e.getMessage(), e);
return;
}
+ } else {
+ logger.warn("配置文件{}不存在", configFile.getAbsolutePath());
}
runAsync(() -> {
diff --git a/client/src/main/java/com/ecep/contract/WebSocketService.java b/client/src/main/java/com/ecep/contract/WebSocketService.java
new file mode 100644
index 0000000..2bb6391
--- /dev/null
+++ b/client/src/main/java/com/ecep/contract/WebSocketService.java
@@ -0,0 +1,278 @@
+package com.ecep.contract;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.ecep.contract.msg.SimpleMessage;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import javafx.application.Platform;
+import javafx.beans.property.BooleanProperty;
+import javafx.beans.property.SimpleBooleanProperty;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.beans.property.StringProperty;
+import lombok.Getter;
+import lombok.Setter;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
+import okhttp3.WebSocket;
+import okhttp3.WebSocketListener;
+import okio.ByteString;
+
+/**
+ * WebSocket消息服务
+ * 提供向服务器端发送WebSocket消息的功能
+ */
+@Service
+public class WebSocketService {
+ private static final Logger logger = LoggerFactory.getLogger(WebSocketService.class);
+ @Getter
+ @Setter
+ private WebSocket webSocket;
+ @Autowired
+ private ObjectMapper objectMapper;
+ private static final int RECONNECT_DELAY_MS = 5000; // 重连延迟时间(毫秒)
+ private static final int HEARTBEAT_INTERVAL_MS = 30000; // 心跳间隔时间(毫秒)
+ private String webSocketUrl = "ws://localhost:8080/ws";
+ private boolean isActive = false; // 标记连接是否活跃
+ private ScheduledFuture> heartbeatTask; // 心跳任务
+ private ScheduledFuture> reconnectFuture; // 修改类型为CompletableFuture
+ private SimpleBooleanProperty online = new SimpleBooleanProperty(false);
+ private SimpleStringProperty message = new SimpleStringProperty("");
+
+ // 存储所有活跃的WebSocket会话
+ private final Map> callbacks = Collections.synchronizedMap(new HashMap<>());
+
+ WebSocketListener listener = new WebSocketListener() {
+ @Override
+ public void onOpen(WebSocket webSocket, Response response) {
+ Platform.runLater(() -> {
+ online.setValue(true);
+ message.setValue("已连接");
+ });
+ startHeartbeat(); // 启动心跳
+ }
+
+ @Override
+ public void onMessage(WebSocket webSocket, String text) {
+ // 处理收到的文本消息
+ logger.debug("收到WebSocket消息: {}", text);
+ // 这里可以根据需要处理从服务器接收的数据
+ if ("pong".equals(text)) {
+ // 收到pong响应,说明连接正常
+ logger.debug("收到心跳响应");
+ return;
+ }
+
+ try {
+ JsonNode node = objectMapper.readTree(text);
+ if (node.has("messageId")) {
+ String messageId = node.get("messageId").asText();
+ CompletableFuture future = callbacks.remove(messageId);
+ if (future != null) {
+ if (node.has("success")) {
+ if (!node.get("success").asBoolean()) {
+ future.completeExceptionally(
+ new RuntimeException("请求失败:" + node.get("message").asText()));
+ return;
+ }
+ }
+ // 使用具体类型后,这里不会再出现类型不匹配的错误
+ if (node.has("data")) {
+ future.complete(node.get("data"));
+ } else {
+ future.complete(node);
+ }
+ } else {
+ logger.error("未找到对应的回调future: {}", messageId);
+ }
+ }
+ } catch (Exception e) {
+ logger.error("处理WebSocket消息失败: {}", e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void onMessage(WebSocket webSocket, ByteString bytes) {
+ // 处理收到的二进制消息
+ logger.debug("收到二进制WebSocket消息,长度: " + bytes.size());
+ }
+
+ @Override
+ public void onClosing(WebSocket webSocket, int code, String reason) {
+ logger.debug("WebSocket连接正在关闭: 代码=" + code + ", 原因=" + reason);
+ stopHeartbeat(); // 停止心跳
+ }
+
+ @Override
+ public void onClosed(WebSocket webSocket, int code, String reason) {
+ logger.debug("WebSocket连接已关闭: 代码=" + code + ", 原因=" + reason);
+ stopHeartbeat(); // 停止心跳
+ // 处理重连逻辑
+ scheduleReconnect();
+ }
+
+ @Override
+ public void onFailure(WebSocket webSocket, Throwable t, Response response) {
+ logger.error("WebSocket连接失败: " + t.getMessage());
+ Platform.runLater(() -> {
+ online.setValue(false);
+ message.set("连接失败: " + t.getMessage());
+ });
+ stopHeartbeat(); // 停止心跳
+ // 处理重连逻辑
+ scheduleReconnect();
+ }
+ };
+
+ public void send(String string) {
+ if (webSocket != null && webSocket.send(string)) {
+ logger.debug("send message success:{}", string);
+ } else if (webSocket == null) {
+ logger.warn("Failed to send message: WebSocket is not initialized");
+ }
+ }
+
+ public CompletableFuture send(SimpleMessage msg) {
+ CompletableFuture future = new CompletableFuture<>();
+ try {
+ if (webSocket == null) {
+ throw new IllegalStateException("WebSocket is not initialized");
+ }
+
+ String json = objectMapper.writeValueAsString(msg);
+ if (webSocket.send(json)) {
+ logger.debug("send message success:{}", json);
+ callbacks.put(msg.getMessageId(), future);
+ } else {
+ future.completeExceptionally(new RuntimeException("Failed to send WebSocket message"));
+ }
+ } catch (Exception e) {
+ logger.error("Failed to send WebSocket message: {}", e.getMessage());
+ future.completeExceptionally(e);
+ }
+ return future;
+ }
+
+ public void initWebSocket() {
+ isActive = true;
+ OkHttpClient httpClient = Desktop.instance.getHttpClient();
+
+ try {
+ // 构建WebSocket请求,包含认证信息
+ Request request = new Request.Builder()
+ .url(webSocketUrl)
+ .build();
+ webSocket = httpClient.newWebSocket(request, listener);
+ } catch (Exception e) {
+ logger.error("建立WebSocket连接失败: " + e.getMessage());
+ Platform.runLater(() -> {
+ online.setValue(false);
+ message.set("连接失败: " + e.getMessage());
+ });
+ // 处理重连逻辑
+ scheduleReconnect();
+ }
+ }
+
+ /**
+ * 启动心跳任务,定期发送ping消息保持连接
+ */
+ private void startHeartbeat() {
+ // 先停止可能存在的心跳任务
+ stopHeartbeat();
+ ScheduledExecutorService executorService = Desktop.instance.getExecutorService();
+ heartbeatTask = executorService.scheduleAtFixedRate(this::heartbeat, RECONNECT_DELAY_MS, HEARTBEAT_INTERVAL_MS,
+ TimeUnit.MILLISECONDS);
+ }
+
+ void heartbeat() {
+ if (!isActive) {
+ return;
+ }
+
+ try {
+ if (webSocket != null) {
+ logger.debug("发送心跳 ping");
+ webSocket.send("ping");
+ }
+ } catch (Exception e) {
+ logger.error("发送心跳失败: {}", e.getMessage());
+ }
+ }
+
+ /**
+ * 停止心跳任务
+ */
+ private void stopHeartbeat() {
+ if (heartbeatTask != null && !heartbeatTask.isCancelled()) {
+ heartbeatTask.cancel(true);
+ heartbeatTask = null;
+ }
+ }
+
+ /**
+ * 安排重连任务
+ */
+ private void scheduleReconnect() {
+ if (!isActive) {
+ return; // 如果连接已被主动关闭,则不再重连
+ }
+
+ // 取消之前可能存在的重连任务
+ if (reconnectFuture != null && !reconnectFuture.isDone()) {
+ reconnectFuture.cancel(true);
+ }
+ // 创建新的重连任务s
+ logger.info("计划在 {} 毫秒后尝试重连WebSocket", RECONNECT_DELAY_MS);
+
+ reconnectFuture = Desktop.instance.getExecutorService().schedule(() -> {
+ if (isActive) {
+ logger.info("尝试重新连接WebSocket");
+ Platform.runLater(() -> {
+ online.setValue(false);
+ message.set("正在重新连接WebSocket...");
+ });
+ initWebSocket();
+ }
+ }, RECONNECT_DELAY_MS, TimeUnit.MILLISECONDS);
+
+ }
+
+ /**
+ * 关闭WebSocket连接
+ */
+ public void closeWebSocket() {
+ isActive = false;
+ stopHeartbeat();
+
+ if (reconnectFuture != null && !reconnectFuture.isDone()) {
+ reconnectFuture.cancel(false);
+ reconnectFuture = null;
+ }
+ if (webSocket != null) {
+ webSocket.close(1000, "主动关闭连接");
+ webSocket = null;
+ }
+ }
+
+ public StringProperty getMessageProperty() {
+ return message;
+ }
+
+ public BooleanProperty getOnlineProperty() {
+ return online;
+ }
+}
diff --git a/client/src/main/java/com/ecep/contract/controller/HomeWindowController.java b/client/src/main/java/com/ecep/contract/controller/HomeWindowController.java
index d8b5afa..1cbba53 100644
--- a/client/src/main/java/com/ecep/contract/controller/HomeWindowController.java
+++ b/client/src/main/java/com/ecep/contract/controller/HomeWindowController.java
@@ -1,11 +1,13 @@
package com.ecep.contract.controller;
+import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import org.controlsfx.control.TaskProgressView;
+import org.controlsfx.glyphfont.Glyph;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
@@ -16,6 +18,7 @@ import org.springframework.stereotype.Component;
import com.ecep.contract.Desktop;
import com.ecep.contract.DesktopUtils;
+import com.ecep.contract.WebSocketService;
import com.ecep.contract.controller.bank.BankManagerWindowController;
import com.ecep.contract.controller.company.CompanyManagerWindowController;
import com.ecep.contract.controller.contract.ContractManagerWindowController;
@@ -34,7 +37,6 @@ import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.FxmlUtils;
import com.ecep.contract.vm.CurrentEmployee;
-import javafx.application.Platform;
import javafx.concurrent.Task;
import javafx.event.ActionEvent;
import javafx.scene.Node;
@@ -47,12 +49,6 @@ import javafx.scene.layout.VBox;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.Response;
-import okhttp3.WebSocket;
-import okhttp3.WebSocketListener;
-import okio.ByteString;
@Lazy
@Scope("prototype")
@@ -75,11 +71,10 @@ public class HomeWindowController extends BaseController {
public Button openCustomManagerWindow;
public TaskProgressView> taskProgressView;
public Label taskMonitorLabel;
+ public Label webSocketMonitorLabel;
+ public Glyph webSocketMonitorIcon;
public Label employeeStatusLabel;
- private WebSocket webSocket;
- private String webSocketUrl = "ws://localhost:8080/ws";
-
public void initialize() {
openCompanyManagerWindow.setOnAction(event -> showInOwner(CompanyManagerWindowController.class));
openProjectManagerWindow.setOnAction(event -> showInOwner(ProjectManagerWindowController.class));
@@ -105,7 +100,15 @@ public class HomeWindowController extends BaseController {
employeeStatusLabel.textProperty().bind(Desktop.instance.getActiveEmployee().getName());
Desktop.instance.getTaskMonitorCenter().bindStatusLabel(taskMonitorLabel);
Desktop.instance.getActiveEmployee().initialize();
- initWebSocket();
+
+ WebSocketService webSocketService = getBean(WebSocketService.class);
+ webSocketMonitorIcon.iconProperty()
+ .bind(webSocketService.getOnlineProperty().map(b -> b ? "CHAIN" : "CHAIN_BROKEN"));
+ webSocketMonitorLabel.textProperty().bind(webSocketService.getMessageProperty());
+ webSocketMonitorLabel.setOnMouseClicked(event -> {
+ webSocketService.send("webSocketUrl - " + LocalDateTime.now().toString());
+ });
+ webSocketService.initWebSocket();
}
@EventListener
@@ -140,14 +143,6 @@ public class HomeWindowController extends BaseController {
// scheduledExecutorService.shutdownNow();
}
- @Override
- public void onHidden(WindowEvent windowEvent) {
- System.out.println("windowEvent = " + windowEvent);
- super.onHidden(windowEvent);
-
- // Platform.exit();
- }
-
/**
* 打开 配置 窗口
*/
@@ -221,63 +216,11 @@ public class HomeWindowController extends BaseController {
showInOwner(TaskMonitorViewController.class);
}
- private void initWebSocket() {
-
- OkHttpClient httpClient = Desktop.instance.getHttpClient();
-
- try {
- // 构建WebSocket请求,包含认证信息
- Request request = new Request.Builder()
- .url(webSocketUrl)
- .build();
-
- webSocket = httpClient.newWebSocket(request, new WebSocketListener() {
- @Override
- public void onOpen(WebSocket webSocket, Response response) {
- Platform.runLater(() -> {
- setStatus("WebSocket连接已建立");
- // 登录成功后的处理
- System.out.println("WebSocket连接已建立");
- });
- }
-
- @Override
- public void onMessage(WebSocket webSocket, String text) {
- // 处理收到的文本消息
- logger.debug("收到WebSocket消息: " + text);
- // 这里可以根据需要处理从服务器接收的数据
- }
-
- @Override
- public void onMessage(WebSocket webSocket, ByteString bytes) {
- // 处理收到的二进制消息
- logger.debug("收到二进制WebSocket消息,长度: " + bytes.size());
- }
-
- @Override
- public void onClosing(WebSocket webSocket, int code, String reason) {
- logger.debug("WebSocket连接正在关闭: 代码=" + code + ", 原因=" + reason);
- }
-
- @Override
- public void onClosed(WebSocket webSocket, int code, String reason) {
- logger.debug("WebSocket连接已关闭: 代码=" + code + ", 原因=" + reason);
- // 可以在这里处理重连逻辑
- }
-
- @Override
- public void onFailure(WebSocket webSocket, Throwable t, Response response) {
- logger.error("WebSocket连接失败: " + t.getMessage());
- Platform.runLater(() -> {
- setStatus("WebSocket连接失败: " + t.getMessage());
- });
- }
- });
- } catch (Exception e) {
- logger.error("建立WebSocket连接失败: " + e.getMessage());
- Platform.runLater(() -> {
- setStatus("建立WebSocket连接失败: " + e.getMessage());
- });
- }
+ @Override
+ public void onHidden(WindowEvent windowEvent) {
+ System.out.println("windowEvent = " + windowEvent);
+ WebSocketService webSocketService = getBean(WebSocketService.class);
+ webSocketService.closeWebSocket(); // 在窗口隐藏时关闭WebSocket连接
+ super.onHidden(windowEvent);
}
}
diff --git a/client/src/main/java/com/ecep/contract/controller/OkHttpLoginController.java b/client/src/main/java/com/ecep/contract/controller/OkHttpLoginController.java
index 8121108..a997a23 100644
--- a/client/src/main/java/com/ecep/contract/controller/OkHttpLoginController.java
+++ b/client/src/main/java/com/ecep/contract/controller/OkHttpLoginController.java
@@ -254,6 +254,11 @@ public class OkHttpLoginController implements MessageHolder {
CompletableFuture future = new CompletableFuture<>();
try {
+ while (!SpringApp.isRunning()) {
+ holder.info("环境准备中,请稍后...");
+ Thread.sleep(1000);
+ }
+
ObjectMapper objectMapper = SpringApp.getBean(ObjectMapper.class);
ObjectNode objectNode = objectMapper.createObjectNode();
objectNode.put("username", username);
@@ -367,7 +372,6 @@ public class OkHttpLoginController implements MessageHolder {
});
}
-
// WebSocket消息发送方法
public void sendMessage(String message) {
if (webSocket != null) {
diff --git a/client/src/main/java/com/ecep/contract/controller/YongYouU8ManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/YongYouU8ManagerSkin.java
index 17e6778..d6f25e4 100644
--- a/client/src/main/java/com/ecep/contract/controller/YongYouU8ManagerSkin.java
+++ b/client/src/main/java/com/ecep/contract/controller/YongYouU8ManagerSkin.java
@@ -28,27 +28,17 @@ public class YongYouU8ManagerSkin
extends
AbstEntityManagerSkin
implements ManagerSkin {
- @Setter
- private YongYouU8Service u8Service;
- @Setter
- private CompanyService companyService;
public YongYouU8ManagerSkin(YongYouU8ManagerWindowController controller) {
super(controller);
}
YongYouU8Service getU8Service() {
- if (u8Service == null) {
- u8Service = SpringApp.getBean(YongYouU8Service.class);
- }
- return u8Service;
+ return getBean(YongYouU8Service.class);
}
CompanyService getCompanyService() {
- if (companyService == null) {
- companyService = SpringApp.getBean(CompanyService.class);
- }
- return companyService;
+ return getBean(CompanyService.class);
}
@Override
diff --git a/client/src/main/java/com/ecep/contract/service/BankService.java b/client/src/main/java/com/ecep/contract/service/BankService.java
index 4ce2b94..83e671e 100644
--- a/client/src/main/java/com/ecep/contract/service/BankService.java
+++ b/client/src/main/java/com/ecep/contract/service/BankService.java
@@ -2,16 +2,15 @@ package com.ecep.contract.service;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.Bank;
import com.ecep.contract.vm.BankViewModel;
-public class BankService implements ViewModelService {
+@Service
+public class BankService extends QueryService {
public Bank findByName(String name) {
return null;
}
- public List search(String searchText) {
- return null;
- }
-
}
diff --git a/client/src/main/java/com/ecep/contract/service/CloudRkService.java b/client/src/main/java/com/ecep/contract/service/CloudRkService.java
index 8b69a58..fb0e23e 100644
--- a/client/src/main/java/com/ecep/contract/service/CloudRkService.java
+++ b/client/src/main/java/com/ecep/contract/service/CloudRkService.java
@@ -4,6 +4,7 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.controlsfx.control.TaskProgressView;
+import org.springframework.stereotype.Service;
import com.ecep.contract.Desktop;
import com.ecep.contract.MessageHolder;
@@ -17,7 +18,8 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import javafx.concurrent.Task;
import lombok.Data;
-public class CloudRkService implements ViewModelService {
+@Service
+public class CloudRkService extends QueryService {
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public static class EntInfo {
@@ -27,6 +29,7 @@ public class CloudRkService implements ViewModelService {
+@Service
+public class CloudTycService extends QueryService {
/**
* 天眼查报告,文件名中必须包含 天眼查 字样
*
@@ -58,36 +56,6 @@ public class CloudTycService implements ViewModelService findAll() {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("Unimplemented method 'findAll'");
- }
-
- @Override
- public Page findAll(Map params, Pageable pageable) {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("Unimplemented method 'findAll'");
- }
-
public CloudTyc getOrCreateCloudTyc(Company company) {
throw new UnsupportedOperationException("Unimplemented method 'getOrCreateCloudTyc'");
}
diff --git a/client/src/main/java/com/ecep/contract/service/CompanyBankAccountService.java b/client/src/main/java/com/ecep/contract/service/CompanyBankAccountService.java
index 419cdae..6b899f4 100644
--- a/client/src/main/java/com/ecep/contract/service/CompanyBankAccountService.java
+++ b/client/src/main/java/com/ecep/contract/service/CompanyBankAccountService.java
@@ -2,11 +2,14 @@ package com.ecep.contract.service;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyBankAccount;
import com.ecep.contract.vm.CompanyBankAccountViewModel;
-public class CompanyBankAccountService implements ViewModelService {
+@Service
+public class CompanyBankAccountService extends QueryService {
public List searchByCompany(Company company, String searchText) {
throw new UnsupportedOperationException("未实现");
diff --git a/client/src/main/java/com/ecep/contract/service/CompanyBlackReasonService.java b/client/src/main/java/com/ecep/contract/service/CompanyBlackReasonService.java
index f6381fc..34c7680 100644
--- a/client/src/main/java/com/ecep/contract/service/CompanyBlackReasonService.java
+++ b/client/src/main/java/com/ecep/contract/service/CompanyBlackReasonService.java
@@ -1,9 +1,12 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.CompanyBlackReason;
import com.ecep.contract.vm.CompanyBlackReasonViewModel;
+@Service
public class CompanyBlackReasonService
- implements ViewModelService {
+ extends QueryService {
}
diff --git a/client/src/main/java/com/ecep/contract/service/CompanyContactService.java b/client/src/main/java/com/ecep/contract/service/CompanyContactService.java
index 80fe853..39a2611 100644
--- a/client/src/main/java/com/ecep/contract/service/CompanyContactService.java
+++ b/client/src/main/java/com/ecep/contract/service/CompanyContactService.java
@@ -2,11 +2,14 @@ package com.ecep.contract.service;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyContact;
import com.ecep.contract.vm.CompanyContactViewModel;
-public class CompanyContactService implements ViewModelService {
+@Service
+public class CompanyContactService extends QueryService {
public List searchByCompany(Company company, String userText) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/CompanyCustomerEntityService.java b/client/src/main/java/com/ecep/contract/service/CompanyCustomerEntityService.java
index 3ac5bce..a1443b1 100644
--- a/client/src/main/java/com/ecep/contract/service/CompanyCustomerEntityService.java
+++ b/client/src/main/java/com/ecep/contract/service/CompanyCustomerEntityService.java
@@ -5,12 +5,14 @@ import java.util.Map;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.model.CompanyCustomerEntity;
import com.ecep.contract.vm.CustomerEntityViewModel;
-public class CompanyCustomerEntityService implements ViewModelService {
+@Service
+public class CompanyCustomerEntityService extends QueryService {
public List findAllByCustomer(CompanyCustomer customer) {
throw new UnsupportedOperationException();
}
diff --git a/client/src/main/java/com/ecep/contract/service/CompanyCustomerFileService.java b/client/src/main/java/com/ecep/contract/service/CompanyCustomerFileService.java
index 3eb0a35..13a799d 100644
--- a/client/src/main/java/com/ecep/contract/service/CompanyCustomerFileService.java
+++ b/client/src/main/java/com/ecep/contract/service/CompanyCustomerFileService.java
@@ -6,6 +6,8 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.CompanyCustomerFileType;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.model.CompanyCustomer;
@@ -14,7 +16,8 @@ import com.ecep.contract.model.CompanyCustomerFile;
import com.ecep.contract.model.CompanyCustomerFileTypeLocal;
import com.ecep.contract.vm.CompanyCustomerFileViewModel;
-public class CompanyCustomerFileService implements ViewModelService {
+@Service
+public class CompanyCustomerFileService extends QueryService {
public List findAllCustomerEvaluationFormFiles(CompanyCustomer customer) {
throw new UnsupportedOperationException();
}
diff --git a/client/src/main/java/com/ecep/contract/service/CompanyCustomerService.java b/client/src/main/java/com/ecep/contract/service/CompanyCustomerService.java
index 75cc82a..4ce5ad8 100644
--- a/client/src/main/java/com/ecep/contract/service/CompanyCustomerService.java
+++ b/client/src/main/java/com/ecep/contract/service/CompanyCustomerService.java
@@ -1,14 +1,17 @@
package com.ecep.contract.service;
+import java.io.File;
+
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.MessageHolder;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.model.CustomerCatalog;
import com.ecep.contract.vm.CompanyCustomerViewModel;
-import java.io.File;
-
-public class CompanyCustomerService implements ViewModelService {
+@Service
+public class CompanyCustomerService extends QueryService {
public CompanyCustomer findByCompany(Company company) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/CompanyExtendInfoService.java b/client/src/main/java/com/ecep/contract/service/CompanyExtendInfoService.java
index 40a73b7..162d5fa 100644
--- a/client/src/main/java/com/ecep/contract/service/CompanyExtendInfoService.java
+++ b/client/src/main/java/com/ecep/contract/service/CompanyExtendInfoService.java
@@ -1,10 +1,13 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyExtendInfo;
import com.ecep.contract.vm.CompanyExtendInfoViewModel;
-public class CompanyExtendInfoService implements ViewModelService {
+@Service
+public class CompanyExtendInfoService extends QueryService {
public CompanyExtendInfo findByCompany(Company company) {
throw new UnsupportedOperationException("Unimplemented method 'findByCompany'");
}
diff --git a/client/src/main/java/com/ecep/contract/service/CompanyFileService.java b/client/src/main/java/com/ecep/contract/service/CompanyFileService.java
index b777be7..dff789c 100644
--- a/client/src/main/java/com/ecep/contract/service/CompanyFileService.java
+++ b/client/src/main/java/com/ecep/contract/service/CompanyFileService.java
@@ -5,6 +5,8 @@ import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.CompanyFileType;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.model.Company;
@@ -14,7 +16,8 @@ import com.ecep.contract.vm.CompanyFileViewModel;
import javafx.collections.ObservableList;
-public class CompanyFileService implements ViewModelService {
+@Service
+public class CompanyFileService extends QueryService {
public boolean reBuildingFiles(Company company, MessageHolder holder) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/CompanyOldNameService.java b/client/src/main/java/com/ecep/contract/service/CompanyOldNameService.java
index f82feff..03d8008 100644
--- a/client/src/main/java/com/ecep/contract/service/CompanyOldNameService.java
+++ b/client/src/main/java/com/ecep/contract/service/CompanyOldNameService.java
@@ -3,11 +3,14 @@ package com.ecep.contract.service;
import java.time.LocalDate;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyOldName;
import com.ecep.contract.vm.CompanyOldNameViewModel;
-public class CompanyOldNameService implements ViewModelService {
+@Service
+public class CompanyOldNameService extends QueryService {
public boolean makePathAbsent(CompanyOldName companyOldName) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/CompanyService.java b/client/src/main/java/com/ecep/contract/service/CompanyService.java
index 87e5ebb..ff672f7 100644
--- a/client/src/main/java/com/ecep/contract/service/CompanyService.java
+++ b/client/src/main/java/com/ecep/contract/service/CompanyService.java
@@ -4,22 +4,25 @@ import java.io.File;
import java.time.LocalDate;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.MessageHolder;
import com.ecep.contract.model.Company;
import com.ecep.contract.vm.CompanyViewModel;
-public class CompanyService implements ViewModelService {
+@Service
+public class CompanyService extends QueryService {
+
+ @Override
+ public String getBeanName() {
+ return "companyService";
+ }
public Company findByName(String name) {
// return companyRepository.findByName(name);
throw new UnsupportedOperationException("Unimplemented method 'findByName'");
}
- public List search(String name) {
- // return companyRepository.findByName(name);
- throw new UnsupportedOperationException("Unimplemented method 'search'");
- }
-
public List findAllByName(String name) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'findAllByName'");
@@ -55,10 +58,9 @@ public class CompanyService implements ViewModelService {
+@Service
+public class CompanyVendorApprovedFileService
+ extends QueryService {
public CompanyVendorApprovedFile findByName(CompanyVendorApprovedList approvedList, String name) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedItemService.java b/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedItemService.java
index 479a583..e330b47 100644
--- a/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedItemService.java
+++ b/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedItemService.java
@@ -2,12 +2,16 @@ package com.ecep.contract.service;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.CompanyVendor;
import com.ecep.contract.model.CompanyVendorApprovedItem;
import com.ecep.contract.model.CompanyVendorApprovedList;
import com.ecep.contract.vm.CompanyVendorApprovedItemViewModel;
-public class CompanyVendorApprovedItemService implements ViewModelService {
+@Service
+public class CompanyVendorApprovedItemService
+ extends QueryService {
public List findAllByListAndVendor(CompanyVendorApprovedList approvedList,
CompanyVendor vendor) {
diff --git a/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedListService.java b/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedListService.java
index 53c4171..bd6c00c 100644
--- a/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedListService.java
+++ b/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedListService.java
@@ -1,11 +1,14 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.MessageHolder;
import com.ecep.contract.model.CompanyVendorApprovedList;
import com.ecep.contract.vm.CompanyVendorApprovedListViewModel;
+@Service
public class CompanyVendorApprovedListService
- implements ViewModelService {
+ extends QueryService {
public boolean makePathAbsent(CompanyVendorApprovedList list) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/CompanyVendorEntityService.java b/client/src/main/java/com/ecep/contract/service/CompanyVendorEntityService.java
index af1669b..a8172e6 100644
--- a/client/src/main/java/com/ecep/contract/service/CompanyVendorEntityService.java
+++ b/client/src/main/java/com/ecep/contract/service/CompanyVendorEntityService.java
@@ -1,8 +1,11 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.CompanyVendorEntity;
import com.ecep.contract.vm.CompanyVendorEntityViewModel;
-public class CompanyVendorEntityService implements ViewModelService {
+@Service
+public class CompanyVendorEntityService extends QueryService {
}
diff --git a/client/src/main/java/com/ecep/contract/service/CompanyVendorFileService.java b/client/src/main/java/com/ecep/contract/service/CompanyVendorFileService.java
index c7436f3..ed20d31 100644
--- a/client/src/main/java/com/ecep/contract/service/CompanyVendorFileService.java
+++ b/client/src/main/java/com/ecep/contract/service/CompanyVendorFileService.java
@@ -6,13 +6,16 @@ import java.util.Locale;
import java.util.Map;
import java.util.function.Consumer;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.CompanyVendorFileType;
import com.ecep.contract.model.CompanyVendor;
import com.ecep.contract.model.CompanyVendorFile;
import com.ecep.contract.model.CompanyVendorFileTypeLocal;
import com.ecep.contract.vm.CompanyVendorFileViewModel;
-public class CompanyVendorFileService implements ViewModelService {
+@Service
+public class CompanyVendorFileService extends QueryService {
public LocalDate getNextSignDate(CompanyVendor companyVendor, Consumer state) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/CompanyVendorService.java b/client/src/main/java/com/ecep/contract/service/CompanyVendorService.java
index de88643..ee45704 100644
--- a/client/src/main/java/com/ecep/contract/service/CompanyVendorService.java
+++ b/client/src/main/java/com/ecep/contract/service/CompanyVendorService.java
@@ -5,6 +5,8 @@ import java.util.Collection;
import java.util.List;
import java.util.Locale;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.MessageHolder;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyVendor;
@@ -13,7 +15,8 @@ import com.ecep.contract.model.VendorCatalog;
import com.ecep.contract.model.VendorTypeLocal;
import com.ecep.contract.vm.CompanyVendorViewModel;
-public class CompanyVendorService implements ViewModelService {
+@Service
+public class CompanyVendorService extends QueryService {
public VendorCatalog findCatalogById(Integer id) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/ContractBidVendorService.java b/client/src/main/java/com/ecep/contract/service/ContractBidVendorService.java
index bd6bd54..21aa5dd 100644
--- a/client/src/main/java/com/ecep/contract/service/ContractBidVendorService.java
+++ b/client/src/main/java/com/ecep/contract/service/ContractBidVendorService.java
@@ -2,12 +2,15 @@ package com.ecep.contract.service;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.Company;
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ContractBidVendor;
import com.ecep.contract.vm.ContractBidVendorViewModel;
-public class ContractBidVendorService implements ViewModelService {
+@Service
+public class ContractBidVendorService extends QueryService {
public List findByContract(Contract contract) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/ContractFileService.java b/client/src/main/java/com/ecep/contract/service/ContractFileService.java
index ed76b64..32d1adc 100644
--- a/client/src/main/java/com/ecep/contract/service/ContractFileService.java
+++ b/client/src/main/java/com/ecep/contract/service/ContractFileService.java
@@ -3,13 +3,16 @@ package com.ecep.contract.service;
import java.util.List;
import java.util.Map;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.ContractFileType;
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ContractFile;
import com.ecep.contract.model.ContractFileTypeLocal;
import com.ecep.contract.vm.ContractFileViewModel;
-public class ContractFileService implements ViewModelService {
+@Service
+public class ContractFileService extends QueryService {
public List findAllByContract(Contract contract) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/ContractGroupService.java b/client/src/main/java/com/ecep/contract/service/ContractGroupService.java
index e36a4f4..553f508 100644
--- a/client/src/main/java/com/ecep/contract/service/ContractGroupService.java
+++ b/client/src/main/java/com/ecep/contract/service/ContractGroupService.java
@@ -1,9 +1,12 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.ContractGroup;
import com.ecep.contract.vm.ContractGroupViewModel;
-public class ContractGroupService implements ViewModelService {
+@Service
+public class ContractGroupService extends QueryService {
public ContractGroup findByCode(String groupCode) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/ContractItemService.java b/client/src/main/java/com/ecep/contract/service/ContractItemService.java
index 2cd1948..059780f 100644
--- a/client/src/main/java/com/ecep/contract/service/ContractItemService.java
+++ b/client/src/main/java/com/ecep/contract/service/ContractItemService.java
@@ -12,7 +12,7 @@ import com.ecep.contract.model.Inventory;
import com.ecep.contract.vm.ContractItemViewModel;
@Service
-public class ContractItemService implements ViewModelService {
+public class ContractItemService extends QueryService {
@Override
public ContractItem findById(Integer id) {
diff --git a/client/src/main/java/com/ecep/contract/service/ContractKindService.java b/client/src/main/java/com/ecep/contract/service/ContractKindService.java
index d3b2de2..402729d 100644
--- a/client/src/main/java/com/ecep/contract/service/ContractKindService.java
+++ b/client/src/main/java/com/ecep/contract/service/ContractKindService.java
@@ -1,9 +1,12 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.ContractKind;
import com.ecep.contract.vm.ContractKindViewModel;
-public class ContractKindService implements ViewModelService {
+@Service
+public class ContractKindService extends QueryService {
public ContractKind findByName(String name) {
throw new UnsupportedOperationException("Unimplemented method 'findByName'");
diff --git a/client/src/main/java/com/ecep/contract/service/ContractPayPlanService.java b/client/src/main/java/com/ecep/contract/service/ContractPayPlanService.java
index 6cb621f..633c920 100644
--- a/client/src/main/java/com/ecep/contract/service/ContractPayPlanService.java
+++ b/client/src/main/java/com/ecep/contract/service/ContractPayPlanService.java
@@ -2,11 +2,14 @@ package com.ecep.contract.service;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ContractPayPlan;
import com.ecep.contract.vm.ContractPayPlanViewModel;
-public class ContractPayPlanService implements ViewModelService {
+@Service
+public class ContractPayPlanService extends QueryService {
public List findAllByContract(Contract contract) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/ContractService.java b/client/src/main/java/com/ecep/contract/service/ContractService.java
index 02fb98c..68e6e9a 100644
--- a/client/src/main/java/com/ecep/contract/service/ContractService.java
+++ b/client/src/main/java/com/ecep/contract/service/ContractService.java
@@ -4,6 +4,8 @@ import java.io.File;
import java.time.LocalDate;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.MessageHolder;
import com.ecep.contract.model.CompanyVendor;
import com.ecep.contract.model.Contract;
@@ -12,7 +14,8 @@ import com.ecep.contract.model.ContractGroup;
import com.ecep.contract.model.Project;
import com.ecep.contract.vm.ContractViewModel;
-public class ContractService implements ViewModelService {
+@Service
+public class ContractService extends QueryService {
public boolean updateParentCode(Contract contract) {
// TODO Auto-generated method stub
@@ -28,10 +31,6 @@ public class ContractService implements ViewModelService search(String searchText) {
- throw new UnsupportedOperationException("Unimplemented method 'search'");
- }
-
public Contract findByName(String name) {
throw new UnsupportedOperationException("Unimplemented method 'findByName'");
}
diff --git a/client/src/main/java/com/ecep/contract/service/ContractTypeService.java b/client/src/main/java/com/ecep/contract/service/ContractTypeService.java
index d13fd45..6dddc8a 100644
--- a/client/src/main/java/com/ecep/contract/service/ContractTypeService.java
+++ b/client/src/main/java/com/ecep/contract/service/ContractTypeService.java
@@ -1,20 +1,17 @@
package com.ecep.contract.service;
-import java.util.List;
+import org.springframework.stereotype.Service;
import com.ecep.contract.model.ContractType;
import com.ecep.contract.vm.ContractTypeViewModel;
-public class ContractTypeService implements ViewModelService {
+@Service
+public class ContractTypeService extends QueryService {
public ContractType findByName(String name) {
throw new UnsupportedOperationException("Unimplemented method 'findByName'");
}
- public List search(String searchText) {
- throw new UnsupportedOperationException("Unimplemented method 'search'");
- }
-
public ContractType findByCode(String typeCode) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'findByCode'");
diff --git a/client/src/main/java/com/ecep/contract/service/CustomerSatisfactionSurveyService.java b/client/src/main/java/com/ecep/contract/service/CustomerSatisfactionSurveyService.java
index 03fef99..b696e9a 100644
--- a/client/src/main/java/com/ecep/contract/service/CustomerSatisfactionSurveyService.java
+++ b/client/src/main/java/com/ecep/contract/service/CustomerSatisfactionSurveyService.java
@@ -1,8 +1,12 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.CustomerSatisfactionSurvey;
import com.ecep.contract.vm.CustomerSatisfactionSurveyViewModel;
-public class CustomerSatisfactionSurveyService implements ViewModelService {
+@Service
+public class CustomerSatisfactionSurveyService
+ extends QueryService {
}
diff --git a/client/src/main/java/com/ecep/contract/service/DeliverySignMethodService.java b/client/src/main/java/com/ecep/contract/service/DeliverySignMethodService.java
index 7bd4537..bcc3066 100644
--- a/client/src/main/java/com/ecep/contract/service/DeliverySignMethodService.java
+++ b/client/src/main/java/com/ecep/contract/service/DeliverySignMethodService.java
@@ -1,8 +1,11 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.DeliverySignMethod;
import com.ecep.contract.vm.DeliverySignMethodViewModel;
-public class DeliverySignMethodService implements ViewModelService {
+@Service
+public class DeliverySignMethodService extends QueryService {
}
diff --git a/client/src/main/java/com/ecep/contract/service/DepartmentService.java b/client/src/main/java/com/ecep/contract/service/DepartmentService.java
index 132d2f4..1fb8f04 100644
--- a/client/src/main/java/com/ecep/contract/service/DepartmentService.java
+++ b/client/src/main/java/com/ecep/contract/service/DepartmentService.java
@@ -1,15 +1,11 @@
package com.ecep.contract.service;
-import java.util.List;
+import org.springframework.stereotype.Service;
import com.ecep.contract.model.Department;
import com.ecep.contract.vm.DepartmentViewModel;
-public class DepartmentService implements ViewModelService {
-
- public List search(String searchText) {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("Unimplemented method 'search'");
- }
+@Service
+public class DepartmentService extends QueryService {
}
diff --git a/client/src/main/java/com/ecep/contract/service/EmployeeAuthBindService.java b/client/src/main/java/com/ecep/contract/service/EmployeeAuthBindService.java
index da425bc..08210c8 100644
--- a/client/src/main/java/com/ecep/contract/service/EmployeeAuthBindService.java
+++ b/client/src/main/java/com/ecep/contract/service/EmployeeAuthBindService.java
@@ -3,11 +3,13 @@ package com.ecep.contract.service;
import java.util.List;
import org.springframework.data.domain.Sort;
+import org.springframework.stereotype.Service;
import com.ecep.contract.model.EmployeeAuthBind;
import com.ecep.contract.vm.EmployeeAuthBindViewModel;
-public class EmployeeAuthBindService implements ViewModelService {
+@Service
+public class EmployeeAuthBindService extends QueryService {
public List findAllByEmployee(Object object, Sort unsorted) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/EmployeeLoginHistoryService.java b/client/src/main/java/com/ecep/contract/service/EmployeeLoginHistoryService.java
index 3a855fd..24646ed 100644
--- a/client/src/main/java/com/ecep/contract/service/EmployeeLoginHistoryService.java
+++ b/client/src/main/java/com/ecep/contract/service/EmployeeLoginHistoryService.java
@@ -1,9 +1,12 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.EmployeeLoginHistory;
import com.ecep.contract.vm.EmployeeLoginHistoryViewModel;
+@Service
public class EmployeeLoginHistoryService
- implements ViewModelService {
+ extends QueryService {
}
diff --git a/client/src/main/java/com/ecep/contract/service/EmployeeRoleService.java b/client/src/main/java/com/ecep/contract/service/EmployeeRoleService.java
index 11462bf..458faf5 100644
--- a/client/src/main/java/com/ecep/contract/service/EmployeeRoleService.java
+++ b/client/src/main/java/com/ecep/contract/service/EmployeeRoleService.java
@@ -2,11 +2,14 @@ package com.ecep.contract.service;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.EmployeeRole;
import com.ecep.contract.model.Function;
import com.ecep.contract.vm.EmployeeRoleViewModel;
-public class EmployeeRoleService implements ViewModelService {
+@Service
+public class EmployeeRoleService extends QueryService {
public List getFunctionsByRoleId(int i) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/EmployeeService.java b/client/src/main/java/com/ecep/contract/service/EmployeeService.java
index e8e6a80..225d4df 100644
--- a/client/src/main/java/com/ecep/contract/service/EmployeeService.java
+++ b/client/src/main/java/com/ecep/contract/service/EmployeeService.java
@@ -2,11 +2,14 @@ package com.ecep.contract.service;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.Employee;
import com.ecep.contract.model.EmployeeRole;
import com.ecep.contract.vm.EmployeeViewModel;
-public class EmployeeService implements ViewModelService {
+@Service
+public class EmployeeService extends QueryService {
public static final int DEFAULT_SYSTEM_EMPLOYEE_ID = 26;
@@ -24,12 +27,6 @@ public class EmployeeService implements ViewModelService search(String searchText) {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("Unimplemented method 'search'");
- }
-
public Employee findByCode(String personCode) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'findByCode'");
diff --git a/client/src/main/java/com/ecep/contract/service/ExtendVendorInfoService.java b/client/src/main/java/com/ecep/contract/service/ExtendVendorInfoService.java
index a8e440b..c125aa2 100644
--- a/client/src/main/java/com/ecep/contract/service/ExtendVendorInfoService.java
+++ b/client/src/main/java/com/ecep/contract/service/ExtendVendorInfoService.java
@@ -1,14 +1,17 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ExtendVendorInfo;
import com.ecep.contract.vm.ExtendVendorInfoViewModel;
-public class ExtendVendorInfoService implements ViewModelService {
+@Service
+public class ExtendVendorInfoService extends QueryService {
- public ExtendVendorInfo findByContract(Contract contract) {
- throw new UnsupportedOperationException("Unimplemented method 'findByContract'");
- }
+ public ExtendVendorInfo findByContract(Contract contract) {
+ throw new UnsupportedOperationException("Unimplemented method 'findByContract'");
+ }
public ExtendVendorInfo newInstanceByContract(Contract contract) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/FunctionService.java b/client/src/main/java/com/ecep/contract/service/FunctionService.java
index 3145a8f..6ff77f5 100644
--- a/client/src/main/java/com/ecep/contract/service/FunctionService.java
+++ b/client/src/main/java/com/ecep/contract/service/FunctionService.java
@@ -1,8 +1,11 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.Function;
import com.ecep.contract.vm.FunctionViewModel;
-public class FunctionService implements ViewModelService {
+@Service
+public class FunctionService extends QueryService {
}
diff --git a/client/src/main/java/com/ecep/contract/service/InventoryCatalogService.java b/client/src/main/java/com/ecep/contract/service/InventoryCatalogService.java
index ace0e39..6639436 100644
--- a/client/src/main/java/com/ecep/contract/service/InventoryCatalogService.java
+++ b/client/src/main/java/com/ecep/contract/service/InventoryCatalogService.java
@@ -2,19 +2,18 @@ package com.ecep.contract.service;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.InventoryCatalog;
import com.ecep.contract.vm.InventoryCatalogViewModel;
-public class InventoryCatalogService implements ViewModelService {
+@Service
+public class InventoryCatalogService extends QueryService {
public InventoryCatalog findByName(String v) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'findByName'");
}
- public List search(String searchText) {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("Unimplemented method 'findAll'");
- }
}
diff --git a/client/src/main/java/com/ecep/contract/service/InventoryHistoryPriceService.java b/client/src/main/java/com/ecep/contract/service/InventoryHistoryPriceService.java
index fb87650..53b0587 100644
--- a/client/src/main/java/com/ecep/contract/service/InventoryHistoryPriceService.java
+++ b/client/src/main/java/com/ecep/contract/service/InventoryHistoryPriceService.java
@@ -1,15 +1,18 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.Inventory;
import com.ecep.contract.model.InventoryHistoryPrice;
import com.ecep.contract.vm.InventoryHistoryPriceViewModel;
+@Service
public class InventoryHistoryPriceService
- implements ViewModelService {
+ extends QueryService {
public InventoryHistoryPrice[] findAllByInventory(Inventory parent) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'findAllByInventory'");
- }
+ }
}
diff --git a/client/src/main/java/com/ecep/contract/service/InventoryService.java b/client/src/main/java/com/ecep/contract/service/InventoryService.java
index f542477..0669956 100644
--- a/client/src/main/java/com/ecep/contract/service/InventoryService.java
+++ b/client/src/main/java/com/ecep/contract/service/InventoryService.java
@@ -1,12 +1,13 @@
package com.ecep.contract.service;
-import java.util.List;
+import org.springframework.stereotype.Service;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.model.Inventory;
import com.ecep.contract.vm.InventoryViewModel;
-public class InventoryService implements ViewModelService {
+@Service
+public class InventoryService extends QueryService {
public Inventory createNewInstance() {
// TODO Auto-generated method stub
@@ -18,11 +19,6 @@ public class InventoryService implements ViewModelService search(String searchText) {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("Unimplemented method 'findAllByProject'");
- }
-
public Inventory findByCode(String code) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'findByCode'");
diff --git a/client/src/main/java/com/ecep/contract/service/InvoiceService.java b/client/src/main/java/com/ecep/contract/service/InvoiceService.java
index 9009afa..a74f356 100644
--- a/client/src/main/java/com/ecep/contract/service/InvoiceService.java
+++ b/client/src/main/java/com/ecep/contract/service/InvoiceService.java
@@ -1,8 +1,11 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.Invoice;
import com.ecep.contract.vm.InvoiceViewModel;
-public class InvoiceService implements ViewModelService {
+@Service
+public class InvoiceService extends QueryService {
}
diff --git a/client/src/main/java/com/ecep/contract/service/PermissionService.java b/client/src/main/java/com/ecep/contract/service/PermissionService.java
index d48f1cd..9d5fa2a 100644
--- a/client/src/main/java/com/ecep/contract/service/PermissionService.java
+++ b/client/src/main/java/com/ecep/contract/service/PermissionService.java
@@ -2,10 +2,13 @@ package com.ecep.contract.service;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.Permission;
import com.ecep.contract.vm.PermissionViewModel;
-public class PermissionService implements ViewModelService {
+@Service
+public class PermissionService extends QueryService {
public List findByFunctionId(int i) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/ProductTypeService.java b/client/src/main/java/com/ecep/contract/service/ProductTypeService.java
index 6eea634..15506e4 100644
--- a/client/src/main/java/com/ecep/contract/service/ProductTypeService.java
+++ b/client/src/main/java/com/ecep/contract/service/ProductTypeService.java
@@ -1,9 +1,12 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.ProductType;
import com.ecep.contract.vm.ProductTypeViewModel;
-public class ProductTypeService implements ViewModelService {
+@Service
+public class ProductTypeService extends QueryService {
public ProductType findByName(String name) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/ProductUsageService.java b/client/src/main/java/com/ecep/contract/service/ProductUsageService.java
index f49bdb6..55c0854 100644
--- a/client/src/main/java/com/ecep/contract/service/ProductUsageService.java
+++ b/client/src/main/java/com/ecep/contract/service/ProductUsageService.java
@@ -1,8 +1,11 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.ProductUsage;
import com.ecep.contract.vm.ProductUsageViewModel;
-public class ProductUsageService implements ViewModelService {
+@Service
+public class ProductUsageService extends QueryService {
}
diff --git a/client/src/main/java/com/ecep/contract/service/ProjectBidService.java b/client/src/main/java/com/ecep/contract/service/ProjectBidService.java
index ecf1afa..300f3ce 100644
--- a/client/src/main/java/com/ecep/contract/service/ProjectBidService.java
+++ b/client/src/main/java/com/ecep/contract/service/ProjectBidService.java
@@ -2,11 +2,14 @@ package com.ecep.contract.service;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectBid;
import com.ecep.contract.vm.ProjectBidViewModel;
-public class ProjectBidService implements ViewModelService {
+@Service
+public class ProjectBidService extends QueryService {
public List findAllByProject(Project project) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/ProjectCostItemService.java b/client/src/main/java/com/ecep/contract/service/ProjectCostItemService.java
index 15159ea..ace7a64 100644
--- a/client/src/main/java/com/ecep/contract/service/ProjectCostItemService.java
+++ b/client/src/main/java/com/ecep/contract/service/ProjectCostItemService.java
@@ -2,11 +2,14 @@ package com.ecep.contract.service;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.ProjectCost;
import com.ecep.contract.model.ProjectCostItem;
import com.ecep.contract.vm.ProjectCostItemViewModel;
-public class ProjectCostItemService implements ViewModelService {
+@Service
+public class ProjectCostItemService extends QueryService {
public List findByCost(ProjectCost cost) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/ProjectCostService.java b/client/src/main/java/com/ecep/contract/service/ProjectCostService.java
index 6cde910..121757a 100644
--- a/client/src/main/java/com/ecep/contract/service/ProjectCostService.java
+++ b/client/src/main/java/com/ecep/contract/service/ProjectCostService.java
@@ -2,12 +2,15 @@ package com.ecep.contract.service;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.MessageHolder;
import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectCost;
import com.ecep.contract.vm.ProjectCostViewModel;
-public class ProjectCostService implements ViewModelService {
+@Service
+public class ProjectCostService extends QueryService {
public ProjectCost findAutoCostByProject(Project project) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/ProjectFundPlanService.java b/client/src/main/java/com/ecep/contract/service/ProjectFundPlanService.java
index 7e2bf13..776f84c 100644
--- a/client/src/main/java/com/ecep/contract/service/ProjectFundPlanService.java
+++ b/client/src/main/java/com/ecep/contract/service/ProjectFundPlanService.java
@@ -2,11 +2,14 @@ package com.ecep.contract.service;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectFundPlan;
import com.ecep.contract.vm.ProjectFundPlanViewModel;
-public class ProjectFundPlanService implements ViewModelService {
+@Service
+public class ProjectFundPlanService extends QueryService {
public List findAllByProject(Project project) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/ProjectIndustryService.java b/client/src/main/java/com/ecep/contract/service/ProjectIndustryService.java
index 5658d92..540e725 100644
--- a/client/src/main/java/com/ecep/contract/service/ProjectIndustryService.java
+++ b/client/src/main/java/com/ecep/contract/service/ProjectIndustryService.java
@@ -1,8 +1,11 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.ProjectIndustry;
import com.ecep.contract.vm.ProjectIndustryViewModel;
-public class ProjectIndustryService implements ViewModelService {
+@Service
+public class ProjectIndustryService extends QueryService {
}
diff --git a/client/src/main/java/com/ecep/contract/service/ProjectQuotationService.java b/client/src/main/java/com/ecep/contract/service/ProjectQuotationService.java
index 7eefc18..7fd035a 100644
--- a/client/src/main/java/com/ecep/contract/service/ProjectQuotationService.java
+++ b/client/src/main/java/com/ecep/contract/service/ProjectQuotationService.java
@@ -2,11 +2,14 @@ package com.ecep.contract.service;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectQuotation;
import com.ecep.contract.vm.ProjectQuotationViewModel;
-public class ProjectQuotationService implements ViewModelService{
+@Service
+public class ProjectQuotationService extends QueryService {
public List findAllByProject(Project project) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/ProjectSaleTypeRequireFileTypeService.java b/client/src/main/java/com/ecep/contract/service/ProjectSaleTypeRequireFileTypeService.java
index 4a80276..7505f3b 100644
--- a/client/src/main/java/com/ecep/contract/service/ProjectSaleTypeRequireFileTypeService.java
+++ b/client/src/main/java/com/ecep/contract/service/ProjectSaleTypeRequireFileTypeService.java
@@ -2,25 +2,18 @@ package com.ecep.contract.service;
import java.util.List;
-import com.ecep.contract.model.ProjectSaleType;
-import com.ecep.contract.model.ProjectSaleTypeRequireFileType;
-import com.ecep.contract.vm.ProjectSaleTypeViewModel;
+import org.springframework.stereotype.Service;
-public class ProjectSaleTypeRequireFileTypeService implements ViewModelService{
+import com.ecep.contract.model.ProjectSaleTypeRequireFileType;
+import com.ecep.contract.vm.ProjectSaleTypeRequireFileTypeViewModel;
+
+@Service
+public class ProjectSaleTypeRequireFileTypeService
+ extends QueryService {
public List findBySaleTypeId(Integer id) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'findBySaleTypeId'");
}
- public void save(ProjectSaleTypeRequireFileType entity) {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("Unimplemented method 'save'");
- }
-
- public void delete(ProjectSaleTypeRequireFileType entity) {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("Unimplemented method 'delete'");
- }
-
}
diff --git a/client/src/main/java/com/ecep/contract/service/ProjectSaleTypeService.java b/client/src/main/java/com/ecep/contract/service/ProjectSaleTypeService.java
index 1da1e9e..18c50f4 100644
--- a/client/src/main/java/com/ecep/contract/service/ProjectSaleTypeService.java
+++ b/client/src/main/java/com/ecep/contract/service/ProjectSaleTypeService.java
@@ -1,9 +1,12 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.vm.ProjectSaleTypeViewModel;
-public class ProjectSaleTypeService implements ViewModelService {
+@Service
+public class ProjectSaleTypeService extends QueryService {
public ProjectSaleType findByCode(String substring) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/ProjectService.java b/client/src/main/java/com/ecep/contract/service/ProjectService.java
index 5246022..8d3df2d 100644
--- a/client/src/main/java/com/ecep/contract/service/ProjectService.java
+++ b/client/src/main/java/com/ecep/contract/service/ProjectService.java
@@ -1,5 +1,7 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectSaleType;
@@ -8,13 +10,10 @@ import com.ecep.contract.vm.ProjectViewModel;
import java.io.File;
import java.util.List;
-public class ProjectService implements ViewModelService {
+@Service
+public class ProjectService extends QueryService {
- public List search(String searchText) {
- throw new UnsupportedOperationException();
- }
-
public Project findByName(String name) {
throw new UnsupportedOperationException();
}
diff --git a/client/src/main/java/com/ecep/contract/service/ProjectTypeService.java b/client/src/main/java/com/ecep/contract/service/ProjectTypeService.java
index 76585b4..71f309b 100644
--- a/client/src/main/java/com/ecep/contract/service/ProjectTypeService.java
+++ b/client/src/main/java/com/ecep/contract/service/ProjectTypeService.java
@@ -1,9 +1,12 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.ProjectType;
import com.ecep.contract.vm.ProjectTypeViewModel;
-public class ProjectTypeService implements ViewModelService {
+@Service
+public class ProjectTypeService extends QueryService {
public ProjectType findByName(String name) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/PurchaseBillVoucherItemService.java b/client/src/main/java/com/ecep/contract/service/PurchaseBillVoucherItemService.java
index ce716bb..e025232 100644
--- a/client/src/main/java/com/ecep/contract/service/PurchaseBillVoucherItemService.java
+++ b/client/src/main/java/com/ecep/contract/service/PurchaseBillVoucherItemService.java
@@ -1,9 +1,12 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.PurchaseBillVoucherItem;
import com.ecep.contract.vm.PurchaseBillVoucherItemViewModel;
+@Service
public class PurchaseBillVoucherItemService
- implements ViewModelService {
+ extends QueryService {
}
diff --git a/client/src/main/java/com/ecep/contract/service/PurchaseBillVoucherService.java b/client/src/main/java/com/ecep/contract/service/PurchaseBillVoucherService.java
index f683fba..7eda69c 100644
--- a/client/src/main/java/com/ecep/contract/service/PurchaseBillVoucherService.java
+++ b/client/src/main/java/com/ecep/contract/service/PurchaseBillVoucherService.java
@@ -1,8 +1,11 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.PurchaseBillVoucher;
import com.ecep.contract.vm.PurchaseBillVoucherViewModel;
-public class PurchaseBillVoucherService implements ViewModelService {
+@Service
+public class PurchaseBillVoucherService extends QueryService {
}
diff --git a/client/src/main/java/com/ecep/contract/service/PurchaseOrderItemService.java b/client/src/main/java/com/ecep/contract/service/PurchaseOrderItemService.java
index 3ede1c9..bdbea5a 100644
--- a/client/src/main/java/com/ecep/contract/service/PurchaseOrderItemService.java
+++ b/client/src/main/java/com/ecep/contract/service/PurchaseOrderItemService.java
@@ -1,8 +1,11 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.PurchaseOrderItem;
import com.ecep.contract.vm.PurchaseOrderItemViewModel;
-public class PurchaseOrderItemService implements ViewModelService {
+@Service
+public class PurchaseOrderItemService extends QueryService {
}
diff --git a/client/src/main/java/com/ecep/contract/service/PurchaseOrdersService.java b/client/src/main/java/com/ecep/contract/service/PurchaseOrdersService.java
index 26247be..0315c8b 100644
--- a/client/src/main/java/com/ecep/contract/service/PurchaseOrdersService.java
+++ b/client/src/main/java/com/ecep/contract/service/PurchaseOrdersService.java
@@ -1,8 +1,11 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.PurchaseOrder;
import com.ecep.contract.vm.PurchaseOrderViewModel;
-public class PurchaseOrdersService implements ViewModelService {
+@Service
+public class PurchaseOrdersService extends QueryService {
}
diff --git a/client/src/main/java/com/ecep/contract/service/QueryService.java b/client/src/main/java/com/ecep/contract/service/QueryService.java
new file mode 100644
index 0000000..4abf6e4
--- /dev/null
+++ b/client/src/main/java/com/ecep/contract/service/QueryService.java
@@ -0,0 +1,156 @@
+package com.ecep.contract.service;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+
+import com.ecep.contract.WebSocketService;
+import com.ecep.contract.model.IdentityEntity;
+import com.ecep.contract.msg.SimpleMessage;
+import com.ecep.contract.vm.IdentityViewModel;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class QueryService>
+ implements ViewModelService {
+ @Autowired
+ protected WebSocketService webSocketService;
+ @Autowired
+ protected ObjectMapper objectMapper;
+ private long readTimeout = 30000;
+
+ @SuppressWarnings("unchecked")
+ public TV createNewViewModel() {
+ try {
+ Type genericSuperclass = getClass().getGenericSuperclass();
+ System.out.println("genericSuperclass = " + genericSuperclass.getClass());
+
+ String typeName = genericSuperclass.getTypeName();
+ // System.out.println("typeName = " + typeName);
+ String clz = typeName.split("<")[1].split(">")[0].split(",")[1].trim();
+ // System.out.println("clz = " + clz);
+ Class> clazz = Class.forName(clz);
+ return (TV) clazz.getDeclaredConstructor().newInstance();
+ } catch (Exception e) {
+ throw new RuntimeException("无法创建ViewModel实例", e);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ public T createNewEntity() {
+ try {
+ Type genericSuperclass = getClass().getGenericSuperclass();
+ String typeName = genericSuperclass.getTypeName();
+ // System.out.println("typeName = " + typeName);
+ String clz = typeName.split("<")[1].split(">")[0].split(",")[0].trim();
+ // System.out.println("clz = " + clz);
+ Class> clazz = Class.forName(clz);
+ return (T) clazz.getDeclaredConstructor().newInstance();
+ } catch (Exception e) {
+ throw new RuntimeException("无法创建Entity实例", e);
+ }
+ }
+
+ @Override
+ public T save(T entity) {
+ SimpleMessage msg = new SimpleMessage();
+ msg.setService(getBeanName());
+ msg.setMethod("save");
+ msg.setArguments(entity);
+ try {
+ Object response = webSocketService.send(msg).get(readTimeout, TimeUnit.MILLISECONDS);
+ if (response != null) {
+ objectMapper.updateValue(entity, response);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return entity;
+ }
+
+ @Override
+ public void delete(T entity) {
+ SimpleMessage msg = new SimpleMessage();
+ msg.setService(getBeanName());
+ msg.setMethod("delete");
+ msg.setArguments(entity);
+ try {
+ JsonNode response = webSocketService.send(msg).get(readTimeout, TimeUnit.MILLISECONDS);
+ if (response != null) {
+ objectMapper.updateValue(entity, response);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public T findById(Integer id) {
+ SimpleMessage msg = new SimpleMessage();
+ msg.setService(getBeanName());
+ msg.setMethod("findById");
+ msg.setArguments(id);
+ try {
+ JsonNode response = webSocketService.send(msg).get(readTimeout, TimeUnit.MILLISECONDS);
+ if (response != null) {
+ T newEntity = createNewEntity();
+ objectMapper.updateValue(newEntity, response);
+ return newEntity;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ @Override
+ public Page findAll(Map params, Pageable pageable) {
+ SimpleMessage msg = new SimpleMessage();
+ msg.setService(getBeanName());
+ msg.setMethod("findAll");
+ msg.setArguments(params, pageable);
+ try {
+ JsonNode response = webSocketService.send(msg).get(readTimeout, TimeUnit.MILLISECONDS);
+ if (response != null) {
+
+ List content = new ArrayList<>();
+ JsonNode contentNode = response.get("content");
+ if (contentNode != null && contentNode.isArray()) {
+ for (JsonNode node : contentNode) {
+ T newEntity = createNewEntity();
+ objectMapper.updateValue(newEntity, node);
+ content.add(newEntity);
+ }
+ }
+
+ JsonNode pageNode = response.get("page");
+
+ int total = pageNode.get("totalElements").asInt();
+ int totalPages = pageNode.get("totalPages").asInt();
+ int size = pageNode.get("size").asInt();
+ int number = pageNode.get("number").asInt();
+
+ PageRequest newPageable = PageRequest.of(number, size);
+ return new PageImpl<>(content, newPageable, total);
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ return null;
+ }
+
+
+ public List search(String searchText) {
+ Map params = getSpecification(searchText);
+ List list = findAll(params, Pageable.ofSize(10)).getContent();
+ return list;
+ }
+}
diff --git a/client/src/main/java/com/ecep/contract/service/SaleOrdersService.java b/client/src/main/java/com/ecep/contract/service/SaleOrdersService.java
index 3fa7798..8fb6869 100644
--- a/client/src/main/java/com/ecep/contract/service/SaleOrdersService.java
+++ b/client/src/main/java/com/ecep/contract/service/SaleOrdersService.java
@@ -1,8 +1,11 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.SalesOrder;
import com.ecep.contract.vm.SalesOrderViewModel;
-public class SaleOrdersService implements ViewModelService {
+@Service
+public class SaleOrdersService extends QueryService {
}
diff --git a/client/src/main/java/com/ecep/contract/service/SaleTypeService.java b/client/src/main/java/com/ecep/contract/service/SaleTypeService.java
index b902f90..faa5041 100644
--- a/client/src/main/java/com/ecep/contract/service/SaleTypeService.java
+++ b/client/src/main/java/com/ecep/contract/service/SaleTypeService.java
@@ -1,9 +1,12 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.vm.ProjectSaleTypeViewModel;
-public class SaleTypeService implements ViewModelService {
+@Service
+public class SaleTypeService extends QueryService {
public ProjectSaleType findByName(String name) {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/SalesBillVoucherService.java b/client/src/main/java/com/ecep/contract/service/SalesBillVoucherService.java
index 2e75971..84d0769 100644
--- a/client/src/main/java/com/ecep/contract/service/SalesBillVoucherService.java
+++ b/client/src/main/java/com/ecep/contract/service/SalesBillVoucherService.java
@@ -1,8 +1,11 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.SalesBillVoucher;
import com.ecep.contract.vm.SalesBillVoucherViewModel;
-public class SalesBillVoucherService implements ViewModelService {
+@Service
+public class SalesBillVoucherService extends QueryService {
}
diff --git a/client/src/main/java/com/ecep/contract/service/SalesOrderItemService.java b/client/src/main/java/com/ecep/contract/service/SalesOrderItemService.java
index bdddfa2..1a3a22c 100644
--- a/client/src/main/java/com/ecep/contract/service/SalesOrderItemService.java
+++ b/client/src/main/java/com/ecep/contract/service/SalesOrderItemService.java
@@ -1,8 +1,11 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.SalesOrderItem;
import com.ecep.contract.vm.SalesOrderItemViewModel;
-public class SalesOrderItemService implements ViewModelService {
+@Service
+public class SalesOrderItemService extends QueryService {
}
diff --git a/client/src/main/java/com/ecep/contract/service/SysConfService.java b/client/src/main/java/com/ecep/contract/service/SysConfService.java
index 7f5f633..47fbb03 100644
--- a/client/src/main/java/com/ecep/contract/service/SysConfService.java
+++ b/client/src/main/java/com/ecep/contract/service/SysConfService.java
@@ -5,9 +5,11 @@ import java.util.Map;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
import com.ecep.contract.model.SysConf;
+@Service
public class SysConfService {
public SysConf findById(String id) {
diff --git a/client/src/main/java/com/ecep/contract/service/VendorGroupRequireFileTypeService.java b/client/src/main/java/com/ecep/contract/service/VendorGroupRequireFileTypeService.java
index 8f95ede..e81fa8b 100644
--- a/client/src/main/java/com/ecep/contract/service/VendorGroupRequireFileTypeService.java
+++ b/client/src/main/java/com/ecep/contract/service/VendorGroupRequireFileTypeService.java
@@ -2,15 +2,18 @@ package com.ecep.contract.service;
import java.util.List;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.VendorGroupRequireFileType;
import com.ecep.contract.vm.VendorGroupRequireFileTypeViewModel;
+@Service
public class VendorGroupRequireFileTypeService
- implements ViewModelService {
+ extends QueryService {
public List findByGroupId(Integer id) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'findByGroupId'");
- }
+ }
}
diff --git a/client/src/main/java/com/ecep/contract/service/VendorGroupService.java b/client/src/main/java/com/ecep/contract/service/VendorGroupService.java
index 15013c7..a4e9315 100644
--- a/client/src/main/java/com/ecep/contract/service/VendorGroupService.java
+++ b/client/src/main/java/com/ecep/contract/service/VendorGroupService.java
@@ -1,9 +1,12 @@
package com.ecep.contract.service;
+import org.springframework.stereotype.Service;
+
import com.ecep.contract.model.VendorGroup;
import com.ecep.contract.vm.VendorGroupViewModel;
-public class VendorGroupService implements ViewModelService {
+@Service
+public class VendorGroupService extends QueryService {
public VendorGroup newInstance() {
// TODO Auto-generated method stub
diff --git a/client/src/main/java/com/ecep/contract/service/ViewModelService.java b/client/src/main/java/com/ecep/contract/service/ViewModelService.java
index cca36fc..2b93a4d 100644
--- a/client/src/main/java/com/ecep/contract/service/ViewModelService.java
+++ b/client/src/main/java/com/ecep/contract/service/ViewModelService.java
@@ -5,6 +5,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.poi.ss.formula.functions.T;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
@@ -15,14 +16,27 @@ import com.ecep.contract.vm.IdentityViewModel;
/**
* 视图模型服务接口
*
- * @param 实体类型
- * @param 视图模型类型
- * @author 2025-08-02
+ * @pahor 2025-08-02
*/
public interface ViewModelService>
extends IEntityService {
// > R getRepository();
+ default String getBeanName() {
+ String className = getClass().getSimpleName();
+ // 按照Spring默认的bean命名规则转换
+ // 1. 如果类名长度大于1且首两个字符都是大写,则不转换
+ // 2. 否则,将首字母转为小写,其余部分保持不变
+ if (className.length() > 1 && Character.isUpperCase(className.charAt(0))
+ && Character.isUpperCase(className.charAt(1))) {
+ return className;
+ }
+ // 将首字母转为小写
+ if (className.length() > 0) {
+ className = Character.toLowerCase(className.charAt(0)) + className.substring(1);
+ }
+ return className;
+ }
default T findById(Integer id) {
return null;
@@ -74,7 +88,6 @@ public interface ViewModelService findAll() {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("Unimplemented method 'findAll'");
+ return findAll(null, Pageable.unpaged()).getContent();
}
default Page findAll(Map params, Pageable pageable) {
@@ -94,7 +106,7 @@ public interface ViewModelService params) {
+ default long count(Map params) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'count'");
}
@@ -105,5 +117,4 @@ public interface ViewModelService {
+@Service
+public class YongYouU8Service extends QueryService {
/**
* 生成定时同步任务
@@ -51,4 +53,5 @@ public class YongYouU8Service implements ViewModelService
+ fx:controller="com.ecep.contract.controller.YongYouU8ManagerWindowController">
@@ -45,7 +45,6 @@
diff --git a/client/src/main/resources/ui/company/bank-account.fxml b/client/src/main/resources/ui/company/bank-account.fxml
index 741f6fa..ec05c03 100644
--- a/client/src/main/resources/ui/company/bank-account.fxml
+++ b/client/src/main/resources/ui/company/bank-account.fxml
@@ -7,7 +7,7 @@
+ fx:controller="com.ecep.contract.controller.bank.account.BankAccountWindowController">
diff --git a/client/src/main/resources/ui/company/company-manager.fxml b/client/src/main/resources/ui/company/company-manager.fxml
index 3ea7682..c879eb1 100644
--- a/client/src/main/resources/ui/company/company-manager.fxml
+++ b/client/src/main/resources/ui/company/company-manager.fxml
@@ -3,7 +3,7 @@
+ fx:controller="com.ecep.contract.controller.company.CompanyManagerWindowController">
diff --git a/client/src/main/resources/ui/company/company-tab-bank-account.fxml b/client/src/main/resources/ui/company/company-tab-bank-account.fxml
index a592866..78e1250 100644
--- a/client/src/main/resources/ui/company/company-tab-bank-account.fxml
+++ b/client/src/main/resources/ui/company/company-tab-bank-account.fxml
@@ -3,7 +3,7 @@
+ fx:controller="com.ecep.contract.controller.company.CompanyTabSkinBankAccount">
diff --git a/client/src/main/resources/ui/company/company-tab-black-list.fxml b/client/src/main/resources/ui/company/company-tab-black-list.fxml
index 80340ea..0089a59 100644
--- a/client/src/main/resources/ui/company/company-tab-black-list.fxml
+++ b/client/src/main/resources/ui/company/company-tab-black-list.fxml
@@ -3,7 +3,7 @@
+ fx:controller="com.ecep.contract.controller.tab.CompanyTabSkinBlackReason">
diff --git a/client/src/main/resources/ui/company/company-tab-contact.fxml b/client/src/main/resources/ui/company/company-tab-contact.fxml
index 7ca2113..a37610a 100644
--- a/client/src/main/resources/ui/company/company-tab-contact.fxml
+++ b/client/src/main/resources/ui/company/company-tab-contact.fxml
@@ -3,7 +3,7 @@
+ fx:controller="com.ecep.contract.controller.company.CompanyTabSkinContact">
diff --git a/client/src/main/resources/ui/company/company-tab-contract.fxml b/client/src/main/resources/ui/company/company-tab-contract.fxml
index 6c2afe4..b8c6ffc 100644
--- a/client/src/main/resources/ui/company/company-tab-contract.fxml
+++ b/client/src/main/resources/ui/company/company-tab-contract.fxml
@@ -11,7 +11,7 @@
+ fx:controller="com.ecep.contract.controller.tab.CompanyTabSkinContract">
diff --git a/client/src/main/resources/ui/company/company-tab-file.fxml b/client/src/main/resources/ui/company/company-tab-file.fxml
index e205750..480b4b2 100644
--- a/client/src/main/resources/ui/company/company-tab-file.fxml
+++ b/client/src/main/resources/ui/company/company-tab-file.fxml
@@ -10,7 +10,7 @@
+ fx:controller="com.ecep.contract.controller.tab.CompanyTabSkinFile">
diff --git a/client/src/main/resources/ui/company/company-tab-invoice.fxml b/client/src/main/resources/ui/company/company-tab-invoice.fxml
index d759643..9b3b4f2 100644
--- a/client/src/main/resources/ui/company/company-tab-invoice.fxml
+++ b/client/src/main/resources/ui/company/company-tab-invoice.fxml
@@ -3,7 +3,7 @@
+ fx:controller="com.ecep.contract.controller.tab.CompanyTabSkinInvoice">
diff --git a/client/src/main/resources/ui/company/company-tab-oldname.fxml b/client/src/main/resources/ui/company/company-tab-oldname.fxml
index f0faaee..1a9732a 100644
--- a/client/src/main/resources/ui/company/company-tab-oldname.fxml
+++ b/client/src/main/resources/ui/company/company-tab-oldname.fxml
@@ -3,7 +3,7 @@
+ fx:controller="com.ecep.contract.controller.tab.CompanyTabSkinOldName">
diff --git a/client/src/main/resources/ui/company/company-tab-other.fxml b/client/src/main/resources/ui/company/company-tab-other.fxml
index 0b58372..8d39021 100644
--- a/client/src/main/resources/ui/company/company-tab-other.fxml
+++ b/client/src/main/resources/ui/company/company-tab-other.fxml
@@ -5,7 +5,7 @@
+ fx:controller="com.ecep.contract.controller.tab.CompanyTabSkinOther">
diff --git a/client/src/main/resources/ui/company/company.fxml b/client/src/main/resources/ui/company/company.fxml
index 3432f8e..fcee612 100644
--- a/client/src/main/resources/ui/company/company.fxml
+++ b/client/src/main/resources/ui/company/company.fxml
@@ -7,7 +7,7 @@
+ fx:controller="com.ecep.contract.controller.company.CompanyWindowController">
diff --git a/client/src/main/resources/ui/company/vendor/vendor_manager.fxml b/client/src/main/resources/ui/company/vendor/vendor_manager.fxml
index f7e0654..de7634c 100644
--- a/client/src/main/resources/ui/company/vendor/vendor_manager.fxml
+++ b/client/src/main/resources/ui/company/vendor/vendor_manager.fxml
@@ -4,7 +4,7 @@
+ fx:controller="com.ecep.contract.controller.vendor.CompanyVendorManagerWindowController">
diff --git a/client/src/main/resources/ui/contract/contract-manager.fxml b/client/src/main/resources/ui/contract/contract-manager.fxml
index 21a2ac8..6d4968e 100644
--- a/client/src/main/resources/ui/contract/contract-manager.fxml
+++ b/client/src/main/resources/ui/contract/contract-manager.fxml
@@ -4,7 +4,7 @@
+ fx:controller="com.ecep.contract.controller.contract.ContractManagerWindowController">
diff --git a/client/src/main/resources/ui/contract/contract-tab-bid.fxml b/client/src/main/resources/ui/contract/contract-tab-bid.fxml
index 79d8f38..56642cc 100644
--- a/client/src/main/resources/ui/contract/contract-tab-bid.fxml
+++ b/client/src/main/resources/ui/contract/contract-tab-bid.fxml
@@ -5,7 +5,7 @@
+ fx:controller="com.ecep.contract.controller.contract.ContractTabSkinVendorBid">
diff --git a/client/src/main/resources/ui/contract/contract-tab-ext-vendor-info.fxml b/client/src/main/resources/ui/contract/contract-tab-ext-vendor-info.fxml
index bc23bbb..331e432 100644
--- a/client/src/main/resources/ui/contract/contract-tab-ext-vendor-info.fxml
+++ b/client/src/main/resources/ui/contract/contract-tab-ext-vendor-info.fxml
@@ -11,7 +11,7 @@
-
+
diff --git a/client/src/main/resources/ui/contract/contract-tab-file.fxml b/client/src/main/resources/ui/contract/contract-tab-file.fxml
index 3fc9a71..c16f518 100644
--- a/client/src/main/resources/ui/contract/contract-tab-file.fxml
+++ b/client/src/main/resources/ui/contract/contract-tab-file.fxml
@@ -4,7 +4,7 @@
+ fx:controller="com.ecep.contract.controller.contract.ContractTabSkinFiles">
diff --git a/client/src/main/resources/ui/contract/contract-tab-item-v2.fxml b/client/src/main/resources/ui/contract/contract-tab-item-v2.fxml
index bf91230..4a99060 100644
--- a/client/src/main/resources/ui/contract/contract-tab-item-v2.fxml
+++ b/client/src/main/resources/ui/contract/contract-tab-item-v2.fxml
@@ -5,7 +5,7 @@