feat: 新增多个服务类及工具类,重构部分代码结构

重构服务类结构,将分散的服务统一整合到service包下
新增ProjectConstant常量类及多个实体服务类
添加SecurityUtils安全工具类和BeanCacher工具类
优化部分UI控件和转换器的实现
This commit is contained in:
2025-09-06 13:43:52 +08:00
parent 0e444508ff
commit effd7b103c
253 changed files with 2920 additions and 1646 deletions

View File

@@ -1,23 +1,23 @@
package com.ecep.contract.controller; package com.ecep.contract.controller;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import org.hibernate.Hibernate; import org.hibernate.Hibernate;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import com.ecep.contract.SpringApp; import com.ecep.contract.SpringApp;
import com.ecep.contract.cloud.tyc.CloudTycService;
import com.ecep.contract.controller.company.CompanyWindowController; import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.ds.company.service.CompanyService; 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.CloudTyc;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.ui.table.cell.CompanyTableCell; import com.ecep.contract.service.CloudTycService;
import com.ecep.contract.ui.table.cell.LocalDateTimeTableCell; import com.ecep.contract.service.CompanyService;
import com.ecep.contract.vm.CloudTycInfoViewModel; import com.ecep.contract.vm.CloudTycInfoViewModel;
import jakarta.persistence.criteria.Path;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.scene.control.ContextMenu; import javafx.scene.control.ContextMenu;
@@ -54,23 +54,10 @@ public class CloudTycManagerSkin
@Override @Override
protected List<CloudTycInfoViewModel> loadTableData() { protected List<CloudTycInfoViewModel> loadTableData() {
String searchText = controller.searchKeyField.getText(); String searchText = controller.searchKeyField.getText();
Specification<CloudTyc> spec = null; Map<String, Object> spec = new HashMap<>();
if (StringUtils.hasText(searchText)) { if (StringUtils.hasText(searchText)) {
spec.put("searchText", searchText);
Specification<CloudTyc> companySpec = (root, query, builder) -> {
Path<Object> company = root.get("company");
return builder.or(
builder.like(company.get("name"), "%" + searchText + "%"),
builder.like(company.get("shortName"), "%" + searchText + "%"));
};
Specification<CloudTyc> cloudIdSpec = (root, query, builder) -> {
return builder.like(root.get("cloudId"), "%" + searchText + "%");
};
spec = Specification.anyOf(companySpec, cloudIdSpec);
} }
Page<CloudTyc> page = getCloudTycService().findAll(spec, getPageable()); Page<CloudTyc> page = getCloudTycService().findAll(spec, getPageable());
updateFooter(page); updateFooter(page);
return page.map(CloudTycInfoViewModel::from).toList(); return page.map(CloudTycInfoViewModel::from).toList();

View File

@@ -1,20 +1,17 @@
package com.ecep.contract.controller; package com.ecep.contract.controller;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Objects;
import com.ecep.contract.util.FxmlPath;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.cloud.CloudBaseInfo;
import com.ecep.contract.cloud.CloudInfo;
import com.ecep.contract.cloud.tyc.CloudTycService;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.model.CloudTyc; import com.ecep.contract.model.CloudTyc;
import com.ecep.contract.model.Company; 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.vm.CloudTycInfoViewModel;
import javafx.fxml.FXML; import javafx.fxml.FXML;
@@ -73,24 +70,4 @@ public class CloudTycManagerWindowController
super.show(stage); super.show(stage);
getTitle().set("数据源:天眼查"); getTitle().set("数据源:天眼查");
} }
boolean copyTo(CloudInfo v, CloudBaseInfo cloudRk) {
boolean modified = false;
if (!Objects.equals(cloudRk.getLatestUpdate(), v.getLatestUpdate())) {
cloudRk.setLatestUpdate(v.getLatestUpdate());
modified = true;
}
if (!Objects.equals(cloudRk.getCloudId(), v.getCloudId())) {
cloudRk.setCloudId(v.getCloudId());
modified = true;
}
if (!Objects.equals(cloudRk.getCompany(), v.getCompany())) {
cloudRk.setCompany(v.getCompany());
modified = true;
}
return modified;
}
} }

View File

