cy
2022-06-22 425675051e544cf29b2132615cfbf7a93dc5e51f
src/cn/ksource/web/service/knowledge/KmServiceImpl.java
@@ -1,18 +1,6 @@
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;
@@ -23,13 +11,18 @@
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;
@@ -38,10 +31,10 @@
        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>();
@@ -67,9 +60,9 @@
            }
         }
      }
      for (Map map : categoryList) {
         //一级树
         if (map.get("LEVEL").toString().equalsIgnoreCase("1")) {
            yjgnCache.put(map.get("ID").toString(), map);
@@ -84,7 +77,7 @@
            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;
         }
@@ -125,21 +118,21 @@
      }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);
@@ -154,7 +147,7 @@
            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;
         }
@@ -168,14 +161,14 @@
               List<Map> list = (List<Map>)ejgnMap.get("sjTree");
               list.add(map);
            }
         }
      }
      return resultList;
   }
   @Override
   public List<Map> getmyFavourite(String userId) {
      StringBuilder sql = new StringBuilder();
@@ -184,7 +177,7 @@
      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);
   }
@@ -203,13 +196,13 @@
      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 ");
@@ -220,7 +213,7 @@
      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) {
@@ -251,7 +244,7 @@
      }
      sql.append("where k.STATE=1   ");
      sql.append("order by k.CREATE_TIME desc) t ");
      return baseDao.queryForInteger(sql.toString());
   }
@@ -277,12 +270,12 @@
         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);
   }
@@ -303,7 +296,7 @@
      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{
@@ -327,7 +320,7 @@
      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) {
@@ -363,7 +356,7 @@
      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);
@@ -393,18 +386,18 @@
            }
         }
         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 ";
@@ -413,10 +406,10 @@
      //点击排名
      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);
@@ -426,7 +419,7 @@
      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){
@@ -445,13 +438,13 @@
            }
         }
         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()));
@@ -459,7 +452,7 @@
         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 ";
@@ -468,10 +461,10 @@
      //点击排名
      Map rankMap = this.getLibraryRankForHits();
      map.put("RANK", rankMap.get(libraryId));*/
      return map;
   }
   /**
    * 获取文库点击排名
    * @param partnerId
@@ -479,16 +472,16 @@
    */
   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;
   }
@@ -496,7 +489,7 @@
   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 {
@@ -513,12 +506,12 @@
      //基本信息
      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) {
@@ -531,17 +524,17 @@
         }
         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;
   }
@@ -549,26 +542,26 @@
   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);
@@ -583,7 +576,7 @@
            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;
         }
@@ -593,7 +586,7 @@
               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);
@@ -610,29 +603,29 @@
      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);
@@ -647,7 +640,7 @@
            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;
         }
@@ -657,7 +650,7 @@
               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);