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 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 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 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 queryListValue(List props) { String selectSql = "SELECT * FROM PROP_SEL WHERE STATE = 1 ORDER BY SERIAL "; List 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 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; } }