@@ -5,8 +5,6 @@ import java.util.List;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.FxmlUtils;
import org.controlsfx.control.TaskProgressView; import org.controlsfx.control.TaskProgressView;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -16,27 +14,24 @@ import org.springframework.context.annotation.Scope;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.CurrentEmployeeInitialedEvent;
import com.ecep.contract.Desktop; import com.ecep.contract.Desktop;
import com.ecep.contract.DesktopUtils; import com.ecep.contract.DesktopUtils;
import com.ecep.contract.cloud.old.OldVersionService; import com.ecep.contract.controller.bank.BankManagerWindowController;
import com.ecep.contract.cloud.rk.CloudRkManagerWindowController; import com.ecep.contract.controller.company.CompanyManagerWindowController;
import com.ecep.contract.cloud.rk.CloudRkService; import com.ecep.contract.controller.contract.ContractManagerWindowController;
import com.ecep.contract.cloud.tyc.CloudTycManagerWindowController; import com.ecep.contract.controller.customer.CompanyCustomerManagerWindowController;
import com.ecep.contract.cloud.u8.ContractSyncTask; import com.ecep.contract.controller.department.DepartmentManagerWindowController;
import com.ecep.contract.cloud.u8.YongYouU8ManagerWindowController; import com.ecep.contract.controller.employee.EmployeeManagerWindowController;
import com.ecep.contract.cloud.u8.YongYouU8Service; import com.ecep.contract.controller.inventory.InventoryManagerWindowController;
import com.ecep.contract.ds.company.controller.CompanyManagerWindowController; import com.ecep.contract.controller.permission.EmployeeFunctionsManagerWindowController;
import com.ecep.contract.ds.contract.controller.ContractManagerWindowController; import com.ecep.contract.controller.permission.EmployeeRoleManagerWindowController;
import com.ecep.contract.ds.customer.controller.CompanyCustomerManagerWindowController; import com.ecep.contract.controller.project.ProjectManagerWindowController;
import com.ecep.contract.ds.other.controller.bank.BankManagerWindowController; import com.ecep.contract.controller.vendor.CompanyVendorManagerWindowController;
import com.ecep.contract.ds.other.controller.department.DepartmentManagerWindowController; import com.ecep.contract.service.CloudRkService;
import com.ecep.contract.ds.other.controller.employee.EmployeeManagerWindowController; import com.ecep.contract.service.YongYouU8Service;
import com.ecep.contract.ds.other.controller.inventory.InventoryManagerWindowController; import com.ecep.contract.task.ContractSyncTask;
import com.ecep.contract.ds.other.controller.permission.EmployeeFunctionsManagerWindowController; import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.other.controller.permission.EmployeeRoleManagerWindowController; import com.ecep.contract.util.FxmlUtils;
import com.ecep.contract.ds.project.controller.ProjectManagerWindowController;
import com.ecep.contract.ds.vendor.controller.CompanyVendorManagerWindowController;
import com.ecep.contract.vm.CurrentEmployee; import com.ecep.contract.vm.CurrentEmployee;
import javafx.concurrent.Task; import javafx.concurrent.Task;
@@ -110,10 +105,6 @@ public class HomeWindowController extends BaseController {
logger.info("You are administrator, try schedule sync tasks."); logger.info("You are administrator, try schedule sync tasks.");
} }
Desktop.instance.getExecutorService().schedule(() -> { Desktop.instance.getExecutorService().schedule(() -> {
try {
getBean(OldVersionService.class).scheduledTasks(taskProgressView);
} catch (BeansException ignored) {
}
try { try {
getBean(YongYouU8Service.class).scheduledTasks(taskProgressView); getBean(YongYouU8Service.class).scheduledTasks(taskProgressView);
} catch (BeansException ignored) { } catch (BeansException ignored) {

View File

@@ -1,11 +1,5 @@
package com.ecep.contract.controller; package com.ecep.contract.controller;
import static com.ecep.contract.AppV2.DEFAULT_DB_DATABASE;
import static com.ecep.contract.AppV2.DEFAULT_DB_HOST;
import static com.ecep.contract.AppV2.DEFAULT_DB_PASSWORD;
import static com.ecep.contract.AppV2.DEFAULT_DB_PORT;
import static com.ecep.contract.AppV2.DEFAULT_DB_USERNAME;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.net.Inet4Address; import java.net.Inet4Address;
import java.net.InetAddress; import java.net.InetAddress;
@@ -36,7 +30,6 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.Desktop; import com.ecep.contract.Desktop;
import com.ecep.contract.MessageHolder; import com.ecep.contract.MessageHolder;
import com.ecep.contract.SpringApp; import com.ecep.contract.SpringApp;
import com.ecep.contract.ds.other.controller.HomeWindowController;
import com.zaxxer.hikari.HikariDataSource; import com.zaxxer.hikari.HikariDataSource;
import javafx.application.Platform; import javafx.application.Platform;
@@ -82,24 +75,9 @@ public class LoginWidowController implements MessageHolder {
} }
String getHost() { String getHost() {
return properties.getProperty("db.server.host", DEFAULT_DB_HOST); return properties.getProperty("server.host");
} }
String getPort() {
return properties.getProperty("db.server.port", DEFAULT_DB_PORT);
}
String getDatabase() {
return properties.getProperty("db.server.database", DEFAULT_DB_DATABASE);
}
public String getUserName() {
return properties.getProperty("db.server.username", DEFAULT_DB_USERNAME);
}
public String getPassword() {
return properties.getProperty("db.server.password", DEFAULT_DB_PASSWORD);
}
public void tryLogin() { public void tryLogin() {
// CompletableFuture<ButtonType> future = new CompletableFuture<>(); // CompletableFuture<ButtonType> future = new CompletableFuture<>();
@@ -122,6 +100,16 @@ public class LoginWidowController implements MessageHolder {
} }
private String getPassword() {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'getPassword'");
}
private String getUserName() {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'getUserName'");
}
CompletableFuture<List<LoginWidowController.MacIP>> getMacAndIP() { CompletableFuture<List<LoginWidowController.MacIP>> getMacAndIP() {
return CompletableFuture.supplyAsync(() -> { return CompletableFuture.supplyAsync(() -> {
// mac ip // mac ip
@@ -204,6 +192,16 @@ public class LoginWidowController implements MessageHolder {
} }
private String getDatabase() {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'getDatabase'");
}
private String getPort() {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'getPort'");
}
private void createSession(Connection connection, EmployeeInfo employeeInfo) { private void createSession(Connection connection, EmployeeInfo employeeInfo) {
employeeInfo.sessionId = addHistory(connection, employeeInfo.employeeId, employeeInfo.binds.getFirst()); employeeInfo.sessionId = addHistory(connection, employeeInfo.employeeId, employeeInfo.binds.getFirst());
} }

View File

@@ -8,15 +8,16 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.cloud.u8.YongYouU8Service; import com.ecep.contract.constant.CompanyCustomerConstant;
import com.ecep.contract.constant.CompanyVendorConstant; import com.ecep.contract.constant.CompanyVendorConstant;
import com.ecep.contract.ds.contract.service.ContractService; import com.ecep.contract.constant.ContractConstant;
import com.ecep.contract.ds.customer.service.CompanyCustomerFileService; import com.ecep.contract.service.CompanyCustomerFileService;
import com.ecep.contract.ds.customer.service.CompanyCustomerService; import com.ecep.contract.service.CompanyCustomerService;
import com.ecep.contract.service.ContractService;
import com.ecep.contract.service.YongYouU8Service;
import com.ecep.contract.util.StringConfig; import com.ecep.contract.util.StringConfig;
import jakarta.annotation.PreDestroy; import jakarta.annotation.PreDestroy;
import javafx.beans.property.SimpleStringProperty;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.control.Label; import javafx.scene.control.Label;
@@ -44,19 +45,14 @@ public class SysConfWindowController extends BaseController {
public Label customerEvaluationFormTemplateLabel; public Label customerEvaluationFormTemplateLabel;
public Label customerSaleBookPathLabel; public Label customerSaleBookPathLabel;
StringConfig contractPathConfig = new StringConfig(ContractService.CONTRACT_BASE_PATH); StringConfig contractPathConfig = new StringConfig(ContractConstant.KEY_BASE_PATH);
StringConfig vendorPathConfig = new StringConfig(CompanyVendorConstant.KEY_BASE_PATH); StringConfig vendorPathConfig = new StringConfig(CompanyVendorConstant.KEY_BASE_PATH);
StringConfig vendorEvaluationFormTemplateConfig = new StringConfig( StringConfig vendorEvaluationFormTemplateConfig = new StringConfig(
CompanyVendorConstant.KEY_EVALUATION_FORM_TEMPLATE); CompanyVendorConstant.KEY_EVALUATION_FORM_TEMPLATE);
StringConfig customerPathConfig = new StringConfig(CompanyCustomerService.KEY_BASE_PATH); StringConfig customerPathConfig = new StringConfig(CompanyCustomerConstant.KEY_BASE_PATH);
StringConfig customerEvaluationFormTemplateConfig = new StringConfig( StringConfig customerEvaluationFormTemplateConfig = new StringConfig(
CompanyCustomerFileService.KEY_EVALUATION_FORM_TEMPLATE); CompanyCustomerConstant.KEY_EVALUATION_FORM_TEMPLATE);
StringConfig customerSaleBookPathConfig = new StringConfig(CompanyCustomerService.KEY_SALEBOOK_PATH); StringConfig customerSaleBookPathConfig = new StringConfig(CompanyCustomerConstant.KEY_SALEBOOK_PATH);
StringConfig u8DataBaseServerHostConfig = new StringConfig(YongYouU8Service.KEY_HOST_IP);
StringConfig u8DataBaseCatalogConfig = new StringConfig(YongYouU8Service.KEY_DATABASE);
StringConfig u8DataBaseUserNameConfig = new StringConfig(YongYouU8Service.KEY_USER_NAME);
StringConfig u8DataBasePasswordConfig = new StringConfig(YongYouU8Service.KEY_PASSWORD);
public void initialize() { public void initialize() {
contractPathConfig.setControl(companyContractPathLabel); contractPathConfig.setControl(companyContractPathLabel);
@@ -74,15 +70,6 @@ public class SysConfWindowController extends BaseController {
customerSaleBookPathConfig.setControl(customerSaleBookPathLabel); customerSaleBookPathConfig.setControl(customerSaleBookPathLabel);
customerSaleBookPathConfig.initialize(); customerSaleBookPathConfig.initialize();
u8DataBaseServerHostConfig.setControl(u8DataBaseServerHostField);
u8DataBaseServerHostConfig.initialize();
u8DataBaseCatalogConfig.setControl(u8DataBaseCatalogField);
u8DataBaseCatalogConfig.initialize();
u8DataBaseUserNameConfig.setControl(u8DataBaseUserNameField);
u8DataBaseUserNameConfig.initialize();
u8DataBasePasswordConfig.setControl(u8DataBasePasswordField);
u8DataBasePasswordConfig.initialize();
logger.debug("#initialize()"); logger.debug("#initialize()");
} }
@@ -101,7 +88,7 @@ public class SysConfWindowController extends BaseController {
} }
public void changeCompanyContractPath(ActionEvent actionEvent) { public void changeCompanyContractPath(ActionEvent actionEvent) {
directoryChoose(contractPathConfig, "请选择合同目录", ContractService.CONTRACT_BASE_PATH, actionEvent); directoryChoose(contractPathConfig, "请选择合同目录", ContractConstant.KEY_BASE_PATH, actionEvent);
} }
public void changeVendorPath(ActionEvent actionEvent) { public void changeVendorPath(ActionEvent actionEvent) {
@@ -109,11 +96,11 @@ public class SysConfWindowController extends BaseController {
} }
public void changeCustomerPath(ActionEvent actionEvent) { public void changeCustomerPath(ActionEvent actionEvent) {
directoryChoose(customerPathConfig, "请选择客户目录", CompanyCustomerService.KEY_BASE_PATH, actionEvent); directoryChoose(customerPathConfig, "请选择客户目录", CompanyCustomerConstant.KEY_BASE_PATH, actionEvent);
} }
public void changeCustomerSaleBookPath(ActionEvent actionEvent) { public void changeCustomerSaleBookPath(ActionEvent actionEvent) {
directoryChoose(customerSaleBookPathConfig, "请选择销售台账目录", "customer.salebook.path", actionEvent); directoryChoose(customerSaleBookPathConfig, "请选择销售台账目录", CompanyCustomerConstant.KEY_SALEBOOK_PATH, actionEvent);
} }
// 模拟销毁方法 // 模拟销毁方法
@@ -139,7 +126,7 @@ public class SysConfWindowController extends BaseController {
public void changeCustomerEvaluationFormTemplate(ActionEvent actionEvent) { public void changeCustomerEvaluationFormTemplate(ActionEvent actionEvent) {
fileChoose(customerEvaluationFormTemplateConfig, "请选择客户资信评估表模板", fileChoose(customerEvaluationFormTemplateConfig, "请选择客户资信评估表模板",
CompanyCustomerFileService.KEY_EVALUATION_FORM_TEMPLATE, actionEvent); CompanyCustomerConstant.KEY_EVALUATION_FORM_TEMPLATE, actionEvent);
} }
public void changeVendorEvaluationFormTemplate(ActionEvent actionEvent) { public void changeVendorEvaluationFormTemplate(ActionEvent actionEvent) {

View File

@@ -1,17 +1,16 @@
package com.ecep.contract.controller; package com.ecep.contract.controller;
import com.ecep.contract.util.FxmlPath;
import org.controlsfx.control.ToggleSwitch; import org.controlsfx.control.ToggleSwitch;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.cloud.u8.ctx.CompanyCtx; import com.ecep.contract.constant.CloudYuConstant;
import com.ecep.contract.cloud.u8.ctx.ContractCtx; import com.ecep.contract.util.BooleanConfig;
import com.ecep.contract.ds.other.BooleanConfig; import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.other.LocalDateConfig; import com.ecep.contract.util.LocalDateConfig;
import com.ecep.contract.ds.other.LocalDateTimeConfig; import com.ecep.contract.util.LocalDateTimeConfig;
import com.ecep.contract.ds.other.StringConfig; import com.ecep.contract.util.StringConfig;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.DatePicker; import javafx.scene.control.DatePicker;
@@ -37,11 +36,11 @@ public class YongYouU8ConfigWindowController extends BaseController {
@FXML @FXML
private ToggleSwitch use_latest_id; private ToggleSwitch use_latest_id;
LocalDateConfig config1 = new LocalDateConfig(CompanyCtx.AUTO_CREATE_COMPANY_AFTER); LocalDateConfig config1 = new LocalDateConfig(CloudYuConstant.KEY_AUTO_CREATE_COMPANY_AFTER);
LocalDateTimeConfig config2 = new LocalDateTimeConfig(ContractCtx.KEY_SYNC_BY_LATEST_DATE); LocalDateTimeConfig config2 = new LocalDateTimeConfig(CloudYuConstant.KEY_SYNC_BY_LATEST_DATE);
StringConfig config3 = new StringConfig(ContractCtx.KEY_SYNC_BY_LATEST_ID); StringConfig config3 = new StringConfig(CloudYuConstant.KEY_SYNC_BY_LATEST_ID);
StringConfig config4 = new StringConfig(ContractCtx.KEY_SYNC_ELAPSE); StringConfig config4 = new StringConfig(CloudYuConstant.KEY_SYNC_ELAPSE);
BooleanConfig config5 = new BooleanConfig(ContractCtx.KEY_SYNC_USE_LATEST_ID); BooleanConfig config5 = new BooleanConfig(CloudYuConstant.KEY_SYNC_USE_LATEST_ID);
@Override @Override
public void onShown(WindowEvent windowEvent) { public void onShown(WindowEvent windowEvent) {

View File

@@ -1,23 +1,23 @@
package com.ecep.contract.controller; package com.ecep.contract.controller;
import java.util.List; import java.util.List;
import java.util.Map;
import org.hibernate.Hibernate; import org.hibernate.Hibernate;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import com.ecep.contract.SpringApp; import com.ecep.contract.SpringApp;
import com.ecep.contract.cloud.u8.YongYouU8Service;
import com.ecep.contract.controller.company.CompanyWindowController; import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.ds.company.service.CompanyService; 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.CloudYu;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.ui.table.cell.CompanyTableCell; import com.ecep.contract.service.CompanyService;
import com.ecep.contract.ui.table.cell.LocalDateTimeTableCell; import com.ecep.contract.service.YongYouU8Service;
import com.ecep.contract.util.ParamUtils;
import com.ecep.contract.vm.CloudYuInfoViewModel; import com.ecep.contract.vm.CloudYuInfoViewModel;
import jakarta.persistence.criteria.Path;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.scene.control.ContextMenu; import javafx.scene.control.ContextMenu;
@@ -54,27 +54,11 @@ public class YongYouU8ManagerSkin
@Override @Override
protected List<CloudYuInfoViewModel> loadTableData() { protected List<CloudYuInfoViewModel> loadTableData() {
String searchText = controller.searchKeyField.getText(); String searchText = controller.searchKeyField.getText();
Specification<CloudYu> spec = null; Map<String, Object> params = ParamUtils.builder().build();
if (StringUtils.hasText(searchText)) { if (StringUtils.hasText(searchText)) {
params.put("searchText", searchText);
Specification<CloudYu> companySpec = (root, query, builder) -> {
Path<Object> company = root.get("company");
return builder.or(
builder.like(company.get("name"), "%" + searchText + "%"),
builder.like(company.get("shortName"), "%" + searchText + "%"));
};
Specification<CloudYu> cloudIdSpec = (root, query, builder) -> {
return builder.like(root.get("cloudId"), "%" + searchText + "%");
};
Specification<CloudYu> exceptionSpec = (root, query, builder) -> {
return builder.like(root.get("exceptionMessage"), "%" + searchText + "%");
};
spec = Specification.anyOf(companySpec, cloudIdSpec, exceptionSpec);
} }
Page<CloudYu> page = getU8Service().findAll(params, getPageable());
Page<CloudYu> page = getU8Service().findAll(spec, getPageable());
updateFooter(page); updateFooter(page);
return page.map(CloudYuInfoViewModel::from).toList(); return page.map(CloudYuInfoViewModel::from).toList();
} }

View File

@@ -6,9 +6,9 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstManagerWindowController; import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.other.service.BankService;
import com.ecep.contract.model.Bank; import com.ecep.contract.model.Bank;
import com.ecep.contract.service.BankService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.BankViewModel; import com.ecep.contract.vm.BankViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;

View File

@@ -5,11 +5,11 @@ import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.converter.BankStringConverter; import com.ecep.contract.converter.BankStringConverter;
import com.ecep.contract.converter.CompanyStringConverter;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyBankAccount; import com.ecep.contract.model.CompanyBankAccount;
import com.ecep.contract.service.BankService; import com.ecep.contract.service.BankService;
import com.ecep.contract.service.CompanyService; import com.ecep.contract.service.CompanyService;
import com.ecep.contract.service.CompanyStringConverter;
import com.ecep.contract.util.UITools; import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.CompanyBankAccountViewModel; import com.ecep.contract.vm.CompanyBankAccountViewModel;

View File

@@ -6,9 +6,9 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.company.service.CompanyBankAccountService;
import com.ecep.contract.model.CompanyBankAccount; import com.ecep.contract.model.CompanyBankAccount;
import com.ecep.contract.service.CompanyBankAccountService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.CompanyBankAccountViewModel; import com.ecep.contract.vm.CompanyBankAccountViewModel;
import javafx.scene.control.Button; import javafx.scene.control.Button;

View File

@@ -12,11 +12,11 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.BaseController; import com.ecep.contract.controller.BaseController;
import com.ecep.contract.util.FxmlUtils;
import com.ecep.contract.ds.company.repository.CompanyContactRepository;
import com.ecep.contract.model.CompanyContact; import com.ecep.contract.model.CompanyContact;
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.vm.CompanyContactViewModel;
import javafx.application.Platform; import javafx.application.Platform;
@@ -35,11 +35,13 @@ import javafx.stage.WindowEvent;
import javafx.util.converter.LocalDateStringConverter; import javafx.util.converter.LocalDateStringConverter;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@Component @Component
public class CompanyContactWindowController extends BaseController { public class CompanyContactWindowController extends BaseController {
private static final Logger logger = LoggerFactory.getLogger(CompanyContactWindowController.class); private static final Logger logger = LoggerFactory.getLogger(CompanyContactWindowController.class);
/** /**
* 显示界面 * 显示界面
*/ */
@@ -67,8 +69,9 @@ public class CompanyContactWindowController extends BaseController {
@Getter @Getter
@Setter @Setter
private CompanyContactViewModel viewModel; private CompanyContactViewModel viewModel;
@Autowired @Autowired
private CompanyContactRepository companyContactRepository; private CompanyContactService companyContactService;
public TextField nameField; public TextField nameField;
public TextField positionField; public TextField positionField;
@@ -86,7 +89,8 @@ public class CompanyContactWindowController extends BaseController {
@Override @Override
public void show(Stage stage) { public void show(Stage stage) {
super.show(stage); super.show(stage);
getTitle().bind(viewModel.getName().map(v -> "[" + viewModel.getId().get() + "] " + viewModel.getName().getValue() + " 曾用名详情")); getTitle().bind(viewModel.getName()
.map(v -> "[" + viewModel.getId().get() + "] " + viewModel.getName().getValue() + " 曾用名详情"));
} }
@Override @Override
@@ -99,9 +103,7 @@ public class CompanyContactWindowController extends BaseController {
initializeBaseTab(); initializeBaseTab();
companyContactLoadedFuture = CompletableFuture.supplyAsync(() -> { companyContactLoadedFuture = CompletableFuture.supplyAsync(() -> {
Optional<CompanyContact> optional = companyContactRepository.findById(viewModel.getId().get()); CompanyContact oldName = companyContactService.findById(viewModel.getId().get());
if (optional.isPresent()) {
CompanyContact oldName = optional.get();
Platform.runLater(() -> { Platform.runLater(() -> {
viewModel.update(oldName); viewModel.update(oldName);
viewModel.bindListener(); viewModel.bindListener();
@@ -111,12 +113,9 @@ public class CompanyContactWindowController extends BaseController {
tabPane.getSelectionModel().getSelectedItem().getOnSelectionChanged().handle(null); tabPane.getSelectionModel().getSelectedItem().getOnSelectionChanged().handle(null);
}); });
return oldName; return oldName;
}
return null;
}); });
} }
private void initializeBaseTab() { private void initializeBaseTab() {
baseInfoTab.setOnSelectionChanged(event -> { baseInfoTab.setOnSelectionChanged(event -> {
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
@@ -131,7 +130,7 @@ public class CompanyContactWindowController extends BaseController {
try { try {
CompanyContact contact = companyContactLoadedFuture.join(); CompanyContact contact = companyContactLoadedFuture.join();
viewModel.copyTo(contact); viewModel.copyTo(contact);
CompanyContact saved = companyContactRepository.save(contact); CompanyContact saved = companyContactService.save(contact);
viewModel.update(saved); viewModel.update(saved);
companyContactLoadedFuture = CompletableFuture.completedFuture(saved); companyContactLoadedFuture = CompletableFuture.completedFuture(saved);
} catch (Exception e) { } catch (Exception e) {
@@ -163,7 +162,7 @@ public class CompanyContactWindowController extends BaseController {
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
logger.debug("onBaseTabShown company contact {}", contact.getName()); logger.debug("onBaseTabShown company contact {}", contact.getName());
} }
// viewModel.update(contact); // viewModel.update(contact);
}).exceptionally(ex -> { }).exceptionally(ex -> {
UITools.showExceptionAndWait(ex.getMessage(), ex); UITools.showExceptionAndWait(ex.getMessage(), ex);
return null; return null;
@@ -184,4 +183,3 @@ public class CompanyContactWindowController extends BaseController {
super.onHidden(windowEvent); super.onHidden(windowEvent);
} }
} }

View File

@@ -3,11 +3,10 @@ package com.ecep.contract.controller.company;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import com.ecep.contract.ds.company.controller.CompanyWindowController; import com.ecep.contract.controller.AbstEntityManagerSkin;
import com.ecep.contract.ds.company.service.CompanyOldNameService;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.ui.AbstEntityManagerSkin; import com.ecep.contract.service.CompanyOldNameService;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.vm.CompanyViewModel; import com.ecep.contract.vm.CompanyViewModel;
import javafx.application.Platform; import javafx.application.Platform;

View File

@@ -7,13 +7,11 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.util.FxmlPath; import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.ds.company.controller.CompanyManagerSkin;
import com.ecep.contract.ds.company.controller.CompanyVerifyWindowController;
import com.ecep.contract.ds.company.tasker.CompanyFilesRebuildTasker;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.service.CompanyService; import com.ecep.contract.service.CompanyService;
import com.ecep.contract.ui.AbstManagerWindowController; import com.ecep.contract.task.CompanyFilesRebuildTasker;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.UITools; import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.CompanyViewModel; import com.ecep.contract.vm.CompanyViewModel;

View File

@@ -15,7 +15,6 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.DesktopUtils; import com.ecep.contract.DesktopUtils;
import com.ecep.contract.SpringApp; import com.ecep.contract.SpringApp;
import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.customer.CompanyCustomerWindowController; import com.ecep.contract.controller.customer.CompanyCustomerWindowController;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.CompanyTabSkinBankAccount; import com.ecep.contract.controller.tab.CompanyTabSkinBankAccount;
@@ -37,6 +36,9 @@ import com.ecep.contract.service.CompanyFileService;
import com.ecep.contract.service.CompanyService; import com.ecep.contract.service.CompanyService;
import com.ecep.contract.service.CompanyVendorService; import com.ecep.contract.service.CompanyVendorService;
import com.ecep.contract.service.ContractService; import com.ecep.contract.service.ContractService;
import com.ecep.contract.task.CompanyCompositeUpdateTasker;
import com.ecep.contract.task.CompanyVerifyTasker;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.UITools; import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.CompanyViewModel; import com.ecep.contract.vm.CompanyViewModel;

View File

@@ -1,20 +1,20 @@
package com.ecep.contract.controller.company_old_name; package com.ecep.contract.controller.company_old_name;
import java.io.File; import java.io.File;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.function.Consumer; import java.util.function.Consumer;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import com.ecep.contract.CompanyFileType; import com.ecep.contract.CompanyFileType;
import com.ecep.contract.DesktopUtils; import com.ecep.contract.DesktopUtils;
import com.ecep.contract.MyProperties;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin;
import com.ecep.contract.ds.company.service.CompanyFileService;
import com.ecep.contract.model.CompanyFile; import com.ecep.contract.model.CompanyFile;
import com.ecep.contract.model.CompanyOldName; import com.ecep.contract.model.CompanyOldName;
import com.ecep.contract.service.CompanyFileService;
import com.ecep.contract.service.CompanyOldNameService; import com.ecep.contract.service.CompanyOldNameService;
import com.ecep.contract.util.UITools; import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.CompanyFileViewModel; import com.ecep.contract.vm.CompanyFileViewModel;
@@ -39,8 +39,6 @@ public class CompanyOldNameTabSkinFile
private CompanyOldNameService companyOldNameService; private CompanyOldNameService companyOldNameService;
@Setter @Setter
private CompanyFileService companyFileService; private CompanyFileService companyFileService;
@Setter
private MyProperties myProperties;
public CompanyOldNameTabSkinFile(CompanyOldNameWindowController controller) { public CompanyOldNameTabSkinFile(CompanyOldNameWindowController controller) {
super(controller); super(controller);
@@ -64,10 +62,10 @@ public class CompanyOldNameTabSkinFile
} }
@Override @Override
public Specification<CompanyFile> getSpecification(CompanyOldName parent) { public Map<String, Object> getSpecification(CompanyOldName parent) {
return SpecificationUtils.and(getSpecification(), (root, query, builder) -> { Map<String, Object> params = new HashMap<>();
return builder.equal(root.get("company").get("id"), parent.getCompanyId()); params.put("company", parent.getCompanyId());
}); return params;
} }
@Override @Override
@@ -354,13 +352,6 @@ public class CompanyOldNameTabSkinFile
} }
} }
public MyProperties getMyProperties() {
if (myProperties == null) {
myProperties = getBean(MyProperties.class);
}
return myProperties;
}
private CompanyFileService getCompanyFileService() { private CompanyFileService getCompanyFileService() {
if (companyFileService == null) { if (companyFileService == null) {
companyFileService = getBean(CompanyFileService.class); companyFileService = getBean(CompanyFileService.class);

View File

@@ -12,9 +12,9 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.DesktopUtils; import com.ecep.contract.DesktopUtils;
import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.model.CompanyOldName; import com.ecep.contract.model.CompanyOldName;
import com.ecep.contract.service.CompanyOldNameService; import com.ecep.contract.service.CompanyOldNameService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.UITools; import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.CompanyFileViewModel; import com.ecep.contract.vm.CompanyFileViewModel;
import com.ecep.contract.vm.CompanyOldNameViewModel; import com.ecep.contract.vm.CompanyOldNameViewModel;
@@ -95,13 +95,13 @@ public class CompanyOldNameWindowController extends AbstEntityController<Company
private CompanyOldNameTabSkinBase createBaseTabSkin(Tab tab) { private CompanyOldNameTabSkinBase createBaseTabSkin(Tab tab) {
CompanyOldNameTabSkinBase skin = new CompanyOldNameTabSkinBase(this); CompanyOldNameTabSkinBase skin = new CompanyOldNameTabSkinBase(this);
skin.setCompanyOldNameService(companyOldNameService); skin.setCompanyOldNameService(getViewModelService());
return skin; return skin;
} }
private CompanyOldNameTabSkinFile createFileTabSkin(Tab tab) { private CompanyOldNameTabSkinFile createFileTabSkin(Tab tab) {
CompanyOldNameTabSkinFile skin = new CompanyOldNameTabSkinFile(this); CompanyOldNameTabSkinFile skin = new CompanyOldNameTabSkinFile(this);
skin.setCompanyOldNameService(companyOldNameService); skin.setCompanyOldNameService(getViewModelService());
// skin.setCompanyFileService(companyFileService); // skin.setCompanyFileService(companyFileService);
return skin; return skin;
} }
@@ -114,7 +114,7 @@ public class CompanyOldNameWindowController extends AbstEntityController<Company
if (!StringUtils.hasText(path)) { if (!StringUtils.hasText(path)) {
ButtonType buttonType = UITools.showConfirmation("目录未设置", "是否创建目录").join(); ButtonType buttonType = UITools.showConfirmation("目录未设置", "是否创建目录").join();
if (buttonType == ButtonType.OK) { if (buttonType == ButtonType.OK) {
if (companyOldNameService.makePathAbsent(companyOldName)) { if (getViewModelService().makePathAbsent(companyOldName)) {
save(companyOldName); save(companyOldName);
} }
} else { } else {

View File

@@ -1,16 +1,15 @@
package com.ecep.contract.controller.contract; package com.ecep.contract.controller.contract;
import org.apache.poi.ss.formula.functions.T; import java.util.HashMap;
import org.springframework.data.jpa.domain.Specification; import java.util.Map;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin;
import com.ecep.contract.controller.table.TableOfTabSkin; import com.ecep.contract.controller.table.TableOfTabSkin;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.contract.vo.ContractViewModel;
import com.ecep.contract.model.Contract; import com.ecep.contract.model.Contract;
import com.ecep.contract.model.IdentityEntity; import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.util.SpecificationUtils; import com.ecep.contract.service.ContractService;
import com.ecep.contract.vm.ContractViewModel;
import com.ecep.contract.vm.IdentityViewModel; import com.ecep.contract.vm.IdentityViewModel;
public abstract class AbstContractTableTabSkin<T extends IdentityEntity, TV extends IdentityViewModel<T>> public abstract class AbstContractTableTabSkin<T extends IdentityEntity, TV extends IdentityViewModel<T>>
@@ -26,9 +25,9 @@ public abstract class AbstContractTableTabSkin<T extends IdentityEntity, TV exte
} }
@Override @Override
public Specification<T> getSpecification(Contract parent) { public Map<String, Object> getSpecification(Contract parent) {
return SpecificationUtils.and(getSpecification(), (root, query, builder) -> { Map<String, Object> params = new HashMap<>();
return builder.equal(root.get("contract"), parent); params.put("contract", parent.getId());
}); return params;
} }
} }

View File

@@ -8,20 +8,20 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.UITools; import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.tab.ContractManagerSkin; import com.ecep.contract.controller.tab.ContractManagerSkin;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.contract.tasker.ContractFilesRebuildAllTasker;
import com.ecep.contract.ds.contract.tasker.ContractRepairAllTasker;
import com.ecep.contract.ds.contract.vo.ContractViewModel;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.model.Contract; import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ContractGroup; import com.ecep.contract.model.ContractGroup;
import com.ecep.contract.model.ContractKind; import com.ecep.contract.model.ContractKind;
import com.ecep.contract.model.ContractType; import com.ecep.contract.model.ContractType;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.ui.AbstManagerWindowController; 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 javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.scene.control.CheckBox; import javafx.scene.control.CheckBox;

View File

@@ -6,15 +6,15 @@ import java.util.concurrent.CompletableFuture;
import org.hibernate.Hibernate; import org.hibernate.Hibernate;
import com.ecep.contract.SpringApp; import com.ecep.contract.SpringApp;
import com.ecep.contract.UITools; import com.ecep.contract.controller.ComboBoxUtils;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.contract.service.ExtendVendorInfoService;
import com.ecep.contract.ds.contract.vo.ExtendVendorInfoViewModel;
import com.ecep.contract.ds.vendor.service.VendorGroupService;
import com.ecep.contract.model.Contract; import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ExtendVendorInfo; import com.ecep.contract.model.ExtendVendorInfo;
import com.ecep.contract.model.VendorGroup; import com.ecep.contract.model.VendorGroup;
import com.ecep.contract.ui.ComboBoxUtils; import com.ecep.contract.service.ExtendVendorInfoService;
import com.ecep.contract.service.VendorGroupService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.ExtendVendorInfoViewModel;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;

View File

@@ -6,7 +6,9 @@ import static com.ecep.contract.util.TableViewUtils.bindEnterPressed;
import java.io.File; import java.io.File;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level; import java.util.logging.Level;
@@ -19,25 +21,24 @@ import org.springframework.context.annotation.Scope;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import com.ecep.contract.ContractPayWay;
import com.ecep.contract.Message; import com.ecep.contract.Message;
import com.ecep.contract.MessageHolder; import com.ecep.contract.MessageHolder;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.BaseController; import com.ecep.contract.controller.BaseController;
import com.ecep.contract.util.FxmlPath; import com.ecep.contract.controller.table.cell.EmployeeTableCell;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.contract.tasker.ContractVerifyComm;
import com.ecep.contract.ds.contract.tasker.ContractVerifyResultExportAsExcelFile;
import com.ecep.contract.ds.other.service.EmployeeService;
import com.ecep.contract.ds.project.service.SaleTypeService;
import com.ecep.contract.ds.vendor.service.VendorGroupService;
import com.ecep.contract.model.Contract; import com.ecep.contract.model.Contract;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.ui.table.cell.EmployeeTableCell; import com.ecep.contract.service.ContractService;
import com.ecep.contract.service.EmployeeService;
import com.ecep.contract.service.ProjectSaleTypeService;
import com.ecep.contract.service.VendorGroupService;
import com.ecep.contract.task.ContractVerifyComm;
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 javafx.application.Platform; import javafx.application.Platform;
import javafx.beans.property.SimpleListProperty; import javafx.beans.property.SimpleListProperty;
@@ -262,19 +263,11 @@ public class ContractVerifyWindowController extends BaseController {
viewTableDataSet.clear(); viewTableDataSet.clear();
Pageable pageRequest = PageRequest.ofSize(200); Pageable pageRequest = PageRequest.ofSize(200);
AtomicInteger counter = new AtomicInteger(0); AtomicInteger counter = new AtomicInteger(0);
Specification<Contract> spec = (root, query, builder) -> { Map<String, Object> params = new HashMap<>();
return builder.and( params.put("setupDate",
builder.or( ParamUtils.between(setupDateBeginSelector.getValue(), setupDateEndSelector.getValue()));
builder.equal(root.get("payWay"), ContractPayWay.RECEIVE),
builder.and( long total = contractService.count(params);
builder.equal(root.get("payWay"), ContractPayWay.PAY),
builder.or(
builder.isNull(root.get("parentCode")),
builder.equal(root.get("parentCode"), "")))),
builder.between(root.get("setupDate"), setupDateBeginSelector.getValue(),
setupDateEndSelector.getValue()));
};
long total = contractService.count(spec);
setStatus("合同:" + total + ""); setStatus("合同:" + total + "");
while (true) { while (true) {
@@ -282,7 +275,7 @@ public class ContractVerifyWindowController extends BaseController {
break; break;
} }
Page<Contract> page = contractService.findAll(spec, pageRequest); Page<Contract> page = contractService.findAll(params, pageRequest);
for (Contract contract : page) { for (Contract contract : page) {
if (isCloseRequested()) { if (isCloseRequested()) {
break; break;

View File

@@ -10,7 +10,6 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.DesktopUtils; import com.ecep.contract.DesktopUtils;
import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.company.CompanyWindowController; import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.controller.tab.ContractTabSkinBase; import com.ecep.contract.controller.tab.ContractTabSkinBase;
import com.ecep.contract.controller.tab.ContractTabSkinFiles; import com.ecep.contract.controller.tab.ContractTabSkinFiles;
@@ -21,13 +20,14 @@ import com.ecep.contract.controller.tab.ContractTabSkinPurchaseOrders;
import com.ecep.contract.controller.tab.ContractTabSkinSaleOrders; import com.ecep.contract.controller.tab.ContractTabSkinSaleOrders;
import com.ecep.contract.controller.tab.ContractTabSkinSubContract; import com.ecep.contract.controller.tab.ContractTabSkinSubContract;
import com.ecep.contract.controller.tab.ContractTabSkinVendorBid; import com.ecep.contract.controller.tab.ContractTabSkinVendorBid;
import com.ecep.contract.ds.contract.tasker.ContractVerifyTasker;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.model.Contract; import com.ecep.contract.model.Contract;
import com.ecep.contract.service.CompanyService; import com.ecep.contract.service.CompanyService;
import com.ecep.contract.service.ContractService; import com.ecep.contract.service.ContractService;
import com.ecep.contract.service.ProjectService; import com.ecep.contract.service.ProjectService;
import com.ecep.contract.task.ContractRepairTask; import com.ecep.contract.task.ContractRepairTask;
import com.ecep.contract.task.ContractVerifyTasker;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.UITools; import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.ContractViewModel; import com.ecep.contract.vm.ContractViewModel;
@@ -213,7 +213,6 @@ public class ContractWindowController
public void onSyncContractAction(ActionEvent event) { public void onSyncContractAction(ActionEvent event) {
ContractRepairTask task = new ContractRepairTask(); ContractRepairTask task = new ContractRepairTask();
task.setContractService(contractService);
task.setContract(getEntity()); task.setContract(getEntity());
UITools.showTaskDialogAndWait("同步合同", task, null); UITools.showTaskDialogAndWait("同步合同", task, null);
if (task.isRepaired()) { if (task.isRepaired()) {
@@ -251,7 +250,6 @@ public class ContractWindowController
public void onContractVerifyAction(ActionEvent event) { public void onContractVerifyAction(ActionEvent event) {
Contract contract = getEntity(); Contract contract = getEntity();
ContractVerifyTasker task = new ContractVerifyTasker(); ContractVerifyTasker task = new ContractVerifyTasker();
task.setContractService(contractService);
task.setContract(contract); task.setContract(contract);
UITools.showTaskDialogAndWait("同步合规性验证", task, null); UITools.showTaskDialogAndWait("同步合规性验证", task, null);
} }

View File

@@ -18,13 +18,11 @@ import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import com.ecep.contract.controller.BaseController; import com.ecep.contract.controller.BaseController;
import com.ecep.contract.util.FxmlUtils;
import com.ecep.contract.ds.company.CompanyFileUtils;
import com.ecep.contract.ds.customer.repository.CompanyCustomerEvaluationFormFileRepository;
import com.ecep.contract.ds.customer.repository.CompanyCustomerFileRepository;
import com.ecep.contract.ds.customer.service.CompanyCustomerFileService;
import com.ecep.contract.model.CompanyCustomerEvaluationFormFile; import com.ecep.contract.model.CompanyCustomerEvaluationFormFile;
import com.ecep.contract.model.CompanyCustomerFile; import com.ecep.contract.model.CompanyCustomerFile;
import com.ecep.contract.service.CompanyCustomerFileService;
import com.ecep.contract.util.FileUtils;
import com.ecep.contract.util.FxmlUtils;
import com.ecep.contract.vm.CompanyCustomerFileViewModel; import com.ecep.contract.vm.CompanyCustomerFileViewModel;
import javafx.application.Platform; import javafx.application.Platform;
@@ -108,10 +106,6 @@ public class CompanyCustomerEvaluationFormFileWindowController extends BaseContr
private SimpleObjectProperty<Image> imageProperty = new SimpleObjectProperty<>(); private SimpleObjectProperty<Image> imageProperty = new SimpleObjectProperty<>();
private CompletableFuture<CompanyCustomerEvaluationFormFile> loadedFuture; private CompletableFuture<CompanyCustomerEvaluationFormFile> loadedFuture;
@Autowired
private CompanyCustomerFileRepository companyCustomerFileRepository;
@Autowired
private CompanyCustomerEvaluationFormFileRepository companyCustomerEvaluationFormFileRepository;
@Lazy @Lazy
@Autowired @Autowired
private CompanyCustomerFileService companyCustomerFileService; private CompanyCustomerFileService companyCustomerFileService;
@@ -303,7 +297,7 @@ public class CompanyCustomerEvaluationFormFileWindowController extends BaseContr
imageView.imageProperty().bind(viewModel.getFilePath().map(path -> { imageView.imageProperty().bind(viewModel.getFilePath().map(path -> {
if (CompanyFileUtils.withExtensions(path, CompanyFileUtils.PDF)) { if (FileUtils.withExtensions(path, FileUtils.PDF)) {
File pdfFile = new File(path); File pdfFile = new File(path);
try (PDDocument pdDocument = Loader.loadPDF(pdfFile)) { try (PDDocument pdDocument = Loader.loadPDF(pdfFile)) {
PDFRenderer pdfRenderer = new PDFRenderer(pdDocument); PDFRenderer pdfRenderer = new PDFRenderer(pdDocument);

View File

@@ -5,18 +5,18 @@ import java.time.format.DateTimeFormatter;
import com.ecep.contract.MyDateTimeUtils; import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.SpringApp; import com.ecep.contract.SpringApp;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.company.CompanyWindowController; import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.converter.CompanyStringConverter;
import com.ecep.contract.converter.EntityStringConverter; import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.ds.company.service.CompanyContactService;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyContact; import com.ecep.contract.model.CompanyContact;
import com.ecep.contract.model.CompanyCustomer; import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.service.CompanyStringConverter; import com.ecep.contract.service.CompanyContactService;
import com.ecep.contract.service.CompanyCustomerService;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.CompanyCustomerViewModel; import com.ecep.contract.vm.CompanyCustomerViewModel;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
@@ -54,8 +54,7 @@ public class CompanyCustomerTabSkinBase
controller.createdField.textProperty().bind( controller.createdField.textProperty().bind(
Bindings.createStringBinding( Bindings.createStringBinding(
() -> localDateTimeFormatter(viewModel.getCreated()), () -> localDateTimeFormatter(viewModel.getCreated()),
viewModel.getCreated()) viewModel.getCreated()));
);
controller.versionLabel.textProperty().bind(viewModel.getVersion().asString()); controller.versionLabel.textProperty().bind(viewModel.getVersion().asString());
controller.relativeCompanyBtn.disableProperty().bind(viewModel.getCompany().isNull()); controller.relativeCompanyBtn.disableProperty().bind(viewModel.getCompany().isNull());
@@ -66,7 +65,6 @@ public class CompanyCustomerTabSkinBase
} }
}); });
controller.createPathBtn.setOnAction(this::onCompanyCustomerCreatePathAction); controller.createPathBtn.setOnAction(this::onCompanyCustomerCreatePathAction);
controller.changePathBtn.setOnAction(this::onCompanyCustomerChangePathAction); controller.changePathBtn.setOnAction(this::onCompanyCustomerChangePathAction);
controller.pathAsNameBtn.setOnAction(this::onCompanyCustomerPathSameAsNameAction); controller.pathAsNameBtn.setOnAction(this::onCompanyCustomerPathSameAsNameAction);
@@ -83,7 +81,9 @@ public class CompanyCustomerTabSkinBase
private void initializeContactFieldAutoCompletion(TextField textField) { private void initializeContactFieldAutoCompletion(TextField textField) {
EntityStringConverter<CompanyContact> stringConverter = new EntityStringConverter<>(); EntityStringConverter<CompanyContact> stringConverter = new EntityStringConverter<>();
stringConverter.setInitialized(cc -> getCompanyContactService().findById(cc.getId())); stringConverter.setInitialized(cc -> getCompanyContactService().findById(cc.getId()));
UITools.autoCompletion(textField, viewModel.getContact(), p -> getCompanyContactService().searchByCompany(viewModel.getCompany().get(), p.getUserText()), stringConverter); UITools.autoCompletion(textField, viewModel.getContact(),
p -> getCompanyContactService().searchByCompany(viewModel.getCompany().get(), p.getUserText()),
stringConverter);
} }
private void initializeCompanyFieldAutoCompletion(TextField textField) { private void initializeCompanyFieldAutoCompletion(TextField textField) {
@@ -101,7 +101,6 @@ public class CompanyCustomerTabSkinBase
} }
} }
public void onCompanyCustomerChangePathAction(ActionEvent event) { public void onCompanyCustomerChangePathAction(ActionEvent event) {
setStatus("未实现"); setStatus("未实现");
} }
@@ -111,14 +110,14 @@ public class CompanyCustomerTabSkinBase
} }
public CompanyCustomerService getCompanyCustomerService() { public CompanyCustomerService getCompanyCustomerService() {
return controller.companyCustomerService; return controller.getCachedBean(CompanyCustomerService.class);
} }
public CompanyContactService getCompanyContactService() { public CompanyContactService getCompanyContactService() {
return controller.companyContactService; return controller.getCachedBean(CompanyContactService.class);
} }
public CompanyService getCompanyService() { public CompanyService getCompanyService() {
return controller.companyService; return controller.getCachedBean(CompanyService.class);
} }
} }

View File

@@ -2,19 +2,17 @@ package com.ecep.contract.controller.customer;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Map;
import org.springframework.data.jpa.domain.Specification;
import com.ecep.contract.SpringApp; import com.ecep.contract.SpringApp;
import com.ecep.contract.util.FxmlPath; import com.ecep.contract.controller.table.cell.LocalDateTimeTableCell;
import com.ecep.contract.converter.EmployeeStringConverter; import com.ecep.contract.converter.EmployeeStringConverter;
import com.ecep.contract.converter.EntityStringConverter; import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.ds.customer.service.CompanyCustomerEntityService;
import com.ecep.contract.model.CompanyCustomer; import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.model.CompanyCustomerEntity; import com.ecep.contract.model.CompanyCustomerEntity;
import com.ecep.contract.model.CustomerCatalog; import com.ecep.contract.model.CustomerCatalog;
import com.ecep.contract.ui.table.cell.LocalDateTimeTableCell; import com.ecep.contract.service.CompanyCustomerEntityService;
import com.ecep.contract.util.SpecificationUtils; import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.CustomerEntityViewModel; import com.ecep.contract.vm.CustomerEntityViewModel;
import javafx.scene.control.MenuItem; import javafx.scene.control.MenuItem;
@@ -54,7 +52,6 @@ public class CustomerTabSkinEntity
return controller.entityTab; return controller.entityTab;
} }
@Override @Override
public void initializeTab() { public void initializeTab() {
super.initializeTab(); super.initializeTab();
@@ -68,8 +65,10 @@ public class CustomerTabSkinEntity
EmployeeStringConverter stringConverter = SpringApp.getBean(EmployeeStringConverter.class); EmployeeStringConverter stringConverter = SpringApp.getBean(EmployeeStringConverter.class);
entityTable_developDateColumn.setCellValueFactory(param -> param.getValue().getDevelopDate()); entityTable_developDateColumn.setCellValueFactory(param -> param.getValue().getDevelopDate());
entityTable_modifyDateColumn.setCellValueFactory(param -> param.getValue().getModifyDate()); entityTable_modifyDateColumn.setCellValueFactory(param -> param.getValue().getModifyDate());
entityTable_creatorColumn.setCellValueFactory(param -> param.getValue().getCreator().map(stringConverter::toString)); entityTable_creatorColumn
entityTable_modifierColumn.setCellValueFactory(param -> param.getValue().getModifier().map(stringConverter::toString)); .setCellValueFactory(param -> param.getValue().getCreator().map(stringConverter::toString));
entityTable_modifierColumn
.setCellValueFactory(param -> param.getValue().getModifier().map(stringConverter::toString));
entityTable_updatedDateColumn.setCellValueFactory(param -> param.getValue().getUpdatedDate()); entityTable_updatedDateColumn.setCellValueFactory(param -> param.getValue().getUpdatedDate());
fetchedTimeColumn.setCellValueFactory(param -> param.getValue().getFetchedTime()); fetchedTimeColumn.setCellValueFactory(param -> param.getValue().getFetchedTime());
@@ -79,7 +78,6 @@ public class CustomerTabSkinEntity
entityTable_menu_del.setOnAction(this::onTableDeleteAction); entityTable_menu_del.setOnAction(this::onTableDeleteAction);
} }
private void initializeEntityTabCatalogColumn(TableColumn<CustomerEntityViewModel, String> column) { private void initializeEntityTabCatalogColumn(TableColumn<CustomerEntityViewModel, String> column) {
EntityStringConverter<CustomerCatalog> converter = new EntityStringConverter<>(); EntityStringConverter<CustomerCatalog> converter = new EntityStringConverter<>();
converter.setInitialized(v -> getCompanyCustomerService().findCatalogById(v.getId())); converter.setInitialized(v -> getCompanyCustomerService().findCatalogById(v.getId()));
@@ -99,10 +97,10 @@ public class CustomerTabSkinEntity
} }
@Override @Override
public Specification<CompanyCustomerEntity> getSpecification(CompanyCustomer parent) { public Map<String, Object> getSpecification(CompanyCustomer parent) {
return SpecificationUtils.and(getSpecification(), (root, query, builder) -> { Map<String, Object> params = getSpecification();
return builder.equal(root.get("customer"), parent); params.put("customer", parent.getId());
}); return params;
} }
} }

View File

@@ -1,27 +1,5 @@
package com.ecep.contract.controller.customer; package com.ecep.contract.controller.customer;
import com.ecep.contract.*;
import com.ecep.contract.constant.CompanyCustomerConstant;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.model.*;
import com.ecep.contract.service.CompanyCustomerFileService;
import com.ecep.contract.service.CompanyCustomerService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.CompanyCustomerFileViewModel;
import javafx.application.Platform;
import javafx.beans.binding.Bindings;
import javafx.collections.ObservableMap;
import javafx.concurrent.Task;
import javafx.event.ActionEvent;
import javafx.scene.control.*;
import javafx.scene.control.cell.CheckBoxTableCell;
import javafx.scene.input.Dragboard;
import javafx.scene.input.TransferMode;
import lombok.Setter;
import org.hibernate.Hibernate;
import org.springframework.util.StringUtils;
import java.io.File; import java.io.File;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
@@ -31,6 +9,46 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.function.Consumer; import java.util.function.Consumer;
import org.hibernate.Hibernate;
import org.springframework.util.StringUtils;
import com.ecep.contract.CompanyCustomerFileType;
import com.ecep.contract.DesktopUtils;
import com.ecep.contract.Message;
import com.ecep.contract.MyDateTimeUtils;
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.CompanyCustomerService;
import com.ecep.contract.util.FileUtils;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.CompanyCustomerFileViewModel;
import javafx.application.Platform;
import javafx.beans.binding.Bindings;
import javafx.collections.FXCollections;
import javafx.collections.ObservableMap;
import javafx.concurrent.Task;
import javafx.event.ActionEvent;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.MenuItem;
import javafx.scene.control.Tab;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.CheckBoxTableCell;
import javafx.scene.input.Dragboard;
import javafx.scene.input.TransferMode;
import lombok.Setter;
@FxmlPath("/ui/company/customer/customer-tab-file.fxml") @FxmlPath("/ui/company/customer/customer-tab-file.fxml")
public class CustomerTabSkinFile public class CustomerTabSkinFile
extends AbstCompanyCustomerTableTabSkin<CompanyCustomerFile, CompanyCustomerFileViewModel> extends AbstCompanyCustomerTableTabSkin<CompanyCustomerFile, CompanyCustomerFileViewModel>
@@ -87,8 +105,8 @@ public class CustomerTabSkinFile
table.disableProperty().bind(viewModel.getPath().isEmpty()); table.disableProperty().bind(viewModel.getPath().isEmpty());
fileTable_idColumn.setCellValueFactory(param -> param.getValue().getId()); fileTable_idColumn.setCellValueFactory(param -> param.getValue().getId());
ObservableMap<CompanyCustomerFileType, CompanyCustomerFileTypeLocal> observableMapByLocal = SpringApp ObservableMap<CompanyCustomerFileType, CompanyCustomerFileTypeLocal> observableMapByLocal = FXCollections
.getBean(CompanyCustomerFileTypeLocalRepository.class).getObservableMapByLocal(); .observableMap(companyCustomerFileService.getFileTypeLocalMap(getLocale()));
fileTable_typeColumn.setCellValueFactory(param -> Bindings.valueAt(observableMapByLocal, fileTable_typeColumn.setCellValueFactory(param -> Bindings.valueAt(observableMapByLocal,
param.getValue().getType()).map(BaseEnumEntity::getValue)); param.getValue().getType()).map(BaseEnumEntity::getValue));
@@ -140,8 +158,8 @@ public class CustomerTabSkinFile
CompanyCustomerFileType fileType = item.getType().get(); CompanyCustomerFileType fileType = item.getType().get();
if (fileType == CompanyCustomerFileType.EvaluationForm) { if (fileType == CompanyCustomerFileType.EvaluationForm) {
// 文件不是 Excel 文件时打开编辑UI // 文件不是 Excel 文件时打开编辑UI
if (!CompanyFileUtils.withExtensions(item.getFilePath().get(), CompanyFileUtils.XLS, if (!FileUtils.withExtensions(item.getFilePath().get(), FileUtils.XLS,
CompanyFileUtils.XLSX)) { FileUtils.XLSX)) {
CompanyCustomerEvaluationFormFileWindowController.show(item, controller.root.getScene().getWindow()); CompanyCustomerEvaluationFormFileWindowController.show(item, controller.root.getScene().getWindow());
return; return;
} }
@@ -166,7 +184,8 @@ public class CustomerTabSkinFile
return; return;
} }
CompanyCustomer companyCustomer = getParent(); CompanyCustomer companyCustomer = getParent();
LocalDate nextSignDate = getCompanyCustomerFileService().getNextSignDate(companyCustomer, ((level, message) -> setStatus(message))); LocalDate nextSignDate = getCompanyCustomerFileService().getNextSignDate(companyCustomer,
((level, message) -> setStatus(message)));
if (nextSignDate != null && files.size() == 1) { if (nextSignDate != null && files.size() == 1) {
File file = files.getFirst(); File file = files.getFirst();
String fileName = file.getName(); String fileName = file.getName();

View File

@@ -11,6 +11,7 @@ import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.converter.EmployeeStringConverter; import com.ecep.contract.converter.EmployeeStringConverter;
import com.ecep.contract.model.Department; import com.ecep.contract.model.Department;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.util.ParamUtils;
import com.ecep.contract.vm.DepartmentViewModel; import com.ecep.contract.vm.DepartmentViewModel;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
@@ -33,10 +34,7 @@ public class DepartmentManagerSkin
public void initializeTable() { public void initializeTable() {
getTableView().setEditable(true); getTableView().setEditable(true);
Specification<Employee> spec = (root, query, cb) -> { List<Employee> employees = controller.getEmployeeService().findAll(ParamUtils.equal("isActive", true), Pageable.ofSize(30)).getContent();
return cb.equal(root.get("isActive"), true);
};
List<Employee> employees = controller.getEmployeeService().findAll(spec, Pageable.ofSize(30)).getContent();
controller.idColumn.setCellValueFactory(param -> param.getValue().getId()); controller.idColumn.setCellValueFactory(param -> param.getValue().getId());

View File

@@ -7,10 +7,10 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstManagerWindowController; import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.other.service.DepartmentService;
import com.ecep.contract.model.Department; import com.ecep.contract.model.Department;
import com.ecep.contract.model.Employee; 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.vm.DepartmentViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;

View File

@@ -2,10 +2,10 @@ package com.ecep.contract.controller.employee;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.ds.other.service.EmployeeRoleService;
import com.ecep.contract.ds.other.service.EmployeeService;
import com.ecep.contract.ds.other.service.PermissionService;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.service.EmployeeRoleService;
import com.ecep.contract.service.EmployeeService;
import com.ecep.contract.service.PermissionService;
import com.ecep.contract.vm.EmployeeViewModel; import com.ecep.contract.vm.EmployeeViewModel;
import lombok.Setter; import lombok.Setter;

View File

@@ -1,14 +1,12 @@
package com.ecep.contract.controller.employee; package com.ecep.contract.controller.employee;
import org.apache.poi.ss.formula.functions.T; import java.util.Map;
import org.springframework.data.jpa.domain.Specification;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin;
import com.ecep.contract.ds.other.service.EmployeeService;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.model.IdentityEntity; import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.util.SpecificationUtils; import com.ecep.contract.service.EmployeeService;
import com.ecep.contract.vm.EmployeeBasedViewModel; import com.ecep.contract.vm.EmployeeBasedViewModel;
import com.ecep.contract.vm.EmployeeViewModel; import com.ecep.contract.vm.EmployeeViewModel;
import com.ecep.contract.vm.IdentityViewModel; import com.ecep.contract.vm.IdentityViewModel;
@@ -36,9 +34,9 @@ public abstract class AbstEmployeeTableTabSkin<T extends IdentityEntity, TV exte
@Override @Override
public Specification<T> getSpecification(Employee parent) { public Map<String, Object> getSpecification(Employee parent) {
return SpecificationUtils.and(getSpecification(), (root, query, builder) -> { Map<String, Object> params = getSpecification();
return builder.equal(root.get("employee"), parent); params.put("employee", parent.getId());
}); return params;
} }
} }

View File

@@ -1,13 +1,12 @@
package com.ecep.contract.controller.employee; package com.ecep.contract.controller.employee;
import org.springframework.data.jpa.domain.Specification; import java.util.Map;
import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.AbstEntityManagerSkin;
import com.ecep.contract.controller.ManagerSkin; import com.ecep.contract.controller.ManagerSkin;
import com.ecep.contract.ds.other.service.DepartmentService; import com.ecep.contract.controller.table.cell.DepartmentTableCell;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.ui.table.cell.DepartmentTableCell; import com.ecep.contract.service.DepartmentService;
import com.ecep.contract.util.SpecificationUtils;
import com.ecep.contract.vm.EmployeeViewModel; import com.ecep.contract.vm.EmployeeViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
@@ -30,14 +29,12 @@ public class EmployeeManagerSkin
} }
@Override @Override
public Specification<Employee> getSpecification() { public Map<String, Object> getSpecification() {
Specification<Employee> spec = super.getSpecification(); Map<String, Object> params = super.getSpecification();
if (controller.activeCheckBox.isSelected()) { if (controller.activeCheckBox.isSelected()) {
spec = SpecificationUtils.and(spec, (root, query, builder) -> { params.put("isActive", true);
return builder.isTrue(root.get("isActive"));
});
} }
return spec; return params;
} }
@Override @Override
@@ -51,7 +48,6 @@ public class EmployeeManagerSkin
controller.departmentColumn.setCellValueFactory(param -> param.getValue().getDepartment()); controller.departmentColumn.setCellValueFactory(param -> param.getValue().getDepartment());
controller.departmentColumn.setCellFactory(param -> new DepartmentTableCell<>(getDepartmentService())); controller.departmentColumn.setCellFactory(param -> new DepartmentTableCell<>(getDepartmentService()));
controller.emailColumn.setCellValueFactory(param -> param.getValue().getEmail()); controller.emailColumn.setCellValueFactory(param -> param.getValue().getEmail());
controller.createdColumn.setCellValueFactory(param -> param.getValue().getCreated()); controller.createdColumn.setCellValueFactory(param -> param.getValue().getCreated());
controller.entryDateColumn.setCellValueFactory(param -> param.getValue().getEntryDate()); controller.entryDateColumn.setCellValueFactory(param -> param.getValue().getEntryDate());

View File

@@ -6,17 +6,16 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.UITools;
import com.ecep.contract.cloud.u8.EmployeesSyncTask;
import com.ecep.contract.constant.CloudServiceConstant; import com.ecep.contract.constant.CloudServiceConstant;
import com.ecep.contract.controller.AbstManagerWindowController; import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.other.service.EmployeeService;
import com.ecep.contract.model.Department; import com.ecep.contract.model.Department;
import com.ecep.contract.model.Employee; 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.vm.EmployeeViewModel;
import javafx.concurrent.Task;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.CheckBox; import javafx.scene.control.CheckBox;
@@ -70,7 +69,7 @@ public class EmployeeManagerWindowController
* 从 U8系统 同步员工数据 * 从 U8系统 同步员工数据
*/ */
public void onSyncFromU8Action(ActionEvent event) { public void onSyncFromU8Action(ActionEvent event) {
Task<Object> task = new EmployeesSyncTask(); EmployeesSyncTask task = new EmployeesSyncTask();
UITools.showTaskDialogAndWait("" + CloudServiceConstant.U8_NAME + " 同步员工数据", task, null); UITools.showTaskDialogAndWait("" + CloudServiceConstant.U8_NAME + " 同步员工数据", task, null);
} }

View File

@@ -5,11 +5,11 @@ import java.util.List;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import com.ecep.contract.util.FxmlPath; import com.ecep.contract.controller.table.cell.EmployeeTableCell;
import com.ecep.contract.ds.other.service.EmployeeAuthBindService;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.model.EmployeeAuthBind; import com.ecep.contract.model.EmployeeAuthBind;
import com.ecep.contract.ui.table.cell.EmployeeTableCell; import com.ecep.contract.service.EmployeeAuthBindService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.EmployeeAuthBindViewModel; import com.ecep.contract.vm.EmployeeAuthBindViewModel;
import javafx.application.Platform; import javafx.application.Platform;

View File

@@ -2,11 +2,11 @@ package com.ecep.contract.controller.employee;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.converter.EntityStringConverter; import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.ds.other.service.DepartmentService;
import com.ecep.contract.model.Department; import com.ecep.contract.model.Department;
import com.ecep.contract.service.DepartmentService;
import com.ecep.contract.util.UITools;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;
import javafx.util.converter.LocalDateStringConverter; import javafx.util.converter.LocalDateStringConverter;

View File

@@ -2,11 +2,11 @@ package com.ecep.contract.controller.employee;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.ds.other.service.EmployeeLoginHistoryService; import com.ecep.contract.controller.table.cell.LocalDateTimeTableCell;
import com.ecep.contract.model.EmployeeLoginHistory; import com.ecep.contract.model.EmployeeLoginHistory;
import com.ecep.contract.ui.table.cell.LocalDateTimeTableCell; import com.ecep.contract.service.EmployeeLoginHistoryService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.EmployeeLoginHistoryViewModel; import com.ecep.contract.vm.EmployeeLoginHistoryViewModel;
import javafx.application.Platform; import javafx.application.Platform;

View File

@@ -1,5 +1,6 @@
package com.ecep.contract.controller.employee; package com.ecep.contract.controller.employee;
import java.util.HashMap;
import java.util.List; import java.util.List;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
@@ -50,11 +51,8 @@ public class EmployeeTabSkinRole
private void initializeListView() { private void initializeListView() {
// 非系统内置账户 // 非系统内置账户
Specification<EmployeeRole> spec = null; HashMap<String, Object> params = new HashMap<>();
if (!Desktop.instance.getActiveEmployee().isSystemAdministrator()) { List<EmployeeRole> roles = getEmployeeRoleService().findAll(params, Pageable.ofSize(500)).getContent();
spec = (root, query, cb) -> cb.equal(root.get("systemAdministrator"), false);
}
List<EmployeeRole> roles = getEmployeeRoleService().findAll(spec, Pageable.ofSize(500)).getContent();
controller.rolesField.getSourceItems().setAll(roles); controller.rolesField.getSourceItems().setAll(roles);
controller.rolesField.setCellFactory(param -> { controller.rolesField.setCellFactory(param -> {

View File

@@ -9,10 +9,10 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.other.service.EmployeeService;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.model.EmployeeRole; import com.ecep.contract.model.EmployeeRole;
import com.ecep.contract.service.EmployeeService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.EmployeeViewModel; import com.ecep.contract.vm.EmployeeViewModel;
import javafx.scene.control.CheckBox; import javafx.scene.control.CheckBox;

View File

@@ -3,13 +3,13 @@ package com.ecep.contract.controller.inventory;
import java.util.function.Function; import java.util.function.Function;
import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.AbstEntityManagerSkin;
import com.ecep.contract.controller.table.LocalDateFieldTableCell; 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.converter.EntityStringConverter;
import com.ecep.contract.ds.other.service.InventoryCatalogService;
import com.ecep.contract.ds.other.service.InventoryService;
import com.ecep.contract.model.Inventory; import com.ecep.contract.model.Inventory;
import com.ecep.contract.model.InventoryCatalog; import com.ecep.contract.model.InventoryCatalog;
import com.ecep.contract.ui.table.cell.LocalDateTimeTableCell; import com.ecep.contract.service.InventoryCatalogService;
import com.ecep.contract.service.InventoryService;
import com.ecep.contract.vm.InventoryViewModel; import com.ecep.contract.vm.InventoryViewModel;
import javafx.beans.property.Property; import javafx.beans.property.Property;

View File

@@ -8,13 +8,13 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.AbstManagerWindowController; import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.other.controller.InventorySyncTask;
import com.ecep.contract.ds.other.service.InventoryService;
import com.ecep.contract.model.Inventory; import com.ecep.contract.model.Inventory;
import com.ecep.contract.model.InventoryCatalog; 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.vm.InventoryViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;

View File

@@ -8,17 +8,16 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.MessageHolder; import com.ecep.contract.MessageHolder;
import com.ecep.contract.MyDateTimeUtils; import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.UITools;
import com.ecep.contract.cloud.u8.ctx.InventoryCtx;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin; import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.converter.EmployeeStringConverter; import com.ecep.contract.converter.EmployeeStringConverter;
import com.ecep.contract.converter.EntityStringConverter; import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.ds.other.service.InventoryCatalogService;
import com.ecep.contract.ds.other.service.InventoryService;
import com.ecep.contract.model.Inventory; import com.ecep.contract.model.Inventory;
import com.ecep.contract.model.InventoryCatalog; 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.vm.InventoryViewModel;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
@@ -30,32 +29,21 @@ import javafx.util.converter.CurrencyStringConverter;
import javafx.util.converter.LocalDateStringConverter; import javafx.util.converter.LocalDateStringConverter;
import javafx.util.converter.LocalDateTimeStringConverter; import javafx.util.converter.LocalDateTimeStringConverter;
import javafx.util.converter.NumberStringConverter; import javafx.util.converter.NumberStringConverter;
import lombok.Setter;
public class InventoryTabSkinBase public class InventoryTabSkinBase
extends AbstEntityBasedTabSkin<InventoryWindowController, Inventory, InventoryViewModel> extends AbstEntityBasedTabSkin<InventoryWindowController, Inventory, InventoryViewModel>
implements TabSkin, EditableEntityTableTabSkin<Inventory, InventoryViewModel> { implements TabSkin, EditableEntityTableTabSkin<Inventory, InventoryViewModel> {
@Setter
private InventoryService service;
@Setter
private InventoryCatalogService catalogService;
public InventoryTabSkinBase(InventoryWindowController controller) { public InventoryTabSkinBase(InventoryWindowController controller) {
super(controller); super(controller);
} }
InventoryService getService() { InventoryService getService() {
if (service == null) { return getCachedBean(InventoryService.class);
service = getBean(InventoryService.class);
}
return service;
} }
InventoryCatalogService getCatalogService() { InventoryCatalogService getCatalogService() {
if (catalogService == null) { return getCachedBean(InventoryCatalogService.class);
catalogService = getBean(InventoryCatalogService.class);
}
return catalogService;
} }
@Override @Override
@@ -185,15 +173,8 @@ public class InventoryTabSkinBase
return; return;
} }
setStatus("正在同步数据..."); setStatus("正在同步数据...");
InventoryCtx ctx = new InventoryCtx();
MessageHolder holder = (lv, msg) -> setStatus(msg); MessageHolder holder = (lv, msg) -> setStatus(msg);
ctx.initializeRepository(holder); getService().syncInventory(inventory, holder);
if (ctx.syncInventoryDetailByCode(inventory, inventory.getCode(), holder)) {
save(inventory);
setStatus("同步数据完成.");
} else {
setStatus("没有数据更新.");
}
} }

View File

@@ -2,25 +2,20 @@ package com.ecep.contract.controller.inventory;
import java.text.NumberFormat; import java.text.NumberFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Map;
import org.springframework.data.jpa.domain.Specification; import com.ecep.contract.controller.contract.ContractWindowController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.controller.ContractWindowController;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin;
import com.ecep.contract.ds.contract.service.ContractItemService;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.other.service.InventoryHistoryPriceService;
import com.ecep.contract.model.Contract; import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ContractItem;
import com.ecep.contract.model.Inventory; import com.ecep.contract.model.Inventory;
import com.ecep.contract.util.SpecificationUtils; 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.vm.ContractViewModel; import com.ecep.contract.vm.ContractViewModel;
import com.ecep.contract.vm.InventoryViewModel; import com.ecep.contract.vm.InventoryViewModel;
import jakarta.persistence.criteria.Root;
import jakarta.persistence.criteria.Subquery;
import javafx.scene.control.ContextMenu; import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem; import javafx.scene.control.MenuItem;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;
@@ -95,18 +90,22 @@ public class InventoryTabSkinContracts
} }
@Override @Override
public Specification<Contract> getSpecification(Inventory parent) { public Map<String, Object> getSpecification(Inventory parent) {
return SpecificationUtils.and(getSpecification(), (root, query, builder) -> { Map<String, Object> params = getSpecification();
// 创建ContractItem的子查询 params.put("inventory", parent);
Subquery<Integer> subquery = query.subquery(Integer.class);
Root<ContractItem> from = subquery.from(ContractItem.class);
// 子查询选择与指定库存相关的合同ID
subquery.select(from.get("contract").get("id"))
.where(builder.equal(from.get("inventory"), parent));
// 主查询筛选ID在子查询结果中的合同 // return SpecificationUtils.and(getSpecification(), (root, query, builder) -> {
return builder.in(root.get("id")).value(subquery); // // 创建ContractItem的子查询
}); // Subquery<Integer> subquery = query.subquery(Integer.class);
// Root<ContractItem> 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);
// });
return params;
} }
@Override @Override

View File

@@ -6,24 +6,23 @@ import java.time.Year;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.hibernate.Hibernate; import org.hibernate.Hibernate;
import org.springframework.data.jpa.domain.Specification;
import com.ecep.contract.ContractPayWay; import com.ecep.contract.ContractPayWay;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin;
import com.ecep.contract.ds.contract.service.ContractItemService;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.other.service.InventoryHistoryPriceService;
import com.ecep.contract.model.Contract; import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ContractItem; import com.ecep.contract.model.ContractItem;
import com.ecep.contract.model.HistoryPrice; import com.ecep.contract.model.HistoryPrice;
import com.ecep.contract.model.Inventory; import com.ecep.contract.model.Inventory;
import com.ecep.contract.model.InventoryHistoryPrice; import com.ecep.contract.model.InventoryHistoryPrice;
import com.ecep.contract.util.SpecificationUtils; 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.vm.InventoryHistoryPriceViewModel; import com.ecep.contract.vm.InventoryHistoryPriceViewModel;
import com.ecep.contract.vm.InventoryViewModel; import com.ecep.contract.vm.InventoryViewModel;
@@ -265,10 +264,10 @@ public class InventoryTabSkinHistoryPrice
} }
@Override @Override
public Specification<InventoryHistoryPrice> getSpecification(Inventory parent) { public Map<String, Object> getSpecification(Inventory parent) {
return SpecificationUtils.and(getSpecification(), (root, query, builder) -> { Map<String, Object> params = getSpecification();
return builder.equal(root.get("inventory"), parent); params.put("inventory", parent.getId());
}); return params;
} }
@Override @Override

View File

@@ -6,9 +6,9 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.other.service.InventoryService;
import com.ecep.contract.model.Inventory; 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.vm.InventoryViewModel;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;

View File

@@ -1,35 +1,26 @@
package com.ecep.contract.controller.permission; package com.ecep.contract.controller.permission;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.ds.other.service.EmployeeRoleService;
import com.ecep.contract.ds.other.service.FunctionService;
import com.ecep.contract.ds.other.service.PermissionService;
import com.ecep.contract.model.EmployeeRole; 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.vm.EmployeeRoleViewModel;
public abstract class AbstEmployeeRoleBasedTabSkin public abstract class AbstEmployeeRoleBasedTabSkin
extends AbstEntityBasedTabSkin<EmployeeRoleWindowController, EmployeeRole, EmployeeRoleViewModel> { extends AbstEntityBasedTabSkin<EmployeeRoleWindowController, EmployeeRole, EmployeeRoleViewModel> {
private EmployeeRoleService roleService;
private FunctionService functionService;
public AbstEmployeeRoleBasedTabSkin(EmployeeRoleWindowController controller) { public AbstEmployeeRoleBasedTabSkin(EmployeeRoleWindowController controller) {
super(controller); super(controller);
viewModel = controller.getViewModel(); viewModel = controller.getViewModel();
} }
EmployeeRoleService getRoleService() { EmployeeRoleService getRoleService() {
if (roleService == null) { return getCachedBean(EmployeeRoleService.class);
roleService = getBean(EmployeeRoleService.class);
}
return roleService;
} }
FunctionService getFunctionService() { FunctionService getFunctionService() {
if (functionService == null) { return getCachedBean(FunctionService.class);
functionService = getBean(FunctionService.class);
}
return functionService;
} }
public PermissionService getPermissionService() { public PermissionService getPermissionService() {

View File

@@ -7,10 +7,10 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstManagerWindowController; import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.other.service.FunctionService;
import com.ecep.contract.ds.other.service.PermissionService;
import com.ecep.contract.model.Function; import com.ecep.contract.model.Function;
import com.ecep.contract.service.FunctionService;
import com.ecep.contract.service.PermissionService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.FunctionViewModel; import com.ecep.contract.vm.FunctionViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;

View File

@@ -3,8 +3,8 @@ package com.ecep.contract.controller.permission;
import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.AbstEntityManagerSkin;
import com.ecep.contract.controller.ManagerSkin; import com.ecep.contract.controller.ManagerSkin;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin; import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.ds.other.service.PermissionService;
import com.ecep.contract.model.EmployeeRole; import com.ecep.contract.model.EmployeeRole;
import com.ecep.contract.service.PermissionService;
import com.ecep.contract.vm.EmployeeRoleViewModel; import com.ecep.contract.vm.EmployeeRoleViewModel;
import javafx.scene.control.cell.CheckBoxTableCell; import javafx.scene.control.cell.CheckBoxTableCell;

View File

@@ -8,10 +8,10 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstManagerWindowController; import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.other.service.EmployeeRoleService;
import com.ecep.contract.ds.other.service.PermissionService;
import com.ecep.contract.model.EmployeeRole; 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.vm.EmployeeRoleViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;

View File

@@ -8,6 +8,7 @@ import org.springframework.data.jpa.domain.Specification;
import com.ecep.contract.model.EmployeeRole; import com.ecep.contract.model.EmployeeRole;
import com.ecep.contract.model.Function; import com.ecep.contract.model.Function;
import com.ecep.contract.util.ParamUtils;
import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleBooleanProperty;
import javafx.collections.ListChangeListener; import javafx.collections.ListChangeListener;
@@ -59,8 +60,8 @@ public class EmployeeRoleTabSkinFunctions extends AbstEmployeeRoleBasedTabSkin {
private void initializeListView() { private void initializeListView() {
// 非系统内置账户 // 非系统内置账户
Specification<Function> spec = (root, query, cb) -> cb.equal(root.get("active"), true); List<Function> roles = getFunctionService()
List<Function> roles = getFunctionService().findAll(spec, Pageable.ofSize(500)).getContent(); .findAll(ParamUtils.builder().equals("active", true).build(), Pageable.ofSize(500)).getContent();
functionsField.getSourceItems().setAll(roles); functionsField.getSourceItems().setAll(roles);
functionsField.setCellFactory(param -> { functionsField.setCellFactory(param -> {

View File

@@ -9,10 +9,10 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.other.service.EmployeeRoleService;
import com.ecep.contract.ds.other.service.PermissionService;
import com.ecep.contract.model.EmployeeRole; 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.vm.EmployeeRoleViewModel;
import javafx.fxml.FXML; import javafx.fxml.FXML;

View File

@@ -1,9 +1,9 @@
package com.ecep.contract.controller.permission; package com.ecep.contract.controller.permission;
import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.AbstEntityManagerSkin;
import com.ecep.contract.ds.other.service.FunctionService;
import com.ecep.contract.ds.other.service.PermissionService;
import com.ecep.contract.model.Function; import com.ecep.contract.model.Function;
import com.ecep.contract.service.FunctionService;
import com.ecep.contract.service.PermissionService;
import com.ecep.contract.vm.FunctionViewModel; import com.ecep.contract.vm.FunctionViewModel;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;

View File

@@ -1,14 +1,14 @@
package com.ecep.contract.controller.permission; package com.ecep.contract.controller.permission;
import org.springframework.beans.factory.annotation.Autowired; import java.util.Map;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.beans.factory.annotation.Autowired;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin;
import com.ecep.contract.ds.other.service.PermissionService;
import com.ecep.contract.model.Function; import com.ecep.contract.model.Function;
import com.ecep.contract.model.Permission; import com.ecep.contract.model.Permission;
import com.ecep.contract.util.SpecificationUtils; import com.ecep.contract.service.PermissionService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.FunctionViewModel; import com.ecep.contract.vm.FunctionViewModel;
import com.ecep.contract.vm.PermissionViewModel; import com.ecep.contract.vm.PermissionViewModel;
@@ -61,10 +61,10 @@ public class FunctionTabSkinPermission
} }
@Override @Override
public Specification<Permission> getSpecification(Function parent) { public Map<String, Object> getSpecification(Function parent) {
return SpecificationUtils.and(getSpecification(), (root, query, criteriaBuilder) -> { Map<String, Object> params = getSpecification();
return criteriaBuilder.equal(root.get("function"), parent); params.put("function", parent.getId());
}); return params;
} }
} }

View File

@@ -8,9 +8,9 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.other.service.FunctionService;
import com.ecep.contract.model.Function; import com.ecep.contract.model.Function;
import com.ecep.contract.service.FunctionService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.FunctionViewModel; import com.ecep.contract.vm.FunctionViewModel;
import javafx.fxml.FXML; import javafx.fxml.FXML;

View File

@@ -1,18 +1,19 @@
package com.ecep.contract.controller.permission; package com.ecep.contract.controller.permission;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.function.Function; import java.util.function.Function;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.data.jpa.domain.Specification;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.ManagerSkin; import com.ecep.contract.controller.ManagerSkin;
import com.ecep.contract.controller.table.TableTabSkin; import com.ecep.contract.controller.table.TableTabSkin;
import com.ecep.contract.model.Permission; import com.ecep.contract.model.Permission;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.FunctionViewModel; import com.ecep.contract.vm.FunctionViewModel;
import com.ecep.contract.vm.PermissionViewModel; import com.ecep.contract.vm.PermissionViewModel;
@@ -58,7 +59,6 @@ public class PermissionManagerSkin implements ManagerSkin, TableTabSkin<Permissi
return table; return table;
} }
@Override @Override
public void install() { public void install() {
initializeTable(); initializeTable();
@@ -66,14 +66,14 @@ public class PermissionManagerSkin implements ManagerSkin, TableTabSkin<Permissi
loadTableDataSet(); loadTableDataSet();
} }
@Override @Override
public void initializeTable() { public void initializeTable() {
table.setEditable(true); table.setEditable(true);
// controller.permissionTable_descriptionColumn.setCellValueFactory(param -> param.getValue().getDescription()); // controller.permissionTable_descriptionColumn.setCellValueFactory(param ->
// controller.permissionTable_descriptionColumn.setCellFactory(TextFieldTableCell.forTableColumn()); // param.getValue().getDescription());
// controller.permissionTable_descriptionColumn.setOnEditCommit(this::onSignMethodTableDescriptionColumnEditCommitAction); // controller.permissionTable_descriptionColumn.setCellFactory(TextFieldTableCell.forTableColumn());
// controller.permissionTable_descriptionColumn.setOnEditCommit(this::onSignMethodTableDescriptionColumnEditCommitAction);
table.setItems(dataSet); table.setItems(dataSet);
@@ -143,7 +143,8 @@ public class PermissionManagerSkin implements ManagerSkin, TableTabSkin<Permissi
if (viewModel == null) { if (viewModel == null) {
return List.of(); return List.of();
} }
return controller.permissionService.findByFunctionId(viewModel.getId().get()).stream().map(PermissionViewModel::from).toList(); return controller.permissionService.findByFunctionId(viewModel.getId().get()).stream()
.map(PermissionViewModel::from).toList();
} }
public void loadTableDataSet() { public void loadTableDataSet() {
@@ -163,12 +164,14 @@ public class PermissionManagerSkin implements ManagerSkin, TableTabSkin<Permissi
} }
@Override @Override
public Specification<Permission> getSpecification() { public Map<String, Object> getSpecification() {
Map<String, Object> params = new HashMap<>();
return controller.permissionService.getSpecification(null); // 使用permissionService的specification逻辑
return params;
} }
private <K> void acceptSignMethodCellEditEvent(TableColumn.CellEditEvent<PermissionViewModel, K> event, Function<PermissionViewModel, Property<K>> function) { private <K> void acceptSignMethodCellEditEvent(TableColumn.CellEditEvent<PermissionViewModel, K> event,
Function<PermissionViewModel, Property<K>> function) {
PermissionViewModel row = event.getRowValue(); PermissionViewModel row = event.getRowValue();
Property<K> property = function.apply(row); Property<K> property = function.apply(row);
property.setValue(event.getNewValue()); property.setValue(event.getNewValue());
@@ -188,5 +191,4 @@ public class PermissionManagerSkin implements ManagerSkin, TableTabSkin<Permissi
} }
} }
} }

View File

@@ -2,8 +2,8 @@ package com.ecep.contract.controller.project;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.vm.ProjectViewModel; import com.ecep.contract.vm.ProjectViewModel;
public abstract class AbstProjectBasedTabSkin public abstract class AbstProjectBasedTabSkin

View File

@@ -1,13 +1,12 @@
package com.ecep.contract.controller.project; package com.ecep.contract.controller.project;
import org.springframework.data.jpa.domain.Specification; import java.util.Map;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.IdentityEntity; import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.util.SpecificationUtils; import com.ecep.contract.service.ProjectService;
import com.ecep.contract.vm.IdentityViewModel; import com.ecep.contract.vm.IdentityViewModel;
import com.ecep.contract.vm.ProjectBasedViewModel; import com.ecep.contract.vm.ProjectBasedViewModel;
import com.ecep.contract.vm.ProjectViewModel; import com.ecep.contract.vm.ProjectViewModel;
@@ -34,9 +33,9 @@ public abstract class AbstProjectTableTabSkin<T extends IdentityEntity, TV exten
} }
@Override @Override
public Specification<T> getSpecification(Project parent) { public Map<String, Object> getSpecification(Project parent) {
return SpecificationUtils.and(getSpecification(), (root, query, builder) -> { Map<String, Object> params = getSpecification();
return builder.equal(root.get("project"), parent); params.put("project", parent.getId());
}); return params;
} }
} }

View File

@@ -11,14 +11,14 @@ import org.springframework.stereotype.Component;
import com.ecep.contract.Desktop; import com.ecep.contract.Desktop;
import com.ecep.contract.controller.BaseController; import com.ecep.contract.controller.BaseController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.converter.EntityStringConverter; import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.ds.other.service.EmployeeService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.ds.project.service.SaleTypeService;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectSaleType; import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.service.EmployeeService;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.service.SaleTypeService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.ProjectViewModel; import com.ecep.contract.vm.ProjectViewModel;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;

View File

@@ -0,0 +1,15 @@
package com.ecep.contract.controller.project;
import java.util.List;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyInvoiceInfo;
import com.ecep.contract.service.ViewModelService;
import com.ecep.contract.vm.CompanyInvoiceInfoViewModel;
public class CompanyInvoiceInfoService implements ViewModelService<CompanyInvoiceInfo, CompanyInvoiceInfoViewModel> {
public List<CompanyInvoiceInfo> searchByCompany(Company company, String searchText) {
throw new UnsupportedOperationException("未实现");
}
}

View File

@@ -1,24 +1,23 @@
package com.ecep.contract.controller.project; package com.ecep.contract.controller.project;
import org.springframework.data.jpa.domain.Specification; import java.util.Map;
import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.AbstEntityManagerSkin;
import com.ecep.contract.controller.BaseController; import com.ecep.contract.controller.BaseController;
import com.ecep.contract.controller.ComboBoxUtils; import com.ecep.contract.controller.ComboBoxUtils;
import com.ecep.contract.controller.ManagerSkin; import com.ecep.contract.controller.ManagerSkin;
import com.ecep.contract.controller.table.cell.CompanyTableCell;
import com.ecep.contract.converter.EntityStringConverter; import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.ds.project.service.ProductTypeService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.ds.project.service.ProjectTypeService;
import com.ecep.contract.ds.project.service.SaleTypeService;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.model.ProductType; import com.ecep.contract.model.ProductType;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectSaleType; import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.model.ProjectType; import com.ecep.contract.model.ProjectType;
import com.ecep.contract.ui.table.cell.CompanyTableCell; import com.ecep.contract.service.CompanyService;
import com.ecep.contract.util.SpecificationUtils; import com.ecep.contract.service.ProductTypeService;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.service.ProjectTypeService;
import com.ecep.contract.service.SaleTypeService;
import com.ecep.contract.vm.ProjectViewModel; import com.ecep.contract.vm.ProjectViewModel;
import javafx.application.Platform; import javafx.application.Platform;
@@ -41,7 +40,6 @@ public class ProjectManagerSkin
@Setter @Setter
private ProductTypeService productTypeService; private ProductTypeService productTypeService;
public ProjectManagerSkin(ProjectManagerWindowController controller) { public ProjectManagerSkin(ProjectManagerWindowController controller) {
super(controller); super(controller);
} }
@@ -50,7 +48,7 @@ public class ProjectManagerSkin
return controller.getViewModelService(); return controller.getViewModelService();
} }
public CompanyService getCompanyService(){ public CompanyService getCompanyService() {
if (companyService == null) { if (companyService == null) {
companyService = getBean(CompanyService.class); companyService = getBean(CompanyService.class);
} }
@@ -78,16 +76,13 @@ public class ProjectManagerSkin
return productTypeService; return productTypeService;
} }
@Override @Override
public Specification<Project> getSpecification() { public Map<String, Object> getSpecification() {
Specification<Project> spec = super.getSpecification(); Map<String, Object> params = super.getSpecification();
if (controller.saleTypeSelector.getValue() != null) { if (controller.saleTypeSelector.getValue() != null) {
spec = SpecificationUtils.and(spec, (root, query, builder) -> { params.put("saleType", controller.saleTypeSelector.getValue());
return builder.equal(root.get("saleType"), controller.saleTypeSelector.getValue());
});
} }
return spec; return params;
} }
@Override @Override
@@ -102,7 +97,9 @@ public class ProjectManagerSkin
controller.nameColumn.setCellValueFactory(param -> param.getValue().getName()); controller.nameColumn.setCellValueFactory(param -> param.getValue().getName());
controller.amountColumn.setCellValueFactory(param -> param.getValue().getAmount()); controller.amountColumn.setCellValueFactory(param -> param.getValue().getAmount());
controller.amountColumn.setCellFactory(TextFieldTableCell.forTableColumn(new CurrencyStringConverter(getLocale())));//, "#,##0" controller.amountColumn
.setCellFactory(TextFieldTableCell.forTableColumn(new CurrencyStringConverter(getLocale())));// ,
// "#,##0"
initializeSaleTypeColumn(controller.saleTypeColumn); initializeSaleTypeColumn(controller.saleTypeColumn);
initializeCustomerColumn(controller.customerColumn); initializeCustomerColumn(controller.customerColumn);
@@ -114,7 +111,6 @@ public class ProjectManagerSkin
controller.useOfferColumn.setCellValueFactory(param -> param.getValue().getUseOffer()); controller.useOfferColumn.setCellValueFactory(param -> param.getValue().getUseOffer());
controller.useOfferColumn.setCellFactory(CheckBoxTableCell.forTableColumn(controller.useOfferColumn)); controller.useOfferColumn.setCellFactory(CheckBoxTableCell.forTableColumn(controller.useOfferColumn));
controller.createdColumn.setCellValueFactory(param -> param.getValue().getCreated()); controller.createdColumn.setCellValueFactory(param -> param.getValue().getCreated());
Platform.runLater(() -> { Platform.runLater(() -> {
@@ -122,10 +118,9 @@ public class ProjectManagerSkin
}); });
} }
private void initializeCustomerColumn(TableColumn<ProjectViewModel, Company> column) { private void initializeCustomerColumn(TableColumn<ProjectViewModel, Company> column) {
column.setCellValueFactory(param -> param.getValue().getCustomer()); column.setCellValueFactory(param -> param.getValue().getCustomer());
column.setCellFactory(param-> new CompanyTableCell<>(getCompanyService())); column.setCellFactory(param -> new CompanyTableCell<>(getCompanyService()));
} }
private void initializeProductTypeColumn(TableColumn<ProjectViewModel, String> column) { private void initializeProductTypeColumn(TableColumn<ProjectViewModel, String> column) {
@@ -156,7 +151,8 @@ public class ProjectManagerSkin
@Override @Override
protected void onTableCreateNewAction(ActionEvent event) { protected void onTableCreateNewAction(ActionEvent event) {
BaseController.show(ApplyNewProjectWindowController.class, getTableView().getScene().getWindow(), controller -> { BaseController.show(ApplyNewProjectWindowController.class, getTableView().getScene().getWindow(),
controller -> {
controller.setOnApplied(project -> { controller.setOnApplied(project -> {
ProjectViewModel viewModel = ProjectViewModel.from(project); ProjectViewModel viewModel = ProjectViewModel.from(project);
dataSet.addFirst(viewModel); dataSet.addFirst(viewModel);

View File

@@ -11,16 +11,16 @@ import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstManagerWindowController; import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.controller.BaseController; import com.ecep.contract.controller.BaseController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.project.industry.ProjectIndustryManagerWindowController; import com.ecep.contract.controller.project.industry.ProjectIndustryManagerWindowController;
import com.ecep.contract.controller.project.product_type.ProductTypeManagerWindowController; import com.ecep.contract.controller.project.product_type.ProductTypeManagerWindowController;
import com.ecep.contract.controller.project.project_type.ProjectTypeManagerWindowController; import com.ecep.contract.controller.project.project_type.ProjectTypeManagerWindowController;
import com.ecep.contract.controller.project.sale_type.ProjectSaleTypeManagerWindowController; import com.ecep.contract.controller.project.sale_type.ProjectSaleTypeManagerWindowController;
import com.ecep.contract.controller.project.usage.ProductUsageManagerWindowController; import com.ecep.contract.controller.project.usage.ProductUsageManagerWindowController;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectSaleType; 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.vm.ProjectViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;

View File

@@ -5,19 +5,10 @@ import java.util.stream.Stream;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.ComboBoxUtils; import com.ecep.contract.controller.ComboBoxUtils;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.converter.EmployeeStringConverter; import com.ecep.contract.converter.EmployeeStringConverter;
import com.ecep.contract.converter.EntityStringConverter; import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.ds.other.service.EmployeeService;
import com.ecep.contract.ds.project.service.DeliverySignMethodService;
import com.ecep.contract.ds.project.service.ProductTypeService;
import com.ecep.contract.ds.project.service.ProductUsageService;
import com.ecep.contract.ds.project.service.ProjectCostService;
import com.ecep.contract.ds.project.service.ProjectIndustryService;
import com.ecep.contract.ds.project.service.ProjectTypeService;
import com.ecep.contract.ds.project.service.SaleTypeService;
import com.ecep.contract.model.DeliverySignMethod; import com.ecep.contract.model.DeliverySignMethod;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.model.ProductType; import com.ecep.contract.model.ProductType;
@@ -27,6 +18,15 @@ import com.ecep.contract.model.ProjectCost;
import com.ecep.contract.model.ProjectIndustry; import com.ecep.contract.model.ProjectIndustry;
import com.ecep.contract.model.ProjectSaleType; import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.model.ProjectType; 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.SaleTypeService;
import com.ecep.contract.util.UITools;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleObjectProperty;

View File

@@ -5,22 +5,22 @@ import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.project.bid.ProjectBidWindowController; import com.ecep.contract.controller.project.bid.ProjectBidWindowController;
import com.ecep.contract.controller.tab.RefreshableSkin; import com.ecep.contract.controller.tab.RefreshableSkin;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin; import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.controller.table.cell.EmployeeTableCell;
import com.ecep.contract.converter.CompanyStringConverter;
import com.ecep.contract.converter.EmployeeStringConverter; import com.ecep.contract.converter.EmployeeStringConverter;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.ds.customer.service.CompanyCustomerFileService;
import com.ecep.contract.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.ds.project.service.ProjectBidService;
import com.ecep.contract.model.CompanyCustomerEvaluationFormFile; import com.ecep.contract.model.CompanyCustomerEvaluationFormFile;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectBid; import com.ecep.contract.model.ProjectBid;
import com.ecep.contract.service.CompanyStringConverter; import com.ecep.contract.service.CompanyCustomerFileService;
import com.ecep.contract.ui.table.cell.EmployeeTableCell; import com.ecep.contract.service.CompanyCustomerService;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.service.ProjectBidService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.ProjectBidViewModel; import com.ecep.contract.vm.ProjectBidViewModel;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;

View File

@@ -2,11 +2,11 @@ package com.ecep.contract.controller.project;
import java.time.LocalDate; import java.time.LocalDate;
import com.ecep.contract.util.FxmlPath; import com.ecep.contract.controller.contract.ContractWindowController;
import com.ecep.contract.controller.project.ContractWindowController;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.model.Contract; import com.ecep.contract.model.Contract;
import com.ecep.contract.service.ContractService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.ContractViewModel; import com.ecep.contract.vm.ContractViewModel;
import javafx.application.Platform; import javafx.application.Platform;

View File

@@ -3,18 +3,18 @@ package com.ecep.contract.controller.project;
import java.text.NumberFormat; import java.text.NumberFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.project.cost.ProjectCostWindowController; import com.ecep.contract.controller.project.cost.ProjectCostWindowController;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.ds.contract.service.ContractItemService; import com.ecep.contract.controller.table.cell.EmployeeTableCell;
import com.ecep.contract.ds.project.service.ProjectCostItemService; import com.ecep.contract.controller.table.cell.LocalDateTimeTableCell;
import com.ecep.contract.ds.project.service.ProjectCostService;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectCost; import com.ecep.contract.model.ProjectCost;
import com.ecep.contract.model.ProjectCostItem; import com.ecep.contract.model.ProjectCostItem;
import com.ecep.contract.ui.table.cell.EmployeeTableCell; import com.ecep.contract.service.ContractItemService;
import com.ecep.contract.ui.table.cell.LocalDateTimeTableCell; import com.ecep.contract.service.ProjectCostItemService;
import com.ecep.contract.service.ProjectCostService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.ProjectCostItemViewModel; import com.ecep.contract.vm.ProjectCostItemViewModel;
import com.ecep.contract.vm.ProjectCostViewModel; import com.ecep.contract.vm.ProjectCostViewModel;

View File

@@ -8,22 +8,21 @@ import org.hibernate.Hibernate;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import com.ecep.contract.SpringApp; import com.ecep.contract.SpringApp;
import com.ecep.contract.UITools;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.company.CompanyWindowController; import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.converter.CompanyStringConverter;
import com.ecep.contract.converter.EntityStringConverter; import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.ds.company.service.CompanyBankAccountService;
import com.ecep.contract.ds.company.service.CompanyContactService;
import com.ecep.contract.ds.company.service.CompanyInvoiceInfoService;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.ds.other.service.BankService;
import com.ecep.contract.model.Bank; import com.ecep.contract.model.Bank;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyBankAccount; import com.ecep.contract.model.CompanyBankAccount;
import com.ecep.contract.model.CompanyContact; import com.ecep.contract.model.CompanyContact;
import com.ecep.contract.model.CompanyInvoiceInfo; import com.ecep.contract.model.CompanyInvoiceInfo;
import com.ecep.contract.service.CompanyStringConverter; import com.ecep.contract.service.BankService;
import com.ecep.contract.service.CompanyBankAccountService;
import com.ecep.contract.service.CompanyContactService;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.UITools;
import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.StringProperty; import javafx.beans.property.StringProperty;

View File

@@ -5,19 +5,19 @@ import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.project.satisfaction_survey.CustomerSatisfactionSurveyWindowController; import com.ecep.contract.controller.project.satisfaction_survey.CustomerSatisfactionSurveyWindowController;
import com.ecep.contract.controller.tab.RefreshableSkin; import com.ecep.contract.controller.tab.RefreshableSkin;
import com.ecep.contract.controller.table.cell.EmployeeTableCell;
import com.ecep.contract.converter.CompanyStringConverter;
import com.ecep.contract.converter.EmployeeStringConverter; import com.ecep.contract.converter.EmployeeStringConverter;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.ds.customer.service.CompanyCustomerFileService;
import com.ecep.contract.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.ds.project.service.CustomerSatisfactionSurveyService;
import com.ecep.contract.model.CustomerSatisfactionSurvey; import com.ecep.contract.model.CustomerSatisfactionSurvey;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.service.CompanyStringConverter; import com.ecep.contract.service.CompanyCustomerFileService;
import com.ecep.contract.ui.table.cell.EmployeeTableCell; import com.ecep.contract.service.CompanyCustomerService;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.service.CustomerSatisfactionSurveyService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.CustomerSatisfactionSurveyViewModel; import com.ecep.contract.vm.CustomerSatisfactionSurveyViewModel;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;

View File

@@ -10,17 +10,17 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.ecep.contract.ContractPayWay; import com.ecep.contract.ContractPayWay;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin; import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.ds.contract.service.ContractPayPlanService; import com.ecep.contract.controller.table.cell.NumberTableCell;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.project.service.ProjectFundPlanService;
import com.ecep.contract.model.Contract; import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ContractPayPlan; import com.ecep.contract.model.ContractPayPlan;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectFundPlan; import com.ecep.contract.model.ProjectFundPlan;
import com.ecep.contract.ui.table.cell.NumberTableCell; import com.ecep.contract.service.ContractPayPlanService;
import com.ecep.contract.service.ContractService;
import com.ecep.contract.service.ProjectFundPlanService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.NumberUtils; import com.ecep.contract.util.NumberUtils;
import com.ecep.contract.vm.ProjectFundPlanViewModel; import com.ecep.contract.vm.ProjectFundPlanViewModel;

View File

@@ -5,24 +5,24 @@ import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.project.quotation.ProjectQuotationWindowController; import com.ecep.contract.controller.project.quotation.ProjectQuotationWindowController;
import com.ecep.contract.controller.tab.RefreshableSkin; import com.ecep.contract.controller.tab.RefreshableSkin;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin; import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.controller.table.cell.EmployeeTableCell;
import com.ecep.contract.controller.table.cell.EvaluationFileTableCell;
import com.ecep.contract.controller.table.cell.LocalDateTimeTableCell;
import com.ecep.contract.converter.CompanyStringConverter;
import com.ecep.contract.converter.EmployeeStringConverter; import com.ecep.contract.converter.EmployeeStringConverter;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.ds.customer.service.CompanyCustomerFileService;
import com.ecep.contract.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.ds.project.service.ProjectQuotationService;
import com.ecep.contract.model.CompanyCustomerEvaluationFormFile; import com.ecep.contract.model.CompanyCustomerEvaluationFormFile;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectQuotation; import com.ecep.contract.model.ProjectQuotation;
import com.ecep.contract.service.CompanyStringConverter; import com.ecep.contract.service.CompanyCustomerFileService;
import com.ecep.contract.ui.table.cell.EmployeeTableCell; import com.ecep.contract.service.CompanyCustomerService;
import com.ecep.contract.ui.table.cell.EvaluationFileTableCell; import com.ecep.contract.service.CompanyService;
import com.ecep.contract.ui.table.cell.LocalDateTimeTableCell; import com.ecep.contract.service.ProjectQuotationService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.ProjectQuotationViewModel; import com.ecep.contract.vm.ProjectQuotationViewModel;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;

View File

@@ -12,10 +12,6 @@ import org.springframework.stereotype.Component;
import com.ecep.contract.SpringApp; import com.ecep.contract.SpringApp;
import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.other.service.EmployeeService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.DeliverySignMethod; import com.ecep.contract.model.DeliverySignMethod;
import com.ecep.contract.model.ProductType; import com.ecep.contract.model.ProductType;
import com.ecep.contract.model.ProductUsage; import com.ecep.contract.model.ProductUsage;
@@ -23,6 +19,10 @@ import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectIndustry; import com.ecep.contract.model.ProjectIndustry;
import com.ecep.contract.model.ProjectSaleType; import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.model.ProjectType; import com.ecep.contract.model.ProjectType;
import com.ecep.contract.service.ContractService;
import com.ecep.contract.service.EmployeeService;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.ProjectViewModel; import com.ecep.contract.vm.ProjectViewModel;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;

View File

@@ -17,21 +17,13 @@ import com.ecep.contract.CompanyCustomerFileType;
import com.ecep.contract.ContractFileType; import com.ecep.contract.ContractFileType;
import com.ecep.contract.DesktopUtils; import com.ecep.contract.DesktopUtils;
import com.ecep.contract.MyDateTimeUtils; import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.customer.CompanyCustomerEvaluationFormFileWindowController; import com.ecep.contract.controller.customer.CompanyCustomerEvaluationFormFileWindowController;
import com.ecep.contract.controller.project.cost.ProjectCostWindowController; import com.ecep.contract.controller.project.cost.ProjectCostWindowController;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.converter.CompanyStringConverter;
import com.ecep.contract.converter.EmployeeStringConverter; import com.ecep.contract.converter.EmployeeStringConverter;
import com.ecep.contract.converter.EntityStringConverter; import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.ds.contract.service.ContractFileService;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.customer.service.CompanyCustomerFileService;
import com.ecep.contract.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.ds.project.service.ProjectCostService;
import com.ecep.contract.ds.project.service.ProjectQuotationService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyCustomer; import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.model.CompanyCustomerEvaluationFormFile; import com.ecep.contract.model.CompanyCustomerEvaluationFormFile;
@@ -42,7 +34,15 @@ import com.ecep.contract.model.Employee;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectBid; import com.ecep.contract.model.ProjectBid;
import com.ecep.contract.model.ProjectCost; import com.ecep.contract.model.ProjectCost;
import com.ecep.contract.service.CompanyStringConverter; 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.ProjectCostService;
import com.ecep.contract.service.ProjectQuotationService;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.ProjectBidViewModel; import com.ecep.contract.vm.ProjectBidViewModel;
import javafx.application.Platform; import javafx.application.Platform;

View File

@@ -6,11 +6,11 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.project.service.ProjectBidService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectBid; 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.vm.ProjectBidViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;

View File

@@ -1,6 +1,11 @@
package com.ecep.contract.controller.project.cost; package com.ecep.contract.controller.project.cost;
import static com.ecep.contract.util.ExcelUtils.*; import static com.ecep.contract.util.ExcelUtils.copyStyle;
import static com.ecep.contract.util.ExcelUtils.getCell;
import static com.ecep.contract.util.ExcelUtils.getCellValue;
import static com.ecep.contract.util.ExcelUtils.getRow;
import static com.ecep.contract.util.ExcelUtils.mergedCells;
import static com.ecep.contract.util.ExcelUtils.setCellValue;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
@@ -27,14 +32,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import com.ecep.contract.MessageHolder; import com.ecep.contract.MessageHolder;
import com.ecep.contract.ds.contract.service.ContractFileService; import com.ecep.contract.constant.ContractConstant;
import com.ecep.contract.ds.project.service.ProductTypeService;
import com.ecep.contract.ds.project.service.ProjectCostItemService;
import com.ecep.contract.ds.project.service.ProjectCostService;
import com.ecep.contract.ds.project.service.ProjectIndustryService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.ds.project.service.ProjectTypeService;
import com.ecep.contract.ds.project.service.SaleTypeService;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.model.ProductType; import com.ecep.contract.model.ProductType;
@@ -44,7 +42,14 @@ import com.ecep.contract.model.ProjectCostItem;
import com.ecep.contract.model.ProjectIndustry; import com.ecep.contract.model.ProjectIndustry;
import com.ecep.contract.model.ProjectSaleType; import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.model.ProjectType; import com.ecep.contract.model.ProjectType;
import com.ecep.contract.ui.Tasker; 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.ProjectService;
import com.ecep.contract.service.ProjectTypeService;
import com.ecep.contract.service.SaleTypeService;
import com.ecep.contract.task.Tasker;
import lombok.Setter; import lombok.Setter;
@@ -73,6 +78,7 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
} }
return costService; return costService;
} }
ProjectCostItemService getItemService() { ProjectCostItemService getItemService() {
if (itemService == null) { if (itemService == null) {
itemService = getBean(ProjectCostItemService.class); itemService = getBean(ProjectCostItemService.class);
@@ -85,7 +91,7 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
updateTitle("根据模板导出" + name); updateTitle("根据模板导出" + name);
// \\10.84.209.8\规章制度\ISO9000\01-最新发布版\4_JL_记录文件\ECEP-JL-XS-01-E_设备销售成本核算审批表.xlsx // \\10.84.209.8\规章制度\ISO9000\01-最新发布版\4_JL_记录文件\ECEP-JL-XS-01-E_设备销售成本核算审批表.xlsx
String path = getConfService().getString(ContractFileService.KEY_CUSTOMER_COST_TEMPLATE); String path = getConfService().getString(ContractConstant.KEY_CUSTOMER_COST_TEMPLATE);
if (!StringUtils.hasText(path)) { if (!StringUtils.hasText(path)) {
holder.error(name + "模板文件未设置,请先设置" + name + "模板文件"); holder.error(name + "模板文件未设置,请先设置" + name + "模板文件");
return null; return null;
@@ -117,8 +123,7 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
try ( try (
InputStream inp = new FileInputStream(template); InputStream inp = new FileInputStream(template);
Workbook wb = WorkbookFactory.create(inp) Workbook wb = WorkbookFactory.create(inp)) {
) {
updateProjectCost(wb, destFile, holder); updateProjectCost(wb, destFile, holder);
holder.info(name + "保存到" + destFile.getName() + "!"); holder.info(name + "保存到" + destFile.getName() + "!");
} catch (Exception e) { } catch (Exception e) {
@@ -239,7 +244,6 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
setCellValue(sheet, "D39", cost.getStampTax() / 100); setCellValue(sheet, "D39", cost.getStampTax() / 100);
setCellValue(sheet, "D40", cost.getTaxAndSurcharges() / 100); setCellValue(sheet, "D40", cost.getTaxAndSurcharges() / 100);
List<ProjectCostItem> items = getItemService().findByCost(cost); List<ProjectCostItem> items = getItemService().findByCost(cost);
if (items.size() > 27) { if (items.size() > 27) {
holder.warn("读取到 " + items.size() + " 行, 超出最大行数27行已截断导出到附加表中"); holder.warn("读取到 " + items.size() + " 行, 超出最大行数27行已截断导出到附加表中");
@@ -248,17 +252,25 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
setCellValue(sheet, row, 2, ""); setCellValue(sheet, row, 2, "");
setCellValue(sheet, row, 3, 1); setCellValue(sheet, row, 3, 1);
// 含税售价 // 含税售价
setCellValue(sheet, row, 4, items.stream().mapToDouble(v -> v.getInQuantity() * v.getInExclusiveTaxPrice() * (100 + v.getInTaxRate()) / 100).sum()); setCellValue(sheet, row, 4,
items.stream().mapToDouble(
v -> v.getInQuantity() * v.getInExclusiveTaxPrice() * (100 + v.getInTaxRate()) / 100)
.sum());
Cell cellTax = getCell(sheet, row, 6, false); Cell cellTax = getCell(sheet, row, 6, false);
if (cellTax != null) { if (cellTax != null) {
cellTax.setBlank(); cellTax.setBlank();
} }
// setCellValue(sheet, row, 6, 0); // setCellValue(sheet, row, 6, 0);
setCellValue(sheet, row, 7, items.stream().mapToDouble(v -> v.getInQuantity() * v.getInExclusiveTaxPrice()).sum()); setCellValue(sheet, row, 7,
items.stream().mapToDouble(v -> v.getInQuantity() * v.getInExclusiveTaxPrice()).sum());
// 含税进价 // 含税进价
setCellValue(sheet, row, 8, items.stream().mapToDouble(v -> v.getOutQuantity() * v.getOutExclusiveTaxPrice() * (100 + v.getOutTaxRate()) / 100).sum()); setCellValue(sheet, row, 8,
items.stream().mapToDouble(
v -> v.getOutQuantity() * v.getOutExclusiveTaxPrice() * (100 + v.getOutTaxRate()) / 100)
.sum());
setCellValue(sheet, row, 10, 0); setCellValue(sheet, row, 10, 0);
setCellValue(sheet, row, 11, items.stream().mapToDouble(v -> v.getOutQuantity() * v.getOutExclusiveTaxPrice()).sum()); setCellValue(sheet, row, 11,
items.stream().mapToDouble(v -> v.getOutQuantity() * v.getOutExclusiveTaxPrice()).sum());
writeItem2Detail(sheet, items, holder); writeItem2Detail(sheet, items, holder);
return; return;
@@ -325,7 +337,6 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
detailSheet.setColumnWidth(6, 13 * 256); detailSheet.setColumnWidth(6, 13 * 256);
copyStyle(sheet, "H10", detailSheet, "G3"); copyStyle(sheet, "H10", detailSheet, "G3");
setCellValue(detailSheet, "H3", "数量"); setCellValue(detailSheet, "H3", "数量");
detailSheet.setColumnWidth(7, 8 * 256); detailSheet.setColumnWidth(7, 8 * 256);
copyStyle(sheet, "D10", detailSheet, "H3"); copyStyle(sheet, "D10", detailSheet, "H3");
@@ -354,7 +365,6 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
copyStyle(sheet, "N10", detailSheet, "N3"); copyStyle(sheet, "N10", detailSheet, "N3");
} }
for (int i = 0; i < items.size(); i++) { for (int i = 0; i < items.size(); i++) {
ProjectCostItem item = items.get(i); ProjectCostItem item = items.get(i);
int rowIndex = 3 + i; int rowIndex = 3 + i;
@@ -388,7 +398,6 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
copyStyle(sheet, "A42", setCellValue(theRow, 1, "")); copyStyle(sheet, "A42", setCellValue(theRow, 1, ""));
theRow.setHeight((short) (28 * 20)); theRow.setHeight((short) (28 * 20));
int rowIndex = theRow.getRowNum() - 1; int rowIndex = theRow.getRowNum() - 1;
Cell cell2 = getCell(theRow, 2, true); Cell cell2 = getCell(theRow, 2, true);
if (cell2 != null) { if (cell2 != null) {
@@ -559,7 +568,8 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
// =IF(G4=0,IF(L4=0,0,G4-L4),G4-L4) // =IF(G4=0,IF(L4=0,0,G4-L4),G4-L4)
CellAddress g$4 = new CellAddress(row.getRowNum(), 6); CellAddress g$4 = new CellAddress(row.getRowNum(), 6);
CellAddress l$4 = new CellAddress(row.getRowNum(), 11); CellAddress l$4 = new CellAddress(row.getRowNum(), 11);
cell4.setCellFormula("IF(" + g$4 + "=0,IF(" + l$4 + "=0,0," + g$4 + "-" + l$4 + ")," + g$4 + "-" + l$4 + ")"); cell4.setCellFormula(
"IF(" + g$4 + "=0,IF(" + l$4 + "=0,0," + g$4 + "-" + l$4 + ")," + g$4 + "-" + l$4 + ")");
} }
// 毛利率GM% // 毛利率GM%

View File

@@ -0,0 +1,19 @@
package com.ecep.contract.controller.project.cost;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.model.ProjectCost;
import com.ecep.contract.task.Tasker;
import lombok.Setter;
public class ProjectCostImportItemsFromContractsTasker extends Tasker<Object> {
@Setter
private ProjectCost cost;
@Override
protected Object execute(MessageHolder holder) throws Exception {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'execute'");
}
}

View File

@@ -14,17 +14,17 @@ import org.hibernate.Hibernate;
import com.ecep.contract.ContractFileType; import com.ecep.contract.ContractFileType;
import com.ecep.contract.DesktopUtils; import com.ecep.contract.DesktopUtils;
import com.ecep.contract.MyDateTimeUtils; import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.converter.EmployeeStringConverter; import com.ecep.contract.converter.EmployeeStringConverter;
import com.ecep.contract.ds.contract.service.ContractFileService;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.Contract; import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ContractFile; import com.ecep.contract.model.ContractFile;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectCost; 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.vm.ProjectCostViewModel;
import javafx.application.Platform; import javafx.application.Platform;

View File

@@ -5,35 +5,33 @@ import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.function.Function; import java.util.function.Function;
import org.controlsfx.control.textfield.AutoCompletionBinding; import org.controlsfx.control.textfield.AutoCompletionBinding;
import org.controlsfx.control.textfield.TextFields; import org.controlsfx.control.textfield.TextFields;
import org.hibernate.Hibernate; import org.hibernate.Hibernate;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import com.ecep.contract.Desktop; import com.ecep.contract.Desktop;
import com.ecep.contract.UITools; import com.ecep.contract.controller.inventory.InventoryWindowController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin;
import com.ecep.contract.controller.table.cell.EmployeeTableCell;
import com.ecep.contract.controller.table.cell.LocalDateTimeTableCell;
import com.ecep.contract.converter.EntityStringConverter; import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.ds.contract.service.ContractItemService;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.other.controller.inventory.InventoryWindowController;
import com.ecep.contract.ds.other.service.InventoryService;
import com.ecep.contract.ds.project.ProjectCostImportItemsFromContractsTasker;
import com.ecep.contract.ds.project.service.ProjectCostItemService;
import com.ecep.contract.ds.project.service.ProjectCostService;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.model.Inventory; import com.ecep.contract.model.Inventory;
import com.ecep.contract.model.Price; import com.ecep.contract.model.Price;
import com.ecep.contract.model.ProjectCost; import com.ecep.contract.model.ProjectCost;
import com.ecep.contract.model.ProjectCostItem; import com.ecep.contract.model.ProjectCostItem;
import com.ecep.contract.ui.table.cell.EmployeeTableCell; import com.ecep.contract.service.ContractItemService;
import com.ecep.contract.ui.table.cell.LocalDateTimeTableCell; import com.ecep.contract.service.ContractService;
import com.ecep.contract.util.SpecificationUtils; 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.UITools;
import com.ecep.contract.vm.InventoryViewModel; import com.ecep.contract.vm.InventoryViewModel;
import com.ecep.contract.vm.ProjectCostItemViewModel; import com.ecep.contract.vm.ProjectCostItemViewModel;
import com.ecep.contract.vm.ProjectCostViewModel; import com.ecep.contract.vm.ProjectCostViewModel;
@@ -166,10 +164,10 @@ public class ProjectCostTabSkinItems
} }
@Override @Override
public Specification<ProjectCostItem> getSpecification(ProjectCost parent) { public Map<String, Object> getSpecification(ProjectCost parent) {
return SpecificationUtils.and(getSpecification(), (root, query, builder) -> { Map<String, Object> params = getSpecification();
return builder.equal(root.get("cost"), parent); params.put("cost", parent);
}); return params;
} }
static class AutoCompletionInventoryTableCell extends TableCell<ProjectCostItemViewModel, Inventory> { static class AutoCompletionInventoryTableCell extends TableCell<ProjectCostItemViewModel, Inventory> {
@@ -509,7 +507,6 @@ public class ProjectCostTabSkinItems
private void importFromSalesContractAction(ActionEvent event) { private void importFromSalesContractAction(ActionEvent event) {
ProjectCostImportItemsFromContractsTasker tasker = new ProjectCostImportItemsFromContractsTasker(); ProjectCostImportItemsFromContractsTasker tasker = new ProjectCostImportItemsFromContractsTasker();
tasker.setCost(getEntity()); tasker.setCost(getEntity());
tasker.setCurrentUser(controller::getCurrentUser);
UITools.showTaskDialogAndWait("从合同(销售和采购)导入项目成本", tasker, null); UITools.showTaskDialogAndWait("从合同(销售和采购)导入项目成本", tasker, null);
loadTableDataSet(getEntity()); loadTableDataSet(getEntity());
} }

View File

@@ -6,13 +6,13 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.project.service.ProjectCostService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectCost; import com.ecep.contract.model.ProjectCost;
import com.ecep.contract.service.ProjectCostService;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.ProjectCostViewModel; import com.ecep.contract.vm.ProjectCostViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;

View File

@@ -3,8 +3,8 @@ package com.ecep.contract.controller.project.industry;
import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.AbstEntityManagerSkin;
import com.ecep.contract.controller.ManagerSkin; import com.ecep.contract.controller.ManagerSkin;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin; import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.ProjectIndustry; import com.ecep.contract.model.ProjectIndustry;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.vm.ProjectIndustryViewModel; import com.ecep.contract.vm.ProjectIndustryViewModel;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;

View File

@@ -8,10 +8,10 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstManagerWindowController; import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.project.service.ProjectIndustryService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.ProjectIndustry; 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.vm.ProjectIndustryViewModel;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;

View File

@@ -10,10 +10,10 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstManagerWindowController; import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.project.service.ProductTypeService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.ProductType; 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.vm.ProductTypeViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;

View File

@@ -3,9 +3,9 @@ package com.ecep.contract.controller.project.project_type;
import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.AbstEntityManagerSkin;
import com.ecep.contract.controller.ManagerSkin; import com.ecep.contract.controller.ManagerSkin;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin; import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.ds.project.service.ProjectTypeService;
import com.ecep.contract.model.ProjectType; import com.ecep.contract.model.ProjectType;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.service.ProjectTypeService;
import com.ecep.contract.vm.ProjectTypeViewModel; import com.ecep.contract.vm.ProjectTypeViewModel;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;

View File

@@ -8,10 +8,10 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstManagerWindowController; import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.ds.project.service.ProjectTypeService;
import com.ecep.contract.model.ProjectType; import com.ecep.contract.model.ProjectType;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.service.ProjectTypeService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.ProjectTypeViewModel; import com.ecep.contract.vm.ProjectTypeViewModel;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;

View File

@@ -21,13 +21,13 @@ import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import com.ecep.contract.MessageHolder; import com.ecep.contract.MessageHolder;
import com.ecep.contract.ds.contract.service.ContractFileService; import com.ecep.contract.constant.ContractConstant;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectQuotation; import com.ecep.contract.model.ProjectQuotation;
import com.ecep.contract.ui.Tasker; import com.ecep.contract.service.ProjectService;
import com.ecep.contract.task.Tasker;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@@ -59,7 +59,7 @@ public class ProjectQuotationExportAsExcelFile extends Tasker<Object> {
updateTitle("根据模板导出" + name); updateTitle("根据模板导出" + name);
// \\10.84.209.8\规章制度\ISO9000\01-最新发布版\4_JL_记录文件\ECEP-JL-XS-06-B_项目报价审批表.xlsx // \\10.84.209.8\规章制度\ISO9000\01-最新发布版\4_JL_记录文件\ECEP-JL-XS-06-B_项目报价审批表.xlsx
String path = getConfService().getString(ContractFileService.KEY_QUOTATION_TEMPLATE); String path = getConfService().getString(ContractConstant.KEY_QUOTATION_TEMPLATE);
if (!StringUtils.hasText(path)) { if (!StringUtils.hasText(path)) {
holder.error(name + "模板文件未设置,请先设置" + name + "模板文件"); holder.error(name + "模板文件未设置,请先设置" + name + "模板文件");
return null; return null;

View File

@@ -15,19 +15,12 @@ import com.ecep.contract.CompanyCustomerFileType;
import com.ecep.contract.ContractFileType; import com.ecep.contract.ContractFileType;
import com.ecep.contract.DesktopUtils; import com.ecep.contract.DesktopUtils;
import com.ecep.contract.MyDateTimeUtils; import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.customer.CompanyCustomerEvaluationFormFileWindowController; import com.ecep.contract.controller.customer.CompanyCustomerEvaluationFormFileWindowController;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.converter.CompanyStringConverter;
import com.ecep.contract.converter.EmployeeStringConverter; import com.ecep.contract.converter.EmployeeStringConverter;
import com.ecep.contract.converter.EntityStringConverter; import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.ds.contract.service.ContractFileService;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.customer.service.CompanyCustomerFileService;
import com.ecep.contract.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.ds.project.service.ProjectQuotationService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyCustomer; import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.model.CompanyCustomerEvaluationFormFile; import com.ecep.contract.model.CompanyCustomerEvaluationFormFile;
@@ -37,7 +30,14 @@ import com.ecep.contract.model.ContractFile;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectQuotation; import com.ecep.contract.model.ProjectQuotation;
import com.ecep.contract.service.CompanyStringConverter; 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.UITools;
import com.ecep.contract.vm.ProjectQuotationViewModel; import com.ecep.contract.vm.ProjectQuotationViewModel;
import javafx.application.Platform; import javafx.application.Platform;

View File

@@ -6,13 +6,13 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.project.service.ProjectQuotationService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectQuotation; 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.vm.ProjectQuotationViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;

View File

@@ -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.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.ds.project.service.SaleTypeService;
import com.ecep.contract.model.ProjectSaleType; import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.vm.SaleTypeViewModel; import com.ecep.contract.service.SaleTypeService;
import com.ecep.contract.vm.ProjectSaleTypeViewModel;
public abstract class AbstProjectSaleTypeBasedTabSkin public abstract class AbstProjectSaleTypeBasedTabSkin
extends AbstEntityBasedTabSkin<ProjectSaleTypeWindowController, ProjectSaleType, SaleTypeViewModel> extends AbstEntityBasedTabSkin<ProjectSaleTypeWindowController, ProjectSaleType, ProjectSaleTypeViewModel>
implements TabSkin { implements TabSkin {
public AbstProjectSaleTypeBasedTabSkin(ProjectSaleTypeWindowController controller) { public AbstProjectSaleTypeBasedTabSkin(ProjectSaleTypeWindowController controller) {

View File

@@ -1,19 +1,17 @@
package com.ecep.contract.controller.project.sale_type; package com.ecep.contract.controller.project.sale_type;
import org.apache.poi.ss.formula.functions.T; import java.util.Map;
import org.springframework.data.jpa.domain.Specification;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.AbstEntityTableTabSkin; import com.ecep.contract.controller.table.AbstEntityTableTabSkin;
import com.ecep.contract.ds.project.service.SaleTypeService;
import com.ecep.contract.model.IdentityEntity; import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.model.ProjectSaleType; import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.util.SpecificationUtils; import com.ecep.contract.service.SaleTypeService;
import com.ecep.contract.vm.IdentityViewModel; import com.ecep.contract.vm.IdentityViewModel;
import com.ecep.contract.vm.SaleTypeViewModel; import com.ecep.contract.vm.ProjectSaleTypeViewModel;
public abstract class AbstProjectSaleTypeTableTabSkin<T extends IdentityEntity, TV extends IdentityViewModel<T>> public abstract class AbstProjectSaleTypeTableTabSkin<T extends IdentityEntity, TV extends IdentityViewModel<T>>
extends AbstEntityTableTabSkin<ProjectSaleTypeWindowController, ProjectSaleType, SaleTypeViewModel, T, TV> extends AbstEntityTableTabSkin<ProjectSaleTypeWindowController, ProjectSaleType,ProjectSaleTypeViewModel, T, TV>
implements TabSkin { implements TabSkin {
public AbstProjectSaleTypeTableTabSkin(ProjectSaleTypeWindowController controller) { public AbstProjectSaleTypeTableTabSkin(ProjectSaleTypeWindowController controller) {
@@ -25,9 +23,9 @@ public abstract class AbstProjectSaleTypeTableTabSkin<T extends IdentityEntity,
} }
@Override @Override
public Specification<T> getSpecification(ProjectSaleType parent) { public Map<String, Object> getSpecification(ProjectSaleType parent) {
return SpecificationUtils.and(getSpecification(), (root, query, builder) -> { Map<String, Object> params = getSpecification();
return builder.equal(root.get("saleType"), parent); params.put("saleType", parent.getId());
}); return params;
} }
} }

View File

@@ -1,17 +1,17 @@
package com.ecep.contract.controller.project.sale_type; package com.ecep.contract.controller.project.sale_type;
import java.util.List; import java.util.List;
import java.util.Map;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.jpa.domain.Specification;
import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.AbstEntityManagerSkin;
import com.ecep.contract.controller.ManagerSkin; import com.ecep.contract.controller.ManagerSkin;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin; import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.ds.project.service.SaleTypeService;
import com.ecep.contract.model.ProjectSaleType; import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.service.SaleTypeService;
import com.ecep.contract.service.ViewModelService; import com.ecep.contract.service.ViewModelService;
import com.ecep.contract.vm.SaleTypeViewModel; import com.ecep.contract.vm.ProjectSaleTypeViewModel;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import javafx.scene.control.cell.CheckBoxTableCell; import javafx.scene.control.cell.CheckBoxTableCell;
@@ -19,8 +19,9 @@ import javafx.scene.control.cell.TextFieldTableCell;
import lombok.Setter; import lombok.Setter;
public class ProjectSaleTypeManagerSkin public class ProjectSaleTypeManagerSkin
extends AbstEntityManagerSkin<ProjectSaleType, SaleTypeViewModel, ProjectSaleTypeManagerSkin, ProjectSaleTypeManagerWindowController> extends
implements ManagerSkin, EditableEntityTableTabSkin<ProjectSaleType, SaleTypeViewModel> { AbstEntityManagerSkin<ProjectSaleType, ProjectSaleTypeViewModel, ProjectSaleTypeManagerSkin, ProjectSaleTypeManagerWindowController>
implements ManagerSkin, EditableEntityTableTabSkin<ProjectSaleType, ProjectSaleTypeViewModel> {
@Setter @Setter
private SaleTypeService saleTypeService; private SaleTypeService saleTypeService;
@@ -42,10 +43,10 @@ public class ProjectSaleTypeManagerSkin
} }
@Override @Override
protected List<SaleTypeViewModel> loadTableData() { protected List<ProjectSaleTypeViewModel> loadTableData() {
Specification<ProjectSaleType> spec = getSpecification(); Map<String, Object> params = getSpecification();
ViewModelService<ProjectSaleType, SaleTypeViewModel> service = getViewModelService(); ViewModelService<ProjectSaleType, ProjectSaleTypeViewModel> service = getViewModelService();
Page<ProjectSaleType> page = service.findAll(spec, getPageable()); Page<ProjectSaleType> page = service.findAll(params, getPageable());
updateFooter(page); updateFooter(page);
return page.map(service::from).stream().peek(v -> { return page.map(service::from).stream().peek(v -> {
v.getStoreByYear().addListener((observable, oldValue, newValue) -> saveRowData(v)); v.getStoreByYear().addListener((observable, oldValue, newValue) -> saveRowData(v));
@@ -90,7 +91,7 @@ public class ProjectSaleTypeManagerSkin
} }
@Override @Override
public ProjectSaleType loadRowData(SaleTypeViewModel row) { public ProjectSaleType loadRowData(ProjectSaleTypeViewModel row) {
ProjectSaleType type = super.loadRowData(row); ProjectSaleType type = super.loadRowData(row);
if (type == null) { if (type == null) {
type = new ProjectSaleType(); type = new ProjectSaleType();
@@ -99,32 +100,34 @@ public class ProjectSaleTypeManagerSkin
return type; return type;
} }
private void onDescriptionColumnEditCommitAction(TableColumn.CellEditEvent<SaleTypeViewModel, String> event) { private void onDescriptionColumnEditCommitAction(
acceptCellEditEvent(event, SaleTypeViewModel::getDescription); TableColumn.CellEditEvent<ProjectSaleTypeViewModel, String> event) {
acceptCellEditEvent(event, ProjectSaleTypeViewModel::getDescription);
} }
private void onNameColumnEditCommitAction(TableColumn.CellEditEvent<SaleTypeViewModel, String> event) { private void onNameColumnEditCommitAction(TableColumn.CellEditEvent<ProjectSaleTypeViewModel, String> event) {
acceptCellEditEvent(event, SaleTypeViewModel::getName); acceptCellEditEvent(event, ProjectSaleTypeViewModel::getName);
} }
private void onCodeColumnEditCommitAction(TableColumn.CellEditEvent<SaleTypeViewModel, String> event) { private void onCodeColumnEditCommitAction(TableColumn.CellEditEvent<ProjectSaleTypeViewModel, String> event) {
acceptCellEditEvent(event, SaleTypeViewModel::getCode); acceptCellEditEvent(event, ProjectSaleTypeViewModel::getCode);
} }
private void onPathColumnEditCommitAction(TableColumn.CellEditEvent<SaleTypeViewModel, String> event) { private void onPathColumnEditCommitAction(TableColumn.CellEditEvent<ProjectSaleTypeViewModel, String> event) {
acceptCellEditEvent(event, SaleTypeViewModel::getPath); acceptCellEditEvent(event, ProjectSaleTypeViewModel::getPath);
} }
private void onStoreByYearColumnEditCommitAction(TableColumn.CellEditEvent<SaleTypeViewModel, Boolean> event) { private void onStoreByYearColumnEditCommitAction(
acceptCellEditEvent(event, SaleTypeViewModel::getStoreByYear); TableColumn.CellEditEvent<ProjectSaleTypeViewModel, Boolean> event) {
acceptCellEditEvent(event, ProjectSaleTypeViewModel::getStoreByYear);
} }
private void onActiveColumnEditCommitAction(TableColumn.CellEditEvent<SaleTypeViewModel, Boolean> event) { private void onActiveColumnEditCommitAction(TableColumn.CellEditEvent<ProjectSaleTypeViewModel, Boolean> event) {
acceptCellEditEvent(event, SaleTypeViewModel::getActive); acceptCellEditEvent(event, ProjectSaleTypeViewModel::getActive);
} }
@Override @Override
protected void onTableRowDoubleClickedAction(SaleTypeViewModel item) { protected void onTableRowDoubleClickedAction(ProjectSaleTypeViewModel item) {
showInOwner(ProjectSaleTypeWindowController.class, item); showInOwner(ProjectSaleTypeWindowController.class, item);
} }
} }

View File

@@ -8,10 +8,10 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstManagerWindowController; import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.project.service.SaleTypeService;
import com.ecep.contract.model.ProjectSaleType; import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.vm.SaleTypeViewModel; import com.ecep.contract.service.SaleTypeService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.ProjectSaleTypeViewModel;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import javafx.stage.Stage; import javafx.stage.Stage;
@@ -21,19 +21,19 @@ import javafx.stage.Stage;
@Component @Component
@FxmlPath("/ui/project/sale-type-manager.fxml") @FxmlPath("/ui/project/sale-type-manager.fxml")
public class ProjectSaleTypeManagerWindowController public class ProjectSaleTypeManagerWindowController
extends AbstManagerWindowController<ProjectSaleType, SaleTypeViewModel, ProjectSaleTypeManagerSkin> { extends AbstManagerWindowController<ProjectSaleType, ProjectSaleTypeViewModel, ProjectSaleTypeManagerSkin> {
@Autowired @Autowired
private SaleTypeService saleTypeService; private SaleTypeService saleTypeService;
public TableColumn<SaleTypeViewModel, Number> idColumn; public TableColumn<ProjectSaleTypeViewModel, Number> idColumn;
public TableColumn<SaleTypeViewModel, String> nameColumn; public TableColumn<ProjectSaleTypeViewModel, String> nameColumn;
public TableColumn<SaleTypeViewModel, String> codeColumn; public TableColumn<ProjectSaleTypeViewModel, String> codeColumn;
public TableColumn<SaleTypeViewModel, String> pathColumn; public TableColumn<ProjectSaleTypeViewModel, String> pathColumn;
public TableColumn<SaleTypeViewModel, Boolean> storeByYearColumn; public TableColumn<ProjectSaleTypeViewModel, Boolean> storeByYearColumn;
public TableColumn<SaleTypeViewModel, String> descriptionColumn; public TableColumn<ProjectSaleTypeViewModel, String> descriptionColumn;
public TableColumn<SaleTypeViewModel, LocalDate> createdColumn; public TableColumn<ProjectSaleTypeViewModel, LocalDate> createdColumn;
public TableColumn<SaleTypeViewModel, Boolean> activeColumn; public TableColumn<ProjectSaleTypeViewModel, Boolean> activeColumn;
@Override @Override
public void show(Stage stage) { public void show(Stage stage) {

View File

@@ -8,10 +8,10 @@ import org.controlsfx.control.ListSelectionView;
import com.ecep.contract.ContractFileType; import com.ecep.contract.ContractFileType;
import com.ecep.contract.SpringApp; import com.ecep.contract.SpringApp;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.ds.contract.service.ContractFileService;
import com.ecep.contract.ds.project.service.ProjectSaleTypeRequireFileTypeService;
import com.ecep.contract.model.ContractFileTypeLocal; import com.ecep.contract.model.ContractFileTypeLocal;
import com.ecep.contract.model.ProjectSaleTypeRequireFileType; import com.ecep.contract.model.ProjectSaleTypeRequireFileType;
import com.ecep.contract.service.ContractFileService;
import com.ecep.contract.service.ProjectSaleTypeRequireFileTypeService;
import impl.org.controlsfx.skin.ListSelectionViewSkin; import impl.org.controlsfx.skin.ListSelectionViewSkin;
import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleBooleanProperty;

View File

@@ -12,11 +12,11 @@ import org.springframework.stereotype.Component;
import com.ecep.contract.ContractFileType; import com.ecep.contract.ContractFileType;
import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.project.service.SaleTypeService;
import com.ecep.contract.model.ProjectSaleType; import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.service.SaleTypeService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.DeliverySignMethodViewModel; import com.ecep.contract.vm.DeliverySignMethodViewModel;
import com.ecep.contract.vm.SaleTypeViewModel; import com.ecep.contract.vm.ProjectSaleTypeViewModel;
import javafx.scene.control.CheckBox; import javafx.scene.control.CheckBox;
import javafx.scene.control.DatePicker; import javafx.scene.control.DatePicker;
@@ -38,11 +38,11 @@ import javafx.stage.Window;
@Component @Component
@FxmlPath("/ui/project/sale-type.fxml") @FxmlPath("/ui/project/sale-type.fxml")
public class ProjectSaleTypeWindowController public class ProjectSaleTypeWindowController
extends AbstEntityController<ProjectSaleType, SaleTypeViewModel> { extends AbstEntityController<ProjectSaleType, ProjectSaleTypeViewModel> {
private static final Logger logger = LoggerFactory.getLogger(ProjectSaleTypeWindowController.class); private static final Logger logger = LoggerFactory.getLogger(ProjectSaleTypeWindowController.class);
public static void show(SaleTypeViewModel viewModel, Window window) { public static void show(ProjectSaleTypeViewModel viewModel, Window window) {
show(ProjectSaleTypeWindowController.class, viewModel, window); show(ProjectSaleTypeWindowController.class, viewModel, window);
} }

View File

@@ -2,8 +2,8 @@ package com.ecep.contract.controller.project.sale_type;
import com.ecep.contract.SpringApp; import com.ecep.contract.SpringApp;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.ds.project.service.DeliverySignMethodService;
import com.ecep.contract.model.DeliverySignMethod; import com.ecep.contract.model.DeliverySignMethod;
import com.ecep.contract.service.DeliverySignMethodService;
import com.ecep.contract.vm.DeliverySignMethodViewModel; import com.ecep.contract.vm.DeliverySignMethodViewModel;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;

View File

@@ -13,16 +13,10 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.CompanyCustomerFileType; import com.ecep.contract.CompanyCustomerFileType;
import com.ecep.contract.MyDateTimeUtils; import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.converter.CompanyStringConverter;
import com.ecep.contract.converter.EmployeeStringConverter; import com.ecep.contract.converter.EmployeeStringConverter;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.ds.customer.service.CompanyCustomerFileService;
import com.ecep.contract.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.ds.project.service.ProjectCostService;
import com.ecep.contract.ds.project.service.ProjectQuotationService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyCustomer; import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.model.CompanyCustomerEvaluationFormFile; import com.ecep.contract.model.CompanyCustomerEvaluationFormFile;
@@ -30,7 +24,13 @@ import com.ecep.contract.model.CompanyCustomerFile;
import com.ecep.contract.model.CustomerSatisfactionSurvey; import com.ecep.contract.model.CustomerSatisfactionSurvey;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.service.CompanyStringConverter; 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.UITools;
import com.ecep.contract.vm.CustomerSatisfactionSurveyViewModel; import com.ecep.contract.vm.CustomerSatisfactionSurveyViewModel;
import javafx.application.Platform; import javafx.application.Platform;

View File

@@ -6,11 +6,11 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstEntityController; import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.project.service.CustomerSatisfactionSurveyService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.CustomerSatisfactionSurvey; import com.ecep.contract.model.CustomerSatisfactionSurvey;
import com.ecep.contract.model.Project; 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.vm.CustomerSatisfactionSurveyViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;

View File

@@ -1,6 +1,8 @@
package com.ecep.contract.controller.project.satisfaction_survey; package com.ecep.contract.controller.project.satisfaction_survey;
import static com.ecep.contract.util.ExcelUtils.*; import static com.ecep.contract.util.ExcelUtils.getCellValue;
import static com.ecep.contract.util.ExcelUtils.getRow;
import static com.ecep.contract.util.ExcelUtils.setCellValue;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
@@ -22,13 +24,14 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.MessageHolder; import com.ecep.contract.MessageHolder;
import com.ecep.contract.MyDateTimeUtils; import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.ds.project.service.CustomerSatisfactionSurveyService; import com.ecep.contract.constant.ProjectConstant;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.model.CustomerSatisfactionSurvey; import com.ecep.contract.model.CustomerSatisfactionSurvey;
import com.ecep.contract.model.Employee; import com.ecep.contract.model.Employee;
import com.ecep.contract.model.Project; import com.ecep.contract.model.Project;
import com.ecep.contract.ui.Tasker; import com.ecep.contract.service.CustomerSatisfactionSurveyService;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.task.Tasker;
import lombok.Setter; import lombok.Setter;
@@ -60,7 +63,7 @@ public class ProjectCustomerSatisfactionSurveyExportAsExcelFile extends Tasker<V
@Override @Override
protected Void execute(MessageHolder holder) throws Exception { protected Void execute(MessageHolder holder) throws Exception {
updateTitle("根据模板导出" + name); updateTitle("根据模板导出" + name);
String path = getConfService().getString(CustomerSatisfactionSurveyService.KEY_TEMPLATE); String path = getConfService().getString(ProjectConstant.KEY_CUSTOMER_SATISFACTION_SURVEY_TEMPLATE);
if (!StringUtils.hasText(path)) { if (!StringUtils.hasText(path)) {
holder.error(name + "模板文件未设置,请先设置" + name + "模板文件"); holder.error(name + "模板文件未设置,请先设置" + name + "模板文件");
return null; return null;

View File

@@ -3,9 +3,9 @@ package com.ecep.contract.controller.project.usage;
import com.ecep.contract.controller.AbstEntityManagerSkin; import com.ecep.contract.controller.AbstEntityManagerSkin;
import com.ecep.contract.controller.ManagerSkin; import com.ecep.contract.controller.ManagerSkin;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin; import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.ds.project.service.ProductUsageService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.ProductUsage; import com.ecep.contract.model.ProductUsage;
import com.ecep.contract.service.ProductUsageService;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.vm.ProductUsageViewModel; import com.ecep.contract.vm.ProductUsageViewModel;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;

View File

@@ -8,10 +8,10 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstManagerWindowController; import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.project.service.ProductUsageService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.ProductUsage; import com.ecep.contract.model.ProductUsage;
import com.ecep.contract.service.ProductUsageService;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.ProductUsageViewModel; import com.ecep.contract.vm.ProductUsageViewModel;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;

View File

@@ -1,15 +1,15 @@
package com.ecep.contract.controller.tab; package com.ecep.contract.controller.tab;
import com.ecep.contract.util.FxmlPath; import com.ecep.contract.controller.bank.account.BankAccountWindowController;
import com.ecep.contract.controller.company.AbstCompanyTableTabSkin; import com.ecep.contract.controller.company.AbstCompanyTableTabSkin;
import com.ecep.contract.controller.company.CompanyWindowController; import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.ds.company.controller.bank_account.BankAccountWindowController; import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.ds.company.service.CompanyBankAccountService; import com.ecep.contract.controller.table.cell.BankTableCell;
import com.ecep.contract.ds.other.service.BankService;
import com.ecep.contract.model.Bank; import com.ecep.contract.model.Bank;
import com.ecep.contract.model.CompanyBankAccount; import com.ecep.contract.model.CompanyBankAccount;
import com.ecep.contract.ui.table.EditableEntityTableTabSkin; import com.ecep.contract.service.BankService;
import com.ecep.contract.ui.table.cell.BankTableCell; import com.ecep.contract.service.CompanyBankAccountService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.CompanyBankAccountViewModel; import com.ecep.contract.vm.CompanyBankAccountViewModel;
import javafx.scene.control.Button; import javafx.scene.control.Button;

View File

@@ -8,9 +8,9 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.controller.company.AbstCompanyBasedTabSkin; import com.ecep.contract.controller.company.AbstCompanyBasedTabSkin;
import com.ecep.contract.controller.company.CompanyWindowController; import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.ds.company.service.CompanyOldNameService;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyOldName; import com.ecep.contract.model.CompanyOldName;
import com.ecep.contract.service.CompanyOldNameService;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.geometry.Insets; import javafx.geometry.Insets;

View File

@@ -3,17 +3,16 @@ package com.ecep.contract.controller.tab;
import java.time.LocalDate; import java.time.LocalDate;
import com.ecep.contract.BlackReasonType; import com.ecep.contract.BlackReasonType;
import com.ecep.contract.UITools;
import com.ecep.contract.cloud.rk.BlackListUpdateContext;
import com.ecep.contract.cloud.rk.CloudRkService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.company.AbstCompanyTableTabSkin; import com.ecep.contract.controller.company.AbstCompanyTableTabSkin;
import com.ecep.contract.controller.company.CompanyWindowController; import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.ds.company.service.CompanyBlackReasonService; import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.model.CloudRk; import com.ecep.contract.model.CloudRk;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyBlackReason; import com.ecep.contract.model.CompanyBlackReason;
import com.ecep.contract.ui.table.EditableEntityTableTabSkin; 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.vm.CompanyBlackReasonViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
@@ -102,10 +101,9 @@ public class CompanyTabSkinBlackReason
CloudRkService cloudRkService = getCloudRkService(); CloudRkService cloudRkService = getCloudRkService();
CloudRk cloudRk = cloudRkService.getOrCreateCloudRk(company); CloudRk cloudRk = cloudRkService.getOrCreateCloudRk(company);
BlackListUpdateContext context = cloudRkService.createBlackListUpdateContext().join(); if (cloudRkService.checkBlackListUpdateElapse(company, cloudRk)) {
if (cloudRkService.checkBlackListUpdateElapse(company, cloudRk, context)) {
try { try {
cloudRkService.updateBlackList(company, cloudRk, context); cloudRkService.updateBlackList(company, cloudRk);
} catch (Exception e) { } catch (Exception e) {
UITools.showExceptionAndWait("更新黑名单时发生错误", e); UITools.showExceptionAndWait("更新黑名单时发生错误", e);
} }

View File

@@ -2,13 +2,13 @@ package com.ecep.contract.controller.tab;
import java.time.LocalDate; import java.time.LocalDate;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.company.AbstCompanyTableTabSkin; import com.ecep.contract.controller.company.AbstCompanyTableTabSkin;
import com.ecep.contract.controller.company.CompanyContactWindowController;
import com.ecep.contract.controller.company.CompanyWindowController; import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.ds.company.controller.contact.CompanyContactWindowController; import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.ds.company.service.CompanyContactService;
import com.ecep.contract.model.CompanyContact; import com.ecep.contract.model.CompanyContact;
import com.ecep.contract.ui.table.EditableEntityTableTabSkin; import com.ecep.contract.service.CompanyContactService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.CompanyContactViewModel; import com.ecep.contract.vm.CompanyContactViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;

View File

@@ -11,7 +11,6 @@ import org.springframework.beans.BeansException;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import com.ecep.contract.DesktopUtils; import com.ecep.contract.DesktopUtils;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.company.AbstCompanyTableTabSkin; import com.ecep.contract.controller.company.AbstCompanyTableTabSkin;
import com.ecep.contract.controller.company.CompanyWindowController; import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.controller.contract.ContractWindowController; import com.ecep.contract.controller.contract.ContractWindowController;
@@ -35,6 +34,7 @@ import com.ecep.contract.service.ContractService;
import com.ecep.contract.service.ContractTypeService; import com.ecep.contract.service.ContractTypeService;
import com.ecep.contract.service.YongYouU8Service; import com.ecep.contract.service.YongYouU8Service;
import com.ecep.contract.task.ContractRepairByCompanyTask; import com.ecep.contract.task.ContractRepairByCompanyTask;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.UITools; import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.ContractViewModel; import com.ecep.contract.vm.ContractViewModel;
@@ -107,14 +107,6 @@ public class CompanyTabSkinContract
@Override @Override
public void initializeTab() { public void initializeTab() {
if (u8Service == null) {
try {
u8Service = getCachedBean(YongYouU8Service.class);
} catch (BeansException ignored) {
}
}
contractSearchKeyField.setOnKeyReleased(event -> { contractSearchKeyField.setOnKeyReleased(event -> {
if (event.getCode() == KeyCode.ENTER) { if (event.getCode() == KeyCode.ENTER) {
contractSearchBtn.fire(); contractSearchBtn.fire();
@@ -200,7 +192,6 @@ public class CompanyTabSkinContract
private void onTableUpdateAction(ActionEvent event) { private void onTableUpdateAction(ActionEvent event) {
ContractRepairByCompanyTask task = new ContractRepairByCompanyTask(); ContractRepairByCompanyTask task = new ContractRepairByCompanyTask();
task.setContractService(getViewModelService());
task.setCompany(getParent()); task.setCompany(getParent());
UITools.showTaskDialogAndWait("同步合同", task, null); UITools.showTaskDialogAndWait("同步合同", task, null);
if (task.isRepaired()) { if (task.isRepaired()) {
@@ -258,9 +249,4 @@ public class CompanyTabSkinContract
private ContractGroupService getContractGroupService() { private ContractGroupService getContractGroupService() {
return getCachedBean(ContractGroupService.class); return getCachedBean(ContractGroupService.class);
} }
private EmployeeStringConverter getEmployeeStringConverter() {
return getCachedBean(EmployeeStringConverter.class);
}
} }

View File

@@ -6,20 +6,23 @@ import java.time.LocalDate;
import java.util.List; import java.util.List;
import java.util.function.Consumer; import java.util.function.Consumer;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.service.CompanyFileService;
import org.springframework.util.FileSystemUtils; import org.springframework.util.FileSystemUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import com.ecep.contract.CompanyFileType; import com.ecep.contract.CompanyFileType;
import com.ecep.contract.DesktopUtils; import com.ecep.contract.DesktopUtils;
import com.ecep.contract.MyDateTimeUtils; import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.util.FxmlPath; import com.ecep.contract.constant.CloudServiceConstant;
import com.ecep.contract.controller.company.AbstCompanyTableTabSkin; import com.ecep.contract.controller.company.AbstCompanyTableTabSkin;
import com.ecep.contract.controller.company.CompanyWindowController; import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.model.Company; import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyFile; import com.ecep.contract.model.CompanyFile;
import com.ecep.contract.model.CompanyFileTypeLocal; import com.ecep.contract.model.CompanyFileTypeLocal;
import com.ecep.contract.service.CloudTycService;
import com.ecep.contract.service.CompanyFileService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.CompanyFileViewModel; import com.ecep.contract.vm.CompanyFileViewModel;
import javafx.application.Platform; import javafx.application.Platform;
@@ -59,9 +62,8 @@ public class CompanyTabSkinFile
@Setter @Setter
private CompanyFileService companyFileService; private CompanyFileService companyFileService;
@Setter private final ObservableMap<CompanyFileType, CompanyFileTypeLocal> fileTypeLocalMap = FXCollections
private MyProperties myProperties; .observableHashMap();
private final ObservableMap<CompanyFileType, CompanyFileTypeLocal> fileTypeLocalMap = FXCollections.observableHashMap();
public CompanyTabSkinFile(CompanyWindowController controller) { public CompanyTabSkinFile(CompanyWindowController controller) {
super(controller); super(controller);
@@ -88,16 +90,15 @@ public class CompanyTabSkinFile
fileTable_file_retrieve_from_download_dir_btn.setOnAction(this::onTableRetrieveFromDownloadDirAction); fileTable_file_retrieve_from_download_dir_btn.setOnAction(this::onTableRetrieveFromDownloadDirAction);
fileTable_file_reset_btn.setOnAction(this::onTableResetAction); fileTable_file_reset_btn.setOnAction(this::onTableResetAction);
idColumn.setCellValueFactory(param -> param.getValue().getId()); idColumn.setCellValueFactory(param -> param.getValue().getId());
typeColumn.setCellValueFactory(param -> Bindings.valueAt(fileTypeLocalMap, param.getValue().getType()).map(CompanyFileTypeLocal::getValue)); typeColumn.setCellValueFactory(param -> Bindings.valueAt(fileTypeLocalMap, param.getValue().getType())
.map(CompanyFileTypeLocal::getValue));
filePathColumn.setCellValueFactory(param -> param.getValue().getFilePath()); filePathColumn.setCellValueFactory(param -> param.getValue().getFilePath());
filePathColumn.setCellFactory(param -> new FileTableFilePathTableCell()); filePathColumn.setCellFactory(param -> new FileTableFilePathTableCell());
applyDateColumn.setCellValueFactory(param -> param.getValue().getApplyDate()); applyDateColumn.setCellValueFactory(param -> param.getValue().getApplyDate());
expiringDateColumn.setCellValueFactory(param -> param.getValue().getExpiringDate()); expiringDateColumn.setCellValueFactory(param -> param.getValue().getExpiringDate());
fileTable_menu_refresh.setOnAction(this::onTableRefreshAction); fileTable_menu_refresh.setOnAction(this::onTableRefreshAction);
fileTable_menu_del.setOnAction(this::onTableDeleteAction); fileTable_menu_del.setOnAction(this::onTableDeleteAction);
fileTable_menu_copy_as_matched_by_contract.setOnAction(this::onTableCopyAsMatchedByContractAction); fileTable_menu_copy_as_matched_by_contract.setOnAction(this::onTableCopyAsMatchedByContractAction);
@@ -108,7 +109,7 @@ public class CompanyTabSkinFile
private void onTableResetAction(ActionEvent event) { private void onTableResetAction(ActionEvent event) {
runAsync(() -> { runAsync(() -> {
if (getViewModelService().reBuildingFiles(getParent(), (level, msg)-> setStatus(msg))) { if (getViewModelService().reBuildingFiles(getParent(), (level, msg) -> setStatus(msg))) {
loadTableDataSet(); loadTableDataSet();
} }
}); });
@@ -189,6 +190,8 @@ public class CompanyTabSkinFile
*/ */
private void onTableCopyAsMatchedByContractAction(ActionEvent event) { private void onTableCopyAsMatchedByContractAction(ActionEvent event) {
UITools.showDialogAndWait("复制资信评估报告", "按当前评估报告复制一个合同中最匹配的", list -> { UITools.showDialogAndWait("复制资信评估报告", "按当前评估报告复制一个合同中最匹配的", list -> {
getViewModelService().copyAsMatchedByContract(getParent(), list);
onTableCopyAsMatchedAction_(msg -> { onTableCopyAsMatchedAction_(msg -> {
Platform.runLater(() -> { Platform.runLater(() -> {
list.add(msg); list.add(msg);
@@ -229,7 +232,6 @@ public class CompanyTabSkinFile
return; return;
} }
File src = new File(selectedItem.getFilePath().get()); File src = new File(selectedItem.getFilePath().get());
if (!src.exists()) { if (!src.exists()) {
state.accept("当前选择行的文件不存在"); state.accept("当前选择行的文件不存在");
@@ -244,7 +246,7 @@ public class CompanyTabSkinFile
// 天眼查的报告 // 天眼查的报告
if (CloudTycService.isTycReport(srcFileName)) { if (CloudTycService.isTycReport(srcFileName)) {
state.accept("天眼查的报告按标准格式命名"); state.accept("天眼查的报告按标准格式命名");
String name = company.getName() + "_" + CloudTycService.NAME; String name = company.getName() + "_" + CloudServiceConstant.TYC_NAME;
if (srcFileName.contains(CloudTycService.TYC_ENTERPRISE_BASIC_REPORT)) { if (srcFileName.contains(CloudTycService.TYC_ENTERPRISE_BASIC_REPORT)) {
name = name + "_" + CloudTycService.TYC_ENTERPRISE_BASIC_REPORT; name = name + "_" + CloudTycService.TYC_ENTERPRISE_BASIC_REPORT;
} else if (srcFileName.contains(CloudTycService.TYC_ENTERPRISE_MAJOR_REPORT)) { } else if (srcFileName.contains(CloudTycService.TYC_ENTERPRISE_MAJOR_REPORT)) {
@@ -259,7 +261,8 @@ public class CompanyTabSkinFile
destFileName = srcFileName.replace(srcDate, destDate + "_cp"); destFileName = srcFileName.replace(srcDate, destDate + "_cp");
} else { } else {
// 如果文件名中不包含日期,则添加日期 // 如果文件名中不包含日期,则添加日期
destFileName = company.getName() + "_" + destDate + "_cp." + StringUtils.getFilenameExtension(srcFileName); destFileName = company.getName() + "_" + destDate + "_cp."
+ StringUtils.getFilenameExtension(srcFileName);
} }
} }
@@ -293,7 +296,7 @@ public class CompanyTabSkinFile
* @param event event * @param event event
*/ */
public void onTableCopyAsMatchedMenuValidation(Event event) { public void onTableCopyAsMatchedMenuValidation(Event event) {
//当fileTable选中的行是咨询评估时可用 // 当fileTable选中的行是咨询评估时可用
CompanyFileViewModel selectedItem = getSelectedItem(); CompanyFileViewModel selectedItem = getSelectedItem();
if (selectedItem == null) { if (selectedItem == null) {
event.consume(); event.consume();
@@ -325,7 +328,6 @@ public class CompanyTabSkinFile
return false; return false;
} }
private void moveFileToCompany(List<File> files) { private void moveFileToCompany(List<File> files) {
String path = viewModel.getPath().get(); String path = viewModel.getPath().get();
if (!StringUtils.hasText(path)) { if (!StringUtils.hasText(path)) {
@@ -370,13 +372,6 @@ public class CompanyTabSkinFile
} }
} }
public MyProperties getMyProperties() {
if (myProperties == null) {
myProperties = getBean(MyProperties.class);
}
return myProperties;
}
protected CompanyFileService getViewModelService() { protected CompanyFileService getViewModelService() {
return getCompanyFileService(); return getCompanyFileService();
} }

Some files were not shown because too many files have changed in this diff Show More