From 86e18632aa9199972bc798547f59610af1261f45 Mon Sep 17 00:00:00 2001 From: songqq Date: Sun, 12 Oct 2025 12:49:18 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=90=88=E5=90=8C=E6=9D=A1=E7=9B=AE=E5=85=B3?= =?UTF-8?q?=E8=81=94=E5=8F=8A=E7=A8=8E=E7=8E=87=E7=BB=91=E5=AE=9A=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增采购订单条目与合同条目的关联字段,实现税率和税率锁定的UI绑定 优化采购订单同步逻辑,支持从U8系统获取更多字段信息 调整界面文本显示,修复部分字段绑定问题 --- .../contract/ContractWindowController.java | 2 + .../tab/ContractTabSkinItemsV2.java | 7 ++- .../order/PurchaseOrderTabSkinBase.java | 8 ++- .../order/PurchaseOrderWindowController.java | 4 ++ .../vm/PurchaseOrderItemViewModel.java | 10 ++++ .../ui/contract/contract-tab-item-v2.fxml | 2 +- .../ui/contract/purchase-orders.fxml | 23 ++++--- .../ecep/contract/vo/PurchaseOrderItemVo.java | 1 + .../cloud/u8/YongYouU8Repository.java | 12 +++- .../contract/cloud/u8/ctx/ContractCtx.java | 14 ++++- .../cloud/u8/ctx/PurchaseOrderCtx.java | 45 +++++++++----- .../ds/contract/model/ContractItem.java | 8 ++- .../repository/ContractItemRepository.java | 12 +++- .../contract/service/ContractItemService.java | 11 +++- .../service/PurchaseOrderItemService.java | 60 +++++++++++-------- .../ds/vendor/model/PurchaseOrder.java | 2 + .../ds/vendor/model/PurchaseOrderItem.java | 7 +++ 17 files changed, 170 insertions(+), 58 deletions(-) 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 069de3a..ca8873d 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 @@ -151,6 +151,7 @@ public class ContractWindowController registerTabSkin(contractTab, t -> new ContractTabSkinSubContract(this)); tabs.remove(bidVendorTab); Tab saleOrderTab = new Tab("销售订单"); + payPlanTab.setText("收款计划"); tabs.add(saleOrderTab); registerTabSkin(saleOrderTab, tab -> new ContractTabSkinSaleOrders(this, tab)); tabs.add(new Tab("票据")); @@ -166,6 +167,7 @@ public class ContractWindowController tabs.add(new Tab("发货单")); tabs.add(new Tab("签收单")); tabs.add(new Tab("付款单")); + payPlanTab.setText("付款计划"); } registerTabSkin(itemTab, tab -> new ContractTabSkinItemsV2(this)); 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 8331e3c..1fa7608 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 @@ -5,6 +5,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.util.HashMap; +import com.ecep.contract.ContractPayWay; import com.ecep.contract.SpringApp; import com.ecep.contract.controller.contract.AbstContractTableTabSkin; import com.ecep.contract.controller.contract.ContractWindowController; @@ -132,7 +133,11 @@ public class ContractTabSkinItemsV2 taxPriceColumn.setCellFactory(TextFieldTableCell.forTableColumn(currencyStringConverter)); quantityColumn.setCellValueFactory(param -> param.getValue().getQuantity()); - quantityColumn.setCellFactory(QuantityTableCell.forTableColumn(new NumberStringConverter(getLocale()))); + if (getEntity().getPayWay() == ContractPayWay.PAY) { + quantityColumn.setCellFactory(QuantityTableCell.forTableColumn(new NumberStringConverter(getLocale()))); + } else { + quantityColumn.setCellFactory(TextFieldTableCell.forTableColumn(new NumberStringConverter(getLocale()))); + } taxAmountColumn.setCellValueFactory(param -> param.getValue().getTaxAmount()); taxAmountColumn.setCellFactory(TextFieldTableCell.forTableColumn(currencyStringConverter)); diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/purchase/order/PurchaseOrderTabSkinBase.java b/client/src/main/java/com/ecep/contract/controller/vendor/purchase/order/PurchaseOrderTabSkinBase.java index ad162b7..8387aa5 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/purchase/order/PurchaseOrderTabSkinBase.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/purchase/order/PurchaseOrderTabSkinBase.java @@ -47,8 +47,12 @@ public class PurchaseOrderTabSkinBase initializeEmployeeField(controller.verifierField, viewModel.getVerifier()); initializeEmployeeField(controller.closerField, viewModel.getCloser()); - viewModel.getTaxRate(); - viewModel.getTaxRateLocked(); + // 税率和税率锁定绑定 + controller.taxRateField.textProperty().bindBidirectional(viewModel.getTaxRate(), + new javafx.util.converter.NumberStringConverter(getLocale(), "#.##")); + controller.taxRateLockedField.selectedProperty().bindBidirectional(viewModel.getTaxRateLocked()); + + viewModel.getVendorCode().bindBidirectional(controller.vendorCodeField.textProperty()); controller.makeDateField.textProperty().bind(viewModel.getMakerDate().map(MyDateTimeUtils::format)); controller.verifierDateField.textProperty().bind(viewModel.getVerifierDate().map(MyDateTimeUtils::format)); diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/purchase/order/PurchaseOrderWindowController.java b/client/src/main/java/com/ecep/contract/controller/vendor/purchase/order/PurchaseOrderWindowController.java index 50afc46..819b862 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/purchase/order/PurchaseOrderWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/purchase/order/PurchaseOrderWindowController.java @@ -14,6 +14,7 @@ import com.ecep.contract.vm.PurchaseOrderViewModel; import com.ecep.contract.vo.PurchaseOrderVo; import javafx.scene.control.Button; +import javafx.scene.control.CheckBox; import javafx.scene.control.Label; import javafx.scene.control.Tab; import javafx.scene.control.TabPane; @@ -49,6 +50,9 @@ public class PurchaseOrderWindowController public TextField closerDateField; public TextField closerField; public Label versionLabel; + public TextField taxRateField; + public CheckBox taxRateLockedField; + public TextField vendorCodeField; @Autowired private PurchaseOrdersService service; diff --git a/client/src/main/java/com/ecep/contract/vm/PurchaseOrderItemViewModel.java b/client/src/main/java/com/ecep/contract/vm/PurchaseOrderItemViewModel.java index 464c3b0..a8f1087 100644 --- a/client/src/main/java/com/ecep/contract/vm/PurchaseOrderItemViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/PurchaseOrderItemViewModel.java @@ -23,6 +23,11 @@ public class PurchaseOrderItemViewModel extends IdentityViewModel inventory = new SimpleObjectProperty<>(); + /** + * 关联的采购合同条目, ContractItem + */ + private SimpleObjectProperty contractItem = new SimpleObjectProperty<>(); + private SimpleIntegerProperty refId = new SimpleIntegerProperty(); private SimpleDoubleProperty quantity = new SimpleDoubleProperty(); private SimpleDoubleProperty price = new SimpleDoubleProperty(); @@ -36,6 +41,7 @@ public class PurchaseOrderItemViewModel extends IdentityViewModel - + diff --git a/client/src/main/resources/ui/contract/purchase-orders.fxml b/client/src/main/resources/ui/contract/purchase-orders.fxml index 30afadd..faef937 100644 --- a/client/src/main/resources/ui/contract/purchase-orders.fxml +++ b/client/src/main/resources/ui/contract/purchase-orders.fxml @@ -2,6 +2,7 @@ + @@ -19,8 +20,7 @@ - +
@@ -44,22 +44,25 @@ +