package cn.ksource.web.service.sl; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.ksource.core.dao.BaseDao; import cn.ksource.core.dao.SqlParameter; import cn.ksource.core.util.ConvertUtil; import cn.ksource.core.util.StringUtil; import cn.ksource.web.service.sl.sla.NoticeUser; import cn.ksource.web.service.sl.sla.SLAEntity; import cn.ksource.web.service.sl.sla.SLALevel; @Service("slaProjectService") public class SlaProjectServiceImpl implements SlaProjectService { @Autowired private BaseDao baseDao; @Override public Map queryProjectSeviceList(String customerId,String sl) { String selectSql = "SELECT A.* FROM SC_SERVCE_CATEGORY A,SC_SERVCE_CATEGORY_CUSTOMER B WHERE A.ID = B.CATEGORY_ID AND A.STATE = 1 AND B.CUSTOMER_ID = :customerId AND B.STATE = 1 ORDER BY A.LEVEL,A.SERIAL "; List categoryList = baseDao.queryForList(selectSql,new SqlParameter("customerId", customerId)); Map slMap = new HashMap(); if(StringUtil.notEmpty(sl)) { String[] sls = sl.split(","); for(String s : sls) { slMap.put(s, s); } } Map result = new HashMap(); List resultList = new LinkedList(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); Map sjgnCache = new HashMap(); for (Map map : categoryList) { //一级树 if (map.get("LEVEL").toString().equalsIgnoreCase("1")) { yjgnCache.put(map.get("ID").toString(), map); List ejgnList = new LinkedList(); map.put("ejTree", ejgnList); resultList.add(map); continue; } //二级树 if (map.get("LEVEL").toString().equalsIgnoreCase("2")) { Map yjgnMap = yjgnCache.get(map.get("P_ID").toString()); List list = (List)yjgnMap.get("ejTree"); map.put("sjTree", new LinkedList()); list.add(map); ejgnCache.put(map.get("ID").toString(), map); continue; } //三级树 if (map.get("LEVEL").toString().equalsIgnoreCase("3")) { if(null!=map.get("P_ID")){ if(slMap.containsKey(map.get("ID"))) { slMap.put(map.get("ID"), map.get("CATEGORY_NAME")); map.put("check", 1); } else { map.put("check", 2); } Map ejgnMap = ejgnCache.get(map.get("P_ID").toString()); List list = (List)ejgnMap.get("sjTree"); list.add(map); } } } for (Map map : resultList) { List ejlist = (List)map.get("ejTree"); if(ejlist != null){ if(ejlist.size() == 0){ map.put("nodata", 0); }else{ int count = 0; for(Map map1 :ejlist){ List sjlist = (List)map1.get("sjTree"); if(sjlist != null){ if(sjlist.size() == 0){ map1.put("nodata", 0); }else{ map1.put("nodata", 1); count = 1; } }else{ map1.put("nodata", 0); } } if(count == 0){ map.put("nodata", 0); }else{ map.put("nodata", 1); } } }else{ map.put("nodata", 0); } } Map resultMap = new HashMap(); resultMap.put("categoryList", resultList); resultMap.put("slMap", slMap); return resultMap; } @Override public String queryLevel(String priority_id, String influence_id,String customerId) { String selectSql = "SELECT LEVEL_ID FROM SC_SLA_LEVEL_CONFIG WHERE INFLUENCE_ID = :influence_id AND PRIORITY_ID = :priority_id AND CUSTOMER_ID = :customerId"; Map paramMap = new HashMap(); paramMap.put("influence_id", influence_id); paramMap.put("priority_id", priority_id); paramMap.put("customerId", customerId); String levelId = baseDao.queryForString(selectSql,paramMap); return levelId; } @Override public SLAEntity getLevelMsg(String customerId, String cateId) { SLAEntity slaEntity = new SLAEntity(); slaEntity = querySelfProject(customerId,cateId); return slaEntity; } /** * 查询自有项目服务信息 * @param * @param customerId * @param * @param cateId * @return */ private SLAEntity querySelfProject(String customerId,String cateId) { SLAEntity slaEntity = new SLAEntity(customerId,cateId); //查询服务人员信息 //List serviceUsers = getServiceUser(customerId,cateId); //slaEntity.setServiceUsers(serviceUsers); List levels = getLevels(customerId,cateId); //查询该加盟商的响应信息 slaEntity.setLevels(levels); return slaEntity; } /** * 查询级别信息 */ private List getLevels(String customerId,String cateId) { SqlParameter sqlParameter = new SqlParameter("customerId",customerId).addValue("cateId", cateId); //查询级别对应的协议设置 String configSql = "SELECT A.* FROM SC_SLA_CONFIG A,SC_SLA B WHERE A.LEVEL_ID = B.ID AND A.STATE = 1 AND A.CUSTOMER_ID = :customerId AND A.CATEGORY_ID = :cateId AND B.STATE = 1 ORDER BY B.SERIAL"; List configs = baseDao.queryForList(configSql,sqlParameter); if(configs.size() ==0){ String tyconfigSql = "SELECT A.* FROM SC_SLA_CONFIG A,SC_SLA B WHERE A.LEVEL_ID = B.ID AND A.STATE = 1 AND A.CUSTOMER_ID IS NULL AND A.CATEGORY_ID = :cateId AND B.STATE = 1 ORDER BY B.SERIAL"; configs = baseDao.queryForList(tyconfigSql,sqlParameter); } if(configs.size() ==0){ String tyconfigSql = "SELECT A.* FROM SC_SLA_CONFIG A,SC_SLA B WHERE A.LEVEL_ID = B.ID AND A.STATE = 1 AND A.CUSTOMER_ID IS NULL AND A.CATEGORY_ID IS NULL AND B.STATE = 1 ORDER BY B.SERIAL"; configs = baseDao.queryForList(tyconfigSql,sqlParameter); } List levels = new ArrayList(); if(null!=configs && configs.size()>0) { //查询级别下的协议人员配置 String selectSql = "SELECT A.*,B.CATEGORY_ID,B.LEVEL_ID,B.ID AS CONFIG_ID FROM SC_SLA_USER A,SC_SLA_CONFIG B WHERE A.LEVEL_ID = B.ID AND B.STATE = 1 AND B.CUSTOMER_ID = :customerId AND B.CATEGORY_ID = :cateId ORDER BY A.OVER_TIME "; List users = baseDao.queryForList(selectSql,sqlParameter); Map responseUser = new HashMap(); Map resolveUser = new HashMap(); if(null!=users && users.size()>0) { for(Map user : users) { String configId = ConvertUtil.obj2StrBlank(user.get("CONFIG_ID")); NoticeUser noticeUser = new NoticeUser(); //超时时间 String overTime = ConvertUtil.obj2StrBlank(user.get("OVER_TIME")); noticeUser.setOverTime(overTime); String notice_type = ConvertUtil.obj2StrBlank(user.get("NOTICE_TYPE")); noticeUser.setNoticeType(notice_type); //通知人员类型 1:分组 2:指定人员 String dealerType = ConvertUtil.obj2StrBlank(user.get("DEALER_TYPE")); noticeUser.setDealerType(dealerType); if(dealerType.equals("2")) { //通知人员编号 String userId = ConvertUtil.obj2StrBlank(user.get("USER_ID")); //通知人员名称 String userName = ConvertUtil.obj2StrBlank(user.get("USER_NAME")); noticeUser.setUserId(userId); noticeUser.setUserName(userName); } //通知分组编号 String groupId = ConvertUtil.obj2StrBlank(user.get("GROUP_ID")); //通知分组名称 String groupName = ConvertUtil.obj2StrBlank(user.get("GROUP_NAME")); noticeUser.setGroupId(groupId); noticeUser.setGroupName(groupName); if(notice_type.equals("1")) { if(responseUser.containsKey(configId)) { List respUsers = (List)responseUser.get(configId); respUsers.add(noticeUser); } else { List respUsers = new ArrayList(); respUsers.add(noticeUser); responseUser.put(configId, respUsers); } } else { if(resolveUser.containsKey(configId)) { List resolveUsers = (List)resolveUser.get(configId); resolveUsers.add(noticeUser); } else { List resolveUsers = new ArrayList(); resolveUsers.add(noticeUser); resolveUser.put(configId, resolveUsers); } } } } for(Map config : configs) { SLALevel level = new SLALevel(); String configId = ConvertUtil.obj2StrBlank(config.get("ID")); String levelId = ConvertUtil.obj2StrBlank(config.get("LEVEL_ID")); level.setLevelId(levelId); //服务级别名称 String levelName = ConvertUtil.obj2StrBlank(config.get("LEVEL_NAME")); level.setLevelName(levelName); //响应时间 String responseTime = ConvertUtil.obj2StrBlank(config.get("RESPONSE_TIME")); level.setResponseTime(responseTime); //解决时间 String resolveTime = ConvertUtil.obj2StrBlank(config.get("RESOLVE_TIME")); level.setResolveTime(resolveTime); //通知人员类型 1:分组 2:指定人员 String dealerType = ConvertUtil.obj2StrBlank(config.get("DEALER_TYPE")); level.setDealerType(dealerType); if(dealerType.equals("2")) { //人员编号 String userId = ConvertUtil.obj2StrBlank(config.get("USER_ID")); //人员名称 String userName = ConvertUtil.obj2StrBlank(config.get("USER_NAME")); level.setUserId(userId); level.setUserName(userName); } //分组编号 String groupId = ConvertUtil.obj2StrBlank(config.get("GROUP_ID")); level.setGroupId(groupId); //分组名称 String groupName = ConvertUtil.obj2StrBlank(config.get("GROUP_NAME")); level.setGroupName(groupName); if(responseUser.containsKey(configId)) { List respUsers = (List)responseUser.get(configId); level.setResponseNotices(respUsers); } else { level.setResponseNotices(null); } if(resolveUser.containsKey(configId)) { List resolveUsers = (List)resolveUser.get(configId); level.setResolveNotices(resolveUsers); } else { level.setResolveNotices(null); } levels.add(level); } } return levels; } @Override public Map getSla_level(Map param) { String sql="select * from SC_SLA_CONFIG where LEVEL_ID=:levelId AND CATEGORY_ID=:cate_id AND CUSTOMER_ID=:customerId"; Map map=baseDao.queryForMap(sql, param); return map; } @Override public Map getGsSla(Map param) { String sql="select * from SC_SLA_CONFIG where LEVEL_ID=:levelId AND CUSTOMER_ID IS NULL AND CATEGORY_ID IS NULL "; Map map=baseDao.queryForMap(sql, param); return map; } @Override public Map getZsSla(Map param) { String sql="select * from SC_SLA_CONFIG where LEVEL_ID=:levelId AND CUSTOMER_ID IS NULL AND CATEGORY_ID=:cate_id "; Map map=baseDao.queryForMap(sql, param); return map; } }