Compare commits

..

4 Commits

Author SHA1 Message Date
72f8e2e209 Merge branch 'main' of http://10.84.210.110/songqq/contract-manager 2025-09-03 23:09:48 +08:00
b927f9d572 build: 添加FixPackageNames相关编译文件
添加FixPackageNames.class及其内部类FixPackageNames$1.class的编译输出文件
2025-09-03 23:09:40 +08:00
a2f5e4864b 拆分模块 2025-09-03 20:56:44 +08:00
08cc2c29a5 拆分模块 2025-09-03 20:48:39 +08:00
939 changed files with 14293 additions and 9591 deletions

BIN
FixPackageNames$1.class Normal file

Binary file not shown.

BIN
FixPackageNames.class Normal file

Binary file not shown.

48
FixPackageNames.java Normal file
View File

@@ -0,0 +1,48 @@
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.concurrent.atomic.AtomicInteger;
public class FixPackageNames {
public static void main(String[] args) {
String rootDir = "d:/idea-workspace/Contract-Manager/server/src/main/java";
AtomicInteger counter = new AtomicInteger(0);
try {
Path path = Paths.get(rootDir);
// System.out.println(path.getFileName().toString());
Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
// System.out.println(file.toString());
if (file.toString().endsWith(".java")) {
String content = new String(Files.readAllBytes(file));
// System.out.println(content);
if (content.indexOf("package com.ecep.contract.manager") >= 0) {
System.out.println(content);
}
String newContent = content
.replace("package com.ecep.contract.manager", "package com.ecep.contract")
.replace("import com.ecep.contract.manager", "import com.ecep.contract");
if (!content.equals(newContent)) {
Files.write(file, newContent.getBytes());
System.out.println("Fixed: " + file.toString());
counter.incrementAndGet();
}
}
return FileVisitResult.CONTINUE;
}
});
System.out.println("Total files fixed: " + counter.get());
} catch (IOException e) {
e.printStackTrace();
}
}
}

View File

@@ -1,33 +1,9 @@
## 项目改进与优化分析报告 # 项目介绍
### 1. 同步任务与调度优化
- 调度策略优化 :各同步任务(如 ContractSyncTask 、 VendorSyncTask )使用不同的调度间隔和策略,建议统一调度配置,避免重复执行和资源浪费 分模块:
- 增量同步实现 多数同步任务缺乏断点续传机制建议添加基于最后同步ID或时间戳的增量同步功能 common: 公共模块,包含实体类、公共的类、枚举、异常、工具类等
- 任务依赖管理 :部分任务存在隐式依赖关系(如 OldVersionSyncVendorTask 中的多步骤执行),建议引入任务依赖管理机制 server: 服务端模块包含服务端的代码依赖common模块
### 2. 线程池与异步处理 client: 客户端模块包含客户端的代码依赖common模块
- 线程池配置 :当前项目未明确配置线程池参数(核心线程数、最大线程数等),建议在 SpringApp 中添加显式线程池配置
- 线程池隔离 不同类型的任务IO密集型、CPU密集型应使用不同线程池避免资源竞争
- 异步任务监控 :添加异步任务执行状态监控和超时处理机制,避免任务长时间阻塞
### 3. 缓存机制优化
- 缓存策略细化 :当前缓存配置较为简单( CaffeineCacheManager ),建议为不同类型数据配置差异化缓存策略(过期时间、最大容量等)
- 缓存一致性 :修复 CloudRkService 中缓存更新问题(注释中提到的"这个可以无法更新缓存"
- 缓存预热 :添加关键数据缓存预热机制,提高系统启动后响应速度
### 4. 依赖注入与懒加载
- 依赖注入规范化 :减少 SpringApp.getBean() 手动获取bean的方式推广构造函数注入或字段注入
- 懒加载优化 :充分利用 @Lazy 注解和 BootstrapMode.LAZY 配置,优化应用启动性能
- 服务解耦 :继续推进服务拆分工作(如之前的 ContractService 拆分为专用服务),减少服务间耦合
### 5. 异常处理与重试机制
- 异常处理统一 :规范异常处理策略,确保所有异常都被适当记录和处理
- 重试机制添加 :为网络请求和数据库操作添加重试机制(如使用 Spring Retry
- 熔断降级 对外部系统调用如用友U8接口添加熔断降级机制提高系统稳定性
### 6. 数据库操作优化
- 批量操作引入 对大量数据的CRUD操作建议使用批量处理API提高性能
- 查询优化 :添加适当索引,优化复杂查询,避免全表扫描
- 连接池配置 :优化 HikariDataSource 配置参数(如连接池大小、超时时间等)
### 7. 代码质量与维护性
- 重复代码消除 :提取同步任务中的共同逻辑(如进度更新、异常处理)为抽象基类
- 注释完善 :补充关键类和方法的文档注释,特别是复杂业务逻辑和优化点
- 技术债务清理 解决代码中的TODO项如 CloudRkService 中的缓存更新问题)
### 8. 配置管理优化
- 配置集中管理 :将分散在代码中的配置项(如同步间隔、批处理大小)集中到配置文件
- 动态配置支持 :添加动态配置更新机制,避免重启应用
以上优化点已按优先级和影响范围排序,建议逐步实施。实施过程中应注意性能测试和兼容性验证,确保优化不会引入新问题。

84
client/pom.xml Normal file
View File

@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.ecep.contract</groupId>
<artifactId>Contract-Manager</artifactId>
<version>0.0.49-SNAPSHOT</version>
</parent>
<groupId>com.ecep.contract</groupId>
<artifactId>client</artifactId>
<version>0.0.49-SNAPSHOT</version>
<properties>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.ecep.contract</groupId>
<artifactId>common</artifactId>
<version>0.0.49-SNAPSHOT</version>
</dependency>
<!-- JavaFX -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-web</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>org.controlsfx</groupId>
<artifactId>controlsfx</artifactId>
<version>11.2.0</version>
</dependency>
<!-- Caffeine Cache -->
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>3.1.8</version>
</dependency>
<!-- Spring Context Support for CaffeineCacheManager -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>3.3.7</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.8</version>
<configuration>
<mainClass>com.ecep.contract.manager.AppV2</mainClass>
<launcher>app</launcher>
<jlinkZipName>app-jlink</jlinkZipName>
<jlinkImageName>app-jlink-image</jlinkImageName>
<noManPages>true</noManPages>
<stripDebug>true</stripDebug>
<compress>2</compress>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@@ -1,4 +1,4 @@
package com.ecep.contract.manager; package com.ecep.contract;
import javafx.application.Application; import javafx.application.Application;
import org.slf4j.Logger; import org.slf4j.Logger;
@@ -25,9 +25,5 @@ public class AppV2 {
System.out.println("AppV2.done"); System.out.println("AppV2.done");
} }
public static final String DEFAULT_DB_HOST = "10.84.209.154"; // "db-server1.ecctrl.com" public static final String DEFAULT_HOST = "10.84.209.154";
public static final String DEFAULT_DB_PORT = "3306";
public static final String DEFAULT_DB_USERNAME = "supplier_ms";
public static final String DEFAULT_DB_PASSWORD = "[TPdseO!JKMmlrpf";
public static final String DEFAULT_DB_DATABASE = "supplier_ms";
} }

View File

@@ -1,4 +1,4 @@
package com.ecep.contract.manager; package com.ecep.contract;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
@@ -17,11 +17,11 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import com.ecep.contract.manager.ds.other.controller.LoginWidowController; import com.ecep.contract.controller.BaseController;
import com.ecep.contract.manager.ui.BaseController; import com.ecep.contract.controller.LoginWidowController;
import com.ecep.contract.manager.ui.MessageHolder; import com.ecep.contract.task.TaskMonitorCenter;
import com.ecep.contract.manager.ui.task.TaskMonitorCenter; import com.ecep.contract.util.UITools;
import com.ecep.contract.manager.util.UITools; import com.ecep.contract.vm.CurrentEmployee;
import javafx.application.Application; import javafx.application.Application;
import javafx.application.Platform; import javafx.application.Platform;
@@ -263,5 +263,4 @@ public class Desktop extends Application {
} }
scheduledExecutorService.close(); scheduledExecutorService.close();
} }
}
}

View File

