refactor(controller): 移除冗余的service注入,使用BeanContext统一管理
feat(sales-order): 补充SalesOrderVo缺失字段并完善相关功能 feat(sales-order): 添加客户、税率等字段到销售订单界面 refactor(tab-skin): 重构TabSkin基类,统一bean获取方式 fix(fxml): 修正controller包路径和字段绑定 feat(repository): 添加findAllByOrder方法优化查询
This commit is contained in:
@@ -10,6 +10,7 @@ import java.util.concurrent.CompletableFuture;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import com.ecep.contract.util.BeanContext;
|
||||
import com.ecep.contract.util.DefaultBeanContext;
|
||||
import com.ecep.contract.util.FxmlPath;
|
||||
import com.ecep.contract.util.FxmlUtils;
|
||||
import com.ecep.contract.vo.EmployeeVo;
|
||||
@@ -51,7 +52,7 @@ public class BaseController implements BeanContext {
|
||||
}
|
||||
|
||||
public static <T extends BaseController> CompletableFuture<Void> show(Class<T> clz, Window owner,
|
||||
Consumer<T> consumer) {
|
||||
Consumer<T> consumer) {
|
||||
String key = clz.getName();
|
||||
if (toFront(key)) {
|
||||
return null;
|
||||
@@ -188,20 +189,13 @@ public class BaseController implements BeanContext {
|
||||
public Label rightStatusLabel;
|
||||
private EmployeeVo currentUser;
|
||||
|
||||
private HashMap<Class<?>, Object> cachedBeans = new HashMap<>();
|
||||
|
||||
private BeanContext beanContext = new DefaultBeanContext();
|
||||
public <T> T getBean(Class<T> requiredType) throws BeansException {
|
||||
return SpringApp.getBean(requiredType);
|
||||
return beanContext.getBean(requiredType);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T getCachedBean(Class<T> requiredType) throws BeansException {
|
||||
Object object = cachedBeans.get(requiredType);
|
||||
if (object == null) {
|
||||
object = getBean(requiredType);
|
||||
cachedBeans.put(requiredType, object);
|
||||
}
|
||||
return (T) object;
|
||||
return beanContext.getCachedBean(requiredType);
|
||||
}
|
||||
|
||||
public SysConfService getConfService() {
|
||||
|
||||
@@ -1,19 +1,17 @@
|
||||
package com.ecep.contract.controller.tab;
|
||||
package com.ecep.contract.controller.contract;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import com.ecep.contract.ContractPayWay;
|
||||
import com.ecep.contract.controller.tab.TabSkin;
|
||||
import com.ecep.contract.controller.table.cell.EmployeeTableCell;
|
||||
import com.ecep.contract.util.FxmlPath;
|
||||
import com.ecep.contract.controller.contract.AbstContractTableTabSkin;
|
||||
import com.ecep.contract.controller.contract.ContractWindowController;
|
||||
import com.ecep.contract.controller.vendor.purchase.order.PurchaseOrderWindowController;
|
||||
import com.ecep.contract.converter.EmployeeStringConverter;
|
||||
import com.ecep.contract.service.CompanyService;
|
||||
import com.ecep.contract.service.PurchaseOrdersService;
|
||||
import com.ecep.contract.vm.PurchaseOrderViewModel;
|
||||
import com.ecep.contract.vo.PurchaseOrderVo;
|
||||
import com.ecep.contract.controller.table.cell.CompanyTableCell;
|
||||
import com.ecep.contract.controller.table.cell.LocalDateTimeTableCell;
|
||||
|
||||
import javafx.scene.control.MenuItem;
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
package com.ecep.contract.controller.tab;
|
||||
package com.ecep.contract.controller.contract;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
import com.ecep.contract.ContractPayWay;
|
||||
import com.ecep.contract.controller.tab.TabSkin;
|
||||
import com.ecep.contract.controller.table.cell.CompanyTableCell;
|
||||
import com.ecep.contract.controller.table.cell.EmployeeTableCell;
|
||||
import com.ecep.contract.util.FxmlPath;
|
||||
import com.ecep.contract.controller.contract.AbstContractTableTabSkin;
|
||||
import com.ecep.contract.controller.contract.ContractWindowController;
|
||||
import com.ecep.contract.controller.contract.sale_order.SalesOrderWindowController;
|
||||
import com.ecep.contract.controller.table.cell.LocalDateFieldTableCell;
|
||||
import com.ecep.contract.converter.EmployeeStringConverter;
|
||||
import com.ecep.contract.service.CompanyService;
|
||||
import com.ecep.contract.service.SaleOrdersService;
|
||||
import com.ecep.contract.vm.SalesOrderViewModel;
|
||||
|
||||
@@ -32,6 +33,8 @@ public class ContractTabSkinSaleOrders
|
||||
|
||||
@Setter
|
||||
private SaleOrdersService saleOrdersService;
|
||||
private CompanyService companyService;
|
||||
|
||||
@Setter
|
||||
private EmployeeStringConverter employeeStringConverter;
|
||||
|
||||
@@ -51,6 +54,20 @@ public class ContractTabSkinSaleOrders
|
||||
*/
|
||||
public TableColumn<SalesOrderViewModel, Integer> verifierColumn;
|
||||
public TableColumn<SalesOrderViewModel, LocalDate> verifierDateColumn;
|
||||
public TableColumn<SalesOrderViewModel, Number> refIdColumn;
|
||||
public TableColumn<SalesOrderViewModel, Number> taxRateColumn;
|
||||
public TableColumn<SalesOrderViewModel, Integer> customerColumn;
|
||||
public TableColumn<SalesOrderViewModel, String> customerAddressColumn;
|
||||
/**
|
||||
* 修改人, Employee
|
||||
*/
|
||||
public TableColumn<SalesOrderViewModel, Integer> modifierColumn;
|
||||
public TableColumn<SalesOrderViewModel, LocalDate> modifierDateColumn;
|
||||
/**
|
||||
* 关闭人, Employee
|
||||
*/
|
||||
public TableColumn<SalesOrderViewModel, Integer> closerColumn;
|
||||
public TableColumn<SalesOrderViewModel, LocalDate> closerDateColumn;
|
||||
public TableColumn<SalesOrderViewModel, String> descriptionColumn;
|
||||
public MenuItem subContractTable_menu_refresh;
|
||||
public TextField contractSearchKeyField;
|
||||
@@ -93,16 +110,30 @@ public class ContractTabSkinSaleOrders
|
||||
idColumn.setCellValueFactory(param -> param.getValue().getId());
|
||||
codeColumn.setCellValueFactory(param -> param.getValue().getCode());
|
||||
employeeColumn.setCellValueFactory(param -> param.getValue().getEmployee());
|
||||
employeeColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService()));
|
||||
employeeColumn.setCellFactory(EmployeeTableCell.forTableColumn(getEmployeeService()));
|
||||
makerColumn.setCellValueFactory(param -> param.getValue().getMaker());
|
||||
makerColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService()));
|
||||
makerColumn.setCellFactory(EmployeeTableCell.forTableColumn(getEmployeeService()));
|
||||
makerDateColumn.setCellValueFactory(param -> param.getValue().getMakerDate());
|
||||
makerDateColumn.setCellFactory(LocalDateFieldTableCell.forTableColumn());
|
||||
|
||||
verifierColumn.setCellValueFactory(param -> param.getValue().getVerifier());
|
||||
verifierColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService()));
|
||||
verifierColumn.setCellFactory(EmployeeTableCell.forTableColumn(getEmployeeService()));
|
||||
verifierDateColumn.setCellValueFactory(param -> param.getValue().getVerifierDate());
|
||||
verifierDateColumn.setCellFactory(LocalDateFieldTableCell.forTableColumn());
|
||||
|
||||
// 设置新增字段的单元格值工厂和工厂类
|
||||
refIdColumn.setCellValueFactory(param -> param.getValue().getRefId());
|
||||
taxRateColumn.setCellValueFactory(param -> param.getValue().getTaxRate());
|
||||
customerColumn.setCellValueFactory(param -> param.getValue().getCustomer());
|
||||
customerColumn.setCellFactory(CompanyTableCell.forTableColumn(getCompanyService()));
|
||||
customerAddressColumn.setCellValueFactory(param -> param.getValue().getCustomerAddress());
|
||||
modifierColumn.setCellValueFactory(param -> param.getValue().getModifier());
|
||||
modifierColumn.setCellFactory(EmployeeTableCell.forTableColumn(getEmployeeService()));
|
||||
modifierDateColumn.setCellValueFactory(param -> param.getValue().getModifierDate());
|
||||
modifierDateColumn.setCellFactory(LocalDateFieldTableCell.forTableColumn());
|
||||
closerColumn.setCellValueFactory(param -> param.getValue().getCloser());
|
||||
closerColumn.setCellFactory(EmployeeTableCell.forTableColumn(getEmployeeService()));
|
||||
closerDateColumn.setCellValueFactory(param -> param.getValue().getCloserDate());
|
||||
closerDateColumn.setCellFactory(LocalDateFieldTableCell.forTableColumn());
|
||||
|
||||
descriptionColumn.setCellValueFactory(param -> param.getValue().getDescription());
|
||||
super.initializeTab();
|
||||
@@ -113,17 +144,17 @@ public class ContractTabSkinSaleOrders
|
||||
SalesOrderWindowController.show(item, getTableView().getScene().getWindow());
|
||||
}
|
||||
|
||||
private EmployeeStringConverter getEmployeeStringConverter() {
|
||||
if (employeeStringConverter == null) {
|
||||
employeeStringConverter = getBean(EmployeeStringConverter.class);
|
||||
}
|
||||
return employeeStringConverter;
|
||||
}
|
||||
|
||||
SaleOrdersService getSaleOrdersService() {
|
||||
if (saleOrdersService == null) {
|
||||
saleOrdersService = getBean(SaleOrdersService.class);
|
||||
}
|
||||
return saleOrdersService;
|
||||
}
|
||||
|
||||
CompanyService getCompanyService() {
|
||||
if (companyService == null) {
|
||||
companyService = getBean(CompanyService.class);
|
||||
}
|
||||
return companyService;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,8 +15,6 @@ import com.ecep.contract.controller.tab.ContractTabSkinBase;
|
||||
import com.ecep.contract.controller.tab.ContractTabSkinFiles;
|
||||
import com.ecep.contract.controller.tab.ContractTabSkinItemsV2;
|
||||
import com.ecep.contract.controller.tab.ContractTabSkinPayPlan;
|
||||
import com.ecep.contract.controller.tab.ContractTabSkinPurchaseOrders;
|
||||
import com.ecep.contract.controller.tab.ContractTabSkinSaleOrders;
|
||||
import com.ecep.contract.controller.tab.ContractTabSkinSubContract;
|
||||
import com.ecep.contract.controller.tab.ContractTabSkinVendorBid;
|
||||
|
||||
|
||||
@@ -43,6 +43,15 @@ public class SalesOrderWindowController extends AbstEntityController<SalesOrderV
|
||||
public TextField makeDateField;
|
||||
public TextField makerField;
|
||||
public TextArea descriptionField;
|
||||
public TextField refIdField;
|
||||
public TextField taxRateField;
|
||||
public TextField customerField;
|
||||
public TextField customerAddressField;
|
||||
public TextField modifierField;
|
||||
public TextField modifierDateField;
|
||||
public TextField closerField;
|
||||
public TextField closerDateField;
|
||||
public TextField contractField;
|
||||
|
||||
|
||||
public static void show(SalesOrderViewModel viewModel, Window window) {
|
||||
|
||||
@@ -14,30 +14,16 @@ import lombok.Setter;
|
||||
public abstract class AbstEmployeeBasedTabSkin
|
||||
extends AbstEntityBasedTabSkin<EmployeeWindowController, EmployeeVo, EmployeeViewModel>
|
||||
implements TabSkin {
|
||||
@Setter
|
||||
private PermissionService permissionService;
|
||||
@Setter
|
||||
private EmployeeRoleService employeeRoleService;
|
||||
|
||||
public AbstEmployeeBasedTabSkin(EmployeeWindowController controller) {
|
||||
super(controller);
|
||||
}
|
||||
|
||||
protected EmployeeService getEmployeeService() {
|
||||
return controller.employeeService;
|
||||
}
|
||||
|
||||
protected EmployeeRoleService getEmployeeRoleService() {
|
||||
if (employeeRoleService == null) {
|
||||
employeeRoleService = getBean(EmployeeRoleService.class);
|
||||
}
|
||||
return employeeRoleService;
|
||||
return getCachedBean(EmployeeRoleService.class);
|
||||
}
|
||||
|
||||
protected PermissionService getPermissionService() {
|
||||
if (permissionService == null) {
|
||||
permissionService = getBean(PermissionService.class);
|
||||
}
|
||||
return permissionService;
|
||||
return getCachedBean(PermissionService.class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,15 +40,8 @@ import lombok.Setter;
|
||||
* 基础信息
|
||||
*/
|
||||
public class ProjectTabSkinBase extends AbstProjectBasedTabSkin implements TabSkin {
|
||||
@Setter
|
||||
EmployeeStringConverter employeeStringConverter;
|
||||
@Setter
|
||||
LocalDateStringConverter localDateStringConverter;
|
||||
@Setter
|
||||
EmployeeService employeeService;
|
||||
|
||||
@Setter
|
||||
private DeliverySignMethodService deliverySignMethodService;
|
||||
|
||||
public ProjectTabSkinBase(ProjectWindowController controller) {
|
||||
super(controller);
|
||||
@@ -59,10 +52,6 @@ public class ProjectTabSkinBase extends AbstProjectBasedTabSkin implements TabSk
|
||||
return controller.baseInfoTab;
|
||||
}
|
||||
|
||||
private EmployeeService getEmployeeService() {
|
||||
return getBean(EmployeeService.class);
|
||||
}
|
||||
|
||||
private ProjectTypeService getProjectTypeService() {
|
||||
return getBean(ProjectTypeService.class);
|
||||
}
|
||||
|
||||
@@ -162,7 +162,6 @@ public class ProjectWindowController extends AbstEntityController<ProjectVo, Pro
|
||||
private ProjectTabSkinBase createBaseTabSkin(Tab tab) {
|
||||
ProjectTabSkinBase skin = new ProjectTabSkinBase(this);
|
||||
skin.setLocalDateStringConverter(localDateStringConverter);
|
||||
skin.setEmployeeService(employeeService);
|
||||
return skin;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,9 +7,11 @@ import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeansException;
|
||||
|
||||
import com.ecep.contract.controller.BaseController;
|
||||
import com.ecep.contract.service.EmployeeService;
|
||||
import com.ecep.contract.util.BeanContext;
|
||||
import com.ecep.contract.util.UITools;
|
||||
|
||||
public abstract class AbstGenericTabSkin<C extends BaseController> implements TabSkin {
|
||||
public abstract class AbstGenericTabSkin<C extends BaseController> implements TabSkin, BeanContext {
|
||||
private static final Logger logger = LoggerFactory.getLogger(AbstGenericTabSkin.class);
|
||||
/**
|
||||
* 控制器
|
||||
@@ -49,4 +51,7 @@ public abstract class AbstGenericTabSkin<C extends BaseController> implements Ta
|
||||
UITools.showExceptionAndWait(message, ex);
|
||||
}
|
||||
|
||||
public EmployeeService getEmployeeService() {
|
||||
return getCachedBean(EmployeeService.class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,10 +193,13 @@ public class ContractTabSkinItemsV2
|
||||
}
|
||||
showInOwner(InventoryWindowController.class, InventoryViewModel.from(inventory));
|
||||
});
|
||||
contextMenu.getItems().addAll(showInventory);
|
||||
}
|
||||
|
||||
public static class QuantityTableCell extends AsyncUpdateTableCell<ContractItemViewModel, Number, PurchaseOrderItemVo> {
|
||||
public static Callback<TableColumn<ContractItemViewModel, Number>, TableCell<ContractItemViewModel, Number>> forTableColumn(NumberStringConverter stringConverter) {
|
||||
public static class QuantityTableCell
|
||||
extends AsyncUpdateTableCell<ContractItemViewModel, Number, PurchaseOrderItemVo> {
|
||||
public static Callback<TableColumn<ContractItemViewModel, Number>, TableCell<ContractItemViewModel, Number>> forTableColumn(
|
||||
NumberStringConverter stringConverter) {
|
||||
;
|
||||
return param -> new QuantityTableCell(stringConverter);
|
||||
}
|
||||
@@ -212,7 +215,10 @@ public class ContractTabSkinItemsV2
|
||||
|
||||
@Override
|
||||
protected void asyncLoadAndUpdate() {
|
||||
double sum = getService().findAll(ParamUtils.equal("contractItem", this.getTableRow().getItem().getId().get()), Pageable.unpaged()).stream().mapToDouble(PurchaseOrderItemVo::getQuantity).sum();
|
||||
double sum = getService()
|
||||
.findAll(ParamUtils.equal("contractItem", this.getTableRow().getItem().getId().get()),
|
||||
Pageable.unpaged())
|
||||
.stream().mapToDouble(PurchaseOrderItemVo::getQuantity).sum();
|
||||
Platform.runLater(() -> setText(sum + "/" + getItem()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,8 @@ import java.time.LocalDate;
|
||||
import com.ecep.contract.ContractPayWay;
|
||||
import com.ecep.contract.controller.contract.AbstContractTableTabSkin;
|
||||
import com.ecep.contract.controller.contract.ContractWindowController;
|
||||
import com.ecep.contract.controller.table.cell.CompanyTableCell;
|
||||
import com.ecep.contract.service.CompanyService;
|
||||
import com.ecep.contract.service.ContractService;
|
||||
import com.ecep.contract.util.FxmlPath;
|
||||
import com.ecep.contract.util.ParamUtils;
|
||||
@@ -34,6 +36,7 @@ public class ContractTabSkinSubContract
|
||||
public TableColumn<ContractViewModel, LocalDate> subContractTable_inureDateColumn;
|
||||
public TableColumn<ContractViewModel, LocalDate> subContractTable_orderDateColumn;
|
||||
public TableColumn<ContractViewModel, LocalDate> subContractTable_varyDateColumn;
|
||||
public TableColumn<ContractViewModel, Integer> subContractTable_companyColumn;
|
||||
public MenuItem subContractTable_menu_refresh;
|
||||
public TextField contractSearchKeyField;
|
||||
public Button contractSearchBtn;
|
||||
@@ -86,6 +89,8 @@ public class ContractTabSkinSubContract
|
||||
subContractTable_inureDateColumn.setCellValueFactory(param -> param.getValue().getInureDate());
|
||||
subContractTable_orderDateColumn.setCellValueFactory(param -> param.getValue().getOrderDate());
|
||||
subContractTable_varyDateColumn.setCellValueFactory(param -> param.getValue().getVaryDate());
|
||||
subContractTable_companyColumn.setCellValueFactory(param -> param.getValue().getCompany());
|
||||
subContractTable_companyColumn.setCellFactory(CompanyTableCell.forTableColumn(getCachedBean(CompanyService.class)));
|
||||
|
||||
Platform.runLater(() -> {
|
||||
getTableView().getSortOrder().add(subContractTable_codeColumn);
|
||||
|
||||
@@ -1,13 +1,9 @@
|
||||
package com.ecep.contract.controller.tab;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import com.ecep.contract.MyDateTimeUtils;
|
||||
import com.ecep.contract.SpringApp;
|
||||
import com.ecep.contract.controller.contract.sale_order.SalesOrderWindowController;
|
||||
import com.ecep.contract.converter.EmployeeStringConverter;
|
||||
import com.ecep.contract.service.CompanyService;
|
||||
import com.ecep.contract.service.ContractFileService;
|
||||
import com.ecep.contract.service.ContractService;
|
||||
import com.ecep.contract.util.UITools;
|
||||
import com.ecep.contract.vm.SalesOrderViewModel;
|
||||
import com.ecep.contract.vo.SalesOrderVo;
|
||||
@@ -15,18 +11,12 @@ import com.ecep.contract.vo.SalesOrderVo;
|
||||
import javafx.beans.property.SimpleObjectProperty;
|
||||
import javafx.scene.control.Tab;
|
||||
import javafx.scene.control.TextField;
|
||||
import lombok.Setter;
|
||||
import javafx.util.converter.NumberStringConverter;
|
||||
|
||||
public class SalesOrderTabSkinBase
|
||||
extends AbstEntityBasedTabSkin<SalesOrderWindowController, SalesOrderVo, SalesOrderViewModel>
|
||||
implements TabSkin {
|
||||
|
||||
@Setter
|
||||
private ContractFileService companyContactService;
|
||||
@Setter
|
||||
private CompanyService companyService;
|
||||
private EmployeeStringConverter employeeStringConverter;
|
||||
|
||||
public SalesOrderTabSkinBase(SalesOrderWindowController controller) {
|
||||
super(controller);
|
||||
}
|
||||
@@ -39,13 +29,26 @@ public class SalesOrderTabSkinBase
|
||||
@Override
|
||||
public void initializeTab() {
|
||||
controller.codeField.textProperty().bind(viewModel.getCode());
|
||||
controller.refIdField.textProperty().bindBidirectional(viewModel.getRefId(), new NumberStringConverter(getLocale()));
|
||||
|
||||
controller.taxRateField.textProperty().bindBidirectional(viewModel.getTaxRate(), new NumberStringConverter(getLocale()));
|
||||
|
||||
initializeEmployeeField(controller.employeeField, viewModel.getEmployee());
|
||||
initializeEmployeeField(controller.makerField, viewModel.getMaker());
|
||||
initializeEmployeeField(controller.verifierField, viewModel.getVerifier());
|
||||
initializeEmployeeField(controller.modifierField, viewModel.getModifier());
|
||||
initializeEmployeeField(controller.closerField, viewModel.getCloser());
|
||||
|
||||
initializeCompanyField(controller.customerField, viewModel.getCustomer());
|
||||
|
||||
controller.customerAddressField.textProperty().bindBidirectional(viewModel.getCustomerAddress());
|
||||
|
||||
initializeContractField(controller.contractField, viewModel.getContract());
|
||||
|
||||
controller.makeDateField.textProperty().bind(viewModel.getMakerDate().map(MyDateTimeUtils::format));
|
||||
controller.verifierDateField.textProperty().bind(viewModel.getVerifierDate().map(MyDateTimeUtils::format));
|
||||
controller.modifierDateField.textProperty().bind(viewModel.getModifierDate().map(MyDateTimeUtils::format));
|
||||
controller.closerDateField.textProperty().bind(viewModel.getCloserDate().map(MyDateTimeUtils::format));
|
||||
|
||||
controller.descriptionField.textProperty().bindBidirectional(viewModel.getDescription());
|
||||
|
||||
@@ -53,29 +56,23 @@ public class SalesOrderTabSkinBase
|
||||
controller.saveBtn.setOnAction(this::onSaveAction);
|
||||
}
|
||||
|
||||
protected String localDateTimeFormatter(SimpleObjectProperty<LocalDateTime> property) {
|
||||
LocalDateTime dateTime = property.get();
|
||||
if (dateTime == null) {
|
||||
return "";
|
||||
}
|
||||
return MyDateTimeUtils.format(dateTime);
|
||||
}
|
||||
|
||||
private void initializeEmployeeField(TextField textField, SimpleObjectProperty<Integer> property) {
|
||||
UITools.autoCompletion(textField, property, controller.getEmployeeService());
|
||||
}
|
||||
|
||||
public CompanyService getCompanyService() {
|
||||
if (companyService == null) {
|
||||
companyService = SpringApp.getBean(CompanyService.class);
|
||||
}
|
||||
return companyService;
|
||||
private void initializeCompanyField(TextField textField, SimpleObjectProperty<Integer> property) {
|
||||
UITools.autoCompletion(textField, property, getCompanyService());
|
||||
}
|
||||
|
||||
private void initializeContractField(TextField textField, SimpleObjectProperty<Integer> property) {
|
||||
UITools.autoCompletion(textField, property, getContractService());
|
||||
}
|
||||
|
||||
public EmployeeStringConverter getEmployeeStringConverter() {
|
||||
if (employeeStringConverter == null) {
|
||||
employeeStringConverter = SpringApp.getBean(EmployeeStringConverter.class);
|
||||
}
|
||||
return employeeStringConverter;
|
||||
public CompanyService getCompanyService() {
|
||||
return getCachedBean(CompanyService.class);
|
||||
}
|
||||
|
||||
public ContractService getContractService() {
|
||||
return getCachedBean(ContractService.class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,9 @@ package com.ecep.contract.vm;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Objects;
|
||||
|
||||
|
||||
import com.ecep.contract.util.NumberUtils;
|
||||
import com.ecep.contract.vo.SalesOrderVo;
|
||||
import javafx.beans.property.SimpleFloatProperty;
|
||||
import javafx.beans.property.SimpleIntegerProperty;
|
||||
import javafx.beans.property.SimpleObjectProperty;
|
||||
import javafx.beans.property.SimpleStringProperty;
|
||||
@@ -25,6 +26,16 @@ public class SalesOrderViewModel extends IdentityViewModel<SalesOrderVo> {
|
||||
SimpleObjectProperty<LocalDate> verifierDate = new SimpleObjectProperty<>();
|
||||
SimpleStringProperty description = new SimpleStringProperty();
|
||||
|
||||
// 添加缺失的字段
|
||||
SimpleIntegerProperty refId = new SimpleIntegerProperty();
|
||||
SimpleFloatProperty taxRate = new SimpleFloatProperty();
|
||||
SimpleObjectProperty<Integer> customer = new SimpleObjectProperty<>();
|
||||
SimpleStringProperty customerAddress = new SimpleStringProperty();
|
||||
SimpleObjectProperty<Integer> modifier = new SimpleObjectProperty<>();
|
||||
SimpleObjectProperty<LocalDate> modifierDate = new SimpleObjectProperty<>();
|
||||
SimpleObjectProperty<Integer> closer = new SimpleObjectProperty<>();
|
||||
SimpleObjectProperty<LocalDate> closerDate = new SimpleObjectProperty<>();
|
||||
|
||||
@Override
|
||||
protected void updateFrom(SalesOrderVo v) {
|
||||
getId().set(v.getId());
|
||||
@@ -35,6 +46,18 @@ public class SalesOrderViewModel extends IdentityViewModel<SalesOrderVo> {
|
||||
getVerifier().set(v.getVerifierId());
|
||||
getMakerDate().set(v.getMakerDate());
|
||||
getVerifierDate().set(v.getVerifierDate());
|
||||
getDescription().set(v.getDescription());
|
||||
|
||||
// 更新添加的字段
|
||||
getRefId().set(v.getRefId());
|
||||
getTaxRate().set(v.getTaxRate());
|
||||
getCustomer().set(v.getCustomerId());
|
||||
getCustomerAddress().set(v.getCustomerAddress());
|
||||
getModifier().set(v.getModifierId());
|
||||
getModifierDate().set(v.getModifierDate());
|
||||
getCloser().set(v.getCloserId());
|
||||
getCloserDate().set(v.getCloserDate());
|
||||
|
||||
super.updateFrom(v);
|
||||
}
|
||||
|
||||
@@ -81,6 +104,48 @@ public class SalesOrderViewModel extends IdentityViewModel<SalesOrderVo> {
|
||||
v.setDescription(description.get());
|
||||
modified = true;
|
||||
}
|
||||
|
||||
// 复制添加的字段
|
||||
if (!Objects.equals(refId.get(), v.getRefId())) {
|
||||
v.setRefId(refId.get());
|
||||
modified = true;
|
||||
}
|
||||
|
||||
if (!NumberUtils.equals(taxRate.get(), v.getTaxRate())) {
|
||||
v.setTaxRate(taxRate.get());
|
||||
modified = true;
|
||||
}
|
||||
|
||||
if (!Objects.equals(customer.get(), v.getCustomerId())) {
|
||||
v.setCustomerId(customer.get());
|
||||
modified = true;
|
||||
}
|
||||
|
||||
if (!Objects.equals(customerAddress.get(), v.getCustomerAddress())) {
|
||||
v.setCustomerAddress(customerAddress.get());
|
||||
modified = true;
|
||||
}
|
||||
|
||||
if (!Objects.equals(modifier.get(), v.getModifierId())) {
|
||||
v.setModifierId(modifier.get());
|
||||
modified = true;
|
||||
}
|
||||
|
||||
if (!Objects.equals(modifierDate.get(), v.getModifierDate())) {
|
||||
v.setModifierDate(modifierDate.get());
|
||||
modified = true;
|
||||
}
|
||||
|
||||
if (!Objects.equals(closer.get(), v.getCloserId())) {
|
||||
v.setCloserId(closer.get());
|
||||
modified = true;
|
||||
}
|
||||
|
||||
if (!Objects.equals(closerDate.get(), v.getCloserDate())) {
|
||||
v.setCloserDate(closerDate.get());
|
||||
modified = true;
|
||||
}
|
||||
|
||||
return modified;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user