package com.cabletech.business.assess.dao; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Repository; import org.springframework.util.CollectionUtils; import com.cabletech.business.assess.model.AssessTemplateContent; import com.cabletech.common.base.BaseDao; /** * 模版-考核内容Dao * * @author 杨隽 2012-07-31 创建 * */ @Repository public class AssessTemplateContentDao extends BaseDao<AssessTemplateContent, String> { /** * 获取模板详细内容 * * @param content * 模板内容 * @return */ public Map<String, Object> getTemplateContent(AssessTemplateContent content) { StringBuffer sb = new StringBuffer( "select c.*,i.item_name,i.table_id from MM_APPRAISE_CONTENT c join MM_APPRAISE_ITEM i on c.item_id=i.id where 1=1 "); if (StringUtils.isNotBlank(content.getItemId())) { sb.append(" and c.item_id = '" + content.getItemId() + "'"); } if (StringUtils.isNotBlank(content.getId())) { sb.append(" and c.id = '" + content.getId() + "'"); } String sql = sb.toString(); logger.debug("获取模版详细内容:" + sql); List<Map<String, Object>> list = super.getJdbcTemplate().queryForList( sql); if (CollectionUtils.isEmpty(list)) { return new HashMap<String, Object>(); } return list.get(0); } /** * 获取最大深度级别 * @param map 表名 * @return */ public int getMaxLvItem(Map<String, Object> map){ StringBuffer sb=new StringBuffer(""); sb.append("select nvl(max(lv),0) maxlv from ("); sb.append(getTemplateContentSql(map)+")"); String sql=sb.toString(); logger.debug("获取最大模版级别:"+sql); return super.getJdbcTemplate().queryForInt(sql); } /** * 获取模板项内容 * @param map 表格ID * @return */ public List<Map<String,Object>> getTableItemContent(Map<String, Object> map){ StringBuffer sb=new StringBuffer("select * from ("); sb.append(getTemplateContentSql(map)); sb.append(" order by cid,lv,itempath asc) c where c.childcount=0"); String sql=sb.toString(); logger.debug("获取模版内容项:"+sql); return super.getJdbcTemplate().queryForList(sql); } /** * 根据考核表ID获取模版内容 * * @param map * Map<String, Object> 考核表ID * @return String */ private String getTemplateContentSql(Map<String, Object> map){ StringBuffer sb=new StringBuffer(); sb.append(" select sys_connect_by_path(m.item_name, '>') itempath,m.id,m.table_id,nvl(m.item_id,'root') item_id,m.item_name,level lv,mc.id as cid,(select count(id) from MM_appraise_item pm where pm.item_id=m.id ) CHILDCOUNT, "); sb.append(" mc.name,mc.demand_desc,mc.evaluation_criterion,mc.benchmark_value,mc.challenge_value,mc.weight,mc.id contentid from MM_appraise_item m "); sb.append(" left join MM_appraise_content mc on m.id=mc.item_id "); sb.append(" where m.table_id='"); sb.append(map.get("tableId")+"' "); sb.append(" start with m.item_id is null connect by prior m.id=m.item_id "); return sb.toString(); } }