package cn.ksource.web.service.knowledge;
|
|
|
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.KM_LIBRARY;
|
import cn.ksource.beans.KM_LIBRARY_FAVORITE;
|
import cn.ksource.beans.KM_LIBRARY_TEMP;
|
import cn.ksource.core.dao.BaseDao;
|
import cn.ksource.core.dao.SqlParameter;
|
import cn.ksource.core.util.ConvertUtil;
|
import cn.ksource.core.util.DateUtil;
|
import cn.ksource.core.util.StringUtil;
|
import cn.ksource.core.web.WebUtil;
|
import cn.ksource.web.Constants;
|
import cn.ksource.web.service.file.FileService;
|
|
@Service
|
public class KmServiceImpl implements KmService {
|
|
@Autowired
|
private BaseDao baseDao;
|
|
@Autowired
|
private FileService fileService;
|
|
@Override
|
public List<Map> getCategoryList(HttpServletRequest request) {
|
StringBuffer sql=new StringBuffer(" SELECT A.*,COUNT(B.ID) AS NUM FROM KM_LIBRARY_CATEGORY A LEFT JOIN KM_LIBRARY B ON A.ID = B.CATEGORY_ID and B.STATE = 1 WHERE A.STATE=1 ");
|
sql.append(" GROUP BY A.ID ORDER BY A.LEVEL,A.SERIAL,A.TITLE");
|
List<Map> categoryList = baseDao.queryForList(sql.toString());
|
|
|
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("2")) {
|
for(Map map1 : categoryList){
|
int num = ConvertUtil.obj2Int(map.get("NUM"));
|
if(map.get("ID").equals(map1.get("TAG"))){
|
num += ConvertUtil.obj2Int(map1.get("NUM"));
|
map.put("NUM", num);
|
}
|
}
|
}
|
}
|
for (Map map : categoryList) {
|
for(Map map1 : categoryList){
|
if (map.get("LEVEL").toString().equalsIgnoreCase("1")) {
|
int num = ConvertUtil.obj2Int(map.get("NUM"));
|
if(map.get("ID").equals(map1.get("TAG"))){
|
num += ConvertUtil.obj2Int(map1.get("NUM"));
|
map.put("NUM", num);
|
}
|
}
|
}
|
}
|
|
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("TAG").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("TAG")){
|
Map ejgnMap = ejgnCache.get(map.get("TAG").toString());
|
List<Map> list = (List<Map>)ejgnMap.get("sjTree");
|
list.add(map);
|
}
|
}
|
}
|
return resultList;
|
}
|
|
@Override
|
public int getKnowByProId(HttpServletRequest request) {
|
String userId = WebUtil.getLoginedUserId(request);
|
String cusId = request.getParameter("cusId");
|
StringBuilder sql = new StringBuilder("SELECT COUNT(A.ID) FROM KM_LIBRARY A,KM_LIBRARY_CATEGORY B ");
|
if(!StringUtil.isEmpty(cusId)){
|
sql.append(" ,KM_LIBRARY_KNOWLEDGE_ACCESS D ");
|
}
|
sql.append("WHERE A.STATE = 1 AND A.CATEGORY_ID = B.ID ");
|
if(!StringUtil.isEmpty(cusId)){
|
sql.append(" AND A.ID = D.KNOWLEDGE_ID AND D.CUSTOMER_ID = :cusId ");
|
}
|
return baseDao.queryForInteger(sql.toString(), new SqlParameter().addValue("userId",userId ).addValue("cusId", cusId));
|
}
|
|
@Override
|
public List<Map> queryLibraryCategoryList(HttpServletRequest request) {
|
String category_id = request.getParameter("category_id");
|
String cusId = request.getParameter("cusId");
|
StringBuilder sql=new StringBuilder(" SELECT A.ID,A.TITLE,A.TAG P_ID,A.LEVEL,COUNT(B.ID) AS NUM FROM KM_LIBRARY_CATEGORY A LEFT JOIN ");
|
if(StringUtil.isEmpty(cusId)){
|
sql.append(" KM_LIBRARY B ON A.ID = B.CATEGORY_ID and B.STATE = 1");
|
}else{
|
sql.append(" (SELECT C.* FROM KM_LIBRARY C,KM_LIBRARY_KNOWLEDGE_ACCESS D WHERE C.ID = D.KNOWLEDGE_ID AND D.CUSTOMER_ID = :cusId) B ON A.ID = B.CATEGORY_ID and B.STATE = 1");
|
}
|
sql.append(" WHERE A.STATE=1 GROUP BY A.ID ORDER BY A.LEVEL,A.SERIAL,A.TITLE");
|
|
List<Map> categoryList = baseDao.queryForList(sql.toString(),new SqlParameter("cusId",cusId));
|
|
List<Map> resultList = new LinkedList<Map>();
|
|
String firstCate = "";
|
String secondCate = "";
|
|
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(!StringUtil.isEmpty(category_id)&&category_id.equals(map.get("ID"))){
|
map.put("select", 1);
|
}
|
if(null!=map.get("P_ID")){
|
Map ejgnMap = ejgnCache.get(map.get("P_ID").toString());
|
List<Map> list = (List<Map>)ejgnMap.get("sjTree");
|
list.add(map);
|
}
|
|
|
}
|
}
|
|
return resultList;
|
}
|
|
@Override
|
public List<Map> getmyFavourite(String userId) {
|
StringBuilder sql = new StringBuilder();
|
sql.append("select * ");
|
sql.append("from KM_LIBRARY_FAVORITE k ");
|
sql.append("where k.CREATE_USER_ID=:create_user_id ");
|
SqlParameter param = new SqlParameter();
|
param.addValue("create_user_id", userId);
|
|
return baseDao.queryForList(sql.toString(), param);
|
}
|
|
@Override
|
public List<Map> queryLibraryByKey(HttpServletRequest request) {
|
String userId = WebUtil.getLoginedUserId(request);
|
String cusId = request.getParameter("cusId");
|
String pageIndex = request.getParameter("currPage");
|
String pageSize = request.getParameter("pageSize");
|
if(!StringUtil.notEmptyNum(pageSize)){
|
pageSize = "5";
|
}
|
if(!StringUtil.notEmptyNum(pageIndex)){
|
pageIndex = "1";
|
}
|
StringBuilder sql = new StringBuilder();
|
sql.append("select t.ID,t.TITLE,t.TAG,t.CATEGORY_ID,t.SUMMARY,t.CREATE_TIME,t.CREATE_USER_NAME,t.IS_EDITOR,t.STATE from ( ");
|
sql.append("select DISTINCT k.ID,k.TITLE,k.TAG,k.SUMMARY,k.CREATE_TIME,k.CREATE_USER_NAME,k.CATEGORY_ID,k.IS_EDITOR,p.STATE ");
|
|
if(StringUtil.isEmpty(cusId)){
|
sql.append("from km_library k ");
|
}else{
|
sql.append("from (SELECT A.* FROM KM_LIBRARY A,KM_LIBRARY_KNOWLEDGE_ACCESS B WHERE A.ID = B.KNOWLEDGE_ID AND B.CUSTOMER_ID = :cusId ) k ");
|
}
|
|
sql.append(" LEFT JOIN KM_LIBRARY_TEMP p on p.ORIGINAL_ID = k.ID where k.STATE=1 ");
|
sql.append("order by k.CREATE_TIME desc) t ");
|
sql.append("limit :limit1,:limit2 ");
|
int begin = Integer.valueOf(pageIndex);
|
int size = Integer.valueOf(pageSize);
|
SqlParameter param = new SqlParameter();
|
param.addValue("userId", userId);
|
param.addValue("cusId", cusId);
|
param.addValue("limit1", (begin-1)*size);
|
param.addValue("limit2", size);
|
|
List<Map> list = baseDao.queryForList(sql.toString(), param);
|
List<Map> mylist = getmyFavourite(userId);
|
for (Map map : list) {
|
for(Map mymap :mylist){
|
if(map.get("ID").equals(mymap.get("LIBRARY_ID"))){
|
map.put("favourite", 1);
|
}
|
}
|
map.put("CREATE_TIME", DateUtil.format("yyyy-MM-dd HH:mm:ss", map.get("CREATE_TIME")));
|
//标签
|
String tag = ConvertUtil.obj2Str(map.get("TAG"));
|
if (tag != null) {
|
map.put("tag_list", tag.split("\\s"));
|
}
|
}
|
return list;
|
}
|
|
@Override
|
public int queryLibraryCount(HttpServletRequest request) {
|
String cusId = request.getParameter("cusId");
|
StringBuilder sql = new StringBuilder();
|
sql.append(" select count(t.ID) from (select DISTINCT k.ID ");
|
if(StringUtil.isEmpty(cusId)){
|
sql.append("from km_library k ");
|
}else{
|
sql.append("from (SELECT A.* FROM KM_LIBRARY A,KM_LIBRARY_KNOWLEDGE_ACCESS B WHERE A.ID = B.KNOWLEDGE_ID AND B.CUSTOMER_ID = :cusId ) k ");
|
}
|
sql.append("where k.STATE=1 ");
|
sql.append("order by k.CREATE_TIME desc) t ");
|
|
return baseDao.queryForInteger(sql.toString());
|
}
|
|
@Override
|
public int queryLibraryCountForMapByCategoryId(HttpServletRequest request,
|
int treetype) {
|
String userId = WebUtil.getLoginedUserId(request);
|
String categoryId = request.getParameter("categoryId");
|
String cusId = request.getParameter("cusId");
|
StringBuilder sql = new StringBuilder();
|
sql.append(" select count(t.ID) from (select DISTINCT k.ID ");
|
if(StringUtil.isEmpty(cusId)){
|
sql.append("from km_library k ");
|
}else{
|
sql.append("from (SELECT A.* FROM KM_LIBRARY A,KM_LIBRARY_KNOWLEDGE_ACCESS B WHERE A.ID = B.KNOWLEDGE_ID AND B.CUSTOMER_ID = :cusId ) k ");
|
}
|
sql.append("where k.STATE=1 ");
|
if(treetype == 1){
|
sql.append("and k.CATEGORY_ID=:category_id ");
|
}else if(treetype == 2){
|
sql.append("and k.THIRDLEVEL_ID=:category_id ");
|
}else{
|
sql.append("and k.THIRD_CATEGORY_ID=:category_id ");
|
}
|
sql.append("order by k.CREATE_TIME desc) t ");
|
|
SqlParameter param = new SqlParameter();
|
param.addValue("category_id", categoryId);
|
param.addValue("userId", userId);
|
param.addValue("cusId", cusId);
|
|
return baseDao.queryForInteger(sql.toString(), param);
|
}
|
|
@Override
|
public List<Map> queryLibraryForMapByCategoryId(HttpServletRequest request,
|
int treetype) {
|
String userId = WebUtil.getLoginedUserId(request);
|
String categoryId = request.getParameter("categoryId");
|
String cusId = request.getParameter("cusId");
|
String pageIndex = request.getParameter("currPage");
|
String pageSize = request.getParameter("pageSize");
|
if(!StringUtil.notEmptyNum(pageSize)){
|
pageSize = "5";
|
}
|
if(!StringUtil.notEmptyNum(pageIndex)){
|
pageIndex = "1";
|
}
|
StringBuilder sql = new StringBuilder();
|
sql.append("select t.ID,t.TITLE,t.TAG,t.SUMMARY,t.CREATE_TIME,t.CREATE_USER_NAME,t.IS_EDITOR,t.STATE from ( ");
|
sql.append("select DISTINCT k.ID,k.TITLE,k.TAG,k.SUMMARY,k.CREATE_TIME,k.CREATE_USER_NAME,k.IS_EDITOR,p.STATE ");
|
|
if(StringUtil.isEmpty(cusId)){
|
sql.append("from km_library k ");
|
}else{
|
sql.append("from (SELECT A.* FROM KM_LIBRARY A,KM_LIBRARY_KNOWLEDGE_ACCESS B WHERE A.ID = B.KNOWLEDGE_ID AND B.CUSTOMER_ID = :cusId ) k ");
|
}
|
sql.append(" LEFT JOIN KM_LIBRARY_TEMP p on p.ORIGINAL_ID = k.ID where k.STATE=1 ");
|
if(treetype == 1){
|
sql.append("and k.CATEGORY_ID=:category_id ");
|
}else if(treetype == 2){
|
sql.append("and k.THIRDLEVEL_ID=:category_id ");
|
}else{
|
sql.append("and k.THIRD_CATEGORY_ID=:category_id ");
|
}
|
sql.append("order by k.CREATE_TIME desc) t ");
|
sql.append("limit :limit1,:limit2 ");
|
int begin = Integer.valueOf(pageIndex);
|
int size = Integer.valueOf(pageSize);
|
SqlParameter param = new SqlParameter();
|
param.addValue("limit1", (begin-1)*size);
|
param.addValue("limit2", size);
|
param.addValue("category_id", categoryId);
|
param.addValue("userId", userId);
|
param.addValue("cusId", cusId);
|
|
List<Map> list = baseDao.queryForList(sql.toString(), param);
|
List<Map> mylist = getmyFavourite(userId);
|
for (Map map : list) {
|
for(Map mymap :mylist){
|
if(map.get("ID").equals(mymap.get("LIBRARY_ID"))){
|
map.put("favourite", 1);
|
}
|
}
|
map.put("CREATE_TIME", DateUtil.format("yyyy-MM-dd HH:mm:ss", map.get("CREATE_TIME")));
|
//标签
|
String tag = ConvertUtil.obj2Str(map.get("TAG"));
|
if (tag != null) {
|
String[] tags = tag.split("\\s");
|
List<String> tagList = new ArrayList();
|
for(int i=0;i<tags.length;i++){
|
if(!StringUtil.isEmpty(tags[i])){
|
tagList.add(tags[i]);
|
}
|
}
|
map.put("tag_list", tagList);
|
}
|
}
|
return list;
|
}
|
|
@SuppressWarnings("rawtypes")
|
@Override
|
public Map getLibraryById(String libraryId, HttpServletRequest request) {
|
String userId = WebUtil.getLoginedUserId(request);
|
//基本信息
|
StringBuilder sql = new StringBuilder("select k.*,p.STATE as P_STATE ");
|
sql.append("from km_library k LEFT JOIN KM_LIBRARY_TEMP p on p.ORIGINAL_ID = k.ID ");
|
sql.append(" WHERE k.ID = :id ");
|
SqlParameter param = new SqlParameter();
|
param.addValue("id", libraryId);
|
|
Map map = baseDao.queryForMap(sql.toString(), param);
|
List<Map> mylist = getmyFavourite(userId);
|
List<Map> myrecord = getmyknowRecord(userId);
|
for(Map mymap :mylist){
|
if(map.get("ID").equals(mymap.get("LIBRARY_ID"))){
|
map.put("favourite", 1);
|
}
|
}
|
for(Map mymap :myrecord){
|
if(map.get("ID").equals(mymap.get("LIBRARY_ID"))){
|
if(ConvertUtil.obj2Integer(mymap.get("TYPE")) == Constants.KM_SCORE_RULE_TYPE_D){
|
map.put("zan", 1);
|
}
|
if(ConvertUtil.obj2Integer(mymap.get("TYPE")) == Constants.KM_SCORE_RULE_TYPE_C){
|
map.put("cai", 1);
|
}
|
}
|
}
|
//标签
|
String tag = ConvertUtil.obj2Str(map.get("TAG"));
|
if (tag != null) {
|
String[] tags = tag.split("\\s");
|
List<String> tagList = new ArrayList();
|
for(int i=0;i<tags.length;i++){
|
if(!StringUtil.isEmpty(tags[i])){
|
tagList.add(tags[i]);
|
}
|
}
|
map.put("tag_list", tagList);
|
|
}
|
|
//附件
|
map.put("file_list", fileService.getFileList(ConvertUtil.obj2StrBlank(map.get("FILE_ID"))));
|
|
|
//知识关联
|
String linksql = "select B.ID,B.TITLE from KM_LIBRARY_KNOWLEDGE A,KM_LIBRARY B where A.KNOWLEDGE_ID = B.ID AND A.LIBRARY_ID=:library_id ";
|
List<Map> linkList = baseDao.queryForList(linksql, new SqlParameter("library_id", libraryId));
|
map.put("link_list", linkList);
|
|
//历史版本列表
|
String historySql = "select ID,VERSION,CREATE_USER_NAME,CREATE_TIME from KM_LIBRARY_HISTORY "
|
+"where ORIGINAL_ID=:original_id and STATE=1 order by VERSION ";
|
List<Map> historyList = baseDao.queryForList(historySql, new SqlParameter("original_id", libraryId));
|
map.put("historyList", historyList);
|
//点击排名
|
Map rankMap = this.getLibraryRankForHits();
|
map.put("RANK", rankMap.get(libraryId));
|
|
return map;
|
}
|
|
@Override
|
public Map getLibraryZjbById(String libraryId, HttpServletRequest request) {
|
String userId = WebUtil.getLoginedUserId(request);
|
//基本信息
|
StringBuilder sql = new StringBuilder("select k.* ");
|
sql.append("from KM_LIBRARY_TEMP k ");
|
sql.append(" WHERE k.ID = :id ");
|
SqlParameter param = new SqlParameter();
|
param.addValue("id", libraryId);
|
|
Map map = baseDao.queryForMap(sql.toString(), param);
|
List<Map> mylist = getmyFavourite(userId);
|
for(Map mymap :mylist){
|
if(map.get("ID").equals(mymap.get("LIBRARY_ID"))){
|
map.put("favourite", 1);
|
}
|
}
|
//标签
|
String tag = ConvertUtil.obj2Str(map.get("TAG"));
|
if (tag != null) {
|
String[] tags = tag.split("\\s");
|
List<String> tagList = new ArrayList();
|
for(int i=0;i<tags.length;i++){
|
if(!StringUtil.isEmpty(tags[i])){
|
tagList.add(tags[i]);
|
}
|
}
|
map.put("tag_list", tagList);
|
|
}
|
|
//附件
|
map.put("file_list", fileService.getFileList(ConvertUtil.obj2StrBlank(map.get("ID"))));
|
|
|
//知识关联
|
String linksql = "select B.ID,B.TITLE from KM_LIBRARY_KNOWLEDGE A,KM_LIBRARY B where A.KNOWLEDGE_ID = B.ID AND A.LIBRARY_ID=:library_id ";
|
List<Map> linkList = baseDao.queryForList(linksql, new SqlParameter("library_id", new KM_LIBRARY_TEMP(libraryId).getInstanceById().getOriginal_id()));
|
if(linkList.size()==0){
|
linkList = baseDao.queryForList(linksql, new SqlParameter("library_id", libraryId));
|
}
|
map.put("link_list", linkList);
|
|
/*//历史版本列表
|
String historySql = "select ID,VERSION from KM_LIBRARY_HISTORY "
|
+"where ORIGINAL_ID=:original_id and STATE=1 order by VERSION ";
|
List<Map> historyList = baseDao.queryForList(historySql, new SqlParameter("original_id", libraryId));
|
map.put("historyList", historyList);
|
//点击排名
|
Map rankMap = this.getLibraryRankForHits();
|
map.put("RANK", rankMap.get(libraryId));*/
|
|
return map;
|
}
|
|
/**
|
* 获取文库点击排名
|
* @param partnerId
|
* @return key=library_id,value=rank
|
*/
|
private Map getLibraryRankForHits() {
|
Map resultMap = new HashMap();
|
|
String sql = "select ID,HITS from km_library where STATE=1 order by HITS desc ";
|
|
List<Map> list = baseDao.queryForList(sql);
|
if (list != null && list.size() > 0) {
|
for (int i=0; i<list.size(); i++) {
|
resultMap.put(list.get(i).get("ID"), i+1);
|
}
|
}
|
|
return resultMap;
|
}
|
|
@Override
|
public boolean addMyLibraryFavourite(String libraryId, String userId) {
|
KM_LIBRARY_FAVORITE fav = new KM_LIBRARY_FAVORITE().setLibrary_id(libraryId)
|
.setCreate_user_id(userId).queryForBean();
|
|
if (fav != null && fav.getCreate_time() > 0) {
|
return false;//不重复收藏
|
} else {
|
new KM_LIBRARY_FAVORITE().setLibrary_id(libraryId)
|
.setCreate_user_id(userId)
|
.setCreate_time(DateUtil.getCurrentDate14())
|
.insert();
|
return true;
|
}
|
}
|
|
@Override
|
public Map getHistoryById(String historyId) {
|
//基本信息
|
StringBuilder sql = new StringBuilder("select ID,TITLE,TAG,SUMMARY,CONTENT,CATEGORY_ID,CATEGORY_NAME,CREATE_USER_ID,CREATE_USER_NAME,CREATE_TIME,VERSION,HITS,STATE,FILE_ID ");
|
sql.append("from km_library_history where ID=:id ");
|
|
SqlParameter param = new SqlParameter();
|
param.addValue("id", historyId);
|
|
Map map = baseDao.queryForMap(sql.toString(), param);
|
|
//标签
|
String tag = ConvertUtil.obj2Str(map.get("TAG"));
|
if (tag != null) {
|
String[] tags = tag.split("\\s");
|
List<String> tagList = new ArrayList();
|
for(int i=0;i<tags.length;i++){
|
if(!StringUtil.isEmpty(tags[i])){
|
tagList.add(tags[i]);
|
}
|
}
|
map.put("tag_list", tagList);
|
}
|
|
//附件
|
map.put("file_list", fileService.getFileList(ConvertUtil.obj2StrBlank(map.get("FILE_ID"))));
|
|
|
//知识关联
|
String linksql = "select B.ID,B.TITLE from KM_LIBRARY_KNOWLEDGE_TEMP A,KM_LIBRARY B where A.KNOWLEDGE_ID = B.ID AND A.LIBRARY_ID=:library_id ";
|
List<Map> linkList = baseDao.queryForList(linksql, new SqlParameter("library_id", historyId));
|
map.put("link_list", linkList);
|
|
|
return map;
|
}
|
|
@Override
|
public Map thirdlevelListTree(HttpServletRequest request) {
|
String category_id = request.getParameter("category_id");
|
String cusId = request.getParameter("cusId");
|
StringBuilder sql=new StringBuilder("SELECT A.* ,COUNT(B.ID) AS NUM FROM CMDB_CI_CATEGORY A LEFT JOIN ");
|
|
if(StringUtil.isEmpty(cusId)){
|
sql.append(" KM_LIBRARY B ON A.ID = B.THIRDLEVEL_ID AND B.STATE = 1 ");
|
}else{
|
sql.append(" (SELECT C.* FROM KM_LIBRARY C,KM_LIBRARY_KNOWLEDGE_ACCESS D WHERE C.ID = D.KNOWLEDGE_ID AND D.CUSTOMER_ID = :cusId) B ON A.ID = B.THIRDLEVEL_ID and B.STATE = 1");
|
}
|
sql.append(" WHERE A.STATE = 1 and a.cate_type=1 GROUP BY A.ID ORDER BY A.LV,A.SERIAL,A.NAME");
|
List<Map> categoryList = baseDao.queryForList(sql.toString(),new SqlParameter("cusId",cusId));
|
|
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("LV").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("LV").toString().equalsIgnoreCase("2")) {
|
Map yjgnMap = yjgnCache.get(map.get("PID").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("LV").toString().equalsIgnoreCase("3")) {
|
if(!StringUtil.isEmpty(category_id)&&category_id.equals(map.get("ID"))){
|
map.put("select", 1);
|
}
|
if(null!=map.get("PID")){
|
|
Map ejgnMap = ejgnCache.get(map.get("PID").toString());
|
List<Map> list = (List<Map>)ejgnMap.get("sjTree");
|
list.add(map);
|
}
|
}
|
}
|
Map resultMap = new HashMap();
|
resultMap.put("categoryList", resultList);
|
return resultMap;
|
}
|
|
@Override
|
public Map serviceListTree(HttpServletRequest request) {
|
String category_id = request.getParameter("category_id");
|
String cusId = request.getParameter("cusId");
|
String type = request.getParameter("type");
|
StringBuffer sql = new StringBuffer("SELECT D.*,COUNT(B.ID) AS NUM FROM (");
|
String sqlpart="SELECT * FROM SC_SERVCE_CATEGORY WHERE STATE = 1 AND TYPE = 2 ORDER BY LEVEL,SERIAL ";
|
sql.append(sqlpart);
|
sql.append(" ) D LEFT JOIN ");
|
|
if(StringUtil.isEmpty(cusId)){
|
sql.append(" KM_LIBRARY B ON D.ID = B.THIRD_CATEGORY_ID and B.STATE = 1 ");
|
}else{
|
sql.append(" (SELECT C.* FROM KM_LIBRARY C,KM_LIBRARY_KNOWLEDGE_ACCESS D WHERE C.ID = D.KNOWLEDGE_ID AND D.CUSTOMER_ID = :cusId) B ON D.ID = B.THIRD_CATEGORY_ID and B.STATE = 1");
|
}
|
sql.append(" GROUP BY D.ID ORDER BY D.LEVEL,D.SERIAL,D.CATEGORY_NAME");
|
List<Map> categoryList = baseDao.queryForList(sql.toString(),new SqlParameter("cusId",cusId));
|
|
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(!StringUtil.isEmpty(category_id)&&category_id.equals(map.get("ID"))){
|
map.put("select", 1);
|
}
|
if(null!=map.get("P_ID")){
|
|
Map ejgnMap = ejgnCache.get(map.get("P_ID").toString());
|
List<Map> list = (List<Map>)ejgnMap.get("sjTree");
|
list.add(map);
|
}
|
}
|
}
|
Map resultMap = new HashMap();
|
resultMap.put("categoryList", resultList);
|
return resultMap;
|
}
|
|
@Override
|
public List<Map> getmyknowRecord(String userId) {
|
String sql = "SELECT * FROM KM_RECORD WHERE CREATE_USER_ID = :userId ";
|
return baseDao.queryForList(sql,new SqlParameter("userId",userId));
|
}
|
|
|
|
|
}
|