From 5575f0c17d658e7dbf2fec6b944d35a5a80e8dcd Mon Sep 17 00:00:00 2001 From: danyz Date: Sun, 24 Aug 2025 22:23:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=9D=83=E9=99=90=E7=AE=A1=E7=90=86):=20?= =?UTF-8?q?=E4=B8=BA=E8=A7=92=E8=89=B2=E5=92=8C=E5=8A=9F=E8=83=BD=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=90=AF=E7=94=A8=E7=8A=B6=E6=80=81=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在EMPLOYEE_ROLE表中添加IS_ACTIVE字段,默认值为TRUE - 在EmployeeRole和Function实体类中添加active字段 - 在角色和功能管理界面添加启用状态列和控件 - 实现TaskMonitorCenter与状态栏标签的绑定 - 更新相关ViewModel以支持启用状态 - 配置Maven仓库地址 --- docs/structs.sql | 2 ++ pom.xml | 17 ++++++++++++++++- .../other/controller/HomeWindowController.java | 3 ++- ...mployeeFunctionsManagerWindowController.java | 2 ++ .../permission/EmployeeRoleManagerSkin.java | 2 ++ .../EmployeeRoleManagerWindowController.java | 2 ++ .../permission/EmployeeRoleTabSkinBase.java | 1 + .../EmployeeRoleWindowController.java | 3 +++ .../permission/FunctionManagerSkin.java | 4 ++++ .../permission/FunctionTabSkinBase.java | 1 + .../permission/FunctionWindowController.java | 2 ++ .../manager/ds/other/model/EmployeeRole.java | 5 +++++ .../ds/other/vo/EmployeeRoleViewModel.java | 6 ++++++ .../manager/ds/other/vo/FunctionViewModel.java | 7 +++++++ .../manager/ui/task/TaskMonitorCenter.java | 15 +++++++++++++++ src/main/resources/ui/employee/function.fxml | 2 ++ .../ui/employee/functions-manager.fxml | 1 + src/main/resources/ui/employee/role.fxml | 2 +- .../resources/ui/employee/roles-manager.fxml | 1 + src/main/resources/ui/home.fxml | 3 ++- .../ContractManagerApplicationTests.java | 13 ------------- 21 files changed, 77 insertions(+), 17 deletions(-) create mode 100644 docs/structs.sql delete mode 100644 src/test/java/com/ecep/contract/manager/ContractManagerApplicationTests.java diff --git a/docs/structs.sql b/docs/structs.sql new file mode 100644 index 0000000..a200741 --- /dev/null +++ b/docs/structs.sql @@ -0,0 +1,2 @@ +ALTER TABLE supplier_ms.EMPLOYEE_ROLE +ADD COLUMN IS_ACTIVE BOOLEAN DEFAULT TRUE; \ No newline at end of file diff --git a/pom.xml b/pom.xml index 805e2f1..3d2c263 100644 --- a/pom.xml +++ b/pom.xml @@ -163,7 +163,22 @@ runtime - + + + gitea + http://10.84.210.110/api/packages/songqq/maven + + + + + gitea + http://10.84.210.110/api/packages/songqq/maven + + + gitea + http://10.84.210.110/api/packages/songqq/maven + + 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 a83a1ac..f4248a5 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 @@ -74,6 +74,7 @@ public class HomeWindowController extends BaseController { public Button openVendorManagerWindow; public Button openCustomManagerWindow; public TaskProgressView> taskProgressView; + public Label taskMonitorLabel; public Label employeeStatusLabel; public void initialize() { @@ -99,7 +100,7 @@ public class HomeWindowController extends BaseController { ((Label) placeholder).setText("没有运行的任务"); employeeStatusLabel.textProperty().bind(Desktop.instance.getActiveEmployee().getName()); - + Desktop.instance.getTaskMonitorCenter().bindStatusLabel(taskMonitorLabel); Desktop.instance.getActiveEmployee().initialize(); } diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeFunctionsManagerWindowController.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeFunctionsManagerWindowController.java index ba59fcb..4f7af77 100644 --- a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeFunctionsManagerWindowController.java +++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeFunctionsManagerWindowController.java @@ -45,6 +45,8 @@ public class EmployeeFunctionsManagerWindowController public TableColumn iconColumn; @FXML public TableColumn descriptionColumn; + @FXML + public TableColumn activeColumn; @Override public void show(Stage stage) { diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleManagerSkin.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleManagerSkin.java index 0a47e96..4b8d24d 100644 --- a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleManagerSkin.java +++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleManagerSkin.java @@ -29,6 +29,8 @@ public class EmployeeRoleManagerSkin controller.systemAdministratorColumn.setCellFactory(param -> new CheckBoxTableCell<>()); controller.managerColumn.setCellValueFactory(param -> param.getValue().getManager()); controller.managerColumn.setCellFactory(CheckBoxTableCell.forTableColumn(controller.managerColumn)); + controller.activeColumn.setCellValueFactory(param -> param.getValue().getActive()); + controller.activeColumn.setCellFactory(CheckBoxTableCell.forTableColumn(controller.activeColumn)); } @Override diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleManagerWindowController.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleManagerWindowController.java index 3f513cb..f3473f0 100644 --- a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleManagerWindowController.java +++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleManagerWindowController.java @@ -15,6 +15,7 @@ import com.ecep.contract.manager.ui.AbstManagerWindowController; import com.ecep.contract.manager.ui.FxmlPath; import javafx.event.ActionEvent; +import javafx.fxml.FXML; import javafx.scene.control.TableColumn; import javafx.stage.Stage; @@ -36,6 +37,7 @@ public class EmployeeRoleManagerWindowController public TableColumn nameColumn; public TableColumn systemAdministratorColumn; public TableColumn managerColumn; + public TableColumn activeColumn; @Override protected EmployeeRoleManagerSkin createDefaultSkin() { diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleTabSkinBase.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleTabSkinBase.java index b32afd0..ff24674 100644 --- a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleTabSkinBase.java +++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleTabSkinBase.java @@ -25,5 +25,6 @@ public class EmployeeRoleTabSkinBase extends AbstEmployeeRoleBasedTabSkin implem controller.systemAdministratorField.selectedProperty().bind(viewModel.getSystemAdministrator()); } controller.managerField.selectedProperty().bindBidirectional(viewModel.getManager()); + controller.activeField.selectedProperty().bindBidirectional(viewModel.getActive()); } } diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleWindowController.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleWindowController.java index 62e2bed..d8fbb4f 100644 --- a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleWindowController.java +++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/EmployeeRoleWindowController.java @@ -7,6 +7,8 @@ import com.ecep.contract.manager.ds.other.vo.EmployeeRoleViewModel; import com.ecep.contract.manager.ui.AbstEntityController; import com.ecep.contract.manager.ui.FxmlPath; import com.ecep.contract.manager.ui.ViewModelService; + +import javafx.fxml.FXML; import javafx.scene.control.*; import javafx.scene.layout.BorderPane; import javafx.stage.Window; @@ -44,6 +46,7 @@ public class EmployeeRoleWindowController extends AbstEntityController param.getValue().getDescription()); controller.descriptionColumn.setCellFactory(TextFieldTableCell.forTableColumn()); controller.descriptionColumn.setOnEditCommit(this::onDescriptionColumnEditCommit); + + controller.activeColumn.setCellValueFactory(param -> param.getValue().getActive()); + controller.activeColumn.setCellFactory(CheckBoxTableCell.forTableColumn(controller.activeColumn)); } private void onNameColumnEditCommit(TableColumn.CellEditEvent event) { diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionTabSkinBase.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionTabSkinBase.java index c0f7ba4..4ea7ad7 100644 --- a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionTabSkinBase.java +++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionTabSkinBase.java @@ -26,5 +26,6 @@ public class FunctionTabSkinBase controller.controllerField.textProperty().bindBidirectional(viewModel.getController()); controller.iconField.textProperty().bindBidirectional(viewModel.getIcon()); controller.descriptionField.textProperty().bindBidirectional(viewModel.getDescription()); + controller.activeField.selectedProperty().bindBidirectional(viewModel.getActive()); } } \ No newline at end of file diff --git a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionWindowController.java b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionWindowController.java index 8825b24..da4e80a 100644 --- a/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionWindowController.java +++ b/src/main/java/com/ecep/contract/manager/ds/other/controller/permission/FunctionWindowController.java @@ -51,6 +51,8 @@ public class FunctionWindowController extends AbstEntityController { private SimpleStringProperty name = new SimpleStringProperty(); private SimpleBooleanProperty systemAdministrator = new SimpleBooleanProperty(); private SimpleBooleanProperty manager = new SimpleBooleanProperty(); + private SimpleBooleanProperty active = new SimpleBooleanProperty(); public static EmployeeRoleViewModel from(EmployeeRole v) { EmployeeRoleViewModel model = new EmployeeRoleViewModel(); @@ -30,6 +31,7 @@ public class EmployeeRoleViewModel extends IdentityViewModel { getName().set(v.getName()); getSystemAdministrator().set(v.isSystemAdministrator()); getManager().set(v.isManager()); + getActive().set(v.isActive()); } @Override @@ -51,6 +53,10 @@ public class EmployeeRoleViewModel extends IdentityViewModel { v.setManager(getManager().get()); modified = true; } + if (!Objects.equals(getActive().get(), v.isActive())) { + v.setActive(getActive().get()); + modified = true; + } return modified; } diff --git a/src/main/java/com/ecep/contract/manager/ds/other/vo/FunctionViewModel.java b/src/main/java/com/ecep/contract/manager/ds/other/vo/FunctionViewModel.java index b3b82a6..a61274a 100644 --- a/src/main/java/com/ecep/contract/manager/ds/other/vo/FunctionViewModel.java +++ b/src/main/java/com/ecep/contract/manager/ds/other/vo/FunctionViewModel.java @@ -4,6 +4,7 @@ import java.util.Objects; import com.ecep.contract.manager.ds.other.model.Function; +import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleStringProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -16,6 +17,7 @@ public class FunctionViewModel extends IdentityViewModel { private SimpleStringProperty controller = new SimpleStringProperty(); private SimpleStringProperty icon = new SimpleStringProperty(); private SimpleStringProperty description = new SimpleStringProperty(); + private SimpleBooleanProperty active = new SimpleBooleanProperty(); public static FunctionViewModel from(Function v) { FunctionViewModel model = new FunctionViewModel(); @@ -32,6 +34,7 @@ public class FunctionViewModel extends IdentityViewModel { getController().set(v.getController()); getIcon().set(v.getIcon()); getDescription().set(v.getDescription()); + getActive().set(v.isActive()); } @Override @@ -57,6 +60,10 @@ public class FunctionViewModel extends IdentityViewModel { v.setDescription(description.get()); modified = true; } + if (active.get() != v.isActive()) { + v.setActive(active.get()); + modified = true; + } return modified; } } diff --git a/src/main/java/com/ecep/contract/manager/ui/task/TaskMonitorCenter.java b/src/main/java/com/ecep/contract/manager/ui/task/TaskMonitorCenter.java index dbea3d1..171373b 100644 --- a/src/main/java/com/ecep/contract/manager/ui/task/TaskMonitorCenter.java +++ b/src/main/java/com/ecep/contract/manager/ui/task/TaskMonitorCenter.java @@ -10,11 +10,15 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.ecep.contract.manager.Desktop; +import com.ecep.contract.manager.ui.BaseController; import com.ecep.contract.manager.ui.Tasker; import javafx.application.Platform; import javafx.collections.FXCollections; +import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; +import javafx.scene.control.Label; +import javafx.scene.control.Tooltip; import lombok.Getter; /** @@ -150,4 +154,15 @@ public class TaskMonitorCenter { MonitoredTask registerTask = registerTask(task); Desktop.instance.getExecutorService().submit(registerTask); } + + public void bindStatusLabel(Label monitorLabel) { + Tooltip tooltip = new Tooltip("当前运行任务数: " + activeTasks.size()); + monitorLabel.setTooltip(tooltip); + activeTasks.addListener((ListChangeListener>) change -> { + tooltip.setText("当前运行任务数: " + activeTasks.size()); + }); + monitorLabel.setOnMouseClicked(event -> { + BaseController.show(TaskMonitorViewController.class, monitorLabel.getScene().getWindow()); + }); + } } \ No newline at end of file diff --git a/src/main/resources/ui/employee/function.fxml b/src/main/resources/ui/employee/function.fxml index cc68a87..d4c6933 100644 --- a/src/main/resources/ui/employee/function.fxml +++ b/src/main/resources/ui/employee/function.fxml @@ -69,6 +69,8 @@