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<Map> 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<Map> resultList = new LinkedList<Map>();
|
|
Map<String, Map> yjgnCache = new HashMap<String, Map>();
|
Map<String, Map> ejgnCache = new HashMap<String, Map>();
|
Map<String, Map> sjgnCache = new HashMap<String, Map>();
|
|
for (Map map : categoryList) {
|
|
//一级树
|
if (map.get("LEVEL").toString().equalsIgnoreCase("1")) {
|
yjgnCache.put(map.get("ID").toString(), map);
|
List<Map> ejgnList = new LinkedList<Map>();
|
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<Map> list = (List<Map>)yjgnMap.get("ejTree");
|
map.put("sjTree", new LinkedList<Map>());
|
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<Map> list = (List<Map>)ejgnMap.get("sjTree");
|
list.add(map);
|
}
|
}
|
}
|
for (Map map : resultList) {
|
List<Map> ejlist = (List<Map>)map.get("ejTree");
|
if(ejlist != null){
|
if(ejlist.size() == 0){
|
map.put("nodata", 0);
|
}else{
|
int count = 0;
|
for(Map map1 :ejlist){
|
List<Map> sjlist = (List<Map>)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<ServiceUser> serviceUsers = getServiceUser(customerId,cateId);
|
|
//slaEntity.setServiceUsers(serviceUsers);
|
|
List<SLALevel> levels = getLevels(customerId,cateId);
|
//查询该加盟商的响应信息
|
slaEntity.setLevels(levels);
|
|
|
return slaEntity;
|
}
|
|
/**
|
* 查询级别信息
|
*/
|
private List<SLALevel> 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<Map> 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<SLALevel> levels = new ArrayList<SLALevel>();
|
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<Map> 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<NoticeUser> respUsers = (List<NoticeUser>)responseUser.get(configId);
|
level.setResponseNotices(respUsers);
|
} else {
|
level.setResponseNotices(null);
|
}
|
|
|
if(resolveUser.containsKey(configId)) {
|
List<NoticeUser> resolveUsers = (List<NoticeUser>)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;
|
}
|
|
}
|