feat: 实现文件类型枚举的本地化支持
新增文件类型枚举的本地化功能,包括供应商、项目、公司、合同和客户文件类型。添加了相关的SQL表结构、Repository、Service、ViewModel和StringConverter实现。同时更新了文档说明如何创建和使用枚举类型的本地化功能。 修改了客户文件类型的相关代码,统一使用CustomerFileTypeLocalVo替代原有的CompanyCustomerFileTypeLocal,优化了代码结构和一致性。添加了文件类型枚举的缓存支持,提高了性能。 更新了create_enum.md文档,详细说明了文件类型枚举本地化的实现方式和相关组件清单。
This commit is contained in:
@@ -17,7 +17,6 @@ import com.ecep.contract.SpringApp;
|
|||||||
import com.ecep.contract.constant.CompanyCustomerConstant;
|
import com.ecep.contract.constant.CompanyCustomerConstant;
|
||||||
import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
|
import com.ecep.contract.controller.table.EditableEntityTableTabSkin;
|
||||||
import com.ecep.contract.model.BaseEnumEntity;
|
import com.ecep.contract.model.BaseEnumEntity;
|
||||||
import com.ecep.contract.model.CompanyCustomerFileTypeLocal;
|
|
||||||
import com.ecep.contract.service.CompanyCustomerEvaluationFormFileService;
|
import com.ecep.contract.service.CompanyCustomerEvaluationFormFileService;
|
||||||
import com.ecep.contract.service.CompanyCustomerFileService;
|
import com.ecep.contract.service.CompanyCustomerFileService;
|
||||||
import com.ecep.contract.service.CompanyCustomerFileTypeService;
|
import com.ecep.contract.service.CompanyCustomerFileTypeService;
|
||||||
@@ -31,6 +30,7 @@ import com.ecep.contract.vo.CompanyCustomerEvaluationFormFileVo;
|
|||||||
import com.ecep.contract.vo.CompanyCustomerFileVo;
|
import com.ecep.contract.vo.CompanyCustomerFileVo;
|
||||||
import com.ecep.contract.vo.CompanyCustomerVo;
|
import com.ecep.contract.vo.CompanyCustomerVo;
|
||||||
import com.ecep.contract.vo.CompanyVo;
|
import com.ecep.contract.vo.CompanyVo;
|
||||||
|
import com.ecep.contract.vo.CustomerFileTypeLocalVo;
|
||||||
|
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.beans.binding.Bindings;
|
import javafx.beans.binding.Bindings;
|
||||||
@@ -106,7 +106,7 @@ public class CustomerTabSkinFile
|
|||||||
table.disableProperty().bind(viewModel.getPath().isEmpty());
|
table.disableProperty().bind(viewModel.getPath().isEmpty());
|
||||||
fileTable_idColumn.setCellValueFactory(param -> param.getValue().getId());
|
fileTable_idColumn.setCellValueFactory(param -> param.getValue().getId());
|
||||||
CompanyCustomerFileTypeService fileTypeService = getCachedBean(CompanyCustomerFileTypeService.class);
|
CompanyCustomerFileTypeService fileTypeService = getCachedBean(CompanyCustomerFileTypeService.class);
|
||||||
ObservableMap<CustomerFileType, CompanyCustomerFileTypeLocal> observableMapByLocal = FXCollections
|
ObservableMap<CustomerFileType, CustomerFileTypeLocalVo> observableMapByLocal = FXCollections
|
||||||
.observableMap(fileTypeService.findAll(getLocale()));
|
.observableMap(fileTypeService.findAll(getLocale()));
|
||||||
fileTable_typeColumn.setCellValueFactory(param -> Bindings.valueAt(observableMapByLocal,
|
fileTable_typeColumn.setCellValueFactory(param -> Bindings.valueAt(observableMapByLocal,
|
||||||
param.getValue().getType()).map(BaseEnumEntity::getValue));
|
param.getValue().getType()).map(BaseEnumEntity::getValue));
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.ecep.contract.converter;
|
||||||
|
|
||||||
|
import com.ecep.contract.Desktop;
|
||||||
|
import com.ecep.contract.service.CompanyFileTypeService;
|
||||||
|
import com.ecep.contract.vo.CompanyFileTypeLocalVo;
|
||||||
|
import javafx.util.StringConverter;
|
||||||
|
|
||||||
|
public class CompanyFileTypeStringConverter extends StringConverter<CompanyFileTypeLocalVo> {
|
||||||
|
private final CompanyFileTypeService service;
|
||||||
|
|
||||||
|
public CompanyFileTypeStringConverter(CompanyFileTypeService service) {
|
||||||
|
this.service = service;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString(CompanyFileTypeLocalVo object) {
|
||||||
|
return object.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CompanyFileTypeLocalVo fromString(String string) {
|
||||||
|
return service.findByLocaleAndValue(Desktop.instance.getActiveEmployee().localeProperty().get(), string);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.ecep.contract.converter;
|
||||||
|
|
||||||
|
import com.ecep.contract.Desktop;
|
||||||
|
import com.ecep.contract.service.ContractFileTypeService;
|
||||||
|
import com.ecep.contract.vo.ContractFileTypeLocalVo;
|
||||||
|
import javafx.util.StringConverter;
|
||||||
|
|
||||||
|
public class ContractFileTypeStringConverter extends StringConverter<ContractFileTypeLocalVo> {
|
||||||
|
private final ContractFileTypeService service;
|
||||||
|
|
||||||
|
public ContractFileTypeStringConverter(ContractFileTypeService service) {
|
||||||
|
this.service = service;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString(ContractFileTypeLocalVo object) {
|
||||||
|
return object.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ContractFileTypeLocalVo fromString(String string) {
|
||||||
|
return service.findByLocaleAndValue(Desktop.instance.getActiveEmployee().localeProperty().get(), string);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.ecep.contract.converter;
|
||||||
|
|
||||||
|
import com.ecep.contract.Desktop;
|
||||||
|
import com.ecep.contract.service.CompanyCustomerFileTypeService;
|
||||||
|
import com.ecep.contract.vo.CustomerFileTypeLocalVo;
|
||||||
|
|
||||||
|
import javafx.util.StringConverter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户文件类型字符串转换器
|
||||||
|
*/
|
||||||
|
public class CustomerFileTypeStringConverter extends StringConverter<CustomerFileTypeLocalVo> {
|
||||||
|
private final CompanyCustomerFileTypeService service;
|
||||||
|
|
||||||
|
public CustomerFileTypeStringConverter(CompanyCustomerFileTypeService service) {
|
||||||
|
this.service = service;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString(CustomerFileTypeLocalVo object) {
|
||||||
|
return object.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CustomerFileTypeLocalVo fromString(String string) {
|
||||||
|
return service.findByLocaleAndValue(Desktop.instance.getActiveEmployee().localeProperty().get(), string);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.ecep.contract.converter;
|
||||||
|
|
||||||
|
import com.ecep.contract.Desktop;
|
||||||
|
import com.ecep.contract.service.ProjectFileTypeService;
|
||||||
|
import com.ecep.contract.vo.ProjectFileTypeLocalVo;
|
||||||
|
|
||||||
|
import javafx.util.StringConverter;
|
||||||
|
|
||||||
|
public class ProjectFileTypeStringConverter extends StringConverter<ProjectFileTypeLocalVo> {
|
||||||
|
private final ProjectFileTypeService service;
|
||||||
|
|
||||||
|
public ProjectFileTypeStringConverter(ProjectFileTypeService service) {
|
||||||
|
this.service = service;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString(ProjectFileTypeLocalVo object) {
|
||||||
|
return object.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ProjectFileTypeLocalVo fromString(String string) {
|
||||||
|
return service.findByLocaleAndValue(Desktop.instance.getActiveEmployee().localeProperty().get(), string);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.ecep.contract.converter;
|
||||||
|
|
||||||
|
import com.ecep.contract.Desktop;
|
||||||
|
import com.ecep.contract.service.VendorFileTypeService;
|
||||||
|
import com.ecep.contract.vo.VendorFileTypeLocalVo;
|
||||||
|
import javafx.util.StringConverter;
|
||||||
|
|
||||||
|
public class VendorFileTypeStringConverter extends StringConverter<VendorFileTypeLocalVo> {
|
||||||
|
private final VendorFileTypeService service;
|
||||||
|
|
||||||
|
public VendorFileTypeStringConverter(VendorFileTypeService service) {
|
||||||
|
this.service = service;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString(VendorFileTypeLocalVo object) {
|
||||||
|
return object.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public VendorFileTypeLocalVo fromString(String string) {
|
||||||
|
return service.findByLocaleAndValue(Desktop.instance.getActiveEmployee().localeProperty().get(), string);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,27 +1,72 @@
|
|||||||
package com.ecep.contract.service;
|
package com.ecep.contract.service;
|
||||||
|
|
||||||
import com.ecep.contract.CustomerFileType;
|
|
||||||
import com.ecep.contract.model.CompanyCustomerFileTypeLocal;
|
|
||||||
import com.ecep.contract.vm.CompanyCustomerFileTypeLocalViewModel;
|
|
||||||
import org.springframework.cache.annotation.CacheConfig;
|
|
||||||
import org.springframework.cache.annotation.Cacheable;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import org.springframework.cache.annotation.CacheConfig;
|
||||||
|
import org.springframework.cache.annotation.CachePut;
|
||||||
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
|
import org.springframework.cache.annotation.Caching;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import com.ecep.contract.CustomerFileType;
|
||||||
|
import com.ecep.contract.converter.CustomerFileTypeStringConverter;
|
||||||
|
import com.ecep.contract.util.ParamUtils;
|
||||||
|
import com.ecep.contract.vm.CompanyCustomerFileTypeLocalViewModel;
|
||||||
|
import com.ecep.contract.vo.CustomerFileTypeLocalVo;
|
||||||
|
|
||||||
|
import javafx.util.StringConverter;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@CacheConfig(cacheNames = "company-file-type")
|
@CacheConfig(cacheNames = "company-customer-file-type")
|
||||||
public class CompanyCustomerFileTypeService extends QueryService<CompanyCustomerFileTypeLocal, CompanyCustomerFileTypeLocalViewModel>{
|
public class CompanyCustomerFileTypeService
|
||||||
|
extends QueryService<CustomerFileTypeLocalVo, CompanyCustomerFileTypeLocalViewModel> {
|
||||||
|
private final StringConverter<CustomerFileTypeLocalVo> stringConverter = new CustomerFileTypeStringConverter(this);
|
||||||
|
|
||||||
|
@Cacheable(key = "#p0")
|
||||||
|
@Override
|
||||||
|
public CustomerFileTypeLocalVo findById(Integer id) {
|
||||||
|
return super.findById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Cacheable(key = "'all'")
|
||||||
|
@Override
|
||||||
|
public java.util.List<CustomerFileTypeLocalVo> findAll() {
|
||||||
|
return super.findAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Caching(put = { @CachePut(key = "#p0.id"), @CachePut(key = "'all'") })
|
||||||
|
@Override
|
||||||
|
public CustomerFileTypeLocalVo save(CustomerFileTypeLocalVo entity) {
|
||||||
|
return super.save(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Caching(put = { @CachePut(key = "#p0.id"), @CachePut(key = "'all'") })
|
||||||
|
@Override
|
||||||
|
public void delete(CustomerFileTypeLocalVo entity) {
|
||||||
|
super.delete(entity);
|
||||||
|
}
|
||||||
|
|
||||||
@Cacheable
|
@Cacheable
|
||||||
public Map<CustomerFileType, CompanyCustomerFileTypeLocal> findAll(Locale locale) {
|
public Map<CustomerFileType, CustomerFileTypeLocalVo> findAll(Locale locale) {
|
||||||
Map<String, Object> params = new HashMap<>();
|
Map<String, Object> params = new HashMap<>();
|
||||||
params.put("lang", locale.toLanguageTag());
|
params.put("lang", locale.toLanguageTag());
|
||||||
return findAll(params, Pageable.unpaged()).stream()
|
return findAll(params, Pageable.unpaged()).stream()
|
||||||
.collect(Collectors.toMap(CompanyCustomerFileTypeLocal::getType, Function.identity()));
|
.collect(Collectors.toMap(CustomerFileTypeLocalVo::getType, Function.identity()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StringConverter<CustomerFileTypeLocalVo> getStringConverter() {
|
||||||
|
return stringConverter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CustomerFileTypeLocalVo findByLocaleAndValue(Locale locale, String string) {
|
||||||
|
return findAll(ParamUtils.builder().equals("lang", locale.toLanguageTag()).equals("value", string).build(),
|
||||||
|
Pageable.ofSize(1))
|
||||||
|
.stream().findFirst().orElse(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,29 +1,66 @@
|
|||||||
package com.ecep.contract.service;
|
package com.ecep.contract.service;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import com.ecep.contract.CompanyFileType;
|
||||||
|
import com.ecep.contract.converter.CompanyFileTypeStringConverter;
|
||||||
|
import com.ecep.contract.util.ParamUtils;
|
||||||
|
import com.ecep.contract.vm.CompanyFileTypeLocalViewModel;
|
||||||
|
import com.ecep.contract.vo.CompanyFileTypeLocalVo;
|
||||||
|
import javafx.util.StringConverter;
|
||||||
|
import org.springframework.cache.annotation.CacheConfig;
|
||||||
|
import org.springframework.cache.annotation.CachePut;
|
||||||
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
|
import org.springframework.cache.annotation.Caching;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.ecep.contract.util.ParamUtils;
|
|
||||||
import com.ecep.contract.vo.CompanyFileTypeLocalVo;
|
|
||||||
import org.springframework.cache.annotation.CacheConfig;
|
|
||||||
import org.springframework.cache.annotation.Cacheable;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import com.ecep.contract.CompanyFileType;
|
|
||||||
import com.ecep.contract.model.CompanyFileTypeLocal;
|
|
||||||
import com.ecep.contract.vm.CompanyFileTypeLocalViewModel;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@CacheConfig(cacheNames = "company-file-type")
|
@CacheConfig(cacheNames = "company-file-type")
|
||||||
public class CompanyFileTypeService extends QueryService<CompanyFileTypeLocalVo, CompanyFileTypeLocalViewModel> {
|
public class CompanyFileTypeService extends QueryService<CompanyFileTypeLocalVo, CompanyFileTypeLocalViewModel> {
|
||||||
|
private final StringConverter<CompanyFileTypeLocalVo> stringConverter = new CompanyFileTypeStringConverter(this);
|
||||||
|
|
||||||
|
@Cacheable(key = "#p0")
|
||||||
|
@Override
|
||||||
|
public CompanyFileTypeLocalVo findById(Integer id) {
|
||||||
|
return super.findById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Cacheable(key = "'all'")
|
||||||
|
@Override
|
||||||
|
public List<CompanyFileTypeLocalVo> findAll() {
|
||||||
|
return super.findAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Caching(put = {@CachePut(key = "#p0.id"), @CachePut(key = "'all'")})
|
||||||
|
@Override
|
||||||
|
public CompanyFileTypeLocalVo save(CompanyFileTypeLocalVo entity) {
|
||||||
|
return super.save(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Caching(put = {@CachePut(key = "#p0.id"), @CachePut(key = "'all'")})
|
||||||
|
@Override
|
||||||
|
public void delete(CompanyFileTypeLocalVo entity) {
|
||||||
|
super.delete(entity);
|
||||||
|
}
|
||||||
|
|
||||||
@Cacheable
|
@Cacheable
|
||||||
public Map<CompanyFileType, CompanyFileTypeLocalVo> findAll(Locale locale) {
|
public Map<CompanyFileType, CompanyFileTypeLocalVo> findAll(Locale locale) {
|
||||||
return findAll(ParamUtils.builder().equals("lang", locale.toLanguageTag()).build(), Pageable.unpaged()).stream()
|
return findAll(ParamUtils.builder().equals("lang", locale.toLanguageTag()).build(), Pageable.unpaged()).stream()
|
||||||
.collect(Collectors.toMap(CompanyFileTypeLocalVo::getType, Function.identity()));
|
.collect(Collectors.toMap(CompanyFileTypeLocalVo::getType, Function.identity()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StringConverter<CompanyFileTypeLocalVo> getStringConverter() {
|
||||||
|
return stringConverter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CompanyFileTypeLocalVo findByLocaleAndValue(Locale locale, String string) {
|
||||||
|
return findAll(ParamUtils.builder().equals("lang", locale.toLanguageTag()).equals("value", string).build(), Pageable.ofSize(1))
|
||||||
|
.stream().findFirst().orElse(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,25 +1,53 @@
|
|||||||
package com.ecep.contract.service;
|
package com.ecep.contract.service;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.ecep.contract.util.ParamUtils;
|
|
||||||
import com.ecep.contract.vo.ContractFileTypeLocalVo;
|
|
||||||
import org.springframework.cache.annotation.CacheConfig;
|
import org.springframework.cache.annotation.CacheConfig;
|
||||||
|
import org.springframework.cache.annotation.CachePut;
|
||||||
import org.springframework.cache.annotation.Cacheable;
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
|
import org.springframework.cache.annotation.Caching;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import com.ecep.contract.ContractFileType;
|
import com.ecep.contract.ContractFileType;
|
||||||
import com.ecep.contract.model.ContractFileTypeLocal;
|
import com.ecep.contract.converter.ContractFileTypeStringConverter;
|
||||||
|
import com.ecep.contract.util.ParamUtils;
|
||||||
import com.ecep.contract.vm.ContractFileTypeLocalViewModel;
|
import com.ecep.contract.vm.ContractFileTypeLocalViewModel;
|
||||||
|
import com.ecep.contract.vo.ContractFileTypeLocalVo;
|
||||||
|
|
||||||
|
import javafx.util.StringConverter;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@CacheConfig(cacheNames = "contract-file-type")
|
@CacheConfig(cacheNames = "contract-file-type")
|
||||||
public class ContractFileTypeService extends QueryService<ContractFileTypeLocalVo, ContractFileTypeLocalViewModel> {
|
public class ContractFileTypeService extends QueryService<ContractFileTypeLocalVo, ContractFileTypeLocalViewModel> {
|
||||||
|
private final StringConverter<ContractFileTypeLocalVo> stringConverter = new ContractFileTypeStringConverter(this);
|
||||||
|
|
||||||
|
@Cacheable(key = "#p0")
|
||||||
|
@Override
|
||||||
|
public ContractFileTypeLocalVo findById(Integer id) {
|
||||||
|
return super.findById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Cacheable(key = "'all'")
|
||||||
|
@Override
|
||||||
|
public java.util.List<ContractFileTypeLocalVo> findAll() {
|
||||||
|
return super.findAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Caching(put = { @CachePut(key = "#p0.id"), @CachePut(key = "'all'") })
|
||||||
|
@Override
|
||||||
|
public ContractFileTypeLocalVo save(ContractFileTypeLocalVo entity) {
|
||||||
|
return super.save(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Caching(put = { @CachePut(key = "#p0.id"), @CachePut(key = "'all'") })
|
||||||
|
@Override
|
||||||
|
public void delete(ContractFileTypeLocalVo entity) {
|
||||||
|
super.delete(entity);
|
||||||
|
}
|
||||||
|
|
||||||
@Cacheable
|
@Cacheable
|
||||||
public Map<ContractFileType, ContractFileTypeLocalVo> findAll(Locale locale) {
|
public Map<ContractFileType, ContractFileTypeLocalVo> findAll(Locale locale) {
|
||||||
@@ -31,4 +59,14 @@ public class ContractFileTypeService extends QueryService<ContractFileTypeLocalV
|
|||||||
public ContractFileTypeLocalVo findByType(Locale locale, ContractFileType type) {
|
public ContractFileTypeLocalVo findByType(Locale locale, ContractFileType type) {
|
||||||
return findAll(ParamUtils.builder().equals("lang", locale.toLanguageTag()).equals("type", type).build(), Pageable.ofSize(1)).stream().findFirst().orElse(null);
|
return findAll(ParamUtils.builder().equals("lang", locale.toLanguageTag()).equals("type", type).build(), Pageable.ofSize(1)).stream().findFirst().orElse(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StringConverter<ContractFileTypeLocalVo> getStringConverter() {
|
||||||
|
return stringConverter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ContractFileTypeLocalVo findByLocaleAndValue(Locale locale, String string) {
|
||||||
|
return findAll(ParamUtils.builder().equals("lang", locale.toLanguageTag()).equals("value", string).build(), Pageable.ofSize(1))
|
||||||
|
.stream().findFirst().orElse(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,69 @@
|
|||||||
|
package com.ecep.contract.service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import org.springframework.cache.annotation.CacheConfig;
|
||||||
|
import org.springframework.cache.annotation.CachePut;
|
||||||
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
|
import org.springframework.cache.annotation.Caching;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import com.ecep.contract.ProjectFileType;
|
||||||
|
import com.ecep.contract.converter.ProjectFileTypeStringConverter;
|
||||||
|
import com.ecep.contract.util.ParamUtils;
|
||||||
|
import com.ecep.contract.vm.ProjectFileTypeLocalViewModel;
|
||||||
|
import com.ecep.contract.vo.ProjectFileTypeLocalVo;
|
||||||
|
|
||||||
|
import javafx.util.StringConverter;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@CacheConfig(cacheNames = "project-file-type")
|
||||||
|
public class ProjectFileTypeService extends QueryService<ProjectFileTypeLocalVo, ProjectFileTypeLocalViewModel> {
|
||||||
|
private final StringConverter<ProjectFileTypeLocalVo> stringConverter = new ProjectFileTypeStringConverter(this);
|
||||||
|
|
||||||
|
@Cacheable(key = "#p0")
|
||||||
|
@Override
|
||||||
|
public ProjectFileTypeLocalVo findById(Integer id) {
|
||||||
|
return super.findById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Cacheable(key = "'all'")
|
||||||
|
@Override
|
||||||
|
public List<ProjectFileTypeLocalVo> findAll() {
|
||||||
|
return super.findAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Caching(put = { @CachePut(key = "#p0.id"), @CachePut(key = "'all'") })
|
||||||
|
@Override
|
||||||
|
public ProjectFileTypeLocalVo save(ProjectFileTypeLocalVo entity) {
|
||||||
|
return super.save(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Caching(put = { @CachePut(key = "#p0.id"), @CachePut(key = "'all'") })
|
||||||
|
@Override
|
||||||
|
public void delete(ProjectFileTypeLocalVo entity) {
|
||||||
|
super.delete(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Cacheable
|
||||||
|
public Map<ProjectFileType, ProjectFileTypeLocalVo> findAll(Locale locale) {
|
||||||
|
return findAll(ParamUtils.builder().equals("lang", locale.toLanguageTag()).build(), Pageable.unpaged()).stream()
|
||||||
|
.collect(Collectors.toMap(ProjectFileTypeLocalVo::getType, Function.identity()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StringConverter<ProjectFileTypeLocalVo> getStringConverter() {
|
||||||
|
return stringConverter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProjectFileTypeLocalVo findByLocaleAndValue(Locale locale, String string) {
|
||||||
|
return findAll(ParamUtils.builder().equals("lang", locale.toLanguageTag()).equals("value", string).build(),
|
||||||
|
Pageable.ofSize(1))
|
||||||
|
.stream().findFirst().orElse(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
package com.ecep.contract.service;
|
package com.ecep.contract.service;
|
||||||
|
|
||||||
import com.ecep.contract.CompanyFileType;
|
|
||||||
import com.ecep.contract.VendorFileType;
|
import com.ecep.contract.VendorFileType;
|
||||||
import com.ecep.contract.model.VendorFileTypeLocal;
|
import com.ecep.contract.converter.VendorFileTypeStringConverter;
|
||||||
import com.ecep.contract.util.ParamUtils;
|
import com.ecep.contract.util.ParamUtils;
|
||||||
import com.ecep.contract.vm.VendorFileTypeLocalViewModel;
|
import com.ecep.contract.vm.VendorFileTypeLocalViewModel;
|
||||||
import com.ecep.contract.vo.CompanyFileTypeLocalVo;
|
|
||||||
import com.ecep.contract.vo.VendorFileTypeLocalVo;
|
import com.ecep.contract.vo.VendorFileTypeLocalVo;
|
||||||
|
import javafx.util.StringConverter;
|
||||||
import org.springframework.cache.annotation.CacheConfig;
|
import org.springframework.cache.annotation.CacheConfig;
|
||||||
import org.springframework.cache.annotation.CachePut;
|
import org.springframework.cache.annotation.CachePut;
|
||||||
import org.springframework.cache.annotation.Cacheable;
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
@@ -23,6 +22,7 @@ import java.util.stream.Collectors;
|
|||||||
@Service
|
@Service
|
||||||
@CacheConfig(cacheNames = "vendor-file-type")
|
@CacheConfig(cacheNames = "vendor-file-type")
|
||||||
public class VendorFileTypeService extends QueryService<VendorFileTypeLocalVo, VendorFileTypeLocalViewModel> {
|
public class VendorFileTypeService extends QueryService<VendorFileTypeLocalVo, VendorFileTypeLocalViewModel> {
|
||||||
|
private final StringConverter<VendorFileTypeLocalVo> stringConverter = new VendorFileTypeStringConverter(this);
|
||||||
@Cacheable(key = "#p0")
|
@Cacheable(key = "#p0")
|
||||||
@Override
|
@Override
|
||||||
public VendorFileTypeLocalVo findById(Integer id) {
|
public VendorFileTypeLocalVo findById(Integer id) {
|
||||||
@@ -52,4 +52,14 @@ public class VendorFileTypeService extends QueryService<VendorFileTypeLocalVo, V
|
|||||||
return findAll(ParamUtils.builder().equals("lang", locale.toLanguageTag()).build(), Pageable.unpaged()).stream()
|
return findAll(ParamUtils.builder().equals("lang", locale.toLanguageTag()).build(), Pageable.unpaged()).stream()
|
||||||
.collect(Collectors.toMap(VendorFileTypeLocalVo::getType, Function.identity()));
|
.collect(Collectors.toMap(VendorFileTypeLocalVo::getType, Function.identity()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StringConverter<VendorFileTypeLocalVo> getStringConverter() {
|
||||||
|
return stringConverter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public VendorFileTypeLocalVo findByLocaleAndValue(Locale locale, String string) {
|
||||||
|
return findAll(ParamUtils.builder().equals("lang", locale.toLanguageTag()).equals("value", string).build(), Pageable.ofSize(1))
|
||||||
|
.stream().findFirst().orElse(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
package com.ecep.contract.vm;
|
package com.ecep.contract.vm;
|
||||||
|
|
||||||
import com.ecep.contract.CustomerFileType;
|
import com.ecep.contract.CustomerFileType;
|
||||||
import com.ecep.contract.model.CompanyCustomerFileTypeLocal;
|
import com.ecep.contract.vo.CustomerFileTypeLocalVo;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public class CompanyCustomerFileTypeLocalViewModel extends EnumViewModel<CustomerFileType, CompanyCustomerFileTypeLocal> {
|
public class CompanyCustomerFileTypeLocalViewModel extends EnumViewModel<CustomerFileType, CustomerFileTypeLocalVo> {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package com.ecep.contract.vm;
|
||||||
|
|
||||||
|
import com.ecep.contract.CustomerFileType;
|
||||||
|
import com.ecep.contract.vo.CustomerFileTypeLocalVo;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class CustomerFileTypeLocalViewModel extends EnumViewModel<CustomerFileType, CustomerFileTypeLocalVo> {
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package com.ecep.contract.vm;
|
||||||
|
|
||||||
|
import com.ecep.contract.ProjectFileType;
|
||||||
|
import com.ecep.contract.vo.ProjectFileTypeLocalVo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class ProjectFileTypeLocalViewModel extends EnumViewModel<ProjectFileType, ProjectFileTypeLocalVo> {
|
||||||
|
}
|
||||||
@@ -3,3 +3,5 @@ ui.vendor.type=Type
|
|||||||
ui.vendor.description=Description
|
ui.vendor.description=Description
|
||||||
|
|
||||||
ui.customer.title=[{0}] {1} Customer
|
ui.customer.title=[{0}] {1} Customer
|
||||||
|
ui.customer.type=Type
|
||||||
|
ui.customer.description=Description
|
||||||
|
|||||||
@@ -3,3 +3,5 @@ ui.vendor.type=类型
|
|||||||
ui.vendor.description=描述
|
ui.vendor.description=描述
|
||||||
|
|
||||||
ui.customer.title=[{0}] {1} 客户
|
ui.customer.title=[{0}] {1} 客户
|
||||||
|
ui.customer.type=类型
|
||||||
|
ui.customer.description=描述
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ecep.contract.vo;
|
package com.ecep.contract.vo;
|
||||||
|
|
||||||
import com.ecep.contract.VendorFileType;
|
|
||||||
import com.ecep.contract.model.BaseEnumEntity;
|
import com.ecep.contract.model.BaseEnumEntity;
|
||||||
import com.ecep.contract.model.IdentityEntity;
|
import com.ecep.contract.model.IdentityEntity;
|
||||||
import com.ecep.contract.ContractFileType;
|
import com.ecep.contract.ContractFileType;
|
||||||
|
|||||||
@@ -3,9 +3,12 @@ package com.ecep.contract.vo;
|
|||||||
import com.ecep.contract.CustomerFileType;
|
import com.ecep.contract.CustomerFileType;
|
||||||
import com.ecep.contract.model.BaseEnumEntity;
|
import com.ecep.contract.model.BaseEnumEntity;
|
||||||
import com.ecep.contract.model.IdentityEntity;
|
import com.ecep.contract.model.IdentityEntity;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public class CustomerFileTypeLocalVo
|
public class CustomerFileTypeLocalVo
|
||||||
extends BaseEnumEntity<CustomerFileType>
|
extends BaseEnumEntity<CustomerFileType>
|
||||||
implements IdentityEntity {
|
implements IdentityEntity {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
枚举对象
|
按枚举型的实现本地化
|
||||||
|
|
||||||
# 枚举类型清单
|
# 枚举类型清单
|
||||||
|
|
||||||
@@ -11,42 +11,105 @@
|
|||||||
|
|
||||||
# Server 模块
|
# Server 模块
|
||||||
|
|
||||||
## Repository
|
|
||||||
|
|
||||||
|
|
||||||
|
## Repository
|
||||||
|
|
||||||
- server/src/main/java/com/ecep/contract/ds/vendor/repository/VendorTypeLocalRepository.java
|
- server/src/main/java/com/ecep/contract/ds/vendor/repository/VendorTypeLocalRepository.java
|
||||||
|
- server/src/main/java/com/ecep/contract/ds/vendor/repository/VendorFileTypeLocalRepository.java
|
||||||
|
- server/src/main/java/com/ecep/contract/ds/project/repository/ProjectFileTypeLocalRepository.java
|
||||||
|
- server/src/main/java/com/ecep/contract/ds/company/repository/CompanyFileTypeLocalRepository.java
|
||||||
|
- server/src/main/java/com/ecep/contract/ds/contract/repository/ContractFileTypeLocalRepository.java
|
||||||
|
- server/src/main/java/com/ecep/contract/ds/customer/repository/CustomerFileTypeLocalRepository.java
|
||||||
|
|
||||||
## Service
|
## Service
|
||||||
|
|
||||||
- server/src/main/java/com/ecep/contract/ds/vendor/service/VendorTypeService.java
|
- server/src/main/java/com/ecep/contract/ds/vendor/service/VendorTypeService.java
|
||||||
|
- server/src/main/java/com/ecep/contract/ds/vendor/service/VendorFileTypeService.java
|
||||||
|
- server/src/main/java/com/ecep/contract/ds/project/service/ProjectFileTypeService.java
|
||||||
|
- server/src/main/java/com/ecep/contract/ds/company/service/CompanyFileTypeService.java
|
||||||
|
- server/src/main/java/com/ecep/contract/ds/contract/service/ContractFileTypeService.java
|
||||||
|
- server/src/main/java/com/ecep/contract/ds/customer/service/CustomerFileTypeService.java
|
||||||
|
|
||||||
# Client 模块
|
# Client 模块
|
||||||
|
|
||||||
## View Model
|
## View Model
|
||||||
- 所在目录: D:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\vm
|
- 所在目录: D:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\vm
|
||||||
|
- extends EnumViewModel<枚举类, Vo>
|
||||||
|
|
||||||
|
|
||||||
|
### 清单
|
||||||
- client\src\main\java\com\ecep\contract\vm\VendorTypeLocalViewModel.java
|
- client\src\main\java\com\ecep\contract\vm\VendorTypeLocalViewModel.java
|
||||||
|
- client\src/main/java/com/ecep/contract/vm/VendorFileTypeLocalViewModel.java
|
||||||
|
- client\src/main/java/com/ecep/contract/vm/ProjectFileTypeLocalViewModel.java
|
||||||
|
- client\src/main/java/com/ecep/contract/vm/CompanyFileTypeLocalViewModel.java
|
||||||
|
- client\src/main/java/com/ecep/contract/vm/ContractFileTypeLocalViewModel.java
|
||||||
|
- client\src/main/java/com/ecep/contract/vm/CustomerFileTypeLocalViewModel.java
|
||||||
|
|
||||||
## StringConverter
|
## StringConverter
|
||||||
|
|
||||||
|
所在目录 client/src/main/java/com/ecep/contract/converter/
|
||||||
|
package com.ecep.contract.converter;
|
||||||
|
### 清单
|
||||||
- client/src/main/java/com/ecep/contract/converter/VendorTypeStringConverter.java
|
- client/src/main/java/com/ecep/contract/converter/VendorTypeStringConverter.java
|
||||||
|
- client/src/main/java/com/ecep/contract/converter/VendorFileTypeStringConverter.java
|
||||||
|
- client/src/main/java/com/ecep/contract/converter/ProjectFileTypeStringConverter.java
|
||||||
|
- client/src/main/java/com/ecep/contract/converter/CompanyFileTypeStringConverter.java
|
||||||
|
- client/src/main/java/com/ecep/contract/converter/ContractFileTypeStringConverter.java
|
||||||
|
- client/src/main/java/com/ecep/contract/converter/CustomerFileTypeStringConverter.java
|
||||||
|
|
||||||
## TableCell 表格单元格渲染
|
## TableCell 表格单元格渲染
|
||||||
|
### 要求
|
||||||
- common/src/main/java/com/ecep/contract/controller/table/cell/VendorTypeTableCell.java
|
- 需实现 forTableColumn 静态方法,用于创建表格列的单元格工厂。
|
||||||
|
- 表格列的单元格工厂需要接收一个 Service 实例,用于从数据库中获取枚举类型的本地化信息。
|
||||||
|
- 表格列的单元格工厂需要实现 Callback 接口,用于创建单元格实例。
|
||||||
|
- 表格列的单元格工厂需要在 forTableColumn 方法中接收 Service 实例,用于从数据库中获取枚举类型的本地化信息。
|
||||||
|
### 清单
|
||||||
|
- client/src/main/java/com/ecep/contract/controller/table/cell/VendorTypeTableCell.java
|
||||||
|
- client/src/main/java/com/ecep/contract/controller/table/cell/VendorFileTypeTableCell.java
|
||||||
|
- client/src/main/java/com/ecep/contract/controller/table/cell/ProjectFileTypeTableCell.java
|
||||||
|
- client/src/main/java/com/ecep/contract/controller/table/cell/CompanyFileTypeTableCell.java
|
||||||
|
- client/src/main/java/com/ecep/contract/controller/table/cell/ContractFileTypeTableCell.java
|
||||||
|
- client/src/main/java/com/ecep/contract/controller/table/cell/CustomerFileTypeTableCell.java
|
||||||
|
|
||||||
## Service
|
## Service
|
||||||
定义注解 @CacheConfig
|
需要定义注解 @CacheConfig
|
||||||
|
需要实现 findByLocaleAndValue 方法
|
||||||
|
|
||||||
- client/src/main/java/com/ecep/contract/ds/vendor/service/VendorTypeService.java
|
- client/src/main/java/com/ecep/contract/service/VendorTypeService.java
|
||||||
|
- client/src/main/java/com/ecep/contract/service/VendorFileTypeService.java
|
||||||
|
- client/src/main/java/com/ecep/contract/service/ProjectFileTypeService.java
|
||||||
|
- client/src/main/java/com/ecep/contract/service/CompanyFileTypeService.java
|
||||||
|
- client/src/main/java/com/ecep/contract/service/ContractFileTypeService.java
|
||||||
|
- client/src/main/java/com/ecep/contract/service/CompanyCustomerFileTypeService.java
|
||||||
|
|
||||||
# Common 模块
|
# Common 模块
|
||||||
|
|
||||||
## Entity 类, 枚举类型的本地化
|
## Entity 类, 枚举类型的本地化
|
||||||
|
|
||||||
- common/src/main/java/com/ecep/contract/model/VendorTypeLocal.java
|
- common/src/main/java/com/ecep/contract/model/VendorTypeLocal.java
|
||||||
|
- common/src/main/java/com/ecep/contract/model/VendorFileTypeLocal.java
|
||||||
|
- common/src/main/java/com/ecep/contract/model/ProjectFileTypeLocal.java
|
||||||
|
- common/src/main/java/com/ecep/contract/model/CompanyFileTypeLocal.java
|
||||||
|
- common/src/main/java/com/ecep/contract/model/ContractFileTypeLocal.java
|
||||||
|
- common/src/main/java/com/ecep/contract/model/CustomerFileTypeLocal.java
|
||||||
|
|
||||||
|
### SQL
|
||||||
|
每个Entity类创建一个对应的SQL文件,文件名格式为:Entity类名 + .sql,例如:VendorTypeLocal.sql
|
||||||
|
存储在 docs/db/ 目录下
|
||||||
|
数据表名已经定义在 Entity 类的 @Table 注解中
|
||||||
|
字段名已经定义在 Entity 类的 @Column 注解中,包括父类的字段
|
||||||
|
|
||||||
|
|
||||||
## VO(View Object)
|
## VO(View Object)
|
||||||
|
|
||||||
- common/src/main/java/com/ecep/contract/vo/VendorTypeLocalVo.java
|
- common/src/main/java/com/ecep/contract/vo/VendorTypeLocalVo.java
|
||||||
|
- common/src/main/java/com/ecep/contract/vo/VendorFileTypeLocalVo.java
|
||||||
|
- common/src/main/java/com/ecep/contract/vo/ProjectFileTypeLocalVo.java
|
||||||
|
- common/src/main/java/com/ecep/contract/vo/CompanyFileTypeLocalVo.java
|
||||||
|
- common/src/main/java/com/ecep/contract/vo/ContractFileTypeLocalVo.java
|
||||||
|
- common/src/main/java/com/ecep/contract/vo/CustomerFileTypeLocalVo.java
|
||||||
|
|
||||||
# 其他
|
# 其他
|
||||||
|
|
||||||
|
|||||||
9
docs/db/CompanyFileTypeLocal.sql
Normal file
9
docs/db/CompanyFileTypeLocal.sql
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
CREATE TABLE if not exists supplier_ms.COMPANY_FILE_TYPE_LOCAL
|
||||||
|
(
|
||||||
|
ID INT AUTO_INCREMENT NOT NULL,
|
||||||
|
TYPE VARCHAR(255) NOT NULL comment '枚举类型',
|
||||||
|
LANG VARCHAR(255) NOT NULL comment '语言',
|
||||||
|
VALUE VARCHAR(255) NOT NULL comment '本地化值',
|
||||||
|
CONSTRAINT pk_company_file_type_local PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT uq_company_file_type_local UNIQUE KEY (TYPE, LANG)
|
||||||
|
);
|
||||||
11
docs/db/ContractFileTypeLocal.sql
Normal file
11
docs/db/ContractFileTypeLocal.sql
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
CREATE TABLE if not exists supplier_ms.CONTRACT_FILE_TYPE_LOCAL
|
||||||
|
(
|
||||||
|
ID INT AUTO_INCREMENT NOT NULL,
|
||||||
|
TYPE VARCHAR(255) NOT NULL comment '枚举类型',
|
||||||
|
LANG VARCHAR(255) NOT NULL comment '语言',
|
||||||
|
VALUE VARCHAR(255) NOT NULL comment '本地化值',
|
||||||
|
SUGGEST_FILE_NAME VARCHAR(255) NULL comment '建议的文件名',
|
||||||
|
DESCRIPTION VARCHAR(255) NULL comment '描述',
|
||||||
|
CONSTRAINT pk_contract_file_type_local PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT uq_contract_file_type_local UNIQUE KEY (TYPE, LANG)
|
||||||
|
);
|
||||||
9
docs/db/CustomerFileTypeLocal.sql
Normal file
9
docs/db/CustomerFileTypeLocal.sql
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
CREATE TABLE if not exists supplier_ms.CUSTOMER_FILE_TYPE_LOCAL
|
||||||
|
(
|
||||||
|
ID INT AUTO_INCREMENT NOT NULL,
|
||||||
|
TYPE VARCHAR(255) NOT NULL comment '枚举类型',
|
||||||
|
LANG VARCHAR(255) NOT NULL comment '语言',
|
||||||
|
VALUE VARCHAR(255) NOT NULL comment '本地化值',
|
||||||
|
CONSTRAINT pk_customer_file_type_local PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT uq_customer_file_type_local UNIQUE KEY (TYPE, LANG)
|
||||||
|
);
|
||||||
9
docs/db/ProjectFileTypeLocal.sql
Normal file
9
docs/db/ProjectFileTypeLocal.sql
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
CREATE TABLE if not exists supplier_ms.PROJECT_FILE_TYPE_LOCAL
|
||||||
|
(
|
||||||
|
ID INT AUTO_INCREMENT NOT NULL,
|
||||||
|
TYPE VARCHAR(255) NOT NULL comment '枚举类型',
|
||||||
|
LANG VARCHAR(255) NOT NULL comment '语言',
|
||||||
|
VALUE VARCHAR(255) NOT NULL comment '本地化值',
|
||||||
|
CONSTRAINT pk_project_file_type_local PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT uq_project_file_type_local UNIQUE KEY (TYPE, LANG)
|
||||||
|
);
|
||||||
9
docs/db/VendorFileTypeLocal.sql
Normal file
9
docs/db/VendorFileTypeLocal.sql
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
CREATE TABLE if not exists supplier_ms.COMPANY_VENDOR_FILE_TYPE_LOCAL
|
||||||
|
(
|
||||||
|
ID INT AUTO_INCREMENT NOT NULL,
|
||||||
|
TYPE VARCHAR(255) NOT NULL comment '枚举类型',
|
||||||
|
LANG VARCHAR(255) NOT NULL comment '语言',
|
||||||
|
VALUE VARCHAR(255) NOT NULL comment '本地化值',
|
||||||
|
CONSTRAINT pk_company_vendor_file_type_local PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT uq_company_vendor_file_type_local UNIQUE KEY (TYPE, LANG)
|
||||||
|
);
|
||||||
9
docs/db/VendorTypeLocal.sql
Normal file
9
docs/db/VendorTypeLocal.sql
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
CREATE TABLE if not exists supplier_ms.VENDOR_TYPE_LOCAL
|
||||||
|
(
|
||||||
|
ID INT AUTO_INCREMENT NOT NULL,
|
||||||
|
TYPE VARCHAR(255) NOT NULL comment '枚举类型',
|
||||||
|
LANG VARCHAR(255) NOT NULL comment '语言',
|
||||||
|
VALUE VARCHAR(255) NOT NULL comment '本地化值',
|
||||||
|
CONSTRAINT pk_vendor_type_local PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT uq_vendor_type_local UNIQUE KEY (TYPE, LANG)
|
||||||
|
);
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.ecep.contract.ds.customer.repository;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import com.ecep.contract.CustomerFileType;
|
||||||
|
import com.ecep.contract.ds.other.repository.BaseEnumEntityRepository;
|
||||||
|
import com.ecep.contract.model.CustomerFileTypeLocal;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface CustomerFileTypeLocalRepository extends BaseEnumEntityRepository<CustomerFileType, CustomerFileTypeLocal, Integer> {
|
||||||
|
@Override
|
||||||
|
default CustomerFileType[] getEnumConstants() {
|
||||||
|
return CustomerFileType.values();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default CustomerFileTypeLocal newEntity() {
|
||||||
|
return new CustomerFileTypeLocal();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,98 @@
|
|||||||
|
package com.ecep.contract.ds.customer.service;
|
||||||
|
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.cache.annotation.CacheConfig;
|
||||||
|
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;
|
||||||
|
|
||||||
|
import com.ecep.contract.CustomerFileType;
|
||||||
|
import com.ecep.contract.IEntityService;
|
||||||
|
import com.ecep.contract.QueryService;
|
||||||
|
import com.ecep.contract.constant.ServiceConstant;
|
||||||
|
import com.ecep.contract.ds.customer.repository.CustomerFileTypeLocalRepository;
|
||||||
|
import com.ecep.contract.model.CustomerFileTypeLocal;
|
||||||
|
import com.ecep.contract.util.SpecificationUtils;
|
||||||
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
@Service
|
||||||
|
@CacheConfig(cacheNames = "customer-file-type")
|
||||||
|
public class CustomerFileTypeService implements IEntityService<CustomerFileTypeLocal>, QueryService<CustomerFileTypeLocal> {
|
||||||
|
@Lazy
|
||||||
|
@Autowired
|
||||||
|
private CustomerFileTypeLocalRepository repository;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Page<CustomerFileTypeLocal> findAll(JsonNode paramsNode, Pageable pageable) {
|
||||||
|
Specification<CustomerFileTypeLocal> spec = null;
|
||||||
|
if (paramsNode.has(ServiceConstant.KEY_SEARCH_TEXT)) {
|
||||||
|
spec = getSpecification(paramsNode.get(ServiceConstant.KEY_SEARCH_TEXT).asText());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (paramsNode.has("type")) {
|
||||||
|
spec = SpecificationUtils.and(spec, (root, query, builder) -> builder.equal(root.get("type"), CustomerFileType.valueOf(paramsNode.get("type").asText())));
|
||||||
|
}
|
||||||
|
|
||||||
|
// field
|
||||||
|
spec = SpecificationUtils.andFieldEqualParam(spec, paramsNode, "lang", "value");
|
||||||
|
return findAll(spec, pageable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Cacheable(key = "#p0")
|
||||||
|
@Override
|
||||||
|
public CustomerFileTypeLocal findById(Integer id) {
|
||||||
|
return repository.findById(id).orElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Page<CustomerFileTypeLocal> findAll(Specification<CustomerFileTypeLocal> spec, Pageable pageable) {
|
||||||
|
return repository.findAll(spec, pageable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Cacheable(key = "'all-'+#p0.toLanguageTag()")
|
||||||
|
public Map<CustomerFileType, CustomerFileTypeLocal> findAll(Locale locale) {
|
||||||
|
return repository.getCompleteMapByLocal(locale.toLanguageTag());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Specification<CustomerFileTypeLocal> getSpecification(String searchText) {
|
||||||
|
if (!StringUtils.hasText(searchText)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return (root, query, builder) -> {
|
||||||
|
return
|
||||||
|
// builder.or(
|
||||||
|
builder.like(root.get("type"), "%" + searchText + "%")
|
||||||
|
// )
|
||||||
|
;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Caching(evict = {
|
||||||
|
@CacheEvict(key = "#p0.id"),
|
||||||
|
@CacheEvict(key = "'all-'+#p0.getLang()")
|
||||||
|
})
|
||||||
|
@Override
|
||||||
|
public void delete(CustomerFileTypeLocal entity) {
|
||||||
|
repository.delete(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Caching(evict = {
|
||||||
|
@CacheEvict(key = "#p0.id"),
|
||||||
|
@CacheEvict(key = "'all-'+#p0.getLang()")
|
||||||
|
})
|
||||||
|
@Override
|
||||||
|
public CustomerFileTypeLocal save(CustomerFileTypeLocal entity) {
|
||||||
|
return repository.save(entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user