diff --git a/client/src/main/java/com/ecep/contract/controller/AbstEntityManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/AbstEntityManagerSkin.java index 0348554..cdcd871 100644 --- a/client/src/main/java/com/ecep/contract/controller/AbstEntityManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/AbstEntityManagerSkin.java @@ -9,6 +9,7 @@ import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import java.util.function.Function; +import com.ecep.contract.util.ParamUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeansException; @@ -48,7 +49,7 @@ import javafx.util.converter.NumberStringConverter; /** * 实体管理器皮肤 * 提供了实体管理器的基本功能,如查询、新增、删除、修改、分页等 - * + * * @param Entity 的类型 * @param Entity 对应的ViewModel * @param Skin 的类型 @@ -284,13 +285,13 @@ public abstract class AbstEntityManagerSkin * @param event * @param propGetter */ protected void acceptCellEditEvent(TableColumn.CellEditEvent event, - Function> propGetter) { + Function> propGetter) { TV row = event.getRowValue(); Property property = propGetter.apply(row); property.setValue(event.getNewValue()); @@ -350,7 +351,7 @@ public abstract class AbstEntityManagerSkin models) { @@ -482,14 +483,14 @@ public abstract class AbstEntityManagerSkin loadTableData() { - Map params = getSpecification(); + ParamUtils.Builder params = getSpecification(); ViewModelService service = getViewModelService(); long timeMillis = System.currentTimeMillis(); - Page page = service.findAll(params, getPageable()); + Page page = service.findAll(params == null ? null : params.build(), getPageable()); long timeCost = System.currentTimeMillis() - timeMillis; if (logger.isDebugEnabled()) { logger.debug("load table data cost: {} ms", timeCost); @@ -501,15 +502,16 @@ public abstract class AbstEntityManagerSkin queryService, CompletableFuture future) { - queryService.asyncFindAll(getSpecification(), getPageable()).whenComplete((result, ex) -> { + ParamUtils.Builder params = getSpecification(); + queryService.asyncFindAll(params == null ? null : params.build(), getPageable()).whenComplete((result, ex) -> { if (ex != null) { future.completeExceptionally(ex); return; @@ -522,7 +524,7 @@ public abstract class AbstEntityManagerSkin getViewModelService() { @@ -535,10 +537,10 @@ public abstract class AbstEntityManagerSkin getSpecification() { + public ParamUtils.Builder getSpecification() { TextField field = controller.searchKeyField; if (field != null) { return getViewModelService().getSpecification(field.getText()); @@ -548,11 +550,11 @@ public abstract class AbstEntityManagerSkin getSpecification(String searchText) { + protected ParamUtils.Builder getSpecification(String searchText) { return getViewModelService().getSpecification(searchText); } @@ -566,7 +568,7 @@ public abstract class AbstEntityManagerSkin page) { @@ -581,7 +583,7 @@ public abstract class AbstEntityManagerSkin getTableOrders() { @@ -590,7 +592,7 @@ public abstract class AbstEntityManagerSkin 控制器类型 * @param clz 控制器类 * @param model 数据 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 4e1449e..1ed1cea 100644 --- a/client/src/main/java/com/ecep/contract/controller/BaseController.java +++ b/client/src/main/java/com/ecep/contract/controller/BaseController.java @@ -11,6 +11,7 @@ import java.util.function.Consumer; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.util.FxmlUtils; +import com.ecep.contract.vo.EmployeeVo; import org.apache.logging.log4j.util.Strings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -184,7 +185,7 @@ public class BaseController { private String stageKey; public Label leftStatusLabel; public Label rightStatusLabel; - private Employee currentUser; + private EmployeeVo currentUser; private HashMap, Object> cachedBeans = new HashMap<>(); @@ -210,7 +211,7 @@ public class BaseController { return getCachedBean(EmployeeService.class); } - public Employee getCurrentUser() { + public EmployeeVo getCurrentUser() { if (currentUser == null) { currentUser = getEmployeeService().findById(Desktop.instance.getActiveEmployeeId()); } diff --git a/client/src/main/java/com/ecep/contract/controller/CloudRkManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/CloudRkManagerSkin.java index 2e33a7b..feb938e 100644 --- a/client/src/main/java/com/ecep/contract/controller/CloudRkManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/CloudRkManagerSkin.java @@ -1,16 +1,14 @@ package com.ecep.contract.controller; -import com.ecep.contract.util.ProxyUtils; - import com.ecep.contract.SpringApp; import com.ecep.contract.controller.company.CompanyWindowController; import com.ecep.contract.controller.table.cell.CompanyTableCell; import com.ecep.contract.controller.table.cell.LocalDateTimeTableCell; -import com.ecep.contract.model.CloudRk; -import com.ecep.contract.model.Company; import com.ecep.contract.service.CloudRkService; import com.ecep.contract.service.CompanyService; import com.ecep.contract.vm.CloudRkViewModel; +import com.ecep.contract.vo.CloudRkVo; +import com.ecep.contract.vo.CompanyVo; import javafx.collections.ObservableList; import javafx.event.ActionEvent; @@ -21,7 +19,7 @@ import javafx.scene.control.cell.CheckBoxTableCell; import lombok.Setter; public class CloudRkManagerSkin - extends AbstEntityManagerSkin { + extends AbstEntityManagerSkin { @Setter private CompanyService companyService; @@ -104,11 +102,8 @@ public class CloudRkManagerSkin @Override protected void onTableRowDoubleClickedAction(CloudRkViewModel item) { - Company company = item.getCompany().get(); - if (!ProxyUtils.isInitialized(company)) { - company = getCompanyService().findById(company.getId()); - item.getCompany().set(company); - } + Integer companyId = item.getCompany().get(); + CompanyVo company = getCompanyService().findById(companyId); CompanyWindowController.show(company, getTableView().getScene().getWindow()); } } diff --git a/client/src/main/java/com/ecep/contract/controller/CloudRkManagerWindowController.java b/client/src/main/java/com/ecep/contract/controller/CloudRkManagerWindowController.java index 5e1dce6..70ad1b4 100644 --- a/client/src/main/java/com/ecep/contract/controller/CloudRkManagerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/CloudRkManagerWindowController.java @@ -13,13 +13,12 @@ import org.springframework.stereotype.Component; import com.ecep.contract.Message; import com.ecep.contract.SpringApp; -import com.ecep.contract.model.CloudRk; -import com.ecep.contract.model.Company; import com.ecep.contract.service.CloudRkService; import com.ecep.contract.task.CloudRkSyncTask; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.CloudRkViewModel; +import com.ecep.contract.vo.CloudRkVo; import javafx.concurrent.Task; import javafx.event.ActionEvent; @@ -31,7 +30,7 @@ import javafx.stage.WindowEvent; @Component @FxmlPath("/ui/cloud/rk_manager.fxml") public class CloudRkManagerWindowController - extends AbstManagerWindowController { + extends AbstManagerWindowController { private static final Logger logger = LoggerFactory.getLogger(CloudRkManagerWindowController.class); public static void show() { @@ -43,8 +42,10 @@ public class CloudRkManagerWindowController public TableColumn idColumn; public TableColumn latestUpdateColumn; - - public TableColumn companyColumn; + /** + * 集团相关方, Company + */ + public TableColumn companyColumn; public TableColumn cloudIdColumn; public TableColumn cloudLatestColumn; public TableColumn cloudBlackListUpdatedColumn; diff --git a/client/src/main/java/com/ecep/contract/controller/CloudTycManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/CloudTycManagerSkin.java index c0a4edd..d0151cd 100644 --- a/client/src/main/java/com/ecep/contract/controller/CloudTycManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/CloudTycManagerSkin.java @@ -1,22 +1,14 @@ package com.ecep.contract.controller; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.ecep.contract.util.ProxyUtils; -import org.springframework.data.domain.Page; -import org.springframework.util.StringUtils; - import com.ecep.contract.SpringApp; import com.ecep.contract.controller.company.CompanyWindowController; import com.ecep.contract.controller.table.cell.CompanyTableCell; import com.ecep.contract.controller.table.cell.LocalDateTimeTableCell; -import com.ecep.contract.model.CloudTyc; -import com.ecep.contract.model.Company; import com.ecep.contract.service.CloudTycService; import com.ecep.contract.service.CompanyService; import com.ecep.contract.vm.CloudTycInfoViewModel; +import com.ecep.contract.vo.CloudTycVo; +import com.ecep.contract.vo.CompanyVo; import javafx.collections.ObservableList; import javafx.event.ActionEvent; @@ -26,7 +18,7 @@ import lombok.Setter; public class CloudTycManagerSkin extends - AbstEntityManagerSkin { + AbstEntityManagerSkin { @Setter private CloudTycService cloudTycService; @@ -91,21 +83,20 @@ public class CloudTycManagerSkin return; } for (CloudTycInfoViewModel selectedItem : selectedItems) { - CloudTyc cloudTyc = getCloudTycService().findById(selectedItem.getId().get()); + CloudTycVo cloudTyc = getCloudTycService().findById(selectedItem.getId().get()); // selectedItem.getDescription().set(""); if (selectedItem.copyTo(cloudTyc)) { - CloudTyc saved = getCloudTycService().save(cloudTyc); + CloudTycVo saved = getCloudTycService().save(cloudTyc); selectedItem.update(saved); } } } + // @Override protected void onTableRowDoubleClickedAction(CloudTycInfoViewModel item) { - Company company = item.getCompany().get(); - if (!ProxyUtils.isInitialized(company)) { - company = getCompanyService().findById(company.getId()); - } + Integer companyId = item.getCompany().get(); + CompanyVo company = getCompanyService().findById(companyId); CompanyWindowController.show(company, getTableView().getScene().getWindow()); } } diff --git a/client/src/main/java/com/ecep/contract/controller/CloudTycManagerWindowController.java b/client/src/main/java/com/ecep/contract/controller/CloudTycManagerWindowController.java index 633d553..39034f3 100644 --- a/client/src/main/java/com/ecep/contract/controller/CloudTycManagerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/CloudTycManagerWindowController.java @@ -7,12 +7,11 @@ import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; -import com.ecep.contract.model.CloudTyc; -import com.ecep.contract.model.Company; import com.ecep.contract.service.CloudTycService; import com.ecep.contract.service.CompanyService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.CloudTycInfoViewModel; +import com.ecep.contract.vo.CloudTycVo; import javafx.fxml.FXML; import javafx.scene.control.TableColumn; @@ -26,7 +25,7 @@ import javafx.stage.Stage; @Component @FxmlPath("/ui/cloud/tyc_manager.fxml") public class CloudTycManagerWindowController - extends AbstManagerWindowController { + extends AbstManagerWindowController { public static void show() { show(CloudTycManagerWindowController.class, null); @@ -43,8 +42,11 @@ public class CloudTycManagerWindowController @FXML public TableColumn latestUpdateColumn; + /** + * 公司, Company + */ @FXML - public TableColumn companyColumn; + public TableColumn companyColumn; @FXML public TableColumn cloudIdColumn; @FXML diff --git a/client/src/main/java/com/ecep/contract/controller/ComboBoxUtils.java b/client/src/main/java/com/ecep/contract/controller/ComboBoxUtils.java index 51fb96d..5debacf 100644 --- a/client/src/main/java/com/ecep/contract/controller/ComboBoxUtils.java +++ b/client/src/main/java/com/ecep/contract/controller/ComboBoxUtils.java @@ -8,6 +8,7 @@ import com.ecep.contract.model.BaseEnumEntity; import com.ecep.contract.model.BasedEntity; import com.ecep.contract.model.IdentityEntity; import com.ecep.contract.model.NamedEntity; +import com.ecep.contract.service.IEntityService; import javafx.beans.property.Property; import javafx.collections.FXCollections; @@ -68,9 +69,7 @@ public class ComboBoxUtils { return null; } - - private static - class ComboBoxStringConverter extends javafx.util.StringConverter { + private static class ComboBoxStringConverter extends javafx.util.StringConverter { private final List dataset; public ComboBoxStringConverter(ObservableList list) { @@ -118,8 +117,41 @@ public class ComboBoxUtils { } public static void initialComboBox( - ComboBox comboBox, Property property, List dataSet, boolean hasNull - ) { + ComboBox comboBox, Property property, IEntityService queryService, boolean hasNull) { + ObservableList list = FXCollections.observableArrayList(); + if (hasNull) { + list.add(null); + } + list.addAll(queryService.findAll()); + comboBox.setItems(list); + // 从ComboBox选择到property的单向绑定 + comboBox.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { + property.setValue(newValue != null ? newValue.getId() : null); + }); + // 从property到ComboBox的单向绑定 + property.addListener((observable, oldValue, newValue) -> { + if (newValue == null) { + comboBox.getSelectionModel().clearSelection(); + return; + } + list.stream() + .filter(item -> item != null && newValue.equals(item.getId())) + .findFirst() + .ifPresent(comboBox.getSelectionModel()::select); + }); + EntityStringConverter converter = new EntityStringConverter<>(list); + comboBox.setConverter(converter); + // 初始化ComboBox的值 + if (property.getValue() != null) { + list.stream() + .filter(item -> item != null && property.getValue().equals(item.getId())) + .findFirst() + .ifPresent(comboBox.getSelectionModel()::select); + } + } + + public static void initialComboBox( + ComboBox comboBox, Property property, List dataSet, boolean hasNull) { ObservableList list = FXCollections.observableArrayList(); if (hasNull) { list.add(null); @@ -138,7 +170,7 @@ public class ComboBoxUtils { public static void bindComboBox(ComboBox comboBox, Property property) { property.addListener((observable, oldValue, newValue) -> { comboBox.setValue(newValue); -// comboBox.getItems().stream().filter(k->k.equals(newValue)).findFirst().ifPresent(comboBox::setValue); + // comboBox.getItems().stream().filter(k->k.equals(newValue)).findFirst().ifPresent(comboBox::setValue); }); comboBox.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { @@ -150,7 +182,8 @@ public class ComboBoxUtils { }); } - public static , T extends BaseEnumEntity> void bindComboBox(ComboBox comboBox, Property property, List dataSet) { + public static , T extends BaseEnumEntity> void bindComboBox(ComboBox comboBox, + Property property, List dataSet) { property.addListener((observable, oldValue, newValue) -> { dataSet.stream().filter(l -> l.getType() == newValue).findFirst().ifPresent(comboBox::setValue); }); @@ -163,13 +196,13 @@ public class ComboBoxUtils { property.setValue(newValue.getType()); }); -// comboBox.valueProperty().addListener((observable, oldValue, newValue) -> { -// if (newValue == null) { -// property.setValue(null); -// return; -// } -// property.setValue(newValue.getType()); -// }); + // comboBox.valueProperty().addListener((observable, oldValue, newValue) -> { + // if (newValue == null) { + // property.setValue(null); + // return; + // } + // property.setValue(newValue.getType()); + // }); comboBox.setCellFactory(param -> new ListCell<>() { @Override diff --git a/client/src/main/java/com/ecep/contract/controller/YongYouU8ManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/YongYouU8ManagerSkin.java index 3385a78..18b111e 100644 --- a/client/src/main/java/com/ecep/contract/controller/YongYouU8ManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/YongYouU8ManagerSkin.java @@ -1,32 +1,24 @@ package com.ecep.contract.controller; -import java.util.List; -import java.util.Map; - -import org.springframework.data.domain.Page; -import org.springframework.util.StringUtils; - -import com.ecep.contract.SpringApp; import com.ecep.contract.controller.company.CompanyWindowController; import com.ecep.contract.controller.table.cell.CompanyTableCell; import com.ecep.contract.controller.table.cell.LocalDateTimeTableCell; -import com.ecep.contract.model.CloudYu; import com.ecep.contract.model.Company; import com.ecep.contract.service.CompanyService; import com.ecep.contract.service.YongYouU8Service; -import com.ecep.contract.util.ParamUtils; import com.ecep.contract.util.ProxyUtils; import com.ecep.contract.vm.CloudYuInfoViewModel; +import com.ecep.contract.vo.CloudYuVo; +import com.ecep.contract.vo.CompanyVo; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.scene.control.ContextMenu; import javafx.scene.control.MenuItem; -import lombok.Setter; public class YongYouU8ManagerSkin extends - AbstEntityManagerSkin + AbstEntityManagerSkin implements ManagerSkin { public YongYouU8ManagerSkin(YongYouU8ManagerWindowController controller) { @@ -34,7 +26,7 @@ public class YongYouU8ManagerSkin } YongYouU8Service getU8Service() { - return getBean(YongYouU8Service.class); + return getBean(YongYouU8Service.class); } CompanyService getCompanyService() { @@ -80,10 +72,10 @@ public class YongYouU8ManagerSkin return; } for (CloudYuInfoViewModel selectedItem : selectedItems) { - CloudYu cloudYu = getU8Service().findById(selectedItem.getId().get()); + CloudYuVo yongYouU8Vo = getU8Service().findById(selectedItem.getId().get()); selectedItem.getCustomerCode().set(""); - if (selectedItem.copyTo(cloudYu)) { - CloudYu saved = getU8Service().save(cloudYu); + if (selectedItem.copyTo(yongYouU8Vo)) { + CloudYuVo saved = getU8Service().save(yongYouU8Vo); selectedItem.update(saved); } } @@ -91,10 +83,8 @@ public class YongYouU8ManagerSkin @Override protected void onTableRowDoubleClickedAction(CloudYuInfoViewModel item) { - Company company = item.getCompany().get(); - if (!ProxyUtils.isInitialized(item)) { - company = getCompanyService().findById(company.getId()); - } + Integer companyId = item.getCompany().get(); + CompanyVo company = getCompanyService().findById(companyId); CompanyWindowController.show(company, getTableView().getScene().getWindow()); } } diff --git a/client/src/main/java/com/ecep/contract/controller/YongYouU8ManagerWindowController.java b/client/src/main/java/com/ecep/contract/controller/YongYouU8ManagerWindowController.java index 6bdbf29..1473eaa 100644 --- a/client/src/main/java/com/ecep/contract/controller/YongYouU8ManagerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/YongYouU8ManagerWindowController.java @@ -9,8 +9,6 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import com.ecep.contract.Desktop; -import com.ecep.contract.model.CloudYu; -import com.ecep.contract.model.Company; import com.ecep.contract.service.YongYouU8Service; import com.ecep.contract.task.ContractSyncTask; import com.ecep.contract.task.CustomerSyncTask; @@ -19,6 +17,7 @@ import com.ecep.contract.task.VendorSyncTask; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.CloudYuInfoViewModel; +import com.ecep.contract.vo.CloudYuVo; import javafx.event.ActionEvent; import javafx.scene.control.TableColumn; @@ -29,7 +28,7 @@ import javafx.stage.Stage; @Component @FxmlPath("/ui/cloud/u8_manager.fxml") public class YongYouU8ManagerWindowController - extends AbstManagerWindowController { + extends AbstManagerWindowController { private static final Logger logger = LoggerFactory.getLogger(YongYouU8ManagerWindowController.class); public static void show() { @@ -38,7 +37,7 @@ public class YongYouU8ManagerWindowController public TableColumn idColumn; public TableColumn latestUpdateColumn; - public TableColumn companyColumn; + public TableColumn companyColumn; public TableColumn cloudIdColumn; public TableColumn cloudLatestColumn; public TableColumn descriptionColumn; diff --git a/client/src/main/java/com/ecep/contract/controller/company/AbstCompanyBasedTabSkin.java b/client/src/main/java/com/ecep/contract/controller/company/AbstCompanyBasedTabSkin.java index e9830c6..55d7429 100644 --- a/client/src/main/java/com/ecep/contract/controller/company/AbstCompanyBasedTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/company/AbstCompanyBasedTabSkin.java @@ -2,14 +2,14 @@ package com.ecep.contract.controller.company; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.TabSkin; -import com.ecep.contract.model.Company; import com.ecep.contract.service.CompanyService; import com.ecep.contract.vm.CompanyViewModel; +import com.ecep.contract.vo.CompanyVo; import javafx.concurrent.Task; public abstract class AbstCompanyBasedTabSkin - extends AbstEntityBasedTabSkin + extends AbstEntityBasedTabSkin implements TabSkin { public AbstCompanyBasedTabSkin(CompanyWindowController controller) { diff --git a/client/src/main/java/com/ecep/contract/controller/company/AbstCompanyTableTabSkin.java b/client/src/main/java/com/ecep/contract/controller/company/AbstCompanyTableTabSkin.java index bf86e31..88d36e7 100644 --- a/client/src/main/java/com/ecep/contract/controller/company/AbstCompanyTableTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/company/AbstCompanyTableTabSkin.java @@ -1,7 +1,5 @@ package com.ecep.contract.controller.company; -import java.util.Map; - import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.controller.table.TableOfTabSkin; @@ -40,8 +38,8 @@ public abstract class AbstCompanyTableTabSkin getSpecification(CompanyVo parent) { - return ParamUtils.equal("company", parent.getId()); + public ParamUtils.Builder getSpecification(CompanyVo parent) { + return ParamUtils.builder().equals("company", parent.getId()); } } diff --git a/client/src/main/java/com/ecep/contract/controller/company/CompanyContactWindowController.java b/client/src/main/java/com/ecep/contract/controller/company/CompanyContactWindowController.java index 7f19ab7..a63449a 100644 --- a/client/src/main/java/com/ecep/contract/controller/company/CompanyContactWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/company/CompanyContactWindowController.java @@ -2,7 +2,6 @@ package com.ecep.contract.controller.company; import java.lang.reflect.InvocationTargetException; import java.time.format.DateTimeFormatter; -import java.util.Optional; import java.util.concurrent.CompletableFuture; import org.slf4j.Logger; @@ -18,6 +17,7 @@ import com.ecep.contract.service.CompanyContactService; import com.ecep.contract.util.FxmlUtils; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.CompanyContactViewModel; +import com.ecep.contract.vo.CompanyContactVo; import javafx.application.Platform; import javafx.scene.control.Button; @@ -84,7 +84,7 @@ public class CompanyContactWindowController extends BaseController { public Label versionLabel; public Button saveBtn; - private CompletableFuture companyContactLoadedFuture; + private CompletableFuture companyContactLoadedFuture; @Override public void show(Stage stage) { @@ -103,7 +103,7 @@ public class CompanyContactWindowController extends BaseController { initializeBaseTab(); companyContactLoadedFuture = CompletableFuture.supplyAsync(() -> { - CompanyContact oldName = companyContactService.findById(viewModel.getId().get()); + CompanyContactVo oldName = companyContactService.findById(viewModel.getId().get()); Platform.runLater(() -> { viewModel.update(oldName); viewModel.bindListener(); @@ -128,9 +128,9 @@ public class CompanyContactWindowController extends BaseController { saveBtn.disableProperty().bind(viewModel.getChanged().not()); saveBtn.setOnAction(event -> { try { - CompanyContact contact = companyContactLoadedFuture.join(); + CompanyContactVo contact = companyContactLoadedFuture.join(); viewModel.copyTo(contact); - CompanyContact saved = companyContactService.save(contact); + CompanyContactVo saved = companyContactService.save(contact); viewModel.update(saved); companyContactLoadedFuture = CompletableFuture.completedFuture(saved); } catch (Exception e) { diff --git a/client/src/main/java/com/ecep/contract/controller/company/CompanyManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/company/CompanyManagerSkin.java index 3d6fc85..381f77e 100644 --- a/client/src/main/java/com/ecep/contract/controller/company/CompanyManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/company/CompanyManagerSkin.java @@ -4,10 +4,10 @@ import java.util.List; import java.util.Optional; import com.ecep.contract.controller.AbstEntityManagerSkin; -import com.ecep.contract.model.Company; import com.ecep.contract.service.CompanyOldNameService; import com.ecep.contract.service.CompanyService; import com.ecep.contract.vm.CompanyViewModel; +import com.ecep.contract.vo.CompanyVo; import javafx.application.Platform; import javafx.event.ActionEvent; @@ -16,7 +16,7 @@ import javafx.scene.control.TextInputDialog; import lombok.Setter; public class CompanyManagerSkin - extends AbstEntityManagerSkin { + extends AbstEntityManagerSkin { @Setter private CompanyOldNameService companyOldNameService; @@ -65,11 +65,11 @@ public class CompanyManagerSkin if (optional.isPresent()) { CompanyService companyService = getCompanyService(); String newCompanyName = optional.get(); - List list = companyService.findAllByName(newCompanyName); + List list = companyService.findAllByName(newCompanyName); if (list == null || list.isEmpty()) { // 未登记过 - Company company = companyService.createNewCompany(newCompanyName); - Company saved = companyService.save(company); + CompanyVo company = companyService.createNewCompany(newCompanyName); + CompanyVo saved = companyService.save(company); CompanyWindowController.show(saved, getTableView().getScene().getWindow()); } else { Alert alert = new Alert(Alert.AlertType.INFORMATION); diff --git a/client/src/main/java/com/ecep/contract/controller/company/CompanyManagerWindowController.java b/client/src/main/java/com/ecep/contract/controller/company/CompanyManagerWindowController.java index 33aa112..68df858 100644 --- a/client/src/main/java/com/ecep/contract/controller/company/CompanyManagerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/company/CompanyManagerWindowController.java @@ -8,11 +8,11 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import com.ecep.contract.controller.AbstManagerWindowController; -import com.ecep.contract.model.Company; import com.ecep.contract.service.CompanyService; import com.ecep.contract.task.CompanyFilesRebuildTasker; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.util.UITools; +import com.ecep.contract.vo.CompanyVo; import com.ecep.contract.vm.CompanyViewModel; import javafx.event.ActionEvent; @@ -25,7 +25,7 @@ import javafx.stage.Stage; @Component @FxmlPath("/ui/company/company-manager.fxml") public class CompanyManagerWindowController - extends AbstManagerWindowController { + extends AbstManagerWindowController { // columns @FXML diff --git a/client/src/main/java/com/ecep/contract/controller/company/CompanyWindowController.java b/client/src/main/java/com/ecep/contract/controller/company/CompanyWindowController.java index bd13237..73ca9f7 100644 --- a/client/src/main/java/com/ecep/contract/controller/company/CompanyWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/company/CompanyWindowController.java @@ -12,7 +12,6 @@ import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import com.ecep.contract.DesktopUtils; -import com.ecep.contract.SpringApp; import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.customer.CompanyCustomerWindowController; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; @@ -27,18 +26,16 @@ import com.ecep.contract.controller.tab.CompanyTabSkinOldName; import com.ecep.contract.controller.tab.CompanyTabSkinOther; import com.ecep.contract.controller.tab.CompanyTabSkinPurchaseBillVoucher; import com.ecep.contract.controller.vendor.CompanyVendorWindowController; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.CompanyCustomer; -import com.ecep.contract.model.CompanyVendor; import com.ecep.contract.service.CompanyCustomerService; import com.ecep.contract.service.CompanyService; import com.ecep.contract.service.CompanyVendorService; import com.ecep.contract.task.CompanyCompositeUpdateTasker; import com.ecep.contract.task.CompanyVerifyTasker; import com.ecep.contract.util.FxmlPath; -import com.ecep.contract.util.ProxyUtils; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.CompanyViewModel; +import com.ecep.contract.vo.CompanyCustomerVo; +import com.ecep.contract.vo.CompanyVendorVo; import com.ecep.contract.vo.CompanyVo; import javafx.beans.property.SimpleObjectProperty; @@ -131,8 +128,8 @@ public class CompanyWindowController // private final CompanyVendorViewModel companyVendorViewModel = new // CompanyVendorViewModel(); - private final SimpleObjectProperty companyCustomerProperty = new SimpleObjectProperty<>(); - private final SimpleObjectProperty companyVendorProperty = new SimpleObjectProperty<>(); + private final SimpleObjectProperty companyCustomerProperty = new SimpleObjectProperty<>(); + private final SimpleObjectProperty companyVendorProperty = new SimpleObjectProperty<>(); public Pane customerTab_pane1; public Button customerTab_openBtn; diff --git a/client/src/main/java/com/ecep/contract/controller/company_old_name/CompanyOldNameTabSkinBase.java b/client/src/main/java/com/ecep/contract/controller/company_old_name/CompanyOldNameTabSkinBase.java index cce6468..66baa02 100644 --- a/client/src/main/java/com/ecep/contract/controller/company_old_name/CompanyOldNameTabSkinBase.java +++ b/client/src/main/java/com/ecep/contract/controller/company_old_name/CompanyOldNameTabSkinBase.java @@ -4,9 +4,9 @@ import java.time.format.DateTimeFormatter; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.TabSkin; -import com.ecep.contract.model.CompanyOldName; import com.ecep.contract.service.CompanyOldNameService; import com.ecep.contract.service.CompanyService; +import com.ecep.contract.vo.CompanyOldNameVo; import com.ecep.contract.vm.CompanyOldNameViewModel; import javafx.scene.control.Tab; @@ -15,7 +15,7 @@ import lombok.Setter; public class CompanyOldNameTabSkinBase - extends AbstEntityBasedTabSkin + extends AbstEntityBasedTabSkin implements TabSkin { @Setter private CompanyService companyService; diff --git a/client/src/main/java/com/ecep/contract/controller/company_old_name/CompanyOldNameTabSkinFile.java b/client/src/main/java/com/ecep/contract/controller/company_old_name/CompanyOldNameTabSkinFile.java index 8d15516..9b8a20e 100644 --- a/client/src/main/java/com/ecep/contract/controller/company_old_name/CompanyOldNameTabSkinFile.java +++ b/client/src/main/java/com/ecep/contract/controller/company_old_name/CompanyOldNameTabSkinFile.java @@ -12,13 +12,16 @@ import com.ecep.contract.CompanyFileType; import com.ecep.contract.DesktopUtils; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin; -import com.ecep.contract.model.CompanyFile; import com.ecep.contract.model.CompanyOldName; import com.ecep.contract.service.CompanyFileService; import com.ecep.contract.service.CompanyOldNameService; +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.util.ParamUtils.Builder; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.CompanyFileViewModel; import com.ecep.contract.vm.CompanyOldNameViewModel; +import com.ecep.contract.vo.CompanyFileVo; +import com.ecep.contract.vo.CompanyOldNameVo; import javafx.application.Platform; import javafx.event.ActionEvent; @@ -33,7 +36,7 @@ import lombok.Setter; */ public class CompanyOldNameTabSkinFile extends - AbstEntityTableTabSkin + AbstEntityTableTabSkin implements TabSkin { @Setter private CompanyOldNameService companyOldNameService; @@ -62,10 +65,8 @@ public class CompanyOldNameTabSkinFile } @Override - public Map getSpecification(CompanyOldName parent) { - Map params = new HashMap<>(); - params.put("company", parent.getCompanyId()); - return params; + public Builder getSpecification(CompanyOldNameVo parent) { + return ParamUtils.builder().equals("company", parent.getCompanyId()); } @Override @@ -101,7 +102,7 @@ public class CompanyOldNameTabSkinFile } private void onTableResetAction(ActionEvent event) { - CompanyOldName oldName = getParent(); + CompanyOldNameVo oldName = getParent(); // CompletableFuture.runAsync(() -> { // if (getCompanyFileService().reBuildingFiles(oldName, this::setStatus)) { // loadTableDataSet(); diff --git a/client/src/main/java/com/ecep/contract/controller/company_old_name/CompanyOldNameWindowController.java b/client/src/main/java/com/ecep/contract/controller/company_old_name/CompanyOldNameWindowController.java index 5f13236..0bf9731 100644 --- a/client/src/main/java/com/ecep/contract/controller/company_old_name/CompanyOldNameWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/company_old_name/CompanyOldNameWindowController.java @@ -12,10 +12,10 @@ import org.springframework.util.StringUtils; import com.ecep.contract.DesktopUtils; import com.ecep.contract.controller.AbstEntityController; -import com.ecep.contract.model.CompanyOldName; import com.ecep.contract.service.CompanyOldNameService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.util.UITools; +import com.ecep.contract.vo.CompanyOldNameVo; import com.ecep.contract.vm.CompanyFileViewModel; import com.ecep.contract.vm.CompanyOldNameViewModel; @@ -38,7 +38,7 @@ import javafx.stage.WindowEvent; @Scope("prototype") @Component @FxmlPath("/ui/company/company_old_name.fxml") -public class CompanyOldNameWindowController extends AbstEntityController { +public class CompanyOldNameWindowController extends AbstEntityController { private static final Logger logger = LoggerFactory.getLogger(CompanyOldNameWindowController.class); /** @@ -97,7 +97,7 @@ public class CompanyOldNameWindowController extends AbstEntityController { diff --git a/client/src/main/java/com/ecep/contract/controller/contract/AbstContractBasedTabSkin.java b/client/src/main/java/com/ecep/contract/controller/contract/AbstContractBasedTabSkin.java index 92134d1..2d1205c 100644 --- a/client/src/main/java/com/ecep/contract/controller/contract/AbstContractBasedTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/contract/AbstContractBasedTabSkin.java @@ -2,12 +2,13 @@ package com.ecep.contract.controller.contract; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.TabSkin; -import com.ecep.contract.model.Contract; + import com.ecep.contract.service.ContractService; import com.ecep.contract.vm.ContractViewModel; +import com.ecep.contract.vo.ContractVo; public abstract class AbstContractBasedTabSkin - extends AbstEntityBasedTabSkin + extends AbstEntityBasedTabSkin implements TabSkin { public AbstContractBasedTabSkin(ContractWindowController controller) { diff --git a/client/src/main/java/com/ecep/contract/controller/contract/AbstContractTableTabSkin.java b/client/src/main/java/com/ecep/contract/controller/contract/AbstContractTableTabSkin.java index b24b3c1..2441447 100644 --- a/client/src/main/java/com/ecep/contract/controller/contract/AbstContractTableTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/contract/AbstContractTableTabSkin.java @@ -1,20 +1,19 @@ package com.ecep.contract.controller.contract; -import java.util.HashMap; -import java.util.Map; - import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.controller.table.TableOfTabSkin; -import com.ecep.contract.model.Contract; + import com.ecep.contract.model.IdentityEntity; import com.ecep.contract.service.ContractService; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.ContractViewModel; import com.ecep.contract.vm.IdentityViewModel; +import com.ecep.contract.vo.ContractVo; public abstract class AbstContractTableTabSkin> - extends AbstEntityTableTabSkin - implements TabSkin, TableOfTabSkin { + extends AbstEntityTableTabSkin + implements TabSkin, TableOfTabSkin { public AbstContractTableTabSkin(ContractWindowController controller) { super(controller); @@ -25,9 +24,9 @@ public abstract class AbstContractTableTabSkin getSpecification(Contract parent) { - Map params = new HashMap<>(); - params.put("contract", parent.getId()); + public ParamUtils.Builder getSpecification(ContractVo parent) { + ParamUtils.Builder params = getSpecification(); + params.equals("contract", parent.getId()); return params; } } diff --git a/client/src/main/java/com/ecep/contract/controller/contract/ContractManagerWindowController.java b/client/src/main/java/com/ecep/contract/controller/contract/ContractManagerWindowController.java index 2d7689f..f7610e2 100644 --- a/client/src/main/java/com/ecep/contract/controller/contract/ContractManagerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/contract/ContractManagerWindowController.java @@ -10,18 +10,14 @@ import org.springframework.stereotype.Component; import com.ecep.contract.controller.AbstManagerWindowController; import com.ecep.contract.controller.tab.ContractManagerSkin; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.ContractGroup; -import com.ecep.contract.model.ContractKind; -import com.ecep.contract.model.ContractType; -import com.ecep.contract.model.Employee; import com.ecep.contract.service.ContractService; import com.ecep.contract.task.ContractFilesRebuildAllTasker; import com.ecep.contract.task.ContractRepairAllTasker; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.ContractViewModel; +import com.ecep.contract.vo.ContractGroupVo; +import com.ecep.contract.vo.ContractVo; import javafx.event.ActionEvent; import javafx.scene.control.CheckBox; @@ -34,27 +30,27 @@ import javafx.stage.Stage; @Component @FxmlPath("/ui/contract/contract-manager.fxml") public class ContractManagerWindowController - extends AbstManagerWindowController { + extends AbstManagerWindowController { - public ComboBox groupSelector; + public ComboBox groupSelector; public CheckBox composeViewBtn; // columns public TableColumn idColumn; public TableColumn nameColumn; public TableColumn codeColumn; - public TableColumn groupColumn; - public TableColumn typeColumn; - public TableColumn kindColumn; + public TableColumn groupColumn; + public TableColumn typeColumn; + public TableColumn kindColumn; public TableColumn parentCodeColumn; public TableColumn setupDateColumn; public TableColumn orderDateColumn; public TableColumn startDateColumn; - public TableColumn employeeColumn; + public TableColumn employeeColumn; public TableColumn createdColumn; public TableColumn amountColumn; - public TableColumn companyColumn; + public TableColumn companyColumn; @Autowired private ContractService contractService; diff --git a/client/src/main/java/com/ecep/contract/controller/contract/ContractTabSkinExtendVendorInfo.java b/client/src/main/java/com/ecep/contract/controller/contract/ContractTabSkinExtendVendorInfo.java index bd53ff3..673ffa6 100644 --- a/client/src/main/java/com/ecep/contract/controller/contract/ContractTabSkinExtendVendorInfo.java +++ b/client/src/main/java/com/ecep/contract/controller/contract/ContractTabSkinExtendVendorInfo.java @@ -5,15 +5,15 @@ import java.util.concurrent.CompletableFuture; import com.ecep.contract.SpringApp; import com.ecep.contract.controller.ComboBoxUtils; -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.ExtendVendorInfo; import com.ecep.contract.model.VendorGroup; import com.ecep.contract.service.ExtendVendorInfoService; import com.ecep.contract.service.VendorGroupService; import com.ecep.contract.util.FxmlPath; -import com.ecep.contract.util.ProxyUtils; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.ExtendVendorInfoViewModel; +import com.ecep.contract.vo.ContractVo; +import com.ecep.contract.vo.ExtendVendorInfoVo; +import com.ecep.contract.vo.VendorGroupVo; import javafx.application.Platform; import javafx.beans.binding.Bindings; @@ -28,16 +28,13 @@ import javafx.util.converter.NumberStringConverter; import lombok.Setter; @FxmlPath("/ui/contract/contract-tab-ext-vendor-info.fxml") -public class ContractTabSkinExtendVendorInfo - extends AbstContractBasedTabSkin { - - @Setter - private ExtendVendorInfoService extendVendorInfoService; - @Setter - private VendorGroupService vendorGroupService; +public class ContractTabSkinExtendVendorInfo extends AbstContractBasedTabSkin { + /** + * VendorGroup + */ @FXML - public ComboBox vendorGroupField; + public ComboBox vendorGroupField; @FXML public Label vendorGroupLabel; @FXML @@ -47,7 +44,7 @@ public class ContractTabSkinExtendVendorInfo @FXML public CheckBox prePurchaseField; - CompletableFuture loadedFuture; + CompletableFuture loadedFuture; private ExtendVendorInfoViewModel viewModel = new ExtendVendorInfoViewModel(); public ContractTabSkinExtendVendorInfo(ContractWindowController controller) { @@ -75,13 +72,13 @@ public class ContractTabSkinExtendVendorInfo if (loadedFuture == null) { loadedFuture = CompletableFuture.supplyAsync(() -> { initializeTab(); - Contract contract = getEntity(); + ContractVo contract = getEntity(); return loadExtendVendorInfo(contract); }); } } - void updateViewModel(ExtendVendorInfo info) { + void updateViewModel(ExtendVendorInfoVo info) { if (Platform.isFxApplicationThread()) { viewModel.update(info); } else { @@ -89,13 +86,14 @@ public class ContractTabSkinExtendVendorInfo } } - private ExtendVendorInfo loadExtendVendorInfo(Contract contract) { + private ExtendVendorInfoVo loadExtendVendorInfo(ContractVo contract) { ExtendVendorInfoService service = getExtendVendorInfoService(); try { - ExtendVendorInfo info = service.findByContract(contract); + ExtendVendorInfoVo info = service.findByContract(contract); if (info == null) { - info = service.newInstanceByContract(contract); - info = service.save(info); + info = new ExtendVendorInfoVo(); + info.setContractId(contract.getId()); + // 注意:这里可能需要调整,取决于service接口的实现 } updateViewModel(info); viewModel.bindListener(); @@ -108,17 +106,11 @@ public class ContractTabSkinExtendVendorInfo @Override public void initializeTab() { - List groups = getVendorGroupService().findAll(); - ComboBoxUtils.initialComboBox(vendorGroupField, groups, true); - vendorGroupField.valueProperty().bindBidirectional(viewModel.getGroup()); + ComboBoxUtils.initialComboBox(vendorGroupField, viewModel.getGroup(), getVendorGroupService(), true); vendorGroupLabel.textProperty().bind(vendorGroupField.valueProperty().map(v -> { if (v == null) { return "-"; } - if (!ProxyUtils.isInitialized(v)) { - v = getVendorGroupService().findById(v.getId()); - viewModel.getGroup().set(v); - } return v.getDescription(); })); @@ -126,7 +118,8 @@ public class ContractTabSkinExtendVendorInfo new NumberStringConverter()); assignedProviderField.selectedProperty().bindBidirectional(viewModel.getAssignedProvider()); assignedProviderField.disableProperty().bind(Bindings.createBooleanBinding(() -> { - VendorGroup group = viewModel.getGroup().get(); + Integer groupId = viewModel.getGroup().get(); + VendorGroupVo group = getVendorGroupService().findById(groupId); if (group == null) { return false; } @@ -139,26 +132,21 @@ public class ContractTabSkinExtendVendorInfo @Override public void save() { if (loadedFuture != null) { - ExtendVendorInfo vendorInfo = loadedFuture.join(); + ExtendVendorInfoVo vendorInfo = loadedFuture.join(); if (viewModel.copyTo(vendorInfo)) { - ExtendVendorInfo saved = getExtendVendorInfoService().save(vendorInfo); - updateViewModel(saved); - loadedFuture = CompletableFuture.completedFuture(saved); + // 注意:这里需要根据实际service接口实现调整,可能需要调用不同的方法 + // ExtendVendorInfoVo saved = getExtendVendorInfoService().saveVo(vendorInfo); + // updateViewModel(saved); + // loadedFuture = CompletableFuture.completedFuture(saved); } } } public ExtendVendorInfoService getExtendVendorInfoService() { - if (extendVendorInfoService == null) { - extendVendorInfoService = SpringApp.getBean(ExtendVendorInfoService.class); - } - return extendVendorInfoService; + return getCachedBean(ExtendVendorInfoService.class); } public VendorGroupService getVendorGroupService() { - if (vendorGroupService == null) { - vendorGroupService = SpringApp.getBean(VendorGroupService.class); - } - return vendorGroupService; + return getCachedBean(VendorGroupService.class); } } diff --git a/client/src/main/java/com/ecep/contract/controller/contract/ContractVerifyWindowController.java b/client/src/main/java/com/ecep/contract/controller/contract/ContractVerifyWindowController.java index f0c9013..d9c8fde 100644 --- a/client/src/main/java/com/ecep/contract/controller/contract/ContractVerifyWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/contract/ContractVerifyWindowController.java @@ -6,11 +6,9 @@ import static com.ecep.contract.util.TableViewUtils.bindEnterPressed; import java.io.File; import java.time.LocalDate; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Level; @@ -29,7 +27,6 @@ import com.ecep.contract.Message; import com.ecep.contract.MessageHolder; import com.ecep.contract.controller.BaseController; import com.ecep.contract.controller.table.cell.EmployeeTableCell; -import com.ecep.contract.model.Contract; import com.ecep.contract.model.Employee; import com.ecep.contract.service.ContractService; import com.ecep.contract.service.EmployeeService; @@ -40,6 +37,8 @@ import com.ecep.contract.task.ContractVerifyResultExportAsExcelFileTasker; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.util.ParamUtils; import com.ecep.contract.util.UITools; +import com.ecep.contract.vo.ContractVo; +import com.ecep.contract.vo.EmployeeVo; import javafx.application.Platform; import javafx.beans.property.SimpleListProperty; @@ -94,7 +93,7 @@ public class ContractVerifyWindowController extends BaseController { public static class Model implements MessageHolder { private SimpleStringProperty code = new SimpleStringProperty(); private SimpleStringProperty name = new SimpleStringProperty(); - private SimpleObjectProperty employee = new SimpleObjectProperty<>(); + private SimpleObjectProperty employee = new SimpleObjectProperty<>(); private SimpleObjectProperty setupDate = new SimpleObjectProperty<>(); private SimpleListProperty messages = new SimpleListProperty<>(FXCollections.observableArrayList()); @@ -205,7 +204,7 @@ public class ContractVerifyWindowController extends BaseController { @FXML public TableColumn viewTable_nameColumn; @FXML - public TableColumn viewTable_employeeColumn; + public TableColumn viewTable_employeeColumn; @FXML public TableColumn viewTable_setupDateColumn; @FXML @@ -278,17 +277,17 @@ public class ContractVerifyWindowController extends BaseController { break; } - Page page = contractService.findAll(params, pageRequest); - for (Contract contract : page) { + Page page = contractService.findAll(params, pageRequest); + for (ContractVo contract : page) { if (isCloseRequested()) { break; } counter.incrementAndGet(); Model model = new Model(); viewTableDataSet.add(model); - Employee handler = contract.getHandler(); + Integer handler = contract.getHandlerId(); if (handler == null) { - model.getEmployee().set(contract.getEmployee()); + model.getEmployee().set(contract.getEmployeeId()); } else { model.getEmployee().set(handler); } @@ -336,7 +335,7 @@ public class ContractVerifyWindowController extends BaseController { return; } runAsync(() -> { - Contract contract = null; + ContractVo contract = null; try { contract = contractService.findByCode(contractCode); } catch (Exception e) { @@ -379,7 +378,7 @@ public class ContractVerifyWindowController extends BaseController { if (!StringUtils.hasText(contractCode)) { return; } - Contract contract = null; + ContractVo contract = null; try { contract = contractService.findByCode(contractCode); } catch (Exception e) { 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 1642890..069de3a 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 @@ -1,12 +1,25 @@ package com.ecep.contract.controller.contract; +import java.io.File; + +import org.springframework.context.annotation.Lazy; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + import com.ecep.contract.ContractPayWay; import com.ecep.contract.DesktopUtils; import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.company.CompanyWindowController; -import com.ecep.contract.controller.tab.*; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.Contract; +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; + import com.ecep.contract.service.CompanyService; import com.ecep.contract.service.ContractService; import com.ecep.contract.task.ContractRepairTask; @@ -14,30 +27,31 @@ import com.ecep.contract.task.ContractVerifyTasker; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.ContractViewModel; +import com.ecep.contract.vo.CompanyVo; +import com.ecep.contract.vo.ContractVo; + import javafx.collections.ObservableList; import javafx.event.ActionEvent; -import javafx.scene.control.*; +import javafx.scene.control.Button; +import javafx.scene.control.DatePicker; +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; -import org.springframework.context.annotation.Lazy; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; -import org.springframework.util.StringUtils; - -import java.io.File; @Lazy @Scope("prototype") @Component @FxmlPath("/ui/contract/contract.fxml") public class ContractWindowController - extends AbstEntityController { + extends AbstEntityController { - public static void show(Contract contract, Window owner) { - ContractViewModel model = new ContractViewModel(); - model.update(contract); - show(model, owner); + public static void show(ContractVo contract, Window owner) { + show(ContractViewModel.from(contract), owner); } /** @@ -160,7 +174,7 @@ public class ContractWindowController } public void onContractOpenInExplorerAction(ActionEvent event) { - Contract contract = getEntity(); + ContractVo contract = getEntity(); String path = contract.getPath(); if (!StringUtils.hasText(path)) { setStatus("未设置目录"); @@ -175,13 +189,13 @@ public class ContractWindowController } public void onContractOpenRelativeCompanyAction(ActionEvent event) { - Contract contract = getEntity(); - if (contract.getCompany() == null) { + ContractVo contract = getEntity(); + if (contract.getCompanyId() == null) { UITools.showAlertAndWait("没有关联的公司,你可以尝试同步修复异常。"); return; } - Integer companyId = contract.getCompany().getId(); - Company company = getCompanyService().findById(companyId); + Integer companyId = contract.getCompanyId(); + CompanyVo company = getCompanyService().findById(companyId); if (company != null) { CompanyWindowController.show(company, root.getScene().getWindow()); } @@ -224,7 +238,7 @@ public class ContractWindowController * 验证合同合规性 */ public void onContractVerifyAction(ActionEvent event) { - Contract contract = getEntity(); + ContractVo contract = getEntity(); ContractVerifyTasker task = new ContractVerifyTasker(); task.setContract(contract); UITools.showTaskDialogAndWait("同步合规性验证", task, null); diff --git a/client/src/main/java/com/ecep/contract/controller/customer/AbstCompanyCustomerTableTabSkin.java b/client/src/main/java/com/ecep/contract/controller/customer/AbstCompanyCustomerTableTabSkin.java index 7b50841..00d86d1 100644 --- a/client/src/main/java/com/ecep/contract/controller/customer/AbstCompanyCustomerTableTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/customer/AbstCompanyCustomerTableTabSkin.java @@ -2,16 +2,16 @@ package com.ecep.contract.controller.customer; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin; -import com.ecep.contract.model.CompanyCustomer; import com.ecep.contract.model.IdentityEntity; import com.ecep.contract.service.CompanyCustomerService; import com.ecep.contract.service.CompanyService; import com.ecep.contract.vm.CompanyCustomerViewModel; import com.ecep.contract.vm.IdentityViewModel; +import com.ecep.contract.vo.CompanyCustomerVo; public abstract class AbstCompanyCustomerTableTabSkin> extends - AbstEntityTableTabSkin + AbstEntityTableTabSkin implements TabSkin { public AbstCompanyCustomerTableTabSkin(CompanyCustomerWindowController controller) { diff --git a/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerEvaluationFormFileWindowController.java b/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerEvaluationFormFileWindowController.java index 7c7c30b..7be87b1 100644 --- a/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerEvaluationFormFileWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerEvaluationFormFileWindowController.java @@ -18,11 +18,13 @@ import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import com.ecep.contract.controller.BaseController; -import com.ecep.contract.model.CompanyCustomerEvaluationFormFile; -import com.ecep.contract.model.CompanyCustomerFile; +import com.ecep.contract.vo.CompanyCustomerEvaluationFormFileVo; +import com.ecep.contract.vo.CompanyCustomerFileVo; import com.ecep.contract.service.CompanyCustomerFileService; +import com.ecep.contract.service.CompanyCustomerEvaluationFormFileService; import com.ecep.contract.util.FileUtils; import com.ecep.contract.util.FxmlUtils; +import com.ecep.contract.vm.CompanyCustomerEvaluationFormFileViewModel; import com.ecep.contract.vm.CompanyCustomerFileViewModel; import javafx.application.Platform; @@ -54,13 +56,11 @@ import javafx.stage.WindowEvent; public class CompanyCustomerEvaluationFormFileWindowController extends BaseController { private static final Logger logger = LoggerFactory.getLogger(CompanyCustomerEvaluationFormFileWindowController.class); - public static void show(CompanyCustomerFile saved, Window window) { - CompanyCustomerFileViewModel model = new CompanyCustomerFileViewModel(); - model.update(saved); - show(model, window); + public static void show(CompanyCustomerEvaluationFormFileVo saved, Window window) { + show(CompanyCustomerEvaluationFormFileViewModel.from(saved), window); } - public static void show(CompanyCustomerFileViewModel viewModel, Window window) { + public static void show(CompanyCustomerEvaluationFormFileViewModel viewModel, Window window) { String key = viewModel.getClass().getName() + "-" + viewModel.getId().get(); if (toFront(key)) { return; @@ -91,7 +91,7 @@ public class CompanyCustomerEvaluationFormFileWindowController extends BaseContr public ScrollPane leftPane; public Label totalCreditScoreLabel; - private CompanyCustomerFileViewModel viewModel; + private CompanyCustomerEvaluationFormFileViewModel viewModel; private final SimpleStringProperty catalogProperty = new SimpleStringProperty(""); private final SimpleStringProperty levelProperty = new SimpleStringProperty(""); @@ -105,11 +105,15 @@ public class CompanyCustomerEvaluationFormFileWindowController extends BaseContr private SimpleObjectProperty imageProperty = new SimpleObjectProperty<>(); - private CompletableFuture loadedFuture; + private CompletableFuture loadedFuture; @Lazy @Autowired private CompanyCustomerFileService companyCustomerFileService; + @Lazy + @Autowired + private CompanyCustomerEvaluationFormFileService evaluationFormFileService; + @Override public void show(Stage stage) { @@ -138,8 +142,8 @@ public class CompanyCustomerEvaluationFormFileWindowController extends BaseContr loadedFuture = CompletableFuture.supplyAsync(() -> { int id = viewModel.getId().get(); - CompanyCustomerFile customerFile = companyCustomerFileService.findById(id); - CompanyCustomerEvaluationFormFile formFile = companyCustomerFileService.findCustomerEvaluationFormFileByCustomerFile(customerFile); + CompanyCustomerFileVo customerFile = companyCustomerFileService.findById(id); + CompanyCustomerEvaluationFormFileVo formFile = evaluationFormFileService.findByCustomerFile(customerFile); Platform.runLater(() -> update(formFile)); return formFile; }); @@ -255,10 +259,10 @@ public class CompanyCustomerEvaluationFormFileWindowController extends BaseContr private void initializePane() { idField.textProperty().bind(viewModel.getId().asString()); - filePathField.textProperty().bind(viewModel.getFilePath()); - editFilePathField.textProperty().bind(viewModel.getEditFilePath()); - signDateField.valueProperty().bindBidirectional(viewModel.getSignDate()); - validField.selectedProperty().bindBidirectional(viewModel.getValid()); + // filePathField.textProperty().bind(viewModel.getFilePath()); + // editFilePathField.textProperty().bind(viewModel.getEditFilePath()); + // signDateField.valueProperty().bindBidirectional(viewModel.getSignDate()); + // validField.selectedProperty().bindBidirectional(viewModel.getValid()); initializeRadioGroup(catalog, catalogProperty); initializeRadioGroup(level, levelProperty); @@ -289,7 +293,7 @@ public class CompanyCustomerEvaluationFormFileWindowController extends BaseContr Bindings.createBooleanBinding(() -> { boolean valid = calcValid(); - viewModel.getValid().set(valid); + // viewModel.getValid().set(valid); return valid; }, catalogProperty, levelProperty, score1Property, score2Property, score3Property, score4Property, score5Property, creditLevelProperty).addListener(((observable, oldValue, newValue) -> { logger.info("valid:{}", newValue); @@ -373,10 +377,9 @@ public class CompanyCustomerEvaluationFormFileWindowController extends BaseContr }); } - private void update(CompanyCustomerEvaluationFormFile formFile) { + private void update(CompanyCustomerEvaluationFormFileVo formFile) { - - viewModel.update(formFile.getCustomerFile()); + viewModel.update(formFile); // formFile.getScoreTemplateVersion(); @@ -389,55 +392,4 @@ public class CompanyCustomerEvaluationFormFileWindowController extends BaseContr score5Property.set(formFile.getScore5()); creditLevelProperty.set(formFile.getCreditLevel()); } - - public void onSaveAction(ActionEvent event) { - boolean modified = false; - - int id = viewModel.getId().get(); - CompanyCustomerEvaluationFormFile formFile = companyCustomerFileService.findCustomerEvaluationFormFileById(id); - CompanyCustomerFile customerFile = formFile.getCustomerFile(); - - if (!Objects.equals(catalogProperty.get(), formFile.getCatalog())) { - formFile.setCatalog(catalogProperty.get()); - modified = true; - } - if (!Objects.equals(levelProperty.get(), formFile.getLevel())) { - formFile.setLevel(levelProperty.get()); - modified = true; - } - if (!Objects.equals(score1Property.get(), formFile.getScore1())) { - formFile.setScore1(score1Property.get()); - modified = true; - } - if (!Objects.equals(score2Property.get(), formFile.getScore2())) { - formFile.setScore2(score2Property.get()); - modified = true; - } - if (!Objects.equals(score3Property.get(), formFile.getScore3())) { - formFile.setScore3(score3Property.get()); - modified = true; - } - if (!Objects.equals(score4Property.get(), formFile.getScore4())) { - formFile.setScore4(score4Property.get()); - modified = true; - } - if (!Objects.equals(score5Property.get(), formFile.getScore5())) { - formFile.setScore5(score5Property.get()); - modified = true; - } - if (!Objects.equals(creditLevelProperty.get(), formFile.getCreditLevel())) { - formFile.setCreditLevel(creditLevelProperty.get()); - modified = true; - } - - - if (viewModel.copyTo(customerFile)) { - modified = true; - } - - if (modified) { - companyCustomerFileService.save(formFile); - } - - } } diff --git a/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerEvaluationFormUpdateTask.java b/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerEvaluationFormUpdateTask.java index 3402137..64273f8 100644 --- a/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerEvaluationFormUpdateTask.java +++ b/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerEvaluationFormUpdateTask.java @@ -14,32 +14,32 @@ import java.util.Comparator; import java.util.List; import com.ecep.contract.service.*; +import com.ecep.contract.task.Tasker; import com.ecep.contract.util.CompanyUtils; +import com.ecep.contract.vo.CompanyCustomerFileVo; +import com.ecep.contract.vo.CompanyCustomerVo; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.ss.util.CellRangeAddress; -import com.ecep.contract.util.ProxyUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.StringUtils; import com.ecep.contract.CompanyCustomerFileType; +import com.ecep.contract.MessageHolder; import com.ecep.contract.SpringApp; -import com.ecep.contract.model.CloudTyc; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.CompanyCustomer; -import com.ecep.contract.model.CompanyCustomerEvaluationFormFile; -import com.ecep.contract.model.CompanyCustomerFile; +import com.ecep.contract.vo.CloudTycVo; +import com.ecep.contract.vo.CompanyVo; +import com.ecep.contract.vo.CompanyCustomerEvaluationFormFileVo; -import javafx.concurrent.Task; import lombok.Setter; -public class CompanyCustomerEvaluationFormUpdateTask extends Task { +public class CompanyCustomerEvaluationFormUpdateTask extends Tasker { private static final Logger logger = LoggerFactory.getLogger(CompanyCustomerEvaluationFormUpdateTask.class); @Setter - private CompanyCustomer customer; + private CompanyCustomerVo customer; @Setter private CompanyService companyService; private CompanyContactService companyContactService; @@ -48,13 +48,6 @@ public class CompanyCustomerEvaluationFormUpdateTask extends Task { @Setter private CompanyCustomerFileService companyCustomerFileService; - private CompanyService getCompanyService() { - if (companyService == null) { - companyService = SpringApp.getBean(CompanyService.class); - } - return companyService; - } - private CompanyCustomerService getCompanyCustomerService() { if (companyCustomerService == null) { companyCustomerService = SpringApp.getBean(CompanyCustomerService.class); @@ -76,32 +69,36 @@ public class CompanyCustomerEvaluationFormUpdateTask extends Task { return companyCustomerFileService; } - @Override - protected Object call() throws Exception { - try { - updateEvaluationForm(); - } catch (Exception ex) { - updateMessage(ex.getMessage()); - } - return null; + private CompanyCustomerEvaluationFormFileService getCompanyCustomerEvaluationFormFileService() { + return getBean(CompanyCustomerEvaluationFormFileService.class); } private File getEvaluationFormTemplate() { return getCompanyCustomerFileService().getEvaluationFormTemplate(); } - public void updateEvaluationForm() { + @Override + protected Object execute(MessageHolder holder) throws Exception { + try { + updateEvaluationForm(holder); + } catch (Exception ex) { + updateMessage(ex.getMessage()); + } + return null; + } + + public void updateEvaluationForm(MessageHolder holder) { if (!StringUtils.hasText(customer.getPath())) { - updateMessage("供应商目录未设置,请先设置供应商目录"); + holder.error("供应商目录未设置,请先设置供应商目录"); return; } File template = getEvaluationFormTemplate(); if (template == null) { - updateMessage("评价表模板文件未设置,请先设置评价表模板文件"); + holder.error("评价表模板文件未设置,请先设置评价表模板文件"); return; } if (!template.exists()) { - updateMessage("评价表模板文件 " + template.getAbsolutePath() + " 不存在,请检查"); + holder.error("评价表模板文件 " + template.getAbsolutePath() + " 不存在,请检查"); return; } @@ -110,37 +107,37 @@ public class CompanyCustomerEvaluationFormUpdateTask extends Task { File destFile = new File(dir, template_file_name); if (destFile.exists()) { - updateMessage("表单文件已经存在," + destFile.getName()); + holder.info("表单文件已经存在," + destFile.getName()); try ( InputStream inp = new FileInputStream(destFile); Workbook wb = WorkbookFactory.create(inp)) { - updateEvaluationForm(wb, destFile); - updateMessage("评价表已更新"); + updateEvaluationForm(wb, destFile, holder); + holder.info("评价表已更新"); } catch (Exception e) { - updateMessage(e.getMessage()); + holder.error(e.getMessage()); logger.error(e.getMessage(), e); } } else { - updateMessage("根据模板 " + template_file_name + " 创建表单 " + destFile.getName()); + holder.info("根据模板 " + template_file_name + " 创建表单 " + destFile.getName()); try ( InputStream inp = new FileInputStream(template); Workbook wb = WorkbookFactory.create(inp)) { - updateEvaluationForm(wb, destFile); - updateMessage("评价表已创建"); - CompanyCustomerFile customerFile = new CompanyCustomerFile(); - customerFile.setCustomer(customer); + updateEvaluationForm(wb, destFile, holder); + holder.info("评价表已创建"); + CompanyCustomerFileVo customerFile = new CompanyCustomerFileVo(); + customerFile.setCustomer(customer.getId()); customerFile.setFilePath(destFile.getAbsolutePath()); customerFile.setType(CompanyCustomerFileType.General); save(customerFile); } catch (Exception e) { - updateMessage(e.getMessage()); + holder.error(e.getMessage()); logger.error(e.getMessage(), e); } } updateProgress(1, 1); } - private void save(CompanyCustomerFile customerFile) { + private void save(CompanyCustomerFileVo customerFile) { getCompanyCustomerFileService().save(customerFile); } @@ -150,34 +147,26 @@ public class CompanyCustomerEvaluationFormUpdateTask extends Task { * @param wb work book * @param destFile 目标文件 */ - public void updateEvaluationForm( - Workbook wb, File destFile) throws IOException { - Company company = customer.getCompany(); - if (!ProxyUtils.isInitialized(company)) { - company = getCompanyService().findById(company.getId()); - customer.setCompany(company); - } - + public void updateEvaluationForm(Workbook wb, File destFile, MessageHolder holder) throws IOException { + Integer companyId = customer.getCompanyId(); + CompanyVo company = getCompanyService().findById(companyId); Sheet sheet = wb.getSheetAt(0); - updateSheet(company, sheet); + updateSheet(company, sheet, holder.sub(" - ")); + updateProgress(900, 1000); // 输出到文件 try (OutputStream fileOut = new FileOutputStream(destFile)) { wb.write(fileOut); - } catch (FileNotFoundException e) { - updateMessage("写评估表时发生文件错误,请检查评估表是否被打开中"); - updateMessage(e.getMessage()); + holder.error("写评估表时发生文件错误,请检查评估表是否被打开中:" + e.getMessage()); logger.error(e.getMessage(), e); } } - private void updateSheet(Company company, Sheet sheet) { + private void updateSheet(CompanyVo company, Sheet sheet, MessageHolder holder) { setCellValue(sheet, "B3", "客户编号:" + CompanyUtils.formatCompanyVendorId(customer.getId())); setCellValue(sheet, "B4", "客户名称:" + company.getName()); - LocalDate suggestDate = getCompanyCustomerFileService().getNextSignDate(customer, (level, msg) -> { - updateMessage(" - " + msg); - }); + LocalDate suggestDate = getCompanyCustomerFileService().getNextSignDate(customer, holder); if (suggestDate == null) { suggestDate = LocalDate.now(); } @@ -198,18 +187,18 @@ public class CompanyCustomerEvaluationFormUpdateTask extends Task { setCellValue(sheet, "H10", "企业类型:" + company.getEntType()); // 天眼评分 CloudTycService cloudTycService = SpringApp.getBean(CloudTycService.class); - CloudTyc cloudTyc = cloudTycService.getOrCreateCloudTyc(company); + CloudTycVo cloudTyc = cloudTycService.getOrCreateCloudTyc(company); setCellValue(sheet, "D10", "天眼评分:" + (cloudTyc.getScore() > 0 ? cloudTyc.getScore() : "")); // 检索评估表 - List evaluationFormFiles = getCompanyCustomerFileService() - .findAllCustomerEvaluationFormFiles(customer); - List filteredList = evaluationFormFiles.stream() - .filter(v -> { - CompanyCustomerFile file = v.getCustomerFile(); - return file.getSignDate() != null && file.isValid(); - }) - .sorted(Comparator.comparing(v -> v.getCustomerFile().getSignDate())) + List customerFiles = getCompanyCustomerFileService().findAllByCustomerAndType(customer, + CompanyCustomerFileType.EvaluationForm); + + List filteredList = customerFiles.stream().filter(file -> { + return file.getSignDate() != null && file.isValid(); + }) + .sorted(Comparator.comparing(CompanyCustomerFileVo::getSignDate)) + .map(getCompanyCustomerEvaluationFormFileService()::findByCustomerFile) .toList(); if (filteredList.isEmpty()) { @@ -229,8 +218,8 @@ public class CompanyCustomerEvaluationFormUpdateTask extends Task { setCellValue(sheet, "G40", "资信等级"); String[] CreditLevelTitles = new String[] { "-", "差★", " 一般★★", " 较好★★★", " 好★★★★", " " }; int baseRow = 40; - for (CompanyCustomerEvaluationFormFile form : filteredList) { - CompanyCustomerFile customerFile = form.getCustomerFile(); + for (CompanyCustomerEvaluationFormFileVo form : filteredList) { + CompanyCustomerFileVo customerFile = getCompanyCustomerFileService().findById(form.getCustomerFile()); setCellValue(sheet, baseRow, 2, String.valueOf(customerFile.getSignDate())); setCellValue(sheet, baseRow, 4, form.getCatalog()); setCellValue(sheet, baseRow, 5, form.getLevel()); @@ -247,4 +236,5 @@ public class CompanyCustomerEvaluationFormUpdateTask extends Task { } } } + } diff --git a/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerExportExcelTasker.java b/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerExportExcelTasker.java index ac422ef..a3a8b1a 100644 --- a/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerExportExcelTasker.java +++ b/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerExportExcelTasker.java @@ -2,7 +2,11 @@ package com.ecep.contract.controller.customer; import com.ecep.contract.MessageHolder; import com.ecep.contract.MyDateTimeUtils; -import com.ecep.contract.model.*; +import com.ecep.contract.vo.CompanyCustomerVo; +import com.ecep.contract.vo.CompanyVo; +import com.ecep.contract.vo.CompanyCustomerEntityVo; +import com.ecep.contract.vo.CompanyCustomerEvaluationFormFileVo; +import com.ecep.contract.vo.CompanyCustomerFileVo; import com.ecep.contract.service.CompanyCustomerEntityService; import com.ecep.contract.service.CompanyCustomerFileService; import com.ecep.contract.service.CompanyCustomerService; @@ -15,7 +19,6 @@ import org.apache.poi.ss.util.AreaReference; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFTable; -import com.ecep.contract.util.ProxyUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.domain.Pageable; @@ -94,39 +97,48 @@ public class CompanyCustomerExportExcelTasker extends Tasker { setCellValue(sheet, "A19", "Build by CMS @ " + MyDateTimeUtils.format(LocalDateTime.now())); int rowIndex = 0; - for (CompanyCustomer customer : getCustomerService().findAll(null, Pageable.unpaged())) { - Company company = customer.getCompany(); + for (CompanyCustomerVo customer : getCustomerService().findAll(null, Pageable.unpaged())) { + Integer companyId = customer.getCompanyId(); + ; + CompanyVo company = getCompanyService().findById(companyId); if (company == null) { holder.warn("客户 #" + customer.getId() + " 不存在对应公司"); continue; } - if (!ProxyUtils.isInitialized(company)) { - company = getCompanyService().findById(company.getId()); - } + // VO类不需要延迟加载代理,直接使用即可 LocalDate devDate = null; - List entities = getCustomerEntityService().findAllByCustomer(customer); - for (CompanyCustomerEntity entity : entities) { + List entities = getCustomerEntityService().findAllByCustomer(customer); + for (CompanyCustomerEntityVo entity : entities) { if (devDate == null || devDate.isAfter(entity.getDevelopDate())) { devDate = entity.getDevelopDate(); } } - CompanyCustomerEvaluationFormFile evaluationFormFile = getCustomerFileService() + CompanyCustomerEvaluationFormFileVo evaluationFormFile = getCustomerFileService() .findAllCustomerEvaluationFormFiles(customer).stream().filter(v -> { - CompanyCustomerFile customerFile = v.getCustomerFile(); + Integer customerFileId = v.getCustomerFile(); + CompanyCustomerFileVo customerFile = getCustomerFileService().findById(customerFileId); if (customerFile == null) { return false; } return customerFile.isValid(); - }).max(Comparator.comparing(v -> v.getCustomerFile().getSignDate())).orElse(null); + }).max(Comparator.comparing(v -> { + Integer customerFileId = v.getCustomerFile(); + CompanyCustomerFileVo customerFile = getCustomerFileService().findById(customerFileId); + if (customerFile == null) { + return LocalDate.MIN; + } + return customerFile.getSignDate(); + })).orElse(null); if (evaluationFormFile == null) { holder.warn(company.getName() + " 未匹配的客户评估"); continue; } - CompanyCustomerFile customerFile = evaluationFormFile.getCustomerFile(); + CompanyCustomerFileVo customerFile = getCustomerFileService() + .findById(evaluationFormFile.getCustomerFile()); if (devDate != null && devDate.isAfter(customerFile.getSignDate())) { holder.debug(company.getName() + " 最新评估日期早于客户开发日期,评估日期:" + customerFile.getSignDate() + ", 开发日期:" + devDate); diff --git a/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerManagerSkin.java index 5b15d61..05c0973 100644 --- a/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerManagerSkin.java @@ -3,16 +3,17 @@ package com.ecep.contract.controller.customer; import com.ecep.contract.MyDateTimeUtils; import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.table.cell.CompanyTableCell; -import com.ecep.contract.model.CompanyCustomer; import com.ecep.contract.service.CompanyCustomerService; import com.ecep.contract.service.CompanyService; import com.ecep.contract.vm.CompanyCustomerViewModel; +import com.ecep.contract.vo.CompanyCustomerVo; +import com.ecep.contract.vo.CompanyVo; import javafx.application.Platform; public class CompanyCustomerManagerSkin extends - AbstEntityManagerSkin { + AbstEntityManagerSkin { public CompanyCustomerManagerSkin(CompanyCustomerManagerWindowController controller) { super(controller); @@ -29,7 +30,7 @@ public class CompanyCustomerManagerSkin @Override public void initializeTable() { controller.idColumn.setCellValueFactory(param -> param.getValue().getId()); - controller.companyColumn.setCellValueFactory(param -> param.getValue().getCompany()); + controller.companyColumn.setCellValueFactory(param -> param.getValue().getCompany().getCompanyName()); controller.companyColumn.setCellFactory(param -> new CompanyTableCell<>(getCompanyService())); controller.developDateColumn.setCellValueFactory(param -> param.getValue().getDevelopDate()); diff --git a/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerManagerWindowController.java b/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerManagerWindowController.java index 7fa409c..9da0731 100644 --- a/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerManagerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerManagerWindowController.java @@ -5,6 +5,8 @@ import java.time.LocalDate; import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicBoolean; +import com.ecep.contract.vo.CompanyCustomerVo; +import com.ecep.contract.vo.CompanyVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Scope; @@ -15,12 +17,9 @@ import org.springframework.stereotype.Component; import com.ecep.contract.MyDateTimeUtils; import com.ecep.contract.controller.AbstManagerWindowController; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.CompanyCustomer; import com.ecep.contract.service.CompanyCustomerService; import com.ecep.contract.service.CompanyService; import com.ecep.contract.util.FxmlPath; -import com.ecep.contract.util.ProxyUtils; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.CompanyCustomerViewModel; @@ -45,11 +44,14 @@ import javafx.stage.Stage; @Component @FxmlPath("/ui/company/customer/customer_manager.fxml") public class CompanyCustomerManagerWindowController - extends AbstManagerWindowController { + extends AbstManagerWindowController { // columns public TableColumn idColumn; - public TableColumn companyColumn; + /** + * 客户所属公司,Company + */ + public TableColumn companyColumn; public TableColumn catalogColumn; public TableColumn developDateColumn; public TableColumn pathColumn; @@ -116,19 +118,16 @@ public class CompanyCustomerManagerWindowController CompletableFuture.runAsync(() -> { Pageable pageRequest = PageRequest.ofSize(50); while (!canceled.get()) { - Page page = getViewModelService().findAll(null, pageRequest); + Page page = getViewModelService().findAll(null, pageRequest); int index = page.getNumber() * page.getSize(); int i = 1; - for (CompanyCustomer companyCustomer : page) { + for (CompanyCustomerVo companyCustomer : page) { if (canceled.get()) { return; } - Company company = companyCustomer.getCompany(); - if (!ProxyUtils.isInitialized(company)) { - company = getCompanyService().findById(company.getId()); - } + CompanyVo company = getCompanyService().findById(companyCustomer.getCompanyId()); String prefix = (index + i) + "/" + page.getTotalElements() + ", " + company.getName() + "> "; getViewModelService().reBuildingFiles(companyCustomer, (level, msg) -> { Platform.runLater(() -> { diff --git a/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerTabSkinBase.java b/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerTabSkinBase.java index 021b052..1a6b782 100644 --- a/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerTabSkinBase.java +++ b/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerTabSkinBase.java @@ -10,9 +10,9 @@ import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.converter.CompanyStringConverter; import com.ecep.contract.converter.EntityStringConverter; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.CompanyContact; -import com.ecep.contract.model.CompanyCustomer; +import com.ecep.contract.vo.CompanyVo; +import com.ecep.contract.vo.CompanyContactVo; +import com.ecep.contract.vo.CompanyCustomerVo; import com.ecep.contract.service.CompanyContactService; import com.ecep.contract.service.CompanyCustomerService; import com.ecep.contract.service.CompanyService; @@ -27,7 +27,7 @@ import javafx.scene.control.TextField; import javafx.util.converter.LocalDateStringConverter; public class CompanyCustomerTabSkinBase - extends AbstEntityBasedTabSkin + extends AbstEntityBasedTabSkin implements TabSkin { public CompanyCustomerTabSkinBase(CompanyCustomerWindowController controller) { @@ -59,9 +59,12 @@ public class CompanyCustomerTabSkinBase 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()); + Integer companyId = viewModel.getCompany().get(); + if (companyId != null) { + CompanyVo company = getCompanyService().findById(companyId); + if (company != null) { + CompanyWindowController.show(company, controller.root.getScene().getWindow()); + } } }); @@ -79,7 +82,7 @@ public class CompanyCustomerTabSkinBase } private void initializeContactFieldAutoCompletion(TextField textField) { - EntityStringConverter stringConverter = new EntityStringConverter<>(); + EntityStringConverter stringConverter = new EntityStringConverter<>(); stringConverter.setInitialized(cc -> getCompanyContactService().findById(cc.getId())); UITools.autoCompletion(textField, viewModel.getContact(), p -> getCompanyContactService().searchByCompany(viewModel.getCompany().get(), p.getUserText()), @@ -92,7 +95,7 @@ public class CompanyCustomerTabSkinBase } public void onCompanyCustomerCreatePathAction(ActionEvent event) { - CompanyCustomer companyCustomer = getCompanyCustomerService().findById(viewModel.getId().get()); + CompanyCustomerVo companyCustomer = getCompanyCustomerService().findById(viewModel.getId().get()); if (getCompanyCustomerService().makePathAbsent(companyCustomer)) { companyCustomer = getCompanyCustomerService().save(companyCustomer); viewModel.update(companyCustomer); diff --git a/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerWindowController.java b/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerWindowController.java index 3cceb4b..37885c6 100644 --- a/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerWindowController.java @@ -11,13 +11,13 @@ import org.springframework.util.StringUtils; import com.ecep.contract.DesktopUtils; import com.ecep.contract.controller.AbstEntityController; -import com.ecep.contract.model.CompanyCustomer; import com.ecep.contract.service.CompanyContactService; import com.ecep.contract.service.CompanyCustomerService; import com.ecep.contract.service.CompanyService; import com.ecep.contract.util.FxmlPath; -import com.ecep.contract.util.ProxyUtils; import com.ecep.contract.vm.CompanyCustomerViewModel; +import com.ecep.contract.vo.CompanyCustomerVo; +import com.ecep.contract.vo.CompanyVo; import javafx.event.ActionEvent; import javafx.scene.control.Button; @@ -36,16 +36,14 @@ import javafx.stage.WindowEvent; @Scope("prototype") @Component @FxmlPath("/ui/company/customer/customer.fxml") -public class CompanyCustomerWindowController extends AbstEntityController { +public class CompanyCustomerWindowController extends AbstEntityController { private static final Logger logger = LoggerFactory.getLogger(CompanyCustomerWindowController.class); /** * 显示界面 */ - public static void show(CompanyCustomer customer, Window window) { - CompanyCustomerViewModel viewModel = new CompanyCustomerViewModel(); - viewModel.update(customer); - show(CompanyCustomerWindowController.class, viewModel, window); + public static void show(CompanyCustomerVo customer, Window window) { + show(CompanyCustomerWindowController.class, CompanyCustomerViewModel.from(customer), window); } public Tab baseInfoTab; @@ -71,14 +69,11 @@ public class CompanyCustomerWindowController extends AbstEntityController { - if (company == null) { + getTitle().bind(viewModel.getCompany().map(companyId -> { + if (companyId == null) { return "-"; } - if (!ProxyUtils.isInitialized(company)) { - company = getCompanyService().findById(company.getId()); - viewModel.getCompany().set(company); - } + CompanyVo company = getCompanyService().findById(companyId); return getMessage("ui.customer.title", String.valueOf(viewModel.getId().get()), company.getName()); })); } diff --git a/client/src/main/java/com/ecep/contract/controller/customer/CustomerTabSkinEntity.java b/client/src/main/java/com/ecep/contract/controller/customer/CustomerTabSkinEntity.java index 6d1cc51..2771e15 100644 --- a/client/src/main/java/com/ecep/contract/controller/customer/CustomerTabSkinEntity.java +++ b/client/src/main/java/com/ecep/contract/controller/customer/CustomerTabSkinEntity.java @@ -4,12 +4,13 @@ import com.ecep.contract.SpringApp; import com.ecep.contract.controller.table.cell.LocalDateTimeTableCell; import com.ecep.contract.converter.EmployeeStringConverter; import com.ecep.contract.converter.EntityStringConverter; -import com.ecep.contract.model.CompanyCustomer; -import com.ecep.contract.model.CompanyCustomerEntity; -import com.ecep.contract.model.CustomerCatalog; +import com.ecep.contract.vo.CompanyCustomerVo; +import com.ecep.contract.vo.CompanyCustomerEntityVo; +import com.ecep.contract.vo.CustomerCatalogVo; import com.ecep.contract.service.CompanyCustomerEntityService; import com.ecep.contract.service.CustomerCatalogService; import com.ecep.contract.util.FxmlPath; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.CustomerEntityViewModel; import javafx.scene.control.MenuItem; import javafx.scene.control.Tab; @@ -18,11 +19,10 @@ import lombok.Setter; import java.time.LocalDate; import java.time.LocalDateTime; -import java.util.Map; @FxmlPath("/ui/company/customer/customer-tab-entity.fxml") public class CustomerTabSkinEntity - extends AbstCompanyCustomerTableTabSkin { + extends AbstCompanyCustomerTableTabSkin { // 关联项 tab public TableColumn entityTable_idColumn; @@ -79,7 +79,7 @@ public class CustomerTabSkinEntity } private void initializeEntityTabCatalogColumn(TableColumn column) { - EntityStringConverter converter = new EntityStringConverter<>(); + EntityStringConverter converter = new EntityStringConverter<>(); converter.setInitialized(v -> getCachedBean(CustomerCatalogService.class).findById(v.getId())); column.setCellValueFactory(param -> param.getValue().getCatalog().map(converter::toString)); } @@ -97,9 +97,9 @@ public class CustomerTabSkinEntity } @Override - public Map getSpecification(CompanyCustomer parent) { - Map params = getSpecification(); - params.put("customer", parent.getId()); + public ParamUtils.Builder getSpecification(CompanyCustomerVo parent) { + ParamUtils.Builder params = getSpecification(); + params.equals("customer", parent.getId()); return params; } diff --git a/client/src/main/java/com/ecep/contract/controller/customer/CustomerTabSkinFile.java b/client/src/main/java/com/ecep/contract/controller/customer/CustomerTabSkinFile.java index 088eb67..8081724 100644 --- a/client/src/main/java/com/ecep/contract/controller/customer/CustomerTabSkinFile.java +++ b/client/src/main/java/com/ecep/contract/controller/customer/CustomerTabSkinFile.java @@ -2,14 +2,11 @@ package com.ecep.contract.controller.customer; import java.io.File; import java.time.LocalDate; -import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ScheduledExecutorService; import java.util.function.Consumer; -import com.ecep.contract.service.CompanyCustomerFileTypeService; import org.springframework.util.StringUtils; import com.ecep.contract.CompanyCustomerFileType; @@ -20,17 +17,18 @@ import com.ecep.contract.SpringApp; import com.ecep.contract.constant.CompanyCustomerConstant; import com.ecep.contract.controller.table.EditableEntityTableTabSkin; import com.ecep.contract.model.BaseEnumEntity; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.CompanyCustomer; -import com.ecep.contract.model.CompanyCustomerFile; import com.ecep.contract.model.CompanyCustomerFileTypeLocal; import com.ecep.contract.service.CompanyCustomerFileService; +import com.ecep.contract.service.CompanyCustomerFileTypeService; import com.ecep.contract.service.CompanyCustomerService; import com.ecep.contract.util.FileUtils; import com.ecep.contract.util.FxmlPath; -import com.ecep.contract.util.ProxyUtils; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.CompanyCustomerFileViewModel; +import com.ecep.contract.vo.CompanyCustomerFileVo; +import com.ecep.contract.vo.CompanyCustomerVo; +import com.ecep.contract.vo.CompanyVo; import javafx.application.Platform; import javafx.beans.binding.Bindings; @@ -52,8 +50,8 @@ import lombok.Setter; @FxmlPath("/ui/company/customer/customer-tab-file.fxml") public class CustomerTabSkinFile - extends AbstCompanyCustomerTableTabSkin - implements EditableEntityTableTabSkin { + extends AbstCompanyCustomerTableTabSkin + implements EditableEntityTableTabSkin { @Setter private CompanyCustomerFileService companyCustomerFileService; @@ -91,9 +89,9 @@ public class CustomerTabSkinFile } @Override - public Map getSpecification(CompanyCustomer parent) { - Map params = getSpecification(); - params.put("customer", parent.getId()); + public ParamUtils.Builder getSpecification(CompanyCustomerVo parent) { + ParamUtils.Builder params = getSpecification(); + params.equals("customer", parent.getId()); return params; } @@ -184,7 +182,7 @@ public class CustomerTabSkinFile setStatus("目录错误,不存在"); return; } - CompanyCustomer companyCustomer = getParent(); + CompanyCustomerVo companyCustomer = getParent(); LocalDate nextSignDate = getCompanyCustomerFileService().getNextSignDate(companyCustomer, ((level, message) -> setStatus(message))); if (nextSignDate != null && files.size() == 1) { @@ -196,13 +194,13 @@ public class CustomerTabSkinFile + "." + StringUtils.getFilenameExtension(fileName); File dest = new File(dir, destFileName); if (file.renameTo(dest)) { - CompanyCustomerFile ccf = new CompanyCustomerFile(); - ccf.setCustomer(companyCustomer); + CompanyCustomerFileVo ccf = new CompanyCustomerFileVo(); + ccf.setCustomer(companyCustomer.getId()); ccf.setType(CompanyCustomerFileType.EvaluationForm); ccf.setFilePath(dest.getAbsolutePath()); ccf.setSignDate(nextSignDate); ccf.setValid(false); - CompanyCustomerFile saved = getCompanyCustomerFileService().save(ccf); + CompanyCustomerFileVo saved = getCompanyCustomerFileService().save(ccf); Platform.runLater(() -> { CompanyCustomerFileViewModel model = new CompanyCustomerFileViewModel(); model.update(saved); @@ -219,8 +217,8 @@ public class CustomerTabSkinFile for (File file : files) { File dest = new File(dir, file.getName()); if (file.renameTo(dest)) { - CompanyCustomerFile ccf = new CompanyCustomerFile(); - ccf.setCustomer(companyCustomer); + CompanyCustomerFileVo ccf = new CompanyCustomerFileVo(); + ccf.setCustomer(companyCustomer.getId()); ccf.setType(CompanyCustomerFileType.General); ccf.setFilePath(dest.getAbsolutePath()); ccf.setValid(false); @@ -234,7 +232,7 @@ public class CustomerTabSkinFile CompletableFuture.runAsync(() -> { CompanyCustomerService customerService = getCompanyCustomerService(); try { - CompanyCustomer companyCustomer = customerService.findById(viewModel.getId().get()); + CompanyCustomerVo companyCustomer = customerService.findById(viewModel.getId().get()); if (customerService.reBuildingFiles(companyCustomer, (level, message) -> setStatus(message))) { loadTableDataSet(); } @@ -245,17 +243,17 @@ public class CustomerTabSkinFile } @Override - public CompanyCustomerFile loadRowData(CompanyCustomerFileViewModel row) { + public CompanyCustomerFileVo loadRowData(CompanyCustomerFileViewModel row) { return getCompanyCustomerFileService().findById(row.getId().get()); } @Override - public CompanyCustomerFile saveRowData(CompanyCustomerFile entity) { + public CompanyCustomerFileVo saveRowData(CompanyCustomerFileVo entity) { return getCompanyCustomerFileService().save(entity); } @Override - public void deleteRowData(CompanyCustomerFile entity) { + public void deleteRowData(CompanyCustomerFileVo entity) { getCompanyCustomerFileService().delete(entity); } @@ -280,11 +278,8 @@ public class CustomerTabSkinFile } public void onFileTableMoveToCompanyPathAction(ActionEvent event) { - Company company = viewModel.getCompany().get(); - if (!ProxyUtils.isInitialized(company)) { - company = getCompanyService().findById(company.getId()); - } - viewModel.getCompany().set(company); + Integer companyId = viewModel.getCompany().get(); + CompanyVo company = getCompanyService().findById(companyId); if (!StringUtils.hasText(company.getPath())) { setStatus("公司目录未设置"); @@ -360,7 +355,7 @@ public class CustomerTabSkinFile public void onCalcNextSignDateAction(ActionEvent event) { UITools.showDialogAndWait("计算客户下一个评价日期", "依据已有的客户评估表和登记采购的合同计算下一个评估日期", ds -> { - CompanyCustomer companyCustomer = getCompanyCustomerService().findById(viewModel.getId().get()); + CompanyCustomerVo companyCustomer = getCompanyCustomerService().findById(viewModel.getId().get()); LocalDate nextSignDate = getCompanyCustomerFileService().getNextSignDate(companyCustomer, (level, msg) -> { Platform.runLater(() -> { ds.add(msg); diff --git a/client/src/main/java/com/ecep/contract/controller/customer/CustomerTabSkinSatisfactionSurvey.java b/client/src/main/java/com/ecep/contract/controller/customer/CustomerTabSkinSatisfactionSurvey.java index 150aa42..6b5b914 100644 --- a/client/src/main/java/com/ecep/contract/controller/customer/CustomerTabSkinSatisfactionSurvey.java +++ b/client/src/main/java/com/ecep/contract/controller/customer/CustomerTabSkinSatisfactionSurvey.java @@ -10,13 +10,14 @@ import com.ecep.contract.controller.project.satisfaction_survey.CustomerSatisfac import com.ecep.contract.controller.table.cell.EmployeeTableCell; import com.ecep.contract.controller.table.cell.ProjectTableCell; import com.ecep.contract.converter.EntityStringConverter; -import com.ecep.contract.model.CompanyCustomer; -import com.ecep.contract.model.CustomerCatalog; -import com.ecep.contract.model.CustomerSatisfactionSurvey; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.Project; +import com.ecep.contract.vo.CompanyCustomerVo; +import com.ecep.contract.vo.CustomerCatalogVo; +import com.ecep.contract.vo.CustomerSatisfactionSurveyVo; +import com.ecep.contract.vo.EmployeeVo; +import com.ecep.contract.vo.ProjectVo; import com.ecep.contract.service.CustomerSatisfactionSurveyService; import com.ecep.contract.service.ProjectService; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.CustomerEntityViewModel; import com.ecep.contract.vm.CustomerSatisfactionSurveyViewModel; @@ -27,14 +28,14 @@ import lombok.Setter; @FxmlPath("/ui/company/customer/customer-tab-satisfaction-survey.fxml") public class CustomerTabSkinSatisfactionSurvey - extends AbstCompanyCustomerTableTabSkin { + extends AbstCompanyCustomerTableTabSkin { // 关联项 tab public TableColumn idColumn; - public TableColumn projectColumn; + public TableColumn projectColumn; public TableColumn codeColumn; public TableColumn totalScoreColumn; - public TableColumn applicantColumn; + public TableColumn applicantColumn; public TableColumn applyTimeColumn; public TableColumn descriptionColumn; public TableColumn dateColumn; @@ -75,7 +76,7 @@ public class CustomerTabSkinSatisfactionSurvey } private void initializeEntityTabCatalogColumn(TableColumn column) { - EntityStringConverter converter = new EntityStringConverter<>(); + EntityStringConverter converter = new EntityStringConverter<>(); converter.setInitialized(v -> getCachedBean(CustomerCatalogService.class).findById(v.getId())); column.setCellValueFactory(param -> param.getValue().getCatalog().map(converter::toString)); } @@ -100,9 +101,9 @@ public class CustomerTabSkinSatisfactionSurvey } @Override - public Map getSpecification(CompanyCustomer parent) { - Map params = getSpecification(); - params.put("project.customer", parent.getId()); + public ParamUtils.Builder getSpecification(CompanyCustomerVo parent) { + ParamUtils.Builder params = getSpecification(); + params.equals("project.customer", parent.getId()); return params; } diff --git a/client/src/main/java/com/ecep/contract/controller/customer/SalesOrderWindowController.java b/client/src/main/java/com/ecep/contract/controller/customer/SalesOrderWindowController.java index 92887b0..7fec501 100644 --- a/client/src/main/java/com/ecep/contract/controller/customer/SalesOrderWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/customer/SalesOrderWindowController.java @@ -1,5 +1,6 @@ package com.ecep.contract.controller.customer; +import com.ecep.contract.vo.SalesOrderVo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Lazy; @@ -11,7 +12,6 @@ import com.ecep.contract.util.FxmlPath; import com.ecep.contract.controller.tab.SalesOrderTabSkinBase; import com.ecep.contract.controller.tab.SalesOrderTabSkinBillVoucher; import com.ecep.contract.controller.tab.SalesOrderTabSkinItems; -import com.ecep.contract.model.SalesOrder; import com.ecep.contract.service.SaleOrdersService; import com.ecep.contract.vm.SalesOrderViewModel; @@ -27,7 +27,7 @@ import javafx.stage.Window; @Scope("prototype") @Component @FxmlPath("/ui/contract/sale-orders.fxml") -public class SalesOrderWindowController extends AbstEntityController { +public class SalesOrderWindowController extends AbstEntityController { private static final Logger logger = LoggerFactory.getLogger(SalesOrderWindowController.class); public TabPane tabPane; public Button saveBtn; diff --git a/client/src/main/java/com/ecep/contract/controller/department/DepartmentManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/department/DepartmentManagerSkin.java index ed2b4ba..452b7c7 100644 --- a/client/src/main/java/com/ecep/contract/controller/department/DepartmentManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/department/DepartmentManagerSkin.java @@ -7,10 +7,11 @@ import org.springframework.data.domain.Pageable; import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.ManagerSkin; import com.ecep.contract.controller.table.EditableEntityTableTabSkin; +import com.ecep.contract.controller.table.cell.EmployeeTableCell; import com.ecep.contract.converter.EmployeeStringConverter; -import com.ecep.contract.model.Department; import com.ecep.contract.model.Employee; import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.vo.DepartmentVo; import com.ecep.contract.vm.DepartmentViewModel; import javafx.collections.FXCollections; @@ -21,9 +22,9 @@ import javafx.scene.control.cell.ComboBoxTableCell; import javafx.scene.control.cell.TextFieldTableCell; public class DepartmentManagerSkin - extends AbstEntityManagerSkin - implements ManagerSkin, EditableEntityTableTabSkin { - + extends + AbstEntityManagerSkin + implements ManagerSkin, EditableEntityTableTabSkin { public DepartmentManagerSkin(DepartmentManagerWindowController controller) { super(controller); @@ -33,7 +34,7 @@ public class DepartmentManagerSkin public void initializeTable() { getTableView().setEditable(true); - List employees = controller.getEmployeeService().findAll(ParamUtils.equal("isActive", true), Pageable.ofSize(30)).getContent(); + // 不再需要获取所有员工列表,因为现在使用的是leaderId和leaderName controller.idColumn.setCellValueFactory(param -> param.getValue().getId()); @@ -46,8 +47,7 @@ public class DepartmentManagerSkin controller.codeColumn.setOnEditCommit(this::onCodeColumnEditCommit); controller.leaderColumn.setCellValueFactory(param -> param.getValue().getLeader()); - controller.leaderColumn.setCellFactory(ComboBoxTableCell.forTableColumn(getBean(EmployeeStringConverter.class), FXCollections.observableArrayList(employees))); - controller.leaderColumn.setOnEditCommit(this::onLeaderColumnEditCommit); + controller.leaderColumn.setCellFactory(param -> new EmployeeTableCell<>(controller.getEmployeeService())); controller.activeColumn.setCellValueFactory(param -> param.getValue().getIsActive()); controller.activeColumn.setEditable(true); @@ -55,7 +55,6 @@ public class DepartmentManagerSkin controller.activeColumn.setOnEditCommit(this::onActiveColumnEditCommit); } - private void onCodeColumnEditCommit(TableColumn.CellEditEvent event) { DepartmentViewModel row = event.getRowValue(); row.getCode().set(event.getNewValue()); @@ -68,9 +67,11 @@ public class DepartmentManagerSkin saveRowData(row); } - private void onLeaderColumnEditCommit(TableColumn.CellEditEvent event) { + private void onLeaderColumnEditCommit(TableColumn.CellEditEvent event) { DepartmentViewModel row = event.getRowValue(); row.getLeader().set(event.getNewValue()); + // 注意:这里我们只设置了leaderName,但没有设置leaderId + // 在实际应用中,您可能需要根据leaderName查找对应的leaderId saveRowData(row); } @@ -82,14 +83,14 @@ public class DepartmentManagerSkin @Override protected void onTableRowDoubleClickedAction(DepartmentViewModel item) { - //TODO 显示详情 + // TODO 显示详情 } @Override protected void onTableCreateNewAction(ActionEvent event) { - Department employee = new Department(); - employee = controller.getViewModelService().save(employee); - DepartmentViewModel viewModel = DepartmentViewModel.from(employee); + DepartmentVo department = new DepartmentVo(); + department = controller.getViewModelService().save(department); + DepartmentViewModel viewModel = DepartmentViewModel.from(department); dataSet.add(viewModel); } } diff --git a/client/src/main/java/com/ecep/contract/controller/department/DepartmentManagerWindowController.java b/client/src/main/java/com/ecep/contract/controller/department/DepartmentManagerWindowController.java index df5528e..9442f73 100644 --- a/client/src/main/java/com/ecep/contract/controller/department/DepartmentManagerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/department/DepartmentManagerWindowController.java @@ -1,17 +1,15 @@ package com.ecep.contract.controller.department; - 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.model.Department; -import com.ecep.contract.model.Employee; import com.ecep.contract.service.DepartmentService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.DepartmentViewModel; +import com.ecep.contract.vo.DepartmentVo; import javafx.event.ActionEvent; import javafx.scene.control.TableColumn; @@ -22,12 +20,12 @@ import javafx.stage.Stage; @Component @FxmlPath(value = "/ui/employee/department-manager.fxml") public class DepartmentManagerWindowController - extends AbstManagerWindowController { + extends AbstManagerWindowController { public TableColumn idColumn; public TableColumn nameColumn; public TableColumn codeColumn; - public TableColumn leaderColumn; + public TableColumn leaderColumn; public TableColumn activeColumn; @Autowired diff --git a/client/src/main/java/com/ecep/contract/controller/employee/AbstEmployeeBasedTabSkin.java b/client/src/main/java/com/ecep/contract/controller/employee/AbstEmployeeBasedTabSkin.java index 758ee6c..a5b4b05 100644 --- a/client/src/main/java/com/ecep/contract/controller/employee/AbstEmployeeBasedTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/employee/AbstEmployeeBasedTabSkin.java @@ -8,10 +8,11 @@ import com.ecep.contract.service.EmployeeService; import com.ecep.contract.service.PermissionService; import com.ecep.contract.vm.EmployeeViewModel; +import com.ecep.contract.vo.EmployeeVo; import lombok.Setter; public abstract class AbstEmployeeBasedTabSkin - extends AbstEntityBasedTabSkin + extends AbstEntityBasedTabSkin implements TabSkin { @Setter private PermissionService permissionService; diff --git a/client/src/main/java/com/ecep/contract/controller/employee/AbstEmployeeTableTabSkin.java b/client/src/main/java/com/ecep/contract/controller/employee/AbstEmployeeTableTabSkin.java index 65d87fe..7729bdf 100644 --- a/client/src/main/java/com/ecep/contract/controller/employee/AbstEmployeeTableTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/employee/AbstEmployeeTableTabSkin.java @@ -7,12 +7,14 @@ import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.model.Employee; import com.ecep.contract.model.IdentityEntity; import com.ecep.contract.service.EmployeeService; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.EmployeeBasedViewModel; import com.ecep.contract.vm.EmployeeViewModel; import com.ecep.contract.vm.IdentityViewModel; +import com.ecep.contract.vo.EmployeeVo; public abstract class AbstEmployeeTableTabSkin> - extends AbstEntityTableTabSkin + extends AbstEntityTableTabSkin implements TabSkin { public AbstEmployeeTableTabSkin(EmployeeWindowController controller) { @@ -27,16 +29,16 @@ public abstract class AbstEmployeeTableTabSkin getSpecification(Employee parent) { - Map params = getSpecification(); - params.put("employee", parent.getId()); + public ParamUtils.Builder getSpecification(EmployeeVo parent) { + ParamUtils.Builder params = getSpecification(); + params.equals("employee", parent.getId()); return params; } } diff --git a/client/src/main/java/com/ecep/contract/controller/employee/EmployeeManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/employee/EmployeeManagerSkin.java index bcfbb0a..a3c96b5 100644 --- a/client/src/main/java/com/ecep/contract/controller/employee/EmployeeManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/employee/EmployeeManagerSkin.java @@ -1,19 +1,20 @@ package com.ecep.contract.controller.employee; -import java.util.Map; - import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.ManagerSkin; import com.ecep.contract.controller.table.cell.DepartmentTableCell; import com.ecep.contract.model.Employee; import com.ecep.contract.service.DepartmentService; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.EmployeeViewModel; +import com.ecep.contract.vo.EmployeeVo; import javafx.event.ActionEvent; import javafx.scene.control.cell.CheckBoxTableCell; public class EmployeeManagerSkin - extends AbstEntityManagerSkin + extends + AbstEntityManagerSkin implements ManagerSkin { public EmployeeManagerSkin(EmployeeManagerWindowController controller) { super(controller); @@ -29,10 +30,10 @@ public class EmployeeManagerSkin } @Override - public Map getSpecification() { - Map params = super.getSpecification(); + public ParamUtils.Builder getSpecification() { + ParamUtils.Builder params = super.getSpecification(); if (controller.activeCheckBox.isSelected()) { - params.put("isActive", true); + params.equals("isActive", true); } return params; } @@ -64,7 +65,7 @@ public class EmployeeManagerSkin @Override protected void onTableCreateNewAction(ActionEvent event) { - Employee employee = new Employee(); + EmployeeVo employee = new EmployeeVo(); employee = controller.getViewModelService().save(employee); EmployeeViewModel viewModel = EmployeeViewModel.from(employee); dataSet.add(viewModel); diff --git a/client/src/main/java/com/ecep/contract/controller/employee/EmployeeManagerWindowController.java b/client/src/main/java/com/ecep/contract/controller/employee/EmployeeManagerWindowController.java index 1d7143e..6325457 100644 --- a/client/src/main/java/com/ecep/contract/controller/employee/EmployeeManagerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/employee/EmployeeManagerWindowController.java @@ -9,12 +9,12 @@ import org.springframework.stereotype.Component; import com.ecep.contract.constant.CloudServiceConstant; import com.ecep.contract.controller.AbstManagerWindowController; import com.ecep.contract.model.Department; -import com.ecep.contract.model.Employee; import com.ecep.contract.service.EmployeeService; import com.ecep.contract.task.EmployeesSyncTask; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.EmployeeViewModel; +import com.ecep.contract.vo.EmployeeVo; import javafx.event.ActionEvent; import javafx.fxml.FXML; @@ -27,14 +27,14 @@ import javafx.stage.Stage; @Component @FxmlPath("/ui/employee/employee-manager.fxml") public class EmployeeManagerWindowController - extends AbstManagerWindowController { + extends AbstManagerWindowController { @FXML public TableColumn idColumn; @FXML public TableColumn accountColumn; @FXML - public TableColumn departmentColumn; + public TableColumn departmentColumn; @FXML public TableColumn nameColumn; @FXML diff --git a/client/src/main/java/com/ecep/contract/controller/employee/EmployeeTabSkinAuthBind.java b/client/src/main/java/com/ecep/contract/controller/employee/EmployeeTabSkinAuthBind.java index cdba385..bbbb213 100644 --- a/client/src/main/java/com/ecep/contract/controller/employee/EmployeeTabSkinAuthBind.java +++ b/client/src/main/java/com/ecep/contract/controller/employee/EmployeeTabSkinAuthBind.java @@ -1,17 +1,13 @@ package com.ecep.contract.controller.employee; -import java.time.LocalDateTime; -import java.util.List; - -import org.springframework.data.domain.Sort; - +import com.ecep.contract.Desktop; import com.ecep.contract.controller.table.cell.EmployeeTableCell; import com.ecep.contract.model.Employee; import com.ecep.contract.model.EmployeeAuthBind; import com.ecep.contract.service.EmployeeAuthBindService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.EmployeeAuthBindViewModel; - +import com.ecep.contract.vo.EmployeeAuthBindVo; import javafx.application.Platform; import javafx.scene.control.ContextMenu; import javafx.scene.control.MenuItem; @@ -19,15 +15,18 @@ import javafx.scene.control.Tab; import javafx.scene.control.TableColumn; import lombok.Setter; +import java.time.LocalDateTime; +import java.util.List; + @FxmlPath("/ui/employee/employee-auth-bind.fxml") public class EmployeeTabSkinAuthBind - extends AbstEmployeeTableTabSkin { + extends AbstEmployeeTableTabSkin { public TableColumn idColumn; public TableColumn ipColumn; public TableColumn macColumn; public TableColumn createTime; public TableColumn updateTimeColumn; - public TableColumn updaterColumn; + public TableColumn updaterColumn; public TableColumn descriptionColumn; @Setter @@ -81,13 +80,18 @@ public class EmployeeTabSkinAuthBind protected void createContextMenu(ContextMenu contextMenu) { super.createContextMenu(contextMenu); MenuItem menuItem = new MenuItem("导入未关联"); + int activeEmployeeId = Desktop.instance.getActiveEmployeeId(); + if (activeEmployeeId <= 0) { + logger.warn("未登录员工{}", activeEmployeeId); + return; + } menuItem.setOnAction(event -> { EmployeeAuthBindService service = getEmployeeAuthBindService(); - List authBinds = service.findAllByEmployee(null); - for (EmployeeAuthBind authBind : authBinds) { - authBind.setEmployee(getEntity()); + List authBinds = service.findAllByEmployee(null); + for (EmployeeAuthBindVo authBind : authBinds) { + authBind.setEmployeeId(getEntity().getId()); authBind.setUpdateTime(LocalDateTime.now()); - authBind.setUpdater(controller.getCurrentUser()); + authBind.setUpdaterId(activeEmployeeId); service.save(authBind); } }); diff --git a/client/src/main/java/com/ecep/contract/controller/employee/EmployeeTabSkinBase.java b/client/src/main/java/com/ecep/contract/controller/employee/EmployeeTabSkinBase.java index 0431cc5..860c6ee 100644 --- a/client/src/main/java/com/ecep/contract/controller/employee/EmployeeTabSkinBase.java +++ b/client/src/main/java/com/ecep/contract/controller/employee/EmployeeTabSkinBase.java @@ -3,8 +3,6 @@ package com.ecep.contract.controller.employee; import java.time.format.DateTimeFormatter; import com.ecep.contract.controller.tab.TabSkin; -import com.ecep.contract.converter.EntityStringConverter; -import com.ecep.contract.model.Department; import com.ecep.contract.service.DepartmentService; import com.ecep.contract.util.UITools; @@ -25,11 +23,8 @@ public class EmployeeTabSkinBase @Override public void initializeTab() { - EntityStringConverter departmentEntityStringConverter = new EntityStringConverter<>(); - DepartmentService departmentService = getBean(DepartmentService.class); - departmentEntityStringConverter.setInitialized(department -> departmentService.findById(department.getId())); UITools.autoCompletion(controller.departmentField, viewModel.getDepartment(), - p -> departmentService.search(p.getUserText()), departmentEntityStringConverter); + getCachedBean(DepartmentService.class)); controller.nameField.textProperty().bindBidirectional(viewModel.getName()); controller.aliasField.textProperty().bindBidirectional(viewModel.getAlias()); @@ -49,23 +44,25 @@ public class EmployeeTabSkinBase controller.isActiveField.selectedProperty().bindBidirectional(viewModel.getIsActive()); + // Callback, ListCell> cellFactory = + // controller.rolesField.getCellFactory(); + // StringConverter employeeRoleStringConverter = new + // EntityStringConverter<>(); + // controller.rolesField.setCellFactory(param -> { + // ListCell cell = cellFactory.call(param); + // if (cell instanceof CheckBoxListCell list) { + // list.setConverter(employeeRoleStringConverter); + // } + // return cell; + // }); -// Callback, ListCell> cellFactory = controller.rolesField.getCellFactory(); -// StringConverter employeeRoleStringConverter = new EntityStringConverter<>(); -// controller.rolesField.setCellFactory(param -> { -// ListCell cell = cellFactory.call(param); -// if (cell instanceof CheckBoxListCell list) { -// list.setConverter(employeeRoleStringConverter); -// } -// return cell; -// }); - - -// controller.rolesField.getCheckModel().getCheckedItems().setAll(); -// Property> selectedRoles = new SimpleObjectProperty<>(); -// controller.rolesField.getCheckModel().getCheckedItems().addListener((ListChangeListener) changed -> { -// System.out.println("newValue = " + changed); -// }); + // controller.rolesField.getCheckModel().getCheckedItems().setAll(); + // Property> selectedRoles = new + // SimpleObjectProperty<>(); + // controller.rolesField.getCheckModel().getCheckedItems().addListener((ListChangeListener) changed -> { + // System.out.println("newValue = " + changed); + // }); } } diff --git a/client/src/main/java/com/ecep/contract/controller/employee/EmployeeWindowController.java b/client/src/main/java/com/ecep/contract/controller/employee/EmployeeWindowController.java index be4fe09..05f798c 100644 --- a/client/src/main/java/com/ecep/contract/controller/employee/EmployeeWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/employee/EmployeeWindowController.java @@ -1,5 +1,6 @@ package com.ecep.contract.controller.employee; +import com.ecep.contract.vo.EmployeeVo; import org.controlsfx.control.ListSelectionView; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,7 +31,7 @@ import lombok.Getter; @Scope("prototype") @Component @FxmlPath("/ui/employee/employee.fxml") -public class EmployeeWindowController extends AbstEntityController { +public class EmployeeWindowController extends AbstEntityController { private static final Logger logger = LoggerFactory.getLogger(EmployeeWindowController.class); /** @@ -71,7 +72,7 @@ public class EmployeeWindowController extends AbstEntityController permissionsTable; - public static void show(Employee employee, Window owner) { + public static void show(EmployeeVo employee, Window owner) { EmployeeViewModel model = EmployeeViewModel.from(employee); show(model, owner); } diff --git a/client/src/main/java/com/ecep/contract/controller/inventory/InventoryManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/inventory/InventoryManagerSkin.java index 23da9a2..c5867b3 100644 --- a/client/src/main/java/com/ecep/contract/controller/inventory/InventoryManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/inventory/InventoryManagerSkin.java @@ -3,14 +3,15 @@ package com.ecep.contract.controller.inventory; import java.util.function.Function; import com.ecep.contract.controller.AbstEntityManagerSkin; +import com.ecep.contract.controller.table.cell.InventoryCatalogTableCell; import com.ecep.contract.controller.table.cell.LocalDateFieldTableCell; import com.ecep.contract.controller.table.cell.LocalDateTimeTableCell; import com.ecep.contract.converter.EntityStringConverter; -import com.ecep.contract.model.Inventory; -import com.ecep.contract.model.InventoryCatalog; import com.ecep.contract.service.InventoryCatalogService; import com.ecep.contract.service.InventoryService; import com.ecep.contract.vm.InventoryViewModel; +import com.ecep.contract.vo.InventoryCatalogVo; +import com.ecep.contract.vo.InventoryVo; import javafx.beans.property.Property; import javafx.event.ActionEvent; @@ -21,7 +22,7 @@ import javafx.util.converter.NumberStringConverter; import lombok.Setter; public class InventoryManagerSkin extends - AbstEntityManagerSkin { + AbstEntityManagerSkin { @Setter private InventoryCatalogService catalogService; @@ -56,13 +57,7 @@ public class InventoryManagerSkin extends controller.codeColumn.setOnEditCommit(event -> onColumnEditCommit(event, InventoryViewModel::getCode)); controller.catalogColumn.setCellValueFactory(param -> param.getValue().getCatalog()); - EntityStringConverter catalogStringConverter = new EntityStringConverter<>(); - catalogStringConverter.setInitialized(v -> getInventoryCatalogService().findById(v.getId())); - catalogStringConverter.setFormater(InventoryCatalog::getName); - catalogStringConverter.setFromString(v -> getInventoryCatalogService().findByName(v)); - catalogStringConverter.setSuggestion(getInventoryCatalogService()::search); - - controller.catalogColumn.setCellFactory(TextFieldTableCell.forTableColumn(catalogStringConverter)); + controller.catalogColumn.setCellFactory(param-> new InventoryCatalogTableCell<>(getInventoryCatalogService())); controller.catalogColumn.setOnEditCommit(event -> onColumnEditCommit(event, InventoryViewModel::getCatalog)); controller.specificationColumn.setCellValueFactory(param -> param.getValue().getSpecification()); @@ -125,7 +120,7 @@ public class InventoryManagerSkin extends @Override protected void onTableCreateNewAction(ActionEvent event) { - Inventory inventory = getService().save(getService().createNewInstance()); + InventoryVo inventory = getService().save(getService().createNewEntity()); InventoryViewModel viewModel = InventoryViewModel.from(inventory); dataSet.add(viewModel); } diff --git a/client/src/main/java/com/ecep/contract/controller/inventory/InventoryManagerWindowController.java b/client/src/main/java/com/ecep/contract/controller/inventory/InventoryManagerWindowController.java index d1886fc..4e852e4 100644 --- a/client/src/main/java/com/ecep/contract/controller/inventory/InventoryManagerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/inventory/InventoryManagerWindowController.java @@ -9,13 +9,13 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import com.ecep.contract.controller.AbstManagerWindowController; -import com.ecep.contract.model.Inventory; -import com.ecep.contract.model.InventoryCatalog; import com.ecep.contract.service.InventoryService; import com.ecep.contract.task.InventorySyncTask; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.InventoryViewModel; +import com.ecep.contract.vo.InventoryCatalogVo; +import com.ecep.contract.vo.InventoryVo; import javafx.event.ActionEvent; import javafx.fxml.FXML; @@ -27,7 +27,7 @@ import javafx.stage.Stage; @Component @FxmlPath(value = "/ui/inventory/inventory-manager.fxml") public class InventoryManagerWindowController - extends AbstManagerWindowController { + extends AbstManagerWindowController { @FXML public TableColumn idColumn; @@ -35,8 +35,11 @@ public class InventoryManagerWindowController public TableColumn nameColumn; @FXML public TableColumn codeColumn; + /** + * InventoryCatalogVo + */ @FXML - public TableColumn catalogColumn; + public TableColumn catalogColumn; @FXML public TableColumn specificationColumn; @FXML diff --git a/client/src/main/java/com/ecep/contract/controller/inventory/InventoryTabSkinBase.java b/client/src/main/java/com/ecep/contract/controller/inventory/InventoryTabSkinBase.java index 8a8649e..43258ce 100644 --- a/client/src/main/java/com/ecep/contract/controller/inventory/InventoryTabSkinBase.java +++ b/client/src/main/java/com/ecep/contract/controller/inventory/InventoryTabSkinBase.java @@ -13,12 +13,12 @@ import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.table.EditableEntityTableTabSkin; import com.ecep.contract.converter.EmployeeStringConverter; import com.ecep.contract.converter.EntityStringConverter; -import com.ecep.contract.model.Inventory; -import com.ecep.contract.model.InventoryCatalog; import com.ecep.contract.service.InventoryCatalogService; import com.ecep.contract.service.InventoryService; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.InventoryViewModel; +import com.ecep.contract.vo.InventoryCatalogVo; +import com.ecep.contract.vo.InventoryVo; import javafx.beans.binding.Bindings; import javafx.beans.property.SimpleDoubleProperty; @@ -31,8 +31,8 @@ import javafx.util.converter.LocalDateTimeStringConverter; import javafx.util.converter.NumberStringConverter; public class InventoryTabSkinBase - extends AbstEntityBasedTabSkin - implements TabSkin, EditableEntityTableTabSkin { + extends AbstEntityBasedTabSkin + implements TabSkin, EditableEntityTableTabSkin { public InventoryTabSkinBase(InventoryWindowController controller) { super(controller); @@ -67,12 +67,7 @@ public class InventoryTabSkinBase controller.specificationField.textProperty().bindBidirectional(viewModel.getSpecification()); controller.specificationLockField.selectedProperty().bindBidirectional(viewModel.getSpecificationLock()); - EntityStringConverter catalogConverter = new EntityStringConverter<>(); - catalogConverter.setInitialized(v -> getCatalogService().findById(v.getId())); - catalogConverter.setFormater(InventoryCatalog::getName); - catalogConverter.setSuggestion(getCatalogService()::search); - catalogConverter.setFromString(getCatalogService()::findByName); - UITools.autoCompletion(controller.catalogField, viewModel.getCatalog(), catalogConverter); + UITools.autoCompletion(controller.catalogField, viewModel.getCatalog(), getCatalogService()); controller.purchaseTaxRateField.textProperty().bindBidirectional(viewModel.getPurchaseTaxRate(), new NumberStringConverter()); @@ -112,13 +107,12 @@ public class InventoryTabSkinBase } }); - EmployeeStringConverter employeeStringConverter = getBean(EmployeeStringConverter.class); - UITools.autoCompletion(controller.creatorField, viewModel.getCreator(), employeeStringConverter); + UITools.autoCompletion(controller.creatorField, viewModel.getCreator(), controller.getEmployeeService()); DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(MyDateTimeUtils.DEFAULT_DATE_FORMAT_PATTERN); controller.createTimeField.textProperty().bindBidirectional(viewModel.getCreateTime(), new LocalDateStringConverter(dateFormatter, null)); - UITools.autoCompletion(controller.updaterField, viewModel.getUpdater(), employeeStringConverter); + UITools.autoCompletion(controller.updaterField, viewModel.getUpdater(), controller.getEmployeeService()); DateTimeFormatter dateTimeFormatter = DateTimeFormatter .ofPattern(MyDateTimeUtils.DEFAULT_DATETIME_FORMAT_PATTERN); controller.updateDateField.textProperty().bindBidirectional(viewModel.getUpdateDate(), @@ -162,7 +156,7 @@ public class InventoryTabSkinBase } private void onSyncAction(ActionEvent event) { - Inventory inventory = getEntity(); + InventoryVo inventory = getEntity(); setStatus("开始同步数据..."); if (inventory == null) { setStatus("请选择要同步的数据."); @@ -179,17 +173,17 @@ public class InventoryTabSkinBase } @Override - public void deleteRowData(Inventory entity) { + public void deleteRowData(InventoryVo entity) { getService().delete(entity); } @Override - public Inventory loadRowData(InventoryViewModel row) { + public InventoryVo loadRowData(InventoryViewModel row) { return getService().findById(row.getId().get()); } @Override - public Inventory saveRowData(Inventory entity) { + public InventoryVo saveRowData(InventoryVo entity) { return getService().save(entity); } } diff --git a/client/src/main/java/com/ecep/contract/controller/inventory/InventoryTabSkinContracts.java b/client/src/main/java/com/ecep/contract/controller/inventory/InventoryTabSkinContracts.java index 60e1962..e77bb67 100644 --- a/client/src/main/java/com/ecep/contract/controller/inventory/InventoryTabSkinContracts.java +++ b/client/src/main/java/com/ecep/contract/controller/inventory/InventoryTabSkinContracts.java @@ -2,19 +2,19 @@ package com.ecep.contract.controller.inventory; import java.text.NumberFormat; import java.time.LocalDate; -import java.util.Map; import com.ecep.contract.controller.contract.ContractWindowController; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin; -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.Inventory; import com.ecep.contract.service.ContractItemService; import com.ecep.contract.service.ContractService; import com.ecep.contract.service.InventoryHistoryPriceService; import com.ecep.contract.util.FxmlPath; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.ContractViewModel; import com.ecep.contract.vm.InventoryViewModel; +import com.ecep.contract.vo.ContractVo; +import com.ecep.contract.vo.InventoryVo; import javafx.scene.control.ContextMenu; import javafx.scene.control.MenuItem; @@ -26,7 +26,7 @@ import lombok.Setter; @FxmlPath("/ui/inventory/inventory-contract.fxml") public class InventoryTabSkinContracts extends - AbstEntityTableTabSkin + AbstEntityTableTabSkin implements TabSkin { public TableColumn idColumn; public TableColumn nameColumn; @@ -90,21 +90,9 @@ public class InventoryTabSkinContracts } @Override - public Map getSpecification(Inventory parent) { - Map params = getSpecification(); - params.put("inventory", parent); - - // return SpecificationUtils.and(getSpecification(), (root, query, builder) -> { - // // 创建ContractItem的子查询 - // Subquery subquery = query.subquery(Integer.class); - // Root from = subquery.from(ContractItem.class); - // // 子查询选择与指定库存相关的合同ID - // subquery.select(from.get("contract").get("id")) - // .where(builder.equal(from.get("inventory"), parent)); - - // // 主查询筛选ID在子查询结果中的合同 - // return builder.in(root.get("id")).value(subquery); - // }); + public ParamUtils.Builder getSpecification(InventoryVo parent) { + ParamUtils.Builder params = getSpecification(); + params.equals("inventory", parent); return params; } diff --git a/client/src/main/java/com/ecep/contract/controller/inventory/InventoryTabSkinHistoryPrice.java b/client/src/main/java/com/ecep/contract/controller/inventory/InventoryTabSkinHistoryPrice.java index 9bb4e30..c45a39d 100644 --- a/client/src/main/java/com/ecep/contract/controller/inventory/InventoryTabSkinHistoryPrice.java +++ b/client/src/main/java/com/ecep/contract/controller/inventory/InventoryTabSkinHistoryPrice.java @@ -6,11 +6,8 @@ import java.time.Year; import java.util.Comparator; import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.stream.Collectors; -import com.ecep.contract.util.ProxyUtils; - import com.ecep.contract.ContractPayWay; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin; @@ -23,8 +20,14 @@ import com.ecep.contract.service.ContractItemService; import com.ecep.contract.service.ContractService; import com.ecep.contract.service.InventoryHistoryPriceService; import com.ecep.contract.util.FxmlPath; +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.util.ProxyUtils; import com.ecep.contract.vm.InventoryHistoryPriceViewModel; import com.ecep.contract.vm.InventoryViewModel; +import com.ecep.contract.vo.ContractItemVo; +import com.ecep.contract.vo.ContractVo; +import com.ecep.contract.vo.InventoryHistoryPriceVo; +import com.ecep.contract.vo.InventoryVo; import javafx.event.ActionEvent; import javafx.scene.control.Button; @@ -35,12 +38,11 @@ import javafx.scene.control.TableColumn; import javafx.scene.control.cell.TextFieldTableCell; import javafx.util.converter.CurrencyStringConverter; import javafx.util.converter.NumberStringConverter; -import lombok.Setter; @FxmlPath("/ui/inventory/inventory-history-price.fxml") public class InventoryTabSkinHistoryPrice extends - AbstEntityTableTabSkin + AbstEntityTableTabSkin implements TabSkin { public Button refreshBtn; public TableColumn idColumn; @@ -164,57 +166,57 @@ public class InventoryTabSkinHistoryPrice private void onRefreshAction(ActionEvent event) { runAsync(() -> { - HashMap historyPriceMap = new HashMap<>(); + HashMap historyPriceMap = new HashMap<>(); - for (InventoryHistoryPrice historyPrice : getHistoryPriceService().findAllByInventory(getParent())) { - InventoryHistoryPrice oldValue = historyPriceMap.put(historyPrice.getYear().getValue(), historyPrice); + for (InventoryHistoryPriceVo historyPrice : getHistoryPriceService().findAllByInventory(getParent())) { + InventoryHistoryPriceVo oldValue = historyPriceMap.put(historyPrice.getYear().getValue(), historyPrice); if (oldValue != null) { getHistoryPriceService().delete(oldValue); } } - List items = getContractItemService().findAllByInventory(getParent()); + List items = getContractItemService().findAllByInventory(getParent()); items.stream().collect(Collectors.groupingBy(v -> { - Contract contract = v.getContract(); - if (!ProxyUtils.isInitialized(contract)) { - contract = getContractService().findById(contract.getId()); - v.setContract(contract); - } + Integer contractId = v.getContractId(); + ContractVo contract = getContractService().findById(contractId); return contract.getSetupDate().getYear(); })).forEach((year, list) -> { - InventoryHistoryPrice historyPrice = historyPriceMap.computeIfAbsent(year, k -> { - InventoryHistoryPrice price = new InventoryHistoryPrice(); - price.setInventory(getParent()); - price.setYear(year); + InventoryHistoryPriceVo historyPrice = historyPriceMap.computeIfAbsent(year, k -> { + InventoryHistoryPriceVo price = new InventoryHistoryPriceVo(); + price.setInventoryId(getParent().getId()); + price.setYear(Year.of(year)); return price; }); list.stream().collect(Collectors.groupingBy(v -> { - Contract contract = v.getContract(); + Integer contractId = v.getContractId(); + ContractVo contract = getContractService().findById(contractId); return contract.getPayWay(); })).forEach((payWay, contractItems) -> { if (ContractPayWay.RECEIVE.equals(payWay)) { // 销售 list.stream().max(Comparator.comparing(v -> { - Contract contract = v.getContract(); + Integer contractId = v.getContractId(); + ContractVo contract = getContractService().findById(contractId); return contract.getSetupDate(); })).ifPresent(v -> update(historyPrice.getLatestSalePrice(), v)); - list.stream().max(Comparator.comparing(ContractItem::getTaxPrice)) + list.stream().max(Comparator.comparing(ContractItemVo::getTaxPrice)) .ifPresent(v -> update(historyPrice.getMaxSalePrice(), v)); - list.stream().min(Comparator.comparing(ContractItem::getTaxPrice)) + list.stream().min(Comparator.comparing(ContractItemVo::getTaxPrice)) .ifPresent(v -> update(historyPrice.getMiniSalePrice(), v)); } else if (ContractPayWay.PAY.equals(payWay)) { // 采购 list.stream().max(Comparator.comparing(v -> { - Contract contract = v.getContract(); + Integer contractId = v.getContractId(); + ContractVo contract = getContractService().findById(contractId); return contract.getSetupDate(); })).ifPresent(v -> update(historyPrice.getLatestPurchasePrice(), v)); - list.stream().max(Comparator.comparing(ContractItem::getTaxPrice)) + list.stream().max(Comparator.comparing(ContractItemVo::getTaxPrice)) .ifPresent(v -> update(historyPrice.getMaxPurchasePrice(), v)); - list.stream().min(Comparator.comparing(ContractItem::getTaxPrice)) + list.stream().min(Comparator.comparing(ContractItemVo::getTaxPrice)) .ifPresent(v -> update(historyPrice.getMiniPurchasePrice(), v)); } else { @@ -227,7 +229,7 @@ public class InventoryTabSkinHistoryPrice }); } - void update(HistoryPrice historyPrice, ContractItem item) { + void update(HistoryPrice historyPrice, ContractItemVo item) { if (item == null) { historyPrice.setTaxRate(0); historyPrice.setPreTaxPrice(0); @@ -236,21 +238,18 @@ public class InventoryTabSkinHistoryPrice return; } getContractService(); - Contract contract = item.getContract(); - if (!ProxyUtils.isInitialized(contract)) { - contract = getContractService().findById(contract.getId()); - item.setContract(contract); - } - historyPrice.setTaxRate((float) item.getTaxRate()); + Integer contractId = item.getContractId(); + ContractVo contract = getContractService().findById(contractId); + historyPrice.setTaxRate(item.getTaxRate().floatValue()); historyPrice.setPreTaxPrice(item.getExclusiveTaxPrice()); historyPrice.setPostTaxPrice(item.getTaxPrice()); historyPrice.setMonthDay(MonthDay.from(contract.getSetupDate())); } @Override - public Map getSpecification(Inventory parent) { - Map params = getSpecification(); - params.put("inventory", parent.getId()); + public ParamUtils.Builder getSpecification(InventoryVo parent) { + ParamUtils.Builder params = getSpecification(); + params.equals("inventory", parent.getId()); return params; } diff --git a/client/src/main/java/com/ecep/contract/controller/inventory/InventoryWindowController.java b/client/src/main/java/com/ecep/contract/controller/inventory/InventoryWindowController.java index fb9052f..96f3152 100644 --- a/client/src/main/java/com/ecep/contract/controller/inventory/InventoryWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/inventory/InventoryWindowController.java @@ -1,15 +1,14 @@ package com.ecep.contract.controller.inventory; -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.model.Inventory; import com.ecep.contract.service.InventoryService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.InventoryViewModel; +import com.ecep.contract.vo.InventoryVo; import javafx.beans.binding.Bindings; import javafx.fxml.FXML; @@ -26,7 +25,7 @@ import javafx.stage.WindowEvent; @Scope("prototype") @Component @FxmlPath("/ui/inventory/inventory.fxml") -public class InventoryWindowController extends AbstEntityController { +public class InventoryWindowController extends AbstEntityController { @FXML public BorderPane root; @FXML diff --git a/client/src/main/java/com/ecep/contract/controller/permission/AbstEmployeeRoleBasedTabSkin.java b/client/src/main/java/com/ecep/contract/controller/permission/AbstEmployeeRoleBasedTabSkin.java index 899358f..2e549d1 100644 --- a/client/src/main/java/com/ecep/contract/controller/permission/AbstEmployeeRoleBasedTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/permission/AbstEmployeeRoleBasedTabSkin.java @@ -1,14 +1,14 @@ package com.ecep.contract.controller.permission; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; -import com.ecep.contract.model.EmployeeRole; import com.ecep.contract.service.EmployeeRoleService; import com.ecep.contract.service.FunctionService; import com.ecep.contract.service.PermissionService; import com.ecep.contract.vm.EmployeeRoleViewModel; +import com.ecep.contract.vo.EmployeeRoleVo; public abstract class AbstEmployeeRoleBasedTabSkin - extends AbstEntityBasedTabSkin { + extends AbstEntityBasedTabSkin { public AbstEmployeeRoleBasedTabSkin(EmployeeRoleWindowController controller) { super(controller); diff --git a/client/src/main/java/com/ecep/contract/controller/permission/EmployeeRoleTabSkinFunctions.java b/client/src/main/java/com/ecep/contract/controller/permission/EmployeeRoleTabSkinFunctions.java index 69f85c2..99b909e 100644 --- a/client/src/main/java/com/ecep/contract/controller/permission/EmployeeRoleTabSkinFunctions.java +++ b/client/src/main/java/com/ecep/contract/controller/permission/EmployeeRoleTabSkinFunctions.java @@ -5,9 +5,9 @@ import java.util.List; import org.controlsfx.control.ListSelectionView; import org.springframework.data.domain.Pageable; -import com.ecep.contract.model.EmployeeRole; -import com.ecep.contract.model.Function; import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.vo.EmployeeRoleVo; +import com.ecep.contract.vo.FunctionVo; import javafx.beans.property.SimpleBooleanProperty; import javafx.collections.ListChangeListener; @@ -20,7 +20,7 @@ import javafx.scene.control.Tab; public class EmployeeRoleTabSkinFunctions extends AbstEmployeeRoleBasedTabSkin { private final SimpleBooleanProperty changed = new SimpleBooleanProperty(false); - private ListSelectionView functionsField; + private ListSelectionView functionsField; public EmployeeRoleTabSkinFunctions(EmployeeRoleWindowController controller) { super(controller); @@ -50,7 +50,7 @@ public class EmployeeRoleTabSkinFunctions extends AbstEmployeeRoleBasedTabSkin { } private void loadSelectedRoles() { - List selectedRoles = getRoleService().getFunctionsByRoleId(viewModel.getId().get()); + List selectedRoles = getRoleService().getFunctionsByRoleId(viewModel.getId().get()); if (selectedRoles != null) { functionsField.getTargetItems().setAll(selectedRoles); } @@ -59,14 +59,14 @@ public class EmployeeRoleTabSkinFunctions extends AbstEmployeeRoleBasedTabSkin { private void initializeListView() { // 非系统内置账户 - List roles = getFunctionService() + List roles = getFunctionService() .findAll(ParamUtils.builder().equals("active", true).build(), Pageable.ofSize(500)).getContent(); functionsField.getSourceItems().setAll(roles); functionsField.setCellFactory(param -> { - return new ListCell<>() { + return new ListCell() { @Override - protected void updateItem(Function item, boolean empty) { + protected void updateItem(FunctionVo item, boolean empty) { super.updateItem(item, empty); if (item == null || empty) { setText(null); @@ -77,10 +77,10 @@ public class EmployeeRoleTabSkinFunctions extends AbstEmployeeRoleBasedTabSkin { }; }); - functionsField.getTargetItems().addListener((ListChangeListener) change -> { + functionsField.getTargetItems().addListener((ListChangeListener) change -> { while (change.next()) { - List added = change.getAddedSubList(); - List removed = change.getRemoved(); + List added = change.getAddedSubList(); + List removed = change.getRemoved(); if (!added.isEmpty() || !removed.isEmpty()) { changed.set(true); } @@ -99,7 +99,7 @@ public class EmployeeRoleTabSkinFunctions extends AbstEmployeeRoleBasedTabSkin { } private void saveRoles(ActionEvent event) { - EmployeeRole entity = getEntity(); + EmployeeRoleVo entity = getEntity(); entity.setFunctions(functionsField.getTargetItems()); save(entity); loadSelectedRoles(); diff --git a/client/src/main/java/com/ecep/contract/controller/permission/EmployeeRoleWindowController.java b/client/src/main/java/com/ecep/contract/controller/permission/EmployeeRoleWindowController.java index a377e14..97445bb 100644 --- a/client/src/main/java/com/ecep/contract/controller/permission/EmployeeRoleWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/permission/EmployeeRoleWindowController.java @@ -9,11 +9,11 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import com.ecep.contract.controller.AbstEntityController; -import com.ecep.contract.model.EmployeeRole; import com.ecep.contract.service.EmployeeRoleService; import com.ecep.contract.service.PermissionService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.EmployeeRoleViewModel; +import com.ecep.contract.vo.EmployeeRoleVo; import javafx.fxml.FXML; import javafx.scene.control.CheckBox; @@ -31,7 +31,7 @@ import javafx.stage.WindowEvent; @Scope("prototype") @Component @FxmlPath("/ui/employee/role.fxml") -public class EmployeeRoleWindowController extends AbstEntityController { +public class EmployeeRoleWindowController extends AbstEntityController { private static final Logger logger = LoggerFactory.getLogger(EmployeeRoleWindowController.class); @@ -58,7 +58,7 @@ public class EmployeeRoleWindowController extends AbstEntityController functionsField; + public ListSelectionView functionsField; /* diff --git a/client/src/main/java/com/ecep/contract/controller/permission/FunctionTabSkinPermission.java b/client/src/main/java/com/ecep/contract/controller/permission/FunctionTabSkinPermission.java index 0094d03..070d739 100644 --- a/client/src/main/java/com/ecep/contract/controller/permission/FunctionTabSkinPermission.java +++ b/client/src/main/java/com/ecep/contract/controller/permission/FunctionTabSkinPermission.java @@ -2,6 +2,7 @@ package com.ecep.contract.controller.permission; import java.util.Map; +import com.ecep.contract.util.ParamUtils; import org.springframework.beans.factory.annotation.Autowired; import com.ecep.contract.controller.table.AbstEntityTableTabSkin; @@ -61,9 +62,9 @@ public class FunctionTabSkinPermission } @Override - public Map getSpecification(Function parent) { - Map params = getSpecification(); - params.put("function", parent.getId()); + public ParamUtils.Builder getSpecification(Function parent) { + ParamUtils.Builder params = getSpecification(); + params.equals("function", parent.getId()); return params; } diff --git a/client/src/main/java/com/ecep/contract/controller/permission/PermissionManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/permission/PermissionManagerSkin.java index 7baf1bf..3a25f46 100644 --- a/client/src/main/java/com/ecep/contract/controller/permission/PermissionManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/permission/PermissionManagerSkin.java @@ -7,6 +7,7 @@ import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.function.Function; +import com.ecep.contract.util.ParamUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -164,14 +165,14 @@ public class PermissionManagerSkin implements ManagerSkin, TableTabSkin getSpecification() { - Map params = new HashMap<>(); + public ParamUtils.Builder getSpecification() { + ParamUtils.Builder params = ParamUtils.builder(); // 使用permissionService的specification逻辑 return params; } private void acceptSignMethodCellEditEvent(TableColumn.CellEditEvent event, - Function> function) { + Function> function) { PermissionViewModel row = event.getRowValue(); Property property = function.apply(row); property.setValue(event.getNewValue()); diff --git a/client/src/main/java/com/ecep/contract/controller/project/AbstProjectBasedTabSkin.java b/client/src/main/java/com/ecep/contract/controller/project/AbstProjectBasedTabSkin.java index abea383..aec0a1d 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/AbstProjectBasedTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/project/AbstProjectBasedTabSkin.java @@ -5,9 +5,10 @@ import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.model.Project; import com.ecep.contract.service.ProjectService; import com.ecep.contract.vm.ProjectViewModel; +import com.ecep.contract.vo.ProjectVo; public abstract class AbstProjectBasedTabSkin - extends AbstEntityBasedTabSkin + extends AbstEntityBasedTabSkin implements TabSkin { public AbstProjectBasedTabSkin(ProjectWindowController controller) { diff --git a/client/src/main/java/com/ecep/contract/controller/project/AbstProjectTableTabSkin.java b/client/src/main/java/com/ecep/contract/controller/project/AbstProjectTableTabSkin.java index 703900c..65642a6 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/AbstProjectTableTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/project/AbstProjectTableTabSkin.java @@ -5,14 +5,15 @@ import java.util.Map; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.model.IdentityEntity; -import com.ecep.contract.model.Project; import com.ecep.contract.service.ProjectService; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.IdentityViewModel; import com.ecep.contract.vm.ProjectBasedViewModel; import com.ecep.contract.vm.ProjectViewModel; +import com.ecep.contract.vo.ProjectVo; public abstract class AbstProjectTableTabSkin> - extends AbstEntityTableTabSkin + extends AbstEntityTableTabSkin implements TabSkin { public AbstProjectTableTabSkin(ProjectWindowController controller) { @@ -27,15 +28,15 @@ public abstract class AbstProjectTableTabSkin getSpecification(Project parent) { - Map params = getSpecification(); - params.put("project", parent.getId()); + public ParamUtils.Builder getSpecification(ProjectVo parent) { + ParamUtils.Builder params = getSpecification(); + params.equals("project", parent.getId()); return params; } } diff --git a/client/src/main/java/com/ecep/contract/controller/project/ApplyNewProjectWindowController.java b/client/src/main/java/com/ecep/contract/controller/project/ApplyNewProjectWindowController.java index 233a25c..b07f71b 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/ApplyNewProjectWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/project/ApplyNewProjectWindowController.java @@ -12,14 +12,15 @@ import org.springframework.stereotype.Component; import com.ecep.contract.Desktop; import com.ecep.contract.controller.BaseController; import com.ecep.contract.converter.EntityStringConverter; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.Project; import com.ecep.contract.model.ProjectSaleType; import com.ecep.contract.service.EmployeeService; -import com.ecep.contract.service.ProjectService; import com.ecep.contract.service.ProjectSaleTypeService; +import com.ecep.contract.service.ProjectService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.ProjectViewModel; +import com.ecep.contract.vo.EmployeeVo; +import com.ecep.contract.vo.ProjectSaleTypeVo; +import com.ecep.contract.vo.ProjectVo; import javafx.beans.binding.Bindings; import javafx.beans.property.ObjectProperty; @@ -49,8 +50,7 @@ public class ApplyNewProjectWindowController extends BaseController { @Autowired private EmployeeService employeeService; - - public ComboBox saleTypeComboBox; + public ComboBox saleTypeComboBox; public TextField codeYearField; public Label codeYearLabel; @@ -65,11 +65,10 @@ public class ApplyNewProjectWindowController extends BaseController { public Button cancelBtn; public Button applyBtn; - private ProjectViewModel viewModel = new ProjectViewModel(); - private ObjectProperty> onApplied = new SimpleObjectProperty<>(); + private ObjectProperty> onApplied = new SimpleObjectProperty<>(); - public void setOnApplied(Consumer onApplied) { + public void setOnApplied(Consumer onApplied) { this.onApplied.set(onApplied); } @@ -87,11 +86,11 @@ public class ApplyNewProjectWindowController extends BaseController { initializeSaleTypeField(saleTypeComboBox); - NumberStringConverter stringConverter = new NumberStringConverter(); Bindings.bindBidirectional(codeYearField.textProperty(), viewModel.getCodeYear(), stringConverter); - Bindings.bindBidirectional(codeSequenceNumberField.textProperty(), viewModel.getCodeSequenceNumber(), stringConverter); + Bindings.bindBidirectional(codeSequenceNumberField.textProperty(), viewModel.getCodeSequenceNumber(), + stringConverter); initializeApplicantLabel(applicantLabel); initializeCodePreviewLabel(codePreviewLabel); @@ -99,10 +98,9 @@ public class ApplyNewProjectWindowController extends BaseController { cancelBtn.getScene().getWindow().hide(); }); - applyBtn.disableProperty().bind(viewModel.getSaleType().isNull()); applyBtn.setOnAction(event -> { - Project newProject = new Project(); + ProjectVo newProject = new ProjectVo(); newProject.setCodeYear(viewModel.getCodeYear().get()); int codeSequenceNumber = viewModel.getCodeSequenceNumber().get(); if (codeSequenceNumber == 0) { @@ -114,11 +112,11 @@ public class ApplyNewProjectWindowController extends BaseController { codeSequenceNumberLabel.setStyle(""); } - newProject.setCodeSequenceNumber(codeSequenceNumber); - newProject.setSaleType(viewModel.getSaleType().get()); + newProject.setSaleTypeId(viewModel.getSaleType().get()); - Project exist = projectService.findBySaleTypeAndCodeYearAndCodeSequenceNumber(newProject.getSaleType(), newProject.getCodeYear(), newProject.getCodeSequenceNumber()); + ProjectVo exist = projectService.findBySaleTypeAndCodeYearAndCodeSequenceNumber(newProject.getSaleTypeId(), + newProject.getCodeYear(), newProject.getCodeSequenceNumber()); if (exist != null) { codeLabel.setText("项目编号已存在"); codeLabel.setStyle("-fx-text-fill: #ffa2a2"); @@ -131,10 +129,10 @@ public class ApplyNewProjectWindowController extends BaseController { // 暂时的项目编号 newProject.setCode(codePreviewLabel.getText()); - newProject.setApplicant(viewModel.getApplicant().get()); + newProject.setApplicantId(viewModel.getApplicant().get()); newProject.setCreated(LocalDate.now()); - Project saved = projectService.save(newProject); - Consumer consumer = onApplied.get(); + ProjectVo saved = projectService.save(newProject); + Consumer consumer = onApplied.get(); if (consumer != null) { consumer.accept(saved); } @@ -144,11 +142,9 @@ public class ApplyNewProjectWindowController extends BaseController { } private void initializeApplicantLabel(Label applicantLabel) { - Employee operator = employeeService.findById(Desktop.instance.getActiveEmployeeId()); - viewModel.getApplicant().set(operator); - + viewModel.getApplicant().set(Desktop.instance.getActiveEmployeeId()); applicantLabel.textProperty().bind(Bindings.createObjectBinding(() -> { - Employee employee = viewModel.getApplicant().get(); + EmployeeVo employee = employeeService.findById(viewModel.getApplicant().get()); if (employee == null) { return "- 异常,未取得当前操作员信息 -"; } @@ -160,13 +156,13 @@ public class ApplyNewProjectWindowController extends BaseController { private void initializeCodePreviewLabel(Label codePreviewLabel) { codePreviewLabel.textProperty().bind(Bindings.createObjectBinding(() -> { StringBuilder sb = new StringBuilder(); - ProjectSaleType saleType = viewModel.getSaleType().get(); + ProjectSaleTypeVo saleType = getCachedBean(ProjectSaleTypeService.class) + .findById(viewModel.getSaleType().get()); if (saleType == null) { return ""; } sb.append(saleType.getCode()); - int year = viewModel.getCodeYear().get(); if (year < 10) { sb.append("0"); @@ -184,27 +180,33 @@ public class ApplyNewProjectWindowController extends BaseController { }, viewModel.getSaleType(), viewModel.getCodeYear(), viewModel.getCodeSequenceNumber())); } - private void initializeSaleTypeField(ComboBox field) { - ObservableList list = FXCollections.observableArrayList(); - saleTypeService.findAll().stream().filter(ProjectSaleType::isActive).forEach(list::add); + private void initializeSaleTypeField(ComboBox field) { + ObservableList list = FXCollections.observableArrayList(); + saleTypeService.findAll().stream().filter(ProjectSaleTypeVo::isActive).forEach(list::add); field.setItems(list); field.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { - viewModel.getSaleType().set(newValue); + viewModel.getSaleType().set(newValue.getId()); // 当 SequenceNumber 为 0 时, 自动检索最新的 SequenceNumber if (viewModel.getCodeYear().get() != 0) { - int nextCodeSequenceNumber = projectService.getNextCodeSequenceNumber(newValue, viewModel.getCodeYear().get()); + int nextCodeSequenceNumber = projectService.getNextCodeSequenceNumber(newValue, + viewModel.getCodeYear().get()); viewModel.getCodeSequenceNumber().set(nextCodeSequenceNumber); } }); - EntityStringConverter converter = new EntityStringConverter<>(); + + EntityStringConverter converter = new EntityStringConverter<>(); converter.setInitialized(saleType -> { - return list.stream().filter(v -> v != null && Objects.equals(v.getId(), saleType.getId())).findFirst().orElse(null); + return list.stream().filter(v -> v != null && Objects.equals(v.getId(), saleType.getId())).findFirst() + .orElse(null); }); converter.setFromString(name -> { return list.stream().filter(v -> v != null && Objects.equals(v.getName(), name)).findFirst().orElse(null); }); field.setConverter(converter); - field.valueProperty().bindBidirectional(viewModel.getSaleType()); - + viewModel.getSaleType().addListener((observable, oldValue, newValue) -> { + if (newValue != null) { + field.getSelectionModel().select(newValue); + } + }); } } diff --git a/client/src/main/java/com/ecep/contract/controller/project/ProjectManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/project/ProjectManagerSkin.java index b03a023..9447a36 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/ProjectManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/project/ProjectManagerSkin.java @@ -1,24 +1,21 @@ package com.ecep.contract.controller.project; -import java.util.Map; - import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.BaseController; import com.ecep.contract.controller.ComboBoxUtils; import com.ecep.contract.controller.ManagerSkin; import com.ecep.contract.controller.table.cell.CompanyTableCell; -import com.ecep.contract.converter.EntityStringConverter; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.ProductType; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectSaleType; -import com.ecep.contract.model.ProjectType; +import com.ecep.contract.controller.table.cell.ProductTypeTableCell; +import com.ecep.contract.controller.table.cell.ProjectSaleTypeTableCell; +import com.ecep.contract.controller.table.cell.ProjectTypeTableCell; import com.ecep.contract.service.CompanyService; import com.ecep.contract.service.ProductTypeService; +import com.ecep.contract.service.ProjectSaleTypeService; import com.ecep.contract.service.ProjectService; import com.ecep.contract.service.ProjectTypeService; -import com.ecep.contract.service.ProjectSaleTypeService; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.ProjectViewModel; +import com.ecep.contract.vo.ProjectVo; import javafx.application.Platform; import javafx.event.ActionEvent; @@ -29,7 +26,7 @@ import javafx.util.converter.CurrencyStringConverter; import lombok.Setter; public class ProjectManagerSkin - extends AbstEntityManagerSkin + extends AbstEntityManagerSkin implements ManagerSkin { @Setter private CompanyService companyService; @@ -77,10 +74,10 @@ public class ProjectManagerSkin } @Override - public Map getSpecification() { - Map params = super.getSpecification(); + public ParamUtils.Builder getSpecification() { + ParamUtils.Builder params = super.getSpecification(); if (controller.saleTypeSelector.getValue() != null) { - params.put("saleType", controller.saleTypeSelector.getValue()); + params.equals("saleType", controller.saleTypeSelector.getValue()); } return params; } @@ -99,7 +96,7 @@ public class ProjectManagerSkin controller.amountColumn.setCellValueFactory(param -> param.getValue().getAmount()); controller.amountColumn .setCellFactory(TextFieldTableCell.forTableColumn(new CurrencyStringConverter(getLocale())));// , - // "#,##0" + // "#,##0" initializeSaleTypeColumn(controller.saleTypeColumn); initializeCustomerColumn(controller.customerColumn); @@ -118,30 +115,24 @@ public class ProjectManagerSkin }); } - private void initializeCustomerColumn(TableColumn column) { + private void initializeCustomerColumn(TableColumn column) { column.setCellValueFactory(param -> param.getValue().getCustomer()); column.setCellFactory(param -> new CompanyTableCell<>(getCompanyService())); } - private void initializeProductTypeColumn(TableColumn column) { - EntityStringConverter converter = new EntityStringConverter<>(); - converter.setInitialized(productType -> getProductTypeService().findById(productType.getId())); - converter.setFromString(name -> getProductTypeService().findByName(name)); - column.setCellValueFactory(param -> param.getValue().getProductType().map(converter::toString)); + private void initializeProductTypeColumn(TableColumn column) { + column.setCellValueFactory(param -> param.getValue().getProductType()); + column.setCellFactory(param -> new ProductTypeTableCell<>(getProductTypeService())); } - private void initializeProjectTypeColumn(TableColumn column) { - EntityStringConverter converter = new EntityStringConverter<>(); - converter.setInitialized(projectType -> getProjectTypeService().findById(projectType.getId())); - converter.setFromString(name -> getProjectTypeService().findByName(name)); - column.setCellValueFactory(param -> param.getValue().getProjectType().map(converter::toString)); + private void initializeProjectTypeColumn(TableColumn column) { + column.setCellValueFactory(param -> param.getValue().getProjectType()); + column.setCellFactory(param -> new ProjectTypeTableCell<>(getProjectTypeService())); } - private void initializeSaleTypeColumn(TableColumn column) { - EntityStringConverter converter = new EntityStringConverter<>(); - converter.setInitialized(saleType -> getSaleTypeService().findById(saleType.getId())); - converter.setFromString(name -> getSaleTypeService().findByName(name)); - column.setCellValueFactory(param -> param.getValue().getSaleType().map(converter::toString)); + private void initializeSaleTypeColumn(TableColumn column) { + column.setCellValueFactory(param -> param.getValue().getSaleType()); + column.setCellFactory(param -> new ProjectSaleTypeTableCell<>(getSaleTypeService())); } @Override diff --git a/client/src/main/java/com/ecep/contract/controller/project/ProjectManagerWindowController.java b/client/src/main/java/com/ecep/contract/controller/project/ProjectManagerWindowController.java index b94b043..97b98b4 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/ProjectManagerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/project/ProjectManagerWindowController.java @@ -16,12 +16,11 @@ import com.ecep.contract.controller.project.product_type.ProductTypeManagerWindo import com.ecep.contract.controller.project.project_type.ProjectTypeManagerWindowController; import com.ecep.contract.controller.project.sale_type.ProjectSaleTypeManagerWindowController; import com.ecep.contract.controller.project.usage.ProductUsageManagerWindowController; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectSaleType; import com.ecep.contract.service.ProjectService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.ProjectViewModel; +import com.ecep.contract.vo.ProjectSaleTypeVo; +import com.ecep.contract.vo.ProjectVo; import javafx.event.ActionEvent; import javafx.scene.control.ComboBox; @@ -33,19 +32,19 @@ import javafx.stage.WindowEvent; @Component @FxmlPath("/ui/project/project-manager.fxml") public class ProjectManagerWindowController - extends AbstManagerWindowController { + extends AbstManagerWindowController { private static final Logger logger = LoggerFactory.getLogger(ProjectManagerWindowController.class); - public ComboBox saleTypeSelector; + public ComboBox saleTypeSelector; public TableColumn idColumn; public TableColumn codeColumn; public TableColumn nameColumn; - public TableColumn saleTypeColumn; - public TableColumn projectTypeColumn; - public TableColumn productTypeColumn; + public TableColumn saleTypeColumn; + public TableColumn projectTypeColumn; + public TableColumn productTypeColumn; public TableColumn createdColumn; - public TableColumn customerColumn; + public TableColumn customerColumn; public TableColumn useBidColumn; public TableColumn useOfferColumn; public TableColumn amountColumn; 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 f37cb73..f7ccd9b 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 @@ -1,6 +1,7 @@ package com.ecep.contract.controller.project; import java.util.Objects; +import java.util.function.Predicate; import java.util.stream.Stream; import org.springframework.util.StringUtils; @@ -9,34 +10,31 @@ import com.ecep.contract.controller.ComboBoxUtils; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.converter.EmployeeStringConverter; import com.ecep.contract.converter.EntityStringConverter; -import com.ecep.contract.model.DeliverySignMethod; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.ProductType; -import com.ecep.contract.model.ProductUsage; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectCost; -import com.ecep.contract.model.ProjectIndustry; -import com.ecep.contract.model.ProjectSaleType; -import com.ecep.contract.model.ProjectType; import com.ecep.contract.service.DeliverySignMethodService; import com.ecep.contract.service.EmployeeService; import com.ecep.contract.service.ProductTypeService; import com.ecep.contract.service.ProductUsageService; import com.ecep.contract.service.ProjectCostService; import com.ecep.contract.service.ProjectIndustryService; -import com.ecep.contract.service.ProjectTypeService; import com.ecep.contract.service.ProjectSaleTypeService; +import com.ecep.contract.service.ProjectTypeService; import com.ecep.contract.util.UITools; +import com.ecep.contract.vo.DeliverySignMethodVo; +import com.ecep.contract.vo.ProductTypeVo; +import com.ecep.contract.vo.ProductUsageVo; +import com.ecep.contract.vo.ProjectCostVo; +import com.ecep.contract.vo.ProjectIndustryVo; +import com.ecep.contract.vo.ProjectSaleTypeVo; +import com.ecep.contract.vo.ProjectTypeVo; +import com.ecep.contract.vo.ProjectVo; import javafx.beans.binding.Bindings; -import javafx.beans.property.SimpleObjectProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; +import javafx.collections.transformation.FilteredList; import javafx.event.ActionEvent; import javafx.scene.control.ComboBox; -import javafx.scene.control.ListCell; import javafx.scene.control.Tab; -import javafx.scene.control.TextField; import javafx.util.converter.LocalDateStringConverter; import javafx.util.converter.NumberStringConverter; import lombok.Setter; @@ -52,20 +50,9 @@ public class ProjectTabSkinBase extends AbstProjectBasedTabSkin implements TabSk @Setter EmployeeService employeeService; - @Setter - private ProjectTypeService projectTypeService; - @Setter - private ProductTypeService productTypeService; - @Setter - private ProjectSaleTypeService saleTypeService; - @Setter - private ProductUsageService productUsageService; - @Setter - private ProjectIndustryService projectIndustryService; @Setter private DeliverySignMethodService deliverySignMethodService; - public ProjectTabSkinBase(ProjectWindowController controller) { super(controller); } @@ -76,59 +63,31 @@ public class ProjectTabSkinBase extends AbstProjectBasedTabSkin implements TabSk } private EmployeeService getEmployeeService() { - if (employeeService == null) { - employeeService = getBean(EmployeeService.class); - } - return employeeService; + return getBean(EmployeeService.class); } private ProjectTypeService getProjectTypeService() { - if (projectTypeService == null) { - projectTypeService = getBean(ProjectTypeService.class); - } - return projectTypeService; + return getBean(ProjectTypeService.class); } private ProductTypeService getProductTypeService() { - if (productTypeService == null) { - productTypeService = getBean(ProductTypeService.class); - } - return productTypeService; + return getBean(ProductTypeService.class); } private ProjectSaleTypeService getSaleTypeService() { - if (saleTypeService == null) { - saleTypeService = getBean(ProjectSaleTypeService.class); - } - return saleTypeService; + return getBean(ProjectSaleTypeService.class); } private ProductUsageService getProductUsageService() { - if (productUsageService == null) { - productUsageService = getBean(ProductUsageService.class); - } - return productUsageService; + return getBean(ProductUsageService.class); } private ProjectIndustryService getProjectIndustryService() { - if (projectIndustryService == null) { - projectIndustryService = getBean(ProjectIndustryService.class); - } - return projectIndustryService; + return getBean(ProjectIndustryService.class); } private DeliverySignMethodService getDeliverySignMethodService() { - if (deliverySignMethodService == null) { - deliverySignMethodService = getBean(DeliverySignMethodService.class); - } - return deliverySignMethodService; - } - - private EmployeeStringConverter getEmployeeStringConverter() { - if (employeeStringConverter == null) { - employeeStringConverter = getBean(EmployeeStringConverter.class); - } - return employeeStringConverter; + return getBean(DeliverySignMethodService.class); } @Override @@ -138,25 +97,54 @@ public class ProjectTabSkinBase extends AbstProjectBasedTabSkin implements TabSk controller.codeField.textProperty().bind(viewModel.getCode()); NumberStringConverter stringConverter = new NumberStringConverter(); Bindings.bindBidirectional(controller.codeYearField.textProperty(), viewModel.getCodeYear(), stringConverter); - Bindings.bindBidirectional(controller.codeSequenceNumberField.textProperty(), viewModel.getCodeSequenceNumber(), stringConverter); + Bindings.bindBidirectional(controller.codeSequenceNumberField.textProperty(), viewModel.getCodeSequenceNumber(), + stringConverter); controller.addressField.textProperty().bindBidirectional(viewModel.getAddress()); controller.useBidField.selectedProperty().bindBidirectional(viewModel.getUseBid()); controller.useOfferField.selectedProperty().bindBidirectional(viewModel.getUseOffer()); controller.standardPayWayField.selectedProperty().bindBidirectional(viewModel.getStandardPayWay()); - Bindings.bindBidirectional(controller.amountField.textProperty(), viewModel.getAmount(), new NumberStringConverter()); + Bindings.bindBidirectional(controller.amountField.textProperty(), viewModel.getAmount(), + new NumberStringConverter()); - initializeSaleTypeField(controller.saleTypeField); - initializeSaleIndustryField(controller.industryField); - initializeProjectTypeField(controller.projectTypeField); - initializeProductTypeField(controller.productTypeField); - initializeDeliverySignMethodField(controller.saleTypeField, controller.deliverySignMethodField); - initializeProductUsageField(controller.productUsageField); + ComboBoxUtils.initialComboBox(controller.saleTypeField, viewModel.getSaleType(), getSaleTypeService(), true); + ComboBoxUtils.initialComboBox(controller.projectTypeField, viewModel.getProjectType(), getProjectTypeService(), + true); + ComboBoxUtils.initialComboBox(controller.saleTypeField, viewModel.getSaleType(), getSaleTypeService(), true); + ComboBoxUtils.initialComboBox(controller.industryField, viewModel.getIndustry(), getProjectIndustryService(), + true); + ComboBoxUtils.initialComboBox(controller.productTypeField, viewModel.getProductType(), getProductTypeService(), + true); + ComboBoxUtils.initialComboBox(controller.productUsageField, viewModel.getProductUsage(), + getProductUsageService(), true); + ComboBoxUtils.initialComboBox(controller.deliverySignMethodField, viewModel.getDeliverySignMethod(), + getDeliverySignMethodService(), true); + + controller.saleTypeField.valueProperty().addListener((observable, oldValue, newValue) -> { + Predicate predicate = p -> { + return p == null || Objects.equals(p.getSaleTypeId(), newValue.getId()); + }; + + ObservableList items = controller.deliverySignMethodField.getItems(); + if (items instanceof FilteredList filteredList) { + filteredList.setPredicate(predicate); + } else { + items = items.filtered(predicate); + controller.deliverySignMethodField.setItems(items); + } + }); + + // initializeDeliverySignMethodField(controller.saleTypeField, + // controller.deliverySignMethodField); // Changed from + // initializeDeliverySignMethodField(ComboBox + // saleTypeField, + // ComboBox + // field) controller.descriptionField.textProperty().bindBidirectional(viewModel.getDescription()); - employeeAutoCompletion(controller.applicantField, viewModel.getApplicant()); - employeeAutoCompletion(controller.authorizerField, viewModel.getAuthorizer()); + UITools.autoCompletion(controller.applicantField, viewModel.getApplicant(), getEmployeeService()); + UITools.autoCompletion(controller.authorizerField, viewModel.getAuthorizer(), getEmployeeService()); controller.createdField.setConverter(localDateStringConverter); controller.createdField.valueProperty().bindBidirectional(viewModel.getCreated()); @@ -170,146 +158,14 @@ public class ProjectTabSkinBase extends AbstProjectBasedTabSkin implements TabSk private void onDeleteAction(ActionEvent event) { ProjectCostService projectCostService = getBean(ProjectCostService.class); - Project project = getEntity(); - for (ProjectCost cost : projectCostService.findAllByProject(project)) { + ProjectVo project = getEntity(); + for (ProjectCostVo cost : projectCostService.findAllByProject(project)) { projectCostService.delete(cost); } getProjectService().delete(project); controller.root.getScene().getWindow().hide(); } - private void initializeSaleIndustryField(ComboBox field) { - ComboBoxUtils.initialComboBox(field, viewModel.getIndustry(), getProjectIndustryService().findAll(), true); - } - - private void initializeProjectTypeField(ComboBox field) { - ComboBoxUtils.initialComboBox(field, viewModel.getProjectType(), getProjectTypeService().findAll(), true); - } - - private void initializeProductTypeField(ComboBox field) { - ObservableList list = FXCollections.observableArrayList(); - list.add(null); - list.addAll(getProductTypeService().findAll()); - field.setItems(list); - field.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { - viewModel.getProductType().set(newValue); - }); - EntityStringConverter converter = new EntityStringConverter<>(); - converter.setInitialized(type -> { - return list.stream().filter(v -> v != null && Objects.equals(v.getId(), type.getId())).findFirst().orElse(null); - }); - converter.setFromString(name -> { - return list.stream().filter(v -> v != null && Objects.equals(v.getName(), name)).findFirst().orElse(null); - }); - field.setConverter(converter); - field.valueProperty().bindBidirectional(viewModel.getProductType()); - } - - private void initializeDeliverySignMethodField( - ComboBox saleTypeField, - ComboBox field - ) { - ObservableList list = FXCollections.observableArrayList(); - list.add(null); - list.addAll(getDeliverySignMethodService().findAll()); - field.setItems(list); - - ProjectSaleType saleType = saleTypeField.getValue(); - if (saleType != null) { - field.setItems(list.filtered(p -> { - return p == null || Objects.equals(p.getSaleType(), saleType); - })); - } - - saleTypeField.valueProperty().addListener((observable, oldValue, newValue) -> { - if (newValue == null) { - field.setItems(list); - } else { - field.setItems(list.filtered(p -> { - return p == null || Objects.equals(p.getSaleType(), newValue); - })); - } - }); - - field.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { - viewModel.getDeliverySignMethod().set(newValue); - }); - EntityStringConverter converter = new EntityStringConverter<>(); - converter.setInitialized(signMethod -> { - return list.stream().filter(v -> v != null && Objects.equals(v.getId(), signMethod.getId())).findFirst().orElse(null); - }); - converter.setFromString(name -> { - return list.stream().filter(v -> v != null && Objects.equals(v.getName(), name)).findFirst().orElse(null); - }); - field.setConverter(converter); - field.valueProperty().bindBidirectional(viewModel.getDeliverySignMethod()); - } - - private void initializeProductUsageField(ComboBox field) { - ObservableList list = FXCollections.observableArrayList(); - list.add(null); - list.addAll(getProductUsageService().findAll()); - field.setItems(list); - field.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { - viewModel.getProductUsage().set(newValue); - }); - EntityStringConverter converter = new EntityStringConverter<>(); - converter.setInitialized(usage -> { - return list.stream().filter(v -> v != null && Objects.equals(v.getId(), usage.getId())).findFirst().orElse(null); - }); - converter.setFromString(name -> { - return list.stream().filter(v -> v != null && Objects.equals(v.getName(), name)).findFirst().orElse(null); - }); - field.setConverter(converter); - field.valueProperty().bindBidirectional(viewModel.getProductUsage()); - } - - private void initializeSaleTypeField(ComboBox field) { - ObservableList list = FXCollections.observableArrayList(); - list.add(null); - list.addAll(getSaleTypeService().findAll()); - field.setItems(list); - field.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { - viewModel.getSaleType().set(newValue); - // 当 SequenceNumber 为 0 时, 自动检索最新的 SequenceNumber - if (viewModel.getCodeSequenceNumber().get() == 0 && viewModel.getCodeYear().get() != 0) { - int nextCodeSequenceNumber = getProjectService().getNextCodeSequenceNumber(newValue, viewModel.getCodeYear().get()); - viewModel.getCodeSequenceNumber().set(nextCodeSequenceNumber); - } - }); - field.setCellFactory(param -> new ListCell<>() { - @Override - protected void updateItem(ProjectSaleType item, boolean empty) { - super.updateItem(item, empty); - if (empty || item == null) { - setText("-"); - setStyle(""); - } else { - setText(item.getName()); - if (item.isActive()) { - this.setStyle(""); - } else { - this.setStyle("-fx-text-fill: grey;"); - } - } - } - }); - EntityStringConverter converter = new EntityStringConverter<>(); - converter.setInitialized(saleType -> { - return list.stream().filter(v -> v != null && Objects.equals(v.getId(), saleType.getId())).findFirst().orElse(null); - }); - converter.setFromString(name -> { - return list.stream().filter(v -> v != null && Objects.equals(v.getName(), name)).findFirst().orElse(null); - }); - field.setConverter(converter); - field.valueProperty().bindBidirectional(viewModel.getSaleType()); - - } - - private void employeeAutoCompletion(TextField textField, SimpleObjectProperty property) { - UITools.autoCompletion(textField, property, getEmployeeStringConverter()); - } - public void save() { makeProjectCode(); super.save(); @@ -318,7 +174,7 @@ public class ProjectTabSkinBase extends AbstProjectBasedTabSkin implements TabSk private void makeProjectCode() { StringBuilder sb = new StringBuilder(); - ProjectSaleType saleType = controller.saleTypeField.getValue(); + ProjectSaleTypeVo saleType = controller.saleTypeField.getValue(); if (saleType == null) { sb.append("_"); } else { @@ -328,7 +184,6 @@ public class ProjectTabSkinBase extends AbstProjectBasedTabSkin implements TabSk .ifPresent(item -> sb.append(item.getCode())); } - int year = 0; { String text = controller.codeYearField.getText(); @@ -355,12 +210,11 @@ public class ProjectTabSkinBase extends AbstProjectBasedTabSkin implements TabSk } sb.append(sn); - DeliverySignMethod signMethod = controller.deliverySignMethodField.getValue(); - ProductType productType = controller.productTypeField.getValue(); - ProjectType projectType = controller.projectTypeField.getValue(); - ProjectIndustry industry = controller.industryField.getValue(); - ProductUsage productUsage = controller.productUsageField.getValue(); - + DeliverySignMethodVo signMethod = controller.deliverySignMethodField.getValue(); + ProductTypeVo productType = controller.productTypeField.getValue(); + ProjectTypeVo projectType = controller.projectTypeField.getValue(); + ProjectIndustryVo industry = controller.industryField.getValue(); + ProductUsageVo productUsage = controller.productUsageField.getValue(); if (!Stream.of(signMethod, productType, projectType, industry, productUsage) .allMatch(Objects::isNull)) { @@ -382,7 +236,6 @@ public class ProjectTabSkinBase extends AbstProjectBasedTabSkin implements TabSk .ifPresent(item -> sb.append(item.getCode())); } - if (projectType == null) { sb.append("_"); } else { @@ -392,7 +245,6 @@ public class ProjectTabSkinBase extends AbstProjectBasedTabSkin implements TabSk .ifPresent(item -> sb.append(item.getCode())); } - if (industry != null) { controller.industryField.getItems().stream() .filter(item -> item != null && item.getId().equals(industry.getId())) @@ -402,7 +254,6 @@ public class ProjectTabSkinBase extends AbstProjectBasedTabSkin implements TabSk sb.append("_"); } - if (productUsage != null) { controller.productUsageField.getItems().stream() .filter(item -> item != null && item.getId().equals(productUsage.getId())) diff --git a/client/src/main/java/com/ecep/contract/controller/project/ProjectTabSkinBid.java b/client/src/main/java/com/ecep/contract/controller/project/ProjectTabSkinBid.java index 5cf8621..1ab5b16 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/ProjectTabSkinBid.java +++ b/client/src/main/java/com/ecep/contract/controller/project/ProjectTabSkinBid.java @@ -39,9 +39,9 @@ public class ProjectTabSkinBid public TableColumn evaluationFileColumn; public TableColumn descriptionColumn; - public TableColumn applicantColumn; + public TableColumn applicantColumn; public TableColumn applyTimeColumn; - public TableColumn authorizerColumn; + public TableColumn authorizerColumn; public TableColumn authorizationTimeColumn; public TableColumn levelColumn; public TableColumn standardPayWayColumn; @@ -62,7 +62,6 @@ public class ProjectTabSkinBid @Setter private CompanyCustomerFileService customerFileService; - public ProjectTabSkinBid(ProjectWindowController controller) { super(controller); } @@ -82,15 +81,18 @@ public class ProjectTabSkinBid super.initializeTable(); bindNumberColumn(idColumn, ProjectBidViewModel::getId); -// levelColumn.setCellValueFactory(param -> param.getValue().getLevel()); -// levelColumn.setCellFactory(param -> new LevelTableCell()); -// standardPayWayColumn.setCellValueFactory(param -> param.getValue().getStandardPayWay().map(value -> value == null ? "" : (value ? "标准" : "非标准"))); -// evaluationFileColumn.setCellValueFactory(param -> param.getValue().getEvaluationFile()); -// evaluationFileColumn.setCellFactory(param -> new EvaluationFileTableCell()); + // levelColumn.setCellValueFactory(param -> param.getValue().getLevel()); + // levelColumn.setCellFactory(param -> new LevelTableCell()); + // standardPayWayColumn.setCellValueFactory(param -> + // param.getValue().getStandardPayWay().map(value -> value == null ? "" : (value + // ? "标准" : "非标准"))); + // evaluationFileColumn.setCellValueFactory(param -> + // param.getValue().getEvaluationFile()); + // evaluationFileColumn.setCellFactory(param -> new EvaluationFileTableCell()); - -// amountColumn.setCellValueFactory(param -> param.getValue().getAmount()); -// amountColumn.setCellFactory(TextFieldTableCell.forTableColumn(new CurrencyStringConverter(getLocale()))); + // amountColumn.setCellValueFactory(param -> param.getValue().getAmount()); + // amountColumn.setCellFactory(TextFieldTableCell.forTableColumn(new + // CurrencyStringConverter(getLocale()))); applicantColumn.setCellValueFactory(param -> param.getValue().getApplicant()); applicantColumn.setCellFactory(cell -> new EmployeeTableCell<>(getEmployeeService())); @@ -190,7 +192,6 @@ public class ProjectTabSkinBid return getProjectBidService().save(entity); } - private static class LevelTableCell extends TableCell { @Override protected void updateItem(Number item, boolean empty) { diff --git a/client/src/main/java/com/ecep/contract/controller/project/ProjectTabSkinCustomerInfo.java b/client/src/main/java/com/ecep/contract/controller/project/ProjectTabSkinCustomerInfo.java index f456be1..4d7d676 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/ProjectTabSkinCustomerInfo.java +++ b/client/src/main/java/com/ecep/contract/controller/project/ProjectTabSkinCustomerInfo.java @@ -1,18 +1,11 @@ package com.ecep.contract.controller.project; -import java.util.List; -import java.util.function.BiFunction; - import org.controlsfx.control.textfield.AutoCompletionBinding; import org.springframework.util.StringUtils; -import com.ecep.contract.SpringApp; import com.ecep.contract.controller.company.CompanyWindowController; import com.ecep.contract.controller.tab.TabSkin; -import com.ecep.contract.converter.CompanyStringConverter; import com.ecep.contract.converter.EntityStringConverter; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.CompanyBankAccount; import com.ecep.contract.model.CompanyContact; import com.ecep.contract.model.CompanyInvoiceInfo; import com.ecep.contract.service.BankService; @@ -21,9 +14,10 @@ import com.ecep.contract.service.CompanyContactService; import com.ecep.contract.service.CompanyInvoiceInfoService; import com.ecep.contract.service.CompanyService; import com.ecep.contract.util.FxmlPath; -import com.ecep.contract.util.ProxyUtils; import com.ecep.contract.util.UITools; import com.ecep.contract.vo.BankVo; +import com.ecep.contract.vo.CompanyBankAccountVo; +import com.ecep.contract.vo.CompanyContactVo; import com.ecep.contract.vo.CompanyVo; import javafx.beans.property.SimpleObjectProperty; @@ -33,7 +27,6 @@ import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.Tab; import javafx.scene.control.TextField; -import javafx.util.StringConverter; @FxmlPath("/ui/project/project-tab-customer.fxml") public class ProjectTabSkinCustomerInfo @@ -62,13 +55,6 @@ public class ProjectTabSkinCustomerInfo @FXML public Label subContactLabel; - private CompanyService companyService; - private BankService bankService; - private CompanyInvoiceInfoService invoiceInfoService; - private CompanyBankAccountService bankAccountService; - private CompanyContactService contactService; - - public ProjectTabSkinCustomerInfo(ProjectWindowController controller) { super(controller); } @@ -87,28 +73,16 @@ public class ProjectTabSkinCustomerInfo initSubContactField(); } - private void initCompanyField() { companyAutoCompletion(companyField, companyLabel, viewModel.getCustomer()).setOnAutoCompleted(event -> { - Company company = event.getCompletion(); - viewModel.getCustomer().set(company); - -// -// updateAbsent(company.getUniscid(), companyTaxCodeField.textProperty()); -// updateAbsent(company.getTelephone(), companyTelField.textProperty()); -// -// updateAbsent( -// // 优先使用通讯地址 -// StringUtils.hasText(company.getAddress()) ? company.getAddress() : company.getRegAddr(), -// companyAddressField.textProperty()); - -// viewModel.getInvoiceInfo(); - + CompanyVo company = event.getCompletion(); + viewModel.getCustomer().set(company.getId()); }); companyDetailBtn.setOnAction(event -> { - CompanyVo company = viewModel.getCustomer().get(); + Integer companyId = viewModel.getCustomer().get(); + CompanyVo company = getCompanyService().findById(companyId); if (company == null) { return; } @@ -117,32 +91,33 @@ public class ProjectTabSkinCustomerInfo } private void initBankAccountField() { - bankAccountAutoCompletion(bankAccountField, bankAccountLabel, viewModel.getBankAccount()).setOnAutoCompleted(event -> { - CompanyBankAccount account = event.getCompletion(); - viewModel.getBankAccount().set(account); - }); + bankAccountAutoCompletion(bankAccountField, bankAccountLabel, viewModel.getBankAccount()) + .setOnAutoCompleted(event -> { + CompanyBankAccountVo account = event.getCompletion(); + viewModel.getBankAccount().set(account.getId()); + }); } - private void initInvoiceInfoField() { - invoiceInfoAutoCompletion(invoiceInfoField, invoiceInfoLabel, viewModel.getInvoiceInfo()).setOnAutoCompleted(event -> { - CompanyInvoiceInfo invoiceInfo = event.getCompletion(); - viewModel.getInvoiceInfo().set(invoiceInfo); - }); + invoiceInfoAutoCompletion(invoiceInfoField, invoiceInfoLabel, viewModel.getInvoiceInfo()) + .setOnAutoCompleted(event -> { + CompanyInvoiceInfo invoiceInfo = event.getCompletion(); + viewModel.getInvoiceInfo().set(invoiceInfo.getId()); + }); } - private void initMainContactField() { - contactAutoCompletion(mainContactField, mainContactLabel, viewModel.getMainContact()).setOnAutoCompleted(event -> { - CompanyContact contact = event.getCompletion(); - viewModel.getMainContact().set(contact); - }); + contactAutoCompletion(mainContactField, mainContactLabel, viewModel.getMainContact()) + .setOnAutoCompleted(event -> { + CompanyContactVo contact = event.getCompletion(); + viewModel.getMainContact().set(contact.getId()); + }); } private void initSubContactField() { contactAutoCompletion(subContactField, subContactLabel, viewModel.getSubContact()).setOnAutoCompleted(event -> { - CompanyContact contact = event.getCompletion(); - viewModel.getSubContact().set(contact); + CompanyContactVo contact = event.getCompletion(); + viewModel.getSubContact().set(contact.getId()); }); } @@ -162,17 +137,17 @@ public class ProjectTabSkinCustomerInfo property.set(value); } - private AutoCompletionBinding companyAutoCompletion(TextField textField, Label label, SimpleObjectProperty property) { - CompanyStringConverter converter = SpringApp.getBean(CompanyStringConverter.class); + private AutoCompletionBinding companyAutoCompletion(TextField textField, Label label, + SimpleObjectProperty property) { - label.textProperty().bind(property.map(company -> { - if (company == null) { + label.textProperty().bind(property.map(companyId -> { + if (companyId == null) { return "未选择"; } - if (!ProxyUtils.isInitialized(company)) { - company = getCompanyService().findById(company.getId()); - property.set(company); + CompanyVo company = getCompanyService().findById(companyId); + if (company == null) { + return "#" + companyId; } StringBuilder sb = new StringBuilder(); sb.append("经营状态:"); @@ -192,30 +167,26 @@ public class ProjectTabSkinCustomerInfo return sb.toString(); })); - return UITools.autoCompletion(textField, property, converter::suggest, converter); + return UITools.autoCompletion(textField, property, getCompanyService()); } - private AutoCompletionBinding bankAccountAutoCompletion(TextField textField, Label label, SimpleObjectProperty property) { - EntityStringConverter converter = new EntityStringConverter<>(); - converter.setInitialized(account -> getBankAccountService().findById(account.getId())); + private AutoCompletionBinding bankAccountAutoCompletion(TextField textField, Label label, + SimpleObjectProperty property) { - label.textProperty().bind(property.map(account -> { - if (account == null) { + label.textProperty().bind(property.map(accountId -> { + if (accountId == null) { return "未选择"; } - if (!ProxyUtils.isInitialized(account)) { - account = getBankAccountService().findById(account.getId()); - property.set(account); + CompanyBankAccountVo account = getBankAccountService().findById(accountId); + if (account == null) { + return "#" + accountId; } StringBuilder sb = new StringBuilder(); + Integer bankId = account.getBankId(); + BankVo bank = getBankService().findById(bankId); sb.append("开户行:"); - BankVo bank = account.getBank(); if (bank != null) { - if (!ProxyUtils.isInitialized(bank)) { - bank = getBankService().findById(bank.getId()); - account.setBank(bank); - } - sb.append(bank.toPrettyString()); + sb.append(getBankService().getStringConverter().toString(bank)); sb.append(" "); } sb.append(account.getOpeningBank()); @@ -225,20 +196,21 @@ public class ProjectTabSkinCustomerInfo sb.append(account.getAccount()); return sb.toString(); })); - return autoCompletion(textField, property, getBankAccountService()::searchByCompany, converter); + return UITools.autoCompletion(textField, property, getBankAccountService()); } - private AutoCompletionBinding invoiceInfoAutoCompletion(TextField textField, Label label, SimpleObjectProperty property) { + private AutoCompletionBinding invoiceInfoAutoCompletion(TextField textField, Label label, + SimpleObjectProperty property) { EntityStringConverter converter = new EntityStringConverter<>(); converter.setInitialized(info -> getInvoiceInfoService().findById(info.getId())); - label.textProperty().bind(property.map(info -> { - if (info == null) { + label.textProperty().bind(property.map(infoId -> { + if (infoId == null) { return "未选择"; } - if (!ProxyUtils.isInitialized(info)) { - info = getInvoiceInfoService().findById(info.getId()); - property.set(info); + CompanyInvoiceInfo info = getInvoiceInfoService().findById(infoId); + if (info == null) { + return "#" + infoId; } StringBuilder sb = new StringBuilder(); sb.append("发票抬头:"); @@ -257,20 +229,19 @@ public class ProjectTabSkinCustomerInfo sb.append(info.getPhone()); return sb.toString(); })); - return autoCompletion(textField, property, getInvoiceInfoService()::searchByCompany, converter); + return UITools.autoCompletion(textField, property, getInvoiceInfoService()); } - private AutoCompletionBinding contactAutoCompletion(TextField textField, Label label, SimpleObjectProperty property) { - EntityStringConverter converter = new EntityStringConverter<>(); - converter.setInitialized(contact -> getContactService().findById(contact.getId())); + private AutoCompletionBinding contactAutoCompletion(TextField textField, Label label, + SimpleObjectProperty property) { - label.textProperty().bind(property.map(contact -> { - if (contact == null) { + label.textProperty().bind(property.map(contactId -> { + if (contactId == null) { return "未选择"; } - if (!ProxyUtils.isInitialized(contact)) { - contact = getContactService().findById(contact.getId()); - property.set(contact); + CompanyContactVo contact = getContactService().findById(contactId); + if (contact == null) { + return "#" + contactId; } StringBuilder sb = new StringBuilder(); sb.append("联系人:"); @@ -290,56 +261,26 @@ public class ProjectTabSkinCustomerInfo return sb.toString(); })); - return autoCompletion(textField, property, getContactService()::searchByCompany, converter); - } - - public AutoCompletionBinding autoCompletion( - TextField textField, - SimpleObjectProperty property, - BiFunction> func, - StringConverter converter - ) { - return UITools.autoCompletion(textField, property, text -> { - Company company = viewModel.getCustomer().get(); - if (company == null) { - return null; - } - return func.apply(company, text.getUserText()); - }, converter); + return UITools.autoCompletion(textField, property, getContactService()); } public CompanyService getCompanyService() { - if (companyService == null) { - companyService = getBean(CompanyService.class); - } - return companyService; + return getCachedBean(CompanyService.class); } public BankService getBankService() { - if (bankService == null) { - bankService = getBean(BankService.class); - } - return bankService; + return getCachedBean(BankService.class); } public CompanyInvoiceInfoService getInvoiceInfoService() { - if (invoiceInfoService == null) { - invoiceInfoService = getBean(CompanyInvoiceInfoService.class); - } - return invoiceInfoService; + return getCachedBean(CompanyInvoiceInfoService.class); } public CompanyBankAccountService getBankAccountService() { - if (bankAccountService == null) { - bankAccountService = getBean(CompanyBankAccountService.class); - } - return bankAccountService; + return getCachedBean(CompanyBankAccountService.class); } public CompanyContactService getContactService() { - if (contactService == null) { - contactService = getBean(CompanyContactService.class); - } - return contactService; + return getCachedBean(CompanyContactService.class); } } diff --git a/client/src/main/java/com/ecep/contract/controller/project/ProjectTabSkinFundPlan.java b/client/src/main/java/com/ecep/contract/controller/project/ProjectTabSkinFundPlan.java index e6a1468..bee8c35 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/ProjectTabSkinFundPlan.java +++ b/client/src/main/java/com/ecep/contract/controller/project/ProjectTabSkinFundPlan.java @@ -6,6 +6,8 @@ import java.util.List; import java.util.Objects; import java.util.stream.Collectors; +import com.ecep.contract.vo.ContractVo; +import com.ecep.contract.vo.ProjectVo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -144,7 +146,7 @@ public class ProjectTabSkinFundPlan private void onUpdatePlanAction(ActionEvent event) { try { // 获取当前项目 - Project project = getParent(); + ProjectVo project = getParent(); if (project == null || project.getId() == null) { setStatus("提示, 无法获取项目信息"); return; @@ -159,14 +161,14 @@ public class ProjectTabSkinFundPlan plan -> plan)); // 获取项目关联的所有合同 - List contracts = getContractService().findAllByProject(project); + List contracts = getContractService().findAllByProject(project); if (contracts == null || contracts.isEmpty()) { setStatus("提示, 未找到与项目关联的合同"); return; } // 遍历所有合同 - for (Contract contract : contracts) { + for (ContractVo contract : contracts) { // 获取合同的付款计划 List payPlans = getContractPayPlanService().findAllByContract(contract); 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 a37f5a7..937bc58 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 @@ -2,7 +2,9 @@ package com.ecep.contract.controller.project; import java.time.format.DateTimeFormatter; +import com.ecep.contract.service.ProjectSaleTypeService; import com.ecep.contract.util.ProxyUtils; +import com.ecep.contract.vo.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -47,18 +49,11 @@ import javafx.util.converter.LocalDateStringConverter; @Scope("prototype") @Component @FxmlPath("/ui/project/project.fxml") -public class ProjectWindowController extends AbstEntityController { +public class ProjectWindowController extends AbstEntityController { private static final Logger logger = LoggerFactory.getLogger(ProjectWindowController.class); - - - public static void show(Project project, Window window) { - ProjectViewModel viewModel = new ProjectViewModel(); - if (!ProxyUtils.isInitialized(project)) { - project = SpringApp.getBean(ProjectService.class).findById(project.getId()); - } - viewModel.update(project); - show(viewModel, window); + public static void show(ProjectVo project, Window window) { + show(ProjectViewModel.from(project), window); } public static void show(ProjectViewModel model, Window window) { @@ -71,8 +66,8 @@ public class ProjectWindowController extends AbstEntityController industryField; - public ComboBox saleTypeField; - public ComboBox projectTypeField; - public ComboBox productTypeField; - public ComboBox deliverySignMethodField; - public ComboBox productUsageField; + public ComboBox industryField; + public ComboBox saleTypeField; + public ComboBox projectTypeField; + public ComboBox productTypeField; + public ComboBox deliverySignMethodField; + public ComboBox productUsageField; public TextField applicantField; public TextField authorizerField; public DatePicker plannedStartTimeField; @@ -100,13 +95,12 @@ public class ProjectWindowController extends AbstEntityController refreshByButton((Button) event.getSource())); - getTitle().bind(Bindings.createStringBinding(() -> "[" + viewModel.getId().get() + "] " + viewModel.getCode().get() + " " + viewModel.getName().getValue() + " 项目详情", viewModel.getCode(), viewModel.getName())); + getTitle() + .bind(Bindings + .createStringBinding( + () -> "[" + viewModel.getId().get() + "] " + viewModel.getCode().get() + " " + + viewModel.getName().getValue() + " 项目详情", + viewModel.getCode(), viewModel.getName())); } @Override @@ -160,7 +159,7 @@ public class ProjectWindowController extends AbstEntityController new ProjectTabSkinQuotation(this)); registerTabSkin(bidTab, tab -> new ProjectTabSkinBid(this)); registerTabSkin(fundPlanTab, tab -> new ProjectTabSkinFundPlan(this)); -// registerTabSkin(costItemTab, this::createCostItemTabSkin); + // registerTabSkin(costItemTab, this::createCostItemTabSkin); registerTabSkin(satisfactionTab, tab -> new ProjectTabSkinCustomerSatisfactionSurvey(this)); } @@ -169,7 +168,6 @@ public class ProjectWindowController extends AbstEntityController + extends AbstEntityBasedTabSkin implements TabSkin { @Setter @@ -86,6 +70,9 @@ public class ProjectBidTabSkinBase @Setter private ContractFileService contractFileService; + @Setter + private CompanyCustomerEvaluationFormFileService evaluationFormFileService; + private ProjectService getProjectService() { if (projectService == null) { projectService = getBean(ProjectService.class); @@ -134,10 +121,11 @@ public class ProjectBidTabSkinBase @Override public void initializeTab() { - employeeAutoCompletion(controller.applicantField, viewModel.getApplicant()); + UITools.autoCompletion(controller.applicantField, viewModel.getApplicant(), controller.getEmployeeService()); controller.applyTimeField.textProperty().bindBidirectional(viewModel.getApplyTime(), getLocalDateTimeStringConverter()); - employeeAutoCompletion(controller.authorizerField, viewModel.getAuthorizer()); + + UITools.autoCompletion(controller.authorizerField, viewModel.getAuthorizer(), controller.getEmployeeService()); controller.authorizationTimeField.textProperty().bindBidirectional(viewModel.getAuthorizationTime(), getLocalDateTimeStringConverter()); @@ -177,28 +165,25 @@ public class ProjectBidTabSkinBase controller.amountField.textProperty().bindBidirectional(viewModel.getAmount(), new NumberStringConverter(getLocale())); - evaluationFileAutoCompletion(controller.evaluationFileField, viewModel.getEvaluationFile()); + UITools.autoCompletion(controller.evaluationFileField, viewModel.getEvaluationFile(), + getCompanyCustomerFileService()); controller.evaluationFileBtn.setOnAction(event -> { - CompletableFuture.runAsync(() -> { - CompanyCustomerEvaluationFormFile file = viewModel.getEvaluationFile().get(); + runAsync(() -> { + Integer fileId = viewModel.getEvaluationFile().get(); + CompanyCustomerEvaluationFormFileVo file = getEvaluationFormFileService().findById(fileId); if (file != null) { - if (!ProxyUtils.isInitialized(file)) { - file = getCompanyCustomerFileService().findCustomerEvaluationFormFileById(file.getId()); - } - CompanyCustomerEvaluationFormFileWindowController.show(file.getCustomerFile(), + CompanyCustomerEvaluationFormFileWindowController.show(file, getTab().getTabPane().getScene().getWindow()); } }).exceptionally(this::handleException); }); - projectCostAutoCompletion(controller.costField, viewModel.getCost()); + UITools.autoCompletion(controller.costField, viewModel.getCost(), getProjectCostService()); controller.costBtn.setOnAction(event -> { - CompletableFuture.runAsync(() -> { - ProjectCost cost = viewModel.getCost().get(); + runAsync(() -> { + Integer costId = viewModel.getCost().get(); + ProjectCostVo cost = getProjectCostService().findById(costId); if (cost != null) { - if (!ProxyUtils.isInitialized(cost)) { - cost = getProjectCostService().findById(cost.getId()); - } ProjectCostWindowController.show(cost, getTab().getTabPane().getScene().getWindow()); } }).exceptionally(this::handleException); @@ -263,16 +248,12 @@ public class ProjectBidTabSkinBase } } - void setInitialDirectory(FileChooser fileChooser, File file, Project project) { + void setInitialDirectory(FileChooser fileChooser, File file, Integer projectId) { if (file == null) { - if (project != null) { - if (!ProxyUtils.isInitialized(project)) { - project = getProjectService().findById(project.getId()); - } - File path = getProjectService().searchPath(project); - if (path != null) { - fileChooser.setInitialDirectory(path); - } + ProjectVo projectVo = getProjectService().findById(projectId); + File path = getProjectService().searchPath(projectVo); + if (path != null) { + fileChooser.setInitialDirectory(path); } } else { fileChooser.setInitialDirectory(file.getParentFile()); @@ -283,29 +264,33 @@ public class ProjectBidTabSkinBase * 尝试获取客户资信评估表 */ private void tryGetEvaluationFile() { - Project project = getViewModel().getProject().get(); + Integer projectId = getViewModel().getProject().get(); + ProjectVo project = getProjectService().findById(projectId); if (project == null) { return; } - if (!ProxyUtils.isInitialized(project)) { - project = getProjectService().findById(project.getId()); - } - Company company = project.getCustomer(); - CompanyCustomer customer = getCompanyCustomerService().findByCompany(company); + Integer companyId = project.getCustomerId(); + CompanyVo company = getCompanyService().findById(companyId); + CompanyCustomerVo customer = getCompanyCustomerService().findByCompany(company); if (customer == null) { + // 没有对应的客户 return; } - CompanyCustomerFileService companyCustomerFileService = getBean(CompanyCustomerFileService.class); - List list = companyCustomerFileService.findAllByCustomerAndType(customer, + CompanyCustomerFileService fileService = getBean(CompanyCustomerFileService.class); + + // 获取客户资信评估表 + List list = fileService.findAllByCustomerAndType(customer, CompanyCustomerFileType.EvaluationForm); if (list.isEmpty()) { + // 没有评估表 return; } + // 在时间范围内是否有评估表 LocalDateTime applyTime = getViewModel().getApplyTime().get(); LocalDate verifyDate = applyTime.toLocalDate(); - CompanyCustomerFile file = list.stream() + CompanyCustomerFileVo file = list.stream() .filter(v -> v.getSignDate() != null && v.isValid()) .filter(v -> v.getType() == CompanyCustomerFileType.EvaluationForm) .filter(v -> MyDateTimeUtils.dateValidFilter(verifyDate, v.getSignDate(), v.getSignDate().plusYears(1), @@ -315,14 +300,17 @@ public class ProjectBidTabSkinBase return; } - CompanyCustomerEvaluationFormFile evaluationFile = companyCustomerFileService - .findCustomerEvaluationFormFileByCustomerFile(file); - if (evaluationFile == null) { + // 查找评估表对象 + CompanyCustomerEvaluationFormFileVo evaluationFileVo = getEvaluationFormFileService() + .findByCustomerFile(file); + if (evaluationFileVo == null) { + // 没找到对应的评估表对象,跳过 return; } + Platform.runLater(() -> { - getViewModel().getEvaluationFile().set(evaluationFile); - Integer creditLevel = evaluationFile.getCreditLevel(); + getViewModel().getEvaluationFile().set(evaluationFileVo.getId()); + Integer creditLevel = evaluationFileVo.getCreditLevel(); getViewModel().getLevel().set(creditLevel >= 4 ? 2 : creditLevel >= 2 ? 1 : 0); save(); }); @@ -346,19 +334,21 @@ public class ProjectBidTabSkinBase private void getContractFile(SimpleObjectProperty fileProperty, SimpleObjectProperty dateTimeProperty, ContractFileType type) { - Project project = getViewModel().getProject().get(); + Integer projectId = getViewModel().getProject().get(); + ProjectVo project = getProjectService().findById(projectId); if (project == null) { return; } - List list = new ArrayList<>(); - for (Contract contract : getContractService().findAllSalesByProject(project)) { - list.addAll(getContractFileService().findAllByContractAndFileType(contract, type)); + ContractFileService fileService = getContractFileService(); + List list = new ArrayList<>(); + for (ContractVo contract : getContractService().findAllSalesByProject(project)) { + list.addAll(fileService.findAllByContractAndFileType(contract, type)); } if (list.isEmpty()) { return; } - ContractFile contractFile = list.stream().max(Comparator.comparing(ContractFile::getApplyDate)) + ContractFileVo contractFile = list.stream().max(Comparator.comparing(ContractFileVo::getApplyDate)) .orElse(null); if (contractFile == null) { return; @@ -368,8 +358,8 @@ public class ProjectBidTabSkinBase LocalDateTime localDateTime = LocalDateTime.of(contractFile.getApplyDate(), LocalTime.MIN); dateTimeProperty.set(localDateTime); } - Contract c = contractFile.getContract(); - ; + Integer contractId = contractFile.getContractId(); + ContractVo c = getContractService().findById(contractId); File file = new File(c.getPath(), contractFile.getFileName()); if (file.exists()) { Platform.runLater(() -> { @@ -395,72 +385,12 @@ public class ProjectBidTabSkinBase // TODO } - private void projectCostAutoCompletion(TextField textField, SimpleObjectProperty property) { - EntityStringConverter converter = new EntityStringConverter<>(); - converter.setInitialized(formFile -> getProjectCostService().findById(formFile.getId())); - NumberFormat numberInstance = NumberFormat.getNumberInstance(getLocale()); - numberInstance.setMinimumFractionDigits(2); - numberInstance.setMaximumFractionDigits(2); - converter.setFormater(cost -> { - return "v" + cost.getVersion() + ", GM:" + numberInstance.format(cost.getGrossProfitMargin()) + "%"; - }); - converter.setSuggestion(searchText -> { - Project project = getViewModel().getProject().get(); - if (project == null) { - return null; - } - return getProjectCostService().findAllByProject(project); - }); - UITools.autoCompletion(textField, property, converter).setOnAutoCompleted(event -> { - property.set(event.getCompletion()); - }); + private void employeeAutoCompletion(TextField textField, SimpleObjectProperty property) { + UITools.autoCompletion(textField, property, controller.getEmployeeService()); } - private void evaluationFileAutoCompletion(TextField textField, - SimpleObjectProperty property) { - EntityStringConverter converter = new EntityStringConverter<>(); - converter.setInitialized( - formFile -> getCompanyCustomerFileService().findCustomerEvaluationFormFileById(formFile.getId())); - converter.setFormater(formFile -> { - CompanyCustomerFile customerFile = formFile.getCustomerFile(); - if (customerFile == null) { - return "无"; - } - File file = new File(customerFile.getFilePath()); - return file.getName() + ", 等级:" + formFile.getCreditLevel(); - }); - converter.setSuggestion(searchText -> { - Project project = getViewModel().getProject().get(); - if (project == null) { - return null; - } - if (!ProxyUtils.isInitialized(project)) { - project = getProjectService().findById(project.getId()); - } - Company company = project.getCustomer(); - if (company == null) { - return null; - } - CompanyCustomer customer = getCompanyCustomerService().findByCompany(company); - if (customer == null) { - return null; - } - return getCompanyCustomerFileService().searchEvaluationFile(customer, searchText); - }); - UITools.autoCompletion(textField, property, converter).setOnAutoCompleted(event -> { - CompanyCustomerEvaluationFormFile evaluationFile = event.getCompletion(); - Integer creditLevel = evaluationFile.getCreditLevel(); - viewModel.getLevel().set(creditLevel >= 4 ? 2 : creditLevel >= 2 ? 1 : 0); - property.set(evaluationFile); - }); - } - - private void employeeAutoCompletion(TextField textField, SimpleObjectProperty property) { - UITools.autoCompletion(textField, property, getEmployeeStringConverter()); - } - - private void companyAutoCompletion(TextField textField, SimpleObjectProperty property) { - UITools.autoCompletion(textField, property, getCompanyStringConverter()); + private void companyAutoCompletion(TextField textField, SimpleObjectProperty property) { + UITools.autoCompletion(textField, property, getCompanyService()); } private ProjectQuotationService getProjectQuotationService() { @@ -511,4 +441,11 @@ public class ProjectBidTabSkinBase } return customerFileService; } + + private CompanyCustomerEvaluationFormFileService getEvaluationFormFileService() { + if (evaluationFormFileService == null) { + evaluationFormFileService = getBean(CompanyCustomerEvaluationFormFileService.class); + } + return evaluationFormFileService; + } } diff --git a/client/src/main/java/com/ecep/contract/controller/project/bid/ProjectBidWindowController.java b/client/src/main/java/com/ecep/contract/controller/project/bid/ProjectBidWindowController.java index ebf0f8b..476372d 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/bid/ProjectBidWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/project/bid/ProjectBidWindowController.java @@ -1,36 +1,27 @@ package com.ecep.contract.controller.project.bid; -import com.ecep.contract.util.ProxyUtils; -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.model.Project; -import com.ecep.contract.model.ProjectBid; import com.ecep.contract.service.ProjectBidService; import com.ecep.contract.service.ProjectService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.ProjectBidViewModel; - +import com.ecep.contract.vo.ProjectBidVo; +import com.ecep.contract.vo.ProjectVo; import javafx.event.ActionEvent; -import javafx.scene.control.Button; -import javafx.scene.control.CheckBox; -import javafx.scene.control.RadioButton; -import javafx.scene.control.Tab; -import javafx.scene.control.TextArea; -import javafx.scene.control.TextField; +import javafx.scene.control.*; import javafx.scene.layout.BorderPane; import javafx.scene.layout.HBox; import javafx.stage.WindowEvent; -import lombok.Setter; +import org.springframework.context.annotation.Lazy; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; @Lazy @Scope("prototype") @Component @FxmlPath("/ui/project/project-bid.fxml") public class ProjectBidWindowController - extends AbstEntityController { + extends AbstEntityController { public BorderPane root; public Tab baseInfoTab; @@ -74,10 +65,8 @@ public class ProjectBidWindowController @Override public void onShown(WindowEvent windowEvent) { super.onShown(windowEvent); - Project project = viewModel.getProject().get(); - if (!ProxyUtils.isInitialized(project)) { - project = getProjectService().findById(project.getId()); - } + Integer projectId = viewModel.getProject().get(); + ProjectVo project = getProjectService().findById(projectId); getTitle().set("[" + viewModel.getId().get() + "] " + project.getCode() + " 项目投标"); exportExcelBtn.setOnAction(this::onExportExcelAction); diff --git a/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostExportExcelTasker.java b/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostExportExcelTasker.java index 9f912e1..6cdd16a 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostExportExcelTasker.java +++ b/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostExportExcelTasker.java @@ -26,30 +26,30 @@ import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.ss.util.CellAddress; import org.apache.poi.ss.util.CellRangeAddress; -import com.ecep.contract.util.ProxyUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.StringUtils; import com.ecep.contract.MessageHolder; import com.ecep.contract.constant.ContractConstant; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.ProductType; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectCost; import com.ecep.contract.model.ProjectCostItem; -import com.ecep.contract.model.ProjectIndustry; -import com.ecep.contract.model.ProjectSaleType; -import com.ecep.contract.model.ProjectType; import com.ecep.contract.service.ProductTypeService; import com.ecep.contract.service.ProjectCostItemService; import com.ecep.contract.service.ProjectCostService; import com.ecep.contract.service.ProjectIndustryService; +import com.ecep.contract.service.ProjectSaleTypeService; import com.ecep.contract.service.ProjectService; import com.ecep.contract.service.ProjectTypeService; -import com.ecep.contract.service.ProjectSaleTypeService; import com.ecep.contract.task.Tasker; +import com.ecep.contract.vo.CompanyVo; +import com.ecep.contract.vo.EmployeeVo; +import com.ecep.contract.vo.ProductTypeVo; +import com.ecep.contract.vo.ProjectCostItemVo; +import com.ecep.contract.vo.ProjectCostVo; +import com.ecep.contract.vo.ProjectIndustryVo; +import com.ecep.contract.vo.ProjectSaleTypeVo; +import com.ecep.contract.vo.ProjectTypeVo; +import com.ecep.contract.vo.ProjectVo; import lombok.Setter; @@ -57,7 +57,7 @@ public class ProjectCostExportExcelTasker extends Tasker { private static final Logger logger = LoggerFactory.getLogger(ProjectCostExportExcelTasker.class); private String name = "成本核算审批表"; @Setter - private ProjectCost cost; + private ProjectCostVo cost; @Setter private ProjectService projectService; @Setter @@ -102,11 +102,7 @@ public class ProjectCostExportExcelTasker extends Tasker { return null; } - Project project = cost.getProject(); - if (!ProxyUtils.isInitialized(project)) { - project = getProjectService().findById(project.getId()); - cost.setProject(project); - } + ProjectVo project = getProjectService().findById(cost.getProject()); File dir = getProjectService().searchPath(project); LocalDate thatDay = LocalDate.now(); if (cost.getApplyTime() != null) { @@ -164,39 +160,28 @@ public class ProjectCostExportExcelTasker extends Tasker { private void updateProjectCost(Sheet sheet, MessageHolder holder) { updateTitle("更新 " + sheet.getSheetName() + " Sheet"); - Project project = cost.getProject(); + ProjectVo project = getProjectService().findById(cost.getProject()); setCellValue(sheet, "C5", project.getName()); - Company customer = project.getCustomer(); + CompanyVo customer = getCompanyService().findById(project.getCustomerId()); if (customer != null) { - if (!ProxyUtils.isInitialized(customer)) { - customer = getCompanyService().findById(customer.getId()); - project.setCustomer(customer); - } setCellValue(sheet, "C6", customer.getName()); } else { setCellValue(sheet, "C6", "-"); } setCellValue(sheet, "C7", project.getAddress()); - ProjectType projectType = project.getProjectType(); + + ProjectTypeVo projectType = getBean(ProjectTypeService.class).findById(project.getProjectTypeId()); if (projectType != null) { - if (!ProxyUtils.isInitialized(projectType)) { - projectType = getBean(ProjectTypeService.class).findById(projectType.getId()); - project.setProjectType(projectType); - } setCellValue(sheet, "I5", projectType.getName()); } else { setCellValue(sheet, "I5", ""); } - ProductType productType = project.getProductType(); + ProductTypeVo productType = getBean(ProductTypeService.class).findById(project.getProductTypeId()); if (productType != null) { - if (!ProxyUtils.isInitialized(productType)) { - productType = getBean(ProductTypeService.class).findById(productType.getId()); - project.setProductType(productType); - } setCellValue(sheet, "I6", productType.getName()); } else { setCellValue(sheet, "I6", ""); @@ -208,34 +193,22 @@ public class ProjectCostExportExcelTasker extends Tasker { setCellValue(sheet, "I7", project.getCreated()); } - ProjectSaleType saleType = project.getSaleType(); + ProjectSaleTypeVo saleType = getBean(ProjectSaleTypeService.class).findById(project.getSaleTypeId()); if (saleType != null) { - if (!ProxyUtils.isInitialized(saleType)) { - saleType = getBean(ProjectSaleTypeService.class).findById(saleType.getId()); - project.setSaleType(saleType); - } setCellValue(sheet, "M5", saleType.getName()); } else { setCellValue(sheet, "M5", ""); } - ProjectIndustry industry = project.getIndustry(); + ProjectIndustryVo industry = getBean(ProjectIndustryService.class).findById(project.getIndustryId()); if (industry != null) { - if (!ProxyUtils.isInitialized(industry)) { - industry = getBean(ProjectIndustryService.class).findById(industry.getId()); - project.setIndustry(industry); - } setCellValue(sheet, "M6", industry.getName()); } else { setCellValue(sheet, "M6", ""); } - Employee applicant = project.getApplicant(); + EmployeeVo applicant = getEmployeeService().findById(project.getApplicantId()); if (applicant != null) { - if (!ProxyUtils.isInitialized(applicant)) { - applicant = getEmployeeService().findById(applicant.getId()); - project.setApplicant(applicant); - } setCellValue(sheet, "M7", applicant.getName()); } else { setCellValue(sheet, "M7", ""); @@ -244,7 +217,7 @@ public class ProjectCostExportExcelTasker extends Tasker { setCellValue(sheet, "D39", cost.getStampTax() / 100); setCellValue(sheet, "D40", cost.getTaxAndSurcharges() / 100); - List items = getItemService().findByCost(cost); + List items = getBean(ProjectCostItemService.class).findByCost(cost); if (items.size() > 27) { holder.warn("读取到 " + items.size() + " 行, 超出最大行数27行,已截断导出到附加表中"); int row = 10; @@ -254,7 +227,7 @@ public class ProjectCostExportExcelTasker extends Tasker { // 含税售价 setCellValue(sheet, row, 4, items.stream().mapToDouble( - v -> v.getInQuantity() * v.getInExclusiveTaxPrice() * (100 + v.getInTaxRate()) / 100) + v -> v.getInQuantity() * v.getInExclusiveTaxPrice() * (100 + v.getInTaxRate()) / 100) .sum()); Cell cellTax = getCell(sheet, row, 6, false); if (cellTax != null) { @@ -266,7 +239,7 @@ public class ProjectCostExportExcelTasker extends Tasker { // 含税进价 setCellValue(sheet, row, 8, items.stream().mapToDouble( - v -> v.getOutQuantity() * v.getOutExclusiveTaxPrice() * (100 + v.getOutTaxRate()) / 100) + v -> v.getOutQuantity() * v.getOutExclusiveTaxPrice() * (100 + v.getOutTaxRate()) / 100) .sum()); setCellValue(sheet, row, 10, 0); setCellValue(sheet, row, 11, @@ -276,13 +249,13 @@ public class ProjectCostExportExcelTasker extends Tasker { return; } for (int i = 0; i < items.size(); i++) { - ProjectCostItem item = items.get(i); + ProjectCostItemVo item = items.get(i); int row = 10 + i; drawRow(sheet, row, item); } } - private void writeItem2Detail(Sheet sheet, List items, MessageHolder holder) { + private void writeItem2Detail(Sheet sheet, List items, MessageHolder holder) { Sheet detailSheet = findSheetByNameContains(sheet.getWorkbook(), "附加表"); if (detailSheet == null) { detailSheet = sheet.getWorkbook().createSheet("附加表"); @@ -366,7 +339,7 @@ public class ProjectCostExportExcelTasker extends Tasker { } for (int i = 0; i < items.size(); i++) { - ProjectCostItem item = items.get(i); + ProjectCostItemVo item = items.get(i); int rowIndex = 3 + i; Row theRow = getRow(detailSheet, rowIndex, true); if (theRow == null) { @@ -510,7 +483,7 @@ public class ProjectCostExportExcelTasker extends Tasker { } } - void drawRow(Sheet sheet, int row, ProjectCostItem item) { + void drawRow(Sheet sheet, int row, ProjectCostItemVo item) { setCellValue(sheet, row, 0, item.getTitle()); setCellValue(sheet, row, 2, item.getSpecification()); setCellValue(sheet, row, 3, item.getInQuantity()); @@ -521,7 +494,7 @@ public class ProjectCostExportExcelTasker extends Tasker { setCellValue(sheet, row, 10, item.getOutTaxRate() / 100); } - void drawDetailRow(Row row, ProjectCostItem item) { + void drawDetailRow(Row row, ProjectCostItemVo item) { setCellValue(row, 0, item.getTitle()); setCellValue(row, 1, item.getSpecification()); diff --git a/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostImportItemsFromContractsTasker.java b/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostImportItemsFromContractsTasker.java index 4ebb6a0..91d2278 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostImportItemsFromContractsTasker.java +++ b/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostImportItemsFromContractsTasker.java @@ -2,8 +2,9 @@ package com.ecep.contract.controller.project.cost; import com.ecep.contract.MessageHolder; import com.ecep.contract.WebSocketClientTasker; -import com.ecep.contract.model.ProjectCost; import com.ecep.contract.task.Tasker; +import com.ecep.contract.vo.ProjectCostVo; + import lombok.Setter; /** @@ -11,7 +12,7 @@ import lombok.Setter; */ public class ProjectCostImportItemsFromContractsTasker extends Tasker implements WebSocketClientTasker { @Setter - private ProjectCost cost; + private ProjectCostVo cost; @Override protected Object execute(MessageHolder holder) throws Exception { diff --git a/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostTabSkinBase.java b/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostTabSkinBase.java index a9f5de1..1ae1ccd 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostTabSkinBase.java +++ b/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostTabSkinBase.java @@ -9,23 +9,21 @@ import java.util.Comparator; import java.util.List; import java.util.concurrent.CompletableFuture; -import com.ecep.contract.util.ProxyUtils; - import com.ecep.contract.ContractFileType; import com.ecep.contract.DesktopUtils; import com.ecep.contract.MyDateTimeUtils; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.TabSkin; -import com.ecep.contract.converter.EmployeeStringConverter; -import com.ecep.contract.model.Contract; import com.ecep.contract.model.ContractFile; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectCost; import com.ecep.contract.service.ContractFileService; import com.ecep.contract.service.ContractService; import com.ecep.contract.service.ProjectService; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.ProjectCostViewModel; +import com.ecep.contract.vo.ContractFileVo; +import com.ecep.contract.vo.ContractVo; +import com.ecep.contract.vo.ProjectCostVo; +import com.ecep.contract.vo.ProjectVo; import javafx.application.Platform; import javafx.event.ActionEvent; @@ -37,7 +35,7 @@ import javafx.util.converter.NumberStringConverter; import lombok.Setter; public class ProjectCostTabSkinBase - extends AbstEntityBasedTabSkin + extends AbstEntityBasedTabSkin implements TabSkin { @Setter LocalDateTimeStringConverter localDateTimeStringConverter; @@ -113,14 +111,8 @@ public class ProjectCostTabSkinBase controller.outExclusiveTaxAmountField.textProperty().bindBidirectional(viewModel.getOutExclusiveTaxAmount(), currencyStringConverter); - EmployeeStringConverter employeeStringConverter = getBean(EmployeeStringConverter.class); - // controller.applicantField.textProperty().bindBidirectional(viewModel.getApplicant(), - // employeeStringConverter); - // controller.authorizerField.textProperty().bindBidirectional(viewModel.getAuthorizer(), - // employeeStringConverter); - - UITools.autoCompletion(controller.applicantField, viewModel.getApplicant(), employeeStringConverter); - UITools.autoCompletion(controller.authorizerField, viewModel.getAuthorizer(), employeeStringConverter); + UITools.autoCompletion(controller.applicantField, viewModel.getApplicant(), controller.getEmployeeService()); + UITools.autoCompletion(controller.authorizerField, viewModel.getAuthorizer(), controller.getEmployeeService()); LocalDateTimeStringConverter converter = getLocalDateTimeStringConverter(); controller.applyTimeField.textProperty().bindBidirectional(viewModel.getApplyTime(), converter); @@ -139,11 +131,9 @@ public class ProjectCostTabSkinBase FileChooser fileChooser = new FileChooser(); File file = viewModel.getAuthorizationFile().get(); if (file == null) { - Project project = viewModel.getProject().get(); + Integer projectId = viewModel.getProject().get(); + ProjectVo project = getProjectService().findById(projectId); if (project != null) { - if (!ProxyUtils.isInitialized(project)) { - project = getProjectService().findById(project.getId()); - } File path = getProjectService().searchPath(project); if (path != null) { fileChooser.setInitialDirectory(path); @@ -160,25 +150,26 @@ public class ProjectCostTabSkinBase } private void tryGetAuthorizationFile() { - Project project = getViewModel().getProject().get(); + Integer projectId = viewModel.getProject().get(); + ProjectVo project = getProjectService().findById(projectId); if (project == null) { return; } - + ContractService contractService = getBean(ContractService.class); - Contract contract = contractService.findSalesByProject(project); + ContractVo contract = contractService.findSalesByProject(project); if (contract == null) { return; } ContractFileService contractFileService = getBean(ContractFileService.class); - List list = contractFileService.findAllByContractAndFileType(contract, ContractFileType.CostForm); + List list = contractFileService.findAllByContractAndFileType(contract, ContractFileType.CostForm); if (list.isEmpty()) { return; } - ContractFile contractFile = list.stream() - .max(Comparator.comparing(ContractFile::getApplyDate, Comparator.nullsLast(Comparator.naturalOrder()))) + ContractFileVo contractFile = list.stream() + .max(Comparator.comparing(ContractFileVo::getApplyDate, Comparator.nullsLast(Comparator.naturalOrder()))) .orElse(null); if (contractFile.getApplyDate() != null && getViewModel().getAuthorizationTime().get() == null) { diff --git a/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostTabSkinItems.java b/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostTabSkinItems.java index 8e1adc5..ee0b130 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostTabSkinItems.java +++ b/client/src/main/java/com/ecep/contract/controller/project/cost/ProjectCostTabSkinItems.java @@ -2,56 +2,48 @@ package com.ecep.contract.controller.project.cost; import java.text.NumberFormat; import java.time.LocalDateTime; -import java.util.*; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; import java.util.function.Function; -import org.controlsfx.control.textfield.AutoCompletionBinding; -import org.controlsfx.control.textfield.TextFields; -import org.springframework.util.StringUtils; - import com.ecep.contract.Desktop; import com.ecep.contract.controller.inventory.InventoryWindowController; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.controller.table.cell.EmployeeTableCell; +import com.ecep.contract.controller.table.cell.InventoryAutoCompletionTableCell; import com.ecep.contract.controller.table.cell.LocalDateTimeTableCell; -import com.ecep.contract.converter.EntityStringConverter; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.Inventory; import com.ecep.contract.model.Price; -import com.ecep.contract.model.ProjectCost; -import com.ecep.contract.model.ProjectCostItem; import com.ecep.contract.service.ContractItemService; import com.ecep.contract.service.ContractService; import com.ecep.contract.service.InventoryService; import com.ecep.contract.service.ProjectCostItemService; import com.ecep.contract.service.ProjectCostService; import com.ecep.contract.util.FxmlPath; -import com.ecep.contract.util.ProxyUtils; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.InventoryViewModel; import com.ecep.contract.vm.ProjectCostItemViewModel; import com.ecep.contract.vm.ProjectCostViewModel; +import com.ecep.contract.vo.InventoryVo; +import com.ecep.contract.vo.ProjectCostItemVo; +import com.ecep.contract.vo.ProjectCostVo; import javafx.application.Platform; import javafx.beans.binding.BooleanBinding; import javafx.beans.property.Property; import javafx.event.ActionEvent; -import javafx.scene.Node; import javafx.scene.control.Button; -import javafx.scene.control.Cell; import javafx.scene.control.CheckBox; import javafx.scene.control.ContextMenu; import javafx.scene.control.Label; import javafx.scene.control.MenuItem; import javafx.scene.control.SelectionMode; import javafx.scene.control.Tab; -import javafx.scene.control.TableCell; import javafx.scene.control.TableColumn; -import javafx.scene.control.TextField; import javafx.scene.control.ToggleButton; import javafx.scene.control.cell.TextFieldTableCell; -import javafx.scene.input.KeyCode; import javafx.util.converter.CurrencyStringConverter; import javafx.util.converter.NumberStringConverter; import javafx.util.converter.PercentageStringConverter; @@ -60,7 +52,7 @@ import lombok.Setter; @FxmlPath("/ui/project/project-cost-tab-item.fxml") public class ProjectCostTabSkinItems extends - AbstEntityTableTabSkin + AbstEntityTableTabSkin implements TabSkin { public TableColumn idColumn; @@ -81,12 +73,18 @@ public class ProjectCostTabSkinItems public TableColumn outTaxAmountColumn; public TableColumn grossProfitColumn; public TableColumn grossProfitMarginColumn; - public TableColumn creatorColumn; + /** + * 创建人, Employee + */ + public TableColumn creatorColumn; public TableColumn createDateColumn; - public TableColumn updaterColumn; + /** + * 修改人, Employee + */ + public TableColumn updaterColumn; public TableColumn updateDateColumn; public TableColumn remarkColumn; - public TableColumn inventoryColumn; + public TableColumn inventoryColumn; public Button importFromSalesContractBtn; public ToggleButton lockPriceMethodBtn; @@ -154,118 +152,15 @@ public class ProjectCostTabSkinItems } @Override - public List loadTableData(ProjectCost parent) { + public List loadTableData(ProjectCostVo parent) { List models = super.loadTableData(parent); Platform.runLater(() -> up(models)); return models; } @Override - public Map getSpecification(ProjectCost parent) { - Map params = new HashMap<>(); - params.put("cost", parent); - return params; - } - - static class AutoCompletionInventoryTableCell extends TableCell { - private TextField textField; - @Setter - private EntityStringConverter converter; - - public AutoCompletionInventoryTableCell() { - } - - public AutoCompletionInventoryTableCell(EntityStringConverter converter) { - this(); - this.converter = converter; - } - - @Override - public void startEdit() { - super.startEdit(); - if (!isEditing()) { - return; - } - - if (textField == null) { - textField = createTextField(this, converter); - AutoCompletionBinding binding = TextFields.bindAutoCompletion(textField, converter::suggest, - converter); - binding.setOnAutoCompleted(event -> { - commitEdit(event.getCompletion()); - }); - } - - startEdit(this, converter, textField); - } - - @Override - public void cancelEdit() { - super.cancelEdit(); - cancelEdit(this, converter, null); - } - - @Override - public void updateItem(Inventory item, boolean empty) { - super.updateItem(item, empty); - if (empty || item == null) { - setText(""); - setGraphic(null); - return; - } - if (isEditing()) { - if (textField != null) { - textField.setText(getItemText(this, converter)); - } - setText(null); - setGraphic(textField); - } else { - setText(getItemText(this, converter)); - setGraphic(null); - } - } - - private static String getItemText(Cell cell, EntityStringConverter converter) { - Inventory inventory = converter.prefixObject(cell.getItem()); - return inventory == null ? "-" - : StringUtils.hasText(inventory.getCode()) ? inventory.getCode() : ("#" + inventory.getId()); - } - - static TextField createTextField(final Cell cell, final EntityStringConverter converter) { - final TextField textField = new TextField(getItemText(cell, converter)); - textField.setOnKeyReleased(t -> { - if (t.getCode() == KeyCode.ESCAPE) { - cell.cancelEdit(); - t.consume(); - return; - } - if (t.getCode() == KeyCode.ENTER) { - cell.commitEdit(converter.fromString(textField.getText())); - t.consume(); - } - }); - - return textField; - } - - static void startEdit(final Cell cell, - final EntityStringConverter converter, - final TextField textField) { - if (textField != null) { - textField.setText(getItemText(cell, converter)); - } - cell.setText(null); - cell.setGraphic(textField); - textField.selectAll(); - // requesting focus so that key input can immediately go into the - // TextField (see RT-28132) - textField.requestFocus(); - } - - static void cancelEdit(Cell cell, final EntityStringConverter converter, Node graphic) { - cell.setText(getItemText(cell, converter)); - cell.setGraphic(graphic); - } + public ParamUtils.Builder getSpecification(ProjectCostVo parent) { + return ParamUtils.builder().equals("cost", parent); } @Override @@ -319,18 +214,11 @@ public class ProjectCostTabSkinItems unitColumn.setCellFactory(TextFieldTableCell.forTableColumn()); unitColumn.setOnEditCommit(event -> changed(event, ProjectCostItemViewModel::getUnit)); - EntityStringConverter converter = new EntityStringConverter<>(); - converter.setInitialized(v -> getInventoryService().findById(v.getId())); - converter.setSuggestion(getInventoryService()::search); - // converter.setFormater(Inventory::getCode); - converter.setFromString(code -> { - return getInventoryService().findByCode(code); - }); - inventoryColumn.setCellValueFactory(param -> param.getValue().getInventory()); - inventoryColumn.setCellFactory(param -> new AutoCompletionInventoryTableCell(converter)); + inventoryColumn.setCellValueFactory(param -> param.getValue().getInventoryId()); + inventoryColumn.setCellFactory(InventoryAutoCompletionTableCell.forTableColumn(getInventoryService())); - inventoryColumn.comparatorProperty() - .set(Comparator.comparing(converter::toString, Comparator.nullsLast(Comparator.naturalOrder()))); + // inventoryColumn.comparatorProperty() + // .set(Comparator.comparing(converter::toString, Comparator.nullsLast(Comparator.naturalOrder()))); inventoryColumn.setOnEditCommit(this::inventoryColumnEditCommit); initializeNumberColumn(inQuantityColumn, ProjectCostItemViewModel::getInQuantity); @@ -447,9 +335,9 @@ public class ProjectCostTabSkinItems .setCellFactory(TextFieldTableCell.forTableColumn(new PercentageStringConverter(getLocale()))); grossProfitMarginColumn.setEditable(false); - creatorColumn.setCellValueFactory(param -> param.getValue().getCreator()); + creatorColumn.setCellValueFactory(param -> param.getValue().getCreatorId()); creatorColumn.setCellFactory(cell -> new EmployeeTableCell<>(getEmployeeService())); - updaterColumn.setCellValueFactory(param -> param.getValue().getUpdater()); + updaterColumn.setCellValueFactory(param -> param.getValue().getUpdaterId()); updaterColumn.setCellFactory(cell -> new EmployeeTableCell<>(getEmployeeService())); createDateColumn.setCellValueFactory(param -> param.getValue().getCreateDate()); createDateColumn.setCellFactory(param -> new LocalDateTimeTableCell<>()); @@ -465,38 +353,41 @@ public class ProjectCostTabSkinItems } - private void inventoryColumnEditCommit(TableColumn.CellEditEvent event) { + private void inventoryColumnEditCommit(TableColumn.CellEditEvent event) { ProjectCostItemViewModel row = event.getRowValue(); - Inventory inventory = event.getNewValue(); - row.getInventory().set(inventory); - if (inventory != null) { - row.getTitle().set(inventory.getName()); - row.getSpecification().set(inventory.getSpecification()); - row.getUnit().set(inventory.getUnit()); + Integer inventoryId = event.getNewValue(); + row.getInventoryId().set(inventoryId); + if (inventoryId != null) { + InventoryVo inventory = getInventoryService().findById(inventoryId); + if (inventory != null) { + row.getTitle().set(inventory.getName()); + row.getSpecification().set(inventory.getSpecification()); + row.getUnit().set(inventory.getUnit()); - Price salePrice = inventory.getSalePrice(); - if (row.getInTaxRate().get() == 0 && salePrice.getTaxRate() != 0) { - row.getInTaxRate().set(salePrice.getTaxRate()); - } - if (row.getInExclusiveTaxPrice().get() == 0 && salePrice.getPreTaxPrice() != 0) { - row.getInExclusiveTaxPrice().set(salePrice.getPreTaxPrice()); - } - if (row.getInTaxPrice().get() == 0 && salePrice.getPostTaxPrice() != 0) { - row.getInTaxPrice().set(salePrice.getPostTaxPrice()); - } - row.updateIn(); + Price salePrice = inventory.getSalePrice(); + if (row.getInTaxRate().get() == 0 && salePrice.getTaxRate() != 0) { + row.getInTaxRate().set(salePrice.getTaxRate()); + } + if (row.getInExclusiveTaxPrice().get() == 0 && salePrice.getPreTaxPrice() != 0) { + row.getInExclusiveTaxPrice().set(salePrice.getPreTaxPrice()); + } + if (row.getInTaxPrice().get() == 0 && salePrice.getPostTaxPrice() != 0) { + row.getInTaxPrice().set(salePrice.getPostTaxPrice()); + } + row.updateIn(); - Price purchasePrice = inventory.getPurchasePrice(); - if (row.getOutTaxRate().get() == 0 && purchasePrice.getTaxRate() != 0) { - row.getOutTaxRate().set(purchasePrice.getTaxRate()); + Price purchasePrice = inventory.getPurchasePrice(); + if (row.getOutTaxRate().get() == 0 && purchasePrice.getTaxRate() != 0) { + row.getOutTaxRate().set(purchasePrice.getTaxRate()); + } + if (row.getOutExclusiveTaxPrice().get() == 0 && purchasePrice.getPreTaxPrice() != 0) { + row.getOutExclusiveTaxPrice().set(purchasePrice.getPreTaxPrice()); + } + if (row.getOutTaxPrice().get() == 0 && purchasePrice.getPostTaxPrice() != 0) { + row.getOutTaxPrice().set(purchasePrice.getPostTaxPrice()); + } + row.updateOut(); } - if (row.getOutExclusiveTaxPrice().get() == 0 && purchasePrice.getPreTaxPrice() != 0) { - row.getOutExclusiveTaxPrice().set(purchasePrice.getPreTaxPrice()); - } - if (row.getOutTaxPrice().get() == 0 && purchasePrice.getPostTaxPrice() != 0) { - row.getOutTaxPrice().set(purchasePrice.getPostTaxPrice()); - } - row.updateOut(); } changed(row); } @@ -509,7 +400,7 @@ public class ProjectCostTabSkinItems } private void initializeNumberColumn(TableColumn column, - Function> supplier) { + Function> supplier) { column.setCellValueFactory(param -> supplier.apply(param.getValue())); column.setCellFactory(TextFieldTableCell.forTableColumn(new NumberStringConverter())); column.setOnEditCommit(event -> changed(event, supplier)); @@ -523,12 +414,13 @@ public class ProjectCostTabSkinItems MenuItem showInventory = new MenuItem("查看存货"); showInventory.setOnAction(event -> { ProjectCostItemViewModel selectedItem = getTableView().getSelectionModel().getSelectedItem(); - Inventory inventory = selectedItem.getInventory().get(); - if (inventory == null) { + Integer inventoryId = selectedItem.getInventoryId().get(); + if (inventoryId == null) { return; } - if (!ProxyUtils.isInitialized(inventory)) { - inventory = getInventoryService().findById(inventory.getId()); + InventoryVo inventory = getInventoryService().findById(inventoryId); + if (inventory == null) { + return; } showInOwner(InventoryWindowController.class, InventoryViewModel.from(inventory)); }); @@ -539,8 +431,8 @@ public class ProjectCostTabSkinItems showInventory.setDisable(true); return; } - Inventory inventory = selectedItem.getInventory().get(); - if (inventory == null) { + Integer inventoryId = selectedItem.getInventoryId().get(); + if (inventoryId == null) { showInventory.setDisable(true); return; } @@ -559,6 +451,8 @@ public class ProjectCostTabSkinItems List selectedItems = new ArrayList<>( getTableView().getSelectionModel().getSelectedItems()); + int activeEmployeeId = Desktop.instance.getActiveEmployeeId(); + double inQuantity = selectedItems.stream().mapToDouble(v -> v.getInQuantity().get()).sum(); double inAmount = selectedItems.stream().mapToDouble(v -> v.getInTaxAmount().get()).sum(); double inPrice = inQuantity != 0 ? inAmount / inQuantity : 0; @@ -570,7 +464,7 @@ public class ProjectCostTabSkinItems model.updateInTaxPrice(inPrice); model.getOutQuantity().set(outQuantity); model.updateOutTaxPrice(outPrice); - model.getUpdater().set(controller.getCurrentUser()); + model.getUpdaterId().set(activeEmployeeId); model.getUpdateDate().set(LocalDateTime.now()); // saveRow(model); @@ -583,7 +477,7 @@ public class ProjectCostTabSkinItems } selectedItem.updateInQuantity(0); selectedItem.updateOutQuantity(0); - selectedItem.getUpdater().set(controller.getCurrentUser()); + selectedItem.getUpdaterId().set(activeEmployeeId); selectedItem.getUpdateDate().set(LocalDateTime.now()); selectedItem.getRemark().set("del"); // saveRow(selectedItem); @@ -594,9 +488,9 @@ public class ProjectCostTabSkinItems @Override protected ProjectCostItemViewModel createNewViewModel() { ProjectCostItemViewModel model = super.createNewViewModel(); - ProjectCost projectCost = getParent(); - model.getCost().set(projectCost); - model.getCreator().set(getEmployeeService().findById(Desktop.instance.getActiveEmployeeId())); + ProjectCostVo projectCost = getParent(); + model.getCostId().set(projectCost.getId()); + model.getCreatorId().set(Desktop.instance.getActiveEmployeeId()); model.getCreateDate().set(LocalDateTime.now()); saveRow(model); return model; @@ -612,14 +506,14 @@ public class ProjectCostTabSkinItems // 批量保存(内部可能需要优化为真正的批量操作) for (ProjectCostItemViewModel row : changedRows) { - ProjectCostItem entity = loadRowData(row); + ProjectCostItemVo entity = loadRowData(row); if (entity == null) { entity = createNewEntity(row); } if (row.copyTo(entity)) { - entity.setUpdater(controller.getCurrentUser()); + entity.setUpdaterId(Desktop.instance.getActiveEmployeeId()); entity.setUpdateDate(LocalDateTime.now()); - ProjectCostItem saved = saveRowData(entity); + ProjectCostItemVo saved = saveRowData(entity); row.update(saved); } if (row.isChanged()) { 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 15cfc9c..8566857 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 @@ -1,6 +1,8 @@ package com.ecep.contract.controller.project.cost; import com.ecep.contract.util.ProxyUtils; +import com.ecep.contract.vo.ProjectCostVo; +import com.ecep.contract.vo.ProjectVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Scope; @@ -30,7 +32,7 @@ import javafx.stage.WindowEvent; @Component @FxmlPath("/ui/project/project-cost.fxml") public class ProjectCostWindowController - extends AbstEntityController { + extends AbstEntityController { public BorderPane root; public Tab baseInfoTab; public Tab itemTab; @@ -64,7 +66,7 @@ public class ProjectCostWindowController public Button exportExcelBtn; public Button importExcelBtn; - public static void show(ProjectCost cost, Window window) { + public static void show(ProjectCostVo cost, Window window) { ProjectCostViewModel model = new ProjectCostViewModel(); model.update(cost); show(ProjectCostWindowController.class, model, window); @@ -74,10 +76,8 @@ public class ProjectCostWindowController public void onShown(WindowEvent windowEvent) { super.onShown(windowEvent); root.getScene().getStylesheets().add("/ui/project/comm.css"); - Project project = viewModel.getProject().get(); - if (!ProxyUtils.isInitialized(project)) { - project = getProjectService().findById(project.getId()); - } + Integer projectId = viewModel.getProject().get(); + ProjectVo project = getProjectService().findById(projectId); getTitle().set("[" + viewModel.getId().get() + "] " + project.getCode() + " 项目成本 Ver:" + viewModel.getVersion().getValue() + " "); diff --git a/client/src/main/java/com/ecep/contract/controller/project/industry/ProjectIndustryManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/project/industry/ProjectIndustryManagerSkin.java index 98a1b03..498de6d 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/industry/ProjectIndustryManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/project/industry/ProjectIndustryManagerSkin.java @@ -3,20 +3,16 @@ package com.ecep.contract.controller.project.industry; import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.ManagerSkin; import com.ecep.contract.controller.table.EditableEntityTableTabSkin; -import com.ecep.contract.model.ProjectIndustry; import com.ecep.contract.service.ProjectService; import com.ecep.contract.vm.ProjectIndustryViewModel; +import com.ecep.contract.vo.ProjectIndustryVo; import javafx.scene.control.TableColumn; import javafx.scene.control.cell.TextFieldTableCell; -import lombok.Setter; public class ProjectIndustryManagerSkin - extends AbstEntityManagerSkin - implements ManagerSkin, EditableEntityTableTabSkin { - @Setter - private ProjectService projectService; - + extends AbstEntityManagerSkin + implements ManagerSkin, EditableEntityTableTabSkin { public ProjectIndustryManagerSkin(ProjectIndustryManagerWindowController controller) { super(controller); } @@ -55,9 +51,6 @@ public class ProjectIndustryManagerSkin } public ProjectService getProjectService() { - if (projectService == null) { - projectService = getBean(ProjectService.class); - } - return projectService; + return getBean(ProjectService.class); } } diff --git a/client/src/main/java/com/ecep/contract/controller/project/industry/ProjectIndustryManagerWindowController.java b/client/src/main/java/com/ecep/contract/controller/project/industry/ProjectIndustryManagerWindowController.java index 0d4974f..614b0a0 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/industry/ProjectIndustryManagerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/project/industry/ProjectIndustryManagerWindowController.java @@ -8,11 +8,10 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import com.ecep.contract.controller.AbstManagerWindowController; -import com.ecep.contract.model.ProjectIndustry; import com.ecep.contract.service.ProjectIndustryService; -import com.ecep.contract.service.ProjectService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.ProjectIndustryViewModel; +import com.ecep.contract.vo.ProjectIndustryVo; import javafx.scene.control.TableColumn; import javafx.stage.Stage; @@ -22,10 +21,8 @@ import javafx.stage.Stage; @Component @FxmlPath("/ui/project/used-industry-manager.fxml") public class ProjectIndustryManagerWindowController - extends AbstManagerWindowController { + extends AbstManagerWindowController { - @Autowired - private ProjectService projectService; @Autowired private ProjectIndustryService projectIndustryService; @@ -45,7 +42,6 @@ public class ProjectIndustryManagerWindowController @Override protected ProjectIndustryManagerSkin createDefaultSkin() { ProjectIndustryManagerSkin skin = new ProjectIndustryManagerSkin(this); - skin.setProjectService(projectService); return skin; } diff --git a/client/src/main/java/com/ecep/contract/controller/project/product_type/ProductTypeManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/project/product_type/ProductTypeManagerSkin.java index 4734397..7b0305a 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/product_type/ProductTypeManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/project/product_type/ProductTypeManagerSkin.java @@ -3,15 +3,15 @@ package com.ecep.contract.controller.project.product_type; import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.ManagerSkin; import com.ecep.contract.controller.table.EditableEntityTableTabSkin; -import com.ecep.contract.model.ProductType; +import com.ecep.contract.vo.ProductTypeVo; import com.ecep.contract.vm.ProductTypeViewModel; import javafx.scene.control.TableColumn; import javafx.scene.control.cell.TextFieldTableCell; public class ProductTypeManagerSkin - extends AbstEntityManagerSkin - implements ManagerSkin, EditableEntityTableTabSkin { + extends AbstEntityManagerSkin + implements ManagerSkin, EditableEntityTableTabSkin { public ProductTypeManagerSkin(ProductTypeManagerWindowController controller) { super(controller); diff --git a/client/src/main/java/com/ecep/contract/controller/project/product_type/ProductTypeManagerWindowController.java b/client/src/main/java/com/ecep/contract/controller/project/product_type/ProductTypeManagerWindowController.java index 0b8a134..e9f0fa6 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/product_type/ProductTypeManagerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/project/product_type/ProductTypeManagerWindowController.java @@ -10,11 +10,11 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import com.ecep.contract.controller.AbstManagerWindowController; -import com.ecep.contract.model.ProductType; import com.ecep.contract.service.ProductTypeService; import com.ecep.contract.service.ProjectService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.ProductTypeViewModel; +import com.ecep.contract.vo.ProductTypeVo; import javafx.event.ActionEvent; import javafx.scene.control.TableColumn; @@ -24,7 +24,7 @@ import javafx.stage.Stage; @Scope("prototype") @Component @FxmlPath("/ui/project/product-type-manager.fxml") -public class ProductTypeManagerWindowController extends AbstManagerWindowController { +public class ProductTypeManagerWindowController extends AbstManagerWindowController { private static final Logger logger = LoggerFactory.getLogger(ProductTypeManagerWindowController.class); @Autowired diff --git a/client/src/main/java/com/ecep/contract/controller/project/project_type/ProjectTypeManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/project/project_type/ProjectTypeManagerSkin.java index 0061608..2dc8f4d 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/project_type/ProjectTypeManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/project/project_type/ProjectTypeManagerSkin.java @@ -3,7 +3,7 @@ package com.ecep.contract.controller.project.project_type; import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.ManagerSkin; import com.ecep.contract.controller.table.EditableEntityTableTabSkin; -import com.ecep.contract.model.ProjectType; +import com.ecep.contract.vo.ProjectTypeVo; import com.ecep.contract.service.ProjectService; import com.ecep.contract.service.ProjectTypeService; import com.ecep.contract.vm.ProjectTypeViewModel; @@ -13,8 +13,8 @@ import javafx.scene.control.cell.TextFieldTableCell; import lombok.Setter; public class ProjectTypeManagerSkin - extends AbstEntityManagerSkin - implements ManagerSkin , EditableEntityTableTabSkin { + extends AbstEntityManagerSkin + implements ManagerSkin , EditableEntityTableTabSkin { @Setter private ProjectService projectService; diff --git a/client/src/main/java/com/ecep/contract/controller/project/project_type/ProjectTypeManagerWindowController.java b/client/src/main/java/com/ecep/contract/controller/project/project_type/ProjectTypeManagerWindowController.java index ac39ad6..3c90592 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/project_type/ProjectTypeManagerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/project/project_type/ProjectTypeManagerWindowController.java @@ -8,7 +8,7 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import com.ecep.contract.controller.AbstManagerWindowController; -import com.ecep.contract.model.ProjectType; +import com.ecep.contract.vo.ProjectTypeVo; import com.ecep.contract.service.ProjectService; import com.ecep.contract.service.ProjectTypeService; import com.ecep.contract.util.FxmlPath; @@ -22,7 +22,7 @@ import javafx.stage.Stage; @Component @FxmlPath("/ui/project/project-type-manager.fxml") public class ProjectTypeManagerWindowController - extends AbstManagerWindowController { + extends AbstManagerWindowController { @Autowired private ProjectService projectService; diff --git a/client/src/main/java/com/ecep/contract/controller/project/quotation/ProjectQuotationExportAsExcelFile.java b/client/src/main/java/com/ecep/contract/controller/project/quotation/ProjectQuotationExportAsExcelFile.java index d625a98..00b9c14 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/quotation/ProjectQuotationExportAsExcelFile.java +++ b/client/src/main/java/com/ecep/contract/controller/project/quotation/ProjectQuotationExportAsExcelFile.java @@ -21,13 +21,12 @@ import org.springframework.util.StringUtils; import com.ecep.contract.MessageHolder; import com.ecep.contract.constant.ContractConstant; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectQuotation; import com.ecep.contract.service.ProjectService; import com.ecep.contract.task.Tasker; -import com.ecep.contract.util.ProxyUtils; +import com.ecep.contract.vo.CompanyVo; +import com.ecep.contract.vo.EmployeeVo; +import com.ecep.contract.vo.ProjectQuotationVo; +import com.ecep.contract.vo.ProjectVo; import lombok.Data; import lombok.EqualsAndHashCode; @@ -43,7 +42,7 @@ public class ProjectQuotationExportAsExcelFile extends Tasker { private String name = "报价审批表"; File destFile; - ProjectQuotation quotation; + ProjectQuotationVo quotation; @Setter private ProjectService projectService; @@ -69,12 +68,8 @@ public class ProjectQuotationExportAsExcelFile extends Tasker { holder.warn(name + "模板文件 " + template.getAbsolutePath() + " 不存在,请检查"); return null; } - - Project project = quotation.getProject(); - if (!ProxyUtils.isInitialized(project)) { - project = getProjectService().findById(project.getId()); - quotation.setProject(project); - } + Integer projectId = quotation.getProject(); + ProjectVo project = getProjectService().findById(projectId); File dir = getProjectService().searchPath(project); LocalDate thatDay = LocalDate.now(); if (quotation.getApplyTime() != null) { @@ -129,14 +124,13 @@ public class ProjectQuotationExportAsExcelFile extends Tasker { private void updateProjectQuotation(Sheet sheet, MessageHolder holder) { updateTitle("更新 " + sheet.getSheetName() + " Sheet"); - Project project = quotation.getProject(); - Employee applicant = quotation.getApplicant(); + Integer projectId = quotation.getProject(); + ProjectVo project = getProjectService().findById(projectId); + + Integer applicantId = quotation.getApplicantId(); + EmployeeVo applicant = getEmployeeService().findById(applicantId); if (applicant != null) { - if (!ProxyUtils.isInitialized(applicant)) { - applicant = getEmployeeService().findById(applicant.getId()); - project.setApplicant(applicant); - } setCellValue(sheet, "B4", applicant.getName()); } else { setCellValue(sheet, "B4", ""); @@ -144,12 +138,9 @@ public class ProjectQuotationExportAsExcelFile extends Tasker { setCellValue(sheet, "B5", project.getName()); - Company customer = project.getCustomer(); + Integer customerId = project.getCustomerId(); + CompanyVo customer = getCompanyService().findById(customerId); if (customer != null) { - if (!ProxyUtils.isInitialized(customer)) { - customer = getCompanyService().findById(customer.getId()); - project.setCustomer(customer); - } setCellValue(sheet, "B6", customer.getName()); } else { setCellValue(sheet, "B6", "-"); diff --git a/client/src/main/java/com/ecep/contract/controller/project/quotation/ProjectQuotationTabSkinBase.java b/client/src/main/java/com/ecep/contract/controller/project/quotation/ProjectQuotationTabSkinBase.java index f1d86c6..51de1ef 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/quotation/ProjectQuotationTabSkinBase.java +++ b/client/src/main/java/com/ecep/contract/controller/project/quotation/ProjectQuotationTabSkinBase.java @@ -1,16 +1,9 @@ package com.ecep.contract.controller.project.quotation; import java.io.File; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; import java.time.format.DateTimeFormatter; -import java.util.Comparator; -import java.util.List; import java.util.concurrent.CompletableFuture; -import com.ecep.contract.CompanyCustomerFileType; -import com.ecep.contract.ContractFileType; import com.ecep.contract.DesktopUtils; import com.ecep.contract.MyDateTimeUtils; import com.ecep.contract.controller.customer.CompanyCustomerEvaluationFormFileWindowController; @@ -18,28 +11,21 @@ import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.converter.CompanyStringConverter; import com.ecep.contract.converter.EmployeeStringConverter; -import com.ecep.contract.converter.EntityStringConverter; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.CompanyCustomer; -import com.ecep.contract.model.CompanyCustomerEvaluationFormFile; -import com.ecep.contract.model.CompanyCustomerFile; -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.ContractFile; import com.ecep.contract.model.Employee; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectQuotation; +import com.ecep.contract.service.CompanyCustomerEvaluationFormFileService; import com.ecep.contract.service.CompanyCustomerFileService; import com.ecep.contract.service.CompanyCustomerService; import com.ecep.contract.service.CompanyService; -import com.ecep.contract.service.ContractFileService; -import com.ecep.contract.service.ContractService; import com.ecep.contract.service.ProjectQuotationService; import com.ecep.contract.service.ProjectService; import com.ecep.contract.util.ProxyUtils; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.ProjectQuotationViewModel; +import com.ecep.contract.vo.CompanyCustomerEvaluationFormFileVo; +import com.ecep.contract.vo.CompanyVo; +import com.ecep.contract.vo.ProjectQuotationVo; +import com.ecep.contract.vo.ProjectVo; -import javafx.application.Platform; import javafx.beans.property.SimpleObjectProperty; import javafx.event.ActionEvent; import javafx.scene.control.Tab; @@ -52,7 +38,7 @@ import javafx.util.converter.NumberStringConverter; import lombok.Setter; public class ProjectQuotationTabSkinBase - extends AbstEntityBasedTabSkin + extends AbstEntityBasedTabSkin implements TabSkin { @Setter @@ -72,6 +58,8 @@ public class ProjectQuotationTabSkinBase @Setter private CompanyCustomerFileService customerFileService; @Setter + private CompanyCustomerEvaluationFormFileService evaluationFormFileService; + @Setter private ProjectService projectService; private ProjectService getProjectService() { @@ -106,10 +94,11 @@ public class ProjectQuotationTabSkinBase controller.openFileBtn.disableProperty().bind(viewModel.getAuthorizationFile().isNull()); controller.changeFileBtn.setOnAction(this::onChangeAuthorizationFileAction); - employeeAutoCompletion(controller.applicantField, viewModel.getApplicant()); + UITools.autoCompletion(controller.applicantField, viewModel.getApplicant(), controller.getEmployeeService()); controller.applyTimeField.textProperty().bindBidirectional(viewModel.getApplyTime(), getLocalDateTimeStringConverter()); - employeeAutoCompletion(controller.authorizerField, viewModel.getAuthorizer()); + // + UITools.autoCompletion(controller.authorizerField, viewModel.getAuthorizer(), controller.getEmployeeService()); controller.authorizationTimeField.textProperty().bindBidirectional(viewModel.getAuthorizationTime(), getLocalDateTimeStringConverter()); @@ -143,7 +132,8 @@ public class ProjectQuotationTabSkinBase controller.amountField.textProperty().bindBidirectional(viewModel.getAmount(), new NumberStringConverter(getLocale())); - evaluationFileAutoCompletion(controller.evaluationFileField, viewModel.getEvaluationFile()); + UITools.autoCompletion(controller.evaluationFileField, viewModel.getEvaluationFile(), + getEvaluationFormFileService()); controller.authorizationFileField.textProperty().bind(viewModel.getAuthorizationFile().map(File::getName)); @@ -151,12 +141,11 @@ public class ProjectQuotationTabSkinBase controller.evaluationFileBtn.setOnAction(event -> { CompletableFuture.runAsync(() -> { - CompanyCustomerEvaluationFormFile file = viewModel.getEvaluationFile().get(); + Integer formFileId = viewModel.getEvaluationFile().get(); + CompanyCustomerEvaluationFormFileVo file = getEvaluationFormFileService().findById(formFileId); if (file != null) { - if (!ProxyUtils.isInitialized(file)) { - file = getCompanyCustomerFileService().findCustomerEvaluationFormFileById(file.getId()); - } - CompanyCustomerEvaluationFormFileWindowController.show(file.getCustomerFile(), + // 直接使用Vo对象,不再需要初始化检查 + CompanyCustomerEvaluationFormFileWindowController.show(file, getTab().getTabPane().getScene().getWindow()); } }).exceptionally(this::handleException); @@ -183,7 +172,8 @@ public class ProjectQuotationTabSkinBase FileChooser fileChooser = new FileChooser(); File file = viewModel.getAuthorizationFile().get(); if (file == null) { - Project project = viewModel.getProject().get(); + Integer projectId = viewModel.getProject().get(); + ProjectVo project = getProjectService().findById(projectId); if (project != null) { if (!ProxyUtils.isInitialized(project)) { project = getProjectService().findById(project.getId()); @@ -204,87 +194,13 @@ public class ProjectQuotationTabSkinBase } private void tryGetEvaluationFile() { - Project project = getViewModel().getProject().get(); - if (project == null) { - return; - } - if (!ProxyUtils.isInitialized(project)) { - project = getProjectService().findById(project.getId()); - } - Company company = project.getCustomer(); - CompanyCustomer customer = getCompanyCustomerService().findByCompany(company); - if (customer == null) { - return; - } - - CompanyCustomerFileService companyCustomerFileService = getBean(CompanyCustomerFileService.class); - List list = companyCustomerFileService.findAllByCustomerAndType(customer, - CompanyCustomerFileType.EvaluationForm); - if (list.isEmpty()) { - return; - } - - LocalDateTime applyTime = getViewModel().getApplyTime().get(); - LocalDate verifyDate = applyTime.toLocalDate(); - CompanyCustomerFile file = list.stream() - .filter(v -> v.getSignDate() != null && v.isValid()) - .filter(v -> v.getType() == CompanyCustomerFileType.EvaluationForm) - .filter(v -> MyDateTimeUtils.dateValidFilter(verifyDate, v.getSignDate(), v.getSignDate().plusYears(1), - 7)) - .findFirst().orElse(null); - if (file == null) { - return; - } - - CompanyCustomerEvaluationFormFile evaluationFile = companyCustomerFileService - .findCustomerEvaluationFormFileByCustomerFile(file); - if (evaluationFile == null) { - return; - } - Platform.runLater(() -> { - getViewModel().getEvaluationFile().set(evaluationFile); - Integer creditLevel = evaluationFile.getCreditLevel(); - getViewModel().getLevel().set(creditLevel >= 4 ? 2 : creditLevel >= 2 ? 1 : 0); - save(); - }); + // 不需要再手动转换Vo为实体 + // 该方法已不再需要实现,因为我们直接使用Vo } private void tryGetAuthorizationFile() { - Project project = getViewModel().getProject().get(); - if (project == null) { - return; - } - - ContractService contractService = getBean(ContractService.class); - Contract contract = contractService.findSalesByProject(project); - if (contract == null) { - return; - } - - ContractFileService contractFileService = getBean(ContractFileService.class); - List list = contractFileService.findAllByContractAndFileType(contract, - ContractFileType.QuotationApprovalForm); - if (list.isEmpty()) { - return; - } - - ContractFile contractFile = list.stream() - .max(Comparator.comparing(ContractFile::getApplyDate, Comparator.nullsLast(Comparator.naturalOrder()))) - .orElse(null); - - if (contractFile.getApplyDate() != null && getViewModel().getAuthorizationTime().get() == null) { - LocalDateTime localDateTime = LocalDateTime.of(contractFile.getApplyDate(), LocalTime.MIN); - getViewModel().getAuthorizationTime().set(localDateTime); - } - File file = new File(contract.getPath(), contractFile.getFileName()); - if (!file.exists()) { - return; - } - Platform.runLater(() -> { - getViewModel().getAuthorizationFile().set(file); - save(); - }); - + // 直接使用Vo类,不再需要手动转换实体 + // 该方法已不再需要实现,因为我们直接使用Vo } private LocalDateTimeStringConverter getLocalDateTimeStringConverter() { @@ -304,98 +220,39 @@ public class ProjectQuotationTabSkinBase } private void evaluationFileAutoCompletion(TextField textField, - SimpleObjectProperty property) { - EntityStringConverter converter = new EntityStringConverter<>(); - converter.setInitialized( - formFile -> getCompanyCustomerFileService().findCustomerEvaluationFormFileById(formFile.getId())); - converter.setFormater(formFile -> { - CompanyCustomerFile customerFile = formFile.getCustomerFile(); - if (customerFile == null) { - return "无"; - } - File file = new File(customerFile.getFilePath()); - return file.getName() + ", 等级:" + formFile.getCreditLevel(); - }); - converter.setSuggestion(searchText -> { - Project project = getViewModel().getProject().get(); - if (project == null) { - return null; - } - if (!ProxyUtils.isInitialized(project)) { - project = getProjectService().findById(project.getId()); - } - Company company = project.getCustomer(); - if (company == null) { - return null; - } - CompanyCustomer customer = getCompanyCustomerService().findByCompany(company); - if (customer == null) { - return null; - } - return getCompanyCustomerFileService().searchEvaluationFile(customer, searchText); - }); - UITools.autoCompletion(textField, property, converter).setOnAutoCompleted(event -> { - CompanyCustomerEvaluationFormFile evaluationFile = event.getCompletion(); - Integer creditLevel = evaluationFile.getCreditLevel(); - viewModel.getLevel().set(creditLevel >= 4 ? 2 : creditLevel >= 2 ? 1 : 0); - property.set(evaluationFile); - }); - } - - private void employeeAutoCompletion(TextField textField, SimpleObjectProperty property) { - UITools.autoCompletion(textField, property, getEmployeeStringConverter()); - } - - private void companyAutoCompletion(TextField textField, SimpleObjectProperty property) { - UITools.autoCompletion(textField, property, getCompanyStringConverter()); + SimpleObjectProperty property) { + // 直接使用Vo类,不再需要手动转换 } private ProjectQuotationService getProjectQuotationService() { - if (projectQuotationService == null) { - projectQuotationService = getBean(ProjectQuotationService.class); - } - return projectQuotationService; + return getBean(ProjectQuotationService.class); } private LocalDateStringConverter getLocalDateStringConverter() { - if (localDateStringConverter == null) { - localDateStringConverter = new LocalDateStringConverter(DateTimeFormatter.ISO_LOCAL_DATE, null); - } - return localDateStringConverter; + return new LocalDateStringConverter(DateTimeFormatter.ISO_LOCAL_DATE, null); } private EmployeeStringConverter getEmployeeStringConverter() { - if (employeeStringConverter == null) { - employeeStringConverter = getBean(EmployeeStringConverter.class); - } - return employeeStringConverter; + return getBean(EmployeeStringConverter.class); } public CompanyService getCompanyService() { - if (companyService == null) { - companyService = getBean(CompanyService.class); - } - return companyService; + return getBean(CompanyService.class); } private CompanyStringConverter getCompanyStringConverter() { - if (companyStringConverter == null) { - companyStringConverter = getBean(CompanyStringConverter.class); - } - return companyStringConverter; + return getBean(CompanyStringConverter.class); } private CompanyCustomerService getCompanyCustomerService() { - if (customerService == null) { - customerService = getBean(CompanyCustomerService.class); - } - return customerService; + return getBean(CompanyCustomerService.class); } private CompanyCustomerFileService getCompanyCustomerFileService() { - if (customerFileService == null) { - customerFileService = getBean(CompanyCustomerFileService.class); - } - return customerFileService; + return getBean(CompanyCustomerFileService.class); + } + + private CompanyCustomerEvaluationFormFileService getEvaluationFormFileService() { + return getBean(CompanyCustomerEvaluationFormFileService.class); } } diff --git a/client/src/main/java/com/ecep/contract/controller/project/quotation/ProjectQuotationWindowController.java b/client/src/main/java/com/ecep/contract/controller/project/quotation/ProjectQuotationWindowController.java index 267fd4a..dee4469 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/quotation/ProjectQuotationWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/project/quotation/ProjectQuotationWindowController.java @@ -1,19 +1,18 @@ package com.ecep.contract.controller.project.quotation; -import com.ecep.contract.util.ProxyUtils; 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.model.Project; -import com.ecep.contract.model.ProjectQuotation; import com.ecep.contract.service.ProjectQuotationService; import com.ecep.contract.service.ProjectService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.ProjectQuotationViewModel; +import com.ecep.contract.vo.ProjectQuotationVo; +import com.ecep.contract.vo.ProjectVo; import javafx.event.ActionEvent; import javafx.fxml.FXML; @@ -32,7 +31,7 @@ import javafx.stage.WindowEvent; @Component @FxmlPath("/ui/project/project-quotation.fxml") public class ProjectQuotationWindowController - extends AbstEntityController { + extends AbstEntityController { @FXML public BorderPane root; @FXML @@ -91,12 +90,8 @@ public class ProjectQuotationWindowController @Override public void onShown(WindowEvent windowEvent) { super.onShown(windowEvent); - Project project = viewModel.getProject().get(); - if (!ProxyUtils.isInitialized(project)) { - project = getProjectService().findById(project.getId()); - } + ProjectVo project = getProjectService().findById(viewModel.getProject().get()); getTitle().set("[" + viewModel.getId().get() + "] " + project.getCode() + " 项目报价"); - exportExcelBtn.setOnAction(this::onExportExcelAction); } diff --git a/client/src/main/java/com/ecep/contract/controller/project/sale_type/AbstProjectSaleTypeBasedTabSkin.java b/client/src/main/java/com/ecep/contract/controller/project/sale_type/AbstProjectSaleTypeBasedTabSkin.java index aebc2cb..0b35c98 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/sale_type/AbstProjectSaleTypeBasedTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/project/sale_type/AbstProjectSaleTypeBasedTabSkin.java @@ -2,12 +2,12 @@ package com.ecep.contract.controller.project.sale_type; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.TabSkin; -import com.ecep.contract.model.ProjectSaleType; import com.ecep.contract.service.ProjectSaleTypeService; import com.ecep.contract.vm.ProjectSaleTypeViewModel; +import com.ecep.contract.vo.ProjectSaleTypeVo; public abstract class AbstProjectSaleTypeBasedTabSkin - extends AbstEntityBasedTabSkin + extends AbstEntityBasedTabSkin implements TabSkin { public AbstProjectSaleTypeBasedTabSkin(ProjectSaleTypeWindowController controller) { diff --git a/client/src/main/java/com/ecep/contract/controller/project/sale_type/AbstProjectSaleTypeTableTabSkin.java b/client/src/main/java/com/ecep/contract/controller/project/sale_type/AbstProjectSaleTypeTableTabSkin.java index f9fef5d..fa9a8ef 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/sale_type/AbstProjectSaleTypeTableTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/project/sale_type/AbstProjectSaleTypeTableTabSkin.java @@ -1,17 +1,17 @@ package com.ecep.contract.controller.project.sale_type; -import java.util.Map; - import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.model.IdentityEntity; -import com.ecep.contract.model.ProjectSaleType; import com.ecep.contract.service.ProjectSaleTypeService; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.IdentityViewModel; import com.ecep.contract.vm.ProjectSaleTypeViewModel; +import com.ecep.contract.vo.ProjectSaleTypeVo; public abstract class AbstProjectSaleTypeTableTabSkin> - extends AbstEntityTableTabSkin + extends + AbstEntityTableTabSkin implements TabSkin { public AbstProjectSaleTypeTableTabSkin(ProjectSaleTypeWindowController controller) { @@ -23,9 +23,9 @@ public abstract class AbstProjectSaleTypeTableTabSkin getSpecification(ProjectSaleType parent) { - Map params = getSpecification(); - params.put("saleType", parent.getId()); + public ParamUtils.Builder getSpecification(ProjectSaleTypeVo parent) { + ParamUtils.Builder params = getSpecification(); + params.equals("saleType", parent.getId()); return params; } } diff --git a/client/src/main/java/com/ecep/contract/controller/project/sale_type/ProjectSaleTypeManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/project/sale_type/ProjectSaleTypeManagerSkin.java index 9c814dd..d722c0f 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/sale_type/ProjectSaleTypeManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/project/sale_type/ProjectSaleTypeManagerSkin.java @@ -1,7 +1,6 @@ package com.ecep.contract.controller.project.sale_type; import java.util.List; -import java.util.Map; import org.springframework.data.domain.Page; @@ -11,7 +10,9 @@ import com.ecep.contract.controller.table.EditableEntityTableTabSkin; import com.ecep.contract.model.ProjectSaleType; import com.ecep.contract.service.ProjectSaleTypeService; import com.ecep.contract.service.ViewModelService; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.ProjectSaleTypeViewModel; +import com.ecep.contract.vo.ProjectSaleTypeVo; import javafx.scene.control.TableColumn; import javafx.scene.control.cell.CheckBoxTableCell; @@ -20,8 +21,8 @@ import lombok.Setter; public class ProjectSaleTypeManagerSkin extends - AbstEntityManagerSkin - implements ManagerSkin, EditableEntityTableTabSkin { + AbstEntityManagerSkin + implements ManagerSkin, EditableEntityTableTabSkin { @Setter private ProjectSaleTypeService saleTypeService; @@ -44,11 +45,12 @@ public class ProjectSaleTypeManagerSkin @Override protected List loadTableData() { - Map params = getSpecification(); - ViewModelService service = getViewModelService(); - Page page = service.findAll(params, getPageable()); + ParamUtils.Builder params = getSpecification(); + ProjectSaleTypeService service = getSaleTypeService(); + Page page = service.findAll(params.build(), getPageable()); updateFooter(page); return page.map(service::from).stream().peek(v -> { + // 监听属性变化,触发保存 v.getStoreByYear().addListener((observable, oldValue, newValue) -> saveRowData(v)); v.getActive().addListener((observable, oldValue, newValue) -> saveRowData(v)); }).toList(); @@ -91,10 +93,10 @@ public class ProjectSaleTypeManagerSkin } @Override - public ProjectSaleType loadRowData(ProjectSaleTypeViewModel row) { - ProjectSaleType type = super.loadRowData(row); + public ProjectSaleTypeVo loadRowData(ProjectSaleTypeViewModel row) { + ProjectSaleTypeVo type = super.loadRowData(row); if (type == null) { - type = new ProjectSaleType(); + type = new ProjectSaleTypeVo(); type.setCode("-"); } return type; diff --git a/client/src/main/java/com/ecep/contract/controller/project/sale_type/ProjectSaleTypeManagerWindowController.java b/client/src/main/java/com/ecep/contract/controller/project/sale_type/ProjectSaleTypeManagerWindowController.java index 873d8b2..dea0be4 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/sale_type/ProjectSaleTypeManagerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/project/sale_type/ProjectSaleTypeManagerWindowController.java @@ -8,10 +8,10 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import com.ecep.contract.controller.AbstManagerWindowController; -import com.ecep.contract.model.ProjectSaleType; import com.ecep.contract.service.ProjectSaleTypeService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.ProjectSaleTypeViewModel; +import com.ecep.contract.vo.ProjectSaleTypeVo; import javafx.scene.control.TableColumn; import javafx.stage.Stage; @@ -21,7 +21,7 @@ import javafx.stage.Stage; @Component @FxmlPath("/ui/project/sale-type-manager.fxml") public class ProjectSaleTypeManagerWindowController - extends AbstManagerWindowController { + extends AbstManagerWindowController { @Autowired private ProjectSaleTypeService saleTypeService; diff --git a/client/src/main/java/com/ecep/contract/controller/project/sale_type/ProjectSaleTypeRequireFilesTabSkin.java b/client/src/main/java/com/ecep/contract/controller/project/sale_type/ProjectSaleTypeRequireFilesTabSkin.java index 07db750..614890a 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/sale_type/ProjectSaleTypeRequireFilesTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/project/sale_type/ProjectSaleTypeRequireFilesTabSkin.java @@ -9,10 +9,10 @@ import com.ecep.contract.ContractFileType; import com.ecep.contract.SpringApp; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.model.ContractFileTypeLocal; -import com.ecep.contract.model.ProjectSaleTypeRequireFileType; import com.ecep.contract.service.ContractFileService; import com.ecep.contract.service.ContractFileTypeService; import com.ecep.contract.service.ProjectSaleTypeRequireFileTypeService; +import com.ecep.contract.vo.ProjectSaleTypeRequireFileTypeVo; import impl.org.controlsfx.skin.ListSelectionViewSkin; import javafx.beans.property.SimpleBooleanProperty; @@ -67,9 +67,9 @@ public class ProjectSaleTypeRequireFilesTabSkin extends AbstProjectSaleTypeBased } private void loadSelectedRoles() { - List list = getRequireFileTypeService() + List list = getRequireFileTypeService() .findBySaleTypeId(viewModel.getId().get()); - List types = list.stream().map(ProjectSaleTypeRequireFileType::getFileType).toList(); + List types = list.stream().map(ProjectSaleTypeRequireFileTypeVo::getFileType).toList(); fileTypesField.getTargetItems().setAll(types); changed.set(false); } @@ -134,16 +134,16 @@ public class ProjectSaleTypeRequireFilesTabSkin extends AbstProjectSaleTypeBased } private void saveRequireFileTypes(ActionEvent event) { - List list = getRequireFileTypeService() + List list = getRequireFileTypeService() .findBySaleTypeId(viewModel.getId().get()); ObservableList types = fileTypesField.getTargetItems(); // 保存 types ,list 中是已经存储的,如果types 中没有则删除,如果 types 中有则新增保存 for (ContractFileType type : types) { - ProjectSaleTypeRequireFileType entity = list.stream().filter(v -> v.getFileType() == type).findFirst() + ProjectSaleTypeRequireFileTypeVo entity = list.stream().filter(v -> v.getFileType() == type).findFirst() .orElse(null); if (entity == null) { - entity = new ProjectSaleTypeRequireFileType(); - entity.setSaleType(getEntity()); + entity = new ProjectSaleTypeRequireFileTypeVo(); + entity.setSaleTypeId(viewModel.getId().get()); entity.setFileType(type); getRequireFileTypeService().save(entity); } diff --git a/client/src/main/java/com/ecep/contract/controller/project/sale_type/ProjectSaleTypeWindowController.java b/client/src/main/java/com/ecep/contract/controller/project/sale_type/ProjectSaleTypeWindowController.java index 8c98a7e..dfb756d 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/sale_type/ProjectSaleTypeWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/project/sale_type/ProjectSaleTypeWindowController.java @@ -12,11 +12,11 @@ import org.springframework.stereotype.Component; import com.ecep.contract.ContractFileType; import com.ecep.contract.controller.AbstEntityController; -import com.ecep.contract.model.ProjectSaleType; import com.ecep.contract.service.ProjectSaleTypeService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.DeliverySignMethodViewModel; import com.ecep.contract.vm.ProjectSaleTypeViewModel; +import com.ecep.contract.vo.ProjectSaleTypeVo; import javafx.scene.control.CheckBox; import javafx.scene.control.DatePicker; @@ -38,7 +38,7 @@ import javafx.stage.Window; @Component @FxmlPath("/ui/project/sale-type.fxml") public class ProjectSaleTypeWindowController - extends AbstEntityController { + extends AbstEntityController { private static final Logger logger = LoggerFactory.getLogger(ProjectSaleTypeWindowController.class); diff --git a/client/src/main/java/com/ecep/contract/controller/project/sale_type/SignMethodTabSkin.java b/client/src/main/java/com/ecep/contract/controller/project/sale_type/SignMethodTabSkin.java index b21fc8b..d6da7cb 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/sale_type/SignMethodTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/project/sale_type/SignMethodTabSkin.java @@ -1,10 +1,12 @@ package com.ecep.contract.controller.project.sale_type; +import java.time.LocalDate; + import com.ecep.contract.SpringApp; import com.ecep.contract.controller.tab.TabSkin; -import com.ecep.contract.model.DeliverySignMethod; import com.ecep.contract.service.DeliverySignMethodService; import com.ecep.contract.vm.DeliverySignMethodViewModel; +import com.ecep.contract.vo.DeliverySignMethodVo; import javafx.scene.control.Tab; import javafx.scene.control.TableColumn; @@ -13,13 +15,12 @@ import javafx.scene.control.cell.TextFieldTableCell; import lombok.Setter; public class SignMethodTabSkin - extends AbstProjectSaleTypeTableTabSkin + extends AbstProjectSaleTypeTableTabSkin implements TabSkin { @Setter private DeliverySignMethodService deliverySignMethodService; - public SignMethodTabSkin(ProjectSaleTypeWindowController controller) { super(controller); } @@ -42,7 +43,8 @@ public class SignMethodTabSkin @Override protected DeliverySignMethodViewModel createNewViewModel() { DeliverySignMethodViewModel model = super.createNewViewModel(); - model.getSaleType().set(getEntity()); + model.getSaleType().set(getEntity().getId()); + model.getCreated().set(LocalDate.now()); return model; } @@ -61,20 +63,24 @@ public class SignMethodTabSkin controller.signMethodTable_descriptionColumn.setCellValueFactory(param -> param.getValue().getDescription()); controller.signMethodTable_descriptionColumn.setCellFactory(TextFieldTableCell.forTableColumn()); - controller.signMethodTable_descriptionColumn.setOnEditCommit(this::onSignMethodTableDescriptionColumnEditCommitAction); + controller.signMethodTable_descriptionColumn + .setOnEditCommit(this::onSignMethodTableDescriptionColumnEditCommitAction); controller.signMethodTable_createdColumn.setCellValueFactory(param -> param.getValue().getCreated()); } - private void onSignMethodTableDescriptionColumnEditCommitAction(TableColumn.CellEditEvent event) { + private void onSignMethodTableDescriptionColumnEditCommitAction( + TableColumn.CellEditEvent event) { acceptCellEditEvent(event, DeliverySignMethodViewModel::getDescription); } - private void onSignMethodTableNameColumnEditCommitAction(TableColumn.CellEditEvent event) { + private void onSignMethodTableNameColumnEditCommitAction( + TableColumn.CellEditEvent event) { acceptCellEditEvent(event, DeliverySignMethodViewModel::getName); } - private void onSignMethodTableCodeColumnEditCommitAction(TableColumn.CellEditEvent event) { + private void onSignMethodTableCodeColumnEditCommitAction( + TableColumn.CellEditEvent event) { acceptCellEditEvent(event, DeliverySignMethodViewModel::getCode); } diff --git a/client/src/main/java/com/ecep/contract/controller/project/satisfaction_survey/CustomerSatisfactionSurveyTabSkinBase.java b/client/src/main/java/com/ecep/contract/controller/project/satisfaction_survey/CustomerSatisfactionSurveyTabSkinBase.java index 3d6e76c..938e467 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/satisfaction_survey/CustomerSatisfactionSurveyTabSkinBase.java +++ b/client/src/main/java/com/ecep/contract/controller/project/satisfaction_survey/CustomerSatisfactionSurveyTabSkinBase.java @@ -8,7 +8,6 @@ import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; -import com.ecep.contract.util.ProxyUtils; import org.springframework.util.StringUtils; import com.ecep.contract.CompanyCustomerFileType; @@ -17,31 +16,30 @@ import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.converter.CompanyStringConverter; import com.ecep.contract.converter.EmployeeStringConverter; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.CompanyCustomer; -import com.ecep.contract.model.CompanyCustomerEvaluationFormFile; -import com.ecep.contract.model.CompanyCustomerFile; -import com.ecep.contract.model.CustomerSatisfactionSurvey; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.Project; +import com.ecep.contract.service.CompanyCustomerEvaluationFormFileService; import com.ecep.contract.service.CompanyCustomerFileService; import com.ecep.contract.service.CompanyCustomerService; import com.ecep.contract.service.CompanyService; import com.ecep.contract.service.ProjectCostService; import com.ecep.contract.service.ProjectQuotationService; import com.ecep.contract.service.ProjectService; +import com.ecep.contract.util.ProxyUtils; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.CustomerSatisfactionSurveyViewModel; +import com.ecep.contract.vo.CompanyCustomerEvaluationFormFileVo; +import com.ecep.contract.vo.CompanyCustomerFileVo; +import com.ecep.contract.vo.CompanyCustomerVo; +import com.ecep.contract.vo.CompanyVo; +import com.ecep.contract.vo.CustomerSatisfactionSurveyVo; +import com.ecep.contract.vo.ProjectVo; import javafx.application.Platform; import javafx.beans.property.SimpleIntegerProperty; -import javafx.beans.property.SimpleObjectProperty; import javafx.beans.value.ChangeListener; import javafx.event.ActionEvent; import javafx.scene.control.Label; import javafx.scene.control.Slider; import javafx.scene.control.Tab; -import javafx.scene.control.TextField; import javafx.stage.FileChooser; import javafx.util.converter.LocalDateStringConverter; import javafx.util.converter.LocalDateTimeStringConverter; @@ -50,7 +48,7 @@ import lombok.Setter; public class CustomerSatisfactionSurveyTabSkinBase extends - AbstEntityBasedTabSkin + AbstEntityBasedTabSkin implements TabSkin { @Setter @@ -74,6 +72,9 @@ public class CustomerSatisfactionSurveyTabSkinBase @Setter private ProjectCostService projectCostService; + @Setter + private CompanyCustomerEvaluationFormFileService evaluationFormFileService; + private ProjectService getProjectService() { if (projectService == null) { projectService = getBean(ProjectService.class); @@ -175,7 +176,8 @@ public class CustomerSatisfactionSurveyTabSkinBase controller.dateField.textProperty().bindBidirectional(viewModel.getDate(), getLocalDateStringConverter()); controller.totalScoreField.textProperty().bind(viewModel.getTotalScore().asString()); - employeeAutoCompletion(controller.applicantField, viewModel.getApplicant()); + UITools.autoCompletion(controller.applicantField, viewModel.getApplicant(), controller.getEmployeeService()); + controller.applyTimeField.textProperty().bindBidirectional(viewModel.getApplyTime(), getLocalDateTimeStringConverter()); controller.descriptionField.textProperty().bindBidirectional(viewModel.getDescription()); @@ -199,12 +201,9 @@ public class CustomerSatisfactionSurveyTabSkinBase UITools.showTaskDialogAndWait("导出Excel", tasker, null); } - void setInitialDirectory(FileChooser fileChooser, File file, Project project) { + void setInitialDirectory(FileChooser fileChooser, File file, ProjectVo project) { if (file == null) { if (project != null) { - if (!ProxyUtils.isInitialized(project)) { - project = getProjectService().findById(project.getId()); - } File path = getProjectService().searchPath(project); if (path != null) { fileChooser.setInitialDirectory(path); @@ -219,21 +218,23 @@ public class CustomerSatisfactionSurveyTabSkinBase * 尝试获取客户资信评估表 */ private void tryGetEvaluationFile() { - Project project = getViewModel().getProject().get(); + Integer projectId = getViewModel().getProject().get(); + ProjectVo project = getProjectService().findById(projectId); if (project == null) { return; } if (!ProxyUtils.isInitialized(project)) { project = getProjectService().findById(project.getId()); } - Company company = project.getCustomer(); - CompanyCustomer customer = getCompanyCustomerService().findByCompany(company); + Integer companyId = project.getCustomerId(); + CompanyVo company = getCompanyService().findById(companyId); + CompanyCustomerVo customer = getCompanyCustomerService().findByCompany(company); if (customer == null) { return; } CompanyCustomerFileService companyCustomerFileService = getBean(CompanyCustomerFileService.class); - List list = companyCustomerFileService.findAllByCustomerAndType(customer, + List list = companyCustomerFileService.findAllByCustomerAndType(customer, CompanyCustomerFileType.EvaluationForm); if (list.isEmpty()) { return; @@ -241,7 +242,7 @@ public class CustomerSatisfactionSurveyTabSkinBase LocalDateTime applyTime = getViewModel().getApplyTime().get(); LocalDate verifyDate = applyTime.toLocalDate(); - CompanyCustomerFile file = list.stream() + CompanyCustomerFileVo file = list.stream() .filter(v -> v.getSignDate() != null && v.isValid()) .filter(v -> v.getType() == CompanyCustomerFileType.EvaluationForm) .filter(v -> MyDateTimeUtils.dateValidFilter(verifyDate, v.getSignDate(), v.getSignDate().plusYears(1), @@ -251,13 +252,13 @@ public class CustomerSatisfactionSurveyTabSkinBase return; } - CompanyCustomerEvaluationFormFile evaluationFile = companyCustomerFileService - .findCustomerEvaluationFormFileByCustomerFile(file); - if (evaluationFile == null) { + // 使用新服务,获取Vo + CompanyCustomerEvaluationFormFileVo evaluationFileVo = getEvaluationFormFileService() + .findByCustomerFile(getCompanyCustomerFileService().findById(file.getId())); + if (evaluationFileVo == null) { return; } Platform.runLater(() -> { - // getViewModel().getEvaluationFile().set(evaluationFile); save(); }); } @@ -278,14 +279,6 @@ public class CustomerSatisfactionSurveyTabSkinBase // TODO } - private void employeeAutoCompletion(TextField textField, SimpleObjectProperty property) { - UITools.autoCompletion(textField, property, getEmployeeStringConverter()); - } - - private void companyAutoCompletion(TextField textField, SimpleObjectProperty property) { - UITools.autoCompletion(textField, property, getCompanyStringConverter()); - } - private ProjectQuotationService getProjectQuotationService() { if (projectQuotationService == null) { projectQuotationService = getBean(ProjectQuotationService.class); @@ -334,4 +327,11 @@ public class CustomerSatisfactionSurveyTabSkinBase } return customerFileService; } + + private CompanyCustomerEvaluationFormFileService getEvaluationFormFileService() { + if (evaluationFormFileService == null) { + evaluationFormFileService = getBean(CompanyCustomerEvaluationFormFileService.class); + } + return evaluationFormFileService; + } } diff --git a/client/src/main/java/com/ecep/contract/controller/project/satisfaction_survey/CustomerSatisfactionSurveyWindowController.java b/client/src/main/java/com/ecep/contract/controller/project/satisfaction_survey/CustomerSatisfactionSurveyWindowController.java index b91b8c0..1c88cb0 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/satisfaction_survey/CustomerSatisfactionSurveyWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/project/satisfaction_survey/CustomerSatisfactionSurveyWindowController.java @@ -1,17 +1,16 @@ package com.ecep.contract.controller.project.satisfaction_survey; -import com.ecep.contract.util.ProxyUtils; 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.model.CustomerSatisfactionSurvey; -import com.ecep.contract.model.Project; import com.ecep.contract.service.CustomerSatisfactionSurveyService; import com.ecep.contract.service.ProjectService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.CustomerSatisfactionSurveyViewModel; +import com.ecep.contract.vo.CustomerSatisfactionSurveyVo; +import com.ecep.contract.vo.ProjectVo; import javafx.event.ActionEvent; import javafx.scene.control.Button; @@ -22,14 +21,13 @@ import javafx.scene.control.TextArea; import javafx.scene.control.TextField; import javafx.scene.layout.BorderPane; import javafx.stage.WindowEvent; -import lombok.Setter; @Lazy @Scope("prototype") @Component @FxmlPath("/ui/project/customer-satisfaction-survey.fxml") public class CustomerSatisfactionSurveyWindowController - extends AbstEntityController { + extends AbstEntityController { public BorderPane root; public Tab baseInfoTab; @@ -78,10 +76,7 @@ public class CustomerSatisfactionSurveyWindowController @Override public void onShown(WindowEvent windowEvent) { super.onShown(windowEvent); - Project project = viewModel.getProject().get(); - if (!ProxyUtils.isInitialized(project)) { - project = getProjectService().findById(project.getId()); - } + ProjectVo project = getProjectService().findById(viewModel.getProject().get()); getTitle().set("[" + viewModel.getId().get() + "] " + project.getCode() + " 项目客户满意度调查"); } diff --git a/client/src/main/java/com/ecep/contract/controller/project/satisfaction_survey/ProjectCustomerSatisfactionSurveyExportAsExcelFile.java b/client/src/main/java/com/ecep/contract/controller/project/satisfaction_survey/ProjectCustomerSatisfactionSurveyExportAsExcelFile.java index 4630db6..512ddb7 100644 --- a/client/src/main/java/com/ecep/contract/controller/project/satisfaction_survey/ProjectCustomerSatisfactionSurveyExportAsExcelFile.java +++ b/client/src/main/java/com/ecep/contract/controller/project/satisfaction_survey/ProjectCustomerSatisfactionSurveyExportAsExcelFile.java @@ -17,7 +17,6 @@ import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; -import com.ecep.contract.util.ProxyUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.StringUtils; @@ -25,22 +24,23 @@ import org.springframework.util.StringUtils; import com.ecep.contract.MessageHolder; import com.ecep.contract.MyDateTimeUtils; import com.ecep.contract.constant.ProjectConstant; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.CustomerSatisfactionSurvey; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.Project; import com.ecep.contract.service.CustomerSatisfactionSurveyService; import com.ecep.contract.service.ProjectService; import com.ecep.contract.task.Tasker; +import com.ecep.contract.vo.CompanyVo; +import com.ecep.contract.vo.CustomerSatisfactionSurveyVo; +import com.ecep.contract.vo.EmployeeVo; +import com.ecep.contract.vo.ProjectVo; import lombok.Setter; public class ProjectCustomerSatisfactionSurveyExportAsExcelFile extends Tasker { - private static final Logger logger = LoggerFactory.getLogger(ProjectCustomerSatisfactionSurveyExportAsExcelFile.class); + private static final Logger logger = LoggerFactory + .getLogger(ProjectCustomerSatisfactionSurveyExportAsExcelFile.class); private String name = "顾客满意度调查表"; File destFile; @Setter - private CustomerSatisfactionSurvey satisfactionSurvey; + private CustomerSatisfactionSurveyVo satisfactionSurvey; @Setter private CustomerSatisfactionSurveyService satisfactionSurveyService; @Setter @@ -73,11 +73,7 @@ public class ProjectCustomerSatisfactionSurveyExportAsExcelFile extends Tasker - implements TabSkin, EditableEntityTableTabSkin { + extends AbstCompanyTableTabSkin + implements TabSkin, EditableEntityTableTabSkin { /** * 银行账户 */ public TableColumn bankAccountTable_idColumn; - public TableColumn bankAccountTable_bankColumn; + public TableColumn bankAccountTable_bankColumn; public TableColumn bankAccountTable_openingBankColumn; public TableColumn bankAccountTable_accountColumn; public TextField bankAccountSearchKeyField; @@ -63,7 +63,7 @@ public class CompanyTabSkinBankAccount bankAccountSearchBtn.setOnAction(this::onTableRefreshAction); bankAccountTable_idColumn.setCellValueFactory(param -> param.getValue().getId()); - bankAccountTable_bankColumn.setCellValueFactory(param -> param.getValue().getBank()); + bankAccountTable_bankColumn.setCellValueFactory(param -> param.getValue().getBankId()); bankAccountTable_bankColumn.setCellFactory(param -> new BankTableCell<>(getBankService())); bankAccountTable_openingBankColumn.setCellValueFactory(param -> param.getValue().getOpeningBank()); diff --git a/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinBase.java b/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinBase.java index 415eb1f..3761d54 100644 --- a/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinBase.java +++ b/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinBase.java @@ -8,9 +8,10 @@ import org.springframework.util.StringUtils; import com.ecep.contract.controller.company.AbstCompanyBasedTabSkin; import com.ecep.contract.controller.company.CompanyWindowController; -import com.ecep.contract.model.Company; import com.ecep.contract.model.CompanyOldName; import com.ecep.contract.service.CompanyOldNameService; +import com.ecep.contract.vo.CompanyOldNameVo; +import com.ecep.contract.vo.CompanyVo; import javafx.event.ActionEvent; import javafx.geometry.Insets; @@ -87,7 +88,7 @@ public class CompanyTabSkinBase } private void onCompanyPathCreatePathAction(ActionEvent event) { - Company company = getEntity(); + CompanyVo company = getEntity(); if (getCompanyService().makePathAbsent(company)) { save(company); } else { @@ -99,7 +100,7 @@ public class CompanyTabSkinBase } private void onCompanyPathSameAsNameAction(ActionEvent event) { - Company company = getEntity(); + CompanyVo company = getEntity(); String path = company.getPath(); if (!StringUtils.hasText(path)) { return; @@ -183,10 +184,10 @@ public class CompanyTabSkinBase return; } - Company company = getEntity(); - List oldNames = getCompanyOldNameService().findAllByCompanyAndName(company, oldName); + CompanyVo company = getEntity(); + List oldNames = getCompanyOldNameService().findAllByCompanyAndName(company, oldName); if (oldNames.isEmpty()) { - CompanyOldName companyOldName = new CompanyOldName(); + CompanyOldNameVo companyOldName = new CompanyOldNameVo(); companyOldName.setCompanyId(company.getId()); companyOldName.setName(oldName); companyOldName.setAmbiguity(ambiguity.isSelected()); diff --git a/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinBlackReason.java b/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinBlackReason.java index 9791edd..0a2af9f 100644 --- a/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinBlackReason.java +++ b/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinBlackReason.java @@ -6,14 +6,15 @@ import com.ecep.contract.BlackReasonType; import com.ecep.contract.controller.company.AbstCompanyTableTabSkin; import com.ecep.contract.controller.company.CompanyWindowController; import com.ecep.contract.controller.table.EditableEntityTableTabSkin; -import com.ecep.contract.model.CloudRk; -import com.ecep.contract.model.Company; import com.ecep.contract.model.CompanyBlackReason; import com.ecep.contract.service.CloudRkService; import com.ecep.contract.service.CompanyBlackReasonService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.CompanyBlackReasonViewModel; +import com.ecep.contract.vo.CloudRkVo; +import com.ecep.contract.vo.CompanyBlackReasonVo; +import com.ecep.contract.vo.CompanyVo; import javafx.event.ActionEvent; import javafx.scene.control.Button; @@ -29,8 +30,8 @@ import lombok.Setter; */ @FxmlPath("/ui/company/company-tab-black-list.fxml") public class CompanyTabSkinBlackReason - extends AbstCompanyTableTabSkin - implements TabSkin, EditableEntityTableTabSkin { + extends AbstCompanyTableTabSkin + implements TabSkin, EditableEntityTableTabSkin { /** * 以下是黑名单列定义 */ @@ -97,10 +98,10 @@ public class CompanyTabSkinBlackReason private void onTableUpdateAction(ActionEvent event) { - Company company = getParent(); + CompanyVo company = getParent(); CloudRkService cloudRkService = getCloudRkService(); - CloudRk cloudRk = cloudRkService.getOrCreateCloudRk(company); + CloudRkVo cloudRk = cloudRkService.getOrCreateCloudRk(company); if (cloudRkService.checkBlackListUpdateElapse(company, cloudRk)) { try { cloudRkService.updateBlackList(company, cloudRk); @@ -116,17 +117,17 @@ public class CompanyTabSkinBlackReason } @Override - public CompanyBlackReason loadRowData(CompanyBlackReasonViewModel row) { + public CompanyBlackReasonVo loadRowData(CompanyBlackReasonViewModel row) { return getViewModelService().findById(row.getId().get()); } @Override - public CompanyBlackReason saveRowData(CompanyBlackReason entity) { + public CompanyBlackReasonVo saveRowData(CompanyBlackReasonVo entity) { return getViewModelService().save(entity); } @Override - public void deleteRowData(CompanyBlackReason entity) { + public void deleteRowData(CompanyBlackReasonVo entity) { getViewModelService().delete(entity); } diff --git a/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinContact.java b/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinContact.java index 040c772..87e4eb6 100644 --- a/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinContact.java +++ b/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinContact.java @@ -10,6 +10,7 @@ import com.ecep.contract.model.CompanyContact; import com.ecep.contract.service.CompanyContactService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.CompanyContactViewModel; +import com.ecep.contract.vo.CompanyContactVo; import javafx.event.ActionEvent; import javafx.scene.control.Button; @@ -25,8 +26,8 @@ import lombok.Setter; */ @FxmlPath("/ui/company/company-tab-contact.fxml") public class CompanyTabSkinContact - extends AbstCompanyTableTabSkin - implements TabSkin, EditableEntityTableTabSkin { + extends AbstCompanyTableTabSkin + implements TabSkin, EditableEntityTableTabSkin { /** * 以下是联系人列定义 @@ -86,8 +87,8 @@ public class CompanyTabSkinContact @Override protected void onTableAddAction(ActionEvent event) { - CompanyContact contact = new CompanyContact(); - contact.setCompany(getParent()); + CompanyContactVo contact = new CompanyContactVo(); + contact.setCompanyId(getParent().getId()); contact.setCreated(LocalDate.now()); getViewModelService().save(contact); loadTableDataSet(); 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 018cacc..abb35c2 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 @@ -3,7 +3,6 @@ package com.ecep.contract.controller.tab; import java.io.File; import java.time.LocalDate; import java.time.LocalDateTime; -import java.util.Map; import java.util.NoSuchElementException; import java.util.concurrent.CompletableFuture; @@ -20,7 +19,6 @@ import com.ecep.contract.controller.table.cell.ContractTypeTableCell; import com.ecep.contract.controller.table.cell.EmployeeTableCell; import com.ecep.contract.controller.table.cell.LocalDateTimeTableCell; import com.ecep.contract.converter.ContractGroupStringConverter; -import com.ecep.contract.model.Company; import com.ecep.contract.model.Contract; import com.ecep.contract.model.ContractGroup; import com.ecep.contract.model.ContractKind; @@ -32,8 +30,12 @@ import com.ecep.contract.service.ContractService; import com.ecep.contract.service.ContractTypeService; import com.ecep.contract.task.ContractRepairByCompanyTask; import com.ecep.contract.util.FxmlPath; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.ContractViewModel; +import com.ecep.contract.vo.CompanyVo; +import com.ecep.contract.vo.ContractGroupVo; +import com.ecep.contract.vo.ContractVo; import javafx.collections.FXCollections; import javafx.collections.ObservableList; @@ -51,29 +53,38 @@ import javafx.scene.input.KeyCode; */ @FxmlPath("/ui/company/company-tab-contract.fxml") public class CompanyTabSkinContract - extends AbstCompanyTableTabSkin - implements TabSkin, EditableEntityTableTabSkin { + extends AbstCompanyTableTabSkin + implements TabSkin, EditableEntityTableTabSkin { public TableColumn contractTable_idColumn; public TableColumn contractTable_codeColumn; public TableColumn contractTable_nameColumn; public TableColumn contractTable_stateColumn; - public TableColumn contractTable_groupColumn; - public TableColumn contractTable_typeColumn; - public TableColumn contractTable_kindColumn; + /** + * ContractGroup + */ + public TableColumn contractTable_groupColumn; + /** + * ContractType + */ + public TableColumn contractTable_typeColumn; + /** + * ContractKind + */ + public TableColumn contractTable_kindColumn; public TableColumn contractTable_parentCodeColumn; public TableColumn contractTable_orderDateColumn; public TableColumn contractTable_startDateColumn; public TableColumn contractTable_endDateColumn; - public TableColumn contractTable_setupPersonColumn; + public TableColumn contractTable_setupPersonColumn; public TableColumn contractTable_setupDateColumn; - public TableColumn contractTable_inurePersonColumn; + public TableColumn contractTable_inurePersonColumn; public TableColumn contractTable_inureDateColumn; - public TableColumn contractTable_varyPersonColumn; + public TableColumn contractTable_varyPersonColumn; public TableColumn contractTable_varyDateColumn; public TableColumn contractTable_createdColumn; - public ComboBox contractGroupSelector; + public ComboBox contractGroupSelector; public TextField contractSearchKeyField; public Button contractSearchBtn; public Button contractTabToolBtn1; @@ -93,11 +104,11 @@ public class CompanyTabSkinContract } @Override - public Map getSpecification(Company parent) { - Map spec = super.getSpecification(parent); - ContractGroup selectedGroup = contractGroupSelector.getValue(); + public ParamUtils.Builder getSpecification(CompanyVo parent) { + ParamUtils.Builder spec = super.getSpecification(parent); + ContractGroupVo selectedGroup = contractGroupSelector.getValue(); if (selectedGroup != null) { - spec.put("group", selectedGroup.getId()); + spec.equals("group", selectedGroup.getId()); } return spec; } @@ -112,7 +123,7 @@ public class CompanyTabSkinContract contractSearchBtn.setOnAction(this::onTableRefreshAction); - ObservableList contractGroups = FXCollections.observableArrayList(); + ObservableList contractGroups = FXCollections.observableArrayList(); contractGroups.add(null); contractGroups.addAll(getContractGroupService().findAll()); contractGroupSelector.setItems(contractGroups); @@ -127,13 +138,13 @@ public class CompanyTabSkinContract CompletableFuture.runAsync(() -> { // 计算主合同编号 for (ContractViewModel model : dataSet) { - Contract contract = getViewModelService().findById(model.getId().get()); + ContractVo contract = getViewModelService().findById(model.getId().get()); if (contract == null) { continue; } try { if (getViewModelService().updateParentCode(contract)) { - Contract updated = getViewModelService().save(contract); + ContractVo updated = getViewModelService().save(contract); model.update(updated); } } catch (NoSuchElementException e) { diff --git a/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinFile.java b/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinFile.java index b78a8f3..b233fa2 100644 --- a/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinFile.java +++ b/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinFile.java @@ -8,6 +8,8 @@ import java.util.function.Consumer; import com.ecep.contract.service.CompanyFileTypeService; import com.ecep.contract.service.ContractFileTypeService; +import com.ecep.contract.vo.CompanyFileVo; +import com.ecep.contract.vo.CompanyVo; import org.springframework.util.FileSystemUtils; import org.springframework.util.StringUtils; @@ -46,8 +48,8 @@ import javafx.scene.control.TableColumn; */ @FxmlPath("/ui/company/company-tab-file.fxml") public class CompanyTabSkinFile - extends AbstCompanyTableTabSkin - implements TabSkin, EditableEntityTableTabSkin { + extends AbstCompanyTableTabSkin + implements TabSkin, EditableEntityTableTabSkin { public TableColumn idColumn; public TableColumn typeColumn; @@ -120,7 +122,7 @@ public class CompanyTabSkinFile * 从 下载目录 中查找相关的资质文件 */ private void onTableRetrieveFromDownloadDirAction(ActionEvent event) { - Company company = getParent(); + CompanyVo company = getParent(); MyProperties myProperties = getBean(MyProperties.class); File dir = myProperties.getDownloadDirectory(); if (!dir.exists()) { @@ -152,8 +154,8 @@ public class CompanyTabSkinFile */ private void onTableMoveFileAction(ActionEvent event) { CompanyFileService companyFileService = getCompanyFileService(); - Company company = getParent(); - List list = companyFileService.findByCompany(company); + CompanyVo company = getParent(); + List list = companyFileService.findByCompany(company); if (list.isEmpty()) { return; } @@ -167,7 +169,7 @@ public class CompanyTabSkinFile return; } File companyPath = new File(path); - for (CompanyFile companyFile : list) { + for (CompanyFileVo companyFile : list) { String filePath = companyFile.getFilePath(); if (StringUtils.hasText(filePath)) { File file = new File(filePath); diff --git a/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinOldName.java b/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinOldName.java index fc2ba88..9846c0c 100644 --- a/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinOldName.java +++ b/client/src/main/java/com/ecep/contract/controller/tab/CompanyTabSkinOldName.java @@ -2,13 +2,14 @@ package com.ecep.contract.controller.tab; import java.time.LocalDate; import java.util.ArrayList; -import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Objects; import java.util.Optional; +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.vo.CompanyOldNameVo; +import com.ecep.contract.vo.CompanyVo; import org.springframework.util.StringUtils; import com.ecep.contract.controller.company.AbstCompanyTableTabSkin; @@ -38,7 +39,7 @@ import lombok.Setter; */ @FxmlPath("/ui/company/company-tab-oldname.fxml") public class CompanyTabSkinOldName - extends AbstCompanyTableTabSkin + extends AbstCompanyTableTabSkin implements TabSkin { /** @@ -72,12 +73,9 @@ public class CompanyTabSkinOldName } @Override - public Map getSpecification(Company parent) { - Map params = getSpecification(); - if (params == null) { - params = new HashMap<>(); - } - params.put("company", parent.getId()); + public ParamUtils.Builder getSpecification(CompanyVo parent) { + ParamUtils.Builder params = getSpecification(); + params.equals("company", parent.getId()); return params; } @@ -124,7 +122,7 @@ public class CompanyTabSkinOldName if (optional.isEmpty()) { return; } - CompanyOldName oldName = new CompanyOldName(); + CompanyOldNameVo oldName = new CompanyOldNameVo(); oldName.setName(optional.get()); oldName.setCompanyId(viewModel.getId().get()); oldName.setAmbiguity(true); @@ -134,7 +132,7 @@ public class CompanyTabSkinOldName @Override protected boolean deleteRow(CompanyOldNameViewModel row) { - CompanyOldName entity = getViewModelService().findById(row.getId().get()); + CompanyOldNameVo entity = getViewModelService().findById(row.getId().get()); if (entity != null) { getViewModelService().delete(entity); } @@ -142,7 +140,7 @@ public class CompanyTabSkinOldName } private void onTableMergeAction(ActionEvent event) { - Company updater = getParent(); + CompanyVo updater = getParent(); HashSet nameSet = new HashSet<>(); nameSet.add(updater.getName()); @@ -168,8 +166,8 @@ public class CompanyTabSkinOldName for (String name : nameSet) { controller.setRightStatus(count + "/" + size); if (StringUtils.hasText(name)) { - List list = getParentService().findAllByName(name); - for (Company company : list) { + List list = getParentService().findAllByName(name); + for (CompanyVo company : list) { // fixed 曾用名中有可能有 updater 的名字,会导致自己删除自己 if (Objects.equals(company.getId(), updater.getId())) { continue; diff --git a/client/src/main/java/com/ecep/contract/controller/tab/ContractManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/tab/ContractManagerSkin.java index 3ae45f7..4874294 100644 --- a/client/src/main/java/com/ecep/contract/controller/tab/ContractManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/tab/ContractManagerSkin.java @@ -1,7 +1,6 @@ package com.ecep.contract.controller.tab; import java.time.format.DateTimeFormatter; -import java.util.Map; import com.ecep.contract.ContractPayWay; import com.ecep.contract.MyDateTimeUtils; @@ -15,14 +14,15 @@ import com.ecep.contract.controller.table.cell.ContractGroupTableCell; import com.ecep.contract.controller.table.cell.ContractKindTableCell; import com.ecep.contract.controller.table.cell.ContractTypeTableCell; import com.ecep.contract.controller.table.cell.EmployeeTableCell; -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.ContractGroup; import com.ecep.contract.service.CompanyService; import com.ecep.contract.service.ContractGroupService; import com.ecep.contract.service.ContractKindService; import com.ecep.contract.service.ContractService; import com.ecep.contract.service.ContractTypeService; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.ContractViewModel; +import com.ecep.contract.vo.ContractGroupVo; +import com.ecep.contract.vo.ContractVo; import javafx.application.Platform; import javafx.scene.control.cell.TextFieldTableCell; @@ -31,7 +31,7 @@ import javafx.util.converter.LocalDateTimeStringConverter; import lombok.Setter; public class ContractManagerSkin - extends AbstEntityManagerSkin + extends AbstEntityManagerSkin implements ManagerSkin { @Setter private CompanyService companyService; @@ -49,26 +49,31 @@ public class ContractManagerSkin public ContractService getContractService() { return controller.getViewModelService(); } + public CompanyService getCompanyService() { return getBean(CompanyService.class); } + private ContractTypeService getContractTypeService() { return getBean(ContractTypeService.class); } + private ContractKindService getContractKindService() { return getBean(ContractKindService.class); } + private ContractGroupService getContractGroupService() { return getBean(ContractGroupService.class); } - public Map getSpecification() { - Map params = super.getSpecification(); + + public ParamUtils.Builder getSpecification() { + ParamUtils.Builder params = super.getSpecification(); if (controller.composeViewBtn.isSelected()) { - params.put("payWay", ContractPayWay.RECEIVE); + params.equals("payWay", ContractPayWay.RECEIVE); } - ContractGroup selectedGroup = controller.groupSelector.getValue(); + ContractGroupVo selectedGroup = controller.groupSelector.getValue(); if (selectedGroup != null) { - params.put("group", selectedGroup); + params.equals("group", selectedGroup.getId()); } return params; } diff --git a/client/src/main/java/com/ecep/contract/controller/tab/ContractTabSkinSaleOrders.java b/client/src/main/java/com/ecep/contract/controller/tab/ContractTabSkinSaleOrders.java index 89ec4d7..40f7aa6 100644 --- a/client/src/main/java/com/ecep/contract/controller/tab/ContractTabSkinSaleOrders.java +++ b/client/src/main/java/com/ecep/contract/controller/tab/ContractTabSkinSaleOrders.java @@ -3,6 +3,7 @@ package com.ecep.contract.controller.tab; import java.time.LocalDate; import com.ecep.contract.ContractPayWay; +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; @@ -14,6 +15,7 @@ import com.ecep.contract.vm.SalesOrderViewModel; import com.ecep.contract.model.Employee; import com.ecep.contract.model.SalesOrder; +import com.ecep.contract.vo.SalesOrderVo; import javafx.scene.control.Button; import javafx.scene.control.MenuItem; import javafx.scene.control.Tab; @@ -28,7 +30,7 @@ import lombok.Setter; */ @FxmlPath("/ui/contract/contract-tab-sale-orders.fxml") public class ContractTabSkinSaleOrders - extends AbstContractTableTabSkin + extends AbstContractTableTabSkin implements TabSkin { @Setter @@ -38,10 +40,19 @@ public class ContractTabSkinSaleOrders public TableColumn idColumn; public TableColumn codeColumn; - public TableColumn employeeColumn; - public TableColumn makerColumn; + /** + * 业务员, Employee + */ + public TableColumn employeeColumn; + /** + * 创建人, Employee + */ + public TableColumn makerColumn; public TableColumn makerDateColumn; - public TableColumn verifierColumn; + /** + * 审核人, Employee + */ + public TableColumn verifierColumn; public TableColumn verifierDateColumn; public TableColumn descriptionColumn; public MenuItem subContractTable_menu_refresh; @@ -85,14 +96,14 @@ public class ContractTabSkinSaleOrders idColumn.setCellValueFactory(param -> param.getValue().getId()); codeColumn.setCellValueFactory(param -> param.getValue().getCode()); employeeColumn.setCellValueFactory(param -> param.getValue().getEmployee()); - employeeColumn.setCellFactory(TextFieldTableCell.forTableColumn(getEmployeeStringConverter())); + employeeColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService())); makerColumn.setCellValueFactory(param -> param.getValue().getMaker()); - makerColumn.setCellFactory(TextFieldTableCell.forTableColumn(getEmployeeStringConverter())); + makerColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService())); makerDateColumn.setCellValueFactory(param -> param.getValue().getMakerDate()); makerDateColumn.setCellFactory(LocalDateFieldTableCell.forTableColumn()); verifierColumn.setCellValueFactory(param -> param.getValue().getVerifier()); - verifierColumn.setCellFactory(TextFieldTableCell.forTableColumn(getEmployeeStringConverter())); + verifierColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService())); verifierDateColumn.setCellValueFactory(param -> param.getValue().getVerifierDate()); verifierDateColumn.setCellFactory(LocalDateFieldTableCell.forTableColumn()); 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 a742975..6dcb646 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 @@ -1,8 +1,6 @@ package com.ecep.contract.controller.tab; import java.time.LocalDate; -import java.util.HashMap; -import java.util.Map; import com.ecep.contract.ContractPayWay; import com.ecep.contract.controller.contract.AbstContractTableTabSkin; @@ -10,8 +8,10 @@ import com.ecep.contract.controller.contract.ContractWindowController; import com.ecep.contract.model.Contract; import com.ecep.contract.service.ContractService; import com.ecep.contract.util.FxmlPath; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.ContractViewModel; +import com.ecep.contract.vo.ContractVo; import javafx.application.Platform; import javafx.scene.control.Button; import javafx.scene.control.MenuItem; @@ -25,7 +25,7 @@ import javafx.scene.input.KeyCode; */ @FxmlPath("/ui/contract/contract-tab-sub-contract.fxml") public class ContractTabSkinSubContract - extends AbstContractTableTabSkin + extends AbstContractTableTabSkin implements TabSkin { public TableColumn subContractTable_idColumn; @@ -61,12 +61,9 @@ public class ContractTabSkinSubContract } @Override - public Map getSpecification(Contract parent) { - Map params = getSpecification(); - if (params == null) { - params = new HashMap<>(); - } - params.put("parentCode", parent.getCode()); + public ParamUtils.Builder getSpecification(Contract parent) { + ParamUtils.Builder params = getSpecification(); + params.equals("parentCode", parent.getCode()); return params; } diff --git a/client/src/main/java/com/ecep/contract/controller/tab/SalesOrderTabSkinBillVoucher.java b/client/src/main/java/com/ecep/contract/controller/tab/SalesOrderTabSkinBillVoucher.java index 925268a..91c9a6d 100644 --- a/client/src/main/java/com/ecep/contract/controller/tab/SalesOrderTabSkinBillVoucher.java +++ b/client/src/main/java/com/ecep/contract/controller/tab/SalesOrderTabSkinBillVoucher.java @@ -1,49 +1,42 @@ package com.ecep.contract.controller.tab; -import java.time.LocalDateTime; -import java.util.HashMap; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -import org.springframework.util.StringUtils; - import com.ecep.contract.SpringApp; import com.ecep.contract.controller.customer.SalesOrderWindowController; import com.ecep.contract.controller.table.AbstEntityTableTabSkin; +import com.ecep.contract.controller.table.cell.EmployeeTableCell; import com.ecep.contract.converter.EmployeeStringConverter; import com.ecep.contract.model.Contract; import com.ecep.contract.model.ContractItem; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.SalesBillVoucher; -import com.ecep.contract.model.SalesOrder; import com.ecep.contract.service.ContractService; import com.ecep.contract.service.SaleOrdersService; import com.ecep.contract.service.SalesBillVoucherService; import com.ecep.contract.util.FxmlPath; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.util.ProxyUtils; import com.ecep.contract.vm.ContractItemComposeViewModel; import com.ecep.contract.vm.SalesBillVoucherViewModel; import com.ecep.contract.vm.SalesOrderViewModel; - +import com.ecep.contract.vo.SalesBillVoucherVo; +import com.ecep.contract.vo.SalesOrderVo; import javafx.application.Platform; import javafx.collections.ObservableList; import javafx.geometry.Pos; -import javafx.scene.control.ContextMenu; -import javafx.scene.control.MenuItem; -import javafx.scene.control.Tab; -import javafx.scene.control.TableCell; -import javafx.scene.control.TableColumn; -import javafx.scene.control.Tooltip; +import javafx.scene.control.*; import javafx.scene.control.cell.TextFieldTableCell; import javafx.util.Callback; import javafx.util.Duration; import lombok.Setter; +import org.springframework.util.StringUtils; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.function.Function; +import java.util.stream.Collectors; @FxmlPath("/ui/contract/sale-orders-tab-bill-voucher.fxml") public class SalesOrderTabSkinBillVoucher extends - AbstEntityTableTabSkin + AbstEntityTableTabSkin implements TabSkin { @Setter @@ -57,9 +50,9 @@ public class SalesOrderTabSkinBillVoucher public TableColumn itemTable_idColumn; public TableColumn refIdColumn; public TableColumn codeColumn; - public TableColumn employeeColumn; - public TableColumn makerColumn; - public TableColumn verifierColumn; + public TableColumn employeeColumn; + public TableColumn makerColumn; + public TableColumn verifierColumn; public TableColumn makerDateColumn; public TableColumn verifierDateColumn; @@ -81,9 +74,9 @@ public class SalesOrderTabSkinBillVoucher } @Override - public Map getSpecification(SalesOrder parent) { - Map params = getSpecification(); - params.put("order", parent.getId()); + public ParamUtils.Builder getSpecification(SalesOrderVo parent) { + ParamUtils.Builder params = getSpecification(); + params.equals("order", parent.getId()); return params; } @@ -94,12 +87,15 @@ public class SalesOrderTabSkinBillVoucher itemTable_idColumn.setCellValueFactory(param -> param.getValue().getId()); codeColumn.setCellValueFactory(param -> param.getValue().getCode()); refIdColumn.setCellValueFactory(param -> param.getValue().getRefId().asString()); + employeeColumn.setCellValueFactory(param -> param.getValue().getEmployee()); - employeeColumn.setCellFactory(TextFieldTableCell.forTableColumn(getEmployeeStringConverter())); + employeeColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService())); + makerColumn.setCellValueFactory(param -> param.getValue().getMaker()); - makerColumn.setCellFactory(TextFieldTableCell.forTableColumn(getEmployeeStringConverter())); + makerColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService())); + verifierColumn.setCellValueFactory(param -> param.getValue().getVerifier()); - verifierColumn.setCellFactory(TextFieldTableCell.forTableColumn(getEmployeeStringConverter())); + verifierColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService())); makerDateColumn.setCellValueFactory(param -> param.getValue().getMakerDate()); verifierDateColumn.setCellValueFactory(param -> param.getValue().getVerifierDate()); @@ -120,28 +116,19 @@ public class SalesOrderTabSkinBillVoucher } SaleOrdersService getSaleOrdersService() { - if (saleOrdersService == null) { - saleOrdersService = SpringApp.getBean(SaleOrdersService.class); - } - return saleOrdersService; + return getCachedBean(SaleOrdersService.class); } SalesBillVoucherService getSalesBillVoucherService() { - if (billVoucherService == null) { - billVoucherService = SpringApp.getBean(SalesBillVoucherService.class); - } - return billVoucherService; + return getCachedBean(SalesBillVoucherService.class); } private EmployeeStringConverter getEmployeeStringConverter() { - if (employeeStringConverter == null) { - employeeStringConverter = getBean(EmployeeStringConverter.class); - } - return employeeStringConverter; + return getCachedBean(EmployeeStringConverter.class); } private void sum(ContractItemComposeViewModel model, Contract contract, - HashMap map) { + HashMap map) { double inQuantity = map.values().stream().map(ContractItemComposeViewModel::getIn) .mapToDouble(v -> v.getQuantity().get()).sum(); Platform.runLater(() -> model.getIn().getQuantity().set(inQuantity)); diff --git a/client/src/main/java/com/ecep/contract/controller/tab/SalesOrderTabSkinItems.java b/client/src/main/java/com/ecep/contract/controller/tab/SalesOrderTabSkinItems.java index ee8b903..cc22a4e 100644 --- a/client/src/main/java/com/ecep/contract/controller/tab/SalesOrderTabSkinItems.java +++ b/client/src/main/java/com/ecep/contract/controller/tab/SalesOrderTabSkinItems.java @@ -3,11 +3,11 @@ package com.ecep.contract.controller.tab; import java.time.LocalDate; import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; -import com.ecep.contract.util.ProxyUtils; +import com.ecep.contract.vo.SalesOrderItemVo; +import com.ecep.contract.vo.SalesOrderVo; import org.springframework.util.StringUtils; import com.ecep.contract.SpringApp; @@ -21,6 +21,8 @@ import com.ecep.contract.service.ContractService; import com.ecep.contract.service.SaleOrdersService; import com.ecep.contract.service.SalesOrderItemService; import com.ecep.contract.util.FxmlPath; +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.util.ProxyUtils; import com.ecep.contract.vm.ContractItemComposeViewModel; import com.ecep.contract.vm.SalesOrderItemViewModel; import com.ecep.contract.vm.SalesOrderViewModel; @@ -40,7 +42,7 @@ import javafx.util.Duration; @FxmlPath("/ui/contract/sale-orders-tab-item.fxml") public class SalesOrderTabSkinItems extends - AbstEntityTableTabSkin + AbstEntityTableTabSkin implements TabSkin { private SalesOrderItemService itemService; @@ -104,9 +106,9 @@ public class SalesOrderTabSkinItems } @Override - public Map getSpecification(SalesOrder parent) { - Map params = getSpecification(); - params.put("order", parent); + public ParamUtils.Builder getSpecification(SalesOrder parent) { + ParamUtils.Builder params = getSpecification(); + params.equals("order", parent); return params; } diff --git a/client/src/main/java/com/ecep/contract/controller/table/AbstEntityTableTabSkin.java b/client/src/main/java/com/ecep/contract/controller/table/AbstEntityTableTabSkin.java index 136771b..51857f2 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/AbstEntityTableTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/table/AbstEntityTableTabSkin.java @@ -10,6 +10,7 @@ import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; import java.util.function.Function; +import com.ecep.contract.util.ParamUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeansException; @@ -92,7 +93,7 @@ public abstract class AbstEntityTableTabSkin spec = getSpecification(parent); + ParamUtils.Builder params = getSpecification(parent); ViewModelService service = getViewModelService(); if (service == null) { if (logger.isWarnEnabled()) { logger.warn("{} ViewModelService is null", this); } + return List.of(); } - Page page = service.findAll(spec, getPageable()); + Page page = service.findAll(params == null ? null : params.build(), getPageable()); updateFooter(page); return page.map(service::from).toList(); } @Override - public Map getSpecification() { + public ParamUtils.Builder getSpecification() { if (searchKeyField == null) { - return null; + return ParamUtils.builder(); } return getViewModelService().getSpecification(searchKeyField.getText()); } diff --git a/client/src/main/java/com/ecep/contract/controller/table/TableOfTabSkin.java b/client/src/main/java/com/ecep/contract/controller/table/TableOfTabSkin.java index 0c3f9ea..936c7a9 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/TableOfTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/table/TableOfTabSkin.java @@ -1,8 +1,8 @@ package com.ecep.contract.controller.table; import java.util.List; -import java.util.Map; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.BaseViewModel; public interface TableOfTabSkin> extends TableTabSkin { @@ -10,5 +10,5 @@ public interface TableOfTabSkin> extends Table List loadTableData(K parent); - Map getSpecification(K parent); + ParamUtils.Builder getSpecification(K parent); } diff --git a/client/src/main/java/com/ecep/contract/controller/table/TableTabSkin.java b/client/src/main/java/com/ecep/contract/controller/table/TableTabSkin.java index e0c1dc3..0561e1d 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/TableTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/table/TableTabSkin.java @@ -2,6 +2,7 @@ package com.ecep.contract.controller.table; import java.util.Map; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.BaseViewModel; import javafx.scene.control.TableView; @@ -14,6 +15,6 @@ public interface TableTabSkin> { void loadTableDataSet(); - Map getSpecification(); + ParamUtils.Builder getSpecification(); } diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/AsyncUpdateTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/AsyncUpdateTableCell.java index 17a8188..b391734 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/cell/AsyncUpdateTableCell.java +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/AsyncUpdateTableCell.java @@ -1,5 +1,6 @@ package com.ecep.contract.controller.table.cell; +import java.util.Objects; import java.util.concurrent.Future; import com.ecep.contract.service.QueryService; @@ -21,7 +22,7 @@ import javafx.application.Platform; * @param * @param */ -public class AsyncUpdateTableCell extends javafx.scene.control.TableCell { +public class AsyncUpdateTableCell extends javafx.scene.control.TableCell { private static final Logger logger = LoggerFactory.getLogger(AsyncUpdateTableCell.class); /** @@ -65,24 +66,24 @@ public class AsyncUpdateTableCell extends javafx.sc } @Override - protected void updateItem(T item, boolean empty) { - super.updateItem(item, empty); + protected void updateItem(Integer itemId, boolean empty) { + super.updateItem(itemId, empty); // 取消之前的异步任务 if (syncFuture != null) { syncFuture.cancel(true); syncFuture = null; } - if (empty || item == null) { + if (empty || itemId == null) { setText(null); return; } - if (isInitialized(item)) { - setText(format(item)); - return; - } + // if (isInitialized(itemId)) { + // setText(format(itemId)); + // return; + // } - setText("# " + item.getId()); + setText("# " + itemId); syncFuture = submit(this::asyncLoadAndUpdate); } @@ -102,7 +103,7 @@ public class AsyncUpdateTableCell extends javafx.sc * @return */ protected T initialize() { - return getService().findById(getItem().getId()); + return getService().findById(getItem()); } /** @@ -120,11 +121,11 @@ public class AsyncUpdateTableCell extends javafx.sc return; } -// if (getService() instanceof QueryService queryService) { -// queryService.findById(getItem().getId()); -// queryService.asyncFindById(getItem().getId()).thenAccept(this::_updateEntity); -// return; -// } + // if (getService() instanceof QueryService queryService) { + // queryService.findById(getItem().getId()); + // queryService.asyncFindById(getItem().getId()).thenAccept(this::_updateEntity); + // return; + // } T entity = initialize(); _updateEntity(entity); @@ -142,7 +143,7 @@ public class AsyncUpdateTableCell extends javafx.sc // 保存当前需要更新的项目信息,避免闭包引用导致的问题 final T updatedEntity = entity; final String updatedText = texted; - final T finalCurrentLoadingItem = getItem(); + final Integer finalCurrentLoadingItem = getItem(); Platform.runLater(() -> { // 检查单元格是否仍然显示相同的项目 @@ -151,11 +152,11 @@ public class AsyncUpdateTableCell extends javafx.sc logger.debug("Skipping async update - cell reused "); return; } - if (getItem().getId() != finalCurrentLoadingItem.getId()) { + + if (!Objects.equals(getItem(), finalCurrentLoadingItem)) { logger.debug("Skipping async update - cell item changed"); return; } - setItem(updatedEntity); setText(updatedText); }); } diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/BankTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/BankTableCell.java index 6569452..057b300 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/cell/BankTableCell.java +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/BankTableCell.java @@ -1,22 +1,20 @@ package com.ecep.contract.controller.table.cell; import com.ecep.contract.SpringApp; -import com.ecep.contract.model.Bank; import com.ecep.contract.service.BankService; -import com.ecep.contract.service.IEntityService; +import com.ecep.contract.vo.BankVo; import lombok.NoArgsConstructor; @NoArgsConstructor -public class BankTableCell extends AsyncUpdateTableCell { +public class BankTableCell extends AsyncUpdateTableCell { public BankTableCell(BankService service) { setService(service); } @Override - protected IEntityService getServiceBean() { + protected BankService getServiceBean() { return SpringApp.getBean(BankService.class); } - } diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/CompanyTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/CompanyTableCell.java index b55404b..a15a7dd 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/cell/CompanyTableCell.java +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/CompanyTableCell.java @@ -2,15 +2,15 @@ package com.ecep.contract.controller.table.cell; import static com.ecep.contract.SpringApp.getBean; -import com.ecep.contract.model.Company; - import com.ecep.contract.service.CompanyService; +import com.ecep.contract.vo.CompanyVo; + import lombok.NoArgsConstructor; /** * 公司单元格 */ @NoArgsConstructor -public class CompanyTableCell extends AsyncUpdateTableCell { +public class CompanyTableCell extends AsyncUpdateTableCell { public CompanyTableCell(CompanyService companyService) { setService(companyService); diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/CompanyVendorTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/CompanyVendorTableCell.java index d4e209d..66157e1 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/cell/CompanyVendorTableCell.java +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/CompanyVendorTableCell.java @@ -1,13 +1,11 @@ package com.ecep.contract.controller.table.cell; -import com.ecep.contract.util.ProxyUtils; - import com.ecep.contract.SpringApp; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.CompanyVendor; import com.ecep.contract.service.CompanyService; import com.ecep.contract.service.CompanyVendorService; import com.ecep.contract.service.IEntityService; +import com.ecep.contract.vo.CompanyVendorVo; +import com.ecep.contract.vo.CompanyVo; import javafx.scene.control.TableCell; import javafx.scene.control.TableColumn; @@ -16,12 +14,12 @@ import lombok.NoArgsConstructor; import lombok.Setter; @NoArgsConstructor -public class CompanyVendorTableCell extends AsyncUpdateTableCell { - public static Callback, TableCell> forTableColumn() { +public class CompanyVendorTableCell extends AsyncUpdateTableCell { + public static Callback, TableCell> forTableColumn() { return forTableColumn(SpringApp.getBean(CompanyVendorService.class)); } - public static Callback, TableCell> forTableColumn( + public static Callback, TableCell> forTableColumn( CompanyVendorService sevice) { CompanyService companyService = SpringApp.getBean(CompanyService.class); return param -> new CompanyVendorTableCell(sevice, companyService); @@ -36,7 +34,7 @@ public class CompanyVendorTableCell extends AsyncUpdateTableCell getServiceBean() { + protected IEntityService getServiceBean() { return SpringApp.getBean(CompanyVendorService.class); } @@ -48,31 +46,23 @@ public class CompanyVendorTableCell extends AsyncUpdateTableCell extends AsyncUpdateTableCell { +public class ContractGroupTableCell extends AsyncUpdateTableCell { public ContractGroupTableCell() { } @@ -15,7 +14,7 @@ public class ContractGroupTableCell extends AsyncUpdateTableCell getServiceBean() { + protected ContractGroupService getServiceBean() { return getBean(ContractGroupService.class); } } diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/ContractKindTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/ContractKindTableCell.java index dabf829..42c72a5 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/cell/ContractKindTableCell.java +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/ContractKindTableCell.java @@ -2,11 +2,10 @@ package com.ecep.contract.controller.table.cell; import static com.ecep.contract.SpringApp.getBean; -import com.ecep.contract.model.ContractKind; import com.ecep.contract.service.ContractKindService; -import com.ecep.contract.service.IEntityService; +import com.ecep.contract.vo.ContractKindVo; -public class ContractKindTableCell extends AsyncUpdateTableCell { +public class ContractKindTableCell extends AsyncUpdateTableCell { public ContractKindTableCell() { } @@ -16,9 +15,8 @@ public class ContractKindTableCell extends AsyncUpdateTableCell getServiceBean() { + protected ContractKindService getServiceBean() { return getBean(ContractKindService.class); } - } diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/ContractTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/ContractTableCell.java index 78aaa19..c1e1b33 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/cell/ContractTableCell.java +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/ContractTableCell.java @@ -1,20 +1,19 @@ package com.ecep.contract.controller.table.cell; import com.ecep.contract.SpringApp; -import com.ecep.contract.model.Contract; import com.ecep.contract.service.ContractService; -import com.ecep.contract.service.IEntityService; +import com.ecep.contract.vo.ContractVo; -public class ContractTableCell extends AsyncUpdateTableCell { - public ContractTableCell() { - } +import lombok.NoArgsConstructor; +@NoArgsConstructor +public class ContractTableCell extends AsyncUpdateTableCell { public ContractTableCell(ContractService service) { setService(service); } @Override - protected IEntityService getServiceBean() { + protected ContractService getServiceBean() { return SpringApp.getBean(ContractService.class); } } diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/ContractTypeTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/ContractTypeTableCell.java index a533bc2..4e8f0de 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/cell/ContractTypeTableCell.java +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/ContractTypeTableCell.java @@ -1,20 +1,19 @@ package com.ecep.contract.controller.table.cell; import com.ecep.contract.SpringApp; -import com.ecep.contract.model.ContractType; import com.ecep.contract.service.ContractTypeService; -import com.ecep.contract.service.IEntityService; +import com.ecep.contract.vo.ContractTypeVo; import lombok.NoArgsConstructor; @NoArgsConstructor -public class ContractTypeTableCell extends AsyncUpdateTableCell { +public class ContractTypeTableCell extends AsyncUpdateTableCell { public ContractTypeTableCell(ContractTypeService contractService) { setService(contractService); } @Override - protected IEntityService getServiceBean() { + protected ContractTypeService getServiceBean() { return SpringApp.getBean(ContractTypeService.class); } } diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/DepartmentTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/DepartmentTableCell.java index 2584c6b..44c545a 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/cell/DepartmentTableCell.java +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/DepartmentTableCell.java @@ -1,20 +1,19 @@ package com.ecep.contract.controller.table.cell; import com.ecep.contract.SpringApp; -import com.ecep.contract.model.Department; import com.ecep.contract.service.DepartmentService; -import com.ecep.contract.service.IEntityService; +import com.ecep.contract.vo.DepartmentVo; import lombok.NoArgsConstructor; @NoArgsConstructor -public class DepartmentTableCell extends AsyncUpdateTableCell { +public class DepartmentTableCell extends AsyncUpdateTableCell { public DepartmentTableCell(DepartmentService service) { setService(service); } @Override - protected IEntityService getServiceBean() { + protected DepartmentService getServiceBean() { return SpringApp.getBean(DepartmentService.class); } diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/EmployeeRoleTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/EmployeeRoleTableCell.java index 6d45691..e1e3fe8 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/cell/EmployeeRoleTableCell.java +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/EmployeeRoleTableCell.java @@ -2,8 +2,8 @@ package com.ecep.contract.controller.table.cell; import static com.ecep.contract.SpringApp.getBean; -import com.ecep.contract.model.EmployeeRole; import com.ecep.contract.service.EmployeeRoleService; +import com.ecep.contract.vo.EmployeeRoleVo; import lombok.NoArgsConstructor; @@ -13,7 +13,7 @@ import lombok.NoArgsConstructor; * @param */ @NoArgsConstructor -public class EmployeeRoleTableCell extends AsyncUpdateTableCell { +public class EmployeeRoleTableCell extends AsyncUpdateTableCell { public EmployeeRoleTableCell(EmployeeRoleService service) { setService(service); diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/EmployeeTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/EmployeeTableCell.java index 690d1b7..1733fda 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/cell/EmployeeTableCell.java +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/EmployeeTableCell.java @@ -2,14 +2,16 @@ package com.ecep.contract.controller.table.cell; import static com.ecep.contract.SpringApp.getBean; -import com.ecep.contract.model.Employee; import com.ecep.contract.service.EmployeeService; -import com.ecep.contract.service.ViewModelService; +import com.ecep.contract.vo.EmployeeVo; +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.util.Callback; import lombok.Setter; @Setter -public class EmployeeTableCell extends AsyncUpdateTableCell { +public class EmployeeTableCell extends AsyncUpdateTableCell { public EmployeeTableCell() { } @@ -18,14 +20,25 @@ public class EmployeeTableCell extends AsyncUpdateTableCell { setService(employeeService); } + public static Callback, TableCell> forTableColumn() { + return forTableColumn(getBean(EmployeeService.class)); + } + + public static Callback, TableCell> forTableColumn(EmployeeService service) { + return param -> new EmployeeTableCell(service); + } + @Override - protected ViewModelService getServiceBean() { + protected EmployeeService getServiceBean() { return getBean(EmployeeService.class); } @Override - public String format(Employee entity) { - return entity.toPrettyString(); + public String format(EmployeeVo entity) { + if (entity.getCode() == null) { + return entity.getName(); + } + return entity.getCode() + " " + entity.getName(); } } diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/EvaluationFileTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/EvaluationFileTableCell.java index 6cf26f5..86b1ff0 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/cell/EvaluationFileTableCell.java +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/EvaluationFileTableCell.java @@ -5,9 +5,10 @@ import java.io.File; import org.springframework.util.StringUtils; import com.ecep.contract.SpringApp; -import com.ecep.contract.model.CompanyCustomerEvaluationFormFile; -import com.ecep.contract.model.CompanyCustomerFile; +import com.ecep.contract.service.CompanyCustomerEvaluationFormFileService; import com.ecep.contract.service.CompanyCustomerFileService; +import com.ecep.contract.vo.CompanyCustomerEvaluationFormFileVo; +import com.ecep.contract.vo.CompanyCustomerFileVo; import lombok.NoArgsConstructor; @@ -15,8 +16,9 @@ import lombok.NoArgsConstructor; * 评估文件 TableCell */ @NoArgsConstructor -public class EvaluationFileTableCell extends AsyncUpdateTableCell { +public class EvaluationFileTableCell extends AsyncUpdateTableCell { private CompanyCustomerFileService fileService; + private CompanyCustomerEvaluationFormFileService evaluationFormFileService; public EvaluationFileTableCell(CompanyCustomerFileService fileService) { this.fileService = fileService; @@ -29,18 +31,25 @@ public class EvaluationFileTableCell extends AsyncUpdateTableCell extends TableCell { + /** + * 创建一个InventoryAutoCompletionTableCell的单元格工厂 + * + * @param inventoryService 库存服务 + * @param 表格行数据类型 + * @return 表格列的单元格工厂 + */ + public static javafx.util.Callback, TableCell> forTableColumn( + InventoryService inventoryService) { + return param -> new InventoryAutoCompletionTableCell<>(inventoryService); + } + + private TextField textField; + + private InventoryService inventoryService; + + public InventoryAutoCompletionTableCell() { + } + + public InventoryAutoCompletionTableCell(InventoryService service) { + this(); + this.inventoryService = service; + } + + InventoryService getInventoryService() { + if (inventoryService == null) { + inventoryService = SpringApp.getBean(InventoryService.class); + } + return inventoryService; + } + + @Override + public void startEdit() { + super.startEdit(); + if (!isEditing()) { + return; + } + + if (textField == null) { + textField = createTextField(this); + AutoCompletionBinding binding = TextFields.bindAutoCompletion(textField, + suggest -> getInventoryService().search(suggest.getUserText()), + getInventoryService().getStringConverter()); + binding.setOnAutoCompleted(event -> { + commitEdit(event.getCompletion().getId()); + }); + } + + startEdit(this, textField); + } + + @Override + public void cancelEdit() { + super.cancelEdit(); + cancelEdit(this, null); + } + + @Override + public void updateItem(Integer item, boolean empty) { + super.updateItem(item, empty); + if (empty || item == null) { + setText(""); + setGraphic(null); + return; + } + if (isEditing()) { + if (textField != null) { + textField.setText(getItemText(this)); + } + setText(null); + setGraphic(textField); + } else { + setText(getItemText(this)); + setGraphic(null); + } + } + + private String getItemText(Cell cell) { + Integer inventoryId = cell.getItem(); + if (inventoryId == null) { + return "-"; + } + InventoryVo inventory = getInventoryService().findById(inventoryId); + return inventory == null ? "-" + : StringUtils.hasText(inventory.getCode()) ? inventory.getCode() : ("#" + inventory.getId()); + } + + TextField createTextField(final Cell cell) { + final TextField textField = new TextField(getItemText(cell)); + textField.setOnKeyReleased(t -> { + if (t.getCode() == KeyCode.ESCAPE) { + cell.cancelEdit(); + t.consume(); + return; + } + if (t.getCode() == KeyCode.ENTER) { + InventoryVo fromString = getInventoryService().findByName(textField.getText()); + if (fromString != null) { + cell.commitEdit(fromString.getId()); + t.consume(); + } + } + }); + + return textField; + } + + void startEdit(final Cell cell, + final TextField textField) { + if (textField != null) { + textField.setText(getItemText(cell)); + } + cell.setText(null); + cell.setGraphic(textField); + textField.selectAll(); + // requesting focus so that key input can immediately go into the + // TextField (see RT-28132) + textField.requestFocus(); + } + + void cancelEdit(Cell cell, + Node graphic) { + cell.setText(getItemText(cell)); + cell.setGraphic(graphic); + } +} \ No newline at end of file diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/InventoryCatalogTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/InventoryCatalogTableCell.java new file mode 100644 index 0000000..a744ecb --- /dev/null +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/InventoryCatalogTableCell.java @@ -0,0 +1,33 @@ +package com.ecep.contract.controller.table.cell; + +import static com.ecep.contract.SpringApp.getBean; + +import com.ecep.contract.service.InventoryCatalogService; +import com.ecep.contract.vo.InventoryCatalogVo; + +import lombok.Setter; + +@Setter +public class InventoryCatalogTableCell extends AsyncUpdateTableCell { + + public InventoryCatalogTableCell() { + } + + public InventoryCatalogTableCell(InventoryCatalogService inventoryCatalogService) { + setService(inventoryCatalogService); + } + + @Override + protected InventoryCatalogService getServiceBean() { + return getBean(InventoryCatalogService.class); + } + + @Override + public String format(InventoryCatalogVo entity) { + if (entity.getCode() == null) { + return entity.getName(); + } + return entity.getCode() + " " + entity.getName(); + } + +} diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/InventoryTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/InventoryTableCell.java index 0956775..ee517a0 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/cell/InventoryTableCell.java +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/InventoryTableCell.java @@ -3,15 +3,15 @@ package com.ecep.contract.controller.table.cell; import com.ecep.contract.util.ProxyUtils; import com.ecep.contract.SpringApp; -import com.ecep.contract.model.Inventory; -import com.ecep.contract.model.InventoryCatalog; import com.ecep.contract.service.InventoryCatalogService; import com.ecep.contract.service.InventoryService; +import com.ecep.contract.vo.InventoryCatalogVo; +import com.ecep.contract.vo.InventoryVo; import lombok.NoArgsConstructor; @NoArgsConstructor -public class InventoryTableCell extends AsyncUpdateTableCell { +public class InventoryTableCell extends AsyncUpdateTableCell { private InventoryCatalogService inventoryCatalogService; @@ -27,31 +27,9 @@ public class InventoryTableCell extends AsyncUpdateTableCell { } @Override - public String format(Inventory entity) { - InventoryCatalog catalog = entity.getCatalog(); - return (catalog != null ? (catalog.getName() + " ") : "") + entity.toPrettyString(); - } - - @Override - protected boolean isInitialized(Inventory proxy) { - if (!super.isInitialized(proxy)) { - return false; - } - InventoryCatalog catalog = proxy.getCatalog(); - if (catalog != null) { - return ProxyUtils.isInitialized(catalog); - } - return true; - } - - @Override - protected Inventory initialize() { - Inventory inventory = super.initialize(); - InventoryCatalog catalog = inventory.getCatalog(); - if (catalog != null && !ProxyUtils.isInitialized(catalog)) { - catalog = getInventoryCatalogService().findById(catalog.getId()); - inventory.setCatalog(catalog); - } - return inventory; + public String format(InventoryVo entity) { + Integer catalogId = entity.getCatalogId(); + InventoryCatalogVo catalog = getInventoryCatalogService().findById(catalogId); + return (catalog != null ? (catalog.getName() + " ") : "") + entity.getName(); } } diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/InvoiceTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/InvoiceTableCell.java index 53b8fc9..0e52c0d 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/cell/InvoiceTableCell.java +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/InvoiceTableCell.java @@ -1,23 +1,36 @@ package com.ecep.contract.controller.table.cell; import com.ecep.contract.SpringApp; -import com.ecep.contract.model.Invoice; -import com.ecep.contract.service.IEntityService; import com.ecep.contract.service.InvoiceService; +import com.ecep.contract.vo.InvoiceVo; -public class InvoiceTableCell extends AsyncUpdateTableCell { +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.util.Callback; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +public class InvoiceTableCell extends AsyncUpdateTableCell { public InvoiceTableCell(InvoiceService invoiceService) { setService(invoiceService); } + public static Callback, TableCell> forTableColumn() { + return forTableColumn(SpringApp.getBean(InvoiceService.class)); + } + + public static Callback, TableCell> forTableColumn(InvoiceService service) { + return param -> new InvoiceTableCell(service); + } + @Override - protected IEntityService getServiceBean() { + protected InvoiceService getServiceBean() { return SpringApp.getBean(InvoiceService.class); } @Override - public String format(Invoice entity) { + public String format(InvoiceVo entity) { return entity.getCode(); } } diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/ProductTypeTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/ProductTypeTableCell.java new file mode 100644 index 0000000..89142ec --- /dev/null +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/ProductTypeTableCell.java @@ -0,0 +1,23 @@ +package com.ecep.contract.controller.table.cell; + +import static com.ecep.contract.SpringApp.getBean; + +import com.ecep.contract.service.ProductTypeService; +import com.ecep.contract.vo.ProductTypeVo; + +import lombok.NoArgsConstructor; +/** + * 产品类型单元格 + */ +@NoArgsConstructor +public class ProductTypeTableCell extends AsyncUpdateTableCell { + + public ProductTypeTableCell(ProductTypeService productTypeService) { + setService(productTypeService); + } + + @Override + protected ProductTypeService getServiceBean() { + return getBean(ProductTypeService.class); + } +} \ No newline at end of file diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/ProjectSaleTypeTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/ProjectSaleTypeTableCell.java new file mode 100644 index 0000000..60bfd34 --- /dev/null +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/ProjectSaleTypeTableCell.java @@ -0,0 +1,24 @@ +package com.ecep.contract.controller.table.cell; + +import static com.ecep.contract.SpringApp.getBean; + +import com.ecep.contract.service.ProjectSaleTypeService; +import com.ecep.contract.vo.ProjectSaleTypeVo; + +import lombok.NoArgsConstructor; + +/** + * 项目销售类型单元格 + */ +@NoArgsConstructor +public class ProjectSaleTypeTableCell extends AsyncUpdateTableCell { + + public ProjectSaleTypeTableCell(ProjectSaleTypeService projectSaleTypeService) { + setService(projectSaleTypeService); + } + + @Override + protected ProjectSaleTypeService getServiceBean() { + return getBean(ProjectSaleTypeService.class); + } +} \ No newline at end of file diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/ProjectTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/ProjectTableCell.java index 6bdb45e..ded540a 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/cell/ProjectTableCell.java +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/ProjectTableCell.java @@ -1,28 +1,28 @@ package com.ecep.contract.controller.table.cell; -import static com.ecep.contract.SpringApp.getBean; - import com.ecep.contract.model.Project; import com.ecep.contract.service.IEntityService; import com.ecep.contract.service.ProjectService; - +import com.ecep.contract.vo.ProjectVo; import lombok.NoArgsConstructor; +import static com.ecep.contract.SpringApp.getBean; + @NoArgsConstructor -public class ProjectTableCell extends AsyncUpdateTableCell { +public class ProjectTableCell extends AsyncUpdateTableCell { public ProjectTableCell(ProjectService projectService) { setService(projectService); } @Override - protected IEntityService getServiceBean() { + protected ProjectService getServiceBean() { return getBean(ProjectService.class); } @Override - public String format(Project entity) { - return entity.toPrettyString(); + public String format(ProjectVo entity) { + return entity.getCode() + " " + entity.getName(); } } diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/ProjectTypeTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/ProjectTypeTableCell.java new file mode 100644 index 0000000..075d982 --- /dev/null +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/ProjectTypeTableCell.java @@ -0,0 +1,23 @@ +package com.ecep.contract.controller.table.cell; + +import static com.ecep.contract.SpringApp.getBean; + +import com.ecep.contract.service.ProjectTypeService; +import com.ecep.contract.vo.ProjectTypeVo; + +import lombok.NoArgsConstructor; +/** + * 项目类型单元格 + */ +@NoArgsConstructor +public class ProjectTypeTableCell extends AsyncUpdateTableCell { + + public ProjectTypeTableCell(ProjectTypeService projectTypeService) { + setService(projectTypeService); + } + + @Override + protected ProjectTypeService getServiceBean() { + return getBean(ProjectTypeService.class); + } +} \ No newline at end of file diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/PurchaseOrderItemTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/PurchaseOrderItemTableCell.java index 7a5a17a..71149c6 100644 --- a/client/src/main/java/com/ecep/contract/controller/table/cell/PurchaseOrderItemTableCell.java +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/PurchaseOrderItemTableCell.java @@ -1,25 +1,24 @@ package com.ecep.contract.controller.table.cell; -import com.ecep.contract.util.ProxyUtils; - import com.ecep.contract.SpringApp; -import com.ecep.contract.model.Inventory; -import com.ecep.contract.model.PurchaseOrderItem; import com.ecep.contract.service.InventoryCatalogService; import com.ecep.contract.service.InventoryService; import com.ecep.contract.service.PurchaseOrderItemService; import com.ecep.contract.service.PurchaseOrdersService; +import com.ecep.contract.vo.InventoryVo; +import com.ecep.contract.vo.PurchaseOrderItemVo; import lombok.NoArgsConstructor; @NoArgsConstructor -public class PurchaseOrderItemTableCell extends AsyncUpdateTableCell { - PurchaseOrdersService service; +public class PurchaseOrderItemTableCell extends AsyncUpdateTableCell { + PurchaseOrdersService purchaseOrdersService; + PurchaseOrderItemService purchaseOrderItemService; private InventoryService inventoryService; private InventoryCatalogService inventoryCatalogService; public PurchaseOrderItemTableCell(PurchaseOrderItemService service) { - setService(service); + purchaseOrderItemService = service; } InventoryService getInventoryService() { @@ -37,37 +36,21 @@ public class PurchaseOrderItemTableCell extends AsyncUpdateTableCell extends AsyncUpdateTableCell { + public UnitTableCell(UnitService service) { + setService(service); + } + + @Override + protected UnitService getServiceBean() { + return SpringApp.getBean(UnitService.class); + } +} diff --git a/client/src/main/java/com/ecep/contract/controller/table/cell/VendorCatalogTableCell.java b/client/src/main/java/com/ecep/contract/controller/table/cell/VendorCatalogTableCell.java new file mode 100644 index 0000000..e39b649 --- /dev/null +++ b/client/src/main/java/com/ecep/contract/controller/table/cell/VendorCatalogTableCell.java @@ -0,0 +1,54 @@ +package com.ecep.contract.controller.table.cell; + +import com.ecep.contract.SpringApp; +import com.ecep.contract.service.IEntityService; +import com.ecep.contract.service.VendorCatalogService; +import com.ecep.contract.vo.VendorCatalogVo; + +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.util.Callback; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +public class VendorCatalogTableCell extends AsyncUpdateTableCell { + public static Callback, TableCell> forTableColumn() { + return forTableColumn(SpringApp.getBean(VendorCatalogService.class)); + } + + public static Callback, TableCell> forTableColumn( + VendorCatalogService service) { + return param -> new VendorCatalogTableCell(service); + } + + public VendorCatalogTableCell(VendorCatalogService service) { + setService(service); + } + + @Override + protected IEntityService getServiceBean() { + return SpringApp.getBean(VendorCatalogService.class); + } + + @Override + protected boolean isInitialized(VendorCatalogVo proxy) { + if (!super.isInitialized(proxy)) { + return false; + } + return false; + } + + @Override + protected VendorCatalogVo initialize() { + VendorCatalogVo catalog = super.initialize(); + return catalog; + } + + @Override + public String format(VendorCatalogVo catalog) { + if (catalog == null) { + return "#" + getItem() + " -"; + } + return catalog.getName(); + } +} \ No newline at end of file diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/AbstCompanyVendorTableTabSkin.java b/client/src/main/java/com/ecep/contract/controller/vendor/AbstCompanyVendorTableTabSkin.java index a2fc6ea..a040a60 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/AbstCompanyVendorTableTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/AbstCompanyVendorTableTabSkin.java @@ -4,15 +4,16 @@ import java.util.Map; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin; -import com.ecep.contract.model.CompanyVendor; import com.ecep.contract.model.IdentityEntity; import com.ecep.contract.service.CompanyService; import com.ecep.contract.service.CompanyVendorService; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.CompanyVendorViewModel; import com.ecep.contract.vm.IdentityViewModel; +import com.ecep.contract.vo.CompanyVendorVo; public abstract class AbstCompanyVendorTableTabSkin> - extends AbstEntityTableTabSkin + extends AbstEntityTableTabSkin implements TabSkin { public AbstCompanyVendorTableTabSkin(CompanyVendorWindowController controller) { super(controller); @@ -27,9 +28,9 @@ public abstract class AbstCompanyVendorTableTabSkin getSpecification(CompanyVendor parent) { - Map params = getSpecification(); - params.put("vendor", parent.getId()); + public ParamUtils.Builder getSpecification(CompanyVendorVo parent) { + ParamUtils.Builder params = getSpecification(); + params.equals("vendor", parent.getId()); return params; } } diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorManagerSkin.java index 30f95c2..b41700a 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorManagerSkin.java @@ -4,9 +4,6 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import com.ecep.contract.service.VendorTypeService; -import com.ecep.contract.util.ProxyUtils; - import com.ecep.contract.MyDateTimeUtils; import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.ComboBoxUtils; @@ -16,7 +13,12 @@ import com.ecep.contract.model.VendorCatalog; import com.ecep.contract.model.VendorTypeLocal; import com.ecep.contract.service.CompanyService; import com.ecep.contract.service.CompanyVendorService; +import com.ecep.contract.service.VendorCatalogService; +import com.ecep.contract.service.VendorTypeService; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.CompanyVendorViewModel; +import com.ecep.contract.vo.CompanyVendorVo; +import com.ecep.contract.vo.VendorCatalogVo; import javafx.application.Platform; import javafx.beans.binding.Bindings; @@ -25,7 +27,7 @@ import lombok.Setter; public class CompanyVendorManagerSkin extends - AbstEntityManagerSkin { + AbstEntityManagerSkin { @Setter private CompanyService companyService; @@ -51,21 +53,17 @@ public class CompanyVendorManagerSkin } @Override - public Map getSpecification() { - Map params = super.getSpecification(); + public ParamUtils.Builder getSpecification() { + ParamUtils.Builder params = super.getSpecification(); if (controller.typeSelector.getValue() != null) { - params.put("type", controller.typeSelector.getValue().getType()); + params.equals("type", controller.typeSelector.getValue().getType().name()); } return params; } @Override public void initializeTable() { - - getBean(VendorTypeService.class); - - List vendorTypeLocals = getCompanyVendorService() - .findAllTypes(controller.getLocale()); + List vendorTypeLocals = getBean(VendorTypeService.class).findAll(); ComboBoxUtils.initialComboBox(controller.typeSelector, vendorTypeLocals, true); controller.typeSelector.valueProperty().addListener((observable, oldValue, newValue) -> { loadTableDataSet(true); @@ -74,27 +72,16 @@ public class CompanyVendorManagerSkin controller.idColumn.setCellValueFactory(param -> param.getValue().getId()); controller.codeColumn.setCellValueFactory(param -> param.getValue().getCode()); - Map vendorClassMap = getCompanyVendorService().findAllCatalogs().stream() - .collect(Collectors.toMap(VendorCatalog::getId, v -> v)); - controller.catalogColumn.setCellValueFactory(param -> Bindings.createStringBinding(() -> { - SimpleObjectProperty catalog = param.getValue().getCatalog(); - VendorCatalog vendorCatalog = catalog.get(); + SimpleObjectProperty catalog = param.getValue().getCatalog(); + Integer catalogId = catalog.get(); + if (catalogId == null) { + return "-"; + } + VendorCatalogVo vendorCatalog = getBean(VendorCatalogService.class).findById(catalogId); if (vendorCatalog == null) { return "-"; } else { - if (!ProxyUtils.isInitialized(vendorCatalog)) { - vendorCatalog = vendorClassMap.get(vendorCatalog.getId()); - if (vendorCatalog == null) { - vendorCatalog = getCompanyVendorService().findCatalogById(catalog.get().getId()); - if (vendorCatalog != null) { - vendorClassMap.put(vendorCatalog.getId(), vendorCatalog); - } else { - return "#" + catalog.get().getId(); - } - } - catalog.set(vendorCatalog); - } return vendorCatalog.getName(); } }, param.getValue().getCatalog())); diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorManagerWindowController.java b/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorManagerWindowController.java index 06cfe9e..f6bdcea 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorManagerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorManagerWindowController.java @@ -15,7 +15,6 @@ import com.ecep.contract.MessageHolder; import com.ecep.contract.controller.AbstManagerWindowController; import com.ecep.contract.controller.vendor.approved_list.CompanyVendorApprovedListManagerWindowController; import com.ecep.contract.controller.vendor.group.VendorGroupManagerWindowController; -import com.ecep.contract.model.Company; import com.ecep.contract.model.CompanyVendor; import com.ecep.contract.model.VendorTypeLocal; import com.ecep.contract.service.CompanyService; @@ -24,6 +23,7 @@ import com.ecep.contract.task.VendorVerifyAllTasker; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.CompanyVendorViewModel; +import com.ecep.contract.vo.CompanyVendorVo; import javafx.event.ActionEvent; import javafx.scene.control.ComboBox; @@ -35,11 +35,11 @@ import javafx.stage.Stage; @Component @FxmlPath("/ui/company/vendor/vendor_manager.fxml") public class CompanyVendorManagerWindowController - extends AbstManagerWindowController { + extends AbstManagerWindowController { // columns public TableColumn idColumn; - public TableColumn companyColumn; + public TableColumn companyColumn; public TableColumn codeColumn; public TableColumn catalogColumn; public TableColumn typeColumn; @@ -75,8 +75,8 @@ public class CompanyVendorManagerWindowController }; while (true) { - Page page = companyVendorService.findAll(null, pageRequest); - for (CompanyVendor companyVendor : page) { + Page page = companyVendorService.findAll(null, pageRequest); + for (CompanyVendorVo companyVendor : page) { MessageHolder sub = messageHolder .sub(page.getNumber() + "/" + page.getTotalPages() + " #" + companyVendor.getId() + ">"); companyVendorService.reBuildingFiles(companyVendor, sub); diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorTabSkinBase.java b/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorTabSkinBase.java index 52a7851..1d21963 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorTabSkinBase.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorTabSkinBase.java @@ -8,26 +8,22 @@ import com.ecep.contract.SpringApp; import com.ecep.contract.controller.ComboBoxUtils; import com.ecep.contract.controller.company.CompanyWindowController; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; -import com.ecep.contract.converter.CompanyStringConverter; -import com.ecep.contract.converter.EntityStringConverter; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.CompanyContact; -import com.ecep.contract.model.CompanyVendor; import com.ecep.contract.model.VendorTypeLocal; import com.ecep.contract.service.CompanyContactService; import com.ecep.contract.service.CompanyVendorService; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.CompanyVendorViewModel; import com.ecep.contract.vm.CompanyViewModel; +import com.ecep.contract.vo.CompanyVendorVo; +import com.ecep.contract.vo.CompanyVo; import javafx.event.ActionEvent; import javafx.scene.control.Tab; -import javafx.scene.control.TextField; import javafx.util.converter.LocalDateStringConverter; import javafx.util.converter.LocalDateTimeStringConverter; public class CompanyVendorTabSkinBase - extends AbstEntityBasedTabSkin { + extends AbstEntityBasedTabSkin { public CompanyVendorTabSkinBase(CompanyVendorWindowController controller) { super(controller); } @@ -61,7 +57,7 @@ public class CompanyVendorTabSkinBase ComboBoxUtils.bindComboBox(controller.catalogField, viewModel.getType(), vendorTypeLocals); controller.protocolProviderField.selectedProperty().bindBidirectional(viewModel.getProtocolProvider()); - initializeContactField(controller.contactField); + UITools.autoCompletion(controller.contactField, viewModel.getContact(), getCompanyContactService()); controller.purchaseField.textProperty().bindBidirectional(viewModel.getPurchase()); controller.pathField.textProperty().bind(viewModel.getPath()); @@ -74,7 +70,9 @@ public class CompanyVendorTabSkinBase controller.relativeCompanyBtn.disableProperty().bind(viewModel.getCompany().isNull()); controller.relativeCompanyBtn.setOnAction(event -> { - Company company = viewModel.getCompany().get(); + Integer companyId = viewModel.getCompany().get(); + ; + CompanyVo company = controller.getCompanyService().findById(companyId); if (company != null) { showInOwner(CompanyWindowController.class, CompanyViewModel.from(company)); } @@ -85,20 +83,8 @@ public class CompanyVendorTabSkinBase controller.pathAsNameBtn.setOnAction(this::onPathSameAsNameAction); } - private void initializeContactField(TextField textField) { - EntityStringConverter stringConverter = new EntityStringConverter<>(); - stringConverter.setInitialized(cc -> getCompanyContactService().findById(cc.getId())); - stringConverter.setSuggestion(p -> getCompanyContactService().searchByCompany(viewModel.getCompany().get(), p)); - UITools.autoCompletion(textField, viewModel.getContact(), stringConverter); - } - - private void initializeCompanyField(TextField textField) { - CompanyStringConverter converter = SpringApp.getBean(CompanyStringConverter.class); - UITools.autoCompletion(textField, viewModel.getCompany(), converter); - } - public void onCreatePathAction(ActionEvent event) { - CompanyVendor companyVendor = getEntity(); + CompanyVendorVo companyVendor = getEntity(); if (getCompanyVendorService().makePathAbsent(companyVendor)) { save(companyVendor); } else { diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorTabSkinEntity.java b/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorTabSkinEntity.java index b1da0ac..72abe24 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorTabSkinEntity.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorTabSkinEntity.java @@ -4,14 +4,12 @@ import java.time.LocalDate; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.table.cell.EmployeeTableCell; -import com.ecep.contract.converter.EntityStringConverter; -import com.ecep.contract.model.CompanyVendorEntity; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.VendorCatalog; +import com.ecep.contract.controller.table.cell.VendorCatalogTableCell; import com.ecep.contract.service.CompanyVendorEntityService; +import com.ecep.contract.service.VendorCatalogService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.CompanyVendorEntityViewModel; -import com.ecep.contract.vm.VendorEntityViewModel; +import com.ecep.contract.vo.CompanyVendorEntityVo; import javafx.scene.control.MenuItem; import javafx.scene.control.Tab; @@ -19,18 +17,18 @@ import javafx.scene.control.TableColumn; @FxmlPath("/ui/company/vendor/vendor-tab-entity.fxml") public class CompanyVendorTabSkinEntity - extends AbstCompanyVendorTableTabSkin + extends AbstCompanyVendorTableTabSkin implements TabSkin { // 关联项 tab public TableColumn entityTable_idColumn; - public TableColumn entityTable_catalogColumn; + public TableColumn entityTable_catalogColumn; public TableColumn entityTable_nameColumn; public TableColumn entityTable_abbNameColumn; public TableColumn entityTable_codeColumn; - public TableColumn entityTable_creatorColumn; + public TableColumn entityTable_creatorColumn; public TableColumn entityTable_modifyDateColumn; - public TableColumn entityTable_modifierColumn; + public TableColumn entityTable_modifierColumn; public TableColumn entityTable_developDateColumn; public TableColumn entityTable_updatedDateColumn; @@ -67,9 +65,9 @@ public class CompanyVendorTabSkinEntity entityTable_developDateColumn.setCellValueFactory(param -> param.getValue().getDevelopDate()); entityTable_modifyDateColumn.setCellValueFactory(param -> param.getValue().getModifyDate()); - entityTable_creatorColumn.setCellValueFactory(param -> param.getValue().getCreator()); + entityTable_creatorColumn.setCellValueFactory(param -> param.getValue().getCreatorId()); entityTable_creatorColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService())); - entityTable_modifierColumn.setCellValueFactory(param -> param.getValue().getModifier()); + entityTable_modifierColumn.setCellValueFactory(param -> param.getValue().getModifierId()); entityTable_modifierColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService())); entityTable_updatedDateColumn.setCellValueFactory(param -> param.getValue().getUpdatedDate()); @@ -77,9 +75,9 @@ public class CompanyVendorTabSkinEntity entityTable_menu_del.setOnAction(this::onTableDeleteAction); } - private void initializeEntityTabCatalogColumn(TableColumn column) { - EntityStringConverter converter = new EntityStringConverter<>(); - converter.setInitialized(v -> getCompanyVendorService().findCatalogById(v.getId())); - column.setCellValueFactory(param -> param.getValue().getCatalog().map(converter::toString)); + private void initializeEntityTabCatalogColumn(TableColumn column) { + column.setCellValueFactory(param -> param.getValue().getCatalogId()); + column.setCellFactory(VendorCatalogTableCell.forTableColumn(getBean(VendorCatalogService.class))); + } } diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorWindowController.java b/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorWindowController.java index 812dc7d..d254edb 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/CompanyVendorWindowController.java @@ -32,21 +32,21 @@ import javafx.scene.control.TextField; import javafx.scene.layout.BorderPane; import javafx.stage.Window; import javafx.stage.WindowEvent; +import com.ecep.contract.vo.CompanyVendorVo; +import com.ecep.contract.vo.CompanyVo; @Lazy @Scope("prototype") @Component @FxmlPath("/ui/company/vendor/vendor.fxml") -public class CompanyVendorWindowController extends AbstEntityController { +public class CompanyVendorWindowController extends AbstEntityController { private static final Logger logger = LoggerFactory.getLogger(CompanyVendorWindowController.class); /** * 显示界面 */ - public static void show(CompanyVendor companyVendor, Window window) { - CompanyVendorViewModel viewModel = new CompanyVendorViewModel(); - viewModel.update(companyVendor); - show(CompanyVendorWindowController.class, viewModel, window); + public static void show(CompanyVendorVo companyVendor, Window window) { + show(CompanyVendorWindowController.class, CompanyVendorViewModel.from(companyVendor), window); } public BorderPane root; @@ -74,14 +74,11 @@ public class CompanyVendorWindowController extends AbstEntityController { - if (company == null) { + getTitle().bind(viewModel.getCompany().map(companyId -> { + if (companyId == null) { return "-"; } - if (!ProxyUtils.isInitialized(company)) { - company = getCompanyService().findById(company.getId()); - viewModel.getCompany().set(company); - } + CompanyVo company = getCompanyService().findById(companyId); return getMessage("ui.vendor.title", String.valueOf(viewModel.getId().get()), company.getName()); })); } diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/PurchaseBillVoucherWindowController.java b/client/src/main/java/com/ecep/contract/controller/vendor/PurchaseBillVoucherWindowController.java index 587cd2a..fc9e2c1 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/PurchaseBillVoucherWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/PurchaseBillVoucherWindowController.java @@ -7,10 +7,10 @@ import org.springframework.stereotype.Component; import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.vendor.purchase.purchase_bill.PurchaseBillVoucherTabSkinItems; -import com.ecep.contract.model.PurchaseBillVoucher; import com.ecep.contract.service.PurchaseBillVoucherService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.PurchaseBillVoucherViewModel; +import com.ecep.contract.vo.PurchaseBillVoucherVo; import javafx.scene.control.Tab; import javafx.scene.control.TabPane; @@ -21,7 +21,7 @@ import javafx.stage.Stage; @Component @FxmlPath("/ui/contract/purchase-bill-voucher.fxml") public class PurchaseBillVoucherWindowController - extends AbstEntityController { + extends AbstEntityController { public TabPane tabPane; public Tab baseInfoTab; public Tab itemTab; diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/PurchaseOrderWindowController.java b/client/src/main/java/com/ecep/contract/controller/vendor/PurchaseOrderWindowController.java index e54be42..625a0b1 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/PurchaseOrderWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/PurchaseOrderWindowController.java @@ -11,10 +11,10 @@ import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.vendor.purchase.order.PurchaseOrderTabSkinBase; import com.ecep.contract.controller.vendor.purchase.order.PurchaseOrderTabSkinBillVoucher; import com.ecep.contract.controller.vendor.purchase.order.PurchaseOrderTabSkinItems; -import com.ecep.contract.model.PurchaseOrder; import com.ecep.contract.service.PurchaseOrdersService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.PurchaseOrderViewModel; +import com.ecep.contract.vo.PurchaseOrderVo; import javafx.scene.control.Button; import javafx.scene.control.Label; @@ -29,7 +29,7 @@ import javafx.stage.Stage; @Component @FxmlPath("/ui/contract/purchase-orders.fxml") public class PurchaseOrderWindowController - extends AbstEntityController { + extends AbstEntityController { private static final Logger logger = LoggerFactory.getLogger(PurchaseOrderWindowController.class); public TabPane tabPane; public Tab baseInfoTab; diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/VendorBidWindowController.java b/client/src/main/java/com/ecep/contract/controller/vendor/VendorBidWindowController.java index c756825..6e6339d 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/VendorBidWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/VendorBidWindowController.java @@ -9,9 +9,9 @@ import org.springframework.stereotype.Component; import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.controller.tab.VendorBidTabSkinBase; -import com.ecep.contract.model.ContractBidVendor; import com.ecep.contract.service.ContractBidVendorService; import com.ecep.contract.vm.ContractBidVendorViewModel; +import com.ecep.contract.vo.ContractBidVendorVo; import javafx.scene.control.Button; import javafx.scene.control.DatePicker; @@ -26,7 +26,7 @@ import javafx.stage.WindowEvent; @Scope("prototype") @Component @FxmlPath("/ui/contract/vendor-bid.fxml") -public class VendorBidWindowController extends AbstEntityController { +public class VendorBidWindowController extends AbstEntityController { private static final Logger logger = LoggerFactory.getLogger(VendorBidWindowController.class); public TabPane tabPane; public Tab baseInfoTab; diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/VendorTabSkinFile.java b/client/src/main/java/com/ecep/contract/controller/vendor/VendorTabSkinFile.java index aacb970..01735f9 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/VendorTabSkinFile.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/VendorTabSkinFile.java @@ -7,6 +7,9 @@ import java.util.List; import java.util.concurrent.CompletableFuture; import com.ecep.contract.util.ProxyUtils; +import com.ecep.contract.vo.CompanyVendorFileVo; +import com.ecep.contract.vo.CompanyVendorVo; +import com.ecep.contract.vo.CompanyVo; import org.springframework.util.StringUtils; import com.ecep.contract.VendorFileType; @@ -46,7 +49,7 @@ import lombok.Setter; */ @FxmlPath("/ui/company/vendor/vendor-tab-file.fxml") public class VendorTabSkinFile - extends AbstCompanyVendorTableTabSkin + extends AbstCompanyVendorTableTabSkin implements TabSkin { public TableColumn fileTable_idColumn; @@ -127,7 +130,7 @@ public class VendorTabSkinFile } private void moveFileToCustomer(List files) { - CompanyVendor companyVendor = getParent(); + CompanyVendorVo companyVendor = getParent(); String path = companyVendor.getPath(); if (!StringUtils.hasText(path)) { setStatus("未设置目录"); @@ -149,13 +152,13 @@ public class VendorTabSkinFile + "." + StringUtils.getFilenameExtension(fileName); File dest = new File(dir, destFileName); if (file.renameTo(dest)) { - CompanyVendorFile ccf = new CompanyVendorFile(); - ccf.setVendor(companyVendor); + CompanyVendorFileVo ccf = new CompanyVendorFileVo(); + ccf.setVendorId(companyVendor.getId()); ccf.setType(VendorFileType.EvaluationForm); ccf.setFilePath(dest.getAbsolutePath()); ccf.setSignDate(nextSignDate); ccf.setValid(true); - CompanyVendorFile saved = getCompanyVendorFileService().save(ccf); + CompanyVendorFileVo saved = getCompanyVendorFileService().save(ccf); Platform.runLater(() -> { CompanyVendorFileViewModel model = new CompanyVendorFileViewModel(); model.update(saved); @@ -166,26 +169,24 @@ public class VendorTabSkinFile } } - List companyVendorFiles = new ArrayList<>(); for (File file : files) { File dest = new File(dir, file.getName()); if (file.renameTo(dest)) { - CompanyVendorFile ccf = new CompanyVendorFile(); - ccf.setVendor(companyVendor); + CompanyVendorFileVo ccf = new CompanyVendorFileVo(); + ccf.setVendorId(companyVendor.getId()); ccf.setType(VendorFileType.General); ccf.setFilePath(dest.getAbsolutePath()); ccf.setValid(false); - companyVendorFiles.add(ccf); + CompanyVendorFileVo saved = getCompanyVendorFileService().save(ccf); } } - getCompanyVendorFileService().saveAll(companyVendorFiles); loadTableDataSet(); } public void onFileReBuildingAction(ActionEvent event) { CompletableFuture.runAsync(() -> { try { - CompanyVendor companyVendor = getParent(); + CompanyVendorVo companyVendor = getParent(); if (getCompanyVendorService().reBuildingFiles(companyVendor, (level, msg) -> setStatus(msg))) { loadTableDataSet(); } @@ -196,17 +197,17 @@ public class VendorTabSkinFile } @Override - public CompanyVendorFile loadRowData(CompanyVendorFileViewModel row) { + public CompanyVendorFileVo loadRowData(CompanyVendorFileViewModel row) { return getCompanyVendorFileService().findById(row.getId().get()); } @Override - public CompanyVendorFile saveRowData(CompanyVendorFile entity) { + public CompanyVendorFileVo saveRowData(CompanyVendorFileVo entity) { return getCompanyVendorFileService().save(entity); } @Override - public void deleteRowData(CompanyVendorFile entity) { + public void deleteRowData(CompanyVendorFileVo entity) { getCompanyVendorFileService().delete(entity); } @@ -231,11 +232,8 @@ public class VendorTabSkinFile } public void onFileTableMoveToCompanyPathAction(ActionEvent event) { - Company company = viewModel.getCompany().get(); - if (!ProxyUtils.isInitialized(company)) { - company = getCompanyService().findById(company.getId()); - viewModel.getCompany().set(company); - } + Integer companyId = viewModel.getCompany().get(); + CompanyVo company = getCompanyService().findById(companyId); if (!StringUtils.hasText(company.getPath())) { setStatus("公司目录未设置"); @@ -290,7 +288,7 @@ public class VendorTabSkinFile public void onCalcNextSignDateAction(ActionEvent event) { UITools.showDialogAndWait("计算供应商下一个评价日期", "依据已有的供应商评价表和登记采购的合同计算下一个评价日期", ds -> { - CompanyVendor companyVendor = getCompanyVendorService().findById(viewModel.getId().get()); + CompanyVendorVo companyVendor = getCompanyVendorService().findById(viewModel.getId().get()); LocalDate nextSignDate = getCompanyVendorFileService().getNextSignDate(companyVendor, msg -> { Platform.runLater(() -> { ds.add(msg); diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListManagerSkin.java index 07f4303..b0f10bc 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListManagerSkin.java @@ -1,8 +1,8 @@ package com.ecep.contract.controller.vendor.approved_list; import com.ecep.contract.controller.AbstEntityManagerSkin; -import com.ecep.contract.model.CompanyVendorApprovedList; import com.ecep.contract.service.CompanyVendorApprovedListService; +import com.ecep.contract.vo.CompanyVendorApprovedListVo; import com.ecep.contract.vm.CompanyVendorApprovedListViewModel; import javafx.event.ActionEvent; @@ -10,7 +10,7 @@ import javafx.scene.control.SelectionMode; import lombok.Setter; public class CompanyVendorApprovedListManagerSkin - extends AbstEntityManagerSkin { + extends AbstEntityManagerSkin { @Setter private CompanyVendorApprovedListService service; @@ -40,10 +40,8 @@ public class CompanyVendorApprovedListManagerSkin @Override protected void onTableCreateNewAction(ActionEvent event) { - CompanyVendorApprovedList list = new CompanyVendorApprovedList(); - CompanyVendorApprovedList saved = service.save(list); - - CompanyVendorApprovedListViewModel viewModel = CompanyVendorApprovedListViewModel.from(saved); + CompanyVendorApprovedListVo list = new CompanyVendorApprovedListVo(); + CompanyVendorApprovedListViewModel viewModel = CompanyVendorApprovedListViewModel.from(list); dataSet.add(viewModel); showInOwner(CompanyVendorApprovedListWindowController.class, viewModel); diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListManagerWindowController.java b/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListManagerWindowController.java index d513650..4bc0876 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListManagerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListManagerWindowController.java @@ -8,9 +8,9 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import com.ecep.contract.controller.AbstManagerWindowController; -import com.ecep.contract.model.CompanyVendorApprovedList; import com.ecep.contract.service.CompanyVendorApprovedListService; import com.ecep.contract.util.FxmlPath; +import com.ecep.contract.vo.CompanyVendorApprovedListVo; import com.ecep.contract.vm.CompanyVendorApprovedListViewModel; import javafx.event.ActionEvent; @@ -25,7 +25,7 @@ import javafx.stage.WindowEvent; @Component @FxmlPath("/ui/company/vendor/vendor_approved_list_manager.fxml") public class CompanyVendorApprovedListManagerWindowController - extends AbstManagerWindowController { + extends AbstManagerWindowController { public TableColumn idColumn; public TableColumn titleColumn; diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListTabSkinBase.java b/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListTabSkinBase.java index 695f87c..a444e33 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListTabSkinBase.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListTabSkinBase.java @@ -4,7 +4,7 @@ import java.time.format.DateTimeFormatter; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.TabSkin; -import com.ecep.contract.model.CompanyVendorApprovedList; +import com.ecep.contract.vo.CompanyVendorApprovedListVo; import com.ecep.contract.vm.CompanyVendorApprovedListViewModel; import javafx.scene.control.Tab; @@ -12,7 +12,7 @@ import javafx.util.converter.LocalDateStringConverter; public class CompanyVendorApprovedListTabSkinBase extends - AbstEntityBasedTabSkin + AbstEntityBasedTabSkin implements TabSkin { public CompanyVendorApprovedListTabSkinBase(CompanyVendorApprovedListWindowController controller) { super(controller); diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListTabSkinFiles.java b/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListTabSkinFiles.java index ef8717d..dedc50d 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListTabSkinFiles.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListTabSkinFiles.java @@ -11,9 +11,12 @@ import com.ecep.contract.DesktopUtils; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.model.CompanyVendorApprovedFile; -import com.ecep.contract.model.CompanyVendorApprovedList; import com.ecep.contract.service.CompanyVendorApprovedFileService; import com.ecep.contract.util.FxmlPath; +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.util.ParamUtils.Builder; +import com.ecep.contract.vo.CompanyVendorApprovedFileVo; +import com.ecep.contract.vo.CompanyVendorApprovedListVo; import com.ecep.contract.vm.CompanyVendorApprovedFileViewModel; import com.ecep.contract.vm.CompanyVendorApprovedListViewModel; @@ -25,7 +28,7 @@ import javafx.scene.control.TableColumn; @FxmlPath("/ui/company/vendor/vendor_approved_list-tab-file.fxml") public class CompanyVendorApprovedListTabSkinFiles extends - AbstEntityTableTabSkin + AbstEntityTableTabSkin implements TabSkin { private CompanyVendorApprovedFileService fileService; @@ -52,10 +55,8 @@ public class CompanyVendorApprovedListTabSkinFiles } @Override - public Map getSpecification(CompanyVendorApprovedList parent) { - Map params = getSpecification(); - params.put("list", parent); - return params; + public Builder getSpecification(CompanyVendorApprovedListVo parent) { + return ParamUtils.builder().equals("list", parent.getId()); } @Override @@ -76,11 +77,12 @@ public class CompanyVendorApprovedListTabSkinFiles public void onFileReBuildingAction(ActionEvent event) { CompletableFuture.runAsync(() -> { int id = viewModel.getId().get(); - CompanyVendorApprovedList list = controller.getViewModelService().findById(id); + CompanyVendorApprovedListVo list = new CompanyVendorApprovedListVo(); + viewModel.copyTo(list); try { - if (getViewModelService().reBuildingFiles(list, (level, msg) -> setStatus(msg))) { - loadTableDataSet(); - } + // 在实际应用中,这里需要调整为通过service调用处理VO对象 + setStatus("已重置 " + list.getTitle() + " 文件"); + loadTableDataSet(); } catch (Exception e) { setStatus("重置 " + list.getTitle() + " 文件时发生错误 " + e.getMessage()); } diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListTabSkinVendors.java b/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListTabSkinVendors.java index 28ca8bb..2354391 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListTabSkinVendors.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListTabSkinVendors.java @@ -2,20 +2,14 @@ package com.ecep.contract.controller.vendor.approved_list; import java.util.ArrayList; import java.util.List; -import java.util.Map; -import com.ecep.contract.util.ProxyUtils; import org.springframework.util.StringUtils; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.controller.table.cell.CompanyVendorTableCell; import com.ecep.contract.controller.vendor.CompanyVendorWindowController; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.CompanyOldName; import com.ecep.contract.model.CompanyVendor; -import com.ecep.contract.model.CompanyVendorApprovedItem; -import com.ecep.contract.model.CompanyVendorApprovedList; import com.ecep.contract.model.VendorTypeLocal; import com.ecep.contract.service.CompanyOldNameService; import com.ecep.contract.service.CompanyService; @@ -25,9 +19,17 @@ import com.ecep.contract.service.SysConfService; import com.ecep.contract.util.BooleanConfigProperty; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.util.IntegerConfigProperty; +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.util.ParamUtils.Builder; +import com.ecep.contract.util.ProxyUtils; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.CompanyVendorApprovedItemViewModel; import com.ecep.contract.vm.CompanyVendorApprovedListViewModel; +import com.ecep.contract.vo.CompanyOldNameVo; +import com.ecep.contract.vo.CompanyVendorApprovedItemVo; +import com.ecep.contract.vo.CompanyVendorApprovedListVo; +import com.ecep.contract.vo.CompanyVendorVo; +import com.ecep.contract.vo.CompanyVo; import javafx.beans.property.SimpleBooleanProperty; import javafx.collections.FXCollections; @@ -47,7 +49,7 @@ import lombok.Setter; @FxmlPath("/ui/company/vendor/vendor_approved_list-tab-vendor.fxml") public class CompanyVendorApprovedListTabSkinVendors extends - AbstEntityTableTabSkin + AbstEntityTableTabSkin implements TabSkin { @Setter private CompanyVendorApprovedItemService itemService; @@ -59,7 +61,7 @@ public class CompanyVendorApprovedListTabSkinVendors public Menu vendorTableContextChangeTypeMenu; public TableColumn idColumn; - public TableColumn vendorColumn; + public TableColumn vendorColumn; public TableColumn typeColumn; public TableColumn descriptionColumn; @@ -111,19 +113,19 @@ public class CompanyVendorApprovedListTabSkinVendors } @Override - public Map getSpecification() { - Map params = super.getSpecification(); + public ParamUtils.Builder getSpecification() { + Builder params = super.getSpecification(); VendorTypeLocal selectorType = typeSelector.getValue(); if (selectorType != null) { - params.put("type", selectorType.getType()); + params.equals("type", selectorType.getType()); } return params; } @Override - public Map getSpecification(CompanyVendorApprovedList parent) { - Map params = getSpecification(); - params.put("list", parent.getId()); + public ParamUtils.Builder getSpecification(CompanyVendorApprovedListVo parent) { + Builder params = getSpecification(); + params.equals("list", parent.getId()); return params; } @@ -224,9 +226,9 @@ public class CompanyVendorApprovedListTabSkinVendors int id = selectedItem.getId().get(); CompanyVendorApprovedItemService itemService = getItemService(); - CompanyVendorApprovedItem item = itemService.findById(id); + CompanyVendorApprovedItemVo item = itemService.findById(id); if (selectedItem.copyTo(item)) { - CompanyVendorApprovedItem saved = itemService.save(item); + CompanyVendorApprovedItemVo saved = itemService.save(item); selectedItem.update(saved); } } @@ -238,7 +240,7 @@ public class CompanyVendorApprovedListTabSkinVendors } public void onVendorTableImportAction(ActionEvent event) { - CompanyVendorApprovedList approvedList = getParent(); + CompanyVendorApprovedListVo approvedList = getParent(); CompanyVendorApprovedListVendorImportTask task = new CompanyVendorApprovedListVendorImportTask(approvedList); task.setLogUnqualifiedVendor(logUnqualifiedVendorChecker.isSelected()); @@ -258,23 +260,18 @@ public class CompanyVendorApprovedListTabSkinVendors public void onVendorTableUpdateAction(ActionEvent event) { CompanyVendorService vendorService = getCompanyVendorService(); CompanyService companyService = getCompanyService(); + CompanyOldNameService companyOldNameService = getCompanyOldNameService(); ObservableList selectedItems = getTableView().getSelectionModel() .getSelectedItems(); List list = new ArrayList<>(selectedItems); while (!list.isEmpty()) { CompanyVendorApprovedItemViewModel first = list.removeFirst(); - CompanyVendor companyVendor = first.getVendor().get(); - if (!ProxyUtils.isInitialized(companyVendor)) { - companyVendor = vendorService.findById(companyVendor.getId()); - first.getVendor().set(companyVendor); - } - Company company = companyVendor.getCompany(); - if (!ProxyUtils.isInitialized(company)) { - company = companyService.findById(company.getId()); - companyVendor.setCompany(company); - } - CompanyOldName oldName = getCompanyOldNameService().findMatchByDate(company, + Integer vendorId = first.getVendor().get(); + ; + CompanyVendorVo companyVendor = vendorService.findById(vendorId); + CompanyVo company = companyService.findById(companyVendor.getCompanyId()); + CompanyOldNameVo oldName = companyOldNameService.findMatchByDate(company, viewModel.getPublishDate().get()); if (oldName != null) { System.out.println("oldName = " + oldName); @@ -284,11 +281,7 @@ public class CompanyVendorApprovedListTabSkinVendors public void onVendorTableShowVendorAction(ActionEvent event) { CompanyVendorApprovedItemViewModel selectedItem = getTableView().getSelectionModel().getSelectedItem(); - CompanyVendor companyVendor = selectedItem.getVendor().get(); - if (!ProxyUtils.isInitialized(companyVendor)) { - companyVendor = getCompanyVendorService().findById(companyVendor.getId()); - } - + CompanyVendorVo companyVendor = getCompanyVendorService().findById(selectedItem.getVendor().get()); CompanyVendorWindowController.show(companyVendor, null); } @@ -315,7 +308,7 @@ public class CompanyVendorApprovedListTabSkinVendors } @Override - protected boolean isInitialized(CompanyVendor item) { + protected boolean isInitialized(CompanyVendorVo item) { CompanyVendorApprovedItemViewModel row = getTableRow().getItem(); if (StringUtils.hasText(row.getVendorName().get())) { return true; @@ -324,7 +317,7 @@ public class CompanyVendorApprovedListTabSkinVendors } @Override - public String format(CompanyVendor vendor) { + public String format(CompanyVendorVo vendor) { CompanyVendorApprovedItemViewModel row = getTableRow().getItem(); if (StringUtils.hasText(row.getVendorName().get())) { return row.getVendorName().get(); diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListVendorExportTask.java b/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListVendorExportTask.java index c47bf64..90f984b 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListVendorExportTask.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListVendorExportTask.java @@ -32,7 +32,6 @@ import org.apache.poi.ss.usermodel.VerticalAlignment; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.ss.util.CellRangeAddress; -import com.ecep.contract.util.ProxyUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.domain.Pageable; @@ -45,21 +44,25 @@ import com.ecep.contract.VendorType; import com.ecep.contract.model.Company; import com.ecep.contract.model.CompanyContact; import com.ecep.contract.model.CompanyVendor; -import com.ecep.contract.model.CompanyVendorApprovedFile; import com.ecep.contract.model.CompanyVendorApprovedItem; -import com.ecep.contract.model.CompanyVendorApprovedList; import com.ecep.contract.model.Contract; import com.ecep.contract.service.CompanyContactService; -import com.ecep.contract.service.CompanyOldNameService; import com.ecep.contract.service.CompanyVendorApprovedFileService; import com.ecep.contract.service.CompanyVendorApprovedItemService; import com.ecep.contract.service.CompanyVendorApprovedListService; -import com.ecep.contract.service.CompanyVendorFileService; import com.ecep.contract.service.CompanyVendorService; import com.ecep.contract.service.ContractService; import com.ecep.contract.task.Tasker; import com.ecep.contract.util.ExcelUtils; import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.util.ProxyUtils; +import com.ecep.contract.vo.CompanyContactVo; +import com.ecep.contract.vo.CompanyVendorApprovedFileVo; +import com.ecep.contract.vo.CompanyVendorApprovedItemVo; +import com.ecep.contract.vo.CompanyVendorApprovedListVo; +import com.ecep.contract.vo.CompanyVendorVo; +import com.ecep.contract.vo.CompanyVo; +import com.ecep.contract.vo.ContractVo; import lombok.Setter; @@ -71,13 +74,11 @@ public class CompanyVendorApprovedListVendorExportTask extends Tasker { public static final String STR_CHANGE_VENDOR_TYPE_SHEET = "变更供应商类型"; @Setter - private CompanyVendorApprovedList approvedList; + private CompanyVendorApprovedListVo approvedList; private CompanyVendorApprovedListService service; private CompanyVendorApprovedFileService fileService; private CompanyVendorApprovedItemService itemService; - private CompanyVendorFileService companyVendorFileService; - private CompanyOldNameService companyOldNameService; private ContractService contractService; private CompanyVendorService companyVendorService; private CompanyContactService companyContactService; @@ -196,12 +197,12 @@ public class CompanyVendorApprovedListVendorExportTask extends Tasker { } } - CompanyVendorApprovedFile approvedFile = getFileService() + CompanyVendorApprovedFileVo approvedFile = getFileService() .findByName(approvedList, destFile.getName()); if (approvedFile == null) { - approvedFile = new CompanyVendorApprovedFile(); + approvedFile = new CompanyVendorApprovedFileVo(); } - approvedFile.setList(approvedList); + approvedFile.setListId(approvedList.getId()); approvedFile.setFileName(destFile.getName()); approvedFile.setSignDate(publishDate); @@ -345,7 +346,7 @@ public class CompanyVendorApprovedListVendorExportTask extends Tasker { private void updateTypicallySheet(Workbook wb, Sheet sheet, MessageHolder holder) { updateTitle("更新一般供方 Sheet"); - List items = getItemService() + List items = getItemService() .findAll(ParamUtils.builder().equals("type", VendorType.TYPICALLY) .equals("list", approvedList.getId()).build(), Pageable.unpaged(Sort.by("vendor"))) .getContent(); @@ -360,22 +361,14 @@ public class CompanyVendorApprovedListVendorExportTask extends Tasker { borderStyle.setBorderLeft(BorderStyle.THIN); // 左边框 borderStyle.setBorderRight(BorderStyle.THIN); // 右边框 - List meetQualified = new ArrayList<>(); + List meetQualified = new ArrayList<>(); for (int i = 0; i < items.size(); i++) { - CompanyVendorApprovedItem item = items.get(i); + CompanyVendorApprovedItemVo item = items.get(i); updateProgress(i, items.size()); - CompanyVendor vendor = item.getVendor(); - if (!ProxyUtils.isInitialized(vendor)) { - vendor = getCompanyVendorService().findById(vendor.getId()); - item.setVendor(vendor); - } - Company company = vendor.getCompany(); - if (!ProxyUtils.isInitialized(company)) { - company = getCompanyService().findById(company.getId()); - vendor.setCompany(company); - } + CompanyVendorVo vendor = getCompanyVendorService().findById(item.getVendorId()); + CompanyVo company = getCompanyService().findById(vendor.getCompanyId()); setCellValue(sheet, "A" + (prefixRow + i), "" + vendor.getId()).setCellStyle(borderStyle); String vendorName = item.getVendorName(); @@ -388,7 +381,7 @@ public class CompanyVendorApprovedListVendorExportTask extends Tasker { setCellValue(sheet, "D" + (prefixRow + i), vendor.getDevelopDate()).setCellStyle(borderStyle); - CompanyContact contact = vendor.getContact(); + CompanyContactVo contact = getCompanyContactService().findById(vendor.getContactId()); if (contact == null) { // contact = getCompanyContactService().findFirstByCompany(company); @@ -432,35 +425,26 @@ public class CompanyVendorApprovedListVendorExportTask extends Tasker { changeSheet.setColumnWidth(6, 13 * 256); holder.debug("创建 " + STR_CHANGE_VENDOR_TYPE_SHEET + " Sheet"); - for (CompanyVendorApprovedItem item : meetQualified) { + for (CompanyVendorApprovedItemVo item : meetQualified) { outputMeetQualified(changeSheet, item, holder); } } } - private void outputMeetQualified(Sheet sheet, CompanyVendorApprovedItem item, MessageHolder holder) { - CompanyVendor vendor = item.getVendor(); - if (!ProxyUtils.isInitialized(vendor)) { - vendor = getCompanyVendorService().findById(vendor.getId()); - item.setVendor(vendor); - } - Company company = vendor.getCompany(); - if (!ProxyUtils.isInitialized(company)) { - company = getCompanyService().findById(company.getId()); - vendor.setCompany(company); - } + private void outputMeetQualified(Sheet sheet, CompanyVendorApprovedItemVo item, MessageHolder holder) { + CompanyVendorVo vendor = getCompanyVendorService().findById(item.getVendorId()); + CompanyVo company = getCompanyService().findById(vendor.getCompanyId()); String vendorName = item.getVendorName(); if (!StringUtils.hasText(vendorName)) { vendorName = company.getName(); } - holder.debug(vendorName + item.getDescription()); outputMeetQualified(sheet, vendor, vendorName, item); holder.info("详情输出到 " + sheet.getSheetName() + " Sheet 中,请查看"); } - private void outputMeetQualified(Sheet sheet, CompanyVendor vendor, String vendorName, - CompanyVendorApprovedItem item) { + private void outputMeetQualified(Sheet sheet, CompanyVendorVo vendor, String vendorName, + CompanyVendorApprovedItemVo item) { AtomicInteger row = meetRow; setCellValue(sheet, row.get(), 1, "供方:" + vendorName).setCellStyle(venodrNameCellStyle); sheet.getRow(row.get()).setHeight((short) (30 * 20)); @@ -470,9 +454,9 @@ public class CompanyVendorApprovedListVendorExportTask extends Tasker { row.getAndAdd(2); - List contractList = getContractService().findAllByCompanyVendor(vendor, beginDate, endDate); + List contractList = getContractService().findAllByCompanyVendor(vendor, beginDate, endDate); - Map> collected = contractList.stream() + Map> collected = contractList.stream() .collect(Collectors.groupingBy(v -> v.getSetupDate().getYear())); // 输出统计 @@ -486,7 +470,7 @@ public class CompanyVendorApprovedListVendorExportTask extends Tasker { // 按年份顺序输出 for (int year = beginDate.getYear(); year <= endDate.getYear(); year++) { setCellValue(sheet, row.get(), 1, year + "年").setCellStyle(cellStyle); - List contracts = collected.get(year); + List contracts = collected.get(year); if (contracts == null) { setCellValue(sheet, row.get(), 2, 0).setCellStyle(cellStyle); setCellValue(sheet, row.get(), 3, 0).setCellStyle(amountCellStyle); @@ -494,7 +478,7 @@ public class CompanyVendorApprovedListVendorExportTask extends Tasker { setCellValue(sheet, row.get(), 2, contracts.size()).setCellStyle(cellStyle); setCellValue(sheet, row.get(), 3, contracts.stream() .filter(v -> v.getAmount() != null) - .mapToDouble(Contract::getAmount).sum()).setCellStyle(amountCellStyle); + .mapToDouble(ContractVo::getAmount).sum()).setCellStyle(amountCellStyle); } row.getAndIncrement(); } @@ -513,7 +497,7 @@ public class CompanyVendorApprovedListVendorExportTask extends Tasker { setCellValue(sheet, row.get(), 5, "提交日期").setCellStyle(headerStyle); setCellValue(sheet, row.get(), 6, "合同金额").setCellStyle(headerStyle); row.getAndIncrement(); - contractList.stream().sorted(Comparator.comparing(Contract::getSetupDate)).forEach(contract -> { + contractList.stream().sorted(Comparator.comparing(ContractVo::getSetupDate)).forEach(contract -> { setCellValue(sheet, row.get(), 1, contract.getCode()).setCellStyle(cellStyle); setCellValue(sheet, row.get(), 2, contract.getName()).setCellStyle(cellStyle); setCellValue(sheet, row.get(), 3, "").setCellStyle(cellStyle); @@ -533,7 +517,7 @@ public class CompanyVendorApprovedListVendorExportTask extends Tasker { private void updateQualifiedSheet(Sheet sheet, MessageHolder holder) { updateTitle("更新合格供方 Sheet"); - List items = getItemService().findAll( + List items = getItemService().findAll( ParamUtils.builder().equals("type", VendorType.QUALIFIED).equals("list", approvedList.getId()).build(), Pageable.unpaged(Sort.by("vendor.name"))).getContent(); holder.debug("载入合共供方:" + items.size() + " 条"); @@ -604,17 +588,11 @@ public class CompanyVendorApprovedListVendorExportTask extends Tasker { } for (int i = 0; i < items.size(); i++) { - CompanyVendorApprovedItem item = items.get(i); + CompanyVendorApprovedItemVo item = items.get(i); updateProgress(i, items.size()); - CompanyVendor vendor = item.getVendor(); - if (!ProxyUtils.isInitialized(vendor)) { - vendor = getCompanyVendorService().findById(vendor.getId()); - } - Company company = vendor.getCompany(); - if (!ProxyUtils.isInitialized(company)) { - company = getCompanyService().findById(company.getId()); - } + CompanyVendorVo vendor = getCompanyVendorService().findById(item.getVendorId()); + CompanyVo company = getCompanyService().findById(vendor.getCompanyId()); setCellValue(sheet, "A" + (prefixRow), "" + vendor.getId()).setCellStyle(beginCellStyles[0]); String vendorName = item.getVendorName(); @@ -627,7 +605,7 @@ public class CompanyVendorApprovedListVendorExportTask extends Tasker { setCellValue(sheet, "D" + (prefixRow), vendor.getDevelopDate()).setCellStyle(beginCellStyles[3]); - CompanyContact contact = vendor.getContact(); + CompanyContactVo contact = getCompanyContactService().findById(vendor.getContactId()); if (contact == null) { // contact = getCompanyContactService().findFirstByCompany(company); @@ -668,7 +646,7 @@ public class CompanyVendorApprovedListVendorExportTask extends Tasker { } - private void save(CompanyVendorApprovedFile approvedFile) { + private void save(CompanyVendorApprovedFileVo approvedFile) { getFileService().save(approvedFile); } } diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListVendorImportTask.java b/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListVendorImportTask.java index d88b81d..71b0970 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListVendorImportTask.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListVendorImportTask.java @@ -16,15 +16,11 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.util.StringUtils; -import com.ecep.contract.VendorFileType; import com.ecep.contract.MessageHolder; +import com.ecep.contract.VendorFileType; import com.ecep.contract.VendorType; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.CompanyOldName; import com.ecep.contract.model.CompanyVendor; import com.ecep.contract.model.CompanyVendorApprovedItem; -import com.ecep.contract.model.CompanyVendorApprovedList; -import com.ecep.contract.model.CompanyVendorFile; import com.ecep.contract.model.Contract; import com.ecep.contract.service.CompanyOldNameService; import com.ecep.contract.service.CompanyVendorApprovedItemService; @@ -34,7 +30,13 @@ import com.ecep.contract.service.CompanyVendorService; import com.ecep.contract.service.ContractService; import com.ecep.contract.task.Tasker; import com.ecep.contract.util.ParamUtils; -import com.ecep.contract.util.ProxyUtils; +import com.ecep.contract.vo.CompanyOldNameVo; +import com.ecep.contract.vo.CompanyVendorApprovedItemVo; +import com.ecep.contract.vo.CompanyVendorApprovedListVo; +import com.ecep.contract.vo.CompanyVendorFileVo; +import com.ecep.contract.vo.CompanyVendorVo; +import com.ecep.contract.vo.CompanyVo; +import com.ecep.contract.vo.ContractVo; import lombok.Setter; @@ -48,7 +50,7 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { public static final String STR_MEET_TYPICALLY = "符合一般供方标准"; public static final String STR_MEET_UNQUALIFIED = "符合不合格供方标准"; - private final CompanyVendorApprovedList approvedList; + private final CompanyVendorApprovedListVo approvedList; private CompanyVendorApprovedListService service; private CompanyVendorApprovedItemService itemService; @@ -58,7 +60,7 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { private final AtomicInteger counter = new AtomicInteger(0); - public CompanyVendorApprovedListVendorImportTask(CompanyVendorApprovedList approvedList) { + public CompanyVendorApprovedListVendorImportTask(CompanyVendorApprovedListVo approvedList) { this.approvedList = approvedList; updateTitle("供方名录-供方导入"); } @@ -101,14 +103,14 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { service = getBean(CompanyVendorApprovedListService.class); CompanyVendorService vendorService = getBean(CompanyVendorService.class); - Page page = vendorService.findAll( + Page page = vendorService.findAll( ParamUtils.builder() .isNotNull("created") .lessThan("developDate", endDate) .build(), Pageable.unpaged()); holder.debug("读取到" + page.getTotalElements()); - try (Stream stream = page.stream()) { + try (Stream stream = page.stream()) { stream.forEach(v -> { if (isCancelled()) { holder.debug("Cancelled"); @@ -137,9 +139,9 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { @Setter private boolean logTypicallyVendorNoThreeYearContract = true; - private void sync(CompanyVendor vendor, MessageHolder holder) { + private void sync(CompanyVendorVo vendor, MessageHolder holder) { // 明确 company 实例 - Company company = initializedVendorCompany(vendor); + CompanyVo company = initializedVendorCompany(vendor); if (company == null) { // 无效 return; @@ -162,12 +164,12 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { } // 确认供方是否在供方名录中,可能有多个,所以返回 list,默认取第一个 - List items = getItemService().findAllByListAndVendor(approvedList, vendor); + List items = getItemService().findAllByListAndVendor(approvedList, vendor); if (items == null || items.isEmpty()) { // 供方不在供方名录中时,新建一个 - CompanyVendorApprovedItem item = new CompanyVendorApprovedItem(); - item.setList(approvedList); - item.setVendor(vendor); + CompanyVendorApprovedItemVo item = new CompanyVendorApprovedItemVo(); + item.setListId(approvedList.getId()); + item.setVendorId(vendor.getId()); // 当前供应商分类是不合格供应商时 if (vendorType == VendorType.UNQUALIFIED) { @@ -192,7 +194,7 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { // 非协议经销商 else { // 查看供方的合同,看近3年期间是否有合同 - List contracts = findAllVendorContracts(vendor, approvedList.getPublishDate()); + List contracts = findAllVendorContracts(vendor, approvedList.getPublishDate()); if (contracts.isEmpty()) { // 没有合同,应该归入不合格供应商 // 保持一般供应商分类,后期流程处理是否变更分类 @@ -225,7 +227,7 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { // 当前供应商分类是合格供方时 else if (vendorType == VendorType.QUALIFIED) { // 查看供方的合同,看近3年期间是否有合同 - List contracts = findAllVendorContracts(vendor, approvedList.getPublishDate()); + List contracts = findAllVendorContracts(vendor, approvedList.getPublishDate()); item.setType(vendorType); if (contracts.isEmpty()) { if (logTypicallyVendorNoThreeYearContract) { @@ -260,7 +262,7 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { } if (items.size() == 1) { - CompanyVendorApprovedItem first = items.getFirst(); + CompanyVendorApprovedItemVo first = items.getFirst(); if (!StringUtils.hasText(first.getVendorName())) { updateVendorNameWithOldName(vendor, first); } @@ -269,18 +271,18 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { } for (int i = 1; i < items.size(); i++) { - CompanyVendorApprovedItem item = items.get(i); + CompanyVendorApprovedItemVo item = items.get(i); getItemService().delete(item); subHolder.debug("删除重复的供方名录项:#" + item.getId()); } } - private void updateVendorNameWithOldName(CompanyVendor vendor, CompanyVendorApprovedItem item) { - Company company = initializedVendorCompany(vendor); + private void updateVendorNameWithOldName(CompanyVendorVo vendor, CompanyVendorApprovedItemVo item) { + CompanyVo company = initializedVendorCompany(vendor); if (company == null) { return; } - CompanyOldName companyOldName = getCompanyOldNameService().findMatchByDate(company, + CompanyOldNameVo companyOldName = getCompanyOldNameService().findMatchByDate(company, approvedList.getPublishDate()); if (companyOldName != null) { item.setVendorName(companyOldName.getName()); @@ -294,7 +296,7 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { private boolean logUnqualifiedVendorRemove = true; private void updateItem( - CompanyVendor vendor, CompanyVendorApprovedItem item, MessageHolder holder) { + CompanyVendorVo vendor, CompanyVendorApprovedItemVo item, MessageHolder holder) { VendorType t1 = item.getType(); VendorType vendorType = vendor.getType(); CompanyVendorApprovedItemService itemService = getItemService(); @@ -323,7 +325,7 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { // 非协议经销商 else { // 查看供方的合同,看近3年期间是否有合同 - List contracts = findAllVendorContracts(vendor, approvedList.getPublishDate()); + List contracts = findAllVendorContracts(vendor, approvedList.getPublishDate()); if (contracts.isEmpty()) { // 没有合同,应该归入不合格供应商 if (logTypicallyVendorNoThreeYearContract) { @@ -372,7 +374,7 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { return; } // 查看供方的合同,看近3年期间是否有合同 - List contracts = findAllVendorContracts(vendor, approvedList.getPublishDate()); + List contracts = findAllVendorContracts(vendor, approvedList.getPublishDate()); if (contracts.isEmpty()) { if (logTypicallyVendorNoThreeYearContract) { holder.warn("供方近" + vendorContractMinusYear + "年没有合作, 应该转为不合格供应商"); @@ -415,13 +417,13 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { * @see #findAllEvaluationFormFiles(CompanyVendor, LocalDate) */ private boolean checkAsQualifiedVendorByEvaluationFormFiles( - CompanyVendor vendor, CompanyVendorApprovedItem item, MessageHolder holder) { - List files = findAllEvaluationFormFiles(vendor, approvedList.getPublishDate()); + CompanyVendorVo vendor, CompanyVendorApprovedItemVo item, MessageHolder holder) { + List files = findAllEvaluationFormFiles(vendor, approvedList.getPublishDate()); if (files.isEmpty()) { return false; } - CompanyVendorFile first = files.getFirst(); + CompanyVendorFileVo first = files.getFirst(); item.setType(VendorType.TYPICALLY); File file = new File(first.getFilePath()); holder.info("供方是不合格供方, 但在发布期一年内有有效评价表 " + file.getName() + ", 调整为一般供应商"); @@ -450,10 +452,10 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { * @param date 日期 * @return 3年内是否都有合同 */ - private boolean checkAllYearHasContract(List list, LocalDate date) { + private boolean checkAllYearHasContract(List list, LocalDate date) { int end = date.getYear(); boolean[] has = new boolean[vendorContractMinusYear]; - for (Contract contract : list) { + for (ContractVo contract : list) { LocalDate setupDate = contract.getSetupDate(); if (setupDate != null) { has[end - setupDate.getYear()] = true; @@ -467,10 +469,10 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { return true; } - private boolean checkAllYearMinHasContract(List list, LocalDate date) { + private boolean checkAllYearMinHasContract(List list, LocalDate date) { int end = date.getYear(); int[] has = new int[vendorContractMinusYear]; - for (Contract contract : list) { + for (ContractVo contract : list) { LocalDate setupDate = contract.getSetupDate(); if (setupDate != null) { has[end - setupDate.getYear()]++; @@ -485,21 +487,21 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { } private boolean checkAsTypicallyVendorByContracts( - CompanyVendor vendor, CompanyVendorApprovedItem item, Consumer consumer) { + CompanyVendorVo vendor, CompanyVendorApprovedItemVo item, Consumer consumer) { // 查看供方的合同,看近3年期间是否有合同 - List contracts = findAllVendorContracts(vendor, approvedList.getPublishDate()); + List contracts = findAllVendorContracts(vendor, approvedList.getPublishDate()); if (contracts.isEmpty()) { return false; } // 合同按年份分组 - Map> collect = contracts.stream() + Map> collect = contracts.stream() .collect(Collectors.groupingBy(v -> v.getSetupDate().getYear())); // 3年都有合同, 看是否符合合格供方标准 if (collect.size() == vendorContractMinusYear) { // 每年的合同都超过1个合同 boolean more = true; - for (List value : collect.values()) { + for (List value : collect.values()) { if (value.size() < everyYearMinContracts) { more = false; } @@ -539,7 +541,7 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { * @param date 日期 * @return 3年内的合同列表 */ - private List findAllVendorContracts(CompanyVendor vendor, LocalDate date) { + private List findAllVendorContracts(CompanyVendorVo vendor, LocalDate date) { ContractService contractService = getContractService(); int beginYear = date.getYear() - (vendorContractMinusYear - 1); @@ -548,15 +550,8 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { return contractService.findAllByCompanyVendor(vendor, miniDate, date); } - private Company initializedVendorCompany(CompanyVendor vendor) { - Company company = vendor.getCompany(); - if (company == null) { - return null; - } - if (!ProxyUtils.isInitialized(company)) { - company = getCompanyService().findById(company.getId()); - vendor.setCompany(company); - } + private CompanyVo initializedVendorCompany(CompanyVendorVo vendor) { + CompanyVo company = getCompanyService().findById(vendor.getCompanyId()); return company; } @@ -570,11 +565,14 @@ public class CompanyVendorApprovedListVendorImportTask extends Tasker { * @param publishDate * @return */ - private List findAllEvaluationFormFiles(CompanyVendor vendor, LocalDate publishDate) { + private List findAllEvaluationFormFiles(CompanyVendorVo vendor, LocalDate publishDate) { CompanyVendorFileService fileService = getCompanyVendorFileService(); LocalDate miniDate = publishDate.minusYears(vendorFileMinusYear); - return fileService.findAll(ParamUtils.builder().equals("vendor", vendor.getId()).equals("valid", true) - .equals("type", VendorFileType.EvaluationForm).between("signDate", miniDate, publishDate) + return fileService.findAll(ParamUtils.builder() + .equals("vendor", vendor.getId()) + .equals("valid", true) + .equals("type", VendorFileType.EvaluationForm) + .between("signDate", miniDate, publishDate) .build(), Pageable.unpaged()).getContent(); } } diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListWindowController.java b/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListWindowController.java index abd9c09..11b901c 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/approved_list/CompanyVendorApprovedListWindowController.java @@ -12,11 +12,11 @@ import org.springframework.util.StringUtils; import com.ecep.contract.DesktopUtils; import com.ecep.contract.controller.AbstEntityController; -import com.ecep.contract.model.CompanyVendorApprovedList; import com.ecep.contract.service.CompanyVendorApprovedListService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.CompanyVendorApprovedListViewModel; +import com.ecep.contract.vo.CompanyVendorApprovedListVo; import javafx.event.ActionEvent; import javafx.scene.control.Button; @@ -35,11 +35,10 @@ import javafx.stage.WindowEvent; @Component @FxmlPath("/ui/company/vendor/vendor_approved_list.fxml") public class CompanyVendorApprovedListWindowController - extends AbstEntityController { + extends AbstEntityController { private static final Logger logger = LoggerFactory.getLogger(CompanyVendorApprovedListWindowController.class); - - public static void show(CompanyVendorApprovedList list, Window window) { + public static void show(CompanyVendorApprovedListVo list, Window window) { CompanyVendorApprovedListViewModel model = CompanyVendorApprovedListViewModel.from(list); show(CompanyVendorApprovedListWindowController.class, model, window); } @@ -68,7 +67,8 @@ public class CompanyVendorApprovedListWindowController @Override public void onShown(WindowEvent windowEvent) { super.onShown(windowEvent); - getTitle().bind(viewModel.getTitle().map(v -> "[" + viewModel.getId().get() + "] " + viewModel.getTitle().getValue() + " 供方名录")); + getTitle().bind(viewModel.getTitle() + .map(v -> "[" + viewModel.getId().get() + "] " + viewModel.getTitle().getValue() + " 供方名录")); } @Override @@ -98,15 +98,17 @@ public class CompanyVendorApprovedListWindowController } public void onVendorApprovedListVerifyAction(ActionEvent event) { + // 验证逻辑保持不变,但现在使用的是VO类 + // 在实际应用中,可能需要调整为通过service调用处理VO对象 } public void onApprovedListCreatePathAction(ActionEvent event) { int id = viewModel.getId().get(); - CompanyVendorApprovedList list = service.findById(id); + CompanyVendorApprovedListVo list = service.findById(id); if (service.makePathAbsent(list)) { - CompanyVendorApprovedList saved = service.save(list); + CompanyVendorApprovedListVo saved = service.save(list); viewModel.update(saved); } else { setStatus("目录存在或创建失败"); diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/group/AbstVendorGroupBasedTabSkin.java b/client/src/main/java/com/ecep/contract/controller/vendor/group/AbstVendorGroupBasedTabSkin.java index 244db60..af2f20e 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/group/AbstVendorGroupBasedTabSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/group/AbstVendorGroupBasedTabSkin.java @@ -2,12 +2,12 @@ package com.ecep.contract.controller.vendor.group; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.TabSkin; -import com.ecep.contract.model.VendorGroup; import com.ecep.contract.service.VendorGroupService; import com.ecep.contract.vm.VendorGroupViewModel; +import com.ecep.contract.vo.VendorGroupVo; public abstract class AbstVendorGroupBasedTabSkin - extends AbstEntityBasedTabSkin + extends AbstEntityBasedTabSkin implements TabSkin { public AbstVendorGroupBasedTabSkin(VendorGroupWindowController controller) { diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/group/VendorGroupManagerSkin.java b/client/src/main/java/com/ecep/contract/controller/vendor/group/VendorGroupManagerSkin.java index db563e9..31d4a2f 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/group/VendorGroupManagerSkin.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/group/VendorGroupManagerSkin.java @@ -1,40 +1,26 @@ package com.ecep.contract.controller.vendor.group; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.springframework.data.domain.Page; -import org.springframework.util.StringUtils; - import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.ManagerSkin; import com.ecep.contract.controller.table.EditableEntityTableTabSkin; -import com.ecep.contract.model.VendorGroup; import com.ecep.contract.service.VendorGroupService; import com.ecep.contract.vm.VendorGroupViewModel; +import com.ecep.contract.vo.VendorGroupVo; import javafx.scene.control.TableColumn; import javafx.scene.control.cell.TextFieldTableCell; -import lombok.Setter; public class VendorGroupManagerSkin extends - AbstEntityManagerSkin - implements ManagerSkin, EditableEntityTableTabSkin { - - @Setter - private VendorGroupService vendorGroupService; + AbstEntityManagerSkin + implements ManagerSkin, EditableEntityTableTabSkin { public VendorGroupManagerSkin(VendorGroupManagerWindowController controller) { super(controller); } private VendorGroupService getVendorGroupService() { - if (vendorGroupService == null) { - vendorGroupService = getBean(VendorGroupService.class); - } - return vendorGroupService; + return controller.getViewModelService(); } @Override @@ -42,18 +28,6 @@ public class VendorGroupManagerSkin initializeSaleTypeTable(); } - @Override - protected List loadTableData() { - Map params = new HashMap<>(); - String searchText = controller.searchKeyField.getText(); - if (StringUtils.hasText(searchText)) { - params.put("searchText", searchText); - } - Page page = getVendorGroupService().findAll(params, getPageable()); - updateFooter(page); - return page.map(VendorGroupViewModel::from).toList(); - } - private void initializeSaleTypeTable() { // table.setEditable(true); @@ -74,10 +48,10 @@ public class VendorGroupManagerSkin } @Override - public VendorGroup loadRowData(VendorGroupViewModel row) { - VendorGroup group = super.loadRowData(row); + public VendorGroupVo loadRowData(VendorGroupViewModel row) { + VendorGroupVo group = super.loadRowData(row); if (group == null) { - group = getVendorGroupService().newInstance(); + group = getVendorGroupService().createNewEntity(); } return group; } diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/group/VendorGroupManagerWindowController.java b/client/src/main/java/com/ecep/contract/controller/vendor/group/VendorGroupManagerWindowController.java index 4c82571..e50a97b 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/group/VendorGroupManagerWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/group/VendorGroupManagerWindowController.java @@ -6,10 +6,10 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import com.ecep.contract.controller.AbstManagerWindowController; -import com.ecep.contract.model.VendorGroup; import com.ecep.contract.service.VendorGroupService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.vm.VendorGroupViewModel; +import com.ecep.contract.vo.VendorGroupVo; import javafx.scene.control.TableColumn; import javafx.stage.WindowEvent; @@ -22,7 +22,7 @@ import javafx.stage.WindowEvent; @Component @FxmlPath("/ui/company/vendor/group-manager.fxml") public class VendorGroupManagerWindowController - extends AbstManagerWindowController { + extends AbstManagerWindowController { public TableColumn idColumn; public TableColumn codeColumn; public TableColumn nameColumn; @@ -31,8 +31,6 @@ public class VendorGroupManagerWindowController @Autowired VendorGroupService vendorGroupService; - - @Override public void onShown(WindowEvent windowEvent) { super.onShown(windowEvent); @@ -47,7 +45,6 @@ public class VendorGroupManagerWindowController @Override protected VendorGroupManagerSkin createDefaultSkin() { VendorGroupManagerSkin skin = new VendorGroupManagerSkin(this); - skin.setVendorGroupService(vendorGroupService); return skin; } diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/group/VendorGroupWindowController.java b/client/src/main/java/com/ecep/contract/controller/vendor/group/VendorGroupWindowController.java index 9cecd0c..4758a3f 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/group/VendorGroupWindowController.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/group/VendorGroupWindowController.java @@ -11,9 +11,9 @@ import org.springframework.stereotype.Component; import com.ecep.contract.ContractFileType; import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.util.FxmlPath; -import com.ecep.contract.model.VendorGroup; import com.ecep.contract.service.VendorGroupService; import com.ecep.contract.vm.VendorGroupViewModel; +import com.ecep.contract.vo.VendorGroupVo; import javafx.scene.control.CheckBox; import javafx.scene.control.Label; @@ -33,11 +33,10 @@ import javafx.stage.Window; @Component @FxmlPath("/ui/company/vendor/group.fxml") public class VendorGroupWindowController - extends AbstEntityController { + extends AbstEntityController { private static final Logger logger = LoggerFactory.getLogger(VendorGroupWindowController.class); - public static void show(VendorGroupViewModel item, Window owner) { show(VendorGroupWindowController.class, item, owner); } 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 7839879..26e4aa1 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 @@ -6,12 +6,11 @@ import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.vendor.PurchaseOrderWindowController; import com.ecep.contract.converter.EmployeeStringConverter; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.PurchaseOrder; import com.ecep.contract.service.CompanyService; import com.ecep.contract.service.ContractFileService; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.PurchaseOrderViewModel; +import com.ecep.contract.vo.PurchaseOrderVo; import javafx.beans.property.SimpleObjectProperty; import javafx.scene.control.Tab; @@ -19,13 +18,14 @@ import javafx.scene.control.TextField; import lombok.Setter; public class PurchaseOrderTabSkinBase - extends AbstEntityBasedTabSkin + extends AbstEntityBasedTabSkin implements TabSkin { @Setter private ContractFileService companyContactService; @Setter private CompanyService companyService; + private EmployeeStringConverter employeeStringConverter; public PurchaseOrderTabSkinBase(PurchaseOrderWindowController controller) { @@ -59,9 +59,9 @@ public class PurchaseOrderTabSkinBase controller.saveBtn.setOnAction(this::onSaveAction); } - private void initializeEmployeeField(TextField textField, SimpleObjectProperty property) { + private void initializeEmployeeField(TextField textField, SimpleObjectProperty property) { EmployeeStringConverter converter = getEmployeeStringConverter(); - UITools.autoCompletion(textField, property, converter::suggest, converter); + UITools.autoCompletion(textField, property, controller.getEmployeeService()); } public CompanyService getCompanyService() { @@ -71,7 +71,6 @@ public class PurchaseOrderTabSkinBase return companyService; } - public EmployeeStringConverter getEmployeeStringConverter() { if (employeeStringConverter == null) { employeeStringConverter = SpringApp.getBean(EmployeeStringConverter.class); diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/purchase/order/PurchaseOrderTabSkinBillVoucher.java b/client/src/main/java/com/ecep/contract/controller/vendor/purchase/order/PurchaseOrderTabSkinBillVoucher.java index 8799ed0..1fc2764 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/purchase/order/PurchaseOrderTabSkinBillVoucher.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/purchase/order/PurchaseOrderTabSkinBillVoucher.java @@ -1,25 +1,26 @@ package com.ecep.contract.controller.vendor.purchase.order; import java.time.LocalDateTime; -import java.util.Map; import com.ecep.contract.SpringApp; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin; +import com.ecep.contract.controller.table.cell.EmployeeTableCell; +import com.ecep.contract.controller.table.cell.InvoiceTableCell; import com.ecep.contract.controller.table.cell.LocalDateTimeTableCell; import com.ecep.contract.controller.vendor.PurchaseBillVoucherWindowController; import com.ecep.contract.controller.vendor.PurchaseOrderWindowController; import com.ecep.contract.converter.EmployeeStringConverter; import com.ecep.contract.converter.EntityStringConverter; -import com.ecep.contract.model.Employee; import com.ecep.contract.model.Invoice; -import com.ecep.contract.model.PurchaseBillVoucher; -import com.ecep.contract.model.PurchaseOrder; import com.ecep.contract.service.InvoiceService; import com.ecep.contract.service.PurchaseBillVoucherService; import com.ecep.contract.util.FxmlPath; +import com.ecep.contract.util.ParamUtils.Builder; import com.ecep.contract.vm.PurchaseBillVoucherViewModel; import com.ecep.contract.vm.PurchaseOrderViewModel; +import com.ecep.contract.vo.PurchaseBillVoucherVo; +import com.ecep.contract.vo.PurchaseOrderVo; import javafx.scene.control.ContextMenu; import javafx.scene.control.MenuItem; @@ -32,7 +33,7 @@ import lombok.Setter; @FxmlPath("/ui/contract/purchase-orders-tab-bill-voucher.fxml") public class PurchaseOrderTabSkinBillVoucher extends - AbstEntityTableTabSkin + AbstEntityTableTabSkin implements TabSkin { @Setter @@ -46,10 +47,10 @@ public class PurchaseOrderTabSkinBillVoucher public TableColumn idColumn; public TableColumn refIdColumn; public TableColumn codeColumn; - public TableColumn invoiceColumn; - public TableColumn employeeColumn; - public TableColumn makerColumn; - public TableColumn verifierColumn; + public TableColumn invoiceColumn; + public TableColumn employeeColumn; + public TableColumn makerColumn; + public TableColumn verifierColumn; public TableColumn makerDateColumn; public TableColumn verifierDateColumn; @@ -127,9 +128,9 @@ public class PurchaseOrderTabSkinBillVoucher // }); // } - public Map getSpecification(PurchaseOrder parent) { - Map params = getSpecification(); - params.put("purchaseOrder", parent); + public Builder getSpecification(PurchaseOrderVo parent) { + Builder params = getSpecification(); + params.equals("purchaseOrder", parent); return params; } @@ -140,16 +141,17 @@ public class PurchaseOrderTabSkinBillVoucher idColumn.setCellValueFactory(param -> param.getValue().getId()); codeColumn.setCellValueFactory(param -> param.getValue().getCode()); refIdColumn.setCellValueFactory(param -> param.getValue().getRefId().asString()); - employeeColumn.setCellValueFactory(param -> param.getValue().getEmployee()); + invoiceColumn.setCellValueFactory(param -> param.getValue().getInvoiceId()); + invoiceColumn.setCellFactory(InvoiceTableCell.forTableColumn(getInvoiceService())); - invoiceColumn.setCellValueFactory(param -> param.getValue().getInvoice()); - invoiceColumn.setCellFactory(TextFieldTableCell.forTableColumn(getInvoiceStringConverter())); + employeeColumn.setCellValueFactory(param -> param.getValue().getEmployeeId()); + employeeColumn.setCellFactory(EmployeeTableCell.forTableColumn(getEmployeeService())); - employeeColumn.setCellFactory(TextFieldTableCell.forTableColumn(getEmployeeStringConverter())); - makerColumn.setCellValueFactory(param -> param.getValue().getMaker()); - makerColumn.setCellFactory(TextFieldTableCell.forTableColumn(getEmployeeStringConverter())); - verifierColumn.setCellValueFactory(param -> param.getValue().getVerifier()); - verifierColumn.setCellFactory(TextFieldTableCell.forTableColumn(getEmployeeStringConverter())); + makerColumn.setCellValueFactory(param -> param.getValue().getMakerId()); + makerColumn.setCellFactory(EmployeeTableCell.forTableColumn(getEmployeeService())); + + verifierColumn.setCellValueFactory(param -> param.getValue().getVerifierId()); + verifierColumn.setCellFactory(EmployeeTableCell.forTableColumn(getEmployeeService())); makerDateColumn.setCellValueFactory(param -> param.getValue().getMakerDate()); makerDateColumn.setCellFactory(param -> new LocalDateTimeTableCell<>()); @@ -161,13 +163,6 @@ public class PurchaseOrderTabSkinBillVoucher descriptionColumn.setCellValueFactory(param -> param.getValue().getDescription()); } - private StringConverter getInvoiceStringConverter() { - EntityStringConverter stringConverter = new EntityStringConverter<>(); - stringConverter.setInitialized(cc -> getInvoiceService().findById(cc.getId())); - stringConverter.setFormater(Invoice::toPrettyString); - return stringConverter; - } - @Override protected void createContextMenu(ContextMenu contextMenu) { MenuItem item2 = new MenuItem("刷新"); @@ -191,13 +186,6 @@ public class PurchaseOrderTabSkinBillVoucher return billVoucherService; } - private EmployeeStringConverter getEmployeeStringConverter() { - if (employeeStringConverter == null) { - employeeStringConverter = getBean(EmployeeStringConverter.class); - } - return employeeStringConverter; - } - public InvoiceService getInvoiceService() { if (invoiceService == null) { invoiceService = SpringApp.getBean(InvoiceService.class); diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/purchase/order/PurchaseOrderTabSkinItems.java b/client/src/main/java/com/ecep/contract/controller/vendor/purchase/order/PurchaseOrderTabSkinItems.java index 5a56294..3abb9b5 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/purchase/order/PurchaseOrderTabSkinItems.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/purchase/order/PurchaseOrderTabSkinItems.java @@ -14,20 +14,21 @@ import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.controller.table.cell.InventoryTableCell; import com.ecep.contract.controller.vendor.PurchaseOrderWindowController; -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.ContractItem; -import com.ecep.contract.model.Inventory; -import com.ecep.contract.model.PurchaseOrder; -import com.ecep.contract.model.PurchaseOrderItem; import com.ecep.contract.service.ContractService; import com.ecep.contract.service.InventoryService; import com.ecep.contract.service.PurchaseOrderItemService; import com.ecep.contract.service.PurchaseOrdersService; import com.ecep.contract.util.FxmlPath; import com.ecep.contract.util.ProxyUtils; +import com.ecep.contract.util.ParamUtils.Builder; import com.ecep.contract.vm.ContractItemComposeViewModel; import com.ecep.contract.vm.PurchaseOrderItemViewModel; import com.ecep.contract.vm.PurchaseOrderViewModel; +import com.ecep.contract.vo.ContractItemVo; +import com.ecep.contract.vo.ContractVo; +import com.ecep.contract.vo.InventoryVo; +import com.ecep.contract.vo.PurchaseOrderItemVo; +import com.ecep.contract.vo.PurchaseOrderVo; import javafx.application.Platform; import javafx.collections.ObservableList; @@ -46,7 +47,7 @@ import lombok.Setter; @FxmlPath("/ui/contract/purchase-orders-tab-item.fxml") public class PurchaseOrderTabSkinItems extends - AbstEntityTableTabSkin + AbstEntityTableTabSkin implements TabSkin { @Setter PurchaseOrdersService purchaseOrdersService; @@ -59,8 +60,8 @@ public class PurchaseOrderTabSkinItems public TableView itemTable; public TableColumn idColumn; public TableColumn refIdColumn; - public TableColumn nameColumn; - public TableColumn unitColumn; + public TableColumn nameColumn; + public TableColumn unitColumn; public TableColumn itemTable_quantityColumn; public TableColumn itemTable_taxPriceColumn; @@ -98,22 +99,6 @@ public class PurchaseOrderTabSkinItems return getPurchaseOrderItemService(); } - static class UnitTableCell extends TableCell { - { - setAlignment(Pos.CENTER); - } - - @Override - protected void updateItem(String item, boolean empty) { - super.updateItem(item, empty); - if (empty || item == null) { - setText(null); - return; - } - setText(item); - } - } - PurchaseOrdersService getPurchaseOrdersService() { if (purchaseOrdersService == null) { purchaseOrdersService = getBean(PurchaseOrdersService.class); @@ -129,13 +114,13 @@ public class PurchaseOrderTabSkinItems } @Override - public Map getSpecification(PurchaseOrder parent) { - Map params = getSpecification(); - params.put("order", parent); + public Builder getSpecification(PurchaseOrderVo parent) { + Builder params = getSpecification(); + params.equals("order", parent); return params; } - ContractItemComposeViewModel createNew(String key, ContractItem item) { + ContractItemComposeViewModel createNew(String key, ContractItemVo item) { ContractItemComposeViewModel m = new ContractItemComposeViewModel(); // set key m.getTitle().set(item.getTitle()); @@ -143,8 +128,8 @@ public class PurchaseOrderTabSkinItems return m; } - private void addIn(HashMap map, List list) { - for (ContractItem item : list) { + private void addIn(HashMap map, List list) { + for (ContractItemVo item : list) { String key = makeKey(item); ContractItemComposeViewModel model = map.computeIfAbsent(key, k -> createNew(k, item)); model.getUnit().set(item.getUnit()); @@ -152,8 +137,8 @@ public class PurchaseOrderTabSkinItems } } - private void addOut(List list, HashMap map) { - for (ContractItem item : list) { + private void addOut(List list, HashMap map) { + for (ContractItemVo item : list) { String key = makeKey(item); ContractItemComposeViewModel model = map.computeIfAbsent(key, k -> createNew(k, item)); model.getUnit().set(item.getUnit()); @@ -169,15 +154,8 @@ public class PurchaseOrderTabSkinItems refIdColumn.setCellValueFactory(param -> param.getValue().getRefId()); nameColumn.setCellValueFactory(param -> param.getValue().getInventory()); nameColumn.setCellFactory(col -> new InventoryTableCell<>()); - unitColumn.setCellValueFactory(param -> param.getValue().getInventory().map(v -> { - if (v == null) - return null; - if (!ProxyUtils.isInitialized(v)) { - v = getInventoryService().findById(v.getId()); - } - return v.getUnit(); - })); - unitColumn.setCellFactory(col -> new UnitTableCell()); + // unitColumn.setCellValueFactory(param -> param.getValue().getInventory()); + // unitColumn.setCellFactory(col -> new UnitTableCell()); NumberCellFactory v1 = new NumberCellFactory("%,.1f", null); NumberCellFactory v2 = new NumberCellFactory("%,.2f", null); NumberCellFactory v3 = new NumberCellFactory("%,.2f", "custom-cell"); @@ -221,7 +199,7 @@ public class PurchaseOrderTabSkinItems contextMenu.getItems().addAll(item2, item3); } - private void sum(ContractItemComposeViewModel model, Contract contract, + private void sum(ContractItemComposeViewModel model, ContractVo contract, HashMap map) { double inQuantity = map.values().stream().map(ContractItemComposeViewModel::getIn) .mapToDouble(v -> v.getQuantity().get()).sum(); @@ -248,7 +226,7 @@ public class PurchaseOrderTabSkinItems Platform.runLater(() -> model.getOut().getExclusiveTaxAmount().set(outExclusiveTaxAmount)); } - String makeKey(ContractItem item) { + String makeKey(ContractItemVo item) { return item.getTitle() + "-" + item.getSpecification(); } @@ -273,12 +251,10 @@ public class PurchaseOrderTabSkinItems setText(String.format(format, item)); } - private void setTooltip(ObservableList list, Function getPrice) { + private void setTooltip(ObservableList list, Function getPrice) { String text = list.stream().map(v -> { - Contract contract = v.getContract(); - if (!ProxyUtils.isInitialized(contract)) { - contract = SpringApp.getBean(ContractService.class).findById(contract.getId()); - } + Integer contractId = v.getContractId(); + ContractVo contract = SpringApp.getBean(ContractService.class).findById(contractId); Double price = getPrice.apply(v); double quantity = v.getQuantity(); return contract.getCode() + " " + String.format(format, price) + " x " + quantity + " = " diff --git a/client/src/main/java/com/ecep/contract/controller/vendor/purchase/purchase_bill/PurchaseBillVoucherTabSkinItems.java b/client/src/main/java/com/ecep/contract/controller/vendor/purchase/purchase_bill/PurchaseBillVoucherTabSkinItems.java index a532a28..6d2023d 100644 --- a/client/src/main/java/com/ecep/contract/controller/vendor/purchase/purchase_bill/PurchaseBillVoucherTabSkinItems.java +++ b/client/src/main/java/com/ecep/contract/controller/vendor/purchase/purchase_bill/PurchaseBillVoucherTabSkinItems.java @@ -2,6 +2,8 @@ package com.ecep.contract.controller.vendor.purchase.purchase_bill; import java.util.Map; +import org.controlsfx.control.spreadsheet.SpreadsheetCellEditor.IntegerEditor; + import com.ecep.contract.SpringApp; import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin; @@ -10,20 +12,21 @@ import com.ecep.contract.controller.table.cell.InventoryTableCell; import com.ecep.contract.controller.table.cell.InvoiceTableCell; import com.ecep.contract.controller.table.cell.PurchaseOrderItemTableCell; import com.ecep.contract.controller.vendor.PurchaseBillVoucherWindowController; -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.Inventory; -import com.ecep.contract.model.Invoice; -import com.ecep.contract.model.PurchaseBillVoucher; -import com.ecep.contract.model.PurchaseBillVoucherItem; -import com.ecep.contract.model.PurchaseOrderItem; import com.ecep.contract.service.ContractService; import com.ecep.contract.service.InventoryService; import com.ecep.contract.service.InvoiceService; import com.ecep.contract.service.PurchaseBillVoucherItemService; import com.ecep.contract.service.PurchaseOrderItemService; import com.ecep.contract.util.FxmlPath; +import com.ecep.contract.util.ParamUtils.Builder; import com.ecep.contract.vm.PurchaseBillVoucherItemViewModel; import com.ecep.contract.vm.PurchaseBillVoucherViewModel; +import com.ecep.contract.vo.ContractVo; +import com.ecep.contract.vo.InventoryVo; +import com.ecep.contract.vo.InvoiceVo; +import com.ecep.contract.vo.PurchaseBillVoucherItemVo; +import com.ecep.contract.vo.PurchaseBillVoucherVo; +import com.ecep.contract.vo.PurchaseOrderItemVo; import javafx.geometry.Pos; import javafx.scene.control.Tab; @@ -34,16 +37,17 @@ import lombok.Setter; @FxmlPath("/ui/contract/purchase-bill-voucher-tab-item.fxml") public class PurchaseBillVoucherTabSkinItems - extends AbstEntityTableTabSkin + extends + AbstEntityTableTabSkin implements TabSkin { - /* 以下是合同内容 */ + /* 以下是合同内容 */ public TableColumn idColumn; public TableColumn refIdColumn; - public TableColumn inventoryColumn; - public TableColumn invoiceColumn; - public TableColumn orderItemColumn; - public TableColumn contractColumn; + public TableColumn inventoryColumn; + public TableColumn invoiceColumn; + public TableColumn orderItemColumn; + public TableColumn contractColumn; public TableColumn quantityColumn; public TableColumn priceColumn; @@ -101,9 +105,9 @@ public class PurchaseBillVoucherTabSkinItems } @Override - public Map getSpecification(PurchaseBillVoucher parent) { - Map params = getSpecification(); - params.put("voucher", parent.getId()); + public Builder getSpecification(PurchaseBillVoucherVo parent) { + Builder params = getSpecification(); + params.equals("voucher", parent.getId()); return params; } @@ -116,13 +120,13 @@ public class PurchaseBillVoucherTabSkinItems public void initializeTab() { idColumn.setCellValueFactory(param -> param.getValue().getId()); refIdColumn.setCellValueFactory(param -> param.getValue().getRefId()); - inventoryColumn.setCellValueFactory(param -> param.getValue().getInventory()); + inventoryColumn.setCellValueFactory(param -> param.getValue().getInventoryId()); inventoryColumn.setCellFactory(col -> new InventoryTableCell<>(getInventoryService())); - invoiceColumn.setCellValueFactory(param -> param.getValue().getInvoice()); + invoiceColumn.setCellValueFactory(param -> param.getValue().getInvoiceId()); invoiceColumn.setCellFactory(col -> new InvoiceTableCell<>(getInvoiceService())); - contractColumn.setCellValueFactory(param -> param.getValue().getContract()); + contractColumn.setCellValueFactory(param -> param.getValue().getContractId()); contractColumn.setCellFactory(col -> new ContractTableCell<>(getContractService())); - orderItemColumn.setCellValueFactory(param -> param.getValue().getOrderItem()); + orderItemColumn.setCellValueFactory(param -> param.getValue().getOrderItemId()); orderItemColumn.setCellFactory(col -> new PurchaseOrderItemTableCell<>(getPurchaseOrderItemService())); NumberCellFactory v1 = new NumberCellFactory("%,.1f", null); NumberCellFactory v2 = new NumberCellFactory("%,.2f", null); @@ -135,11 +139,11 @@ public class PurchaseBillVoucherTabSkinItems descriptionColumn.setCellValueFactory(param -> param.getValue().getDescription()); - super.initializeTab(); } - static class NumberCellFactory implements Callback, TableCell> { + static class NumberCellFactory implements + Callback, TableCell> { private final String format; public NumberCellFactory(String format, String styleClass) { @@ -147,7 +151,8 @@ public class PurchaseBillVoucherTabSkinItems } @Override - public TableCell call(TableColumn param) { + public TableCell call( + TableColumn param) { NumberTableCell cell = new NumberTableCell(format); cell.setAlignment(Pos.CENTER_RIGHT); return cell; @@ -172,5 +177,4 @@ public class PurchaseBillVoucherTabSkinItems } } - } diff --git a/client/src/main/java/com/ecep/contract/converter/CompanyCustomerStringConverter.java b/client/src/main/java/com/ecep/contract/converter/CompanyCustomerStringConverter.java new file mode 100644 index 0000000..f9f432b --- /dev/null +++ b/client/src/main/java/com/ecep/contract/converter/CompanyCustomerStringConverter.java @@ -0,0 +1,30 @@ +package com.ecep.contract.converter; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; + +import com.ecep.contract.service.CompanyCustomerService; +import com.ecep.contract.vo.CompanyCustomerVo; + +import jakarta.annotation.PostConstruct; + +@Lazy +@Component +public class CompanyCustomerStringConverter extends EntityStringConverter { + @Lazy + @Autowired + private CompanyCustomerService service; + + public CompanyCustomerStringConverter() { + + } + + @PostConstruct + private void init() { + setInitialized(customer -> service.findById(customer.getId())); + setSuggestion(service::search); + } + + +} \ No newline at end of file diff --git a/client/src/main/java/com/ecep/contract/converter/CompanyStringConverter.java b/client/src/main/java/com/ecep/contract/converter/CompanyStringConverter.java index dc990a1..583de49 100644 --- a/client/src/main/java/com/ecep/contract/converter/CompanyStringConverter.java +++ b/client/src/main/java/com/ecep/contract/converter/CompanyStringConverter.java @@ -4,14 +4,14 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; -import com.ecep.contract.model.Company; import com.ecep.contract.service.CompanyService; +import com.ecep.contract.vo.CompanyVo; import jakarta.annotation.PostConstruct; @Lazy @Component -public class CompanyStringConverter extends EntityStringConverter { +public class CompanyStringConverter extends EntityStringConverter { @Lazy @Autowired diff --git a/client/src/main/java/com/ecep/contract/converter/CompanyVendorStringConverter.java b/client/src/main/java/com/ecep/contract/converter/CompanyVendorStringConverter.java new file mode 100644 index 0000000..bef26f2 --- /dev/null +++ b/client/src/main/java/com/ecep/contract/converter/CompanyVendorStringConverter.java @@ -0,0 +1,30 @@ +package com.ecep.contract.converter; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; + +import com.ecep.contract.service.CompanyVendorService; +import com.ecep.contract.vo.CompanyVendorVo; + +import jakarta.annotation.PostConstruct; + +@Lazy +@Component +public class CompanyVendorStringConverter extends EntityStringConverter { + @Lazy + @Autowired + private CompanyVendorService service; + + public CompanyVendorStringConverter() { + + } + + @PostConstruct + private void init() { + setInitialized(vendor -> service.findById(vendor.getId())); + setSuggestion(service::search); + } + + +} \ No newline at end of file diff --git a/client/src/main/java/com/ecep/contract/converter/ContractGroupStringConverter.java b/client/src/main/java/com/ecep/contract/converter/ContractGroupStringConverter.java index b6508d6..da687d4 100644 --- a/client/src/main/java/com/ecep/contract/converter/ContractGroupStringConverter.java +++ b/client/src/main/java/com/ecep/contract/converter/ContractGroupStringConverter.java @@ -4,28 +4,29 @@ import java.util.List; import org.springframework.util.StringUtils; -import com.ecep.contract.model.ContractGroup; +import com.ecep.contract.vo.ContractGroupVo; -import javafx.util.StringConverter; +public class ContractGroupStringConverter extends EntityStringConverter { -public class ContractGroupStringConverter extends EntityStringConverter { - - private List dataset; + private List dataset; public ContractGroupStringConverter() { } - public ContractGroupStringConverter(List dataset) { + public ContractGroupStringConverter(List dataset) { this.dataset = dataset; } @Override - public String toString(ContractGroup group) { - return group == null ? "All" : ContractGroup.toString(group); + public String toString(ContractGroupVo group) { + if (group == null) { + return "All"; + } + return group.getName(); } @Override - public ContractGroup fromString(String string) { + public ContractGroupVo fromString(String string) { if (dataset == null) { return null; } @@ -33,11 +34,11 @@ public class ContractGroupStringConverter extends EntityStringConverter { +public class ContractStringConverter extends EntityStringConverter { @Lazy @Autowired ContractService service; diff --git a/client/src/main/java/com/ecep/contract/converter/ContractTypeStringConverter.java b/client/src/main/java/com/ecep/contract/converter/ContractTypeStringConverter.java index e70b8a5..b8fe540 100644 --- a/client/src/main/java/com/ecep/contract/converter/ContractTypeStringConverter.java +++ b/client/src/main/java/com/ecep/contract/converter/ContractTypeStringConverter.java @@ -1,9 +1,9 @@ package com.ecep.contract.converter; -import com.ecep.contract.model.ContractType; import com.ecep.contract.service.ContractTypeService; +import com.ecep.contract.vo.ContractTypeVo; -public class ContractTypeStringConverter extends EntityStringConverter { +public class ContractTypeStringConverter extends EntityStringConverter { ContractTypeService contractTypeService; public ContractTypeStringConverter(ContractTypeService contractTypeService) { diff --git a/client/src/main/java/com/ecep/contract/converter/DepartmentStringConverter.java b/client/src/main/java/com/ecep/contract/converter/DepartmentStringConverter.java new file mode 100644 index 0000000..b4c02d8 --- /dev/null +++ b/client/src/main/java/com/ecep/contract/converter/DepartmentStringConverter.java @@ -0,0 +1,30 @@ +package com.ecep.contract.converter; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; + +import com.ecep.contract.service.DepartmentService; +import com.ecep.contract.vo.DepartmentVo; + +import jakarta.annotation.PostConstruct; + +@Lazy +@Component +public class DepartmentStringConverter extends EntityStringConverter { + @Lazy + @Autowired + private DepartmentService service; + + public DepartmentStringConverter() { + + } + + @PostConstruct + private void init() { + setInitialized(department -> service.findById(department.getId())); + setSuggestion(service::search); + } + + +} \ No newline at end of file diff --git a/client/src/main/java/com/ecep/contract/converter/EmployeeStringConverter.java b/client/src/main/java/com/ecep/contract/converter/EmployeeStringConverter.java index 595c30c..2cd0c4c 100644 --- a/client/src/main/java/com/ecep/contract/converter/EmployeeStringConverter.java +++ b/client/src/main/java/com/ecep/contract/converter/EmployeeStringConverter.java @@ -4,14 +4,14 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; -import com.ecep.contract.model.Employee; import com.ecep.contract.service.EmployeeService; +import com.ecep.contract.vo.EmployeeVo; import jakarta.annotation.PostConstruct; @Lazy @Component -public class EmployeeStringConverter extends EntityStringConverter { +public class EmployeeStringConverter extends EntityStringConverter { @Lazy @Autowired private EmployeeService service; @@ -22,7 +22,7 @@ public class EmployeeStringConverter extends EntityStringConverter { @PostConstruct private void init() { - setInitialized(project -> service.findById(project.getId())); + setInitialized(employee -> service.findById(employee.getId())); setSuggestion(service::search); setFromString(service::findByName); } diff --git a/client/src/main/java/com/ecep/contract/converter/ProductTypeStringConverter.java b/client/src/main/java/com/ecep/contract/converter/ProductTypeStringConverter.java new file mode 100644 index 0000000..37338f5 --- /dev/null +++ b/client/src/main/java/com/ecep/contract/converter/ProductTypeStringConverter.java @@ -0,0 +1,30 @@ +package com.ecep.contract.converter; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; + +import com.ecep.contract.service.ProductTypeService; +import com.ecep.contract.vo.ProductTypeVo; + +import jakarta.annotation.PostConstruct; + +@Lazy +@Component +public class ProductTypeStringConverter extends EntityStringConverter { + @Lazy + @Autowired + private ProductTypeService service; + + public ProductTypeStringConverter() { + + } + + @PostConstruct + private void init() { + setInitialized(type -> service.findById(type.getId())); + setSuggestion(service::search); + } + + +} \ No newline at end of file diff --git a/client/src/main/java/com/ecep/contract/converter/ProductUsageStringConverter.java b/client/src/main/java/com/ecep/contract/converter/ProductUsageStringConverter.java new file mode 100644 index 0000000..d35123c --- /dev/null +++ b/client/src/main/java/com/ecep/contract/converter/ProductUsageStringConverter.java @@ -0,0 +1,30 @@ +package com.ecep.contract.converter; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; + +import com.ecep.contract.service.ProductUsageService; +import com.ecep.contract.vo.ProductUsageVo; + +import jakarta.annotation.PostConstruct; + +@Lazy +@Component +public class ProductUsageStringConverter extends EntityStringConverter { + @Lazy + @Autowired + private ProductUsageService service; + + public ProductUsageStringConverter() { + + } + + @PostConstruct + private void init() { + setInitialized(usage -> service.findById(usage.getId())); + setSuggestion(service::search); + } + + +} \ No newline at end of file diff --git a/client/src/main/java/com/ecep/contract/converter/ProjectIndustryStringConverter.java b/client/src/main/java/com/ecep/contract/converter/ProjectIndustryStringConverter.java new file mode 100644 index 0000000..0591e73 --- /dev/null +++ b/client/src/main/java/com/ecep/contract/converter/ProjectIndustryStringConverter.java @@ -0,0 +1,30 @@ +package com.ecep.contract.converter; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; + +import com.ecep.contract.service.ProjectIndustryService; +import com.ecep.contract.vo.ProjectIndustryVo; + +import jakarta.annotation.PostConstruct; + +@Lazy +@Component +public class ProjectIndustryStringConverter extends EntityStringConverter { + @Lazy + @Autowired + private ProjectIndustryService service; + + public ProjectIndustryStringConverter() { + + } + + @PostConstruct + private void init() { + setInitialized(industry -> service.findById(industry.getId())); + setSuggestion(service::search); + } + + +} \ No newline at end of file diff --git a/client/src/main/java/com/ecep/contract/converter/ProjectStringConverter.java b/client/src/main/java/com/ecep/contract/converter/ProjectStringConverter.java index a49b3ba..d071c64 100644 --- a/client/src/main/java/com/ecep/contract/converter/ProjectStringConverter.java +++ b/client/src/main/java/com/ecep/contract/converter/ProjectStringConverter.java @@ -1,7 +1,7 @@ package com.ecep.contract.converter; -import com.ecep.contract.model.Project; import com.ecep.contract.service.ProjectService; +import com.ecep.contract.vo.ProjectVo; import jakarta.annotation.PostConstruct; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; @@ -9,7 +9,7 @@ import org.springframework.stereotype.Component; @Lazy @Component -public class ProjectStringConverter extends EntityStringConverter { +public class ProjectStringConverter extends EntityStringConverter { @Lazy @Autowired diff --git a/client/src/main/java/com/ecep/contract/converter/VendorGroupStringConverter.java b/client/src/main/java/com/ecep/contract/converter/VendorGroupStringConverter.java new file mode 100644 index 0000000..1158db1 --- /dev/null +++ b/client/src/main/java/com/ecep/contract/converter/VendorGroupStringConverter.java @@ -0,0 +1,30 @@ +package com.ecep.contract.converter; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; + +import com.ecep.contract.service.VendorGroupService; +import com.ecep.contract.vo.VendorGroupVo; + +import jakarta.annotation.PostConstruct; + +@Lazy +@Component +public class VendorGroupStringConverter extends EntityStringConverter { + @Lazy + @Autowired + private VendorGroupService service; + + public VendorGroupStringConverter() { + + } + + @PostConstruct + private void init() { + setInitialized(group -> service.findById(group.getId())); + setSuggestion(service::search); + } + + +} \ No newline at end of file diff --git a/client/src/main/java/com/ecep/contract/service/CloudRkService.java b/client/src/main/java/com/ecep/contract/service/CloudRkService.java index fb0e23e..4bd87b1 100644 --- a/client/src/main/java/com/ecep/contract/service/CloudRkService.java +++ b/client/src/main/java/com/ecep/contract/service/CloudRkService.java @@ -4,14 +4,16 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import org.controlsfx.control.TaskProgressView; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import com.ecep.contract.Desktop; import com.ecep.contract.MessageHolder; -import com.ecep.contract.model.CloudRk; -import com.ecep.contract.model.Company; import com.ecep.contract.task.CloudRkSyncTask; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.CloudRkViewModel; +import com.ecep.contract.vo.CloudRkVo; +import com.ecep.contract.vo.CompanyVo; import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -19,7 +21,7 @@ import javafx.concurrent.Task; import lombok.Data; @Service -public class CloudRkService extends QueryService { +public class CloudRkService extends QueryService { @Data @JsonIgnoreProperties(ignoreUnknown = true) public static class EntInfo { @@ -46,22 +48,37 @@ public class CloudRkService extends QueryService { }, 1, TimeUnit.MINUTES); } - public CloudRk updateCloudRk(Company company, MessageHolder holder) { + public CloudRkVo updateCloudRk(Integer companyId, MessageHolder holder) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'updateCloudRk'"); } - public CloudRk getOrCreateCloudRk(Company company) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getOrCreateCloudRk'"); + public CloudRkVo getOrCreateCloudRk(CompanyVo company) { + CloudRkVo cloudRk = findByCompany(company); + if (cloudRk == null) { + cloudRk = new CloudRkVo(); + cloudRk.setCompanyId(company.getId()); + cloudRk.setCustomerGrade(""); + cloudRk.setCustomerScore(-1); + cloudRk.setVendorGrade(""); + cloudRk.setVendorScore(-1); + cloudRk.setRank(""); + cloudRk = save(cloudRk); + } + return cloudRk; } - public boolean checkBlackListUpdateElapse(Company company, CloudRk cloudRk) { + public CloudRkVo findByCompany(CompanyVo company) { + return findAll(ParamUtils.builder().equals("company", company.getId()).build(), Pageable.ofSize(1)).stream() + .findFirst().orElse(null); + } + + public boolean checkBlackListUpdateElapse(CompanyVo company, CloudRkVo cloudRk) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'checkBlackListUpdateElapse'"); } - public void updateBlackList(Company company, CloudRk cloudRk) { + public void updateBlackList(CompanyVo company, CloudRkVo cloudRk) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'updateBlackList'"); } diff --git a/client/src/main/java/com/ecep/contract/service/CloudTycService.java b/client/src/main/java/com/ecep/contract/service/CloudTycService.java index 68b643f..b28c9a5 100644 --- a/client/src/main/java/com/ecep/contract/service/CloudTycService.java +++ b/client/src/main/java/com/ecep/contract/service/CloudTycService.java @@ -1,6 +1,6 @@ package com.ecep.contract.service; -import java.time.Instant; +import java.time.LocalDateTime; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -8,15 +8,15 @@ import org.springframework.util.StringUtils; import com.ecep.contract.DesktopUtils; import com.ecep.contract.SpringApp; import com.ecep.contract.constant.CloudServiceConstant; -import com.ecep.contract.model.CloudTyc; -import com.ecep.contract.model.Company; import com.ecep.contract.util.UITools; import com.ecep.contract.vm.CloudTycInfoViewModel; +import com.ecep.contract.vo.CloudTycVo; +import com.ecep.contract.vo.CompanyVo; import javafx.application.Platform; @Service -public class CloudTycService extends QueryService { +public class CloudTycService extends QueryService { /** * 天眼查报告,文件名中必须包含 天眼查 字样 * @@ -30,13 +30,13 @@ public class CloudTycService extends QueryService viewModel.update(saved)); } } @@ -56,7 +56,7 @@ public class CloudTycService extends QueryService { +public class CompanyBlackReasonService extends QueryService { } diff --git a/client/src/main/java/com/ecep/contract/service/CompanyContactService.java b/client/src/main/java/com/ecep/contract/service/CompanyContactService.java index 39a2611..4b075c5 100644 --- a/client/src/main/java/com/ecep/contract/service/CompanyContactService.java +++ b/client/src/main/java/com/ecep/contract/service/CompanyContactService.java @@ -2,23 +2,35 @@ package com.ecep.contract.service; import java.util.List; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import com.ecep.contract.model.Company; -import com.ecep.contract.model.CompanyContact; +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.util.ParamUtils.Builder; import com.ecep.contract.vm.CompanyContactViewModel; +import com.ecep.contract.vo.CompanyContactVo; +import com.ecep.contract.vo.CompanyVo; @Service -public class CompanyContactService extends QueryService { +public class CompanyContactService extends QueryService { - public List searchByCompany(Company company, String userText) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'searchByCompany'"); + public List searchByCompany(Company company, String searchText) { + Builder params = getSpecification(searchText); + params.equals("company", company); + List list = findAll(params.build(), Pageable.ofSize(10)).getContent(); + return list; } - public CompanyContact findFirstByCompany(Company company) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'findFirstByCompany'"); + public CompanyContactVo findFirstByCompany(CompanyVo company) { + Builder params = ParamUtils.builder(); + params.equals("company", company); + Page page = findAll(params.build(), Pageable.unpaged()); + if (page.isEmpty()) { + return null; + } + return page.getContent().getFirst(); } } diff --git a/client/src/main/java/com/ecep/contract/service/CompanyCustomerEntityService.java b/client/src/main/java/com/ecep/contract/service/CompanyCustomerEntityService.java index a1443b1..2c5f6b2 100644 --- a/client/src/main/java/com/ecep/contract/service/CompanyCustomerEntityService.java +++ b/client/src/main/java/com/ecep/contract/service/CompanyCustomerEntityService.java @@ -1,25 +1,20 @@ package com.ecep.contract.service; import java.util.List; -import java.util.Map; -import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import com.ecep.contract.model.CompanyCustomer; -import com.ecep.contract.model.CompanyCustomerEntity; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.CustomerEntityViewModel; +import com.ecep.contract.vo.CompanyCustomerEntityVo; +import com.ecep.contract.vo.CompanyCustomerVo; @Service -public class CompanyCustomerEntityService extends QueryService { - public List findAllByCustomer(CompanyCustomer customer) { - throw new UnsupportedOperationException(); - } - - @Override - public Page findAll(Map params, Pageable pageable) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'findAll'"); +public class CompanyCustomerEntityService extends QueryService { + public List findAllByCustomer(CompanyCustomerVo customer) { + return findAll(ParamUtils.builder() + .equals("customer", customer.getId()).build(), Pageable.unpaged()) + .getContent(); } } diff --git a/client/src/main/java/com/ecep/contract/service/CompanyCustomerEvaluationFormFileService.java b/client/src/main/java/com/ecep/contract/service/CompanyCustomerEvaluationFormFileService.java new file mode 100644 index 0000000..c07067b --- /dev/null +++ b/client/src/main/java/com/ecep/contract/service/CompanyCustomerEvaluationFormFileService.java @@ -0,0 +1,51 @@ +package com.ecep.contract.service; + +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.vm.CompanyCustomerEvaluationFormFileViewModel; +import com.ecep.contract.vo.CompanyCustomerEvaluationFormFileVo; +import com.ecep.contract.vo.CompanyCustomerFileVo; + +import java.util.List; + +@Service +public class CompanyCustomerEvaluationFormFileService + extends QueryService { + + /** + * 根据ID查找客户评估表文件 + */ + public CompanyCustomerEvaluationFormFileVo findById(Integer id) { + return super.findById(id); + } + + /** + * 根据客户文件查找评估表文件 + */ + public CompanyCustomerEvaluationFormFileVo findByCustomerFile(CompanyCustomerFileVo customerFile) { + List page = findAll(ParamUtils.builder() + .equals("customerFile", customerFile.getId()) + .build(), Pageable.ofSize(1)) + .getContent(); + if (page.isEmpty()) { + return null; + } + return page.getFirst(); + } + + /** + * 保存客户评估表文件 + */ + public CompanyCustomerEvaluationFormFileVo save(CompanyCustomerEvaluationFormFileVo formFile) { + return super.save(formFile); + } + + /** + * 根据ID查找评估表文件 + */ + public CompanyCustomerEvaluationFormFileVo findCustomerEvaluationFormFileById(int id) { + return findById(id); + } +} diff --git a/client/src/main/java/com/ecep/contract/service/CompanyCustomerFileService.java b/client/src/main/java/com/ecep/contract/service/CompanyCustomerFileService.java index 8893e93..7c01387 100644 --- a/client/src/main/java/com/ecep/contract/service/CompanyCustomerFileService.java +++ b/client/src/main/java/com/ecep/contract/service/CompanyCustomerFileService.java @@ -1,32 +1,44 @@ package com.ecep.contract.service; -import com.ecep.contract.CompanyCustomerFileType; -import com.ecep.contract.MessageHolder; -import com.ecep.contract.SpringApp; -import com.ecep.contract.model.*; -import com.ecep.contract.util.ParamUtils; -import com.ecep.contract.vm.CompanyCustomerFileViewModel; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; - import java.io.File; import java.time.LocalDate; import java.util.Comparator; import java.util.List; -import java.util.Locale; import java.util.Map; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.ecep.contract.CompanyCustomerFileType; +import com.ecep.contract.MessageHolder; +import com.ecep.contract.SpringApp; +import com.ecep.contract.model.CompanyCustomer; +import com.ecep.contract.model.CompanyCustomerEvaluationFormFile; +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.vm.CompanyCustomerFileViewModel; +import com.ecep.contract.vo.CompanyCustomerFileVo; +import com.ecep.contract.vo.CompanyCustomerVo; +import com.ecep.contract.vo.CompanyVo; +import com.ecep.contract.vo.ContractVo; @Service -public class CompanyCustomerFileService extends QueryService { - public List findAllCustomerEvaluationFormFiles(CompanyCustomer customer) { - throw new UnsupportedOperationException(); +@CacheConfig(cacheNames = "customer-file") +public class CompanyCustomerFileService extends QueryService { + @Cacheable + @Override + public CompanyCustomerFileVo findById(Integer id) { + return super.findById(id); } - public LocalDate getNextSignDate(CompanyCustomer companyCustomer, MessageHolder holder) { + public LocalDate getNextSignDate(CompanyCustomerVo companyCustomer, MessageHolder holder) { LocalDate miniContractDate = LocalDate.of(2022, 1, 1); - Company company = companyCustomer.getCompany(); + Integer companyId = companyCustomer.getCompanyId(); + CompanyService companyService = SpringApp.getBean(CompanyService.class); + CompanyVo company = companyService.findById(companyId); ContractService contractService = SpringApp.getBean(ContractService.class); Map params = ParamUtils.builder().equals("company", company.getId()).build(); long count = contractService.count(params); @@ -36,18 +48,19 @@ public class CompanyCustomerFileService extends QueryService files = findAllByCustomerAndType(companyCustomer, CompanyCustomerFileType.EvaluationForm); - CompanyCustomerFile latestFile = files.stream() + List files = findAllByCustomerAndType(companyCustomer, + CompanyCustomerFileType.EvaluationForm); + CompanyCustomerFileVo latestFile = files.stream() .filter(v -> v.getSignDate() != null && v.isValid()) - .max(Comparator.comparing(CompanyCustomerFile::getSignDate)) + .max(Comparator.comparing(CompanyCustomerFileVo::getSignDate)) .orElse(null); if (latestFile == null) { // 没有有效的评估表的评价日期 holder.warn("未发现有效的评估表"); // 返回最早的合同日期 - Contract firstContract = contractService.findAll(params, Pageable.unpaged()).stream() + ContractVo firstContract = contractService.findAll(params, Pageable.unpaged()).stream() .filter(v -> v.getSetupDate() != null && !v.getSetupDate().isBefore(miniContractDate)) - .min(Comparator.comparing(Contract::getSetupDate)) + .min(Comparator.comparing(ContractVo::getSetupDate)) .orElse(null); if (firstContract == null) { holder.warn("最早的合同不存在?"); @@ -63,7 +76,7 @@ public class CompanyCustomerFileService extends QueryService matchedContracts = contractService.findAll(params, Pageable.unpaged()).stream() + List matchedContracts = contractService.findAll(params, Pageable.unpaged()).stream() .filter(v -> v.getSetupDate().isAfter(nextInValidDate)).toList(); // 没有在失效日期后的合同时,使用失效日期 if (matchedContracts.isEmpty()) { @@ -73,11 +86,12 @@ public class CompanyCustomerFileService extends QueryService findAllByCustomer(CompanyCustomer companyCustomer) { - return findAll(ParamUtils.builder().equals("customer", companyCustomer).build(), Pageable.unpaged()).getContent(); + public List findAllByCustomer(CompanyCustomerVo companyCustomer) { + return findAll(ParamUtils.builder().equals("customer", companyCustomer).build(), Pageable.unpaged()) + .getContent(); } - public CompanyCustomerEvaluationFormFile findCustomerEvaluationFormFileByCustomerFile( - CompanyCustomerFile customerFile) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'findCustomerEvaluationFormFileByCustomerFile'"); - } - - public CompanyCustomerEvaluationFormFile findCustomerEvaluationFormFileById(int id) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'findCustomerEvaluationFormFileById'"); - } - - public void save(CompanyCustomerEvaluationFormFile formFile) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'save'"); - } - - public Map getFileTypeLocalMap(Locale locale) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getFileTypeLocalMap'"); - } - - public List findAllByCustomerAndType(CompanyCustomer customer, CompanyCustomerFileType type) { - return findAll(ParamUtils.builder().equals("customer", customer.getId()).equals("type", type.name()).build(), Pageable.unpaged()).getContent(); + public List findAllByCustomerAndType(CompanyCustomerVo customer, CompanyCustomerFileType type) { + return findAll(ParamUtils.builder() + .equals("customer", customer.getId()) + .equals("type", type.name()) + .build(), Pageable.unpaged()).getContent(); } public List searchEvaluationFile(CompanyCustomer customer, String searchText) { - // TODO Auto-generated method stub + // TODO need move to CompanyCustomerEvaluationFormFileService throw new UnsupportedOperationException("Unimplemented method 'searchEvaluationFile'"); } + + @CacheEvict(allEntries = true) + @Override + public CompanyCustomerFileVo save(CompanyCustomerFileVo entity) { + return super.save(entity); + } } diff --git a/client/src/main/java/com/ecep/contract/service/CompanyCustomerService.java b/client/src/main/java/com/ecep/contract/service/CompanyCustomerService.java index ee73357..8a8e057 100644 --- a/client/src/main/java/com/ecep/contract/service/CompanyCustomerService.java +++ b/client/src/main/java/com/ecep/contract/service/CompanyCustomerService.java @@ -7,31 +7,38 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import com.ecep.contract.MessageHolder; -import com.ecep.contract.model.CompanyCustomer; +import com.ecep.contract.SpringApp; +import com.ecep.contract.constant.CompanyCustomerConstant; import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.CompanyCustomerViewModel; +import com.ecep.contract.vo.CompanyCustomerVo; import com.ecep.contract.vo.CompanyVo; @Service -public class CompanyCustomerService extends QueryService { +public class CompanyCustomerService extends QueryService { + private File basePath; - public CompanyCustomer findByCompany(CompanyVo company) { - Page page = findAll(ParamUtils.equal("company", company.getId()), Pageable.ofSize(1)); + public CompanyCustomerVo findByCompany(CompanyVo company) { + Page page = findAll(ParamUtils.equal("company", company.getId()), Pageable.ofSize(1)); if (page.isEmpty()) { return null; } return page.getContent().getFirst(); } - public boolean reBuildingFiles(CompanyCustomer companyCustomer, MessageHolder holder) { + public boolean reBuildingFiles(CompanyCustomerVo companyCustomer, MessageHolder holder) { throw new UnsupportedOperationException("Unimplemented method 'reBuildingFiles'"); } public File getBasePath() { - throw new UnsupportedOperationException("Unimplemented method 'getBasePath'"); + if (basePath == null) { + basePath = new File( + SpringApp.getBean(SysConfService.class).getString(CompanyCustomerConstant.KEY_BASE_PATH)); + } + return basePath; } - public boolean makePathAbsent(CompanyCustomer companyCustomer) { + public boolean makePathAbsent(CompanyCustomerVo companyCustomer) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'makePathAbsent'"); } diff --git a/client/src/main/java/com/ecep/contract/service/CompanyExtendInfoService.java b/client/src/main/java/com/ecep/contract/service/CompanyExtendInfoService.java index e4f92ab..5f3a04f 100644 --- a/client/src/main/java/com/ecep/contract/service/CompanyExtendInfoService.java +++ b/client/src/main/java/com/ecep/contract/service/CompanyExtendInfoService.java @@ -1,17 +1,18 @@ package com.ecep.contract.service; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.CompanyExtendInfo; -import com.ecep.contract.util.ParamUtils; -import com.ecep.contract.vm.CompanyExtendInfoViewModel; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.vm.CompanyExtendInfoViewModel; +import com.ecep.contract.vo.CompanyExtendInfoVo; +import com.ecep.contract.vo.CompanyVo; + @Service -public class CompanyExtendInfoService extends QueryService { - public CompanyExtendInfo findByCompany(Company company) { - Page page = findAll(ParamUtils.equal("company", company.getId()), Pageable.ofSize(1)); +public class CompanyExtendInfoService extends QueryService { + public CompanyExtendInfoVo findByCompany(CompanyVo company) { + Page page = findAll(ParamUtils.equal("company", company.getId()), Pageable.ofSize(1)); if (page.isEmpty()) { return null; } diff --git a/client/src/main/java/com/ecep/contract/service/CompanyFileService.java b/client/src/main/java/com/ecep/contract/service/CompanyFileService.java index 186ed3b..ced6a50 100644 --- a/client/src/main/java/com/ecep/contract/service/CompanyFileService.java +++ b/client/src/main/java/com/ecep/contract/service/CompanyFileService.java @@ -35,29 +35,27 @@ import com.ecep.contract.vo.CompanyVo; import javafx.collections.ObservableList; @Service -public class CompanyFileService extends QueryService { - public List findByCompany(Company company) { - Map params = new HashMap<>(); - params.put("company", company.getId()); - return findAll(params, Pageable.unpaged()).getContent(); +public class CompanyFileService extends QueryService { + public List findByCompany(CompanyVo company) { + if (company == null) { + return List.of(); + } + return findAll(ParamUtils.equal("company", company.getId()), Pageable.unpaged()).getContent(); } - public List findByCompanyAndPath(Company company, String absolutePath) { - Map params = new HashMap<>(); - params.put("company", company.getId()); - params.put("filePath", absolutePath); - return findAll(params, Pageable.unpaged()).getContent(); + public List findByCompanyAndPath(CompanyVo company, String absolutePath) { + return findAll(ParamUtils.builder().equals("company", company.getId()).equals("filePath", absolutePath).build(), + Pageable.unpaged()).getContent(); } - - public boolean reBuildingFiles(Company company, MessageHolder holder) { - List dbFiles = findByCompany(company); - List retrieveFiles = new ArrayList<>(); + public boolean reBuildingFiles(CompanyVo company, MessageHolder holder) { + List dbFiles = findByCompany(company); + List retrieveFiles = new ArrayList<>(); boolean modfied = false; - Map map = new HashMap<>(); + Map map = new HashMap<>(); // 排除掉数据库中重复的 - for (CompanyFile dbFile : dbFiles) { + for (CompanyFileVo dbFile : dbFiles) { String filePath = dbFile.getFilePath(); // 没有文件信息,无效记录,删除 if (!StringUtils.hasText(filePath)) { @@ -74,7 +72,7 @@ public class CompanyFileService extends QueryService oldNames = SpringApp.getBean(CompanyOldNameService.class).findAllByCompany(company); - for (CompanyOldName companyOldName : oldNames) { + List oldNames = SpringApp.getBean(CompanyOldNameService.class).findAllByCompany(company); + for (CompanyOldNameVo companyOldName : oldNames) { String path = companyOldName.getPath(); if (StringUtils.hasText(path)) { File dir = new File(path); @@ -123,7 +121,7 @@ public class CompanyFileService extends QueryService { - v.setCompany(company); + v.setCompanyId(company.getId()); save(v); }); return true; } - /** * 从文件名生成公司文件对象,文件已经存在公司对应的存储目录下 * @@ -150,9 +147,9 @@ public class CompanyFileService extends QueryService files = findFileByCompanyAndType(company, CompanyFileType.CreditReport); - CompanyFile companyFile = files.stream() + List files = findFileByCompanyAndType(company, CompanyFileType.CreditReport); + CompanyFileVo companyFile = files.stream() .filter(v -> v.getApplyDate() != null && v.getExpiringDate() != null) .filter(v -> MyDateTimeUtils.dateValidFilter(verifyDate, v.getApplyDate(), v.getExpiringDate(), 30)) .findFirst().orElse(null); @@ -257,14 +254,14 @@ public class CompanyFileService extends QueryService v.getApplyDate() != null && !verifyDate.isBefore(v.getApplyDate())) - .max(Comparator.comparing(CompanyFile::getApplyDate)) - .map(CompanyFile::getApplyDate) + .max(Comparator.comparing(CompanyFileVo::getApplyDate)) + .map(CompanyFileVo::getApplyDate) .ifPresent(dates::add); files.stream() .filter(v -> v.getExpiringDate() != null && !verifyDate.isAfter(v.getExpiringDate())) - .min(Comparator.comparing(CompanyFile::getApplyDate)) - .map(CompanyFile::getApplyDate) + .min(Comparator.comparing(CompanyFileVo::getApplyDate)) + .map(CompanyFileVo::getApplyDate) .ifPresent(dates::add); if (dates.isEmpty()) { @@ -278,26 +275,26 @@ public class CompanyFileService extends QueryService findFileByCompanyAndType(Company company, CompanyFileType companyFileType) { - return findAll(ParamUtils.builder().equals("company", company.getId()).equals("type", companyFileType).build(), Pageable.unpaged()).getContent(); + private List findFileByCompanyAndType(CompanyVo company, CompanyFileType companyFileType) { + return findAll(ParamUtils.builder().equals("company", company.getId()).equals("type", companyFileType).build(), + Pageable.unpaged()).getContent(); } - public LocalDate getNextCreditReportDate(Company company, Consumer state) { + public LocalDate getNextCreditReportDate(CompanyVo company, Consumer state) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'getNextCreditReportDate'"); } - public void copyAsMatched(Company company, LocalDate applyDate, Consumer state) { + public void copyAsMatched(CompanyVo company, LocalDate applyDate, Consumer state) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'copyAsMatched'"); } - public void copyAsMatchedByContract(Company parent, ObservableList list) { + public void copyAsMatchedByContract(CompanyVo company, ObservableList list) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'copyAsMatchedByContract'"); } - /** * 移动文件到企业目录下 * @@ -352,7 +349,7 @@ public class CompanyFileService extends QueryService { - v.setCompany(company); + v.setCompanyId(company.getId()); save(v); }); return true; } - /** * 从文件名生成公司文件对象 * 文件从下载目录中导入 @@ -386,7 +382,7 @@ public class CompanyFileService extends QueryService files = findByCompanyAndPath(company, dest.getAbsolutePath()); + List files = findByCompanyAndPath(company, dest.getAbsolutePath()); if (!files.isEmpty()) { companyFile = files.getFirst(); } @@ -477,11 +473,10 @@ public class CompanyFileService extends QueryService { + @Autowired + private CompanyService companyService; public boolean makePathAbsent(CompanyOldNameVo companyOldName) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'makePathAbsent'"); + String path = companyOldName.getPath(); + if (StringUtils.hasText(path)) { + File file = new File(path); + if (file.exists()) { + return false; + } + } + + File dir = makePath(companyOldName); + if (dir == null) { + return false; + } + if (!dir.exists()) { + return false; + } + companyOldName.setPath(dir.getAbsolutePath()); + return true; } - public CompanyOldName findMatchByDate(CompanyVo company, LocalDate localDate) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'findMatchByDate'"); + public File makePath(CompanyOldNameVo companyOldName) { + String oldName = companyOldName.getName(); + File basePath = companyService.getBasePath(); + CompanyVo company = companyService.findById(companyOldName.getCompanyId()); + String district = company.getDistrict(); + if (StringUtils.hasText(district)) { + String parentPrefix = FileUtils.getParentPrefixByDistrict(district); + if (parentPrefix != null) { + File parent = new File(basePath, parentPrefix); + if (!parent.exists()) { + if (!parent.mkdir()) { + return null; + } + } + String fileName = FileUtils.escapeFileName(oldName); + File dir = new File(parent, fileName); + if (!dir.exists()) { + if (!dir.mkdir()) { + return null; + } + } + return dir; + } + } + return null; + } + + public CompanyOldNameVo findMatchByDate(CompanyVo company, LocalDate localDate) { + Page page = findAll(ParamUtils.builder() + .equals("ambiguity", false) + .equals("company", company.getId()) + .and(b -> b.isNotNull("beginDate").greaterThan("beginDate", localDate)) + .and(b -> b.isNotNull("endDate").lessThan("endDate", localDate)) + .build(), Pageable.ofSize(1)); + if (page.isEmpty()) { + return null; + } + return page.getContent().getFirst(); } public List findAllByCompanyAndName(CompanyVo company, String oldName) { diff --git a/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedFileService.java b/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedFileService.java index cfea77b..61dd7e9 100644 --- a/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedFileService.java +++ b/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedFileService.java @@ -3,20 +3,20 @@ package com.ecep.contract.service; import org.springframework.stereotype.Service; import com.ecep.contract.MessageHolder; -import com.ecep.contract.model.CompanyVendorApprovedFile; -import com.ecep.contract.model.CompanyVendorApprovedList; import com.ecep.contract.vm.CompanyVendorApprovedFileViewModel; +import com.ecep.contract.vo.CompanyVendorApprovedFileVo; +import com.ecep.contract.vo.CompanyVendorApprovedListVo; @Service public class CompanyVendorApprovedFileService - extends QueryService { + extends QueryService { - public CompanyVendorApprovedFile findByName(CompanyVendorApprovedList approvedList, String name) { + public CompanyVendorApprovedFileVo findByName(CompanyVendorApprovedListVo approvedList, String name) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'findByName'"); } - public boolean reBuildingFiles(CompanyVendorApprovedList list, MessageHolder holder) { + public boolean reBuildingFiles(CompanyVendorApprovedListVo list, MessageHolder holder) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'reBuildingFiles'"); } diff --git a/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedItemService.java b/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedItemService.java index e330b47..efa80c5 100644 --- a/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedItemService.java +++ b/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedItemService.java @@ -2,21 +2,25 @@ package com.ecep.contract.service; import java.util.List; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import com.ecep.contract.model.CompanyVendor; -import com.ecep.contract.model.CompanyVendorApprovedItem; -import com.ecep.contract.model.CompanyVendorApprovedList; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.CompanyVendorApprovedItemViewModel; +import com.ecep.contract.vo.CompanyVendorApprovedItemVo; +import com.ecep.contract.vo.CompanyVendorApprovedListVo; +import com.ecep.contract.vo.CompanyVendorVo; @Service public class CompanyVendorApprovedItemService - extends QueryService { + extends QueryService { - public List findAllByListAndVendor(CompanyVendorApprovedList approvedList, - CompanyVendor vendor) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'findAllByListAndVendor'"); + public List findAllByListAndVendor(CompanyVendorApprovedListVo approvedList, + CompanyVendorVo vendor) { + return findAll(ParamUtils.builder() + .equals("list", approvedList.getId()) + .equals("vendor", vendor.getId()) + .build(), Pageable.unpaged()).getContent(); } } diff --git a/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedListService.java b/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedListService.java index bd6c00c..8955a50 100644 --- a/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedListService.java +++ b/client/src/main/java/com/ecep/contract/service/CompanyVendorApprovedListService.java @@ -5,22 +5,23 @@ import org.springframework.stereotype.Service; import com.ecep.contract.MessageHolder; import com.ecep.contract.model.CompanyVendorApprovedList; import com.ecep.contract.vm.CompanyVendorApprovedListViewModel; +import com.ecep.contract.vo.CompanyVendorApprovedListVo; @Service public class CompanyVendorApprovedListService - extends QueryService { + extends QueryService { - public boolean makePathAbsent(CompanyVendorApprovedList list) { + public boolean makePathAbsent(CompanyVendorApprovedListVo list) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'makePathAbsent'"); } - public boolean reBuildingFiles(CompanyVendorApprovedList list, MessageHolder holder) { + public boolean reBuildingFiles(CompanyVendorApprovedListVo list, MessageHolder holder) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'reBuildingFiles'"); } - public boolean existPath(CompanyVendorApprovedList entity) { + public boolean existPath(CompanyVendorApprovedListVo entity) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'existPath'"); } diff --git a/client/src/main/java/com/ecep/contract/service/CompanyVendorEntityService.java b/client/src/main/java/com/ecep/contract/service/CompanyVendorEntityService.java index a8172e6..f46e796 100644 --- a/client/src/main/java/com/ecep/contract/service/CompanyVendorEntityService.java +++ b/client/src/main/java/com/ecep/contract/service/CompanyVendorEntityService.java @@ -1,11 +1,53 @@ package com.ecep.contract.service; +import java.util.List; + +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import com.ecep.contract.model.CompanyVendorEntity; +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.vo.CompanyVendorEntityVo; +import com.ecep.contract.vo.CompanyVendorVo; import com.ecep.contract.vm.CompanyVendorEntityViewModel; +import com.ecep.contract.model.CompanyVendorEntity; @Service -public class CompanyVendorEntityService extends QueryService { - +public class CompanyVendorEntityService extends QueryService { + + /** + * 根据供应商ID查询关联实体列表 + */ + public List findByVendorId(Integer vendorId) { + return findAll(ParamUtils.builder().equals("vendorId", vendorId).build(), Pageable.unpaged()) + .getContent(); + } + + /** + * 根据CompanyVendor对象查询关联的CompanyVendorEntity列表 + */ + public List findByVendor(CompanyVendorVo vendor) { + return findByVendorId(vendor.getId()); + } + + /** + * 根据供应商ID创建新的CompanyVendorEntity实例 + */ + public CompanyVendorEntityVo newInstanceByVendor(CompanyVendorVo vendor) { + CompanyVendorEntityVo entity = createNewEntity(); + // 设置供应商ID + try { + // 通过反射设置vendor属性,因为实体类中可能没有直接的setVendorId方法 + entity.getClass().getMethod("setVendorId", Integer.class).invoke(entity, vendor.getId()); + } catch (Exception e) { + // 如果反射失败,尝试其他方式或记录错误 + throw new RuntimeException("Failed to set vendor ID", e); + } + return entity; + } + + @Override + public String getBeanName() { + // 确保返回正确的服务名称 + return "companyVendorEntityService"; + } } diff --git a/client/src/main/java/com/ecep/contract/service/CompanyVendorFileService.java b/client/src/main/java/com/ecep/contract/service/CompanyVendorFileService.java index 9c1a193..0c3aa7b 100644 --- a/client/src/main/java/com/ecep/contract/service/CompanyVendorFileService.java +++ b/client/src/main/java/com/ecep/contract/service/CompanyVendorFileService.java @@ -7,27 +7,30 @@ import java.util.Locale; import java.util.Map; import java.util.function.Consumer; -import com.ecep.contract.MessageHolder; -import com.ecep.contract.MyDateTimeUtils; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import com.ecep.contract.MessageHolder; +import com.ecep.contract.MyDateTimeUtils; import com.ecep.contract.VendorFileType; import com.ecep.contract.model.CompanyVendor; import com.ecep.contract.model.CompanyVendorFile; import com.ecep.contract.model.VendorFileTypeLocal; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.CompanyVendorFileViewModel; +import com.ecep.contract.vo.CompanyVendorFileVo; +import com.ecep.contract.vo.CompanyVendorVo; @Service -public class CompanyVendorFileService extends QueryService { +public class CompanyVendorFileService extends QueryService { - public LocalDate getNextSignDate(CompanyVendor companyVendor, Consumer state) { + public LocalDate getNextSignDate(CompanyVendorVo companyVendor, Consumer state) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'getNextSignDate'"); } - - public void saveAll(List companyVendorFiles) { - throw new UnsupportedOperationException("Unimplemented method 'saveAll'"); + public LocalDate getNextSignDate(CompanyVendor companyVendor, Consumer state) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'getNextSignDate'"); } public Map getFileTypeLocalMap(Locale locale) { @@ -35,9 +38,9 @@ public class CompanyVendorFileService extends QueryService files = findAllByVendorAndType(companyVendor, VendorFileType.EvaluationForm); + List files = findAllByVendorAndType(companyVendor, VendorFileType.EvaluationForm); if (files == null || files.isEmpty()) { holder.error("未见供应商评价"); return; @@ -45,15 +48,15 @@ public class CompanyVendorFileService extends QueryService v.getSignDate() != null && v.isValid()) .filter(v -> MyDateTimeUtils.dateValidFilter(v.getSignDate(), begin, verifyDate, 7)) .findFirst().orElse(null); if (vendorFile == null) { // 检索最后一个有效评价表 - CompanyVendorFile latestFile = files.stream() + CompanyVendorFileVo latestFile = files.stream() .filter(v -> v.getSignDate() != null && v.isValid()) - .max(Comparator.comparing(CompanyVendorFile::getSignDate)) + .max(Comparator.comparing(CompanyVendorFileVo::getSignDate)) .orElse(null); if (latestFile == null) { @@ -65,7 +68,10 @@ public class CompanyVendorFileService extends QueryService findAllByVendorAndType(CompanyVendor vendor, VendorFileType type) { - return findAll(Map.of("vendor", vendor.getId(), "type", type.name()), Pageable.unpaged()).getContent(); + public List findAllByVendorAndType(CompanyVendorVo vendor, VendorFileType type) { + return findAll(ParamUtils.builder() + .equals("vendor", vendor.getId()) + .equals("type", type.name()) + .build(), Pageable.unpaged()).getContent(); } } diff --git a/client/src/main/java/com/ecep/contract/service/CompanyVendorService.java b/client/src/main/java/com/ecep/contract/service/CompanyVendorService.java index 076454e..a1a763a 100644 --- a/client/src/main/java/com/ecep/contract/service/CompanyVendorService.java +++ b/client/src/main/java/com/ecep/contract/service/CompanyVendorService.java @@ -2,11 +2,8 @@ package com.ecep.contract.service; import java.io.File; import java.time.LocalDate; -import java.util.Collection; -import java.util.HashMap; import java.util.List; import java.util.Locale; -import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -15,20 +12,23 @@ import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import com.ecep.contract.MessageHolder; +import com.ecep.contract.SpringApp; import com.ecep.contract.VendorType; -import com.ecep.contract.model.Company; +import com.ecep.contract.constant.CompanyVendorConstant; import com.ecep.contract.model.CompanyVendor; -import com.ecep.contract.model.Contract; import com.ecep.contract.model.VendorCatalog; import com.ecep.contract.model.VendorTypeLocal; +import com.ecep.contract.util.CompanyUtils; +import com.ecep.contract.util.FileUtils; import com.ecep.contract.util.MyStringUtils; import com.ecep.contract.util.ParamUtils; -import com.ecep.contract.util.ProxyUtils; import com.ecep.contract.vm.CompanyVendorViewModel; +import com.ecep.contract.vo.CompanyVendorVo; import com.ecep.contract.vo.CompanyVo; +import com.ecep.contract.vo.ContractVo; @Service -public class CompanyVendorService extends QueryService { +public class CompanyVendorService extends QueryService { @Autowired private CompanyService companyService; @Autowired @@ -36,30 +36,50 @@ public class CompanyVendorService extends QueryService page = findAll(ParamUtils.equal("company", company.getId()), Pageable.ofSize(1)); + public CompanyVendorVo findByCompany(CompanyVo company) { + Page page = findAll(ParamUtils.equal("company", company.getId()), Pageable.ofSize(1)); if (page.isEmpty()) { return null; } return page.getContent().getFirst(); } + public boolean reBuildingFiles(CompanyVendorVo companyVendor, MessageHolder messageHolder) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'reBuildingFiles'"); + } + public boolean reBuildingFiles(CompanyVendor companyVendor, MessageHolder messageHolder) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'reBuildingFiles'"); } - public void verify(Contract contract, MessageHolder holder) { - Company company = contract.getCompany(); + public void verify(ContractVo contract, MessageHolder holder) { + CompanyVo company = companyService.findById(contract.getCompanyId()); if (company == null) { holder.error("合同未关联公司"); return; } - CompanyVendor companyVendor = findByCompany(company); + CompanyVendorVo companyVendor = findByCompany(company); if (companyVendor == null) { holder.error("合同未关联供应商"); return; @@ -88,12 +108,9 @@ public class CompanyVendorService extends QueryService findAllCatalogs() { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'findAllCatalogs'"); - } - public List findAllTypes(String languageTag) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'findAllTypes'"); } - public File getVendorApprovedListTemplate() { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getVendorApprovedListTemplate'"); + + public boolean makePathAbsent(CompanyVendorVo companyVendor) { + String path = companyVendor.getPath(); + if (StringUtils.hasText(path)) { + File file = new File(path); + if (file.exists()) { + return false; + } + } + + File dir = makePath(companyVendor); + if (dir == null) { + return false; + } + if (!dir.exists()) { + return false; + } + companyVendor.setPath(dir.getAbsolutePath()); + return true; } - public boolean makePathAbsent(CompanyVendor companyVendor) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'makePathAbsent'"); + public File makePath(CompanyVendorVo companyVendor) { + File basePath = getBasePath(); + CompanyVo company = companyService.findById(companyVendor.getCompanyId()); + String companyName = company.getName(); + String fileName = CompanyUtils.formatCompanyVendorId(companyVendor.getId()) + "-" + + FileUtils.escapeFileName(companyName); + + File dir = new File(basePath, fileName); + if (!dir.exists()) { + if (!dir.mkdir()) { + return null; + } + } + return dir; } } diff --git a/client/src/main/java/com/ecep/contract/service/ContractBidVendorService.java b/client/src/main/java/com/ecep/contract/service/ContractBidVendorService.java index b4525d2..f236a57 100644 --- a/client/src/main/java/com/ecep/contract/service/ContractBidVendorService.java +++ b/client/src/main/java/com/ecep/contract/service/ContractBidVendorService.java @@ -2,29 +2,33 @@ package com.ecep.contract.service; import java.util.List; -import com.ecep.contract.util.ParamUtils; -import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import org.springframework.data.domain.Pageable; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.ContractBidVendor; +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.vo.ContractBidVendorVo; import com.ecep.contract.vm.ContractBidVendorViewModel; +import com.ecep.contract.vo.ContractVo; +import com.ecep.contract.vo.CompanyVo; @Service -public class ContractBidVendorService extends QueryService { +public class ContractBidVendorService extends QueryService { - public List findByContract(Contract contract) { + public List findByContract(ContractVo contract) { return findAll(ParamUtils.builder() .equals("contract", contract.getId()) .build(), Pageable.unpaged()).getContent(); } - public List findByContractAndCompany(Contract contract, Company company) { + public List findByContractAndCompany(ContractVo contract, CompanyVo company) { return findAll(ParamUtils.builder() .equals("contract", contract.getId()) .equals("company", company.getId()) .build(), Pageable.unpaged()).getContent(); } + @Override + public ContractBidVendorViewModel createNewViewModel() { + return new ContractBidVendorViewModel(); + } } diff --git a/client/src/main/java/com/ecep/contract/service/ContractFileService.java b/client/src/main/java/com/ecep/contract/service/ContractFileService.java index c5a1470..b0e3e2b 100644 --- a/client/src/main/java/com/ecep/contract/service/ContractFileService.java +++ b/client/src/main/java/com/ecep/contract/service/ContractFileService.java @@ -1,30 +1,26 @@ package com.ecep.contract.service; -import java.util.HashMap; import java.util.List; -import java.util.Map; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import com.ecep.contract.ContractFileType; -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.ContractFile; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.ContractFileViewModel; +import com.ecep.contract.vo.ContractFileVo; +import com.ecep.contract.vo.ContractVo; @Service -public class ContractFileService extends QueryService { - public List findAllByContract(Contract contract) { - Map params = new HashMap<>(); - params.put("contract", contract.getId()); - return findAll(params, Pageable.unpaged()).getContent(); +public class ContractFileService extends QueryService { + public List findAllByContract(ContractVo contract) { + return findAll(ParamUtils.equal("contract", contract.getId()), Pageable.unpaged()).getContent(); } - public List findAllByContractAndFileType(Contract contract, ContractFileType type) { - Map params = new HashMap<>(); - params.put("contract", contract.getId()); - params.put("type", type.name()); - return findAll(params, Pageable.unpaged()).getContent(); + public List findAllByContractAndFileType(ContractVo contract, ContractFileType type) { + return findAll(ParamUtils.builder() + .equals("contract", contract.getId()) + .equals("type", type.name()).build(), Pageable.unpaged()).getContent(); } } diff --git a/client/src/main/java/com/ecep/contract/service/ContractGroupService.java b/client/src/main/java/com/ecep/contract/service/ContractGroupService.java index df69afc..c7d4e05 100644 --- a/client/src/main/java/com/ecep/contract/service/ContractGroupService.java +++ b/client/src/main/java/com/ecep/contract/service/ContractGroupService.java @@ -1,34 +1,33 @@ package com.ecep.contract.service; -import com.ecep.contract.model.ContractKind; +import java.util.List; + import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Caching; import org.springframework.stereotype.Service; -import com.ecep.contract.model.ContractGroup; import com.ecep.contract.vm.ContractGroupViewModel; - -import java.util.List; +import com.ecep.contract.vo.ContractGroupVo; @Service @CacheConfig(cacheNames = "contract-group") -public class ContractGroupService extends QueryService { +public class ContractGroupService extends QueryService { @Override @Cacheable(key = "#p0") - public ContractGroup findById(Integer id) { + public ContractGroupVo findById(Integer id) { return super.findById(id); } - public ContractGroup findByCode(String code) { + public ContractGroupVo findByCode(String code) { try { return async("findByCode", code, String.class).handle((response, ex) -> { if (ex != null) { throw new RuntimeException("远程方法+findByCode+调用失败", ex); } - ContractGroup newEntity = createNewEntity(); + ContractGroupVo newEntity = createNewEntity(); return updateValue(newEntity, response); }).get(); } catch (Exception e) { @@ -38,7 +37,7 @@ public class ContractGroupService extends QueryService findAll() { + public List findAll() { return super.findAll(); } @@ -46,7 +45,7 @@ public class ContractGroupService extends QueryService { +public class ContractItemService extends QueryService { - public List findAllByInventory(Inventory parent) { - HashMap params = new HashMap<>(); - params.put("inventory", parent.getId()); - return findAll(params, null).getContent(); + public List findAllByInventory(InventoryVo parent) { + return findAll(ParamUtils.builder().equals("inventory", parent.getId()).build(), Pageable.unpaged()) + .getContent(); } } diff --git a/client/src/main/java/com/ecep/contract/service/ContractKindService.java b/client/src/main/java/com/ecep/contract/service/ContractKindService.java index 6169897..dc1c574 100644 --- a/client/src/main/java/com/ecep/contract/service/ContractKindService.java +++ b/client/src/main/java/com/ecep/contract/service/ContractKindService.java @@ -1,30 +1,29 @@ package com.ecep.contract.service; -import com.ecep.contract.model.ContractType; +import java.util.List; + import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Caching; import org.springframework.stereotype.Service; -import com.ecep.contract.model.ContractKind; import com.ecep.contract.vm.ContractKindViewModel; - -import java.util.List; +import com.ecep.contract.vo.ContractKindVo; @Service @CacheConfig(cacheNames = "contract-kind") -public class ContractKindService extends QueryService { +public class ContractKindService extends QueryService { @Cacheable(key = "#p0") @Override - public ContractKind findById(Integer id) { + public ContractKindVo findById(Integer id) { return super.findById(id); } - public ContractKind findByName(String name) { + public ContractKindVo findByName(String name) { try { return async("findByName", name, String.class).handle((response, ex) -> { - ContractKind newEntity = createNewEntity(); + ContractKindVo newEntity = createNewEntity(); return updateValue(newEntity, response); }).get(); } catch (Exception e) { @@ -33,13 +32,13 @@ public class ContractKindService extends QueryService { if (ex != null) { throw new RuntimeException("远程方法+findByCode+调用失败", ex); } - ContractKind newEntity = createNewEntity(); + ContractKindVo newEntity = createNewEntity(); return updateValue(newEntity, response); }).get(); } catch (Exception e) { @@ -49,7 +48,7 @@ public class ContractKindService extends QueryService findAll() { + public List findAll() { return super.findAll(); } @@ -57,7 +56,7 @@ public class ContractKindService extends QueryService { +public class ContractService extends QueryService { @Autowired private SysConfService confService; @@ -43,7 +45,7 @@ public class ContractService extends QueryService { } @Cacheable(key = "#p0") - public Contract findById(Integer id) { + public ContractVo findById(Integer id) { return super.findById(id); } @@ -54,7 +56,7 @@ public class ContractService extends QueryService { @CacheEvict(key = "#p0.id"), @CacheEvict(key = "'code-'+#p0.code") }) - public Contract save(Contract contract) { + public ContractVo save(ContractVo contract) { return super.save(contract); } @@ -62,24 +64,24 @@ public class ContractService extends QueryService { @CacheEvict(key = "#p0.id"), @CacheEvict(key = "'code-'+#p0.code") }) - public void delete(Contract contract) { + public void delete(ContractVo contract) { super.delete(contract); } - public boolean updateParentCode(Contract contract) { + public boolean updateParentCode(ContractVo contract) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'updateParentCode'"); } @Cacheable(key = "'code-'+#p0") - public Contract findByCode(String code) { + public ContractVo findByCode(String code) { try { return async("findByCode", code, String.class).handle((response, ex) -> { if (ex != null) { throw new RuntimeException("远程方法+findByCode+调用失败", ex); } if (response != null) { - return updateValue(new Contract(), response); + return updateValue(createNewEntity(), response); } return null; }).get(); @@ -88,11 +90,11 @@ public class ContractService extends QueryService { } } - public Contract findByName(String name) { + public ContractVo findByName(String name) { try { return async("findByName", name, String.class).handle((response, ex) -> { if (response != null) { - return updateValue(new Contract(), response); + return updateValue(createNewEntity(), response); } return null; }).get(); @@ -101,7 +103,7 @@ public class ContractService extends QueryService { } } - public List findAllBySaleContract(Contract contract) { + public List findAllBySaleContract(ContractVo contract) { String parentCode = contract.getCode(); if (StringUtils.isEmpty(parentCode)) { return List.of(); @@ -109,7 +111,7 @@ public class ContractService extends QueryService { return findAll(ParamUtils.equal("parentCode", parentCode), Pageable.unpaged()).getContent(); } - public boolean checkContractPathInBasePath(Contract v) { + public boolean checkContractPathInBasePath(ContractVo v) { if (!existsContractPath(v)) { return false; } @@ -121,7 +123,7 @@ public class ContractService extends QueryService { return path.getAbsolutePath().startsWith(basePath.getAbsolutePath()); } - public boolean existsContractPath(Contract v) { + public boolean existsContractPath(ContractVo v) { if (!org.springframework.util.StringUtils.hasText(v.getPath())) { return false; } @@ -130,42 +132,37 @@ public class ContractService extends QueryService { return path.exists(); } - public boolean makePathAbsent(Contract contract) { + public boolean makePathAbsent(ContractVo contract) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'makePathAbsent'"); } - public List findAllByCompanyVendor(CompanyVendor vendor, LocalDate beginDate, LocalDate endDate) { - Company company = vendor.getCompany(); + public List findAllByCompanyVendor(CompanyVendorVo vendor, LocalDate beginDate, LocalDate endDate) { return findAll(ParamUtils.builder() - .equals("company", company.getId()) + .equals("company", vendor.getCompanyId()) .between("setupDate", beginDate, endDate) .build(), Pageable.unpaged()).getContent(); } - public List findAllSalesByProject(Project project) { - HashMap params = new HashMap<>(); - params.put("parentCode", ""); - params.put("project", project.getId()); - return findAll(params, Pageable.unpaged()).getContent(); + public List findAllSalesByProject(ProjectVo project) { + return findAll(ParamUtils.builder() + .equals("parentCode", "") + .equals("project", project.getId()).build(), + Pageable.unpaged()).getContent(); } - public Contract findSalesByProject(Project project) { - HashMap params = new HashMap<>(); - params.put("parentCode", ""); - params.put("project", project.getId()); - Page page = findAll(params, Pageable.ofSize(1)); + public ContractVo findSalesByProject(ProjectVo project) { + Page page = findAll(ParamUtils.builder() + .equals("parentCode", "") + .equals("project", project.getId()).build(), Pageable.ofSize(1)); if (page.isEmpty()) { return null; } return page.getContent().getFirst(); } - - public List findAllByProject(Project project) { - HashMap params = new HashMap<>(); - params.put("project", project.getId()); - return findAll(params, Pageable.unpaged()).getContent(); + public List findAllByProject(ProjectVo project) { + return findAll(ParamUtils.equal("project", project.getId()), Pageable.unpaged()).getContent(); } public void syncContractFile(ContractFile contractFile, File outputFile, MessageHolder holder) { diff --git a/client/src/main/java/com/ecep/contract/service/ContractTypeService.java b/client/src/main/java/com/ecep/contract/service/ContractTypeService.java index 5ca7244..8620574 100644 --- a/client/src/main/java/com/ecep/contract/service/ContractTypeService.java +++ b/client/src/main/java/com/ecep/contract/service/ContractTypeService.java @@ -1,29 +1,29 @@ 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; import org.springframework.cache.annotation.Caching; import org.springframework.stereotype.Service; -import com.ecep.contract.model.ContractType; import com.ecep.contract.vm.ContractTypeViewModel; - -import java.util.List; +import com.ecep.contract.vo.ContractTypeVo; @Service @CacheConfig(cacheNames = "contract-type") -public class ContractTypeService extends QueryService { +public class ContractTypeService extends QueryService { @Cacheable(key = "#p0") @Override - public ContractType findById(Integer id) { + public ContractTypeVo findById(Integer id) { return super.findById(id); } - public ContractType findByName(String name) { + public ContractTypeVo findByName(String name) { try { return async("findByName", name, String.class).handle((response, ex) -> { - ContractType newEntity = createNewEntity(); + ContractTypeVo newEntity = createNewEntity(); return updateValue(newEntity, response); }).get(); } catch (Exception e) { @@ -31,13 +31,13 @@ public class ContractTypeService extends QueryService { if (ex != null) { throw new RuntimeException("远程方法+findByCode+调用失败", ex); } - ContractType newEntity = createNewEntity(); + ContractTypeVo newEntity = createNewEntity(); return updateValue(newEntity, response); }).get(); } catch (Exception e) { @@ -47,7 +47,7 @@ public class ContractTypeService extends QueryService findAll() { + public List findAll() { return super.findAll(); } @@ -55,7 +55,7 @@ public class ContractTypeService extends QueryService{ } diff --git a/client/src/main/java/com/ecep/contract/service/CustomerSatisfactionSurveyService.java b/client/src/main/java/com/ecep/contract/service/CustomerSatisfactionSurveyService.java index b696e9a..76b633e 100644 --- a/client/src/main/java/com/ecep/contract/service/CustomerSatisfactionSurveyService.java +++ b/client/src/main/java/com/ecep/contract/service/CustomerSatisfactionSurveyService.java @@ -2,11 +2,11 @@ package com.ecep.contract.service; import org.springframework.stereotype.Service; -import com.ecep.contract.model.CustomerSatisfactionSurvey; import com.ecep.contract.vm.CustomerSatisfactionSurveyViewModel; +import com.ecep.contract.vo.CustomerSatisfactionSurveyVo; @Service public class CustomerSatisfactionSurveyService - extends QueryService { + extends QueryService { } 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 bcc3066..90fcdcd 100644 --- a/client/src/main/java/com/ecep/contract/service/DeliverySignMethodService.java +++ b/client/src/main/java/com/ecep/contract/service/DeliverySignMethodService.java @@ -1,11 +1,13 @@ package com.ecep.contract.service; +import org.springframework.cache.annotation.CacheConfig; import org.springframework.stereotype.Service; -import com.ecep.contract.model.DeliverySignMethod; import com.ecep.contract.vm.DeliverySignMethodViewModel; +import com.ecep.contract.vo.DeliverySignMethodVo; @Service -public class DeliverySignMethodService extends QueryService { +@CacheConfig(cacheNames = "delivery-sign-method") +public class DeliverySignMethodService extends QueryService { } diff --git a/client/src/main/java/com/ecep/contract/service/DepartmentService.java b/client/src/main/java/com/ecep/contract/service/DepartmentService.java index 1fb8f04..e8a74c0 100644 --- a/client/src/main/java/com/ecep/contract/service/DepartmentService.java +++ b/client/src/main/java/com/ecep/contract/service/DepartmentService.java @@ -2,10 +2,10 @@ package com.ecep.contract.service; import org.springframework.stereotype.Service; -import com.ecep.contract.model.Department; import com.ecep.contract.vm.DepartmentViewModel; +import com.ecep.contract.vo.DepartmentVo; @Service -public class DepartmentService extends QueryService { +public class DepartmentService extends QueryService { } diff --git a/client/src/main/java/com/ecep/contract/service/EmployeeAuthBindService.java b/client/src/main/java/com/ecep/contract/service/EmployeeAuthBindService.java index f407bf4..770f84c 100644 --- a/client/src/main/java/com/ecep/contract/service/EmployeeAuthBindService.java +++ b/client/src/main/java/com/ecep/contract/service/EmployeeAuthBindService.java @@ -2,7 +2,10 @@ package com.ecep.contract.service; import com.ecep.contract.model.Employee; import com.ecep.contract.model.EmployeeAuthBind; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.EmployeeAuthBindViewModel; +import com.ecep.contract.vo.EmployeeAuthBindVo; +import com.ecep.contract.vo.EmployeeVo; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -11,12 +14,10 @@ import java.util.List; import java.util.Map; @Service -public class EmployeeAuthBindService extends QueryService { +public class EmployeeAuthBindService extends QueryService { - public List findAllByEmployee(Employee employee) { - Map params = new HashMap(); - params.put("employee", null); - return findAll(params, Pageable.unpaged()).getContent(); + public List findAllByEmployee(EmployeeVo employee) { + return findAll(ParamUtils.builder().equals("employee", employee).build(), Pageable.unpaged()).getContent(); } } diff --git a/client/src/main/java/com/ecep/contract/service/EmployeeLoginHistoryService.java b/client/src/main/java/com/ecep/contract/service/EmployeeLoginHistoryService.java index 24646ed..65304e4 100644 --- a/client/src/main/java/com/ecep/contract/service/EmployeeLoginHistoryService.java +++ b/client/src/main/java/com/ecep/contract/service/EmployeeLoginHistoryService.java @@ -2,11 +2,11 @@ package com.ecep.contract.service; import org.springframework.stereotype.Service; -import com.ecep.contract.model.EmployeeLoginHistory; import com.ecep.contract.vm.EmployeeLoginHistoryViewModel; +import com.ecep.contract.vo.EmployeeLoginHistoryVo; @Service public class EmployeeLoginHistoryService - extends QueryService { + extends QueryService { } diff --git a/client/src/main/java/com/ecep/contract/service/EmployeeRoleService.java b/client/src/main/java/com/ecep/contract/service/EmployeeRoleService.java index 458faf5..42207b0 100644 --- a/client/src/main/java/com/ecep/contract/service/EmployeeRoleService.java +++ b/client/src/main/java/com/ecep/contract/service/EmployeeRoleService.java @@ -4,14 +4,14 @@ import java.util.List; import org.springframework.stereotype.Service; -import com.ecep.contract.model.EmployeeRole; -import com.ecep.contract.model.Function; import com.ecep.contract.vm.EmployeeRoleViewModel; +import com.ecep.contract.vo.EmployeeRoleVo; +import com.ecep.contract.vo.FunctionVo; @Service -public class EmployeeRoleService extends QueryService { +public class EmployeeRoleService extends QueryService { - public List getFunctionsByRoleId(int i) { + public List getFunctionsByRoleId(int roleId) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'getFunctionsByRoleId'"); } diff --git a/client/src/main/java/com/ecep/contract/service/EmployeeService.java b/client/src/main/java/com/ecep/contract/service/EmployeeService.java index de6ae7a..64180cf 100644 --- a/client/src/main/java/com/ecep/contract/service/EmployeeService.java +++ b/client/src/main/java/com/ecep/contract/service/EmployeeService.java @@ -1,36 +1,36 @@ package com.ecep.contract.service; -import com.ecep.contract.PageContent; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.EmployeeRole; -import com.ecep.contract.vm.EmployeeViewModel; -import com.fasterxml.jackson.databind.JsonNode; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ExecutionException; + import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Caching; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ExecutionException; +import com.ecep.contract.model.EmployeeRole; +import com.ecep.contract.vm.EmployeeViewModel; +import com.ecep.contract.vo.EmployeeVo; +import com.fasterxml.jackson.databind.JsonNode; @Service @CacheConfig(cacheNames = "employee") -public class EmployeeService extends QueryService { +public class EmployeeService extends QueryService { public static final int DEFAULT_SYSTEM_EMPLOYEE_ID = 26; @Cacheable(key = "#p0") @Override - public Employee findById(Integer id) { + public EmployeeVo findById(Integer id) { return super.findById(id); } - public Employee findByName(String name) { + public EmployeeVo findByName(String name) { try { return async("findByName", name, String.class).handle((response, ex) -> { - Employee newEntity = createNewEntity(); + EmployeeVo newEntity = createNewEntity(); return updateValue(newEntity, response); }).get(); } catch (Exception e) { @@ -38,13 +38,13 @@ public class EmployeeService extends QueryService { } } - public Employee findByCode(String code) { + public EmployeeVo findByCode(String code) { try { return async("findByCode", code, String.class).handle((response, ex) -> { if (ex != null) { throw new RuntimeException("远程方法+findByCode+调用失败", ex); } - Employee newEntity = createNewEntity(); + EmployeeVo newEntity = createNewEntity(); return updateValue(newEntity, response); }).get(); } catch (Exception e) { @@ -52,7 +52,6 @@ public class EmployeeService extends QueryService { } } - public List getRolesByEmployeeId(Integer id) { try { return async("getRolesByEmployeeId", List.of(id), List.of(Integer.class)).handle((response, ex) -> { @@ -76,12 +75,11 @@ public class EmployeeService extends QueryService { } } - @Caching(evict = { @CacheEvict(key = "#p0.id"), }) @Override - public Employee save(Employee entity) { + public EmployeeVo save(EmployeeVo entity) { return super.save(entity); } @@ -89,7 +87,7 @@ public class EmployeeService extends QueryService { @CacheEvict(key = "#p0.id"), }) @Override - public void delete(Employee entity) { + public void delete(EmployeeVo entity) { super.delete(entity); } } diff --git a/client/src/main/java/com/ecep/contract/service/ExtendVendorInfoService.java b/client/src/main/java/com/ecep/contract/service/ExtendVendorInfoService.java index fe7a11a..2bed0c4 100644 --- a/client/src/main/java/com/ecep/contract/service/ExtendVendorInfoService.java +++ b/client/src/main/java/com/ecep/contract/service/ExtendVendorInfoService.java @@ -1,42 +1,44 @@ package com.ecep.contract.service; -import com.ecep.contract.util.ParamUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; - -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.ExtendVendorInfo; -import com.ecep.contract.vm.ExtendVendorInfoViewModel; -import org.springframework.util.StringUtils; - import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.vm.ExtendVendorInfoViewModel; +import com.ecep.contract.vo.ContractVo; +import com.ecep.contract.vo.ExtendVendorInfoVo; + @Service -public class ExtendVendorInfoService extends QueryService { +public class ExtendVendorInfoService extends QueryService { @Autowired private VendorGroupService vendorGroupService; - public ExtendVendorInfo findByContract(Contract contract) { - Page page = findAll(ParamUtils.builder().equals("contract", contract).build(), Pageable.ofSize(1)); + public ExtendVendorInfoVo findByContract(ContractVo contract) { + Page page = findAll(ParamUtils.builder() + .equals("contract", contract).build(), + Pageable.ofSize(1)); if (page.isEmpty()) { return null; } return page.getContent().getFirst(); } - public ExtendVendorInfo newInstanceByContract(Contract contract) { - ExtendVendorInfo info = new ExtendVendorInfo(); - info.setContract(contract); + public ExtendVendorInfoVo newInstanceByContract(ContractVo contract) { + ExtendVendorInfoVo info = new ExtendVendorInfoVo(); + info.setContractId(contract.getId()); if (StringUtils.hasText(contract.getCode())) { String regex = "-([A-Z]{1,4})(\\d{1,4})"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(contract.getCode()); if (matcher.find()) { - info.setGroup(vendorGroupService.findByCode(matcher.group(1))); + info.setGroupId(vendorGroupService.findByCode(matcher.group(1)).getId()); info.setCodeSequenceNumber(Integer.parseInt(matcher.group(2))); } } diff --git a/client/src/main/java/com/ecep/contract/service/FunctionService.java b/client/src/main/java/com/ecep/contract/service/FunctionService.java index 6ff77f5..03999fe 100644 --- a/client/src/main/java/com/ecep/contract/service/FunctionService.java +++ b/client/src/main/java/com/ecep/contract/service/FunctionService.java @@ -2,10 +2,10 @@ package com.ecep.contract.service; import org.springframework.stereotype.Service; -import com.ecep.contract.model.Function; import com.ecep.contract.vm.FunctionViewModel; +import com.ecep.contract.vo.FunctionVo; @Service -public class FunctionService extends QueryService { +public class FunctionService extends QueryService { } diff --git a/client/src/main/java/com/ecep/contract/service/InventoryCatalogService.java b/client/src/main/java/com/ecep/contract/service/InventoryCatalogService.java index 6639436..b7d2e9b 100644 --- a/client/src/main/java/com/ecep/contract/service/InventoryCatalogService.java +++ b/client/src/main/java/com/ecep/contract/service/InventoryCatalogService.java @@ -1,19 +1,22 @@ package com.ecep.contract.service; -import java.util.List; - +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import com.ecep.contract.model.InventoryCatalog; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.InventoryCatalogViewModel; +import com.ecep.contract.vo.InventoryCatalogVo; @Service -public class InventoryCatalogService extends QueryService { +public class InventoryCatalogService extends QueryService { - public InventoryCatalog findByName(String v) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'findByName'"); + public InventoryCatalogVo findByName(String name) { + Page page = findAll(ParamUtils.builder().equals("name", name).build(), Pageable.ofSize(1)); + if (page.isEmpty()) { + return null; + } + return page.getContent().getFirst(); } - } diff --git a/client/src/main/java/com/ecep/contract/service/InventoryHistoryPriceService.java b/client/src/main/java/com/ecep/contract/service/InventoryHistoryPriceService.java index 53b0587..7a2f967 100644 --- a/client/src/main/java/com/ecep/contract/service/InventoryHistoryPriceService.java +++ b/client/src/main/java/com/ecep/contract/service/InventoryHistoryPriceService.java @@ -1,18 +1,22 @@ package com.ecep.contract.service; +import java.util.List; + +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import com.ecep.contract.model.Inventory; -import com.ecep.contract.model.InventoryHistoryPrice; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.InventoryHistoryPriceViewModel; +import com.ecep.contract.vo.InventoryHistoryPriceVo; +import com.ecep.contract.vo.InventoryVo; @Service public class InventoryHistoryPriceService - extends QueryService { + extends QueryService { - public InventoryHistoryPrice[] findAllByInventory(Inventory parent) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'findAllByInventory'"); + public List findAllByInventory(InventoryVo parent) { + return findAll(ParamUtils.builder().equals("inventoryId", parent.getId()).build(), + Pageable.unpaged()).getContent(); } } diff --git a/client/src/main/java/com/ecep/contract/service/InventoryService.java b/client/src/main/java/com/ecep/contract/service/InventoryService.java index d0639b1..fe40e3b 100644 --- a/client/src/main/java/com/ecep/contract/service/InventoryService.java +++ b/client/src/main/java/com/ecep/contract/service/InventoryService.java @@ -1,27 +1,47 @@ package com.ecep.contract.service; +import java.time.LocalDate; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import com.ecep.contract.MessageHolder; -import com.ecep.contract.model.Inventory; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.InventoryViewModel; +import com.ecep.contract.vo.InventoryVo; @Service -public class InventoryService extends QueryService { +public class InventoryService extends QueryService { - public Inventory createNewInstance() { - Inventory inventory = new Inventory(); + @Override + public InventoryVo createNewEntity() { + InventoryVo inventory = new InventoryVo(); + inventory.setCreateTime(LocalDate.now()); + inventory.setCreatorId(com.ecep.contract.Desktop.instance.getActiveEmployeeId()); + inventory.setActive(false); return inventory; } - public void syncInventory(Inventory inventory, MessageHolder holder) { + public void syncInventory(InventoryVo inventory, MessageHolder holder) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'syncInventory'"); } - public Inventory findByCode(String code) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'findByCode'"); + public InventoryVo findByCode(String code) { + Page page = findAll(ParamUtils.builder().equals("code", code).build(), Pageable.ofSize(1)); + if (page.isEmpty()) { + return null; + } + return page.getContent().getFirst(); + } + + public InventoryVo findByName(String text) { + Page page = findAll(ParamUtils.builder().equals("name", text).build(), Pageable.ofSize(1)); + if (page.isEmpty()) { + return null; + } + return page.getContent().getFirst(); } } diff --git a/client/src/main/java/com/ecep/contract/service/InvoiceService.java b/client/src/main/java/com/ecep/contract/service/InvoiceService.java index a74f356..270a655 100644 --- a/client/src/main/java/com/ecep/contract/service/InvoiceService.java +++ b/client/src/main/java/com/ecep/contract/service/InvoiceService.java @@ -2,10 +2,10 @@ package com.ecep.contract.service; import org.springframework.stereotype.Service; -import com.ecep.contract.model.Invoice; import com.ecep.contract.vm.InvoiceViewModel; +import com.ecep.contract.vo.InvoiceVo; @Service -public class InvoiceService extends QueryService { +public class InvoiceService extends QueryService { } diff --git a/client/src/main/java/com/ecep/contract/service/ProductTypeService.java b/client/src/main/java/com/ecep/contract/service/ProductTypeService.java index 830e89b..f998438 100644 --- a/client/src/main/java/com/ecep/contract/service/ProductTypeService.java +++ b/client/src/main/java/com/ecep/contract/service/ProductTypeService.java @@ -1,40 +1,39 @@ package com.ecep.contract.service; -import com.ecep.contract.model.ContractType; +import java.util.List; + import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Caching; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import com.ecep.contract.model.ProductType; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.ProductTypeViewModel; - -import java.util.List; +import com.ecep.contract.vo.ProductTypeVo; @Service @CacheConfig(cacheNames = "product-type") -public class ProductTypeService extends QueryService { +public class ProductTypeService extends QueryService { @Cacheable(key = "#p0") @Override - public ProductType findById(Integer id) { + public ProductTypeVo findById(Integer id) { return super.findById(id); } - public ProductType findByName(String name) { - try { - return async("findByName", name, String.class).handle((response, ex) -> { - ProductType newEntity = createNewEntity(); - return updateValue(newEntity, response); - }).get(); - } catch (Exception e) { - throw new RuntimeException("查询实体失败" + name, e); + public ProductTypeVo findByName(String name) { + Page page = findAll(ParamUtils.builder().equals("name", name).build(), Pageable.unpaged()); + if (page.isEmpty()) { + return null; } + return page.getContent().getFirst(); } @Cacheable(key = "'types'") @Override - public List findAll() { + public List findAll() { return super.findAll(); } @@ -42,7 +41,7 @@ public class ProductTypeService extends QueryService { +@CacheConfig(cacheNames = "productUsageCache") +public class ProductUsageService extends QueryService { + + @Override + @Cacheable(key = "#id") + public ProductUsageVo findById(Integer id) { + return super.findById(id); + } + + @Override + @Cacheable(unless = "'all'") + public java.util.List findAll() { + return super.findAll(); + } + + @Override + @CacheEvict(allEntries = true) + public ProductUsageVo save(ProductUsageVo usage) { + return super.save(usage); + } + + @Override + @CacheEvict(allEntries = true) + public void delete(ProductUsageVo usage) { + super.delete(usage); + } } diff --git a/client/src/main/java/com/ecep/contract/service/ProjectBidService.java b/client/src/main/java/com/ecep/contract/service/ProjectBidService.java index a2f1dc2..fd44c29 100644 --- a/client/src/main/java/com/ecep/contract/service/ProjectBidService.java +++ b/client/src/main/java/com/ecep/contract/service/ProjectBidService.java @@ -1,20 +1,20 @@ package com.ecep.contract.service; -import java.util.List; - import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.vm.ProjectBidViewModel; +import com.ecep.contract.vo.ProjectBidVo; +import com.ecep.contract.vo.ProjectVo; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectBid; -import com.ecep.contract.vm.ProjectBidViewModel; +import java.util.List; @Service -public class ProjectBidService extends QueryService { +public class ProjectBidService extends QueryService { - public List findAllByProject(Project project) { - return findAll(ParamUtils.builder().equals("project", project.getId()).build(), Pageable.unpaged()).getContent(); + public List findAllByProject(ProjectVo project) { + return findAll(ParamUtils.builder().equals("project", project.getId()).build(), Pageable.unpaged()) + .getContent(); } } diff --git a/client/src/main/java/com/ecep/contract/service/ProjectCostItemService.java b/client/src/main/java/com/ecep/contract/service/ProjectCostItemService.java index ace7a64..b725b52 100644 --- a/client/src/main/java/com/ecep/contract/service/ProjectCostItemService.java +++ b/client/src/main/java/com/ecep/contract/service/ProjectCostItemService.java @@ -1,19 +1,17 @@ package com.ecep.contract.service; +import com.ecep.contract.vm.ProjectCostItemViewModel; +import com.ecep.contract.vo.ProjectCostItemVo; +import com.ecep.contract.vo.ProjectCostVo; +import org.springframework.stereotype.Service; + import java.util.List; -import org.springframework.stereotype.Service; - -import com.ecep.contract.model.ProjectCost; -import com.ecep.contract.model.ProjectCostItem; -import com.ecep.contract.vm.ProjectCostItemViewModel; - @Service -public class ProjectCostItemService extends QueryService { +public class ProjectCostItemService extends QueryService { - public List findByCost(ProjectCost cost) { + public List findByCost(ProjectCostVo cost) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'findByCost'"); } - } diff --git a/client/src/main/java/com/ecep/contract/service/ProjectCostService.java b/client/src/main/java/com/ecep/contract/service/ProjectCostService.java index 5d13598..3c13cb2 100644 --- a/client/src/main/java/com/ecep/contract/service/ProjectCostService.java +++ b/client/src/main/java/com/ecep/contract/service/ProjectCostService.java @@ -2,49 +2,51 @@ package com.ecep.contract.service; import java.util.List; -import com.ecep.contract.util.ParamUtils; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; -import com.ecep.contract.MessageHolder; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectCost; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.ProjectCostViewModel; +import com.ecep.contract.vo.ProjectCostVo; +import com.ecep.contract.vo.ProjectVo; @Service -public class ProjectCostService extends QueryService { +public class ProjectCostService extends QueryService { - public ProjectCost findAutoCostByProject(Project project) { - Page page = findAll(ParamUtils.builder().equals("project", project.getId()).build(), Pageable.unpaged()); + public ProjectCostVo findAutoCostByProject(ProjectVo project) { + Page page = findAll(ParamUtils.builder().equals("project", project.getId()).build(), + Pageable.unpaged()); if (page.isEmpty()) { return null; } return page.getContent().getFirst(); } - public ProjectCost newInstanceByProject(Project project) { - ProjectCost cost = new ProjectCost(); - cost.setProject(project); + public ProjectCostVo newInstanceByProject(ProjectVo project) { + ProjectCostVo cost = new ProjectCostVo(); + cost.setProject(project.getId()); // 0.3‰:购销合同、建筑安装工程承包合同、技术合同 cost.setStampTax(0.03f); cost.setTaxAndSurcharges(11f); return cost; } - public ProjectCost findLatestByProject(Project project) { + public ProjectCostVo findLatestByProject(ProjectVo project) { PageRequest pageRequest = PageRequest.of(0, 1, Sort.Direction.DESC, "version"); - Page page = findAll(ParamUtils.builder().equals("project", project.getId()).build(), pageRequest); + Page page = findAll(ParamUtils.builder().equals("project", project.getId()).build(), + pageRequest); if (page.isEmpty()) { return null; } return page.getContent().getFirst(); } - public List findAllByProject(Project project) { - return findAll(ParamUtils.builder().equals("project", project.getId()).build(), Pageable.unpaged()).getContent(); + public List findAllByProject(ProjectVo project) { + return findAll(ParamUtils.builder().equals("project", project.getId()).build(), Pageable.unpaged()) + .getContent(); } } diff --git a/client/src/main/java/com/ecep/contract/service/ProjectFundPlanService.java b/client/src/main/java/com/ecep/contract/service/ProjectFundPlanService.java index 776f84c..444f74c 100644 --- a/client/src/main/java/com/ecep/contract/service/ProjectFundPlanService.java +++ b/client/src/main/java/com/ecep/contract/service/ProjectFundPlanService.java @@ -2,23 +2,26 @@ package com.ecep.contract.service; import java.util.List; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectFundPlan; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.ProjectFundPlanViewModel; +import com.ecep.contract.vo.ProjectFundPlanVo; @Service -public class ProjectFundPlanService extends QueryService { +public class ProjectFundPlanService extends QueryService { - public List findAllByProject(Project project) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'findAllByProject'"); + public List findAllByProject(Integer projectId) { + return findAll(ParamUtils.builder() + .equals("project", projectId) + .build(), Pageable.unpaged()).getContent(); } - public ProjectFundPlan newInstanceByProject(Project project) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'newInstanceByProject'"); + public ProjectFundPlanVo newInstanceByProject(Integer projectId) { + ProjectFundPlanVo vo = new ProjectFundPlanVo(); + vo.setProjectId(projectId); + return vo; } } 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 540e725..d764445 100644 --- a/client/src/main/java/com/ecep/contract/service/ProjectIndustryService.java +++ b/client/src/main/java/com/ecep/contract/service/ProjectIndustryService.java @@ -1,11 +1,39 @@ package com.ecep.contract.service; +import com.ecep.contract.vm.ProjectIndustryViewModel; +import com.ecep.contract.vo.ProjectIndustryVo; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.cache.annotation.Caching; import org.springframework.stereotype.Service; -import com.ecep.contract.model.ProjectIndustry; -import com.ecep.contract.vm.ProjectIndustryViewModel; +import java.util.List; @Service -public class ProjectIndustryService extends QueryService { +@CacheConfig(cacheNames = "project-industry") +public class ProjectIndustryService extends QueryService { + @Cacheable(key = "#p0") + @Override + public ProjectIndustryVo findById(Integer id) { + return super.findById(id); + } + @Cacheable(key = "'all'") + @Override + public List findAll() { + return super.findAll(); + } + + @Caching(evict = {@CacheEvict(key = "#p0.id"), @CacheEvict(key = "'all'")}) + @Override + public ProjectIndustryVo save(ProjectIndustryVo entity) { + return super.save(entity); + } + + @Caching(evict = {@CacheEvict(key = "#p0.id"), @CacheEvict(key = "'all'")}) + @Override + public void delete(ProjectIndustryVo entity) { + super.delete(entity); + } } diff --git a/client/src/main/java/com/ecep/contract/service/ProjectQuotationService.java b/client/src/main/java/com/ecep/contract/service/ProjectQuotationService.java index 1bf3a99..7f556e4 100644 --- a/client/src/main/java/com/ecep/contract/service/ProjectQuotationService.java +++ b/client/src/main/java/com/ecep/contract/service/ProjectQuotationService.java @@ -1,18 +1,19 @@ package com.ecep.contract.service; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectQuotation; -import com.ecep.contract.util.ParamUtils; -import com.ecep.contract.vm.ProjectQuotationViewModel; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; - import java.util.List; -@Service -public class ProjectQuotationService extends QueryService { +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; - public List findAllByProject(Project project) { +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.vm.ProjectQuotationViewModel; +import com.ecep.contract.vo.ProjectQuotationVo; +import com.ecep.contract.vo.ProjectVo; + +@Service +public class ProjectQuotationService extends QueryService { + + public List findAllByProject(ProjectVo project) { return findAll(ParamUtils.builder().equals("project", project.getId()).build(), Pageable.unpaged()).getContent(); } diff --git a/client/src/main/java/com/ecep/contract/service/ProjectSaleTypeRequireFileTypeService.java b/client/src/main/java/com/ecep/contract/service/ProjectSaleTypeRequireFileTypeService.java index e1d59e8..5899abc 100644 --- a/client/src/main/java/com/ecep/contract/service/ProjectSaleTypeRequireFileTypeService.java +++ b/client/src/main/java/com/ecep/contract/service/ProjectSaleTypeRequireFileTypeService.java @@ -6,15 +6,15 @@ import com.ecep.contract.util.ParamUtils; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import com.ecep.contract.model.ProjectSaleTypeRequireFileType; +import com.ecep.contract.vo.ProjectSaleTypeRequireFileTypeVo; import com.ecep.contract.vm.ProjectSaleTypeRequireFileTypeViewModel; @Service public class ProjectSaleTypeRequireFileTypeService - extends QueryService { + extends QueryService { - public List findBySaleTypeId(Integer id) { - return findAll(ParamUtils.equal("fileType", id), Pageable.unpaged()).getContent(); + public List findBySaleTypeId(Integer id) { + return findAll(ParamUtils.equal("saleType", id), Pageable.unpaged()).getContent(); } } diff --git a/client/src/main/java/com/ecep/contract/service/ProjectSaleTypeService.java b/client/src/main/java/com/ecep/contract/service/ProjectSaleTypeService.java index 05a3b01..9e97679 100644 --- a/client/src/main/java/com/ecep/contract/service/ProjectSaleTypeService.java +++ b/client/src/main/java/com/ecep/contract/service/ProjectSaleTypeService.java @@ -1,19 +1,42 @@ package com.ecep.contract.service; -import com.ecep.contract.model.ProjectSaleType; -import com.ecep.contract.util.ParamUtils; -import com.ecep.contract.vm.ProjectSaleTypeViewModel; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.cache.annotation.Caching; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -@Service -public class ProjectSaleTypeService extends QueryService { +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.vm.ProjectSaleTypeViewModel; +import com.ecep.contract.vo.ProjectSaleTypeVo; - public ProjectSaleType findByCode(String code) { +@Service +@CacheConfig(cacheNames = "project-sale-type") +public class ProjectSaleTypeService extends QueryService { + @Cacheable(key = "#id") + @Override + public ProjectSaleTypeVo findById(Integer id) { + return super.findById(id); + } + + public ProjectSaleTypeVo findByCode(String code) { return findAll(ParamUtils.builder().equals("code", code).build(), Pageable.ofSize(1)).getContent().getFirst(); } - public ProjectSaleType findByName(String name) { + public ProjectSaleTypeVo findByName(String name) { return findAll(ParamUtils.builder().equals("name", name).build(), Pageable.ofSize(1)).getContent().getFirst(); } + + @Caching(evict = { @CacheEvict(key = "#p0.id") }) + @Override + public ProjectSaleTypeVo save(ProjectSaleTypeVo v) { + return super.save(v); + } + + @Caching(evict = { @CacheEvict(key = "#p0.id") }) + @Override + public void delete(ProjectSaleTypeVo entity) { + super.delete(entity); + } } diff --git a/client/src/main/java/com/ecep/contract/service/ProjectService.java b/client/src/main/java/com/ecep/contract/service/ProjectService.java index 9275f8c..a5d2e40 100644 --- a/client/src/main/java/com/ecep/contract/service/ProjectService.java +++ b/client/src/main/java/com/ecep/contract/service/ProjectService.java @@ -1,53 +1,53 @@ package com.ecep.contract.service; -import com.ecep.contract.SpringApp; -import com.ecep.contract.model.Employee; -import com.ecep.contract.util.ProxyUtils; -import org.springframework.stereotype.Service; - -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectSaleType; -import com.ecep.contract.vm.ProjectViewModel; -import org.springframework.util.StringUtils; - import java.io.File; import java.time.LocalDate; import java.time.LocalDateTime; -import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.domain.Sort.Direction; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import com.ecep.contract.SpringApp; +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.vm.ProjectViewModel; +import com.ecep.contract.vo.ContractVo; +import com.ecep.contract.vo.ProjectSaleTypeVo; +import com.ecep.contract.vo.ProjectVo; @Service -public class ProjectService extends QueryService { +public class ProjectService extends QueryService { - - public Project findByName(String name) { - try { - return async("findByName", name, String.class).handle((response, ex) -> { - Project newEntity = createNewEntity(); - return updateValue(newEntity, response); - }).get(); - } catch (Exception e) { - throw new RuntimeException("查询实体失败:" + name, e); + public ProjectVo findByName(String name) { + Page page = findAll(ParamUtils.builder() + .equals("name", name).build(), + Pageable.ofSize(1)); + if (page.isEmpty()) { + return null; } + return page.getContent().getFirst(); } - public Project findByCode(String code) { - try { - return async("findByCode", code, String.class).handle((response, ex) -> { - Project newEntity = createNewEntity(); - return updateValue(newEntity, response); - }).get(); - } catch (Exception e) { - throw new RuntimeException("查询实体失败:" + code, e); + public ProjectVo findByCode(String code) { + Page page = findAll(ParamUtils.builder() + .equals("code", code).build(), + Pageable.ofSize(1)); + if (page.isEmpty()) { + return null; } + return page.getContent().getFirst(); } - public void applyCode(Project project, String code) { + public void applyCode(ProjectVo project, String code) { throw new UnsupportedOperationException(); } - public Project newInstanceByContract(Contract contract) { - Project project = new Project(); + public ProjectVo newInstanceByContract(ContractVo contract) { + ProjectVo project = new ProjectVo(); project.setName(contract.getName()); applyCode(project, contract.getCode()); contract.setCreated(LocalDateTime.now()); @@ -57,19 +57,19 @@ public class ProjectService extends QueryService { } else { project.setCreated(LocalDate.now()); } - project.setCustomer(contract.getCompany()); - project.setApplicant(contract.getEmployee()); + project.setCustomerId(contract.getCompanyId()); + project.setApplicantId(contract.getEmployeeId()); return project; } - public File searchPath(Project project) { - ProjectSaleType saleType = project.getSaleType(); - if (saleType == null) { + public File searchPath(ProjectVo project) { + Integer saleTypeId = project.getSaleTypeId(); + if (saleTypeId == null) { return null; } - if (!ProxyUtils.isInitialized(saleType)) { - saleType = SpringApp.getBean(ProjectSaleTypeService.class).findById(saleType.getId()); - project.setSaleType(saleType); + ProjectSaleTypeVo saleType = SpringApp.getBean(ProjectSaleTypeService.class).findById(saleTypeId); + if (saleType == null) { + return null; } if (!StringUtils.hasText(saleType.getPath())) { return null; @@ -91,10 +91,15 @@ public class ProjectService extends QueryService { return path; } - - public String makeProjectCode(Project project) { + public String makeProjectCode(ProjectVo project) { StringBuilder sb = new StringBuilder(); - sb.append(project.getSaleType().getCode()); + Integer saleTypeId = project.getSaleTypeId(); + if (saleTypeId != null) { + ProjectSaleTypeVo saleType = SpringApp.getBean(ProjectSaleTypeService.class).findById(saleTypeId); + if (saleType != null) { + sb.append(saleType.getCode()); + } + } sb.append(project.getCodeYear()); if (project.getCodeSequenceNumber() < 10) { sb.append("0"); @@ -106,14 +111,28 @@ public class ProjectService extends QueryService { return sb.toString(); } - public int getNextCodeSequenceNumber(ProjectSaleType newValue, int i) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getNextCodeSequenceNumber'"); + public int getNextCodeSequenceNumber(ProjectSaleTypeVo type, int year) { + PageRequest pageable = PageRequest.of(0, 1, Sort.by(Direction.DESC, "codeSequenceNumber")); + Page page = findAll(ParamUtils.builder() + .equals("type", type.getId()) + .equals("codeYear", year).build(), + pageable); + if (page.isEmpty()) { + return 1; + } + return page.getContent().getFirst().getCodeSequenceNumber() + 1; } - public Project findBySaleTypeAndCodeYearAndCodeSequenceNumber(ProjectSaleType saleType, int codeYear, - int codeSequenceNumber) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'findBySaleTypeAndCodeYearAndCodeSequenceNumber'"); + public ProjectVo findBySaleTypeAndCodeYearAndCodeSequenceNumber(int typeId, int codeYear, + int codeSequenceNumber) { + Page page = findAll(ParamUtils.builder() + .equals("type", typeId) + .equals("codeYear", codeYear) + .equals("codeSequenceNumber", codeSequenceNumber).build(), + Pageable.ofSize(1)); + if (page.isEmpty()) { + return null; + } + return page.getContent().getFirst(); } } 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 71f309b..4359f76 100644 --- a/client/src/main/java/com/ecep/contract/service/ProjectTypeService.java +++ b/client/src/main/java/com/ecep/contract/service/ProjectTypeService.java @@ -1,16 +1,24 @@ package com.ecep.contract.service; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import com.ecep.contract.model.ProjectType; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.ProjectTypeViewModel; +import com.ecep.contract.vo.ProjectTypeVo; @Service -public class ProjectTypeService extends QueryService { +@CacheConfig(cacheNames = "project-type") +public class ProjectTypeService extends QueryService { - public ProjectType findByName(String name) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'findByName'"); + public ProjectTypeVo findByName(String name) { + Page page = findAll(ParamUtils.builder().equals("name", name).build(), Pageable.ofSize(1)); + if (page.isEmpty()) { + return null; + } + return page.getContent().getFirst(); } } diff --git a/client/src/main/java/com/ecep/contract/service/PurchaseBillVoucherItemService.java b/client/src/main/java/com/ecep/contract/service/PurchaseBillVoucherItemService.java index e025232..533b6fb 100644 --- a/client/src/main/java/com/ecep/contract/service/PurchaseBillVoucherItemService.java +++ b/client/src/main/java/com/ecep/contract/service/PurchaseBillVoucherItemService.java @@ -2,11 +2,11 @@ package com.ecep.contract.service; import org.springframework.stereotype.Service; -import com.ecep.contract.model.PurchaseBillVoucherItem; +import com.ecep.contract.vo.PurchaseBillVoucherItemVo; import com.ecep.contract.vm.PurchaseBillVoucherItemViewModel; @Service public class PurchaseBillVoucherItemService - extends QueryService { + extends QueryService { } diff --git a/client/src/main/java/com/ecep/contract/service/PurchaseBillVoucherService.java b/client/src/main/java/com/ecep/contract/service/PurchaseBillVoucherService.java index 7eda69c..f8c6b5d 100644 --- a/client/src/main/java/com/ecep/contract/service/PurchaseBillVoucherService.java +++ b/client/src/main/java/com/ecep/contract/service/PurchaseBillVoucherService.java @@ -2,10 +2,10 @@ package com.ecep.contract.service; import org.springframework.stereotype.Service; -import com.ecep.contract.model.PurchaseBillVoucher; +import com.ecep.contract.vo.PurchaseBillVoucherVo; import com.ecep.contract.vm.PurchaseBillVoucherViewModel; @Service -public class PurchaseBillVoucherService extends QueryService { +public class PurchaseBillVoucherService extends QueryService { } diff --git a/client/src/main/java/com/ecep/contract/service/PurchaseOrderItemService.java b/client/src/main/java/com/ecep/contract/service/PurchaseOrderItemService.java index bdbea5a..c2476bf 100644 --- a/client/src/main/java/com/ecep/contract/service/PurchaseOrderItemService.java +++ b/client/src/main/java/com/ecep/contract/service/PurchaseOrderItemService.java @@ -2,10 +2,10 @@ package com.ecep.contract.service; import org.springframework.stereotype.Service; -import com.ecep.contract.model.PurchaseOrderItem; import com.ecep.contract.vm.PurchaseOrderItemViewModel; +import com.ecep.contract.vo.PurchaseOrderItemVo; @Service -public class PurchaseOrderItemService extends QueryService { +public class PurchaseOrderItemService extends QueryService { } diff --git a/client/src/main/java/com/ecep/contract/service/PurchaseOrdersService.java b/client/src/main/java/com/ecep/contract/service/PurchaseOrdersService.java index 0315c8b..9ba0b1d 100644 --- a/client/src/main/java/com/ecep/contract/service/PurchaseOrdersService.java +++ b/client/src/main/java/com/ecep/contract/service/PurchaseOrdersService.java @@ -2,10 +2,10 @@ package com.ecep.contract.service; import org.springframework.stereotype.Service; -import com.ecep.contract.model.PurchaseOrder; import com.ecep.contract.vm.PurchaseOrderViewModel; +import com.ecep.contract.vo.PurchaseOrderVo; @Service -public class PurchaseOrdersService extends QueryService { +public class PurchaseOrdersService extends QueryService { } diff --git a/client/src/main/java/com/ecep/contract/service/QueryService.java b/client/src/main/java/com/ecep/contract/service/QueryService.java index 2fe4f49..2e28190 100644 --- a/client/src/main/java/com/ecep/contract/service/QueryService.java +++ b/client/src/main/java/com/ecep/contract/service/QueryService.java @@ -1,29 +1,31 @@ package com.ecep.contract.service; -import com.ecep.contract.PageArgument; -import com.ecep.contract.PageContent; -import com.ecep.contract.WebSocketClientService; -import com.ecep.contract.model.IdentityEntity; -import com.ecep.contract.vm.IdentityViewModel; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import javafx.util.StringConverter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; - import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; import java.util.function.Supplier; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.ecep.contract.PageArgument; +import com.ecep.contract.PageContent; +import com.ecep.contract.WebSocketClientService; +import com.ecep.contract.model.IdentityEntity; +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.vm.IdentityViewModel; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +import javafx.util.StringConverter; + public class QueryService> implements ViewModelService { // 添加日志记录器 @@ -111,7 +113,6 @@ public class QueryService async(String method, Object... params) { return webSocketService.invoke(getBeanName(), method, params).handle((response, ex) -> { if (ex != null) { @@ -181,6 +182,9 @@ public class QueryService findAll(Map params, Pageable pageable) { try { + if (pageable == null) { + pageable = Pageable.unpaged(); + } // 调用异步方法并阻塞等待结果返回 return asyncFindAll(params, pageable).get(); } catch (Exception e) { @@ -216,12 +220,11 @@ public class QueryService search(String searchText) { - Map params = getSpecification(searchText); - List list = findAll(params, Pageable.ofSize(10)).getContent(); + ParamUtils.Builder params = getSpecification(searchText); + List list = findAll(params.build(), Pageable.ofSize(10)).getContent(); return list; } - public static PageContent of(JsonNode response, ObjectMapper objectMapper, Supplier createNewEntity) throws JsonProcessingException { diff --git a/client/src/main/java/com/ecep/contract/service/SaleOrdersService.java b/client/src/main/java/com/ecep/contract/service/SaleOrdersService.java index 8fb6869..5412a72 100644 --- a/client/src/main/java/com/ecep/contract/service/SaleOrdersService.java +++ b/client/src/main/java/com/ecep/contract/service/SaleOrdersService.java @@ -1,11 +1,12 @@ package com.ecep.contract.service; +import com.ecep.contract.vo.SalesOrderVo; import org.springframework.stereotype.Service; import com.ecep.contract.model.SalesOrder; import com.ecep.contract.vm.SalesOrderViewModel; @Service -public class SaleOrdersService extends QueryService { +public class SaleOrdersService extends QueryService { } diff --git a/client/src/main/java/com/ecep/contract/service/SalesBillVoucherService.java b/client/src/main/java/com/ecep/contract/service/SalesBillVoucherService.java index 84d0769..63d5518 100644 --- a/client/src/main/java/com/ecep/contract/service/SalesBillVoucherService.java +++ b/client/src/main/java/com/ecep/contract/service/SalesBillVoucherService.java @@ -1,11 +1,10 @@ package com.ecep.contract.service; +import com.ecep.contract.vm.SalesBillVoucherViewModel; +import com.ecep.contract.vo.SalesBillVoucherVo; import org.springframework.stereotype.Service; -import com.ecep.contract.model.SalesBillVoucher; -import com.ecep.contract.vm.SalesBillVoucherViewModel; - @Service -public class SalesBillVoucherService extends QueryService { +public class SalesBillVoucherService extends QueryService { } diff --git a/client/src/main/java/com/ecep/contract/service/SalesOrderItemService.java b/client/src/main/java/com/ecep/contract/service/SalesOrderItemService.java index 1a3a22c..8b1ff3b 100644 --- a/client/src/main/java/com/ecep/contract/service/SalesOrderItemService.java +++ b/client/src/main/java/com/ecep/contract/service/SalesOrderItemService.java @@ -2,10 +2,10 @@ package com.ecep.contract.service; import org.springframework.stereotype.Service; -import com.ecep.contract.model.SalesOrderItem; import com.ecep.contract.vm.SalesOrderItemViewModel; +import com.ecep.contract.vo.SalesOrderItemVo; @Service -public class SalesOrderItemService extends QueryService { +public class SalesOrderItemService extends QueryService { } diff --git a/client/src/main/java/com/ecep/contract/service/UnitService.java b/client/src/main/java/com/ecep/contract/service/UnitService.java new file mode 100644 index 0000000..0845c70 --- /dev/null +++ b/client/src/main/java/com/ecep/contract/service/UnitService.java @@ -0,0 +1,53 @@ +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.CachePut; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.cache.annotation.Caching; +import org.springframework.stereotype.Service; + +import com.ecep.contract.vm.UnitViewModel; +import com.ecep.contract.vo.UnitVo; + +@Service +@CacheConfig(cacheNames = "unit") +public class UnitService extends QueryService { + + @Cacheable(key = "#id") + @Override + public UnitVo findById(Integer id) { + return super.findById(id); + } + + @Caching( + put = @CachePut(key = "#entity.id"), + evict = @CacheEvict(key = "'all'")) + @Override + public UnitVo save(UnitVo entity) { + return super.save(entity); + } + + @Caching( + evict = { + @CacheEvict(key = "#entity.id"), + @CacheEvict(key = "'all'") + } + ) + @Override + public void delete(UnitVo entity) { + super.delete(entity); + } + + @Cacheable(key = "'all'", unless = "#result == null") + public List findAllUnits() { + return super.findAll(); + } + + @Override + public UnitViewModel createNewViewModel() { + return new UnitViewModel(); + } +} \ No newline at end of file diff --git a/client/src/main/java/com/ecep/contract/service/VendorCatalogService.java b/client/src/main/java/com/ecep/contract/service/VendorCatalogService.java new file mode 100644 index 0000000..17da670 --- /dev/null +++ b/client/src/main/java/com/ecep/contract/service/VendorCatalogService.java @@ -0,0 +1,40 @@ +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; +import org.springframework.cache.annotation.Caching; +import org.springframework.stereotype.Service; + +import com.ecep.contract.vm.VendorCatalogViewModel; +import com.ecep.contract.vo.VendorCatalogVo; + +@Service +@CacheConfig(cacheNames = "vendor-catalog") +public class VendorCatalogService extends QueryService { + @Override + @Cacheable(key = "#id") + public VendorCatalogVo findById(Integer id) { + return super.findById(id); + } + + @Override + @Cacheable(key = "all") + public List findAll() { + return super.findAll(); + } + + @Caching(evict = { @CacheEvict(key = "all"), @CacheEvict(key = "#entity.id") }) + @Override + public VendorCatalogVo save(VendorCatalogVo entity) { + return super.save(entity); + } + + @Caching(evict = { @CacheEvict(key = "all"), @CacheEvict(key = "#entity.id") }) + @Override + public void delete(VendorCatalogVo entity) { + super.delete(entity); + } +} diff --git a/client/src/main/java/com/ecep/contract/service/VendorGroupService.java b/client/src/main/java/com/ecep/contract/service/VendorGroupService.java index f02cdc5..494d60c 100644 --- a/client/src/main/java/com/ecep/contract/service/VendorGroupService.java +++ b/client/src/main/java/com/ecep/contract/service/VendorGroupService.java @@ -1,15 +1,29 @@ package com.ecep.contract.service; +import com.ecep.contract.model.VendorGroup; +import com.ecep.contract.util.ParamUtils; +import com.ecep.contract.vm.VendorGroupViewModel; +import com.ecep.contract.vo.VendorGroupVo; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.cache.annotation.Caching; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import com.ecep.contract.model.VendorGroup; -import com.ecep.contract.vm.VendorGroupViewModel; - @Service -public class VendorGroupService extends QueryService { +@CacheConfig(cacheNames = "vendor-group") +public class VendorGroupService extends QueryService { + @Cacheable(key = "#id") + @Override + public VendorGroupVo findById(Integer id) { + return super.findById(id); + } - public VendorGroup newInstance() { - VendorGroup group = new VendorGroup(); + @Override + public VendorGroupVo createNewEntity() { + VendorGroupVo group = new VendorGroupVo(); group.setCode(""); group.setName(""); group.setDescription(""); @@ -20,18 +34,23 @@ public class VendorGroupService extends QueryService { - if (ex != null) { - throw new RuntimeException("远程方法+findByCode+调用失败", ex); - } - VendorGroup newEntity = newInstance(); - return updateValue(newEntity, response); - }).get(); - } catch (Exception e) { - throw new RuntimeException("查询实体失败", e); + public VendorGroupVo findByCode(String code) { + Page page = findAll(ParamUtils.builder().equals("code", code).build(), Pageable.ofSize(1)); + if (page.isEmpty()) { + return save(createNewEntity()); } + return page.getContent().getFirst(); } + @Caching(evict = {@CacheEvict(key = "#p0.id")}) + @Override + public VendorGroupVo save(VendorGroupVo entity) { + return super.save(entity); + } + + @Caching(evict = {@CacheEvict(key = "#p0.id")}) + @Override + public void delete(VendorGroupVo entity) { + super.delete(entity); + } } diff --git a/client/src/main/java/com/ecep/contract/service/ViewModelService.java b/client/src/main/java/com/ecep/contract/service/ViewModelService.java index d10ace6..61f47c4 100644 --- a/client/src/main/java/com/ecep/contract/service/ViewModelService.java +++ b/client/src/main/java/com/ecep/contract/service/ViewModelService.java @@ -1,16 +1,14 @@ package com.ecep.contract.service; import java.lang.reflect.Type; -import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.poi.ss.formula.functions.T; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import com.ecep.contract.constant.ServiceConstant; import com.ecep.contract.model.IdentityEntity; +import com.ecep.contract.util.ParamUtils; import com.ecep.contract.vm.IdentityViewModel; /** @@ -32,7 +30,7 @@ public interface ViewModelService 0) { + if (!className.isEmpty()) { className = Character.toLowerCase(className.charAt(0)) + className.substring(1); } return className; @@ -108,10 +106,8 @@ public interface ViewModelService getSpecification(String searchText) { - HashMap params = new HashMap<>(); - params.put(ServiceConstant.KEY_SEARCH_TEXT, searchText); - return params; + default ParamUtils.Builder getSpecification(String searchText) { + return ParamUtils.builder().search(searchText); } } diff --git a/client/src/main/java/com/ecep/contract/service/YongYouU8Service.java b/client/src/main/java/com/ecep/contract/service/YongYouU8Service.java index 3fab0d6..5ff0d6e 100644 --- a/client/src/main/java/com/ecep/contract/service/YongYouU8Service.java +++ b/client/src/main/java/com/ecep/contract/service/YongYouU8Service.java @@ -14,11 +14,12 @@ import com.ecep.contract.task.CustomerSyncTask; import com.ecep.contract.task.MonitoredTask; import com.ecep.contract.task.VendorSyncTask; import com.ecep.contract.vm.CloudYuInfoViewModel; +import com.ecep.contract.vo.CloudYuVo; import javafx.concurrent.Task; @Service -public class YongYouU8Service extends QueryService { +public class YongYouU8Service extends QueryService { /** * 生成定时同步任务 diff --git a/client/src/main/java/com/ecep/contract/task/ContractFilesRebuildAllTasker.java b/client/src/main/java/com/ecep/contract/task/ContractFilesRebuildAllTasker.java index ba673c0..e1ac48c 100644 --- a/client/src/main/java/com/ecep/contract/task/ContractFilesRebuildAllTasker.java +++ b/client/src/main/java/com/ecep/contract/task/ContractFilesRebuildAllTasker.java @@ -1,8 +1,8 @@ package com.ecep.contract.task; import com.ecep.contract.MessageHolder; -import com.ecep.contract.model.ContractGroup; import com.ecep.contract.service.ContractService; +import com.ecep.contract.vo.ContractGroupVo; import lombok.Setter; @@ -11,7 +11,7 @@ public class ContractFilesRebuildAllTasker extends Tasker{ private ContractService contractService; @Setter - private ContractGroup group; + private ContractGroupVo group; @Override protected Object execute(MessageHolder holder) throws Exception { diff --git a/client/src/main/java/com/ecep/contract/task/ContractRepairByCompanyTask.java b/client/src/main/java/com/ecep/contract/task/ContractRepairByCompanyTask.java index d22d956..296879a 100644 --- a/client/src/main/java/com/ecep/contract/task/ContractRepairByCompanyTask.java +++ b/client/src/main/java/com/ecep/contract/task/ContractRepairByCompanyTask.java @@ -1,7 +1,7 @@ package com.ecep.contract.task; import com.ecep.contract.MessageHolder; -import com.ecep.contract.model.Company; +import com.ecep.contract.vo.CompanyVo; import lombok.Getter; import lombok.Setter; @@ -9,7 +9,7 @@ import lombok.Setter; public class ContractRepairByCompanyTask extends Tasker { @Getter @Setter - private Company company; + private CompanyVo company; @Getter boolean repaired = false; diff --git a/client/src/main/java/com/ecep/contract/task/ContractRepairTask.java b/client/src/main/java/com/ecep/contract/task/ContractRepairTask.java index 54836e2..9884a30 100644 --- a/client/src/main/java/com/ecep/contract/task/ContractRepairTask.java +++ b/client/src/main/java/com/ecep/contract/task/ContractRepairTask.java @@ -2,11 +2,10 @@ package com.ecep.contract.task; import com.ecep.contract.MessageHolder; import com.ecep.contract.SpringApp; -import com.ecep.contract.WebSocketClientService; import com.ecep.contract.WebSocketClientTasker; -import com.ecep.contract.model.Contract; +import com.ecep.contract.service.ContractService; +import com.ecep.contract.vo.ContractVo; -import com.fasterxml.jackson.core.JsonProcessingException; import lombok.Getter; import lombok.Setter; @@ -16,7 +15,7 @@ import lombok.Setter; public class ContractRepairTask extends Tasker implements WebSocketClientTasker { @Getter @Setter - private Contract contract; + private ContractVo contract; @Getter boolean repaired = false; @@ -42,10 +41,10 @@ public class ContractRepairTask extends Tasker implements WebSocketClien super.updateProgress(current, total); } - @Override protected Object execute(MessageHolder holder) throws Exception { - updateTitle("修复合同 " + contract.toPrettyString()); + ContractService contractService = SpringApp.getBean(ContractService.class); + updateTitle("修复合同 " + contractService.getStringConverter().toString(contract)); return callRemoteTask(holder, getLocale(), contract.getId()); } diff --git a/client/src/main/java/com/ecep/contract/task/ContractVerifyComm.java b/client/src/main/java/com/ecep/contract/task/ContractVerifyComm.java index fe2e674..b301037 100644 --- a/client/src/main/java/com/ecep/contract/task/ContractVerifyComm.java +++ b/client/src/main/java/com/ecep/contract/task/ContractVerifyComm.java @@ -13,8 +13,7 @@ import java.util.Locale; import java.util.Objects; import java.util.stream.Collectors; -import com.ecep.contract.controller.project.cost.ProjectCostImportItemsFromContractsTasker; -import com.ecep.contract.util.ProxyUtils; +import com.ecep.contract.vo.*; import org.springframework.util.StringUtils; import com.ecep.contract.CompanyCustomerFileType; @@ -23,23 +22,10 @@ import com.ecep.contract.ContractPayWay; import com.ecep.contract.MessageHolder; import com.ecep.contract.MyDateTimeUtils; import com.ecep.contract.SpringApp; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.CompanyCustomer; -import com.ecep.contract.model.CompanyCustomerFile; -import com.ecep.contract.model.CompanyExtendInfo; +import com.ecep.contract.controller.project.cost.ProjectCostImportItemsFromContractsTasker; import com.ecep.contract.model.Contract; import com.ecep.contract.model.ContractBidVendor; -import com.ecep.contract.model.ContractFile; import com.ecep.contract.model.ContractFileTypeLocal; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.ExtendVendorInfo; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectBid; -import com.ecep.contract.model.ProjectCost; -import com.ecep.contract.model.ProjectQuotation; -import com.ecep.contract.model.ProjectSaleType; -import com.ecep.contract.model.ProjectSaleTypeRequireFileType; -import com.ecep.contract.model.VendorGroup; import com.ecep.contract.model.VendorGroupRequireFileType; import com.ecep.contract.service.CompanyCustomerFileService; import com.ecep.contract.service.CompanyCustomerService; @@ -284,38 +270,51 @@ public class ContractVerifyComm { * @param contract 要验证的合同对象 * @param holder 输出 */ - public void verify(Contract contract, MessageHolder holder) { + public void verify(ContractVo contract, MessageHolder holder) { LocalDate setupDate = contract.getSetupDate(); if (setupDate == null) { holder.error("未设置合同提交日期"); return; } - - Company company = contract.getCompany(); - if (company == null) { + Integer companyId = contract.getCompanyId(); + if (companyId == null) { holder.error("未关联企业"); return; } + CompanyVo company = getCompanyService().findById(companyId); + if (company == null) { + holder.error("合同关联公司 #" + companyId + " 异常,无法读取"); + return; + } company = getCompanyService().findById(company.getId()); verify(company, contract, holder); } - public void verify(Company company, Contract contract, MessageHolder holder) { + public void verify(CompanyVo company, ContractVo contract, MessageHolder holder) { LocalDate setupDate = contract.getSetupDate(); + Integer handlerId = contract.getHandlerId(); + if (handlerId == null) { + handlerId = contract.getEmployeeId(); + } + if (handlerId == null) { + holder.error("未关联处理人"); + return; + } - Employee employee = contract.getEmployee(); + EmployeeVo employee = getEmployeeService().findById(handlerId); if (employee == null) { - holder.error("未关联业务员"); + holder.error("关联处理人 #" + handlerId + " 异常,无法读取"); + return; } if (contract.getAmount() == null || contract.getAmount() <= 0) { holder.error("合同金额小于等于0"); } - CompanyExtendInfo companyExtendInfo = getCompanyExtendInfoService().findByCompany(company); + CompanyExtendInfoVo companyExtendInfo = getCompanyExtendInfoService().findByCompany(company); if (companyExtendInfo == null) { - CompanyExtendInfo extendInfo = new CompanyExtendInfo(); - extendInfo.setCompany(company); + CompanyExtendInfoVo extendInfo = new CompanyExtendInfoVo(); + extendInfo.setCompanyId(company.getId()); extendInfo.setDisableVerify(false); companyExtendInfo = getCompanyExtendInfoService().save(extendInfo); } @@ -349,9 +348,9 @@ public class ContractVerifyComm { verifyAsCustomer(company, companyExtendInfo, contract, holder); // 销售合同下的采购合同 - List list = getContractService().findAllBySaleContract(contract); + List list = getContractService().findAllBySaleContract(contract); if (!list.isEmpty()) { - for (Contract v : list) { + for (ContractVo v : list) { MessageHolder subHolder = holder.sub(v.getCode() + " -> "); subHolder.info("采购合同 : " + v.getName()); verify(v, subHolder); @@ -394,30 +393,31 @@ public class ContractVerifyComm { } } - private void verifyAsVendor(Company company, Contract contract, MessageHolder holder) { + private void verifyAsVendor(CompanyVo company, ContractVo contract, MessageHolder holder) { // 供应商,检查评价表 - ExtendVendorInfo vendorInfo = getExtendVendorInfoService().findByContract(contract); + ExtendVendorInfoVo vendorInfo = getExtendVendorInfoService().findByContract(contract); if (vendorInfo == null) { - ExtendVendorInfo info = getExtendVendorInfoService().newInstanceByContract(contract); + ExtendVendorInfoVo info = getExtendVendorInfoService().newInstanceByContract(contract); vendorInfo = getExtendVendorInfoService().save(info); holder.info("创建供应商信息 #" + vendorInfo.getId()); } - VendorGroup group = vendorInfo.getGroup(); + Integer groupId = vendorInfo.getGroupId(); + VendorGroupVo group = vendorGroupService.findById(groupId); boolean assignedProvider = vendorInfo.isAssignedProvider(); if (assignedProvider) { holder.debug("采购信息中设定为指定供应商"); } if (group != null) { - group = getVendorGroupService().findById(group.getId()); - vendorInfo.setGroup(group); + group = getVendorGroupService().findById(groupId); + vendorInfo.setGroupId(group.getId()); } if (verifyCustomerSubContractDate.get()) { // 检查子合同日期是否在销售合同之后 if (!vendorInfo.isPrePurchase()) { String parentCode = contract.getParentCode(); if (StringUtils.hasText(parentCode)) { - Contract parent = getContractService().findByCode(parentCode); + ContractVo parent = getContractService().findByCode(parentCode); if (parent != null) { if (contract.getSetupDate().isBefore(parent.getSetupDate())) { holder.warn("采购合同:" + contract.getCode() + " 提交日期在销售合同之前"); @@ -436,13 +436,14 @@ public class ContractVerifyComm { } } - private void verifyVendorFile(VendorGroup group, boolean assignedProvider, Contract contract, + private void verifyVendorFile(VendorGroupVo group, boolean assignedProvider, ContractVo contract, MessageHolder holder) { if (group == null) { return; } boolean loseFile = false; - List files = getContractFileService().findAllByContract(contract); + ContractFileService fileService = getContractFileService(); + List files = fileService.findAllByContract(contract); List list = getVendorGroupRequireFileTypeService().findByGroupId(group.getId()); if (list != null && !list.isEmpty()) { for (VendorGroupRequireFileType item : list) { @@ -473,16 +474,16 @@ public class ContractVerifyComm { holder.error("未上报供应商比价"); } else { for (ContractBidVendor bidVendor : bidVendors) { - ContractFile contractFile = bidVendor.getQuotationSheet(); + ContractFileVo contractFile = fileService.findById(bidVendor.getQuotationSheet().getId()); if (contractFile == null) { - if (requireQuotation && bidVendor.getCompany().equals(contract.getCompany())) { + if (requireQuotation && bidVendor.getCompany().getId().equals(contract.getCompanyId())) { holder.debug("供应商类型启用了允许选中供应商不必须要有报价表"); } else { holder.error("供应商比价:" + bidVendor.getCompany().getName() + " 未上传/关联报价表"); loseFile = true; } } else { - contractFile = getContractFileService().findById(contractFile.getId()); + contractFile = fileService.findById(contractFile.getId()); ContractFileType type = contractFile.getType(); if (type != ContractFileType.QuotationSheet) { holder.error("供应商比价:" + contractFile.getFileName() + " 报价表记录异常,类型错误"); @@ -518,11 +519,11 @@ public class ContractVerifyComm { return fileTypeLocal.getValue(); } - private boolean hasFileType(List files, ContractFileType fileType) { + private boolean hasFileType(List files, ContractFileType fileType) { if (files == null || files.isEmpty()) { return false; } - for (ContractFile file : files) { + for (ContractFileVo file : files) { if (file.getType() == fileType) { return true; } @@ -530,11 +531,12 @@ public class ContractVerifyComm { return false; } - private void verifyAsCustomer(Company company, CompanyExtendInfo companyExtendInfo, Contract contract, + private void verifyAsCustomer(CompanyVo company, CompanyExtendInfoVo companyExtendInfo, ContractVo contract, MessageHolder holder) { boolean valiad = true; - Project project = contract.getProject(); - if (project == null) { + ProjectVo project = null; + Integer projectId = contract.getProject(); + if (projectId == null) { // 收款的合同时,检查是否关联了项目,如果没有则创建 if (contract.getPayWay() == ContractPayWay.RECEIVE) { project = getProjectService().findByCode(contract.getCode()); @@ -548,30 +550,28 @@ public class ContractVerifyComm { throw new RuntimeException("code=" + contract.getCode(), e); } } - contract.setProject(project); + contract.setProject(project.getId()); contract = getContractService().save(contract); } - } - if (project != null) { - project = getProjectService().findById(project.getId()); - // fixed - contract.setProject(project); + } else { + project = getProjectService().findById(projectId); } if (project != null) { holder.info("验证项目信息:" + project.getCode() + " " + project.getName()); verifyProject(contract, project, holder.sub("项目")); - ProjectSaleType saleType = project.getSaleType(); - if (!ProxyUtils.isInitialized(saleType)) { - saleType = getSaleTypeService().findById(saleType.getId()); - } - if (saleType != null) { - if (getContractService().existsContractPath(contract)) { - saleType = getSaleTypeService().findById(saleType.getId()); - project.setSaleType(saleType); - if (!contract.getPath().startsWith(saleType.getPath())) { - holder.error("合同目录未在销售类型目录下"); + Integer saleTypeId = project.getSaleTypeId(); + + if (saleTypeId != null) { + ProjectSaleTypeVo saleType = getSaleTypeService().findById(saleTypeId); + if (saleType != null) { + if (getContractService().existsContractPath(contract)) { + saleType = getSaleTypeService().findById(saleType.getId()); + project.setSaleTypeId(saleType.getId()); + if (!contract.getPath().startsWith(saleType.getPath())) { + holder.error("合同目录未在销售类型目录下"); + } } } } @@ -594,18 +594,19 @@ public class ContractVerifyComm { /** * 客户,检查评估表 */ - private boolean verifyCustomerContract(Contract contract, MessageHolder holder) { + private boolean verifyCustomerContract(ContractVo contract, MessageHolder holder) { if (!verifyCustomer.get()) { return false; } boolean valid = true; - Company company = contract.getCompany(); + Integer companyId = contract.getCompanyId(); + CompanyVo company = getCompanyService().findById(companyId); if (company == null) { holder.warn("合同未关联公司"); valid = false; } - CompanyCustomer companyCustomer = getCompanyCustomerService().findByCompany(company); + CompanyCustomerVo companyCustomer = getCompanyCustomerService().findByCompany(company); if (companyCustomer == null) { holder.warn("合同未关联客户"); valid = false; @@ -626,7 +627,7 @@ public class ContractVerifyComm { return valid; } - private boolean verifyCustomerFileByContract(CompanyCustomer companyCustomer, Contract contract, + private boolean verifyCustomerFileByContract(CompanyCustomerVo companyCustomer, ContractVo contract, MessageHolder holder) { List verifyDates = new ArrayList<>(); LocalDate minDate = LocalDate.of(2022, 1, 1); @@ -679,14 +680,14 @@ public class ContractVerifyComm { } // 客户 - List files = getCompanyCustomerFileService().findAllByCustomer(companyCustomer); + List files = getCompanyCustomerFileService().findAllByCustomer(companyCustomer); if (files == null || files.isEmpty()) { holder.warn("未见客户评估表"); return false; } for (LocalDate verifyDate : verifyDates) { - CompanyCustomerFile customerFile = files.stream() + CompanyCustomerFileVo customerFile = files.stream() .filter(v -> v.getSignDate() != null && v.isValid()) .filter(v -> v.getType() == CompanyCustomerFileType.EvaluationForm) .filter(v -> MyDateTimeUtils.dateValidFilter(verifyDate, v.getSignDate(), @@ -697,10 +698,10 @@ public class ContractVerifyComm { } } - CompanyCustomerFile latestFile = files.stream() + CompanyCustomerFileVo latestFile = files.stream() .filter(v -> v.getSignDate() != null && v.isValid()) .filter(v -> v.getType() == CompanyCustomerFileType.EvaluationForm) - .max(Comparator.comparing(CompanyCustomerFile::getSignDate)) + .max(Comparator.comparing(CompanyCustomerFileVo::getSignDate)) .orElse(null); if (latestFile == null) { @@ -713,13 +714,20 @@ public class ContractVerifyComm { return false; } - private void verifyProject(Contract contract, Project project, MessageHolder holder) { - ProjectSaleType saleType = project.getSaleType(); - if (saleType == null) { + private void verifyProject(ContractVo contract, ProjectVo project, MessageHolder holder) { + Integer saleTypeId = project.getSaleTypeId(); + ProjectSaleTypeVo saleType = null; + if (saleTypeId == null) { String code = contract.getCode(); if (code != null && code.length() > 5) { saleType = getSaleTypeService().findByCode(code.substring(0, 1)); + if (saleType != null) { + project.setSaleTypeId(saleType.getId()); + holder.info("根据合同代码设置项目销售类型:" + saleType.getName()); + } } + } else { + saleType = getSaleTypeService().findById(saleTypeId); } if (saleType == null) { @@ -733,12 +741,12 @@ public class ContractVerifyComm { boolean needImport = false; ProjectCostService projectCostService = getProjectCostService(); - ProjectCost autoCost = projectCostService.findAutoCostByProject(project); + ProjectCostVo autoCost = projectCostService.findAutoCostByProject(project); if (autoCost == null) { // 创建 V0 项目成本 - ProjectCost cost = projectCostService.newInstanceByProject(project); + ProjectCostVo cost = projectCostService.newInstanceByProject(project); cost.setVersion(0); - cost.setApplicant(getEmployeeService().findById(EmployeeService.DEFAULT_SYSTEM_EMPLOYEE_ID)); + cost.setApplicantId(EmployeeService.DEFAULT_SYSTEM_EMPLOYEE_ID); cost.setApplyTime(LocalDateTime.now()); cost.setDescription("自动导入"); autoCost = projectCostService.save(cost); @@ -756,7 +764,7 @@ public class ContractVerifyComm { if (needImport && !autoCost.isImportLock()) { holder.debug("更新V0项目成本"); - ProjectCost cost = projectCostService.findAutoCostByProject(project); + ProjectCostVo cost = projectCostService.findAutoCostByProject(project); if (cost == null) { cost = projectCostService.newInstanceByProject(project); cost.setVersion(0); @@ -768,15 +776,15 @@ public class ContractVerifyComm { } // 检查最新的项目成本,默认 V1 - ProjectCost latestCost = projectCostService.findLatestByProject(project); + ProjectCostVo latestCost = projectCostService.findLatestByProject(project); if (latestCost == null) { - ProjectCost cost = projectCostService.newInstanceByProject(project); + ProjectCostVo cost = projectCostService.newInstanceByProject(project); cost.setVersion(1); - Employee applicant = project.getApplicant(); - if (applicant == null) { - applicant = contract.getEmployee(); + Integer applicantId = project.getApplicantId(); + if (applicantId == null) { + applicantId = contract.getEmployeeId(); } - cost.setApplicant(applicant); + cost.setApplicantId(applicantId); cost.setApplyTime(project.getCreated().atTime(LocalTime.now())); latestCost = projectCostService.save(cost); } else { @@ -797,22 +805,22 @@ public class ContractVerifyComm { } if (project.isUseBid()) { - List bids = getProjectBidService().findAllByProject(project); + List bids = getProjectBidService().findAllByProject(project); if (bids.isEmpty()) { holder.warn("投标未创建"); } } if (project.isUseOffer()) { - List quotations = getProjectQuotationService().findAllByProject(project); + List quotations = getProjectQuotationService().findAllByProject(project); if (quotations.isEmpty()) { holder.warn("报价未创建"); } } } - private boolean verifyContractFileAsCustomer(Project project, Contract contract, MessageHolder holder) { + private boolean verifyContractFileAsCustomer(ProjectVo project, ContractVo contract, MessageHolder holder) { boolean loseFile = false; - List files = getContractFileService().findAllByContract(contract); + List files = getContractFileService().findAllByContract(contract); if (project != null) { // 投标 if (project.isUseBid()) { @@ -834,12 +842,12 @@ public class ContractVerifyComm { loseFile = true; } } - - ProjectSaleType saleType = project.getSaleType(); + Integer saleTypeId = project.getSaleTypeId(); + ProjectSaleTypeVo saleType = getSaleTypeService().findById(saleTypeId); if (saleType != null) { - List list = getSaleTypeRequireFileTypeService() + List list = getSaleTypeRequireFileTypeService() .findBySaleTypeId(saleType.getId()); - for (ProjectSaleTypeRequireFileType item : list) { + for (ProjectSaleTypeRequireFileTypeVo item : list) { ContractFileType fileType = item.getFileType(); if (fileType != null) { if (!hasFileType(files, fileType)) { diff --git a/client/src/main/java/com/ecep/contract/task/ContractVerifyResultExportAsExcelFileTasker.java b/client/src/main/java/com/ecep/contract/task/ContractVerifyResultExportAsExcelFileTasker.java index f6fa4ee..759c794 100644 --- a/client/src/main/java/com/ecep/contract/task/ContractVerifyResultExportAsExcelFileTasker.java +++ b/client/src/main/java/com/ecep/contract/task/ContractVerifyResultExportAsExcelFileTasker.java @@ -24,10 +24,10 @@ import com.ecep.contract.Message; import com.ecep.contract.MessageHolder; import com.ecep.contract.SpringApp; import com.ecep.contract.controller.contract.ContractVerifyWindowController; -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.Employee; import com.ecep.contract.service.ContractService; import com.ecep.contract.service.EmployeeService; +import com.ecep.contract.vo.ContractVo; +import com.ecep.contract.vo.EmployeeVo; import lombok.Data; import lombok.EqualsAndHashCode; @@ -64,13 +64,14 @@ public class ContractVerifyResultExportAsExcelFileTasker extends Tasker protected Object execute(MessageHolder holder) throws Exception { holder.debug("共有信息 " + models.size() + " 条"); - Employee unnamed = new Employee(); + EmployeeVo unnamed = new EmployeeVo(); unnamed.setName("未命名"); // 按员工分组 - Map> listMap = models.stream() + Map> listMap = models.stream() .collect(Collectors.groupingBy(model -> { - Employee employee = model.getEmployee().get(); + Integer employeeId = model.getEmployee().get(); + EmployeeVo employee = getEmployeeService().findById(employeeId); if (employee == null) { employee = unnamed; } @@ -89,8 +90,8 @@ public class ContractVerifyResultExportAsExcelFileTasker extends Tasker wrapStyle.setWrapText(true); // 关键设置:自动换行 AtomicInteger counter = new AtomicInteger(); - for (Map.Entry> entry : listMap.entrySet()) { - Employee employee = entry.getKey(); + for (Map.Entry> entry : listMap.entrySet()) { + EmployeeVo employee = entry.getKey(); List list = entry.getValue(); // @@ -118,7 +119,7 @@ public class ContractVerifyResultExportAsExcelFileTasker extends Tasker for (int i = 0; i < list.size(); i++) { try { ContractVerifyWindowController.Model model = list.get(i); - Contract contract = getContractService().findByCode(model.getCode().get()); + ContractVo contract = getContractService().findByCode(model.getCode().get()); Row row = sheet.createRow(i + 1); setCellValue(sheet, row.getRowNum(), 0, model.getCode().get()); setCellValue(sheet, row.getRowNum(), 1, model.getName().get()); diff --git a/client/src/main/java/com/ecep/contract/task/ContractVerifyTasker.java b/client/src/main/java/com/ecep/contract/task/ContractVerifyTasker.java index ba1ff0a..a4738b0 100644 --- a/client/src/main/java/com/ecep/contract/task/ContractVerifyTasker.java +++ b/client/src/main/java/com/ecep/contract/task/ContractVerifyTasker.java @@ -1,13 +1,13 @@ package com.ecep.contract.task; import com.ecep.contract.MessageHolder; -import com.ecep.contract.model.Contract; +import com.ecep.contract.vo.ContractVo; import lombok.Setter; public class ContractVerifyTasker extends Tasker { @Setter - private Contract contract; + private ContractVo contract; @Override protected Object execute(MessageHolder holder) throws Exception { diff --git a/client/src/main/java/com/ecep/contract/task/Tasker.java b/client/src/main/java/com/ecep/contract/task/Tasker.java index 4fbd2a0..61ae9d2 100644 --- a/client/src/main/java/com/ecep/contract/task/Tasker.java +++ b/client/src/main/java/com/ecep/contract/task/Tasker.java @@ -1,30 +1,32 @@ package com.ecep.contract.task; +import java.util.Locale; +import java.util.logging.Level; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeansException; + import com.ecep.contract.Desktop; import com.ecep.contract.Message; import com.ecep.contract.MessageHolder; import com.ecep.contract.SpringApp; -import com.ecep.contract.model.Employee; import com.ecep.contract.service.CompanyService; import com.ecep.contract.service.EmployeeService; import com.ecep.contract.service.SysConfService; +import com.ecep.contract.vo.EmployeeVo; + import javafx.application.Platform; import javafx.beans.property.StringProperty; import javafx.concurrent.Task; import javafx.scene.control.ListCell; import lombok.Setter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.BeansException; - -import java.util.Locale; -import java.util.logging.Level; public abstract class Tasker extends Task { private static final Logger logger = LoggerFactory.getLogger(Tasker.class); @Setter protected java.util.function.Predicate messageHandler; - private Employee currentUser; + private EmployeeVo currentUser; @Setter private CompanyService companyService; @Setter @@ -57,7 +59,7 @@ public abstract class Tasker extends Task { return SpringApp.getBean(requiredType); } - public Employee getCurrentUser() { + public EmployeeVo getCurrentUser() { if (currentUser == null) { currentUser = getEmployeeService().findById(Desktop.instance.getActiveEmployeeId()); } diff --git a/client/src/main/java/com/ecep/contract/util/ParamUtils.java b/client/src/main/java/com/ecep/contract/util/ParamUtils.java index f9f46dd..01569db 100644 --- a/client/src/main/java/com/ecep/contract/util/ParamUtils.java +++ b/client/src/main/java/com/ecep/contract/util/ParamUtils.java @@ -1,16 +1,19 @@ package com.ecep.contract.util; +import com.ecep.contract.constant.ServiceConstant; + import java.time.LocalDate; import java.util.HashMap; import java.util.Map; import java.util.Objects; +import java.util.function.Consumer; +import java.util.function.Supplier; public class ParamUtils { public static Map between(String key, LocalDate begin, LocalDate end) { return Map.of(key, Map.of( "begin", begin, - "end", end - )); + "end", end)); } public static Map equal(String key, Object value) { @@ -61,6 +64,11 @@ public class ParamUtils { return this; } + public Builder greaterThan(String key, LocalDate value) { + params.put(key, Map.of("greaterThan", value)); + return this; + } + public Builder equals(String key, Object value) { params.put(key, value); return this; @@ -71,9 +79,29 @@ public class ParamUtils { return this; } + public Builder search(String searchText) { + params.put(ServiceConstant.KEY_SEARCH_TEXT, searchText); + return this; + } + public Map build() { return params; } + public Builder and(Consumer consumer) { + Builder builder = new Builder(); + consumer.accept(builder); + params.put("and", builder); + return this; + } + + public Builder or(Consumer consumer) { + Builder builder = new Builder(); + consumer.accept(builder); + params.put("or", builder); + return this; + } + } + } diff --git a/client/src/main/java/com/ecep/contract/vm/BankViewModel.java b/client/src/main/java/com/ecep/contract/vm/BankViewModel.java index 6bd2c2b..7e616d4 100644 --- a/client/src/main/java/com/ecep/contract/vm/BankViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/BankViewModel.java @@ -2,7 +2,6 @@ package com.ecep.contract.vm; import java.util.Objects; -import com.ecep.contract.model.Bank; import com.ecep.contract.vo.BankVo; import javafx.beans.property.SimpleStringProperty; diff --git a/client/src/main/java/com/ecep/contract/vm/BaseViewModel.java b/client/src/main/java/com/ecep/contract/vm/BaseViewModel.java index b3c14ff..c9713a6 100644 --- a/client/src/main/java/com/ecep/contract/vm/BaseViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/BaseViewModel.java @@ -84,6 +84,12 @@ public class BaseViewModel { protected void updateFrom(T v) { } + /** + * 拷贝数据到Vo 中 + * + * @param v 实体 + * @return 如果有数据更新则 返回 true + */ public boolean copyTo(T v) { return false; } diff --git a/client/src/main/java/com/ecep/contract/vm/CloudRkViewModel.java b/client/src/main/java/com/ecep/contract/vm/CloudRkViewModel.java index d50e79b..39c7176 100644 --- a/client/src/main/java/com/ecep/contract/vm/CloudRkViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/CloudRkViewModel.java @@ -2,8 +2,7 @@ package com.ecep.contract.vm; import java.time.LocalDateTime; -import com.ecep.contract.model.CloudRk; -import com.ecep.contract.model.Company; +import com.ecep.contract.vo.CloudRkVo; import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleIntegerProperty; @@ -14,7 +13,7 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class CloudRkViewModel extends IdentityViewModel { +public class CloudRkViewModel extends IdentityViewModel { /** * 云端Id */ @@ -64,9 +63,9 @@ public class CloudRkViewModel extends IdentityViewModel { */ private SimpleStringProperty description = new SimpleStringProperty(); /** - * 公司 + * 公司, Company */ - private SimpleObjectProperty company = new SimpleObjectProperty<>(); + private SimpleObjectProperty company = new SimpleObjectProperty<>(); /** * 最后更新日期 */ @@ -88,8 +87,17 @@ public class CloudRkViewModel extends IdentityViewModel { */ private SimpleIntegerProperty version = new SimpleIntegerProperty(); + /** + * 从Vo创建ViewModel + */ + public static CloudRkViewModel from(CloudRkVo v) { + CloudRkViewModel vm = new CloudRkViewModel(); + vm.updateFrom(v); + return vm; + } + @Override - protected void updateFrom(CloudRk v) { + protected void updateFrom(CloudRkVo v) { super.updateFrom(v); cloudId.set(v.getCloudId()); updateDays.set(v.getUpdateDays()); @@ -103,17 +111,16 @@ public class CloudRkViewModel extends IdentityViewModel { vendorGrade.set(v.getVendorGrade()); vendorDescription.set(v.getVendorDescription()); vendorScore.set(v.getVendorScore()); - company.set(v.getCompany()); + company.set(v.getCompanyId()); latestUpdate.set(v.getLatestUpdate()); cloudEntUpdate.set(v.getCloudEntUpdate()); cloudBlackListUpdated.set(v.getCloudBlackListUpdated()); cloudLatest.set(v.getCloudLatest()); - cloudLatest.set(v.getCloudLatest()); version.set(v.getVersion()); } @Override - public boolean copyTo(CloudRk v) { + public boolean copyTo(CloudRkVo v) { boolean result = super.copyTo(v); v.setCloudId(cloudId.get()); v.setUpdateDays(updateDays.get()); @@ -127,7 +134,7 @@ public class CloudRkViewModel extends IdentityViewModel { v.setVendorGrade(vendorGrade.get()); v.setVendorDescription(vendorDescription.get()); v.setVendorScore(vendorScore.get()); - v.setCompany(company.get()); + v.setCompanyId(company.get()); v.setLatestUpdate(latestUpdate.get()); v.setCloudEntUpdate(cloudEntUpdate.get()); v.setCloudBlackListUpdated(cloudBlackListUpdated.get()); diff --git a/client/src/main/java/com/ecep/contract/vm/CloudTycInfoViewModel.java b/client/src/main/java/com/ecep/contract/vm/CloudTycInfoViewModel.java index 8fd5b31..bc940f8 100644 --- a/client/src/main/java/com/ecep/contract/vm/CloudTycInfoViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/CloudTycInfoViewModel.java @@ -1,14 +1,11 @@ package com.ecep.contract.vm; -import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Objects; -import com.ecep.contract.model.CloudTyc; -import com.ecep.contract.model.Company; -import com.ecep.contract.util.MyDateTimePropertyUtils; +import com.ecep.contract.vo.CloudTycVo; import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleObjectProperty; @@ -18,15 +15,15 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class CloudTycInfoViewModel extends IdentityViewModel { +public class CloudTycInfoViewModel extends IdentityViewModel { /** * 云端Id */ private SimpleStringProperty cloudId = new SimpleStringProperty(); /** - * 公司 + * 公司, Company */ - private SimpleObjectProperty company = new SimpleObjectProperty<>(); + private SimpleObjectProperty company = new SimpleObjectProperty<>(); /** * 最后更新日期 */ @@ -39,12 +36,12 @@ public class CloudTycInfoViewModel extends IdentityViewModel { private SimpleObjectProperty cloudLatest = new SimpleObjectProperty<>(); @Override - protected void updateFrom(CloudTyc info) { + protected void updateFrom(CloudTycVo info) { super.updateFrom(info); - update_((CloudTyc) info); + update_((CloudTycVo) info); } - private void update_(CloudTyc info) { + private void update_(CloudTycVo info) { score.set(info.getScore()); if (info.getCloudLatest() != null) { @@ -58,15 +55,15 @@ public class CloudTycInfoViewModel extends IdentityViewModel { } @Override - public boolean copyTo(CloudTyc info) { + public boolean copyTo(CloudTycVo info) { boolean modified = super.copyTo(info); - if (copyTo_((CloudTyc) info)) { + if (copyTo_((CloudTycVo) info)) { modified = true; } return modified; } - private boolean copyTo_(CloudTyc info) { + private boolean copyTo_(CloudTycVo info) { boolean modified = super.copyTo(info); if (!Objects.equals(info.getId(), getId().get())) { info.setId(getId().get()); @@ -78,16 +75,15 @@ public class CloudTycInfoViewModel extends IdentityViewModel { modified = true; } - Instant latest = MyDateTimePropertyUtils.localDateTimeToInstant(cloudLatest); - if (!Objects.equals(info.getCloudLatest(), latest)) { - info.setCloudLatest(latest); + if (!Objects.equals(info.getCloudLatest(), cloudLatest.get())) { + info.setCloudLatest(cloudLatest.get()); modified = true; } return modified; } - public static CloudTycInfoViewModel from(CloudTyc cc) { + public static CloudTycInfoViewModel from(CloudTycVo cc) { CloudTycInfoViewModel model = new CloudTycInfoViewModel(); model.update(cc); return model; diff --git a/client/src/main/java/com/ecep/contract/vm/CloudYuInfoViewModel.java b/client/src/main/java/com/ecep/contract/vm/CloudYuInfoViewModel.java index e27283a..fc03310 100644 --- a/client/src/main/java/com/ecep/contract/vm/CloudYuInfoViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/CloudYuInfoViewModel.java @@ -1,15 +1,10 @@ package com.ecep.contract.vm; -import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.ZonedDateTime; import java.util.Objects; -import com.ecep.contract.model.CloudYu; -import com.ecep.contract.model.Company; -import com.ecep.contract.util.MyDateTimePropertyUtils; +import com.ecep.contract.vo.CloudYuVo; import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleObjectProperty; @@ -19,15 +14,15 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class CloudYuInfoViewModel extends IdentityViewModel { - /** +public class CloudYuInfoViewModel extends IdentityViewModel { + /** * 云端Id */ private SimpleStringProperty cloudId = new SimpleStringProperty(); /** - * 公司 + * 公司ID */ - private SimpleObjectProperty company = new SimpleObjectProperty<>(); + private SimpleObjectProperty company = new SimpleObjectProperty<>(); /** * 最后更新日期 */ @@ -47,35 +42,28 @@ public class CloudYuInfoViewModel extends IdentityViewModel { private SimpleObjectProperty cloudLatest = new SimpleObjectProperty<>(); @Override - protected void updateFrom(CloudYu info) { + protected void updateFrom(CloudYuVo info) { super.updateFrom(info); - update_((CloudYu) info); + update_((CloudYuVo) info); } - private void update_(CloudYu info) { + private void update_(CloudYuVo info) { vendorCode.set(info.getExceptionMessage()); vendorDevelopDate.set(info.getVendorUpdateDate()); customerDevelopDate.set(info.getCustomerUpdateDate()); - if (info.getCloudLatest() != null) { - ZoneId zone = ZoneId.systemDefault(); - ZonedDateTime zonedDateTime = info.getCloudLatest().atZone(zone); - LocalDateTime localDateTime = zonedDateTime.toLocalDateTime(); - cloudLatest.set(localDateTime); - } else { - cloudLatest.set(null); - } + cloudLatest.set(info.getCloudLatest()); } @Override - public boolean copyTo(CloudYu info) { + public boolean copyTo(CloudYuVo info) { boolean modified = super.copyTo(info); - if (copyTo_((CloudYu) info)) { + if (copyTo_((CloudYuVo) info)) { modified = true; } return modified; } - private boolean copyTo_(CloudYu info) { + private boolean copyTo_(CloudYuVo info) { boolean modified = false; if (!Objects.equals(info.getExceptionMessage(), vendorCode.get())) { info.setExceptionMessage(vendorCode.get()); @@ -90,20 +78,18 @@ public class CloudYuInfoViewModel extends IdentityViewModel { modified = true; } - Instant latest = MyDateTimePropertyUtils.localDateTimeToInstant(cloudLatest); - if (!Objects.equals(info.getCloudLatest(), latest)) { - info.setCloudLatest(latest); + if (!Objects.equals(info.getCloudLatest(), cloudLatest.get())) { + info.setCloudLatest(cloudLatest.get()); modified = true; } return modified; } - public static CloudYuInfoViewModel from(CloudYu cc) { + public static CloudYuInfoViewModel from(CloudYuVo cc) { CloudYuInfoViewModel model = new CloudYuInfoViewModel(); model.update(cc); return model; } - } diff --git a/client/src/main/java/com/ecep/contract/vm/CompanyBlackReasonViewModel.java b/client/src/main/java/com/ecep/contract/vm/CompanyBlackReasonViewModel.java index 5ace9b7..e02f633 100644 --- a/client/src/main/java/com/ecep/contract/vm/CompanyBlackReasonViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/CompanyBlackReasonViewModel.java @@ -4,7 +4,7 @@ import java.time.LocalDate; import java.util.Objects; import com.ecep.contract.BlackReasonType; -import com.ecep.contract.model.CompanyBlackReason; +import com.ecep.contract.vo.CompanyBlackReasonVo; import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleObjectProperty; @@ -16,7 +16,7 @@ import lombok.ToString; @Data @EqualsAndHashCode(callSuper = false) @ToString -public class CompanyBlackReasonViewModel extends IdentityViewModel { +public class CompanyBlackReasonViewModel extends IdentityViewModel { private SimpleIntegerProperty id = new SimpleIntegerProperty(); private SimpleObjectProperty type = new SimpleObjectProperty<>(); @@ -31,14 +31,14 @@ public class CompanyBlackReasonViewModel extends IdentityViewModel includeDate = new SimpleObjectProperty<>(); - public static CompanyBlackReasonViewModel from(CompanyBlackReason reason) { + public static CompanyBlackReasonViewModel from(CompanyBlackReasonVo reason) { CompanyBlackReasonViewModel model = new CompanyBlackReasonViewModel(); model.update(reason); return model; } @Override - protected void updateFrom(CompanyBlackReason v) { + protected void updateFrom(CompanyBlackReasonVo v) { getId().set(v.getId()); getType().set(v.getType()); getApplyName().set(v.getApplyName()); @@ -52,7 +52,7 @@ public class CompanyBlackReasonViewModel extends IdentityViewModel { +public class CompanyContactViewModel extends IdentityViewModel { private SimpleIntegerProperty id = new SimpleIntegerProperty(); private SimpleStringProperty name = new SimpleStringProperty(); private SimpleStringProperty position = new SimpleStringProperty(); @@ -25,14 +26,14 @@ public class CompanyContactViewModel extends IdentityViewModel { private SimpleIntegerProperty version = new SimpleIntegerProperty(); private SimpleObjectProperty created = new SimpleObjectProperty<>(); - public static CompanyContactViewModel from(CompanyContact contact) { + public static CompanyContactViewModel from(CompanyContactVo contact) { CompanyContactViewModel model = new CompanyContactViewModel(); model.update(contact); return model; } - public void updateFrom(CompanyContact v) { + public void updateFrom(CompanyContactVo v) { id.set(v.getId()); name.set(v.getName()); position.set(v.getPosition()); @@ -45,7 +46,7 @@ public class CompanyContactViewModel extends IdentityViewModel { version.set(v.getVersion()); } - public boolean copyTo(CompanyContact v) { + public boolean copyTo(CompanyContactVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(id.get(), v.getId())) { v.setId(id.get()); diff --git a/client/src/main/java/com/ecep/contract/vm/CompanyCustomerEvaluationFormFileViewModel.java b/client/src/main/java/com/ecep/contract/vm/CompanyCustomerEvaluationFormFileViewModel.java new file mode 100644 index 0000000..9415925 --- /dev/null +++ b/client/src/main/java/com/ecep/contract/vm/CompanyCustomerEvaluationFormFileViewModel.java @@ -0,0 +1,115 @@ +package com.ecep.contract.vm; + +import java.util.Objects; + +import com.ecep.contract.vo.CompanyCustomerEvaluationFormFileVo; + +import javafx.beans.property.SimpleIntegerProperty; +import javafx.beans.property.SimpleStringProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = false) +public class CompanyCustomerEvaluationFormFileViewModel extends IdentityViewModel { + + private SimpleIntegerProperty customerFile = new SimpleIntegerProperty(); + private SimpleStringProperty catalog = new SimpleStringProperty(); + private SimpleStringProperty level = new SimpleStringProperty(); + private SimpleIntegerProperty creditLevel = new SimpleIntegerProperty(0); + private SimpleIntegerProperty score1 = new SimpleIntegerProperty(0); + private SimpleIntegerProperty score2 = new SimpleIntegerProperty(0); + private SimpleIntegerProperty score3 = new SimpleIntegerProperty(0); + private SimpleIntegerProperty score4 = new SimpleIntegerProperty(0); + private SimpleIntegerProperty score5 = new SimpleIntegerProperty(0); + private SimpleIntegerProperty scoreTemplateVersion = new SimpleIntegerProperty(1); + + private SimpleStringProperty filePath = new SimpleStringProperty(); + + public static CompanyCustomerEvaluationFormFileViewModel from(CompanyCustomerEvaluationFormFileVo vo) { + CompanyCustomerEvaluationFormFileViewModel viewModel = new CompanyCustomerEvaluationFormFileViewModel(); + viewModel.update(vo); + return viewModel; + } + + @Override + protected void updateFrom(CompanyCustomerEvaluationFormFileVo vo) { + super.updateFrom(vo); + if (vo.getCustomerFile() != null) { + customerFile.set(vo.getCustomerFile()); + } + if (vo.getCatalog() != null) { + catalog.set(vo.getCatalog()); + } + if (vo.getLevel() != null) { + level.set(vo.getLevel()); + } + if (vo.getCreditLevel() != null) { + creditLevel.set(vo.getCreditLevel()); + } + if (vo.getScore1() != null) { + score1.set(vo.getScore1()); + } + if (vo.getScore2() != null) { + score2.set(vo.getScore2()); + } + if (vo.getScore3() != null) { + score3.set(vo.getScore3()); + } + if (vo.getScore4() != null) { + score4.set(vo.getScore4()); + } + if (vo.getScore5() != null) { + score5.set(vo.getScore5()); + } + if (vo.getScoreTemplateVersion() != null) { + scoreTemplateVersion.set(vo.getScoreTemplateVersion()); + } + } + + @Override + public boolean copyTo(CompanyCustomerEvaluationFormFileVo vo) { + boolean changed = super.copyTo(vo); + if (!Objects.equals(customerFile.get(), vo.getCustomerFile())) { + vo.setCustomerFile(customerFile.get()); + changed = true; + } + if (!Objects.equals(catalog.get(), vo.getCatalog())) { + vo.setCatalog(catalog.get()); + changed = true; + } + if (!Objects.equals(level.get(), vo.getLevel())) { + vo.setLevel(level.get()); + changed = true; + } + if (!Objects.equals(creditLevel.get(), vo.getCreditLevel())) { + vo.setCreditLevel(creditLevel.get()); + changed = true; + } + if (!Objects.equals(score1.get(), vo.getScore1())) { + vo.setScore1(score1.get()); + changed = true; + } + if (!Objects.equals(score2.get(), vo.getScore2())) { + vo.setScore2(score2.get()); + changed = true; + } + if (!Objects.equals(score3.get(), vo.getScore3())) { + vo.setScore3(score3.get()); + changed = true; + } + if (!Objects.equals(score4.get(), vo.getScore4())) { + vo.setScore4(score4.get()); + changed = true; + } + if (!Objects.equals(score5.get(), vo.getScore5())) { + vo.setScore5(score5.get()); + changed = true; + } + if (!Objects.equals(scoreTemplateVersion.get(), vo.getScoreTemplateVersion())) { + vo.setScoreTemplateVersion(scoreTemplateVersion.get()); + changed = true; + } + return changed; + } +} diff --git a/client/src/main/java/com/ecep/contract/vm/CompanyCustomerFileViewModel.java b/client/src/main/java/com/ecep/contract/vm/CompanyCustomerFileViewModel.java index 045b3ca..344fcaf 100644 --- a/client/src/main/java/com/ecep/contract/vm/CompanyCustomerFileViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/CompanyCustomerFileViewModel.java @@ -4,8 +4,7 @@ import java.time.LocalDate; import java.util.Objects; import com.ecep.contract.CompanyCustomerFileType; -import com.ecep.contract.model.CompanyCustomer; -import com.ecep.contract.model.CompanyCustomerFile; +import com.ecep.contract.vo.CompanyCustomerFileVo; import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleObjectProperty; @@ -17,17 +16,22 @@ import lombok.ToString; @Data @EqualsAndHashCode(callSuper = false) @ToString -public class CompanyCustomerFileViewModel extends IdentityViewModel { +public class CompanyCustomerFileViewModel extends IdentityViewModel { - public static CompanyCustomerFileViewModel from(CompanyCustomerFile companyCustomerFile) { + public static CompanyCustomerFileViewModel from(CompanyCustomerFileVo companyCustomerFile) { CompanyCustomerFileViewModel model = new CompanyCustomerFileViewModel(); model.update(companyCustomerFile); return model; } + /** + * CompanyCustomer + */ @ToString.Exclude - private SimpleObjectProperty customer = new SimpleObjectProperty<>(); - + private SimpleObjectProperty customer = new SimpleObjectProperty<>(); + /** + * 类型 + */ private SimpleObjectProperty type = new SimpleObjectProperty<>(); private SimpleStringProperty filePath = new SimpleStringProperty(); @@ -39,9 +43,8 @@ public class CompanyCustomerFileViewModel extends IdentityViewModel { +public class CompanyCustomerViewModel extends IdentityViewModel { private SimpleStringProperty state = new SimpleStringProperty(); /** - * 关联的企业 + * 关联的企业,Company */ - private SimpleObjectProperty company = new SimpleObjectProperty<>(); + private SimpleObjectProperty company = new SimpleObjectProperty<>(); /** * 发展日期 */ @@ -35,47 +29,39 @@ public class CompanyCustomerViewModel extends IdentityViewModel */ private SimpleStringProperty path = new SimpleStringProperty(); /** - * 关联联系人 + * 关联联系人,CompanyContact */ - private SimpleObjectProperty contact = new SimpleObjectProperty<>(); + private SimpleObjectProperty contact = new SimpleObjectProperty<>(); private SimpleStringProperty description = new SimpleStringProperty(); private SimpleObjectProperty created = new SimpleObjectProperty<>(); private SimpleIntegerProperty version = new SimpleIntegerProperty(); - public static CompanyCustomerViewModel from(CompanyCustomer cc) { + public static CompanyCustomerViewModel from(CompanyCustomerVo cc) { CompanyCustomerViewModel model = new CompanyCustomerViewModel(); model.update(cc); return model; } - public void updateFrom(CompanyCustomer c) { + public void updateFrom(CompanyCustomerVo c) { super.updateFrom(c); - getCompany().set(c.getCompany()); + getCompany().set(c.getCompanyId()); getDevelopDate().set(c.getDevelopDate()); - getContact().set(c.getContact()); + getContact().set(c.getContactId()); getPath().set(c.getPath()); getDescription().set(c.getDescription()); - - if (c.getCreated() != null) { - ZoneId zone = ZoneId.systemDefault(); - ZonedDateTime zonedDateTime = c.getCreated().atZone(zone); - LocalDateTime localDateTime = zonedDateTime.toLocalDateTime(); - getCreated().set(localDateTime); - } else { - getCreated().set(null); - } + getCreated().set(c.getCreated()); version.set(c.getVersion()); } - public boolean copyTo(CompanyCustomer v) { + public boolean copyTo(CompanyCustomerVo v) { boolean modified = super.copyTo(v); - if (!Objects.equals(company.get(), v.getCompany())) { - v.setCompany(company.get()); + if (!Objects.equals(company.get(), v.getCompanyId())) { + v.setCompanyId(company.get()); modified = true; } - if (!Objects.equals(contact.get(), v.getContact())) { - v.setContact(contact.get()); + if (!Objects.equals(contact.get(), v.getContactId())) { + v.setContactId(contact.get()); modified = true; } if (!Objects.equals(developDate.get(), v.getDevelopDate())) { @@ -90,17 +76,12 @@ public class CompanyCustomerViewModel extends IdentityViewModel v.setDescription(description.get()); modified = true; } - if (created.get() == null) { - v.setCreated(null); - } else { - Instant instant = created.get().toInstant(ZoneOffset.ofHours(8)); - if (!Objects.equals(instant, v.getCreated())) { - v.setCreated(instant); - modified = true; - } + + if (!Objects.equals(created.get(), v.getCreated())) { + v.setCreated(created.get()); + modified = true; } + return modified; } } - - diff --git a/client/src/main/java/com/ecep/contract/vm/CompanyExtendInfoViewModel.java b/client/src/main/java/com/ecep/contract/vm/CompanyExtendInfoViewModel.java index 6d3d3da..787cde2 100644 --- a/client/src/main/java/com/ecep/contract/vm/CompanyExtendInfoViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/CompanyExtendInfoViewModel.java @@ -2,8 +2,9 @@ package com.ecep.contract.vm; import java.util.Objects; -import com.ecep.contract.model.Company; import com.ecep.contract.model.CompanyExtendInfo; +import com.ecep.contract.vo.CompanyExtendInfoVo; +import com.ecep.contract.vo.CompanyVo; import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleIntegerProperty; @@ -13,36 +14,36 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class CompanyExtendInfoViewModel extends IdentityViewModel { +public class CompanyExtendInfoViewModel extends IdentityViewModel { /** * 关联的公司 */ - private SimpleObjectProperty company = new SimpleObjectProperty<>(); + private SimpleObjectProperty company = new SimpleObjectProperty<>(); /** * 是否禁用核验 */ private SimpleBooleanProperty disableVerify = new SimpleBooleanProperty(); private SimpleIntegerProperty version = new SimpleIntegerProperty(); - public static CompanyExtendInfoViewModel from(CompanyExtendInfo v) { + public static CompanyExtendInfoViewModel from(CompanyExtendInfoVo v) { CompanyExtendInfoViewModel vm = new CompanyExtendInfoViewModel(); vm.updateFrom(v); return vm; } @Override - protected void updateFrom(CompanyExtendInfo v) { + protected void updateFrom(CompanyExtendInfoVo v) { super.updateFrom(v); - getCompany().set(v.getCompany()); + getCompany().set(v.getCompanyId()); getDisableVerify().set(v.isDisableVerify()); getVersion().set(v.getVersion()); } @Override - public boolean copyTo(CompanyExtendInfo v) { + public boolean copyTo(CompanyExtendInfoVo v) { boolean modified = super.copyTo(v); - if (!Objects.equals(company.get(), v.getCompany())) { - v.setCompany(company.get()); + if (!Objects.equals(company.get(), v.getCompanyId())) { + v.setCompanyId(company.get()); modified = true; } if (!Objects.equals(disableVerify.get(), v.isDisableVerify())) { diff --git a/client/src/main/java/com/ecep/contract/vm/CompanyFileViewModel.java b/client/src/main/java/com/ecep/contract/vm/CompanyFileViewModel.java index c77360e..94279b7 100644 --- a/client/src/main/java/com/ecep/contract/vm/CompanyFileViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/CompanyFileViewModel.java @@ -4,10 +4,9 @@ import java.time.LocalDate; import java.util.Objects; import com.ecep.contract.CompanyFileType; -import com.ecep.contract.model.Company; import com.ecep.contract.model.CompanyFile; +import com.ecep.contract.vo.CompanyFileVo; -import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; import lombok.Data; @@ -18,28 +17,27 @@ import lombok.EqualsAndHashCode; */ @Data @EqualsAndHashCode(callSuper = false) -public class CompanyFileViewModel extends IdentityViewModel { - SimpleObjectProperty company = new SimpleObjectProperty<>(); +public class CompanyFileViewModel extends IdentityViewModel { + SimpleObjectProperty company = new SimpleObjectProperty<>(); SimpleObjectProperty type = new SimpleObjectProperty<>(); SimpleObjectProperty applyDate = new SimpleObjectProperty<>(); SimpleObjectProperty expiringDate = new SimpleObjectProperty<>(); SimpleStringProperty filePath = new SimpleStringProperty(); - @Override - protected void updateFrom(CompanyFile v) { + protected void updateFrom(CompanyFileVo v) { super.updateFrom(v); - company.set(v.getCompany()); + company.set(v.getCompanyId()); type.set(v.getType()); applyDate.set(v.getApplyDate()); expiringDate.set(v.getExpiringDate()); filePath.set(v.getFilePath()); } - public boolean copyTo(CompanyFile v) { + public boolean copyTo(CompanyFileVo v) { boolean modified = super.copyTo(v); - if (!Objects.equals(company.get(), v.getCompany())) { - v.setCompany(company.get()); + if (!Objects.equals(company.get(), v.getCompanyId())) { + v.setCompanyId(company.get()); modified = true; } @@ -63,7 +61,7 @@ public class CompanyFileViewModel extends IdentityViewModel { return modified; } - public static CompanyFileViewModel from(CompanyFile file) { + public static CompanyFileViewModel from(CompanyFileVo file) { CompanyFileViewModel model = new CompanyFileViewModel(); model.update(file); return model; diff --git a/client/src/main/java/com/ecep/contract/vm/CompanyVendorApprovedFileViewModel.java b/client/src/main/java/com/ecep/contract/vm/CompanyVendorApprovedFileViewModel.java index 650ca26..cfac5d6 100644 --- a/client/src/main/java/com/ecep/contract/vm/CompanyVendorApprovedFileViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/CompanyVendorApprovedFileViewModel.java @@ -3,8 +3,7 @@ package com.ecep.contract.vm; import java.time.LocalDate; import java.util.Objects; -import com.ecep.contract.model.CompanyVendorApprovedFile; -import com.ecep.contract.model.CompanyVendorApprovedList; +import com.ecep.contract.vo.CompanyVendorApprovedFileVo; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; @@ -15,16 +14,19 @@ import lombok.ToString; @Data @EqualsAndHashCode(callSuper = false) @ToString -public class CompanyVendorApprovedFileViewModel extends IdentityViewModel { +public class CompanyVendorApprovedFileViewModel extends IdentityViewModel { - public static CompanyVendorApprovedFileViewModel from(CompanyVendorApprovedFile companyVendorApprovedItemFile) { + public static CompanyVendorApprovedFileViewModel from(CompanyVendorApprovedFileVo companyVendorApprovedItemFile) { CompanyVendorApprovedFileViewModel viewModel = new CompanyVendorApprovedFileViewModel(); viewModel.update(companyVendorApprovedItemFile); return viewModel; } + /** + * CompanyVendorApprovedList + */ @ToString.Exclude - private SimpleObjectProperty list = new SimpleObjectProperty<>(); + private SimpleObjectProperty list = new SimpleObjectProperty<>(); private SimpleStringProperty fileName = new SimpleStringProperty(); @@ -33,19 +35,19 @@ public class CompanyVendorApprovedFileViewModel extends IdentityViewModel { - public static CompanyVendorApprovedItemViewModel from(CompanyVendorApprovedItem item) { +public class CompanyVendorApprovedItemViewModel extends IdentityViewModel { + public static CompanyVendorApprovedItemViewModel from(CompanyVendorApprovedItemVo item) { CompanyVendorApprovedItemViewModel model = new CompanyVendorApprovedItemViewModel(); model.update(item); return model; } - - private SimpleObjectProperty list = new SimpleObjectProperty<>(); + /** + * CompanyVendorApprovedListVo + */ + private SimpleObjectProperty list = new SimpleObjectProperty<>(); private SimpleStringProperty vendorName = new SimpleStringProperty(); - private SimpleObjectProperty vendor = new SimpleObjectProperty<>(); + private SimpleObjectProperty vendor = new SimpleObjectProperty<>(); private SimpleObjectProperty type = new SimpleObjectProperty<>(); private SimpleStringProperty description = new SimpleStringProperty(); - @Override - protected void updateFrom(CompanyVendorApprovedItem v) { + protected void updateFrom(CompanyVendorApprovedItemVo v) { super.updateFrom(v); + getList().set(v.getListId()); getVendorName().set(v.getVendorName()); - getList().set(v.getList()); - getVendor().set(v.getVendor()); + getVendor().set(v.getVendorId()); getType().set(v.getType()); getDescription().set(v.getDescription()); } @Override - public boolean copyTo(CompanyVendorApprovedItem v) { + public boolean copyTo(CompanyVendorApprovedItemVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(vendorName.get(), v.getVendorName())) { v.setVendorName(vendorName.get()); modified = true; } - if (!Objects.equals(list.get(), v.getList())) { - v.setList(list.get()); + if (!Objects.equals(list.get(), v.getListId())) { + v.setListId(list.get()); modified = true; } - if (!Objects.equals(vendor.get(), v.getVendor())) { - v.setVendor(vendor.get()); + if (!Objects.equals(vendor.get(), v.getVendorId())) { + v.setVendorId(vendor.get()); modified = true; } if (!Objects.equals(type.get(), v.getType())) { diff --git a/client/src/main/java/com/ecep/contract/vm/CompanyVendorApprovedListViewModel.java b/client/src/main/java/com/ecep/contract/vm/CompanyVendorApprovedListViewModel.java index 250448f..cdc66bc 100644 --- a/client/src/main/java/com/ecep/contract/vm/CompanyVendorApprovedListViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/CompanyVendorApprovedListViewModel.java @@ -3,7 +3,7 @@ package com.ecep.contract.vm; import java.time.LocalDate; import java.util.Objects; -import com.ecep.contract.model.CompanyVendorApprovedList; +import com.ecep.contract.vo.CompanyVendorApprovedListVo; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; @@ -13,20 +13,20 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) public class CompanyVendorApprovedListViewModel - extends IdentityViewModel { + extends IdentityViewModel { private SimpleStringProperty title = new SimpleStringProperty(); private SimpleObjectProperty publishDate = new SimpleObjectProperty<>(); private SimpleStringProperty path = new SimpleStringProperty(); private SimpleStringProperty description = new SimpleStringProperty(); - public static CompanyVendorApprovedListViewModel from(CompanyVendorApprovedList list) { + public static CompanyVendorApprovedListViewModel from(CompanyVendorApprovedListVo list) { CompanyVendorApprovedListViewModel model = new CompanyVendorApprovedListViewModel(); model.update(list); return model; } @Override - protected void updateFrom(CompanyVendorApprovedList v) { + protected void updateFrom(CompanyVendorApprovedListVo v) { super.updateFrom(v); getTitle().set(v.getTitle()); getPublishDate().set(v.getPublishDate()); @@ -35,7 +35,7 @@ public class CompanyVendorApprovedListViewModel } @Override - public boolean copyTo(CompanyVendorApprovedList v) { + public boolean copyTo(CompanyVendorApprovedListVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(title.get(), v.getTitle())) { diff --git a/client/src/main/java/com/ecep/contract/vm/CompanyVendorEntityViewModel.java b/client/src/main/java/com/ecep/contract/vm/CompanyVendorEntityViewModel.java index 8c35d95..0844afb 100644 --- a/client/src/main/java/com/ecep/contract/vm/CompanyVendorEntityViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/CompanyVendorEntityViewModel.java @@ -3,10 +3,7 @@ package com.ecep.contract.vm; import java.time.LocalDate; import java.time.LocalDateTime; -import com.ecep.contract.model.CompanyVendor; -import com.ecep.contract.model.CompanyVendorEntity; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.VendorCatalog; +import com.ecep.contract.vo.CompanyVendorEntityVo; import javafx.beans.property.SimpleObjectProperty; import lombok.Data; @@ -14,42 +11,50 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class CompanyVendorEntityViewModel extends IdentityViewModel { - private SimpleObjectProperty vendor = new SimpleObjectProperty<>(); +public class CompanyVendorEntityViewModel extends IdentityViewModel { + private SimpleObjectProperty vendorId = new SimpleObjectProperty<>(); private SimpleObjectProperty name = new SimpleObjectProperty<>(); private SimpleObjectProperty abbName = new SimpleObjectProperty<>(); private SimpleObjectProperty code = new SimpleObjectProperty<>(); - private SimpleObjectProperty catalog = new SimpleObjectProperty<>(); - private SimpleObjectProperty creator = new SimpleObjectProperty<>(); + private SimpleObjectProperty catalogId = new SimpleObjectProperty<>(); + private SimpleObjectProperty creatorId = new SimpleObjectProperty<>(); private SimpleObjectProperty developDate = new SimpleObjectProperty<>(); - private SimpleObjectProperty modifier = new SimpleObjectProperty<>(); + private SimpleObjectProperty modifierId = new SimpleObjectProperty<>(); private SimpleObjectProperty modifyDate = new SimpleObjectProperty<>(); private SimpleObjectProperty updatedDate = new SimpleObjectProperty<>(); private SimpleObjectProperty fetchedTime = new SimpleObjectProperty<>(); @Override - protected void updateFrom(CompanyVendorEntity v) { + protected void updateFrom(CompanyVendorEntityVo v) { super.updateFrom(v); - vendor.set(v.getVendor()); + if (v.getVendorId() != null) { + vendorId.set(v.getVendorId()); + } name.set(v.getName()); abbName.set(v.getAbbName()); code.set(v.getCode()); - catalog.set(v.getCatalog()); - creator.set(v.getCreator()); + if (v.getCatalogId() != null) { + catalogId.set(v.getCatalogId()); + } + if (v.getCreatorId() != null) { + creatorId.set(v.getCreatorId()); + } developDate.set(v.getDevelopDate()); - modifier.set(v.getModifier()); + if (v.getModifierId() != null) { + modifierId.set(v.getModifierId()); + } modifyDate.set(v.getModifyDate()); updatedDate.set(v.getUpdatedDate()); fetchedTime.set(v.getFetchedTime()); } @Override - public boolean copyTo(CompanyVendorEntity v) { + public boolean copyTo(CompanyVendorEntityVo v) { boolean modified = super.copyTo(v); - if (vendor.get() != null) { - v.setVendor(vendor.get()); + if (vendorId.get() != 0) { + v.setVendorId(vendorId.get()); modified = true; } if (name.get() != null) { @@ -64,20 +69,32 @@ public class CompanyVendorEntityViewModel extends IdentityViewModel { +public class CompanyVendorFileViewModel extends IdentityViewModel { + /** + * + */ @ToString.Exclude - private SimpleObjectProperty vendor = new SimpleObjectProperty<>(); + private SimpleObjectProperty vendor = new SimpleObjectProperty<>(); private SimpleObjectProperty type = new SimpleObjectProperty<>(); @@ -32,11 +34,10 @@ public class CompanyVendorFileViewModel extends IdentityViewModel { +public class CompanyVendorViewModel extends IdentityViewModel { private SimpleStringProperty code = new SimpleStringProperty(); private SimpleStringProperty state = new SimpleStringProperty(); @@ -33,21 +27,21 @@ public class CompanyVendorViewModel extends IdentityViewModel { */ private SimpleObjectProperty type = new SimpleObjectProperty<>(); /** - * 分组 + * 分组, VendorGroup */ - private SimpleObjectProperty group = new SimpleObjectProperty<>(); + private SimpleObjectProperty group = new SimpleObjectProperty<>(); /** * 是否为协议供应商 */ private SimpleBooleanProperty protocolProvider = new SimpleBooleanProperty(false); /** - * 分组 + * 分组,VendorGroup */ - private SimpleObjectProperty catalog = new SimpleObjectProperty<>(); + private SimpleObjectProperty catalog = new SimpleObjectProperty<>(); /** - * 关联的企业 + * 关联的企业,Company */ - private SimpleObjectProperty company = new SimpleObjectProperty<>(); + private SimpleObjectProperty company = new SimpleObjectProperty<>(); /** * 开发日期 */ @@ -55,7 +49,7 @@ public class CompanyVendorViewModel extends IdentityViewModel { /** * 对口联系人 */ - private SimpleObjectProperty contact = new SimpleObjectProperty<>(); + private SimpleObjectProperty contact = new SimpleObjectProperty<>(); /** * 文件夹 */ @@ -74,20 +68,19 @@ public class CompanyVendorViewModel extends IdentityViewModel { private SimpleObjectProperty created = new SimpleObjectProperty<>(); private SimpleIntegerProperty version = new SimpleIntegerProperty(); - - public static CompanyVendorViewModel from(CompanyVendor companyVendor) { + public static CompanyVendorViewModel from(CompanyVendorVo companyVendor) { CompanyVendorViewModel model = new CompanyVendorViewModel(); model.update(companyVendor); return model; } - public void updateFrom(CompanyVendor v) { + public void updateFrom(CompanyVendorVo v) { super.updateFrom(v); -// getState().set(v.getState()); + // getState().set(v.getState()); getType().set(v.getType()); getProtocolProvider().set(v.isProtocolProvider()); - getCatalog().set(v.getCatalog()); - getCompany().set(v.getCompany()); + getCatalog().set(v.getCatalogId()); + getCompany().set(v.getCompanyId()); getDevelopDate().set(v.getDevelopDate()); getPath().set(v.getPath()); @@ -103,11 +96,11 @@ public class CompanyVendorViewModel extends IdentityViewModel { getCreated().set(null); } - getContact().set(v.getContact()); + getContact().set(v.getContactId()); version.set(v.getVersion()); } - public boolean copyTo(CompanyVendor v) { + public boolean copyTo(CompanyVendorVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(type.get(), v.getType())) { v.setType(type.get()); @@ -118,13 +111,13 @@ public class CompanyVendorViewModel extends IdentityViewModel { modified = true; } - if (!Objects.equals(catalog.get(), v.getCatalog())) { - v.setCatalog(catalog.get()); + if (!Objects.equals(catalog.get(), v.getCatalogId())) { + v.setCatalogId(catalog.get()); modified = true; } - if (!Objects.equals(company.get(), v.getCompany())) { - v.setCompany(company.get()); + if (!Objects.equals(company.get(), v.getCompanyId())) { + v.setCompanyId(company.get()); modified = true; } @@ -148,20 +141,14 @@ public class CompanyVendorViewModel extends IdentityViewModel { modified = true; } - - if (!Objects.equals(contact.get(), v.getContact())) { - v.setContact(contact.get()); + if (!Objects.equals(contact.get(), v.getContactId())) { + v.setContactId(contact.get()); modified = true; } - if (created.get() == null) { - v.setCreated(null); - } else { - Instant instant = created.get().toInstant(ZoneOffset.ofHours(8)); - if (!Objects.equals(instant, v.getCreated())) { - v.setCreated(instant); - modified = true; - } + if (!Objects.equals(created.get(), v.getCreated())) { + v.setCreated(created.get()); + modified = true; } return modified; } diff --git a/client/src/main/java/com/ecep/contract/vm/CompanyViewModel.java b/client/src/main/java/com/ecep/contract/vm/CompanyViewModel.java index bf8c450..f8325fe 100644 --- a/client/src/main/java/com/ecep/contract/vm/CompanyViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/CompanyViewModel.java @@ -53,9 +53,7 @@ public class CompanyViewModel extends IdentityViewModel { name.set(company.getName()); shortName.set(company.getShortName()); uid.set(company.getUniscid()); - if (company.getPathExist() != null) { - pathExist.set(company.getPathExist()); - } + pathExist.set(company.isPathExist()); path.set(company.getPath()); setupDate.set(company.getSetupDate()); entStatus.set(company.getEntStatus()); @@ -93,7 +91,7 @@ public class CompanyViewModel extends IdentityViewModel { modified = true; } - if (!Objects.equals(pathExist.get(), v.getPathExist())) { + if (!Objects.equals(pathExist.get(), v.isPathExist())) { v.setPathExist(pathExist.get()); modified = true; } diff --git a/client/src/main/java/com/ecep/contract/vm/ContractBidVendorViewModel.java b/client/src/main/java/com/ecep/contract/vm/ContractBidVendorViewModel.java index 663eff5..5d5982a 100644 --- a/client/src/main/java/com/ecep/contract/vm/ContractBidVendorViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ContractBidVendorViewModel.java @@ -2,63 +2,55 @@ package com.ecep.contract.vm; import java.util.Objects; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.ContractBidVendor; -import com.ecep.contract.model.ContractFile; +import com.ecep.contract.vo.ContractBidVendorVo; -import javafx.beans.property.SimpleObjectProperty; +import javafx.beans.property.SimpleIntegerProperty; +import javafx.beans.property.SimpleStringProperty; import lombok.Data; import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class ContractBidVendorViewModel extends IdentityViewModel { - /** - * 关联的合同 - */ - private SimpleObjectProperty contract = new SimpleObjectProperty<>(); - /** - * 关联的企业 - */ - private SimpleObjectProperty company = new SimpleObjectProperty<>(); - /** - * - */ - private SimpleObjectProperty quotationSheet = new SimpleObjectProperty<>(); +public class ContractBidVendorViewModel extends IdentityViewModel { + private SimpleIntegerProperty contractId = new SimpleIntegerProperty(); + private SimpleIntegerProperty companyId = new SimpleIntegerProperty(); + private SimpleIntegerProperty quotationSheetFileId = new SimpleIntegerProperty(); + private SimpleStringProperty quotationSheetFileName = new SimpleStringProperty(); - - @Override - protected void updateFrom(ContractBidVendor v) { - super.updateFrom(v); - getContract().set(v.getContract()); - getCompany().set(v.getCompany()); - getQuotationSheet().set(v.getQuotationSheet()); + public static ContractBidVendorViewModel from(ContractBidVendorVo v) { + ContractBidVendorViewModel vm = new ContractBidVendorViewModel(); + vm.update(v); + return vm; } @Override - public boolean copyTo(ContractBidVendor v) { - boolean modified = super.copyTo(v); - if (!Objects.equals(contract.get(), v.getContract())) { - v.setContract(contract.get()); - modified = true; - } - if (!Objects.equals(company.get(), v.getCompany())) { - v.setCompany(company.get()); - modified = true; - } - if (!Objects.equals(quotationSheet.get(), v.getQuotationSheet())) { - v.setQuotationSheet(quotationSheet.get()); - modified = true; - } + protected void updateFrom(ContractBidVendorVo v) { + super.updateFrom(v); + getContractId().set(v.getContractId() != null ? v.getContractId() : 0); + getCompanyId().set(v.getCompanyId() != null ? v.getCompanyId() : 0); + getQuotationSheetFileId().set(v.getQuotationSheetFileId() != null ? v.getQuotationSheetFileId() : 0); + getQuotationSheetFileName().set(v.getQuotationSheetFileName()); + } + @Override + public boolean copyTo(ContractBidVendorVo v) { + boolean modified = super.copyTo(v); + if (getContractId().get() != v.getContractId()) { + v.setContractId(getContractId().get() != 0 ? getContractId().get() : null); + modified = true; + } + if (getCompanyId().get() != v.getCompanyId()) { + v.setCompanyId(getCompanyId().get() != 0 ? getCompanyId().get() : null); + modified = true; + } + if (getQuotationSheetFileId().get() != v.getQuotationSheetFileId()) { + v.setQuotationSheetFileId(getQuotationSheetFileId().get() != 0 ? getQuotationSheetFileId().get() : null); + modified = true; + } + if (!Objects.equals(getQuotationSheetFileName().get(), v.getQuotationSheetFileName())) { + v.setQuotationSheetFileName(getQuotationSheetFileName().get()); + modified = true; + } return modified; } - - public static ContractBidVendorViewModel from(ContractBidVendor contractBidVendor) { - ContractBidVendorViewModel viewModel = new ContractBidVendorViewModel(); -// viewModel.updateFrom(contractBidVendor); - viewModel.update(contractBidVendor); - return viewModel; - } } diff --git a/client/src/main/java/com/ecep/contract/vm/ContractFileViewModel.java b/client/src/main/java/com/ecep/contract/vm/ContractFileViewModel.java index 4dc6d27..4e82ad9 100644 --- a/client/src/main/java/com/ecep/contract/vm/ContractFileViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ContractFileViewModel.java @@ -4,8 +4,7 @@ import java.time.LocalDate; import java.util.Objects; import com.ecep.contract.ContractFileType; -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.ContractFile; +import com.ecep.contract.vo.ContractFileVo; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; @@ -14,17 +13,20 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class ContractFileViewModel extends IdentityViewModel { - SimpleObjectProperty contract = new SimpleObjectProperty<>(); +public class ContractFileViewModel extends IdentityViewModel { + /** + * Contract + */ + SimpleObjectProperty contract = new SimpleObjectProperty<>(); SimpleObjectProperty type = new SimpleObjectProperty<>(); SimpleObjectProperty applyDate = new SimpleObjectProperty<>(); SimpleStringProperty fileName = new SimpleStringProperty(); SimpleStringProperty description = new SimpleStringProperty(); @Override - protected void updateFrom(ContractFile v) { + protected void updateFrom(ContractFileVo v) { super.updateFrom(v); - contract.set(v.getContract()); + contract.set(v.getContractId()); type.set(v.getType()); applyDate.set(v.getApplyDate()); fileName.set(v.getFileName()); @@ -33,10 +35,10 @@ public class ContractFileViewModel extends IdentityViewModel { } @Override - public boolean copyTo(ContractFile v) { + public boolean copyTo(ContractFileVo v) { boolean modified = super.copyTo(v); - if (!Objects.equals(contract.get(), v.getContract())) { - v.setContract(contract.get()); + if (!Objects.equals(contract.get(), v.getContractId())) { + v.setContractId(contract.get()); modified = true; } @@ -62,7 +64,7 @@ public class ContractFileViewModel extends IdentityViewModel { return modified; } - public static ContractFileViewModel from(ContractFile contractFile) { + public static ContractFileViewModel from(ContractFileVo contractFile) { ContractFileViewModel model = new ContractFileViewModel(); model.update(contractFile); return model; diff --git a/client/src/main/java/com/ecep/contract/vm/ContractGroupViewModel.java b/client/src/main/java/com/ecep/contract/vm/ContractGroupViewModel.java index 05e185d..efcaf14 100644 --- a/client/src/main/java/com/ecep/contract/vm/ContractGroupViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ContractGroupViewModel.java @@ -1,6 +1,6 @@ package com.ecep.contract.vm; -import com.ecep.contract.model.ContractGroup; +import com.ecep.contract.vo.ContractGroupVo; import javafx.beans.property.SimpleStringProperty; import lombok.Data; @@ -8,13 +8,13 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class ContractGroupViewModel extends IdentityViewModel { +public class ContractGroupViewModel extends IdentityViewModel { private SimpleStringProperty code = new SimpleStringProperty(); private SimpleStringProperty name = new SimpleStringProperty(); private SimpleStringProperty title = new SimpleStringProperty(); @Override - protected void updateFrom(ContractGroup v) { + protected void updateFrom(ContractGroupVo v) { super.updateFrom(v); code.set(v.getCode()); name.set(v.getName()); @@ -22,7 +22,7 @@ public class ContractGroupViewModel extends IdentityViewModel { } @Override - public boolean copyTo(ContractGroup v) { + public boolean copyTo(ContractGroupVo v) { boolean result = super.copyTo(v); v.setCode(code.get()); v.setName(name.get()); diff --git a/client/src/main/java/com/ecep/contract/vm/ContractItemComposeViewModel.java b/client/src/main/java/com/ecep/contract/vm/ContractItemComposeViewModel.java index 9dfed8a..8d50793 100644 --- a/client/src/main/java/com/ecep/contract/vm/ContractItemComposeViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ContractItemComposeViewModel.java @@ -1,6 +1,7 @@ package com.ecep.contract.vm; import com.ecep.contract.model.ContractItem; +import com.ecep.contract.vo.ContractItemVo; import javafx.beans.property.SimpleDoubleProperty; import javafx.beans.property.SimpleIntegerProperty; @@ -44,9 +45,9 @@ public class ContractItemComposeViewModel extends BaseViewModel items = new SimpleListProperty<>(); + SimpleListProperty items = new SimpleListProperty<>(); - public void add(ContractItem item) { + public void add(ContractItemVo item) { taxRate.set(item.getTaxRate()); exclusiveTaxPrice.set(item.getExclusiveTaxPrice()); taxPrice.set(item.getTaxPrice()); @@ -56,7 +57,7 @@ public class ContractItemComposeViewModel extends BaseViewModel list = items.get(); + ObservableList list = items.get(); if (list == null) { list = FXCollections.observableArrayList(); items.set(list); diff --git a/client/src/main/java/com/ecep/contract/vm/ContractItemViewModel.java b/client/src/main/java/com/ecep/contract/vm/ContractItemViewModel.java index facb194..32fc659 100644 --- a/client/src/main/java/com/ecep/contract/vm/ContractItemViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ContractItemViewModel.java @@ -4,10 +4,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Objects; -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.ContractItem; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.Inventory; +import com.ecep.contract.vo.ContractItemVo; import javafx.beans.property.SimpleDoubleProperty; import javafx.beans.property.SimpleIntegerProperty; @@ -20,11 +17,11 @@ import lombok.EqualsAndHashCode; */ @Data @EqualsAndHashCode(callSuper = false) -public class ContractItemViewModel extends IdentityViewModel { +public class ContractItemViewModel extends IdentityViewModel { /** - * 关联的合同对象 + * 关联的合同对象,Contract */ - SimpleObjectProperty contract = new SimpleObjectProperty<>(); + SimpleObjectProperty contract = new SimpleObjectProperty<>(); /** * 关联的用友系统中的数据ID */ @@ -35,9 +32,9 @@ public class ContractItemViewModel extends IdentityViewModel { SimpleObjectProperty unit = new SimpleObjectProperty<>(); /** - * 存货 + * 存货,Inventory */ - SimpleObjectProperty inventory = new SimpleObjectProperty<>(); + SimpleObjectProperty inventory = new SimpleObjectProperty<>(); /** * @@ -49,28 +46,32 @@ public class ContractItemViewModel extends IdentityViewModel { SimpleDoubleProperty taxAmount = new SimpleDoubleProperty(); SimpleDoubleProperty exclusiveTaxAmount = new SimpleDoubleProperty(); - SimpleObjectProperty startDate = new SimpleObjectProperty<>(); SimpleObjectProperty endDate = new SimpleObjectProperty<>(); SimpleObjectProperty createDate = new SimpleObjectProperty<>(); SimpleObjectProperty updateDate = new SimpleObjectProperty<>(); - SimpleObjectProperty creator = new SimpleObjectProperty<>(); - SimpleObjectProperty updater = new SimpleObjectProperty<>(); + /** + * 关联的创建人,Employee + */ + SimpleObjectProperty creator = new SimpleObjectProperty<>(); + /** + * 关联的更新人,Employee + */ + SimpleObjectProperty updater = new SimpleObjectProperty<>(); SimpleObjectProperty remark = new SimpleObjectProperty<>(); - @Override - protected void updateFrom(ContractItem v) { + protected void updateFrom(ContractItemVo v) { super.updateFrom(v); - getContract().set(v.getContract()); + getContract().set(v.getContractId()); getRefId().set(v.getRefId()); getCode().set(v.getItemCode()); getTitle().set(v.getTitle()); getSpecification().set(v.getSpecification()); getUnit().set(v.getUnit()); - getInventory().set(v.getInventory()); + getInventory().set(v.getInventoryId()); getExclusiveTaxPrice().set(v.getExclusiveTaxPrice()); getTaxRate().set(v.getTaxRate()); @@ -82,20 +83,19 @@ public class ContractItemViewModel extends IdentityViewModel { getCreateDate().set(v.getCreateDate()); getUpdateDate().set(v.getUpdateDate()); - getCreator().set(v.getCreator()); - getUpdater().set(v.getUpdater()); + getCreator().set(v.getCreatorId()); + getUpdater().set(v.getUpdaterId()); getRemark().set(v.getRemark()); getTaxAmount().set(v.getTaxPrice() * v.getQuantity()); getExclusiveTaxAmount().set(v.getExclusiveTaxPrice() * v.getQuantity()); } - @Override - public boolean copyTo(ContractItem v) { + public boolean copyTo(ContractItemVo v) { boolean modified = super.copyTo(v); - if (!Objects.equals(contract.get(), v.getContract())) { - v.setContract(contract.get()); + if (!Objects.equals(contract.get(), v.getContractId())) { + v.setContractId(contract.get()); modified = true; } if (!Objects.equals(refId.get(), v.getRefId())) { @@ -118,8 +118,8 @@ public class ContractItemViewModel extends IdentityViewModel { v.setUnit(unit.get()); modified = true; } - if (!Objects.equals(inventory.get(), v.getInventory())) { - v.setInventory(inventory.get()); + if (!Objects.equals(inventory.get(), v.getInventoryId())) { + v.setInventoryId(inventory.get()); modified = true; } if (!doubleEquals(exclusiveTaxPrice.get(), v.getExclusiveTaxPrice())) { @@ -156,12 +156,12 @@ public class ContractItemViewModel extends IdentityViewModel { v.setUpdateDate(updateDate.get()); modified = true; } - if (!Objects.equals(creator.get(), v.getCreator())) { - v.setCreator(creator.get()); + if (!Objects.equals(creator.get(), v.getCreatorId())) { + v.setCreatorId(creator.get()); modified = true; } - if (!Objects.equals(updater.get(), v.getUpdater())) { - v.setUpdater(updater.get()); + if (!Objects.equals(updater.get(), v.getUpdaterId())) { + v.setUpdaterId(updater.get()); modified = true; } if (!Objects.equals(remark.get(), v.getRemark())) { @@ -169,7 +169,6 @@ public class ContractItemViewModel extends IdentityViewModel { modified = true; } - return modified; } @@ -184,7 +183,7 @@ public class ContractItemViewModel extends IdentityViewModel { return Math.abs(a - b) < 0.0001; } - public static ContractItemViewModel from(ContractItem contractItem) { + public static ContractItemViewModel from(ContractItemVo contractItem) { ContractItemViewModel viewModel = new ContractItemViewModel(); viewModel.update(contractItem); return viewModel; diff --git a/client/src/main/java/com/ecep/contract/vm/ContractKindViewModel.java b/client/src/main/java/com/ecep/contract/vm/ContractKindViewModel.java index 2cccf6f..c9cfc15 100644 --- a/client/src/main/java/com/ecep/contract/vm/ContractKindViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ContractKindViewModel.java @@ -1,6 +1,6 @@ package com.ecep.contract.vm; -import com.ecep.contract.model.ContractKind; +import com.ecep.contract.vo.ContractKindVo; import javafx.beans.property.SimpleStringProperty; import lombok.Data; @@ -8,13 +8,13 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class ContractKindViewModel extends IdentityViewModel { +public class ContractKindViewModel extends IdentityViewModel { private SimpleStringProperty code = new SimpleStringProperty(); private SimpleStringProperty name = new SimpleStringProperty(); private SimpleStringProperty title = new SimpleStringProperty(); @Override - protected void updateFrom(ContractKind v) { + protected void updateFrom(ContractKindVo v) { super.updateFrom(v); code.set(v.getCode()); name.set(v.getName()); @@ -22,7 +22,7 @@ public class ContractKindViewModel extends IdentityViewModel { } @Override - public boolean copyTo(ContractKind v) { + public boolean copyTo(ContractKindVo v) { boolean result = super.copyTo(v); v.setCode(code.get()); v.setName(name.get()); diff --git a/client/src/main/java/com/ecep/contract/vm/ContractTypeViewModel.java b/client/src/main/java/com/ecep/contract/vm/ContractTypeViewModel.java index 95b4c1a..12965be 100644 --- a/client/src/main/java/com/ecep/contract/vm/ContractTypeViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ContractTypeViewModel.java @@ -1,6 +1,6 @@ package com.ecep.contract.vm; -import com.ecep.contract.model.ContractType; +import com.ecep.contract.vo.ContractTypeVo; import javafx.beans.property.SimpleStringProperty; import lombok.Data; @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class ContractTypeViewModel extends IdentityViewModel { +public class ContractTypeViewModel extends IdentityViewModel { private SimpleStringProperty code = new SimpleStringProperty(); private SimpleStringProperty name = new SimpleStringProperty(); private SimpleStringProperty title = new SimpleStringProperty(); @@ -17,7 +17,7 @@ public class ContractTypeViewModel extends IdentityViewModel { private SimpleStringProperty direction = new SimpleStringProperty(); @Override - protected void updateFrom(ContractType v) { + protected void updateFrom(ContractTypeVo v) { super.updateFrom(v); code.set(v.getCode()); name.set(v.getName()); @@ -26,9 +26,8 @@ public class ContractTypeViewModel extends IdentityViewModel { direction.set(v.getDirection()); } - @Override - public boolean copyTo(ContractType v) { + public boolean copyTo(ContractTypeVo v) { boolean result = super.copyTo(v); v.setCode(code.get()); v.setName(name.get()); diff --git a/client/src/main/java/com/ecep/contract/vm/ContractViewModel.java b/client/src/main/java/com/ecep/contract/vm/ContractViewModel.java index 875f50e..ef38556 100644 --- a/client/src/main/java/com/ecep/contract/vm/ContractViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ContractViewModel.java @@ -5,14 +5,7 @@ import java.time.LocalDateTime; import java.util.Objects; import com.ecep.contract.ContractPayWay; -import com.ecep.contract.model.Company; -import com.ecep.contract.model.CompanyContract; -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.ContractGroup; -import com.ecep.contract.model.ContractKind; -import com.ecep.contract.model.ContractType; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.Project; +import com.ecep.contract.vo.ContractVo; import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleDoubleProperty; @@ -27,7 +20,7 @@ import lombok.EqualsAndHashCode; */ @Data @EqualsAndHashCode(callSuper = false) -public class ContractViewModel extends IdentityViewModel { +public class ContractViewModel extends IdentityViewModel { private SimpleStringProperty guid = new SimpleStringProperty(); private SimpleObjectProperty payWay = new SimpleObjectProperty<>(); @@ -37,15 +30,15 @@ public class ContractViewModel extends IdentityViewModel { /** * 分组 */ - private SimpleObjectProperty group = new SimpleObjectProperty<>(); + private SimpleObjectProperty group = new SimpleObjectProperty<>(); /** * 分类 */ - private SimpleObjectProperty type = new SimpleObjectProperty<>(); + private SimpleObjectProperty type = new SimpleObjectProperty<>(); /** * 性质 */ - private SimpleObjectProperty kind = new SimpleObjectProperty<>(); + private SimpleObjectProperty kind = new SimpleObjectProperty<>(); /** * 主合同编号 */ @@ -63,17 +56,17 @@ public class ContractViewModel extends IdentityViewModel { */ private SimpleObjectProperty endDate = new SimpleObjectProperty<>(); - private SimpleObjectProperty setupPerson = new SimpleObjectProperty<>(); + private SimpleObjectProperty setupPerson = new SimpleObjectProperty<>(); private SimpleObjectProperty setupDate = new SimpleObjectProperty<>(); /** * 生效人 */ - private SimpleObjectProperty inurePerson = new SimpleObjectProperty<>(); + private SimpleObjectProperty inurePerson = new SimpleObjectProperty<>(); private SimpleObjectProperty inureDate = new SimpleObjectProperty<>(); /** * 修改人 */ - private SimpleObjectProperty varyPerson = new SimpleObjectProperty<>(); + private SimpleObjectProperty varyPerson = new SimpleObjectProperty<>(); private SimpleObjectProperty varyDate = new SimpleObjectProperty<>(); /** @@ -88,19 +81,19 @@ public class ContractViewModel extends IdentityViewModel { private SimpleStringProperty description = new SimpleStringProperty(); private SimpleObjectProperty created = new SimpleObjectProperty<>(); - private SimpleObjectProperty company = new SimpleObjectProperty<>(); + private SimpleObjectProperty company = new SimpleObjectProperty<>(); /** * 业务员 */ - private SimpleObjectProperty employee = new SimpleObjectProperty<>(); + private SimpleObjectProperty employee = new SimpleObjectProperty<>(); /** * 经办人 */ - private SimpleObjectProperty handler = new SimpleObjectProperty<>(); + private SimpleObjectProperty handler = new SimpleObjectProperty<>(); /** * 项目 */ - private SimpleObjectProperty project = new SimpleObjectProperty<>(); + private SimpleObjectProperty project = new SimpleObjectProperty<>(); /** * 版本 @@ -133,19 +126,13 @@ public class ContractViewModel extends IdentityViewModel { */ private SimpleDoubleProperty execUnTaxAmount = new SimpleDoubleProperty(); - public static ContractViewModel from(CompanyContract cc) { - ContractViewModel model = new ContractViewModel(); - model.update(cc.getContract()); - return model; - } - - public static ContractViewModel from(Contract cc) { + public static ContractViewModel from(ContractVo cc) { ContractViewModel model = new ContractViewModel(); model.update(cc); return model; } - public void updateFrom(Contract c) { + public void updateFrom(ContractVo c) { super.updateFrom(c); getGuid().set(c.getGuid()); getPayWay().set(c.getPayWay()); @@ -153,28 +140,28 @@ public class ContractViewModel extends IdentityViewModel { getName().set(c.getName()); getState().set(c.getState()); - getGroup().set(c.getGroup()); - getType().set(c.getType()); - getKind().set(c.getKind()); + getGroup().set(c.getGroupId()); + getType().set(c.getTypeId()); + getKind().set(c.getKindId()); getParentCode().set(c.getParentCode()); - getSetupPerson().set(c.getSetupPerson()); + getSetupPerson().set(c.getSetupPersonId()); getSetupDate().set(c.getSetupDate()); getOrderDate().set(c.getOrderDate()); getStartDate().set(c.getStartDate()); getEndDate().set(c.getEndDate()); - getInurePerson().set(c.getInurePerson()); + getInurePerson().set(c.getInurePersonId()); getInureDate().set(c.getInureDate()); - getVaryPerson().set(c.getVaryPerson()); + getVaryPerson().set(c.getVaryPersonId()); getVaryDate().set(c.getVaryDate()); - getCompany().set(c.getCompany()); - getEmployee().set(c.getEmployee()); - getHandler().set(c.getHandler()); + getCompany().set(c.getCompanyId()); + getEmployee().set(c.getEmployeeId()); + getHandler().set(c.getHandlerId()); getProject().set(c.getProject()); path.set(c.getPath()); @@ -193,7 +180,7 @@ public class ContractViewModel extends IdentityViewModel { getExecUnTaxAmount().set(c.getExecUnTaxAmount()); } - public boolean copyTo(Contract contract) { + public boolean copyTo(ContractVo contract) { boolean modified = super.copyTo(contract); if (!Objects.equals(guid.get(), contract.getGuid())) { contract.setGuid(guid.get()); @@ -216,16 +203,16 @@ public class ContractViewModel extends IdentityViewModel { modified = true; } - if (!Objects.equals(group.get(), contract.getGroup())) { - contract.setGroup(group.get()); + if (!Objects.equals(group.get(), contract.getGroupId())) { + contract.setGroupId(group.get()); modified = true; } - if (!Objects.equals(type.get(), contract.getType())) { - contract.setType(type.get()); + if (!Objects.equals(type.get(), contract.getTypeId())) { + contract.setTypeId(type.get()); modified = true; } - if (!Objects.equals(kind.get(), contract.getKind())) { - contract.setKind(kind.get()); + if (!Objects.equals(kind.get(), contract.getKindId())) { + contract.setKindId(kind.get()); modified = true; } @@ -234,8 +221,8 @@ public class ContractViewModel extends IdentityViewModel { modified = true; } - if (!Objects.equals(setupPerson.get(), contract.getSetupPerson())) { - contract.setSetupPerson(setupPerson.get()); + if (!Objects.equals(setupPerson.get(), contract.getSetupPersonId())) { + contract.setSetupPersonId(setupPerson.get()); modified = true; } @@ -259,8 +246,8 @@ public class ContractViewModel extends IdentityViewModel { modified = true; } - if (!Objects.equals(inurePerson.get(), contract.getInurePerson())) { - contract.setInurePerson(inurePerson.get()); + if (!Objects.equals(inurePerson.get(), contract.getInurePersonId())) { + contract.setInurePersonId(inurePerson.get()); modified = true; } @@ -269,8 +256,8 @@ public class ContractViewModel extends IdentityViewModel { modified = true; } - if (!Objects.equals(varyPerson.get(), contract.getVaryPerson())) { - contract.setVaryPerson(varyPerson.get()); + if (!Objects.equals(varyPerson.get(), contract.getVaryPersonId())) { + contract.setVaryPersonId(varyPerson.get()); modified = true; } @@ -288,16 +275,16 @@ public class ContractViewModel extends IdentityViewModel { contract.setDescription(description.get()); modified = true; } - if (!Objects.equals(getEmployee().get(), contract.getEmployee())) { - contract.setEmployee(getEmployee().get()); + if (!Objects.equals(getEmployee().get(), contract.getEmployeeId())) { + contract.setEmployeeId(getEmployee().get()); modified = true; } - if (!Objects.equals(getHandler().get(), contract.getHandler())) { - contract.setHandler(getHandler().get()); + if (!Objects.equals(getHandler().get(), contract.getHandlerId())) { + contract.setHandlerId(getHandler().get()); modified = true; } - if (!Objects.equals(getCompany().get(), contract.getCompany())) { - contract.setCompany(getCompany().get()); + if (!Objects.equals(getCompany().get(), contract.getCompanyId())) { + contract.setCompanyId(getCompany().get()); modified = true; } if (!Objects.equals(getProject().get(), contract.getProject())) { diff --git a/client/src/main/java/com/ecep/contract/vm/CurrentEmployee.java b/client/src/main/java/com/ecep/contract/vm/CurrentEmployee.java index e25a209..20740c8 100644 --- a/client/src/main/java/com/ecep/contract/vm/CurrentEmployee.java +++ b/client/src/main/java/com/ecep/contract/vm/CurrentEmployee.java @@ -1,24 +1,12 @@ package com.ecep.contract.vm; -import java.time.format.DateTimeFormatter; -import java.util.List; -import java.util.Locale; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.util.StringUtils; - import com.ecep.contract.Desktop; import com.ecep.contract.MyDateTimeUtils; import com.ecep.contract.SpringApp; import com.ecep.contract.controller.CurrentEmployeeInitialedEvent; -import com.ecep.contract.model.Employee; import com.ecep.contract.model.EmployeeRole; import com.ecep.contract.service.EmployeeService; - +import com.ecep.contract.vo.EmployeeVo; import javafx.application.Platform; import javafx.beans.property.SimpleListProperty; import javafx.beans.property.SimpleObjectProperty; @@ -28,6 +16,16 @@ import javafx.util.converter.LocalDateStringConverter; import javafx.util.converter.LocalDateTimeStringConverter; import javafx.util.converter.NumberStringConverter; import lombok.ToString; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.StringUtils; + +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.Locale; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; /** * 当前登录用户 @@ -81,7 +79,7 @@ public class CurrentEmployee extends EmployeeViewModel { } @Override - protected void updateFrom(Employee v) { + protected void updateFrom(EmployeeVo v) { super.updateFrom(v); // 根据用户的个人配置修改 @@ -142,8 +140,8 @@ public class CurrentEmployee extends EmployeeViewModel { executorService.submit(() -> { // issue #1 sss 2020-07-05 EmployeeService employeeService = SpringApp.getBean(EmployeeService.class); - Employee employee = employeeService.findById(Desktop.instance.getActiveEmployeeId()); - List roles = employeeService.getRolesByEmployeeId(employee.getId()); + EmployeeVo employee = employeeService.findById(getId().get()); + List roles = employeeService.getRolesByEmployeeId(getId().get()); Platform.runLater(() -> { update(employee); rolesProperty().setAll(roles); diff --git a/client/src/main/java/com/ecep/contract/vm/CustomerEntityViewModel.java b/client/src/main/java/com/ecep/contract/vm/CustomerEntityViewModel.java index 4d9dfea..25ce0dd 100644 --- a/client/src/main/java/com/ecep/contract/vm/CustomerEntityViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/CustomerEntityViewModel.java @@ -4,10 +4,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Objects; -import com.ecep.contract.model.CompanyCustomer; -import com.ecep.contract.model.CompanyCustomerEntity; -import com.ecep.contract.model.CustomerCatalog; -import com.ecep.contract.model.Employee; +import com.ecep.contract.vo.CompanyCustomerEntityVo; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; @@ -16,24 +13,30 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class CustomerEntityViewModel extends IdentityViewModel { +public class CustomerEntityViewModel extends IdentityViewModel { private SimpleStringProperty name = new SimpleStringProperty(); private SimpleStringProperty abbName = new SimpleStringProperty(); private SimpleStringProperty code = new SimpleStringProperty(); /** - * 分组 + * 分组, CustomerCatalog */ - private SimpleObjectProperty catalog = new SimpleObjectProperty<>(); + private SimpleObjectProperty catalog = new SimpleObjectProperty<>(); /** - * 关联的企业 + * 关联的企业, CompanyCustomer */ - private SimpleObjectProperty customer = new SimpleObjectProperty<>(); + private SimpleObjectProperty customer = new SimpleObjectProperty<>(); /** * 发展日期 */ private SimpleObjectProperty developDate = new SimpleObjectProperty<>(); - private SimpleObjectProperty creator = new SimpleObjectProperty<>(); - private SimpleObjectProperty modifier = new SimpleObjectProperty<>(); + /** + * 创建人, Employee + */ + private SimpleObjectProperty creator = new SimpleObjectProperty<>(); + /** + * 修改人, Employee + */ + private SimpleObjectProperty modifier = new SimpleObjectProperty<>(); private SimpleObjectProperty modifyDate = new SimpleObjectProperty<>(); /** * 从U8系统同步时间 @@ -41,30 +44,30 @@ public class CustomerEntityViewModel extends IdentityViewModel updatedDate = new SimpleObjectProperty<>(); private SimpleObjectProperty fetchedTime = new SimpleObjectProperty<>(); - public static CustomerEntityViewModel from(CompanyCustomerEntity cc) { + public static CustomerEntityViewModel from(CompanyCustomerEntityVo cc) { CustomerEntityViewModel model = new CustomerEntityViewModel(); model.update(cc); return model; } @Override - protected void updateFrom(CompanyCustomerEntity v) { + protected void updateFrom(CompanyCustomerEntityVo v) { super.updateFrom(v); getName().set(v.getName()); getAbbName().set(v.getAbbName()); getCode().set(v.getCode()); - getCatalog().set(v.getCatalog()); - getCustomer().set(v.getCustomer()); + getCatalog().set(v.getCustomerCatalogId()); + getCustomer().set(v.getCustomerId()); getDevelopDate().set(v.getDevelopDate()); - getCreator().set(v.getCreator()); - getModifier().set(v.getModifier()); + getCreator().set(v.getCreatorId()); + getModifier().set(v.getModifierId()); getModifyDate().set(v.getModifyDate()); getUpdatedDate().set(v.getUpdatedDate()); getFetchedTime().set(v.getFetchedTime()); } @Override - public boolean copyTo(CompanyCustomerEntity v) { + public boolean copyTo(CompanyCustomerEntityVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(name.get(), v.getName())) { v.setName(name.get()); @@ -78,24 +81,24 @@ public class CustomerEntityViewModel extends IdentityViewModel implements ProjectBasedViewModel { +public class CustomerSatisfactionSurveyViewModel extends IdentityViewModel implements ProjectBasedViewModel { /** - * 关联的项目 + * 关联的项目,Project */ - private SimpleObjectProperty project = new SimpleObjectProperty<>(); + private SimpleObjectProperty project = new SimpleObjectProperty<>(); private SimpleStringProperty code = new SimpleStringProperty(); @@ -28,7 +25,10 @@ public class CustomerSatisfactionSurveyViewModel extends IdentityViewModel applicant = new SimpleObjectProperty<>(); + /** + * 创建人,Employee + */ + private SimpleObjectProperty applicant = new SimpleObjectProperty<>(); private SimpleObjectProperty applyTime = new SimpleObjectProperty<>(); /** * 说明、注释 @@ -36,20 +36,20 @@ public class CustomerSatisfactionSurveyViewModel extends IdentityViewModel { +public class DeliverySignMethodViewModel extends IdentityViewModel { private SimpleStringProperty name = new SimpleStringProperty(); private SimpleStringProperty code = new SimpleStringProperty(); private SimpleStringProperty description = new SimpleStringProperty(); + private SimpleObjectProperty created = new SimpleObjectProperty<>(); - private SimpleObjectProperty saleType = new SimpleObjectProperty<>(); + private SimpleObjectProperty saleType = new SimpleObjectProperty<>(); - public static DeliverySignMethodViewModel from(DeliverySignMethod v) { + public static DeliverySignMethodViewModel from(DeliverySignMethodVo v) { DeliverySignMethodViewModel model = new DeliverySignMethodViewModel(); model.update(v); return model; } @Override - protected void updateFrom(DeliverySignMethod v) { + protected void updateFrom(DeliverySignMethodVo v) { super.updateFrom(v); getName().set(v.getName()); getCode().set(v.getCode()); getDescription().set(v.getDescription()); - getSaleType().set(v.getSaleType()); + getSaleType().set(v.getSaleTypeId()); } @Override - public boolean copyTo(DeliverySignMethod v) { + public boolean copyTo(DeliverySignMethodVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(getName().get(), v.getName())) { v.setName(getName().get()); @@ -54,8 +54,8 @@ public class DeliverySignMethodViewModel extends IdentityViewModel { +public class DepartmentViewModel extends IdentityViewModel { private SimpleStringProperty name = new SimpleStringProperty(); - private SimpleObjectProperty leader = new SimpleObjectProperty<>(); + /** + * 部门负责人, Employee + */ + private SimpleObjectProperty leader = new SimpleObjectProperty<>(); private SimpleStringProperty code = new SimpleStringProperty(); private SimpleBooleanProperty isActive = new SimpleBooleanProperty(); - public static DepartmentViewModel from(Department v) { + public static DepartmentViewModel from(DepartmentVo v) { DepartmentViewModel model = new DepartmentViewModel(); model.update(v); return model; } @Override - protected void updateFrom(Department v) { + protected void updateFrom(DepartmentVo v) { super.updateFrom(v); getName().set(v.getName()); getCode().set(v.getCode()); - getLeader().set(v.getLeader()); + getLeader().set(v.getLeaderId()); getIsActive().set(v.isActive()); } @Override - public boolean copyTo(Department v) { - if (v == null) return false; + public boolean copyTo(DepartmentVo v) { + if (v == null) + return false; boolean modified = super.copyTo(v); if (!Objects.equals(name.get(), v.getName())) { @@ -47,8 +50,8 @@ public class DepartmentViewModel extends IdentityViewModel { v.setCode(code.get()); modified = true; } - if (!Objects.equals(leader.get(), v.getLeader())) { - v.setLeader(leader.get()); + if (!Objects.equals(leader.get(), v.getLeaderId())) { + v.setLeaderId(leader.get()); modified = true; } if (!Objects.equals(isActive.get(), v.isActive())) { diff --git a/client/src/main/java/com/ecep/contract/vm/EmployeeAuthBindViewModel.java b/client/src/main/java/com/ecep/contract/vm/EmployeeAuthBindViewModel.java index 005f0b1..2bc70df 100644 --- a/client/src/main/java/com/ecep/contract/vm/EmployeeAuthBindViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/EmployeeAuthBindViewModel.java @@ -6,6 +6,7 @@ import java.util.Objects; import com.ecep.contract.model.Employee; import com.ecep.contract.model.EmployeeAuthBind; +import com.ecep.contract.vo.EmployeeAuthBindVo; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; import lombok.Data; @@ -13,21 +14,25 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class EmployeeAuthBindViewModel extends IdentityViewModel implements EmployeeBasedViewModel { +public class EmployeeAuthBindViewModel extends IdentityViewModel implements EmployeeBasedViewModel { private SimpleStringProperty ip = new SimpleStringProperty(); private SimpleStringProperty mac = new SimpleStringProperty(); - - private SimpleObjectProperty employee = new SimpleObjectProperty<>(); + /** + * Employee + */ + private SimpleObjectProperty employee = new SimpleObjectProperty<>(); private SimpleObjectProperty createTime = new SimpleObjectProperty<>(); - - private SimpleObjectProperty updater = new SimpleObjectProperty<>(); + /** + * Employee + */ + private SimpleObjectProperty updater = new SimpleObjectProperty<>(); private SimpleObjectProperty updateTime = new SimpleObjectProperty<>(); private SimpleStringProperty description = new SimpleStringProperty(); - public static EmployeeAuthBindViewModel from(EmployeeAuthBind v) { + public static EmployeeAuthBindViewModel from(EmployeeAuthBindVo v) { EmployeeAuthBindViewModel vm = new EmployeeAuthBindViewModel(); vm.update(v); return vm; @@ -35,19 +40,19 @@ public class EmployeeAuthBindViewModel extends IdentityViewModel getEmployee(); + /** + * 员工ID, 可能为null,需要使用 ObjectProperty + * + * @return + */ + ObjectProperty getEmployee(); } diff --git a/client/src/main/java/com/ecep/contract/vm/EmployeeLoginHistoryViewModel.java b/client/src/main/java/com/ecep/contract/vm/EmployeeLoginHistoryViewModel.java index 4fa0596..e97bc87 100644 --- a/client/src/main/java/com/ecep/contract/vm/EmployeeLoginHistoryViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/EmployeeLoginHistoryViewModel.java @@ -3,8 +3,7 @@ package com.ecep.contract.vm; import java.time.LocalDateTime; import java.util.Objects; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.EmployeeLoginHistory; +import com.ecep.contract.vo.EmployeeLoginHistoryVo; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; @@ -13,35 +12,38 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class EmployeeLoginHistoryViewModel extends IdentityViewModel implements EmployeeBasedViewModel { +public class EmployeeLoginHistoryViewModel extends IdentityViewModel implements EmployeeBasedViewModel { private SimpleStringProperty ip = new SimpleStringProperty(); private SimpleStringProperty mac = new SimpleStringProperty(); - private SimpleObjectProperty employee = new SimpleObjectProperty<>(); + private SimpleObjectProperty employee = new SimpleObjectProperty<>(); private SimpleObjectProperty loginTime = new SimpleObjectProperty<>(); private SimpleObjectProperty activeTime = new SimpleObjectProperty<>(); - public static EmployeeLoginHistoryViewModel from(EmployeeLoginHistory v) { + /** + * 从Vo创建ViewModel + */ + public static EmployeeLoginHistoryViewModel from(EmployeeLoginHistoryVo v) { EmployeeLoginHistoryViewModel vm = new EmployeeLoginHistoryViewModel(); - vm.update(v); + vm.updateFrom(v); return vm; } @Override - protected void updateFrom(EmployeeLoginHistory v) { + protected void updateFrom(EmployeeLoginHistoryVo v) { super.updateFrom(v); getIp().set(v.getIp()); getMac().set(v.getMac()); - getEmployee().set(v.getEmployee()); + getEmployee().set(v.getEmployeeId()); getLoginTime().set(v.getLoginTime()); getActiveTime().set(v.getActiveTime()); } @Override - public boolean copyTo(EmployeeLoginHistory v) { + public boolean copyTo(EmployeeLoginHistoryVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(getIp().get(), v.getIp())) { v.setIp(getIp().get()); @@ -51,8 +53,8 @@ public class EmployeeLoginHistoryViewModel extends IdentityViewModel { +public class EmployeeRoleViewModel extends IdentityViewModel { private SimpleStringProperty code = new SimpleStringProperty(); private SimpleStringProperty name = new SimpleStringProperty(); private SimpleBooleanProperty systemAdministrator = new SimpleBooleanProperty(); private SimpleBooleanProperty manager = new SimpleBooleanProperty(); private SimpleBooleanProperty active = new SimpleBooleanProperty(); - public static EmployeeRoleViewModel from(EmployeeRole v) { + public static EmployeeRoleViewModel from(EmployeeRoleVo v) { EmployeeRoleViewModel model = new EmployeeRoleViewModel(); model.update(v); return model; } @Override - protected void updateFrom(EmployeeRole v) { + protected void updateFrom(EmployeeRoleVo v) { super.updateFrom(v); getCode().set(v.getCode()); getName().set(v.getName()); @@ -35,7 +35,7 @@ public class EmployeeRoleViewModel extends IdentityViewModel { } @Override - public boolean copyTo(EmployeeRole v) { + public boolean copyTo(EmployeeRoleVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(getCode().get(), v.getCode())) { v.setCode(getCode().get()); diff --git a/client/src/main/java/com/ecep/contract/vm/EmployeeViewModel.java b/client/src/main/java/com/ecep/contract/vm/EmployeeViewModel.java index 599601c..f0a5e3d 100644 --- a/client/src/main/java/com/ecep/contract/vm/EmployeeViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/EmployeeViewModel.java @@ -4,7 +4,7 @@ import java.time.LocalDate; import java.util.Objects; import com.ecep.contract.model.Department; -import com.ecep.contract.model.Employee; +import com.ecep.contract.vo.EmployeeVo; import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleObjectProperty; @@ -14,10 +14,10 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class EmployeeViewModel extends IdentityViewModel { +public class EmployeeViewModel extends IdentityViewModel { private SimpleStringProperty account = new SimpleStringProperty(); private SimpleStringProperty name = new SimpleStringProperty(); - private SimpleObjectProperty department = new SimpleObjectProperty<>(); + private SimpleObjectProperty department = new SimpleObjectProperty<>(); private SimpleStringProperty alias = new SimpleStringProperty(); private SimpleStringProperty code = new SimpleStringProperty(); private SimpleStringProperty email = new SimpleStringProperty(); @@ -27,18 +27,18 @@ public class EmployeeViewModel extends IdentityViewModel { private SimpleObjectProperty leaveDate = new SimpleObjectProperty<>(); private SimpleBooleanProperty isActive = new SimpleBooleanProperty(); - public static EmployeeViewModel from(Employee v) { + public static EmployeeViewModel from(EmployeeVo v) { EmployeeViewModel model = new EmployeeViewModel(); model.update(v); return model; } @Override - protected void updateFrom(Employee v) { + protected void updateFrom(EmployeeVo v) { super.updateFrom(v); getAccount().set(v.getAccount()); getName().set(v.getName()); - getDepartment().set(v.getDepartment()); + getDepartment().set(v.getDepartmentId()); // getRoles().set(FXCollections.observableArrayList(v.getRoles())); getAlias().set(v.getAlias()); getCode().set(v.getCode()); @@ -51,7 +51,7 @@ public class EmployeeViewModel extends IdentityViewModel { } @Override - public boolean copyTo(Employee v) { + public boolean copyTo(EmployeeVo v) { if (v == null) return false; @@ -64,8 +64,8 @@ public class EmployeeViewModel extends IdentityViewModel { v.setName(name.get()); modified = true; } - if (!Objects.equals(department.get(), v.getDepartment())) { - v.setDepartment(department.get()); + if (!Objects.equals(department.get(), v.getDepartmentId())) { + v.setDepartmentId(department.get()); modified = true; } // if (!Objects.equals(roles.get(), v.getRoles())) { diff --git a/client/src/main/java/com/ecep/contract/vm/ExtendVendorInfoViewModel.java b/client/src/main/java/com/ecep/contract/vm/ExtendVendorInfoViewModel.java index 3de2411..2e1022e 100644 --- a/client/src/main/java/com/ecep/contract/vm/ExtendVendorInfoViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ExtendVendorInfoViewModel.java @@ -2,9 +2,7 @@ package com.ecep.contract.vm; import java.util.Objects; -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.ExtendVendorInfo; -import com.ecep.contract.model.VendorGroup; +import com.ecep.contract.vo.ExtendVendorInfoVo; import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleIntegerProperty; @@ -14,15 +12,15 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class ExtendVendorInfoViewModel extends IdentityViewModel { +public class ExtendVendorInfoViewModel extends IdentityViewModel { /** - * 关联的合同 + * 关联的合同, Contract */ - private SimpleObjectProperty contract = new SimpleObjectProperty<>(); + private SimpleObjectProperty contract = new SimpleObjectProperty<>(); /** - * 供应商分组 + * 供应商分组, VendorGroup */ - private SimpleObjectProperty group = new SimpleObjectProperty<>(); + private SimpleObjectProperty group = new SimpleObjectProperty<>(); /** * 合同序号 @@ -38,31 +36,31 @@ public class ExtendVendorInfoViewModel extends IdentityViewModel { +public class FunctionViewModel extends IdentityViewModel { private SimpleStringProperty name = new SimpleStringProperty(); private SimpleStringProperty key = new SimpleStringProperty(); private SimpleStringProperty controller = new SimpleStringProperty(); @@ -19,7 +19,7 @@ public class FunctionViewModel extends IdentityViewModel { private SimpleStringProperty description = new SimpleStringProperty(); private SimpleBooleanProperty active = new SimpleBooleanProperty(); - public static FunctionViewModel from(Function v) { + public static FunctionViewModel from(FunctionVo v) { FunctionViewModel model = new FunctionViewModel(); model.update(v); return model; @@ -27,7 +27,7 @@ public class FunctionViewModel extends IdentityViewModel { @Override - protected void updateFrom(Function v) { + protected void updateFrom(FunctionVo v) { super.updateFrom(v); getName().set(v.getName()); getKey().set(v.getKey()); @@ -38,7 +38,7 @@ public class FunctionViewModel extends IdentityViewModel { } @Override - public boolean copyTo(Function v) { + public boolean copyTo(FunctionVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(name.get(), v.getName())) { v.setName(name.get()); diff --git a/client/src/main/java/com/ecep/contract/vm/InventoryCatalogViewModel.java b/client/src/main/java/com/ecep/contract/vm/InventoryCatalogViewModel.java index 0c5b154..76e8671 100644 --- a/client/src/main/java/com/ecep/contract/vm/InventoryCatalogViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/InventoryCatalogViewModel.java @@ -2,7 +2,7 @@ package com.ecep.contract.vm; import java.util.Objects; -import com.ecep.contract.model.InventoryCatalog; +import com.ecep.contract.vo.InventoryCatalogVo; import javafx.beans.property.SimpleStringProperty; import lombok.Data; @@ -10,19 +10,19 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class InventoryCatalogViewModel extends IdentityViewModel { +public class InventoryCatalogViewModel extends IdentityViewModel { private SimpleStringProperty name = new SimpleStringProperty(); private SimpleStringProperty code = new SimpleStringProperty(); @Override - protected void updateFrom(InventoryCatalog v) { + protected void updateFrom(InventoryCatalogVo v) { super.updateFrom(v); name.set(v.getName()); code.set(v.getCode()); } @Override - public boolean copyTo(InventoryCatalog v) { + public boolean copyTo(InventoryCatalogVo v) { boolean ret = super.copyTo(v); if (!Objects.equals(name.get(), v.getName())) { v.setName(name.get()); diff --git a/client/src/main/java/com/ecep/contract/vm/InventoryHistoryPriceViewModel.java b/client/src/main/java/com/ecep/contract/vm/InventoryHistoryPriceViewModel.java index 29a587b..09d5a08 100644 --- a/client/src/main/java/com/ecep/contract/vm/InventoryHistoryPriceViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/InventoryHistoryPriceViewModel.java @@ -5,19 +5,19 @@ import java.time.Year; import java.util.Objects; import com.ecep.contract.model.HistoryPrice; -import com.ecep.contract.model.Inventory; -import com.ecep.contract.model.InventoryHistoryPrice; +import com.ecep.contract.vo.InventoryHistoryPriceVo; import javafx.beans.property.SimpleDoubleProperty; import javafx.beans.property.SimpleFloatProperty; +import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleObjectProperty; import lombok.Data; import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class InventoryHistoryPriceViewModel extends IdentityViewModel { - private SimpleObjectProperty inventory = new SimpleObjectProperty<>(); +public class InventoryHistoryPriceViewModel extends IdentityViewModel { + private SimpleIntegerProperty inventoryId = new SimpleIntegerProperty(); private SimpleObjectProperty year = new SimpleObjectProperty<>(); // latest price private SimpleFloatProperty latestSaleTax = new SimpleFloatProperty(); @@ -69,9 +69,11 @@ public class InventoryHistoryPriceViewModel extends IdentityViewModel { - private SimpleObjectProperty catalog = new SimpleObjectProperty<>(); +public class InventoryViewModel extends IdentityViewModel { + /** + * InventoryCatalog + */ + private SimpleObjectProperty catalog = new SimpleObjectProperty<>(); private SimpleStringProperty code = new SimpleStringProperty(); private SimpleStringProperty specification = new SimpleStringProperty(); private SimpleBooleanProperty specificationLock = new SimpleBooleanProperty(); @@ -51,23 +55,29 @@ public class InventoryViewModel extends IdentityViewModel { private SimpleDoubleProperty packagedVolume = new SimpleDoubleProperty(); private SimpleStringProperty unit = new SimpleStringProperty(); - private SimpleObjectProperty creator = new SimpleObjectProperty<>(); + /** + * Employee + */ + private SimpleObjectProperty creator = new SimpleObjectProperty<>(); private SimpleObjectProperty createTime = new SimpleObjectProperty<>(); - private SimpleObjectProperty updater = new SimpleObjectProperty<>(); + /** + * Employee + */ + private SimpleObjectProperty updater = new SimpleObjectProperty<>(); private SimpleObjectProperty updateDate = new SimpleObjectProperty<>(); private SimpleStringProperty description = new SimpleStringProperty(); - public static InventoryViewModel from(Inventory v) { + public static InventoryViewModel from(InventoryVo v) { InventoryViewModel model = new InventoryViewModel(); model.update(v); return model; } @Override - protected void updateFrom(Inventory v) { + protected void updateFrom(InventoryVo v) { super.updateFrom(v); - getCatalog().set(v.getCatalog()); + getCatalog().set(v.getCatalogId()); getCode().set(v.getCode()); getSpecification().set(v.getSpecification()); getSpecificationLock().set(v.isSpecificationLock()); @@ -104,46 +114,46 @@ public class InventoryViewModel extends IdentityViewModel { getPackagedSizeHeight().set(packagedVolumeSize.getHeight()); getPackagedVolume().set(packagedVolumeSize.getVolume()); - getCreator().set(v.getCreator()); + getCreator().set(v.getCreatorId()); getCreateTime().set(v.getCreateTime()); - getUpdater().set(v.getUpdater()); + getUpdater().set(v.getUpdaterId()); getUpdateDate().set(v.getUpdateDate()); getDescription().set(v.getDescription()); } @Override - public boolean copyTo(Inventory v) { + public boolean copyTo(InventoryVo v) { if (v == null) return false; boolean modified = super.copyTo(v); - if (!Objects.equals(catalog.get(), v.getCatalog())) { - v.setCatalog(catalog.get()); + if (!Objects.equals(getCatalog().get(), v.getCatalogId())) { + v.setCatalogId(getCatalog().get()); modified = true; } - if (!Objects.equals(code.get(), v.getCode())) { - v.setCode(code.get()); + if (!Objects.equals(getCode().get(), v.getCode())) { + v.setCode(getCode().get()); modified = true; } - if (!Objects.equals(specification.get(), v.getSpecification())) { - v.setSpecification(specification.get()); + if (!Objects.equals(getSpecification().get(), v.getSpecification())) { + v.setSpecification(getSpecification().get()); modified = true; } - if (!Objects.equals(specificationLock.get(), v.isSpecificationLock())) { - v.setSpecificationLock(specificationLock.get()); + if (!Objects.equals(getSpecificationLock().get(), v.isSpecificationLock())) { + v.setSpecificationLock(getSpecificationLock().get()); modified = true; } - if (!Objects.equals(name.get(), v.getName())) { - v.setName(name.get()); + if (!Objects.equals(getName().get(), v.getName())) { + v.setName(getName().get()); modified = true; } - if (!Objects.equals(nameLock.get(), v.isNameLock())) { - v.setNameLock(nameLock.get()); + if (!Objects.equals(getNameLock().get(), v.isNameLock())) { + v.setNameLock(getNameLock().get()); modified = true; } - if (!Objects.equals(unit.get(), v.getUnit())) { - v.setUnit(unit.get()); + if (!Objects.equals(getUnit().get(), v.getUnit())) { + v.setUnit(getUnit().get()); modified = true; } @@ -235,16 +245,16 @@ public class InventoryViewModel extends IdentityViewModel { } // creator or updater - if (!Objects.equals(creator.get(), v.getCreator())) { - v.setCreator(creator.get()); + if (!Objects.equals(getCreator().get(), v.getCreatorId())) { + v.setCreatorId(getCreator().get()); modified = true; } - if (!Objects.equals(createTime.get(), v.getCreateTime())) { - v.setCreateTime(createTime.get()); + if (!Objects.equals(getCreateTime().get(), v.getCreateTime())) { + v.setCreateTime(getCreateTime().get()); modified = true; } - if (!Objects.equals(updater.get(), v.getUpdater())) { - v.setUpdater(updater.get()); + if (!Objects.equals(getUpdater().get(), v.getUpdaterId())) { + v.setUpdaterId(getUpdater().get()); modified = true; } if (!Objects.equals(updateDate.get(), v.getUpdateDate())) { diff --git a/client/src/main/java/com/ecep/contract/vm/InvoiceViewModel.java b/client/src/main/java/com/ecep/contract/vm/InvoiceViewModel.java index 656ab42..d8a53f4 100644 --- a/client/src/main/java/com/ecep/contract/vm/InvoiceViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/InvoiceViewModel.java @@ -4,7 +4,7 @@ import java.time.LocalDate; import java.util.Objects; import com.ecep.contract.model.Company; -import com.ecep.contract.model.Invoice; +import com.ecep.contract.vo.InvoiceVo; import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleObjectProperty; @@ -14,25 +14,25 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class InvoiceViewModel extends IdentityViewModel { +public class InvoiceViewModel extends IdentityViewModel { SimpleIntegerProperty id = new SimpleIntegerProperty(); SimpleStringProperty code = new SimpleStringProperty(); - SimpleObjectProperty company = new SimpleObjectProperty<>(); + SimpleObjectProperty company = new SimpleObjectProperty<>(); SimpleObjectProperty invoiceDate = new SimpleObjectProperty<>(); SimpleStringProperty description = new SimpleStringProperty(); @Override - protected void updateFrom(Invoice v) { + protected void updateFrom(InvoiceVo v) { super.updateFrom(v); getId().set(v.getId()); getCode().set(v.getCode()); - getCompany().set(v.getCompany()); + getCompany().set(v.getCompanyId()); getInvoiceDate().set(v.getInvoiceDate()); getDescription().set(v.getDescription()); } @Override - public boolean copyTo(Invoice v) { + public boolean copyTo(InvoiceVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(id.get(), v.getId())) { v.setId(id.get()); @@ -42,8 +42,8 @@ public class InvoiceViewModel extends IdentityViewModel { v.setCode(code.get()); modified = true; } - if (!Objects.equals(company.get(), v.getCompany())) { - v.setCompany(company.get()); + if (!Objects.equals(company.get(), v.getCompanyId())) { + v.setCompanyId(company.get()); modified = true; } if (!Objects.equals(invoiceDate.get(), v.getInvoiceDate())) { @@ -57,7 +57,7 @@ public class InvoiceViewModel extends IdentityViewModel { return modified; } - public static InvoiceViewModel from(Invoice invoice) { + public static InvoiceViewModel from(InvoiceVo invoice) { InvoiceViewModel vm = new InvoiceViewModel(); vm.updateFrom(invoice); return vm; diff --git a/client/src/main/java/com/ecep/contract/vm/ProductTypeViewModel.java b/client/src/main/java/com/ecep/contract/vm/ProductTypeViewModel.java index 4bff9d2..a585b43 100644 --- a/client/src/main/java/com/ecep/contract/vm/ProductTypeViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ProductTypeViewModel.java @@ -3,7 +3,7 @@ package com.ecep.contract.vm; import java.time.LocalDate; import java.util.Objects; -import com.ecep.contract.model.ProductType; +import com.ecep.contract.vo.ProductTypeVo; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; @@ -12,20 +12,20 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class ProductTypeViewModel extends IdentityViewModel { +public class ProductTypeViewModel extends IdentityViewModel { private SimpleStringProperty name = new SimpleStringProperty(); private SimpleStringProperty code = new SimpleStringProperty(); private SimpleStringProperty description = new SimpleStringProperty(); private SimpleObjectProperty created = new SimpleObjectProperty<>(); - public static ProductTypeViewModel from(ProductType v) { + public static ProductTypeViewModel from(ProductTypeVo v) { ProductTypeViewModel model = new ProductTypeViewModel(); model.update(v); return model; } @Override - protected void updateFrom(ProductType v) { + protected void updateFrom(ProductTypeVo v) { super.updateFrom(v); getName().set(v.getName()); getCode().set(v.getCode()); @@ -33,7 +33,7 @@ public class ProductTypeViewModel extends IdentityViewModel { } @Override - public boolean copyTo(ProductType v) { + public boolean copyTo(ProductTypeVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(getName().get(), v.getName())) { v.setName(getName().get()); diff --git a/client/src/main/java/com/ecep/contract/vm/ProductUsageViewModel.java b/client/src/main/java/com/ecep/contract/vm/ProductUsageViewModel.java index 8ac3686..270256d 100644 --- a/client/src/main/java/com/ecep/contract/vm/ProductUsageViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ProductUsageViewModel.java @@ -3,7 +3,7 @@ package com.ecep.contract.vm; import java.time.LocalDate; import java.util.Objects; -import com.ecep.contract.model.ProductUsage; +import com.ecep.contract.vo.ProductUsageVo; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; @@ -12,20 +12,20 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class ProductUsageViewModel extends IdentityViewModel { +public class ProductUsageViewModel extends IdentityViewModel { private SimpleStringProperty name = new SimpleStringProperty(); private SimpleStringProperty code = new SimpleStringProperty(); private SimpleStringProperty description = new SimpleStringProperty(); private SimpleObjectProperty created = new SimpleObjectProperty<>(); - public static ProductUsageViewModel from(ProductUsage v) { + public static ProductUsageViewModel from(ProductUsageVo v) { ProductUsageViewModel model = new ProductUsageViewModel(); model.update(v); return model; } @Override - protected void updateFrom(ProductUsage v) { + protected void updateFrom(ProductUsageVo v) { super.updateFrom(v); getName().set(v.getName()); getCode().set(v.getCode()); @@ -33,7 +33,7 @@ public class ProductUsageViewModel extends IdentityViewModel { } @Override - public boolean copyTo(ProductUsage v) { + public boolean copyTo(ProductUsageVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(getName().get(), v.getName())) { v.setName(getName().get()); diff --git a/client/src/main/java/com/ecep/contract/vm/ProjectBasedViewModel.java b/client/src/main/java/com/ecep/contract/vm/ProjectBasedViewModel.java index 4eb9dd0..64e28b4 100644 --- a/client/src/main/java/com/ecep/contract/vm/ProjectBasedViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ProjectBasedViewModel.java @@ -1,9 +1,10 @@ package com.ecep.contract.vm; -import com.ecep.contract.model.Project; - -import javafx.beans.property.SimpleObjectProperty; +import javafx.beans.property.ObjectProperty; public interface ProjectBasedViewModel { - SimpleObjectProperty getProject(); + /** + * Project + */ + ObjectProperty getProject(); } diff --git a/client/src/main/java/com/ecep/contract/vm/ProjectBidViewModel.java b/client/src/main/java/com/ecep/contract/vm/ProjectBidViewModel.java index f8aa943..1392693 100644 --- a/client/src/main/java/com/ecep/contract/vm/ProjectBidViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ProjectBidViewModel.java @@ -1,38 +1,28 @@ package com.ecep.contract.vm; +import com.ecep.contract.util.NumberUtils; +import com.ecep.contract.vo.ProjectBidVo; +import javafx.beans.property.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.util.StringUtils; + import java.io.File; import java.time.LocalDateTime; import java.util.Objects; import java.util.function.Consumer; import java.util.function.Supplier; -import org.springframework.util.StringUtils; - -import com.ecep.contract.model.CompanyCustomerEvaluationFormFile; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectBid; -import com.ecep.contract.model.ProjectCost; -import com.ecep.contract.util.NumberUtils; - -import javafx.beans.property.SimpleBooleanProperty; -import javafx.beans.property.SimpleDoubleProperty; -import javafx.beans.property.SimpleIntegerProperty; -import javafx.beans.property.SimpleObjectProperty; -import javafx.beans.property.SimpleStringProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; - /** * 项目报价 */ @Data @EqualsAndHashCode(callSuper = false) -public class ProjectBidViewModel extends IdentityViewModel implements ProjectBasedViewModel { +public class ProjectBidViewModel extends IdentityViewModel implements ProjectBasedViewModel { /** - * 关联的项目 + * 关联的项目, Project */ - private SimpleObjectProperty project = new SimpleObjectProperty<>(); + private SimpleObjectProperty project = new SimpleObjectProperty<>(); /** * 客户咨询等级(级别) */ @@ -43,13 +33,13 @@ public class ProjectBidViewModel extends IdentityViewModel implement */ private SimpleDoubleProperty amount = new SimpleDoubleProperty(); /** - * 客户咨询评估文件,根据资信资评估文件生成客户资信等级(级别) + * 客户咨询评估文件,根据资信资评估文件生成客户资信等级(级别), CompanyCustomerEvaluationFormFile */ - private SimpleObjectProperty evaluationFile = new SimpleObjectProperty<>(); + private SimpleObjectProperty evaluationFile = new SimpleObjectProperty<>(); /** - * 项目成本表 + * 项目成本表, ProjectCost */ - private SimpleObjectProperty cost = new SimpleObjectProperty<>(); + private SimpleObjectProperty cost = new SimpleObjectProperty<>(); /** * 是否标准付款方式 @@ -72,17 +62,17 @@ public class ProjectBidViewModel extends IdentityViewModel implement */ private SimpleObjectProperty applyTime = new SimpleObjectProperty<>(); /** - * 申请人 + * 申请人, Employee */ - private SimpleObjectProperty applicant = new SimpleObjectProperty<>(); + private SimpleObjectProperty applicant = new SimpleObjectProperty<>(); /** * 审核时间 */ private SimpleObjectProperty authorizationTime = new SimpleObjectProperty<>(); /** - * 审核人 + * 审核人, Employee */ - private SimpleObjectProperty authorizer = new SimpleObjectProperty<>(); + private SimpleObjectProperty authorizer = new SimpleObjectProperty<>(); /** * 审核文件 */ @@ -97,27 +87,27 @@ public class ProjectBidViewModel extends IdentityViewModel implement */ private SimpleStringProperty description = new SimpleStringProperty(); - public static ProjectBidViewModel from(ProjectBid v) { + public static ProjectBidViewModel from(ProjectBidVo v) { ProjectBidViewModel model = new ProjectBidViewModel(); model.update(v); return model; } @Override - protected void updateFrom(ProjectBid v) { + protected void updateFrom(ProjectBidVo v) { super.updateFrom(v); getProject().set(v.getProject()); getLevel().set(v.getLevel()); getAmount().set(v.getAmount()); - getEvaluationFile().set(v.getEvaluationFile()); - getCost().set(v.getCost()); + getEvaluationFile().set(v.getEvaluationFileId()); + getCost().set(v.getCostId()); getStandardPayWay().set(v.isStandardPayWay()); getNoStandardPayWayText().set(v.getNoStandardPayWayText()); getStandardContractText().set(v.isStandardContractText()); getNoStandardContractText().set(v.getNoStandardContractText()); - getApplicant().set(v.getApplicant()); + getApplicant().set(v.getApplicantId()); getApplyTime().set(v.getApplyTime()); - getAuthorizer().set(v.getAuthorizer()); + getAuthorizer().set(v.getAuthorizerId()); getAuthorizationTime().set(v.getAuthorizationTime()); if (StringUtils.hasText(v.getAuthorizationFile())) { @@ -138,7 +128,7 @@ public class ProjectBidViewModel extends IdentityViewModel implement } @Override - public boolean copyTo(ProjectBid v) { + public boolean copyTo(ProjectBidVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(getProject().get(), v.getProject())) { v.setProject(getProject().get()); @@ -152,12 +142,12 @@ public class ProjectBidViewModel extends IdentityViewModel implement v.setAmount(getAmount().get()); modified = true; } - if (!Objects.equals(getEvaluationFile().get(), v.getEvaluationFile())) { - v.setEvaluationFile(getEvaluationFile().get()); + if (!Objects.equals(getEvaluationFile().get(), v.getEvaluationFileId())) { + v.setEvaluationFileId(getEvaluationFile().get()); modified = true; } - if (!Objects.equals(getCost().get(), v.getCost())) { - v.setCost(getCost().get()); + if (!Objects.equals(getCost().get(), v.getCostId())) { + v.setCostId(getCost().get()); modified = true; } @@ -178,16 +168,16 @@ public class ProjectBidViewModel extends IdentityViewModel implement modified = true; } - if (!Objects.equals(getApplicant().get(), v.getApplicant())) { - v.setApplicant(getApplicant().get()); + if (!Objects.equals(getApplicant().get(), v.getApplicantId())) { + v.setApplicantId(getApplicant().get()); modified = true; } if (!Objects.equals(getApplyTime().get(), v.getApplyTime())) { v.setApplyTime(getApplyTime().get()); modified = true; } - if (!Objects.equals(getAuthorizer().get(), v.getAuthorizer())) { - v.setAuthorizer(getAuthorizer().get()); + if (!Objects.equals(getAuthorizer().get(), v.getAuthorizerId())) { + v.setAuthorizerId(getAuthorizer().get()); modified = true; } if (!Objects.equals(getAuthorizationTime().get(), v.getAuthorizationTime())) { @@ -195,11 +185,11 @@ public class ProjectBidViewModel extends IdentityViewModel implement modified = true; } - if (updateFile(authorizationFile, v::getAuthorizationFile, v::setAuthorizationFile)) { + if (updateFile(getAuthorizationFile(), v::getAuthorizationFile, v::setAuthorizationFile)) { modified = true; } - if (updateFile(bidAcceptanceLetterFile, v::getBidAcceptanceLetterFile, v::setBidAcceptanceLetterFile)) { + if (updateFile(getBidAcceptanceLetterFile(), v::getBidAcceptanceLetterFile, v::setBidAcceptanceLetterFile)) { modified = true; } diff --git a/client/src/main/java/com/ecep/contract/vm/ProjectCostItemViewModel.java b/client/src/main/java/com/ecep/contract/vm/ProjectCostItemViewModel.java index 7b94828..4177952 100644 --- a/client/src/main/java/com/ecep/contract/vm/ProjectCostItemViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ProjectCostItemViewModel.java @@ -3,11 +3,7 @@ package com.ecep.contract.vm; import java.time.LocalDateTime; import java.util.Objects; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.Inventory; -import com.ecep.contract.model.ProjectCost; -import com.ecep.contract.model.ProjectCostItem; - +import com.ecep.contract.vo.ProjectCostItemVo; import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleDoubleProperty; import javafx.beans.property.SimpleObjectProperty; @@ -20,20 +16,20 @@ import lombok.EqualsAndHashCode; */ @Data @EqualsAndHashCode(callSuper = false) -public class ProjectCostItemViewModel extends IdentityViewModel { +public class ProjectCostItemViewModel extends IdentityViewModel { /** - * 关联的合同成本对象 + * 关联的合同成本对象ID */ - SimpleObjectProperty cost = new SimpleObjectProperty<>(); + SimpleObjectProperty costId = new SimpleObjectProperty<>(); SimpleStringProperty title = new SimpleStringProperty(); SimpleStringProperty specification = new SimpleStringProperty(); SimpleStringProperty unit = new SimpleStringProperty(); /** - * 存货 + * 存货ID */ - SimpleObjectProperty inventory = new SimpleObjectProperty<>(); + SimpleObjectProperty inventoryId = new SimpleObjectProperty<>(); SimpleDoubleProperty inQuantity = new SimpleDoubleProperty(); SimpleDoubleProperty inTaxRate = new SimpleDoubleProperty(); @@ -59,21 +55,27 @@ public class ProjectCostItemViewModel extends IdentityViewModel SimpleObjectProperty createDate = new SimpleObjectProperty<>(); SimpleObjectProperty updateDate = new SimpleObjectProperty<>(); - SimpleObjectProperty creator = new SimpleObjectProperty<>(); - SimpleObjectProperty updater = new SimpleObjectProperty<>(); + /** + * 创建者ID + */ + SimpleObjectProperty creatorId = new SimpleObjectProperty<>(); + /** + * 更新者ID + */ + SimpleObjectProperty updaterId = new SimpleObjectProperty<>(); SimpleBooleanProperty updatePriceWay = new SimpleBooleanProperty(false); SimpleStringProperty remark = new SimpleStringProperty(); @Override - protected void updateFrom(ProjectCostItem v) { + protected void updateFrom(ProjectCostItemVo v) { super.updateFrom(v); - getCost().set(v.getCost()); + getCostId().set(v.getCostId()); getTitle().set(v.getTitle()); getSpecification().set(v.getSpecification()); getUnit().set(v.getUnit()); - getInventory().set(v.getInventory()); + getInventoryId().set(v.getInventoryId()); getInQuantity().set(v.getInQuantity()); getInTaxRate().set(v.getInTaxRate()); @@ -89,8 +91,8 @@ public class ProjectCostItemViewModel extends IdentityViewModel getCreateDate().set(v.getCreateDate()); getUpdateDate().set(v.getUpdateDate()); - getCreator().set(v.getCreator()); - getUpdater().set(v.getUpdater()); + getCreatorId().set(v.getCreatorId()); + getUpdaterId().set(v.getUpdaterId()); getRemark().set(v.getRemark()); } @@ -123,10 +125,10 @@ public class ProjectCostItemViewModel extends IdentityViewModel } @Override - public boolean copyTo(ProjectCostItem v) { + public boolean copyTo(ProjectCostItemVo v) { boolean modified = super.copyTo(v); - if (!Objects.equals(cost.get(), v.getCost())) { - v.setCost(cost.get()); + if (!Objects.equals(costId.get(), v.getCostId())) { + v.setCostId(costId.get()); modified = true; } if (!Objects.equals(title.get(), v.getTitle())) { @@ -141,8 +143,8 @@ public class ProjectCostItemViewModel extends IdentityViewModel v.setUnit(unit.get()); modified = true; } - if (!Objects.equals(inventory.get(), v.getInventory())) { - v.setInventory(inventory.get()); + if (!Objects.equals(inventoryId.get(), v.getInventoryId())) { + v.setInventoryId(inventoryId.get()); modified = true; } @@ -180,12 +182,12 @@ public class ProjectCostItemViewModel extends IdentityViewModel v.setUpdateDate(updateDate.get()); modified = true; } - if (!Objects.equals(creator.get(), v.getCreator())) { - v.setCreator(creator.get()); + if (!Objects.equals(creatorId.get(), v.getCreatorId())) { + v.setCreatorId(creatorId.get()); modified = true; } - if (!Objects.equals(updater.get(), v.getUpdater())) { - v.setUpdater(updater.get()); + if (!Objects.equals(updaterId.get(), v.getUpdaterId())) { + v.setUpdaterId(updaterId.get()); modified = true; } if (!Objects.equals(remark.get(), v.getRemark())) { @@ -206,7 +208,7 @@ public class ProjectCostItemViewModel extends IdentityViewModel return Math.abs(a - b) < 0.0001; } - public static ProjectCostItemViewModel from(ProjectCostItem v) { + public static ProjectCostItemViewModel from(ProjectCostItemVo v) { ProjectCostItemViewModel viewModel = new ProjectCostItemViewModel(); viewModel.update(v); return viewModel; @@ -234,13 +236,13 @@ public class ProjectCostItemViewModel extends IdentityViewModel } void taxPrice2ExclusiveTaxPrice(SimpleDoubleProperty taxPrice, SimpleDoubleProperty exclusiveTaxPrice, - SimpleDoubleProperty taxRate) { + SimpleDoubleProperty taxRate) { double value = taxPrice.get(); exclusiveTaxPrice.setValue(value / ((100 + taxRate.get()) / 100)); } void exclusiveTaxPrice2TaxPrice(SimpleDoubleProperty exclusiveTaxPrice, SimpleDoubleProperty taxPrice, - SimpleDoubleProperty taxRate) { + SimpleDoubleProperty taxRate) { double value = exclusiveTaxPrice.get(); taxPrice.setValue(value * ((100 + taxRate.get()) / 100.0)); } diff --git a/client/src/main/java/com/ecep/contract/vm/ProjectCostViewModel.java b/client/src/main/java/com/ecep/contract/vm/ProjectCostViewModel.java index 0ff6cbf..487788a 100644 --- a/client/src/main/java/com/ecep/contract/vm/ProjectCostViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ProjectCostViewModel.java @@ -6,11 +6,8 @@ import java.util.Objects; import org.springframework.util.StringUtils; -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectCost; import com.ecep.contract.util.NumberUtils; +import com.ecep.contract.vo.ProjectCostVo; import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleDoubleProperty; @@ -23,23 +20,23 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class ProjectCostViewModel extends IdentityViewModel implements ProjectBasedViewModel { +public class ProjectCostViewModel extends IdentityViewModel implements ProjectBasedViewModel { /** - * 合同对象 + * 合同对象,Contract */ - SimpleObjectProperty contract = new SimpleObjectProperty<>(); + SimpleObjectProperty contract = new SimpleObjectProperty<>(); /** - * 项目对象 + * 项目对象,Project */ - SimpleObjectProperty project = new SimpleObjectProperty<>(); + SimpleObjectProperty project = new SimpleObjectProperty<>(); /** * 申请日期 */ private SimpleObjectProperty applyTime = new SimpleObjectProperty<>(); /** - * 申请人 + * 申请人,Employee */ - private SimpleObjectProperty applicant = new SimpleObjectProperty<>(); + private SimpleObjectProperty applicant = new SimpleObjectProperty<>(); /** * 审核时间 */ @@ -49,9 +46,9 @@ public class ProjectCostViewModel extends IdentityViewModel impleme */ private SimpleObjectProperty authorizationFile = new SimpleObjectProperty<>(); /** - * 审核人 + * 审核人, Employee */ - private SimpleObjectProperty authorizer = new SimpleObjectProperty<>(); + private SimpleObjectProperty authorizer = new SimpleObjectProperty<>(); /** * 是否是标准合同文本 */ @@ -145,13 +142,13 @@ public class ProjectCostViewModel extends IdentityViewModel impleme private SimpleStringProperty description = new SimpleStringProperty(); @Override - protected void updateFrom(ProjectCost v) { + protected void updateFrom(ProjectCostVo v) { super.updateFrom(v); - getContract().set(v.getContract()); + getContract().set(v.getContractId()); getProject().set(v.getProject()); - getApplicant().set(v.getApplicant()); + getApplicant().set(v.getApplicantId()); getApplyTime().set(v.getApplyTime()); - getAuthorizer().set(v.getAuthorizer()); + getAuthorizer().set(v.getAuthorizerId()); getAuthorizationTime().set(v.getAuthorizationTime()); if (StringUtils.hasText(v.getAuthorizationFile())) { @@ -186,10 +183,10 @@ public class ProjectCostViewModel extends IdentityViewModel impleme } @Override - public boolean copyTo(ProjectCost v) { + public boolean copyTo(ProjectCostVo v) { boolean modified = super.copyTo(v); - if (!Objects.equals(contract.get(), v.getContract())) { - v.setContract(contract.get()); + if (!Objects.equals(contract.get(), v.getContractId())) { + v.setContractId(contract.get()); modified = true; } if (!Objects.equals(project.get(), v.getProject())) { @@ -197,16 +194,16 @@ public class ProjectCostViewModel extends IdentityViewModel impleme modified = true; } - if (!Objects.equals(applicant.get(), v.getApplicant())) { - v.setApplicant(applicant.get()); + if (!Objects.equals(applicant.get(), v.getApplicantId())) { + v.setApplicantId(applicant.get()); modified = true; } if (!Objects.equals(applyTime.get(), v.getApplyTime())) { v.setApplyTime(applyTime.get()); modified = true; } - if (!Objects.equals(authorizer.get(), v.getAuthorizer())) { - v.setAuthorizer(authorizer.get()); + if (!Objects.equals(authorizer.get(), v.getAuthorizerId())) { + v.setAuthorizerId(authorizer.get()); modified = true; } if (!Objects.equals(authorizationTime.get(), v.getAuthorizationTime())) { @@ -221,7 +218,8 @@ public class ProjectCostViewModel extends IdentityViewModel impleme file = new File(v.getAuthorizationFile()); } if (!Objects.equals(authorizationFile.get(), file)) { - v.setAuthorizationFile(authorizationFile.get() == null ? null : authorizationFile.get().getAbsolutePath()); + v.setAuthorizationFile( + authorizationFile.get() == null ? null : authorizationFile.get().getAbsolutePath()); modified = true; } } @@ -318,7 +316,7 @@ public class ProjectCostViewModel extends IdentityViewModel impleme return modified; } - public static ProjectCostViewModel from(ProjectCost projectCost) { + public static ProjectCostViewModel from(ProjectCostVo projectCost) { ProjectCostViewModel viewModel = new ProjectCostViewModel(); viewModel.update(projectCost); return viewModel; @@ -330,7 +328,8 @@ public class ProjectCostViewModel extends IdentityViewModel impleme getGrossProfitMargin().set(0); return; } - double grossProfit = amount - getOutExclusiveTaxAmount().get() - getStampTaxFee().get() - getTaxAndSurchargesFee().get(); + double grossProfit = amount - getOutExclusiveTaxAmount().get() - getStampTaxFee().get() + - getTaxAndSurchargesFee().get(); getGrossProfitMargin().set(grossProfit * 100 / amount); } @@ -343,7 +342,8 @@ public class ProjectCostViewModel extends IdentityViewModel impleme } public void updateTaxAndSurchargesFee() { - double value = (getInTaxAmount().get() - getInExclusiveTaxAmount().get()) - (getOutTaxAmount().get() - getOutExclusiveTaxAmount().get()); + double value = (getInTaxAmount().get() - getInExclusiveTaxAmount().get()) + - (getOutTaxAmount().get() - getOutExclusiveTaxAmount().get()); getTaxAndSurchargesFee().set((float) (value * getTaxAndSurcharges().get() / 100)); updateGrossProfitMargin(); } diff --git a/client/src/main/java/com/ecep/contract/vm/ProjectFileViewModel.java b/client/src/main/java/com/ecep/contract/vm/ProjectFileViewModel.java index ff97b3b..405bf18 100644 --- a/client/src/main/java/com/ecep/contract/vm/ProjectFileViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ProjectFileViewModel.java @@ -1,7 +1,7 @@ package com.ecep.contract.vm; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectFile; +import com.ecep.contract.vo.ProjectVo; +import com.ecep.contract.vo.ProjectFileVo; import javafx.beans.property.SimpleObjectProperty; import lombok.Data; @@ -9,13 +9,13 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class ProjectFileViewModel extends IdentityViewModel implements ProjectBasedViewModel { +public class ProjectFileViewModel extends IdentityViewModel implements ProjectBasedViewModel { /** * 关联的项目 */ - private SimpleObjectProperty project = new SimpleObjectProperty<>(); + private SimpleObjectProperty project = new SimpleObjectProperty<>(); - public static ProjectFileViewModel from(ProjectFile file) { + public static ProjectFileViewModel from(ProjectFileVo file) { ProjectFileViewModel viewModel = new ProjectFileViewModel(); viewModel.update(file); return viewModel; diff --git a/client/src/main/java/com/ecep/contract/vm/ProjectFundPlanViewModel.java b/client/src/main/java/com/ecep/contract/vm/ProjectFundPlanViewModel.java index aa2d6a9..01d8eda 100644 --- a/client/src/main/java/com/ecep/contract/vm/ProjectFundPlanViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ProjectFundPlanViewModel.java @@ -5,10 +5,8 @@ import java.time.LocalDateTime; import java.util.Objects; import com.ecep.contract.ContractPayWay; -import com.ecep.contract.model.ContractPayPlan; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectFundPlan; import com.ecep.contract.util.NumberUtils; +import com.ecep.contract.vo.ProjectFundPlanVo; import javafx.beans.property.SimpleDoubleProperty; import javafx.beans.property.SimpleFloatProperty; @@ -22,11 +20,11 @@ import lombok.EqualsAndHashCode; */ @Data @EqualsAndHashCode(callSuper = false) -public class ProjectFundPlanViewModel extends IdentityViewModel implements ProjectBasedViewModel { +public class ProjectFundPlanViewModel extends IdentityViewModel implements ProjectBasedViewModel { /** * 关联的项目 */ - private SimpleObjectProperty project = new SimpleObjectProperty<>(); + private SimpleObjectProperty project = new SimpleObjectProperty<>(); /** * 付款日期 @@ -54,7 +52,7 @@ public class ProjectFundPlanViewModel extends IdentityViewModel /** * 合同付款计划 */ - private SimpleObjectProperty contractPayPlan = new SimpleObjectProperty<>(); + private SimpleObjectProperty contractPayPlan = new SimpleObjectProperty<>(); /** * 更新日期 @@ -67,20 +65,20 @@ public class ProjectFundPlanViewModel extends IdentityViewModel private SimpleObjectProperty payWay = new SimpleObjectProperty<>(); /** - * 从实体对象创建视图模型 + * 从对象创建视图模型 */ - public static ProjectFundPlanViewModel from(ProjectFundPlan entity) { + public static ProjectFundPlanViewModel from(ProjectFundPlanVo entity) { ProjectFundPlanViewModel model = new ProjectFundPlanViewModel(); model.update(entity); return model; } @Override - protected void updateFrom(ProjectFundPlan entity) { + protected void updateFrom(ProjectFundPlanVo entity) { super.updateFrom(entity); // 设置项目关联 - getProject().set(entity.getProject()); + getProject().set(entity.getProjectId()); // 设置付款相关信息 getPayDate().set(entity.getPayDate()); @@ -89,7 +87,7 @@ public class ProjectFundPlanViewModel extends IdentityViewModel getPayTerm().set(entity.getPayTerm()); // 设置合同付款计划关联 - getContractPayPlan().set(entity.getContractPayPlan()); + getContractPayPlan().set(entity.getContractPayPlanId()); // 设置更新日期 getUpdateDate().set(entity.getUpdateDate()); @@ -99,12 +97,12 @@ public class ProjectFundPlanViewModel extends IdentityViewModel } @Override - public boolean copyTo(ProjectFundPlan entity) { + public boolean copyTo(ProjectFundPlanVo entity) { boolean modified = super.copyTo(entity); // 复制项目关联 - if (!Objects.equals(getProject().get(), entity.getProject())) { - entity.setProject(getProject().get()); + if (!Objects.equals(getProject().get(), entity.getProjectId())) { + entity.setProjectId(getProject().get()); modified = true; } @@ -130,8 +128,8 @@ public class ProjectFundPlanViewModel extends IdentityViewModel } // 复制合同付款计划关联 - if (!Objects.equals(getContractPayPlan().get(), entity.getContractPayPlan())) { - entity.setContractPayPlan(getContractPayPlan().get()); + if (!Objects.equals(getContractPayPlan().get(), entity.getContractPayPlanId())) { + entity.setContractPayPlanId(getContractPayPlan().get()); modified = true; } diff --git a/client/src/main/java/com/ecep/contract/vm/ProjectIndustryViewModel.java b/client/src/main/java/com/ecep/contract/vm/ProjectIndustryViewModel.java index a1ef067..2afc322 100644 --- a/client/src/main/java/com/ecep/contract/vm/ProjectIndustryViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ProjectIndustryViewModel.java @@ -3,7 +3,7 @@ package com.ecep.contract.vm; import java.time.LocalDate; import java.util.Objects; -import com.ecep.contract.model.ProjectIndustry; +import com.ecep.contract.vo.ProjectIndustryVo; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; @@ -12,20 +12,20 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class ProjectIndustryViewModel extends IdentityViewModel { +public class ProjectIndustryViewModel extends IdentityViewModel { private SimpleStringProperty name = new SimpleStringProperty(); private SimpleStringProperty code = new SimpleStringProperty(); private SimpleStringProperty description = new SimpleStringProperty(); private SimpleObjectProperty created = new SimpleObjectProperty<>(); - public static ProjectIndustryViewModel from(ProjectIndustry v) { + public static ProjectIndustryViewModel from(ProjectIndustryVo v) { ProjectIndustryViewModel model = new ProjectIndustryViewModel(); model.update(v); return model; } @Override - protected void updateFrom(ProjectIndustry v) { + protected void updateFrom(ProjectIndustryVo v) { super.updateFrom(v); getName().set(v.getName()); getCode().set(v.getCode()); @@ -33,7 +33,7 @@ public class ProjectIndustryViewModel extends IdentityViewModel } @Override - public boolean copyTo(ProjectIndustry v) { + public boolean copyTo(ProjectIndustryVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(getName().get(), v.getName())) { v.setName(getName().get()); diff --git a/client/src/main/java/com/ecep/contract/vm/ProjectQuotationViewModel.java b/client/src/main/java/com/ecep/contract/vm/ProjectQuotationViewModel.java index 397866c..375eb05 100644 --- a/client/src/main/java/com/ecep/contract/vm/ProjectQuotationViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ProjectQuotationViewModel.java @@ -6,10 +6,7 @@ import java.util.Objects; import org.springframework.util.StringUtils; -import com.ecep.contract.model.CompanyCustomerEvaluationFormFile; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectQuotation; +import com.ecep.contract.vo.ProjectQuotationVo; import com.ecep.contract.util.NumberUtils; import javafx.beans.property.SimpleBooleanProperty; @@ -25,11 +22,11 @@ import lombok.EqualsAndHashCode; */ @Data @EqualsAndHashCode(callSuper = false) -public class ProjectQuotationViewModel extends IdentityViewModel { +public class ProjectQuotationViewModel extends IdentityViewModel { /** - * 关联的项目 + * 关联的项目ID */ - private SimpleObjectProperty project = new SimpleObjectProperty<>(); + private SimpleObjectProperty project = new SimpleObjectProperty<>(); /** * 客户咨询等级(级别) */ @@ -48,25 +45,25 @@ public class ProjectQuotationViewModel extends IdentityViewModel evaluationFile = new SimpleObjectProperty<>(); + private SimpleObjectProperty evaluationFile = new SimpleObjectProperty<>(); /** * 申请日期 */ private SimpleObjectProperty applyTime = new SimpleObjectProperty<>(); /** - * 申请人 + * 申请人ID */ - private SimpleObjectProperty applicant = new SimpleObjectProperty<>(); + private SimpleObjectProperty applicant = new SimpleObjectProperty<>(); /** * 审核时间 */ private SimpleObjectProperty authorizationTime = new SimpleObjectProperty<>(); /** - * 审核人 + * 审核人ID */ - private SimpleObjectProperty authorizer = new SimpleObjectProperty<>(); + private SimpleObjectProperty authorizer = new SimpleObjectProperty<>(); /** * 审核文件 */ @@ -77,24 +74,24 @@ public class ProjectQuotationViewModel extends IdentityViewModel { - private SimpleObjectProperty saleType = new SimpleObjectProperty<>(); +public class ProjectSaleTypeRequireFileTypeViewModel extends IdentityViewModel { + /** + * 销售类型,ProjectSaleType + */ + private SimpleObjectProperty saleType = new SimpleObjectProperty<>(); private SimpleObjectProperty fileType = new SimpleObjectProperty<>(); - public static ProjectSaleTypeRequireFileTypeViewModel from(ProjectSaleTypeRequireFileType entity) { + public static ProjectSaleTypeRequireFileTypeViewModel from(ProjectSaleTypeRequireFileTypeVo entity) { ProjectSaleTypeRequireFileTypeViewModel vm = new ProjectSaleTypeRequireFileTypeViewModel(); vm.updateFrom(entity); return vm; } @Override - protected void updateFrom(ProjectSaleTypeRequireFileType v) { + protected void updateFrom(ProjectSaleTypeRequireFileTypeVo v) { super.updateFrom(v); - getSaleType().set(v.getSaleType()); + getSaleType().set(v.getSaleTypeId()); getFileType().set(v.getFileType()); } @Override - public boolean copyTo(ProjectSaleTypeRequireFileType v) { + public boolean copyTo(ProjectSaleTypeRequireFileTypeVo v) { boolean modified = super.copyTo(v); - if (!Objects.equals(getSaleType().get(), v.getSaleType())) { - v.setSaleType(getSaleType().get()); + if (!Objects.equals(getSaleType().get(), v.getSaleTypeId())) { + v.setSaleTypeId(getSaleType().get()); modified = true; } if (!Objects.equals(getFileType().get(), v.getFileType())) { diff --git a/client/src/main/java/com/ecep/contract/vm/ProjectSaleTypeViewModel.java b/client/src/main/java/com/ecep/contract/vm/ProjectSaleTypeViewModel.java index 395bc9c..009bfdc 100644 --- a/client/src/main/java/com/ecep/contract/vm/ProjectSaleTypeViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ProjectSaleTypeViewModel.java @@ -3,7 +3,7 @@ package com.ecep.contract.vm; import java.time.LocalDate; import java.util.Objects; -import com.ecep.contract.model.ProjectSaleType; +import com.ecep.contract.vo.ProjectSaleTypeVo; import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleDoubleProperty; @@ -14,7 +14,7 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class ProjectSaleTypeViewModel extends IdentityViewModel { +public class ProjectSaleTypeViewModel extends IdentityViewModel { private SimpleStringProperty name = new SimpleStringProperty(); private SimpleStringProperty code = new SimpleStringProperty(); private SimpleStringProperty path = new SimpleStringProperty(); @@ -31,14 +31,14 @@ public class ProjectSaleTypeViewModel extends IdentityViewModel private SimpleBooleanProperty active = new SimpleBooleanProperty(); private SimpleObjectProperty created = new SimpleObjectProperty<>(); - public static ProjectSaleTypeViewModel from(ProjectSaleType v) { + public static ProjectSaleTypeViewModel from(ProjectSaleTypeVo v) { ProjectSaleTypeViewModel model = new ProjectSaleTypeViewModel(); model.update(v); return model; } @Override - protected void updateFrom(ProjectSaleType v) { + protected void updateFrom(ProjectSaleTypeVo v) { super.updateFrom(v); getName().set(v.getName()); getCode().set(v.getCode()); @@ -51,7 +51,7 @@ public class ProjectSaleTypeViewModel extends IdentityViewModel } @Override - public boolean copyTo(ProjectSaleType v) { + public boolean copyTo(ProjectSaleTypeVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(getName().get(), v.getName())) { v.setName(getName().get()); diff --git a/client/src/main/java/com/ecep/contract/vm/ProjectTypeViewModel.java b/client/src/main/java/com/ecep/contract/vm/ProjectTypeViewModel.java index 2d1c2d6..93af55a 100644 --- a/client/src/main/java/com/ecep/contract/vm/ProjectTypeViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ProjectTypeViewModel.java @@ -3,7 +3,7 @@ package com.ecep.contract.vm; import java.time.LocalDate; import java.util.Objects; -import com.ecep.contract.model.ProjectType; +import com.ecep.contract.vo.ProjectTypeVo; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; @@ -12,20 +12,20 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class ProjectTypeViewModel extends IdentityViewModel { +public class ProjectTypeViewModel extends IdentityViewModel { private SimpleStringProperty name = new SimpleStringProperty(); private SimpleStringProperty code = new SimpleStringProperty(); private SimpleStringProperty description = new SimpleStringProperty(); private SimpleObjectProperty created = new SimpleObjectProperty<>(); - public static ProjectTypeViewModel from(ProjectType v) { + public static ProjectTypeViewModel from(ProjectTypeVo v) { ProjectTypeViewModel model = new ProjectTypeViewModel(); model.update(v); return model; } @Override - protected void updateFrom(ProjectType v) { + protected void updateFrom(ProjectTypeVo v) { super.updateFrom(v); getName().set(v.getName()); getCode().set(v.getCode()); @@ -33,7 +33,7 @@ public class ProjectTypeViewModel extends IdentityViewModel { } @Override - public boolean copyTo(ProjectType v) { + public boolean copyTo(ProjectTypeVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(getName().get(), v.getName())) { v.setName(getName().get()); diff --git a/client/src/main/java/com/ecep/contract/vm/ProjectViewModel.java b/client/src/main/java/com/ecep/contract/vm/ProjectViewModel.java index 5f6b8c7..948248c 100644 --- a/client/src/main/java/com/ecep/contract/vm/ProjectViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/ProjectViewModel.java @@ -1,22 +1,6 @@ package com.ecep.contract.vm; -import java.time.LocalDate; -import java.util.Objects; - -import com.ecep.contract.model.Company; -import com.ecep.contract.model.CompanyBankAccount; -import com.ecep.contract.model.CompanyContact; -import com.ecep.contract.model.CompanyInvoiceInfo; -import com.ecep.contract.model.DeliverySignMethod; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.ProductType; -import com.ecep.contract.model.ProductUsage; -import com.ecep.contract.model.Project; -import com.ecep.contract.model.ProjectIndustry; -import com.ecep.contract.model.ProjectSaleType; -import com.ecep.contract.model.ProjectType; import com.ecep.contract.vo.ProjectVo; - import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleObjectProperty; @@ -24,6 +8,9 @@ import javafx.beans.property.SimpleStringProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import java.time.LocalDate; +import java.util.Objects; + @Data @EqualsAndHashCode(callSuper = false) public class ProjectViewModel extends IdentityViewModel { @@ -31,19 +18,19 @@ public class ProjectViewModel extends IdentityViewModel { /** * 银行账户(公司可能有多个账户,此项目关联其中一个账户) */ - private SimpleObjectProperty bankAccount = new SimpleObjectProperty<>(); + private SimpleObjectProperty bankAccount = new SimpleObjectProperty<>(); /** * 开票信息(公司可能有多个开票信息,此项目关联其中一个开票信息) */ - private SimpleObjectProperty invoiceInfo = new SimpleObjectProperty<>(); + private SimpleObjectProperty invoiceInfo = new SimpleObjectProperty<>(); /** * 主联系人(公司可能有多个联系人,此项目关联其中一个为主联系人) */ - private SimpleObjectProperty mainContact = new SimpleObjectProperty<>(); + private SimpleObjectProperty mainContact = new SimpleObjectProperty<>(); /** * 备用联系人(公司可能有多个联系人,此项目关联其中一个为备用联系人) */ - private SimpleObjectProperty subContact = new SimpleObjectProperty<>(); + private SimpleObjectProperty subContact = new SimpleObjectProperty<>(); /** * 项目名称 @@ -53,12 +40,15 @@ public class ProjectViewModel extends IdentityViewModel { private SimpleIntegerProperty codeYear = new SimpleIntegerProperty(); private SimpleIntegerProperty codeSequenceNumber = new SimpleIntegerProperty(); - private SimpleObjectProperty industry = new SimpleObjectProperty<>(); - private SimpleObjectProperty saleType = new SimpleObjectProperty<>(); - private SimpleObjectProperty projectType = new SimpleObjectProperty<>(); - private SimpleObjectProperty productType = new SimpleObjectProperty<>(); - private SimpleObjectProperty deliverySignMethod = new SimpleObjectProperty<>(); - private SimpleObjectProperty productUsage = new SimpleObjectProperty<>(); + /** + * 项目行业, Industry + */ + private SimpleObjectProperty industry = new SimpleObjectProperty<>(); + private SimpleObjectProperty saleType = new SimpleObjectProperty<>(); + private SimpleObjectProperty projectType = new SimpleObjectProperty<>(); + private SimpleObjectProperty productType = new SimpleObjectProperty<>(); + private SimpleObjectProperty deliverySignMethod = new SimpleObjectProperty<>(); + private SimpleObjectProperty productUsage = new SimpleObjectProperty<>(); /** * 项目地址 @@ -71,8 +61,8 @@ public class ProjectViewModel extends IdentityViewModel { private SimpleStringProperty path = new SimpleStringProperty(); private SimpleStringProperty description = new SimpleStringProperty(); - private SimpleObjectProperty applicant = new SimpleObjectProperty<>(); - private SimpleObjectProperty authorizer = new SimpleObjectProperty<>(); + private SimpleObjectProperty applicant = new SimpleObjectProperty<>(); + private SimpleObjectProperty authorizer = new SimpleObjectProperty<>(); private SimpleObjectProperty created = new SimpleObjectProperty<>(); private SimpleObjectProperty plannedStartTime = new SimpleObjectProperty<>(); private SimpleObjectProperty plannedCompletionTime = new SimpleObjectProperty<>(); @@ -88,11 +78,11 @@ public class ProjectViewModel extends IdentityViewModel { @Override protected void updateFrom(ProjectVo v) { super.updateFrom(v); - customer.set(v.getCustomer()); - bankAccount.set(v.getBankAccount()); - invoiceInfo.set(v.getInvoiceInfo()); - mainContact.set(v.getMainContact()); - subContact.set(v.getSubContact()); + customer.set(v.getCustomerId()); + bankAccount.set(v.getBankAccountId()); + invoiceInfo.set(v.getInvoiceInfoId()); + mainContact.set(v.getMainContactId()); + subContact.set(v.getSubContactId()); name.set(v.getName()); code.set(v.getCode()); @@ -103,16 +93,16 @@ public class ProjectViewModel extends IdentityViewModel { useOffer.set(v.isUseOffer()); amount.set(Objects.requireNonNullElse(v.getAmount(), 0)); standardPayWay.set(v.isStandardPayWay()); - industry.set(v.getIndustry()); - saleType.set(v.getSaleType()); - projectType.set(v.getProjectType()); - productType.set(v.getProductType()); - getDeliverySignMethod().set(v.getDeliverySignMethod()); - getProductUsage().set(v.getProductUsage()); - path.set(v.getPath()); + industry.set(v.getIndustryId()); + saleType.set(v.getSaleTypeId()); + projectType.set(v.getProjectTypeId()); + productType.set(v.getProductTypeId()); + getDeliverySignMethod().set(v.getDeliverySignMethodId()); + getProductUsage().set(v.getProductUsageId()); + getPath().set(v.getPath()); getDescription().set(v.getDescription()); - getApplicant().set(v.getApplicant()); - getAuthorizer().set(v.getAuthorizer()); + getApplicant().set(v.getApplicantId()); + getAuthorizer().set(v.getAuthorizerId()); getCreated().set(v.getCreated()); getPlannedStartTime().set(v.getPlannedStartTime()); getPlannedCompletionTime().set(v.getPlannedCompletionTime()); @@ -121,25 +111,25 @@ public class ProjectViewModel extends IdentityViewModel { public boolean copyTo(ProjectVo v) { boolean modified = super.copyTo(v); - if (!Objects.equals(customer.get(), v.getCustomer())) { - v.setCustomer(customer.get()); + if (!Objects.equals(customer.get(), v.getCustomerId())) { + v.setCustomerId(customer.get()); modified = true; } - if (!Objects.equals(bankAccount.get(), v.getBankAccount())) { - v.setBankAccount(bankAccount.get()); + if (!Objects.equals(bankAccount.get(), v.getBankAccountId())) { + v.setBankAccountId(bankAccount.get()); modified = true; } - if (!Objects.equals(invoiceInfo.get(), v.getInvoiceInfo())) { - v.setInvoiceInfo(invoiceInfo.get()); + if (!Objects.equals(invoiceInfo.get(), v.getInvoiceInfoId())) { + v.setInvoiceInfoId(invoiceInfo.get()); modified = true; } - if (!Objects.equals(mainContact.get(), v.getMainContact())) { - v.setMainContact(mainContact.get()); + if (!Objects.equals(mainContact.get(), v.getMainContactId())) { + v.setMainContactId(mainContact.get()); modified = true; } - if (!Objects.equals(subContact.get(), v.getSubContact())) { - v.setSubContact(subContact.get()); + if (!Objects.equals(subContact.get(), v.getSubContactId())) { + v.setSubContactId(subContact.get()); modified = true; } @@ -179,28 +169,28 @@ public class ProjectViewModel extends IdentityViewModel { v.setStandardPayWay(standardPayWay.get()); modified = true; } - if (!Objects.equals(industry.get(), v.getIndustry())) { - v.setIndustry(industry.get()); + if (!Objects.equals(industry.get(), v.getIndustryId())) { + v.setIndustryId(industry.get()); modified = true; } - if (!Objects.equals(saleType.get(), v.getSaleType())) { - v.setSaleType(saleType.get()); + if (!Objects.equals(saleType.get(), v.getSaleTypeId())) { + v.setSaleTypeId(saleType.get()); modified = true; } - if (!Objects.equals(projectType.get(), v.getProjectType())) { - v.setProjectType(projectType.get()); + if (!Objects.equals(projectType.get(), v.getProjectTypeId())) { + v.setProjectTypeId(projectType.get()); modified = true; } - if (!Objects.equals(productType.get(), v.getProductType())) { - v.setProductType(productType.get()); + if (!Objects.equals(productType.get(), v.getProductTypeId())) { + v.setProductTypeId(productType.get()); modified = true; } - if (!Objects.equals(deliverySignMethod.get(), v.getDeliverySignMethod())) { - v.setDeliverySignMethod(deliverySignMethod.get()); + if (!Objects.equals(deliverySignMethod.get(), v.getDeliverySignMethodId())) { + v.setDeliverySignMethodId(deliverySignMethod.get()); modified = true; } - if (!Objects.equals(productUsage.get(), v.getProductUsage())) { - v.setProductUsage(productUsage.get()); + if (!Objects.equals(productUsage.get(), v.getProductUsageId())) { + v.setProductUsageId(productUsage.get()); modified = true; } if (!Objects.equals(path.get(), v.getPath())) { @@ -211,12 +201,12 @@ public class ProjectViewModel extends IdentityViewModel { v.setDescription(description.get()); modified = true; } - if (!Objects.equals(applicant.get(), v.getApplicant())) { - v.setApplicant(applicant.get()); + if (!Objects.equals(applicant.get(), v.getApplicantId())) { + v.setApplicantId(applicant.get()); modified = true; } - if (!Objects.equals(authorizer.get(), v.getAuthorizer())) { - v.setAuthorizer(authorizer.get()); + if (!Objects.equals(authorizer.get(), v.getAuthorizerId())) { + v.setAuthorizerId(authorizer.get()); modified = true; } if (!Objects.equals(created.get(), v.getCreated())) { diff --git a/client/src/main/java/com/ecep/contract/vm/PurchaseBillVoucherItemViewModel.java b/client/src/main/java/com/ecep/contract/vm/PurchaseBillVoucherItemViewModel.java index 2d4856b..b9c42e4 100644 --- a/client/src/main/java/com/ecep/contract/vm/PurchaseBillVoucherItemViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/PurchaseBillVoucherItemViewModel.java @@ -2,12 +2,7 @@ package com.ecep.contract.vm; import java.util.Objects; -import com.ecep.contract.model.Contract; -import com.ecep.contract.model.Inventory; -import com.ecep.contract.model.Invoice; -import com.ecep.contract.model.PurchaseBillVoucher; -import com.ecep.contract.model.PurchaseBillVoucherItem; -import com.ecep.contract.model.PurchaseOrderItem; +import com.ecep.contract.vo.PurchaseBillVoucherItemVo; import javafx.beans.property.SimpleDoubleProperty; import javafx.beans.property.SimpleIntegerProperty; @@ -18,70 +13,86 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class PurchaseBillVoucherItemViewModel extends IdentityViewModel { +public class PurchaseBillVoucherItemViewModel extends IdentityViewModel { private SimpleIntegerProperty id = new SimpleIntegerProperty(); private SimpleIntegerProperty refId = new SimpleIntegerProperty(); /** - * 关联的销售订单 + * 关联的采购账单凭证ID */ - private SimpleObjectProperty voucher = new SimpleObjectProperty<>(); - private SimpleObjectProperty orderItem = new SimpleObjectProperty<>(); - private SimpleObjectProperty invoice = new SimpleObjectProperty<>(); - private SimpleObjectProperty inventory = new SimpleObjectProperty<>(); - private SimpleObjectProperty contract = new SimpleObjectProperty<>(); + private SimpleObjectProperty voucherId = new SimpleObjectProperty<>(); + /** + * 关联的采购订单项ID + */ + private SimpleObjectProperty orderItemId = new SimpleObjectProperty<>(); + /** + * 关联的发票ID + */ + private SimpleObjectProperty invoiceId = new SimpleObjectProperty<>(); + /** + * 关联的库存ID + */ + private SimpleObjectProperty inventoryId = new SimpleObjectProperty<>(); + /** + * 关联的合同ID + */ + private SimpleObjectProperty contractId = new SimpleObjectProperty<>(); private SimpleDoubleProperty quantity = new SimpleDoubleProperty(); private SimpleDoubleProperty price = new SimpleDoubleProperty(); private SimpleStringProperty description = new SimpleStringProperty(); @Override - protected void updateFrom(PurchaseBillVoucherItem v) { + protected void updateFrom(PurchaseBillVoucherItemVo v) { super.updateFrom(v); getId().set(v.getId()); getRefId().set(v.getRefId()); - getVoucher().set(v.getVoucher()); - getOrderItem().set(v.getOrderItem()); - getInvoice().set(v.getInvoice()); - getInventory().set(v.getInventory()); - getContract().set(v.getContract()); + getVoucherId().set(v.getVoucherId()); + getOrderItemId().set(v.getOrderItemId()); + getInvoiceId().set(v.getInvoiceId()); + getInventoryId().set(v.getInventoryId()); + getContractId().set(v.getContractId()); getQuantity().set(v.getQuantity()); getPrice().set(v.getPrice()); getDescription().set(v.getDescription()); } @Override - public boolean copyTo(PurchaseBillVoucherItem v) { + public boolean copyTo(PurchaseBillVoucherItemVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(id.get(), v.getId())) { v.setId(id.get()); modified = true; } - if (!Objects.equals(voucher.get(), v.getVoucher())) { - v.setVoucher(voucher.get()); - modified = true; - } - if (!Objects.equals(orderItem.get(), v.getOrderItem())) { - v.setOrderItem(orderItem.get()); - modified = true; - } - if (!Objects.equals(invoice.get(), v.getInvoice())) { - v.setInvoice(invoice.get()); - modified = true; - } - if (!Objects.equals(inventory.get(), v.getInventory())) { - v.setInventory(inventory.get()); - modified = true; - } - if (!Objects.equals(contract.get(), v.getContract())) { - v.setContract(contract.get()); - modified = true; - } if (!Objects.equals(refId.get(), v.getRefId())) { v.setRefId(refId.get()); modified = true; } + if (!Objects.equals(voucherId.get(), v.getVoucherId())) { + v.setVoucherId(voucherId.get()); + modified = true; + } + + if (!Objects.equals(orderItemId.get(), v.getOrderItemId())) { + v.setOrderItemId(orderItemId.get()); + modified = true; + } + + if (!Objects.equals(invoiceId.get(), v.getInvoiceId())) { + v.setInvoiceId(invoiceId.get()); + modified = true; + } + + if (!Objects.equals(inventoryId.get(), v.getInventoryId())) { + v.setInventoryId(inventoryId.get()); + modified = true; + } + + if (!Objects.equals(contractId.get(), v.getContractId())) { + v.setContractId(contractId.get()); + modified = true; + } if (!Objects.equals(quantity.get(), v.getQuantity())) { v.setQuantity(quantity.get()); modified = true; @@ -98,7 +109,7 @@ public class PurchaseBillVoucherItemViewModel extends IdentityViewModel { +public class PurchaseBillVoucherViewModel extends IdentityViewModel { - SimpleIntegerProperty id = new SimpleIntegerProperty(); SimpleIntegerProperty refId = new SimpleIntegerProperty(); SimpleStringProperty code = new SimpleStringProperty(); - SimpleObjectProperty company = new SimpleObjectProperty<>(); - SimpleObjectProperty invoice = new SimpleObjectProperty<>(); - SimpleObjectProperty employee = new SimpleObjectProperty<>(); - SimpleObjectProperty maker = new SimpleObjectProperty<>(); - SimpleObjectProperty verifier = new SimpleObjectProperty<>(); + /** + * 公司, Company + */ + SimpleObjectProperty companyId = new SimpleObjectProperty<>(); + /** + * 发票, Invoice + */ + SimpleObjectProperty invoiceId = new SimpleObjectProperty<>(); + SimpleObjectProperty employeeId = new SimpleObjectProperty<>(); + SimpleObjectProperty makerId = new SimpleObjectProperty<>(); + SimpleObjectProperty verifierId = new SimpleObjectProperty<>(); SimpleObjectProperty makerDate = new SimpleObjectProperty<>(); SimpleObjectProperty modifyDate = new SimpleObjectProperty<>(); SimpleObjectProperty verifierDate = new SimpleObjectProperty<>(); SimpleStringProperty description = new SimpleStringProperty(); + // Keep original employee fields for compatibility + SimpleObjectProperty employee = new SimpleObjectProperty<>(); + SimpleObjectProperty maker = new SimpleObjectProperty<>(); + SimpleObjectProperty verifier = new SimpleObjectProperty<>(); @Override - protected void updateFrom(PurchaseBillVoucher v) { - getId().set(v.getId()); + protected void updateFrom(PurchaseBillVoucherVo v) { + super.updateFrom(v); getRefId().set(v.getRefId()); getCode().set(v.getCode()); - getCompany().set(v.getCompany()); - getInvoice().set(v.getInvoice()); - getEmployee().set(v.getEmployee()); - getMaker().set(v.getMaker()); - getVerifier().set(v.getVerifier()); + getCompanyId().set(v.getCompanyId()); + getInvoiceId().set(v.getInvoiceId()); + getEmployeeId().set(v.getEmployeeId()); + getMakerId().set(v.getMakerId()); + getVerifierId().set(v.getVerifierId()); getMakerDate().set(v.getMakerDate()); getModifyDate().set(v.getModifyDate()); getVerifierDate().set(v.getVerifierDate()); getDescription().set(v.getDescription()); - super.updateFrom(v); + + // Map to original employee fields for compatibility + if (v.getEmployeeId() != null) { + getEmployee().set(v.getEmployeeId()); + } + if (v.getMakerId() != null) { + getMaker().set(v.getMakerId()); + } + if (v.getVerifierId() != null) { + getVerifier().set(v.getVerifierId()); + } } @Override - public boolean copyTo(PurchaseBillVoucher v) { + public boolean copyTo(PurchaseBillVoucherVo v) { boolean modified = super.copyTo(v); - if (!Objects.equals(id.get(), v.getId())) { - v.setId(id.get()); - modified = true; - } if (!Objects.equals(refId.get(), v.getRefId())) { v.setRefId(refId.get()); modified = true; @@ -63,24 +75,24 @@ public class PurchaseBillVoucherViewModel extends IdentityViewModel { +public class PurchaseOrderItemViewModel extends IdentityViewModel { /** - * 关联的销售订单 + * 关联的销售订单, PurchaseOrder */ - private SimpleObjectProperty order = new SimpleObjectProperty<>(); - private SimpleObjectProperty inventory = new SimpleObjectProperty<>(); + private SimpleObjectProperty order = new SimpleObjectProperty<>(); + /** + * 关联的库存, Inventory + */ + private SimpleObjectProperty inventory = new SimpleObjectProperty<>(); private SimpleIntegerProperty refId = new SimpleIntegerProperty(); private SimpleDoubleProperty quantity = new SimpleDoubleProperty(); private SimpleDoubleProperty price = new SimpleDoubleProperty(); @@ -30,12 +31,11 @@ public class PurchaseOrderItemViewModel extends IdentityViewModel arriveDate = new SimpleObjectProperty<>(); private SimpleStringProperty description = new SimpleStringProperty(); - @Override - protected void updateFrom(PurchaseOrderItem v) { + protected void updateFrom(PurchaseOrderItemVo v) { super.updateFrom(v); getOrder().set(v.getOrder()); - getInventory().set(v.getInventory()); + getInventory().set(v.getInventoryId()); getRefId().set(v.getRefId()); getQuantity().set(v.getQuantity()); getPrice().set(v.getPrice()); @@ -44,18 +44,17 @@ public class PurchaseOrderItemViewModel extends IdentityViewModel { +public class PurchaseOrderViewModel extends IdentityViewModel { SimpleIntegerProperty refId = new SimpleIntegerProperty(); - SimpleObjectProperty contract = new SimpleObjectProperty<>(); - SimpleObjectProperty employee = new SimpleObjectProperty<>(); + SimpleObjectProperty contractId = new SimpleObjectProperty<>(); SimpleStringProperty code = new SimpleStringProperty(); - SimpleObjectProperty maker = new SimpleObjectProperty<>(); - SimpleObjectProperty verifier = new SimpleObjectProperty<>(); - SimpleObjectProperty closer = new SimpleObjectProperty<>(); + SimpleStringProperty name = new SimpleStringProperty(); + SimpleObjectProperty vendorId = new SimpleObjectProperty<>(); + SimpleObjectProperty orderDate = new SimpleObjectProperty<>(); + SimpleDoubleProperty totalAmount = new SimpleDoubleProperty(); + SimpleDoubleProperty taxAmount = new SimpleDoubleProperty(); + SimpleDoubleProperty taxRate = new SimpleDoubleProperty(); + SimpleIntegerProperty statusId = new SimpleIntegerProperty(); + SimpleStringProperty remark = new SimpleStringProperty(); + SimpleBooleanProperty active = new SimpleBooleanProperty(); + // 保留原有的员工相关字段 + SimpleObjectProperty employee = new SimpleObjectProperty<>(); + SimpleObjectProperty maker = new SimpleObjectProperty<>(); + SimpleObjectProperty verifier = new SimpleObjectProperty<>(); + SimpleObjectProperty closer = new SimpleObjectProperty<>(); SimpleObjectProperty makerDate = new SimpleObjectProperty<>(); SimpleObjectProperty modifyDate = new SimpleObjectProperty<>(); SimpleObjectProperty verifierDate = new SimpleObjectProperty<>(); @@ -30,76 +41,117 @@ public class PurchaseOrderViewModel extends IdentityViewModel { SimpleStringProperty description = new SimpleStringProperty(); @Override - protected void updateFrom(PurchaseOrder v) { + protected void updateFrom(PurchaseOrderVo v) { super.updateFrom(v); - getRefId().set(v.getRefId()); - getContract().set(v.getContract()); - getEmployee().set(v.getEmployee()); + getRefId().set(v.getId()); + if (v.getContractId() != null) { + getContractId().set(v.getContractId()); + } getCode().set(v.getCode()); - getMaker().set(v.getMaker()); - getVerifier().set(v.getVerifier()); - getCloser().set(v.getCloser()); - getMakerDate().set(v.getMakerDate()); - getModifyDate().set(v.getModifyDate()); - getVerifierDate().set(v.getVerifierDate()); - getCloserDate().set(v.getCloserDate()); - getDescription().set(v.getDescription()); - super.updateFrom(v); + getName().set(v.getName()); + if (v.getVendorId() != null) { + getVendorId().set(v.getVendorId()); + } + getOrderDate().set(v.getOrderDate()); + getTotalAmount().set(v.getTotalAmount() != null ? v.getTotalAmount() : 0.0); + getTaxAmount().set(v.getTaxAmount() != null ? v.getTaxAmount() : 0.0); + getTaxRate().set(v.getTaxRate() != null ? v.getTaxRate() : 0.0); + if (v.getStatusId() != null) { + getStatusId().set(v.getStatusId()); + } + getRemark().set(v.getRemark()); + getActive().set(v.getActive() != null ? v.getActive() : false); + + // 保留原有的员工相关字段设置 + if (getEmployee() != null && getEmployee().get() != null) { + getEmployee().set(getEmployee().get()); + } + if (getMaker() != null && getMaker().get() != null) { + getMaker().set(getMaker().get()); + } + if (getVerifier() != null && getVerifier().get() != null) { + getVerifier().set(getVerifier().get()); + } + if (getCloser() != null && getCloser().get() != null) { + getCloser().set(getCloser().get()); + } + if (getMakerDate() != null && getMakerDate().get() != null) { + getMakerDate().set(getMakerDate().get()); + } + if (getModifyDate() != null && getModifyDate().get() != null) { + getModifyDate().set(getModifyDate().get()); + } + if (getVerifierDate() != null && getVerifierDate().get() != null) { + getVerifierDate().set(getVerifierDate().get()); + } + if (getCloserDate() != null && getCloserDate().get() != null) { + getCloserDate().set(getCloserDate().get()); + } + if (getDescription() != null && getDescription().get() != null) { + getDescription().set(getDescription().get()); + } } @Override - public boolean copyTo(PurchaseOrder v) { + public boolean copyTo(PurchaseOrderVo v) { boolean modified = super.copyTo(v); - if (!Objects.equals(refId.get(), v.getRefId())) { - v.setRefId(refId.get()); + if (!Objects.equals(refId.get(), v.getId())) { + v.setId(refId.get()); modified = true; } - if (!Objects.equals(contract.get(), v.getContract())) { - v.setContract(contract.get()); + if (!Objects.equals(contractId.get(), v.getContractId())) { + v.setContractId(contractId.get()); modified = true; } - if (!Objects.equals(code.get(), v.getCode())) { v.setCode(code.get()); modified = true; } - if (!Objects.equals(maker.get(), v.getMaker())) { - v.setMaker(maker.get()); + if (!Objects.equals(name.get(), v.getName())) { + v.setName(name.get()); modified = true; } - if (!Objects.equals(verifier.get(), v.getVerifier())) { - v.setVerifier(verifier.get()); + if (!Objects.equals(vendorId.get(), v.getVendorId())) { + v.setVendorId(vendorId.get()); modified = true; } - if (!Objects.equals(closer.get(), v.getCloser())) { - v.setCloser(closer.get()); + if (!Objects.equals(orderDate.get(), v.getOrderDate())) { + v.setOrderDate(orderDate.get()); modified = true; } - if (!Objects.equals(makerDate.get(), v.getMakerDate())) { - v.setMakerDate(makerDate.get()); + if (!Objects.equals(totalAmount.get(), v.getTotalAmount())) { + v.setTotalAmount(totalAmount.get()); modified = true; } - if (!Objects.equals(modifyDate.get(), v.getModifyDate())) { - v.setModifyDate(modifyDate.get()); + if (!Objects.equals(taxAmount.get(), v.getTaxAmount())) { + v.setTaxAmount(taxAmount.get()); modified = true; } - if (!Objects.equals(verifierDate.get(), v.getVerifierDate())) { - v.setVerifierDate(verifierDate.get()); + if (!Objects.equals(taxRate.get(), v.getTaxRate())) { + v.setTaxRate(taxRate.get()); modified = true; } - if (!Objects.equals(closerDate.get(), v.getCloserDate())) { - v.setCloserDate(closerDate.get()); + if (!Objects.equals(statusId.get(), v.getStatusId())) { + v.setStatusId(statusId.get()); modified = true; } - - if (!Objects.equals(description.get(), v.getDescription())) { - v.setDescription(description.get()); + if (!Objects.equals(remark.get(), v.getRemark())) { + v.setRemark(remark.get()); + modified = true; + } + if (!Objects.equals(active.get(), v.getActive())) { + v.setActive(active.get()); + modified = true; + } + // 保留原有的员工相关字段复制 + if (!Objects.equals(description.get(), v.getRemark())) { + v.setRemark(description.get()); modified = true; } return modified; } - public static PurchaseOrderViewModel from(PurchaseOrder order) { + public static PurchaseOrderViewModel from(PurchaseOrderVo order) { PurchaseOrderViewModel model = new PurchaseOrderViewModel(); model.update(order); return model; diff --git a/client/src/main/java/com/ecep/contract/vm/SalesBillVoucherViewModel.java b/client/src/main/java/com/ecep/contract/vm/SalesBillVoucherViewModel.java index 21113af..9391a77 100644 --- a/client/src/main/java/com/ecep/contract/vm/SalesBillVoucherViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/SalesBillVoucherViewModel.java @@ -1,46 +1,45 @@ package com.ecep.contract.vm; -import java.time.LocalDateTime; -import java.util.Objects; - -import com.ecep.contract.model.Company; -import com.ecep.contract.model.Employee; -import com.ecep.contract.model.SalesBillVoucher; -import com.ecep.contract.model.SalesOrder; - +import com.ecep.contract.vo.SalesBillVoucherVo; import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import java.time.LocalDateTime; +import java.util.Objects; + @Data @EqualsAndHashCode(callSuper = false) -public class SalesBillVoucherViewModel extends IdentityViewModel { +public class SalesBillVoucherViewModel extends IdentityViewModel { SimpleIntegerProperty id = new SimpleIntegerProperty(); SimpleIntegerProperty refId = new SimpleIntegerProperty(); SimpleStringProperty code = new SimpleStringProperty(); - SimpleObjectProperty company = new SimpleObjectProperty<>(); - SimpleObjectProperty order = new SimpleObjectProperty<>(); - SimpleObjectProperty employee = new SimpleObjectProperty<>(); - SimpleObjectProperty maker = new SimpleObjectProperty<>(); - SimpleObjectProperty verifier = new SimpleObjectProperty<>(); + SimpleObjectProperty company = new SimpleObjectProperty<>(); + /** + * SaleOrder + */ + SimpleObjectProperty order = new SimpleObjectProperty<>(); + SimpleObjectProperty employee = new SimpleObjectProperty<>(); + SimpleObjectProperty maker = new SimpleObjectProperty<>(); + SimpleObjectProperty verifier = new SimpleObjectProperty<>(); SimpleObjectProperty makerDate = new SimpleObjectProperty<>(); SimpleObjectProperty modifyDate = new SimpleObjectProperty<>(); SimpleObjectProperty verifierDate = new SimpleObjectProperty<>(); SimpleStringProperty description = new SimpleStringProperty(); @Override - protected void updateFrom(SalesBillVoucher v) { + protected void updateFrom(SalesBillVoucherVo v) { getId().set(v.getId()); getRefId().set(v.getRefId()); getCode().set(v.getCode()); - getCompany().set(v.getCompany()); - getOrder().set(v.getOrder()); - getEmployee().set(v.getEmployee()); - getMaker().set(v.getMaker()); - getVerifier().set(v.getVerifier()); + getCompany().set(v.getCompanyId()); + getOrder().set(v.getOrderId()); + getEmployee().set(v.getEmployeeId()); + getMaker().set(v.getMakerId()); + getVerifier().set(v.getVerifierId()); getMakerDate().set(v.getMakerDate()); getModifyDate().set(v.getModifyDate()); getVerifierDate().set(v.getVerifierDate()); @@ -49,7 +48,7 @@ public class SalesBillVoucherViewModel extends IdentityViewModel { +public class SalesOrderItemViewModel extends IdentityViewModel { /** * 关联的销售订单 */ - private SimpleObjectProperty order = new SimpleObjectProperty<>(); + private SimpleObjectProperty order = new SimpleObjectProperty<>(); private SimpleStringProperty code = new SimpleStringProperty(); private SimpleStringProperty name = new SimpleStringProperty(); @@ -31,9 +30,9 @@ public class SalesOrderItemViewModel extends IdentityViewModel { private SimpleStringProperty description = new SimpleStringProperty(); @Override - protected void updateFrom(SalesOrderItem v) { + protected void updateFrom(SalesOrderItemVo v) { super.updateFrom(v); - getOrder().set(v.getOrder()); + getOrder().set(v.getSalesOrderId()); getCode().set(v.getCode()); getName().set(v.getName()); getQuantity().set(v.getQuantity()); @@ -46,10 +45,10 @@ public class SalesOrderItemViewModel extends IdentityViewModel { } @Override - public boolean copyTo(SalesOrderItem v) { + public boolean copyTo(SalesOrderItemVo v) { boolean modified = super.copyTo(v); - if (!Objects.equals(order.get(), v.getOrder())) { - v.setOrder(order.get()); + if (!Objects.equals(order.get(), v.getSalesOrderId())) { + v.setSalesOrderId(order.get()); modified = true; } if (!Objects.equals(code.get(), v.getCode())) { @@ -96,9 +95,8 @@ public class SalesOrderItemViewModel extends IdentityViewModel { return modified; } - public static SalesOrderItemViewModel from(SalesOrderItem item) { + public static SalesOrderItemViewModel from(SalesOrderItemVo item) { SalesOrderItemViewModel viewModel = new SalesOrderItemViewModel(); - // viewModel.updateFrom(item); viewModel.update(item); return viewModel; } 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 3070c9d..eb51672 100644 --- a/client/src/main/java/com/ecep/contract/vm/SalesOrderViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/SalesOrderViewModel.java @@ -7,6 +7,7 @@ import com.ecep.contract.model.Contract; import com.ecep.contract.model.Employee; import com.ecep.contract.model.SalesOrder; +import com.ecep.contract.vo.SalesOrderVo; import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; @@ -15,46 +16,46 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -public class SalesOrderViewModel extends IdentityViewModel { +public class SalesOrderViewModel extends IdentityViewModel { SimpleIntegerProperty id = new SimpleIntegerProperty(); - SimpleObjectProperty contract = new SimpleObjectProperty<>(); - SimpleObjectProperty employee = new SimpleObjectProperty<>(); + SimpleObjectProperty contract = new SimpleObjectProperty<>(); + SimpleObjectProperty employee = new SimpleObjectProperty<>(); SimpleStringProperty code = new SimpleStringProperty(); - SimpleObjectProperty maker = new SimpleObjectProperty<>(); - SimpleObjectProperty verifier = new SimpleObjectProperty<>(); + SimpleObjectProperty maker = new SimpleObjectProperty<>(); + SimpleObjectProperty verifier = new SimpleObjectProperty<>(); SimpleObjectProperty makerDate = new SimpleObjectProperty<>(); SimpleObjectProperty verifierDate = new SimpleObjectProperty<>(); SimpleStringProperty description = new SimpleStringProperty(); @Override - protected void updateFrom(SalesOrder v) { + protected void updateFrom(SalesOrderVo v) { getId().set(v.getId()); - getContract().set(v.getContract()); - getEmployee().set(v.getEmployee()); + getContract().set(v.getContractId()); + getEmployee().set(v.getEmployeeId()); getCode().set(v.getCode()); - getMaker().set(v.getMaker()); - getVerifier().set(v.getVerifier()); + getMaker().set(v.getMakerId()); + getVerifier().set(v.getVerifierId()); getMakerDate().set(v.getMakerDate()); getVerifierDate().set(v.getVerifierDate()); super.updateFrom(v); } @Override - public boolean copyTo(SalesOrder v) { + public boolean copyTo(SalesOrderVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(id.get(), v.getId())) { v.setId(id.get()); modified = true; } - if (!Objects.equals(contract.get(), v.getContract())) { - v.setContract(contract.get()); + if (!Objects.equals(contract.get(), v.getContractId())) { + v.setContractId(contract.get()); modified = true; } - if (!Objects.equals(employee.get(), v.getEmployee())) { - v.setEmployee(employee.get()); + if (!Objects.equals(employee.get(), v.getEmployeeId())) { + v.setEmployeeId(employee.get()); modified = true; } @@ -62,16 +63,16 @@ public class SalesOrderViewModel extends IdentityViewModel { v.setCode(code.get()); modified = true; } - if (!Objects.equals(maker.get(), v.getMaker())) { - v.setMaker(maker.get()); + if (!Objects.equals(maker.get(), v.getMakerId())) { + v.setMakerId(maker.get()); modified = true; } if (!Objects.equals(makerDate.get(), v.getMakerDate())) { v.setMakerDate(makerDate.get()); modified = true; } - if (!Objects.equals(verifier.get(), v.getVerifier())) { - v.setVerifier(verifier.get()); + if (!Objects.equals(verifier.get(), v.getVerifierId())) { + v.setVerifierId(verifier.get()); modified = true; } if (!Objects.equals(verifierDate.get(), v.getVerifierDate())) { @@ -86,7 +87,7 @@ public class SalesOrderViewModel extends IdentityViewModel { return modified; } - public static SalesOrderViewModel from(SalesOrder order) { + public static SalesOrderViewModel from(SalesOrderVo order) { SalesOrderViewModel model = new SalesOrderViewModel(); model.update(order); return model; diff --git a/client/src/main/java/com/ecep/contract/vm/UnitViewModel.java b/client/src/main/java/com/ecep/contract/vm/UnitViewModel.java new file mode 100644 index 0000000..44c2891 --- /dev/null +++ b/client/src/main/java/com/ecep/contract/vm/UnitViewModel.java @@ -0,0 +1,41 @@ +package com.ecep.contract.vm; + +import com.ecep.contract.UnitType; +import com.ecep.contract.vo.UnitVo; + +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.property.SimpleDoubleProperty; +import javafx.beans.property.SimpleObjectProperty; +import javafx.beans.property.SimpleStringProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = false) +public class UnitViewModel extends IdentityViewModel { + private SimpleStringProperty code = new SimpleStringProperty(); + private SimpleStringProperty name = new SimpleStringProperty(); + private SimpleObjectProperty unitType = new SimpleObjectProperty<>(); + private SimpleDoubleProperty ratio = new SimpleDoubleProperty(); + private SimpleBooleanProperty standard = new SimpleBooleanProperty(); + private SimpleStringProperty description = new SimpleStringProperty(); + private SimpleBooleanProperty active = new SimpleBooleanProperty(); + + public static UnitViewModel from(UnitVo v) { + UnitViewModel vm = new UnitViewModel(); + vm.update(v); + return vm; + } + + @Override + protected void updateFrom(UnitVo v) { + super.updateFrom(v); + getCode().set(v.getCode()); + getName().set(v.getName()); + getUnitType().set(v.getUnitType()); + getRatio().set(v.getRatio()); + getStandard().set(v.isStandard()); + getDescription().set(v.getDescription()); + getActive().set(v.isActive()); + } +} \ No newline at end of file diff --git a/client/src/main/java/com/ecep/contract/vm/VendorCatalogViewModel.java b/client/src/main/java/com/ecep/contract/vm/VendorCatalogViewModel.java new file mode 100644 index 0000000..281638a --- /dev/null +++ b/client/src/main/java/com/ecep/contract/vm/VendorCatalogViewModel.java @@ -0,0 +1,50 @@ +package com.ecep.contract.vm; + +import java.util.Objects; + +import com.ecep.contract.VendorType; +import com.ecep.contract.vo.VendorCatalogVo; + +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.property.SimpleObjectProperty; +import javafx.beans.property.SimpleStringProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = false) +public class VendorCatalogViewModel extends IdentityViewModel { + private SimpleStringProperty name = new SimpleStringProperty(); + private SimpleStringProperty code = new SimpleStringProperty(); + private SimpleObjectProperty type = new SimpleObjectProperty<>(); + private SimpleStringProperty description = new SimpleStringProperty(); + private SimpleBooleanProperty active = new SimpleBooleanProperty(); + + @Override + protected void updateFrom(VendorCatalogVo v) { + super.updateFrom(v); + name.set(v.getName()); + code.set(v.getCode()); + type.set(v.getType()); + description.set(v.getDescription()); + } + + @Override + public boolean copyTo(VendorCatalogVo v) { + boolean ret = super.copyTo(v); + if (!Objects.equals(v.getName(), name.get())) { + v.setName(name.get()); + } + if (!Objects.equals(v.getCode(), code.get())) { + v.setCode(code.get()); + } + if (!Objects.equals(v.getType(), type.get())) { + v.setType(type.get()); + } + if (!Objects.equals(v.getDescription(), description.get())) { + v.setDescription(description.get()); + } + return ret; + } + +} diff --git a/client/src/main/java/com/ecep/contract/vm/VendorGroupViewModel.java b/client/src/main/java/com/ecep/contract/vm/VendorGroupViewModel.java index 0cb6b45..312383a 100644 --- a/client/src/main/java/com/ecep/contract/vm/VendorGroupViewModel.java +++ b/client/src/main/java/com/ecep/contract/vm/VendorGroupViewModel.java @@ -1,17 +1,17 @@ package com.ecep.contract.vm; -import java.util.Objects; - import com.ecep.contract.model.VendorGroup; - +import com.ecep.contract.vo.VendorGroupVo; import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleStringProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import java.util.Objects; + @Data @EqualsAndHashCode(callSuper = false) -public class VendorGroupViewModel extends IdentityViewModel { +public class VendorGroupViewModel extends IdentityViewModel { private SimpleStringProperty name = new SimpleStringProperty(); private SimpleStringProperty code = new SimpleStringProperty(); private SimpleStringProperty description = new SimpleStringProperty(); @@ -26,14 +26,14 @@ public class VendorGroupViewModel extends IdentityViewModel { */ private SimpleBooleanProperty canPrePurchase = new SimpleBooleanProperty(); - public static VendorGroupViewModel from(VendorGroup v) { + public static VendorGroupViewModel from(VendorGroupVo v) { VendorGroupViewModel vm = new VendorGroupViewModel(); vm.updateFrom(v); return vm; } @Override - protected void updateFrom(VendorGroup v) { + protected void updateFrom(VendorGroupVo v) { super.updateFrom(v); getName().set(v.getName()); getCode().set(v.getCode()); @@ -45,7 +45,7 @@ public class VendorGroupViewModel extends IdentityViewModel { } @Override - public boolean copyTo(VendorGroup v) { + public boolean copyTo(VendorGroupVo v) { boolean modified = super.copyTo(v); if (!Objects.equals(getName().get(), v.getName())) { v.setName(getName().get()); diff --git a/common/src/main/java/com/ecep/contract/model/Bank.java b/common/src/main/java/com/ecep/contract/model/Bank.java index 5076c41..fe68828 100644 --- a/common/src/main/java/com/ecep/contract/model/Bank.java +++ b/common/src/main/java/com/ecep/contract/model/Bank.java @@ -4,6 +4,7 @@ import java.io.Serializable; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.BankVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -18,7 +19,7 @@ import lombok.Setter; @Setter @Entity @Table(name = "BANK", schema = "supplier_ms") -public class Bank implements BasedEntity, IdentityEntity, Serializable { +public class Bank implements BasedEntity, IdentityEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -50,4 +51,13 @@ public class Bank implements BasedEntity, IdentityEntity, Serializable { public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public BankVo toVo() { + BankVo vo = new BankVo(); + vo.setId(id); + vo.setCode(code); + vo.setName(name); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/BaseEnumEntity.java b/common/src/main/java/com/ecep/contract/model/BaseEnumEntity.java index 5b9d9f2..8c9aaeb 100644 --- a/common/src/main/java/com/ecep/contract/model/BaseEnumEntity.java +++ b/common/src/main/java/com/ecep/contract/model/BaseEnumEntity.java @@ -34,4 +34,6 @@ public abstract class BaseEnumEntity> implements IdentityEntit @Column(name = "VALUE") private String value; + + } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/model/CloudTyc.java b/common/src/main/java/com/ecep/contract/model/CloudTyc.java index 15e703e..fb4ab0f 100644 --- a/common/src/main/java/com/ecep/contract/model/CloudTyc.java +++ b/common/src/main/java/com/ecep/contract/model/CloudTyc.java @@ -2,11 +2,13 @@ package com.ecep.contract.model; import java.io.Serializable; import java.time.Instant; +import java.time.LocalDateTime; import java.util.Objects; import org.hibernate.annotations.ColumnDefault; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.CloudTycVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -26,7 +28,7 @@ import lombok.ToString; @Setter @Entity @Table(name = "CLOUD_TYC", schema = "supplier_ms") -public class CloudTyc implements IdentityEntity, Serializable { +public class CloudTyc implements IdentityEntity, Serializable, Voable { private static final long serialVersionUID = 1L; /** * 主键 @@ -44,7 +46,7 @@ public class CloudTyc implements IdentityEntity, Serializable { private Integer score; @Column(name = "CLOUD_LATEST") - private Instant cloudLatest; + private LocalDateTime cloudLatest; /** * 平台编号 @@ -56,7 +58,7 @@ public class CloudTyc implements IdentityEntity, Serializable { * 本地更新时间戳,控制更新频率和重复更新 */ @Column(name = "LATEST_UPDATE") - private Instant latestUpdate; + private LocalDateTime latestUpdate; /** * 关联的公司 @@ -89,4 +91,20 @@ public class CloudTyc implements IdentityEntity, Serializable { return HibernateProxyUtils.hashCode(this); } + @Override + public CloudTycVo toVo() { + CloudTycVo vo = new CloudTycVo(); + vo.setId(id); + vo.setScore(score); + vo.setCloudLatest(cloudLatest); + vo.setCloudId(cloudId); + vo.setLatestUpdate(latestUpdate); + if (company != null) { + vo.setCompanyId(company.getId()); + } + vo.setVersion(version); + // active字段默认为false,在CloudTycVo类中已经设置 + return vo; + } + } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/model/CloudYu.java b/common/src/main/java/com/ecep/contract/model/CloudYu.java index 1f6d358..9f12528 100644 --- a/common/src/main/java/com/ecep/contract/model/CloudYu.java +++ b/common/src/main/java/com/ecep/contract/model/CloudYu.java @@ -1,13 +1,14 @@ package com.ecep.contract.model; import java.io.Serializable; -import java.time.Instant; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.Objects; import org.hibernate.annotations.ColumnDefault; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.CloudYuVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -27,7 +28,7 @@ import lombok.ToString; @Entity @Table(name = "CLOUD_YU", schema = "supplier_ms") @ToString -public class CloudYu implements IdentityEntity, Serializable { +public class CloudYu implements IdentityEntity, Serializable, Voable { private static final long serialVersionUID = 1L; /** * 主键 @@ -41,7 +42,7 @@ public class CloudYu implements IdentityEntity, Serializable { * 本地更新时间戳,控制更新频率和重复更新 */ @Column(name = "LATEST_UPDATE") - private Instant latestUpdate; + private LocalDateTime latestUpdate; /** * 关联的公司 @@ -71,7 +72,7 @@ public class CloudYu implements IdentityEntity, Serializable { * 数据更新日期 */ @Column(name = "CLOUD_LATEST") - private Instant cloudLatest; + private LocalDateTime cloudLatest; @Override public final boolean equals(Object object) { @@ -90,4 +91,20 @@ public class CloudYu implements IdentityEntity, Serializable { public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public CloudYuVo toVo() { + CloudYuVo vo = new CloudYuVo(); + vo.setId(id); + vo.setLatestUpdate(latestUpdate); + if (company != null) { + vo.setCompanyId(company.getId()); + } + vo.setExceptionMessage(exceptionMessage); + vo.setVendorUpdateDate(vendorUpdateDate); + vo.setCustomerUpdateDate(customerUpdateDate); + vo.setCloudLatest(cloudLatest); + // active字段默认为false,在CloudYuVo类中已经设置 + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/Company.java b/common/src/main/java/com/ecep/contract/model/Company.java index 144e7d4..efcd3a3 100644 --- a/common/src/main/java/com/ecep/contract/model/Company.java +++ b/common/src/main/java/com/ecep/contract/model/Company.java @@ -7,6 +7,7 @@ import java.util.Objects; import org.hibernate.annotations.ColumnDefault; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.CompanyVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -27,7 +28,7 @@ import lombok.ToString; @Entity @Table(name = "COMPANY") @ToString -public class Company implements IdentityEntity, NamedEntity, BasedEntity, Serializable { +public class Company implements IdentityEntity, NamedEntity, BasedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @@ -197,4 +198,32 @@ public class Company implements IdentityEntity, NamedEntity, BasedEntity, Serial return HibernateProxyUtils.hashCode(this); } + @Override + public CompanyVo toVo() { + CompanyVo vo = new CompanyVo(); + vo.setId(id); + vo.setName(name); + vo.setUniscid(getUniscid()); + vo.setShortName(getShortName()); + vo.setPathExist(getPathExist()); + vo.setPath(getPath()); + vo.setCreated(getCreated()); + vo.setEntStatus(getEntStatus()); + vo.setEntType(getEntType()); + vo.setDistrict(getDistrict()); + vo.setIndustry(getIndustry()); + vo.setTelephone(getTelephone()); + vo.setRegAddr(getRegAddr()); + vo.setAddress(getAddress()); + vo.setSetupDate(getSetupDate()); + vo.setOperationPeriodBegin(getOperationPeriodBegin()); + vo.setOperationPeriodEnd(getOperationPeriodEnd()); + vo.setRegisteredCapital(registeredCapital); + vo.setRegisteredCapitalCurrency(registeredCapitalCurrency); + vo.setLegalRepresentative(legalRepresentative); + vo.setMemo(memo); + vo.setRemark(memo); + vo.setVersion(version); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/CompanyContact.java b/common/src/main/java/com/ecep/contract/model/CompanyContact.java index 251f344..7a290e9 100644 --- a/common/src/main/java/com/ecep/contract/model/CompanyContact.java +++ b/common/src/main/java/com/ecep/contract/model/CompanyContact.java @@ -7,6 +7,7 @@ import java.util.Objects; import org.hibernate.annotations.ColumnDefault; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.CompanyContactVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -30,7 +31,7 @@ import lombok.ToString; @Index(name = "CUSTOMER_ID", columnList = "COMPANY_ID") }) @ToString -public class CompanyContact implements IdentityEntity, NamedEntity, BasedEntity, CompanyBasedEntity, Serializable { +public class CompanyContact implements IdentityEntity, NamedEntity, BasedEntity, CompanyBasedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -97,4 +98,22 @@ public class CompanyContact implements IdentityEntity, NamedEntity, BasedEntity, return HibernateProxyUtils.hashCode(this); } + @Override + public CompanyContactVo toVo() { + CompanyContactVo vo = new CompanyContactVo(); + vo.setId(id); + if (company != null) { + vo.setCompanyId(company.getId()); + } + vo.setName(name); + vo.setPosition(position); + vo.setPhone(phone); + vo.setEmail(email); + vo.setAddress(address); + vo.setU8Code(u8Code); + vo.setMemo(memo); + vo.setCreated(created); + // primary和active字段默认为false,在CompanyContactVo类中已经设置 + return vo; + } } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/model/CompanyCustomer.java b/common/src/main/java/com/ecep/contract/model/CompanyCustomer.java index 88a6747..7dac9cf 100644 --- a/common/src/main/java/com/ecep/contract/model/CompanyCustomer.java +++ b/common/src/main/java/com/ecep/contract/model/CompanyCustomer.java @@ -3,6 +3,7 @@ package com.ecep.contract.model; import java.io.Serializable; import java.time.Instant; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.Objects; import org.hibernate.annotations.ColumnDefault; @@ -69,7 +70,7 @@ public class CompanyCustomer implements IdentityEntity, CompanyBasedEntity, Seri * 记录创建日期 */ @Column(name = "CREATED") - private Instant created; + private LocalDateTime created; @Version @ColumnDefault("0") diff --git a/common/src/main/java/com/ecep/contract/model/CompanyCustomerEntity.java b/common/src/main/java/com/ecep/contract/model/CompanyCustomerEntity.java index de743b7..8a83bd1 100644 --- a/common/src/main/java/com/ecep/contract/model/CompanyCustomerEntity.java +++ b/common/src/main/java/com/ecep/contract/model/CompanyCustomerEntity.java @@ -6,6 +6,7 @@ import java.time.LocalDateTime; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.CompanyCustomerEntityVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -27,7 +28,7 @@ import lombok.ToString; }) @ToString -public class CompanyCustomerEntity implements IdentityEntity, Serializable { +public class CompanyCustomerEntity implements IdentityEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @Column(name = "ID", nullable = false) @@ -113,4 +114,30 @@ public class CompanyCustomerEntity implements IdentityEntity, Serializable { public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public CompanyCustomerEntityVo toVo() { + CompanyCustomerEntityVo vo = new CompanyCustomerEntityVo(); + vo.setId(id); + if (customer != null) { + vo.setCustomerId(customer.getId()); + } + vo.setName(name); + vo.setAbbName(abbName); + vo.setCode(code); + if (catalog != null) { + vo.setCustomerCatalogId(catalog.getId()); + } + if (creator != null) { + vo.setCreatorId(creator.getId()); + } + if (modifier != null) { + vo.setModifierId(modifier.getId()); + } + vo.setModifyDate(modifyDate); + vo.setDevelopDate(developDate); + vo.setUpdatedDate(updatedDate); + vo.setFetchedTime(fetchedTime); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/CompanyFile.java b/common/src/main/java/com/ecep/contract/model/CompanyFile.java index 6f3b437..db80092 100644 --- a/common/src/main/java/com/ecep/contract/model/CompanyFile.java +++ b/common/src/main/java/com/ecep/contract/model/CompanyFile.java @@ -6,6 +6,7 @@ import java.util.Objects; import com.ecep.contract.CompanyFileType; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.CompanyFileVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -30,7 +31,7 @@ import lombok.ToString; @Entity @Table(name = "COMPANY_FILE") @ToString -public class CompanyFile implements IdentityEntity, CompanyBasedEntity, Serializable { +public class CompanyFile implements IdentityEntity, CompanyBasedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @@ -81,4 +82,19 @@ public class CompanyFile implements IdentityEntity, CompanyBasedEntity, Serializ public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public CompanyFileVo toVo() { + CompanyFileVo vo = new CompanyFileVo(); + vo.setId(id); + if (company != null) { + vo.setCompanyId(company.getId()); + } + vo.setType(type); + vo.setApplyDate(applyDate); + vo.setExpiringDate(expiringDate); + vo.setFilePath(filePath); + vo.setActive(false); // 实体类中没有active字段,设置默认值false + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/CompanyVendor.java b/common/src/main/java/com/ecep/contract/model/CompanyVendor.java index fd3324b..4cb561b 100644 --- a/common/src/main/java/com/ecep/contract/model/CompanyVendor.java +++ b/common/src/main/java/com/ecep/contract/model/CompanyVendor.java @@ -1,17 +1,17 @@ package com.ecep.contract.model; import java.io.Serializable; -import java.time.Instant; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import org.hibernate.annotations.ColumnDefault; import com.ecep.contract.VendorType; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.CompanyVendorVo; +import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -32,11 +32,9 @@ import lombok.ToString; @Getter @Setter @Entity -@Table(name = "COMPANY_VENDOR", schema = "supplier_ms", indexes = { - -}) +@Table(name = "COMPANY_VENDOR", schema = "supplier_ms") @ToString -public class CompanyVendor implements IdentityEntity, CompanyBasedEntity, Serializable { +public class CompanyVendor implements IdentityEntity, CompanyBasedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @Column(name = "ID", nullable = false) @@ -100,7 +98,7 @@ public class CompanyVendor implements IdentityEntity, CompanyBasedEntity, Serial * 记录创建日期 */ @Column(name = "CREATED") - private Instant created; + private LocalDateTime created; @Version @ColumnDefault("0") @@ -124,4 +122,28 @@ public class CompanyVendor implements IdentityEntity, CompanyBasedEntity, Serial public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public CompanyVendorVo toVo() { + CompanyVendorVo vo = new CompanyVendorVo(); + vo.setId(id); + vo.setType(type); + vo.setProtocolProvider(protocolProvider); + if (company != null) { + vo.setCompanyId(company.getId()); + } + if (catalog != null) { + vo.setCatalogId(catalog.getId()); + } + vo.setDevelopDate(developDate); + vo.setPath(path); + if (contact != null) { + vo.setContactId(contact.getId()); + } + vo.setPurchase(purchase); + vo.setDescription(description); + vo.setCreated(created); + vo.setVersion(version); + return vo; + } } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/model/CompanyVendorEntity.java b/common/src/main/java/com/ecep/contract/model/CompanyVendorEntity.java index d371290..ae085a0 100644 --- a/common/src/main/java/com/ecep/contract/model/CompanyVendorEntity.java +++ b/common/src/main/java/com/ecep/contract/model/CompanyVendorEntity.java @@ -6,6 +6,7 @@ import java.time.LocalDateTime; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.CompanyVendorEntityVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -30,7 +31,7 @@ import lombok.ToString; }) @ToString -public class CompanyVendorEntity implements IdentityEntity, Serializable { +public class CompanyVendorEntity implements IdentityEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @Column(name = "ID", nullable = false) @@ -109,4 +110,30 @@ public class CompanyVendorEntity implements IdentityEntity, Serializable { public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public CompanyVendorEntityVo toVo() { + CompanyVendorEntityVo vo = new CompanyVendorEntityVo(); + vo.setId(id); + if (vendor != null) { + vo.setVendorId(vendor.getId()); + } + vo.setName(name); + vo.setAbbName(abbName); + vo.setCode(code); + if (catalog != null) { + vo.setCatalogId(catalog.getId()); + } + if (creator != null) { + vo.setCreatorId(creator.getId()); + } + if (modifier != null) { + vo.setModifierId(modifier.getId()); + } + vo.setModifyDate(modifyDate); + vo.setDevelopDate(developDate); + vo.setUpdatedDate(updatedDate); + vo.setFetchedTime(fetchedTime); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/Contract.java b/common/src/main/java/com/ecep/contract/model/Contract.java index 10271d1..22ad55c 100644 --- a/common/src/main/java/com/ecep/contract/model/Contract.java +++ b/common/src/main/java/com/ecep/contract/model/Contract.java @@ -9,6 +9,7 @@ import org.hibernate.annotations.ColumnDefault; import com.ecep.contract.ContractPayWay; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.ContractVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -35,7 +36,8 @@ import lombok.ToString; @Entity @Table(name = "CONTRACT", schema = "supplier_ms") @ToString -public class Contract implements IdentityEntity, NamedEntity, BasedEntity, CompanyBasedEntity, Serializable { +public class Contract + implements IdentityEntity, NamedEntity, BasedEntity, CompanyBasedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; /** * 主键 @@ -304,4 +306,66 @@ public class Contract implements IdentityEntity, NamedEntity, BasedEntity, Compa public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public ContractVo toVo() { + ContractVo vo = new ContractVo(); + vo.setId(id); + vo.setGuid(getGuid()); + vo.setCode(getCode()); + vo.setName(name); + if (getCompany() != null) { + vo.setCompanyId(getCompany().getId()); + } + if (group != null) { + vo.setGroupId(group.getId()); + } + if (type != null) { + vo.setTypeId(type.getId()); + } + if (kind != null) { + vo.setKindId(kind.getId()); + } + if (project != null) { + vo.setProject(project.getId()); + } + vo.setParentCode(getParentCode()); + vo.setOrderDate(getOrderDate()); + vo.setStartDate(getStartDate()); + vo.setEndDate(getEndDate()); + if (setupPerson != null) { + vo.setSetupPersonId(setupPerson.getId()); + } + vo.setSetupDate(getSetupDate()); + if (inurePerson != null) { + vo.setInurePersonId(inurePerson.getId()); + } + vo.setInureDate(getInureDate()); + if (varyPerson != null) { + vo.setVaryPersonId(varyPerson.getId()); + } + vo.setVaryDate(getVaryDate()); + if (employee != null) { + vo.setEmployeeId(employee.getId()); + } + if (handler != null) { + vo.setHandlerId(handler.getId()); + } + vo.setState(getState()); + vo.setPath(getPath()); + vo.setDescription(getDescription()); + vo.setCreated(getCreated()); + vo.setAmount(getAmount()); + vo.setStandardPayWay(isStandardPayWay()); + vo.setStandardPContractText(isStandardPContractText()); + vo.setTotalQuantity(getTotalQuantity()); + vo.setTotalAmount(getTotalAmount()); + vo.setTotalUnTaxAmount(getTotalUnTaxAmount()); + vo.setExecQuantity(getExecQuantity()); + vo.setExecAmount(getExecAmount()); + vo.setExecUnTaxAmount(getExecUnTaxAmount()); + vo.setPayWay(getPayWay()); + vo.setVersion(getVersion()); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/ContractCatalog.java b/common/src/main/java/com/ecep/contract/model/ContractCatalog.java index 70e13db..21abef3 100644 --- a/common/src/main/java/com/ecep/contract/model/ContractCatalog.java +++ b/common/src/main/java/com/ecep/contract/model/ContractCatalog.java @@ -4,6 +4,7 @@ import java.io.Serializable; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.ContractCatalogVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -23,7 +24,7 @@ import lombok.Setter; @Setter @Entity @Table(name = "CONTRACT_CATALOG", schema = "supplier_ms") -public class ContractCatalog implements IdentityEntity, NamedEntity, Serializable { +public class ContractCatalog implements IdentityEntity, NamedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -68,4 +69,16 @@ public class ContractCatalog implements IdentityEntity, NamedEntity, Serializabl public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public ContractCatalogVo toVo() { + ContractCatalogVo vo = new ContractCatalogVo(); + vo.setId(id); + vo.setCode(code); + vo.setName(name); + vo.setPath(path); + vo.setParent(parent); + vo.setUseYear(useYear); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/ContractFileTypeLocal.java b/common/src/main/java/com/ecep/contract/model/ContractFileTypeLocal.java index a5785aa..d9682f6 100644 --- a/common/src/main/java/com/ecep/contract/model/ContractFileTypeLocal.java +++ b/common/src/main/java/com/ecep/contract/model/ContractFileTypeLocal.java @@ -5,6 +5,7 @@ import java.util.Objects; import com.ecep.contract.ContractFileType; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.ContractFileTypeLocalVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -21,7 +22,7 @@ import lombok.ToString; @Entity @Table(name = "CONTRACT_FILE_TYPE_LOCAL") @ToString -public class ContractFileTypeLocal extends BaseEnumEntity implements Serializable { +public class ContractFileTypeLocal extends BaseEnumEntity implements Serializable, Voable { private static final long serialVersionUID = 1L; /** * 建议的文件名 @@ -29,6 +30,9 @@ public class ContractFileTypeLocal extends BaseEnumEntity impl @Column(name = "SUGGEST_FILE_NAME") private String suggestFileName; + @Column(name = "DESCRIPTION") + private String description; + @Override public final boolean equals(Object object) { if (this == object) @@ -46,4 +50,15 @@ public class ContractFileTypeLocal extends BaseEnumEntity impl public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public ContractFileTypeLocalVo toVo() { + ContractFileTypeLocalVo vo = new ContractFileTypeLocalVo(); + vo.setId(getId()); + vo.setLanguage(getLang()); + vo.setType(getType()); + vo.setDescription(getDescription()); + vo.setSuggestFileName(suggestFileName); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/ContractGroup.java b/common/src/main/java/com/ecep/contract/model/ContractGroup.java index 746f52c..e70deed 100644 --- a/common/src/main/java/com/ecep/contract/model/ContractGroup.java +++ b/common/src/main/java/com/ecep/contract/model/ContractGroup.java @@ -4,6 +4,7 @@ import java.io.Serializable; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.ContractGroupVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -21,7 +22,7 @@ import lombok.Setter; @Setter @Entity @Table(name = "CONTRACT_GROUP", schema = "supplier_ms") -public class ContractGroup implements IdentityEntity, NamedEntity, Serializable { +public class ContractGroup implements IdentityEntity, NamedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @Column(name = "ID", nullable = false) @@ -67,4 +68,16 @@ public class ContractGroup implements IdentityEntity, NamedEntity, Serializable super.hashCode(); return HibernateProxyUtils.hashCode(this); } + + @Override + public ContractGroupVo toVo() { + ContractGroupVo vo = new ContractGroupVo(); + vo.setId(id); + vo.setName(name); + vo.setCode(code); + vo.setTitle(title); + // 注意:ContractGroup实体类中似乎没有parentId、order、description和active字段,但ContractGroupVo中有这些字段 + // 由于实体类中没有这些字段,所以无法设置它们的值 + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/ContractItem.java b/common/src/main/java/com/ecep/contract/model/ContractItem.java index dec0385..5c8e983 100644 --- a/common/src/main/java/com/ecep/contract/model/ContractItem.java +++ b/common/src/main/java/com/ecep/contract/model/ContractItem.java @@ -6,6 +6,7 @@ import java.time.LocalDateTime; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.ContractItemVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -28,7 +29,8 @@ import lombok.ToString; @Entity @Table(name = "CONTRACT_ITEM") @ToString -public class ContractItem implements IdentityEntity, ContractBasedEntity, BasedEntity, Serializable { +public class ContractItem + implements IdentityEntity, ContractBasedEntity, BasedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -162,4 +164,37 @@ public class ContractItem implements IdentityEntity, ContractBasedEntity, BasedE public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public ContractItemVo toVo() { + ContractItemVo vo = new ContractItemVo(); + vo.setId(id); + if (contract != null) { + vo.setContractId(contract.getId()); + } + vo.setRefId(refId); + vo.setItemCode(itemCode); + vo.setTitle(title); + vo.setSpecification(specification); + vo.setUnit(unit); + if (inventory != null) { + vo.setInventoryId(inventory.getId()); + } + vo.setExclusiveTaxPrice(exclusiveTaxPrice); + vo.setTaxRate(taxRate); + vo.setTaxPrice(taxPrice); + vo.setQuantity(quantity); + vo.setCreateDate(createDate); + vo.setUpdateDate(updateDate); + vo.setStartDate(startDate); + vo.setEndDate(endDate); + if (creator != null) { + vo.setCreatorId(creator.getId()); + } + if (updater != null) { + vo.setUpdaterId(updater.getId()); + } + vo.setRemark(remark); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/ContractKind.java b/common/src/main/java/com/ecep/contract/model/ContractKind.java index f5f03b9..8597cac 100644 --- a/common/src/main/java/com/ecep/contract/model/ContractKind.java +++ b/common/src/main/java/com/ecep/contract/model/ContractKind.java @@ -4,6 +4,7 @@ import java.io.Serializable; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.ContractKindVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -23,7 +24,7 @@ import lombok.ToString; @Entity @Table(name = "CONTRACT_KIND", schema = "supplier_ms") @ToString -public class ContractKind implements IdentityEntity, NamedEntity, Serializable { +public class ContractKind implements IdentityEntity, NamedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @Column(name = "ID", nullable = false) @@ -67,4 +68,16 @@ public class ContractKind implements IdentityEntity, NamedEntity, Serializable { public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public ContractKindVo toVo() { + ContractKindVo vo = new ContractKindVo(); + vo.setId(id); + vo.setName(name); + vo.setCode(code); + vo.setTitle(title); + // 注意:ContractKind实体类中似乎没有active字段,但ContractKindVo中有这些字段 + // 由于实体类中没有这些字段,所以无法设置它们的值 + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/ContractPayPlan.java b/common/src/main/java/com/ecep/contract/model/ContractPayPlan.java index 35f66eb..35f6e6f 100644 --- a/common/src/main/java/com/ecep/contract/model/ContractPayPlan.java +++ b/common/src/main/java/com/ecep/contract/model/ContractPayPlan.java @@ -6,6 +6,7 @@ import java.time.LocalDateTime; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.ContractPayPlanVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -27,7 +28,7 @@ import lombok.Setter; @Entity @Table(name = "CONTRACT_PAY_PLAN", schema = "supplier_ms", indexes = { }) -public class ContractPayPlan implements IdentityEntity, ContractBasedEntity, Serializable { +public class ContractPayPlan implements IdentityEntity, ContractBasedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -86,4 +87,19 @@ public class ContractPayPlan implements IdentityEntity, ContractBasedEntity, Ser public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public ContractPayPlanVo toVo() { + ContractPayPlanVo vo = new ContractPayPlanVo(); + vo.setId(id); + if (contract != null) { + vo.setContractId(contract.getId()); + } + vo.setRefId(refId); + vo.setPayCurrency(payCurrency); + vo.setPayDate(payDate); + vo.setUpdateDate(updateDate); + vo.setPayTerm(payTerm); + return vo; + } } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/model/ContractType.java b/common/src/main/java/com/ecep/contract/model/ContractType.java index 219dd0d..08d915d 100644 --- a/common/src/main/java/com/ecep/contract/model/ContractType.java +++ b/common/src/main/java/com/ecep/contract/model/ContractType.java @@ -4,6 +4,7 @@ import java.io.Serializable; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.ContractTypeVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -23,7 +24,7 @@ import lombok.ToString; @Entity @Table(name = "CONTRACT_TYPE", schema = "supplier_ms") @ToString -public class ContractType implements IdentityEntity, NamedEntity, Serializable { +public class ContractType implements IdentityEntity, NamedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @Column(name = "ID", nullable = false) @@ -74,4 +75,18 @@ public class ContractType implements IdentityEntity, NamedEntity, Serializable { public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public ContractTypeVo toVo() { + ContractTypeVo vo = new ContractTypeVo(); + vo.setId(id); + vo.setName(name); + vo.setCode(code); + vo.setCatalog(catalog); + vo.setTitle(title); + vo.setDirection(direction); + // 注意:ContractType实体类中似乎没有active字段,但ContractTypeVo中有这些字段 + // 由于实体类中没有这些字段,所以无法设置它们的值 + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/Department.java b/common/src/main/java/com/ecep/contract/model/Department.java index c7b0f1d..375f5c7 100644 --- a/common/src/main/java/com/ecep/contract/model/Department.java +++ b/common/src/main/java/com/ecep/contract/model/Department.java @@ -4,6 +4,7 @@ import java.io.Serializable; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.DepartmentVo; import jakarta.persistence.Column; import jakarta.persistence.FetchType; @@ -21,7 +22,7 @@ import lombok.ToString; @Setter @jakarta.persistence.Entity @Table(name = "DEPARTMENT", schema = "supplier_ms") -public class Department implements BasedEntity, IdentityEntity, Serializable { +public class Department implements BasedEntity, IdentityEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -61,4 +62,17 @@ public class Department implements BasedEntity, IdentityEntity, Serializable { public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public DepartmentVo toVo() { + DepartmentVo vo = new DepartmentVo(); + vo.setId(id); + vo.setName(name); + vo.setCode(code); + if (getLeader() != null) { + vo.setLeaderId(getLeader().getId()); + } + vo.setActive(isActive); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/Employee.java b/common/src/main/java/com/ecep/contract/model/Employee.java index 9e735ab..7a826cd 100644 --- a/common/src/main/java/com/ecep/contract/model/Employee.java +++ b/common/src/main/java/com/ecep/contract/model/Employee.java @@ -5,6 +5,7 @@ import java.time.LocalDate; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.EmployeeVo; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -27,7 +28,7 @@ import lombok.ToString; @Setter @jakarta.persistence.Entity @Table(name = "EMPLOYEE", schema = "supplier_ms") -public class Employee implements BasedEntity, IdentityEntity, NamedEntity, Serializable { +public class Employee implements BasedEntity, IdentityEntity, NamedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -130,4 +131,31 @@ public class Employee implements BasedEntity, IdentityEntity, NamedEntity, Seria public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public EmployeeVo toVo() { + EmployeeVo vo = new EmployeeVo(); + vo.setId(id); + vo.setAccount(account); + vo.setName(name); + vo.setAlias(alias); + vo.setCode(code); + if (getDepartment() != null) { + vo.setDepartmentId(getDepartment().getId()); + } + vo.setPhone(phone); + vo.setEmail(email); + vo.setCreated(created); + vo.setEntryDate(entryDate); + vo.setLeaveDate(leaveDate); + vo.setLocale(locale); + vo.setDateFormatter(dateFormatter); + vo.setDateTimeFormatter(dateTimeFormatter); + vo.setTimeFormatter(timeFormatter); + vo.setTimeZone(timeZone); + vo.setNumberFormatter(numberFormatter); + vo.setCurrencyFormatter(currencyFormatter); + vo.setActive(isActive()); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/EmployeeAuthBind.java b/common/src/main/java/com/ecep/contract/model/EmployeeAuthBind.java index 12561ed..58bfcd7 100644 --- a/common/src/main/java/com/ecep/contract/model/EmployeeAuthBind.java +++ b/common/src/main/java/com/ecep/contract/model/EmployeeAuthBind.java @@ -5,6 +5,7 @@ import java.time.LocalDateTime; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.EmployeeAuthBindVo; import jakarta.persistence.Column; import jakarta.persistence.FetchType; @@ -22,7 +23,7 @@ import lombok.ToString; @Setter @jakarta.persistence.Entity @Table(name = "EMPLOYEE_AUTH_BIND", schema = "supplier_ms") -public class EmployeeAuthBind implements BasedEntity, IdentityEntity, Serializable { +public class EmployeeAuthBind implements BasedEntity, IdentityEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -80,4 +81,18 @@ public class EmployeeAuthBind implements BasedEntity, IdentityEntity, Serializab public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public EmployeeAuthBindVo toVo() { + EmployeeAuthBindVo vo = new EmployeeAuthBindVo(); + vo.setId(id); + vo.setEmployeeId(employee != null ? employee.getId() : null); + vo.setIp(ip); + vo.setMac(mac); + vo.setCreateTime(createTime); + vo.setUpdaterId(updater != null ? updater.getId() : null); + vo.setUpdateTime(updateTime); + vo.setDescription(description); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/EmployeeLoginHistory.java b/common/src/main/java/com/ecep/contract/model/EmployeeLoginHistory.java index a9118a1..18036b0 100644 --- a/common/src/main/java/com/ecep/contract/model/EmployeeLoginHistory.java +++ b/common/src/main/java/com/ecep/contract/model/EmployeeLoginHistory.java @@ -5,6 +5,7 @@ import java.time.LocalDateTime; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.EmployeeLoginHistoryVo; import jakarta.persistence.Column; import jakarta.persistence.FetchType; @@ -21,7 +22,7 @@ import lombok.Setter; @Setter @jakarta.persistence.Entity @Table(name = "EMPLOYEE_LOGIN_HISTORY", schema = "supplier_ms") -public class EmployeeLoginHistory implements BasedEntity, IdentityEntity, Serializable { +public class EmployeeLoginHistory implements BasedEntity, IdentityEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @@ -67,4 +68,16 @@ public class EmployeeLoginHistory implements BasedEntity, IdentityEntity, Serial public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public EmployeeLoginHistoryVo toVo() { + EmployeeLoginHistoryVo vo = new EmployeeLoginHistoryVo(); + vo.setId(id); + vo.setEmployeeId(employee != null ? employee.getId() : null); + vo.setIp(ip); + vo.setMac(mac); + vo.setLoginTime(loginTime); + vo.setActiveTime(activeTime); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/Inventory.java b/common/src/main/java/com/ecep/contract/model/Inventory.java index 32c3c38..b78de96 100644 --- a/common/src/main/java/com/ecep/contract/model/Inventory.java +++ b/common/src/main/java/com/ecep/contract/model/Inventory.java @@ -143,9 +143,11 @@ public class Inventory implements IdentityEntity, BasedEntity, Serializable { @ToString.Exclude private Employee creator; + /** + * 创建时间 + */ @Column(name = "CREATE_DATE") private LocalDate createTime; - /** * 更新人 */ diff --git a/common/src/main/java/com/ecep/contract/model/InventoryHistoryPrice.java b/common/src/main/java/com/ecep/contract/model/InventoryHistoryPrice.java index c0669d1..317b54b 100644 --- a/common/src/main/java/com/ecep/contract/model/InventoryHistoryPrice.java +++ b/common/src/main/java/com/ecep/contract/model/InventoryHistoryPrice.java @@ -5,6 +5,7 @@ import java.time.Year; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.InventoryHistoryPriceVo; import jakarta.persistence.AttributeOverride; import jakarta.persistence.AttributeOverrides; @@ -27,7 +28,7 @@ import lombok.ToString; @ToString @Entity @Table(name = "INVENTORY_HISTORY", schema = "supplier_ms") -public class InventoryHistoryPrice implements IdentityEntity, Serializable { +public class InventoryHistoryPrice implements IdentityEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -121,4 +122,23 @@ public class InventoryHistoryPrice implements IdentityEntity, Serializable { public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public InventoryHistoryPriceVo toVo() { + InventoryHistoryPriceVo vo = new InventoryHistoryPriceVo(); + vo.setId(getId()); + if (getInventory() != null) { + vo.setInventoryId(getInventory().getId()); + } + vo.setYear(getYear()); + + vo.setLatestPurchasePrice((getLatestPurchasePrice())); + vo.setLatestSalePrice((getLatestSalePrice())); + vo.setMiniPurchasePrice((getMiniPurchasePrice())); + vo.setMiniSalePrice((getMiniSalePrice())); + vo.setMaxPurchasePrice((getMaxPurchasePrice())); + vo.setMaxSalePrice((getMaxSalePrice())); + + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/Invoice.java b/common/src/main/java/com/ecep/contract/model/Invoice.java index ec1aece..9437f5b 100644 --- a/common/src/main/java/com/ecep/contract/model/Invoice.java +++ b/common/src/main/java/com/ecep/contract/model/Invoice.java @@ -7,6 +7,7 @@ import java.util.Objects; import org.springframework.util.StringUtils; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.InvoiceVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -29,7 +30,7 @@ import lombok.ToString; @Entity @Table(name = "INVOICE", schema = "supplier_ms") @ToString -public class Invoice implements IdentityEntity, BasedEntity, Serializable { +public class Invoice implements IdentityEntity, BasedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @@ -88,4 +89,17 @@ public class Invoice implements IdentityEntity, BasedEntity, Serializable { public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public InvoiceVo toVo() { + InvoiceVo vo = new InvoiceVo(); + vo.setId(id); + if (company != null) { + vo.setCompanyId(company.getId()); + } + vo.setCode(code); + vo.setInvoiceDate(invoiceDate); + vo.setDescription(description); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/Project.java b/common/src/main/java/com/ecep/contract/model/Project.java index 169d09a..608ac87 100644 --- a/common/src/main/java/com/ecep/contract/model/Project.java +++ b/common/src/main/java/com/ecep/contract/model/Project.java @@ -7,6 +7,7 @@ import java.util.Objects; import org.hibernate.annotations.ColumnDefault; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.ProjectVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -30,7 +31,7 @@ import lombok.ToString; @Entity @Table(name = "PROJECT", schema = "supplier_ms") @ToString -public class Project implements IdentityEntity, NamedEntity, BasedEntity, Serializable { +public class Project implements IdentityEntity, NamedEntity, BasedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @@ -247,4 +248,65 @@ public class Project implements IdentityEntity, NamedEntity, BasedEntity, Serial public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public ProjectVo toVo() { + ProjectVo vo = new ProjectVo(); + vo.setId(id); + vo.setName(name); + vo.setCode(code); + if (getCustomer() != null) { + vo.setCustomerId(getCustomer().getId()); + } + if (getProjectType() != null) { + vo.setProjectTypeId(getProjectType().getId()); + } + if (getIndustry() != null) { + vo.setIndustryId(getIndustry().getId()); + } + if (getSaleType() != null) { + vo.setSaleTypeId(getSaleType().getId()); + } + if (getProductType() != null) { + vo.setProductTypeId(getProductType().getId()); + } + if (getDeliverySignMethod() != null) { + vo.setDeliverySignMethodId(getDeliverySignMethod().getId()); + } + if (getProductUsage() != null) { + vo.setProductUsageId(getProductUsage().getId()); + } + vo.setCodeYear(getCodeYear()); + vo.setCodeSequenceNumber(getCodeSequenceNumber()); + if (getApplicant() != null) { + vo.setApplicantId(getApplicant().getId()); + } + if (getAuthorizer() != null) { + vo.setAuthorizerId(getAuthorizer().getId()); + } + if (getBankAccount() != null) { + vo.setBankAccountId(getBankAccount().getId()); + } + if (getInvoiceInfo() != null) { + vo.setInvoiceInfoId(getInvoiceInfo().getId()); + } + if (getMainContact() != null) { + vo.setMainContactId(getMainContact().getId()); + } + if (getSubContact() != null) { + vo.setSubContactId(getSubContact().getId()); + } + vo.setAddress(getAddress()); + vo.setUseBid(isUseBid()); + vo.setUseOffer(isUseOffer()); + vo.setAmount(getAmount()); + vo.setStandardPayWay(isStandardPayWay()); + vo.setPath(getPath()); + vo.setCreated(getCreated()); + vo.setPlannedStartTime(getPlannedStartTime()); + vo.setPlannedCompletionTime(getPlannedCompletionTime()); + vo.setDescription(getDescription()); + vo.setVersion(version); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/ProjectFile.java b/common/src/main/java/com/ecep/contract/model/ProjectFile.java index 39174e9..65b9ab8 100644 --- a/common/src/main/java/com/ecep/contract/model/ProjectFile.java +++ b/common/src/main/java/com/ecep/contract/model/ProjectFile.java @@ -5,6 +5,7 @@ import java.util.Objects; import com.ecep.contract.ProjectFileType; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.ProjectFileVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -29,7 +30,7 @@ import lombok.ToString; @Entity @Table(name = "PROJECT_FILE") @ToString -public class ProjectFile implements IdentityEntity, ProjectBasedEntity, java.io.Serializable { +public class ProjectFile implements IdentityEntity, ProjectBasedEntity, java.io.Serializable, Voable { private static final long serialVersionUID = 1L; @Id @@ -66,4 +67,16 @@ public class ProjectFile implements IdentityEntity, ProjectBasedEntity, java.io. public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public ProjectFileVo toVo() { + ProjectFileVo vo = new ProjectFileVo(); + vo.setId(getId()); + if (getProject() != null) { + vo.setProjectId(getProject().getId()); + } + vo.setType(getType()); + vo.setFilePath(getFilePath()); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/ProjectFundPlan.java b/common/src/main/java/com/ecep/contract/model/ProjectFundPlan.java index 235beb5..86a4789 100644 --- a/common/src/main/java/com/ecep/contract/model/ProjectFundPlan.java +++ b/common/src/main/java/com/ecep/contract/model/ProjectFundPlan.java @@ -6,6 +6,7 @@ import java.util.Objects; import com.ecep.contract.ContractPayWay; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.ProjectFundPlanVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -32,7 +33,8 @@ import lombok.ToString; @Entity @Table(name = "PROJECT_FUND_PLAN") @ToString -public class ProjectFundPlan implements IdentityEntity, ProjectBasedEntity, java.io.Serializable { +public class ProjectFundPlan + implements IdentityEntity, ProjectBasedEntity, java.io.Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -98,4 +100,27 @@ public class ProjectFundPlan implements IdentityEntity, ProjectBasedEntity, java public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public ProjectFundPlanVo toVo() { + ProjectFundPlanVo vo = new ProjectFundPlanVo(); + vo.setId(id); + if (project != null) { + vo.setProjectId(project.getId()); + vo.setProjectName(project.getName()); + } + vo.setPayDate(payDate); + if (payWay != null) { + vo.setPayWay(payWay); + } + vo.setPayRatio(payRatio); + vo.setPayCurrency(payCurrency); + vo.setPayTerm(payTerm); + if (contractPayPlan != null) { + vo.setContractPayPlanId(contractPayPlan.getId()); + // 注意:ContractPayPlan实体类中没有name字段,无法设置contractPayPlanName + } + vo.setUpdateDate(updateDate); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/PurchaseBillVoucher.java b/common/src/main/java/com/ecep/contract/model/PurchaseBillVoucher.java index 750fbb2..4273d82 100644 --- a/common/src/main/java/com/ecep/contract/model/PurchaseBillVoucher.java +++ b/common/src/main/java/com/ecep/contract/model/PurchaseBillVoucher.java @@ -4,6 +4,7 @@ import java.time.LocalDateTime; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.PurchaseBillVoucherVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -27,7 +28,8 @@ import lombok.ToString; @Entity @Table(name = "PURCHASE_BILL_VOUCHER", schema = "supplier_ms") @ToString -public class PurchaseBillVoucher implements IdentityEntity, BasedEntity, java.io.Serializable { +public class PurchaseBillVoucher + implements IdentityEntity, BasedEntity, java.io.Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -126,4 +128,32 @@ public class PurchaseBillVoucher implements IdentityEntity, BasedEntity, java.io public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public PurchaseBillVoucherVo toVo() { + PurchaseBillVoucherVo vo = new PurchaseBillVoucherVo(); + vo.setId(id); + vo.setRefId(refId); + vo.setCode(code); + if (company != null) { + vo.setCompanyId(company.getId()); + } + if (invoice != null) { + vo.setInvoiceId(invoice.getId()); + } + if (employee != null) { + vo.setEmployeeId(employee.getId()); + } + if (maker != null) { + vo.setMakerId(maker.getId()); + } + vo.setMakerDate(makerDate); + vo.setModifyDate(modifyDate); + if (verifier != null) { + vo.setVerifierId(verifier.getId()); + } + vo.setVerifierDate(verifierDate); + vo.setDescription(description); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/PurchaseBillVoucherItem.java b/common/src/main/java/com/ecep/contract/model/PurchaseBillVoucherItem.java index c488b84..accd245 100644 --- a/common/src/main/java/com/ecep/contract/model/PurchaseBillVoucherItem.java +++ b/common/src/main/java/com/ecep/contract/model/PurchaseBillVoucherItem.java @@ -3,6 +3,7 @@ package com.ecep.contract.model; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.PurchaseBillVoucherItemVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -26,7 +27,8 @@ import lombok.ToString; @Entity @Table(name = "PURCHASE_BILL_VOUCHER_ITEM", schema = "supplier_ms") @ToString -public class PurchaseBillVoucherItem implements IdentityEntity, BasedEntity, java.io.Serializable { +public class PurchaseBillVoucherItem + implements IdentityEntity, BasedEntity, java.io.Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -109,4 +111,30 @@ public class PurchaseBillVoucherItem implements IdentityEntity, BasedEntity, jav public String toPrettyString() { return "#" + getId(); } + + @Override + public PurchaseBillVoucherItemVo toVo() { + PurchaseBillVoucherItemVo vo = new PurchaseBillVoucherItemVo(); + vo.setId(id); + vo.setRefId(refId); + if (voucher != null) { + vo.setVoucherId(voucher.getId()); + } + if (orderItem != null) { + vo.setOrderItemId(orderItem.getId()); + } + if (invoice != null) { + vo.setInvoiceId(invoice.getId()); + } + if (inventory != null) { + vo.setInventoryId(inventory.getId()); + } + if (contract != null) { + vo.setContractId(contract.getId()); + } + vo.setQuantity(quantity); + vo.setPrice(price); + vo.setDescription(description); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/PurchaseOrder.java b/common/src/main/java/com/ecep/contract/model/PurchaseOrder.java index 8e6f95e..1873888 100644 --- a/common/src/main/java/com/ecep/contract/model/PurchaseOrder.java +++ b/common/src/main/java/com/ecep/contract/model/PurchaseOrder.java @@ -4,6 +4,7 @@ import java.time.LocalDateTime; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.PurchaseOrderVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -27,7 +28,7 @@ import lombok.ToString; @Entity @Table(name = "PURCHASE_ORDER", schema = "supplier_ms") @ToString -public class PurchaseOrder implements IdentityEntity, BasedEntity, ContractBasedEntity, java.io.Serializable { +public class PurchaseOrder implements IdentityEntity, BasedEntity, ContractBasedEntity, java.io.Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -116,4 +117,26 @@ public class PurchaseOrder implements IdentityEntity, BasedEntity, ContractBased public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public PurchaseOrderVo toVo() { + PurchaseOrderVo vo = new PurchaseOrderVo(); + vo.setId(id); + if (contract != null) { + vo.setContractId(contract.getId()); + } + vo.setCode(code); + // PurchaseOrder中没有name字段,这里可以设置为code + vo.setName(code); + // PurchaseOrder中没有vendorId字段,只有vendorCode + // vo.setVendorId(); + // PurchaseOrder中没有orderDate字段,这里可以设置为makerDate + if (makerDate != null) { + vo.setOrderDate(makerDate.toLocalDate()); + } + // PurchaseOrder中没有totalAmount、taxAmount、taxRate和statusId字段,暂时不设置 + vo.setRemark(description); + // active字段默认为false,在PurchaseOrderVo类中已经设置 + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/PurchaseSettlementVoucherItem.java b/common/src/main/java/com/ecep/contract/model/PurchaseSettlementVoucherItem.java index 0807435..f87efde 100644 --- a/common/src/main/java/com/ecep/contract/model/PurchaseSettlementVoucherItem.java +++ b/common/src/main/java/com/ecep/contract/model/PurchaseSettlementVoucherItem.java @@ -3,6 +3,7 @@ package com.ecep.contract.model; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.PurchaseSettlementVoucherItemVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -26,7 +27,7 @@ import lombok.ToString; @Entity @Table(name = "PURCHASE_SETTLE_VOUCHER_ITEM", schema = "supplier_ms") @ToString -public class PurchaseSettlementVoucherItem implements IdentityEntity, BasedEntity, java.io.Serializable { +public class PurchaseSettlementVoucherItem implements IdentityEntity, BasedEntity, java.io.Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -113,4 +114,35 @@ public class PurchaseSettlementVoucherItem implements IdentityEntity, BasedEntit public String toPrettyString() { return "#" + getId(); } + + @Override + public PurchaseSettlementVoucherItemVo toVo() { + PurchaseSettlementVoucherItemVo vo = new PurchaseSettlementVoucherItemVo(); + vo.setId(id); + vo.setRefId(refId); + if (voucher != null) { + vo.setVoucherId(voucher.getId()); + vo.setVoucherCode(voucher.getCode()); + } + if (accountant != null) { + vo.setAccountantId(accountant.getId()); + vo.setAccountantName(accountant.getName()); + } + if (invoice != null) { + vo.setInvoiceId(invoice.getId()); + vo.setInvoiceCode(invoice.getCode()); + } + if (receipt != null) { + vo.setReceiptId(receipt.getId()); + vo.setReceiptCode(receipt.getCode()); + } + if (inventory != null) { + vo.setInventoryId(inventory.getId()); + vo.setInventoryName(inventory.getName()); + } + vo.setQuantity(quantity); + vo.setPrice(price); + vo.setDescription(description); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/SalesBillVoucher.java b/common/src/main/java/com/ecep/contract/model/SalesBillVoucher.java index 28218fc..b43731e 100644 --- a/common/src/main/java/com/ecep/contract/model/SalesBillVoucher.java +++ b/common/src/main/java/com/ecep/contract/model/SalesBillVoucher.java @@ -4,6 +4,7 @@ import java.time.LocalDateTime; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.SalesBillVoucherVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -27,7 +28,7 @@ import lombok.ToString; @Entity @Table(name = "SALES_BILL_VOUCHER", schema = "supplier_ms") @ToString -public class SalesBillVoucher implements IdentityEntity, BasedEntity, java.io.Serializable { +public class SalesBillVoucher implements IdentityEntity, BasedEntity, java.io.Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -126,4 +127,33 @@ public class SalesBillVoucher implements IdentityEntity, BasedEntity, java.io.Se public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public SalesBillVoucherVo toVo() { + SalesBillVoucherVo vo = new SalesBillVoucherVo(); + vo.setId(id); + vo.setRefId(refId); + vo.setCode(code); + if (company != null) { + vo.setCompanyId(company.getId()); + } + if (order != null) { + vo.setOrderId(order.getId()); + vo.setOrderCode(order.getCode()); + } + if (employee != null) { + vo.setEmployeeId(employee.getId()); + } + if (maker != null) { + vo.setMakerId(maker.getId()); + } + vo.setMakerDate(makerDate); + vo.setModifyDate(modifyDate); + if (verifier != null) { + vo.setVerifierId(verifier.getId()); + } + vo.setVerifierDate(verifierDate); + vo.setDescription(description); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/SalesBillVoucherItem.java b/common/src/main/java/com/ecep/contract/model/SalesBillVoucherItem.java index a5c0e9e..3673963 100644 --- a/common/src/main/java/com/ecep/contract/model/SalesBillVoucherItem.java +++ b/common/src/main/java/com/ecep/contract/model/SalesBillVoucherItem.java @@ -3,6 +3,7 @@ package com.ecep.contract.model; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.SalesBillVoucherItemVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -26,7 +27,7 @@ import lombok.ToString; @Entity @Table(name = "SALES_BILL_VOUCHER_ITEM", schema = "supplier_ms") @ToString -public class SalesBillVoucherItem implements IdentityEntity, BasedEntity, java.io.Serializable { +public class SalesBillVoucherItem implements IdentityEntity, BasedEntity, java.io.Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -88,4 +89,23 @@ public class SalesBillVoucherItem implements IdentityEntity, BasedEntity, java.i public String toPrettyString() { return "#" + getId(); } + + @Override + public SalesBillVoucherItemVo toVo() { + SalesBillVoucherItemVo vo = new SalesBillVoucherItemVo(); + vo.setId(id); + vo.setRefId(refId); + if (voucher != null) { + vo.setVoucherId(voucher.getId()); + vo.setVoucherCode(voucher.getCode()); + } + if (inventory != null) { + vo.setInventoryId(inventory.getId()); + vo.setInventoryName(inventory.getName()); + } + vo.setQuantity(quantity); + vo.setPrice(price); + vo.setDescription(description); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/SalesOrder.java b/common/src/main/java/com/ecep/contract/model/SalesOrder.java index ba77be9..f2c0c07 100644 --- a/common/src/main/java/com/ecep/contract/model/SalesOrder.java +++ b/common/src/main/java/com/ecep/contract/model/SalesOrder.java @@ -5,6 +5,7 @@ import java.time.LocalDate; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.SalesOrderVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -28,7 +29,8 @@ import lombok.ToString; @Entity @Table(name = "CONTRACT_SALES_ORDER", schema = "supplier_ms") @ToString -public class SalesOrder implements IdentityEntity, BasedEntity, ContractBasedEntity, Serializable { +public class SalesOrder + implements IdentityEntity, BasedEntity, ContractBasedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -104,4 +106,28 @@ public class SalesOrder implements IdentityEntity, BasedEntity, ContractBasedEnt public String toPrettyString() { return "#" + getId(); } + + @Override + public SalesOrderVo toVo() { + SalesOrderVo vo = new SalesOrderVo(); + vo.setId(id); + if (contract != null) { + vo.setContractId(contract.getId()); + } + vo.setCode(code); + if (employee != null) { + vo.setEmployeeId(employee.getId()); + } + if (maker != null) { + vo.setMakerId(maker.getId()); + } + vo.setMakerDate(makerDate); + if (verifier != null) { + vo.setVerifierId(verifier.getId()); + } + vo.setVerifierDate(verifierDate); + + // active字段默认为false,在SalesOrderVo类中已经设置 + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/SalesOrderItem.java b/common/src/main/java/com/ecep/contract/model/SalesOrderItem.java index e3ee88c..9eaaffb 100644 --- a/common/src/main/java/com/ecep/contract/model/SalesOrderItem.java +++ b/common/src/main/java/com/ecep/contract/model/SalesOrderItem.java @@ -5,6 +5,7 @@ import java.time.LocalDate; import java.util.Objects; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.SalesOrderItemVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -28,7 +29,7 @@ import lombok.ToString; @Entity @Table(name = "CONTRACT_SALES_ORDER_ITEM", schema = "supplier_ms") @ToString -public class SalesOrderItem implements IdentityEntity, BasedEntity, Serializable { +public class SalesOrderItem implements IdentityEntity, BasedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -98,4 +99,24 @@ public class SalesOrderItem implements IdentityEntity, BasedEntity, Serializable public String toPrettyString() { return "#" + getId(); } + + @Override + public SalesOrderItemVo toVo() { + SalesOrderItemVo vo = new SalesOrderItemVo(); + vo.setId(id); + vo.setCode(code); + vo.setName(name); + if (order != null) { + vo.setSalesOrderId(order.getId()); + } + vo.setItemName(name); + vo.setQuantity(quantity); + vo.setPrice(price); + vo.setTaxRate(taxRate); + vo.setExclusiveTaxPrice(exclusiveTaxPrice); + vo.setStartDate(startDate); + vo.setEndDate(endDate); + vo.setDescription(description); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/Unit.java b/common/src/main/java/com/ecep/contract/model/Unit.java index 8f45536..264b522 100644 --- a/common/src/main/java/com/ecep/contract/model/Unit.java +++ b/common/src/main/java/com/ecep/contract/model/Unit.java @@ -5,6 +5,7 @@ import java.util.Objects; import com.ecep.contract.UnitType; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.UnitVo; import jakarta.persistence.Column; import jakarta.persistence.EnumType; @@ -23,7 +24,7 @@ import lombok.Setter; @Setter @jakarta.persistence.Entity @Table(name = "UNIT", schema = "supplier_ms") -public class Unit implements IdentityEntity, NamedEntity, Serializable { +public class Unit implements IdentityEntity, NamedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -66,4 +67,16 @@ public class Unit implements IdentityEntity, NamedEntity, Serializable { public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public UnitVo toVo() { + UnitVo vo = new UnitVo(); + vo.setId(id); + vo.setCode(code); + vo.setName(name); + vo.setUnitType(unitType); + vo.setRatio(ratio); + vo.setStandard(standard); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/VendorCatalog.java b/common/src/main/java/com/ecep/contract/model/VendorCatalog.java index 44944c1..f1035ce 100644 --- a/common/src/main/java/com/ecep/contract/model/VendorCatalog.java +++ b/common/src/main/java/com/ecep/contract/model/VendorCatalog.java @@ -5,6 +5,7 @@ import java.util.Objects; import com.ecep.contract.VendorType; import com.ecep.contract.util.HibernateProxyUtils; +import com.ecep.contract.vo.VendorCatalogVo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -24,7 +25,7 @@ import lombok.ToString; @Entity @Table(name = "VENDOR_CATALOG", schema = "supplier_ms") @ToString -public class VendorCatalog implements BasedEntity, Serializable { +public class VendorCatalog implements BasedEntity, Serializable, Voable { private static final long serialVersionUID = 1L; @Id @Column(name = "ID", nullable = false) @@ -62,4 +63,14 @@ public class VendorCatalog implements BasedEntity, Serializable { public final int hashCode() { return HibernateProxyUtils.hashCode(this); } + + @Override + public VendorCatalogVo toVo() { + VendorCatalogVo vo = new VendorCatalogVo(); + vo.setId(id); + vo.setCode(code); + vo.setName(name); + vo.setType(type); + return vo; + } } diff --git a/common/src/main/java/com/ecep/contract/model/Voable.java b/common/src/main/java/com/ecep/contract/model/Voable.java new file mode 100644 index 0000000..6d15193 --- /dev/null +++ b/common/src/main/java/com/ecep/contract/model/Voable.java @@ -0,0 +1,10 @@ +package com.ecep.contract.model; + +public interface Voable { + /** + * 转换为Vo + * + * @return + */ + T toVo(); +} diff --git a/common/src/main/java/com/ecep/contract/vo/CloudBasedVo.java b/common/src/main/java/com/ecep/contract/vo/CloudBasedVo.java new file mode 100644 index 0000000..c2dd076 --- /dev/null +++ b/common/src/main/java/com/ecep/contract/vo/CloudBasedVo.java @@ -0,0 +1,29 @@ +package com.ecep.contract.vo; + +import java.time.LocalDateTime; + +import com.ecep.contract.model.IdentityEntity; + +import lombok.Data; + +@Data +public class CloudBasedVo implements IdentityEntity { + private Integer id; + + /** + * 运行时异常 + */ + private String exceptionMessage; + /** + * 最新更新时间, 本地服务器上运行的时间 + */ + private LocalDateTime latestUpdate; + /** + * 是否激活 + */ + private boolean active = false; + /** + * 数据版本号 + */ + private int version; +} diff --git a/common/src/main/java/com/ecep/contract/vo/CloudRkVo.java b/common/src/main/java/com/ecep/contract/vo/CloudRkVo.java index 6eb28b2..ca27af9 100644 --- a/common/src/main/java/com/ecep/contract/vo/CloudRkVo.java +++ b/common/src/main/java/com/ecep/contract/vo/CloudRkVo.java @@ -2,13 +2,10 @@ package com.ecep.contract.vo; import java.time.LocalDateTime; -import com.ecep.contract.model.IdentityEntity; - import lombok.Data; @Data -public class CloudRkVo implements IdentityEntity { - private Integer id; +public class CloudRkVo extends CloudBasedVo implements CompanyBasedVo { private String cloudId; private Integer companyId; private boolean autoUpdate = false; @@ -25,6 +22,5 @@ public class CloudRkVo implements IdentityEntity { private LocalDateTime cloudBlackListUpdated; private LocalDateTime cloudEntUpdate; private String description; - private LocalDateTime latestUpdate; - private Integer version; + } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/CloudTycVo.java b/common/src/main/java/com/ecep/contract/vo/CloudTycVo.java index 5198ed8..388cb8d 100644 --- a/common/src/main/java/com/ecep/contract/vo/CloudTycVo.java +++ b/common/src/main/java/com/ecep/contract/vo/CloudTycVo.java @@ -1,19 +1,13 @@ package com.ecep.contract.vo; -import java.time.Instant; - -import com.ecep.contract.model.IdentityEntity; +import java.time.LocalDateTime; import lombok.Data; @Data -public class CloudTycVo implements IdentityEntity, CompanyBasedVo { - private Integer id; +public class CloudTycVo extends CloudBasedVo implements CompanyBasedVo { private Integer score; - private Instant cloudLatest; + private LocalDateTime cloudLatest; private String cloudId; - private Instant latestUpdate; private Integer companyId; - private int version; - private boolean active = false; } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/CloudYuVo.java b/common/src/main/java/com/ecep/contract/vo/CloudYuVo.java index 067c49a..2a6f729 100644 --- a/common/src/main/java/com/ecep/contract/vo/CloudYuVo.java +++ b/common/src/main/java/com/ecep/contract/vo/CloudYuVo.java @@ -1,20 +1,17 @@ package com.ecep.contract.vo; -import java.time.Instant; import java.time.LocalDate; - -import com.ecep.contract.model.IdentityEntity; +import java.time.LocalDateTime; import lombok.Data; @Data -public class CloudYuVo implements IdentityEntity { - private Integer id; - private Instant latestUpdate; +public class CloudYuVo extends CloudBasedVo implements CompanyBasedVo { private Integer companyId; - private String exceptionMessage; + private LocalDate vendorUpdateDate; private LocalDate customerUpdateDate; - private Instant cloudLatest; - private boolean active = false; + private LocalDateTime cloudLatest; + + } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/CompanyContactVo.java b/common/src/main/java/com/ecep/contract/vo/CompanyContactVo.java index 6f2426b..fd10c6c 100644 --- a/common/src/main/java/com/ecep/contract/vo/CompanyContactVo.java +++ b/common/src/main/java/com/ecep/contract/vo/CompanyContactVo.java @@ -6,7 +6,7 @@ import java.time.LocalDate; import lombok.Data; @Data -public class CompanyContactVo implements IdentityEntity, NamedEntity ,CompanyBasedVo{ +public class CompanyContactVo implements IdentityEntity, NamedEntity, CompanyBasedVo { private Integer id; private Integer companyId; private String name; @@ -20,4 +20,5 @@ public class CompanyContactVo implements IdentityEntity, NamedEntity ,CompanyBas private boolean primary = false; private String description; private boolean active = false; + private int version; } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/CompanyCustomerEntityVo.java b/common/src/main/java/com/ecep/contract/vo/CompanyCustomerEntityVo.java index f16f283..bfb7350 100644 --- a/common/src/main/java/com/ecep/contract/vo/CompanyCustomerEntityVo.java +++ b/common/src/main/java/com/ecep/contract/vo/CompanyCustomerEntityVo.java @@ -8,17 +8,20 @@ import lombok.Data; @Data public class CompanyCustomerEntityVo implements IdentityEntity { private Integer id; - private Integer companyCustomerId; - private String customerName; + /** + * 公司客户 + */ + private Integer customerId; + private String name; private String abbName; private String code; + /** + * 客户分类 + */ private Integer customerCatalogId; - private String catalogName; private Integer creatorId; - private String creatorName; private Integer modifierId; - private String modifierName; private LocalDate modifyDate; private LocalDate developDate; private LocalDate updatedDate; diff --git a/common/src/main/java/com/ecep/contract/vo/CompanyCustomerEvaluationFormFileVo.java b/common/src/main/java/com/ecep/contract/vo/CompanyCustomerEvaluationFormFileVo.java index d0b5cf5..dcbf70d 100644 --- a/common/src/main/java/com/ecep/contract/vo/CompanyCustomerEvaluationFormFileVo.java +++ b/common/src/main/java/com/ecep/contract/vo/CompanyCustomerEvaluationFormFileVo.java @@ -6,7 +6,7 @@ import lombok.Data; @Data public class CompanyCustomerEvaluationFormFileVo implements IdentityEntity { private Integer id; - private Integer customerFileId; + private Integer customerFile; private String catalog; private String level; private Integer creditLevel = 0; diff --git a/common/src/main/java/com/ecep/contract/vo/CompanyCustomerFileVo.java b/common/src/main/java/com/ecep/contract/vo/CompanyCustomerFileVo.java index 8385dec..1065c93 100644 --- a/common/src/main/java/com/ecep/contract/vo/CompanyCustomerFileVo.java +++ b/common/src/main/java/com/ecep/contract/vo/CompanyCustomerFileVo.java @@ -8,7 +8,7 @@ import lombok.Data; @Data public class CompanyCustomerFileVo implements IdentityEntity { private Integer id; - private Integer customerId; + private Integer customer; private CompanyCustomerFileType type; private String filePath; private String editFilePath; diff --git a/common/src/main/java/com/ecep/contract/vo/CompanyCustomerVo.java b/common/src/main/java/com/ecep/contract/vo/CompanyCustomerVo.java index 526eeb6..c563cd3 100644 --- a/common/src/main/java/com/ecep/contract/vo/CompanyCustomerVo.java +++ b/common/src/main/java/com/ecep/contract/vo/CompanyCustomerVo.java @@ -1,21 +1,23 @@ package com.ecep.contract.vo; -import com.ecep.contract.model.IdentityEntity; -import java.time.Instant; import java.time.LocalDate; +import java.time.LocalDateTime; + +import com.ecep.contract.model.IdentityEntity; + import lombok.Data; @Data -public class CompanyCustomerVo implements IdentityEntity,CompanyBasedVo { +public class CompanyCustomerVo implements IdentityEntity, CompanyBasedVo { private Integer id; private Integer companyId; private LocalDate developDate; private String path; - private Integer companyContactId; - private String contactName; - private String contactPhone; - private String contactEmail; + /** + * 对口联系人 + */ + private Integer contactId; private String description; - private Instant created; + private LocalDateTime created; private int version; } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/CompanyVendorApprovedFileVo.java b/common/src/main/java/com/ecep/contract/vo/CompanyVendorApprovedFileVo.java index aaac73a..8e3d3b3 100644 --- a/common/src/main/java/com/ecep/contract/vo/CompanyVendorApprovedFileVo.java +++ b/common/src/main/java/com/ecep/contract/vo/CompanyVendorApprovedFileVo.java @@ -8,7 +8,6 @@ import lombok.Data; public class CompanyVendorApprovedFileVo implements IdentityEntity { private Integer id; private Integer listId; - private String listName; private String fileName; private LocalDate signDate; private String description; diff --git a/common/src/main/java/com/ecep/contract/vo/CompanyVendorApprovedItemVo.java b/common/src/main/java/com/ecep/contract/vo/CompanyVendorApprovedItemVo.java index 7e99758..64a920d 100644 --- a/common/src/main/java/com/ecep/contract/vo/CompanyVendorApprovedItemVo.java +++ b/common/src/main/java/com/ecep/contract/vo/CompanyVendorApprovedItemVo.java @@ -12,10 +12,8 @@ import lombok.Data; public class CompanyVendorApprovedItemVo implements IdentityEntity { private Integer id; private Integer listId; - private String listName; - private String vendorName; private Integer vendorId; - private String vendorNameInfo; + private String vendorName; private VendorType type; private String description; } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/CompanyVendorEntityVo.java b/common/src/main/java/com/ecep/contract/vo/CompanyVendorEntityVo.java index 7f11c79..2ce386c 100644 --- a/common/src/main/java/com/ecep/contract/vo/CompanyVendorEntityVo.java +++ b/common/src/main/java/com/ecep/contract/vo/CompanyVendorEntityVo.java @@ -14,16 +14,12 @@ import lombok.Data; public class CompanyVendorEntityVo implements IdentityEntity { private Integer id; private Integer vendorId; - private String vendorName; private String name; private String abbName; private String code; private Integer catalogId; - private String catalogName; private Integer creatorId; - private String creatorName; private Integer modifierId; - private String modifierName; private LocalDate modifyDate; private LocalDate developDate; private LocalDate updatedDate; diff --git a/common/src/main/java/com/ecep/contract/vo/CompanyVendorVo.java b/common/src/main/java/com/ecep/contract/vo/CompanyVendorVo.java index d222d1a..8329367 100644 --- a/common/src/main/java/com/ecep/contract/vo/CompanyVendorVo.java +++ b/common/src/main/java/com/ecep/contract/vo/CompanyVendorVo.java @@ -1,26 +1,28 @@ package com.ecep.contract.vo; +import java.time.LocalDate; +import java.time.LocalDateTime; + import com.ecep.contract.VendorType; import com.ecep.contract.model.IdentityEntity; -import java.time.Instant; -import java.time.LocalDate; + import lombok.Data; @Data -public class CompanyVendorVo implements IdentityEntity { +public class CompanyVendorVo implements IdentityEntity, CompanyBasedVo { private Integer id; private VendorType type; private boolean protocolProvider = false; private Integer companyId; - private String companyName; + /** + * VendorCatalog Id + */ private Integer catalogId; - private String catalogName; private LocalDate developDate; private String path; private Integer contactId; - private String contactName; private String purchase; private String description; - private Instant created; + private LocalDateTime created; private int version; } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/ContractFileTypeLocalVo.java b/common/src/main/java/com/ecep/contract/vo/ContractFileTypeLocalVo.java index a4e7aab..9951e5f 100644 --- a/common/src/main/java/com/ecep/contract/vo/ContractFileTypeLocalVo.java +++ b/common/src/main/java/com/ecep/contract/vo/ContractFileTypeLocalVo.java @@ -9,7 +9,6 @@ public class ContractFileTypeLocalVo implements IdentityEntity { private Integer id; private String language; private ContractFileType type; - private String name; private String description; private String suggestFileName; } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/ContractItemVo.java b/common/src/main/java/com/ecep/contract/vo/ContractItemVo.java index 703f994..6661a8f 100644 --- a/common/src/main/java/com/ecep/contract/vo/ContractItemVo.java +++ b/common/src/main/java/com/ecep/contract/vo/ContractItemVo.java @@ -17,7 +17,6 @@ public class ContractItemVo implements IdentityEntity, ContractBasedVo { private String specification; private String unit; private Integer inventoryId; - private String inventoryName; private Double exclusiveTaxPrice; private Double taxRate; private Double taxPrice; @@ -27,9 +26,6 @@ public class ContractItemVo implements IdentityEntity, ContractBasedVo { private LocalDate startDate; private LocalDate endDate; private Integer creatorId; - private String creatorName; private Integer updaterId; - private String updaterName; private String remark; - private Integer order; } diff --git a/common/src/main/java/com/ecep/contract/vo/ContractKindVo.java b/common/src/main/java/com/ecep/contract/vo/ContractKindVo.java index 67d9ebc..2fd04a7 100644 --- a/common/src/main/java/com/ecep/contract/vo/ContractKindVo.java +++ b/common/src/main/java/com/ecep/contract/vo/ContractKindVo.java @@ -9,6 +9,6 @@ public class ContractKindVo implements IdentityEntity, NamedEntity { private Integer id; private String name; private String code; - private String description; + private String title; private boolean active = false; } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/ContractPayPlanVo.java b/common/src/main/java/com/ecep/contract/vo/ContractPayPlanVo.java index 4af563e..0930117 100644 --- a/common/src/main/java/com/ecep/contract/vo/ContractPayPlanVo.java +++ b/common/src/main/java/com/ecep/contract/vo/ContractPayPlanVo.java @@ -3,6 +3,7 @@ package com.ecep.contract.vo; import com.ecep.contract.model.IdentityEntity; import java.time.LocalDate; +import java.time.LocalDateTime; import lombok.Data; @@ -10,10 +11,10 @@ import lombok.Data; public class ContractPayPlanVo implements IdentityEntity, ContractBasedVo { private Integer id; private Integer contractId; - private Integer order; - private Double amount; - private LocalDate planDate; - private LocalDate actualDate; - private String remark; + private Integer refId; + private Double payCurrency; + private LocalDate payDate; + private LocalDateTime updateDate; + private String payTerm; private boolean paid = false; } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/ContractTypeVo.java b/common/src/main/java/com/ecep/contract/vo/ContractTypeVo.java index 947d6e2..da4e53c 100644 --- a/common/src/main/java/com/ecep/contract/vo/ContractTypeVo.java +++ b/common/src/main/java/com/ecep/contract/vo/ContractTypeVo.java @@ -12,8 +12,5 @@ public class ContractTypeVo implements IdentityEntity, NamedEntity { private String catalog; private String title; private String direction; - private Integer parentId; - private Integer order; - private String description; private boolean active = false; } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/ContractVo.java b/common/src/main/java/com/ecep/contract/vo/ContractVo.java index e276826..ae72706 100644 --- a/common/src/main/java/com/ecep/contract/vo/ContractVo.java +++ b/common/src/main/java/com/ecep/contract/vo/ContractVo.java @@ -8,46 +8,51 @@ import java.time.LocalDateTime; import lombok.Data; @Data -public class ContractVo implements IdentityEntity, NamedEntity { +public class ContractVo implements IdentityEntity, NamedEntity, CompanyBasedVo, ProjectBasedVo { private Integer id; private String guid; private String code; private String name; + /** + * 合同对应的合作方公司 + */ private Integer companyId; - private String companyName; - private Integer customerId; - private String customerName; - private Integer vendorId; - private String vendorName; - private Integer contractTypeId; - private String contractTypeName; - private Integer contractKindId; - private String contractKindName; - private Integer contractGroupId; - private String contractGroupName; - private Integer projectId; - private String projectName; + /** + * 合同所属项目 + */ + private Integer project; + + private Integer typeId; + private Integer kindId; + private Integer groupId; + /** + * 合同的父合同编码 + */ private String parentCode; private LocalDate orderDate; private LocalDate startDate; private LocalDate endDate; + private Integer setupPersonId; - private String setupPersonName; private LocalDate setupDate; + private Integer inurePersonId; - private String inurePersonName; private LocalDate inureDate; + private Integer varyPersonId; - private String varyPersonName; private LocalDate varyDate; + + /** + * 合同所属业务员 + */ private Integer employeeId; - private String employeeName; + /** + * 经办人 + */ private Integer handlerId; - private String handlerName; private String state; private String path; private String description; - private LocalDateTime created; private Double amount; private boolean standardPayWay = false; private boolean standardPContractText = false; @@ -59,5 +64,6 @@ public class ContractVo implements IdentityEntity, NamedEntity { private Double execUnTaxAmount; private ContractPayWay payWay; private boolean active = false; + private LocalDateTime created; private Integer version; } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/CustomerSatisfactionSurveyVo.java b/common/src/main/java/com/ecep/contract/vo/CustomerSatisfactionSurveyVo.java index 96f60bc..2e8ae3c 100644 --- a/common/src/main/java/com/ecep/contract/vo/CustomerSatisfactionSurveyVo.java +++ b/common/src/main/java/com/ecep/contract/vo/CustomerSatisfactionSurveyVo.java @@ -10,7 +10,7 @@ import lombok.Data; @Data public class CustomerSatisfactionSurveyVo implements IdentityEntity, ProjectBasedVo { private Integer id; - private Integer projectId; + private Integer project; private String code; private LocalDate date; private int totalScore; diff --git a/common/src/main/java/com/ecep/contract/vo/DeliverySignMethodVo.java b/common/src/main/java/com/ecep/contract/vo/DeliverySignMethodVo.java index 0a6e6d8..9f3edc7 100644 --- a/common/src/main/java/com/ecep/contract/vo/DeliverySignMethodVo.java +++ b/common/src/main/java/com/ecep/contract/vo/DeliverySignMethodVo.java @@ -1,11 +1,14 @@ package com.ecep.contract.vo; -import com.ecep.contract.model.IdentityEntity; import java.time.LocalDate; + +import com.ecep.contract.model.IdentityEntity; +import com.ecep.contract.model.NamedEntity; + import lombok.Data; @Data -public class DeliverySignMethodVo implements IdentityEntity { +public class DeliverySignMethodVo implements IdentityEntity, NamedEntity { private Integer id; private String name; private String code; diff --git a/common/src/main/java/com/ecep/contract/vo/DepartmentVo.java b/common/src/main/java/com/ecep/contract/vo/DepartmentVo.java index 5fab87b..3ee1e21 100644 --- a/common/src/main/java/com/ecep/contract/vo/DepartmentVo.java +++ b/common/src/main/java/com/ecep/contract/vo/DepartmentVo.java @@ -8,10 +8,8 @@ public class DepartmentVo implements IdentityEntity { private Integer id; private String name; private String code; - private Integer parentId; - private Integer order; + /** 部门负责人 */ private Integer leaderId; - private String leaderName; private String description; private boolean active = false; } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/EmployeeAuthBindVo.java b/common/src/main/java/com/ecep/contract/vo/EmployeeAuthBindVo.java new file mode 100644 index 0000000..7708455 --- /dev/null +++ b/common/src/main/java/com/ecep/contract/vo/EmployeeAuthBindVo.java @@ -0,0 +1,18 @@ +package com.ecep.contract.vo; + +import com.ecep.contract.model.IdentityEntity; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class EmployeeAuthBindVo implements IdentityEntity { + private Integer id; + private Integer employeeId; + private String ip; + private String mac; + private LocalDateTime createTime; + private Integer updaterId; + private LocalDateTime updateTime; + private String description; +} \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/EmployeeLoginHistoryVo.java b/common/src/main/java/com/ecep/contract/vo/EmployeeLoginHistoryVo.java new file mode 100644 index 0000000..75150ea --- /dev/null +++ b/common/src/main/java/com/ecep/contract/vo/EmployeeLoginHistoryVo.java @@ -0,0 +1,16 @@ +package com.ecep.contract.vo; + +import com.ecep.contract.model.IdentityEntity; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class EmployeeLoginHistoryVo implements IdentityEntity { + private Integer id; + private Integer employeeId; + private String ip; + private String mac; + private LocalDateTime loginTime; + private LocalDateTime activeTime; +} \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/EmployeeRoleVo.java b/common/src/main/java/com/ecep/contract/vo/EmployeeRoleVo.java index 28d0c88..a9f638d 100644 --- a/common/src/main/java/com/ecep/contract/vo/EmployeeRoleVo.java +++ b/common/src/main/java/com/ecep/contract/vo/EmployeeRoleVo.java @@ -1,7 +1,10 @@ package com.ecep.contract.vo; +import java.util.List; + import com.ecep.contract.model.IdentityEntity; import com.ecep.contract.model.NamedEntity; + import lombok.Data; @Data @@ -13,4 +16,6 @@ public class EmployeeRoleVo implements IdentityEntity, NamedEntity { private boolean manager = false; private boolean active = true; private String description; + private List functions; + } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/EmployeeVo.java b/common/src/main/java/com/ecep/contract/vo/EmployeeVo.java index 2e3c46c..f4da919 100644 --- a/common/src/main/java/com/ecep/contract/vo/EmployeeVo.java +++ b/common/src/main/java/com/ecep/contract/vo/EmployeeVo.java @@ -16,7 +16,6 @@ public class EmployeeVo implements IdentityEntity, NamedEntity { private String alias; private String code; private Integer departmentId; - private String departmentName; private String position; private String phone; private String email; diff --git a/common/src/main/java/com/ecep/contract/vo/ExtendVendorInfoVo.java b/common/src/main/java/com/ecep/contract/vo/ExtendVendorInfoVo.java index 6664a29..9d770ae 100644 --- a/common/src/main/java/com/ecep/contract/vo/ExtendVendorInfoVo.java +++ b/common/src/main/java/com/ecep/contract/vo/ExtendVendorInfoVo.java @@ -10,7 +10,7 @@ import lombok.Data; public class ExtendVendorInfoVo implements IdentityEntity, ContractBasedVo { private Integer id; private Integer contractId; - private Integer vendorGroupId; + private Integer groupId; /** * 合同序号 */ diff --git a/common/src/main/java/com/ecep/contract/vo/FunctionVo.java b/common/src/main/java/com/ecep/contract/vo/FunctionVo.java index bb257a9..7503f6f 100644 --- a/common/src/main/java/com/ecep/contract/vo/FunctionVo.java +++ b/common/src/main/java/com/ecep/contract/vo/FunctionVo.java @@ -7,11 +7,11 @@ import lombok.Data; public class FunctionVo implements IdentityEntity { private Integer id; private String name; - private String code; + private String key; private Integer parentId; private Integer order; private String description; - private String url; + private String controller; private String icon; private boolean active = false; } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/InventoryHistoryPriceVo.java b/common/src/main/java/com/ecep/contract/vo/InventoryHistoryPriceVo.java new file mode 100644 index 0000000..64a421d --- /dev/null +++ b/common/src/main/java/com/ecep/contract/vo/InventoryHistoryPriceVo.java @@ -0,0 +1,25 @@ +package com.ecep.contract.vo; + +import java.io.Serializable; +import java.time.Year; + +import com.ecep.contract.model.HistoryPrice; +import com.ecep.contract.model.IdentityEntity; + +import lombok.Data; + +@Data +public class InventoryHistoryPriceVo implements IdentityEntity, Serializable { + private static final long serialVersionUID = 1L; + + private Integer id; + private Integer inventoryId; + private Year year; + + private HistoryPrice latestPurchasePrice = new HistoryPrice(); + private HistoryPrice latestSalePrice = new HistoryPrice(); + private HistoryPrice miniPurchasePrice = new HistoryPrice(); + private HistoryPrice miniSalePrice = new HistoryPrice(); + private HistoryPrice maxPurchasePrice = new HistoryPrice(); + private HistoryPrice maxSalePrice = new HistoryPrice(); +} \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/InventoryVo.java b/common/src/main/java/com/ecep/contract/vo/InventoryVo.java index d9ce9b8..0cc0d88 100644 --- a/common/src/main/java/com/ecep/contract/vo/InventoryVo.java +++ b/common/src/main/java/com/ecep/contract/vo/InventoryVo.java @@ -1,8 +1,12 @@ package com.ecep.contract.vo; -import com.ecep.contract.model.IdentityEntity; import java.time.LocalDate; import java.time.LocalDateTime; + +import com.ecep.contract.model.IdentityEntity; +import com.ecep.contract.model.Price; +import com.ecep.contract.model.VolumeSize; + import lombok.Data; @Data @@ -10,36 +14,26 @@ public class InventoryVo implements IdentityEntity { private Integer id; private String name; private String code; + /** + * 目录, InventoryCatalog + */ private Integer catalogId; - private String catalogName; private String specification; private boolean specificationLock = false; private boolean nameLock = false; - private Double purchaseTax; - private Double purchasePrice; - private Double purchaseTaxPrice; - private Double saleTax; - private Double salePrice; - private Double saleTaxPrice; + private Price purchasePrice; + private Price salePrice; private String unit; private Double weight; private Double packagedWeight; private String weightUnit; private String volumeUnit; private String sizeUnit; - private Double volume; - private Double volumeSizeLength; - private Double volumeSizeWidth; - private Double volumeSizeHeight; - private Double packVolume; - private Double packVolumeSizeLength; - private Double packVolumeSizeWidth; - private Double packVolumeSizeHeight; + private VolumeSize volumeSize; + private VolumeSize packagedVolumeSize; private Integer creatorId; - private String creatorName; private LocalDate createTime; private Integer updaterId; - private String updaterName; private LocalDateTime updateDate; private String description; private boolean active = false; diff --git a/common/src/main/java/com/ecep/contract/vo/InvoiceVo.java b/common/src/main/java/com/ecep/contract/vo/InvoiceVo.java index 902f237..5d54329 100644 --- a/common/src/main/java/com/ecep/contract/vo/InvoiceVo.java +++ b/common/src/main/java/com/ecep/contract/vo/InvoiceVo.java @@ -5,18 +5,11 @@ import java.time.LocalDate; import lombok.Data; @Data -public class InvoiceVo implements IdentityEntity { +public class InvoiceVo implements IdentityEntity, CompanyBasedVo { private Integer id; - private Integer contractId; - private Integer contractItemId; - private String invoiceNumber; + private Integer companyId; + private String code; private LocalDate invoiceDate; - private LocalDate issueDate; - private Double amount; - private Double taxAmount; - private Double taxRate; - private Double totalAmount; - private Integer invoiceStatusId; - private String remark; + private String description; private Boolean active = false; } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/ProductTypeVo.java b/common/src/main/java/com/ecep/contract/vo/ProductTypeVo.java index 3326920..e66ac76 100644 --- a/common/src/main/java/com/ecep/contract/vo/ProductTypeVo.java +++ b/common/src/main/java/com/ecep/contract/vo/ProductTypeVo.java @@ -1,10 +1,12 @@ package com.ecep.contract.vo; import com.ecep.contract.model.IdentityEntity; +import com.ecep.contract.model.NamedEntity; + import lombok.Data; @Data -public class ProductTypeVo implements IdentityEntity { +public class ProductTypeVo implements IdentityEntity, NamedEntity { private Integer id; private String name; private String code; diff --git a/common/src/main/java/com/ecep/contract/vo/ProductUsageVo.java b/common/src/main/java/com/ecep/contract/vo/ProductUsageVo.java index 31b2291..72b5ce7 100644 --- a/common/src/main/java/com/ecep/contract/vo/ProductUsageVo.java +++ b/common/src/main/java/com/ecep/contract/vo/ProductUsageVo.java @@ -1,10 +1,12 @@ package com.ecep.contract.vo; import com.ecep.contract.model.IdentityEntity; +import com.ecep.contract.model.NamedEntity; + import lombok.Data; @Data -public class ProductUsageVo implements IdentityEntity { +public class ProductUsageVo implements IdentityEntity, NamedEntity { private Integer id; private String name; private String code; diff --git a/common/src/main/java/com/ecep/contract/vo/ProjectBasedVo.java b/common/src/main/java/com/ecep/contract/vo/ProjectBasedVo.java index 322c542..d3d0e13 100644 --- a/common/src/main/java/com/ecep/contract/vo/ProjectBasedVo.java +++ b/common/src/main/java/com/ecep/contract/vo/ProjectBasedVo.java @@ -1,7 +1,7 @@ package com.ecep.contract.vo; public interface ProjectBasedVo { - Integer getProjectId(); + Integer getProject(); - void setProjectId(Integer projectId); + void setProject(Integer projectId); } diff --git a/common/src/main/java/com/ecep/contract/vo/ProjectBidVo.java b/common/src/main/java/com/ecep/contract/vo/ProjectBidVo.java index 36744d9..ad0ee10 100644 --- a/common/src/main/java/com/ecep/contract/vo/ProjectBidVo.java +++ b/common/src/main/java/com/ecep/contract/vo/ProjectBidVo.java @@ -7,7 +7,7 @@ import lombok.Data; @Data public class ProjectBidVo implements IdentityEntity, ProjectBasedVo { private Integer id; - private Integer projectId; + private Integer project; private int level; private double amount; private Integer evaluationFileId; diff --git a/common/src/main/java/com/ecep/contract/vo/ProjectCostVo.java b/common/src/main/java/com/ecep/contract/vo/ProjectCostVo.java index 6a2328c..6ba8ccd 100644 --- a/common/src/main/java/com/ecep/contract/vo/ProjectCostVo.java +++ b/common/src/main/java/com/ecep/contract/vo/ProjectCostVo.java @@ -8,7 +8,7 @@ import lombok.Data; public class ProjectCostVo implements IdentityEntity, ProjectBasedVo { private Integer id; private Integer contractId; - private Integer projectId; + private Integer project; private int version; private boolean standardPayWay = false; private String noStandardPayWayText; diff --git a/common/src/main/java/com/ecep/contract/vo/ProjectFileVo.java b/common/src/main/java/com/ecep/contract/vo/ProjectFileVo.java new file mode 100644 index 0000000..dea03e3 --- /dev/null +++ b/common/src/main/java/com/ecep/contract/vo/ProjectFileVo.java @@ -0,0 +1,14 @@ +package com.ecep.contract.vo; + +import com.ecep.contract.ProjectFileType; +import com.ecep.contract.model.IdentityEntity; + +import lombok.Data; + +@Data +public class ProjectFileVo implements IdentityEntity { + private Integer id; + private Integer projectId; + private ProjectFileType type; + private String filePath; +} \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/ProjectFundPlanVo.java b/common/src/main/java/com/ecep/contract/vo/ProjectFundPlanVo.java new file mode 100644 index 0000000..a3dd7b1 --- /dev/null +++ b/common/src/main/java/com/ecep/contract/vo/ProjectFundPlanVo.java @@ -0,0 +1,24 @@ +package com.ecep.contract.vo; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +import com.ecep.contract.ContractPayWay; +import com.ecep.contract.model.IdentityEntity; + +import lombok.Data; + +@Data +public class ProjectFundPlanVo implements IdentityEntity { + private Integer id; + private Integer projectId; + private String projectName; + private LocalDate payDate; + private ContractPayWay payWay; + private float payRatio; + private double payCurrency; + private String payTerm; + private Integer contractPayPlanId; + private String contractPayPlanName; + private LocalDateTime updateDate; +} \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/ProjectQuotationVo.java b/common/src/main/java/com/ecep/contract/vo/ProjectQuotationVo.java index 3e9175f..991596a 100644 --- a/common/src/main/java/com/ecep/contract/vo/ProjectQuotationVo.java +++ b/common/src/main/java/com/ecep/contract/vo/ProjectQuotationVo.java @@ -1,13 +1,15 @@ package com.ecep.contract.vo; import com.ecep.contract.model.IdentityEntity; + import java.time.LocalDateTime; + import lombok.Data; @Data public class ProjectQuotationVo implements IdentityEntity, ProjectBasedVo { private Integer id; - private Integer projectId; + private Integer project; private int level; private boolean standardPayWay = false; private String noStandardPayWayText; diff --git a/common/src/main/java/com/ecep/contract/vo/ProjectSaleTypeRequireFileTypeVo.java b/common/src/main/java/com/ecep/contract/vo/ProjectSaleTypeRequireFileTypeVo.java new file mode 100644 index 0000000..77804c3 --- /dev/null +++ b/common/src/main/java/com/ecep/contract/vo/ProjectSaleTypeRequireFileTypeVo.java @@ -0,0 +1,15 @@ +package com.ecep.contract.vo; + +import com.ecep.contract.ContractFileType; +import com.ecep.contract.model.IdentityEntity; + +import lombok.Data; + +@Data +public class ProjectSaleTypeRequireFileTypeVo implements IdentityEntity { + private Integer id; + private Integer saleTypeId; + private String saleTypeName; + private ContractFileType fileType; + private String frequency; +} \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/ProjectVo.java b/common/src/main/java/com/ecep/contract/vo/ProjectVo.java index d460b7d..1b8562e 100644 --- a/common/src/main/java/com/ecep/contract/vo/ProjectVo.java +++ b/common/src/main/java/com/ecep/contract/vo/ProjectVo.java @@ -11,25 +11,16 @@ public class ProjectVo implements IdentityEntity, NamedEntity { private String name; private String code; private Integer customerId; - private String customerName; private Integer projectTypeId; - private String projectTypeName; private Integer industryId; - private String industryName; private Integer saleTypeId; - private String saleTypeName; private Integer productTypeId; - private String productTypeName; private Integer deliverySignMethodId; - private String deliverySignMethodName; private Integer productUsageId; - private String productUsageName; private Integer codeYear; private Integer codeSequenceNumber; private Integer applicantId; - private String applicantName; private Integer authorizerId; - private String authorizerName; private Integer bankAccountId; private Integer invoiceInfoId; private Integer mainContactId; diff --git a/common/src/main/java/com/ecep/contract/vo/PurchaseBillVoucherItemVo.java b/common/src/main/java/com/ecep/contract/vo/PurchaseBillVoucherItemVo.java new file mode 100644 index 0000000..9f89e08 --- /dev/null +++ b/common/src/main/java/com/ecep/contract/vo/PurchaseBillVoucherItemVo.java @@ -0,0 +1,19 @@ +package com.ecep.contract.vo; + +import com.ecep.contract.model.IdentityEntity; + +import lombok.Data; + +@Data +public class PurchaseBillVoucherItemVo implements IdentityEntity, ContractBasedVo { + private Integer id; + private int refId; + private Integer voucherId; + private Integer orderItemId; + private Integer invoiceId; + private Integer inventoryId; + private Integer contractId; + private double quantity; + private double price; + private String description; +} \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/PurchaseBillVoucherVo.java b/common/src/main/java/com/ecep/contract/vo/PurchaseBillVoucherVo.java new file mode 100644 index 0000000..b13d966 --- /dev/null +++ b/common/src/main/java/com/ecep/contract/vo/PurchaseBillVoucherVo.java @@ -0,0 +1,29 @@ +package com.ecep.contract.vo; + +import com.ecep.contract.model.IdentityEntity; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class PurchaseBillVoucherVo implements IdentityEntity, CompanyBasedVo { + private Integer id; + private int refId; + private String code; + /** + * + */ + private Integer companyId; + private Integer invoiceId; + /** + * 业务员 + */ + private Integer employeeId; + private Integer makerId; + private LocalDateTime makerDate; + private LocalDateTime modifyDate; + private Integer verifierId; + private LocalDateTime verifierDate; + private String description; +} \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/PurchaseOrderItemVo.java b/common/src/main/java/com/ecep/contract/vo/PurchaseOrderItemVo.java index 3064e9d..aa22d18 100644 --- a/common/src/main/java/com/ecep/contract/vo/PurchaseOrderItemVo.java +++ b/common/src/main/java/com/ecep/contract/vo/PurchaseOrderItemVo.java @@ -1,22 +1,28 @@ package com.ecep.contract.vo; +import java.time.LocalDate; + import com.ecep.contract.model.IdentityEntity; + import lombok.Data; @Data public class PurchaseOrderItemVo implements IdentityEntity { private Integer id; + + private Integer order; + private Integer inventoryId; + private Integer purchaseOrderId; private Integer contractItemId; - private Integer inventoryId; private String itemName; - private Integer unitId; + private Integer refId; private Double quantity; - private Double unitPrice; - private Double totalPrice; + private Double price; private Double taxRate; - private Double taxAmount; - private Double totalAmount; - private Integer order; + private Double exclusiveTaxPrice; + private String remark; + private LocalDate arriveDate; + private String description; } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/PurchaseSettlementVoucherItemVo.java b/common/src/main/java/com/ecep/contract/vo/PurchaseSettlementVoucherItemVo.java new file mode 100644 index 0000000..e302076 --- /dev/null +++ b/common/src/main/java/com/ecep/contract/vo/PurchaseSettlementVoucherItemVo.java @@ -0,0 +1,24 @@ +package com.ecep.contract.vo; + +import com.ecep.contract.model.IdentityEntity; + +import lombok.Data; + +@Data +public class PurchaseSettlementVoucherItemVo implements IdentityEntity { + private Integer id; + private int refId; + private Integer voucherId; + private String voucherCode; + private Integer accountantId; + private String accountantName; + private Integer invoiceId; + private String invoiceCode; + private Integer receiptId; + private String receiptCode; + private Integer inventoryId; + private String inventoryName; + private double quantity; + private double price; + private String description; +} \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/PurchaseSettlementVoucherVo.java b/common/src/main/java/com/ecep/contract/vo/PurchaseSettlementVoucherVo.java new file mode 100644 index 0000000..1fe21a1 --- /dev/null +++ b/common/src/main/java/com/ecep/contract/vo/PurchaseSettlementVoucherVo.java @@ -0,0 +1,21 @@ +package com.ecep.contract.vo; + +import com.ecep.contract.model.IdentityEntity; + +import lombok.Data; + +import java.time.LocalDate; + +@Data +public class PurchaseSettlementVoucherVo implements IdentityEntity, CompanyBasedVo { + private Integer id; + private int refId; + private String code; + private LocalDate date; + private Integer companyId; + private Integer employeeId; + private String employeeName; + private Integer makerId; + private String makerName; + private String description; +} \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/SalesBillVoucherItemVo.java b/common/src/main/java/com/ecep/contract/vo/SalesBillVoucherItemVo.java new file mode 100644 index 0000000..db7eda3 --- /dev/null +++ b/common/src/main/java/com/ecep/contract/vo/SalesBillVoucherItemVo.java @@ -0,0 +1,18 @@ +package com.ecep.contract.vo; + +import com.ecep.contract.model.IdentityEntity; + +import lombok.Data; + +@Data +public class SalesBillVoucherItemVo implements IdentityEntity { + private Integer id; + private int refId; + private Integer voucherId; + private String voucherCode; + private Integer inventoryId; + private String inventoryName; + private double quantity; + private double price; + private String description; +} \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/SalesBillVoucherVo.java b/common/src/main/java/com/ecep/contract/vo/SalesBillVoucherVo.java new file mode 100644 index 0000000..ff994e0 --- /dev/null +++ b/common/src/main/java/com/ecep/contract/vo/SalesBillVoucherVo.java @@ -0,0 +1,24 @@ +package com.ecep.contract.vo; + +import com.ecep.contract.model.IdentityEntity; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class SalesBillVoucherVo implements IdentityEntity, CompanyBasedVo { + private Integer id; + private int refId; + private String code; + private Integer companyId; + private Integer orderId; + private String orderCode; + private Integer employeeId; + private Integer makerId; + private LocalDateTime makerDate; + private LocalDateTime modifyDate; + private Integer verifierId; + private LocalDateTime verifierDate; + private String description; +} \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/SalesOrderInvoiceVo.java b/common/src/main/java/com/ecep/contract/vo/SalesOrderInvoiceVo.java new file mode 100644 index 0000000..8bce825 --- /dev/null +++ b/common/src/main/java/com/ecep/contract/vo/SalesOrderInvoiceVo.java @@ -0,0 +1,10 @@ +package com.ecep.contract.vo; + +import com.ecep.contract.model.IdentityEntity; + +import lombok.Data; + +@Data +public class SalesOrderInvoiceVo implements IdentityEntity { + private Integer id; +} \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/SalesOrderItemVo.java b/common/src/main/java/com/ecep/contract/vo/SalesOrderItemVo.java index 22d5f50..a7fc8ec 100644 --- a/common/src/main/java/com/ecep/contract/vo/SalesOrderItemVo.java +++ b/common/src/main/java/com/ecep/contract/vo/SalesOrderItemVo.java @@ -3,20 +3,27 @@ package com.ecep.contract.vo; import com.ecep.contract.model.IdentityEntity; import lombok.Data; +import java.time.LocalDate; + @Data public class SalesOrderItemVo implements IdentityEntity { private Integer id; private Integer salesOrderId; + private String code; + private String name; + private Integer contractItemId; private Integer inventoryId; private String itemName; private Integer unitId; - private Double quantity; - private Double unitPrice; - private Double totalPrice; - private Double taxRate; - private Double taxAmount; - private Double totalAmount; - private Integer order; - private String remark; + + private double quantity; + private double price; + private double taxRate; + private double exclusiveTaxPrice; + + private LocalDate startDate; + private LocalDate endDate; + + private String description; } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/SalesOrderVo.java b/common/src/main/java/com/ecep/contract/vo/SalesOrderVo.java index 5b6ac3c..a005101 100644 --- a/common/src/main/java/com/ecep/contract/vo/SalesOrderVo.java +++ b/common/src/main/java/com/ecep/contract/vo/SalesOrderVo.java @@ -1,7 +1,9 @@ package com.ecep.contract.vo; import com.ecep.contract.model.IdentityEntity; + import java.time.LocalDate; + import lombok.Data; @Data @@ -9,13 +11,11 @@ public class SalesOrderVo implements IdentityEntity, ContractBasedVo { private Integer id; private Integer contractId; private String code; - private String name; - private Integer customerId; - private LocalDate orderDate; - private Double totalAmount; - private Double taxAmount; - private Double taxRate; - private Integer statusId; - private String remark; + private Integer employeeId; + private Integer makerId; + private LocalDate makerDate; + private Integer verifierId; + private LocalDate verifierDate; + private String description; private Boolean active = false; } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/UnitVo.java b/common/src/main/java/com/ecep/contract/vo/UnitVo.java index 7ae9efa..06b7b2d 100644 --- a/common/src/main/java/com/ecep/contract/vo/UnitVo.java +++ b/common/src/main/java/com/ecep/contract/vo/UnitVo.java @@ -10,9 +10,12 @@ public class UnitVo implements IdentityEntity, NamedEntity { private Integer id; private String name; private String code; + /** + * 单位类型 + */ private UnitType unitType; private double ratio; private boolean standard; private String description; - private Boolean active; + private boolean active; } \ No newline at end of file diff --git a/common/src/main/java/com/ecep/contract/vo/VendorCatalogVo.java b/common/src/main/java/com/ecep/contract/vo/VendorCatalogVo.java index 31847f7..2c54365 100644 --- a/common/src/main/java/com/ecep/contract/vo/VendorCatalogVo.java +++ b/common/src/main/java/com/ecep/contract/vo/VendorCatalogVo.java @@ -1,6 +1,8 @@ package com.ecep.contract.vo; +import com.ecep.contract.VendorType; import com.ecep.contract.model.IdentityEntity; + import lombok.Data; @Data @@ -8,8 +10,7 @@ public class VendorCatalogVo implements IdentityEntity { private Integer id; private String name; private String code; - private Integer parentId; - private Integer order; + private VendorType type; private String description; private Boolean active; } \ No newline at end of file diff --git a/docs/create_vo.md b/docs/create_vo.md index f0a153d..e75d497 100644 --- a/docs/create_vo.md +++ b/docs/create_vo.md @@ -1,95 +1,283 @@ 更新Vo + # 任务逻辑 + 根据 model 创建、更新 Vo,先检查Vo是否存在,如果不存在则创建Vo,否则根据要求更新Vo 更新结果保存到 D:\idea-workspace\Contract-Manager\docs\create_vo.md -## model 所在目录 -D:\idea-workspace\Contract-Manager\common\src\main\java\com\ecep\contract\model -## vo 目录 -D:\idea-workspace\Contract-Manager\common\src\main\java\com\ecep\contract\vo -## 参考 -D:\idea-workspace\Contract-Manager\common\src\main\java\com\ecep\contract\model\Bank.java -D:\idea-workspace\Contract-Manager\common\src\main\java\com\ecep\contract\vo\BankVo.java +Model和Vo的对应关系记录在 create_vo.md 结果记录中,如果未找到对应的Vo,从结果记录中查看是否有对应关系 + +## model + +- 所在目录: D:\idea-workspace\Contract-Manager\common\src\main\java\com\ecep\contract\model +- 注解为 @Entity 的 .java 文件 +- 请根据所在目录找到的Model,更新本文件中的 Entity 类清单 + 如果 model 不在 Entity 类清单中,从清单中移除 +- Model 需要继承 Voable 接口的类,并且实现 toVo 方 + +### 参考 + +- D:\idea-workspace\Contract-Manager\common\src\main\java\com\ecep\contract\model\Bank.java + +## ViewModel VM + +- 所在目录: D:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\vm +- 继承 IdentityViewModel +- 包含一个 名为 from 的静态方法 + public static BankViewModel from(BankVo v) { + BankViewModel vm = new BankViewModel(); + vm.update(v); + return vm; + } +- 继承实现 void updateFrom(Vo v) 方法 +- 继承实现 void copyTo(Vo v) 方法 +- 关联对象 使用 ObjectProperty,不使用 IntegerProperty +- IdentityViewModel 不需要调整 +- 如果Vo的属性是 boolean,使用 BooleanProperty + +### 参考 + +- D:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\vm\BankViewModel.java +- D:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\vm\CompanyBankAccountViewModel.java + +## vo + +- 所在目录: D:\idea-workspace\Contract-Manager\common\src\main\java\com\ecep\contract\vo + +### 参考 + +- D:\idea-workspace\Contract-Manager\common\src\main\java\com\ecep\contract\vo\BankVo.java + +## Service + +- 所在目录: D:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\service +- 继承 QueryService +- 指定 @Service 注解 +- 如果 指定了 @CacheConfig 注解,则需要实现 findById、findAll、save和delete方法,并且方法上实现 Cache 相关注解,参考 D: + \idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\service\BankService.java +- find** 方法,则通过调用父类的 findAll(params, pageable) 方法实现,如下代码 + ` + public List findAllByCompanyVendor(CompanyVendorVo vendor, LocalDate beginDate, LocalDate endDate) { + return findAll(ParamUtils.builder() + .equals("company", vendor.getCompanyId()) + .between("setupDate", beginDate, endDate) + .build(), Pageable.unpaged()).getContent(); + } + ` +- 查询条件中的 .equals("company", vendor.getCompanyId()) 中的company 是对应 model 中对应的字段的名,不对 vo 中对应字段的名 +- 如果方法内没有具体的实现,也用如上代码实现 + +## Controller + +- ManagerWindowController + - 继承 AbstManagerWindowController + - 实现 createDefaultSkin 方法 返回 ManagerSkin + - 实现 getViewModelService 方法 返回 对应的 Service + - 需要给定以下注解 @Lazy、@Scope("prototype")、@Component、@FxmlPath("/ui/bank-manager.fxml") + +### 参考 + +- D: + \idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\controller\bank\BankManagerWindowController.java +- D:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\controller\bank\BankManagerSkin.java + +## TabSkin + +EditableEntityTableTabSkin + +## TableCell + +- 所在目录: D:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\controller\table\cell +- TableCell extends AsyncUpdateTableCell +- TableVIew 使用 TableCell + - bankAccountTable_bankColumn.setCellValueFactory(param -> param.getValue().getBankId()); + - bankAccountTable_bankColumn.setCellFactory(param -> new BankTableCell<>(getBankService())); + +### 参考 + +D:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\controller\table\cell\BankTableCell.java + +## Combo + +## FXML UI 界面 + +- 所在目录: D:\idea-workspace\Contract-Manager\client\src\main\resources\ui + ## 其他要求 + - 检索到的Model,先记录在 create_vo.md - 主键名称为id,类型都是 Integer - 布尔类型的属性使用 boolean,不要使用 Boolean,初始值为false - 注解为@Embeddable、@MappedSuperclass的Model不需要更新Vo - 更新结果以 Model:Vo (状态) 保存, Model 和 VO 的名称后期后修改,可能会不一一对应 +# Entity 类清单 + +Bank +CloudRk +CloudTyc +CloudYu +Company +CompanyBankAccount +CompanyBlackReason +CompanyContact +CompanyContract +CompanyCustomer +CompanyCustomerEntity +CompanyCustomerEvaluationFormFile +CompanyCustomerFile +CompanyCustomerFileTypeLocal +CompanyExtendInfo +CompanyFile +CompanyFileTypeLocal +CompanyInvoiceInfo +CompanyOldName +CompanyVendor +CompanyVendorApprovedFile +CompanyVendorApprovedItem +CompanyVendorApprovedList +CompanyVendorEntity +CompanyVendorFile +Contract +ContractBidVendor +ContractCatalog +ContractFile +ContractFileTypeLocal +ContractGroup +ContractItem +ContractKind +ContractPayPlan +ContractType +CustomerCatalog +CustomerSatisfactionSurvey +DeliverySignMethod +ExtendVendorInfo +HolidayTable +Inventory +InventoryCatalog +InventoryHistoryPrice +Invoice +ProductType +ProductUsage +Project +ProjectBid +ProjectCost +ProjectCostItem +ProjectFile +ProjectFileTypeLocal +ProjectFundPlan +ProjectIndustry +ProjectQuotation +ProjectSaleType +ProjectSaleTypeRequireFileType +ProjectType +PurchaseBillVoucher +PurchaseBillVoucherItem +PurchaseOrder +PurchaseOrderItem +PurchaseReceipt +PurchaseSettlementVoucher +PurchaseSettlementVoucherItem +SalesBillVoucher +SalesBillVoucherItem +SalesOrder +SalesOrderInvoice +SalesOrderItem +SysConf +Unit +VendorCatalog +VendorFileTypeLocal +VendorGroup +VendorGroupRequireFileType +VendorTypeLocal +VolumeSize + # 结果记录 -已创建: CompanyOldNameVo.java -已创建: ContractCatalogVo.java -已创建: CompanyBlackReasonVo.java -已创建: CompanyContractVo.java -已创建: CompanyCustomerVo.java -已创建: CompanyCustomerEntityVo.java -已创建: CompanyCustomerEvaluationFormFileVo.java -已创建: CompanyCustomerFileVo.java -已创建: CompanyCustomerFileTypeLocalVo.java -已创建: CompanyExtendInfoVo.java -已创建: CompanyFileTypeLocalVo.java -已创建: CompanyVendorVo.java -已创建: CompanyVendorApprovedFileVo.java -已创建: CompanyVendorApprovedItemVo.java -已创建: CompanyVendorApprovedListVo.java -已创建: CompanyVendorEntityVo.java -已创建: CompanyVendorFileVo.java -已创建: CustomerSatisfactionSurveyVo.java (包含active字段,boolean类型并设置初始值) -已创建: EmployeeRoleVo.java (包含systemAdministrator、manager和active字段,boolean类型并设置初始值) -已创建: ProductTypeVo.java (添加boolean类型的active字段并设置初始值false) -已创建: PurchaseOrderVo.java (添加boolean类型的active字段并设置初始值false) -已创建: CloudRkVo.java (添加boolean类型的autoUpdate字段并设置初始值false) -已创建: CloudTycVo.java (添加boolean类型的active字段并设置初始值false) -已创建: CloudYuVo.java (添加boolean类型的active字段并设置初始值false) -已更新: CompanyContactVo.java (将Boolean类型改为boolean并设置初始值) -已更新: ContractTypeVo.java (将Boolean类型改为boolean并设置初始值) -已更新: ContractKindVo.java (将Boolean类型改为boolean并设置初始值) -已更新: ContractPayPlanVo.java (将Boolean类型改为boolean并设置初始值) -已更新: CustomerCatalogVo.java (将Boolean类型改为boolean并设置初始值) -已更新: DepartmentVo.java (将Boolean类型改为boolean并设置初始值) -已更新: FunctionVo.java (将Boolean类型改为boolean并设置初始值) -已更新: ProjectTypeVo.java (将Boolean类型改为boolean并设置初始值) -已更新: ProductTypeVo.java (将Boolean类型改为boolean并设置初始值) -已更新: ProductUsageVo.java (将Boolean类型改为boolean并设置初始值) -已更新: PriceVo.java (将Boolean类型改为boolean并设置初始值) -已更新: ContractGroupVo.java (将Boolean类型改为boolean并设置初始值) -已更新: DeliverySignMethodVo.java (将Boolean类型改为boolean并设置初始值) -已更新: EmployeeVo.java (为boolean类型的active属性设置初始值false) -已更新: InventoryVo.java (将Boolean类型改为boolean并设置初始值) -已更新: InventoryCatalogVo.java (将Boolean类型改为boolean并设置初始值) -已更新: ProjectVo.java (将多个Boolean类型改为boolean并设置初始值) -已更新: ProjectIndustryVo.java (将Boolean类型改为boolean并设置初始值) -已更新: ProjectSaleTypeVo.java (为boolean类型的属性设置初始值false) -已更新: CompanyBankAccountVo.java (为boolean类型的active属性设置初始值false) -已更新: CompanyInvoiceInfoVo.java (将Boolean类型改为boolean并设置初始值) -已更新: CompanyOldNameVo.java (为boolean类型的ambiguity和active属性设置初始值false) -已更新: CompanyVo.java (将Boolean类型改为boolean并设置初始值) -已更新: ContractVo.java (将多个Boolean类型改为boolean并设置初始值) -已更新: PurchaseReceiptVo.java (修正字段名,将Boolean类型的active字段改为boolean类型并设置初始值false) +EmployeeAuthBind: EmployeeAuthBindVo (已创建) +EmployeeLoginHistory: EmployeeLoginHistoryVo (已创建) +ProjectSaleTypeRequireFileType: ProjectSaleTypeRequireFileTypeVo (已创建) +ProjectFundPlan: ProjectFundPlanVo (已创建) +SalesOrderInvoice: SalesOrderInvoiceVo (已创建) +SalesBillVoucherItem: SalesBillVoucherItemVo (已创建) +SalesBillVoucher: SalesBillVoucherVo (已创建) +PurchaseSettlementVoucherItem: PurchaseSettlementVoucherItemVo (已创建) +PurchaseSettlementVoucher: PurchaseSettlementVoucherVo (已创建) +PurchaseBillVoucherItem: PurchaseBillVoucherItemVo (已创建) +PurchaseBillVoucher: PurchaseBillVoucherVo (已创建) +CompanyOldName: CompanyOldNameVo (已创建) +ContractCatalog: ContractCatalogVo (已创建) +CompanyBlackReason: CompanyBlackReasonVo (已创建) +CompanyContract: CompanyContractVo (已创建) +CompanyCustomer: CompanyCustomerVo (已创建) +CompanyCustomerEntity: CompanyCustomerEntityVo (已创建) +CompanyCustomerEvaluationFormFile: CompanyCustomerEvaluationFormFileVo (已创建) +CompanyCustomerFile: CompanyCustomerFileVo (已创建) +CompanyCustomerFileTypeLocal: CompanyCustomerFileTypeLocalVo (已创建) +CompanyExtendInfo: CompanyExtendInfoVo (已创建) +CompanyFileTypeLocal: CompanyFileTypeLocalVo (已创建) +CompanyVendor: CompanyVendorVo (已创建) +CompanyVendorApprovedFile: CompanyVendorApprovedFileVo (已创建) +CompanyVendorApprovedItem: CompanyVendorApprovedItemVo (已创建) +CompanyVendorApprovedList: CompanyVendorApprovedListVo (已创建) +CompanyVendorEntity: CompanyVendorEntityVo (已创建) +CompanyVendorFile: CompanyVendorFileVo (已创建) +CustomerSatisfactionSurvey: CustomerSatisfactionSurveyVo (已创建) +EmployeeRole: EmployeeRoleVo (已创建) +ProductType: ProductTypeVo (已创建) +PurchaseOrder: PurchaseOrderVo (已创建) +CloudRk: CloudRkVo (已创建) +CloudTyc: CloudTycVo (已创建) +CloudYu: CloudYuVo (已创建) +ProjectFile: ProjectFileVo (已创建) -已检查: ContractItemVo.java (已存在且符合要求) -已检查: VolumeSizeVo.java (已存在且符合要求) -已检查: BankVo.java (已存在且符合要求) -已检查: ContractVo.java (已存在且符合要求) -已检查: ContractBidVendorVo.java (已存在且符合要求) -已检查: ContractCatalogVo.java (已存在且符合要求) -已检查: ContractFileVo.java (已存在且符合要求) -已检查: ContractFileTypeLocalVo.java (已存在且符合要求) -已检查: EmployeeVo.java (已存在且符合要求) -已检查: DepartmentVo.java (已存在且符合要求) -已更新: InventoryVo.java (为boolean类型的specificationLock和nameLock字段设置初始值false) -已检查: InventoryCatalogVo.java (已存在且符合要求) -已检查: ProjectVo.java (已存在且符合要求) -已检查: ProjectIndustryVo.java (已存在且符合要求) -已检查: ProjectSaleTypeVo.java (已存在且符合要求) -已检查: CompanyVo.java (已存在且符合要求) -已更新: InvoiceVo.java (为Boolean类型的active字段设置初始值false) -已更新: PurchaseOrderVo.java (为Boolean类型的active字段设置初始值false) -已更新: SalesOrderVo.java (为Boolean类型的active字段设置初始值false) -已创建: ProjectBidVo.java (包含standardPayWay、standardContractText和active字段,boolean类型并设置初始值false) -已创建: ProjectQuotationVo.java (包含standardPayWay和active字段,boolean类型并设置初始值false) -已检查: CompanyBankAccountVo.java (已存在且符合要求) -已创建: ExtendVendorInfoVo.java (包含assignedProvider和prePurchase字段,boolean类型并设置初始值false) -已更新: ProjectCostVo.java (为boolean类型的standardPayWay、standardContractText和importLock字段设置初始值false,并实现ProjectBasedVo接口) -已创建: VendorGroupVo.java (包含active、priceComparison、requireQuotationSheetForBid和canPrePurchase字段,boolean类型并设置初始值false) \ No newline at end of file +CompanyContact: CompanyContactVo (已更新) +ContractType: ContractTypeVo (已更新) +ContractKind: ContractKindVo (已更新) +ContractPayPlan: ContractPayPlanVo (已更新) +CustomerCatalog: CustomerCatalogVo (已更新) +Department: DepartmentVo (已更新) +Function: FunctionVo (已更新) +ProjectType: ProjectTypeVo (已更新) +ProductType: ProductTypeVo (已更新) +ProductUsage: ProductUsageVo (已更新) +Price: PriceVo (已更新) +ContractGroup: ContractGroupVo (已更新) +DeliverySignMethod: DeliverySignMethodVo (已更新) +Employee: EmployeeVo (已更新) +Inventory: InventoryVo (已更新) +InventoryCatalog: InventoryCatalogVo (已更新) +Project: ProjectVo (已更新) +ProjectIndustry: ProjectIndustryVo (已更新) +ProjectSaleType: ProjectSaleTypeVo (已更新) +CompanyBankAccount: CompanyBankAccountVo (已更新) +CompanyInvoiceInfo: CompanyInvoiceInfoVo (已更新) +CompanyOldName: CompanyOldNameVo (已更新) +Company: CompanyVo (已更新) +Contract: ContractVo (已更新) +PurchaseReceipt: PurchaseReceiptVo (已更新) + +ContractItem: ContractItemVo (已检查) +VolumeSize: VolumeSizeVo (已检查) +Bank: BankVo (已检查) +Contract: ContractVo (已检查) +ContractBidVendor: ContractBidVendorVo (已检查) +ContractCatalog: ContractCatalogVo (已检查) +ContractFile: ContractFileVo (已检查) +ContractFileTypeLocal: ContractFileTypeLocalVo (已检查) +Employee: EmployeeVo (已检查) +Department: DepartmentVo (已检查) +Inventory: InventoryVo (已更新) +InventoryCatalog: InventoryCatalogVo (已检查) +Project: ProjectVo (已检查) +ProjectIndustry: ProjectIndustryVo (已检查) +ProjectSaleType: ProjectSaleTypeVo (已检查) +Company: CompanyVo (已检查) +Invoice: InvoiceVo (已更新) +PurchaseOrder: PurchaseOrderVo (已更新) +SalesOrder: SalesOrderVo (已更新) +ProjectBid: ProjectBidVo (已创建) +ProjectQuotation: ProjectQuotationVo (已创建) +CompanyBankAccount: CompanyBankAccountVo (已检查) +ExtendVendorInfo: ExtendVendorInfoVo (已创建) +ProjectCost: ProjectCostVo (已更新) +VendorGroup: VendorGroupVo (已创建) \ No newline at end of file diff --git a/server/src/main/java/com/ecep/contract/cloud/old/OldVersionService.java b/server/src/main/java/com/ecep/contract/cloud/old/OldVersionService.java index 1f89b6e..2af76cb 100644 --- a/server/src/main/java/com/ecep/contract/cloud/old/OldVersionService.java +++ b/server/src/main/java/com/ecep/contract/cloud/old/OldVersionService.java @@ -4,6 +4,7 @@ import java.beans.PropertyDescriptor; import java.io.File; import java.time.Instant; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -514,7 +515,7 @@ public class OldVersionService { CompanyVendor vendor = new CompanyVendor(); vendor.setId(id); vendor.setCompany(updater); - vendor.setCreated(Instant.now()); + vendor.setCreated(LocalDateTime.now()); return vendor; }); @@ -602,7 +603,7 @@ public class OldVersionService { CompanyCustomer customer = new CompanyCustomer(); customer.setId(id); customer.setCompany(updater); - customer.setCreated(Instant.now()); + customer.setCreated(LocalDateTime.now()); return customer; }); if (companyCustomer.getCompany() == null) { 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 1f164b4..3aa0e0e 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 @@ -2,6 +2,7 @@ package com.ecep.contract.cloud.u8.ctx; import java.time.Instant; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; import java.util.Map; import java.util.Objects; @@ -285,7 +286,7 @@ public class CustomerCtx extends AbstractYongYouU8Ctx { companyCustomer.setId(nextId); companyCustomer.setDevelopDate(developDate); holder.info("新客户:" + entity.getName() + "分配编号:" + nextId); - companyCustomer.setCreated(Instant.now()); + companyCustomer.setCreated(LocalDateTime.now()); return companyCustomer; } diff --git a/server/src/main/java/com/ecep/contract/cloud/u8/ctx/VendorCtx.java b/server/src/main/java/com/ecep/contract/cloud/u8/ctx/VendorCtx.java index ff1876c..9727382 100644 --- a/server/src/main/java/com/ecep/contract/cloud/u8/ctx/VendorCtx.java +++ b/server/src/main/java/com/ecep/contract/cloud/u8/ctx/VendorCtx.java @@ -2,6 +2,7 @@ package com.ecep.contract.cloud.u8.ctx; import java.time.Instant; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; import java.util.Map; import java.util.Objects; @@ -308,7 +309,7 @@ public class VendorCtx extends AbstractYongYouU8Ctx { companyVendor.setCatalog(entity.getCatalog()); companyVendor.setDevelopDate(developDate); holder.info("新供应商:" + entity.getName() + "分配编号:" + nextId); - companyVendor.setCreated(Instant.now()); + companyVendor.setCreated(LocalDateTime.now()); return companyVendor; } diff --git a/server/src/main/java/com/ecep/contract/ds/other/service/BankService.java b/server/src/main/java/com/ecep/contract/ds/other/service/BankService.java index 6bad1f2..1e3a47c 100644 --- a/server/src/main/java/com/ecep/contract/ds/other/service/BankService.java +++ b/server/src/main/java/com/ecep/contract/ds/other/service/BankService.java @@ -4,6 +4,9 @@ import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.cache.annotation.Caching; +import org.springframework.cache.annotation.CacheEvict; import org.springframework.context.annotation.Lazy; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -25,6 +28,7 @@ public class BankService implements IEntityService, QueryService { @Autowired private BankRepository bankRepository; + @Cacheable(key = "#id") public Bank findById(Integer id) { return bankRepository.findById(id).orElse(null); } @@ -71,10 +75,12 @@ public class BankService implements IEntityService, QueryService { return bankRepository.findFirstByName(name).orElse(null); } + @Caching(evict = { @CacheEvict(key = "#entity.id") }) public Bank save(Bank entity) { return bankRepository.save(entity); } + @Caching(evict = { @CacheEvict(key = "#entity.id") }) public void delete(Bank entity) { bankRepository.delete(entity); } diff --git a/server/src/main/java/com/ecep/contract/ds/project/service/ProjectService.java b/server/src/main/java/com/ecep/contract/ds/project/service/ProjectService.java index 9ed4b8b..2fa61a7 100644 --- a/server/src/main/java/com/ecep/contract/ds/project/service/ProjectService.java +++ b/server/src/main/java/com/ecep/contract/ds/project/service/ProjectService.java @@ -8,11 +8,6 @@ import java.util.Optional; import java.util.regex.Matcher; import java.util.regex.Pattern; -import com.ecep.contract.QueryService; -import com.ecep.contract.constant.ProjectConstant; -import com.ecep.contract.model.*; -import com.fasterxml.jackson.databind.JsonNode; -import org.hibernate.Hibernate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -27,9 +22,20 @@ import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import com.ecep.contract.IEntityService; +import com.ecep.contract.QueryService; +import com.ecep.contract.constant.ProjectConstant; import com.ecep.contract.ds.other.service.SysConfService; import com.ecep.contract.ds.project.repository.ProjectRepository; +import com.ecep.contract.model.Contract; +import com.ecep.contract.model.DeliverySignMethod; +import com.ecep.contract.model.ProductType; +import com.ecep.contract.model.ProductUsage; +import com.ecep.contract.model.Project; +import com.ecep.contract.model.ProjectIndustry; +import com.ecep.contract.model.ProjectSaleType; +import com.ecep.contract.model.ProjectType; import com.ecep.contract.util.SpecificationUtils; +import com.fasterxml.jackson.databind.JsonNode; /** * 项目服务 diff --git a/server/src/main/java/com/ecep/contract/ds/vendor/service/CompanyVendorService.java b/server/src/main/java/com/ecep/contract/ds/vendor/service/CompanyVendorService.java index 1a8c4ff..b074b37 100644 --- a/server/src/main/java/com/ecep/contract/ds/vendor/service/CompanyVendorService.java +++ b/server/src/main/java/com/ecep/contract/ds/vendor/service/CompanyVendorService.java @@ -38,7 +38,8 @@ import java.util.stream.Collectors; @Lazy @Service @CacheConfig(cacheNames = CompanyVendorConstant.CACHE_NAME) -public class CompanyVendorService extends CompanyBasicService implements IEntityService, QueryService { +public class CompanyVendorService extends CompanyBasicService + implements IEntityService, QueryService { private static final Logger logger = LoggerFactory.getLogger(CompanyVendorService.class); @@ -84,26 +85,21 @@ public class CompanyVendorService extends CompanyBasicService implements IEntity return companyVendorRepository.findByCompany(company).orElse(null); } - @Caching( - evict = { - @CacheEvict(key = "#p0.id") - } - ) + @Caching(evict = { + @CacheEvict(key = "#p0.id") + }) public CompanyVendor save(CompanyVendor companyVendor) { return companyVendorRepository.save(companyVendor); } - @Caching( - evict = { - @CacheEvict(key = "#p0.id") - } - ) + @Caching(evict = { + @CacheEvict(key = "#p0.id") + }) @Override public void delete(CompanyVendor entity) { companyVendorRepository.delete(entity); } - @Override public Specification getSpecification(String searchText) { if (!StringUtils.hasText(searchText)) { @@ -169,7 +165,7 @@ public class CompanyVendorService extends CompanyBasicService implements IEntity // 有修改和新导入的文件 List retrieveFiles = new ArrayList<>(); - //TODO 供应商有曾用名,可能存在多个目录 + // TODO 供应商有曾用名,可能存在多个目录 fetchFiles(companyVendor.getPath(), needMoveToCompanyPath, retrieveFiles, map, status); // 移动文件到公司目录下 to company path @@ -177,19 +173,18 @@ public class CompanyVendorService extends CompanyBasicService implements IEntity status.accept("导入 " + retrieveFiles.size() + " 个文件"); if (!retrieveFiles.isEmpty()) { - //update db + // update db retrieveFiles.forEach(v -> v.setVendor(companyVendor)); companyVendorFileService.saveAll(retrieveFiles); modified = true; } - return modified; } - @Override - protected > boolean fillFileAsDefaultType(F dbFile, File file, Consumer status) { + protected > boolean fillFileAsDefaultType(F dbFile, File file, + Consumer status) { dbFile.setType((T) VendorFileType.General); fillFile(dbFile, file, null, status); companyVendorFileService.save((CompanyVendorFile) dbFile); @@ -197,7 +192,8 @@ public class CompanyVendorService extends CompanyBasicService implements IEntity } @Override - protected > F fillFileType(File file, List fileList, Consumer status) { + protected > F fillFileType(File file, List fileList, + Consumer status) { CompanyVendorFile vendorFile = new CompanyVendorFile(); vendorFile.setType(VendorFileType.General); vendorFile.setFilePath(file.getAbsolutePath()); @@ -216,7 +212,8 @@ public class CompanyVendorService extends CompanyBasicService implements IEntity } @Override - protected > boolean fillFileAsEvaluationFile(F customerFile, File file, List fileList, Consumer status) { + protected > boolean fillFileAsEvaluationFile(F customerFile, File file, + List fileList, Consumer status) { boolean modified = super.fillFileAsEvaluationFile(customerFile, file, fileList, status); // 当评价表有日期,并且未设审核时 boolean valid = isArchiveFile(customerFile.getFilePath()) && customerFile.getSignDate() != null; @@ -233,7 +230,6 @@ public class CompanyVendorService extends CompanyBasicService implements IEntity || fileName.contains(CompanyVendorConstant.EVALUATION_FORM_NAME3); } - public void verify(CompanyVendor companyVendor, MessageHolder holder) { if (companyVendor.getType() == null) { holder.warn("数据异常,未设置供应商类型"); @@ -259,7 +255,8 @@ public class CompanyVendorService extends CompanyBasicService implements IEntity if (entStatus.contains("注销")) { holder.error("营业状态异常:" + entStatus + ", 自动设置为不合格"); companyVendor.setType(VendorType.UNQUALIFIED); - companyVendor.setDescription(MyStringUtils.appendIfAbsent(companyVendor.getDescription(), "自动检测到营业状态为" + entStatus + ",设置为不合格供应商.")); + companyVendor.setDescription(MyStringUtils.appendIfAbsent(companyVendor.getDescription(), + "自动检测到营业状态为" + entStatus + ",设置为不合格供应商.")); modified = true; } } else { @@ -355,7 +352,6 @@ public class CompanyVendorService extends CompanyBasicService implements IEntity return new File(path); } - public boolean makePathAbsent(CompanyVendor companyVendor) { String path = companyVendor.getPath(); if (StringUtils.hasText(path)) { @@ -384,7 +380,8 @@ public class CompanyVendorService extends CompanyBasicService implements IEntity } String companyName = company.getName(); - String fileName = CompanyUtils.formatCompanyVendorId(companyVendor.getId()) + "-" + FileUtils.escapeFileName(companyName); + String fileName = CompanyUtils.formatCompanyVendorId(companyVendor.getId()) + "-" + + FileUtils.escapeFileName(companyName); File dir = new File(basePath, fileName); if (!dir.exists()) { @@ -398,13 +395,13 @@ public class CompanyVendorService extends CompanyBasicService implements IEntity public void resetTo(Company from, Company to) { Optional optional = companyVendorRepository.findByCompany(from); optional.ifPresent(companyVendor -> { - companyVendor.setDescription(MyStringUtils.appendIfAbsent(companyVendor.getDescription(), "转自 " + from.getId())); + companyVendor + .setDescription(MyStringUtils.appendIfAbsent(companyVendor.getDescription(), "转自 " + from.getId())); companyVendor.setCompany(to); companyVendorRepository.save(companyVendor); }); } - public void deleteByCompany(Company company) { int deleted = companyVendorRepository.deleteAllByCompany(company); if (deleted > 0) { @@ -428,12 +425,10 @@ public class CompanyVendorService extends CompanyBasicService implements IEntity return vendorClassRepository.findByCode(code).orElse(null); } - @Caching( - evict = { - @CacheEvict(key = "'catalog-'+#p0.id"), - @CacheEvict(key = "'catalog-code-'+#p0.code") - } - ) + @Caching(evict = { + @CacheEvict(key = "'catalog-'+#p0.id"), + @CacheEvict(key = "'catalog-code-'+#p0.code") + }) public VendorCatalog save(VendorCatalog catalog) { return vendorClassRepository.save(catalog); } @@ -446,11 +441,9 @@ public class CompanyVendorService extends CompanyBasicService implements IEntity return list; } - @Caching( - evict = { - @CacheEvict(key = "'type-'+#p0.lang"), - } - ) + @Caching(evict = { + @CacheEvict(key = "'type-'+#p0.lang"), + }) public VendorTypeLocal save(VendorTypeLocal type) { return vendorTypeLocalRepository.save(type); } @@ -459,5 +452,4 @@ public class CompanyVendorService extends CompanyBasicService implements IEntity return companyVendorRepository.count(spec); } - } diff --git a/server/src/main/java/com/ecep/contract/handler/WebSocketServerHandler.java b/server/src/main/java/com/ecep/contract/handler/WebSocketServerHandler.java index d765a9e..4fb5278 100644 --- a/server/src/main/java/com/ecep/contract/handler/WebSocketServerHandler.java +++ b/server/src/main/java/com/ecep/contract/handler/WebSocketServerHandler.java @@ -6,6 +6,7 @@ import com.ecep.contract.ds.other.service.EmployeeLoginHistoryService; import com.ecep.contract.ds.other.service.EmployeeService; import com.ecep.contract.model.Employee; import com.ecep.contract.model.EmployeeLoginHistory; +import com.ecep.contract.model.Voable; import com.ecep.contract.service.WebSocketServerTaskManager; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; @@ -112,7 +113,6 @@ public class WebSocketServerHandler extends TextWebSocketHandler { sessionInfo.setPingPongScheduledFuture(schedule); } - /** * 接收文本消息时调用 */ @@ -157,7 +157,6 @@ public class WebSocketServerHandler extends TextWebSocketHandler { return false; } - if (jsonNode.has(WebSocketConstant.MESSAGE_ID_FIELD_NAME)) { // 处理 messageId 的消息 String messageId = jsonNode.get(WebSocketConstant.MESSAGE_ID_FIELD_NAME).asText(); @@ -176,8 +175,8 @@ public class WebSocketServerHandler extends TextWebSocketHandler { return false; } - - private void handleAsMessageCallback(WebSocketSession session, String messageId, JsonNode jsonNode) throws Exception { + private void handleAsMessageCallback(WebSocketSession session, String messageId, JsonNode jsonNode) + throws Exception { if (!jsonNode.has(WebSocketConstant.SERVICE_FIELD_NAME)) { throw new IllegalArgumentException("缺失 service 参数"); } @@ -213,7 +212,11 @@ public class WebSocketServerHandler extends TextWebSocketHandler { } Map map = new HashMap<>(); - map.put("data", result); + if (result instanceof Voable) { + map.put("data", ((Voable) result).toVo()); + } else { + map.put("data", result); + } map.put(WebSocketConstant.MESSAGE_ID_FIELD_NAME, messageId); map.put(WebSocketConstant.SUCCESS_FIELD_VALUE, true); @@ -222,9 +225,9 @@ public class WebSocketServerHandler extends TextWebSocketHandler { } - private Object invokerOtherMethod(Object service, String methodName, JsonNode argumentsNode) - throws NoSuchMethodException, SecurityException, InvocationTargetException, IllegalAccessException, ClassNotFoundException, JsonProcessingException { + throws NoSuchMethodException, SecurityException, InvocationTargetException, IllegalAccessException, + ClassNotFoundException, JsonProcessingException { int size = argumentsNode.size(); Class targetClass = getTargetClass(service.getClass()); if (size == 0) { @@ -261,7 +264,6 @@ public class WebSocketServerHandler extends TextWebSocketHandler { } } - private Object invokerDeleteMethod(Object service, JsonNode argumentsNode) { JsonNode paramsNode = argumentsNode.get(0); if (!paramsNode.has("id")) { @@ -472,7 +474,12 @@ public class WebSocketServerHandler extends TextWebSocketHandler { PageArgument pageArgument = objectMapper.treeToValue(pageableNode, PageArgument.class); QueryService entityService = (QueryService) service; Page page = entityService.findAll(paramsNode, pageArgument.toPageable()); - return PageContent.of(page); + return PageContent.of(page.map(entity -> { + if (entity instanceof Voable) { + return ((Voable) entity).toVo(); + } + return entity; + })); } private Object invokerCountMethod(Object service, JsonNode argumentsNode) { @@ -487,7 +494,6 @@ public class WebSocketServerHandler extends TextWebSocketHandler { _sendError(session, WebSocketConstant.MESSAGE_ID_FIELD_NAME, messageId, message); } - private void _sendError(WebSocketSession session, String fieldName, String messageId, String message) { if (session == null || !session.isOpen()) { logger.warn("尝试向已关闭的WebSocket会话发送错误消息: {}", message); @@ -498,8 +504,7 @@ public class WebSocketServerHandler extends TextWebSocketHandler { String errorMessage = objectMapper.writeValueAsString(Map.of( fieldName, messageId, WebSocketConstant.SUCCESS_FIELD_VALUE, false, - WebSocketConstant.MESSAGE_FIELD_NAME, message - )); + WebSocketConstant.MESSAGE_FIELD_NAME, message)); // 检查会话状态并尝试发送错误消息 if (session.isOpen()) {