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
package cn.ksource.web.facade.propform;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
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.core.util.JsonUtil;
import cn.ksource.web.Constants;
 
@Service("propformFacade")
public class PropformFacadeImpl implements PropformFacade {
 
    @Autowired
    private BaseDao baseDao;
    @Override
    public Map queryStorageData(String ciId) {
        Map data = new HashMap();
        Map label = new HashMap();
        String selectSql = "SELECT * FROM prop_data WHERE BUS_ID = :ciId";
        List<Map> datas = baseDao.queryForList(selectSql,new SqlParameter("ciId",ciId));
        
        if(null!=datas && datas.size()>0) {
            for(Map d : datas) {
                String column_id = ConvertUtil.obj2StrBlank(d.get("COLUMN_ID"));
                String column_value = ConvertUtil.obj2StrBlank(d.get("COLUMN_VALUE"));
                String column_text = ConvertUtil.obj2StrBlank(d.get("COLUMN_TEXT"));
                
                data.put(column_id, column_value);
                label.put(column_id, column_text);
            }
        }
        Map resultMap = new HashMap();
        resultMap.put("data", data);
        resultMap.put("label", label);
        return resultMap;
    }
    @Override
    public List queryGroupPropsTwo(String cate) {
        CMDB_CI_CATEGORY category = new CMDB_CI_CATEGORY(cate).getInstanceById();
        String pid = category.getPid();
        
        Map paramMap = new HashMap();
        paramMap.put("pid", pid);
        paramMap.put("cate", cate);
    
        
        StringBuilder builder = new StringBuilder("SELECT D.* FROM (");
        //先查询分组信息
        String ejGroup = "SELECT A.*,2 AS CATE FROM PROP_GROUP A,CMDB_CI_CATEGORY A1  WHERE A.LINK_ID = A1.ID  AND  A.LINK_ID = :pid AND A.STATE = 1";
        builder.append(ejGroup);
        builder.append(" UNION ");
        String sjGroup = "SELECT B.*,3 AS CATE FROM PROP_GROUP B,CMDB_CI_CATEGORY B1  WHERE B.LINK_ID = B1.ID  AND  B.LINK_ID = :cate AND B.STATE = 1";
        builder.append(sjGroup);
        builder.append(") D ORDER BY D.CATE,D.SERIAL ");    
        
        List<Map> groups = baseDao.queryForList(builder.toString(),paramMap);
        System.out.println(JsonUtil.list2Json(groups));
        
        if(null!=groups && groups.size()>0) {
            String selectPropSql = "SELECT A.* FROM PROP_COLUMN A,PROP_GROUP B WHERE A.GROUP_ID = B.ID AND (B.LINK_ID = :pid OR B.LINK_ID = :cate ) AND A.STATE = 1 AND B.STATE = 1 ORDER BY A.SERIAL";
            List<Map> props = baseDao.queryForList(selectPropSql,paramMap);
            
            Map cacheMap = new HashMap();
            Map cacheMap2 = new HashMap();
            if(null!=props && props.size()>0) {
                
                props = queryListValue(props);
                
                
                for(Map prop : props) {
                    String groupId = ConvertUtil.obj2StrBlank(prop.get("GROUP_ID"));
                    Map m = new HashMap();
                    int datatype = ConvertUtil.obj2Int(prop.get("DATATYPE"));
                    if(datatype == Constants.CMDB_CI_EXTEND_COLUMN_DATATYPE_TEXT  || datatype==Constants.CMDB_CI_EXTEND_COLUMN_DATATYPE_MULTI_SELECT) {
                        m = cacheMap2;
                    } else {
                        m = cacheMap;
                    }
                    
                    if(m.containsKey(groupId)) {
                        List ls = (List)m.get(groupId);
                        ls.add(prop);
                    } else {
                        List ls = new ArrayList();
                        ls.add(prop);
                        m.put(groupId, ls);
                    }
                }
            }
            
            for(Map group : groups) {
                group.put("props", cacheMap.get(group.get("ID")));
                group.put("props1", cacheMap2.get(group.get("ID")));
            }
            
        }
        
        return groups;
    }
    private List<Map> queryListValue(List<Map> props) {
        String selectSql = "SELECT * FROM PROP_SEL WHERE STATE = 1 ORDER BY SERIAL ";
        List<Map> items = baseDao.queryForList(selectSql);
        Map cacheMap = new HashMap();
        if(null!=items && items.size()>0) {
            for(Map item : items) {
                String extendId = ConvertUtil.obj2StrBlank(item.get("EXTENDID"));
                if(cacheMap.containsKey(extendId)) {
                    List list = (List)cacheMap.get(extendId);
                    list.add(item);
                } else {
                    List list = new ArrayList();
                    list.add(item);
                    cacheMap.put(extendId, list);
                }
            }
        }
        
        for(Map prop : props) {
            String id = ConvertUtil.obj2StrBlank(prop.get("ID"));
            if(cacheMap.containsKey(id)) {
                prop.put("items", cacheMap.get(id));
            }
        }
        
        return props;
    }
    @Override
    public Map queryCommonProps() {
        String selectSq1 = "SELECT * FROM PROP_COLUMN WHERE STATE = 1 AND GROUP_ID='-1' ORDER BY SERIAL";
        List<Map> commonProps = baseDao.queryForList(selectSq1);
        Map resultMap = new HashMap();
        List commonProp = new ArrayList();
        List textareaProp = new ArrayList();
        
        //如果通用属性扩展下为复选或单选,则查询出其属性
        if(null!=commonProps && commonProps.size()>0) {
            commonProps = queryListValue(commonProps);
            
            for(Map m : commonProps) {
                int datatype = ConvertUtil.obj2Int(m.get("DATATYPE"));
                if(datatype == Constants.CMDB_CI_EXTEND_COLUMN_DATATYPE_TEXT || datatype==Constants.CMDB_CI_EXTEND_COLUMN_DATATYPE_MULTI_SELECT) {
                    textareaProp.add(m);
                } else {
                    commonProp.add(m);
                }
            }
        }
        
        resultMap.put("commonProp", commonProp);
        resultMap.put("textareaProp", textareaProp);
        
        return resultMap;
    }
 
}