refactor(u8配置): 重构配置管理相关代码
将配置管理相关代码重构为ConfigBounder接口及其实现类,提取公共逻辑到AbstractConfigBounder基类 修复公司创建日期配置的显示问题,使用更直观的中文描述 将合同同步相关配置常量集中到ContractCtx中管理
This commit is contained in:
@@ -1,14 +1,5 @@
|
|||||||
package com.ecep.contract.manager.cloud.u8;
|
package com.ecep.contract.manager.cloud.u8;
|
||||||
|
|
||||||
import com.ecep.contract.manager.SpringApp;
|
|
||||||
import com.ecep.contract.manager.ds.contract.service.ContractService;
|
|
||||||
import com.ecep.contract.manager.ds.contract.tasker.AbstContractRepairTasker;
|
|
||||||
import com.ecep.contract.manager.ui.MessageHolder;
|
|
||||||
import lombok.Setter;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
|
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -16,21 +7,45 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.BeansException;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import com.ecep.contract.manager.SpringApp;
|
||||||
|
import com.ecep.contract.manager.cloud.u8.ctx.ContractCtx;
|
||||||
|
import com.ecep.contract.manager.ds.contract.tasker.AbstContractRepairTasker;
|
||||||
|
import com.ecep.contract.manager.ui.MessageHolder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 合同同步任务
|
* 合同同步任务
|
||||||
*/
|
*/
|
||||||
public class ContractSyncTask extends AbstContractRepairTasker {
|
public class ContractSyncTask extends AbstContractRepairTasker {
|
||||||
private static final Logger logger = LoggerFactory.getLogger(ContractSyncTask.class);
|
private static final Logger logger = LoggerFactory.getLogger(ContractSyncTask.class);
|
||||||
@Setter
|
|
||||||
private boolean useLatestId = true;
|
|
||||||
private YongYouU8Repository repository;
|
private YongYouU8Repository repository;
|
||||||
|
|
||||||
public ContractSyncTask() {
|
public ContractSyncTask() {
|
||||||
updateTitle("用友U8系统-同步合同");
|
updateTitle("用友U8系统-同步合同");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void repair(MessageHolder holder) {
|
||||||
|
updateTitle("用友U8系统-同步合同");
|
||||||
|
try {
|
||||||
|
repository = SpringApp.getBean(YongYouU8Repository.class);
|
||||||
|
} catch (BeansException e) {
|
||||||
|
holder.error("无法获取 YongYouU8Repository " + e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (getConfService().getBoolean(ContractCtx.KEY_CONTRACT_SYNC_USE_LATEST_ID)) {
|
||||||
|
syncByLatestId(holder);
|
||||||
|
} else {
|
||||||
|
syncByLatestDate(holder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void syncByLatestId(MessageHolder holder) {
|
private void syncByLatestId(MessageHolder holder) {
|
||||||
int latestId = getConfService().getInt(ContractService.CONTRACT_LATEST_ID);
|
int latestId = getConfService().getInt(ContractCtx.CONTRACT_LATEST_ID);
|
||||||
updateTitle("用友U8系统-同步合同,从 " + latestId + " 开始");
|
updateTitle("用友U8系统-同步合同,从 " + latestId + " 开始");
|
||||||
|
|
||||||
Long total = repository.countAllContracts(latestId);
|
Long total = repository.countAllContracts(latestId);
|
||||||
@@ -66,11 +81,11 @@ public class ContractSyncTask extends AbstContractRepairTasker {
|
|||||||
updateProgress(counter.incrementAndGet(), total);
|
updateProgress(counter.incrementAndGet(), total);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
getConfService().set(ContractService.CONTRACT_LATEST_ID, String.valueOf(reference.get()));
|
getConfService().set(ContractCtx.CONTRACT_LATEST_ID, String.valueOf(reference.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void syncByLatestDate(MessageHolder holder) {
|
private void syncByLatestDate(MessageHolder holder) {
|
||||||
String strDateTime = getConfService().getString(ContractService.CONTRACT_LATEST_DATE);
|
String strDateTime = getConfService().getString(ContractCtx.CONTRACT_LATEST_DATE);
|
||||||
LocalDateTime latestDateTime = null;
|
LocalDateTime latestDateTime = null;
|
||||||
if (StringUtils.hasText(strDateTime)) {
|
if (StringUtils.hasText(strDateTime)) {
|
||||||
try {
|
try {
|
||||||
@@ -120,17 +135,7 @@ public class ContractSyncTask extends AbstContractRepairTasker {
|
|||||||
updateProgress(counter.incrementAndGet(), total);
|
updateProgress(counter.incrementAndGet(), total);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
getConfService().set(ContractService.CONTRACT_LATEST_DATE, String.valueOf(reference.get()));
|
getConfService().set(ContractCtx.CONTRACT_LATEST_DATE, String.valueOf(reference.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void repair(MessageHolder holder) {
|
|
||||||
updateTitle("用友U8系统-同步合同");
|
|
||||||
repository = SpringApp.getBean(YongYouU8Repository.class);
|
|
||||||
if (useLatestId) {
|
|
||||||
syncByLatestId(holder);
|
|
||||||
} else {
|
|
||||||
syncByLatestDate(holder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,31 +1,20 @@
|
|||||||
package com.ecep.contract.manager.cloud.u8;
|
package com.ecep.contract.manager.cloud.u8;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
|
|
||||||
import org.apache.poi.ss.formula.functions.T;
|
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.context.annotation.Scope;
|
import org.springframework.context.annotation.Scope;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import com.ecep.contract.manager.Desktop;
|
import com.ecep.contract.manager.cloud.u8.ctx.CompanyCtx;
|
||||||
import com.ecep.contract.manager.SpringApp;
|
import com.ecep.contract.manager.cloud.u8.ctx.ContractCtx;
|
||||||
import com.ecep.contract.manager.ds.other.model.SysConf;
|
import com.ecep.contract.manager.ds.other.LocalDateConfig;
|
||||||
import com.ecep.contract.manager.ds.other.service.SysConfService;
|
import com.ecep.contract.manager.ds.other.StringConfig;
|
||||||
import com.ecep.contract.manager.ui.BaseController;
|
import com.ecep.contract.manager.ui.BaseController;
|
||||||
import com.ecep.contract.manager.ui.FxmlPath;
|
import com.ecep.contract.manager.ui.FxmlPath;
|
||||||
|
|
||||||
import javafx.beans.property.Property;
|
|
||||||
import javafx.beans.property.SimpleObjectProperty;
|
|
||||||
import javafx.beans.value.ObservableValue;
|
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.scene.control.DatePicker;
|
import javafx.scene.control.DatePicker;
|
||||||
import javafx.scene.control.TextField;
|
import javafx.scene.control.TextField;
|
||||||
import javafx.stage.WindowEvent;
|
import javafx.stage.WindowEvent;
|
||||||
import javafx.util.converter.LocalDateStringConverter;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
@Scope("prototype")
|
@Scope("prototype")
|
||||||
@@ -49,68 +38,21 @@ public class YongYouU8ConfigWindowController extends BaseController {
|
|||||||
super.onShown(windowEvent);
|
super.onShown(windowEvent);
|
||||||
getTitle().set("用友U8配置");
|
getTitle().set("用友U8配置");
|
||||||
|
|
||||||
LocalDateConfig config1 = new LocalDateConfig("cloud.u8.auto-create-company-after");
|
LocalDateConfig config1 = new LocalDateConfig(CompanyCtx.AUTO_CREATE_COMPANY_AFTER);
|
||||||
config1.setPicker(auto_create_company_after);
|
config1.setPicker(auto_create_company_after);
|
||||||
config1.initialize();
|
config1.initialize();
|
||||||
|
|
||||||
LocalDateConfig config2 = new LocalDateConfig("cloud.u8.contract.latestDate");
|
LocalDateConfig config2 = new LocalDateConfig(ContractCtx.CONTRACT_LATEST_DATE);
|
||||||
config2.setPicker(contract_latest_date);
|
config2.setPicker(contract_latest_date);
|
||||||
config2.initialize();
|
config2.initialize();
|
||||||
|
|
||||||
}
|
StringConfig config3 = new StringConfig(ContractCtx.CONTRACT_LATEST_ID);
|
||||||
|
config3.setTextField(contract_latest_id);
|
||||||
|
config3.initialize();
|
||||||
|
|
||||||
@NoArgsConstructor
|
StringConfig config4 = new StringConfig("cloud.u8.sync.elapse");
|
||||||
public static class LocalDateConfig {
|
config4.setTextField(sync_elapse);
|
||||||
@Setter
|
config4.initialize();
|
||||||
private SysConfService confService;
|
|
||||||
|
|
||||||
Property<LocalDate> property;
|
|
||||||
@Setter
|
|
||||||
javafx.util.StringConverter<LocalDate> converter;
|
|
||||||
@Setter
|
|
||||||
DatePicker picker;
|
|
||||||
String key;
|
|
||||||
SysConf conf;
|
|
||||||
|
|
||||||
public LocalDateConfig(String string) {
|
|
||||||
key = string;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void initialize() {
|
|
||||||
picker.setDisable(true);
|
|
||||||
if (converter == null) {
|
|
||||||
converter = new LocalDateStringConverter(DateTimeFormatter.ISO_LOCAL_DATE, null);
|
|
||||||
}
|
|
||||||
picker.setConverter(converter);
|
|
||||||
runAsync(() -> {
|
|
||||||
conf = getConfService().findById(key);
|
|
||||||
LocalDate date = converter.fromString(conf.getValue());
|
|
||||||
property = new SimpleObjectProperty<>(date);
|
|
||||||
property.addListener(this::propertyChanged);
|
|
||||||
picker.valueProperty().bindBidirectional(property);
|
|
||||||
picker.setDisable(false);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void propertyChanged(ObservableValue<? extends LocalDate> observable, LocalDate oldValue, LocalDate newValue) {
|
|
||||||
conf.setValue(converter.toString(newValue));
|
|
||||||
SysConf saved = getConfService().save(conf);
|
|
||||||
saved.getValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompletableFuture<Void> runAsync(Runnable runnable) {
|
|
||||||
return CompletableFuture.runAsync(runnable, Desktop.instance.getExecutorService()).exceptionally(ex -> {
|
|
||||||
ex.printStackTrace();
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public SysConfService getConfService() {
|
|
||||||
if (confService == null) {
|
|
||||||
confService = SpringApp.getBean(SysConfService.class);
|
|
||||||
}
|
|
||||||
return confService;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ import java.util.Objects;
|
|||||||
import static com.ecep.contract.manager.SpringApp.getBean;
|
import static com.ecep.contract.manager.SpringApp.getBean;
|
||||||
|
|
||||||
public class CompanyCtx extends AbstractYongYouU8Ctx {
|
public class CompanyCtx extends AbstractYongYouU8Ctx {
|
||||||
|
/**
|
||||||
|
* 自动创建公司的时间
|
||||||
|
*/
|
||||||
public static final String AUTO_CREATE_COMPANY_AFTER = "cloud.u8.auto-create-company-after";
|
public static final String AUTO_CREATE_COMPANY_AFTER = "cloud.u8.auto-create-company-after";
|
||||||
|
|
||||||
@Setter
|
@Setter
|
||||||
@@ -111,7 +114,7 @@ public class CompanyCtx extends AbstractYongYouU8Ctx {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
CompanyService companyService = getCompanyService();
|
CompanyService companyService = getCompanyService();
|
||||||
String autoCreateAfter = SpringApp.getBean(SysConfService.class).getString(AUTO_CREATE_COMPANY_AFTER);
|
String autoCreateAfter = getConfService().getString(AUTO_CREATE_COMPANY_AFTER);
|
||||||
// 当配置存在,且开发时间小于指定时间,不创建
|
// 当配置存在,且开发时间小于指定时间,不创建
|
||||||
if (StringUtils.hasText(autoCreateAfter)) {
|
if (StringUtils.hasText(autoCreateAfter)) {
|
||||||
LocalDate miniDate = LocalDate.parse(autoCreateAfter);
|
LocalDate miniDate = LocalDate.parse(autoCreateAfter);
|
||||||
|
|||||||
@@ -45,6 +45,10 @@ import java.util.stream.Stream;
|
|||||||
import static com.ecep.contract.manager.SpringApp.getBean;
|
import static com.ecep.contract.manager.SpringApp.getBean;
|
||||||
|
|
||||||
public class ContractCtx extends AbstractYongYouU8Ctx {
|
public class ContractCtx extends AbstractYongYouU8Ctx {
|
||||||
|
public static final String CONTRACT_LATEST_DATE = "cloud.u8.contract.latestDate";
|
||||||
|
public static final String CONTRACT_LATEST_ID = "cloud.u8.contract.latestId";
|
||||||
|
public static final String KEY_CONTRACT_SYNC_USE_LATEST_ID = "cloud.u8.contract.sync.use-latest-id";
|
||||||
|
|
||||||
|
|
||||||
@Setter
|
@Setter
|
||||||
private ContractService contractService;
|
private ContractService contractService;
|
||||||
@@ -74,6 +78,7 @@ public class ContractCtx extends AbstractYongYouU8Ctx {
|
|||||||
@Setter
|
@Setter
|
||||||
private int customerEntityUpdateDelayDays = 1;
|
private int customerEntityUpdateDelayDays = 1;
|
||||||
|
|
||||||
|
|
||||||
public ContractService getContractService() {
|
public ContractService getContractService() {
|
||||||
if (contractService == null) {
|
if (contractService == null) {
|
||||||
contractService = getBean(ContractService.class);
|
contractService = getBean(ContractService.class);
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import java.util.Objects;
|
|||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import com.ecep.contract.manager.cloud.u8.ctx.ContractCtx;
|
||||||
import com.ecep.contract.manager.ds.company.model.Company;
|
import com.ecep.contract.manager.ds.company.model.Company;
|
||||||
import com.ecep.contract.manager.ds.contract.ContractPayWay;
|
import com.ecep.contract.manager.ds.contract.ContractPayWay;
|
||||||
import com.ecep.contract.manager.ds.contract.repository.ContractRepository;
|
import com.ecep.contract.manager.ds.contract.repository.ContractRepository;
|
||||||
@@ -52,9 +53,6 @@ import com.ecep.contract.manager.ui.ViewModelService;
|
|||||||
public class ContractService implements ViewModelService<Contract, ContractViewModel> {
|
public class ContractService implements ViewModelService<Contract, ContractViewModel> {
|
||||||
private static final Logger logger = LoggerFactory.getLogger(ContractService.class);
|
private static final Logger logger = LoggerFactory.getLogger(ContractService.class);
|
||||||
public static final String CONTRACT_BASE_PATH = "contract.base.path";
|
public static final String CONTRACT_BASE_PATH = "contract.base.path";
|
||||||
public static final String CONTRACT_LATEST_ID = "cloud.u8.contract.latestId";
|
|
||||||
public static final String CONTRACT_LATEST_DATE = "cloud.u8.contract.latestDate";
|
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
@Autowired
|
@Autowired
|
||||||
private ContractCatalogService contractCatalogService;
|
private ContractCatalogService contractCatalogService;
|
||||||
@@ -152,10 +150,10 @@ public class ContractService implements ViewModelService<Contract, ContractViewM
|
|||||||
*/
|
*/
|
||||||
public void updateLatestIdAndDate(Integer latestId, LocalDateTime latestDate) {
|
public void updateLatestIdAndDate(Integer latestId, LocalDateTime latestDate) {
|
||||||
if (latestId != null) {
|
if (latestId != null) {
|
||||||
confService.set(CONTRACT_LATEST_ID, String.valueOf(latestId));
|
confService.set(ContractCtx.CONTRACT_LATEST_ID, String.valueOf(latestId));
|
||||||
}
|
}
|
||||||
if (latestDate != null) {
|
if (latestDate != null) {
|
||||||
confService.set(CONTRACT_LATEST_DATE, latestDate.toString());
|
confService.set(ContractCtx.CONTRACT_LATEST_DATE, latestDate.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package com.ecep.contract.manager.ds.other;
|
||||||
|
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
|
import com.ecep.contract.manager.Desktop;
|
||||||
|
import com.ecep.contract.manager.SpringApp;
|
||||||
|
import com.ecep.contract.manager.ds.other.model.SysConf;
|
||||||
|
import com.ecep.contract.manager.ds.other.service.SysConfService;
|
||||||
|
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
public abstract class AbstractConfigBounder implements ConfigBounder {
|
||||||
|
@Setter
|
||||||
|
private SysConfService confService;
|
||||||
|
String key;
|
||||||
|
SysConf conf;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CompletableFuture<Void> runAsync(Runnable runnable) {
|
||||||
|
return CompletableFuture.runAsync(runnable, Desktop.instance.getExecutorService()).exceptionally(ex -> {
|
||||||
|
ex.printStackTrace();
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SysConfService getConfService() {
|
||||||
|
if (confService == null) {
|
||||||
|
confService = SpringApp.getBean(SysConfService.class);
|
||||||
|
}
|
||||||
|
return confService;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.ecep.contract.manager.ds.other;
|
||||||
|
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
|
import com.ecep.contract.manager.ds.other.service.SysConfService;
|
||||||
|
|
||||||
|
public interface ConfigBounder {
|
||||||
|
|
||||||
|
void setConfService(SysConfService confService);
|
||||||
|
|
||||||
|
void initialize();
|
||||||
|
|
||||||
|
CompletableFuture<Void> runAsync(Runnable runnable);
|
||||||
|
|
||||||
|
SysConfService getConfService();
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
package com.ecep.contract.manager.ds.other;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
|
import com.ecep.contract.manager.Desktop;
|
||||||
|
import com.ecep.contract.manager.SpringApp;
|
||||||
|
import com.ecep.contract.manager.ds.other.model.SysConf;
|
||||||
|
import com.ecep.contract.manager.ds.other.service.SysConfService;
|
||||||
|
|
||||||
|
import javafx.beans.property.Property;
|
||||||
|
import javafx.beans.property.SimpleObjectProperty;
|
||||||
|
import javafx.beans.value.ObservableValue;
|
||||||
|
import javafx.scene.control.DatePicker;
|
||||||
|
import javafx.util.converter.LocalDateStringConverter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class LocalDateConfig extends AbstractConfigBounder {
|
||||||
|
Property<LocalDate> property;
|
||||||
|
@Setter
|
||||||
|
javafx.util.StringConverter<LocalDate> converter;
|
||||||
|
@Setter
|
||||||
|
DatePicker picker;
|
||||||
|
|
||||||
|
|
||||||
|
public LocalDateConfig(String string) {
|
||||||
|
key = string;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initialize() {
|
||||||
|
picker.setDisable(true);
|
||||||
|
if (converter == null) {
|
||||||
|
converter = new LocalDateStringConverter(DateTimeFormatter.ISO_LOCAL_DATE, null);
|
||||||
|
}
|
||||||
|
picker.setConverter(converter);
|
||||||
|
runAsync(() -> {
|
||||||
|
conf = getConfService().findById(key);
|
||||||
|
LocalDate date = converter.fromString(conf.getValue());
|
||||||
|
property = new SimpleObjectProperty<>(date);
|
||||||
|
property.addListener(this::propertyChanged);
|
||||||
|
picker.valueProperty().bindBidirectional(property);
|
||||||
|
picker.setDisable(false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void propertyChanged(ObservableValue<? extends LocalDate> observable, LocalDate oldValue, LocalDate newValue) {
|
||||||
|
conf.setValue(converter.toString(newValue));
|
||||||
|
SysConf saved = getConfService().save(conf);
|
||||||
|
saved.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.ecep.contract.manager.ds.other;
|
||||||
|
|
||||||
|
import com.ecep.contract.manager.ds.other.model.SysConf;
|
||||||
|
|
||||||
|
import javafx.beans.property.Property;
|
||||||
|
import javafx.beans.property.SimpleStringProperty;
|
||||||
|
import javafx.beans.value.ObservableValue;
|
||||||
|
import javafx.scene.control.TextField;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class StringConfig extends AbstractConfigBounder {
|
||||||
|
@Setter
|
||||||
|
private TextField textField;
|
||||||
|
|
||||||
|
String key;
|
||||||
|
SysConf conf;
|
||||||
|
|
||||||
|
Property<String> property;
|
||||||
|
|
||||||
|
public StringConfig(String string) {
|
||||||
|
key = string;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void initialize() {
|
||||||
|
textField.setDisable(true);
|
||||||
|
runAsync(() -> {
|
||||||
|
conf = getConfService().findById(key);
|
||||||
|
property = new SimpleStringProperty(conf.getValue());
|
||||||
|
property.addListener(this::propertyChanged);
|
||||||
|
textField.textProperty().bindBidirectional(property);
|
||||||
|
textField.setDisable(false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void propertyChanged(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
||||||
|
conf.setValue(newValue);
|
||||||
|
SysConf saved = getConfService().save(conf);
|
||||||
|
saved.getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,8 +26,8 @@
|
|||||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
<children>
|
<children>
|
||||||
|
<Label text="同步时未创建的公司时开发日期在此之后的自动创建" />
|
||||||
<DatePicker fx:id="auto_create_company_after" GridPane.columnIndex="2" />
|
<DatePicker fx:id="auto_create_company_after" GridPane.columnIndex="2" />
|
||||||
<Label text="cloud.u8.auto-create-company-after" />
|
|
||||||
<Label text="cloud.u8.contract.latestDate" GridPane.rowIndex="1" />
|
<Label text="cloud.u8.contract.latestDate" GridPane.rowIndex="1" />
|
||||||
<DatePicker fx:id="contract_latest_date" GridPane.columnIndex="2" GridPane.rowIndex="1" />
|
<DatePicker fx:id="contract_latest_date" GridPane.columnIndex="2" GridPane.rowIndex="1" />
|
||||||
<Label text="cloud.u8.contract.latestId" GridPane.rowIndex="2" />
|
<Label text="cloud.u8.contract.latestId" GridPane.rowIndex="2" />
|
||||||
|
|||||||
Reference in New Issue
Block a user