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;
|
}
|
|
}
|