Compare commits
2 Commits
c21269975d
...
928d10c681
| Author | SHA1 | Date | |
|---|---|---|---|
| 928d10c681 | |||
| fa6920806d |
@@ -4,13 +4,13 @@ import com.ecep.contract.MessageHolder;
|
|||||||
import com.ecep.contract.WebSocketClientTasker;
|
import com.ecep.contract.WebSocketClientTasker;
|
||||||
import com.ecep.contract.task.Tasker;
|
import com.ecep.contract.task.Tasker;
|
||||||
import com.ecep.contract.vo.CompanyCustomerVo;
|
import com.ecep.contract.vo.CompanyCustomerVo;
|
||||||
|
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户评估表更新任务
|
||||||
|
*/
|
||||||
public class CompanyCustomerEvaluationFormUpdateTask extends Tasker<Object> implements WebSocketClientTasker {
|
public class CompanyCustomerEvaluationFormUpdateTask extends Tasker<Object> implements WebSocketClientTasker {
|
||||||
private static final Logger logger = LoggerFactory.getLogger(CompanyCustomerEvaluationFormUpdateTask.class);
|
|
||||||
|
|
||||||
@Setter
|
@Setter
|
||||||
private CompanyCustomerVo customer;
|
private CompanyCustomerVo customer;
|
||||||
|
|
||||||
@@ -30,5 +30,4 @@ public class CompanyCustomerEvaluationFormUpdateTask extends Tasker<Object> impl
|
|||||||
return callRemoteTask(holder, getLocale(), customer.getId());
|
return callRemoteTask(holder, getLocale(), customer.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,20 +4,25 @@ import java.io.File;
|
|||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
import com.ecep.contract.controller.table.cell.CompanyCustomerFileTableTypeTableCell;
|
||||||
|
import com.ecep.contract.controller.table.cell.FilePathTableCell;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import com.ecep.contract.CustomerFileType;
|
import com.ecep.contract.CustomerFileType;
|
||||||
import com.ecep.contract.DesktopUtils;
|
import com.ecep.contract.DesktopUtils;
|
||||||
|
import com.ecep.contract.Message;
|
||||||
import com.ecep.contract.MyDateTimeUtils;
|
import com.ecep.contract.MyDateTimeUtils;
|
||||||
|
import com.ecep.contract.SpringApp;
|
||||||
import com.ecep.contract.constant.CompanyCustomerConstant;
|
import com.ecep.contract.constant.CompanyCustomerConstant;
|
||||||
import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
|
import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
|
||||||
import com.ecep.contract.controller.table.cell.CompanyCustomerFileTableTypeTableCell;
|
import com.ecep.contract.model.BaseEnumEntity;
|
||||||
import com.ecep.contract.controller.table.cell.FilePathTableCell;
|
|
||||||
import com.ecep.contract.service.CompanyCustomerEvaluationFormFileService;
|
import com.ecep.contract.service.CompanyCustomerEvaluationFormFileService;
|
||||||
import com.ecep.contract.service.CompanyCustomerFileService;
|
import com.ecep.contract.service.CompanyCustomerFileService;
|
||||||
import com.ecep.contract.service.CompanyCustomerFileTypeService;
|
import com.ecep.contract.service.CompanyCustomerFileTypeService;
|
||||||
import com.ecep.contract.task.CompanyCustomerRebuildFilesTasker;
|
import com.ecep.contract.service.CompanyCustomerService;
|
||||||
import com.ecep.contract.util.FileUtils;
|
import com.ecep.contract.util.FileUtils;
|
||||||
import com.ecep.contract.util.FxmlPath;
|
import com.ecep.contract.util.FxmlPath;
|
||||||
import com.ecep.contract.util.ParamUtils;
|
import com.ecep.contract.util.ParamUtils;
|
||||||
@@ -27,24 +32,34 @@ import com.ecep.contract.vo.CompanyCustomerEvaluationFormFileVo;
|
|||||||
import com.ecep.contract.vo.CompanyCustomerFileVo;
|
import com.ecep.contract.vo.CompanyCustomerFileVo;
|
||||||
import com.ecep.contract.vo.CompanyCustomerVo;
|
import com.ecep.contract.vo.CompanyCustomerVo;
|
||||||
import com.ecep.contract.vo.CompanyVo;
|
import com.ecep.contract.vo.CompanyVo;
|
||||||
|
import com.ecep.contract.vo.CustomerFileTypeLocalVo;
|
||||||
|
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
|
import javafx.beans.binding.Bindings;
|
||||||
|
import javafx.collections.FXCollections;
|
||||||
|
import javafx.collections.ObservableMap;
|
||||||
|
import javafx.concurrent.Task;
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.scene.control.Button;
|
import javafx.scene.control.Button;
|
||||||
import javafx.scene.control.ButtonType;
|
import javafx.scene.control.ButtonType;
|
||||||
import javafx.scene.control.MenuItem;
|
import javafx.scene.control.MenuItem;
|
||||||
import javafx.scene.control.Tab;
|
import javafx.scene.control.Tab;
|
||||||
|
import javafx.scene.control.TableCell;
|
||||||
import javafx.scene.control.TableColumn;
|
import javafx.scene.control.TableColumn;
|
||||||
import javafx.scene.control.TableView;
|
import javafx.scene.control.TableView;
|
||||||
import javafx.scene.control.cell.CheckBoxTableCell;
|
import javafx.scene.control.cell.CheckBoxTableCell;
|
||||||
import javafx.scene.input.Dragboard;
|
import javafx.scene.input.Dragboard;
|
||||||
import javafx.scene.input.TransferMode;
|
import javafx.scene.input.TransferMode;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
@FxmlPath("/ui/company/customer/customer-tab-file.fxml")
|
@FxmlPath("/ui/company/customer/customer-tab-file.fxml")
|
||||||
public class CustomerTabSkinFile
|
public class CustomerTabSkinFile
|
||||||
extends AbstCompanyCustomerTableTabSkin<CompanyCustomerFileVo, CompanyCustomerFileViewModel>
|
extends AbstCompanyCustomerTableTabSkin<CompanyCustomerFileVo, CompanyCustomerFileViewModel>
|
||||||
implements EditableEntityTableTabSkin<CompanyCustomerFileVo, CompanyCustomerFileViewModel> {
|
implements EditableEntityTableTabSkin<CompanyCustomerFileVo, CompanyCustomerFileViewModel> {
|
||||||
|
|
||||||
|
@Setter
|
||||||
|
private CompanyCustomerFileService companyCustomerFileService;
|
||||||
|
|
||||||
public TableColumn<CompanyCustomerFileViewModel, Number> fileTable_idColumn;
|
public TableColumn<CompanyCustomerFileViewModel, Number> fileTable_idColumn;
|
||||||
public TableColumn<CompanyCustomerFileViewModel, CustomerFileType> fileTable_typeColumn;
|
public TableColumn<CompanyCustomerFileViewModel, CustomerFileType> fileTable_typeColumn;
|
||||||
public TableColumn<CompanyCustomerFileViewModel, String> fileTable_filePathColumn;
|
public TableColumn<CompanyCustomerFileViewModel, String> fileTable_filePathColumn;
|
||||||
@@ -77,10 +92,6 @@ public class CustomerTabSkinFile
|
|||||||
return getCompanyCustomerFileService();
|
return getCompanyCustomerFileService();
|
||||||
}
|
}
|
||||||
|
|
||||||
public CompanyCustomerFileService getCompanyCustomerFileService() {
|
|
||||||
return getCachedBean(CompanyCustomerFileService.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompanyCustomerEvaluationFormFileService getEvaluationFormFileService() {
|
public CompanyCustomerEvaluationFormFileService getEvaluationFormFileService() {
|
||||||
return getCachedBean(CompanyCustomerEvaluationFormFileService.class);
|
return getCachedBean(CompanyCustomerEvaluationFormFileService.class);
|
||||||
}
|
}
|
||||||
@@ -99,8 +110,6 @@ public class CustomerTabSkinFile
|
|||||||
TableView<CompanyCustomerFileViewModel> table = getTableView();
|
TableView<CompanyCustomerFileViewModel> table = getTableView();
|
||||||
|
|
||||||
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());
|
||||||
CompanyCustomerFileTypeService fileTypeService = getCachedBean(CompanyCustomerFileTypeService.class);
|
CompanyCustomerFileTypeService fileTypeService = getCachedBean(CompanyCustomerFileTypeService.class);
|
||||||
fileTable_typeColumn.setCellValueFactory(param -> param.getValue().getType());
|
fileTable_typeColumn.setCellValueFactory(param -> param.getValue().getType());
|
||||||
@@ -236,12 +245,16 @@ public class CustomerTabSkinFile
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void onFileReBuildingAction(ActionEvent event) {
|
public void onFileReBuildingAction(ActionEvent event) {
|
||||||
CompanyCustomerRebuildFilesTasker task = new CompanyCustomerRebuildFilesTasker();
|
|
||||||
CompanyCustomerVo customer = getEntity();
|
|
||||||
task.setCompanyCustomer(customer);
|
CompanyCustomerService customerService = getCompanyCustomerService();
|
||||||
UITools.showTaskDialogAndWait("重建客户文件", task, null);
|
try {
|
||||||
if (task.isFilesUpdated()) {
|
CompanyCustomerVo companyCustomer = customerService.findById(viewModel.getId().get());
|
||||||
loadTableDataSet();
|
if (customerService.reBuildingFiles(companyCustomer, (level, message) -> setStatus(message))) {
|
||||||
|
loadTableDataSet();
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -313,19 +326,54 @@ public class CustomerTabSkinFile
|
|||||||
// dataSet.remove(selectedItem);
|
// dataSet.remove(selectedItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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());
|
||||||
|
});
|
||||||
|
SpringApp.getBean(ScheduledExecutorService.class).submit(task);
|
||||||
|
consumer.accept("任务已创建...");
|
||||||
|
}
|
||||||
|
|
||||||
public void onUpdateEvaluationFormAction(ActionEvent event) {
|
public void onUpdateEvaluationFormAction(ActionEvent event) {
|
||||||
CompanyCustomerEvaluationFormUpdateTask task = new CompanyCustomerEvaluationFormUpdateTask();
|
CompanyCustomerEvaluationFormUpdateTask task = new CompanyCustomerEvaluationFormUpdateTask();
|
||||||
CompanyCustomerVo customer = getEntity();
|
task.setCustomer(getCompanyCustomerService().findById(viewModel.getId().get()));
|
||||||
task.setCustomer(customer);
|
UITools.showTaskDialogAndWait("更新评价表", task, consumer -> {
|
||||||
UITools.showTaskDialogAndWait("更新评价表", task, null);
|
initializeTask(task, "更新评价表", msg -> consumer.accept(Message.info(msg)));
|
||||||
|
});
|
||||||
loadTableDataSet();
|
loadTableDataSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onCalcNextSignDateAction(ActionEvent event) {
|
public void onCalcNextSignDateAction(ActionEvent event) {
|
||||||
CompanyCustomerNextSignDateTask task = new CompanyCustomerNextSignDateTask();
|
UITools.showDialogAndWait("计算客户下一个评价日期", "依据已有的客户评估表和登记采购的合同计算下一个评估日期", ds -> {
|
||||||
CompanyCustomerVo customer = getEntity();
|
CompanyCustomerVo companyCustomer = getCompanyCustomerService().findById(viewModel.getId().get());
|
||||||
task.setCustomer(customer);
|
LocalDate nextSignDate = getCompanyCustomerFileService().getNextSignDate(companyCustomer, (level, msg) -> {
|
||||||
UITools.showTaskDialogAndWait("计算客户下一个评价日期", task, null);
|
Platform.runLater(() -> {
|
||||||
|
ds.add(msg);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
if (nextSignDate != null) {
|
||||||
|
Platform.runLater(() -> {
|
||||||
|
ds.add("下一个评价日期:" + nextSignDate);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private CompanyCustomerFileService getCompanyCustomerFileService() {
|
||||||
|
if (companyCustomerFileService == null) {
|
||||||
|
companyCustomerFileService = SpringApp.getBean(CompanyCustomerFileService.class);
|
||||||
|
}
|
||||||
|
return companyCustomerFileService;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -118,11 +118,6 @@ public class CompanyCustomerFileService extends QueryService<CompanyCustomerFile
|
|||||||
.build(), Pageable.unpaged()).getContent();
|
.build(), Pageable.unpaged()).getContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<CompanyCustomerEvaluationFormFile> searchEvaluationFile(CompanyCustomer customer, String searchText) {
|
|
||||||
// TODO need move to CompanyCustomerEvaluationFormFileService
|
|
||||||
throw new UnsupportedOperationException("Unimplemented method 'searchEvaluationFile'");
|
|
||||||
}
|
|
||||||
|
|
||||||
@CacheEvict(allEntries = true)
|
@CacheEvict(allEntries = true)
|
||||||
@Override
|
@Override
|
||||||
public CompanyCustomerFileVo save(CompanyCustomerFileVo entity) {
|
public CompanyCustomerFileVo save(CompanyCustomerFileVo entity) {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
# 客户端 Tasker 至 服务器端 Tasker 通信规则与逻辑
|
# 客户端 Tasker 至 服务器端 Tasker 通信规则与逻辑
|
||||||
|
|
||||||
本文档总结了 Contract-Manager 项目中客户端 Tasker 与服务器端 Tasker 之间的通信规则、调用逻辑和实现模式,基于对以下文件的分析:
|
本文档总结了 Contract-Manager 项目中客户端 Tasker 与服务器端 Tasker 之间的通信规则、调用逻辑和实现模式,基于对以下文件的分析:
|
||||||
- `d:\idea-workspace\Contract-Manager\server\src\main\java\com\ecep\contract\ds\customer\tasker\CompanyCustomerEvaluationFormUpdateTask.java`
|
- [`CompanyCustomerEvaluationFormUpdateTask.java`](/server/src/main/java/com/ecep/contract/ds/customer/tasker/CompanyCustomerEvaluationFormUpdateTask.java)
|
||||||
- `d:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\controller\customer\CompanyCustomerEvaluationFormUpdateTask.java`
|
- [`CompanyCustomerEvaluationFormUpdateTask.java`](/client/src/main/java/com/ecep/contract/controller/customer/CompanyCustomerEvaluationFormUpdateTask.java)
|
||||||
- `d:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\controller\customer\CustomerTabSkinFile.java`
|
- [`CustomerTabSkinFile.java`](/client/src/main/java/com/ecep/contract/controller/customer/CustomerTabSkinFile.java)
|
||||||
|
|
||||||
## 1. 架构设计原则
|
## 1. 架构设计原则
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"taskers": {
|
|
||||||
"ContractSyncTask": "com.ecep.contract.cloud.u8.ContractSyncTask",
|
|
||||||
"ContractRepairTask": "com.ecep.contract.ds.contract.tasker.ContractRepairTask",
|
|
||||||
"ContractVerifyTask": "com.ecep.contract.ds.contract.tasker.ContractVerifyTask",
|
|
||||||
"ProjectCostImportItemsFromContractsTasker": "com.ecep.contract.ds.project.ProjectCostImportItemsFromContractsTasker",
|
|
||||||
"CompanyCustomerEvaluationFormUpdateTask": "com.ecep.contract.ds.customer.tasker.CompanyCustomerEvaluationFormUpdateTask",
|
|
||||||
"CompanyCustomerNextSignDateTask": "com.ecep.contract.ds.customer.tasker.CompanyCustomerNextSignDateTask",
|
|
||||||
"CompanyCustomerRebuildFilesTasker": "com.ecep.contract.ds.customer.tasker.CompanyCustomerRebuildFilesTasker"
|
|
||||||
},
|
|
||||||
"descriptions": "任务注册信息"
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user