cy
2022-06-21 129904537f66509f97b285e7eb4f42b3dc349dd0
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
package cn.ksource.web.service.cmdb.impl;
 
import java.util.Map;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import cn.ksource.beans.CMDB_CI_CATEGORY;
import cn.ksource.core.dao.BaseDao;
import cn.ksource.core.dao.SqlParameter;
import cn.ksource.core.util.ConvertUtil;
import cn.ksource.web.service.cmdb.CICategory;
import cn.ksource.web.service.cmdb.CIPropertityService;
import cn.ksource.web.service.cmdb.DSLCategory;
import cn.ksource.web.service.cmdb.SequenceService;
 
@Service
public class SequenceServiceImpl implements SequenceService {
 
    @Autowired
    private BaseDao baseDao;
    
    @Autowired
    private CIPropertityService ciPropertityService;
    
    
    @Override
    public String getDslCategorySequence(String categoryid) {
        
        DSLCategory propertity = ciPropertityService.getDSLCategory(categoryid);
        Map category = propertity.getCategory();
        String prefix = propertity.getFirstCategory().get("CATE_CODE")+"-"+propertity.getSecondCategory().get("CATE_CODE");
        if (propertity.getLevel() == 3) {
            prefix+= "-"+propertity.getThirdCategory().get("CATE_CODE");
        }
        
        //表序号,预留字段,以后分表时使用
        String tableIndex = "01";
        int sequenceLong = 10;
        String strSequence = "";
        Integer serial_number = baseDao.queryForInteger("select SERIAL_NUMBER from CMDB_CI_SEQUENCE where CATEGORY_ID=:CATEGORY_ID",
                new SqlParameter("CATEGORY_ID",categoryid));
        if (serial_number == null) {
            baseDao.execute("insert into CMDB_CI_SEQUENCE(CATEGORY_ID,SERIAL_NUMBER) VALUES(:CATEGORY_ID,:SERIAL_NUMBER)", 
                    new SqlParameter("CATEGORY_ID",categoryid).addValue("SERIAL_NUMBER", 1));
            serial_number = 1;
        }
        
        int length = sequenceLong - String.valueOf(serial_number).length();
        for (int i = 0; i < length; i++) {
            strSequence += "0";
        }
        return prefix.toUpperCase()+"-"+tableIndex+strSequence+String.valueOf(serial_number);
    }
    
    
    
    
    @Override
    public String getCICategorySequence(String categoryid) {
        
        CICategory propertity = ciPropertityService.getCICategory(categoryid);
        Map category = propertity.getCategory();
        
        String prefix = propertity.getFirstCategory().get("CODE")+"-"+propertity.getSecondCategory().get("CODE");
        if (propertity.getLevel() == 3) {
            prefix+= "-"+propertity.getThirdCategory().get("CODE");
        }
        
        //表序号,预留字段,以后分表时使用
        String tableIndex = "01";
        int sequenceLong = 10;
        String strSequence = "";
        Integer serial_number = baseDao.queryForInteger("select SERIAL_NUMBER from CMDB_CI_SEQUENCE where CATEGORY_ID=:CATEGORY_ID",
                new SqlParameter("CATEGORY_ID",categoryid));
        if (serial_number == null) {
            baseDao.execute("insert into CMDB_CI_SEQUENCE(CATEGORY_ID,SERIAL_NUMBER,SUB_CI_SERIAL_NUMBER) VALUES(:CATEGORY_ID,:SERIAL_NUMBER,:SUB_CI_SERIAL_NUMBER)", 
                    new SqlParameter("CATEGORY_ID",categoryid).addValue("SERIAL_NUMBER", 1).addValue("SUB_CI_SERIAL_NUMBER", 1));
            serial_number = 1;
        }
        
        int length = sequenceLong - String.valueOf(serial_number).length();
        for (int i = 0; i < length; i++) {
            strSequence += "0";
        }
        return prefix.toUpperCase()+"-"+tableIndex+strSequence+String.valueOf(serial_number);
    }
 
    @Override
    public int getMemberSequence(String memberid) {
        Integer serial_number = baseDao.queryForInteger("select SERIAL_NUMBER from CMDB_CI_USER_SEQUENCE where MEMBER_ID=:MEMBER_ID",
                new SqlParameter("MEMBER_ID",memberid));
        if (serial_number == null) {
            baseDao.execute("insert into CMDB_CI_USER_SEQUENCE(MEMBER_ID,SERIAL_NUMBER,SUB_CI_SERIAL_NUMBER) VALUES(:MEMBER_ID,:SERIAL_NUMBER,:SUB_CI_SERIAL_NUMBER)", 
                    new SqlParameter("MEMBER_ID",memberid).addValue("SERIAL_NUMBER", 1).addValue("SUB_CI_SERIAL_NUMBER", 1));
            serial_number = 1;
        }
        return serial_number;
    }
 
