Compare commits

..

2 Commits

Author SHA1 Message Date
effd7b103c feat: 新增多个服务类及工具类,重构部分代码结构
重构服务类结构,将分散的服务统一整合到service包下
新增ProjectConstant常量类及多个实体服务类
添加SecurityUtils安全工具类和BeanCacher工具类
优化部分UI控件和转换器的实现
2025-09-06 13:43:52 +08:00
0e444508ff feat: 重构员工控制器并优化JSON序列化配置
refactor(EmployeeController): 重命名EmployyeController为EmployeeController并优化代码结构
feat(EmployeeController): 添加@JsonIgnoreProperties注解解决循环引用问题
feat(JacksonConfig): 新增Jackson配置类处理Hibernate代理和循环引用
fix(EmployeeService): 修复缓存注解格式问题
feat(Employee): 添加@JsonIgnoreProperties注解忽略可能导致循环引用的字段
feat(EmployeeRole): 添加@JsonIgnore注解忽略关联字段
fix(application.properties): 调整Redis缓存配置和错误处理设置
refactor(IndexController): 移除错误处理方法
feat(GlobalExceptionHandler): 新增全局异常处理类
refactor(SecurityConfig): 优化安全配置并启用方法级安全注解
refactor(AbstractCtx): 优化日期时间处理方法
build: 更新项目版本至0.0.53-SNAPSHOT
2025-09-04 16:06:47 +08:00
272 changed files with 3691 additions and 1924 deletions

View File

@@ -6,12 +6,12 @@
<parent>
<groupId>com.ecep.contract</groupId>
<artifactId>Contract-Manager</artifactId>
<version>0.0.49-SNAPSHOT</version>
<version>0.0.53-SNAPSHOT</version>
</parent>
<groupId>com.ecep.contract</groupId>
<artifactId>client</artifactId>
<version>0.0.49-SNAPSHOT</version>
<version>0.0.53-SNAPSHOT</version>
<properties>
<maven.compiler.source>${java.version}</maven.compiler.source>
@@ -22,7 +22,7 @@
<dependency>
<groupId>com.ecep.contract</groupId>
<artifactId>common</artifactId>
<version>0.0.49-SNAPSHOT</version>
<version>0.0.53-SNAPSHOT</version>
</dependency>
<!-- JavaFX -->
<dependency>
@@ -78,6 +78,29 @@
<compress>2</compress>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.16.2</version>
<executions>
<execution>
<inherited>true</inherited>
<id>increment-version</id>
<phase>install</phase>
<goals>
<goal>set</goal>
</goals>
<configuration>
<generateBackupPoms>false</generateBackupPoms>
<processAllModules>true</processAllModules>
<!-- <newVersion>${project.version}</newVersion> -->
<nextSnapshot>true</nextSnapshot>
<nextSnapshotIndexToIncrement>3</nextSnapshotIndexToIncrement>
<!-- <removeSnapshot>true</removeSnapshot>-->
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

View File

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

View File

