package com.vci.web.service.impl; import com.vci.corba.common.PLException; import com.vci.corba.omd.vrm.VersionRule; import com.vci.pagemodel.OsRevisionRuleVO; import com.vci.starter.web.annotation.log.VciUnLog; import com.vci.starter.web.util.VciDateUtil; import com.vci.web.service.WebRevisionRuleServiceI; import com.vci.web.util.PlatformClientUtil; import com.vci.web.util.WebUtil; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; /** * @Description 版本规则服务 * @Author dangsn * @Date 2024/11/28 14:20 */ @Service public class WebRevisionRuleServiceImpl implements WebRevisionRuleServiceI { /** * 日志 */ private Logger logger = LoggerFactory.getLogger(getClass()); /** * 平台调用客户端 */ @Autowired private PlatformClientUtil platformClientUtil; /** * 查询所有的版本规则 * * @return 版本对象 */ @Override public List selectAllRevision() { try { return revisionRuleDO2VOs(Arrays.stream(platformClientUtil.getVersionService().getVersionRules()).collect(Collectors.toList())); } catch (PLException e) { throw WebUtil.getVciBaseException(e); } } /** * 查询所有的版本规则映射 * * @return key 是版本的英文名称 */ @Override @VciUnLog public Map selectAllRevisionMap() { return Optional.ofNullable(selectAllRevision()).orElseGet(()->new ArrayList<>()).stream().collect(Collectors.toMap(s->s.getId().toLowerCase(), t->t,(o1, o2)->o1)); } /** * 使用编号获取规则的值 * * @param id 编号 * @return 显示对象 */ @Override public OsRevisionRuleVO getRevisionRuleById(String id) { if(StringUtils.isNotBlank(id)){ return selectAllRevisionMap().getOrDefault(id.toLowerCase().trim(),null); } return null; } /** * 数据对象转换为显示对象 * * @param versionRules 数据对象 * @return 显示对象 */ @Override public List revisionRuleDO2VOs(Collection versionRules) { List 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.long2Date(versionRule.createTime)); ruleVO.setLastModifyTime(VciDateUtil.long2Date(versionRule.modifyTime)); ruleVO.setTs(VciDateUtil.str2Date(versionRule.ts,VciDateUtil.DateTimeMillFormat)); } catch (Exception e) { e.printStackTrace(); } ruleVO.setDescription(versionRule.description); ruleVO.setId(versionRule.name); ruleVO.setName(versionRule.tag); ruleVO.setStepLength(WebUtil.getInt(versionRule.stepLength)); ruleVO.setJumpCharacter(versionRule.jumpCharacter); ruleVO.setPrefixion(versionRule.prefixion); ruleVO.setSuffix(versionRule.suffix); ruleVO.setInitialValue(versionRule.initialValue); //associated暂时没有使用 } return ruleVO; } }