@@ -1,4 +1,4 @@
package com.ecep.contract.manager.util; package com.ecep.contract;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@@ -6,8 +6,6 @@ import java.util.function.Consumer;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import com.ecep.contract.manager.Desktop;
public class DesktopUtils { public class DesktopUtils {
/** /**

View File

@@ -0,0 +1,7 @@
package com.ecep.contract;
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}

View File

@@ -1,4 +1,4 @@
package com.ecep.contract.manager; package com.ecep.contract;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
@@ -25,7 +25,6 @@ import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.caffeine.CaffeineCacheManager; import org.springframework.cache.caffeine.CaffeineCacheManager;
import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.event.ContextClosedEvent; import org.springframework.context.event.ContextClosedEvent;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;
@@ -36,11 +35,7 @@ import org.springframework.core.metrics.StartupStep;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import com.ecep.contract.manager.cloud.CloudRepositoriesConfig; import com.ecep.contract.util.UITools;
import com.ecep.contract.manager.ds.DsRepositoriesConfig;
import com.ecep.contract.manager.ui.MessageHolder;
import com.ecep.contract.manager.util.MyDateTimeUtils;
import com.ecep.contract.manager.util.UITools;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
@@ -50,15 +45,15 @@ import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
@SpringBootApplication(exclude = { org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration.class }) @SpringBootApplication
@EnableScheduling @EnableScheduling
@EnableAsync @EnableAsync
@EnableCaching @EnableCaching
public class SpringApp { public class SpringApp {
private static final Logger logger = LoggerFactory.getLogger(SpringApp.class); private static final Logger logger = LoggerFactory.getLogger(SpringApp.class);
static SpringApplication application; public static SpringApplication application;
static ConfigurableApplicationContext context; public static ConfigurableApplicationContext context;
public static <T> T getBean(Class<T> requiredType) throws BeansException { public static <T> T getBean(Class<T> requiredType) throws BeansException {
return context.getBean(requiredType); return context.getBean(requiredType);
@@ -92,11 +87,6 @@ public class SpringApp {
environment.getPropertySources().addLast(new PropertiesPropertySource("dynamicProperties", properties)); environment.getPropertySources().addLast(new PropertiesPropertySource("dynamicProperties", properties));
// app.getBeanFactory().registerSingleton("dataSource", dataSource()); // app.getBeanFactory().registerSingleton("dataSource", dataSource());
logger.debug("app = {}", app); logger.debug("app = {}", app);
if (app instanceof AnnotationConfigApplicationContext ctx) {
ctx.register(DsRepositoriesConfig.class);
ctx.register(CloudRepositoriesConfig.class);
}
}); });
startup.start(""); startup.start("");

View File

@@ -1,7 +1,10 @@
package com.ecep.contract.manager.ui; package com.ecep.contract.controller;
import com.ecep.contract.manager.ds.other.model.IdentityEntity; import org.apache.poi.ss.formula.functions.T;
import com.ecep.contract.manager.ds.other.vo.IdentityViewModel;
import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.service.ViewModelService;
import com.ecep.contract.vm.IdentityViewModel;
import javafx.scene.control.TableView; import javafx.scene.control.TableView;
import javafx.stage.WindowEvent; import javafx.stage.WindowEvent;

View File

@@ -1,11 +1,20 @@
package com.ecep.contract.manager.ui; package com.ecep.contract.controller;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.function.Function;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.RefreshableSkin;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.service.ViewModelService;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.BaseViewModel;
import com.ecep.contract.vm.IdentityViewModel;
import com.ecep.contract.manager.ds.other.model.IdentityEntity;
import com.ecep.contract.manager.ds.other.vo.BaseViewModel;
import com.ecep.contract.manager.ds.other.vo.IdentityViewModel;
import com.ecep.contract.manager.ui.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.manager.ui.tab.TabSkin;
import com.ecep.contract.manager.util.UITools;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.binding.BooleanBinding; import javafx.beans.binding.BooleanBinding;
@@ -18,12 +27,6 @@ import javafx.stage.WindowEvent;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.function.Function;
public abstract class AbstEntityController<T extends IdentityEntity, TV extends IdentityViewModel<T>> public abstract class AbstEntityController<T extends IdentityEntity, TV extends IdentityViewModel<T>>
extends BaseController { extends BaseController {

View File

@@ -1,13 +1,17 @@
package com.ecep.contract.manager.ui; package com.ecep.contract.controller;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.function.Function; import java.util.function.Function;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.controller.table.TableTabSkin;
import com.ecep.contract.util.UITools;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
@@ -16,12 +20,10 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import com.ecep.contract.manager.ds.other.model.IdentityEntity; import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.manager.ds.other.vo.IdentityViewModel; import com.ecep.contract.service.ViewModelService;
import com.ecep.contract.manager.ui.table.EditableEntityTableTabSkin; import com.ecep.contract.util.TableViewUtils;
import com.ecep.contract.manager.ui.table.TableTabSkin; import com.ecep.contract.vm.IdentityViewModel;
import com.ecep.contract.manager.util.TableViewUtils;
import com.ecep.contract.manager.util.UITools;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.beans.property.Property; import javafx.beans.property.Property;
@@ -467,10 +469,10 @@ public abstract class AbstEntityManagerSkin<T extends IdentityEntity, TV extends
* @return * @return
*/ */
protected List<TV> loadTableData() { protected List<TV> loadTableData() {
Specification<T> spec = getSpecification(); Map<String, Object> params = getSpecification();
ViewModelService<T, TV> service = getViewModelService(); ViewModelService<T, TV> service = getViewModelService();
long timeMillis = System.currentTimeMillis(); long timeMillis = System.currentTimeMillis();
Page<T> page = service.findAll(spec, getPageable()); Page<T> page = service.findAll(params, getPageable());
long timeCost = System.currentTimeMillis() - timeMillis; long timeCost = System.currentTimeMillis() - timeMillis;
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
logger.debug("load table data cost: {} ms", timeCost); logger.debug("load table data cost: {} ms", timeCost);
@@ -500,7 +502,7 @@ public abstract class AbstEntityManagerSkin<T extends IdentityEntity, TV extends
* *
* @return * @return
*/ */
public Specification<T> getSpecification() { public Map<String, Object> getSpecification() {
TextField field = controller.searchKeyField; TextField field = controller.searchKeyField;
if (field != null) { if (field != null) {
return getViewModelService().getSpecification(field.getText()); return getViewModelService().getSpecification(field.getText());
@@ -514,7 +516,7 @@ public abstract class AbstEntityManagerSkin<T extends IdentityEntity, TV extends
* @param searchText * @param searchText
* @return * @return
*/ */
protected Specification<T> getSpecification(String searchText) { protected Map<String, Object> getSpecification(String searchText) {
return getViewModelService().getSpecification(searchText); return getViewModelService().getSpecification(searchText);
} }

View File

@@ -1,7 +1,7 @@
package com.ecep.contract.manager.ui; package com.ecep.contract.controller;
import com.ecep.contract.manager.ds.other.model.IdentityEntity; import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.manager.ds.other.vo.IdentityViewModel; import com.ecep.contract.vm.IdentityViewModel;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.Label; import javafx.scene.control.Label;
@@ -41,6 +41,4 @@ public abstract class AbstManagerWindowController<T extends IdentityEntity, TV e
} }
} }

View File

@@ -1,4 +1,4 @@
package com.ecep.contract.manager.ui; package com.ecep.contract.controller;
import java.beans.PropertyDescriptor; import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
@@ -9,22 +9,23 @@ import java.util.Locale;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer; import java.util.function.Consumer;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.FxmlUtils;
import org.apache.logging.log4j.util.Strings; import org.apache.logging.log4j.util.Strings;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import com.ecep.contract.manager.CurrentEmployee; import com.ecep.contract.Desktop;
import com.ecep.contract.manager.Desktop; import com.ecep.contract.SpringApp;
import com.ecep.contract.manager.SpringApp; import com.ecep.contract.model.Employee;
import com.ecep.contract.manager.ds.other.model.Employee; import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.manager.ds.other.model.IdentityEntity; import com.ecep.contract.service.EmployeeService;
import com.ecep.contract.manager.ds.other.service.EmployeeService; import com.ecep.contract.service.SysConfService;
import com.ecep.contract.manager.ds.other.service.SysConfService; import com.ecep.contract.util.UITools;
import com.ecep.contract.manager.ds.other.vo.IdentityViewModel; import com.ecep.contract.vm.CurrentEmployee;
import com.ecep.contract.manager.util.FxmlUtils; import com.ecep.contract.vm.IdentityViewModel;
import com.ecep.contract.manager.util.UITools;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
@@ -187,7 +188,7 @@ public class BaseController {
private HashMap<Class<?>, Object> cachedBeans = new HashMap<>(); private HashMap<Class<?>, Object> cachedBeans = new HashMap<>();
protected <T> T getBean(Class<T> requiredType) throws BeansException { public <T> T getBean(Class<T> requiredType) throws BeansException {
return SpringApp.getBean(requiredType); return SpringApp.getBean(requiredType);
} }

View File

@@ -1,14 +1,16 @@
package com.ecep.contract.manager.cloud.rk; package com.ecep.contract.controller;
import org.hibernate.Hibernate; import org.hibernate.Hibernate;
import com.ecep.contract.manager.SpringApp; import com.ecep.contract.SpringApp;
import com.ecep.contract.manager.ui.table.cell.CompanyTableCell; import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.manager.ds.company.controller.CompanyWindowController; import com.ecep.contract.controller.table.cell.CompanyTableCell;
import com.ecep.contract.manager.ds.company.model.Company; import com.ecep.contract.controller.table.cell.LocalDateTimeTableCell;
import com.ecep.contract.manager.ds.company.service.CompanyService; import com.ecep.contract.model.CloudRk;
import com.ecep.contract.manager.ui.AbstEntityManagerSkin; import com.ecep.contract.model.Company;
import com.ecep.contract.manager.ui.table.cell.LocalDateTimeTableCell; import com.ecep.contract.service.CloudRkService;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.vm.CloudRkViewModel;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
@@ -19,7 +21,7 @@ import javafx.scene.control.cell.CheckBoxTableCell;
import lombok.Setter; import lombok.Setter;
public class CloudRkManagerSkin public class CloudRkManagerSkin
extends AbstEntityManagerSkin<CloudRk, CloudRkInfoViewModel, CloudRkManagerSkin, CloudRkManagerWindowController> { extends AbstEntityManagerSkin<CloudRk, CloudRkViewModel, CloudRkManagerSkin, CloudRkManagerWindowController> {
@Setter @Setter
private CompanyService companyService; private CompanyService companyService;
@@ -47,13 +49,14 @@ public class CloudRkManagerSkin
controller.cloudIdColumn.setCellValueFactory(param -> param.getValue().getCloudId()); controller.cloudIdColumn.setCellValueFactory(param -> param.getValue().getCloudId());
controller.latestUpdateColumn.setCellValueFactory(param -> param.getValue().getLatest()); controller.latestUpdateColumn.setCellValueFactory(param -> param.getValue().getLatestUpdate());
controller.latestUpdateColumn.setCellFactory(param -> new LocalDateTimeTableCell<>()); controller.latestUpdateColumn.setCellFactory(param -> new LocalDateTimeTableCell<>());
controller.cloudLatestColumn.setCellValueFactory(param -> param.getValue().getCloudLatest()); controller.cloudLatestColumn.setCellValueFactory(param -> param.getValue().getCloudLatest());
controller.cloudLatestColumn.setCellFactory(param -> new LocalDateTimeTableCell<>()); controller.cloudLatestColumn.setCellFactory(param -> new LocalDateTimeTableCell<>());
controller.cloudBlackListUpdatedColumn.setCellValueFactory(param -> param.getValue().getCloudBlackListUpdated()); controller.cloudBlackListUpdatedColumn
.setCellValueFactory(param -> param.getValue().getCloudBlackListUpdated());
controller.cloudBlackListUpdatedColumn.setCellFactory(param -> new LocalDateTimeTableCell<>()); controller.cloudBlackListUpdatedColumn.setCellFactory(param -> new LocalDateTimeTableCell<>());
controller.cloudEntUpdateColumn.setCellValueFactory(param -> param.getValue().getCloudEntUpdate()); controller.cloudEntUpdateColumn.setCellValueFactory(param -> param.getValue().getCloudEntUpdate());
@@ -65,13 +68,12 @@ public class CloudRkManagerSkin
controller.descriptionColumn.setCellValueFactory(param -> param.getValue().getDescription()); controller.descriptionColumn.setCellValueFactory(param -> param.getValue().getDescription());
} }
private void onAutoUpdateColumnEditCommit(TableColumn.CellEditEvent<CloudRkInfoViewModel, Boolean> event) { private void onAutoUpdateColumnEditCommit(TableColumn.CellEditEvent<CloudRkViewModel, Boolean> event) {
CloudRkInfoViewModel row = event.getRowValue(); CloudRkViewModel row = event.getRowValue();
row.getAutoUpdate().set(event.getNewValue()); row.getAutoUpdate().set(event.getNewValue());
saveRowData(row); saveRowData(row);
} }
@Override @Override
protected void createContextMenu(ContextMenu contextMenu) { protected void createContextMenu(ContextMenu contextMenu) {
MenuItem item2 = new MenuItem("刷新"); MenuItem item2 = new MenuItem("刷新");
@@ -89,19 +91,19 @@ public class CloudRkManagerSkin
* @param event event * @param event event
*/ */
public void onTableClearDescriptionAction(ActionEvent event) { public void onTableClearDescriptionAction(ActionEvent event) {
ObservableList<CloudRkInfoViewModel> selectedItems = getTableView().getSelectionModel().getSelectedItems(); ObservableList<CloudRkViewModel> selectedItems = getTableView().getSelectionModel().getSelectedItems();
if (selectedItems.isEmpty()) { if (selectedItems.isEmpty()) {
return; return;
} }
CloudRkService service = getCloudRkService(); CloudRkService service = getCloudRkService();
for (CloudRkInfoViewModel selectedItem : selectedItems) { for (CloudRkViewModel selectedItem : selectedItems) {
selectedItem.getDescription().set(""); selectedItem.getDescription().set("");
selectedItem.saveInFxApplicationThread(service); selectedItem.saveInFxApplicationThread(service);
} }
} }
@Override @Override
protected void onTableRowDoubleClickedAction(CloudRkInfoViewModel item) { protected void onTableRowDoubleClickedAction(CloudRkViewModel item) {
Company company = item.getCompany().get(); Company company = item.getCompany().get();
if (!Hibernate.isInitialized(item)) { if (!Hibernate.isInitialized(item)) {
company = getCompanyService().findById(company.getId()); company = getCompanyService().findById(company.getId());

View File

@@ -0,0 +1,98 @@
package com.ecep.contract.controller;
import java.time.LocalDateTime;
import java.util.concurrent.ScheduledExecutorService;
import java.util.function.Consumer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.Message;
import com.ecep.contract.SpringApp;
import com.ecep.contract.model.CloudRk;
import com.ecep.contract.model.Company;
import com.ecep.contract.service.CloudRkService;
import com.ecep.contract.task.CloudRkSyncTask;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.CloudRkViewModel;
import javafx.concurrent.Task;
import javafx.event.ActionEvent;
import javafx.scene.control.TableColumn;
import javafx.stage.WindowEvent;
@Lazy
@Scope("prototype")
@Component
@FxmlPath("/ui/cloud/rk_manager.fxml")
public class CloudRkManagerWindowController
extends AbstManagerWindowController<CloudRk, CloudRkViewModel, CloudRkManagerSkin> {
private static final Logger logger = LoggerFactory.getLogger(CloudRkManagerWindowController.class);
public static void show() {
show(CloudRkManagerWindowController.class, null);
}
@Autowired
private CloudRkService cloudRkService;
public TableColumn<CloudRkViewModel, Number> idColumn;
public TableColumn<CloudRkViewModel, LocalDateTime> latestUpdateColumn;
public TableColumn<CloudRkViewModel, Company> companyColumn;
public TableColumn<CloudRkViewModel, String> cloudIdColumn;
public TableColumn<CloudRkViewModel, LocalDateTime> cloudLatestColumn;
public TableColumn<CloudRkViewModel, LocalDateTime> cloudBlackListUpdatedColumn;
public TableColumn<CloudRkViewModel, LocalDateTime> cloudEntUpdateColumn;
public TableColumn<CloudRkViewModel, Boolean> autoUpdateColumn;
public TableColumn<CloudRkViewModel, String> descriptionColumn;
@Override
protected CloudRkManagerSkin createDefaultSkin() {
return new CloudRkManagerSkin(this);
}
@Override
public void onShown(WindowEvent windowEvent) {
super.onShown(windowEvent);
getTitle().set("数据源:集团相关方");
}
private void initializeTask(Task<Object> task, String prefix, Consumer<String> consumer) {
task.setOnScheduled(e -> {
consumer.accept("正在从相关方平台同步" + prefix + ",请稍后...");
});
task.setOnRunning(e -> {
consumer.accept("开始" + prefix + "...");
});
task.setOnSucceeded(e -> {
consumer.accept(prefix + "完成...");
});
task.exceptionProperty().addListener((observable, oldValue, newValue) -> {
consumer.accept(newValue.getMessage());
logger.error("{} 发生异常", prefix, newValue);
});
SpringApp.getBean(ScheduledExecutorService.class).submit(task);
consumer.accept("任务已创建...");
}
public void onDataRepairAction(ActionEvent event) {
}
public void onSyncAction(ActionEvent event) {
CloudRkSyncTask task = new CloudRkSyncTask();
UITools.showTaskDialogAndWait("同步数据", task, consumer -> {
initializeTask(task, "同步数据", msg -> consumer.accept(Message.info(msg)));
});
}
@Override
public CloudRkService getViewModelService() {
return cloudRkService;
}
}

View File

@@ -1,4 +1,4 @@
package com.ecep.contract.manager.cloud.tyc; package com.ecep.contract.controller;
import java.util.List; import java.util.List;
@@ -7,13 +7,15 @@ import org.springframework.data.domain.Page;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import com.ecep.contract.manager.SpringApp; import com.ecep.contract.SpringApp;
import com.ecep.contract.manager.ui.table.cell.CompanyTableCell; import com.ecep.contract.cloud.tyc.CloudTycService;
import com.ecep.contract.manager.ds.company.controller.CompanyWindowController; import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.manager.ds.company.model.Company; import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.manager.ds.company.service.CompanyService; import com.ecep.contract.model.CloudTyc;
import com.ecep.contract.manager.ui.AbstEntityManagerSkin; import com.ecep.contract.model.Company;
import com.ecep.contract.manager.ui.table.cell.LocalDateTimeTableCell; import com.ecep.contract.ui.table.cell.CompanyTableCell;
import com.ecep.contract.ui.table.cell.LocalDateTimeTableCell;
import com.ecep.contract.vm.CloudTycInfoViewModel;
import jakarta.persistence.criteria.Path; import jakarta.persistence.criteria.Path;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;

View File

@@ -1,23 +1,22 @@
package com.ecep.contract.manager.cloud.tyc; package com.ecep.contract.controller;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import com.ecep.contract.util.FxmlPath;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.manager.SpringApp; import com.ecep.contract.cloud.CloudBaseInfo;
import com.ecep.contract.manager.cloud.CloudBaseInfo; import com.ecep.contract.cloud.CloudInfo;
import com.ecep.contract.manager.cloud.CloudInfo; import com.ecep.contract.cloud.tyc.CloudTycService;
import com.ecep.contract.manager.ds.company.model.Company; import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.manager.ds.company.service.CompanyService; import com.ecep.contract.model.CloudTyc;
import com.ecep.contract.manager.ui.AbstManagerWindowController; import com.ecep.contract.model.Company;
import com.ecep.contract.manager.ui.FxmlPath; import com.ecep.contract.vm.CloudTycInfoViewModel;
import javafx.event.ActionEvent;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import javafx.stage.Stage; import javafx.stage.Stage;
@@ -75,28 +74,6 @@ public class CloudTycManagerWindowController
getTitle().set("数据源:天眼查"); getTitle().set("数据源:天眼查");
} }
/**
* 数据迁移 CloudInfo 迁移到 CloudRk
*/
public void onDateTransferAction(ActionEvent event) {
CompletableFuture.runAsync(() -> {
com.ecep.contract.manager.cloud.CloudInfoRepository cloudInfoRepository = SpringApp
.getBean(com.ecep.contract.manager.cloud.CloudInfoRepository.class);
cloudInfoRepository.findAll().forEach(v -> {
try {
CloudTyc cloudTyc = cloudTycService.getOrCreateCloudTyc(v);
if (copyTo(v, cloudTyc)) {
cloudTycService.save(cloudTyc);
}
} catch (Exception e) {
e.printStackTrace();
}
});
});
}
boolean copyTo(CloudInfo v, CloudBaseInfo cloudRk) { boolean copyTo(CloudInfo v, CloudBaseInfo cloudRk) {
boolean modified = false; boolean modified = false;
if (!Objects.equals(cloudRk.getLatestUpdate(), v.getLatestUpdate())) { if (!Objects.equals(cloudRk.getLatestUpdate(), v.getLatestUpdate())) {

View File

@@ -1,17 +1,19 @@
package com.ecep.contract.manager.ui; package com.ecep.contract.controller;
import java.util.List;
import org.springframework.util.StringUtils;
import com.ecep.contract.model.BaseEnumEntity;
import com.ecep.contract.model.BasedEntity;
import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.model.NamedEntity;
import com.ecep.contract.manager.ds.other.model.BaseEnumEntity;
import com.ecep.contract.manager.ds.other.model.Entity;
import com.ecep.contract.manager.ds.other.model.IdentityEntity;
import com.ecep.contract.manager.ds.other.model.NamedEntity;
import javafx.beans.property.Property; import javafx.beans.property.Property;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.scene.control.ComboBox; import javafx.scene.control.ComboBox;
import javafx.scene.control.ListCell; import javafx.scene.control.ListCell;
import org.springframework.util.StringUtils;
import java.util.List;
public class ComboBoxUtils { public class ComboBoxUtils {
@@ -19,7 +21,7 @@ public class ComboBoxUtils {
if (t == null) { if (t == null) {
return "全部"; return "全部";
} }
if (t instanceof Entity e) { if (t instanceof BasedEntity e) {
return e.toPrettyString(); return e.toPrettyString();
} }
if (t instanceof BaseEnumEntity<?> e) { if (t instanceof BaseEnumEntity<?> e) {
@@ -44,7 +46,7 @@ public class ComboBoxUtils {
if (t == null) { if (t == null) {
continue; continue;
} }
if (t instanceof Entity e) { if (t instanceof BasedEntity e) {
if (e.toPrettyString().equals(string)) { if (e.toPrettyString().equals(string)) {
return t; return t;
} }

View File

@@ -1,7 +1,10 @@
package com.ecep.contract.manager; package com.ecep.contract.controller;
import org.springframework.context.ApplicationEvent;
import com.ecep.contract.vm.CurrentEmployee;
import lombok.Getter; import lombok.Getter;
import org.springframework.context.ApplicationEvent;
@Getter @Getter
public class CurrentEmployeeInitialedEvent extends ApplicationEvent { public class CurrentEmployeeInitialedEvent extends ApplicationEvent {

View File

@@ -1,10 +1,12 @@
package com.ecep.contract.manager.ds.other.controller; package com.ecep.contract.controller;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.FxmlUtils;
import org.controlsfx.control.TaskProgressView; import org.controlsfx.control.TaskProgressView;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -14,32 +16,28 @@ import org.springframework.context.annotation.Scope;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.manager.CurrentEmployee; import com.ecep.contract.CurrentEmployeeInitialedEvent;
import com.ecep.contract.manager.CurrentEmployeeInitialedEvent; import com.ecep.contract.Desktop;
import com.ecep.contract.manager.Desktop; import com.ecep.contract.DesktopUtils;
import com.ecep.contract.manager.cloud.old.OldVersionService; import com.ecep.contract.cloud.old.OldVersionService;
import com.ecep.contract.manager.cloud.rk.CloudRkManagerWindowController; import com.ecep.contract.cloud.rk.CloudRkManagerWindowController;
import com.ecep.contract.manager.cloud.rk.CloudRkService; import com.ecep.contract.cloud.rk.CloudRkService;
import com.ecep.contract.manager.cloud.tyc.CloudTycManagerWindowController; import com.ecep.contract.cloud.tyc.CloudTycManagerWindowController;
import com.ecep.contract.manager.cloud.u8.ContractSyncTask; import com.ecep.contract.cloud.u8.ContractSyncTask;
import com.ecep.contract.manager.cloud.u8.YongYouU8ManagerWindowController; import com.ecep.contract.cloud.u8.YongYouU8ManagerWindowController;
import com.ecep.contract.manager.cloud.u8.YongYouU8Service; import com.ecep.contract.cloud.u8.YongYouU8Service;
import com.ecep.contract.manager.ds.company.controller.CompanyManagerWindowController; import com.ecep.contract.ds.company.controller.CompanyManagerWindowController;
import com.ecep.contract.manager.ds.contract.controller.ContractManagerWindowController; import com.ecep.contract.ds.contract.controller.ContractManagerWindowController;
import com.ecep.contract.manager.ds.customer.controller.CompanyCustomerManagerWindowController; import com.ecep.contract.ds.customer.controller.CompanyCustomerManagerWindowController;
import com.ecep.contract.manager.ds.other.controller.bank.BankManagerWindowController; import com.ecep.contract.ds.other.controller.bank.BankManagerWindowController;
import com.ecep.contract.manager.ds.other.controller.department.DepartmentManagerWindowController; import com.ecep.contract.ds.other.controller.department.DepartmentManagerWindowController;
import com.ecep.contract.manager.ds.other.controller.employee.EmployeeManagerWindowController; import com.ecep.contract.ds.other.controller.employee.EmployeeManagerWindowController;
import com.ecep.contract.manager.ds.other.controller.inventory.InventoryManagerWindowController; import com.ecep.contract.ds.other.controller.inventory.InventoryManagerWindowController;
import com.ecep.contract.manager.ds.other.controller.permission.EmployeeFunctionsManagerWindowController; import com.ecep.contract.ds.other.controller.permission.EmployeeFunctionsManagerWindowController;
import com.ecep.contract.manager.ds.other.controller.permission.EmployeeRoleManagerWindowController; import com.ecep.contract.ds.other.controller.permission.EmployeeRoleManagerWindowController;
import com.ecep.contract.manager.ds.project.controller.ProjectManagerWindowController; import com.ecep.contract.ds.project.controller.ProjectManagerWindowController;
import com.ecep.contract.manager.ds.vendor.controller.CompanyVendorManagerWindowController; import com.ecep.contract.ds.vendor.controller.CompanyVendorManagerWindowController;
import com.ecep.contract.manager.ui.BaseController; import com.ecep.contract.vm.CurrentEmployee;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.task.TaskMonitorViewController;
import com.ecep.contract.manager.util.DesktopUtils;
import com.ecep.contract.manager.util.FxmlUtils;
import javafx.concurrent.Task; import javafx.concurrent.Task;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;

View File

@@ -1,39 +1,61 @@
package com.ecep.contract.manager.ds.other.controller; package com.ecep.contract.controller;
import com.ecep.contract.manager.Desktop; import static com.ecep.contract.AppV2.DEFAULT_DB_DATABASE;
import com.ecep.contract.manager.SpringApp; import static com.ecep.contract.AppV2.DEFAULT_DB_HOST;
import com.ecep.contract.manager.ui.MessageHolder; import static com.ecep.contract.AppV2.DEFAULT_DB_PASSWORD;
import com.zaxxer.hikari.HikariDataSource; import static com.ecep.contract.AppV2.DEFAULT_DB_PORT;
import javafx.application.Platform; import static com.ecep.contract.AppV2.DEFAULT_DB_USERNAME;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import lombok.Setter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.util.StringUtils;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.net.Inet4Address; import java.net.Inet4Address;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.NetworkInterface; import java.net.NetworkInterface;
import java.net.SocketException; import java.net.SocketException;
import java.sql.*; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Objects;
import java.util.Properties;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.logging.Level; import java.util.logging.Level;
import static com.ecep.contract.manager.AppV2.*; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.jdbc.DataSourceBuilder;
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;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import lombok.Setter;
public class LoginWidowController implements MessageHolder { public class LoginWidowController implements MessageHolder {
private static final Logger logger = LoggerFactory.getLogger(LoginWidowController.class); private static final Logger logger = LoggerFactory.getLogger(LoginWidowController.class);

View File

@@ -1,4 +1,6 @@
package com.ecep.contract.manager.ui; package com.ecep.contract.controller;
import com.ecep.contract.controller.tab.Skin;
public interface ManagerSkin extends Skin { public interface ManagerSkin extends Skin {

View File

@@ -1,4 +1,4 @@
package com.ecep.contract.manager.ds.other.controller; package com.ecep.contract.controller;
import java.io.File; import java.io.File;
@@ -8,13 +8,12 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.manager.cloud.u8.YongYouU8Service; import com.ecep.contract.cloud.u8.YongYouU8Service;
import com.ecep.contract.manager.ds.contract.service.ContractService; import com.ecep.contract.constant.CompanyVendorConstant;
import com.ecep.contract.manager.ds.customer.service.CompanyCustomerFileService; import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.manager.ds.customer.service.CompanyCustomerService; import com.ecep.contract.ds.customer.service.CompanyCustomerFileService;
import com.ecep.contract.manager.ds.other.StringConfig; import com.ecep.contract.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.manager.ds.vendor.service.CompanyVendorService; import com.ecep.contract.util.StringConfig;
import com.ecep.contract.manager.ui.BaseController;
import jakarta.annotation.PreDestroy; import jakarta.annotation.PreDestroy;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
@@ -46,9 +45,9 @@ public class SysConfWindowController extends BaseController {
public Label customerSaleBookPathLabel; public Label customerSaleBookPathLabel;
StringConfig contractPathConfig = new StringConfig(ContractService.CONTRACT_BASE_PATH); StringConfig contractPathConfig = new StringConfig(ContractService.CONTRACT_BASE_PATH);
StringConfig vendorPathConfig = new StringConfig(CompanyVendorService.KEY_BASE_PATH); StringConfig vendorPathConfig = new StringConfig(CompanyVendorConstant.KEY_BASE_PATH);
StringConfig vendorEvaluationFormTemplateConfig = new StringConfig( StringConfig vendorEvaluationFormTemplateConfig = new StringConfig(
CompanyVendorService.KEY_EVALUATION_FORM_TEMPLATE); CompanyVendorConstant.KEY_EVALUATION_FORM_TEMPLATE);
StringConfig customerPathConfig = new StringConfig(CompanyCustomerService.KEY_BASE_PATH); StringConfig customerPathConfig = new StringConfig(CompanyCustomerService.KEY_BASE_PATH);
StringConfig customerEvaluationFormTemplateConfig = new StringConfig( StringConfig customerEvaluationFormTemplateConfig = new StringConfig(
CompanyCustomerFileService.KEY_EVALUATION_FORM_TEMPLATE); CompanyCustomerFileService.KEY_EVALUATION_FORM_TEMPLATE);
@@ -106,7 +105,7 @@ public class SysConfWindowController extends BaseController {
} }
public void changeVendorPath(ActionEvent actionEvent) { public void changeVendorPath(ActionEvent actionEvent) {
directoryChoose(vendorPathConfig, "请选择供应商目录", CompanyVendorService.KEY_BASE_PATH, actionEvent); directoryChoose(vendorPathConfig, "请选择供应商目录", CompanyVendorConstant.KEY_BASE_PATH, actionEvent);
} }
public void changeCustomerPath(ActionEvent actionEvent) { public void changeCustomerPath(ActionEvent actionEvent) {
@@ -145,7 +144,7 @@ public class SysConfWindowController extends BaseController {
public void changeVendorEvaluationFormTemplate(ActionEvent actionEvent) { public void changeVendorEvaluationFormTemplate(ActionEvent actionEvent) {
fileChoose(vendorEvaluationFormTemplateConfig, "请选择供方调查评价表模板", fileChoose(vendorEvaluationFormTemplateConfig, "请选择供方调查评价表模板",
CompanyVendorService.KEY_EVALUATION_FORM_TEMPLATE, CompanyVendorConstant.KEY_EVALUATION_FORM_TEMPLATE,
actionEvent); actionEvent);
} }
} }

View File

@@ -1,4 +1,4 @@
package com.ecep.contract.manager.ui.task; package com.ecep.contract.controller;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
@@ -6,15 +6,17 @@ import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.logging.Level; import java.util.logging.Level;
import com.ecep.contract.util.FxmlPath;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.manager.Desktop; import com.ecep.contract.Desktop;
import com.ecep.contract.manager.ui.BaseController; import com.ecep.contract.Message;
import com.ecep.contract.manager.ui.FxmlPath; import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.manager.ui.Message; import com.ecep.contract.task.MonitoredTask;
import com.ecep.contract.manager.util.MyDateTimeUtils; import com.ecep.contract.task.TaskHistory;
import com.ecep.contract.task.TaskMonitorCenter;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
@@ -35,7 +37,6 @@ import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority; import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import javafx.beans.property.SimpleStringProperty;
import javafx.scene.text.Text; import javafx.scene.text.Text;
import javafx.stage.WindowEvent; import javafx.stage.WindowEvent;
@@ -216,14 +217,14 @@ public class TaskMonitorViewController extends BaseController {
try { try {
ExecutorService executorService = Desktop.instance.getExecutorService(); ExecutorService executorService = Desktop.instance.getExecutorService();
if (executorService instanceof ThreadPoolExecutor threadPoolExecutor) { if (executorService instanceof ThreadPoolExecutor threadPoolExecutor) {
executorInfoTable.getItems().add(new ExecutorInfo( executorInfoTable.getItems().add(new ExecutorInfo(
"PoolSize", "PoolSize",
String.valueOf(threadPoolExecutor.getPoolSize()), String.valueOf(threadPoolExecutor.getPoolSize()),
"PoolSize")); "PoolSize"));
executorInfoTable.getItems().add(new ExecutorInfo( executorInfoTable.getItems().add(new ExecutorInfo(
"活动线程数", "活动线程数",
String.valueOf(threadPoolExecutor.getActiveCount()), String.valueOf(threadPoolExecutor.getActiveCount()),
"当前正在执行任务的线程数")); "当前正在执行任务的线程数"));
// 添加线程池信息 // 添加线程池信息
executorInfoTable.getItems().add(new ExecutorInfo( executorInfoTable.getItems().add(new ExecutorInfo(
"核心线程数", "核心线程数",
@@ -354,6 +355,6 @@ public class TaskMonitorViewController extends BaseController {
* 运行任务监控演示 * 运行任务监控演示
*/ */
public void onRunTaskMonitorDemo(ActionEvent event) { public void onRunTaskMonitorDemo(ActionEvent event) {
com.ecep.contract.manager.ui.task.DemoTask.runDemo(); com.ecep.contract.task.DemoTask.runDemo();
} }
} }

View File

@@ -1,18 +1,17 @@
package com.ecep.contract.manager.cloud.u8; package com.ecep.contract.controller;
import com.ecep.contract.util.FxmlPath;
import org.controlsfx.control.ToggleSwitch; import org.controlsfx.control.ToggleSwitch;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.manager.cloud.u8.ctx.CompanyCtx; import com.ecep.contract.cloud.u8.ctx.CompanyCtx;
import com.ecep.contract.manager.cloud.u8.ctx.ContractCtx; import com.ecep.contract.cloud.u8.ctx.ContractCtx;
import com.ecep.contract.manager.ds.other.BooleanConfig; import com.ecep.contract.ds.other.BooleanConfig;
import com.ecep.contract.manager.ds.other.LocalDateConfig; import com.ecep.contract.ds.other.LocalDateConfig;
import com.ecep.contract.manager.ds.other.LocalDateTimeConfig; import com.ecep.contract.ds.other.LocalDateTimeConfig;
import com.ecep.contract.manager.ds.other.StringConfig; import com.ecep.contract.ds.other.StringConfig;
import com.ecep.contract.manager.ui.BaseController;
import com.ecep.contract.manager.ui.FxmlPath;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.DatePicker; import javafx.scene.control.DatePicker;

View File

@@ -1,28 +1,32 @@
package com.ecep.contract.manager.cloud.u8; package com.ecep.contract.controller;
import java.util.List;
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.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.vm.CloudYuInfoViewModel;
import com.ecep.contract.manager.SpringApp;
import com.ecep.contract.manager.ui.table.cell.CompanyTableCell;
import com.ecep.contract.manager.ds.company.controller.CompanyWindowController;
import com.ecep.contract.manager.ds.company.model.Company;
import com.ecep.contract.manager.ds.company.service.CompanyService;
import com.ecep.contract.manager.ui.AbstEntityManagerSkin;
import com.ecep.contract.manager.ui.ManagerSkin;
import com.ecep.contract.manager.ui.table.cell.LocalDateTimeTableCell;
import jakarta.persistence.criteria.Path; import jakarta.persistence.criteria.Path;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.scene.control.ContextMenu; import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem; import javafx.scene.control.MenuItem;
import lombok.Setter; import lombok.Setter;
import org.hibernate.Hibernate;
import org.springframework.data.domain.Page;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.util.StringUtils;
import java.util.List;
public class YongYouU8ManagerSkin public class YongYouU8ManagerSkin
extends AbstEntityManagerSkin<CloudYu, CloudYuInfoViewModel, YongYouU8ManagerSkin, YongYouU8ManagerWindowController> extends
AbstEntityManagerSkin<CloudYu, CloudYuInfoViewModel, YongYouU8ManagerSkin, YongYouU8ManagerWindowController>
implements ManagerSkin { implements ManagerSkin {
@Setter @Setter
private YongYouU8Service u8Service; private YongYouU8Service u8Service;
@@ -57,8 +61,7 @@ public class YongYouU8ManagerSkin
Path<Object> company = root.get("company"); Path<Object> company = root.get("company");
return builder.or( return builder.or(
builder.like(company.get("name"), "%" + searchText + "%"), builder.like(company.get("name"), "%" + searchText + "%"),
builder.like(company.get("shortName"), "%" + searchText + "%") builder.like(company.get("shortName"), "%" + searchText + "%"));
);
}; };
Specification<CloudYu> cloudIdSpec = (root, query, builder) -> { Specification<CloudYu> cloudIdSpec = (root, query, builder) -> {
@@ -116,7 +119,7 @@ public class YongYouU8ManagerSkin
} }
for (CloudYuInfoViewModel selectedItem : selectedItems) { for (CloudYuInfoViewModel selectedItem : selectedItems) {
CloudYu cloudYu = getU8Service().findById(selectedItem.getId().get()); CloudYu cloudYu = getU8Service().findById(selectedItem.getId().get());
selectedItem.getCustomerCode().set(""); selectedItem.getCustomerCode().set("");
if (selectedItem.copyTo(cloudYu)) { if (selectedItem.copyTo(cloudYu)) {
CloudYu saved = getU8Service().save(cloudYu); CloudYu saved = getU8Service().save(cloudYu);
selectedItem.update(saved); selectedItem.update(saved);

View File

@@ -1,19 +1,19 @@
package com.ecep.contract.manager.cloud.u8; package com.ecep.contract.controller;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.ecep.contract.util.FxmlPath;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.manager.Desktop; import com.ecep.contract.Desktop;
import com.ecep.contract.manager.ds.company.model.Company; import com.ecep.contract.UITools;
import com.ecep.contract.manager.ui.AbstManagerWindowController; import com.ecep.contract.model.CloudYu;
import com.ecep.contract.manager.ui.BaseController; import com.ecep.contract.model.Company;
import com.ecep.contract.manager.ui.FxmlPath; import com.ecep.contract.vm.CloudYuInfoViewModel;
import com.ecep.contract.manager.util.UITools;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;

View File

@@ -1,10 +1,11 @@
package com.ecep.contract.manager.ds.other.controller.bank; package com.ecep.contract.controller.bank;
import com.ecep.contract.controller.AbstEntityManagerSkin;
import com.ecep.contract.controller.ManagerSkin;
import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.model.Bank;
import com.ecep.contract.vm.BankViewModel;
import com.ecep.contract.manager.ds.other.model.Bank;
import com.ecep.contract.manager.ds.other.vo.BankViewModel;
import com.ecep.contract.manager.ui.AbstEntityManagerSkin;
import com.ecep.contract.manager.ui.table.EditableEntityTableTabSkin;
import com.ecep.contract.manager.ui.ManagerSkin;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import javafx.scene.control.cell.TextFieldTableCell; import javafx.scene.control.cell.TextFieldTableCell;

View File

@@ -1,17 +1,19 @@
package com.ecep.contract.manager.ds.other.controller.bank; package com.ecep.contract.controller.bank;
import com.ecep.contract.manager.ds.other.model.Bank;
import com.ecep.contract.manager.ds.other.service.BankService;
import com.ecep.contract.manager.ds.other.vo.BankViewModel;
import com.ecep.contract.manager.ui.AbstManagerWindowController;
import com.ecep.contract.manager.ui.FxmlPath;
import javafx.event.ActionEvent;
import javafx.scene.control.TableColumn;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.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.vm.BankViewModel;
import javafx.event.ActionEvent;
import javafx.scene.control.TableColumn;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@Component @Component

View File

@@ -1,22 +1,25 @@
package com.ecep.contract.manager.ds.company.controller.bank_account; package com.ecep.contract.controller.bank.account;
import com.ecep.contract.SpringApp;
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.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;
import com.ecep.contract.manager.SpringApp;
import com.ecep.contract.manager.ds.company.CompanyStringConverter;
import com.ecep.contract.manager.ds.company.controller.CompanyWindowController;
import com.ecep.contract.manager.ds.company.model.Company;
import com.ecep.contract.manager.ds.company.model.CompanyBankAccount;
import com.ecep.contract.manager.ds.company.service.CompanyService;
import com.ecep.contract.manager.ds.company.vo.CompanyBankAccountViewModel;
import com.ecep.contract.manager.ds.other.BankStringConverter;
import com.ecep.contract.manager.ds.other.service.BankService;
import com.ecep.contract.manager.ui.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.manager.ui.tab.TabSkin;
import com.ecep.contract.manager.util.UITools;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import lombok.Setter; import lombok.Setter;
public class BankAccountBaseTabSkin extends AbstEntityBasedTabSkin<BankAccountWindowController, CompanyBankAccount, CompanyBankAccountViewModel> implements TabSkin { public class BankAccountBaseTabSkin
extends AbstEntityBasedTabSkin<BankAccountWindowController, CompanyBankAccount, CompanyBankAccountViewModel>
implements TabSkin {
@Setter @Setter
private CompanyService companyService; private CompanyService companyService;
@Setter @Setter
@@ -40,8 +43,7 @@ public class BankAccountBaseTabSkin extends AbstEntityBasedTabSkin<BankAccountWi
controller.openingBankField.textProperty().bindBidirectional(viewModel.getOpeningBank()); controller.openingBankField.textProperty().bindBidirectional(viewModel.getOpeningBank());
controller.bankAccountField.textProperty().bindBidirectional(viewModel.getAccount()); controller.bankAccountField.textProperty().bindBidirectional(viewModel.getAccount());
// controller.descriptionField.textProperty().bindBidirectional(viewModel.getDescription());
// controller.descriptionField.textProperty().bindBidirectional(viewModel.getDescription());
controller.createdField.textProperty().bind(viewModel.getCreated().asString()); controller.createdField.textProperty().bind(viewModel.getCreated().asString());
controller.versionLabel.textProperty().bind(viewModel.getVersion().asString()); controller.versionLabel.textProperty().bind(viewModel.getVersion().asString());
@@ -59,13 +61,11 @@ public class BankAccountBaseTabSkin extends AbstEntityBasedTabSkin<BankAccountWi
UITools.autoCompletion(textField, viewModel.getCompany(), converter::suggest, converter); UITools.autoCompletion(textField, viewModel.getCompany(), converter::suggest, converter);
} }
private void initializeBaseTabBankFieldAutoCompletion(TextField textField) { private void initializeBaseTabBankFieldAutoCompletion(TextField textField) {
BankStringConverter converter = SpringApp.getBean(BankStringConverter.class); BankStringConverter converter = SpringApp.getBean(BankStringConverter.class);
UITools.autoCompletion(textField, viewModel.getBank(), converter::suggest, converter); UITools.autoCompletion(textField, viewModel.getBank(), converter::suggest, converter);
} }
public BankService getBankService() { public BankService getBankService() {
if (bankService == null) { if (bankService == null) {
bankService = getBean(BankService.class); bankService = getBean(BankService.class);

View File

@@ -1,19 +1,26 @@
package com.ecep.contract.manager.ds.company.controller.bank_account; package com.ecep.contract.controller.bank.account;
import com.ecep.contract.manager.ds.company.model.CompanyBankAccount;
import com.ecep.contract.manager.ds.company.service.CompanyBankAccountService;
import com.ecep.contract.manager.ds.company.vo.CompanyBankAccountViewModel;
import com.ecep.contract.manager.ui.AbstEntityController;
import com.ecep.contract.manager.ui.FxmlPath;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import javafx.stage.Window;
import javafx.stage.WindowEvent;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.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.vm.CompanyBankAccountViewModel;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.stage.Window;
import javafx.stage.WindowEvent;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@Component @Component

View File

@@ -0,0 +1,28 @@
package com.ecep.contract.controller.company;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.model.Company;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.vm.CompanyViewModel;
import javafx.concurrent.Task;
public abstract class AbstCompanyBasedTabSkin
extends AbstEntityBasedTabSkin<CompanyWindowController, Company, CompanyViewModel>
implements TabSkin {
public AbstCompanyBasedTabSkin(CompanyWindowController controller) {
super(controller);
}
protected CompanyService getCompanyService() {
Task<CompanyService> task = new Task<>() {
@Override
protected CompanyService call() throws Exception {
return controller.getViewModelService();
}
};
return controller.getViewModelService();
}
}

View File

@@ -0,0 +1,56 @@
package com.ecep.contract.controller.company;
import java.util.Map;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.AbstEntityTableTabSkin;
import com.ecep.contract.controller.table.TableOfTabSkin;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.vm.CompanyBasedViewModel;
import com.ecep.contract.vm.CompanyViewModel;
import com.ecep.contract.vm.IdentityViewModel;
import lombok.Setter;
public abstract class AbstCompanyTableTabSkin<T extends IdentityEntity, TV extends IdentityViewModel<T>>
extends AbstEntityTableTabSkin<CompanyWindowController, Company, CompanyViewModel, T, TV>
implements TabSkin, TableOfTabSkin<Company, T, TV> {
@Setter
private CompanyService companyService;
public AbstCompanyTableTabSkin(CompanyWindowController controller) {
super(controller);
viewModel = controller.getViewModel();
}
@Override
protected TV createNewViewModel() {
TV model = super.createNewViewModel();
if (model instanceof CompanyBasedViewModel m) {
m.getCompany().set(getEntity());
}
return model;
}
protected CompanyService getCompanyService() {
return getParentService();
}
protected CompanyService getParentService() {
if (companyService == null) {
companyService = getBean(CompanyService.class);
}
return companyService;
}
@Override
public Map<String, Object> getSpecification(Company parent) {
Map<String, Object> params = getSpecification();
params.put("company", parent.getId());
return params;
}
}

View File

@@ -1,13 +1,32 @@
package com.ecep.contract.manager.ds.company.controller.contact; package com.ecep.contract.controller.company;
import java.lang.reflect.InvocationTargetException;
import java.time.format.DateTimeFormatter;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.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.vm.CompanyContactViewModel;
import com.ecep.contract.manager.ds.company.model.CompanyContact;
import com.ecep.contract.manager.ds.company.repository.CompanyContactRepository;
import com.ecep.contract.manager.ui.BaseController;
import com.ecep.contract.manager.ds.company.vo.CompanyContactViewModel;
import com.ecep.contract.manager.util.FxmlUtils;
import com.ecep.contract.manager.util.UITools;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.scene.control.*; import javafx.scene.control.Button;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane; import javafx.scene.layout.BorderPane;
import javafx.stage.Modality; import javafx.stage.Modality;
import javafx.stage.Stage; import javafx.stage.Stage;
@@ -16,17 +35,6 @@ import javafx.stage.WindowEvent;
import javafx.util.converter.LocalDateStringConverter; import javafx.util.converter.LocalDateStringConverter;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 java.lang.reflect.InvocationTargetException;
import java.time.format.DateTimeFormatter;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@Component @Component

View File

@@ -1,20 +1,21 @@
package com.ecep.contract.manager.ds.company.controller; 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.model.Company;
import com.ecep.contract.ui.AbstEntityManagerSkin;
import com.ecep.contract.vm.CompanyViewModel;
import com.ecep.contract.manager.ds.company.model.Company;
import com.ecep.contract.manager.ds.company.service.CompanyOldNameService;
import com.ecep.contract.manager.ds.company.service.CompanyService;
import com.ecep.contract.manager.ds.company.vo.CompanyViewModel;
import com.ecep.contract.manager.ui.AbstEntityManagerSkin;
import com.ecep.contract.manager.ui.ManagerSkin;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.scene.control.Alert; import javafx.scene.control.Alert;
import javafx.scene.control.TextInputDialog; import javafx.scene.control.TextInputDialog;
import lombok.Setter; import lombok.Setter;
import java.util.List;
import java.util.Optional;
public class CompanyManagerSkin public class CompanyManagerSkin
extends AbstEntityManagerSkin<Company, CompanyViewModel, CompanyManagerSkin, CompanyManagerWindowController> { extends AbstEntityManagerSkin<Company, CompanyViewModel, CompanyManagerSkin, CompanyManagerWindowController> {

View File

@@ -1,4 +1,4 @@
package com.ecep.contract.manager.ds.company.controller; package com.ecep.contract.controller.company;
import java.time.LocalDate; import java.time.LocalDate;
@@ -7,13 +7,15 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.manager.ds.company.model.Company; import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.manager.ds.company.service.CompanyService; import com.ecep.contract.ds.company.controller.CompanyManagerSkin;
import com.ecep.contract.manager.ds.company.tasker.CompanyFilesRebuildTasker; import com.ecep.contract.ds.company.controller.CompanyVerifyWindowController;
import com.ecep.contract.manager.ds.company.vo.CompanyViewModel; import com.ecep.contract.ds.company.tasker.CompanyFilesRebuildTasker;
import com.ecep.contract.manager.ui.AbstManagerWindowController; import com.ecep.contract.model.Company;
import com.ecep.contract.manager.ui.FxmlPath; import com.ecep.contract.service.CompanyService;
import com.ecep.contract.manager.util.UITools; import com.ecep.contract.ui.AbstManagerWindowController;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.CompanyViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.fxml.FXML; import javafx.fxml.FXML;

View File

@@ -1,11 +1,12 @@
package com.ecep.contract.manager.ds.company.controller; package com.ecep.contract.controller.company;
import com.ecep.contract.manager.ui.BaseController;
import com.ecep.contract.manager.ui.FxmlPath;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.BaseController;
import com.ecep.contract.util.FxmlPath;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@Component @Component

View File

@@ -1,31 +1,8 @@
package com.ecep.contract.manager.ds.company.controller; package com.ecep.contract.controller.company;
import java.util.concurrent.CompletableFuture;
import java.util.function.Function;
import com.ecep.contract.manager.SpringApp;
import com.ecep.contract.manager.ds.company.model.Company;
import com.ecep.contract.manager.ds.company.service.CompanyFileService;
import com.ecep.contract.manager.ds.company.service.CompanyService;
import com.ecep.contract.manager.ds.company.tasker.CompanyCompositeUpdateTasker;
import com.ecep.contract.manager.ds.company.tasker.CompanyVerifyTasker;
import com.ecep.contract.manager.ds.company.vo.CompanyViewModel;
import com.ecep.contract.manager.ds.contract.service.ContractService;
import com.ecep.contract.manager.ds.customer.controller.CompanyCustomerWindowController;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomer;
import com.ecep.contract.manager.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.manager.ds.vendor.controller.CompanyVendorWindowController;
import com.ecep.contract.manager.ds.vendor.model.CompanyVendor;
import com.ecep.contract.manager.ds.vendor.service.CompanyVendorService;
import com.ecep.contract.manager.ui.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.manager.ui.AbstEntityController;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.util.DesktopUtils;
import com.ecep.contract.manager.util.UITools;
import javafx.beans.property.SimpleObjectProperty;
import javafx.event.ActionEvent;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import javafx.stage.Window;
import org.hibernate.Hibernate; import org.hibernate.Hibernate;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -35,8 +12,49 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.concurrent.CompletableFuture; import com.ecep.contract.DesktopUtils;
import java.util.function.Function; 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;
import com.ecep.contract.controller.tab.CompanyTabSkinBase;
import com.ecep.contract.controller.tab.CompanyTabSkinBlackReason;
import com.ecep.contract.controller.tab.CompanyTabSkinContact;
import com.ecep.contract.controller.tab.CompanyTabSkinContract;
import com.ecep.contract.controller.tab.CompanyTabSkinFile;
import com.ecep.contract.controller.tab.CompanyTabSkinInvoice;
import com.ecep.contract.controller.tab.CompanyTabSkinOldName;
import com.ecep.contract.controller.tab.CompanyTabSkinOther;
import com.ecep.contract.controller.tab.CompanyTabSkinPurchaseBillVoucher;
import com.ecep.contract.controller.vendor.CompanyVendorWindowController;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.model.CompanyVendor;
import com.ecep.contract.service.CompanyCustomerService;
import com.ecep.contract.service.CompanyFileService;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.service.CompanyVendorService;
import com.ecep.contract.service.ContractService;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.CompanyViewModel;
import javafx.beans.property.SimpleObjectProperty;
import javafx.event.ActionEvent;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.CheckBox;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import javafx.stage.Window;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@@ -46,7 +64,6 @@ public class CompanyWindowController
extends AbstEntityController<Company, CompanyViewModel> { extends AbstEntityController<Company, CompanyViewModel> {
private static final Logger logger = LoggerFactory.getLogger(CompanyWindowController.class); private static final Logger logger = LoggerFactory.getLogger(CompanyWindowController.class);
public static void show(Company company, Window window) { public static void show(Company company, Window window) {
CompanyViewModel viewModel = new CompanyViewModel(); CompanyViewModel viewModel = new CompanyViewModel();
if (!Hibernate.isInitialized(company)) { if (!Hibernate.isInitialized(company)) {
@@ -89,7 +106,7 @@ public class CompanyWindowController
public Tab purchaseBillVoucherTab; public Tab purchaseBillVoucherTab;
public Tab otherTab; public Tab otherTab;
/* /*
*/ */
public TextField nameField; public TextField nameField;
public TextField shortNameField; public TextField shortNameField;
@@ -117,9 +134,10 @@ public class CompanyWindowController
public Button companyPathChangeBtn; public Button companyPathChangeBtn;
public Button companyPathSameAsNameBtn; public Button companyPathSameAsNameBtn;
// private final CompanyCustomerViewModel companyCustomerViewModel = new
// private final CompanyCustomerViewModel companyCustomerViewModel = new CompanyCustomerViewModel(); // CompanyCustomerViewModel();
// private final CompanyVendorViewModel companyVendorViewModel = new CompanyVendorViewModel(); // private final CompanyVendorViewModel companyVendorViewModel = new
// CompanyVendorViewModel();
private final SimpleObjectProperty<CompanyCustomer> companyCustomerProperty = new SimpleObjectProperty<>(); private final SimpleObjectProperty<CompanyCustomer> companyCustomerProperty = new SimpleObjectProperty<>();
private final SimpleObjectProperty<CompanyVendor> companyVendorProperty = new SimpleObjectProperty<>(); private final SimpleObjectProperty<CompanyVendor> companyVendorProperty = new SimpleObjectProperty<>();
@@ -134,7 +152,6 @@ public class CompanyWindowController
public Pane vendorTab_pane2; public Pane vendorTab_pane2;
public Button vendorTab_createBtn; public Button vendorTab_createBtn;
@Override @Override
public void show(Stage stage) { public void show(Stage stage) {
super.show(stage); super.show(stage);
@@ -143,7 +160,6 @@ public class CompanyWindowController
getTitle().set("[" + viewModel.getId().get() + "] " + viewModel.getName().getValue() + " 公司详情"); getTitle().set("[" + viewModel.getId().get() + "] " + viewModel.getName().getValue() + " 公司详情");
} }
@Override @Override
protected Company loadEntity() { protected Company loadEntity() {
return companyService.findById(viewModel.getId().get()); return companyService.findById(viewModel.getId().get());
@@ -161,18 +177,16 @@ public class CompanyWindowController
registerTabSkin(contactTab, tab1 -> new CompanyTabSkinContact(this)); registerTabSkin(contactTab, tab1 -> new CompanyTabSkinContact(this));
registerTabSkin(blackReasonTab, tab1 -> new CompanyTabSkinBlackReason(this)); registerTabSkin(blackReasonTab, tab1 -> new CompanyTabSkinBlackReason(this));
registerTabSkin(bankAccountTab, tab1 -> new CompanyTabSkinBankAccount(this)); registerTabSkin(bankAccountTab, tab1 -> new CompanyTabSkinBankAccount(this));
registerTabSkin(contractTab, this::createContractTabSkin); registerTabSkin(contractTab, tab -> new CompanyTabSkinContract(this));
registerTabSkin(fileTab, this::createFileTabSkin); registerTabSkin(fileTab, tab -> new CompanyTabSkinFile(this));
registerTabSkin(invoiceTab, tab -> new CompanyTabSkinInvoice(this)); registerTabSkin(invoiceTab, tab -> new CompanyTabSkinInvoice(this));
registerTabSkin(purchaseBillVoucherTab, tab -> new CompanyTabSkinPurchaseBillVoucher(this)); registerTabSkin(purchaseBillVoucherTab, tab -> new CompanyTabSkinPurchaseBillVoucher(this));
registerTabSkin(otherTab, tab -> new CompanyTabSkinOther(this)); registerTabSkin(otherTab, tab -> new CompanyTabSkinOther(this));
initializeVendorTab(); initializeVendorTab();
initializeCustomerTab(); initializeCustomerTab();
} }
@Override @Override
protected <K extends AbstEntityBasedTabSkin<?, ?, ?>> K registerTabSkin(Tab tab, Function<Tab, K> func) { protected <K extends AbstEntityBasedTabSkin<?, ?, ?>> K registerTabSkin(Tab tab, Function<Tab, K> func) {
K skin = super.registerTabSkin(tab, func); K skin = super.registerTabSkin(tab, func);
@@ -187,19 +201,6 @@ public class CompanyWindowController
return companyService; return companyService;
} }
private CompanyTabSkinContract createContractTabSkin(Tab tab) {
CompanyTabSkinContract skin = new CompanyTabSkinContract(this);
skin.setContractService(contractService);
return skin;
}
private CompanyTabSkinFile createFileTabSkin(Tab tab) {
CompanyTabSkinFile skin = new CompanyTabSkinFile(this);
skin.setCompanyFileService(companyFileService);
return skin;
}
private void initializeCustomerTab() { private void initializeCustomerTab() {
customerTab.setOnSelectionChanged(event -> { customerTab.setOnSelectionChanged(event -> {
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
@@ -210,7 +211,6 @@ public class CompanyWindowController
} }
}); });
customerTab_pane1.visibleProperty().bind(customerTab_pane2.visibleProperty().not()); customerTab_pane1.visibleProperty().bind(customerTab_pane2.visibleProperty().not());
customerTab_pane2.visibleProperty().bind(companyCustomerProperty.isNull()); customerTab_pane2.visibleProperty().bind(companyCustomerProperty.isNull());
customerTab_createBtn.setOnAction(event -> { customerTab_createBtn.setOnAction(event -> {
@@ -284,7 +284,6 @@ public class CompanyWindowController
*/ */
public void onCompanyVerifyAction(ActionEvent event) { public void onCompanyVerifyAction(ActionEvent event) {
Company company = getEntity(); Company company = getEntity();
CompanyVerifyTasker task = new CompanyVerifyTasker(); CompanyVerifyTasker task = new CompanyVerifyTasker();
task.setCompanyService(companyService); task.setCompanyService(companyService);
task.setCompany(company); task.setCompany(company);

View File

@@ -1,17 +1,18 @@
package com.ecep.contract.manager.ds.company.controller.old_name; package com.ecep.contract.controller.company_old_name;
import java.time.format.DateTimeFormatter;
import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.model.CompanyOldName;
import com.ecep.contract.service.CompanyOldNameService;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.vm.CompanyOldNameViewModel;
import com.ecep.contract.manager.ds.company.model.CompanyOldName;
import com.ecep.contract.manager.ds.company.service.CompanyOldNameService;
import com.ecep.contract.manager.ds.company.service.CompanyService;
import com.ecep.contract.manager.ds.company.vo.CompanyOldNameViewModel;
import com.ecep.contract.manager.ui.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.manager.ui.tab.TabSkin;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;
import javafx.util.converter.LocalDateStringConverter; import javafx.util.converter.LocalDateStringConverter;
import lombok.Setter; import lombok.Setter;
import java.time.format.DateTimeFormatter;
public class CompanyOldNameTabSkinBase public class CompanyOldNameTabSkinBase
extends AbstEntityBasedTabSkin<CompanyOldNameWindowController, CompanyOldName, CompanyOldNameViewModel> extends AbstEntityBasedTabSkin<CompanyOldNameWindowController, CompanyOldName, CompanyOldNameViewModel>

View File

@@ -0,0 +1,377 @@
package com.ecep.contract.controller.company_old_name;
import java.io.File;
import java.util.List;
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.CompanyOldNameService;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.CompanyFileViewModel;
import com.ecep.contract.vm.CompanyOldNameViewModel;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.event.Event;
import javafx.scene.control.Tab;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableView;
import lombok.Setter;
/**
*
*/
public class CompanyOldNameTabSkinFile
extends
AbstEntityTableTabSkin<CompanyOldNameWindowController, CompanyOldName, CompanyOldNameViewModel, CompanyFile, CompanyFileViewModel>
implements TabSkin {
@Setter
private CompanyOldNameService companyOldNameService;
@Setter
private CompanyFileService companyFileService;
@Setter
private MyProperties myProperties;
public CompanyOldNameTabSkinFile(CompanyOldNameWindowController controller) {
super(controller);
setDragAndDrop(true);
setDragAndDropFileHandler(this::moveFileToCompany);
}
@Override
public Tab getTab() {
return controller.fileTab;
}
@Override
public TableView<CompanyFileViewModel> getTableView() {
return controller.fileTable;
}
@Override
protected CompanyFileService getViewModelService() {
return companyFileService;
}
@Override
public Specification<CompanyFile> getSpecification(CompanyOldName parent) {
return SpecificationUtils.and(getSpecification(), (root, query, builder) -> {
return builder.equal(root.get("company").get("id"), parent.getCompanyId());
});
}
@Override
public void initializeTab() {
// controller.fileTable_file_move_btn.setOnAction(this::onTableMoveFileAction);
// controller.fileTable_file_retrieve_from_download_dir_btn.setOnAction(this::onTableRetrieveFromDownloadDirAction);
// controller.fileTable_file_reset_btn.setOnAction(this::onTableResetAction);
//
//
// controller.fileTable_idColumn.setCellValueFactory(param ->
// param.getValue().getId());
// ObservableMap<CompanyFileType, CompanyFileTypeLocal> observableMapByLocal =
// getBean(CompanyFileTypeLocalRepository.class).getObservableMapByLocal();
// controller.fileTable_typeColumn.setCellValueFactory(param ->
// Bindings.valueAt(observableMapByLocal,
// param.getValue().getType()).map(CompanyFileTypeLocal::getValue));
// controller.fileTable_filePathColumn.setCellValueFactory(param ->
// param.getValue().getFilePath());
// controller.fileTable_filePathColumn.setCellFactory(param -> new
// FileTableFilePathTableCell());
// controller.fileTable_applyDateColumn.setCellValueFactory(param ->
// param.getValue().getApplyDate());
// controller.fileTable_expiringDateColumn.setCellValueFactory(param ->
// param.getValue().getExpiringDate());
//
//
// controller.fileTable_menu_refresh.setOnAction(this::onTableRefreshAction);
// controller.fileTable_menu_del.setOnAction(this::onTableDeleteAction);
// controller.fileTable_menu_copy_as_matched_by_contract.setOnAction(this::onTableCopyAsMatchedByContractAction);
// controller.fileTable_menu_copy_as_matched_by_contract.setOnMenuValidation(this::onTableCopyAsMatchedMenuValidation);
super.initializeTab();
}
private void onTableResetAction(ActionEvent event) {
CompanyOldName oldName = getParent();
// CompletableFuture.runAsync(() -> {
// if (getCompanyFileService().reBuildingFiles(oldName, this::setStatus)) {
// loadTableDataSet();
// }
// });
}
/**
* 从 下载目录 中查找相关的资质文件
*/
private void onTableRetrieveFromDownloadDirAction(ActionEvent event) {
// CompanyOldName oldName = getParent();
// MyProperties myProperties = getMyProperties();
// File dir = myProperties.getDownloadDirectory();
// if (!dir.exists()) {
// setStatus("下载目录 " + dir.getAbsolutePath() + " 不存在,请检查");
// return;
// }
//
// setStatus("开始检索 下载 文件夹:" + dir.getAbsolutePath() + "...");
// File[] files = dir.listFiles(File::isFile);
// if (files == null) {
// setStatus("检索 下载 文件夹失败");
// return;
// }
// if (files.length == 0) {
// setStatus("下载 文件夹没有文件");
// return;
// }
// setStatus("下载 文件夹中共有文件 " + files.length + " 个文件");
//
// if (getCompanyOldNameService().retrieveFromDownloadFiles(oldName, files,
// this::setStatus)) {
// // fixed if update
// viewModel.update(oldName);
// loadTableDataSet();
// }
}
/**
* 把文件从 老系统中移到 \\10.84.209.8\项目信息\相关方信息 目录中
*/
private void onTableMoveFileAction(ActionEvent event) {
// CompanyFileService companyFileService = getCompanyFileService();
// CompanyOldName oldName = getParent();
// List<CompanyFile> list = companyFileService.findByCompany(oldName);
// if (list.isEmpty()) {
// return;
// }
// if (getCompanyService().makePathAbsent(oldName)) {
// save(oldName);
// }
//
// String path = oldName.getPath();
// if (!StringUtils.hasText(path)) {
// setStatus("异常, 企业目录未设置");
// return;
// }
// File companyPath = new File(path);
// for (CompanyFile companyFile : list) {
// String filePath = companyFile.getFilePath();
// if (StringUtils.hasText(filePath)) {
// File file = new File(filePath);
// if (file.exists()) {
// if (file.getParentFile().equals(companyPath)) {
// continue;
// }
// File dest = new File(companyPath, file.getName());
// if (file.renameTo(dest)) {
// companyFile.setFilePath(dest.getAbsolutePath());
// companyFileService.save(companyFile);
// setStatus(file.getName() + " 移动到 " + companyPath.getName());
// }
// }
// }
// }
}
/**
*
*/
private void onTableCopyAsMatchedByContractAction(ActionEvent event) {
UITools.showDialogAndWait("复制资信评估报告", "按当前评估报告复制一个合同中最匹配的", list -> {
onTableCopyAsMatchedAction_(msg -> {
Platform.runLater(() -> {
list.add(msg);
});
});
});
}
private void onTableCopyAsMatchedAction_(Consumer<String> state) {
// CompanyOldName oldName = getParent();
//
// CompanyFileViewModel selectedItem =
// table.getSelectionModel().getSelectedItem();
// if (selectedItem == null) {
// state.accept("未选择行");
// return;
// }
// if (selectedItem.getApplyDate().get() == null) {
// state.accept("有效日期不能未空");
// return;
// }
//
// LocalDate nextCreditReportDate = null;
// try {
// nextCreditReportDate = companyFileService.getNextCreditReportDate(oldName,
// state);
// if (nextCreditReportDate == null) {
// state.accept("没有找到下一个咨询评估日期");
// return;
// }
// } catch (Exception e) {
// state.accept("获取下一个咨询评估日期失败:" + e.getMessage());
// return;
// }
//
// state.accept("下一个咨询评估日期:" + nextCreditReportDate);
//
// if (!nextCreditReportDate.isBefore(selectedItem.getApplyDate().get())) {
// state.accept("咨询评估日期晚于下一个咨询评估日期");
// return;
// }
//
//
// File src = new File(selectedItem.getFilePath().get());
// if (!src.exists()) {
// state.accept("当前选择行的文件不存在");
// return;
// }
//
// String srcDate = MyDateTimeUtils.format(selectedItem.getApplyDate().get());
// String destDate = MyDateTimeUtils.format(nextCreditReportDate);
// String srcFileName = src.getName();
// String destFileName;
//
// // 天眼查的报告
// if (CloudTycService.isTycReport(srcFileName)) {
// state.accept("天眼查的报告按标准格式命名");
// String name = oldName.getName() + "_" + CloudTycService.NAME;
// if (srcFileName.contains(CloudTycService.TYC_ENTERPRISE_BASIC_REPORT)) {
// name = name + "_" + CloudTycService.TYC_ENTERPRISE_BASIC_REPORT;
// } else if (srcFileName.contains(CloudTycService.TYC_ENTERPRISE_MAJOR_REPORT))
// {
// name = name + "_" + CloudTycService.TYC_ENTERPRISE_MAJOR_REPORT;
// } else if
// (srcFileName.contains(CloudTycService.TYC_ENTERPRISE_ANALYSIS_REPORT)) {
// name = name + "_" + CloudTycService.TYC_ENTERPRISE_ANALYSIS_REPORT;
// }
// destFileName = name + "_" + destDate + "_cp." +
// StringUtils.getFilenameExtension(srcFileName);
// } else {
// if (srcFileName.contains(srcDate)) {
// // 如果文件名中包含日期,则替换为新日期
// destFileName = srcFileName.replace(srcDate, destDate + "_cp");
// } else {
// // 如果文件名中不包含日期,则添加日期
// destFileName = oldName.getName() + "_" + destDate + "_cp." +
// StringUtils.getFilenameExtension(srcFileName);
// }
// }
//
// state.accept("新文件名:" + destFileName);
//
// File dest = new File(src.getParent(), destFileName);
// try {
// FileSystemUtils.copyRecursively(src, dest);
// state.accept("新文件复制成功");
// } catch (IOException e) {
// state.accept("新文件复制失败:" + e.getMessage());
// }
//
// CompanyFile companyFile = new CompanyFile();
// companyFile.setFilePath(dest.getAbsolutePath());
// companyFile.setApplyDate(nextCreditReportDate);
// companyFile.setExpiringDate(nextCreditReportDate.plusYears(1));
// companyFile.setType(CompanyFileType.CreditReport);
// companyFile.setCompany(oldName);
// companyFileService.save(companyFile);
//
// state.accept("新文件已记录");
//
// loadTableDataSet();
// state.accept("文件表已刷新");
}
/**
* 当fileTable选中的行是咨询评估时可用
*
* @param event event
*/
public void onTableCopyAsMatchedMenuValidation(Event event) {
// 当fileTable选中的行是咨询评估时可用
CompanyFileViewModel selectedItem = getSelectedItem();
if (selectedItem == null) {
event.consume();
return;
}
CompanyFileType type = selectedItem.getType().get();
if (type != CompanyFileType.CreditReport) {
event.consume();
return;
}
}
private void moveFileToCompany(List<File> files) {
String path = viewModel.getPath().get();
if (!StringUtils.hasText(path)) {
setStatus("未设置目录");
return;
}
File dir = new File(path);
if (!dir.exists()) {
setStatus("目录错误,不存在");
return;
}
}
@Override
protected void onTableRowDoubleClickedAction(CompanyFileViewModel item) {
String path = item.getFilePath().get();
if (StringUtils.hasText(path)) {
File file = new File(path);
if (!file.exists()) {
setStatus("文件不存在 " + file.getName());
return;
}
DesktopUtils.showInExplorer(file);
}
}
class FileTableFilePathTableCell extends TableCell<CompanyFileViewModel, String> {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
setText("");
return;
}
String path = viewModel.getPath().get();
if (StringUtils.hasText(path)) {
if (item.startsWith(path)) {
item = "~" + item.substring(path.length());
}
}
setText(item);
}
}
public MyProperties getMyProperties() {
if (myProperties == null) {
myProperties = getBean(MyProperties.class);
}
return myProperties;
}
private CompanyFileService getCompanyFileService() {
if (companyFileService == null) {
companyFileService = getBean(CompanyFileService.class);
}
return companyFileService;
}
public CompanyOldNameService getCompanyOldNameService() {
if (companyOldNameService == null) {
companyOldNameService = getBean(CompanyOldNameService.class);
}
return companyOldNameService;
}
}

View File

@@ -1,30 +1,38 @@
package com.ecep.contract.manager.ds.company.controller.old_name; package com.ecep.contract.controller.company_old_name;
import java.io.File;
import java.util.concurrent.CompletableFuture;
import com.ecep.contract.manager.ds.company.model.CompanyOldName;
import com.ecep.contract.manager.ds.company.service.CompanyOldNameService;
import com.ecep.contract.manager.ds.company.service.CompanyService;
import com.ecep.contract.manager.ds.company.vo.CompanyFileViewModel;
import com.ecep.contract.manager.ds.company.vo.CompanyOldNameViewModel;
import com.ecep.contract.manager.ui.AbstEntityController;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.ViewModelService;
import com.ecep.contract.manager.util.DesktopUtils;
import com.ecep.contract.manager.util.UITools;
import javafx.event.ActionEvent;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import javafx.stage.Window;
import javafx.stage.WindowEvent;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.io.File; import com.ecep.contract.DesktopUtils;
import java.util.concurrent.CompletableFuture; 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.UITools;
import com.ecep.contract.vm.CompanyFileViewModel;
import com.ecep.contract.vm.CompanyOldNameViewModel;
import javafx.event.ActionEvent;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.CheckBox;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TableView;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.stage.Window;
import javafx.stage.WindowEvent;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@@ -45,12 +53,6 @@ public class CompanyOldNameWindowController extends AbstEntityController<Company
public TabPane tabPane; public TabPane tabPane;
public Tab fileTab; public Tab fileTab;
@Autowired
private CompanyOldNameService companyOldNameService;
@Autowired
private CompanyService companyService;
public TextField nameField; public TextField nameField;
public CheckBox ambiguityField; public CheckBox ambiguityField;
public DatePicker startDateField; public DatePicker startDateField;
@@ -62,10 +64,8 @@ public class CompanyOldNameWindowController extends AbstEntityController<Company
public Button saveBtn; public Button saveBtn;
public Button saveBtn2; public Button saveBtn2;
public TableView<CompanyFileViewModel> fileTable; public TableView<CompanyFileViewModel> fileTable;
@Override @Override
public void onShown(WindowEvent windowEvent) { public void onShown(WindowEvent windowEvent) {
super.onShown(windowEvent); super.onShown(windowEvent);
@@ -74,12 +74,12 @@ public class CompanyOldNameWindowController extends AbstEntityController<Company
@Override @Override
protected CompanyOldName loadEntity() { protected CompanyOldName loadEntity() {
return companyOldNameService.findById(viewModel.getId().get()); return getViewModelService().findById(viewModel.getId().get());
} }
@Override @Override
protected CompanyOldName saveEntity(CompanyOldName entity) { protected CompanyOldName saveEntity(CompanyOldName entity) {
return companyOldNameService.save(entity); return getViewModelService().save(entity);
} }
@Override @Override
@@ -90,7 +90,7 @@ public class CompanyOldNameWindowController extends AbstEntityController<Company
@Override @Override
public CompanyOldNameService getViewModelService() { public CompanyOldNameService getViewModelService() {
return companyOldNameService; return getCachedBean(CompanyOldNameService.class);
} }
private CompanyOldNameTabSkinBase createBaseTabSkin(Tab tab) { private CompanyOldNameTabSkinBase createBaseTabSkin(Tab tab) {
@@ -102,11 +102,10 @@ public class CompanyOldNameWindowController extends AbstEntityController<Company
private CompanyOldNameTabSkinFile createFileTabSkin(Tab tab) { private CompanyOldNameTabSkinFile createFileTabSkin(Tab tab) {
CompanyOldNameTabSkinFile skin = new CompanyOldNameTabSkinFile(this); CompanyOldNameTabSkinFile skin = new CompanyOldNameTabSkinFile(this);
skin.setCompanyOldNameService(companyOldNameService); skin.setCompanyOldNameService(companyOldNameService);
// skin.setCompanyFileService(companyFileService); // skin.setCompanyFileService(companyFileService);
return skin; return skin;
} }
public void onOldCompanyOpenInExplorerAction(ActionEvent event) { public void onOldCompanyOpenInExplorerAction(ActionEvent event) {
CompanyOldName companyOldName = getEntity(); CompanyOldName companyOldName = getEntity();
String path = companyOldName.getPath(); String path = companyOldName.getPath();
@@ -128,4 +127,3 @@ public class CompanyOldNameWindowController extends AbstEntityController<Company
}); });
} }
} }

View File

@@ -1,10 +1,10 @@
package com.ecep.contract.manager.ds.contract.controller; package com.ecep.contract.controller.contract;
import com.ecep.contract.manager.ds.contract.model.Contract; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.manager.ds.contract.service.ContractService; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.manager.ds.contract.vo.ContractViewModel; import com.ecep.contract.model.Contract;
import com.ecep.contract.manager.ui.tab.AbstEntityBasedTabSkin; import com.ecep.contract.service.ContractService;
import com.ecep.contract.manager.ui.tab.TabSkin; import com.ecep.contract.vm.ContractViewModel;
public abstract class AbstContractBasedTabSkin public abstract class AbstContractBasedTabSkin
extends AbstEntityBasedTabSkin<ContractWindowController, Contract, ContractViewModel> extends AbstEntityBasedTabSkin<ContractWindowController, Contract, ContractViewModel>

View File

@@ -1,16 +1,18 @@
package com.ecep.contract.manager.ds.contract.controller; package com.ecep.contract.controller.contract;
import com.ecep.contract.manager.ds.contract.model.Contract; import org.apache.poi.ss.formula.functions.T;
import com.ecep.contract.manager.ds.contract.service.ContractService;
import com.ecep.contract.manager.ds.contract.vo.ContractViewModel;
import com.ecep.contract.manager.ds.other.model.IdentityEntity;
import com.ecep.contract.manager.ds.other.vo.IdentityViewModel;
import com.ecep.contract.manager.ui.table.AbstEntityTableTabSkin;
import com.ecep.contract.manager.ui.tab.TabSkin;
import com.ecep.contract.manager.ui.table.TableOfTabSkin;
import com.ecep.contract.manager.util.SpecificationUtils;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
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.vm.IdentityViewModel;
public abstract class AbstContractTableTabSkin<T extends IdentityEntity, TV extends IdentityViewModel<T>> public abstract class AbstContractTableTabSkin<T extends IdentityEntity, TV extends IdentityViewModel<T>>
extends AbstEntityTableTabSkin<ContractWindowController, Contract, ContractViewModel, T, TV> extends AbstEntityTableTabSkin<ContractWindowController, Contract, ContractViewModel, T, TV>
implements TabSkin, TableOfTabSkin<Contract, T, TV> { implements TabSkin, TableOfTabSkin<Contract, T, TV> {

View File

@@ -1,4 +1,4 @@
package com.ecep.contract.manager.ds.contract.controller; package com.ecep.contract.controller.contract;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -8,19 +8,20 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.manager.ds.company.model.Company; import com.ecep.contract.UITools;
import com.ecep.contract.manager.ds.contract.model.Contract; import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.manager.ds.contract.model.ContractGroup; import com.ecep.contract.controller.tab.ContractManagerSkin;
import com.ecep.contract.manager.ds.contract.model.ContractKind; import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.manager.ds.contract.model.ContractType; import com.ecep.contract.ds.contract.tasker.ContractFilesRebuildAllTasker;
import com.ecep.contract.manager.ds.contract.service.ContractService; import com.ecep.contract.ds.contract.tasker.ContractRepairAllTasker;
import com.ecep.contract.manager.ds.contract.tasker.ContractFilesRebuildAllTasker; import com.ecep.contract.ds.contract.vo.ContractViewModel;
import com.ecep.contract.manager.ds.contract.tasker.ContractRepairAllTasker; import com.ecep.contract.model.Company;
import com.ecep.contract.manager.ds.contract.vo.ContractViewModel; import com.ecep.contract.model.Contract;
import com.ecep.contract.manager.ds.other.model.Employee; import com.ecep.contract.model.ContractGroup;
import com.ecep.contract.manager.ui.AbstManagerWindowController; import com.ecep.contract.model.ContractKind;
import com.ecep.contract.manager.ui.FxmlPath; import com.ecep.contract.model.ContractType;
import com.ecep.contract.manager.util.UITools; import com.ecep.contract.model.Employee;
import com.ecep.contract.ui.AbstManagerWindowController;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.scene.control.CheckBox; import javafx.scene.control.CheckBox;

View File

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

View File

@@ -1,37 +1,16 @@
package com.ecep.contract.manager.ds.contract.controller; package com.ecep.contract.controller.contract;
import static com.ecep.contract.util.TableViewUtils.bindDoubleClicked;
import static com.ecep.contract.util.TableViewUtils.bindEnterPressed;
import java.io.File;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import com.ecep.contract.manager.ds.contract.ContractPayWay;
import com.ecep.contract.manager.ds.contract.model.Contract;
import com.ecep.contract.manager.ds.contract.service.ContractService;
import com.ecep.contract.manager.ds.contract.tasker.ContractVerifyComm;
import com.ecep.contract.manager.ds.contract.tasker.ContractVerifyResultExportAsExcelFile;
import com.ecep.contract.manager.ui.BaseController;
import com.ecep.contract.manager.ds.other.model.Employee;
import com.ecep.contract.manager.ds.other.service.EmployeeService;
import com.ecep.contract.manager.ds.project.service.SaleTypeService;
import com.ecep.contract.manager.ds.vendor.service.VendorGroupService;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.Message;
import com.ecep.contract.manager.ui.MessageHolder;
import com.ecep.contract.manager.ui.table.cell.EmployeeTableCell;
import com.ecep.contract.manager.util.UITools;
import javafx.application.Platform;
import javafx.beans.property.SimpleListProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXMLLoader;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.layout.HBox;
import javafx.stage.*;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.Hibernate;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -44,17 +23,48 @@ import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.io.File; import com.ecep.contract.ContractPayWay;
import java.time.LocalDate; import com.ecep.contract.Message;
import java.util.ArrayList; import com.ecep.contract.MessageHolder;
import java.util.List; import com.ecep.contract.UITools;
import java.util.concurrent.CompletableFuture; import com.ecep.contract.controller.BaseController;
import java.util.concurrent.atomic.AtomicInteger; import com.ecep.contract.util.FxmlPath;
import java.util.logging.Level; import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.contract.tasker.ContractVerifyComm;
import com.ecep.contract.ds.contract.tasker.ContractVerifyResultExportAsExcelFile;
import com.ecep.contract.ds.other.service.EmployeeService;
import com.ecep.contract.ds.project.service.SaleTypeService;
import com.ecep.contract.ds.vendor.service.VendorGroupService;
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.Employee;
import com.ecep.contract.ui.table.cell.EmployeeTableCell;
import static com.ecep.contract.manager.util.TableViewUtils.bindDoubleClicked; import javafx.application.Platform;
import static com.ecep.contract.manager.util.TableViewUtils.bindEnterPressed; import javafx.beans.property.SimpleListProperty;
import static java.util.concurrent.CompletableFuture.runAsync; import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.control.Button;
import javafx.scene.control.CheckMenuItem;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Label;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.HBox;
import javafx.stage.FileChooser;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.Window;
import javafx.stage.WindowEvent;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@@ -78,7 +88,6 @@ public class ContractVerifyWindowController extends BaseController {
} }
} }
@Data @Data
public static class Model implements MessageHolder { public static class Model implements MessageHolder {
private SimpleStringProperty code = new SimpleStringProperty(); private SimpleStringProperty code = new SimpleStringProperty();
@@ -104,9 +113,6 @@ public class ContractVerifyWindowController extends BaseController {
} }
} }
static class StateTableCell extends TableCell<Model, ObservableList<MessageExt>> { static class StateTableCell extends TableCell<Model, ObservableList<MessageExt>> {
Label message2Label(MessageExt message) { Label message2Label(MessageExt message) {
Label label = new Label(message.getMessage()); Label label = new Label(message.getMessage());
@@ -154,7 +160,7 @@ public class ContractVerifyWindowController extends BaseController {
ContractVerifyComm comm = new ContractVerifyComm(); ContractVerifyComm comm = new ContractVerifyComm();
@Autowired @Autowired
private SaleTypeService saleTypeService; private ProjectSaleTypeService saleTypeService;
@Autowired @Autowired
private VendorGroupService vendorGroupService; private VendorGroupService vendorGroupService;
@Autowired @Autowired
@@ -189,7 +195,6 @@ public class ContractVerifyWindowController extends BaseController {
@FXML @FXML
public CheckMenuItem onlyShowVerifiedChecker; public CheckMenuItem onlyShowVerifiedChecker;
@FXML @FXML
public TableView<Model> viewTable; public TableView<Model> viewTable;
private final ObservableList<Model> viewTableDataSet = FXCollections.observableArrayList(); private final ObservableList<Model> viewTableDataSet = FXCollections.observableArrayList();
@@ -224,9 +229,11 @@ public class ContractVerifyWindowController extends BaseController {
viewTable_employeeColumn.setCellValueFactory(param -> param.getValue().getEmployee()); viewTable_employeeColumn.setCellValueFactory(param -> param.getValue().getEmployee());
viewTable_employeeColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService())); viewTable_employeeColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService()));
viewTable_setupDateColumn.setCellValueFactory(param -> param.getValue().getSetupDate()); viewTable_setupDateColumn.setCellValueFactory(param -> param.getValue().getSetupDate());
// viewTable_stateColumn.setCellValueFactory(param -> param.getValue().getMessages().map(messages -> { // viewTable_stateColumn.setCellValueFactory(param ->
// return messages.stream().map(Message::getMessage).collect(Collectors.joining(", ")); // param.getValue().getMessages().map(messages -> {
// })); // return
// messages.stream().map(Message::getMessage).collect(Collectors.joining(", "));
// }));
viewTable_stateColumn.setCellValueFactory(param -> param.getValue().getMessages()); viewTable_stateColumn.setCellValueFactory(param -> param.getValue().getMessages());
viewTable_stateColumn.setCellFactory(param -> new StateTableCell()); viewTable_stateColumn.setCellFactory(param -> new StateTableCell());
@@ -241,11 +248,9 @@ public class ContractVerifyWindowController extends BaseController {
comm.getVerifyCustomerFiles().bind(verifyCustomerFileChecker.selectedProperty()); comm.getVerifyCustomerFiles().bind(verifyCustomerFileChecker.selectedProperty());
comm.getVerifyCustomerSubContractDate().bind(verifyCustomerSubContractDateChecker.selectedProperty()); comm.getVerifyCustomerSubContractDate().bind(verifyCustomerSubContractDateChecker.selectedProperty());
bindDoubleClicked(viewTable, this::showContract); bindDoubleClicked(viewTable, this::showContract);
bindEnterPressed(viewTable, this::reVerifyContract); bindEnterPressed(viewTable, this::reVerifyContract);
} }
/** /**
@@ -265,12 +270,9 @@ public class ContractVerifyWindowController extends BaseController {
builder.equal(root.get("payWay"), ContractPayWay.PAY), builder.equal(root.get("payWay"), ContractPayWay.PAY),
builder.or( builder.or(
builder.isNull(root.get("parentCode")), builder.isNull(root.get("parentCode")),
builder.equal(root.get("parentCode"), "") builder.equal(root.get("parentCode"), "")))),
) builder.between(root.get("setupDate"), setupDateBeginSelector.getValue(),
) setupDateEndSelector.getValue()));
),
builder.between(root.get("setupDate"), setupDateBeginSelector.getValue(), setupDateEndSelector.getValue())
);
}; };
long total = contractService.count(spec); long total = contractService.count(spec);
setStatus("合同:" + total + ""); setStatus("合同:" + total + "");
@@ -323,7 +325,6 @@ public class ContractVerifyWindowController extends BaseController {
}); });
} }
public void onContractReVerifyAction(ActionEvent event) { public void onContractReVerifyAction(ActionEvent event) {
Model selectedItem = viewTable.getSelectionModel().getSelectedItem(); Model selectedItem = viewTable.getSelectionModel().getSelectedItem();
if (selectedItem == null) { if (selectedItem == null) {
@@ -362,7 +363,6 @@ public class ContractVerifyWindowController extends BaseController {
}); });
} }
public void onShowContractDetailAction(ActionEvent event) { public void onShowContractDetailAction(ActionEvent event) {
Model selectedItem = viewTable.getSelectionModel().getSelectedItem(); Model selectedItem = viewTable.getSelectionModel().getSelectedItem();
if (selectedItem == null) { if (selectedItem == null) {
@@ -389,7 +389,7 @@ public class ContractVerifyWindowController extends BaseController {
chooser.setInitialFileName("核验结果.xlsx"); chooser.setInitialFileName("核验结果.xlsx");
File selected = chooser.showSaveDialog(viewTable.getScene().getWindow()); File selected = chooser.showSaveDialog(viewTable.getScene().getWindow());
if (selected != null) { if (selected != null) {
ContractVerifyResultExportAsExcelFile task = new ContractVerifyResultExportAsExcelFile(); ContractVerifyResultExportAsExcelFileTasker task = new ContractVerifyResultExportAsExcelFileTasker();
task.setDestFile(selected); task.setDestFile(selected);
task.setModels(new ArrayList<>(viewTableDataSet)); task.setModels(new ArrayList<>(viewTableDataSet));
UITools.showTaskDialogAndWait("导出中...", task, null); UITools.showTaskDialogAndWait("导出中...", task, null);

View File

@@ -1,4 +1,4 @@
package com.ecep.contract.manager.ds.contract.controller; package com.ecep.contract.controller.contract;
import java.io.File; import java.io.File;
@@ -8,19 +8,28 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import com.ecep.contract.manager.ds.company.controller.CompanyWindowController; import com.ecep.contract.DesktopUtils;
import com.ecep.contract.manager.ds.company.model.Company; import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.manager.ds.company.service.CompanyService; import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.manager.ds.contract.model.Contract; import com.ecep.contract.controller.company.CompanyWindowController;
import com.ecep.contract.manager.ds.contract.service.ContractService; import com.ecep.contract.controller.tab.ContractTabSkinBase;
import com.ecep.contract.manager.ds.contract.tasker.ContractRepairTask; import com.ecep.contract.controller.tab.ContractTabSkinFiles;
import com.ecep.contract.manager.ds.contract.tasker.ContractVerifyTasker; import com.ecep.contract.controller.tab.ContractTabSkinItems;
import com.ecep.contract.manager.ds.contract.vo.ContractViewModel; import com.ecep.contract.controller.tab.ContractTabSkinItemsV2;
import com.ecep.contract.manager.ds.project.service.ProjectService; import com.ecep.contract.controller.tab.ContractTabSkinPayPlan;
import com.ecep.contract.manager.ui.AbstEntityController; import com.ecep.contract.controller.tab.ContractTabSkinPurchaseOrders;
import com.ecep.contract.manager.ui.FxmlPath; import com.ecep.contract.controller.tab.ContractTabSkinSaleOrders;
import com.ecep.contract.manager.util.DesktopUtils; import com.ecep.contract.controller.tab.ContractTabSkinSubContract;
import com.ecep.contract.manager.util.UITools; 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.util.UITools;
import com.ecep.contract.vm.ContractViewModel;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
@@ -42,7 +51,6 @@ import javafx.stage.WindowEvent;
public class ContractWindowController public class ContractWindowController
extends AbstEntityController<Contract, ContractViewModel> { extends AbstEntityController<Contract, ContractViewModel> {
public static void show(Contract contract, Window owner) { public static void show(Contract contract, Window owner) {
ContractViewModel model = new ContractViewModel(); ContractViewModel model = new ContractViewModel();
model.update(contract); model.update(contract);
@@ -132,7 +140,8 @@ public class ContractWindowController
public void onShown(WindowEvent windowEvent) { public void onShown(WindowEvent windowEvent) {
super.onShown(windowEvent); super.onShown(windowEvent);
getTitle().bind(viewModel.getName().map(name -> "[" + viewModel.getId().get() + "] " + viewModel.getCode().get() + " " + name + " 合同详情")); getTitle().bind(viewModel.getName()
.map(name -> "[" + viewModel.getId().get() + "] " + viewModel.getCode().get() + " " + name + " 合同详情"));
root.getScene().getStylesheets().add("/ui/contract/contract.css"); root.getScene().getStylesheets().add("/ui/contract/contract.css");
} }
@@ -174,7 +183,6 @@ public class ContractWindowController
registerTabSkin(fileTab, tab -> new ContractTabSkinFiles(this)); registerTabSkin(fileTab, tab -> new ContractTabSkinFiles(this));
} }
public void onContractOpenInExplorerAction(ActionEvent event) { public void onContractOpenInExplorerAction(ActionEvent event) {
Contract contract = getEntity(); Contract contract = getEntity();
String path = contract.getPath(); String path = contract.getPath();
@@ -237,7 +245,6 @@ public class ContractWindowController
} }
} }
/** /**
* 验证合同合规性 * 验证合同合规性
*/ */

View File

@@ -0,0 +1,29 @@
package com.ecep.contract.controller.customer;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.controller.table.AbstEntityTableTabSkin;
import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.service.CompanyCustomerService;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.vm.CompanyCustomerViewModel;
import com.ecep.contract.vm.IdentityViewModel;
public abstract class AbstCompanyCustomerTableTabSkin<T extends IdentityEntity, TV extends IdentityViewModel<T>>
extends
AbstEntityTableTabSkin<CompanyCustomerWindowController, CompanyCustomer, CompanyCustomerViewModel, T, TV>
implements TabSkin {
public AbstCompanyCustomerTableTabSkin(CompanyCustomerWindowController controller) {
super(controller);
}
public CompanyService getCompanyService() {
return controller.getCompanyService();
}
protected CompanyCustomerService getCompanyCustomerService() {
return getCachedBean(CompanyCustomerService.class);
}
}

View File

@@ -1,27 +1,11 @@
package com.ecep.contract.manager.ds.customer.controller; package com.ecep.contract.controller.customer;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.function.BiConsumer;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomerEvaluationFormFile;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomerFile;
import com.ecep.contract.manager.ds.customer.repository.CompanyCustomerEvaluationFormFileRepository;
import com.ecep.contract.manager.ds.customer.repository.CompanyCustomerFileRepository;
import com.ecep.contract.manager.ui.BaseController;
import com.ecep.contract.manager.ds.customer.vo.CompanyCustomerFileViewModel;
import com.ecep.contract.manager.ds.customer.service.CompanyCustomerFileService;
import com.ecep.contract.manager.ds.company.CompanyFileUtils;
import com.ecep.contract.manager.util.FxmlUtils;
import javafx.application.Platform;
import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.event.ActionEvent;
import javafx.geometry.Bounds;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.image.PixelWriter;
import javafx.scene.image.WritableImage;
import javafx.stage.*;
import org.apache.pdfbox.Loader; import org.apache.pdfbox.Loader;
import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer; import org.apache.pdfbox.rendering.PDFRenderer;
@@ -33,11 +17,39 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.awt.image.BufferedImage; import com.ecep.contract.controller.BaseController;
import java.io.File; import com.ecep.contract.util.FxmlUtils;
import java.util.Objects; import com.ecep.contract.ds.company.CompanyFileUtils;
import java.util.concurrent.CompletableFuture; import com.ecep.contract.ds.customer.repository.CompanyCustomerEvaluationFormFileRepository;
import java.util.function.BiConsumer; 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.vm.CompanyCustomerFileViewModel;
import javafx.application.Platform;
import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.event.ActionEvent;
import javafx.geometry.Bounds;
import javafx.scene.control.CheckBox;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.SplitPane;
import javafx.scene.control.TextField;
import javafx.scene.control.Toggle;
import javafx.scene.control.ToggleGroup;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.image.PixelWriter;
import javafx.scene.image.WritableImage;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.Window;
import javafx.stage.WindowEvent;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@Component @Component

View File

@@ -1,20 +1,20 @@
package com.ecep.contract.manager.ds.customer.controller; package com.ecep.contract.controller.customer;
import com.ecep.contract.manager.SpringApp; import static com.ecep.contract.util.ExcelUtils.setCellValue;
import com.ecep.contract.manager.cloud.tyc.CloudTyc;
import com.ecep.contract.manager.cloud.tyc.CloudTycService; import java.io.File;
import com.ecep.contract.manager.ds.company.model.Company; import java.io.FileInputStream;
import com.ecep.contract.manager.ds.company.service.CompanyBasicService; import java.io.FileNotFoundException;
import com.ecep.contract.manager.ds.company.service.CompanyContactService; import java.io.FileOutputStream;
import com.ecep.contract.manager.ds.company.service.CompanyService; import java.io.IOException;
import com.ecep.contract.manager.ds.customer.CompanyCustomerFileType; import java.io.InputStream;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomer; import java.io.OutputStream;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomerEvaluationFormFile; import java.time.LocalDate;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomerFile; import java.util.Comparator;
import com.ecep.contract.manager.ds.customer.service.CompanyCustomerFileService; import java.util.List;
import com.ecep.contract.manager.ds.customer.service.CompanyCustomerService;
import javafx.concurrent.Task; import com.ecep.contract.service.*;
import lombok.Setter; import com.ecep.contract.util.CompanyUtils;
import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.ss.usermodel.WorkbookFactory;
@@ -24,12 +24,16 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.io.*; import com.ecep.contract.CompanyCustomerFileType;
import java.time.LocalDate; import com.ecep.contract.SpringApp;
import java.util.Comparator; import com.ecep.contract.model.CloudTyc;
import java.util.List; import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.model.CompanyCustomerEvaluationFormFile;
import com.ecep.contract.model.CompanyCustomerFile;
import static com.ecep.contract.manager.util.ExcelUtils.setCellValue; import javafx.concurrent.Task;
import lombok.Setter;
public class CompanyCustomerEvaluationFormUpdateTask extends Task<Object> { public class CompanyCustomerEvaluationFormUpdateTask extends Task<Object> {
private static final Logger logger = LoggerFactory.getLogger(CompanyCustomerEvaluationFormUpdateTask.class); private static final Logger logger = LoggerFactory.getLogger(CompanyCustomerEvaluationFormUpdateTask.class);
@@ -109,8 +113,7 @@ public class CompanyCustomerEvaluationFormUpdateTask extends Task<Object> {
updateMessage("表单文件已经存在," + destFile.getName()); updateMessage("表单文件已经存在," + destFile.getName());
try ( try (
InputStream inp = new FileInputStream(destFile); InputStream inp = new FileInputStream(destFile);
Workbook wb = WorkbookFactory.create(inp) Workbook wb = WorkbookFactory.create(inp)) {
) {
updateEvaluationForm(wb, destFile); updateEvaluationForm(wb, destFile);
updateMessage("评价表已更新"); updateMessage("评价表已更新");
} catch (Exception e) { } catch (Exception e) {
@@ -121,8 +124,7 @@ public class CompanyCustomerEvaluationFormUpdateTask extends Task<Object> {
updateMessage("根据模板 " + template_file_name + " 创建表单 " + destFile.getName()); updateMessage("根据模板 " + template_file_name + " 创建表单 " + destFile.getName());
try ( try (
InputStream inp = new FileInputStream(template); InputStream inp = new FileInputStream(template);
Workbook wb = WorkbookFactory.create(inp) Workbook wb = WorkbookFactory.create(inp)) {
) {
updateEvaluationForm(wb, destFile); updateEvaluationForm(wb, destFile);
updateMessage("评价表已创建"); updateMessage("评价表已创建");
CompanyCustomerFile customerFile = new CompanyCustomerFile(); CompanyCustomerFile customerFile = new CompanyCustomerFile();
@@ -142,7 +144,6 @@ public class CompanyCustomerEvaluationFormUpdateTask extends Task<Object> {
getCompanyCustomerFileService().save(customerFile); getCompanyCustomerFileService().save(customerFile);
} }
/** /**
* 更新客户评估表依据模板创建如果已经存在生成的文件则更新评估表 * 更新客户评估表依据模板创建如果已经存在生成的文件则更新评估表
* *
@@ -150,8 +151,7 @@ public class CompanyCustomerEvaluationFormUpdateTask extends Task<Object> {
* @param destFile 目标文件 * @param destFile 目标文件
*/ */
public void updateEvaluationForm( public void updateEvaluationForm(
Workbook wb, File destFile Workbook wb, File destFile) throws IOException {
) throws IOException {
Company company = customer.getCompany(); Company company = customer.getCompany();
if (!Hibernate.isInitialized(company)) { if (!Hibernate.isInitialized(company)) {
company = getCompanyService().findById(company.getId()); company = getCompanyService().findById(company.getId());
@@ -172,10 +172,10 @@ public class CompanyCustomerEvaluationFormUpdateTask extends Task<Object> {
} }
private void updateSheet(Company company, Sheet sheet) { private void updateSheet(Company company, Sheet sheet) {
setCellValue(sheet, "B3", "客户编号:" + CompanyBasicService.formatCompanyVendorId(customer.getId())); setCellValue(sheet, "B3", "客户编号:" + CompanyUtils.formatCompanyVendorId(customer.getId()));
setCellValue(sheet, "B4", "客户名称:" + company.getName()); setCellValue(sheet, "B4", "客户名称:" + company.getName());
LocalDate suggestDate = getCompanyCustomerFileService().getNextSignDate(customer, msg -> { LocalDate suggestDate = getCompanyCustomerFileService().getNextSignDate(customer, (level, msg) -> {
updateMessage(" - " + msg); updateMessage(" - " + msg);
}); });
if (suggestDate == null) { if (suggestDate == null) {
@@ -192,7 +192,8 @@ public class CompanyCustomerEvaluationFormUpdateTask extends Task<Object> {
setCellValue(sheet, "H6", "成立日期:" + company.getSetupDate()); setCellValue(sheet, "H6", "成立日期:" + company.getSetupDate());
// 所属行业 // 所属行业
setCellValue(sheet, "D7", "所属行业:" + company.getIndustry()); setCellValue(sheet, "D7", "所属行业:" + company.getIndustry());
setCellValue(sheet, "D8", "注册资金:" + company.getRegisteredCapital() + " " + company.getRegisteredCapitalCurrency()); setCellValue(sheet, "D8",
"注册资金:" + company.getRegisteredCapital() + " " + company.getRegisteredCapitalCurrency());
// 企业类型 // 企业类型
setCellValue(sheet, "H10", "企业类型:" + company.getEntType()); setCellValue(sheet, "H10", "企业类型:" + company.getEntType());
// 天眼评分 // 天眼评分
@@ -200,10 +201,9 @@ public class CompanyCustomerEvaluationFormUpdateTask extends Task<Object> {
CloudTyc cloudTyc = cloudTycService.getOrCreateCloudTyc(company); CloudTyc cloudTyc = cloudTycService.getOrCreateCloudTyc(company);
setCellValue(sheet, "D10", "天眼评分:" + (cloudTyc.getScore() > 0 ? cloudTyc.getScore() : "")); setCellValue(sheet, "D10", "天眼评分:" + (cloudTyc.getScore() > 0 ? cloudTyc.getScore() : ""));
// 检索评估表 // 检索评估表
List<CompanyCustomerEvaluationFormFile> evaluationFormFiles = List<CompanyCustomerEvaluationFormFile> evaluationFormFiles = getCompanyCustomerFileService()
getCompanyCustomerFileService().findAllCustomerEvaluationFormFiles(customer); .findAllCustomerEvaluationFormFiles(customer);
List<CompanyCustomerEvaluationFormFile> filteredList = evaluationFormFiles.stream() List<CompanyCustomerEvaluationFormFile> filteredList = evaluationFormFiles.stream()
.filter(v -> { .filter(v -> {
CompanyCustomerFile file = v.getCustomerFile(); CompanyCustomerFile file = v.getCustomerFile();

View File

@@ -1,17 +1,13 @@
package com.ecep.contract.manager.ds.customer.controller; package com.ecep.contract.controller.customer;
import com.ecep.contract.manager.ds.company.model.Company; import com.ecep.contract.MessageHolder;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomer; import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomerEntity; import com.ecep.contract.model.*;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomerEvaluationFormFile; import com.ecep.contract.service.CompanyCustomerEntityService;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomerFile; import com.ecep.contract.service.CompanyCustomerFileService;
import com.ecep.contract.manager.ds.customer.service.CompanyCustomerEntityService; import com.ecep.contract.service.CompanyCustomerService;
import com.ecep.contract.manager.ds.customer.service.CompanyCustomerFileService; import com.ecep.contract.task.Tasker;
import com.ecep.contract.manager.ds.customer.service.CompanyCustomerService; import com.ecep.contract.util.UITools;
import com.ecep.contract.manager.ui.MessageHolder;
import com.ecep.contract.manager.ui.Tasker;
import com.ecep.contract.manager.util.MyDateTimeUtils;
import com.ecep.contract.manager.util.UITools;
import lombok.Setter; import lombok.Setter;
import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.*;
@@ -31,7 +27,7 @@ import java.time.LocalDateTime;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import static com.ecep.contract.manager.util.ExcelUtils.*; import static com.ecep.contract.util.ExcelUtils.*;
public class CompanyCustomerExportExcelTasker extends Tasker<Object> { public class CompanyCustomerExportExcelTasker extends Tasker<Object> {
private static final Logger logger = LoggerFactory.getLogger(CompanyCustomerExportExcelTasker.class); private static final Logger logger = LoggerFactory.getLogger(CompanyCustomerExportExcelTasker.class);

View File

@@ -1,12 +1,12 @@
package com.ecep.contract.manager.ds.customer.controller; package com.ecep.contract.controller.customer;
import com.ecep.contract.manager.ui.table.cell.CompanyTableCell; import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.manager.ds.company.service.CompanyService; import com.ecep.contract.controller.AbstEntityManagerSkin;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomer; import com.ecep.contract.controller.table.cell.CompanyTableCell;
import com.ecep.contract.manager.ds.customer.service.CompanyCustomerService; import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.manager.ds.customer.vo.CompanyCustomerViewModel; import com.ecep.contract.service.CompanyCustomerService;
import com.ecep.contract.manager.ui.AbstEntityManagerSkin; import com.ecep.contract.service.CompanyService;
import com.ecep.contract.manager.util.MyDateTimeUtils; import com.ecep.contract.vm.CompanyCustomerViewModel;
import javafx.application.Platform; import javafx.application.Platform;
import lombok.Setter; import lombok.Setter;

View File

@@ -1,10 +1,24 @@
package com.ecep.contract.manager.ds.customer.controller; package com.ecep.contract.controller.customer;
import java.io.File;
import java.time.LocalDate;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicBoolean;
import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.service.CompanyCustomerService;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.util.UITools;
import com.ecep.contract.vm.CompanyCustomerViewModel;
import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.geometry.Insets;
import javafx.scene.control.*;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import org.hibernate.Hibernate; import org.hibernate.Hibernate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
@@ -14,31 +28,10 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.manager.ds.company.model.Company; import java.io.File;
import com.ecep.contract.manager.ds.company.service.CompanyService; import java.time.LocalDate;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomer; import java.util.concurrent.CompletableFuture;
import com.ecep.contract.manager.ds.customer.service.CompanyCustomerService; import java.util.concurrent.atomic.AtomicBoolean;
import com.ecep.contract.manager.ds.customer.vo.CompanyCustomerViewModel;
import com.ecep.contract.manager.ui.AbstManagerWindowController;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.util.MyDateTimeUtils;
import com.ecep.contract.manager.util.UITools;
import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.geometry.Insets;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.ProgressBar;
import javafx.scene.control.TableColumn;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@@ -130,7 +123,7 @@ public class CompanyCustomerManagerWindowController
} }
String prefix = (index + i) + "/" + page.getTotalElements() + ", " + company.getName() + "> "; String prefix = (index + i) + "/" + page.getTotalElements() + ", " + company.getName() + "> ";
companyCustomerService.reBuildingFiles(companyCustomer, msg -> { companyCustomerService.reBuildingFiles(companyCustomer, (level, msg) -> {
Platform.runLater(() -> { Platform.runLater(() -> {
listViewDataSet.add(prefix + msg); listViewDataSet.add(prefix + msg);
listView.scrollTo(listViewDataSet.size() - 1); listView.scrollTo(listViewDataSet.size() - 1);

View File

@@ -1,20 +1,24 @@
package com.ecep.contract.manager.ds.customer.controller; package com.ecep.contract.controller.customer;
import java.time.LocalDateTime;
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.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.vm.CompanyCustomerViewModel;
import com.ecep.contract.manager.SpringApp;
import com.ecep.contract.manager.ds.company.CompanyStringConverter;
import com.ecep.contract.manager.ds.company.controller.CompanyWindowController;
import com.ecep.contract.manager.ds.company.model.Company;
import com.ecep.contract.manager.ds.company.model.CompanyContact;
import com.ecep.contract.manager.ds.company.service.CompanyContactService;
import com.ecep.contract.manager.ds.company.service.CompanyService;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomer;
import com.ecep.contract.manager.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.manager.ds.customer.vo.CompanyCustomerViewModel;
import com.ecep.contract.manager.ds.other.EntityStringConverter;
import com.ecep.contract.manager.ui.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.manager.ui.tab.TabSkin;
import com.ecep.contract.manager.util.MyDateTimeUtils;
import com.ecep.contract.manager.util.UITools;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleObjectProperty;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
@@ -22,9 +26,6 @@ import javafx.scene.control.Tab;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import javafx.util.converter.LocalDateStringConverter; import javafx.util.converter.LocalDateStringConverter;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class CompanyCustomerTabSkinBase public class CompanyCustomerTabSkinBase
extends AbstEntityBasedTabSkin<CompanyCustomerWindowController, CompanyCustomer, CompanyCustomerViewModel> extends AbstEntityBasedTabSkin<CompanyCustomerWindowController, CompanyCustomer, CompanyCustomerViewModel>
implements TabSkin { implements TabSkin {

View File

@@ -1,31 +1,36 @@
package com.ecep.contract.manager.ds.customer.controller; package com.ecep.contract.controller.customer;
import com.ecep.contract.manager.ds.company.service.CompanyContactService; import java.io.File;
import com.ecep.contract.manager.ds.company.service.CompanyService;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomer;
import com.ecep.contract.manager.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.manager.ds.customer.vo.CompanyCustomerViewModel;
import com.ecep.contract.manager.ui.AbstEntityController;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.ViewModelService;
import com.ecep.contract.manager.util.DesktopUtils;
import javafx.event.ActionEvent;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import javafx.stage.Window;
import javafx.stage.WindowEvent;
import org.hibernate.Hibernate; import org.hibernate.Hibernate;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.io.File; import com.ecep.contract.DesktopUtils;
import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.service.CompanyContactService;
import com.ecep.contract.service.CompanyCustomerService;
import com.ecep.contract.service.CompanyService;
import com.ecep.contract.vm.CompanyCustomerViewModel;
import javafx.event.ActionEvent;
import javafx.scene.control.Button;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import javafx.stage.Window;
import javafx.stage.WindowEvent;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@@ -33,6 +38,7 @@ import java.io.File;
@FxmlPath("/ui/company/customer/customer.fxml") @FxmlPath("/ui/company/customer/customer.fxml")
public class CompanyCustomerWindowController extends AbstEntityController<CompanyCustomer, CompanyCustomerViewModel> { public class CompanyCustomerWindowController extends AbstEntityController<CompanyCustomer, CompanyCustomerViewModel> {
private static final Logger logger = LoggerFactory.getLogger(CompanyCustomerWindowController.class); private static final Logger logger = LoggerFactory.getLogger(CompanyCustomerWindowController.class);
/** /**
* 显示界面 * 显示界面
*/ */
@@ -48,14 +54,6 @@ public class CompanyCustomerWindowController extends AbstEntityController<Compan
public Tab fileTab; public Tab fileTab;
public Tab entityTab; public Tab entityTab;
public Tab satisfactionTab; public Tab satisfactionTab;
@Autowired
CompanyService companyService;
@Autowired
CompanyCustomerService companyCustomerService;
@Autowired
CompanyContactService companyContactService;
public TextField companyField; public TextField companyField;
public TextField contactField; public TextField contactField;
public TextField pathField; public TextField pathField;
@@ -70,7 +68,6 @@ public class CompanyCustomerWindowController extends AbstEntityController<Compan
public Button pathAsNameBtn; public Button pathAsNameBtn;
public Button OpenCustomerPathInExplorerBtn; public Button OpenCustomerPathInExplorerBtn;
@Override @Override
public void show(Stage stage) { public void show(Stage stage) {
super.show(stage); super.show(stage);
@@ -79,7 +76,7 @@ public class CompanyCustomerWindowController extends AbstEntityController<Compan
return "-"; return "-";
} }
if (!Hibernate.isInitialized(company)) { if (!Hibernate.isInitialized(company)) {
company = companyService.findById(company.getId()); company = getCompanyService().findById(company.getId());
viewModel.getCompany().set(company); viewModel.getCompany().set(company);
} }
return getMessage("ui.customer.title", String.valueOf(viewModel.getId().get()), company.getName()); return getMessage("ui.customer.title", String.valueOf(viewModel.getId().get()), company.getName());
@@ -96,7 +93,15 @@ public class CompanyCustomerWindowController extends AbstEntityController<Compan
@Override @Override
public CompanyCustomerService getViewModelService() { public CompanyCustomerService getViewModelService() {
return companyCustomerService; return getCachedBean(CompanyCustomerService.class);
}
public CompanyService getCompanyService() {
return getCachedBean(CompanyService.class);
}
public CompanyContactService getCompanyContactService() {
return getCachedBean(CompanyContactService.class);
} }
@Override @Override
@@ -119,6 +124,4 @@ public class CompanyCustomerWindowController extends AbstEntityController<Compan
DesktopUtils.showInExplorer(file); DesktopUtils.showInExplorer(file);
} }
} }

View File

@@ -1,24 +1,26 @@
package com.ecep.contract.manager.ds.customer.controller; package com.ecep.contract.controller.customer;
import java.time.LocalDate;
import java.time.LocalDateTime;
import org.springframework.data.jpa.domain.Specification;
import com.ecep.contract.SpringApp;
import com.ecep.contract.util.FxmlPath;
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.vm.CustomerEntityViewModel;
import com.ecep.contract.manager.SpringApp;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomer;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomerEntity;
import com.ecep.contract.manager.ds.customer.model.CustomerCatalog;
import com.ecep.contract.manager.ds.customer.service.CompanyCustomerEntityService;
import com.ecep.contract.manager.ds.customer.vo.CustomerEntityViewModel;
import com.ecep.contract.manager.ds.other.EmployeeStringConverter;
import com.ecep.contract.manager.ds.other.EntityStringConverter;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.table.cell.LocalDateTimeTableCell;
import com.ecep.contract.manager.util.SpecificationUtils;
import javafx.scene.control.MenuItem; import javafx.scene.control.MenuItem;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import lombok.Setter; import lombok.Setter;
import org.springframework.data.jpa.domain.Specification;
import java.time.LocalDate;
import java.time.LocalDateTime;
@FxmlPath("/ui/company/customer/customer-tab-entity.fxml") @FxmlPath("/ui/company/customer/customer-tab-entity.fxml")
public class CustomerTabSkinEntity public class CustomerTabSkinEntity

View File

@@ -1,24 +1,14 @@
package com.ecep.contract.manager.ds.customer.controller; package com.ecep.contract.controller.customer;
import com.ecep.contract.manager.SpringApp; import com.ecep.contract.*;
import com.ecep.contract.manager.ds.company.CompanyFileUtils; import com.ecep.contract.constant.CompanyCustomerConstant;
import com.ecep.contract.manager.ds.company.model.Company; import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
import com.ecep.contract.manager.ds.customer.CompanyCustomerFileType; import com.ecep.contract.model.*;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomer; import com.ecep.contract.service.CompanyCustomerFileService;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomerFile; import com.ecep.contract.service.CompanyCustomerService;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomerFileTypeLocal; import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.manager.ds.customer.repository.CompanyCustomerFileTypeLocalRepository; import com.ecep.contract.util.UITools;
import com.ecep.contract.manager.ds.customer.service.CompanyCustomerFileService; import com.ecep.contract.vm.CompanyCustomerFileViewModel;
import com.ecep.contract.manager.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.manager.ds.customer.vo.CompanyCustomerFileViewModel;
import com.ecep.contract.manager.ds.other.model.BaseEnumEntity;
import com.ecep.contract.manager.ui.table.EditableEntityTableTabSkin;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.Message;
import com.ecep.contract.manager.util.DesktopUtils;
import com.ecep.contract.manager.util.MyDateTimeUtils;
import com.ecep.contract.manager.util.SpecificationUtils;
import com.ecep.contract.manager.util.UITools;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.collections.ObservableMap; import javafx.collections.ObservableMap;
@@ -30,13 +20,13 @@ import javafx.scene.input.Dragboard;
import javafx.scene.input.TransferMode; import javafx.scene.input.TransferMode;
import lombok.Setter; import lombok.Setter;
import org.hibernate.Hibernate; import org.hibernate.Hibernate;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.io.File; import java.io.File;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.function.Consumer; import java.util.function.Consumer;
@@ -49,7 +39,6 @@ public class CustomerTabSkinFile
@Setter @Setter
private CompanyCustomerFileService companyCustomerFileService; private CompanyCustomerFileService companyCustomerFileService;
public TableColumn<CompanyCustomerFileViewModel, Number> fileTable_idColumn; public TableColumn<CompanyCustomerFileViewModel, Number> fileTable_idColumn;
public TableColumn<CompanyCustomerFileViewModel, String> fileTable_typeColumn; public TableColumn<CompanyCustomerFileViewModel, String> fileTable_typeColumn;
public TableColumn<CompanyCustomerFileViewModel, String> fileTable_filePathColumn; public TableColumn<CompanyCustomerFileViewModel, String> fileTable_filePathColumn;
@@ -83,10 +72,10 @@ public class CustomerTabSkinFile
} }
@Override @Override
public Specification<CompanyCustomerFile> getSpecification(CompanyCustomer parent) { public Map<String, Object> getSpecification(CompanyCustomer parent) {
return SpecificationUtils.and(getSpecification(), (root, query, builder) -> { Map<String, Object> params = getSpecification();
return builder.equal(root.get("customer"), parent); params.put("customer", parent.getId());
}); return params;
} }
@Override @Override
@@ -98,7 +87,8 @@ public class CustomerTabSkinFile
table.disableProperty().bind(viewModel.getPath().isEmpty()); table.disableProperty().bind(viewModel.getPath().isEmpty());
fileTable_idColumn.setCellValueFactory(param -> param.getValue().getId()); fileTable_idColumn.setCellValueFactory(param -> param.getValue().getId());
ObservableMap<CompanyCustomerFileType, CompanyCustomerFileTypeLocal> observableMapByLocal = SpringApp.getBean(CompanyCustomerFileTypeLocalRepository.class).getObservableMapByLocal(); ObservableMap<CompanyCustomerFileType, CompanyCustomerFileTypeLocal> observableMapByLocal = SpringApp
.getBean(CompanyCustomerFileTypeLocalRepository.class).getObservableMapByLocal();
fileTable_typeColumn.setCellValueFactory(param -> Bindings.valueAt(observableMapByLocal, fileTable_typeColumn.setCellValueFactory(param -> Bindings.valueAt(observableMapByLocal,
param.getValue().getType()).map(BaseEnumEntity::getValue)); param.getValue().getType()).map(BaseEnumEntity::getValue));
@@ -150,7 +140,8 @@ public class CustomerTabSkinFile
CompanyCustomerFileType fileType = item.getType().get(); CompanyCustomerFileType fileType = item.getType().get();
if (fileType == CompanyCustomerFileType.EvaluationForm) { if (fileType == CompanyCustomerFileType.EvaluationForm) {
// 文件不是 Excel 文件时打开编辑UI // 文件不是 Excel 文件时打开编辑UI
if (!CompanyFileUtils.withExtensions(item.getFilePath().get(), CompanyFileUtils.XLS, CompanyFileUtils.XLSX)) { if (!CompanyFileUtils.withExtensions(item.getFilePath().get(), CompanyFileUtils.XLS,
CompanyFileUtils.XLSX)) {
CompanyCustomerEvaluationFormFileWindowController.show(item, controller.root.getScene().getWindow()); CompanyCustomerEvaluationFormFileWindowController.show(item, controller.root.getScene().getWindow());
return; return;
} }
@@ -175,12 +166,13 @@ public class CustomerTabSkinFile
return; return;
} }
CompanyCustomer companyCustomer = getParent(); CompanyCustomer companyCustomer = getParent();
LocalDate nextSignDate = getCompanyCustomerFileService().getNextSignDate(companyCustomer, this::setStatus); LocalDate nextSignDate = getCompanyCustomerFileService().getNextSignDate(companyCustomer, ((level, message) -> setStatus(message)));
if (nextSignDate != null && files.size() == 1) { if (nextSignDate != null && files.size() == 1) {
File file = files.getFirst(); File file = files.getFirst();
String fileName = file.getName(); String fileName = file.getName();
if (fileName.startsWith("S")) { if (fileName.startsWith("S")) {
String destFileName = CompanyCustomerService.EVALUATION_FORM_NAME2 + "_" + MyDateTimeUtils.format(nextSignDate) String destFileName = CompanyCustomerConstant.EVALUATION_FORM_NAME2 + "_"
+ MyDateTimeUtils.format(nextSignDate)
+ "." + StringUtils.getFilenameExtension(fileName); + "." + StringUtils.getFilenameExtension(fileName);
File dest = new File(dir, destFileName); File dest = new File(dir, destFileName);
if (file.renameTo(dest)) { if (file.renameTo(dest)) {
@@ -195,7 +187,8 @@ public class CustomerTabSkinFile
CompanyCustomerFileViewModel model = new CompanyCustomerFileViewModel(); CompanyCustomerFileViewModel model = new CompanyCustomerFileViewModel();
model.update(saved); model.update(saved);
dataSet.add(model); dataSet.add(model);
CompanyCustomerEvaluationFormFileWindowController.show(model, getTableView().getScene().getWindow()); CompanyCustomerEvaluationFormFileWindowController.show(model,
getTableView().getScene().getWindow());
}); });
return; return;
} }
@@ -226,7 +219,7 @@ public class CustomerTabSkinFile
CompanyCustomerService customerService = getCompanyCustomerService(); CompanyCustomerService customerService = getCompanyCustomerService();
try { try {
CompanyCustomer companyCustomer = customerService.findById(viewModel.getId().get()); CompanyCustomer companyCustomer = customerService.findById(viewModel.getId().get());
if (customerService.reBuildingFiles(companyCustomer, this::setStatus)) { if (customerService.reBuildingFiles(companyCustomer, (level, message) -> setStatus(message))) {
loadTableDataSet(); loadTableDataSet();
} }
} catch (Exception e) { } catch (Exception e) {
@@ -270,7 +263,6 @@ public class CustomerTabSkinFile
return false; return false;
} }
public void onFileTableMoveToCompanyPathAction(ActionEvent event) { public void onFileTableMoveToCompanyPathAction(ActionEvent event) {
Company company = viewModel.getCompany().get(); Company company = viewModel.getCompany().get();
if (!Hibernate.isInitialized(company)) { if (!Hibernate.isInitialized(company)) {
@@ -318,11 +310,10 @@ public class CustomerTabSkinFile
deleteRow(selectedItem); deleteRow(selectedItem);
// getCompanyCustomerService().deleteFileById(selectedItem.getId().get()); // getCompanyCustomerService().deleteFileById(selectedItem.getId().get());
// dataSet.remove(selectedItem); // dataSet.remove(selectedItem);
} }
private void initializeTask(Task<Object> task, String prefix, Consumer<String> consumer) { private void initializeTask(Task<Object> task, String prefix, Consumer<String> consumer) {
task.setOnScheduled(e -> { task.setOnScheduled(e -> {
consumer.accept("正在" + prefix + ",请稍后..."); consumer.accept("正在" + prefix + ",请稍后...");
@@ -351,11 +342,10 @@ public class CustomerTabSkinFile
loadTableDataSet(); loadTableDataSet();
} }
public void onCalcNextSignDateAction(ActionEvent event) { public void onCalcNextSignDateAction(ActionEvent event) {
UITools.showDialogAndWait("计算客户下一个评价日期", "依据已有的客户评估表和登记采购的合同计算下一个评估日期", ds -> { UITools.showDialogAndWait("计算客户下一个评价日期", "依据已有的客户评估表和登记采购的合同计算下一个评估日期", ds -> {
CompanyCustomer companyCustomer = getCompanyCustomerService().findById(viewModel.getId().get()); CompanyCustomer companyCustomer = getCompanyCustomerService().findById(viewModel.getId().get());
LocalDate nextSignDate = getCompanyCustomerFileService().getNextSignDate(companyCustomer, msg -> { LocalDate nextSignDate = getCompanyCustomerFileService().getNextSignDate(companyCustomer, (level, msg) -> {
Platform.runLater(() -> { Platform.runLater(() -> {
ds.add(msg); ds.add(msg);
}); });
@@ -368,7 +358,6 @@ public class CustomerTabSkinFile
}); });
} }
class FileTableFilePathTableCell extends TableCell<CompanyCustomerFileViewModel, String> { class FileTableFilePathTableCell extends TableCell<CompanyCustomerFileViewModel, String> {
@Override @Override
protected void updateItem(String item, boolean empty) { protected void updateItem(String item, boolean empty) {
@@ -388,7 +377,6 @@ public class CustomerTabSkinFile
} }
} }
private CompanyCustomerFileService getCompanyCustomerFileService() { private CompanyCustomerFileService getCompanyCustomerFileService() {
if (companyCustomerFileService == null) { if (companyCustomerFileService == null) {
companyCustomerFileService = SpringApp.getBean(CompanyCustomerFileService.class); companyCustomerFileService = SpringApp.getBean(CompanyCustomerFileService.class);

View File

@@ -1,29 +1,28 @@
package com.ecep.contract.manager.ds.customer.controller; package com.ecep.contract.controller.customer;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Map;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.project.satisfaction_survey.CustomerSatisfactionSurveyWindowController;
import com.ecep.contract.controller.table.cell.EmployeeTableCell;
import com.ecep.contract.controller.table.cell.ProjectTableCell;
import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.model.CustomerCatalog;
import com.ecep.contract.model.CustomerSatisfactionSurvey;
import com.ecep.contract.model.Employee;
import com.ecep.contract.model.Project;
import com.ecep.contract.service.CustomerSatisfactionSurveyService;
import com.ecep.contract.service.ProjectService;
import com.ecep.contract.vm.CustomerEntityViewModel;
import com.ecep.contract.vm.CustomerSatisfactionSurveyViewModel;
import com.ecep.contract.manager.ds.company.model.Company;
import com.ecep.contract.manager.ds.customer.model.CompanyCustomer;
import com.ecep.contract.manager.ds.customer.model.CustomerCatalog;
import com.ecep.contract.manager.ds.customer.vo.CustomerEntityViewModel;
import com.ecep.contract.manager.ds.other.EntityStringConverter;
import com.ecep.contract.manager.ds.project.service.ProjectService;
import com.ecep.contract.manager.ui.table.cell.EmployeeTableCell;
import com.ecep.contract.manager.ds.other.model.Employee;
import com.ecep.contract.manager.ds.project.controller.satisfaction_survey.CustomerSatisfactionSurveyWindowController;
import com.ecep.contract.manager.ds.project.model.CustomerSatisfactionSurvey;
import com.ecep.contract.manager.ds.project.model.Project;
import com.ecep.contract.manager.ds.project.service.CustomerSatisfactionSurveyService;
import com.ecep.contract.manager.ds.project.vo.CustomerSatisfactionSurveyViewModel;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.table.cell.ProjectTableCell;
import com.ecep.contract.manager.util.SpecificationUtils;
import javafx.scene.control.MenuItem; import javafx.scene.control.MenuItem;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import lombok.Setter; import lombok.Setter;
import org.springframework.data.jpa.domain.Specification;
import java.time.LocalDate;
import java.time.LocalDateTime;
@FxmlPath("/ui/company/customer/customer-tab-satisfaction-survey.fxml") @FxmlPath("/ui/company/customer/customer-tab-satisfaction-survey.fxml")
public class CustomerTabSkinSatisfactionSurvey public class CustomerTabSkinSatisfactionSurvey
@@ -41,8 +40,8 @@ public class CustomerTabSkinSatisfactionSurvey
public MenuItem entityTable_menu_refresh; public MenuItem entityTable_menu_refresh;
public MenuItem entityTable_menu_del; public MenuItem entityTable_menu_del;
@Setter @Setter
private ProjectService projectService; private ProjectService projectService;
@Setter @Setter
private CustomerSatisfactionSurveyService satisfactionSurveyService; private CustomerSatisfactionSurveyService satisfactionSurveyService;
@@ -55,7 +54,6 @@ private ProjectService projectService;
return controller.satisfactionTab; return controller.satisfactionTab;
} }
@Override @Override
public void initializeTab() { public void initializeTab() {
super.initializeTab(); super.initializeTab();
@@ -75,7 +73,6 @@ private ProjectService projectService;
entityTable_menu_del.setOnAction(this::onTableDeleteAction); entityTable_menu_del.setOnAction(this::onTableDeleteAction);
} }
private void initializeEntityTabCatalogColumn(TableColumn<CustomerEntityViewModel, String> column) { private void initializeEntityTabCatalogColumn(TableColumn<CustomerEntityViewModel, String> column) {
EntityStringConverter<CustomerCatalog> converter = new EntityStringConverter<>(); EntityStringConverter<CustomerCatalog> converter = new EntityStringConverter<>();
converter.setInitialized(v -> getCompanyCustomerService().findCatalogById(v.getId())); converter.setInitialized(v -> getCompanyCustomerService().findCatalogById(v.getId()));
@@ -102,14 +99,10 @@ private ProjectService projectService;
} }
@Override @Override
public Specification<CustomerSatisfactionSurvey> getSpecification(CompanyCustomer parent) { public Map<String, Object> getSpecification(CompanyCustomer parent) {
return SpecificationUtils.and(getSpecification(), (root, query, builder) -> { Map<String, Object> params = getSpecification();
Company company = parent.getCompany(); params.put("project.customer", parent.getId());
if (company == null) { return params;
return null;
}
return builder.equal(root.get("project").get("customer"), company);
});
} }
@Override @Override

View File

@@ -1,20 +1,28 @@
package com.ecep.contract.manager.ds.contract.controller.sale_order; package com.ecep.contract.controller.customer;
import com.ecep.contract.manager.ds.contract.model.SalesOrder;
import com.ecep.contract.manager.ds.contract.service.SaleOrdersService;
import com.ecep.contract.manager.ds.contract.vo.SalesOrderViewModel;
import com.ecep.contract.manager.ui.AbstEntityController;
import com.ecep.contract.manager.ui.FxmlPath;
import javafx.scene.control.*;
import javafx.stage.Stage;
import javafx.stage.Window;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.controller.AbstEntityController;
import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.controller.tab.SalesOrderTabSkinBase;
import com.ecep.contract.controller.tab.SalesOrderTabSkinBillVoucher;
import com.ecep.contract.controller.tab.SalesOrderTabSkinItems;
import com.ecep.contract.model.SalesOrder;
import com.ecep.contract.service.SaleOrdersService;
import com.ecep.contract.vm.SalesOrderViewModel;
import javafx.scene.control.Button;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
import javafx.stage.Window;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@Component @Component
@@ -41,19 +49,6 @@ public class SalesOrderWindowController extends AbstEntityController<SalesOrder,
show(SalesOrderWindowController.class, viewModel, window); show(SalesOrderWindowController.class, viewModel, window);
} }
@Autowired
private SaleOrdersService service;
@Override
protected SalesOrder loadEntity() {
return service.findById(viewModel.getId().get());
}
@Override
protected SalesOrder saveEntity(SalesOrder entity) {
return service.save(entity);
}
@Override @Override
public void show(Stage stage) { public void show(Stage stage) {
super.show(stage); super.show(stage);
@@ -69,6 +64,6 @@ public class SalesOrderWindowController extends AbstEntityController<SalesOrder,
@Override @Override
public SaleOrdersService getViewModelService() { public SaleOrdersService getViewModelService() {
return service; return getCachedBean(SaleOrdersService.class);
} }
} }

View File

@@ -1,22 +1,24 @@
package com.ecep.contract.manager.ds.other.controller.department; package com.ecep.contract.controller.department;
import java.util.List;
import org.springframework.data.domain.Pageable;
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.converter.EmployeeStringConverter;
import com.ecep.contract.model.Department;
import com.ecep.contract.model.Employee;
import com.ecep.contract.vm.DepartmentViewModel;
import com.ecep.contract.manager.ds.other.EmployeeStringConverter;
import com.ecep.contract.manager.ds.other.model.Department;
import com.ecep.contract.manager.ds.other.model.Employee;
import com.ecep.contract.manager.ds.other.vo.DepartmentViewModel;
import com.ecep.contract.manager.ui.AbstEntityManagerSkin;
import com.ecep.contract.manager.ui.table.EditableEntityTableTabSkin;
import com.ecep.contract.manager.ui.ManagerSkin;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import javafx.scene.control.cell.CheckBoxTableCell; import javafx.scene.control.cell.CheckBoxTableCell;
import javafx.scene.control.cell.ComboBoxTableCell; import javafx.scene.control.cell.ComboBoxTableCell;
import javafx.scene.control.cell.TextFieldTableCell; import javafx.scene.control.cell.TextFieldTableCell;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import java.util.List;
public class DepartmentManagerSkin public class DepartmentManagerSkin
extends AbstEntityManagerSkin<Department, DepartmentViewModel, DepartmentManagerSkin, DepartmentManagerWindowController> extends AbstEntityManagerSkin<Department, DepartmentViewModel, DepartmentManagerSkin, DepartmentManagerWindowController>

View File

@@ -1,20 +1,22 @@
package com.ecep.contract.manager.ds.other.controller.department; package com.ecep.contract.controller.department;
import com.ecep.contract.manager.ds.other.model.Department;
import com.ecep.contract.manager.ds.other.model.Employee;
import com.ecep.contract.manager.ds.other.service.DepartmentService;
import com.ecep.contract.manager.ds.other.vo.DepartmentViewModel;
import com.ecep.contract.manager.ui.AbstManagerWindowController;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.ViewModelService;
import javafx.event.ActionEvent;
import javafx.scene.control.TableColumn;
import javafx.stage.Stage;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.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.vm.DepartmentViewModel;
import javafx.event.ActionEvent;
import javafx.scene.control.TableColumn;
import javafx.stage.Stage;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@Component @Component

View File

@@ -1,12 +1,13 @@
package com.ecep.contract.manager.ds.other.controller.employee; 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.vm.EmployeeViewModel;
import com.ecep.contract.manager.ds.other.model.Employee;
import com.ecep.contract.manager.ds.other.service.EmployeeRoleService;
import com.ecep.contract.manager.ds.other.service.EmployeeService;
import com.ecep.contract.manager.ds.other.service.PermissionService;
import com.ecep.contract.manager.ds.other.vo.EmployeeViewModel;
import com.ecep.contract.manager.ui.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.manager.ui.tab.TabSkin;
import lombok.Setter; import lombok.Setter;
public abstract class AbstEmployeeBasedTabSkin public abstract class AbstEmployeeBasedTabSkin

View File

@@ -1,16 +1,18 @@
package com.ecep.contract.manager.ds.other.controller.employee; package com.ecep.contract.controller.employee;
import com.ecep.contract.manager.ds.other.model.Employee; import org.apache.poi.ss.formula.functions.T;
import com.ecep.contract.manager.ds.other.model.IdentityEntity;
import com.ecep.contract.manager.ds.other.service.EmployeeService;
import com.ecep.contract.manager.ds.other.vo.EmployeeBasedViewModel;
import com.ecep.contract.manager.ds.other.vo.EmployeeViewModel;
import com.ecep.contract.manager.ds.other.vo.IdentityViewModel;
import com.ecep.contract.manager.ui.table.AbstEntityTableTabSkin;
import com.ecep.contract.manager.ui.tab.TabSkin;
import com.ecep.contract.manager.util.SpecificationUtils;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
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.vm.EmployeeBasedViewModel;
import com.ecep.contract.vm.EmployeeViewModel;
import com.ecep.contract.vm.IdentityViewModel;
public abstract class AbstEmployeeTableTabSkin<T extends IdentityEntity, TV extends IdentityViewModel<T>> public abstract class AbstEmployeeTableTabSkin<T extends IdentityEntity, TV extends IdentityViewModel<T>>
extends AbstEntityTableTabSkin<EmployeeWindowController, Employee, EmployeeViewModel, T, TV> extends AbstEntityTableTabSkin<EmployeeWindowController, Employee, EmployeeViewModel, T, TV>
implements TabSkin { implements TabSkin {

View File

@@ -1,17 +1,17 @@
package com.ecep.contract.manager.ds.other.controller.employee; package com.ecep.contract.controller.employee;
import org.springframework.data.jpa.domain.Specification;
import com.ecep.contract.controller.AbstEntityManagerSkin;
import com.ecep.contract.controller.ManagerSkin;
import com.ecep.contract.ds.other.service.DepartmentService;
import com.ecep.contract.model.Employee;
import com.ecep.contract.ui.table.cell.DepartmentTableCell;
import com.ecep.contract.util.SpecificationUtils;
import com.ecep.contract.vm.EmployeeViewModel;
import com.ecep.contract.manager.ds.other.EntityStringConverter;
import com.ecep.contract.manager.ds.other.model.Department;
import com.ecep.contract.manager.ds.other.model.Employee;
import com.ecep.contract.manager.ds.other.service.DepartmentService;
import com.ecep.contract.manager.ds.other.vo.EmployeeViewModel;
import com.ecep.contract.manager.ui.AbstEntityManagerSkin;
import com.ecep.contract.manager.ui.ManagerSkin;
import com.ecep.contract.manager.ui.table.cell.DepartmentTableCell;
import com.ecep.contract.manager.util.SpecificationUtils;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.scene.control.cell.CheckBoxTableCell; import javafx.scene.control.cell.CheckBoxTableCell;
import org.springframework.data.jpa.domain.Specification;
public class EmployeeManagerSkin public class EmployeeManagerSkin
extends AbstEntityManagerSkin<Employee, EmployeeViewModel, EmployeeManagerSkin, EmployeeManagerWindowController> extends AbstEntityManagerSkin<Employee, EmployeeViewModel, EmployeeManagerSkin, EmployeeManagerWindowController>

View File

@@ -1,25 +1,27 @@
package com.ecep.contract.manager.ds.other.controller.employee; package com.ecep.contract.controller.employee;
import java.time.LocalDate;
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.vm.EmployeeViewModel;
import com.ecep.contract.manager.cloud.u8.EmployeesSyncTask;
import com.ecep.contract.manager.cloud.u8.YongYouU8Service;
import com.ecep.contract.manager.ds.other.model.Department;
import com.ecep.contract.manager.ds.other.model.Employee;
import com.ecep.contract.manager.ds.other.service.EmployeeService;
import com.ecep.contract.manager.ds.other.vo.EmployeeViewModel;
import com.ecep.contract.manager.ui.AbstManagerWindowController;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.util.UITools;
import javafx.concurrent.Task; import javafx.concurrent.Task;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.CheckBox; import javafx.scene.control.CheckBox;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import javafx.stage.Stage; import javafx.stage.Stage;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@@ -69,7 +71,7 @@ public class EmployeeManagerWindowController
*/ */
public void onSyncFromU8Action(ActionEvent event) { public void onSyncFromU8Action(ActionEvent event) {
Task<Object> task = new EmployeesSyncTask(); Task<Object> task = new EmployeesSyncTask();
UITools.showTaskDialogAndWait("" + YongYouU8Service.NAME + " 同步员工数据", task, null); UITools.showTaskDialogAndWait("" + CloudServiceConstant.U8_NAME + " 同步员工数据", task, null);
} }

View File

@@ -1,21 +1,23 @@
package com.ecep.contract.manager.ds.other.controller.employee; package com.ecep.contract.controller.employee;
import java.time.LocalDateTime;
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.model.Employee;
import com.ecep.contract.model.EmployeeAuthBind;
import com.ecep.contract.ui.table.cell.EmployeeTableCell;
import com.ecep.contract.vm.EmployeeAuthBindViewModel;
import com.ecep.contract.manager.ds.other.model.Employee;
import com.ecep.contract.manager.ds.other.model.EmployeeAuthBind;
import com.ecep.contract.manager.ds.other.service.EmployeeAuthBindService;
import com.ecep.contract.manager.ds.other.vo.EmployeeAuthBindViewModel;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.table.cell.EmployeeTableCell;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.scene.control.ContextMenu; import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem; import javafx.scene.control.MenuItem;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import lombok.Setter; import lombok.Setter;
import org.springframework.data.domain.Sort;
import java.time.LocalDateTime;
import java.util.List;
@FxmlPath("/ui/employee/employee-auth-bind.fxml") @FxmlPath("/ui/employee/employee-auth-bind.fxml")
public class EmployeeTabSkinAuthBind public class EmployeeTabSkinAuthBind

View File

@@ -1,15 +1,16 @@
package com.ecep.contract.manager.ds.other.controller.employee; package com.ecep.contract.controller.employee;
import com.ecep.contract.manager.ds.other.EntityStringConverter;
import com.ecep.contract.manager.ds.other.model.Department;
import com.ecep.contract.manager.ds.other.service.DepartmentService;
import com.ecep.contract.manager.ui.tab.TabSkin;
import com.ecep.contract.manager.util.UITools;
import javafx.scene.control.Tab;
import javafx.util.converter.LocalDateStringConverter;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import com.ecep.contract.UITools;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.ds.other.service.DepartmentService;
import com.ecep.contract.model.Department;
import javafx.scene.control.Tab;
import javafx.util.converter.LocalDateStringConverter;
public class EmployeeTabSkinBase public class EmployeeTabSkinBase
extends AbstEmployeeBasedTabSkin extends AbstEmployeeBasedTabSkin
implements TabSkin { implements TabSkin {

View File

@@ -1,17 +1,18 @@
package com.ecep.contract.manager.ds.other.controller.employee; 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.model.EmployeeLoginHistory;
import com.ecep.contract.ui.table.cell.LocalDateTimeTableCell;
import com.ecep.contract.vm.EmployeeLoginHistoryViewModel;
import com.ecep.contract.manager.ds.other.model.EmployeeLoginHistory;
import com.ecep.contract.manager.ds.other.service.EmployeeLoginHistoryService;
import com.ecep.contract.manager.ds.other.vo.EmployeeLoginHistoryViewModel;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.tab.TabSkin;
import com.ecep.contract.manager.ui.table.cell.LocalDateTimeTableCell;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import java.time.LocalDateTime;
@FxmlPath("/ui/employee/employee-login-history.fxml") @FxmlPath("/ui/employee/employee-login-history.fxml")
public class EmployeeTabSkinLoginHistory public class EmployeeTabSkinLoginHistory
extends AbstEmployeeTableTabSkin<EmployeeLoginHistory, EmployeeLoginHistoryViewModel> extends AbstEmployeeTableTabSkin<EmployeeLoginHistory, EmployeeLoginHistoryViewModel>

View File

@@ -1,18 +1,20 @@
package com.ecep.contract.manager.ds.other.controller.employee; package com.ecep.contract.controller.employee;
import java.util.List;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import com.ecep.contract.Desktop;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.model.Employee;
import com.ecep.contract.model.EmployeeRole;
import com.ecep.contract.manager.Desktop;
import com.ecep.contract.manager.ds.other.model.Employee;
import com.ecep.contract.manager.ds.other.model.EmployeeRole;
import com.ecep.contract.manager.ui.tab.TabSkin;
import javafx.beans.property.BooleanProperty; import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleBooleanProperty;
import javafx.collections.ListChangeListener; import javafx.collections.ListChangeListener;
import javafx.scene.control.ListCell; import javafx.scene.control.ListCell;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import java.util.List;
public class EmployeeTabSkinRole public class EmployeeTabSkinRole
extends AbstEmployeeBasedTabSkin extends AbstEmployeeBasedTabSkin

View File

@@ -1,18 +1,5 @@
package com.ecep.contract.manager.ds.other.controller.employee; package com.ecep.contract.controller.employee;
import com.ecep.contract.manager.ds.other.model.Employee;
import com.ecep.contract.manager.ds.other.model.EmployeeRole;
import com.ecep.contract.manager.ds.other.service.EmployeeService;
import com.ecep.contract.manager.ds.other.vo.EmployeeViewModel;
import com.ecep.contract.manager.ui.AbstEntityController;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.ViewModelService;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import javafx.stage.Window;
import javafx.stage.WindowEvent;
import lombok.Getter;
import org.controlsfx.control.ListSelectionView; import org.controlsfx.control.ListSelectionView;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -21,6 +8,24 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.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.vm.EmployeeViewModel;
import javafx.scene.control.CheckBox;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.stage.Window;
import javafx.stage.WindowEvent;
import lombok.Getter;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@Component @Component

View File

@@ -1,16 +1,16 @@
package com.ecep.contract.manager.ds.other.controller.inventory; package com.ecep.contract.controller.inventory;
import java.util.function.Function; import java.util.function.Function;
import com.ecep.contract.manager.ds.other.EntityStringConverter; import com.ecep.contract.controller.AbstEntityManagerSkin;
import com.ecep.contract.manager.ds.other.model.Inventory; import com.ecep.contract.controller.table.LocalDateFieldTableCell;
import com.ecep.contract.manager.ds.other.model.InventoryCatalog; import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.manager.ds.other.service.InventoryCatalogService; import com.ecep.contract.ds.other.service.InventoryCatalogService;
import com.ecep.contract.manager.ds.other.service.InventoryService; import com.ecep.contract.ds.other.service.InventoryService;
import com.ecep.contract.manager.ds.other.vo.InventoryViewModel; import com.ecep.contract.model.Inventory;
import com.ecep.contract.manager.ui.AbstEntityManagerSkin; import com.ecep.contract.model.InventoryCatalog;
import com.ecep.contract.manager.ui.table.cell.LocalDateTimeTableCell; import com.ecep.contract.ui.table.cell.LocalDateTimeTableCell;
import com.ecep.contract.manager.ui.util.LocalDateFieldTableCell; import com.ecep.contract.vm.InventoryViewModel;
import javafx.beans.property.Property; import javafx.beans.property.Property;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;

View File

@@ -1,4 +1,4 @@
package com.ecep.contract.manager.ds.other.controller.inventory; package com.ecep.contract.controller.inventory;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -8,13 +8,14 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.manager.ds.other.model.Inventory; import com.ecep.contract.UITools;
import com.ecep.contract.manager.ds.other.model.InventoryCatalog; import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.manager.ds.other.service.InventoryService; import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.manager.ds.other.vo.InventoryViewModel; import com.ecep.contract.ds.other.controller.InventorySyncTask;
import com.ecep.contract.manager.ui.AbstManagerWindowController; import com.ecep.contract.ds.other.service.InventoryService;
import com.ecep.contract.manager.ui.FxmlPath; import com.ecep.contract.model.Inventory;
import com.ecep.contract.manager.util.UITools; import com.ecep.contract.model.InventoryCatalog;
import com.ecep.contract.vm.InventoryViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.fxml.FXML; import javafx.fxml.FXML;

View File

@@ -1,19 +1,26 @@
package com.ecep.contract.manager.ds.other.controller.inventory; package com.ecep.contract.controller.inventory;
import java.text.NumberFormat;
import java.time.format.DateTimeFormatter;
import java.util.function.Consumer;
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.vm.InventoryViewModel;
import com.ecep.contract.manager.cloud.u8.ctx.InventoryCtx;
import com.ecep.contract.manager.ds.other.EmployeeStringConverter;
import com.ecep.contract.manager.ds.other.EntityStringConverter;
import com.ecep.contract.manager.ds.other.model.Inventory;
import com.ecep.contract.manager.ds.other.model.InventoryCatalog;
import com.ecep.contract.manager.ds.other.service.InventoryCatalogService;
import com.ecep.contract.manager.ds.other.service.InventoryService;
import com.ecep.contract.manager.ds.other.vo.InventoryViewModel;
import com.ecep.contract.manager.ui.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.manager.ui.table.EditableEntityTableTabSkin;
import com.ecep.contract.manager.ui.MessageHolder;
import com.ecep.contract.manager.ui.tab.TabSkin;
import com.ecep.contract.manager.util.MyDateTimeUtils;
import com.ecep.contract.manager.util.UITools;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleDoubleProperty; import javafx.beans.property.SimpleDoubleProperty;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
@@ -24,11 +31,6 @@ import javafx.util.converter.LocalDateStringConverter;
import javafx.util.converter.LocalDateTimeStringConverter; import javafx.util.converter.LocalDateTimeStringConverter;
import javafx.util.converter.NumberStringConverter; import javafx.util.converter.NumberStringConverter;
import lombok.Setter; import lombok.Setter;
import org.springframework.util.StringUtils;
import java.text.NumberFormat;
import java.time.format.DateTimeFormatter;
import java.util.function.Consumer;
public class InventoryTabSkinBase public class InventoryTabSkinBase
extends AbstEntityBasedTabSkin<InventoryWindowController, Inventory, InventoryViewModel> extends AbstEntityBasedTabSkin<InventoryWindowController, Inventory, InventoryViewModel>
@@ -84,65 +86,83 @@ public class InventoryTabSkinBase
catalogConverter.setFromString(getCatalogService()::findByName); catalogConverter.setFromString(getCatalogService()::findByName);
UITools.autoCompletion(controller.catalogField, viewModel.getCatalog(), catalogConverter); UITools.autoCompletion(controller.catalogField, viewModel.getCatalog(), catalogConverter);
controller.purchaseTaxRateField.textProperty().bindBidirectional(viewModel.getPurchaseTaxRate(), new NumberStringConverter()); controller.purchaseTaxRateField.textProperty().bindBidirectional(viewModel.getPurchaseTaxRate(),
new NumberStringConverter());
// 采购价 // 采购价
bindPriceField(controller.purchasePriceField, viewModel.getPurchasePrice(), currencyStringConverter, viewModel::updatePurchasePrice); bindPriceField(controller.purchasePriceField, viewModel.getPurchasePrice(), currencyStringConverter,
bindPriceField(controller.purchaseTaxPriceField, viewModel.getPurchaseTaxPrice(), currencyStringConverter, viewModel::updatePurchaseTaxPrice); viewModel::updatePurchasePrice);
bindPriceField(controller.purchaseTaxPriceField, viewModel.getPurchaseTaxPrice(), currencyStringConverter,
viewModel::updatePurchaseTaxPrice);
controller.saleTaxRateField.textProperty().bindBidirectional(viewModel.getSaleTaxRate(), new NumberStringConverter()); controller.saleTaxRateField.textProperty().bindBidirectional(viewModel.getSaleTaxRate(),
new NumberStringConverter());
// 销售价 // 销售价
bindPriceField(controller.salePriceField, viewModel.getSalePrice(), currencyStringConverter, viewModel::updateSalePrice); bindPriceField(controller.salePriceField, viewModel.getSalePrice(), currencyStringConverter,
bindPriceField(controller.saleTaxPriceField, viewModel.getSaleTaxPrice(), currencyStringConverter, viewModel::updateSaleTaxPrice); viewModel::updateSalePrice);
bindPriceField(controller.saleTaxPriceField, viewModel.getSaleTaxPrice(), currencyStringConverter,
viewModel::updateSaleTaxPrice);
// 采购价不能大于销售价 // 采购价不能大于销售价
Bindings.greaterThan(viewModel.getPurchasePrice(), viewModel.getSalePrice()).addListener((observable, oldValue, newValue) -> { Bindings.greaterThan(viewModel.getPurchasePrice(), viewModel.getSalePrice())
if (newValue) { .addListener((observable, oldValue, newValue) -> {
controller.purchasePriceField.getStyleClass().add("error"); if (newValue) {
controller.salePriceField.getStyleClass().add("error"); controller.purchasePriceField.getStyleClass().add("error");
} else { controller.salePriceField.getStyleClass().add("error");
controller.purchasePriceField.getStyleClass().remove("error"); } else {
controller.salePriceField.getStyleClass().remove("error"); controller.purchasePriceField.getStyleClass().remove("error");
} controller.salePriceField.getStyleClass().remove("error");
}); }
Bindings.greaterThan(viewModel.getPurchaseTaxPrice(), viewModel.getSaleTaxPrice()).addListener((observable, oldValue, newValue) -> { });
if (newValue) { Bindings.greaterThan(viewModel.getPurchaseTaxPrice(), viewModel.getSaleTaxPrice())
controller.purchaseTaxPriceField.getStyleClass().add("error"); .addListener((observable, oldValue, newValue) -> {
controller.saleTaxPriceField.getStyleClass().add("error"); if (newValue) {
} else { controller.purchaseTaxPriceField.getStyleClass().add("error");
controller.purchaseTaxPriceField.getStyleClass().remove("error"); controller.saleTaxPriceField.getStyleClass().add("error");
controller.saleTaxPriceField.getStyleClass().remove("error"); } else {
} controller.purchaseTaxPriceField.getStyleClass().remove("error");
}); controller.saleTaxPriceField.getStyleClass().remove("error");
}
});
EmployeeStringConverter employeeStringConverter = getBean(EmployeeStringConverter.class); EmployeeStringConverter employeeStringConverter = getBean(EmployeeStringConverter.class);
UITools.autoCompletion(controller.creatorField, viewModel.getCreator(), employeeStringConverter); UITools.autoCompletion(controller.creatorField, viewModel.getCreator(), employeeStringConverter);
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(MyDateTimeUtils.DEFAULT_DATE_FORMAT_PATTERN); DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(MyDateTimeUtils.DEFAULT_DATE_FORMAT_PATTERN);
controller.createTimeField.textProperty().bindBidirectional(viewModel.getCreateTime(), new LocalDateStringConverter(dateFormatter, null)); controller.createTimeField.textProperty().bindBidirectional(viewModel.getCreateTime(),
new LocalDateStringConverter(dateFormatter, null));
UITools.autoCompletion(controller.updaterField, viewModel.getUpdater(), employeeStringConverter); UITools.autoCompletion(controller.updaterField, viewModel.getUpdater(), employeeStringConverter);
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(MyDateTimeUtils.DEFAULT_DATETIME_FORMAT_PATTERN); DateTimeFormatter dateTimeFormatter = DateTimeFormatter
controller.updateDateField.textProperty().bindBidirectional(viewModel.getUpdateDate(), new LocalDateTimeStringConverter(dateTimeFormatter, null)); .ofPattern(MyDateTimeUtils.DEFAULT_DATETIME_FORMAT_PATTERN);
controller.updateDateField.textProperty().bindBidirectional(viewModel.getUpdateDate(),
new LocalDateTimeStringConverter(dateTimeFormatter, null));
controller.weightUnitField.textProperty().bindBidirectional(viewModel.getWeightUnit()); controller.weightUnitField.textProperty().bindBidirectional(viewModel.getWeightUnit());
controller.sizeUnitField.textProperty().bindBidirectional(viewModel.getSizeUnit()); controller.sizeUnitField.textProperty().bindBidirectional(viewModel.getSizeUnit());
controller.volumeUnitField.textProperty().bindBidirectional(viewModel.getVolumeUnit()); controller.volumeUnitField.textProperty().bindBidirectional(viewModel.getVolumeUnit());
controller.weightField.textProperty().bindBidirectional(viewModel.getWeight(), new NumberStringConverter()); controller.weightField.textProperty().bindBidirectional(viewModel.getWeight(), new NumberStringConverter());
controller.packagedWeightField.textProperty().bindBidirectional(viewModel.getPackagedWeight(), new NumberStringConverter()); controller.packagedWeightField.textProperty().bindBidirectional(viewModel.getPackagedWeight(),
controller.sizeLengthField.textProperty().bindBidirectional(viewModel.getSizeLength(), new NumberStringConverter()); new NumberStringConverter());
controller.sizeWidthField.textProperty().bindBidirectional(viewModel.getSizeWidth(), new NumberStringConverter()); controller.sizeLengthField.textProperty().bindBidirectional(viewModel.getSizeLength(),
controller.sizeHeightField.textProperty().bindBidirectional(viewModel.getSizeHeight(), new NumberStringConverter()); new NumberStringConverter());
controller.sizeWidthField.textProperty().bindBidirectional(viewModel.getSizeWidth(),
new NumberStringConverter());
controller.sizeHeightField.textProperty().bindBidirectional(viewModel.getSizeHeight(),
new NumberStringConverter());
controller.volumeField.textProperty().bindBidirectional(viewModel.getVolume(), new NumberStringConverter()); controller.volumeField.textProperty().bindBidirectional(viewModel.getVolume(), new NumberStringConverter());
controller.packagedSizeLengthField.textProperty().bindBidirectional(viewModel.getPackagedSizeLength(), new NumberStringConverter()); controller.packagedSizeLengthField.textProperty().bindBidirectional(viewModel.getPackagedSizeLength(),
controller.packagedSizeWidthField.textProperty().bindBidirectional(viewModel.getPackagedSizeWidth(), new NumberStringConverter()); new NumberStringConverter());
controller.packagedSizeHeightField.textProperty().bindBidirectional(viewModel.getPackagedSizeHeight(), new NumberStringConverter()); controller.packagedSizeWidthField.textProperty().bindBidirectional(viewModel.getPackagedSizeWidth(),
controller.packagedVolumeField.textProperty().bindBidirectional(viewModel.getPackagedVolume(), new NumberStringConverter()); new NumberStringConverter());
controller.packagedSizeHeightField.textProperty().bindBidirectional(viewModel.getPackagedSizeHeight(),
new NumberStringConverter());
controller.packagedVolumeField.textProperty().bindBidirectional(viewModel.getPackagedVolume(),
new NumberStringConverter());
controller.descriptionField.textProperty().bindBidirectional(viewModel.getDescription()); controller.descriptionField.textProperty().bindBidirectional(viewModel.getDescription());
} }
private void bindPriceField(TextField textField, SimpleDoubleProperty property, CurrencyStringConverter stringConverter, Consumer<Double> updater) { private void bindPriceField(TextField textField, SimpleDoubleProperty property,
CurrencyStringConverter stringConverter, Consumer<Double> updater) {
textField.setText(stringConverter.toString(property.get())); textField.setText(stringConverter.toString(property.get()));
property.addListener((observable, oldValue, newValue) -> { property.addListener((observable, oldValue, newValue) -> {
textField.setText(stringConverter.toString(newValue)); textField.setText(stringConverter.toString(newValue));

View File

@@ -1,18 +1,24 @@
package com.ecep.contract.manager.ds.other.controller.inventory; package com.ecep.contract.controller.inventory;
import java.text.NumberFormat;
import java.time.LocalDate;
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.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.vm.ContractViewModel;
import com.ecep.contract.vm.InventoryViewModel;
import com.ecep.contract.manager.ds.contract.controller.ContractWindowController;
import com.ecep.contract.manager.ds.contract.model.Contract;
import com.ecep.contract.manager.ds.contract.model.ContractItem;
import com.ecep.contract.manager.ds.contract.service.ContractItemService;
import com.ecep.contract.manager.ds.contract.service.ContractService;
import com.ecep.contract.manager.ds.contract.vo.ContractViewModel;
import com.ecep.contract.manager.ds.other.model.Inventory;
import com.ecep.contract.manager.ds.other.service.InventoryHistoryPriceService;
import com.ecep.contract.manager.ds.other.vo.InventoryViewModel;
import com.ecep.contract.manager.ui.table.AbstEntityTableTabSkin;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.tab.TabSkin;
import com.ecep.contract.manager.util.SpecificationUtils;
import jakarta.persistence.criteria.Root; import jakarta.persistence.criteria.Root;
import jakarta.persistence.criteria.Subquery; import jakarta.persistence.criteria.Subquery;
import javafx.scene.control.ContextMenu; import javafx.scene.control.ContextMenu;
@@ -21,14 +27,11 @@ import javafx.scene.control.Tab;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import javafx.util.converter.CurrencyStringConverter; import javafx.util.converter.CurrencyStringConverter;
import lombok.Setter; import lombok.Setter;
import org.springframework.data.jpa.domain.Specification;
import java.text.NumberFormat;
import java.time.LocalDate;
@FxmlPath("/ui/inventory/inventory-contract.fxml") @FxmlPath("/ui/inventory/inventory-contract.fxml")
public class InventoryTabSkinContracts public class InventoryTabSkinContracts
extends AbstEntityTableTabSkin<InventoryWindowController, Inventory, InventoryViewModel, Contract, ContractViewModel> extends
AbstEntityTableTabSkin<InventoryWindowController, Inventory, InventoryViewModel, Contract, ContractViewModel>
implements TabSkin { implements TabSkin {
public TableColumn<ContractViewModel, Number> idColumn; public TableColumn<ContractViewModel, Number> idColumn;
public TableColumn<ContractViewModel, String> nameColumn; public TableColumn<ContractViewModel, String> nameColumn;
@@ -77,7 +80,6 @@ public class InventoryTabSkinContracts
return controller.contractsTab; return controller.contractsTab;
} }
@Override @Override
public void initializeTable() { public void initializeTable() {
super.initializeTable(); super.initializeTable();

View File

@@ -1,28 +1,4 @@
package com.ecep.contract.manager.ds.other.controller.inventory; package com.ecep.contract.controller.inventory;
import com.ecep.contract.manager.ds.contract.ContractPayWay;
import com.ecep.contract.manager.ds.contract.model.Contract;
import com.ecep.contract.manager.ds.contract.model.ContractItem;
import com.ecep.contract.manager.ds.contract.service.ContractItemService;
import com.ecep.contract.manager.ds.contract.service.ContractService;
import com.ecep.contract.manager.ds.other.model.HistoryPrice;
import com.ecep.contract.manager.ds.other.model.Inventory;
import com.ecep.contract.manager.ds.other.model.InventoryHistoryPrice;
import com.ecep.contract.manager.ds.other.service.InventoryHistoryPriceService;
import com.ecep.contract.manager.ds.other.vo.InventoryHistoryPriceViewModel;
import com.ecep.contract.manager.ds.other.vo.InventoryViewModel;
import com.ecep.contract.manager.ui.table.AbstEntityTableTabSkin;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.tab.TabSkin;
import com.ecep.contract.manager.util.SpecificationUtils;
import javafx.event.ActionEvent;
import javafx.scene.control.*;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.util.converter.CurrencyStringConverter;
import javafx.util.converter.NumberStringConverter;
import lombok.Setter;
import org.hibernate.Hibernate;
import org.springframework.data.jpa.domain.Specification;
import java.text.NumberFormat; import java.text.NumberFormat;
import java.time.MonthDay; import java.time.MonthDay;
@@ -32,9 +8,40 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; 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.vm.InventoryHistoryPriceViewModel;
import com.ecep.contract.vm.InventoryViewModel;
import javafx.event.ActionEvent;
import javafx.scene.control.Button;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;
import javafx.scene.control.Tab;
import javafx.scene.control.TableColumn;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.util.converter.CurrencyStringConverter;
import javafx.util.converter.NumberStringConverter;
import lombok.Setter;
@FxmlPath("/ui/inventory/inventory-history-price.fxml") @FxmlPath("/ui/inventory/inventory-history-price.fxml")
public class InventoryTabSkinHistoryPrice public class InventoryTabSkinHistoryPrice
extends AbstEntityTableTabSkin<InventoryWindowController, Inventory, InventoryViewModel, InventoryHistoryPrice, InventoryHistoryPriceViewModel> extends
AbstEntityTableTabSkin<InventoryWindowController, Inventory, InventoryViewModel, InventoryHistoryPrice, InventoryHistoryPriceViewModel>
implements TabSkin { implements TabSkin {
public Button refreshBtn; public Button refreshBtn;
public TableColumn<InventoryHistoryPriceViewModel, Number> idColumn; public TableColumn<InventoryHistoryPriceViewModel, Number> idColumn;
@@ -66,7 +73,6 @@ public class InventoryTabSkinHistoryPrice
public TableColumn<InventoryHistoryPriceViewModel, Number> miniPurchaseTaxPriceColumn; public TableColumn<InventoryHistoryPriceViewModel, Number> miniPurchaseTaxPriceColumn;
public TableColumn<InventoryHistoryPriceViewModel, MonthDay> miniPurchasePriceDateColumn; public TableColumn<InventoryHistoryPriceViewModel, MonthDay> miniPurchasePriceDateColumn;
@Setter @Setter
InventoryHistoryPriceService service; InventoryHistoryPriceService service;
@Setter @Setter
@@ -109,7 +115,6 @@ public class InventoryTabSkinHistoryPrice
return controller.historyPriceTab; return controller.historyPriceTab;
} }
@Override @Override
public void initializeTable() { public void initializeTable() {
super.initializeTable(); super.initializeTable();
@@ -185,7 +190,6 @@ public class InventoryTabSkinHistoryPrice
} }
} }
List<ContractItem> items = getContractItemService().findAllByInventory(getParent()); List<ContractItem> items = getContractItemService().findAllByInventory(getParent());
items.stream().collect(Collectors.groupingBy(v -> { items.stream().collect(Collectors.groupingBy(v -> {
Contract contract = v.getContract(); Contract contract = v.getContract();
@@ -213,8 +217,10 @@ public class InventoryTabSkinHistoryPrice
return contract.getSetupDate(); return contract.getSetupDate();
})).ifPresent(v -> update(historyPrice.getLatestSalePrice(), v)); })).ifPresent(v -> update(historyPrice.getLatestSalePrice(), v));
list.stream().max(Comparator.comparing(ContractItem::getTaxPrice)).ifPresent(v -> update(historyPrice.getMaxSalePrice(), v)); list.stream().max(Comparator.comparing(ContractItem::getTaxPrice))
list.stream().min(Comparator.comparing(ContractItem::getTaxPrice)).ifPresent(v -> update(historyPrice.getMiniSalePrice(), v)); .ifPresent(v -> update(historyPrice.getMaxSalePrice(), v));
list.stream().min(Comparator.comparing(ContractItem::getTaxPrice))
.ifPresent(v -> update(historyPrice.getMiniSalePrice(), v));
} else if (ContractPayWay.PAY.equals(payWay)) { } else if (ContractPayWay.PAY.equals(payWay)) {
// 采购 // 采购
@@ -223,8 +229,10 @@ public class InventoryTabSkinHistoryPrice
return contract.getSetupDate(); return contract.getSetupDate();
})).ifPresent(v -> update(historyPrice.getLatestPurchasePrice(), v)); })).ifPresent(v -> update(historyPrice.getLatestPurchasePrice(), v));
list.stream().max(Comparator.comparing(ContractItem::getTaxPrice)).ifPresent(v -> update(historyPrice.getMaxPurchasePrice(), v)); list.stream().max(Comparator.comparing(ContractItem::getTaxPrice))
list.stream().min(Comparator.comparing(ContractItem::getTaxPrice)).ifPresent(v -> update(historyPrice.getMiniPurchasePrice(), v)); .ifPresent(v -> update(historyPrice.getMaxPurchasePrice(), v));
list.stream().min(Comparator.comparing(ContractItem::getTaxPrice))
.ifPresent(v -> update(historyPrice.getMiniPurchasePrice(), v));
} else { } else {
} }

View File

@@ -1,20 +1,27 @@
package com.ecep.contract.manager.ds.other.controller.inventory; package com.ecep.contract.controller.inventory;
import com.ecep.contract.manager.ds.other.model.Inventory;
import com.ecep.contract.manager.ds.other.service.InventoryService;
import com.ecep.contract.manager.ds.other.vo.InventoryViewModel;
import com.ecep.contract.manager.ui.AbstEntityController;
import com.ecep.contract.manager.ui.FxmlPath;
import javafx.beans.binding.Bindings;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import javafx.stage.WindowEvent;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.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.vm.InventoryViewModel;
import javafx.beans.binding.Bindings;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.stage.WindowEvent;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@Component @Component
@@ -31,7 +38,6 @@ public class InventoryWindowController extends AbstEntityController<Inventory, I
@FXML @FXML
public Tab contractsTab; public Tab contractsTab;
@FXML @FXML
public TextField nameField; public TextField nameField;
@FXML @FXML
@@ -97,14 +103,16 @@ public class InventoryWindowController extends AbstEntityController<Inventory, I
@FXML @FXML
public TextField packagedVolumeField; public TextField packagedVolumeField;
@Autowired @Autowired
private InventoryService service; private InventoryService service;
@Override @Override
public void onShown(WindowEvent windowEvent) { public void onShown(WindowEvent windowEvent) {
super.onShown(windowEvent); super.onShown(windowEvent);
getTitle().bind(Bindings.createStringBinding(() -> "[" + viewModel.getId().get() + "] 存货详情 " + viewModel.getName().getValue() + " " + viewModel.getSpecification().get(), viewModel.getName(), viewModel.getCode(), viewModel.getSpecification())); getTitle().bind(Bindings.createStringBinding(
() -> "[" + viewModel.getId().get() + "] 存货详情 " + viewModel.getName().getValue() + " "
+ viewModel.getSpecification().get(),
viewModel.getName(), viewModel.getCode(), viewModel.getSpecification()));
root.getScene().getStylesheets().add("/ui/inventory/inventory.css"); root.getScene().getStylesheets().add("/ui/inventory/inventory.css");
} }

View File

@@ -1,11 +1,11 @@
package com.ecep.contract.manager.ds.other.controller.permission; package com.ecep.contract.controller.permission;
import com.ecep.contract.manager.ds.other.model.EmployeeRole; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.manager.ds.other.service.EmployeeRoleService; import com.ecep.contract.ds.other.service.EmployeeRoleService;
import com.ecep.contract.manager.ds.other.service.FunctionService; import com.ecep.contract.ds.other.service.FunctionService;
import com.ecep.contract.manager.ds.other.service.PermissionService; import com.ecep.contract.ds.other.service.PermissionService;
import com.ecep.contract.manager.ds.other.vo.EmployeeRoleViewModel; import com.ecep.contract.model.EmployeeRole;
import com.ecep.contract.manager.ui.tab.AbstEntityBasedTabSkin; import com.ecep.contract.vm.EmployeeRoleViewModel;
public abstract class AbstEmployeeRoleBasedTabSkin public abstract class AbstEmployeeRoleBasedTabSkin
extends AbstEntityBasedTabSkin<EmployeeRoleWindowController, EmployeeRole, EmployeeRoleViewModel> { extends AbstEntityBasedTabSkin<EmployeeRoleWindowController, EmployeeRole, EmployeeRoleViewModel> {

View File

@@ -1,24 +1,23 @@
package com.ecep.contract.manager.ds.other.controller.permission; package com.ecep.contract.controller.permission;
import com.ecep.contract.manager.ds.other.model.Function;
import com.ecep.contract.manager.ds.other.service.FunctionService;
import com.ecep.contract.manager.ds.other.service.PermissionService;
import com.ecep.contract.manager.ds.other.vo.FunctionViewModel;
import com.ecep.contract.manager.ds.other.vo.PermissionViewModel;
import com.ecep.contract.manager.ui.AbstManagerWindowController;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.ViewModelService;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.stage.Stage;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Description; import org.springframework.context.annotation.Description;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.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.vm.FunctionViewModel;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.TableColumn;
import javafx.stage.Stage;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")

View File

@@ -1,16 +1,18 @@
package com.ecep.contract.manager.ds.other.controller.permission; 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.vm.EmployeeRoleViewModel;
import com.ecep.contract.manager.ds.other.model.EmployeeRole;
import com.ecep.contract.manager.ds.other.service.PermissionService;
import com.ecep.contract.manager.ds.other.vo.EmployeeRoleViewModel;
import com.ecep.contract.manager.ui.AbstEntityManagerSkin;
import com.ecep.contract.manager.ui.table.EditableEntityTableTabSkin;
import com.ecep.contract.manager.ui.ManagerSkin;
import javafx.scene.control.cell.CheckBoxTableCell; import javafx.scene.control.cell.CheckBoxTableCell;
import lombok.Setter; import lombok.Setter;
public class EmployeeRoleManagerSkin public class EmployeeRoleManagerSkin
extends AbstEntityManagerSkin<EmployeeRole, EmployeeRoleViewModel, EmployeeRoleManagerSkin, EmployeeRoleManagerWindowController> extends
AbstEntityManagerSkin<EmployeeRole, EmployeeRoleViewModel, EmployeeRoleManagerSkin, EmployeeRoleManagerWindowController>
implements ManagerSkin, EditableEntityTableTabSkin<EmployeeRole, EmployeeRoleViewModel> { implements ManagerSkin, EditableEntityTableTabSkin<EmployeeRole, EmployeeRoleViewModel> {
@Setter @Setter

View File

@@ -1,4 +1,4 @@
package com.ecep.contract.manager.ds.other.controller.permission; package com.ecep.contract.controller.permission;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -7,15 +7,14 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.manager.ds.other.model.EmployeeRole; import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.manager.ds.other.service.EmployeeRoleService; import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.manager.ds.other.service.PermissionService; import com.ecep.contract.ds.other.service.EmployeeRoleService;
import com.ecep.contract.manager.ds.other.vo.EmployeeRoleViewModel; import com.ecep.contract.ds.other.service.PermissionService;
import com.ecep.contract.manager.ui.AbstManagerWindowController; import com.ecep.contract.model.EmployeeRole;
import com.ecep.contract.manager.ui.FxmlPath; import com.ecep.contract.vm.EmployeeRoleViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import javafx.stage.Stage; import javafx.stage.Stage;

View File

@@ -1,7 +1,8 @@
package com.ecep.contract.manager.ds.other.controller.permission; package com.ecep.contract.controller.permission;
import com.ecep.contract.Desktop;
import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.manager.Desktop;
import com.ecep.contract.manager.ui.tab.TabSkin;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;
public class EmployeeRoleTabSkinBase extends AbstEmployeeRoleBasedTabSkin implements TabSkin { public class EmployeeRoleTabSkinBase extends AbstEmployeeRoleBasedTabSkin implements TabSkin {

View File

@@ -1,4 +1,4 @@
package com.ecep.contract.manager.ds.other.controller.permission; package com.ecep.contract.controller.permission;
import java.util.List; import java.util.List;
@@ -6,8 +6,8 @@ import org.controlsfx.control.ListSelectionView;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import com.ecep.contract.manager.ds.other.model.EmployeeRole; import com.ecep.contract.model.EmployeeRole;
import com.ecep.contract.manager.ds.other.model.Function; import com.ecep.contract.model.Function;
import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleBooleanProperty;
import javafx.collections.ListChangeListener; import javafx.collections.ListChangeListener;

View File

@@ -1,18 +1,5 @@
package com.ecep.contract.manager.ds.other.controller.permission; package com.ecep.contract.controller.permission;
import com.ecep.contract.manager.ds.other.model.EmployeeRole;
import com.ecep.contract.manager.ds.other.service.EmployeeRoleService;
import com.ecep.contract.manager.ds.other.service.PermissionService;
import com.ecep.contract.manager.ds.other.vo.EmployeeRoleViewModel;
import com.ecep.contract.manager.ui.AbstEntityController;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.ViewModelService;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import javafx.stage.Window;
import javafx.stage.WindowEvent;
import org.controlsfx.control.ListSelectionView; import org.controlsfx.control.ListSelectionView;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -21,6 +8,24 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.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.vm.EmployeeRoleViewModel;
import javafx.fxml.FXML;
import javafx.scene.control.CheckBox;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.stage.Window;
import javafx.stage.WindowEvent;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@@ -53,7 +58,7 @@ public class EmployeeRoleWindowController extends AbstEntityController<EmployeeR
*/ */
public Tab functionsTab; public Tab functionsTab;
public ListSelectionView<com.ecep.contract.manager.ds.other.model.Function> functionsField; public ListSelectionView<com.ecep.contract.model.Function> functionsField;
/* /*

View File

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

View File

@@ -1,8 +1,8 @@
package com.ecep.contract.manager.ds.other.controller.permission; package com.ecep.contract.controller.permission;
import com.ecep.contract.manager.ds.other.model.Function; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.manager.ds.other.vo.FunctionViewModel; import com.ecep.contract.model.Function;
import com.ecep.contract.manager.ui.tab.AbstEntityBasedTabSkin; import com.ecep.contract.vm.FunctionViewModel;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;

View File

@@ -1,16 +1,16 @@
package com.ecep.contract.manager.ds.other.controller.permission; package com.ecep.contract.controller.permission;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import com.ecep.contract.manager.ds.other.model.Function; import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.manager.ds.other.model.Permission; import com.ecep.contract.controller.table.AbstEntityTableTabSkin;
import com.ecep.contract.manager.ds.other.service.PermissionService; import com.ecep.contract.ds.other.service.PermissionService;
import com.ecep.contract.manager.ds.other.vo.FunctionViewModel; import com.ecep.contract.model.Function;
import com.ecep.contract.manager.ds.other.vo.PermissionViewModel; import com.ecep.contract.model.Permission;
import com.ecep.contract.manager.ui.table.AbstEntityTableTabSkin; import com.ecep.contract.util.SpecificationUtils;
import com.ecep.contract.manager.ui.FxmlPath; import com.ecep.contract.vm.FunctionViewModel;
import com.ecep.contract.manager.util.SpecificationUtils; import com.ecep.contract.vm.PermissionViewModel;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;

View File

@@ -1,16 +1,5 @@
package com.ecep.contract.manager.ds.other.controller.permission; package com.ecep.contract.controller.permission;
import com.ecep.contract.manager.ds.other.model.Function;
import com.ecep.contract.manager.ds.other.service.FunctionService;
import com.ecep.contract.manager.ds.other.vo.FunctionViewModel;
import com.ecep.contract.manager.ui.AbstEntityController;
import com.ecep.contract.manager.ui.FxmlPath;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import javafx.fxml.FXML;
import javafx.stage.Window;
import javafx.stage.WindowEvent;
import lombok.Getter;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -18,6 +7,23 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.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.vm.FunctionViewModel;
import javafx.fxml.FXML;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.stage.Window;
import javafx.stage.WindowEvent;
import lombok.Getter;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")
@Component @Component

View File

@@ -1,11 +1,21 @@
package com.ecep.contract.manager.ds.other.controller.permission; package com.ecep.contract.controller.permission;
import java.util.ArrayList;
import java.util.List;
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.vm.FunctionViewModel;
import com.ecep.contract.vm.PermissionViewModel;
import com.ecep.contract.manager.ds.other.model.Permission;
import com.ecep.contract.manager.ds.other.vo.FunctionViewModel;
import com.ecep.contract.manager.ds.other.vo.PermissionViewModel;
import com.ecep.contract.manager.ui.ManagerSkin;
import com.ecep.contract.manager.ui.table.TableTabSkin;
import com.ecep.contract.manager.util.UITools;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.beans.property.Property; import javafx.beans.property.Property;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
@@ -16,14 +26,6 @@ import javafx.scene.control.MenuItem;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView; import javafx.scene.control.TableView;
import lombok.Setter; import lombok.Setter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.jpa.domain.Specification;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.function.Function;
public class PermissionManagerSkin implements ManagerSkin, TableTabSkin<Permission, PermissionViewModel> { public class PermissionManagerSkin implements ManagerSkin, TableTabSkin<Permission, PermissionViewModel> {
private static final Logger logger = LoggerFactory.getLogger(PermissionManagerSkin.class); private static final Logger logger = LoggerFactory.getLogger(PermissionManagerSkin.class);
@@ -98,7 +100,7 @@ public class PermissionManagerSkin implements ManagerSkin, TableTabSkin<Permissi
protected void onTableCreateNewAction(ActionEvent event) { protected void onTableCreateNewAction(ActionEvent event) {
Permission newRow = new Permission(); Permission newRow = new Permission();
com.ecep.contract.manager.ds.other.model.Function function = controller.functionService.findById(viewModel.getId().get()); com.ecep.contract.model.Function function = controller.functionService.findById(viewModel.getId().get());
newRow.setFunction(function); newRow.setFunction(function);
Permission saved = controller.permissionService.save(newRow); Permission saved = controller.permissionService.save(newRow);

View File

@@ -1,10 +1,10 @@
package com.ecep.contract.manager.ds.project.controller; package com.ecep.contract.controller.project;
import com.ecep.contract.manager.ds.project.model.Project; import com.ecep.contract.controller.tab.AbstEntityBasedTabSkin;
import com.ecep.contract.manager.ds.project.service.ProjectService; import com.ecep.contract.controller.tab.TabSkin;
import com.ecep.contract.manager.ds.project.vo.ProjectViewModel; import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.manager.ui.tab.AbstEntityBasedTabSkin; import com.ecep.contract.model.Project;
import com.ecep.contract.manager.ui.tab.TabSkin; import com.ecep.contract.vm.ProjectViewModel;
public abstract class AbstProjectBasedTabSkin public abstract class AbstProjectBasedTabSkin
extends AbstEntityBasedTabSkin<ProjectWindowController, Project, ProjectViewModel> extends AbstEntityBasedTabSkin<ProjectWindowController, Project, ProjectViewModel>

View File

@@ -1,16 +1,17 @@
package com.ecep.contract.manager.ds.project.controller; package com.ecep.contract.controller.project;
import com.ecep.contract.manager.ds.other.model.IdentityEntity;
import com.ecep.contract.manager.ds.other.vo.IdentityViewModel;
import com.ecep.contract.manager.ds.project.model.Project;
import com.ecep.contract.manager.ds.project.service.ProjectService;
import com.ecep.contract.manager.ds.project.vo.ProjectBasedViewModel;
import com.ecep.contract.manager.ds.project.vo.ProjectViewModel;
import com.ecep.contract.manager.ui.table.AbstEntityTableTabSkin;
import com.ecep.contract.manager.ui.tab.TabSkin;
import com.ecep.contract.manager.util.SpecificationUtils;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
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.vm.IdentityViewModel;
import com.ecep.contract.vm.ProjectBasedViewModel;
import com.ecep.contract.vm.ProjectViewModel;
public abstract class AbstProjectTableTabSkin<T extends IdentityEntity, TV extends IdentityViewModel<T>> public abstract class AbstProjectTableTabSkin<T extends IdentityEntity, TV extends IdentityViewModel<T>>
extends AbstEntityTableTabSkin<ProjectWindowController, Project, ProjectViewModel, T, TV> extends AbstEntityTableTabSkin<ProjectWindowController, Project, ProjectViewModel, T, TV>
implements TabSkin { implements TabSkin {
@@ -23,7 +24,6 @@ public abstract class AbstProjectTableTabSkin<T extends IdentityEntity, TV exten
return controller.projectService; return controller.projectService;
} }
@Override @Override
protected TV createNewViewModel() { protected TV createNewViewModel() {
TV model = super.createNewViewModel(); TV model = super.createNewViewModel();

View File

@@ -1,16 +1,26 @@
package com.ecep.contract.manager.ds.project.controller; package com.ecep.contract.controller.project;
import java.time.LocalDate;
import java.util.Objects;
import java.util.function.Consumer;
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.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.vm.ProjectViewModel;
import com.ecep.contract.manager.Desktop;
import com.ecep.contract.manager.ds.other.EntityStringConverter;
import com.ecep.contract.manager.ui.BaseController;
import com.ecep.contract.manager.ds.other.model.Employee;
import com.ecep.contract.manager.ds.other.service.EmployeeService;
import com.ecep.contract.manager.ds.project.model.Project;
import com.ecep.contract.manager.ds.project.model.ProjectSaleType;
import com.ecep.contract.manager.ds.project.service.ProjectService;
import com.ecep.contract.manager.ds.project.service.SaleTypeService;
import com.ecep.contract.manager.ds.project.vo.ProjectViewModel;
import com.ecep.contract.manager.ui.FxmlPath;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.property.ObjectProperty; import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleObjectProperty;
@@ -26,14 +36,6 @@ import javafx.stage.Stage;
import javafx.stage.Window; import javafx.stage.Window;
import javafx.stage.WindowEvent; import javafx.stage.WindowEvent;
import javafx.util.converter.NumberStringConverter; import javafx.util.converter.NumberStringConverter;
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 java.time.LocalDate;
import java.util.Objects;
import java.util.function.Consumer;
@Lazy @Lazy
@Scope("prototype") @Scope("prototype")

View File

@@ -1,25 +1,25 @@
package com.ecep.contract.manager.ds.project.controller; package com.ecep.contract.controller.project;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import com.ecep.contract.manager.ui.table.cell.CompanyTableCell; import com.ecep.contract.controller.AbstEntityManagerSkin;
import com.ecep.contract.manager.ds.company.model.Company; import com.ecep.contract.controller.BaseController;
import com.ecep.contract.manager.ds.company.service.CompanyService; import com.ecep.contract.controller.ComboBoxUtils;
import com.ecep.contract.manager.ds.other.EntityStringConverter; import com.ecep.contract.controller.ManagerSkin;
import com.ecep.contract.manager.ds.project.model.ProductType; import com.ecep.contract.converter.EntityStringConverter;
import com.ecep.contract.manager.ds.project.model.Project; import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.manager.ds.project.model.ProjectSaleType; import com.ecep.contract.ds.project.service.ProductTypeService;
import com.ecep.contract.manager.ds.project.model.ProjectType; import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.manager.ds.project.service.ProductTypeService; import com.ecep.contract.ds.project.service.ProjectTypeService;
import com.ecep.contract.manager.ds.project.service.ProjectService; import com.ecep.contract.ds.project.service.SaleTypeService;
import com.ecep.contract.manager.ds.project.service.ProjectTypeService; import com.ecep.contract.model.Company;
import com.ecep.contract.manager.ds.project.service.SaleTypeService; import com.ecep.contract.model.ProductType;
import com.ecep.contract.manager.ds.project.vo.ProjectViewModel; import com.ecep.contract.model.Project;
import com.ecep.contract.manager.ui.AbstEntityManagerSkin; import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.manager.ui.BaseController; import com.ecep.contract.model.ProjectType;
import com.ecep.contract.manager.ui.ComboBoxUtils; import com.ecep.contract.ui.table.cell.CompanyTableCell;
import com.ecep.contract.manager.ui.ManagerSkin; import com.ecep.contract.util.SpecificationUtils;
import com.ecep.contract.manager.util.SpecificationUtils; import com.ecep.contract.vm.ProjectViewModel;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;

View File

@@ -1,4 +1,4 @@
package com.ecep.contract.manager.ds.project.controller; package com.ecep.contract.controller.project;
import java.time.LocalDate; import java.time.LocalDate;
@@ -9,19 +9,19 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ecep.contract.manager.ds.company.model.Company; import com.ecep.contract.controller.AbstManagerWindowController;
import com.ecep.contract.manager.ds.project.controller.industry.ProjectIndustryManagerWindowController; import com.ecep.contract.controller.BaseController;
import com.ecep.contract.manager.ds.project.controller.product_type.ProductTypeManagerWindowController; import com.ecep.contract.util.FxmlPath;
import com.ecep.contract.manager.ds.project.controller.project_type.ProjectTypeManagerWindowController; import com.ecep.contract.controller.project.industry.ProjectIndustryManagerWindowController;
import com.ecep.contract.manager.ds.project.controller.sale_type.ProjectSaleTypeManagerWindowController; import com.ecep.contract.controller.project.product_type.ProductTypeManagerWindowController;
import com.ecep.contract.manager.ds.project.controller.usage.ProductUsageManagerWindowController; import com.ecep.contract.controller.project.project_type.ProjectTypeManagerWindowController;
import com.ecep.contract.manager.ds.project.model.Project; import com.ecep.contract.controller.project.sale_type.ProjectSaleTypeManagerWindowController;
import com.ecep.contract.manager.ds.project.model.ProjectSaleType; import com.ecep.contract.controller.project.usage.ProductUsageManagerWindowController;
import com.ecep.contract.manager.ds.project.service.ProjectService; import com.ecep.contract.ds.project.service.ProjectService;
import com.ecep.contract.manager.ds.project.vo.ProjectViewModel; import com.ecep.contract.model.Company;
import com.ecep.contract.manager.ui.AbstManagerWindowController; import com.ecep.contract.model.Project;
import com.ecep.contract.manager.ui.BaseController; import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.manager.ui.FxmlPath; import com.ecep.contract.vm.ProjectViewModel;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.scene.control.ComboBox; import javafx.scene.control.ComboBox;

View File

@@ -1,14 +1,33 @@
package com.ecep.contract.manager.ds.project.controller; package com.ecep.contract.controller.project;
import java.util.Objects;
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;
import com.ecep.contract.model.ProductUsage;
import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectCost;
import com.ecep.contract.model.ProjectIndustry;
import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.model.ProjectType;
import com.ecep.contract.manager.ds.other.EmployeeStringConverter;
import com.ecep.contract.manager.ds.other.EntityStringConverter;
import com.ecep.contract.manager.ds.other.model.Employee;
import com.ecep.contract.manager.ds.other.service.EmployeeService;
import com.ecep.contract.manager.ds.project.model.*;
import com.ecep.contract.manager.ds.project.service.*;
import com.ecep.contract.manager.ui.ComboBoxUtils;
import com.ecep.contract.manager.ui.tab.TabSkin;
import com.ecep.contract.manager.util.UITools;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleObjectProperty;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
@@ -21,10 +40,6 @@ import javafx.scene.control.TextField;
import javafx.util.converter.LocalDateStringConverter; import javafx.util.converter.LocalDateStringConverter;
import javafx.util.converter.NumberStringConverter; import javafx.util.converter.NumberStringConverter;
import lombok.Setter; import lombok.Setter;
import org.springframework.util.StringUtils;
import java.util.Objects;
import java.util.stream.Stream;
/** /**
* 基础信息 * 基础信息

View File

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

View File

@@ -1,18 +1,19 @@
package com.ecep.contract.manager.ds.project.controller; 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.tab.TabSkin;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.model.Contract;
import com.ecep.contract.vm.ContractViewModel;
import com.ecep.contract.manager.ds.contract.controller.ContractWindowController;
import com.ecep.contract.manager.ds.contract.model.Contract;
import com.ecep.contract.manager.ds.contract.service.ContractService;
import com.ecep.contract.manager.ds.contract.vo.ContractViewModel;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.tab.TabSkin;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.scene.control.MenuItem; import javafx.scene.control.MenuItem;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import java.time.LocalDate;
@FxmlPath("/ui/project/project-tab-contract.fxml") @FxmlPath("/ui/project/project-tab-contract.fxml")
public class ProjectTabSkinContract public class ProjectTabSkinContract
extends AbstProjectTableTabSkin<Contract, ContractViewModel> extends AbstProjectTableTabSkin<Contract, ContractViewModel>

View File

@@ -1,30 +1,34 @@
package com.ecep.contract.manager.ds.project.controller; 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.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.vm.ProjectCostItemViewModel;
import com.ecep.contract.vm.ProjectCostViewModel;
import com.ecep.contract.manager.ds.contract.service.ContractItemService;
import com.ecep.contract.manager.ds.contract.vo.ProjectCostItemViewModel;
import com.ecep.contract.manager.ui.table.cell.EmployeeTableCell;
import com.ecep.contract.manager.ds.other.model.Employee;
import com.ecep.contract.manager.ds.project.controller.cost.ProjectCostWindowController;
import com.ecep.contract.manager.ds.project.model.Project;
import com.ecep.contract.manager.ds.project.model.ProjectCost;
import com.ecep.contract.manager.ds.project.model.ProjectCostItem;
import com.ecep.contract.manager.ds.project.service.ProjectCostItemService;
import com.ecep.contract.manager.ds.project.service.ProjectCostService;
import com.ecep.contract.manager.ds.project.vo.ProjectCostViewModel;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.tab.TabSkin;
import com.ecep.contract.manager.ui.table.cell.LocalDateTimeTableCell;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.scene.control.*; import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;
import javafx.scene.control.Tab;
import javafx.scene.control.TableColumn;
import javafx.scene.control.cell.TextFieldTableCell; import javafx.scene.control.cell.TextFieldTableCell;
import javafx.util.converter.CurrencyStringConverter; import javafx.util.converter.CurrencyStringConverter;
import javafx.util.converter.NumberStringConverter; import javafx.util.converter.NumberStringConverter;
import lombok.Setter; import lombok.Setter;
import java.text.NumberFormat;
import java.time.LocalDateTime;
@FxmlPath("/ui/project/project-tab-cost.fxml") @FxmlPath("/ui/project/project-tab-cost.fxml")
public class ProjectTabSkinCost public class ProjectTabSkinCost
extends AbstProjectTableTabSkin<ProjectCost, ProjectCostViewModel> extends AbstProjectTableTabSkin<ProjectCost, ProjectCostViewModel>

View File

@@ -1,22 +1,30 @@
package com.ecep.contract.manager.ds.project.controller; package com.ecep.contract.controller.project;
import java.util.List;
import java.util.function.BiFunction;
import org.controlsfx.control.textfield.AutoCompletionBinding;
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.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.manager.SpringApp;
import com.ecep.contract.manager.ds.company.CompanyStringConverter;
import com.ecep.contract.manager.ds.company.controller.CompanyWindowController;
import com.ecep.contract.manager.ds.company.model.Company;
import com.ecep.contract.manager.ds.company.model.CompanyBankAccount;
import com.ecep.contract.manager.ds.company.model.CompanyContact;
import com.ecep.contract.manager.ds.company.model.CompanyInvoiceInfo;
import com.ecep.contract.manager.ds.company.service.CompanyBankAccountService;
import com.ecep.contract.manager.ds.company.service.CompanyContactService;
import com.ecep.contract.manager.ds.company.service.CompanyInvoiceInfoService;
import com.ecep.contract.manager.ds.company.service.CompanyService;
import com.ecep.contract.manager.ds.other.EntityStringConverter;
import com.ecep.contract.manager.ds.other.model.Bank;
import com.ecep.contract.manager.ds.other.service.BankService;
import com.ecep.contract.manager.ui.FxmlPath;
import com.ecep.contract.manager.ui.tab.TabSkin;
import com.ecep.contract.manager.util.UITools;
import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.StringProperty; import javafx.beans.property.StringProperty;
import javafx.fxml.FXML; import javafx.fxml.FXML;
@@ -25,12 +33,6 @@ import javafx.scene.control.Label;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import javafx.util.StringConverter; import javafx.util.StringConverter;
import org.controlsfx.control.textfield.AutoCompletionBinding;
import org.hibernate.Hibernate;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.function.BiFunction;
@FxmlPath("/ui/project/project-tab-customer.fxml") @FxmlPath("/ui/project/project-tab-customer.fxml")
public class ProjectTabSkinCustomerInfo public class ProjectTabSkinCustomerInfo

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