refactor(controller): 重构枚举类型相关代码,优化类型转换和显示逻辑
重构枚举类型的处理逻辑,统一使用Vo对象替代Model对象 - 修改ComboBoxUtils初始化逻辑,支持更多类型转换 - 实现VendorCatalogStringConverter用于类型转换 - 更新ContractFileTypeListCell和ContractFileTypeTableCell显示逻辑 - 调整VendorTabSkinFile和CompanyVendorTabSkinBase使用新的类型转换方式 - 更新相关服务类接口,添加类型转换方法 - 修改FXML文件添加类型选择控件
This commit is contained in:
@@ -6,6 +6,8 @@ import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
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.Cacheable;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
@@ -17,14 +19,16 @@ import com.ecep.contract.vm.ContractFileTypeLocalViewModel;
|
||||
|
||||
@Service
|
||||
@CacheConfig(cacheNames = "contract-file-type")
|
||||
public class ContractFileTypeService extends QueryService<ContractFileTypeLocal, ContractFileTypeLocalViewModel> {
|
||||
public class ContractFileTypeService extends QueryService<ContractFileTypeLocalVo, ContractFileTypeLocalViewModel> {
|
||||
|
||||
@Cacheable
|
||||
public Map<ContractFileType, ContractFileTypeLocal> findAll(Locale locale) {
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("lang", locale.toLanguageTag());
|
||||
return findAll(params, Pageable.unpaged()).stream()
|
||||
.collect(Collectors.toMap(ContractFileTypeLocal::getType, Function.identity()));
|
||||
public Map<ContractFileType, ContractFileTypeLocalVo> findAll(Locale locale) {
|
||||
return findAll(ParamUtils.builder().equals("lang", locale.toLanguageTag()).build(), Pageable.unpaged()).stream()
|
||||
.collect(Collectors.toMap(ContractFileTypeLocalVo::getType, Function.identity()));
|
||||
}
|
||||
|
||||
@Cacheable
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.ecep.contract.service;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javafx.util.StringConverter;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
@@ -17,4 +18,6 @@ public interface IEntityService<T> {
|
||||
|
||||
Page<T> findAll(Map<String, Object> params, Pageable pageable);
|
||||
|
||||
|
||||
StringConverter<T> getStringConverter();
|
||||
}
|
||||
|
||||
@@ -2,10 +2,14 @@ package com.ecep.contract.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.ecep.contract.converter.VendorCatalogStringConverter;
|
||||
import com.ecep.contract.util.ParamUtils;
|
||||
import javafx.util.StringConverter;
|
||||
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.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.ecep.contract.vm.VendorCatalogViewModel;
|
||||
@@ -14,27 +18,41 @@ import com.ecep.contract.vo.VendorCatalogVo;
|
||||
@Service
|
||||
@CacheConfig(cacheNames = "vendor-catalog")
|
||||
public class VendorCatalogService extends QueryService<VendorCatalogVo, VendorCatalogViewModel> {
|
||||
|
||||
private final VendorCatalogStringConverter stringConverter = new VendorCatalogStringConverter(this);
|
||||
|
||||
@Override
|
||||
@Cacheable(key = "#id")
|
||||
public VendorCatalogVo findById(Integer id) {
|
||||
return super.findById(id);
|
||||
}
|
||||
|
||||
public VendorCatalogVo findByName(String string) {
|
||||
return findAll(ParamUtils.builder().equals("name", string).build(), Pageable.ofSize(1)).stream().findFirst().orElse(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Cacheable(key = "all")
|
||||
@Cacheable(key = "'all'")
|
||||
public List<VendorCatalogVo> findAll() {
|
||||
return super.findAll();
|
||||
}
|
||||
|
||||
@Caching(evict = { @CacheEvict(key = "all"), @CacheEvict(key = "#entity.id") })
|
||||
@Caching(evict = {@CacheEvict(key = "'all'"), @CacheEvict(key = "#entity.id")})
|
||||
@Override
|
||||
public VendorCatalogVo save(VendorCatalogVo entity) {
|
||||
return super.save(entity);
|
||||
}
|
||||
|
||||
@Caching(evict = { @CacheEvict(key = "all"), @CacheEvict(key = "#entity.id") })
|
||||
@Caching(evict = {@CacheEvict(key = "'all'"), @CacheEvict(key = "#entity.id")})
|
||||
@Override
|
||||
public void delete(VendorCatalogVo entity) {
|
||||
super.delete(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StringConverter<VendorCatalogVo> getStringConverter() {
|
||||
return stringConverter;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,39 +1,55 @@
|
||||
package com.ecep.contract.service;
|
||||
|
||||
import com.ecep.contract.CompanyFileType;
|
||||
import com.ecep.contract.VendorFileType;
|
||||
import com.ecep.contract.model.VendorFileTypeLocal;
|
||||
import com.ecep.contract.util.ParamUtils;
|
||||
import com.ecep.contract.vm.VendorFileTypeLocalViewModel;
|
||||
import com.ecep.contract.vo.CompanyFileTypeLocalVo;
|
||||
import com.ecep.contract.vo.VendorFileTypeLocalVo;
|
||||
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.Map;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@CacheConfig(cacheNames = "vendor-file-type")
|
||||
public class VendorFileTypeService extends QueryService<VendorFileTypeLocal, VendorFileTypeLocalViewModel> {
|
||||
public class VendorFileTypeService extends QueryService<VendorFileTypeLocalVo, VendorFileTypeLocalViewModel> {
|
||||
@Cacheable(key = "#p0")
|
||||
@Override
|
||||
public VendorFileTypeLocal findById(Integer id) {
|
||||
public VendorFileTypeLocalVo findById(Integer id) {
|
||||
return super.findById(id);
|
||||
}
|
||||
|
||||
@Cacheable(key = "'all'")
|
||||
@Override
|
||||
public List<VendorFileTypeLocal> findAll() {
|
||||
public List<VendorFileTypeLocalVo> findAll() {
|
||||
return super.findAll();
|
||||
}
|
||||
|
||||
@Caching(put = {@CachePut(key = "#p0.id"), @CachePut(key = "'all'")})
|
||||
@Override
|
||||
public VendorFileTypeLocal save(VendorFileTypeLocal entity) {
|
||||
public VendorFileTypeLocalVo save(VendorFileTypeLocalVo entity) {
|
||||
return super.save(entity);
|
||||
}
|
||||
|
||||
@Caching(put = {@CachePut(key = "#p0.id"), @CachePut(key = "'all'")})
|
||||
@Override
|
||||
public void delete(VendorFileTypeLocal entity) {
|
||||
public void delete(VendorFileTypeLocalVo entity) {
|
||||
super.delete(entity);
|
||||
}
|
||||
|
||||
@Cacheable
|
||||
public Map<VendorFileType, VendorFileTypeLocalVo> findAll(Locale locale) {
|
||||
return findAll(ParamUtils.builder().equals("lang", locale.toLanguageTag()).build(), Pageable.unpaged()).stream()
|
||||
.collect(Collectors.toMap(VendorFileTypeLocalVo::getType, Function.identity()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.ecep.contract.service;
|
||||
|
||||
import com.ecep.contract.SpringApp;
|
||||
import com.ecep.contract.VendorType;
|
||||
import com.ecep.contract.converter.VendorTypeStringConverter;
|
||||
import com.ecep.contract.util.ParamUtils;
|
||||
@@ -24,12 +25,17 @@ public class VendorTypeService extends QueryService<VendorTypeLocalVo, VendorTyp
|
||||
return super.findById(id);
|
||||
}
|
||||
|
||||
@Cacheable(key = "'type-'+#p0.ordinal()")
|
||||
@Cacheable(key = "'type-'+#p0.ordinal()", condition = "#p0 != null")
|
||||
public VendorTypeLocalVo findByType(VendorType type) {
|
||||
return findAll(ParamUtils.builder().equals("type", type).build(), Pageable.ofSize(1)).stream().findFirst()
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
public VendorTypeLocalVo findByValue(String string) {
|
||||
return findAll(ParamUtils.builder().equals("value", string).build(), Pageable.ofSize(1)).stream().findFirst()
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
@Cacheable(key = "'all'")
|
||||
@Override
|
||||
public List<VendorTypeLocalVo> findAll() {
|
||||
@@ -57,4 +63,25 @@ public class VendorTypeService extends QueryService<VendorTypeLocalVo, VendorTyp
|
||||
return findAll(ParamUtils.builder().equals("lang", locale.toLanguageTag()).equals("value", string).build(), Pageable.ofSize(1))
|
||||
.stream().findFirst().orElse(null);
|
||||
}
|
||||
|
||||
public StringConverter<VendorType> getTypeStringConverter() {
|
||||
return new StringConverter<>() {
|
||||
final VendorTypeService service = SpringApp.getBean(VendorTypeService.class);
|
||||
|
||||
@Override
|
||||
public String toString(VendorType object) {
|
||||
if (object == null) {
|
||||
return "";
|
||||
}
|
||||
VendorTypeLocalVo localVo = service.findByType(object);
|
||||
return localVo.getValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public VendorType fromString(String string) {
|
||||
VendorTypeLocalVo localVo = service.findByValue(string);
|
||||
return localVo.getType();
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user