Ldc
2024-04-07 0652600959e5e3b5796fb6e8da129704ca95347a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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() {
 
    }
}