package com.vci.web.service.impl;
|
|
import com.vci.corba.common.VCIError;
|
import com.vci.starter.web.annotation.log.VciUnLog;
|
import com.vci.starter.web.util.VciDateUtil;
|
import com.vci.web.constant.CacheKeyConstant;
|
import com.vci.web.pageModel.OsRevisionRuleVO;
|
import com.vci.web.service.OsRevisionRuleServiceI;
|
import com.vci.web.util.PlatformClientUtil;
|
import com.vci.web.util.WebUtil;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.cache.annotation.CachePut;
|
import org.springframework.context.annotation.Lazy;
|
import org.springframework.stereotype.Service;
|
import plm.corba.versionRuleManager.VersionRule;
|
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
import static com.vci.web.constant.CacheNameConstant.VCI_OBJECT_SERVICE;
|
|
/**
|
* 版本规则的服务
|
* @author weidy
|
* @date 2021-2-15
|
*/
|
@Service
|
public class OsRevisionRuleServiceImpl implements OsRevisionRuleServiceI {
|
|
/**
|
* 平台调用客户端
|
*/
|
@Autowired
|
private PlatformClientUtil platformClientUtil;
|
|
/**
|
* 加载自身
|
*/
|
@Autowired(required = false)
|
@Lazy
|
private OsRevisionRuleServiceI self;
|
/**
|
* 查询所有的版本规则
|
*
|
* @return 版本对象
|
*/
|
@Override
|
public List<OsRevisionRuleVO> selectAllRevision() {
|
try {
|
return revisionRuleDO2VOs(Arrays.stream(platformClientUtil.getVersionService().getVersionRules()).collect(Collectors.toList()));
|
} catch (VCIError vciError) {
|
throw WebUtil.getVciBaseException(vciError);
|
}
|
}
|
|
/**
|
* 查询所有的版本规则映射
|
*
|
* @return key 是版本的英文名称
|
*/
|
@Override
|
@CachePut(value = VCI_OBJECT_SERVICE,key = CacheKeyConstant.ALL_REVISION,unless = "#result ==null ")
|
@VciUnLog
|
public Map<String, OsRevisionRuleVO> selectAllRevisionMap() {
|
return Optional.ofNullable(self.selectAllRevision()).orElseGet(()->new ArrayList<>()).stream().collect(Collectors.toMap(s->s.getId().toLowerCase(),t->t,(o1,o2)->o1));
|
}
|
|
/**
|
* 数据对象转换为显示对象
|
*
|
* @param versionRules 数据对象
|
* @return 显示对象
|
*/
|
@Override
|
public List<OsRevisionRuleVO> revisionRuleDO2VOs(Collection<VersionRule> versionRules) {
|
List<OsRevisionRuleVO> ruleVOS = new ArrayList<>();
|
Optional.ofNullable(versionRules).orElseGet(()->new ArrayList<>()).stream().forEach(versionRule -> {
|
OsRevisionRuleVO ruleVO = revisionRuleDO2VO(versionRule);
|
ruleVOS.add(ruleVO);
|
});
|
return ruleVOS;
|
}
|
|
/**
|
* 数据对象转换为显示对象
|
*
|
* @param versionRule 数据对象
|
* @return 显示对象
|
*/
|
@Override
|
public OsRevisionRuleVO revisionRuleDO2VO(VersionRule versionRule) {
|
OsRevisionRuleVO ruleVO = new OsRevisionRuleVO();
|
if(versionRule !=null){
|
ruleVO.setOid(versionRule.oid);
|
ruleVO.setCreator(versionRule.creator);
|
ruleVO.setLastModifier(versionRule.modifier);
|
try {
|
ruleVO.setCreateTime(VciDateUtil.str2Date(versionRule.createTime,VciDateUtil.DateTimeFormat));
|
ruleVO.setLastModifyTime(VciDateUtil.str2Date(versionRule.modifyTime,VciDateUtil.DateTimeFormat));
|
ruleVO.setTs(VciDateUtil.str2Date(versionRule.ts,VciDateUtil.DateTimeFormat));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
ruleVO.setDescription(versionRule.description);
|
ruleVO.setId(versionRule.name);
|
ruleVO.setName(versionRule.tag);
|
ruleVO.setSerialStep(WebUtil.getInt(versionRule.stepLength));
|
ruleVO.setSkipCode(versionRule.jumpCharacter);
|
ruleVO.setPrefixCode(versionRule.prefixion);
|
ruleVO.setSuffixCode(versionRule.suffix);
|
ruleVO.setStartCode(versionRule.initialValue);
|
//associated暂时没有使用
|
}
|
return ruleVO;
|
}
|
|
/**
|
* 使用编号获取规则的值
|
*
|
* @param id 编号
|
* @return 显示对象
|
*/
|
@Override
|
public OsRevisionRuleVO getRevisionRuleById(String id) {
|
if(StringUtils.isNotBlank(id)){
|
return self.selectAllRevisionMap().getOrDefault(id.toLowerCase().trim(),null);
|
}
|
return null;
|
}
|
|
/**
|
* 清除缓存
|
*/
|
@Override
|
@CachePut(value = VCI_OBJECT_SERVICE,key = CacheKeyConstant.ALL_REVISION)
|
public void clearCache() {
|
|
}
|
}
|