feat: 添加CurrentEmployeeInitialedEvent并重构初始化逻辑

添加CurrentEmployeeInitialedEvent事件类,用于在员工初始化完成后发布事件
重构HomeWindowController中的初始化逻辑,使用事件监听方式处理管理员任务调度
更新Unit类实现IdentityEntity和NamedEntity接口
移除SysConf类中多余的注释
在.gitignore中添加config.properties忽略规则
This commit is contained in:
danyz
2025-08-23 01:30:50 +08:00
parent d736f2d3e1
commit 2b013feaf1
8 changed files with 73 additions and 39 deletions

View File

@@ -69,6 +69,8 @@ public class CurrentEmployee extends EmployeeViewModel {
Platform.runLater(() -> {
update(employee);
rolesProperty().setAll(roles);
// 发布事件
SpringApp.context.publishEvent(new CurrentEmployeeInitialedEvent(this));
future.complete(null);
});
});

View File

@@ -0,0 +1,19 @@
package com.ecep.contract.manager;
import lombok.Getter;
import org.springframework.context.ApplicationEvent;
@Getter
public class CurrentEmployeeInitialedEvent extends ApplicationEvent {
private final CurrentEmployee employee;
public CurrentEmployeeInitialedEvent(CurrentEmployee employee) {
super(employee);
this.employee = employee;
}
@Override
public CurrentEmployee getSource() {
return employee;
}
}

View File

@@ -1,5 +1,21 @@
package com.ecep.contract.manager.ds.other.controller;
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.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
import com.ecep.contract.manager.CurrentEmployee;
import com.ecep.contract.manager.CurrentEmployeeInitialedEvent;
import com.ecep.contract.manager.Desktop;
import com.ecep.contract.manager.cloud.old.OldVersionService;
import com.ecep.contract.manager.cloud.rk.CloudRkManagerWindowController;
@@ -23,7 +39,7 @@ 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.FxmlUtils;
import javafx.application.Platform;
import javafx.concurrent.Task;
import javafx.event.ActionEvent;
import javafx.scene.Node;
@@ -36,18 +52,6 @@ import javafx.scene.layout.VBox;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;
import org.controlsfx.control.TaskProgressView;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
@Lazy
@Scope("prototype")
@@ -95,27 +99,31 @@ public class HomeWindowController extends BaseController {
employeeStatusLabel.textProperty().bind(Desktop.instance.getActiveEmployee().getName());
Desktop.instance.getActiveEmployee().initialize().thenRun(() -> {
if (Desktop.instance.getActiveEmployee().isSystemAdministrator()) {
if (logger.isInfoEnabled()) {
logger.info("You are administrator, try schedule sync tasks.");
}
Desktop.instance.getExecutorService().schedule(() -> {
try {
getBean(OldVersionService.class).scheduledTasks(taskProgressView);
} catch (BeansException ignored) {
}
try {
getBean(YongYouU8Service.class).scheduledTasks(taskProgressView);
} catch (BeansException ignored) {
}
try {
getBean(CloudRkService.class).scheduledTasks(taskProgressView);
} catch (BeansException ignored) {
}
}, 15, TimeUnit.SECONDS);
Desktop.instance.getActiveEmployee().initialize();
}
@EventListener
public void onCurrentEmployeeInitialed(CurrentEmployeeInitialedEvent event) {
CurrentEmployee currentEmployee = event.getEmployee();
if (currentEmployee.isSystemAdministrator()) {
if (logger.isInfoEnabled()) {
logger.info("You are administrator, try schedule sync tasks.");
}
});
Desktop.instance.getExecutorService().schedule(() -> {
try {
getBean(OldVersionService.class).scheduledTasks(taskProgressView);
} catch (BeansException ignored) {
}
try {
getBean(YongYouU8Service.class).scheduledTasks(taskProgressView);
} catch (BeansException ignored) {
}
try {
getBean(CloudRkService.class).scheduledTasks(taskProgressView);
} catch (BeansException ignored) {
}
}, 15, TimeUnit.SECONDS);
}
}
@Override

View File

@@ -12,6 +12,7 @@ CREATE TABLE if not exists supplier_ms.INVENTORY
CONSTRAINT pk_nverntory PRIMARY KEY (id)
);
select c1_0.ID,
c1_0.AMOUNT,
c1_0.CODE,

View File

@@ -14,7 +14,6 @@ import java.time.Instant;
@Setter
@Entity
@Table(name = "SYS_CONF", schema = "supplier_ms")
// @org.springframework.data.relational.core.mapping.Table("SYS_CONF")
public class SysConf {
@Id
@Column(name = "ID", nullable = false)

View File

@@ -5,11 +5,14 @@ import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
/**
* 单位
*/
@Getter
@Setter
@jakarta.persistence.Entity
@Table(name = "UNIT", schema = "supplier_ms")
public class Unit {
public class Unit implements IdentityEntity , NamedEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)