| | |
| | | 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.web.WebUtil; |
| | | import cn.ksource.web.Constants; |
| | | import cn.ksource.web.service.file.FileService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.*; |
| | | |
| | | @Service |
| | | public class KmServiceImpl implements KmService { |
| | | |
| | | |
| | | @Autowired |
| | | private BaseDao baseDao; |
| | | |
| | | |
| | | @Autowired |
| | | private FileService fileService; |
| | | |
| | |
| | | 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("1")) { |
| | | yjgnCache.put(map.get("ID").toString(), map); |
| | |
| | | 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; |
| | | } |
| | |
| | | }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"); |
| | | |
| | | sql.append(" WHERE A.STATE=1 GROUP BY A.ID,A.TITLE, A.TAG , A.LEVEL,A.SERIAL 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> list = (List<Map>)yjgnMap.get("ejTree"); |
| | | map.put("sjTree", new LinkedList<Map>()); |
| | | list.add(map); |
| | | |
| | | |
| | | ejgnCache.put(map.get("ID").toString(), map); |
| | | continue; |
| | | } |
| | |
| | | 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("where k.CREATE_USER_ID=:create_user_id "); |
| | | SqlParameter param = new SqlParameter(); |
| | | param.addValue("create_user_id", userId); |
| | | |
| | | |
| | | return baseDao.queryForList(sql.toString(), param); |
| | | } |
| | | |
| | |
| | | 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 "); |
| | |
| | | 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) { |
| | |
| | | } |
| | | sql.append("where k.STATE=1 "); |
| | | sql.append("order by k.CREATE_TIME desc) t "); |
| | | |
| | | |
| | | return baseDao.queryForInteger(sql.toString()); |
| | | } |
| | | |
| | |
| | | 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); |
| | | } |
| | | |
| | |
| | | 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{ |
| | |
| | | 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) { |
| | |
| | | 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); |
| | |
| | | } |
| | | } |
| | | 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 "; |
| | |
| | | //点击排名 |
| | | 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); |
| | |
| | | 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){ |
| | |
| | | } |
| | | } |
| | | 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())); |
| | |
| | | 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 "; |
| | |
| | | //点击排名 |
| | | Map rankMap = this.getLibraryRankForHits(); |
| | | map.put("RANK", rankMap.get(libraryId));*/ |
| | | |
| | | |
| | | return map; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取文库点击排名 |
| | | * @param partnerId |
| | |
| | | */ |
| | | 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; |
| | | } |
| | | |
| | |
| | | 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 { |
| | |
| | | //基本信息 |
| | | 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) { |
| | |
| | | } |
| | | 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; |
| | | } |
| | | |
| | |
| | | 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 "); |
| | | |
| | | StringBuilder sql=new StringBuilder("SELECT A.ID,A.PID,A.TYPE,A.NAME,A.CODE,A.LV,A.SERIAL,A.STATE,A.LV1_ID,A.LV1_NAME,A.LV2_ID,A.LV2_NAME,A.LV3_ID,A.LV3_NAME,A.FULL_ID,A.FULL_NAME,A.CATE_TYPE,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"); |
| | | sql.append(" WHERE A.STATE = 1 and a.cate_type=1 GROUP BY A.ID,A.PID,A.TYPE,A.NAME,A.CODE,A.LV,A.SERIAL,A.STATE,A.LV1_ID,A.LV1_NAME,A.LV2_ID,A.LV2_NAME,A.LV3_ID,A.LV3_NAME,A.FULL_ID,A.FULL_NAME,A.CATE_TYPE 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> list = (List<Map>)yjgnMap.get("ejTree"); |
| | | map.put("sjTree", new LinkedList<Map>()); |
| | | list.add(map); |
| | | |
| | | |
| | | ejgnCache.put(map.get("ID").toString(), map); |
| | | continue; |
| | | } |
| | |
| | | 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); |
| | |
| | | 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 ("); |
| | | StringBuffer sql = new StringBuffer("SELECT D.ID,D.CATEGORY_CODE,D.CATEGORY_NAME,D.LEVEL,D.P_ID,D.STATE,D.SERIAL,D.TYPE, D.PHOTOPATH,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"); |
| | | sql.append(" GROUP BY D.ID,D.CATEGORY_CODE,D.CATEGORY_NAME,D.LEVEL,D.P_ID,D.STATE,D.SERIAL,D.TYPE, D.PHOTOPATH 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> list = (List<Map>)yjgnMap.get("ejTree"); |
| | | map.put("sjTree", new LinkedList<Map>()); |
| | | list.add(map); |
| | | |
| | | |
| | | ejgnCache.put(map.get("ID").toString(), map); |
| | | continue; |
| | | } |
| | |
| | | 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); |