package cn.ksource.web.facade.customerconfig; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.ksource.beans.SC_PARTNER_CUSTOMER_INFO; import cn.ksource.beans.SC_SERVCE_CATEGORY; import cn.ksource.beans.SC_SLA; import cn.ksource.beans.SC_SLA_CONFIG; 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.core.util.StringUtil; import cn.ksource.web.Constants; import cn.ksource.web.service.DataDictionaryService; @Service("slaCusFacade") @SuppressWarnings("unchecked") public class SlaCusFacadeImpl implements SlaCusFacade { @Autowired private BaseDao baseDao; @Autowired private DataDictionaryService dataDictionaryService; @Override public List queryProjectSeviceList(String customerId) { String selectSql = "SELECT A.*,B.STATE,B.ID AS LINK_ID FROM SC_SERVCE_CATEGORY A,SC_SERVCE_CATEGORY_CUSTOMER B WHERE A.ID = B.CATEGORY_ID AND B.CUSTOMER_ID = :customerId ORDER BY A.LEVEL,A.SERIAL "; List categoryList = baseDao.queryForList(selectSql,new SqlParameter("customerId", customerId)); 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") && null == map.get("P_ID")) { 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")) { String pId = map.get("P_ID").toString(); if(yjgnCache.containsKey(pId)) { Map yjgnMap = yjgnCache.get(pId); 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")){ String pId = map.get("P_ID").toString(); if(ejgnCache.containsKey(pId)) { Map ejgnMap = ejgnCache.get(map.get("P_ID").toString()); List list = (List)ejgnMap.get("sjTree"); list.add(map); } } } } for(int i = 0;i < resultList.size();i++ ){ List ejlist = (List)resultList.get(i).get("ejTree"); if(ejlist != null){ if(ejlist.size() == 0){ resultList.remove(i); i = i -1 ; }else{ int count = 0; for(int j = 0;j < ejlist.size();j++){ List sjlist = (List)ejlist.get(j).get("sjTree"); if(sjlist != null){ if(sjlist.size() == 0){ ejlist.remove(j); j = j -1 ; resultList.get(i).put("ejTree", ejlist); }else{ count = count + 1; } }else{ ejlist.remove(j); j = j -1 ; resultList.get(i).put("ejTree", ejlist); } } if(count == 0){ resultList.remove(i); i = i -1 ; } } }else{ resultList.remove(i); i = i -1 ; } } int totalNum = 0; //查询三级分类展示成列表的需要占的表格数 for(Map yj : resultList) { int num = 0; List ejList = (List)(yj.get("ejTree")); if(null!=ejList && ejList.size()>0) { for(Map ej :ejList) { List sjList = (List)ej.get("sjTree"); int sjNum = sjList.size(); if(sjNum>0) { num = num+sjNum; ej.put("sjNum", sjNum); } else { num = num+1; ej.put("sjNum", 1); } } } else { num = num+1; } totalNum += num; yj.put("num", num); } System.out.println(JsonUtil.list2Json(resultList)); return resultList; } @Override public boolean updateState(HttpServletRequest request) { String customerId = request.getParameter("customerId"); String cateId = request.getParameter("cateId"); String state = request.getParameter("state"); String link_id = request.getParameter("link_id"); if(state.equals("2")) { //查询该分类下是否有信息 String sql = "SELECT COUNT(*) FROM SC_SERVCE_CATEGORY A,SC_SERVCE_CATEGORY_CUSTOMER B WHERE A.ID = B.CATEGORY_ID AND A.P_ID = :cateId AND B.STATE = 1 AND B.CUSTOMER_ID = :customerId "; int count = baseDao.queryForInteger(sql,new SqlParameter("cateId",cateId).addValue("customerId", customerId)); if(count>0) { return false; } } else if (state.equals("1")) { //查询该分类是否有上级 //String selectSql = "SELECT "; } String updateSql = "UPDATE SC_SERVCE_CATEGORY_CUSTOMER SET STATE = :state WHERE ID = :link_id "; baseDao.execute(updateSql, new SqlParameter("link_id",link_id).addValue("state", state)); return true; } /** * 查询项目可以新增的服务目录 */ @Override public List queryAddServiceList(String customerId) { String sql="SELECT A.* FROM SC_SERVCE_CATEGORY A WHERE A.STATE = 1 AND NOT EXISTS (SELECT B.CATEGORY_ID FROM (SELECT D.CATEGORY_ID FROM SC_SERVCE_CATEGORY C, SC_SERVCE_CATEGORY_CUSTOMER D WHERE C.ID = D.CATEGORY_ID AND C.LEVEL = 3 AND D.CUSTOMER_ID = :customerId ) B WHERE A.ID = B.CATEGORY_ID ) ORDER BY A.LEVEL,A.SERIAL "; List categoryList = baseDao.queryForList(sql,new SqlParameter("customerId", customerId)); 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") && null == map.get("P_ID")) { 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")) { if(yjgnCache.containsKey(map.get("P_ID"))) { 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(ejgnCache.containsKey(map.get("P_ID"))) { Map ejgnMap = ejgnCache.get(map.get("P_ID").toString()); List list = (List)ejgnMap.get("sjTree"); list.add(map); } } } } for(int i = 0;i < resultList.size();i++ ){ List ejlist = (List)resultList.get(i).get("ejTree"); if(ejlist != null){ if(ejlist.size() == 0){ resultList.remove(i); i = i -1 ; }else{ int count = 0; for(int j = 0;j < ejlist.size();j++){ List sjlist = (List)ejlist.get(j).get("sjTree"); if(sjlist != null){ if(sjlist.size() == 0){ ejlist.remove(j); j = j -1 ; resultList.get(i).put("ejTree", ejlist); }else{ count = count + 1; } }else{ ejlist.remove(j); j = j -1 ; resultList.get(i).put("ejTree", ejlist); } } if(count == 0){ resultList.remove(i); i = i -1 ; } } }else{ resultList.remove(i); i = i -1 ; } } int totalNum = 0; //查询三级分类展示成列表的需要占的表格数 for(Map yj : resultList) { int num = 0; List ejList = (List)(yj.get("ejTree")); if(null!=ejList && ejList.size()>0) { for(Map ej :ejList) { List sjList = (List)ej.get("sjTree"); int sjNum = sjList.size(); if(sjNum>0) { num = num+sjNum; ej.put("sjNum", sjNum); } } } else { num = num+1; } totalNum += num; yj.put("num", num); } System.out.println(JsonUtil.list2Json(resultList)); return resultList; } @Override public boolean savesl(HttpServletRequest request) { String customerId = request.getParameter("customerId"); String proId = request.getParameter("proId"); String[] sls = request.getParameterValues("sl"); //查询该客户已有的服务目录 String selectSql = "SELECT * FROM SC_SERVCE_CATEGORY_CUSTOMER WHERE CUSTOMER_ID = :customerId "; List cates = baseDao.queryForList(selectSql,new SqlParameter("customerId",customerId)); List cacheList = new ArrayList(); if(null!=cates && cates.size()>0) { for(Map cate : cates) { String categoryId = ConvertUtil.obj2StrBlank(cate.get("CATEGORY_ID")); cacheList.add(categoryId); } } List newCacheList = new ArrayList(); if(StringUtil.notEmpty(customerId) && null!=sls && sls.length>0) { List paramList = new ArrayList(); for(String sl : sls) { if(StringUtil.notEmpty(sl)) { String[] categorys = sl.split("-"); if(categorys.length == 3) { for(String cate : categorys) { if(!cacheList.contains(cate) && !newCacheList.contains(cate)) { SqlParameter sqlParameter = new SqlParameter(); sqlParameter.put("id", StringUtil.getUUID()); sqlParameter.put("customer_id", customerId); sqlParameter.put("category_id", cate); sqlParameter.put("proId", proId); paramList.add(sqlParameter); newCacheList.add(cate); } } } } } String insertSql = "INSERT INTO SC_SERVCE_CATEGORY_CUSTOMER(ID,CATEGORY_ID,CUSTOMER_ID,STATE) VALUES (:id,:category_id,:customer_id,1)"; baseDao.executeBatch(insertSql,paramList); return true; } return false; } @Override public Map querySlaCusLink(String customerId) { Map resultMap = new HashMap(); //查询紧急程度数据字典 List eventPri = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI); if(null==eventPri || eventPri.size()==0) { return resultMap; } //查询事件影响度数据字典 List eventDg = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_EFFECT_DG); if(null==eventDg || eventDg.size()==0) { return resultMap; } //查询所有的优先级设置 String selectSql = "SELECT A.* FROM SC_SLA_LEVEL_CONFIG A,SC_SLA B WHERE A.LEVEL_ID = B.ID AND B.STATE = 1 AND A.CUSTOMER_ID = :customerId "; List list = baseDao.queryForList(selectSql,new SqlParameter("customerId", customerId)); Map cacheMap = new HashMap(); if(null!=list && list.size()>0) { for(Map map : list) { String priId = ConvertUtil.obj2Str(map.get("PRIORITY_ID")); String effId = ConvertUtil.obj2Str(map.get("INFLUENCE_ID")); cacheMap.put(priId+"-"+effId, map); } } for(Map dg : eventDg) { List levels = new ArrayList(); String effId = ConvertUtil.obj2Str(dg.get("DATAKEY")); for(Map pri : eventPri) { String priId = ConvertUtil.obj2Str(pri.get("DATAKEY")); String key = priId+"-"+effId; Map m = new HashMap(); if(cacheMap.containsKey(key)) { m = (Map)cacheMap.get(key); m.put("unitkey", key); } else { m.put("unitkey", key); } levels.add(m); } dg.put("levels", levels); } resultMap.put("pri", eventPri); resultMap.put("dg", eventDg); return resultMap; } @Override public List queryPartnerLevels(HttpServletRequest request) { String sql = "SELECT * FROM SC_SLA WHERE STATE = :state ORDER BY SERIAL"; return baseDao.queryForList(sql,new SqlParameter("state",Constants.SC_SLA_TEMPLATE_STATE_OPEN)); } /** * 保存SLA关联 */ @Override public String saveSlaLink(HttpServletRequest request) { String[] links = request.getParameterValues("level"); String customerId = request.getParameter("customerId"); String proId = request.getParameter("proId"); Map priMap = new HashMap(); //查询紧急程度数据字典 List eventPri = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI); for(Map m : eventPri) { String key = ConvertUtil.obj2StrBlank(m.get("DATAKEY")); String value = ConvertUtil.obj2StrBlank(m.get("DATAVALUE")); priMap.put(key, value); } Map dgMap = new HashMap(); //查询事件影响度数据字典 List eventDg = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_EFFECT_DG); for(Map m : eventDg) { String key = ConvertUtil.obj2StrBlank(m.get("DATAKEY")); String value = ConvertUtil.obj2StrBlank(m.get("DATAVALUE")); dgMap.put(key, value); } Map levelMap = new HashMap(); //查询所有的优先级设置 List levels = queryPartnerLevels(request); for(Map m : levels) { String key = ConvertUtil.obj2StrBlank(m.get("ID")); String value = ConvertUtil.obj2StrBlank(m.get("LEVEL_NAME")); levelMap.put(key, value); } List paramList = new ArrayList(); for(String s : links) { SqlParameter sqlParameter = new SqlParameter(); String[] keys = s.split("-"); String priId = keys[0]; String dgId = keys[1]; String levelId = keys[2]; sqlParameter.put("id", StringUtil.getUUID()); sqlParameter.put("influence_id", dgId); sqlParameter.put("influence_name", dgMap.get(dgId)); sqlParameter.put("priority_id", priId); sqlParameter.put("priority_name", priMap.get(priId)); sqlParameter.put("level_id", levelId); sqlParameter.put("level_name", levelMap.get(levelId)); sqlParameter.put("customer_id", customerId); paramList.add(sqlParameter); } String deleteSql = "DELETE FROM SC_SLA_LEVEL_CONFIG WHERE CUSTOMER_ID = :customerId "; String insertSql = "INSERT INTO SC_SLA_LEVEL_CONFIG(ID,INFLUENCE_ID,INFLUENCE_NAME,PRIORITY_ID,PRIORITY_NAME,LEVEL_ID,LEVEL_NAME,TYPE,CUSTOMER_ID) VALUES (:id,:influence_id,:influence_name,:priority_id,:priority_name,:level_id,:level_name,2,:customer_id)"; baseDao.execute(deleteSql, new SqlParameter("customerId", customerId)); baseDao.executeBatch(insertSql, paramList); return "1"; } @Override public Map slaReport(HttpServletRequest request) { Map resultMap = new HashMap(); String customerId = request.getParameter("customerId"); //查询所有的服务级别 List levels = queryPartnerLevels(request); System.out.println(JsonUtil.list2Json(levels)); resultMap.put("levels", levels); //查询服务目录三级树 List categoryList = queryTreeList(customerId,levels); resultMap.put("categoryList", categoryList); return resultMap; } @Override public List getSlalevelList() { String sql = "SELECT * FROM SC_SLA WHERE STATE = :state ORDER BY SERIAL"; return baseDao.queryForList(sql, new SqlParameter("state", 1)); } @Override public boolean saveBatchSlaTab(HttpServletRequest request) { String levelid = request.getParameter("levelid"); String customerId = request.getParameter("customerId"); String partnerName = new SC_PARTNER_CUSTOMER_INFO(customerId).getInstanceById().getCustomer_name(); String levelName = ConvertUtil.obj2Str(new SC_SLA(levelid).getBeanMapById().get("LEVEL_NAME")); String response_time = request.getParameter("response_time"); String resolve_time = request.getParameter("resolve_time"); String cateIdStrs = request.getParameter("cateIds"); //查询出该服务目录该级别对应的所有服务级别协议设置 String selectSql = "SELECT * FROM SC_SLA_CONFIG WHERE CATEGORY_ID = :categoryId AND LEVEL_ID = :levelId AND CUSTOMER_ID = :customerId"; String user1 = request.getParameter("user1"); String userName1 = request.getParameter("userName1"); List paramListSaveConfig = new ArrayList(); List paramListUpdateConfig = new ArrayList(); List configs = new ArrayList(); List configs2 = new ArrayList(); List paramList = new ArrayList(); if(StringUtil.notEmpty(cateIdStrs)) { String[] cateIds = cateIdStrs.split(","); for(String cateId : cateIds) { String cateName = ConvertUtil.obj2Str(new SC_SERVCE_CATEGORY(cateId).getBeanMapById().get("CATEGORY_NAME")); SqlParameter sqlParameter = new SqlParameter(); sqlParameter.put("cateId", cateId); sqlParameter.put("category_name", cateName); sqlParameter.put("level_id", levelid); sqlParameter.put("level_name", levelName); sqlParameter.put("partnerName", partnerName); sqlParameter.put("resolveTime", resolve_time); sqlParameter.put("responseTime", response_time); sqlParameter.put("customerId", customerId); sqlParameter.put("dealerType", 2); sqlParameter.put("groupId", ""); sqlParameter.put("groupName", ""); sqlParameter.put("userId", user1); sqlParameter.put("userName", userName1); Map result = baseDao.queryForMap(selectSql,new SqlParameter("categoryId",cateId).addValue("levelId", levelid).addValue("customerId", customerId)); String configId = new String(); if(result.size()>0) { String conId = ConvertUtil.obj2StrBlank(result.get("ID")); SqlParameter sqlParameter2 = new SqlParameter(); sqlParameter2.put("configId", conId); configs.add(sqlParameter2); configId = conId; sqlParameter.put("id", configId); paramListUpdateConfig.add(sqlParameter); } else { configId = StringUtil.getUUID(); sqlParameter.put("id", configId); paramListSaveConfig.add(sqlParameter); } for(int i=2; i<=7; i++) { String time = request.getParameter("time"+i); if(StringUtil.notEmpty(time)) { String user = request.getParameter("user"+i); String userName = request.getParameter("userName"+i); SqlParameter param = new SqlParameter(); param.put("id", StringUtil.getUUID()); param.put("level_id",configId); if(i>4) { param.put("notice_type", Constants.SC_SLA_USER_NOTICE_TYPE_RESOLVE_OVERTIME); } else { param.put("notice_type", Constants.SC_SLA_USER_NOTICE_TYPE_ANSWER_OVERTIME); } param.put("over_time", time); param.put("user_id", user); param.put("user_name", userName); param.put("type", "2"); param.put("dealer_type", "2"); param.put("group_id", ""); param.put("group_name", ""); paramList.add(param); } } } } if(configs.size()>0) { String deleteSql2 = "DELETE FROM SC_SLA_USER WHERE LEVEL_ID = :configId"; baseDao.executeBatch(deleteSql2,configs); } if(paramListSaveConfig.size()>0) { String saveSql1 = "INSERT INTO SC_SLA_CONFIG(ID,CATEGORY_ID,CATEGORY_NAME,LEVEL_ID,LEVEL_NAME,RESPONSE_TIME,RESOLVE_TIME,STATE,TYPE,CUSTOMER_ID,USER_ID,USER_NAME,GROUP_ID,GROUP_NAME,DEALER_TYPE) VALUES (" + ":id,:cateId,:category_name,:level_id,:level_name,:responseTime,:resolveTime,1,2,:customerId,:userId,:userName,:groupId,:groupName,2)"; baseDao.executeBatch(saveSql1,paramListSaveConfig); } if(paramListUpdateConfig.size()>0) { String updateSql1 = "UPDATE SC_SLA_CONFIG SET CATEGORY_ID = :cateId,CATEGORY_NAME = :category_name,LEVEL_ID = :level_id,LEVEL_NAME = :level_name,RESPONSE_TIME = :responseTime,RESOLVE_TIME = :resolveTime," + "CUSTOMER_ID = :customerId,USER_ID = :userId,USER_NAME = :userName,GROUP_ID = :groupId,GROUP_NAME = :groupName,DEALER_TYPE = 2 WHERE ID = :id"; baseDao.executeBatch(updateSql1,paramListUpdateConfig); } if(paramList.size()>0) { String sql = "INSERT INTO SC_SLA_USER(ID,LEVEL_ID,NOTICE_TYPE,OVER_TIME,USER_ID,USER_NAME,TYPE,DEALER_TYPE,GROUP_ID,GROUP_NAME) VALUES(:id,:level_id,:notice_type,:over_time,:user_id,:user_name,:type,:dealer_type,:group_id,:group_name)"; baseDao.executeBatch(sql, paramList); } return true; } public List queryTreeList(String customerId,List levels) { String sql="SELECT A.* FROM SC_SERVCE_CATEGORY A,SC_SERVCE_CATEGORY_CUSTOMER B WHERE A.ID = B.CATEGORY_ID AND A.STATE = 1 AND B.STATE = 1 AND B.CUSTOMER_ID = :customerId ORDER BY A.LEVEL,A.SERIAL "; SqlParameter sqlParameter = new SqlParameter("customerId", customerId); List categoryList = baseDao.queryForList(sql,sqlParameter); Map result = new HashMap(); List resultList = new LinkedList(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); Map sjgnCache = new HashMap(); //查询该客户的项目的服务目录的所有负责人信息 String userSql = "SELECT * FROM SC_SERVCE_CATEGORY_USER WHERE CUSTOMER_ID = :customerId "; List users = baseDao.queryForList(userSql,sqlParameter); Map cacheMap = new HashMap(); if(null!=users && users.size()>0) { for(Map user : users) { String cateId = ConvertUtil.obj2StrBlank(user.get("CATEGORY_ID")); String userType = ConvertUtil.obj2StrBlank(user.get("USER_TYPE")); cacheMap.put(cateId+"-"+userType, user); } } //查询级别对应的协议设置 String configSql = "SELECT * FROM SC_SLA_CONFIG WHERE STATE = 1 AND CUSTOMER_ID = :customerId "; List configs = baseDao.queryForList(configSql,sqlParameter); Map cacheConfig = new HashMap(); if(null!=configs && configs.size()>0) { for(Map config : configs) { String categoryId = ConvertUtil.obj2StrBlank(config.get("CATEGORY_ID")); String levelId = ConvertUtil.obj2StrBlank(config.get("LEVEL_ID")); String key = categoryId + "-" + levelId; cacheConfig.put(key, config); } } //查询人员信息 String timeUserSql = "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 ORDER BY A.OVER_TIME "; List timeUsers = baseDao.queryForList(timeUserSql,sqlParameter); Map cacheXyTime = new HashMap(); Map cacheJjTime = new HashMap(); if(null!=timeUsers && timeUsers.size()>0) { for(Map user : timeUsers) { String id = ConvertUtil.obj2StrBlank(user.get("CONFIG_ID")); String noticeType = ConvertUtil.obj2StrBlank(user.get("NOTICE_TYPE")); if(noticeType.equals("1")) { if(cacheXyTime.containsKey(id)) { List list = (List)cacheXyTime.get(id); list.add(user); } else { List list = new ArrayList(); list.add(user); cacheXyTime.put(id, list); } } else { if(cacheJjTime.containsKey(id)) { List list = (List)cacheJjTime.get(id); list.add(user); } else { List list = new ArrayList(); list.add(user); cacheJjTime.put(id, list); } } } } if(null!=categoryList && categoryList.size()>0) { 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")) { String pId = ConvertUtil.obj2StrBlank(map.get("P_ID")); if(yjgnCache.containsKey(pId)) { Map yjgnMap = yjgnCache.get(pId); 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")){ String pId = ConvertUtil.obj2StrBlank(map.get("P_ID")); if(ejgnCache.containsKey(pId)) { String categoryId = ConvertUtil.obj2StrBlank(map.get("ID")); Map ejgnMap = ejgnCache.get(pId); List list = (List)ejgnMap.get("sjTree"); //存放级别配置信息 if(null!=levels && levels.size()>0) { for(Map level : levels) { String levelId = ConvertUtil.obj2StrBlank(level.get("ID")); String key = categoryId + "-" + levelId; String configMsg = "config"+levelId; if(cacheConfig.containsKey(key)) { Map config = (Map)cacheConfig.get(key); String configId = ConvertUtil.obj2StrBlank(config.get("ID")); if(cacheXyTime.containsKey(configId)) { List xys = (List)cacheXyTime.get(configId); while (xys.size()<3) { xys.add(new HashMap()); } config.put("xys", xys); } if(cacheJjTime.containsKey(configId)) { List jjs = (List)cacheJjTime.get(configId); while (jjs.size()<3) { jjs.add(new HashMap()); } config.put("jjs", jjs); } map.put(configMsg, config); } else { map.put(configMsg, new HashMap()); } } } list.add(map); } } } } for(int i = 0;i < resultList.size();i++ ){ List ejlist = (List)resultList.get(i).get("ejTree"); if(ejlist != null){ if(ejlist.size() == 0){ resultList.remove(i); i = i -1 ; }else{ int count = 0; for(int j = 0;j < ejlist.size();j++){ List sjlist = (List)ejlist.get(j).get("sjTree"); if(sjlist != null){ if(sjlist.size() == 0){ ejlist.remove(j); j = j -1 ; resultList.get(i).put("ejTree", ejlist); }else{ count = count + 1; } }else{ ejlist.remove(j); j = j -1 ; resultList.get(i).put("ejTree", ejlist); } } if(count == 0){ resultList.remove(i); i = i -1 ; } } }else{ resultList.remove(i); i = i -1 ; } } int totalNum = 0; //查询三级分类展示成列表的需要占的表格数 for(Map yj : resultList) { int num = 0; List ejList = (List)(yj.get("ejTree")); if(null!=ejList && ejList.size()>0) { for(Map ej :ejList) { List sjList = (List)ej.get("sjTree"); int sjNum = sjList.size(); if(sjNum>0) { num = num+sjNum; ej.put("sjNum", sjNum); } else { num = num+1; ej.put("sjNum", 1); } } } else { num = num+1; } totalNum += num; yj.put("num", num); } } System.out.println(JsonUtil.list2Json(resultList)); return resultList; } @Override public Map getSlaList(HttpServletRequest request) { String cateid = request.getParameter("cateId"); String levelid = request.getParameter("levelid"); String customerId = request.getParameter("customerId"); String sql = "SELECT * FROM SC_SLA_CONFIG WHERE CATEGORY_ID = :category_id AND CUSTOMER_ID = :customer_id AND LEVEL_ID = :level_id AND STATE = :state"; Map param = new HashMap(); param.put("category_id", cateid); param.put("level_id", levelid); param.put("customer_id", customerId); param.put("state", 1); Map slaMap = baseDao.queryForMap(sql, param); String userId = ConvertUtil.obj2StrBlank(slaMap.get("USER_ID")); List users = new ArrayList(); if(StringUtil.notEmpty(userId)) { String[] ids = userId.split(","); String userName = ConvertUtil.obj2StrBlank(slaMap.get("USER_NAME")); String[] names = userName.split(","); for(int i=0; i list = baseDao.queryForList(sqluser, new SqlParameter("level_id",configId)); List userList = new ArrayList(); List userjjList = new ArrayList(); if(null!=list && list.size()>0) { for(Map map : list) { String noticeType = ConvertUtil.obj2StrBlank(map.get("NOTICE_TYPE")); if(noticeType.equals(Constants.SC_SLA_USER_NOTICE_TYPE_ANSWER_OVERTIME)) { userList.add(map); } else { userjjList.add(map); } } } Map xy1 = new HashMap(); Map xy2 = new HashMap(); Map xy3 = new HashMap(); if(null!=userList && userList.size()>0) { if(userList.size()==1) { xy1 = userList.get(0); } else if (userList.size()==2) { xy1 = userList.get(0); xy2 = userList.get(1); } else if (userList.size()==3) { xy1 = userList.get(0); xy2 = userList.get(1); xy3 = userList.get(2); } } if(xy1.size()>0) { String uId = ConvertUtil.obj2StrBlank(xy1.get("USER_ID")); List us = new ArrayList(); if(StringUtil.notEmpty(uId)) { String[] ids = uId.split(","); String userName = ConvertUtil.obj2StrBlank(xy1.get("USER_NAME")); String[] names = userName.split(","); for(int i=0; i0) { String uId = ConvertUtil.obj2StrBlank(xy2.get("USER_ID")); List us = new ArrayList(); if(StringUtil.notEmpty(uId)) { String[] ids = uId.split(","); String userName = ConvertUtil.obj2StrBlank(xy2.get("USER_NAME")); String[] names = userName.split(","); for(int i=0; i0) { String uId = ConvertUtil.obj2StrBlank(xy3.get("USER_ID")); List us = new ArrayList(); if(StringUtil.notEmpty(uId)) { String[] ids = uId.split(","); String userName = ConvertUtil.obj2StrBlank(xy3.get("USER_NAME")); String[] names = userName.split(","); for(int i=0; i0) { if(userjjList.size()==1) { jiej1 = userjjList.get(0); } else if (userjjList.size()==2) { jiej1 = userjjList.get(0); jiej2 = userjjList.get(1); } else if (userjjList.size()==3) { jiej1 = userjjList.get(0); jiej2 = userjjList.get(1); jiej3 = userjjList.get(2); } } if(jiej1.size()>0) { String uId = ConvertUtil.obj2StrBlank(jiej1.get("USER_ID")); List us = new ArrayList(); if(StringUtil.notEmpty(uId)) { String[] ids = uId.split(","); String userName = ConvertUtil.obj2StrBlank(jiej1.get("USER_NAME")); String[] names = userName.split(","); for(int i=0; i0) { String uId = ConvertUtil.obj2StrBlank(jiej2.get("USER_ID")); List us = new ArrayList(); if(StringUtil.notEmpty(uId)) { String[] ids = uId.split(","); String userName = ConvertUtil.obj2StrBlank(jiej2.get("USER_NAME")); String[] names = userName.split(","); for(int i=0; i0) { String uId = ConvertUtil.obj2StrBlank(jiej3.get("USER_ID")); List us = new ArrayList(); if(StringUtil.notEmpty(uId)) { String[] ids = uId.split(","); String userName = ConvertUtil.obj2StrBlank(jiej3.get("USER_NAME")); String[] names = userName.split(","); for(int i=0; i paramList = new ArrayList(); for(int i=2; i<=7; i++) { String time = request.getParameter("time"+i); if(StringUtil.notEmpty(time)) { String user = request.getParameter("user"+i); String userName = request.getParameter("userName"+i); SqlParameter param = new SqlParameter(); param.put("id", StringUtil.getUUID()); param.put("level_id",configId ); if(i>4) { param.put("notice_type", Constants.SC_SLA_USER_NOTICE_TYPE_RESOLVE_OVERTIME); } else { param.put("notice_type", Constants.SC_SLA_USER_NOTICE_TYPE_ANSWER_OVERTIME); } param.put("over_time", time); param.put("user_id", user); param.put("user_name", userName); param.put("type", "2"); param.put("dealer_type", "2"); param.put("group_id", ""); param.put("group_name", ""); paramList.add(param); } } if(paramList.size()>0) { String sql = "INSERT INTO SC_SLA_USER(ID,LEVEL_ID,NOTICE_TYPE,OVER_TIME,USER_ID,USER_NAME,TYPE,DEALER_TYPE,GROUP_ID,GROUP_NAME) VALUES(:id,:level_id,:notice_type,:over_time,:user_id,:user_name,:type,:dealer_type,:group_id,:group_name)"; baseDao.executeBatch(sql, paramList); } //二级等级协议修改,对应三级等级协议清空 if(cate.getLevel() == 2){ String catesql = "SELECT * FROM SC_SERVCE_CATEGORY WHERE P_ID = :p_id "; List cateList = baseDao.queryForList(catesql, new SqlParameter("p_id",cate.getId())); List paramsList = new ArrayList(); for(Map map:cateList){ SqlParameter param = new SqlParameter(); param.put("category_id", map.get("ID")); param.put("level_id", levelid); param.put("customer_id", customerId); paramsList.add(param); } String del = "DELETE FROM SC_SLA_USER WHERE LEVEL_ID = (SELECT ID FROM SC_SLA_CONFIG WHERE CATEGORY_ID = :category_id AND CUSTOMER_ID =:customer_id AND LEVEL_ID = :level_id )"; String delcfg = "DELETE FROM SC_SLA_CONFIG WHERE CATEGORY_ID = :category_id AND CUSTOMER_ID =:customer_id AND LEVEL_ID = :level_id "; baseDao.executeBatch(del, paramsList); baseDao.executeBatch(delcfg, paramsList); } } @Override public Map queryAllUser() { //当前登录加盟商所有用户,包括加盟商 String userSql = "select ID,ZSXM,SSBMBH,LOGINNAME from gg_user where zt=1 order by bmpx asc"; Map param = new HashMap(); List allUserList = baseDao.queryForList(userSql,param); Map resultMap = new HashMap(); resultMap.put("PARTNERLIST", allUserList); //所有部门 String sql = "SELECT * FROM GG_ZZJG WHERE ZT=1 ORDER BY CENGJ ASC,SXH ASC"; List bmList = baseDao.queryForList(sql, new SqlParameter()); List resultList = new LinkedList(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); Map sjgnCache = new HashMap(); for (Map map : bmList) { String level = map.get("CENGJ").toString(); String id = map.get("ID").toString(); //一级树 if (level.equalsIgnoreCase("1")) { yjgnCache.put(id, map); List ejgnList = new LinkedList(); map.put("ejTree", ejgnList); resultList.add(map); continue; } //二级树 if (level.equalsIgnoreCase("2")) { String pId = map.get("SJBH").toString(); if(yjgnCache.containsKey(pId)) { Map yjgnMap = yjgnCache.get(pId); List list = (List)yjgnMap.get("ejTree"); map.put("sjTree", new LinkedList()); list.add(map); ejgnCache.put(id, map); } continue; } //三级树 if (level.equalsIgnoreCase("3")) { if(null!=map.get("SJBH")){ String pId = map.get("SJBH").toString(); if(ejgnCache.containsKey(pId)) { Map ejgnMap = ejgnCache.get(map.get("SJBH").toString()); List list = (List)ejgnMap.get("sjTree"); map.put("fjTree", new LinkedList()); list.add(map); sjgnCache.put(id, map); } } } } resultMap.put("resultList", resultList); return resultMap; } @Override public void updateSla(Map params) { String levelid = params.get("levelid"); String customerId = params.get("customerId"); String id = params.get("id"); String cateId = params.get("cateId"); SC_SERVCE_CATEGORY cate = new SC_SERVCE_CATEGORY(cateId).getInstanceById(); SC_SLA_CONFIG config = new SC_SLA_CONFIG(id); baseDao.execute("DELETE FROM SC_SLA_USER WHERE LEVEL_ID = :id", params); config.deleteById(); //二级等级协议修改,对应三级等级协议清空 if(cate.getLevel() == 2){ String catesql = "SELECT * FROM SC_SERVCE_CATEGORY WHERE P_ID = :cateId "; List cateList = baseDao.queryForList(catesql, params); List paramsList = new ArrayList(); for(Map map:cateList){ SqlParameter param = new SqlParameter(); param.put("category_id", map.get("ID")); param.put("level_id", levelid); param.put("customer_id", customerId); paramsList.add(param); } String del = "DELETE FROM SC_SLA_USER WHERE LEVEL_ID = (SELECT ID FROM SC_SLA_CONFIG WHERE CATEGORY_ID = :category_id AND CUSTOMER_ID =:customer_id AND LEVEL_ID = :level_id )"; String delcfg = "DELETE FROM SC_SLA_CONFIG WHERE CATEGORY_ID = :category_id AND CUSTOMER_ID =:customer_id AND LEVEL_ID = :level_id "; baseDao.executeBatch(del, paramsList); baseDao.executeBatch(delcfg, paramsList); } } @Override public boolean saveUser(HttpServletRequest request) { String cateId = request.getParameter("cateId"); String customerId = request.getParameter("customerId"); Map type = new HashMap(); type.put("1", "一线工程师"); type.put("2", "二线工程师"); type.put("3", "三线工程师"); //查询工单类型 List paramList = new ArrayList(); List result = new ArrayList(); for (Object key : type.keySet()) { String dealer_type = request.getParameter("dealType"+key); if(StringUtil.notEmpty(dealer_type)) { String group_id = request.getParameter("group"+key); String group_name = request.getParameter("groupName"+key); String user_id = new String(); String user_name = new String(); if(dealer_type.equals("2")) { user_id = request.getParameter("user"+key); user_name = request.getParameter("userName"+key); group_id = request.getParameter("roleId"+key); group_name = request.getParameter("roleName"+key); } SqlParameter sqlParameter = new SqlParameter(); sqlParameter.put("id", StringUtil.getUUID()); sqlParameter.put("category_id", cateId); sqlParameter.put("user_type", dealer_type); sqlParameter.put("user_id", user_id); sqlParameter.put("user_name", user_name); sqlParameter.put("group_id", group_id); sqlParameter.put("group_name", group_name); sqlParameter.put("customer_id", customerId); paramList.add(sqlParameter); } } if(null!=paramList && paramList.size()>0) { String deleteSql = "DELETE FROM SC_SERVCE_CATEGORY_USER WHERE CATEGORY_ID = :cateId AND CUSTOMER_ID =:customer_id "; Map paramMap = new HashMap(); paramMap.put("cateId", cateId); paramMap.put("customer_id", customerId); baseDao.execute(deleteSql, paramMap); String insertSql = "INSERT INTO SC_SERVCE_CATEGORY_USER(ID,CATEGORY_ID,USER_TYPE,USER_ID,USER_NAME,GROUP_ID,GROUP_NAME,CUSTOMER_ID) VALUES (:id,:category_id,:user_type,:user_id,:user_name,:group_id,:group_name,:customer_id) "; baseDao.executeBatch(insertSql,paramList); } //二级服务人员修改,对应三级服务人员清空 SC_SERVCE_CATEGORY cate = new SC_SERVCE_CATEGORY(cateId).getInstanceById(); if(cate.getLevel() == 2){ String catesql = "SELECT * FROM SC_SERVCE_CATEGORY WHERE P_ID = :p_id "; List cateList = baseDao.queryForList(catesql, new SqlParameter("p_id",cate.getId())); List paramsList = new ArrayList(); for(Map map:cateList){ SqlParameter param = new SqlParameter(); param.put("category_id", map.get("ID")); param.put("customer_id", customerId); paramsList.add(param); } String del = "DELETE FROM SC_SERVCE_CATEGORY_USER WHERE CATEGORY_ID = :category_id AND CUSTOMER_ID =:customer_id "; baseDao.executeBatch(del, paramsList); } return true; } @Override public void updateSlaUser(Map params) { String customerId = params.get("customerId"); String cateId = params.get("cateId"); SC_SERVCE_CATEGORY cate = new SC_SERVCE_CATEGORY(cateId).getInstanceById(); baseDao.execute("DELETE FROM SC_SERVCE_CATEGORY_USER WHERE CATEGORY_ID = :cateId AND CUSTOMER_ID = :customerId ", params); //二级服务人员修改,对应三级服务人员清空 if(cate.getLevel() == 2){ String catesql = "SELECT * FROM SC_SERVCE_CATEGORY WHERE P_ID = :cateId "; List cateList = baseDao.queryForList(catesql, params); List paramsList = new ArrayList(); for(Map map:cateList){ SqlParameter param = new SqlParameter(); param.put("category_id", map.get("ID")); param.put("customer_id", customerId); paramsList.add(param); } String del = "DELETE FROM SC_SERVCE_CATEGORY_USER WHERE CATEGORY_ID = :category_id AND CUSTOMER_ID = :customer_id "; baseDao.executeBatch(del, paramsList); } } }