refactor(model): 重构模型类包结构并优化序列化处理

重构模型类包结构,将模型类按功能模块划分到不同的子包中。优化序列化处理,为VO类添加serialVersionUID并实现Serializable接口。移除部分冗余的serialVersionUID字段,简化模型类代码。同时修复UITools中空值处理的问题,并更新pom版本至0.0.100-SNAPSHOT。

- 将模型类按功能模块划分到ds子包中
- 为VO类添加序列化支持
- 移除冗余的serialVersionUID字段
- 修复UITools空值处理问题
- 更新项目版本号
This commit is contained in:
2025-10-09 18:27:48 +08:00
parent 51b8c16798
commit c4eec0a9dd
457 changed files with 8426 additions and 3669 deletions

View File

@@ -6,12 +6,12 @@
<parent>
<groupId>com.ecep.contract</groupId>
<artifactId>Contract-Manager</artifactId>
<version>0.0.99-SNAPSHOT</version>
<version>0.0.100-SNAPSHOT</version>
</parent>
<groupId>com.ecep.contract</groupId>
<artifactId>server</artifactId>
<version>0.0.99-SNAPSHOT</version>
<version>0.0.100-SNAPSHOT</version>
<properties>
<maven.compiler.source>${java.version}</maven.compiler.source>
@@ -22,7 +22,7 @@
<dependency>
<groupId>com.ecep.contract</groupId>
<artifactId>common</artifactId>
<version>0.0.99-SNAPSHOT</version>
<version>0.0.100-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>

View File

@@ -19,7 +19,6 @@ import org.springframework.boot.autoconfigure.data.redis.RedisReactiveAutoConfig
import org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration;
import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;
import org.springframework.boot.context.metrics.buffering.StartupTimeline;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;

View File

@@ -6,7 +6,7 @@ import java.util.Objects;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.proxy.HibernateProxy;
import com.ecep.contract.model.Company;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.model.IdentityEntity;
import jakarta.persistence.Column;

View File

@@ -1,6 +1,5 @@
package com.ecep.contract.cloud;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.Objects;
@@ -8,7 +7,7 @@ import org.hibernate.annotations.ColumnDefault;
import org.hibernate.proxy.HibernateProxy;
import com.ecep.contract.CloudType;
import com.ecep.contract.model.Company;
import com.ecep.contract.ds.company.model.Company;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;

View File

