diff --git a/client/pom.xml b/client/pom.xml
index 5e74717..fa550b5 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -6,12 +6,12 @@
com.ecep.contract
Contract-Manager
- 0.0.126-SNAPSHOT
+ 0.0.129-SNAPSHOT
com.ecep.contract
client
- 0.0.126-SNAPSHOT
+ 0.0.129-SNAPSHOT
${java.version}
@@ -22,7 +22,7 @@
com.ecep.contract
common
- 0.0.126-SNAPSHOT
+ 0.0.129-SNAPSHOT
org.springframework.boot
diff --git a/client/src/main/java/com/ecep/contract/controller/AbstEntityController.java b/client/src/main/java/com/ecep/contract/controller/AbstEntityController.java
index 5b69d67..5390d06 100644
--- a/client/src/main/java/com/ecep/contract/controller/AbstEntityController.java
+++ b/client/src/main/java/com/ecep/contract/controller/AbstEntityController.java
@@ -53,33 +53,26 @@ public abstract class AbstEntityController queryService) {
setStatus("读取...");
loadedFuture = queryService.asyncFindById(viewModel.getId().get());
- loadedFuture.thenAccept(entity -> {
- // fixed, bind change if new view model create
- if (viewModel != null) {
- viewModel.bindListener();
- }
- setStatus();
- // BaseViewModel.updateInFxApplicationThread(entity, viewModel);
- });
- loadedFuture.exceptionally(ex -> {
- handleException("载入失败,#" + viewModel.getId().get(), ex);
- return null;
- });
+
} else {
loadedFuture = CompletableFuture.supplyAsync(() -> {
- T entity = getViewModelService().findById(viewModel.getId().get());
- if (entity == null) {
- return null;
- }
- Platform.runLater(() -> {
- setStatus();
- viewModel.update(entity);
- });
- viewModel.bindListener();
- return entity;
+ return getViewModelService().findById(viewModel.getId().get());
});
}
+ loadedFuture.thenAccept(entity -> {
+ // fixed, bind change if new view model create
+ if (viewModel != null) {
+ updateViewModel(entity);
+ viewModel.bindListener();
+ }
+ setStatus();
+ });
+ loadedFuture.exceptionally(ex -> {
+ handleException("载入失败,#" + viewModel.getId().get(), ex);
+ return null;
+ });
+
registerTabSkins();
if (saveBtn != null) {
saveBtn.disableProperty().bind(createTabSkinChangedBindings().not());
@@ -89,6 +82,10 @@ public abstract class AbstEntityController[]::new))
+ .stream()
+ .map(RefreshableSkin::refresh)
+ .filter(Objects::nonNull)
+ .toArray(CompletableFuture>[]::new))
.whenComplete((v, ex) -> {
if (ex != null) {
future.completeExceptionally(ex);
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 c6be87a..323e036 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
@@ -107,6 +107,9 @@ public class ProjectTabSkinBase extends AbstProjectBasedTabSkin implements TabSk
controller.saleTypeField.valueProperty().addListener((observable, oldValue, newValue) -> {
Predicate predicate = p -> {
+ if (newValue == null) {
+ return true;
+ }
return p == null || Objects.equals(p.getSaleTypeId(), newValue.getId());
};
diff --git a/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostWindowController.java b/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostWindowController.java
index 01ec257..080a147 100644
--- a/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostWindowController.java
+++ b/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostWindowController.java
@@ -88,8 +88,23 @@ public class ProjectCostWindowController
@Override
protected void registerTabSkins() {
+
registerTabSkin(baseInfoTab, tab -> new ProjectCostTabSkinBase(this));
registerTabSkin(itemTab, tab -> new ProjectCostTabSkinItems(this));
+
+ }
+
+ @Override
+ protected void updateViewModel(ProjectCostVo entity) {
+ super.updateViewModel(entity);
+ var tabPane = baseInfoTab.getTabPane();
+ if (entity.getVersion() > 0) {
+ if (!tabPane.getTabs().contains(approvalTab)) {
+ tabPane.getTabs().add(approvalTab);
+ }
+ } else {
+ tabPane.getTabs().remove(approvalTab);
+ }
}
@Override
diff --git a/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinContract.java b/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinContract.java
index 5b2383c..31b1362 100644
--- a/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinContract.java
+++ b/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinContract.java
@@ -164,18 +164,18 @@ public class CompanyTabSkinContract
contractTable_startDateColumn.setCellValueFactory(param -> param.getValue().getStartDate());
contractTable_endDateColumn.setCellValueFactory(param -> param.getValue().getEndDate());
contractTable_setupPersonColumn.setCellValueFactory(param -> param.getValue().getSetupPerson());
- contractTable_setupPersonColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService()));
+ contractTable_setupPersonColumn.setCellFactory(EmployeeTableCell.forTableColumn(getEmployeeService()));
contractTable_setupDateColumn.setCellValueFactory(param -> param.getValue().getSetupDate());
// contractTable_setupDateColumn.setSortable(true);
// contractTable_setupDateColumn.setSortType(TableColumn.SortType.DESCENDING);
contractTable_inurePersonColumn.setCellValueFactory(param -> param.getValue().getInurePerson());
- contractTable_inurePersonColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService()));
+ contractTable_inurePersonColumn.setCellFactory(EmployeeTableCell.forTableColumn(getEmployeeService()));
contractTable_inureDateColumn.setCellValueFactory(param -> param.getValue().getInureDate());
contractTable_varyPersonColumn.setCellValueFactory(param -> param.getValue().getVaryPerson());
- contractTable_varyPersonColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService()));
+ contractTable_varyPersonColumn.setCellFactory(EmployeeTableCell.forTableColumn(getEmployeeService()));
contractTable_varyDateColumn.setCellValueFactory(param -> param.getValue().getVaryDate());
contractTable_createdColumn.setCellValueFactory(param -> param.getValue().getCreated());
diff --git a/client/src/main/java/com/ecep/contract/converter/DeliverySignMethodStringConverter.java b/client/src/main/java/com/ecep/contract/converter/DeliverySignMethodStringConverter.java
new file mode 100644
index 0000000..42ba0a9
--- /dev/null
+++ b/client/src/main/java/com/ecep/contract/converter/DeliverySignMethodStringConverter.java
@@ -0,0 +1,47 @@
+package com.ecep.contract.converter;
+
+import com.ecep.contract.service.DeliverySignMethodService;
+import com.ecep.contract.vo.DeliverySignMethodVo;
+import javafx.util.StringConverter;
+
+/**
+ * DeliverySignMethodVo的StringConverter实现,用于JavaFX控件中的显示和转换
+ */
+public class DeliverySignMethodStringConverter extends StringConverter {
+ private final DeliverySignMethodService service;
+
+ /**
+ * 构造函数
+ *
+ * @param service DeliverySignMethodService实例
+ */
+ public DeliverySignMethodStringConverter(DeliverySignMethodService service) {
+ this.service = service;
+ }
+
+ /**
+ * 将DeliverySignMethodVo对象转换为字符串
+ *
+ * @param method DeliverySignMethodVo对象
+ * @return 转换后的字符串
+ */
+ @Override
+ public String toString(DeliverySignMethodVo method) {
+ return method == null ? "" : method.getCode() + " " + method.getName();
+ }
+
+ /**
+ * 将字符串转换为DeliverySignMethodVo对象
+ *
+ * @param string 字符串
+ * @return 转换后的DeliverySignMethodVo对象
+ */
+ @Override
+ public DeliverySignMethodVo fromString(String string) {
+ if (string == null || string.isEmpty()) {
+ return null;
+ }
+ // 查找所有方法,然后通过名称匹配
+ return service.findByName(string);
+ }
+}
\ No newline at end of file
diff --git a/client/src/main/java/com/ecep/contract/converter/ProjectTypeStringConverter.java b/client/src/main/java/com/ecep/contract/converter/ProjectTypeStringConverter.java
index 97d5004..ae9ccea 100644
--- a/client/src/main/java/com/ecep/contract/converter/ProjectTypeStringConverter.java
+++ b/client/src/main/java/com/ecep/contract/converter/ProjectTypeStringConverter.java
@@ -22,12 +22,12 @@ public class ProjectTypeStringConverter extends StringConverter {
/**
* 将ProjectTypeVo对象转换为字符串
*
- * @param object ProjectTypeVo对象
+ * @param type ProjectTypeVo对象
* @return 转换后的字符串
*/
@Override
- public String toString(ProjectTypeVo object) {
- return object == null ? "" : object.getName();
+ public String toString(ProjectTypeVo type) {
+ return type == null ? "" : type.getCode() + " " + type.getName();
}
/**
diff --git a/client/src/main/java/com/ecep/contract/service/DeliverySignMethodService.java b/client/src/main/java/com/ecep/contract/service/DeliverySignMethodService.java
index dfb7c57..2f9157d 100644
--- a/client/src/main/java/com/ecep/contract/service/DeliverySignMethodService.java
+++ b/client/src/main/java/com/ecep/contract/service/DeliverySignMethodService.java
@@ -1,5 +1,7 @@
package com.ecep.contract.service;
+import java.util.List;
+
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
@@ -7,16 +9,18 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
+import com.ecep.contract.converter.DeliverySignMethodStringConverter;
import com.ecep.contract.util.ParamUtils;
import com.ecep.contract.vm.DeliverySignMethodViewModel;
import com.ecep.contract.vo.DeliverySignMethodVo;
import com.ecep.contract.vo.ProjectSaleTypeVo;
-import java.util.List;
+import javafx.util.StringConverter;
@Service
@CacheConfig(cacheNames = "delivery-sign-method")
public class DeliverySignMethodService extends QueryService {
+ private final StringConverter stringConverter = new DeliverySignMethodStringConverter(this);
@Cacheable(key = "#id")
@Override
@@ -24,6 +28,14 @@ public class DeliverySignMethodService extends QueryService page = findAll(ParamUtils.builder()
- .equals("saleType", saleType.getId()).build(), Pageable.unpaged());
+ var builder = ParamUtils.builder();
+ builder.equals("saleType", saleType.getId());
+ builder.equals("code", code);
+ Page page = findAll(builder.build(), Pageable.unpaged());
if (page.isEmpty()) {
return null;
}
- return page.stream().filter(v -> v.getCode().equals(code)).findFirst().orElse(null);
+ return page.stream().findFirst().orElse(null);
}
-
@Cacheable(key = "'all'")
@Override
public List findAll() {
@@ -58,4 +71,9 @@ public class DeliverySignMethodService extends QueryService getStringConverter() {
+ return stringConverter;
+ }
}
diff --git a/client/src/main/java/com/ecep/contract/service/ProjectIndustryService.java b/client/src/main/java/com/ecep/contract/service/ProjectIndustryService.java
index 788a67d..3d6c544 100644
--- a/client/src/main/java/com/ecep/contract/service/ProjectIndustryService.java
+++ b/client/src/main/java/com/ecep/contract/service/ProjectIndustryService.java
@@ -50,5 +50,10 @@ public class ProjectIndustryService extends QueryService getStringConverter() {
+ return stringConverter;
+ }
}
diff --git a/client/src/main/java/com/ecep/contract/service/ProjectTypeService.java b/client/src/main/java/com/ecep/contract/service/ProjectTypeService.java
index 49efd99..7f8454b 100644
--- a/client/src/main/java/com/ecep/contract/service/ProjectTypeService.java
+++ b/client/src/main/java/com/ecep/contract/service/ProjectTypeService.java
@@ -13,11 +13,7 @@ import javafx.util.StringConverter;
@Service
@CacheConfig(cacheNames = "project-type")
public class ProjectTypeService extends QueryService {
- private final StringConverter stringConverter;
-
- public ProjectTypeService() {
- this.stringConverter = new ProjectTypeStringConverter(this);
- }
+ private final StringConverter stringConverter = new ProjectTypeStringConverter(this);
@Cacheable(key = "#p0")
@Override
diff --git a/client/src/main/resources/ui/company/company-tab-contract.fxml b/client/src/main/resources/ui/company/company-tab-contract.fxml
index b8c6ffc..efd7bee 100644
--- a/client/src/main/resources/ui/company/company-tab-contract.fxml
+++ b/client/src/main/resources/ui/company/company-tab-contract.fxml
@@ -31,9 +31,9 @@
-
-
-
+
+
+
diff --git a/client/src/main/resources/ui/project/project.fxml b/client/src/main/resources/ui/project/project.fxml
index c905614..d80e338 100644
--- a/client/src/main/resources/ui/project/project.fxml
+++ b/client/src/main/resources/ui/project/project.fxml
@@ -1,19 +1,39 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
-
-
-
+
+
+
@@ -22,156 +42,103 @@
-
+
-
+
-
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
@@ -186,7 +153,7 @@
-
+
@@ -197,7 +164,7 @@
-
+
@@ -206,31 +173,25 @@
-
+
-
+
-
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
@@ -245,20 +206,19 @@
-
-
+
diff --git a/common/pom.xml b/common/pom.xml
index f916a1e..d4723b6 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -6,12 +6,12 @@
com.ecep.contract
Contract-Manager
- 0.0.126-SNAPSHOT
+ 0.0.129-SNAPSHOT
com.ecep.contract
common
- 0.0.126-SNAPSHOT
+ 0.0.129-SNAPSHOT
${java.version}
diff --git a/pom.xml b/pom.xml
index 5258b2f..07e9cd5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
com.ecep.contract
Contract-Manager
- 0.0.126-SNAPSHOT
+ 0.0.129-SNAPSHOT
pom
server
diff --git a/server/pom.xml b/server/pom.xml
index 70375a7..26c2479 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -6,12 +6,12 @@
com.ecep.contract
Contract-Manager
- 0.0.126-SNAPSHOT
+ 0.0.129-SNAPSHOT
com.ecep.contract
server
- 0.0.126-SNAPSHOT
+ 0.0.129-SNAPSHOT
${java.version}
@@ -22,7 +22,7 @@
com.ecep.contract
common
- 0.0.126-SNAPSHOT
+ 0.0.129-SNAPSHOT
org.springframework.boot
diff --git a/server/src/main/java/com/ecep/contract/cloud/u8/ctx/CustomerCtx.java b/server/src/main/java/com/ecep/contract/cloud/u8/ctx/CustomerCtx.java
index b69a521..440a2d7 100644
--- a/server/src/main/java/com/ecep/contract/cloud/u8/ctx/CustomerCtx.java
+++ b/server/src/main/java/com/ecep/contract/cloud/u8/ctx/CustomerCtx.java
@@ -82,7 +82,8 @@ public class CustomerCtx extends AbstractYongYouU8Ctx {
public CompanyCustomerEntityVo updateCustomerEntityDetailByCode(CompanyCustomerEntityVo item, String unitCode,
MessageHolder holder) {
CompanyCustomerEntity v0 = getCustomerEntityService().getById(item.getId());
- if (applyEntityDetail(v0, repository.findCustomerByCusCode(unitCode), holder)) {
+ initializeRepository(holder);
+ if (applyEntityDetail(v0, getRepository().findCustomerByCusCode(unitCode), holder)) {
item = save(v0).toVo();
}
return item;
diff --git a/server/src/main/java/com/ecep/contract/cloud/u8/ctx/SalesOrderCtx.java b/server/src/main/java/com/ecep/contract/cloud/u8/ctx/SalesOrderCtx.java
index 55b58eb..a51d849 100644
--- a/server/src/main/java/com/ecep/contract/cloud/u8/ctx/SalesOrderCtx.java
+++ b/server/src/main/java/com/ecep/contract/cloud/u8/ctx/SalesOrderCtx.java
@@ -137,7 +137,7 @@ public class SalesOrderCtx extends AbstractYongYouU8Ctx {
Collectors.toMap(SalesOrderItem::getCode, item -> item))));
// 查询 U8 数据库
- List