diff --git a/src/main/java/com/ecep/contract/manager/AppV2.java b/src/main/java/com/ecep/contract/manager/AppV2.java
index 7f50025..9a04b8e 100644
--- a/src/main/java/com/ecep/contract/manager/AppV2.java
+++ b/src/main/java/com/ecep/contract/manager/AppV2.java
@@ -25,7 +25,7 @@ public class AppV2 {
System.out.println("AppV2.done");
}
- public static final String DEFAULT_DB_HOST = "10.84.209.145"; // "db-server1.ecctrl.com"
+ public static final String DEFAULT_DB_HOST = "10.84.209.154"; // "db-server1.ecctrl.com"
public static final String DEFAULT_DB_PORT = "3306";
public static final String DEFAULT_DB_USERNAME = "supplier_ms";
public static final String DEFAULT_DB_PASSWORD = "[TPdseO!JKMmlrpf";
diff --git a/src/main/java/com/ecep/contract/manager/CurrentEmployee.java b/src/main/java/com/ecep/contract/manager/CurrentEmployee.java
index 9085431..53e7686 100644
--- a/src/main/java/com/ecep/contract/manager/CurrentEmployee.java
+++ b/src/main/java/com/ecep/contract/manager/CurrentEmployee.java
@@ -1,25 +1,29 @@
package com.ecep.contract.manager;
-import com.ecep.contract.manager.ds.other.model.Employee;
-import com.ecep.contract.manager.ds.other.model.EmployeeRole;
-import com.ecep.contract.manager.ds.other.service.EmployeeService;
-import com.ecep.contract.manager.ds.other.vo.EmployeeViewModel;
-import javafx.application.Platform;
-import javafx.beans.property.SimpleListProperty;
-import javafx.beans.property.SimpleObjectProperty;
-import javafx.collections.FXCollections;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import java.util.List;
import java.util.Locale;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.ecep.contract.manager.ds.other.model.Employee;
+import com.ecep.contract.manager.ds.other.model.EmployeeRole;
+import com.ecep.contract.manager.ds.other.service.EmployeeService;
+import com.ecep.contract.manager.ds.other.vo.EmployeeViewModel;
+
+import javafx.application.Platform;
+import javafx.beans.property.SimpleListProperty;
+import javafx.beans.property.SimpleObjectProperty;
+import javafx.collections.FXCollections;
+import lombok.ToString;
+
/**
* 当前登录用户
*/
+@ToString(of = {"id", "name", "email", "phone", "roles"})
public class CurrentEmployee extends EmployeeViewModel {
private static final Logger logger = LoggerFactory.getLogger(CurrentEmployee.class);
/**
diff --git a/src/main/java/com/ecep/contract/manager/Desktop.java b/src/main/java/com/ecep/contract/manager/Desktop.java
index 0e7d470..07ce5a7 100644
--- a/src/main/java/com/ecep/contract/manager/Desktop.java
+++ b/src/main/java/com/ecep/contract/manager/Desktop.java
@@ -22,7 +22,6 @@ import lombok.Getter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
-import org.springframework.util.StringUtils;
import java.io.File;
import java.io.FileInputStream;
@@ -31,7 +30,6 @@ import java.net.URL;
import java.util.List;
import java.util.Properties;
import java.util.concurrent.*;
-import java.util.function.Consumer;
import java.util.logging.Level;
/**
@@ -41,74 +39,9 @@ import java.util.logging.Level;
* Created by ecep on 2017/05/08.
*/
public class Desktop extends Application {
- private static final Logger logger = LoggerFactory.getLogger(Desktop.class);
+ public static final Logger logger = LoggerFactory.getLogger(Desktop.class);
public static Desktop instance;
- /**
- * 在默认浏览器中打开指定的URL。
- *
- * 该函数使用JavaFX的HostServices类来调用系统默认的浏览器,并打开传入的URL。
- *
- * @param url 要在浏览器中打开的URL字符串。该参数不能为空,且应为有效的URL格式。
- */
- public static void showInBrowse(String url) {
- instance.getHostServices().showDocument(url);
- }
-
- /**
- * 在系统的文件资源管理器中打开指定的文件夹。
- *
- * 该方法首先尝试使用 java.awt.Desktop API 打开文件夹。如果该 API 不支持,
- * 则在 Windows 系统中使用 explorer.exe 打开文件夹。
- *
- * @param dir 要打开的文件夹对象。如果为 null 或无效路径,可能会抛出异常。
- * @throws RuntimeException 如果使用 java.awt.Desktop 打开文件夹时发生 IOException,
- * 则将其包装为 RuntimeException 抛出。
- */
- public static void showInExplorer(File dir) {
- if (java.awt.Desktop.isDesktopSupported()) {
- try {
- java.awt.Desktop.getDesktop().open(dir);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- } else {
- try {
- // 在Windows中使用explorer.exe打开文件夹,路径用双引号括起来
- Process process = Runtime.getRuntime().exec(
- new String[] { "explorer.exe", "\"" + dir.getAbsolutePath() + "\"" }, null, new File("."));
- // process.waitFor();
- } catch (IOException e) {
- if (logger.isDebugEnabled()) {
- logger.debug("Unable open {}", dir.getAbsolutePath(), e);
- }
- }
- }
- }
-
- public static void checkAndShowInExplorer(String path, Consumer consumer) {
- if (!StringUtils.hasText(path)) {
- consumer.accept("文件/目录为空,无法打开");
- return;
- }
- File file = new File(path);
- if (!file.exists()) {
- if (file.isFile()) {
- consumer.accept("文件 " + file.getAbsolutePath() + " 不存在,请确认");
- } else {
- consumer.accept("目录 " + file.getAbsolutePath() + " 不存在,请确认");
- }
- return;
- }
-
- try {
- Desktop.showInExplorer(file);
- consumer.accept("打开文件/目录 " + path);
- } catch (Exception e) {
- consumer.accept("打开文件错误:" + e.getMessage());
- }
- }
-
public static void shutdown() {
if (logger.isDebugEnabled()) {
logger.debug("shutdown");
@@ -249,7 +182,6 @@ public class Desktop extends Application {
beanFactory.registerSingleton("scheduledExecutorService", getExecutorService());
beanFactory.registerSingleton("taskMonitorCenter", taskMonitorCenter);
-
});
try {
diff --git a/src/main/java/com/ecep/contract/manager/MyPersistentCookieStore.java b/src/main/java/com/ecep/contract/manager/MyPersistentCookieStore.java
index 109ad1f..afbfcd0 100644
--- a/src/main/java/com/ecep/contract/manager/MyPersistentCookieStore.java
+++ b/src/main/java/com/ecep/contract/manager/MyPersistentCookieStore.java
@@ -1,17 +1,26 @@
package com.ecep.contract.manager;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
import java.net.CookieStore;
import java.net.HttpCookie;
import java.net.URI;
import java.net.URISyntaxException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
public class MyPersistentCookieStore implements CookieStore {
diff --git a/src/main/java/com/ecep/contract/manager/cloud/tyc/CloudTycService.java b/src/main/java/com/ecep/contract/manager/cloud/tyc/CloudTycService.java
index 787b694..1f2d0ed 100644
--- a/src/main/java/com/ecep/contract/manager/cloud/tyc/CloudTycService.java
+++ b/src/main/java/com/ecep/contract/manager/cloud/tyc/CloudTycService.java
@@ -156,7 +156,7 @@ public class CloudTycService implements ViewModelService files) {
diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/HomeWindowController.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/HomeWindowController.java
index ce8a810..9497f0b 100644
--- a/src/main/java/com/ecep/contract/manager/ds/other/controller/HomeWindowController.java
+++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/HomeWindowController.java
@@ -38,6 +38,7 @@ import com.ecep.contract.manager.ds.vendor.controller.CompanyVendorManagerWindow
import com.ecep.contract.manager.ui.BaseController;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.task.TaskMonitorViewController;
+import com.ecep.contract.manager.util.DesktopUtils;
import com.ecep.contract.manager.util.FxmlUtils;
import javafx.concurrent.Task;
@@ -173,7 +174,7 @@ public class HomeWindowController extends BaseController {
public void openInBrowse(ActionEvent event) {
MenuItem source = (MenuItem) event.getSource();
String url = (String) source.getUserData();
- Desktop.showInBrowse(url);
+ DesktopUtils.showInBrowse(url);
}
public void openGroupRKResourceWindow(ActionEvent event) {
diff --git a/src/main/java/com/ecep/contract/manager/ds/project/controller/bid/ProjectBidTabSkinBase.java b/src/main/java/com/ecep/contract/manager/ds/project/controller/bid/ProjectBidTabSkinBase.java
index 4e69007..1d7da43 100644
--- a/src/main/java/com/ecep/contract/manager/ds/project/controller/bid/ProjectBidTabSkinBase.java
+++ b/src/main/java/com/ecep/contract/manager/ds/project/controller/bid/ProjectBidTabSkinBase.java
@@ -1,6 +1,5 @@
package com.ecep.contract.manager.ds.project.controller.bid;
-import com.ecep.contract.manager.Desktop;
import com.ecep.contract.manager.ds.company.CompanyStringConverter;
import com.ecep.contract.manager.ds.company.model.Company;
import com.ecep.contract.manager.ds.company.service.CompanyService;
@@ -29,6 +28,7 @@ import com.ecep.contract.manager.ds.project.service.ProjectService;
import com.ecep.contract.manager.ds.project.vo.ProjectBidViewModel;
import com.ecep.contract.manager.ui.AbstEntityBasedTabSkin;
import com.ecep.contract.manager.ui.TabSkin;
+import com.ecep.contract.manager.util.DesktopUtils;
import com.ecep.contract.manager.util.MyDateTimeUtils;
import com.ecep.contract.manager.util.UITools;
import javafx.application.Platform;
@@ -204,7 +204,7 @@ public class ProjectBidTabSkinBase
controller.authorizationFileField.textProperty().bind(viewModel.getAuthorizationFile().map(File::getName));
controller.openAuthorizationFileBtn.setOnAction(event -> {
- Desktop.showInExplorer(viewModel.getAuthorizationFile().get());
+ DesktopUtils.showInExplorer(viewModel.getAuthorizationFile().get());
});
controller.openAuthorizationFileBtn.disableProperty().bind(viewModel.getAuthorizationFile().isNull());
controller.changeAuthorizationFileBtn.setOnAction(this::onChangeAuthorizationFileAction);
@@ -212,7 +212,7 @@ public class ProjectBidTabSkinBase
controller.bidAcceptanceLetterFileField.textProperty()
.bind(viewModel.getBidAcceptanceLetterFile().map(File::getName));
controller.openBidAcceptanceLetterFileBtn.setOnAction(event -> {
- Desktop.showInExplorer(viewModel.getBidAcceptanceLetterFile().get());
+ DesktopUtils.showInExplorer(viewModel.getBidAcceptanceLetterFile().get());
});
controller.openBidAcceptanceLetterFileBtn.disableProperty()
.bind(viewModel.getBidAcceptanceLetterFile().isNull());
diff --git a/src/main/java/com/ecep/contract/manager/ds/project/controller/cost/ProjectCostTabSkinBase.java b/src/main/java/com/ecep/contract/manager/ds/project/controller/cost/ProjectCostTabSkinBase.java
index 16b7f64..f0d6029 100644
--- a/src/main/java/com/ecep/contract/manager/ds/project/controller/cost/ProjectCostTabSkinBase.java
+++ b/src/main/java/com/ecep/contract/manager/ds/project/controller/cost/ProjectCostTabSkinBase.java
@@ -1,6 +1,5 @@
package com.ecep.contract.manager.ds.project.controller.cost;
-import com.ecep.contract.manager.Desktop;
import com.ecep.contract.manager.ds.contract.ContractFileType;
import com.ecep.contract.manager.ds.contract.model.Contract;
import com.ecep.contract.manager.ds.contract.model.ContractFile;
@@ -13,6 +12,7 @@ import com.ecep.contract.manager.ds.project.service.ProjectService;
import com.ecep.contract.manager.ds.project.vo.ProjectCostViewModel;
import com.ecep.contract.manager.ui.AbstEntityBasedTabSkin;
import com.ecep.contract.manager.ui.TabSkin;
+import com.ecep.contract.manager.util.DesktopUtils;
import com.ecep.contract.manager.util.MyDateTimeUtils;
import com.ecep.contract.manager.util.UITools;
import javafx.application.Platform;
@@ -68,7 +68,7 @@ public class ProjectCostTabSkinBase
@Override
public void initializeTab() {
controller.openFileBtn.setOnAction(event -> {
- Desktop.showInExplorer(viewModel.getAuthorizationFile().get());
+ DesktopUtils.showInExplorer(viewModel.getAuthorizationFile().get());
});
controller.openFileBtn.disableProperty().bind(viewModel.getAuthorizationFile().isNull());
controller.changeFileBtn.setOnAction(this::onChangeAuthorizationFileAction);
diff --git a/src/main/java/com/ecep/contract/manager/ds/project/controller/quotation/ProjectQuotationTabSkinBase.java b/src/main/java/com/ecep/contract/manager/ds/project/controller/quotation/ProjectQuotationTabSkinBase.java
index e831e0d..1c62d7d 100644
--- a/src/main/java/com/ecep/contract/manager/ds/project/controller/quotation/ProjectQuotationTabSkinBase.java
+++ b/src/main/java/com/ecep/contract/manager/ds/project/controller/quotation/ProjectQuotationTabSkinBase.java
@@ -1,6 +1,5 @@
package com.ecep.contract.manager.ds.project.controller.quotation;
-import com.ecep.contract.manager.Desktop;
import com.ecep.contract.manager.ds.company.CompanyStringConverter;
import com.ecep.contract.manager.ds.company.model.Company;
import com.ecep.contract.manager.ds.company.service.CompanyService;
@@ -26,6 +25,7 @@ import com.ecep.contract.manager.ds.project.service.ProjectService;
import com.ecep.contract.manager.ds.project.vo.ProjectQuotationViewModel;
import com.ecep.contract.manager.ui.AbstEntityBasedTabSkin;
import com.ecep.contract.manager.ui.TabSkin;
+import com.ecep.contract.manager.util.DesktopUtils;
import com.ecep.contract.manager.util.MyDateTimeUtils;
import com.ecep.contract.manager.util.UITools;
import javafx.application.Platform;
@@ -101,7 +101,7 @@ public class ProjectQuotationTabSkinBase
@Override
public void initializeTab() {
controller.openFileBtn.setOnAction(event -> {
- Desktop.showInExplorer(viewModel.getAuthorizationFile().get());
+ DesktopUtils.showInExplorer(viewModel.getAuthorizationFile().get());
});
controller.openFileBtn.disableProperty().bind(viewModel.getAuthorizationFile().isNull());
controller.changeFileBtn.setOnAction(this::onChangeAuthorizationFileAction);
diff --git a/src/main/java/com/ecep/contract/manager/ds/vendor/controller/CompanyVendorWindowController.java b/src/main/java/com/ecep/contract/manager/ds/vendor/controller/CompanyVendorWindowController.java
index 7d25993..b7722fd 100644
--- a/src/main/java/com/ecep/contract/manager/ds/vendor/controller/CompanyVendorWindowController.java
+++ b/src/main/java/com/ecep/contract/manager/ds/vendor/controller/CompanyVendorWindowController.java
@@ -1,6 +1,5 @@
package com.ecep.contract.manager.ds.vendor.controller;
-import com.ecep.contract.manager.Desktop;
import com.ecep.contract.manager.ds.company.service.CompanyContactService;
import com.ecep.contract.manager.ds.company.service.CompanyService;
import com.ecep.contract.manager.ds.vendor.model.CompanyVendor;
@@ -9,6 +8,8 @@ import com.ecep.contract.manager.ds.vendor.service.CompanyVendorService;
import com.ecep.contract.manager.ds.vendor.vo.CompanyVendorViewModel;
import com.ecep.contract.manager.ui.AbstEntityController;
import com.ecep.contract.manager.ui.FxmlPath;
+import com.ecep.contract.manager.util.DesktopUtils;
+
import javafx.event.ActionEvent;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
@@ -106,7 +107,7 @@ public class CompanyVendorWindowController extends AbstEntityController files) {
diff --git a/src/main/java/com/ecep/contract/manager/ds/vendor/controller/approved_list/CompanyVendorApprovedListTabSkinFiles.java b/src/main/java/com/ecep/contract/manager/ds/vendor/controller/approved_list/CompanyVendorApprovedListTabSkinFiles.java
index 087a6b9..e143068 100644
--- a/src/main/java/com/ecep/contract/manager/ds/vendor/controller/approved_list/CompanyVendorApprovedListTabSkinFiles.java
+++ b/src/main/java/com/ecep/contract/manager/ds/vendor/controller/approved_list/CompanyVendorApprovedListTabSkinFiles.java
@@ -1,6 +1,5 @@
package com.ecep.contract.manager.ds.vendor.controller.approved_list;
-import com.ecep.contract.manager.Desktop;
import com.ecep.contract.manager.ds.company.CompanyFileUtils;
import com.ecep.contract.manager.ds.vendor.model.CompanyVendorApprovedFile;
import com.ecep.contract.manager.ds.vendor.model.CompanyVendorApprovedList;
@@ -10,6 +9,7 @@ import com.ecep.contract.manager.ds.vendor.vo.CompanyVendorApprovedListViewModel
import com.ecep.contract.manager.ui.AbstEntityTableTabSkin;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.TabSkin;
+import com.ecep.contract.manager.util.DesktopUtils;
import com.ecep.contract.manager.util.SpecificationUtils;
import javafx.event.ActionEvent;
import javafx.scene.control.Tab;
@@ -101,7 +101,7 @@ public class CompanyVendorApprovedListTabSkinFiles
setStatus("文件不存在 " + file.getName());
return;
}
- Desktop.showInExplorer(file);
+ DesktopUtils.showInExplorer(file);
}
}
diff --git a/src/main/java/com/ecep/contract/manager/ds/vendor/controller/approved_list/CompanyVendorApprovedListWindowController.java b/src/main/java/com/ecep/contract/manager/ds/vendor/controller/approved_list/CompanyVendorApprovedListWindowController.java
index 80e71fa..38738a6 100644
--- a/src/main/java/com/ecep/contract/manager/ds/vendor/controller/approved_list/CompanyVendorApprovedListWindowController.java
+++ b/src/main/java/com/ecep/contract/manager/ds/vendor/controller/approved_list/CompanyVendorApprovedListWindowController.java
@@ -1,11 +1,11 @@
package com.ecep.contract.manager.ds.vendor.controller.approved_list;
-import com.ecep.contract.manager.Desktop;
import com.ecep.contract.manager.ds.vendor.model.CompanyVendorApprovedList;
import com.ecep.contract.manager.ds.vendor.service.CompanyVendorApprovedListService;
import com.ecep.contract.manager.ds.vendor.vo.CompanyVendorApprovedListViewModel;
import com.ecep.contract.manager.ui.AbstEntityController;
import com.ecep.contract.manager.ui.FxmlPath;
+import com.ecep.contract.manager.util.DesktopUtils;
import com.ecep.contract.manager.util.UITools;
import javafx.event.ActionEvent;
import javafx.scene.control.*;
@@ -86,7 +86,7 @@ public class CompanyVendorApprovedListWindowController
setStatus("目录错误,不存在");
return;
}
- Desktop.showInExplorer(file);
+ DesktopUtils.showInExplorer(file);
}
public void onVendorApprovedListVerifyAction(ActionEvent event) {
diff --git a/src/main/java/com/ecep/contract/manager/util/DesktopUtils.java b/src/main/java/com/ecep/contract/manager/util/DesktopUtils.java
new file mode 100644
index 0000000..7390a10
--- /dev/null
+++ b/src/main/java/com/ecep/contract/manager/util/DesktopUtils.java
@@ -0,0 +1,78 @@
+package com.ecep.contract.manager.util;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.function.Consumer;
+
+import org.springframework.util.StringUtils;
+
+import com.ecep.contract.manager.Desktop;
+
+public class DesktopUtils {
+
+ /**
+ * 在默认浏览器中打开指定的URL。
+ *
+ * 该函数使用JavaFX的HostServices类来调用系统默认的浏览器,并打开传入的URL。
+ *
+ * @param url 要在浏览器中打开的URL字符串。该参数不能为空,且应为有效的URL格式。
+ */
+ public static void showInBrowse(String url) {
+ Desktop.instance.getHostServices().showDocument(url);
+ }
+
+ /**
+ * 在系统的文件资源管理器中打开指定的文件夹。
+ *
+ * 该方法首先尝试使用 java.awt.Desktop API 打开文件夹。如果该 API 不支持,
+ * 则在 Windows 系统中使用 explorer.exe 打开文件夹。
+ *
+ * @param dir 要打开的文件夹对象。如果为 null 或无效路径,可能会抛出异常。
+ * @throws RuntimeException 如果使用 java.awt.Desktop 打开文件夹时发生 IOException,
+ * 则将其包装为 RuntimeException 抛出。
+ */
+ public static void showInExplorer(File dir) {
+ if (java.awt.Desktop.isDesktopSupported()) {
+ try {
+ java.awt.Desktop.getDesktop().open(dir);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ } else {
+ try {
+ // 在Windows中使用explorer.exe打开文件夹,路径用双引号括起来
+ Process process = Runtime.getRuntime().exec(
+ new String[] { "explorer.exe", "\"" + dir.getAbsolutePath() + "\"" }, null, new File("."));
+ // process.waitFor();
+ } catch (IOException e) {
+ if (Desktop.logger.isDebugEnabled()) {
+ Desktop.logger.debug("Unable open {}", dir.getAbsolutePath(), e);
+ }
+ }
+ }
+ }
+
+ public static void checkAndShowInExplorer(String path, Consumer consumer) {
+ if (!StringUtils.hasText(path)) {
+ consumer.accept("文件/目录为空,无法打开");
+ return;
+ }
+ File file = new File(path);
+ if (!file.exists()) {
+ if (file.isFile()) {
+ consumer.accept("文件 " + file.getAbsolutePath() + " 不存在,请确认");
+ } else {
+ consumer.accept("目录 " + file.getAbsolutePath() + " 不存在,请确认");
+ }
+ return;
+ }
+
+ try {
+ showInExplorer(file);
+ consumer.accept("打开文件/目录 " + path);
+ } catch (Exception e) {
+ consumer.accept("打开文件错误:" + e.getMessage());
+ }
+ }
+
+}