@@ -3,8 +3,8 @@ package com.ecep.contract.cloud.old;
import java.util.Map;
import java.util.Objects;
import com.ecep.contract.model.CompanyContact;
import com.ecep.contract.model.CompanyContract;
import com.ecep.contract.ds.company.model.CompanyContact;
import com.ecep.contract.ds.contract.model.CompanyContract;
/**
*

View File

@@ -4,7 +4,7 @@ import java.time.LocalDate;
import java.util.Map;
import java.util.Objects;
import com.ecep.contract.model.CompanyCustomerFile;
import com.ecep.contract.ds.customer.model.CompanyCustomerFile;
public class CompanyCustomerFileUtils {
public static boolean applyCustomerFileByMap(CompanyCustomerFile customerFile, Map<String, Object> m) {

View File

@@ -4,7 +4,7 @@ import java.time.LocalDate;
import java.util.Map;
import java.util.Objects;
import com.ecep.contract.model.VendorFile;
import com.ecep.contract.ds.vendor.model.VendorFile;
public class CompanyVendorFileUtils {
public static boolean applyVendorFileByMap(VendorFile vendorFile, Map<String, Object> m) {

View File

@@ -41,19 +41,19 @@ import com.ecep.contract.ds.customer.repository.CompanyCustomerFileRepository;
import com.ecep.contract.ds.customer.repository.CompanyCustomerRepository;
import com.ecep.contract.ds.other.service.SysConfService;
import com.ecep.contract.ds.vendor.service.VendorFileService;
import com.ecep.contract.model.CloudRk;
import com.ecep.contract.model.CloudTyc;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyContact;
import com.ecep.contract.model.CompanyContract;
import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.model.CompanyCustomerFile;
import com.ecep.contract.model.CompanyFile;
import com.ecep.contract.model.CompanyOldName;
import com.ecep.contract.model.Vendor;
import com.ecep.contract.model.VendorFile;
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ContractFile;
import com.ecep.contract.ds.other.model.CloudRk;
import com.ecep.contract.ds.other.model.CloudTyc;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyContact;
import com.ecep.contract.ds.contract.model.CompanyContract;
import com.ecep.contract.ds.customer.model.CompanyCustomer;
import com.ecep.contract.ds.customer.model.CompanyCustomerFile;
import com.ecep.contract.ds.company.model.CompanyFile;
import com.ecep.contract.ds.company.model.CompanyOldName;
import com.ecep.contract.ds.vendor.model.Vendor;
import com.ecep.contract.ds.vendor.model.VendorFile;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.ds.contract.model.ContractFile;
import jakarta.transaction.Transactional;

View File

@@ -2,10 +2,9 @@ package com.ecep.contract.cloud.old;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.SpringApp;
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.Contract;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.ui.Tasker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@@ -15,8 +15,8 @@ import org.slf4j.LoggerFactory;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.SpringApp;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.Contract;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.ui.Tasker;
public class OldVersionSyncVendorTask extends Tasker<Object> {

View File

@@ -10,8 +10,8 @@ import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.ecep.contract.ds.MyRepository;
import com.ecep.contract.model.CloudRk;
import com.ecep.contract.model.Company;
import com.ecep.contract.ds.other.model.CloudRk;
import com.ecep.contract.ds.company.model.Company;
@Repository
public interface CloudRkRepository extends MyRepository<CloudRk, Integer> {

View File

@@ -1,17 +1,32 @@
package com.ecep.contract.cloud.rk;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
import com.ecep.contract.BlackReasonType;
import com.ecep.contract.IEntityService;
import com.ecep.contract.QueryService;
import com.ecep.contract.SpringApp;
import com.ecep.contract.cloud.CloudInfo;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyBlackReason;
import com.ecep.contract.ds.company.repository.CompanyBlackReasonRepository;
import com.ecep.contract.ds.company.repository.CompanyOldNameRepository;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.ds.other.model.CloudRk;
import com.ecep.contract.ds.other.service.SysConfService;
import com.ecep.contract.model.Bank;
import com.ecep.contract.service.VoableService;
import com.ecep.contract.util.FileUtils;
import com.ecep.contract.util.HttpJsonUtils;
import com.ecep.contract.util.MyStringUtils;
import com.ecep.contract.util.SpecificationUtils;
import com.ecep.contract.vo.CloudRkVo;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import jakarta.persistence.criteria.Path;
import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -26,36 +41,22 @@ import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import com.ecep.contract.BlackReasonType;
import com.ecep.contract.IEntityService;
import com.ecep.contract.SpringApp;
import com.ecep.contract.cloud.CloudInfo;
import com.ecep.contract.ds.company.repository.CompanyBlackReasonRepository;
import com.ecep.contract.ds.company.repository.CompanyOldNameRepository;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.ds.other.service.SysConfService;
import com.ecep.contract.model.CloudRk;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyBlackReason;
import com.ecep.contract.service.VoableService;
import com.ecep.contract.util.FileUtils;
import com.ecep.contract.util.HttpJsonUtils;
import com.ecep.contract.util.MyStringUtils;
import com.ecep.contract.vo.CloudRkVo;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import jakarta.persistence.criteria.Path;
import lombok.Data;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
@Lazy
@Service
@CacheConfig(cacheNames = "cloud-rk")
public class CloudRkService implements IEntityService<CloudRk>, VoableService<CloudRk, CloudRkVo> {
public class CloudRkService implements IEntityService<CloudRk>, QueryService<CloudRkVo>, VoableService<CloudRk, CloudRkVo> {
private static final Logger logger = LoggerFactory.getLogger(CloudRkService.class);
public static final String KEY_PROXY = "cloud.rk.proxy";
@@ -99,9 +100,6 @@ public class CloudRkService implements IEntityService<CloudRk>, VoableService<Cl
private SysConfService confService;
@Autowired
private CloudRkRepository cloudRKRepository;
@Lazy
@Autowired
private CompanyService companyService;
@Autowired
private CompanyOldNameRepository companyOldNameRepository;
@Autowired
@@ -113,8 +111,20 @@ public class CloudRkService implements IEntityService<CloudRk>, VoableService<Cl
}
@Cacheable(key = "#p0")
public CloudRk findById(Integer id) {
return cloudRKRepository.findById(id).orElse(null);
public CloudRkVo findById(Integer id) {
return cloudRKRepository.findById(id).map(CloudRk::toVo).orElse(null);
}
@Override
public Page<CloudRkVo> findAll(JsonNode paramsNode, Pageable pageable) {
Specification<CloudRk> spec = null;
if (paramsNode.has("searchText")) {
spec = getSpecification(paramsNode.get("searchText").asText());
}
spec = SpecificationUtils.andParam(spec, paramsNode, "company");
spec = SpecificationUtils.andFieldEqualParam(spec, paramsNode, "cloudId", "customerGrade", "customerScore", "vendorGrade", "vendorScore", "active", "version", "rank", "description");
// 可以根据需要添加更多参数处理
return findAll(spec, pageable).map(CloudRk::toVo);
}
public Page<CloudRk> findAll(Specification<CloudRk> spec, Pageable pageable) {
@@ -446,5 +456,7 @@ public class CloudRkService implements IEntityService<CloudRk>, VoableService<Cl
cloudRk.setCompany(company);
}
}
cloudRk.setVersion(vo.getVersion());
}
}

View File

@@ -18,12 +18,13 @@ import com.ecep.contract.SpringApp;
import com.ecep.contract.cloud.rk.ctx.CloudRkCtx;
import com.ecep.contract.constant.CloudServiceConstant;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.model.CloudRk;
import com.ecep.contract.model.Company;
import com.ecep.contract.ds.other.model.CloudRk;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ui.Tasker;
/**
* 集团相关方平台同步任务
*
*/
public class CloudRkSyncTask extends Tasker<Object> {
private static final Logger logger = LoggerFactory.getLogger(CloudRkSyncTask.class);
@@ -33,11 +34,8 @@ public class CloudRkSyncTask extends Tasker<Object> {
@Override
protected Object execute(MessageHolder holder) throws Exception {
updateTitle("集团相关方平台");
CloudRkCtx cloudRkCtx = null;
CloudRkService service = null;
try {
cloudRkCtx = new CloudRkCtx();
service = SpringApp.getBean(CloudRkService.class);
} catch (BeansException e) {
holder.error(CloudServiceConstant.RK_NAME + " 服务未启用");
@@ -49,7 +47,7 @@ public class CloudRkSyncTask extends Tasker<Object> {
holder.info("没有需要更新");
return null;
}
CloudRkCtx cloudRkCtx = new CloudRkCtx();
AtomicInteger counter = new AtomicInteger(0);
holder.info("统计需要更新的 " + total + "");

View File

@@ -5,7 +5,6 @@ import java.io.File;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -20,10 +19,10 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.SpringApp;
import com.ecep.contract.ds.company.repository.CompanyContactRepository;
import com.ecep.contract.ds.company.service.CompanyOldNameService;
import com.ecep.contract.model.CloudRk;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyContact;
import com.ecep.contract.model.CompanyOldName;
import com.ecep.contract.ds.other.model.CloudRk;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyContact;
import com.ecep.contract.ds.company.model.CompanyOldName;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

View File

@@ -12,6 +12,8 @@ import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -34,11 +36,11 @@ import com.ecep.contract.cloud.rk.CloudRkService;
import com.ecep.contract.ds.company.service.CompanyBlackReasonService;
import com.ecep.contract.ds.company.service.CompanyContactService;
import com.ecep.contract.ds.company.service.CompanyOldNameService;
import com.ecep.contract.model.CloudRk;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyBlackReason;
import com.ecep.contract.model.CompanyContact;
import com.ecep.contract.model.CompanyOldName;
import com.ecep.contract.ds.other.model.CloudRk;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyBlackReason;
import com.ecep.contract.ds.company.model.CompanyContact;
import com.ecep.contract.ds.company.model.CompanyOldName;
import com.ecep.contract.util.FileUtils;
import com.ecep.contract.util.HttpJsonUtils;
import com.fasterxml.jackson.databind.JsonMappingException;
@@ -74,6 +76,14 @@ public class CloudRkCtx extends AbstractCtx implements CloudRkContext {
HttpJsonUtils.post(url, data, consumer, getObjectMapper(), getSocksProxy());
}
/**
* 同步企业相关信息
*
* @param company
* @param cloudRk
* @param holder
* @return
*/
public boolean syncCompany(Company company, CloudRk cloudRk, MessageHolder holder) {
if (!StringUtils.hasText(cloudRk.getCloudId())) {
holder.warn("未定义平台编号, 尝试从平台上自动获取");
@@ -121,6 +131,7 @@ public class CloudRkCtx extends AbstractCtx implements CloudRkContext {
message = message.substring(0, 50);
}
cloudRk.setDescription(message);
holder.error("更新发生错误:" + e.getMessage());
}
return updated;
}
@@ -471,7 +482,7 @@ public class CloudRkCtx extends AbstractCtx implements CloudRkContext {
}
private boolean applyEnterpriseQuery(JsonNode json, Company company, CloudRk cloudRk,
List<CloudRkService.EntInfo> results, MessageHolder holder) {
List<CloudRkService.EntInfo> results, MessageHolder holder) {
if (!json.has("data")) {
// 没有数据
holder.error("数据异常返回的json中没有 data 字段");
@@ -508,9 +519,13 @@ public class CloudRkCtx extends AbstractCtx implements CloudRkContext {
Company company, CloudRk cloudRk, MessageHolder holder) throws IOException {
String api = getConfService().getString(CloudRkService.KEY_ENT_REPORT_URL);
Proxy socksProxy = getSocksProxy();
holder.debug("更新企业工商注册信息: " + company.getName() + " @ " + api + ", proxy=" + socksProxy);
holder.debug("更新企业工商注册信息: " + company.getName());
if (socksProxy.type() != Proxy.Type.DIRECT) {
holder.debug("Use Proxy: " + socksProxy);
}
AtomicBoolean modified = new AtomicBoolean(false);
try {
holder.debug("POST " + api);
post(api, data -> {
data.put("entName", company.getName());
data.put("entid", cloudRk.getCloudId());
@@ -518,7 +533,13 @@ public class CloudRkCtx extends AbstractCtx implements CloudRkContext {
data.put("method", "data");
data.put("nodetype", "B1001");
}, jsonNode -> {
modified.set(applyEnterpriseInfo(jsonNode, company, cloudRk, holder));
try {
if (applyEnterpriseInfo(jsonNode, company, cloudRk, holder)) {
modified.set(true);
}
} catch (Exception e) {
holder.error("更新企业信息失败:" + e.getMessage() + ", json=" + jsonNode.toString());
}
saveJsonToFile(company, jsonNode, FileUtils.FILE_B1001_JSON, holder);
});
} catch (IOException e) {
@@ -601,19 +622,32 @@ public class CloudRkCtx extends AbstractCtx implements CloudRkContext {
updateCompanyNameHistory(company, data, holder.sub("曾用名"));
updateLegalRepresentativeContact(company, data, holder.sub("法人联系方式"));
updateLocalDateTime(cloudRk::getCloudEntUpdate, cloudRk::setCloudEntUpdate, data, "updated", holder, "更新时间");
if (updateLocalDateTime(cloudRk::getCloudEntUpdate, cloudRk::setCloudEntUpdate, data, "updated", holder, "更新时间")) {
modified = true;
}
return modified;
}
public boolean updateLocalDateTime(Supplier<LocalDateTime> getter, Consumer<LocalDateTime> setter, JsonNode data,
String field,
MessageHolder holder, String topic) {
String field,
MessageHolder holder, String topic) {
JsonNode node = data.get(field);
if (node == null || node.isNull()) {
return false;
}
LocalDateTime updated = getObjectMapper().convertValue(node, LocalDateTime.class);
updateLocalDateTime(getter, setter, updated, holder, topic);
try {
LocalDateTime updated = null;
try {
updated = LocalDateTime.parse(node.asText(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
} catch (DateTimeParseException e) {
updated = getObjectMapper().convertValue(node, LocalDateTime.class);
}
updateLocalDateTime(getter, setter, updated, holder, topic);
return true;
} catch (IllegalArgumentException e) {
holder.error("更新 " + topic + " 失败:" + e.getMessage());
}
return false;
}
@@ -732,7 +766,7 @@ public class CloudRkCtx extends AbstractCtx implements CloudRkContext {
}
private boolean updateLocalDate(Supplier<LocalDate> getter, Consumer<LocalDate> setter, JsonNode data, String field,
MessageHolder holder, String topic, boolean allowNull) {
MessageHolder holder, String topic, boolean allowNull) {
JsonNode node = data.get(field);
if (node == null || node.isNull()) {
return false;
@@ -745,12 +779,12 @@ public class CloudRkCtx extends AbstractCtx implements CloudRkContext {
}
private boolean updateLocalDate(Supplier<LocalDate> getter, Consumer<LocalDate> setter, JsonNode data, String field,
MessageHolder holder, String topic) {
MessageHolder holder, String topic) {
return updateLocalDate(getter, setter, data, field, holder, topic, false);
}
private void updateInstant(Supplier<Instant> getter, Consumer<Instant> setter, JsonNode data, String field,
MessageHolder holder, String topic, boolean allowNull) {
MessageHolder holder, String topic, boolean allowNull) {
JsonNode node = data.get("updated");
if (node == null) {
return;
@@ -768,13 +802,15 @@ public class CloudRkCtx extends AbstractCtx implements CloudRkContext {
}
private boolean updateText(Supplier<String> getter, Consumer<String> setter, JsonNode data, String field,
MessageHolder holder, String topic) {
MessageHolder holder, String topic) {
JsonNode node = data.get(field);
if (node == null || node.isNull()) {
holder.warn(topic + "为空");
return false;
}
String text = node.asText();
if (!StringUtils.hasText(text)) {
holder.warn(topic + "为空");
return false;
}
return updateText(getter, setter, text, holder, topic);
@@ -783,11 +819,13 @@ public class CloudRkCtx extends AbstractCtx implements CloudRkContext {
private void saveJsonToFile(Company company, JsonNode json, String fileName, MessageHolder holder) {
String companyPath = company.getPath();
if (!StringUtils.hasText(companyPath)) {
holder.warn("公司路径为空");
return;
}
File dir = new File(companyPath);
if (!dir.exists()) {
holder.warn("公司路径不存在");
return;
}

View File

@@ -8,8 +8,8 @@ import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.ecep.contract.ds.MyRepository;
import com.ecep.contract.model.CloudTyc;
import com.ecep.contract.model.Company;
import com.ecep.contract.ds.other.model.CloudTyc;
import com.ecep.contract.ds.company.model.Company;
@Repository
public interface CloudTycRepository extends MyRepository<CloudTyc, Integer> {

View File

@@ -4,9 +4,15 @@ import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import com.ecep.contract.QueryService;
import com.ecep.contract.ds.other.model.CloudRk;
import com.ecep.contract.util.SpecificationUtils;
import com.fasterxml.jackson.databind.JsonNode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
@@ -21,15 +27,16 @@ import com.ecep.contract.SpringApp;
import com.ecep.contract.cloud.CloudInfo;
import com.ecep.contract.constant.CloudServiceConstant;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.model.CloudTyc;
import com.ecep.contract.model.Company;
import com.ecep.contract.ds.other.model.CloudTyc;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.service.VoableService;
import com.ecep.contract.util.MyStringUtils;
import com.ecep.contract.vo.CloudTycVo;
@Lazy
@Service
public class CloudTycService implements IEntityService<CloudTyc>, VoableService<CloudTyc, CloudTycVo> {
@CacheConfig(cacheNames = "cloud-tyc")
public class CloudTycService implements IEntityService<CloudTyc>, QueryService<CloudTycVo>, VoableService<CloudTyc, CloudTycVo> {
private static final Logger logger = LoggerFactory.getLogger(CloudTycService.class);
/**
@@ -147,8 +154,9 @@ public class CloudTycService implements IEntityService<CloudTyc>, VoableService<
cloudTycRepository.saveAll(list);
}
public CloudTyc findById(Integer id) {
return cloudTycRepository.findById(id).orElse(null);
@Cacheable(key = "#p0")
public CloudTycVo findById(Integer id) {
return cloudTycRepository.findById(id).map(CloudTyc::toVo).orElse(null);
}
public Page<CloudTyc> findAll(Specification<CloudTyc> spec, PageRequest pageable) {
@@ -159,6 +167,17 @@ public class CloudTycService implements IEntityService<CloudTyc>, VoableService<
return cloudTycRepository.findAll(spec, pageable);
}
@Override
public Page<CloudTycVo> findAll(JsonNode paramsNode, Pageable pageable) {
Specification<CloudTyc> spec = null;
if (paramsNode.has("searchText")) {
spec = getSpecification(paramsNode.get("searchText").asText());
}
spec = SpecificationUtils.andParam(spec, paramsNode, "company");
// 可以根据需要添加更多参数处理
return findAll(spec, pageable).map(CloudTyc::toVo);
}
@Override
public Specification<CloudTyc> getSpecification(String searchText) {
if (!StringUtils.hasText(searchText)) {
@@ -202,5 +221,6 @@ public class CloudTycService implements IEntityService<CloudTyc>, VoableService<
cloudTyc.setCompany(company);
}
}
cloudTyc.setVersion(vo.getVersion());
}
}

View File

@@ -8,8 +8,8 @@ import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.ecep.contract.ds.MyRepository;
import com.ecep.contract.model.CloudYu;
import com.ecep.contract.model.Company;
import com.ecep.contract.ds.other.model.CloudYu;
import com.ecep.contract.ds.company.model.Company;
@Repository
public interface CloudYuRepository extends MyRepository<CloudYu, Integer> {

View File

@@ -5,6 +5,7 @@ import java.util.Map;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import com.ecep.contract.vo.ContractGroupVo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
@@ -75,11 +76,15 @@ public class ContractGroupSyncTask extends Tasker<Object> {
String groupTitle = (String) map.get("cRemark");
ContractGroupService service = getContractGroupService();
ContractGroup contractGroup = service.findByCode(groupCode);
var contractGroup = service.findByCode(groupCode);
if (contractGroup == null) {
contractGroup = service.newContractGroup();
var newGroup = service.newContractGroup();
newGroup.setCode(groupCode);
newGroup.setName(groupName);
newGroup.setTitle(groupTitle);
newGroup = service.save(newGroup);
holder.info("新建合同分组:" + groupCode);
modified = true;
contractGroup = newGroup.toVo();
}
if (!Objects.equals(contractGroup.getCode(), groupCode)) {
@@ -99,7 +104,9 @@ public class ContractGroupSyncTask extends Tasker<Object> {
}
if (modified) {
service.save(contractGroup);
var group = service.getById(contractGroup.getId());
service.updateByVo(group, contractGroup);
service.save(group);
}
}
}

View File

@@ -62,20 +62,6 @@ public class ContractSyncContext {
return employeeService;
}
public ContractType getTypeByCode(String typeCode) {
return getContractTypeService().findByCode(typeCode);
}
public ContractGroup getGroupByCode(String groupCode) {
return getContractGroupService().findByCode(groupCode);
}
public ContractKind getKindByName(String kindName) {
return getContractKindService().findByName(kindName);
}
public void updateMessage(String message) {
Consumer<String> consumer = getConsumer();
if (consumer != null) {

View File

@@ -77,11 +77,17 @@ public class ContractTypeSyncTask extends Tasker<Object> {
String typeDirection = (String) map.get("cDirection");
ContractTypeService typeService = getContractTypeService();
ContractType contractType = typeService.findByCode(typeCode);
var contractType = typeService.findByCode(typeCode);
if (contractType == null) {
contractType = new ContractType();
var newGroup = new ContractType();
newGroup.setCode(typeCode);
newGroup.setName(typeName);
newGroup.setTitle(typeTitle);
newGroup.setCatalog(typeCatalog);
newGroup.setDirection(typeDirection);
newGroup = typeService.save(newGroup);
holder.info("新建合同类型:" + typeCode);
modified = true;
contractType = newGroup.toVo();
}
if (!Objects.equals(contractType.getCode(), typeCode)) {
@@ -111,7 +117,9 @@ public class ContractTypeSyncTask extends Tasker<Object> {
}
if (modified) {
typeService.save(contractType);
var type = typeService.getById(contractType.getId());
typeService.updateByVo(type, contractType);
typeService.save(type);
}
}

View File

@@ -15,6 +15,7 @@ import com.ecep.contract.SpringApp;
import com.ecep.contract.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.model.CustomerCatalog;
import com.ecep.contract.ui.Tasker;
import com.ecep.contract.vo.CustomerCatalogVo;
import lombok.Setter;
@@ -73,12 +74,16 @@ public class CustomerClassSyncTask extends Tasker<Object> {
String code = (String) map.get("cCCCode");
String name = (String) map.get("cCCName");
var catalogService = getCachedBean(CustomerCatalogService.class);
CustomerCatalog customerCatalog = getCachedBean(CustomerCatalogService.class).findByCode(code);
CustomerCatalogVo customerCatalog = catalogService.findByCode(code);
if (customerCatalog == null) {
customerCatalog = new CustomerCatalog();
CustomerCatalog v1 = new CustomerCatalog();
v1.setCode(code);
v1.setName(name);
v1 = catalogService.save(v1);
holder.info("新建客户分类:" + code);
modified = true;
customerCatalog = v1.toVo();
}
if (!Objects.equals(customerCatalog.getCode(), code)) {
@@ -93,7 +98,9 @@ public class CustomerClassSyncTask extends Tasker<Object> {
}
if (modified) {
getCachedBean(CustomerCatalogService.class).save(customerCatalog);
var v1 = catalogService.getById(customerCatalog.getId());
catalogService.updateByVo(v1, customerCatalog);
catalogService.save(v1);
}
}
}

View File

@@ -6,6 +6,8 @@ import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Stream;
import com.ecep.contract.ds.customer.service.CompanyCustomerEntityService;
import com.ecep.contract.vo.CompanyCustomerEntityVo;
import org.hibernate.Hibernate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -19,10 +21,10 @@ import com.ecep.contract.constant.CloudServiceConstant;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.ds.contract.tasker.AbstContractRepairTasker;
import com.ecep.contract.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.model.CloudYu;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.model.CompanyCustomerEntity;
import com.ecep.contract.ds.other.model.CloudYu;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.customer.model.CompanyCustomer;
import com.ecep.contract.ds.customer.model.CompanyCustomerEntity;
import lombok.Setter;
@@ -59,6 +61,9 @@ public class CustomerSyncTask extends AbstContractRepairTasker {
Long total = repository.countAllCustomers();
updateTitle("用友U8系统-同步客户,合计 " + total + "");
try (Stream<Map<String, Object>> stream = repository.queryAllCustomerForStream()) {
CompanyCustomerEntityService entityService = customerCtx.getCompanyCustomerEntityService();
stream.forEach(rs -> {
if (isCancelled()) {
updateMessage("Cancelled");
@@ -68,20 +73,22 @@ public class CustomerSyncTask extends AbstContractRepairTasker {
String cusCode = (String) rs.get("cCusCode");
MessageHolder subHolder = holder.sub(counter.get() + " / " + total + "> " + cusCode + " ");
boolean modified = false;
CompanyCustomerEntity entity = customerCtx.findOrCreateByCode(rs, cusCode, subHolder);
CompanyCustomerEntityVo entity = customerCtx.findOrCreateByCode(rs, cusCode, subHolder);
Map<String, Object> map = repository.findCustomerByCusCode(entity.getCode());
if (map == null) {
subHolder.error("客户项不存在:" + cusCode);
return;
}
if (customerCtx.applyEntityDetail(entity, map, subHolder)) {
CompanyCustomerEntity v0 = entityService.getById(entity.getId());
if (customerCtx.applyEntityDetail(v0, map, subHolder)) {
modified = true;
}
if (modified) {
entity = customerCtx.getCompanyCustomerEntityService().save(entity);
entity = entityService.save(v0).toVo();
modified = false;
}
updateCompanyNameAndAbbName(entity, subHolder);
updateCloudYu(entity);
updateCompanyNameAndAbbName(v0, subHolder);
updateCloudYu(v0);
} catch (Exception e) {
logger.error("Customer sync failure {}, data = {}", e.getMessage(), rs, e);

View File

@@ -10,7 +10,7 @@ import org.springframework.beans.BeansException;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.SpringApp;
import com.ecep.contract.cloud.CloudInfo;
import com.ecep.contract.model.CloudYu;
import com.ecep.contract.ds.other.model.CloudYu;
import com.ecep.contract.ui.Tasker;
import lombok.Setter;

View File

@@ -6,6 +6,7 @@ import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Stream;
import com.ecep.contract.vo.VendorEntityVo;
import org.hibernate.Hibernate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -20,10 +21,10 @@ import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.ds.contract.tasker.AbstContractRepairTasker;
import com.ecep.contract.ds.vendor.service.VendorEntityService;
import com.ecep.contract.ds.vendor.service.VendorService;
import com.ecep.contract.model.CloudYu;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.Vendor;
import com.ecep.contract.model.VendorEntity;
import com.ecep.contract.ds.other.model.CloudYu;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.vendor.model.Vendor;
import com.ecep.contract.ds.vendor.model.VendorEntity;
import lombok.Setter;
@@ -82,20 +83,22 @@ public class VendorSyncTask extends AbstContractRepairTasker {
String venCode = (String) rs.get("cVenCode");
MessageHolder subHolder = holder.sub(counter.get() + " / " + total + "> " + venCode + " ");
boolean modified = false;
VendorEntity entity = vendorCtx.findOrCreateByCode(venCode, subHolder);
VendorEntityVo entity = vendorCtx.findOrCreateByCode(venCode, subHolder);
Map<String, Object> map = repository.findVendorByVendCode(entity.getCode());
if (map == null) {
subHolder.error("供应商项不存在:" + venCode);
return;
}
if (vendorCtx.applyEntityDetail(entity, map, subHolder)) {
VendorEntity v1 = getVendorEntityService().getById(entity.getId());
if (vendorCtx.applyEntityDetail(v1, map, subHolder)) {
modified = true;
}
if (modified) {
entity = getVendorEntityService().save(entity);
v1 = getVendorEntityService().save(v1);
}
updateCompanyNameAndAbbName(entity, subHolder);
updateCloudYu(entity);
updateCompanyNameAndAbbName(v1, subHolder);
updateCloudYu(v1);
} catch (Exception e) {
logger.error("Vendor sync failure {}, data = {}", e.getMessage(), rs, e);
@@ -113,7 +116,7 @@ public class VendorSyncTask extends AbstContractRepairTasker {
return;
}
if (!Hibernate.isInitialized(vendor)) {
vendor = getVendorService().findById(vendor.getId());
vendor = getVendorService().getById(vendor.getId());
}
Company company = vendor.getCompany();
if (company == null) {
@@ -136,7 +139,7 @@ public class VendorSyncTask extends AbstContractRepairTasker {
return;
}
if (!Hibernate.isInitialized(vendor)) {
vendor = getVendorService().findById(vendor.getId());
vendor = getVendorService().getById(vendor.getId());
}
Company company = vendor.getCompany();
if (company == null) {

View File

@@ -5,6 +5,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.stream.Stream;
import com.ecep.contract.util.SpecificationUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -27,8 +28,8 @@ import com.ecep.contract.cloud.CloudInfoRepository;
import com.ecep.contract.cloud.u8.ctx.AbstractYongYouU8Ctx;
import com.ecep.contract.constant.ServiceConstant;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.model.CloudYu;
import com.ecep.contract.model.Company;
import com.ecep.contract.ds.other.model.CloudYu;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.service.VoableService;
import com.ecep.contract.vo.CloudYuVo;
import com.fasterxml.jackson.databind.JsonNode;
@@ -161,6 +162,7 @@ public class YongYouU8Service
String searchText = paramsNode.get(ServiceConstant.KEY_SEARCH_TEXT).asText();
spec = getSpecification(searchText);
}
spec = SpecificationUtils.andParam(spec, paramsNode, "company");
return findAll(spec, pageable).map(CloudYu::toVo);
}
@@ -255,5 +257,7 @@ public class YongYouU8Service
} else {
cloudYu.setCompany(null);
}
cloudYu.setVersion(vo.getVersion());
}
}

View File

@@ -4,6 +4,7 @@ import java.util.Objects;
import java.util.function.Consumer;
import java.util.function.Supplier;
import com.ecep.contract.vo.*;
import org.hibernate.Hibernate;
import org.springframework.beans.BeansException;
import org.springframework.util.StringUtils;
@@ -14,16 +15,12 @@ import com.ecep.contract.cloud.u8.YongYouU8Repository;
import com.ecep.contract.constant.CloudServiceConstant;
import com.ecep.contract.ds.customer.service.CompanyCustomerEntityService;
import com.ecep.contract.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.ds.other.service.EmployeeService;
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.ds.company.model.Company;
import com.ecep.contract.model.Employee;
import com.ecep.contract.model.Vendor;
import com.ecep.contract.model.VendorEntity;
import com.ecep.contract.vo.EmployeeVo;
import com.ecep.contract.ds.vendor.model.Vendor;
import com.ecep.contract.ds.vendor.model.VendorEntity;
import lombok.Getter;
import lombok.Setter;
@@ -65,7 +62,7 @@ public class AbstractYongYouU8Ctx extends AbstractCtx {
}
boolean updateEmployeeByCode(Supplier<Employee> getter, Consumer<Employee> setter, String code,
MessageHolder holder, String topic) {
MessageHolder holder, String topic) {
if (StringUtils.hasText(code)) {
var employee = getEmployeeService().findByCode(code);
if (employee != null) {
@@ -76,21 +73,30 @@ public class AbstractYongYouU8Ctx extends AbstractCtx {
}
boolean updateEmployee(Supplier<Employee> getter, Consumer<Employee> setter, EmployeeVo employee,
MessageHolder holder, String topic) {
MessageHolder holder, String topic) {
if (employee == null) {
return false;
}
var service = getEmployeeService();
if (employee != null) {
var v1 = getter.get();
if (v1 == null || !Objects.equals(v1.getId(), employee.getId())) {
setter.accept(service.getById(employee.getId()));
holder.info(topic + "更新为 " + employee.getName());
return true;
}
var v1 = getter.get();
if (v1 == null) {
setter.accept(service.getById(employee.getId()));
holder.info(topic + "更新为 " + employee.getName());
return true;
}
if (!Hibernate.isInitialized(v1)) {
v1 = service.getById(v1.getId());
}
if (!Objects.equals(v1.getId(), employee.getId())) {
setter.accept(service.getById(employee.getId()));
holder.info(topic + "更新为 " + employee.getName());
return true;
}
return false;
}
boolean updateEmployeeByName(Supplier<Employee> getter, Consumer<Employee> setter, String name,
MessageHolder holder, String topic) {
MessageHolder holder, String topic) {
if (StringUtils.hasText(name)) {
EmployeeVo employee = getEmployeeService().findByName(name);
if (employee != null) {
@@ -101,23 +107,20 @@ public class AbstractYongYouU8Ctx extends AbstractCtx {
}
boolean updateCompanyByCustomerCode(Supplier<Company> getter, Consumer<Company> setter, String customerCode,
MessageHolder holder, String topic) {
MessageHolder holder, String topic) {
Company company = null;
if (StringUtils.hasText(customerCode)) {
CompanyCustomerEntityService customerEntityService = getCompanyCustomerEntityService();
CompanyCustomerService customerService = getCompanyCustomerService();
CompanyCustomerEntity entity = customerEntityService.findByCustomerCode(customerCode);
CompanyCustomerEntityVo entity = customerEntityService.findByCustomerCode(customerCode);
if (entity == null) {
holder.warn("无效" + topic + "" + customerCode);
} else {
CompanyCustomer customer = entity.getCustomer();
CompanyCustomerVo customer = customerService.findById(entity.getCustomerId());
if (customer == null) {
holder.warn("无效" + topic + "" + customerCode);
} else {
if (!Hibernate.isInitialized(customer)) {
customer = customerService.getById(customer.getId());
}
company = customer.getCompany();
company = getCompanyService().getById(customer.getCompanyId());
}
}
}
@@ -139,23 +142,20 @@ public class AbstractYongYouU8Ctx extends AbstractCtx {
}
boolean updateCompanyByVendorCode(Supplier<Company> getter, Consumer<Company> setter, String vendorCode,
MessageHolder holder, String topic) {
MessageHolder holder, String topic) {
Company company = null;
if (StringUtils.hasText(vendorCode)) {
VendorEntityService vendorEntityService = getCompanyVendorEntityService();
VendorService customerService = getCompanyVendorService();
VendorEntity entity = vendorEntityService.findByCode(vendorCode);
VendorEntityVo entity = vendorEntityService.findByCode(vendorCode);
if (entity == null) {
holder.warn("无效" + topic + "" + vendorCode);
} else {
Vendor customer = entity.getVendor();
if (customer == null) {
if (entity.getVendorId() == null) {
holder.warn("无效" + topic + "" + vendorCode);
} else {
if (!Hibernate.isInitialized(customer)) {
customer = customerService.findById(customer.getId());
}
company = customer.getCompany();
VendorVo v1 = customerService.findById(entity.getVendorId());
company = getCompanyService().getById(v1.getCompanyId());
}
}
}

View File

@@ -4,7 +4,7 @@ import static com.ecep.contract.SpringApp.getBean;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.ds.company.service.CompanyBankAccountService;
import com.ecep.contract.model.Company;
import com.ecep.contract.ds.company.model.Company;
import lombok.Setter;

View File

@@ -12,12 +12,9 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.constant.CloudServiceConstant;
import com.ecep.contract.constant.CloudYuConstant;
import com.ecep.contract.ds.company.service.CompanyOldNameService;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyOldName;
import lombok.Setter;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyOldName;
public class CompanyCtx extends AbstractYongYouU8Ctx implements CompanyContext {
public boolean updateCompanyNameIfAbsent(Company company, String name, MessageHolder holder) {

View File

@@ -1,38 +1,68 @@
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.cloud.old.OldVersionService;
import com.ecep.contract.vo.*;
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.contract.service.ContractFileService;
import com.ecep.contract.ds.contract.service.ContractFileTypeService;
import com.ecep.contract.ds.contract.service.ContractGroupService;
import com.ecep.contract.ds.contract.service.ContractItemService;
import com.ecep.contract.ds.contract.service.ContractKindService;
import com.ecep.contract.ds.contract.service.ContractPayPlanService;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.contract.service.ContractTypeService;
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.*;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.customer.model.CompanyCustomer;
import com.ecep.contract.ds.customer.model.CompanyCustomerEntity;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.model.ContractCatalog;
import com.ecep.contract.ds.contract.model.ContractFile;
import com.ecep.contract.ds.contract.model.ContractItem;
import com.ecep.contract.model.ContractKind;
import com.ecep.contract.ds.contract.model.ContractPayPlan;
import com.ecep.contract.model.ContractType;
import com.ecep.contract.model.Employee;
import com.ecep.contract.ds.project.model.Project;
import com.ecep.contract.model.ProjectSaleType;
import com.ecep.contract.ds.vendor.model.Vendor;
import com.ecep.contract.ds.vendor.model.VendorEntity;
import com.ecep.contract.util.FileUtils;
import com.ecep.contract.util.NumberUtils;
import com.ecep.contract.util.TaxRateUtils;
import com.ecep.contract.vo.ContractFileTypeLocalVo;
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;
/**
* 合同上下文
@@ -313,21 +343,24 @@ public class ContractCtx extends AbstractYongYouU8Ctx {
boolean vendorModified = false;
VendorService vendorService = getCompanyVendorService();
VendorEntityService vendorEntityService = getCompanyVendorEntityService();
VendorEntity entity = vendorEntityService.findByCode(unit);
VendorEntityVo entity = vendorEntityService.findByCode(unit);
if (entity == null) {
entity = new VendorEntity();
entity.setCode(unit);
VendorEntity v1 = new VendorEntity();
v1.setCode(unit);
entity = vendorEntityService.save(v1).toVo();
}
entity = updateVendorEntityDetailByCode(entity, unit, holder);
Vendor vendor = entity.getVendor();
entity = save(entity);
Vendor vendor = getCompanyVendorService().getById(entity.getVendorId());
if (vendor == null) {
if (company != null) {
vendor = vendorService.findByCompany(company);
}
} else {
if (!Hibernate.isInitialized(vendor)) {
vendor = vendorService.findById(vendor.getId());
vendor = vendorService.getById(vendor.getId());
}
if (vendor.getCompany() == null) {
vendor.setCompany(company);
@@ -369,6 +402,13 @@ public class ContractCtx extends AbstractYongYouU8Ctx {
return modified;
}
private VendorEntityVo save(VendorEntityVo entity) {
VendorEntityService service = getCompanyVendorEntityService();
VendorEntity v1 = service.getById(entity.getId());
service.updateByVo(v1, entity);
return service.save(v1).toVo();
}
private boolean updateCompany(Contract contract, Company company, MessageHolder holder) {
if (company == null) {
return false;
@@ -384,8 +424,8 @@ public class ContractCtx extends AbstractYongYouU8Ctx {
return true;
}
private VendorEntity updateVendorEntityDetailByCode(VendorEntity entity, String unitCode,
MessageHolder holder) {
private VendorEntityVo updateVendorEntityDetailByCode(VendorEntityVo entity, String unitCode,
MessageHolder holder) {
if (vendorEntityUpdateDelayDays > 0) {
LocalDateTime today = LocalDateTime.now();
if (entity.getFetchedTime() != null) {
@@ -396,15 +436,13 @@ public class ContractCtx extends AbstractYongYouU8Ctx {
return entity;
}
}
entity = getVendorCtx().updateVendorEntityDetailByCode(entity, unitCode, holder);
entity.setFetchedTime(today);
return getVendorCtx().save(entity);
}
return getVendorCtx().updateVendorEntityDetailByCode(entity, unitCode, holder);
}
private CompanyCustomerEntity updateCustomerEntityDetailByCode(CompanyCustomerEntity entity, String unitCode,
MessageHolder holder) {
private CompanyCustomerEntityVo updateCustomerEntityDetailByCode(
CompanyCustomerEntityVo entity, String unitCode, MessageHolder holder) {
if (customerEntityUpdateDelayDays > 0) {
LocalDateTime today = LocalDateTime.now();
if (entity.getFetchedTime() != null) {
@@ -415,9 +453,7 @@ public class ContractCtx extends AbstractYongYouU8Ctx {
return entity;
}
}
entity = getCustomerCtx().updateCustomerEntityDetailByCode(entity, unitCode, holder);
entity.setFetchedTime(today);
return getCustomerCtx().save(entity);
}
return getCustomerCtx().updateCustomerEntityDetailByCode(entity, unitCode, holder);
}
@@ -428,38 +464,41 @@ public class ContractCtx extends AbstractYongYouU8Ctx {
boolean customerModified = false;
CompanyCustomerEntityService customerEntityService = getCompanyCustomerEntityService();
CompanyCustomerService customerService = getCompanyCustomerService();
CompanyCustomerEntity entity = customerEntityService.findByCustomerCode(unit);
CompanyCustomerEntityVo entity = customerEntityService.findByCustomerCode(unit);
if (entity == null) {
entity = new CompanyCustomerEntity();
entity.setCode(unit);
CompanyCustomerEntity v1 = new CompanyCustomerEntity();
v1.setCode(unit);
entity = customerEntityService.save(v1).toVo();
}
entity = updateCustomerEntityDetailByCode(entity, unit, holder);
CompanyCustomer customer = entity.getCustomer();
CompanyCustomerVo customer = customerService.findById(entity.getCustomerId());
if (customer == null) {
if (company != null) {
customer = customerService.findByCompany(company);
customer = customerService.findByCompany(company).toVo();
}
} else {
if (!Hibernate.isInitialized(customer)) {
customer = customerService.getById(customer.getId());
}
if (customer.getCompany() == null) {
customer.setCompany(company);
if (customer.getCompanyId() == null) {
customer.setCompanyId(company.getId());
customerModified = true;
} else {
if (company == null) {
company = customer.getCompany();
} else if (!Objects.equals(company, customer.getCompany())) {
customer.setCompanyId(company.getId());
} else if (!Objects.equals(company.getId(), customer.getCompanyId())) {
holder.error(
"客户的企业和合同的企业不一致, 客户的企业:" + customer.getCompany().getId() + ",合同的企业:" + company.getId());
"客户的企业和合同的企业不一致, 客户的企业:" + customer.getCompanyId() + ",合同的企业:" + company.getId());
}
}
}
if (customer == null) {
customer = new CompanyCustomer();
customer.setCompany(company);
customerModified = true;
CompanyCustomer v1 = new CompanyCustomer();
if (company != null && !Hibernate.isInitialized(company)) {
company = getCompanyService().getById(company.getId());
}
v1.setId(getCachedBean(OldVersionService.class).newCompanyCustomer(company == null ? unit : company.getName()));
v1.setCompany(company);
customer = customerService.save(v1).toVo();
}
if (customer.getDevelopDate() == null
|| (entity.getDevelopDate() != null && customer.getDevelopDate().isAfter(entity.getDevelopDate()))) {
@@ -468,7 +507,9 @@ public class ContractCtx extends AbstractYongYouU8Ctx {
holder.info("客户的开发日期修改为:" + entity.getDevelopDate());
}
if (customerModified) {
customer = customerService.save(customer);
CompanyCustomer v0 = customerService.getById(customer.getId());
customerService.updateByVo(v0, customer);
customer = customerService.save(v0).toVo();
}
// 确定 company
if (company == null) {
@@ -502,27 +543,36 @@ public class ContractCtx extends AbstractYongYouU8Ctx {
}
private boolean updateTypeByCode(Contract contract, String typeCode, MessageHolder holder) {
ContractType type = getCachedBean(ContractTypeService.class).findByCode(typeCode);
if (!Objects.equals(contract.getType(), type)) {
contract.setType(type);
holder.info("合同类型修改为: " + type.getName());
return true;
var service = getCachedBean(ContractTypeService.class);
var type = service.findByCode(typeCode);
if (type == null) {
contract.setType(null);
} else {
if (contract.getType() == null || !Objects.equals(contract.getType().getId(), type.getId())) {
contract.setType(service.getById(type.getId()));
holder.info("合同类型修改为: " + type.getName());
}
}
return false;
}
private boolean updateGroupByCode(Contract contract, String groupCode, MessageHolder holder) {
ContractGroup group = getCachedBean(ContractGroupService.class).findByCode(groupCode);
if (!Objects.equals(contract.getGroup(), group)) {
contract.setGroup(group);
holder.info("合同分组修改为: " + group.getName());
return true;
var service = getCachedBean(ContractGroupService.class);
var group = service.findByCode(groupCode);
if (group == null) {
contract.setGroup(null);
} else {
if (contract.getGroup() == null || !Objects.equals(contract.getGroup().getId(), group.getId())) {
contract.setGroup(service.getById(group.getId()));
holder.info("合同分组修改为: " + group.getName());
}
}
return false;
}
private boolean updateKindByCode(Contract contract, String kindName, MessageHolder holder) {
ContractKind kind = getCachedBean(ContractKindService.class).findByName(kindName);
var service = getCachedBean(ContractKindService.class);
var kind = service.findByName(kindName);
if (!Objects.equals(contract.getKind(), kind)) {
contract.setKind(kind);
holder.info("合同分类修改为: " + kind.getName());
@@ -548,7 +598,13 @@ public class ContractCtx extends AbstractYongYouU8Ctx {
}
public Contract findContractByCode(String contractCode) {
return getContractService().findByCode(contractCode);
var service = getContractService();
var vo = service.findByCode(contractCode);
if (vo == null) {
// holder.warn("合同 " + contractCode + " 未导入");
return null;
}
return service.getById(vo.getId());
}
public boolean syncByVendorEntity(Vendor vendor, VendorEntity entity, MessageHolder holder) {
@@ -611,21 +667,24 @@ public class ContractCtx extends AbstractYongYouU8Ctx {
public Contract findOrCreatByGuidOrContractId(String guid, String contractId, MessageHolder holder) {
ContractService service = getContractService();
UUID.fromString(guid);
Contract contract = service.findByGuid(guid);
ContractVo contract = service.findByGuid(guid);
if (contract == null) {
holder.debug("根据GUID未查找到合同, GUID: " + guid);
contract = service.findByCode(contractId);
if (contract == null) {
holder.debug("根据合同号未查找到合同, 合同号: " + contractId);
contract = service.createNewEntity();
contract.setGuid(guid);
contract.setCode(contractId);
contract = service.save(contract);
var v0 = service.createNewEntity();
v0.setGuid(guid);
v0.setCode(contractId);
v0 = service.save(v0);
holder.info("新建合同:" + contractId + ", GUID: " + guid);
return v0;
} else {
return service.getById(contract.getId());
}
} else {
return service.getById(contract.getId());
}
return contract;
}
private boolean updateContract(Map<String, Object> rs, MessageHolder holder) {
@@ -911,7 +970,7 @@ public class ContractCtx extends AbstractYongYouU8Ctx {
holder.warn("未关联主合同编号,采购合同目录创建在销售合同目录中,需先关联销售合同!");
return false;
}
Contract parent = getContractService().findByCode(parentCode);
var parent = getContractService().findByCode(parentCode);
if (parent == null) {
holder.warn("关联主合同编号 " + parentCode + " 异常无法找到对应的合同,请检查主合同编号是否正确,或稍后再试!");
return false;
@@ -1089,17 +1148,17 @@ public class ContractCtx extends AbstractYongYouU8Ctx {
return false;
}
ContractFileService fileService = getContractFileService();
List<ContractFile> dbFiles = fileService.findAllByContract(contract);
List<ContractFileVo> dbFiles = fileService.findAllByContract(contract);
List<ContractFile> retrieveFiles = new ArrayList<>();
boolean modfied = false;
Map<String, ContractFile> map = new HashMap<>();
Map<String, ContractFileVo> map = new HashMap<>();
// 排除掉数据库中重复的
for (ContractFile dbFile : dbFiles) {
for (ContractFileVo dbFile : dbFiles) {
String fileName = dbFile.getFileName();
// 没有文件信息,无效记录,删除
if (!StringUtils.hasText(fileName)) {
fileService.delete(dbFile);
fileService.delete(fileService.getById(dbFile.getId()));
modfied = true;
continue;
}
@@ -1107,15 +1166,15 @@ public class ContractCtx extends AbstractYongYouU8Ctx {
// 目录不存在,删除
File file = new File(dir, fileName);
if (!file.exists()) {
fileService.delete(dbFile);
fileService.delete(fileService.getById(dbFile.getId()));
modfied = true;
continue;
}
// 删除文件名重复的
ContractFile old = map.put(fileName, dbFile);
ContractFileVo old = map.put(fileName, dbFile);
if (old != null) {
fileService.delete(old);
fileService.delete(fileService.getById(old.getId()));
modfied = true;
}
}

View File

@@ -1,6 +1,20 @@
package com.ecep.contract.cloud.u8.ctx;
import java.time.Instant;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.SpringApp;
import com.ecep.contract.cloud.old.OldVersionService;
import com.ecep.contract.ds.customer.service.CompanyCustomerEntityService;
import com.ecep.contract.ds.customer.service.CustomerCatalogService;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.customer.model.CompanyCustomer;
import com.ecep.contract.ds.customer.model.CompanyCustomerEntity;
import com.ecep.contract.model.CustomerCatalog;
import com.ecep.contract.vo.CompanyCustomerEntityVo;
import com.ecep.contract.vo.CustomerCatalogVo;
import lombok.Setter;
import org.hibernate.Hibernate;
import org.springframework.util.StringUtils;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@@ -9,21 +23,6 @@ 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;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.SpringApp;
import com.ecep.contract.cloud.old.OldVersionService;
import com.ecep.contract.ds.customer.service.CompanyCustomerEntityService;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.model.CompanyCustomerEntity;
import com.ecep.contract.model.CustomerCatalog;
import lombok.Setter;
public class CustomerCtx extends AbstractYongYouU8Ctx {
private static final String AUTO_CREATE_CUSTOMER_AFTER = "cloud.u8.auto-create-customer-after";
@Setter
@@ -73,9 +72,11 @@ public class CustomerCtx extends AbstractYongYouU8Ctx {
* @param unitCode
* @param holder
*/
public CompanyCustomerEntity updateCustomerEntityDetailByCode(CompanyCustomerEntity item, String unitCode, MessageHolder holder) {
if (applyEntityDetail(item, repository.findCustomerByCusCode(unitCode), holder)) {
item = save(item);
public CompanyCustomerEntityVo updateCustomerEntityDetailByCode(CompanyCustomerEntityVo item, String unitCode,
MessageHolder holder) {
CompanyCustomerEntity v0 = getCustomerEntityService().getById(item.getId());
if (applyEntityDetail(v0, repository.findCustomerByCusCode(unitCode), holder)) {
item = save(v0).toVo();
}
return item;
}
@@ -95,7 +96,6 @@ public class CustomerCtx extends AbstractYongYouU8Ctx {
String bank = (String) map.get("cCusBank");
String bankAccount = (String) map.get("cCusAccount");
boolean modified = false;
if (updateText(item::getName, item::setName, name, holder, "名称")) {
modified = true;
@@ -166,24 +166,36 @@ public class CustomerCtx extends AbstractYongYouU8Ctx {
return modified;
}
private boolean updateCustomerCatalog(Supplier<CustomerCatalog> getter, Consumer<CustomerCatalog> setter, String catalogCode, MessageHolder holder, String topic) {
CustomerCatalog catalog = null;
private boolean updateCustomerCatalog(Supplier<CustomerCatalog> getter, Consumer<CustomerCatalog> setter,
String catalogCode, MessageHolder holder, String topic) {
CustomerCatalogVo catalog = null;
var service = getCachedBean(CustomerCatalogService.class);
if (StringUtils.hasText(catalogCode)) {
catalog = getCachedBean(CustomerCatalogService.class).findByCode(catalogCode);
catalog = service.findByCode(catalogCode);
}
if (catalog == null) {
setter.accept(null);
holder.warn("无效" + topic + "" + catalogCode);
return true;
} else {
if (!Objects.equals(getter.get(), catalog)) {
if (!Hibernate.isInitialized(catalog)) {
catalog = getCachedBean(CustomerCatalogService.class).findByCode(catalogCode);
}
setter.accept(catalog);
holder.info(topic + "修改为: " + catalog.getName());
return true;
}
}
var v1 = getter.get();
if (v1 == null) {
var v0 = service.getById(catalog.getId());
setter.accept(v0);
holder.info(topic + "修改为: " + catalog.getName());
return true;
}
if (!Hibernate.isInitialized(v1)) {
v1 = service.getById(v1.getId());
}
if (!Objects.equals(v1.getCode(), catalog.getCode())) {
var v0 = service.getById(catalog.getId());
setter.accept(v0);
holder.info(topic + "修改为: " + catalog.getName());
return true;
}
return false;
}
@@ -241,7 +253,8 @@ public class CustomerCtx extends AbstractYongYouU8Ctx {
return updated;
}
private boolean updateCustomerDevelopDate(CompanyCustomer companyCustomer, List<CompanyCustomerEntity> entities, MessageHolder holder) {
private boolean updateCustomerDevelopDate(CompanyCustomer companyCustomer, List<CompanyCustomerEntity> entities,
MessageHolder holder) {
LocalDate developDate = null;
for (CompanyCustomerEntity entity : entities) {
// 取最早的开发日期
@@ -249,16 +262,17 @@ public class CustomerCtx extends AbstractYongYouU8Ctx {
developDate = entity.getDevelopDate();
}
}
return updateLocalDate(companyCustomer::getDevelopDate, companyCustomer::setDevelopDate, developDate, holder, "开发日期");
return updateLocalDate(companyCustomer::getDevelopDate, companyCustomer::setDevelopDate, developDate, holder,
"开发日期");
}
public CompanyCustomerEntity findOrCreateByCode(Map<String, Object> rs, String cusCode, MessageHolder subHolder) {
public CompanyCustomerEntityVo findOrCreateByCode(Map<String, Object> rs, String cusCode, MessageHolder subHolder) {
CompanyCustomerEntityService customerEntityService = getCompanyCustomerEntityService();
CompanyCustomerEntity entity = customerEntityService.findByCustomerCode(cusCode);
CompanyCustomerEntityVo entity = customerEntityService.findByCustomerCode(cusCode);
if (entity == null) {
entity = new CompanyCustomerEntity();
entity.setCode(cusCode);
entity = customerEntityService.save(entity);
CompanyCustomerEntity v1 = new CompanyCustomerEntity();
v1.setCode(cusCode);
entity = customerEntityService.save(v1).toVo();
subHolder.info("创建客户相关项:" + cusCode);
}
return entity;
@@ -301,5 +315,4 @@ public class CustomerCtx extends AbstractYongYouU8Ctx {
return getCustomerEntityService().save(entity);
}
}

View File

@@ -1,7 +1,5 @@
package com.ecep.contract.cloud.u8.ctx;
import static com.ecep.contract.SpringApp.getBean;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.Map;
@@ -21,6 +19,7 @@ import com.ecep.contract.ds.other.service.InventoryService;
import com.ecep.contract.model.Inventory;
import com.ecep.contract.model.InventoryCatalog;
import com.ecep.contract.model.Price;
import com.ecep.contract.vo.InventoryVo;
import lombok.Setter;
@@ -70,7 +69,6 @@ public class InventoryCtx extends AbstractYongYouU8Ctx {
// 参考售价
Double suggestedSalePrice = (Double) map.get("iInvSCost");
if (!item.isNameLock()) {
if (updateText(item::getName, item::setName, name, holder, "名称")) {
modified = true;
@@ -128,7 +126,6 @@ public class InventoryCtx extends AbstractYongYouU8Ctx {
return modified;
}
public boolean syncInventoryDetailByCode(Inventory inventory, String inventoryCode, MessageHolder holder) {
if (repository == null) {
return false;
@@ -160,7 +157,8 @@ public class InventoryCtx extends AbstractYongYouU8Ctx {
* @param topic 主题
* @return 是否更新
*/
private boolean updateInventoryCatalog(Supplier<InventoryCatalog> getter, Consumer<InventoryCatalog> setter, String catalogCode, MessageHolder holder, String topic) {
private boolean updateInventoryCatalog(Supplier<InventoryCatalog> getter, Consumer<InventoryCatalog> setter,
String catalogCode, MessageHolder holder, String topic) {
InventoryCatalog catalog = null;
if (StringUtils.hasText(catalogCode)) {
catalog = getInventoryCatalogService().findByCode(catalogCode);
@@ -192,35 +190,37 @@ public class InventoryCtx extends AbstractYongYouU8Ctx {
* @param topic 主题
* @return 是否更新
*/
public boolean syncInventoryDetailByCode(Supplier<Inventory> getter, Consumer<Inventory> setter, String inventoryCode, MessageHolder holder, String topic) {
public boolean syncInventoryDetailByCode(Supplier<Inventory> getter, Consumer<Inventory> setter,
String inventoryCode, MessageHolder holder, String topic) {
if (!StringUtils.hasText(inventoryCode)) {
return false;
}
Inventory inventory = null;
InventoryVo inventory = null;
InventoryService service = getInventoryService();
if (StringUtils.hasText(inventoryCode)) {
inventory = service.findByCode(inventoryCode);
if (inventory == null) {
inventory = service.createNewInstance();
inventory.setCode(inventoryCode);
if (syncInventoryDetailByCode(inventory, inventoryCode, holder)) {
inventory = getInventoryService().save(inventory);
var vo = service.findByCode(inventoryCode);
if (vo == null) {
var v1 = service.createNewInstance();
v1.setCode(inventoryCode);
if (syncInventoryDetailByCode(v1, inventoryCode, holder)) {
v1 = getInventoryService().save(v1);
} else {
return false;
}
vo = v1.toVo();
}
inventory = vo;
}
if (inventory == null) {
setter.accept(null);
holder.warn("无效" + topic + "" + inventoryCode);
return true;
} else {
if (!Objects.equals(getter.get(), inventory)) {
if (!Hibernate.isInitialized(inventory)) {
inventory = service.findByCode(inventoryCode);
}
setter.accept(inventory);
holder.info(topic + "修改为: " + inventory.getName());
var v0 = getter.get();
if (v0 == null || !Objects.equals(v0.getId(), inventory.getId())) {
var v1 = service.getById(inventory.getId());
setter.accept(v1);
holder.info(topic + "修改为: " + v1.getName());
return true;
}
}

View File

@@ -10,7 +10,7 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.ds.company.service.InvoiceService;
import com.ecep.contract.model.Invoice;
import com.ecep.contract.ds.other.model.Invoice;
import lombok.Setter;

View File

@@ -12,6 +12,7 @@ import java.util.function.Consumer;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import com.ecep.contract.vo.PurchaseOrderItemVo;
import org.springframework.data.domain.Sort;
import com.ecep.contract.MessageHolder;
@@ -20,16 +21,16 @@ import com.ecep.contract.ds.contract.service.PurchaseBillVoucherItemService;
import com.ecep.contract.ds.contract.service.PurchaseBillVoucherService;
import com.ecep.contract.ds.contract.service.PurchaseOrderItemService;
import com.ecep.contract.ds.contract.service.PurchaseOrdersService;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.Vendor;
import com.ecep.contract.model.VendorEntity;
import com.ecep.contract.model.Contract;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.vendor.model.Vendor;
import com.ecep.contract.ds.vendor.model.VendorEntity;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.model.Inventory;
import com.ecep.contract.model.Invoice;
import com.ecep.contract.model.PurchaseBillVoucher;
import com.ecep.contract.model.PurchaseBillVoucherItem;
import com.ecep.contract.model.PurchaseOrder;
import com.ecep.contract.model.PurchaseOrderItem;
import com.ecep.contract.ds.other.model.Invoice;
import com.ecep.contract.ds.vendor.model.PurchaseBillVoucher;
import com.ecep.contract.ds.vendor.model.PurchaseBillVoucherItem;
import com.ecep.contract.ds.vendor.model.PurchaseOrder;
import com.ecep.contract.ds.vendor.model.PurchaseOrderItem;
import lombok.Setter;
@@ -238,7 +239,7 @@ public class PurchaseBillVoucherCtx extends AbstractYongYouU8Ctx {
private PurchaseBillVoucher updateVoucherByPBVID(Integer pbvId, MessageHolder holder) {
PurchaseBillVoucherService voucherService = getPurchaseBillVoucherService();
PurchaseBillVoucher voucher = voucherService.findByRefId(pbvId);
PurchaseBillVoucher voucher = voucherService.getByRefId(pbvId);
if (voucher != null) {
return voucher;
}
@@ -251,7 +252,7 @@ public class PurchaseBillVoucherCtx extends AbstractYongYouU8Ctx {
}
private boolean applyPurchaseBillVoucherDetail(PurchaseBillVoucher voucher, Map<String, Object> map,
MessageHolder holder) {
MessageHolder holder) {
String code = String.valueOf(map.get("PBVID"));
String vendorCode = (String) map.get("cVenCode");
String invoiceNumber = (String) map.get("cPBVCode");
@@ -313,7 +314,7 @@ public class PurchaseBillVoucherCtx extends AbstractYongYouU8Ctx {
}
private boolean applyPurchaseBillVoucherItemDetail(PurchaseBillVoucherItem item, Map<String, Object> map,
MessageHolder holder) {
MessageHolder holder) {
String code = String.valueOf(map.get("ID"));
String inventoryCode = (String) map.get("cInvCode");
String contractCode = (String) map.get("ContractCode");
@@ -358,8 +359,8 @@ public class PurchaseBillVoucherCtx extends AbstractYongYouU8Ctx {
}
boolean updatePurchaseOrderItem(Supplier<PurchaseOrderItem> getter, Consumer<PurchaseOrderItem> setter,
Integer orderItemRefId, MessageHolder holder, String topic) {
PurchaseOrderItem item = null;
Integer orderItemRefId, MessageHolder holder, String topic) {
PurchaseOrderItemVo item = null;
if (orderItemRefId != null) {
item = getPurchaseOrderItemService().findByRefId(orderItemRefId);
}
@@ -367,21 +368,29 @@ public class PurchaseBillVoucherCtx extends AbstractYongYouU8Ctx {
setter.accept(null);
holder.warn("无效" + topic + "" + orderItemRefId);
return true;
} else {
if (!Objects.equals(getter.get(), item)) {
setter.accept(item);
holder.info(topic + "修改为: " + item.getRefId());
return true;
}
}
PurchaseOrderItem v1 = getter.get();
if (v1 == null) {
setter.accept(getPurchaseOrderItemService().getById(item.getId()));
holder.info(topic + "修改为: " + item.getRefId());
return true;
}
if (!Objects.equals(v1.getId(), item.getId())) {
setter.accept(getPurchaseOrderItemService().getById(item.getId()));
holder.info(topic + "修改为: " + item.getRefId());
return true;
}
return false;
}
boolean updatePurchaseOrder(Supplier<PurchaseOrder> getter, Consumer<PurchaseOrder> setter, Integer orderRefId,
MessageHolder holder, String topic) {
MessageHolder holder, String topic) {
PurchaseOrder order = null;
if (orderRefId != null) {
order = getPurchaseOrdersService().findByRefId(orderRefId);
order = getPurchaseOrdersService().getByRefId(orderRefId);
}
if (order == null) {
setter.accept(null);
@@ -398,7 +407,7 @@ public class PurchaseBillVoucherCtx extends AbstractYongYouU8Ctx {
}
boolean updateContractByContractCode(Supplier<Contract> getter, Consumer<Contract> setter, String contractCode,
MessageHolder holder, String topic) {
MessageHolder holder, String topic) {
Contract contract = null;
if (contractCode != null) {
contract = getContractCtx().findContractByCode(contractCode);
@@ -418,12 +427,12 @@ public class PurchaseBillVoucherCtx extends AbstractYongYouU8Ctx {
}
boolean updateInventory(Supplier<Inventory> getter, Consumer<Inventory> setter, String inventoryCode,
MessageHolder holder, String topic) {
MessageHolder holder, String topic) {
return getInventoryCtx().syncInventoryDetailByCode(getter, setter, inventoryCode, holder, topic);
}
private boolean updateInvoice(Supplier<Invoice> getter, Consumer<Invoice> setter, String invoiceNumber,
MessageHolder holder, String topic) {
MessageHolder holder, String topic) {
return getInvoiceCtx().updateInvoiceByNumber(getter, setter, invoiceNumber, holder, topic);
}

View File

@@ -21,10 +21,10 @@ import com.ecep.contract.constant.CloudServiceConstant;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.contract.service.PurchaseOrderItemService;
import com.ecep.contract.ds.contract.service.PurchaseOrdersService;
import com.ecep.contract.model.Contract;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.model.Inventory;
import com.ecep.contract.model.PurchaseOrder;
import com.ecep.contract.model.PurchaseOrderItem;
import com.ecep.contract.ds.vendor.model.PurchaseOrder;
import com.ecep.contract.ds.vendor.model.PurchaseOrderItem;
import com.ecep.contract.util.NumberUtils;
import lombok.Setter;

View File

@@ -7,8 +7,8 @@ import java.util.function.Supplier;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.model.Inventory;
import com.ecep.contract.model.PurchaseSettlementVoucher;
import com.ecep.contract.model.PurchaseSettlementVoucherItem;
import com.ecep.contract.ds.vendor.model.PurchaseSettlementVoucher;
import com.ecep.contract.ds.vendor.model.PurchaseSettlementVoucherItem;
public class PurchaseSettlementVoucherCtx extends AbstractYongYouU8Ctx {
InventoryCtx inventoryCtx;

View File

@@ -17,52 +17,39 @@ import org.springframework.data.domain.Sort;
import org.springframework.util.StringUtils;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.SpringApp;
import com.ecep.contract.constant.CloudServiceConstant;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.contract.service.SaleOrdersService;
import com.ecep.contract.ds.contract.service.SalesBillVoucherItemService;
import com.ecep.contract.ds.contract.service.SalesBillVoucherService;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyCustomer;
import com.ecep.contract.model.CompanyCustomerEntity;
import com.ecep.contract.model.Contract;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.customer.model.CompanyCustomer;
import com.ecep.contract.ds.customer.model.CompanyCustomerEntity;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.model.Inventory;
import com.ecep.contract.model.SalesBillVoucher;
import com.ecep.contract.model.SalesBillVoucherItem;
import com.ecep.contract.model.SalesOrder;
import com.ecep.contract.ds.customer.model.SalesBillVoucher;
import com.ecep.contract.ds.customer.model.SalesBillVoucherItem;
import com.ecep.contract.ds.customer.model.SalesOrder;
import com.ecep.contract.util.NumberUtils;
import lombok.Setter;
import com.ecep.contract.vo.SalesOrderVo;
public class SalesBillVoucherCtx extends AbstractYongYouU8Ctx {
@Setter
private ContractService contractService;
@Setter
private SaleOrdersService saleOrdersService;
@Setter
private SalesBillVoucherService salesBillVoucherService;
InventoryCtx inventoryCtx;
ContractService getContractService() {
if (contractService == null) {
contractService = getBean(ContractService.class);
}
return contractService;
return getCachedBean(ContractService.class);
}
SaleOrdersService getSaleOrdersService() {
if (saleOrdersService == null) {
saleOrdersService = getBean(SaleOrdersService.class);
}
return saleOrdersService;
return getCachedBean(SaleOrdersService.class);
}
SalesBillVoucherService getSalesBillVoucherService() {
if (salesBillVoucherService == null) {
salesBillVoucherService = SpringApp.getBean(SalesBillVoucherService.class);
}
return salesBillVoucherService;
return getCachedBean(SalesBillVoucherService.class);
}
SalesBillVoucherItemService getSalesBillVoucherItemService() {
return getCachedBean(SalesBillVoucherItemService.class);
}
InventoryCtx getInventoryCtx() {
@@ -74,16 +61,22 @@ public class SalesBillVoucherCtx extends AbstractYongYouU8Ctx {
}
public void syncByCompany(Company company, MessageHolder holder) {
var voucherService = getSalesBillVoucherService();
var vucherItemService = getSalesBillVoucherItemService();
var contractService = getContractService();
var customerService = getCompanyCustomerService();
var customerEntityService = getCompanyCustomerEntityService();
List<SalesBillVoucher> vouchers = salesBillVoucherService.findAll((root, q, cb) -> {
List<SalesBillVoucher> vouchers = voucherService.findAll((root, q, cb) -> {
return cb.equal(root.get("company"), company);
}, Sort.unsorted());
holder.debug("查找到 " + vouchers.size() + " 条专用发票记录在数据库中");
Map<Integer, SalesBillVoucher> voucherMap = vouchers.stream().collect(Collectors.toMap(SalesBillVoucher::getRefId, item -> item));
Map<Integer, SalesBillVoucher> voucherMap = vouchers.stream()
.collect(Collectors.toMap(SalesBillVoucher::getRefId, item -> item));
CompanyCustomer customer = getCompanyCustomerService().findByCompany(company);
CompanyCustomer customer = customerService.findByCompany(company);
if (customer != null) {
List<CompanyCustomerEntity> entities = getCompanyCustomerEntityService().findAllByCustomer(customer);
List<CompanyCustomerEntity> entities = customerEntityService.findAllByCustomer(customer);
for (CompanyCustomerEntity entity : entities) {
// 查询 U8 数据库
List<Map<String, Object>> ds = repository.findAllSalesBillVoucherByCustomerCode(entity.getCode());
@@ -111,20 +104,22 @@ public class SalesBillVoucherCtx extends AbstractYongYouU8Ctx {
}
if (voucherModified) {
voucher = salesBillVoucherService.save(voucher);
voucher = voucherService.save(voucher);
voucherMap.put(sbvid, voucher);
}
}
}
}
List<SalesBillVoucherItem> items = salesBillVoucherService.findAllItems((root, q, cb) -> {
List<SalesBillVoucherItem> items = vucherItemService.findAll((root, q, cb) -> {
return cb.equal(root.get("voucher").get("company"), company);
}, Sort.unsorted());
holder.debug("查找到 " + items.size() + " 条专用发票条目记录在数据库中");
// 按 order 分组
Map<SalesBillVoucher, Map<Integer, SalesBillVoucherItem>> itemMap = items.stream().collect(Collectors.groupingBy(SalesBillVoucherItem::getVoucher,
Collectors.toMap(SalesBillVoucherItem::getRefId, item -> item)));
Map<SalesBillVoucher, Map<Integer, SalesBillVoucherItem>> itemMap = items.stream()
.collect(Collectors.groupingBy(SalesBillVoucherItem::getVoucher,
Collectors.toMap(SalesBillVoucherItem::getRefId, item -> item)));
for (SalesBillVoucher voucher : voucherMap.values()) {
// 查询 U8 数据库
@@ -152,23 +147,25 @@ public class SalesBillVoucherCtx extends AbstractYongYouU8Ctx {
itemModified = true;
}
if (itemModified) {
item = salesBillVoucherService.save(item);
item = vucherItemService.save(item);
}
}
for (SalesBillVoucherItem item : subItemMap.values()) {
holder.info("删除无效专用发票条目");
salesBillVoucherService.delete(item);
vucherItemService.delete(item);
}
}
}
public void syncBySalesOrder(SalesOrder order, MessageHolder holder) {
SalesBillVoucherService voucherService = getSalesBillVoucherService();
var voucherService = getSalesBillVoucherService();
var voucherItemService = getSalesBillVoucherItemService();
List<SalesBillVoucher> vouchers = voucherService.findAll((root, q, cb) -> {
return cb.equal(root.get("order"), order);
}, Sort.unsorted());
holder.debug("查找到 " + vouchers.size() + " 条专用发票记录在数据库中");
Map<Integer, SalesBillVoucher> voucherMap = vouchers.stream().collect(Collectors.toMap(SalesBillVoucher::getRefId, item -> item));
Map<Integer, SalesBillVoucher> voucherMap = vouchers.stream()
.collect(Collectors.toMap(SalesBillVoucher::getRefId, item -> item));
{
// 查询 U8 数据库
List<Map<String, Object>> ds = repository.findAllSalesBillVoucherBySalesOrderCode(order.getCode());
@@ -207,13 +204,14 @@ public class SalesBillVoucherCtx extends AbstractYongYouU8Ctx {
}
}
List<SalesBillVoucherItem> items = voucherService.findAllItems((root, q, cb) -> {
List<SalesBillVoucherItem> items = voucherItemService.findAll((root, q, cb) -> {
return cb.equal(root.get("voucher").get("order"), order);
}, Sort.unsorted());
// 按 order 分组
Map<SalesBillVoucher, Map<Integer, SalesBillVoucherItem>> itemMap = items.stream().collect(Collectors.groupingBy(SalesBillVoucherItem::getVoucher,
Collectors.toMap(SalesBillVoucherItem::getRefId, item -> item)));
Map<SalesBillVoucher, Map<Integer, SalesBillVoucherItem>> itemMap = items.stream()
.collect(Collectors.groupingBy(SalesBillVoucherItem::getVoucher,
Collectors.toMap(SalesBillVoucherItem::getRefId, item -> item)));
for (SalesBillVoucher voucher : voucherMap.values()) {
// 查询 U8 数据库
@@ -241,18 +239,18 @@ public class SalesBillVoucherCtx extends AbstractYongYouU8Ctx {
itemModified = true;
}
if (itemModified) {
item = voucherService.save(item);
item = voucherItemService.save(item);
}
}
for (SalesBillVoucherItem item : subItemMap.values()) {
holder.info("删除无效专用发票条目");
voucherService.delete(item);
voucherItemService.delete(item);
}
}
}
private boolean applySalesBillVoucherDetail(SalesBillVoucher voucher, Map<String, Object> map, MessageHolder holder) {
private boolean applySalesBillVoucherDetail(SalesBillVoucher voucher, Map<String, Object> map,
MessageHolder holder) {
String code = String.valueOf(map.get("SBVID"));
String customerCode = (String) map.get("cCusCode");
String salesOrderCode = (String) map.get("cSOCode");
@@ -270,7 +268,6 @@ public class SalesBillVoucherCtx extends AbstractYongYouU8Ctx {
String description = (String) map.get("cMemo");
boolean modified = false;
holder.debug("条目:" + code + " x " + salesOrderCode);
@@ -278,7 +275,7 @@ public class SalesBillVoucherCtx extends AbstractYongYouU8Ctx {
modified = true;
}
SalesOrder salesOrder = null;
SalesOrderVo salesOrder = null;
if (StringUtils.hasText(salesOrderCode)) {
salesOrder = getSaleOrdersService().findByCode(salesOrderCode);
}
@@ -287,9 +284,10 @@ public class SalesBillVoucherCtx extends AbstractYongYouU8Ctx {
holder.warn("无效销售订单:" + salesOrderCode);
modified = true;
} else {
if (!Objects.equals(voucher.getOrder(), salesOrder)) {
voucher.setOrder(salesOrder);
holder.info("销售订单修改为: " + salesOrder.getCode());
if (voucher.getOrder() == null || !Objects.equals(voucher.getOrder().getId(), salesOrder.getId())) {
var v1 = getSaleOrdersService().getById(salesOrder.getId());
voucher.setOrder(v1);
holder.info("销售订单修改为: " + v1.getCode());
modified = true;
}
}
@@ -318,8 +316,8 @@ public class SalesBillVoucherCtx extends AbstractYongYouU8Ctx {
return modified;
}
private boolean applySalesBillVoucherItemDetail(SalesBillVoucherItem item, Map<String, Object> map, MessageHolder holder) {
private boolean applySalesBillVoucherItemDetail(SalesBillVoucherItem item, Map<String, Object> map,
MessageHolder holder) {
String code = String.valueOf(map.get("ID"));
String inventoryCode = (String) map.get("cInvCode");
String contractCode = (String) map.get("ContractCode");
@@ -330,7 +328,6 @@ public class SalesBillVoucherCtx extends AbstractYongYouU8Ctx {
double taxPrice = (double) map.get("iTaxUnitPrice");
BigDecimal amount = (BigDecimal) map.get("iSum");
Timestamp signDate = (Timestamp) map.get("dSignDate");
boolean modified = false;
@@ -359,7 +356,8 @@ public class SalesBillVoucherCtx extends AbstractYongYouU8Ctx {
return modified;
}
boolean updateInventory(Supplier<Inventory> getter, Consumer<Inventory> setter, String inventoryCode, MessageHolder holder, String topic) {
boolean updateInventory(Supplier<Inventory> getter, Consumer<Inventory> setter, String inventoryCode,
MessageHolder holder, String topic) {
return getInventoryCtx().syncInventoryDetailByCode(getter, setter, inventoryCode, holder, topic);
}
}

View File

@@ -18,9 +18,9 @@ import com.ecep.contract.MessageHolder;
import com.ecep.contract.constant.CloudServiceConstant;
import com.ecep.contract.ds.contract.service.SaleOrdersService;
import com.ecep.contract.ds.contract.service.SalesOrderItemService;
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.SalesOrder;
import com.ecep.contract.model.SalesOrderItem;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.ds.customer.model.SalesOrder;
import com.ecep.contract.ds.customer.model.SalesOrderItem;
import com.ecep.contract.util.NumberUtils;
import lombok.Setter;

View File

@@ -8,6 +8,9 @@ import java.util.Objects;
import java.util.function.Consumer;
import java.util.function.Supplier;
import com.ecep.contract.ds.vendor.service.VendorCatalogService;
import com.ecep.contract.vo.VendorCatalogVo;
import com.ecep.contract.vo.VendorEntityVo;
import org.hibernate.Hibernate;
import org.springframework.util.StringUtils;
@@ -17,9 +20,9 @@ import com.ecep.contract.cloud.old.OldVersionService;
import com.ecep.contract.ds.company.service.CompanyService;
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.Vendor;
import com.ecep.contract.model.VendorEntity;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.vendor.model.Vendor;
import com.ecep.contract.ds.vendor.model.VendorEntity;
import com.ecep.contract.model.VendorCatalog;
import lombok.Setter;
@@ -66,9 +69,10 @@ public class VendorCtx extends AbstractYongYouU8Ctx {
* @param unitCode 供应商相关项编码
* @param holder 消息
*/
public VendorEntity updateVendorEntityDetailByCode(VendorEntity item, String unitCode, MessageHolder holder) {
if (applyEntityDetail(item, repository.findVendorByVendCode(unitCode), holder)) {
item = save(item);
public VendorEntityVo updateVendorEntityDetailByCode(VendorEntityVo item, String unitCode, MessageHolder holder) {
VendorEntity v1 = getCompanyVendorEntityService().getById(item.getId());
if (applyEntityDetail(v1, repository.findVendorByVendCode(unitCode), holder)) {
item = save(v1).toVo();
}
return item;
}
@@ -152,7 +156,7 @@ public class VendorCtx extends AbstractYongYouU8Ctx {
}
if (vendor != null) {
if (!Hibernate.isInitialized(vendor)) {
vendor = getCompanyVendorService().findById(vendor.getId());
vendor = getCompanyVendorService().getById(vendor.getId());
}
Company company = vendor.getCompany();
if (company != null) {
@@ -163,7 +167,7 @@ public class VendorCtx extends AbstractYongYouU8Ctx {
}
private boolean updateVendorCatalog(Supplier<VendorCatalog> getter, Consumer<VendorCatalog> setter, String catalogCode, MessageHolder holder, String topic) {
VendorCatalog catalog = null;
VendorCatalogVo catalog = null;
if (StringUtils.hasText(catalogCode)) {
catalog = getCompanyVendorService().findCatalogByCode(catalogCode);
}
@@ -171,16 +175,20 @@ public class VendorCtx extends AbstractYongYouU8Ctx {
setter.accept(null);
holder.warn("无效" + topic + "" + catalogCode);
return true;
} else {
if (!Objects.equals(getter.get(), catalog)) {
if (!Hibernate.isInitialized(catalog)) {
catalog = getCompanyVendorService().findCatalogByCode(catalogCode);
}
setter.accept(catalog);
holder.info(topic + "修改为: " + catalog.getName());
return true;
}
}
VendorCatalog v0 = getCachedBean(VendorCatalogService.class).getById(catalog.getId());
VendorCatalog v1 = getter.get();
if (v1 == null) {
setter.accept(v0);
holder.info(topic + "修改为: " + v0.getName());
return true;
}
if (!Objects.equals(v1, v0)) {
setter.accept(v0);
holder.info(topic + "修改为: " + v0.getName());
return true;
}
return false;
}
@@ -272,13 +280,13 @@ public class VendorCtx extends AbstractYongYouU8Ctx {
return updateLocalDate(vendor::getDevelopDate, vendor::setDevelopDate, developDate, holder, "开发日期");
}
public VendorEntity findOrCreateByCode(String venCode, MessageHolder subHolder) {
public VendorEntityVo findOrCreateByCode(String venCode, MessageHolder subHolder) {
VendorEntityService service = getCompanyVendorEntityService();
VendorEntity entity = service.findByCode(venCode);
VendorEntityVo entity = service.findByCode(venCode);
if (entity == null) {
entity = new VendorEntity();
entity.setCode(venCode);
entity = service.save(entity);
VendorEntity v1 = new VendorEntity();
v1.setCode(venCode);
entity = service.save(v1).toVo();
subHolder.info("创建供应商相关项: " + venCode);
}
return entity;

View File

@@ -24,7 +24,7 @@ class CustomLocalDateTimeDeserializer extends StdDeserializer<LocalDateTime> {
super(LocalDateTime.class);
// 支持多种日期时间格式
this.formatters = new ArrayList<>();
// ISO标准格式
// ISO标准格式2011-12-03T10:15:30
this.formatters.add(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
// 项目默认格式 yyyy-MM-dd HH:mm:ss
this.formatters.add(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

View File

@@ -2,7 +2,7 @@ package com.ecep.contract.ds.company;
import com.ecep.contract.ds.company.service.CompanyContactService;
import com.ecep.contract.ds.converter.EntityStringConverter;
import com.ecep.contract.model.CompanyContact;
import com.ecep.contract.ds.company.model.CompanyContact;
public class CompanyContactStringConverter extends EntityStringConverter<CompanyContact> {

View File

@@ -14,7 +14,7 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.CompanyFileType;
import com.ecep.contract.MyDateTimeUtils;
import com.ecep.contract.constant.CloudServiceConstant;
import com.ecep.contract.model.CompanyFile;
import com.ecep.contract.ds.company.model.CompanyFile;
public class CompanyFileUtils {

View File

@@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.model.Company;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.vo.CompanyVo;
@RestController

View File

@@ -1,8 +1,12 @@
package com.ecep.contract.model;
package com.ecep.contract.ds.company.model;
import java.time.LocalDate;
import java.util.Objects;
import com.ecep.contract.model.BasedEntity;
import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.model.NamedEntity;
import com.ecep.contract.model.Voable;
import org.hibernate.annotations.ColumnDefault;
import com.ecep.contract.util.HibernateProxyUtils;

View File

@@ -1,7 +1,11 @@
package com.ecep.contract.model;
package com.ecep.contract.ds.company.model;
import java.util.Objects;
import com.ecep.contract.model.Bank;
import com.ecep.contract.model.BasedEntity;
import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.model.Voable;
import com.ecep.contract.util.HibernateProxyUtils;
import com.ecep.contract.vo.CompanyBankAccountVo;

View File

@@ -1,4 +1,4 @@
package com.ecep.contract.model;
package com.ecep.contract.ds.company.model;
public interface CompanyBasedEntity {

View File

@@ -1,8 +1,10 @@
package com.ecep.contract.model;
package com.ecep.contract.ds.company.model;
import java.time.LocalDate;
import java.util.Objects;
import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.model.Voable;
import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;

View File

@@ -1,8 +1,12 @@
package com.ecep.contract.model;
package com.ecep.contract.ds.company.model;
import java.time.LocalDate;
import java.util.Objects;
import com.ecep.contract.model.BasedEntity;
import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.model.NamedEntity;
import com.ecep.contract.model.Voable;
import org.hibernate.annotations.ColumnDefault;
import com.ecep.contract.util.HibernateProxyUtils;

View File

@@ -1,7 +1,9 @@
package com.ecep.contract.model;
package com.ecep.contract.ds.company.model;
import java.util.Objects;
import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.model.Voable;
import org.hibernate.annotations.ColumnDefault;
import com.ecep.contract.util.HibernateProxyUtils;

View File

@@ -1,9 +1,11 @@
package com.ecep.contract.model;
package com.ecep.contract.ds.company.model;
import java.time.LocalDate;
import java.util.Objects;
import com.ecep.contract.CompanyFileType;
import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.model.Voable;
import com.ecep.contract.util.HibernateProxyUtils;
import com.ecep.contract.vo.CompanyFileVo;

View File

@@ -1,7 +1,11 @@
package com.ecep.contract.model;
package com.ecep.contract.ds.company.model;
import java.util.Objects;
import com.ecep.contract.model.BasedEntity;
import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.model.NamedEntity;
import com.ecep.contract.model.Voable;
import com.ecep.contract.util.HibernateProxyUtils;
import com.ecep.contract.vo.CompanyInvoiceInfoVo;

View File

@@ -1,8 +1,11 @@
package com.ecep.contract.model;
package com.ecep.contract.ds.company.model;
import java.time.LocalDate;
import java.util.Objects;
import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.model.NamedEntity;
import com.ecep.contract.model.Voable;
import org.hibernate.annotations.ColumnDefault;
import com.ecep.contract.util.HibernateProxyUtils;

View File

@@ -3,8 +3,8 @@ package com.ecep.contract.ds.company.repository;
import java.util.Optional;
import com.ecep.contract.ds.MyRepository;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyBankAccount;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyBankAccount;
public interface CompanyBankAccountRepository extends MyRepository<CompanyBankAccount, Integer> {

View File

@@ -5,8 +5,8 @@ import java.util.List;
import org.springframework.stereotype.Repository;
import com.ecep.contract.ds.MyRepository;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyBlackReason;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyBlackReason;
@Repository
public interface CompanyBlackReasonRepository extends MyRepository<CompanyBlackReason, Integer> {

View File

@@ -6,8 +6,8 @@ import java.util.Optional;
import org.springframework.stereotype.Repository;
import com.ecep.contract.ds.MyRepository;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyContact;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyContact;
@Repository
public interface CompanyContactRepository extends MyRepository<CompanyContact, Integer> {

View File

@@ -10,9 +10,9 @@ import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyContract;
import com.ecep.contract.model.Contract;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.contract.model.CompanyContract;
import com.ecep.contract.ds.contract.model.Contract;
@Repository
public interface CompanyContractRepository extends

View File

@@ -3,10 +3,11 @@ package com.ecep.contract.ds.company.repository;
import java.util.List;
import com.ecep.contract.ds.MyRepository;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyExtendInfo;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyExtendInfo;
public interface CompanyExtendInfoRepository extends MyRepository<CompanyExtendInfo, Integer> {
List<CompanyExtendInfo> findByCompany(Company company);
List<CompanyExtendInfo> findByCompanyId(Integer companyId);
}

View File

@@ -4,8 +4,8 @@ import java.util.List;
import com.ecep.contract.CompanyFileType;
import com.ecep.contract.ds.MyRepository;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyFile;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyFile;
public interface CompanyFileRepository extends MyRepository<CompanyFile, Integer> {

View File

@@ -6,7 +6,7 @@ import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import com.ecep.contract.model.CompanyInvoiceInfo;
import com.ecep.contract.ds.company.model.CompanyInvoiceInfo;
/**
* 公司发票信息 Repository

View File

@@ -10,7 +10,7 @@ import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.ecep.contract.model.CompanyOldName;
import com.ecep.contract.ds.company.model.CompanyOldName;
@Repository
public interface CompanyOldNameRepository extends

View File

@@ -5,14 +5,10 @@ import java.util.Optional;
import java.util.stream.Stream;
import com.ecep.contract.ds.MyRepository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import com.ecep.contract.model.Company;
import com.ecep.contract.ds.company.model.Company;
@Repository
public interface CompanyRepository extends MyRepository<Company, Integer> {

View File

@@ -3,8 +3,8 @@ package com.ecep.contract.ds.company.repository;
import java.util.List;
import com.ecep.contract.ds.MyRepository;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.Invoice;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.other.model.Invoice;
public interface InvoiceRepository extends MyRepository<Invoice, Integer> {

View File

@@ -22,8 +22,8 @@ import com.ecep.contract.QueryService;
import com.ecep.contract.SpringApp;
import com.ecep.contract.ds.company.repository.CompanyBankAccountRepository;
import com.ecep.contract.ds.other.service.BankService;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyBankAccount;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyBankAccount;
import com.ecep.contract.service.ServiceException;
import com.ecep.contract.service.VoableService;
import com.ecep.contract.util.SpecificationUtils;

View File

@@ -22,10 +22,10 @@ import com.ecep.contract.VendorFileType;
import com.ecep.contract.SpringApp;
import com.ecep.contract.ds.company.CompanyFileUtils;
import com.ecep.contract.ds.other.repository.HolidayTableRepository;
import com.ecep.contract.model.Company;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.model.CompanyBasicFile;
import com.ecep.contract.model.CompanyCustomerFile;
import com.ecep.contract.model.VendorFile;
import com.ecep.contract.ds.customer.model.CompanyCustomerFile;
import com.ecep.contract.ds.vendor.model.VendorFile;
import com.ecep.contract.model.HolidayTable;
public abstract class CompanyBasicService {

View File

@@ -19,8 +19,8 @@ import com.ecep.contract.IEntityService;
import com.ecep.contract.QueryService;
import com.ecep.contract.SpringApp;
import com.ecep.contract.ds.company.repository.CompanyBlackReasonRepository;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyBlackReason;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyBlackReason;
import com.ecep.contract.service.VoableService;
import com.ecep.contract.util.SpecificationUtils;
import com.ecep.contract.vo.CompanyBlackReasonVo;

View File

@@ -18,8 +18,8 @@ import com.ecep.contract.IEntityService;
import com.ecep.contract.QueryService;
import com.ecep.contract.SpringApp;
import com.ecep.contract.ds.company.repository.CompanyContactRepository;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyContact;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyContact;
import com.ecep.contract.service.ServiceException;
import com.ecep.contract.service.VoableService;
import com.ecep.contract.util.MyStringUtils;

View File

@@ -2,6 +2,8 @@ package com.ecep.contract.ds.company.service;
import java.util.List;
import com.ecep.contract.SpringApp;
import com.ecep.contract.vo.CompanyVo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -21,8 +23,8 @@ import com.ecep.contract.IEntityService;
import com.ecep.contract.QueryService;
import com.ecep.contract.constant.ServiceConstant;
import com.ecep.contract.ds.company.repository.CompanyExtendInfoRepository;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyExtendInfo;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyExtendInfo;
import com.ecep.contract.service.ServiceException;
import com.ecep.contract.service.VoableService;
import com.ecep.contract.util.SpecificationUtils;
@@ -86,15 +88,27 @@ public class CompanyExtendInfoService implements IEntityService<CompanyExtendInf
}
@Caching(evict = {
@CacheEvict(key = "#p0.id"),
@CacheEvict(key = "'byCompany-'+#p0.company.id")
@CacheEvict(key = "#p0.id", condition = "#p0.id != null"),
@CacheEvict(key = "'byCompany-'+#p0.company.id", condition = "#p0.company != null")
})
@Override
public CompanyExtendInfo save(CompanyExtendInfo extendInfo) {
return repository.save(extendInfo);
}
@Cacheable(key = "'byCompany-'+#p0")
@Cacheable(key = "'byCompany-'+#p0.id")
public CompanyExtendInfoVo findByCompany(CompanyVo company) {
List<CompanyExtendInfo> list = repository.findByCompanyId(company.getId());
if (list.isEmpty()) {
CompanyExtendInfo extendInfo = new CompanyExtendInfo();
Company v1 = SpringApp.getBean(CompanyService.class).getById(company.getId());
extendInfo.setCompany(v1);
extendInfo.setDisableVerify(false);
return repository.save(extendInfo).toVo();
}
return list.getFirst().toVo();
}
public CompanyExtendInfo findByCompany(Company company) {
List<CompanyExtendInfo> list = repository.findByCompany(company);
if (list.isEmpty()) {
@@ -111,7 +125,21 @@ public class CompanyExtendInfoService implements IEntityService<CompanyExtendInf
if (model == null || vo == null) {
throw new ServiceException("Model or VO cannot be null");
}
if (vo.getCompanyId() == null) {
model.setCompany(null);
} else {
Company v1 = model.getCompany();
if (v1 == null) {
Company company = SpringApp.getBean(CompanyService.class).getById(vo.getCompanyId());
model.setCompany(company);
} else {
if (!v1.getId().equals(vo.getCompanyId())) {
Company company = SpringApp.getBean(CompanyService.class).getById(vo.getCompanyId());
model.setCompany(company);
}
}
}
// 只更新VO中已有的字段
model.setDisableVerify(vo.isDisableVerify());
}

View File

@@ -36,11 +36,10 @@ import com.ecep.contract.constant.CompanyConstant;
import com.ecep.contract.constant.ServiceConstant;
import com.ecep.contract.ds.company.repository.CompanyFileRepository;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.vendor.repository.VendorGroupRepository;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyFile;
import com.ecep.contract.model.CompanyOldName;
import com.ecep.contract.model.Contract;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyFile;
import com.ecep.contract.ds.company.model.CompanyOldName;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.service.VoableService;
import com.ecep.contract.util.FileUtils;
import com.ecep.contract.util.SpecificationUtils;

View File

@@ -19,8 +19,8 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.IEntityService;
import com.ecep.contract.QueryService;
import com.ecep.contract.ds.company.repository.CompanyInvoiceInfoRepository;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyInvoiceInfo;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyInvoiceInfo;
import com.ecep.contract.service.ServiceException;
import com.ecep.contract.service.VoableService;
import com.ecep.contract.util.SpecificationUtils;

View File

@@ -20,8 +20,8 @@ import org.springframework.util.StringUtils;
import com.ecep.contract.IEntityService;
import com.ecep.contract.QueryService;
import com.ecep.contract.ds.company.repository.CompanyOldNameRepository;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.CompanyOldName;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyOldName;
import com.ecep.contract.service.VoableService;
import com.ecep.contract.util.FileUtils;
import com.ecep.contract.util.MyStringUtils;

View File

@@ -18,8 +18,6 @@ import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.Caching;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
@@ -38,10 +36,10 @@ import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.customer.service.CompanyCustomerService;
import com.ecep.contract.ds.other.service.SysConfService;
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.CompanyOldName;
import com.ecep.contract.model.Vendor;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.customer.model.CompanyCustomer;
import com.ecep.contract.ds.company.model.CompanyOldName;
import com.ecep.contract.ds.vendor.model.Vendor;
import com.ecep.contract.service.VoableService;
import com.ecep.contract.util.FileUtils;
import com.ecep.contract.util.MyStringUtils;

View File

@@ -20,8 +20,8 @@ import com.ecep.contract.IEntityService;
import com.ecep.contract.QueryService;
import com.ecep.contract.SpringApp;
import com.ecep.contract.ds.company.repository.InvoiceRepository;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.Invoice;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.other.model.Invoice;
import com.ecep.contract.service.VoableService;
import com.ecep.contract.util.SpecificationUtils;
import com.ecep.contract.vo.InvoiceVo;

View File

@@ -9,7 +9,7 @@ import org.springframework.data.jpa.domain.Specification;
import com.ecep.contract.MessageHolder;
import com.ecep.contract.ds.company.service.CompanyFileService;
import com.ecep.contract.model.Company;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ui.Tasker;
/**

View File

@@ -6,7 +6,8 @@ import org.springframework.stereotype.Component;
import com.ecep.contract.ds.contract.service.ContractService;
import com.ecep.contract.ds.converter.EntityStringConverter;
import com.ecep.contract.model.Contract;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.vo.ContractVo;
import jakarta.annotation.PostConstruct;
@@ -25,6 +26,12 @@ public class ContractStringConverter extends EntityStringConverter<Contract> {
setInitialized(project -> service.getById(project.getId()));
setSuggestion(service::search);
// TODO 按名称找出,容易出问题
setFromString(service::findByName);
setFromString(string -> {
ContractVo vo = service.findByName(string);
if (vo == null) {
return null;
}
return service.getById(vo.getId());
});
}
}

View File

@@ -1,26 +1,21 @@
package com.ecep.contract.model;
import java.util.Map;
import java.util.Objects;
package com.ecep.contract.ds.contract.model;
import com.ecep.contract.cloud.old.CompanyContactUtils;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyBasedEntity;
import com.ecep.contract.ds.company.model.CompanyContact;
import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.model.Voable;
import com.ecep.contract.util.HibernateProxyUtils;
import com.ecep.contract.vo.CompanyContractVo;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Index;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToOne;
import jakarta.persistence.Table;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.util.Map;
import java.util.Objects;
@Getter
@Setter
@Entity

View File

@@ -1,32 +1,22 @@
package com.ecep.contract.model;
package com.ecep.contract.ds.contract.model;
import com.ecep.contract.ContractPayWay;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.company.model.CompanyBasedEntity;
import com.ecep.contract.ds.project.model.Project;
import com.ecep.contract.model.*;
import com.ecep.contract.util.HibernateProxyUtils;
import com.ecep.contract.vo.ContractVo;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.annotations.ColumnDefault;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Objects;
import org.hibernate.annotations.ColumnDefault;
import com.ecep.contract.ContractPayWay;
import com.ecep.contract.util.HibernateProxyUtils;
import com.ecep.contract.vo.ContractVo;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.Lob;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import jakarta.persistence.Version;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* 合同类
*/

View File

@@ -1,4 +1,4 @@
package com.ecep.contract.model;
package com.ecep.contract.ds.contract.model;
public interface ContractBasedEntity {
Contract getContract();

View File

@@ -1,7 +1,10 @@
package com.ecep.contract.model;
package com.ecep.contract.ds.contract.model;
import java.util.Objects;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.model.Voable;
import com.ecep.contract.util.HibernateProxyUtils;
import com.ecep.contract.vo.ContractBidVendorVo;

View File

@@ -1,9 +1,10 @@
package com.ecep.contract.model;
package com.ecep.contract.ds.contract.model;
import java.time.LocalDate;
import java.util.Objects;
import com.ecep.contract.ContractFileType;
import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.model.Voable;
import com.ecep.contract.vo.ContractFileVo;
import com.ecep.contract.util.HibernateProxyUtils;

View File

@@ -1,9 +1,10 @@
package com.ecep.contract.model;
package com.ecep.contract.ds.contract.model;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Objects;
import com.ecep.contract.model.*;
import com.ecep.contract.util.HibernateProxyUtils;
import com.ecep.contract.vo.ContractItemVo;

View File

@@ -1,9 +1,11 @@
package com.ecep.contract.model;
package com.ecep.contract.ds.contract.model;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Objects;
import com.ecep.contract.model.IdentityEntity;
import com.ecep.contract.model.Voable;
import com.ecep.contract.util.HibernateProxyUtils;
import com.ecep.contract.vo.ContractPayPlanVo;

View File

@@ -8,7 +8,7 @@ import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import com.ecep.contract.model.ContractBidVendor;
import com.ecep.contract.ds.contract.model.ContractBidVendor;
@Repository
public interface ContractBidVendorRepository extends

View File

@@ -7,8 +7,8 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
import com.ecep.contract.ContractFileType;
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ContractFile;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.ds.contract.model.ContractFile;
@Repository
public interface ContractFileRepository extends JpaRepository<ContractFile, Integer>, JpaSpecificationExecutor<ContractFile> {

View File

@@ -6,7 +6,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
import com.ecep.contract.model.ContractItem;
import com.ecep.contract.ds.contract.model.ContractItem;
@Repository
public interface ContractItemRepository extends JpaRepository<ContractItem, Integer>, JpaSpecificationExecutor<ContractItem> {

View File

@@ -5,8 +5,8 @@ import java.util.List;
import org.springframework.stereotype.Repository;
import com.ecep.contract.ds.MyRepository;
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ContractPayPlan;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.ds.contract.model.ContractPayPlan;
@Repository
public interface ContractPayPlanRepository extends MyRepository<ContractPayPlan, Integer> {

View File

@@ -7,7 +7,7 @@ import org.springframework.stereotype.Repository;
import com.ecep.contract.ContractPayWay;
import com.ecep.contract.ds.MyRepository;
import com.ecep.contract.model.Contract;
import com.ecep.contract.ds.contract.model.Contract;
@Repository
public interface ContractRepository extends MyRepository<Contract, Integer> {

View File

@@ -6,7 +6,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
import com.ecep.contract.model.ExtendVendorInfo;
import com.ecep.contract.ds.vendor.model.ExtendVendorInfo;
@Repository
public interface ExtendVendorInfoRepository extends

View File

@@ -6,7 +6,7 @@ import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import com.ecep.contract.model.PurchaseBillVoucherItem;
import com.ecep.contract.ds.vendor.model.PurchaseBillVoucherItem;
@Repository
public interface PurchaseBillVoucherItemRepository extends

View File

@@ -2,20 +2,13 @@ package com.ecep.contract.ds.contract.repository;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import com.ecep.contract.model.PurchaseBillVoucher;
import com.ecep.contract.ds.MyRepository;
import com.ecep.contract.ds.vendor.model.PurchaseBillVoucher;
@Repository
public interface PurchaseBillVoucherRepository extends
// JDBC interfaces
CrudRepository<PurchaseBillVoucher, Integer>, PagingAndSortingRepository<PurchaseBillVoucher, Integer>,
// JPA interfaces
JpaRepository<PurchaseBillVoucher, Integer>, JpaSpecificationExecutor<PurchaseBillVoucher> {
public interface PurchaseBillVoucherRepository extends MyRepository<PurchaseBillVoucher, Integer> {
Optional<PurchaseBillVoucher> findByCode(String code);

View File

@@ -5,8 +5,8 @@ import java.util.List;
import org.springframework.stereotype.Repository;
import com.ecep.contract.ds.MyRepository;
import com.ecep.contract.model.PurchaseOrder;
import com.ecep.contract.model.PurchaseOrderItem;
import com.ecep.contract.ds.vendor.model.PurchaseOrder;
import com.ecep.contract.ds.vendor.model.PurchaseOrderItem;
@Repository
public interface PurchaseOrderItemRepository extends MyRepository<PurchaseOrderItem, Integer>{

View File

@@ -9,8 +9,8 @@ import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.PurchaseOrder;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.ds.vendor.model.PurchaseOrder;
@Repository
public interface PurchaseOrderRepository extends

View File

@@ -1,19 +1,11 @@
package com.ecep.contract.ds.contract.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import com.ecep.contract.model.SalesBillVoucherItem;
import com.ecep.contract.ds.MyRepository;
import com.ecep.contract.ds.customer.model.SalesBillVoucherItem;
@Repository
public interface SalesBillVoucherItemRepository extends
// JDBC interfaces
CrudRepository<SalesBillVoucherItem, Integer>,
PagingAndSortingRepository<SalesBillVoucherItem, Integer>,
// JPA interfaces
JpaRepository<SalesBillVoucherItem, Integer>, JpaSpecificationExecutor<SalesBillVoucherItem> {
public interface SalesBillVoucherItemRepository extends MyRepository<SalesBillVoucherItem, Integer> {
}

View File

@@ -2,14 +2,10 @@ package com.ecep.contract.ds.contract.repository;
import java.util.Optional;
import com.ecep.contract.ds.MyRepository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import com.ecep.contract.model.SalesBillVoucher;
import com.ecep.contract.ds.MyRepository;
import com.ecep.contract.ds.customer.model.SalesBillVoucher;
@Repository
public interface SalesBillVoucherRepository extends MyRepository<SalesBillVoucher, Integer> {

View File

@@ -4,14 +4,10 @@ import java.util.List;
import java.util.Optional;
import com.ecep.contract.ds.MyRepository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import com.ecep.contract.model.SalesOrder;
import com.ecep.contract.model.SalesOrderItem;
import com.ecep.contract.ds.customer.model.SalesOrder;
import com.ecep.contract.ds.customer.model.SalesOrderItem;
@Repository
public interface SalesOrderItemRepository extends MyRepository<SalesOrderItem, Integer> {

View File

@@ -4,14 +4,10 @@ import java.util.List;
import java.util.Optional;
import com.ecep.contract.ds.MyRepository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.SalesOrder;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.ds.customer.model.SalesOrder;
@Repository
public interface SalesOrderRepository extends MyRepository<SalesOrder, Integer> {

View File

@@ -21,9 +21,9 @@ import com.ecep.contract.SpringApp;
import com.ecep.contract.ds.company.service.CompanyService;
import com.ecep.contract.ds.contract.repository.ContractBidVendorRepository;
import com.ecep.contract.ds.contract.repository.ContractFileRepository;
import com.ecep.contract.model.Company;
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ContractBidVendor;
import com.ecep.contract.ds.company.model.Company;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.ds.contract.model.ContractBidVendor;
import com.ecep.contract.service.VoableService;
import com.ecep.contract.util.SpecificationUtils;
import com.ecep.contract.vo.ContractBidVendorVo;
@@ -71,8 +71,8 @@ public class ContractBidVendorService implements IEntityService<ContractBidVendo
}
@Cacheable(key = "'allbycontract-'+#p0.id")
public List<ContractBidVendor> findByContract(Contract contract) {
return repository.findByContractId(contract.getId());
public List<ContractBidVendorVo> findByContract(Contract contract) {
return repository.findByContractId(contract.getId()).stream().map(ContractBidVendor::toVo).toList();
}
@Caching(evict = {
@@ -129,7 +129,7 @@ public class ContractBidVendorService implements IEntityService<ContractBidVendo
model.setContract(contractService.getById(vo.getContractId()));
}
}
if (vo.getCompanyId() == null) {
model.setCompany(null);
} else {
@@ -138,7 +138,7 @@ public class ContractBidVendorService implements IEntityService<ContractBidVendo
model.setCompany(companyService.getById(vo.getCompanyId()));
}
}
if (vo.getQuotationSheetFileId() == null) {
model.setQuotationSheet(null);
} else {

View File

@@ -23,8 +23,8 @@ import com.ecep.contract.IEntityService;
import com.ecep.contract.QueryService;
import com.ecep.contract.SpringApp;
import com.ecep.contract.ds.contract.repository.ContractFileRepository;
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ContractFile;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.ds.contract.model.ContractFile;
import com.ecep.contract.service.VoableService;
import com.ecep.contract.util.SpecificationUtils;
import com.ecep.contract.vo.ContractFileVo;
@@ -162,8 +162,8 @@ public class ContractFileService implements IEntityService<ContractFile>, QueryS
}
@Cacheable(key = "'allbycontract-'+#p0.id")
public List<ContractFile> findAllByContract(Contract contract) {
return contractFileRepository.findAllByContract(contract);
public List<ContractFileVo> findAllByContract(Contract contract) {
return contractFileRepository.findAllByContract(contract).stream().map(ContractFile::toVo).toList();
}
public List<ContractFile> searchByContract(Contract contract, String userText) {

View File

@@ -78,13 +78,13 @@ public class ContractGroupService implements IEntityService<ContractGroup>, Quer
}
@Cacheable(key = "'code-'+#p0")
public ContractGroup findByCode(String code) {
return repository.findByCode(code).orElse(null);
public ContractGroupVo findByCode(String code) {
return repository.findByCode(code).map(ContractGroup::toVo).orElse(null);
}
@Cacheable(key = "'groups'")
public List<ContractGroup> findAll() {
return repository.findAll();
public List<ContractGroupVo> findAll() {
return repository.findAll().stream().map(ContractGroup::toVo).toList();
}
@Caching(evict = {

View File

@@ -24,8 +24,8 @@ import com.ecep.contract.constant.ServiceConstant;
import com.ecep.contract.ds.contract.repository.ContractItemRepository;
import com.ecep.contract.ds.other.service.EmployeeService;
import com.ecep.contract.ds.other.service.InventoryService;
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ContractItem;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.ds.contract.model.ContractItem;
import com.ecep.contract.model.Inventory;
import com.ecep.contract.service.VoableService;
import com.ecep.contract.util.SpecificationUtils;

View File

@@ -18,8 +18,8 @@ import com.ecep.contract.IEntityService;
import com.ecep.contract.QueryService;
import com.ecep.contract.SpringApp;
import com.ecep.contract.ds.contract.repository.ContractPayPlanRepository;
import com.ecep.contract.model.Contract;
import com.ecep.contract.model.ContractPayPlan;
import com.ecep.contract.ds.contract.model.Contract;
import com.ecep.contract.ds.contract.model.ContractPayPlan;
import com.ecep.contract.service.VoableService;
import com.ecep.contract.util.SpecificationUtils;
import com.ecep.contract.vo.ContractPayPlanVo;

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