拆分模块

This commit is contained in:
2025-09-03 20:56:44 +08:00
parent 08cc2c29a5
commit a2f5e4864b
939 changed files with 14227 additions and 9607 deletions

View File

@@ -0,0 +1,43 @@
package com.ecep.contract.controller.bank;
import com.ecep.contract.controller.AbstEntityManagerSkin;
import com.ecep.contract.controller.ManagerSkin;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.model.Bank;
import com.ecep.contract.vm.BankViewModel;
import javafx.scene.control.TableColumn;
import javafx.scene.control.cell.TextFieldTableCell;
public class BankManagerSkin
extends AbstEntityManagerSkin<Bank, BankViewModel, BankManagerSkin, BankManagerWindowController>
implements ManagerSkin, EditableEntityTableTabSkin<Bank, BankViewModel> {
public BankManagerSkin(BankManagerWindowController controller) {
super(controller);
}
@Override
public void initializeTable() {
getTableView().setEditable(true);
controller.idColumn.setCellValueFactory(param -> param.getValue().getId());
controller.codeColumn.setCellValueFactory(param -> param.getValue().getCode());
controller.codeColumn.setCellFactory(TextFieldTableCell.forTableColumn());
controller.codeColumn.setOnEditCommit(this::onCodeColumnEditCommit);
controller.nameColumn.setCellValueFactory(param -> param.getValue().getName());
controller.nameColumn.setCellFactory(TextFieldTableCell.forTableColumn());
controller.nameColumn.setOnEditCommit(this::onNameColumnEditCommit);
}
private void onCodeColumnEditCommit(TableColumn.CellEditEvent<BankViewModel, String> event) {
acceptCellEditEvent(event, BankViewModel::getCode);
}
private void onNameColumnEditCommit(TableColumn.CellEditEvent<BankViewModel, String> event) {
acceptCellEditEvent(event, BankViewModel::getName);
}
}

View File

@@ -0,0 +1,47 @@
package com.ecep.contract.controller.bank;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.other.service.BankService;
import com.ecep.contract.model.Bank;
import com.ecep.contract.vm.BankViewModel;
import javafx.event.ActionEvent;
import javafx.scene.control.TableColumn;
@Lazy
@Scope("prototype")
@Component
@FxmlPath("/ui/bank-manager.fxml")
public class BankManagerWindowController
extends AbstManagerWindowController<Bank, BankViewModel, BankManagerSkin> {
@Autowired
private BankService bankService;
public TableColumn<BankViewModel, Number> idColumn;
public TableColumn<BankViewModel, String> nameColumn;
public TableColumn<BankViewModel, String> codeColumn;
@Override
protected BankManagerSkin createDefaultSkin() {
return new BankManagerSkin(this);
}
public void onCreateNewAction(ActionEvent event) {
}
public void onReBuildFilesAction(ActionEvent event) {
}
@Override
public BankService getViewModelService() {
return bankService;
}
}

View File

@@ -0,0 +1,82 @@
package com.ecep.contract.controller.bank.account;
import com.ecep.contract.SpringApp;
import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.converter.BankStringConverter;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyBankAccount;
import com.ecep.contract.service.BankService;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.service.CompanyStringConverter;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.CompanyBankAccountViewModel;
import javafx.scene.control.Tab;
import javafx.scene.control.TextField;
import lombok.Setter;
public class BankAccountBaseTabSkin
extends AbstEntityBasedTabSkin<BankAccountWindowController, CompanyBankAccount, CompanyBankAccountViewModel>
implements TabSkin {
@Setter
private CompanyService companyService;
@Setter
private BankService bankService;
public BankAccountBaseTabSkin(BankAccountWindowController controller) {
super(controller);
viewModel = controller.getViewModel();
}
@Override
public Tab getTab() {
return controller.baseInfoTab;
}
@Override
public void initializeTab() {
initializeBaseTabCompanyFieldAutoCompletion(controller.companyField);
initializeBaseTabBankFieldAutoCompletion(controller.bankField);
controller.openingBankField.textProperty().bindBidirectional(viewModel.getOpeningBank());
controller.bankAccountField.textProperty().bindBidirectional(viewModel.getAccount());
// controller.descriptionField.textProperty().bindBidirectional(viewModel.getDescription());
controller.createdField.textProperty().bind(viewModel.getCreated().asString());
controller.versionLabel.textProperty().bind(viewModel.getVersion().asString());
controller.relativeCompanyBtn.disableProperty().bind(viewModel.getCompany().isNull());
controller.relativeCompanyBtn.setOnAction(event -> {
Company company = viewModel.getCompany().get();
if (company != null) {
CompanyWindowController.show(company, controller.root.getScene().getWindow());
}
});
}
private void initializeBaseTabCompanyFieldAutoCompletion(TextField textField) {
CompanyStringConverter converter = SpringApp.getBean(CompanyStringConverter.class);
UITools.autoCompletion(textField, viewModel.getCompany(), converter::suggest, converter);
}
private void initializeBaseTabBankFieldAutoCompletion(TextField textField) {
BankStringConverter converter = SpringApp.getBean(BankStringConverter.class);
UITools.autoCompletion(textField, viewModel.getBank(), converter::suggest, converter);
}
public BankService getBankService() {
if (bankService == null) {
bankService = getBean(BankService.class);
}
return bankService;
}
public CompanyService getCompanyService() {
if (companyService == null) {
companyService = getBean(CompanyService.class);
}
return companyService;
}
}

View File

@@ -0,0 +1,68 @@
package com.ecep.contract.controller.bank.account;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.company.service.CompanyBankAccountService;
import com.ecep.contract.model.CompanyBankAccount;
import com.ecep.contract.vm.CompanyBankAccountViewModel;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.stage.Window;
import javafx.stage.WindowEvent;
@Lazy
@Scope("prototype")
@Component
@FxmlPath("/ui/company/bank-account.fxml")
public class BankAccountWindowController extends AbstEntityController<CompanyBankAccount, CompanyBankAccountViewModel> {
public BorderPane root;
public TabPane tabPane;
public Tab baseInfoTab;
public TextField companyField;
public Button relativeCompanyBtn;
public TextField bankField;
public TextField openingBankField;
public TextField bankAccountField;
public TextField createdField;
public TextArea descriptionField;
public Label versionLabel;
public Tab entityTab;
public static void show(CompanyBankAccountViewModel viewModel, Window window) {
show(BankAccountWindowController.class, viewModel, window);
}
@Autowired
private CompanyBankAccountService bankAccountService;
@Override
public void onShown(WindowEvent event) {
super.onShown(event);
getTitle().set("[" + viewModel.getId().get() + "] 银行账户详情");
}
@Override
protected void registerTabSkins() {
registerTabSkin(baseInfoTab, tab -> new BankAccountBaseTabSkin(this));
}
@Override
public CompanyBankAccountService getViewModelService() {
return bankAccountService;
}
}