feat: 实现VoableService接口并重构相关服务

refactor: 优化WebSocket通信和任务处理逻辑

fix: 修复客户和供应商路径选择功能

docs: 更新任务通信规则文档

build: 更新项目版本至0.0.86-SNAPSHOT

style: 清理无用导入和日志输出

test: 添加CustomerFileMoveTasker测试类

chore: 更新tasker_mapper.json注册信息
This commit is contained in:
2025-09-25 18:57:17 +08:00
parent bf90117116
commit 45f7b611c5
61 changed files with 1638 additions and 286 deletions

View File

@@ -5,6 +5,7 @@ import java.util.Map;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import com.ecep.contract.ds.customer.service.CustomerCatalogService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
@@ -73,8 +74,7 @@ public class CustomerClassSyncTask extends Tasker<Object> {
String code = (String) map.get("cCCCode");
String name = (String) map.get("cCCName");
CompanyCustomerService customerService = getCompanyCustomerService();
CustomerCatalog customerCatalog = customerService.findCatalogByCode(code);
CustomerCatalog customerCatalog = getCachedBean(CustomerCatalogService.class).findByCode(code);
if (customerCatalog == null) {
customerCatalog = new CustomerCatalog();
holder.info("新建客户分类:" + code);
@@ -93,7 +93,7 @@ public class CustomerClassSyncTask extends Tasker<Object> {
}
if (modified) {
customerService.save(customerCatalog);
getCachedBean(CustomerCatalogService.class).save(customerCatalog);
}
}
}

View File

@@ -1,61 +1,36 @@
package com.ecep.contract.cloud.u8.ctx;
import java.io.File;
import java.text.NumberFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import com.ecep.contract.ds.contract.service.*;
import com.ecep.contract.util.FileUtils;
import org.hibernate.Hibernate;
import org.springframework.util.StringUtils;
import com.ecep.contract.ContractFileType;
import com.ecep.contract.ContractPayWay;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.constant.CloudServiceConstant;
import com.ecep.contract.ds.company.CompanyFileUtils;
import com.ecep.contract.ds.contract.service.*;
import com.ecep.contract.ds.customer.service.CompanyCustomerEntityService;
import com.ecep.contract.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.ds.project.ProjectCtx;
import com.ecep.contract.ds.project.service.ProjectSaleTypeService;
import com.ecep.contract.ds.vendor.service.VendorEntityService;
import com.ecep.contract.ds.vendor.service.VendorService;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.model.CompanyCustomerEntity;
import com.ecep.contract.model.Vendor;
import com.ecep.contract.model.VendorEntity;
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ContractCatalog;
import com.ecep.contract.model.ContractFile;
import com.ecep.contract.model.ContractFileTypeLocal;
import com.ecep.contract.model.ContractGroup;
import com.ecep.contract.model.ContractItem;
import com.ecep.contract.model.ContractKind;
import com.ecep.contract.model.ContractPayPlan;
import com.ecep.contract.model.ContractType;
import com.ecep.contract.model.Employee;
import com.ecep.contract.model.Project;
import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.model.*;
import com.ecep.contract.util.FileUtils;
import com.ecep.contract.util.NumberUtils;
import com.ecep.contract.util.TaxRateUtils;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.Hibernate;
import org.springframework.util.StringUtils;
import java.io.File;
import java.text.NumberFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeParseException;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* 合同上下文
@@ -985,7 +960,7 @@ public class ContractCtx extends AbstractYongYouU8Ctx {
// 从关联项目上未取得合同目录,尝试根据合同编码来确定合同目录
if (contractPath == null) {
ContractCatalog catalog = getContractService().findContractCatalogByContract(contract);
ContractCatalog catalog = getContractService().findContractCatalogByContract(contract.getCode());
if (catalog != null) {
contractPath = getContractService().getContractCatalogPath(catalog, contract);
}
@@ -1198,10 +1173,15 @@ public class ContractCtx extends AbstractYongYouU8Ctx {
List<ContractFileTypeLocal> matched = getCachedBean(ContractFileTypeService.class)
.findAll(getLocale()).values().stream()
.filter(local -> {
ContractFileType type = local.getType();
if (type == null) {
holder.warn("#" + local.getId() + " 的 type 未设置");
return false;
}
if (payWay == ContractPayWay.PAY) {
return local.getType().isSupportVendor();
return type.isSupportVendor();
} else if (payWay == ContractPayWay.RECEIVE) {
return local.getType().isSupportCustomer();
return type.isSupportCustomer();
}
return false;
}).filter(local -> {

View File

@@ -9,6 +9,7 @@ import java.util.Objects;
import java.util.function.Consumer;
import java.util.function.Supplier;
import com.ecep.contract.ds.customer.service.CustomerCatalogService;
import org.hibernate.Hibernate;
import org.springframework.util.StringUtils;
@@ -168,7 +169,7 @@ public class CustomerCtx extends AbstractYongYouU8Ctx {
private boolean updateCustomerCatalog(Supplier<CustomerCatalog> getter, Consumer<CustomerCatalog> setter, String catalogCode, MessageHolder holder, String topic) {
CustomerCatalog catalog = null;
if (StringUtils.hasText(catalogCode)) {
catalog = getCompanyCustomerService().findCatalogByCode(catalogCode);
catalog = getCachedBean(CustomerCatalogService.class).findByCode(catalogCode);
}
if (catalog == null) {
setter.accept(null);
@@ -177,7 +178,7 @@ public class CustomerCtx extends AbstractYongYouU8Ctx {
} else {
if (!Objects.equals(getter.get(), catalog)) {
if (!Hibernate.isInitialized(catalog)) {
catalog = getCompanyCustomerService().findCatalogByCode(catalogCode);
catalog = getCachedBean(CustomerCatalogService.class).findByCode(catalogCode);
}
setter.accept(catalog);
holder.info(topic + "修改为: " + catalog.getName());