@@ -1,20 +1,17 @@
package com.ecep.contract.controller;
import java.time.LocalDateTime;
import java.util.Objects;
import com.ecep.contract.util.FxmlPath;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import com.ecep.contract.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.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 javafx.fxml.FXML;
@@ -73,24 +70,4 @@ public class CloudTycManagerWindowController
super.show(stage);
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.TimeUnit;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.FxmlUtils;
import org.controlsfx.control.TaskProgressView;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -16,27 +14,24 @@ import org.springframework.context.annotation.Scope;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
import com.ecep.contract.CurrentEmployeeInitialedEvent;
import com.ecep.contract.Desktop;
import com.ecep.contract.DesktopUtils;
import com.ecep.contract.cloud.old.OldVersionService;
import com.ecep.contract.cloud.rk.CloudRkManagerWindowController;
import com.ecep.contract.cloud.rk.CloudRkService;
import com.ecep.contract.cloud.tyc.CloudTycManagerWindowController;
import com.ecep.contract.cloud.u8.ContractSyncTask;
import com.ecep.contract.cloud.u8.YongYouU8ManagerWindowController;
import com.ecep.contract.cloud.u8.YongYouU8Service;
import com.ecep.contract.ds.company.controller.CompanyManagerWindowController;
import com.ecep.contract.ds.contract.controller.ContractManagerWindowController;
import com.ecep.contract.ds.customer.controller.CompanyCustomerManagerWindowController;
import com.ecep.contract.ds.other.controller.bank.BankManagerWindowController;
import com.ecep.contract.ds.other.controller.department.DepartmentManagerWindowController;
import com.ecep.contract.ds.other.controller.employee.EmployeeManagerWindowController;
import com.ecep.contract.ds.other.controller.inventory.InventoryManagerWindowController;
import com.ecep.contract.ds.other.controller.permission.EmployeeFunctionsManagerWindowController;
import com.ecep.contract.ds.other.controller.permission.EmployeeRoleManagerWindowController;
import com.ecep.contract.ds.project.controller.ProjectManagerWindowController;
import com.ecep.contract.ds.vendor.controller.CompanyVendorManagerWindowController;
import com.ecep.contract.controller.bank.BankManagerWindowController;
import com.ecep.contract.controller.company.CompanyManagerWindowController;
import com.ecep.contract.controller.contract.ContractManagerWindowController;
import com.ecep.contract.controller.customer.CompanyCustomerManagerWindowController;
import com.ecep.contract.controller.department.DepartmentManagerWindowController;
import com.ecep.contract.controller.employee.EmployeeManagerWindowController;
import com.ecep.contract.controller.inventory.InventoryManagerWindowController;
import com.ecep.contract.controller.permission.EmployeeFunctionsManagerWindowController;
import com.ecep.contract.controller.permission.EmployeeRoleManagerWindowController;
import com.ecep.contract.controller.project.ProjectManagerWindowController;
import com.ecep.contract.controller.vendor.CompanyVendorManagerWindowController;
import com.ecep.contract.service.CloudRkService;
import com.ecep.contract.service.YongYouU8Service;
import com.ecep.contract.task.ContractSyncTask;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.FxmlUtils;
import com.ecep.contract.vm.CurrentEmployee;
import javafx.concurrent.Task;
@@ -110,10 +105,6 @@ public class HomeWindowController extends BaseController {
logger.info("You are administrator, try schedule sync tasks.");
}
Desktop.instance.getExecutorService().schedule(() -> {
try {
getBean(OldVersionService.class).scheduledTasks(taskProgressView);
} catch (BeansException ignored) {
}
try {
getBean(YongYouU8Service.class).scheduledTasks(taskProgressView);
} catch (BeansException ignored) {

View File

@@ -1,11 +1,5 @@
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.net.Inet4Address;
import java.net.InetAddress;
@@ -36,7 +30,6 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.Desktop;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.SpringApp;
import com.ecep.contract.ds.other.controller.HomeWindowController;
import com.zaxxer.hikari.HikariDataSource;
import javafx.application.Platform;
@@ -82,24 +75,9 @@ public class LoginWidowController implements MessageHolder {
}
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() {
// 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() {
return CompletableFuture.supplyAsync(() -> {
// 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) {
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.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.ds.contract.service.ContractService;
import com.ecep.contract.ds.customer.service.CompanyCustomerFileService;
import com.ecep.contract.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.constant.ContractConstant;
import com.ecep.contract.service.CompanyCustomerFileService;
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 jakarta.annotation.PreDestroy;
import javafx.beans.property.SimpleStringProperty;
import javafx.event.ActionEvent;
import javafx.scene.Node;
import javafx.scene.control.Label;
@@ -44,19 +45,14 @@ public class SysConfWindowController extends BaseController {
public Label customerEvaluationFormTemplateLabel;
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 vendorEvaluationFormTemplateConfig = new StringConfig(
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(
CompanyCustomerFileService.KEY_EVALUATION_FORM_TEMPLATE);
StringConfig customerSaleBookPathConfig = new StringConfig(CompanyCustomerService.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);
CompanyCustomerConstant.KEY_EVALUATION_FORM_TEMPLATE);
StringConfig customerSaleBookPathConfig = new StringConfig(CompanyCustomerConstant.KEY_SALEBOOK_PATH);
public void initialize() {
contractPathConfig.setControl(companyContractPathLabel);
@@ -74,15 +70,6 @@ public class SysConfWindowController extends BaseController {
customerSaleBookPathConfig.setControl(customerSaleBookPathLabel);
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()");
}
@@ -101,7 +88,7 @@ public class SysConfWindowController extends BaseController {
}
public void changeCompanyContractPath(ActionEvent actionEvent) {
directoryChoose(contractPathConfig, "请选择合同目录", ContractService.CONTRACT_BASE_PATH, actionEvent);
directoryChoose(contractPathConfig, "请选择合同目录", ContractConstant.KEY_BASE_PATH, actionEvent);
}
public void changeVendorPath(ActionEvent actionEvent) {
@@ -109,11 +96,11 @@ public class SysConfWindowController extends BaseController {
}
public void changeCustomerPath(ActionEvent actionEvent) {
directoryChoose(customerPathConfig, "请选择客户目录", CompanyCustomerService.KEY_BASE_PATH, actionEvent);
directoryChoose(customerPathConfig, "请选择客户目录", CompanyCustomerConstant.KEY_BASE_PATH, 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) {
fileChoose(customerEvaluationFormTemplateConfig, "请选择客户资信评估表模板",
CompanyCustomerFileService.KEY_EVALUATION_FORM_TEMPLATE, actionEvent);
CompanyCustomerConstant.KEY_EVALUATION_FORM_TEMPLATE, actionEvent);
}
public void changeVendorEvaluationFormTemplate(ActionEvent actionEvent) {

View File

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

View File

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

View File

@@ -6,9 +6,9 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
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.service.BankService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.BankViewModel;
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.TabSkin;
import com.ecep.contract.converter.BankStringConverter;
import com.ecep.contract.converter.CompanyStringConverter;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyBankAccount;
import com.ecep.contract.service.BankService;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.service.CompanyStringConverter;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.CompanyBankAccountViewModel;

View File

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

View File

@@ -3,11 +3,10 @@ package com.ecep.contract.controller.company;
import java.util.List;
import java.util.Optional;
import com.ecep.contract.ds.company.controller.CompanyWindowController;
import com.ecep.contract.ds.company.service.CompanyOldNameService;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.controller.AbstEntityManagerSkin;
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 javafx.application.Platform;

View File

@@ -7,13 +7,11 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import com.ecep.contract.util.FxmlPath;
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.controller.AbstManagerWindowController;
import com.ecep.contract.model.Company;
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.vm.CompanyViewModel;

View File

@@ -15,7 +15,6 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.DesktopUtils;
import com.ecep.contract.SpringApp;
import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.customer.CompanyCustomerWindowController;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
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.CompanyVendorService;
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.vm.CompanyViewModel;

View File

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

View File

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

View File

@@ -1,16 +1,15 @@
package com.ecep.contract.controller.contract;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.data.jpa.domain.Specification;
import java.util.HashMap;
import java.util.Map;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.AbstEntityTableTabSkin;
import com.ecep.contract.controller.table.TableOfTabSkin;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.contract.vo.ContractViewModel;
import com.ecep.contract.model.Contract;
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;
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
public Specification<T> getSpecification(Contract parent) {
return SpecificationUtils.and(getSpecification(), (root, query, builder) -> {
return builder.equal(root.get("contract"), parent);
});
public Map<String, Object> getSpecification(Contract parent) {
Map<String, Object> params = new HashMap<>();
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.stereotype.Component;
import com.ecep.contract.UITools;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.AbstManagerWindowController;
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.Contract;
import com.ecep.contract.model.ContractGroup;
import com.ecep.contract.model.ContractKind;
import com.ecep.contract.model.ContractType;
import com.ecep.contract.model.Employee;
import com.ecep.contract.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.scene.control.CheckBox;

View File

@@ -6,15 +6,15 @@ import java.util.concurrent.CompletableFuture;
import org.hibernate.Hibernate;
import com.ecep.contract.SpringApp;
import com.ecep.contract.UITools;
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.controller.ComboBoxUtils;
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ExtendVendorInfo;
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.beans.binding.Bindings;

View File

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

View File

@@ -10,7 +10,6 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.DesktopUtils;
import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.controller.tab.ContractTabSkinBase;
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.ContractTabSkinSubContract;
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.Contract;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.service.ContractService;
import com.ecep.contract.service.ProjectService;
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.vm.ContractViewModel;
@@ -213,7 +213,6 @@ public class ContractWindowController
public void onSyncContractAction(ActionEvent event) {
ContractRepairTask task = new ContractRepairTask();
task.setContractService(contractService);
task.setContract(getEntity());
UITools.showTaskDialogAndWait("同步合同", task, null);
if (task.isRepaired()) {
@@ -251,7 +250,6 @@ public class ContractWindowController
public void onContractVerifyAction(ActionEvent event) {
Contract contract = getEntity();
ContractVerifyTasker task = new ContractVerifyTasker();
task.setContractService(contractService);
task.setContract(contract);
UITools.showTaskDialogAndWait("同步合规性验证", task, null);
}

View File

@@ -18,13 +18,11 @@ import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
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.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 javafx.application.Platform;
@@ -108,10 +106,6 @@ public class CompanyCustomerEvaluationFormFileWindowController extends BaseContr
private SimpleObjectProperty<Image> imageProperty = new SimpleObjectProperty<>();
private CompletableFuture<CompanyCustomerEvaluationFormFile> loadedFuture;
@Autowired
private CompanyCustomerFileRepository companyCustomerFileRepository;
@Autowired
private CompanyCustomerEvaluationFormFileRepository companyCustomerEvaluationFormFileRepository;
@Lazy
@Autowired
private CompanyCustomerFileService companyCustomerFileService;
@@ -303,7 +297,7 @@ public class CompanyCustomerEvaluationFormFileWindowController extends BaseContr
imageView.imageProperty().bind(viewModel.getFilePath().map(path -> {
if (CompanyFileUtils.withExtensions(path, CompanyFileUtils.PDF)) {
if (FileUtils.withExtensions(path, FileUtils.PDF)) {
File pdfFile = new File(path);
try (PDDocument pdDocument = Loader.loadPDF(pdfFile)) {
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.SpringApp;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.converter.CompanyStringConverter;
import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.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.CompanyContact;
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 javafx.beans.binding.Bindings;
@@ -54,8 +54,7 @@ public class CompanyCustomerTabSkinBase
controller.createdField.textProperty().bind(
Bindings.createStringBinding(
() -> localDateTimeFormatter(viewModel.getCreated()),
viewModel.getCreated())
);
viewModel.getCreated()));
controller.versionLabel.textProperty().bind(viewModel.getVersion().asString());
controller.relativeCompanyBtn.disableProperty().bind(viewModel.getCompany().isNull());
@@ -66,7 +65,6 @@ public class CompanyCustomerTabSkinBase
}
});
controller.createPathBtn.setOnAction(this::onCompanyCustomerCreatePathAction);
controller.changePathBtn.setOnAction(this::onCompanyCustomerChangePathAction);
controller.pathAsNameBtn.setOnAction(this::onCompanyCustomerPathSameAsNameAction);
@@ -83,7 +81,9 @@ public class CompanyCustomerTabSkinBase
private void initializeContactFieldAutoCompletion(TextField textField) {
EntityStringConverter<CompanyContact> stringConverter = new EntityStringConverter<>();
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) {
@@ -101,7 +101,6 @@ public class CompanyCustomerTabSkinBase
}
}
public void onCompanyCustomerChangePathAction(ActionEvent event) {
setStatus("未实现");
}
@@ -111,14 +110,14 @@ public class CompanyCustomerTabSkinBase
}
public CompanyCustomerService getCompanyCustomerService() {
return controller.companyCustomerService;
return controller.getCachedBean(CompanyCustomerService.class);
}
public CompanyContactService getCompanyContactService() {
return controller.companyContactService;
return controller.getCachedBean(CompanyContactService.class);
}
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.LocalDateTime;
import org.springframework.data.jpa.domain.Specification;
import java.util.Map;
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.EntityStringConverter;
import com.ecep.contract.ds.customer.service.CompanyCustomerEntityService;
import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.model.CompanyCustomerEntity;
import com.ecep.contract.model.CustomerCatalog;
import com.ecep.contract.ui.table.cell.LocalDateTimeTableCell;
import com.ecep.contract.util.SpecificationUtils;
import com.ecep.contract.service.CompanyCustomerEntityService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.CustomerEntityViewModel;
import javafx.scene.control.MenuItem;
@@ -54,7 +52,6 @@ public class CustomerTabSkinEntity
return controller.entityTab;
}
@Override
public void initializeTab() {
super.initializeTab();
@@ -68,8 +65,10 @@ public class CustomerTabSkinEntity
EmployeeStringConverter stringConverter = SpringApp.getBean(EmployeeStringConverter.class);
entityTable_developDateColumn.setCellValueFactory(param -> param.getValue().getDevelopDate());
entityTable_modifyDateColumn.setCellValueFactory(param -> param.getValue().getModifyDate());
entityTable_creatorColumn.setCellValueFactory(param -> param.getValue().getCreator().map(stringConverter::toString));
entityTable_modifierColumn.setCellValueFactory(param -> param.getValue().getModifier().map(stringConverter::toString));
entityTable_creatorColumn
.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());
fetchedTimeColumn.setCellValueFactory(param -> param.getValue().getFetchedTime());
@@ -79,7 +78,6 @@ public class CustomerTabSkinEntity
entityTable_menu_del.setOnAction(this::onTableDeleteAction);
}
private void initializeEntityTabCatalogColumn(TableColumn<CustomerEntityViewModel, String> column) {
EntityStringConverter<CustomerCatalog> converter = new EntityStringConverter<>();
converter.setInitialized(v -> getCompanyCustomerService().findCatalogById(v.getId()));
@@ -99,10 +97,10 @@ public class CustomerTabSkinEntity
}
@Override
public Specification<CompanyCustomerEntity> getSpecification(CompanyCustomer parent) {
return SpecificationUtils.and(getSpecification(), (root, query, builder) -> {
return builder.equal(root.get("customer"), parent);
});
public Map<String, Object> getSpecification(CompanyCustomer parent) {
Map<String, Object> params = getSpecification();
params.put("customer", parent.getId());
return params;
}
}

View File

@@ -1,27 +1,5 @@
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.time.LocalDate;
import java.util.ArrayList;
@@ -31,6 +9,46 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ScheduledExecutorService;
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")
public class CustomerTabSkinFile
extends AbstCompanyCustomerTableTabSkin<CompanyCustomerFile, CompanyCustomerFileViewModel>
@@ -87,8 +105,8 @@ public class CustomerTabSkinFile
table.disableProperty().bind(viewModel.getPath().isEmpty());
fileTable_idColumn.setCellValueFactory(param -> param.getValue().getId());
ObservableMap<CompanyCustomerFileType, CompanyCustomerFileTypeLocal> observableMapByLocal = SpringApp
.getBean(CompanyCustomerFileTypeLocalRepository.class).getObservableMapByLocal();
ObservableMap<CompanyCustomerFileType, CompanyCustomerFileTypeLocal> observableMapByLocal = FXCollections
.observableMap(companyCustomerFileService.getFileTypeLocalMap(getLocale()));
fileTable_typeColumn.setCellValueFactory(param -> Bindings.valueAt(observableMapByLocal,
param.getValue().getType()).map(BaseEnumEntity::getValue));
@@ -140,8 +158,8 @@ public class CustomerTabSkinFile
CompanyCustomerFileType fileType = item.getType().get();
if (fileType == CompanyCustomerFileType.EvaluationForm) {
// 文件不是 Excel 文件时打开编辑UI
if (!CompanyFileUtils.withExtensions(item.getFilePath().get(), CompanyFileUtils.XLS,
CompanyFileUtils.XLSX)) {
if (!FileUtils.withExtensions(item.getFilePath().get(), FileUtils.XLS,
FileUtils.XLSX)) {
CompanyCustomerEvaluationFormFileWindowController.show(item, controller.root.getScene().getWindow());
return;
}
@@ -166,7 +184,8 @@ public class CustomerTabSkinFile
return;
}
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) {
File file = files.getFirst();
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.model.Department;
import com.ecep.contract.model.Employee;
import com.ecep.contract.util.ParamUtils;
import com.ecep.contract.vm.DepartmentViewModel;
import javafx.collections.FXCollections;
@@ -33,10 +34,7 @@ public class DepartmentManagerSkin
public void initializeTable() {
getTableView().setEditable(true);
Specification<Employee> spec = (root, query, cb) -> {
return cb.equal(root.get("isActive"), true);
};
List<Employee> employees = controller.getEmployeeService().findAll(spec, Pageable.ofSize(30)).getContent();
List<Employee> employees = controller.getEmployeeService().findAll(ParamUtils.equal("isActive", true), Pageable.ofSize(30)).getContent();
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 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.Employee;
import com.ecep.contract.service.DepartmentService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.DepartmentViewModel;
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.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.service.EmployeeRoleService;
import com.ecep.contract.service.EmployeeService;
import com.ecep.contract.service.PermissionService;
import com.ecep.contract.vm.EmployeeViewModel;
import lombok.Setter;

View File

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

View File

@@ -1,13 +1,12 @@
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.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.ui.table.cell.DepartmentTableCell;
import com.ecep.contract.util.SpecificationUtils;
import com.ecep.contract.service.DepartmentService;
import com.ecep.contract.vm.EmployeeViewModel;
import javafx.event.ActionEvent;
@@ -30,14 +29,12 @@ public class EmployeeManagerSkin
}
@Override
public Specification<Employee> getSpecification() {
Specification<Employee> spec = super.getSpecification();
public Map<String, Object> getSpecification() {
Map<String, Object> params = super.getSpecification();
if (controller.activeCheckBox.isSelected()) {
spec = SpecificationUtils.and(spec, (root, query, builder) -> {
return builder.isTrue(root.get("isActive"));
});
params.put("isActive", true);
}
return spec;
return params;
}
@Override
@@ -51,7 +48,6 @@ public class EmployeeManagerSkin
controller.departmentColumn.setCellValueFactory(param -> param.getValue().getDepartment());
controller.departmentColumn.setCellFactory(param -> new DepartmentTableCell<>(getDepartmentService()));
controller.emailColumn.setCellValueFactory(param -> param.getValue().getEmail());
controller.createdColumn.setCellValueFactory(param -> param.getValue().getCreated());
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.stereotype.Component;
import com.ecep.contract.UITools;
import com.ecep.contract.cloud.u8.EmployeesSyncTask;
import com.ecep.contract.constant.CloudServiceConstant;
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.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 javafx.concurrent.Task;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.CheckBox;
@@ -70,7 +69,7 @@ public class EmployeeManagerWindowController
* 从 U8系统 同步员工数据
*/
public void onSyncFromU8Action(ActionEvent event) {
Task<Object> task = new EmployeesSyncTask();
EmployeesSyncTask task = new EmployeesSyncTask();
UITools.showTaskDialogAndWait("" + CloudServiceConstant.U8_NAME + " 同步员工数据", task, null);
}

View File

@@ -5,11 +5,11 @@ import java.util.List;
import org.springframework.data.domain.Sort;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.other.service.EmployeeAuthBindService;
import com.ecep.contract.controller.table.cell.EmployeeTableCell;
import com.ecep.contract.model.Employee;
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 javafx.application.Platform;

View File

@@ -2,11 +2,11 @@ package com.ecep.contract.controller.employee;
import java.time.format.DateTimeFormatter;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.ds.other.service.DepartmentService;
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.util.converter.LocalDateStringConverter;

View File

@@ -2,11 +2,11 @@ package com.ecep.contract.controller.employee;
import java.time.LocalDateTime;
import com.ecep.contract.util.FxmlPath;
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.ui.table.cell.LocalDateTimeTableCell;
import com.ecep.contract.service.EmployeeLoginHistoryService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.EmployeeLoginHistoryViewModel;
import javafx.application.Platform;

View File

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

View File

@@ -9,10 +9,10 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
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.EmployeeRole;
import com.ecep.contract.service.EmployeeService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.EmployeeViewModel;
import javafx.scene.control.CheckBox;

View File

@@ -3,13 +3,13 @@ package com.ecep.contract.controller.inventory;
import java.util.function.Function;
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.ds.other.service.InventoryCatalogService;
import com.ecep.contract.ds.other.service.InventoryService;
import com.ecep.contract.model.Inventory;
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 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.stereotype.Component;
import com.ecep.contract.UITools;
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.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 javafx.event.ActionEvent;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -7,10 +7,10 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
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.service.FunctionService;
import com.ecep.contract.service.PermissionService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.FunctionViewModel;
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.ManagerSkin;
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.service.PermissionService;
import com.ecep.contract.vm.EmployeeRoleViewModel;
import javafx.scene.control.cell.CheckBoxTableCell;

View File

@@ -8,10 +8,10 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.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.service.EmployeeRoleService;
import com.ecep.contract.service.PermissionService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.EmployeeRoleViewModel;
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.Function;
import com.ecep.contract.util.ParamUtils;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.collections.ListChangeListener;
@@ -59,8 +60,8 @@ public class EmployeeRoleTabSkinFunctions extends AbstEmployeeRoleBasedTabSkin {
private void initializeListView() {
// 非系统内置账户
Specification<Function> spec = (root, query, cb) -> cb.equal(root.get("active"), true);
List<Function> roles = getFunctionService().findAll(spec, Pageable.ofSize(500)).getContent();
List<Function> roles = getFunctionService()
.findAll(ParamUtils.builder().equals("active", true).build(), Pageable.ofSize(500)).getContent();
functionsField.getSourceItems().setAll(roles);
functionsField.setCellFactory(param -> {

View File

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

View File

@@ -1,9 +1,9 @@
package com.ecep.contract.controller.permission;
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.service.FunctionService;
import com.ecep.contract.service.PermissionService;
import com.ecep.contract.vm.FunctionViewModel;
import javafx.scene.control.TableColumn;

View File

@@ -1,14 +1,14 @@
package com.ecep.contract.controller.permission;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.domain.Specification;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import com.ecep.contract.util.FxmlPath;
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.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.PermissionViewModel;
@@ -61,10 +61,10 @@ public class FunctionTabSkinPermission
}
@Override
public Specification<Permission> getSpecification(Function parent) {
return SpecificationUtils.and(getSpecification(), (root, query, criteriaBuilder) -> {
return criteriaBuilder.equal(root.get("function"), parent);
});
public Map<String, Object> getSpecification(Function parent) {
Map<String, Object> params = getSpecification();
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 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.service.FunctionService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.FunctionViewModel;
import javafx.fxml.FXML;

View File

@@ -1,18 +1,19 @@
package com.ecep.contract.controller.permission;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.function.Function;
import org.slf4j.Logger;
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.table.TableTabSkin;
import com.ecep.contract.model.Permission;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.FunctionViewModel;
import com.ecep.contract.vm.PermissionViewModel;
@@ -58,7 +59,6 @@ public class PermissionManagerSkin implements ManagerSkin, TableTabSkin<Permissi
return table;
}
@Override
public void install() {
initializeTable();
@@ -66,14 +66,14 @@ public class PermissionManagerSkin implements ManagerSkin, TableTabSkin<Permissi
loadTableDataSet();
}
@Override
public void initializeTable() {
table.setEditable(true);
// controller.permissionTable_descriptionColumn.setCellValueFactory(param -> param.getValue().getDescription());
// controller.permissionTable_descriptionColumn.setCellFactory(TextFieldTableCell.forTableColumn());
// controller.permissionTable_descriptionColumn.setOnEditCommit(this::onSignMethodTableDescriptionColumnEditCommitAction);
// controller.permissionTable_descriptionColumn.setCellValueFactory(param ->
// param.getValue().getDescription());
// controller.permissionTable_descriptionColumn.setCellFactory(TextFieldTableCell.forTableColumn());
// controller.permissionTable_descriptionColumn.setOnEditCommit(this::onSignMethodTableDescriptionColumnEditCommitAction);
table.setItems(dataSet);
@@ -143,7 +143,8 @@ public class PermissionManagerSkin implements ManagerSkin, TableTabSkin<Permissi
if (viewModel == null) {
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() {
@@ -163,12 +164,14 @@ public class PermissionManagerSkin implements ManagerSkin, TableTabSkin<Permissi
}
@Override
public Specification<Permission> getSpecification() {
return controller.permissionService.getSpecification(null);
public Map<String, Object> getSpecification() {
Map<String, Object> params = new HashMap<>();
// 使用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();
Property<K> property = function.apply(row);
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.TabSkin;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.Project;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.vm.ProjectViewModel;
public abstract class AbstProjectBasedTabSkin

View File

@@ -1,13 +1,12 @@
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.table.AbstEntityTableTabSkin;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.model.IdentityEntity;
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.ProjectBasedViewModel;
import com.ecep.contract.vm.ProjectViewModel;
@@ -34,9 +33,9 @@ public abstract class AbstProjectTableTabSkin<T extends IdentityEntity, TV exten
}
@Override
public Specification<T> getSpecification(Project parent) {
return SpecificationUtils.and(getSpecification(), (root, query, builder) -> {
return builder.equal(root.get("project"), parent);
});
public Map<String, Object> getSpecification(Project parent) {
Map<String, Object> params = getSpecification();
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.controller.BaseController;
import com.ecep.contract.util.FxmlPath;
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.Project;
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 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;
import org.springframework.data.jpa.domain.Specification;
import java.util.Map;
import com.ecep.contract.controller.AbstEntityManagerSkin;
import com.ecep.contract.controller.BaseController;
import com.ecep.contract.controller.ComboBoxUtils;
import com.ecep.contract.controller.ManagerSkin;
import com.ecep.contract.controller.table.cell.CompanyTableCell;
import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.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.ProductType;
import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.model.ProjectType;
import com.ecep.contract.ui.table.cell.CompanyTableCell;
import com.ecep.contract.util.SpecificationUtils;
import com.ecep.contract.service.CompanyService;
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 javafx.application.Platform;
@@ -41,7 +40,6 @@ public class ProjectManagerSkin
@Setter
private ProductTypeService productTypeService;
public ProjectManagerSkin(ProjectManagerWindowController controller) {
super(controller);
}
@@ -50,7 +48,7 @@ public class ProjectManagerSkin
return controller.getViewModelService();
}
public CompanyService getCompanyService(){
public CompanyService getCompanyService() {
if (companyService == null) {
companyService = getBean(CompanyService.class);
}
@@ -78,16 +76,13 @@ public class ProjectManagerSkin
return productTypeService;
}
@Override
public Specification<Project> getSpecification() {
Specification<Project> spec = super.getSpecification();
public Map<String, Object> getSpecification() {
Map<String, Object> params = super.getSpecification();
if (controller.saleTypeSelector.getValue() != null) {
spec = SpecificationUtils.and(spec, (root, query, builder) -> {
return builder.equal(root.get("saleType"), controller.saleTypeSelector.getValue());
});
params.put("saleType", controller.saleTypeSelector.getValue());
}
return spec;
return params;
}
@Override
@@ -102,7 +97,9 @@ public class ProjectManagerSkin
controller.nameColumn.setCellValueFactory(param -> param.getValue().getName());
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);
initializeCustomerColumn(controller.customerColumn);
@@ -114,7 +111,6 @@ public class ProjectManagerSkin
controller.useOfferColumn.setCellValueFactory(param -> param.getValue().getUseOffer());
controller.useOfferColumn.setCellFactory(CheckBoxTableCell.forTableColumn(controller.useOfferColumn));
controller.createdColumn.setCellValueFactory(param -> param.getValue().getCreated());
Platform.runLater(() -> {
@@ -122,10 +118,9 @@ public class ProjectManagerSkin
});
}
private void initializeCustomerColumn(TableColumn<ProjectViewModel, Company> column) {
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) {
@@ -156,13 +151,14 @@ public class ProjectManagerSkin
@Override
protected void onTableCreateNewAction(ActionEvent event) {
BaseController.show(ApplyNewProjectWindowController.class, getTableView().getScene().getWindow(), controller -> {
controller.setOnApplied(project -> {
ProjectViewModel viewModel = ProjectViewModel.from(project);
dataSet.addFirst(viewModel);
showInOwner(viewModel);
});
});
BaseController.show(ApplyNewProjectWindowController.class, getTableView().getScene().getWindow(),
controller -> {
controller.setOnApplied(project -> {
ProjectViewModel viewModel = ProjectViewModel.from(project);
dataSet.addFirst(viewModel);
showInOwner(viewModel);
});
});
}
private void showInOwner(ProjectViewModel model) {

View File

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

View File

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

View File

@@ -5,22 +5,22 @@ import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.project.bid.ProjectBidWindowController;
import com.ecep.contract.controller.tab.RefreshableSkin;
import com.ecep.contract.controller.tab.TabSkin;
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.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.Employee;
import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectBid;
import com.ecep.contract.service.CompanyStringConverter;
import com.ecep.contract.ui.table.cell.EmployeeTableCell;
import com.ecep.contract.service.CompanyCustomerFileService;
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 javafx.scene.control.Tab;

View File

@@ -2,11 +2,11 @@ package com.ecep.contract.controller.project;
import java.time.LocalDate;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.project.ContractWindowController;
import com.ecep.contract.controller.contract.ContractWindowController;
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.service.ContractService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.ContractViewModel;
import javafx.application.Platform;

View File

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

View File

@@ -8,22 +8,21 @@ import org.hibernate.Hibernate;
import org.springframework.util.StringUtils;
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.tab.TabSkin;
import com.ecep.contract.converter.CompanyStringConverter;
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.Company;
import com.ecep.contract.model.CompanyBankAccount;
import com.ecep.contract.model.CompanyContact;
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.StringProperty;

View File

@@ -5,19 +5,19 @@ import java.time.LocalDateTime;
import java.time.LocalTime;
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.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.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.Employee;
import com.ecep.contract.model.Project;
import com.ecep.contract.service.CompanyStringConverter;
import com.ecep.contract.ui.table.cell.EmployeeTableCell;
import com.ecep.contract.service.CompanyCustomerFileService;
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 javafx.scene.control.Tab;

View File

@@ -10,17 +10,17 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ecep.contract.ContractPayWay;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.ds.contract.service.ContractPayPlanService;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.project.service.ProjectFundPlanService;
import com.ecep.contract.controller.table.cell.NumberTableCell;
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ContractPayPlan;
import com.ecep.contract.model.Project;
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.vm.ProjectFundPlanViewModel;

View File

@@ -5,24 +5,24 @@ import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.project.quotation.ProjectQuotationWindowController;
import com.ecep.contract.controller.tab.RefreshableSkin;
import com.ecep.contract.controller.tab.TabSkin;
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.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.Employee;
import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectQuotation;
import com.ecep.contract.service.CompanyStringConverter;
import com.ecep.contract.ui.table.cell.EmployeeTableCell;
import com.ecep.contract.ui.table.cell.EvaluationFileTableCell;
import com.ecep.contract.ui.table.cell.LocalDateTimeTableCell;
import com.ecep.contract.service.CompanyCustomerFileService;
import com.ecep.contract.service.CompanyCustomerService;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.service.ProjectQuotationService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.ProjectQuotationViewModel;
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.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.ProductType;
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.ProjectSaleType;
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 javafx.beans.binding.Bindings;

View File

@@ -17,21 +17,13 @@ import com.ecep.contract.CompanyCustomerFileType;
import com.ecep.contract.ContractFileType;
import com.ecep.contract.DesktopUtils;
import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.customer.CompanyCustomerEvaluationFormFileWindowController;
import com.ecep.contract.controller.project.cost.ProjectCostWindowController;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.converter.CompanyStringConverter;
import com.ecep.contract.converter.EmployeeStringConverter;
import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.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.CompanyCustomer;
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.ProjectBid;
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 javafx.application.Platform;

View File

@@ -6,11 +6,11 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
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.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 javafx.event.ActionEvent;

View File

@@ -1,6 +1,11 @@
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.FileInputStream;
@@ -27,14 +32,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.ds.contract.service.ContractFileService;
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.constant.ContractConstant;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.Employee;
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.ProjectSaleType;
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;
@@ -73,6 +78,7 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
}
return costService;
}
ProjectCostItemService getItemService() {
if (itemService == null) {
itemService = getBean(ProjectCostItemService.class);
@@ -85,7 +91,7 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
updateTitle("根据模板导出" + name);
// \\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)) {
holder.error(name + "模板文件未设置,请先设置" + name + "模板文件");
return null;
@@ -117,8 +123,7 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
try (
InputStream inp = new FileInputStream(template);
Workbook wb = WorkbookFactory.create(inp)
) {
Workbook wb = WorkbookFactory.create(inp)) {
updateProjectCost(wb, destFile, holder);
holder.info(name + "保存到" + destFile.getName() + "!");
} catch (Exception e) {
@@ -239,7 +244,6 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
setCellValue(sheet, "D39", cost.getStampTax() / 100);
setCellValue(sheet, "D40", cost.getTaxAndSurcharges() / 100);
List<ProjectCostItem> items = getItemService().findByCost(cost);
if (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, 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);
if (cellTax != null) {
cellTax.setBlank();
}
// setCellValue(sheet, row, 6, 0);
setCellValue(sheet, row, 7, items.stream().mapToDouble(v -> v.getInQuantity() * v.getInExclusiveTaxPrice()).sum());
// setCellValue(sheet, row, 6, 0);
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, 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);
return;
@@ -325,7 +337,6 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
detailSheet.setColumnWidth(6, 13 * 256);
copyStyle(sheet, "H10", detailSheet, "G3");
setCellValue(detailSheet, "H3", "数量");
detailSheet.setColumnWidth(7, 8 * 256);
copyStyle(sheet, "D10", detailSheet, "H3");
@@ -354,7 +365,6 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
copyStyle(sheet, "N10", detailSheet, "N3");
}
for (int i = 0; i < items.size(); i++) {
ProjectCostItem item = items.get(i);
int rowIndex = 3 + i;
@@ -388,7 +398,6 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
copyStyle(sheet, "A42", setCellValue(theRow, 1, ""));
theRow.setHeight((short) (28 * 20));
int rowIndex = theRow.getRowNum() - 1;
Cell cell2 = getCell(theRow, 2, true);
if (cell2 != null) {
@@ -493,7 +502,7 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
detailSheet.setVerticallyCenter(false);
// 设置页边距(单位:英寸)
detailSheet.setMargin(PageMargin.LEFT, 1.8 / 2.54); // 将厘米转换为英寸
detailSheet.setMargin(PageMargin.LEFT, 1.8 / 2.54); // 将厘米转换为英寸
detailSheet.setMargin(PageMargin.RIGHT, 1.8 / 2.54);
detailSheet.setMargin(PageMargin.TOP, 1.9 / 2.54);
detailSheet.setMargin(PageMargin.BOTTOM, 1.9 / 2.54);
@@ -559,7 +568,8 @@ public class ProjectCostExportExcelTasker extends Tasker<Object> {
// =IF(G4=0,IF(L4=0,0,G4-L4),G4-L4)
CellAddress g$4 = new CellAddress(row.getRowNum(), 6);
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%

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.DesktopUtils;
import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin;
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.ContractFile;
import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectCost;
import com.ecep.contract.service.ContractFileService;
import com.ecep.contract.service.ContractService;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.ProjectCostViewModel;
import javafx.application.Platform;

View File

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

View File

@@ -6,13 +6,13 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import com.ecep.contract.UITools;
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.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 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.ManagerSkin;
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.service.ProjectService;
import com.ecep.contract.vm.ProjectIndustryViewModel;
import javafx.scene.control.TableColumn;

View File

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

View File

@@ -10,10 +10,10 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
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.service.ProductTypeService;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.ProductTypeViewModel;
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.ManagerSkin;
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.service.ProjectService;
import com.ecep.contract.service.ProjectTypeService;
import com.ecep.contract.vm.ProjectTypeViewModel;
import javafx.scene.control.TableColumn;

View File

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

View File

@@ -21,13 +21,13 @@ import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.ds.contract.service.ContractFileService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.constant.ContractConstant;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.Employee;
import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectQuotation;
import com.ecep.contract.ui.Tasker;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.task.Tasker;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -59,7 +59,7 @@ public class ProjectQuotationExportAsExcelFile extends Tasker<Object> {
updateTitle("根据模板导出" + name);
// \\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)) {
holder.error(name + "模板文件未设置,请先设置" + name + "模板文件");
return null;

View File

@@ -15,19 +15,12 @@ import com.ecep.contract.CompanyCustomerFileType;
import com.ecep.contract.ContractFileType;
import com.ecep.contract.DesktopUtils;
import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.customer.CompanyCustomerEvaluationFormFileWindowController;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.converter.CompanyStringConverter;
import com.ecep.contract.converter.EmployeeStringConverter;
import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.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.CompanyCustomer;
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.Project;
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 javafx.application.Platform;

View File

@@ -6,13 +6,13 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import com.ecep.contract.UITools;
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.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 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.TabSkin;
import com.ecep.contract.ds.project.service.SaleTypeService;
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
extends AbstEntityBasedTabSkin<ProjectSaleTypeWindowController, ProjectSaleType, SaleTypeViewModel>
extends AbstEntityBasedTabSkin<ProjectSaleTypeWindowController, ProjectSaleType, ProjectSaleTypeViewModel>
implements TabSkin {
public AbstProjectSaleTypeBasedTabSkin(ProjectSaleTypeWindowController controller) {

View File

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

View File

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

View File

@@ -8,10 +8,10 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.ds.project.service.SaleTypeService;
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.stage.Stage;
@@ -21,19 +21,19 @@ import javafx.stage.Stage;
@Component
@FxmlPath("/ui/project/sale-type-manager.fxml")
public class ProjectSaleTypeManagerWindowController
extends AbstManagerWindowController<ProjectSaleType, SaleTypeViewModel, ProjectSaleTypeManagerSkin> {
extends AbstManagerWindowController<ProjectSaleType, ProjectSaleTypeViewModel, ProjectSaleTypeManagerSkin> {
@Autowired
private SaleTypeService saleTypeService;
public TableColumn<SaleTypeViewModel, Number> idColumn;
public TableColumn<SaleTypeViewModel, String> nameColumn;
public TableColumn<SaleTypeViewModel, String> codeColumn;
public TableColumn<SaleTypeViewModel, String> pathColumn;
public TableColumn<SaleTypeViewModel, Boolean> storeByYearColumn;
public TableColumn<SaleTypeViewModel, String> descriptionColumn;
public TableColumn<SaleTypeViewModel, LocalDate> createdColumn;
public TableColumn<SaleTypeViewModel, Boolean> activeColumn;
public TableColumn<ProjectSaleTypeViewModel, Number> idColumn;
public TableColumn<ProjectSaleTypeViewModel, String> nameColumn;
public TableColumn<ProjectSaleTypeViewModel, String> codeColumn;
public TableColumn<ProjectSaleTypeViewModel, String> pathColumn;
public TableColumn<ProjectSaleTypeViewModel, Boolean> storeByYearColumn;
public TableColumn<ProjectSaleTypeViewModel, String> descriptionColumn;
public TableColumn<ProjectSaleTypeViewModel, LocalDate> createdColumn;
public TableColumn<ProjectSaleTypeViewModel, Boolean> activeColumn;
@Override
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.SpringApp;
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.ProjectSaleTypeRequireFileType;
import com.ecep.contract.service.ContractFileService;
import com.ecep.contract.service.ProjectSaleTypeRequireFileTypeService;
import impl.org.controlsfx.skin.ListSelectionViewSkin;
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.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.service.SaleTypeService;
import com.ecep.contract.util.FxmlPath;
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.DatePicker;
@@ -38,11 +38,11 @@ import javafx.stage.Window;
@Component
@FxmlPath("/ui/project/sale-type.fxml")
public class ProjectSaleTypeWindowController
extends AbstEntityController<ProjectSaleType, SaleTypeViewModel> {
extends AbstEntityController<ProjectSaleType, ProjectSaleTypeViewModel> {
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);
}

View File

@@ -2,8 +2,8 @@ package com.ecep.contract.controller.project.sale_type;
import com.ecep.contract.SpringApp;
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.service.DeliverySignMethodService;
import com.ecep.contract.vm.DeliverySignMethodViewModel;
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.MyDateTimeUtils;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.converter.CompanyStringConverter;
import com.ecep.contract.converter.EmployeeStringConverter;
import com.ecep.contract.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.CompanyCustomer;
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.Employee;
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 javafx.application.Platform;

View File

@@ -6,11 +6,11 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
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.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 javafx.event.ActionEvent;

View File

@@ -1,6 +1,8 @@
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.FileInputStream;
@@ -22,13 +24,14 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.ds.project.service.CustomerSatisfactionSurveyService;
import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.constant.ProjectConstant;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CustomerSatisfactionSurvey;
import com.ecep.contract.model.Employee;
import com.ecep.contract.model.Project;
import com.ecep.contract.ui.Tasker;
import com.ecep.contract.service.CustomerSatisfactionSurveyService;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.task.Tasker;
import lombok.Setter;
@@ -60,7 +63,7 @@ public class ProjectCustomerSatisfactionSurveyExportAsExcelFile extends Tasker<V
@Override
protected Void execute(MessageHolder holder) throws Exception {
updateTitle("根据模板导出" + name);
String path = getConfService().getString(CustomerSatisfactionSurveyService.KEY_TEMPLATE);
String path = getConfService().getString(ProjectConstant.KEY_CUSTOMER_SATISFACTION_SURVEY_TEMPLATE);
if (!StringUtils.hasText(path)) {
holder.error(name + "模板文件未设置,请先设置" + name + "模板文件");
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.ManagerSkin;
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.service.ProductUsageService;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.vm.ProductUsageViewModel;
import javafx.scene.control.TableColumn;

View File

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

View File

@@ -1,15 +1,15 @@
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.CompanyWindowController;
import com.ecep.contract.ds.company.controller.bank_account.BankAccountWindowController;
import com.ecep.contract.ds.company.service.CompanyBankAccountService;
import com.ecep.contract.ds.other.service.BankService;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.controller.table.cell.BankTableCell;
import com.ecep.contract.model.Bank;
import com.ecep.contract.model.CompanyBankAccount;
import com.ecep.contract.ui.table.EditableEntityTableTabSkin;
import com.ecep.contract.ui.table.cell.BankTableCell;
import com.ecep.contract.service.BankService;
import com.ecep.contract.service.CompanyBankAccountService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.vm.CompanyBankAccountViewModel;
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.CompanyWindowController;
import com.ecep.contract.ds.company.service.CompanyOldNameService;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyOldName;
import com.ecep.contract.service.CompanyOldNameService;
import javafx.event.ActionEvent;
import javafx.geometry.Insets;

View File

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

View File

@@ -2,13 +2,13 @@ package com.ecep.contract.controller.tab;
import java.time.LocalDate;
import com.ecep.contract.util.FxmlPath;
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.ds.company.controller.contact.CompanyContactWindowController;
import com.ecep.contract.ds.company.service.CompanyContactService;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
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 javafx.event.ActionEvent;

View File

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

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