    @Override
    public void nextCICategorySequence(String categoryid) {
        baseDao.execute("update CMDB_CI_SEQUENCE set SERIAL_NUMBER=SERIAL_NUMBER+1 where CATEGORY_ID=:CATEGORY_ID", 
                new SqlParameter("CATEGORY_ID",categoryid));
    }
 
    @Override
    public void nextMemberSequence(String memberid) {
        baseDao.execute("update CMDB_CI_USER_SEQUENCE set SERIAL_NUMBER=SERIAL_NUMBER+1 where MEMBER_ID=:MEMBER_ID", 
                new SqlParameter("MEMBER_ID",memberid));
    }
 
    @Override
    public String getSUBCICategorySequence(String categoryid) {
        
        CMDB_CI_CATEGORY category = new CMDB_CI_CATEGORY(categoryid).getInstanceById();
        
        //表序号,预留字段,以后分表时使用
        String tableIndex = "01";
        int sequenceLong = 10;
        String strSequence = "";
        Integer serial_number = 1;
        Map serial_numberMap = baseDao.queryForMap("select * from CMDB_CI_SEQUENCE where CATEGORY_ID=:CATEGORY_ID",
                new SqlParameter("CATEGORY_ID",categoryid));
        if (serial_numberMap == null || serial_numberMap.size() == 0) {
            baseDao.execute("insert into CMDB_CI_SEQUENCE(CATEGORY_ID,SERIAL_NUMBER,SUB_CI_SERIAL_NUMBER) VALUES(:CATEGORY_ID,:SERIAL_NUMBER,:SUB_CI_SERIAL_NUMBER)", 
                    new SqlParameter("CATEGORY_ID",categoryid).addValue("SERIAL_NUMBER", 1).addValue("SUB_CI_SERIAL_NUMBER", 1));
        } else {
            serial_number = ConvertUtil.obj2Integer(serial_numberMap.get("SUB_CI_SERIAL_NUMBER"));
        }
        
        if (serial_number == null) {
            baseDao.execute("update CMDB_CI_SEQUENCE set SUB_CI_SERIAL_NUMBER=1 where CATEGORY_ID=:CATEGORY_ID", 
                    new SqlParameter("CATEGORY_ID",categoryid));
            serial_number = 1;
        }
        
        int length = sequenceLong - String.valueOf(serial_number).length();
        for (int i = 0; i < length; i++) {
            strSequence += "0";
        }
        return category.getCode().toUpperCase()+"-"+tableIndex+strSequence+String.valueOf(serial_number);
    }
 
    @Override
    public int getSUBMemberSequence(String memberid) {
        Map serial_numberMap = baseDao.queryForMap("select * from CMDB_CI_USER_SEQUENCE where MEMBER_ID=:MEMBER_ID",
                new SqlParameter("MEMBER_ID",memberid));
        Integer serial_number = 1;
        if (serial_numberMap == null || serial_numberMap.size() == 0) {
            baseDao.execute("insert into CMDB_CI_USER_SEQUENCE(MEMBER_ID,SERIAL_NUMBER,SUB_CI_SERIAL_NUMBER) VALUES(:MEMBER_ID,:SERIAL_NUMBER,:SUB_CI_SERIAL_NUMBER)", 
                    new SqlParameter("MEMBER_ID",memberid).addValue("SERIAL_NUMBER", 1).addValue("SUB_CI_SERIAL_NUMBER", 1));
        } else {
            serial_number = ConvertUtil.obj2Integer(serial_numberMap.get("SUB_CI_SERIAL_NUMBER"));
        }
        if (serial_number == null) {
            baseDao.execute("update CMDB_CI_USER_SEQUENCE set SUB_CI_SERIAL_NUMBER=1 where MEMBER_ID=:MEMBER_ID", 
                    new SqlParameter("MEMBER_ID",memberid));
            serial_number = 1;
        }
        return serial_number;
    }
 
    @Override
    public void nextSUBCICategorySequence(String categoryid) {
        baseDao.execute("update CMDB_CI_SEQUENCE set SUB_CI_SERIAL_NUMBER=SUB_CI_SERIAL_NUMBER+1 where CATEGORY_ID=:CATEGORY_ID", 
                new SqlParameter("CATEGORY_ID",categoryid));
    }
 
    @Override
    public void nextSUBMemberSequence(String memberid) {
        baseDao.execute("update CMDB_CI_USER_SEQUENCE set SUB_CI_SERIAL_NUMBER=SUB_CI_SERIAL_NUMBER+1 where MEMBER_ID=:MEMBER_ID", 
                new SqlParameter("MEMBER_ID",memberid));
    }
 
}