package com.vci.web.service.impl; import com.vci.client.mw.ClientSessionUtility; import com.vci.corba.common.PLException; import com.vci.corba.omd.vrm.VersionRule; import com.vci.dto.OsRevisionRuleDTO; import com.vci.starter.web.annotation.log.VciUnLog; import com.vci.starter.web.util.VciDateUtil; import com.vci.pagemodel.OsRevisionRuleVO; import com.vci.web.service.OsRevisionRuleServiceI; import com.vci.web.util.Func; 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.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.swing.*; import java.util.*; import java.util.stream.Collectors; /** * 版本规则的服务 * @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 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(self.selectAllRevision()).orElseGet(()->new ArrayList<>()).stream().collect(Collectors.toMap(s->s.getId().toLowerCase(),t->t,(o1,o2)->o1)); } /** * 创建版本规则 * @param osRevisionRuleDTO * @return */ @Override public boolean addVersionRule(OsRevisionRuleDTO osRevisionRuleDTO) throws PLException { VersionRule vr = platformClientUtil.getVersionService().getVersionRule(osRevisionRuleDTO.getName()); //name不为空 if(Func.isNotEmpty(vr) && !"".equals(vr.name)){ throw new PLException("500",new String[]{"名称重复请更换名称!"}); } platformClientUtil.getVersionService().addVersionRule(this.dto2VersionRule(osRevisionRuleDTO)); return false; } @Override public boolean updateVersionRule(OsRevisionRuleDTO osRevisionRuleDTO) { return false; } /** * dto对象转换为VersionRule对象 * @return */ private VersionRule dto2VersionRule(OsRevisionRuleDTO osRevisionRuleDTO){ VersionRule newVR = new VersionRule(); newVR.name = osRevisionRuleDTO.getId(); newVR.tag = osRevisionRuleDTO.getName(); newVR.jumpCharacter = osRevisionRuleDTO.getPrefixCode(); /*newVR.initialValue = jtf3.getText(); newVR.stepLength = jtf4.getText(); newVR.prefixion = jtf5.getText(); newVR.suffix = jtf6.getText(); newVR.description = jta.getText();*/ String userName = ClientSessionUtility.getCurUserName(); newVR.creator = userName; newVR.modifier = userName; return newVR; } /** * 数据对象转换为显示对象 * * @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.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; } /** * 查询应用范围 * @param vrName 版本规则英文名称 * @return */ @Override public List> getUsedVersionRuleList(String vrName) throws PLException { if(Func.isBlank(vrName)){ throw new PLException("500",new String[]{"请选择要查询应用范围的属性!"}); } String[] btNames = platformClientUtil.getBtmService().getBTNamesByVerName(vrName); if(Func.isEmpty(btNames)){ return new ArrayList<>(); } List> btmNameMapList = new ArrayList<>(); Arrays.stream(btNames).forEach(btName->{ Map itemMap = new HashMap<>(); itemMap.put("versionRuleName",vrName); itemMap.put("source",btName); btmNameMapList.add(itemMap); }); return btmNameMapList; } /** * 清除缓存 */ @Override public void clearCache() { } }