From d2e0dc455586eb67e4c4a82d853e1c882eaa3e0c Mon Sep 17 00:00:00 2001 From: songqq Date: Wed, 15 Oct 2025 00:40:02 +0800 Subject: [PATCH] =?UTF-8?q?refactor(controller):=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E5=86=97=E4=BD=99=E7=9A=84service=E6=B3=A8=E5=85=A5=EF=BC=8C?= =?UTF-8?q?=E4=BD=BF=E7=94=A8BeanContext=E7=BB=9F=E4=B8=80=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat(sales-order): 补充SalesOrderVo缺失字段并完善相关功能 feat(sales-order): 添加客户、税率等字段到销售订单界面 refactor(tab-skin): 重构TabSkin基类,统一bean获取方式 fix(fxml): 修正controller包路径和字段绑定 feat(repository): 添加findAllByOrder方法优化查询 --- .../contract/controller/BaseController.java | 16 +- .../ContractTabSkinPurchaseOrders.java | 6 +- .../contract/ContractTabSkinSaleOrders.java | 59 +++++-- .../contract/ContractWindowController.java | 2 - .../SalesOrderWindowController.java | 9 ++ .../employee/AbstEmployeeBasedTabSkin.java | 18 +-- .../project/ProjectTabSkinBase.java | 11 -- .../project/ProjectWindowController.java | 1 - .../controller/tab/AbstGenericTabSkin.java | 7 +- .../tab/ContractTabSkinItemsV2.java | 12 +- .../tab/ContractTabSkinSubContract.java | 5 + .../controller/tab/SalesOrderTabSkinBase.java | 57 ++++--- .../ecep/contract/vm/SalesOrderViewModel.java | 67 +++++++- .../contract-tab-purchase-orders.fxml | 2 +- .../ui/contract/contract-tab-sale-orders.fxml | 13 +- .../contract/contract-tab-sub-contract.fxml | 4 + .../resources/ui/contract/sale-orders.fxml | 59 +++++-- .../com/ecep/contract/vo/SalesOrderVo.java | 10 ++ .../cloud/u8/ctx/SalesBillVoucherCtx.java | 4 +- .../contract/cloud/u8/ctx/SalesOrderCtx.java | 147 ++++++++++++++++-- .../SalesBillVoucherRepository.java | 3 + .../contract/service/SaleOrdersService.java | 24 +++ .../service/SalesBillVoucherService.java | 7 + .../ds/customer/model/SalesOrder.java | 73 ++++++++- .../ds/customer/model/SalesOrderItem.java | 6 + 25 files changed, 485 insertions(+), 137 deletions(-) diff --git a/client/src/main/java/com/ecep/contract/controller/BaseController.java b/client/src/main/java/com/ecep/contract/controller/BaseController.java index 5bba7b5..bfa5781 100644 --- a/client/src/main/java/com/ecep/contract/controller/BaseController.java +++ b/client/src/main/java/com/ecep/contract/controller/BaseController.java @@ -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 CompletableFuture show(Class clz, Window owner, - Consumer consumer) { + Consumer 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, Object> cachedBeans = new HashMap<>(); - + private BeanContext beanContext = new DefaultBeanContext(); public T getBean(Class requiredType) throws BeansException { - return SpringApp.getBean(requiredType); + return beanContext.getBean(requiredType); } - @SuppressWarnings("unchecked") public T getCachedBean(Class 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() { diff --git a/client/src/main/java/com/ecep/contract/controller/contract/ContractTabSkinPurchaseOrders.java b/client/src/main/java/com/ecep/contract/controller/contract/ContractTabSkinPurchaseOrders.java index 20c0313..e361ce5 100644 --- a/client/src/main/java/com/ecep/contract/controller/contract/ContractTabSkinPurchaseOrders.java +++ b/client/src/main/java/com/ecep/contract/controller/contract/ContractTabSkinPurchaseOrders.java @@ -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; diff --git a/client/src/main/java/com/ecep/contract/controller/contract/ContractTabSkinSaleOrders.java b/client/src/main/java/com/ecep/contract/controller/contract/ContractTabSkinSaleOrders.java index 1fb0304..015e8e2 100644 --- a/client/src/main/java/com/ecep/contract/controller/contract/ContractTabSkinSaleOrders.java +++ b/client/src/main/java/com/ecep/contract/controller/contract/ContractTabSkinSaleOrders.java @@ -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 verifierColumn; public TableColumn verifierDateColumn; + public TableColumn refIdColumn; + public TableColumn taxRateColumn; + public TableColumn customerColumn; + public TableColumn customerAddressColumn; + /** + * 修改人, Employee + */ + public TableColumn modifierColumn; + public TableColumn modifierDateColumn; + /** + * 关闭人, Employee + */ + public TableColumn closerColumn; + public TableColumn closerDateColumn; public TableColumn 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; + } } diff --git a/client/src/main/java/com/ecep/contract/controller/contract/ContractWindowController.java b/client/src/main/java/com/ecep/contract/controller/contract/ContractWindowController.java index ca8873d..77ccff2 100644 --- a/client/src/main/java/com/ecep/contract/controller/contract/ContractWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/contract/ContractWindowController.java @@ -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; diff --git a/client/src/main/java/com/ecep/contract/controller/contract/sale_order/SalesOrderWindowController.java b/client/src/main/java/com/ecep/contract/controller/contract/sale_order/SalesOrderWindowController.java index 9c06c71..69d0f22 100644 --- a/client/src/main/java/com/ecep/contract/controller/contract/sale_order/SalesOrderWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/contract/sale_order/SalesOrderWindowController.java @@ -43,6 +43,15 @@ public class SalesOrderWindowController extends AbstEntityController 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); } } diff --git a/client/src/main/java/com/ecep/contract/controller/project/ProjectTabSkinBase.java b/client/src/main/java/com/ecep/contract/controller/project/ProjectTabSkinBase.java index 2f6b152..03f71f8 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/ProjectTabSkinBase.java +++ b/client/src/main/java/com/ecep/contract/controller/project/ProjectTabSkinBase.java @@ -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); } diff --git a/client/src/main/java/com/ecep/contract/controller/project/ProjectWindowController.java b/client/src/main/java/com/ecep/contract/controller/project/ProjectWindowController.java index c5fbbba..9e56711 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/ProjectWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/project/ProjectWindowController.java @@ -162,7 +162,6 @@ public class ProjectWindowController extends AbstEntityController implements TabSkin { +public abstract class AbstGenericTabSkin implements TabSkin, BeanContext { private static final Logger logger = LoggerFactory.getLogger(AbstGenericTabSkin.class); /** * 控制器 @@ -49,4 +51,7 @@ public abstract class AbstGenericTabSkin implements Ta UITools.showExceptionAndWait(message, ex); } + public EmployeeService getEmployeeService() { + return getCachedBean(EmployeeService.class); + } } diff --git a/client/src/main/java/com/ecep/contract/controller/tab/ContractTabSkinItemsV2.java b/client/src/main/java/com/ecep/contract/controller/tab/ContractTabSkinItemsV2.java index 1fa7608..b073516 100644 --- a/client/src/main/java/com/ecep/contract/controller/tab/ContractTabSkinItemsV2.java +++ b/client/src/main/java/com/ecep/contract/controller/tab/ContractTabSkinItemsV2.java @@ -193,10 +193,13 @@ public class ContractTabSkinItemsV2 } showInOwner(InventoryWindowController.class, InventoryViewModel.from(inventory)); }); + contextMenu.getItems().addAll(showInventory); } - public static class QuantityTableCell extends AsyncUpdateTableCell { - public static Callback, TableCell> forTableColumn(NumberStringConverter stringConverter) { + public static class QuantityTableCell + extends AsyncUpdateTableCell { + public static Callback, TableCell> 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())); } } diff --git a/client/src/main/java/com/ecep/contract/controller/tab/ContractTabSkinSubContract.java b/client/src/main/java/com/ecep/contract/controller/tab/ContractTabSkinSubContract.java index f8074f4..c31b94d 100644 --- a/client/src/main/java/com/ecep/contract/controller/tab/ContractTabSkinSubContract.java +++ b/client/src/main/java/com/ecep/contract/controller/tab/ContractTabSkinSubContract.java @@ -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 subContractTable_inureDateColumn; public TableColumn subContractTable_orderDateColumn; public TableColumn subContractTable_varyDateColumn; + public TableColumn 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); diff --git a/client/src/main/java/com/ecep/contract/controller/tab/SalesOrderTabSkinBase.java b/client/src/main/java/com/ecep/contract/controller/tab/SalesOrderTabSkinBase.java index 989065f..d2d850a 100644 --- a/client/src/main/java/com/ecep/contract/controller/tab/SalesOrderTabSkinBase.java +++ b/client/src/main/java/com/ecep/contract/controller/tab/SalesOrderTabSkinBase.java @@ -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 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 property) { - LocalDateTime dateTime = property.get(); - if (dateTime == null) { - return ""; - } - return MyDateTimeUtils.format(dateTime); - } - private void initializeEmployeeField(TextField textField, SimpleObjectProperty 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 property) { + UITools.autoCompletion(textField, property, getCompanyService()); + } + + private void initializeContractField(TextField textField, SimpleObjectProperty 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); } } diff --git a/client/src/main/java/com/ecep/contract/vm/SalesOrderViewModel.java b/client/src/main/java/com/ecep/contract/vm/SalesOrderViewModel.java index 2248d8e..13f71f9 100644 --- a/client/src/main/java/com/ecep/contract/vm/SalesOrderViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/SalesOrderViewModel.java @@ -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 { SimpleObjectProperty verifierDate = new SimpleObjectProperty<>(); SimpleStringProperty description = new SimpleStringProperty(); + // 添加缺失的字段 + SimpleIntegerProperty refId = new SimpleIntegerProperty(); + SimpleFloatProperty taxRate = new SimpleFloatProperty(); + SimpleObjectProperty customer = new SimpleObjectProperty<>(); + SimpleStringProperty customerAddress = new SimpleStringProperty(); + SimpleObjectProperty modifier = new SimpleObjectProperty<>(); + SimpleObjectProperty modifierDate = new SimpleObjectProperty<>(); + SimpleObjectProperty closer = new SimpleObjectProperty<>(); + SimpleObjectProperty closerDate = new SimpleObjectProperty<>(); + @Override protected void updateFrom(SalesOrderVo v) { getId().set(v.getId()); @@ -35,6 +46,18 @@ public class SalesOrderViewModel extends IdentityViewModel { 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 { 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; } diff --git a/client/src/main/resources/ui/contract/contract-tab-purchase-orders.fxml b/client/src/main/resources/ui/contract/contract-tab-purchase-orders.fxml index 7c5274c..110a0d1 100644 --- a/client/src/main/resources/ui/contract/contract-tab-purchase-orders.fxml +++ b/client/src/main/resources/ui/contract/contract-tab-purchase-orders.fxml @@ -5,7 +5,7 @@ diff --git a/client/src/main/resources/ui/contract/contract-tab-sale-orders.fxml b/client/src/main/resources/ui/contract/contract-tab-sale-orders.fxml index 4e7126f..54a0bf4 100644 --- a/client/src/main/resources/ui/contract/contract-tab-sale-orders.fxml +++ b/client/src/main/resources/ui/contract/contract-tab-sale-orders.fxml @@ -5,7 +5,7 @@ @@ -23,12 +23,19 @@ - + + + + + - + + + + diff --git a/client/src/main/resources/ui/contract/contract-tab-sub-contract.fxml b/client/src/main/resources/ui/contract/contract-tab-sub-contract.fxml index 2c31711..6642dcd 100644 --- a/client/src/main/resources/ui/contract/contract-tab-sub-contract.fxml +++ b/client/src/main/resources/ui/contract/contract-tab-sub-contract.fxml @@ -3,6 +3,8 @@ + + + + diff --git a/client/src/main/resources/ui/contract/sale-orders.fxml b/client/src/main/resources/ui/contract/sale-orders.fxml index 5201d69..75c0f58 100644 --- a/client/src/main/resources/ui/contract/sale-orders.fxml +++ b/client/src/main/resources/ui/contract/sale-orders.fxml @@ -28,6 +28,16 @@ minWidth="50.0" prefWidth="180.0"/> + + + + +