package cn.ksource.web.facade.wechat.uwyw; 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.page.PageInfo; import cn.ksource.core.util.ConvertUtil; import cn.ksource.core.util.StringUtil; import cn.ksource.core.web.ClientUtil; import cn.ksource.web.service.file.FileService; @Service("uknowledgeFacade") public class UknowledgeFacadeImpl implements UknowledgeFacade { @Autowired private BaseDao baseDao; @Autowired private FileService fileService; @Override public Integer queryProNewKwCount(Map params) { StringBuilder sql = new StringBuilder("SELECT COUNT(DISTINCT K.ID) FROM KM_LIBRARY K WHERE K.STATE=1 AND ID IN (SELECT KNOWLEDGE_ID FROM KM_LIBRARY_KNOWLEDGE_ACCESS WHERE CUSTOMER_ID = :userId) "); return baseDao.queryForInteger(sql.toString(),params); } @Override public PageInfo queryProNewKwData(PageInfo pageInfo, Map params) { StringBuilder sql = new StringBuilder("SELECT K.* FROM KM_LIBRARY K WHERE K.STATE=1 AND ID IN (SELECT KNOWLEDGE_ID FROM KM_LIBRARY_KNOWLEDGE_ACCESS WHERE CUSTOMER_ID = :userId) "); sql.append(" ORDER BY K.UPDATE_DATE DESC "); PageInfo info = baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params); List datas = info.getDatas(); if(datas.size()>0){ for(Map map:datas){ List fileList = fileService.getFileList(ConvertUtil.obj2StrBlank(map.get("FILE_ID")),1); if(fileList.size() > 0){ map.put("isfiles", "1"); }else{ map.put("isfiles", "0"); } } } info.setDatas(datas); return info; } @Override public Map companyCiCate(String pid) { StringBuffer sql=new StringBuffer("SELECT A.ID,A.NAME,A.CODE,A.LV JB,A.PID FROM CMDB_CI_CATEGORY A WHERE A.STATE = 1 and a.cate_type=1 "); Map paraMap = new HashMap(); if(StringUtil.isEmpty(pid)){ sql.append(" AND A.LV = 1 "); } sql.append(" ORDER BY A.LV,A.SERIAL "); List categoryList = baseDao.queryForList(sql.toString(),paraMap); if(!StringUtil.isEmpty(pid)){ List resultList = new LinkedList(); Map cacheMap = new HashMap(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); for (Map map : categoryList) { //一级树 if (map.get("JB").toString().equalsIgnoreCase("2") && pid.equals(map.get("PID"))) { cacheMap.put(map.get("ID"), map); yjgnCache.put(map.get("ID").toString(), map); List ejgnList = new LinkedList(); map.put("ejTree", ejgnList); resultList.add(map); continue; } //二级树 if (map.get("JB").toString().equalsIgnoreCase("3") && cacheMap.containsKey(map.get("PID"))) { Map yjgnMap = yjgnCache.get(map.get("PID").toString()); List list = (List)yjgnMap.get("ejTree"); list.add(map); ejgnCache.put(map.get("ID").toString(), map); continue; } } categoryList = resultList; } Map resultMap = new HashMap(); resultMap.put("datas", categoryList); resultMap.put("flag", 0); resultMap.put(ClientUtil.SUCCESS, true); resultMap.put(ClientUtil.MSG, "成功"); return resultMap; } @Override public List companyCiCatenum(String pid,String userId) { StringBuffer sql=new StringBuffer("SELECT A.ID,A.NAME,A.CODE,A.LV JB,A.PID,COUNT(B.ID) AS NUM FROM CMDB_CI_CATEGORY A LEFT JOIN KM_LIBRARY B ON B.THIRDLEVEL_ID = A.ID AND B.STATE = 1 AND B.ID IN (SELECT KNOWLEDGE_ID FROM KM_LIBRARY_KNOWLEDGE_ACCESS WHERE CUSTOMER_ID = :userId) WHERE A.STATE = 1 and a.cate_type=1 "); sql.append(" GROUP BY A.ID ORDER BY A.LV,A.SERIAL "); List categoryList = baseDao.queryForList(sql.toString(),new SqlParameter("userId",userId)); List resultList = new LinkedList(); if(!StringUtil.isEmpty(pid)){ Map cacheMap = new HashMap(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); for (Map map : categoryList) { if (map.get("JB").toString().equalsIgnoreCase("2")&&map.get("PID").equals(pid)) { for(Map map1 : categoryList){ int num = ConvertUtil.obj2Int(map.get("NUM")); if(map.get("ID").equals(map1.get("PID"))){ num += ConvertUtil.obj2Int(map1.get("NUM")); map.put("NUM", num); } } } } for (Map map : categoryList) { //一级树 if (map.get("JB").toString().equalsIgnoreCase("2") && pid.equals(map.get("PID"))) { cacheMap.put(map.get("ID"), map); yjgnCache.put(map.get("ID").toString(), map); List ejgnList = new LinkedList(); map.put("ejTree", ejgnList); resultList.add(map); continue; } //二级树 if (map.get("JB").toString().equalsIgnoreCase("3") && cacheMap.containsKey(map.get("PID"))) { Map yjgnMap = yjgnCache.get(map.get("PID").toString()); List list = (List)yjgnMap.get("ejTree"); list.add(map); ejgnCache.put(map.get("ID").toString(), map); continue; } } } return resultList; } @Override public Map companyKnowCate(String pid) { StringBuffer sql= new StringBuffer(" SELECT A.ID,A.TITLE,A.TAG P_ID,A.LEVEL FROM KM_LIBRARY_CATEGORY A WHERE A.STATE=1 "); if(StringUtil.isEmpty(pid)){ sql.append(" AND A.LEVEL = 1 "); } sql.append(" ORDER BY A.LEVEL,A.TITLE "); List categoryList = baseDao.queryForList(sql.toString()); if(!StringUtil.isEmpty(pid)){ List resultList = new LinkedList(); Map cacheMap = new HashMap(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); for (Map map : categoryList) { //一级树 if (map.get("LEVEL").toString().equalsIgnoreCase("2") && pid.equals(map.get("P_ID"))) { cacheMap.put(map.get("ID"), map); 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("3") && cacheMap.containsKey(map.get("P_ID"))) { Map yjgnMap = yjgnCache.get(map.get("P_ID").toString()); List list = (List)yjgnMap.get("ejTree"); list.add(map); ejgnCache.put(map.get("ID").toString(), map); continue; } } categoryList = resultList; } Map resultMap = new HashMap(); resultMap.put("datas", categoryList); resultMap.put("flag", 0); resultMap.put(ClientUtil.SUCCESS, true); resultMap.put(ClientUtil.MSG, "成功"); return resultMap; } @Override public List companyKnowCatenum(String pid,String userId) { StringBuffer sql= new StringBuffer(" SELECT A.ID,A.TITLE,A.TAG P_ID,A.LEVEL ,COUNT(B.ID) AS NUM FROM KM_LIBRARY_CATEGORY A LEFT JOIN KM_LIBRARY B ON B.CATEGORY_ID = A.ID AND B.STATE = 1 AND B.ID IN (SELECT KNOWLEDGE_ID FROM KM_LIBRARY_KNOWLEDGE_ACCESS WHERE CUSTOMER_ID = :userId) WHERE A.STATE=1 "); sql.append(" GROUP BY A.ID ORDER BY A.LEVEL,A.TITLE "); List categoryList = baseDao.queryForList(sql.toString(),new SqlParameter("userId",userId)); List resultList = new LinkedList(); if(!StringUtil.isEmpty(pid)){ Map cacheMap = new HashMap(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); for (Map map : categoryList) { if (map.get("LEVEL").toString().equalsIgnoreCase("2")&&map.get("P_ID").equals(pid)) { for(Map map1 : categoryList){ int num = ConvertUtil.obj2Int(map.get("NUM")); if(map.get("ID").equals(map1.get("P_ID"))){ num += ConvertUtil.obj2Int(map1.get("NUM")); map.put("NUM", num); } } } } for (Map map : categoryList) { //一级树 if (map.get("LEVEL").toString().equalsIgnoreCase("2") && pid.equals(map.get("P_ID"))) { cacheMap.put(map.get("ID"), map); 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("3") && cacheMap.containsKey(map.get("P_ID"))) { Map yjgnMap = yjgnCache.get(map.get("P_ID").toString()); List list = (List)yjgnMap.get("ejTree"); list.add(map); ejgnCache.put(map.get("ID").toString(), map); continue; } } } return resultList; } @Override public Map companyServiceCate(String pid) { StringBuffer sql = new StringBuffer(); sql.append("SELECT ID,CATEGORY_NAME,CATEGORY_CODE,LEVEL,P_ID FROM SC_SERVCE_CATEGORY WHERE STATE = 1 AND TYPE = 2 "); if(StringUtil.isEmpty(pid)){ sql.append(" AND LEVEL = 1 "); } sql.append(" ORDER BY LEVEL,SERIAL "); List categoryList = baseDao.queryForList(sql.toString()); if(!StringUtil.isEmpty(pid)){ List resultList = new LinkedList(); Map cacheMap = new HashMap(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); for (Map map : categoryList) { //一级树 if (map.get("LEVEL").toString().equalsIgnoreCase("2") && pid.equals(map.get("P_ID"))) { cacheMap.put(map.get("ID"), map); 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("3") && cacheMap.containsKey(map.get("P_ID"))) { Map yjgnMap = yjgnCache.get(map.get("P_ID").toString()); List list = (List)yjgnMap.get("ejTree"); list.add(map); ejgnCache.put(map.get("ID").toString(), map); continue; } } categoryList = resultList; } Map resultMap = new HashMap(); resultMap.put("datas", categoryList); resultMap.put("flag", 0); resultMap.put(ClientUtil.SUCCESS, true); resultMap.put(ClientUtil.MSG, "成功"); return resultMap; } @Override public List companyServiceCatenum(String pid,String userId) { StringBuffer sql = new StringBuffer(); sql.append("SELECT A.ID,A.CATEGORY_NAME,A.CATEGORY_CODE,A.LEVEL,A.P_ID,COUNT(B.ID) AS NUM FROM SC_SERVCE_CATEGORY A LEFT JOIN KM_LIBRARY B ON B.THIRD_CATEGORY_ID = A.ID AND B.STATE = 1 AND A.TYPE = 2 AND B.ID IN (SELECT KNOWLEDGE_ID FROM KM_LIBRARY_KNOWLEDGE_ACCESS WHERE CUSTOMER_ID = :userId) WHERE A.STATE = 1 "); sql.append(" GROUP BY A.ID ORDER BY A.LEVEL,A.SERIAL "); List categoryList = baseDao.queryForList(sql.toString(),new SqlParameter("userId",userId)); List resultList = new LinkedList(); if(!StringUtil.isEmpty(pid)){ Map cacheMap = new HashMap(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); for (Map map : categoryList) { if (map.get("LEVEL").toString().equalsIgnoreCase("2")&&map.get("P_ID").equals(pid)) { for(Map map1 : categoryList){ int num = ConvertUtil.obj2Int(map.get("NUM")); if(map.get("ID").equals(map1.get("P_ID"))){ num += ConvertUtil.obj2Int(map1.get("NUM")); map.put("NUM", num); } } } } for (Map map : categoryList) { //一级树 if (map.get("LEVEL").toString().equalsIgnoreCase("2") && pid.equals(map.get("P_ID"))) { cacheMap.put(map.get("ID"), map); 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("3") && cacheMap.containsKey(map.get("P_ID"))) { Map yjgnMap = yjgnCache.get(map.get("P_ID").toString()); List list = (List)yjgnMap.get("ejTree"); list.add(map); ejgnCache.put(map.get("ID").toString(), map); continue; } } } return resultList; } @Override public Integer queryCompanyNewKwCount(Map params) { StringBuilder sql = new StringBuilder("SELECT COUNT(ID) FROM KM_LIBRARY WHERE STATE = 1 AND ID IN (SELECT KNOWLEDGE_ID FROM KM_LIBRARY_KNOWLEDGE_ACCESS WHERE CUSTOMER_ID = :userId) "); return baseDao.queryForInteger(sql.toString(),params); } @Override public PageInfo queryCompanyNewKwData(PageInfo pageInfo, Map params) { StringBuilder sql = new StringBuilder("SELECT ID,TITLE,TAG,SUMMARY,UPDATE_DATE,HITS,CREATE_USER_ID,CREATE_USER_NAME,CREATE_TIME,FILE_ID FROM KM_LIBRARY WHERE STATE = 1 AND ID IN (SELECT KNOWLEDGE_ID FROM KM_LIBRARY_KNOWLEDGE_ACCESS WHERE CUSTOMER_ID = :userId) "); sql.append(" ORDER BY UPDATE_DATE DESC "); PageInfo info = baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params); List datas = info.getDatas(); if(datas.size()>0){ List filesList = baseDao.queryForList("SELECT * FROM GG_FILES"); Map cachefile = new HashMap(); for(Map file:filesList){ if(!cachefile.containsKey(file.get("BUSINESS_ID"))){ cachefile.put(file.get("BUSINESS_ID"), file); } } for(Map map:datas){ if(cachefile.containsKey(map.get("FILE_ID"))){ map.put("isfiles", "1"); }else{ map.put("isfiles", "0"); } } } info.setDatas(datas); return info; } @Override public Integer knowListBycateIdCount(Map params) { StringBuilder sql = new StringBuilder("SELECT COUNT(ID) FROM KM_LIBRARY WHERE STATE = 1 AND ID IN (SELECT KNOWLEDGE_ID FROM KM_LIBRARY_KNOWLEDGE_ACCESS WHERE CUSTOMER_ID = :userId) "); queryknowListIf(params,sql); return baseDao.queryForInteger(sql.toString(),params); } @Override public PageInfo knowListBycateIdData(PageInfo pageInfo, Map params) { StringBuilder sql = new StringBuilder("SELECT ID,TITLE,TAG,SUMMARY,UPDATE_DATE,HITS,CREATE_USER_ID,CREATE_USER_NAME,CREATE_TIME,FILE_ID FROM KM_LIBRARY WHERE STATE = 1 AND ID IN (SELECT KNOWLEDGE_ID FROM KM_LIBRARY_KNOWLEDGE_ACCESS WHERE CUSTOMER_ID = :userId) "); queryknowListIf(params,sql); sql.append(" ORDER BY UPDATE_DATE DESC "); PageInfo info = baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params); List datas = info.getDatas(); if(datas.size()>0){ List filesList = baseDao.queryForList("SELECT * FROM GG_FILES"); Map cachefile = new HashMap(); for(Map file:filesList){ if(!cachefile.containsKey(file.get("BUSINESS_ID"))){ cachefile.put(file.get("BUSINESS_ID"), file); } } for(Map map:datas){ if(cachefile.containsKey(map.get("FILE_ID"))){ map.put("isfiles", "1"); }else{ map.put("isfiles", "0"); } } } info.setDatas(datas); return info; } private void queryknowListIf(Map params, StringBuilder sql) { if("1".equals(params.get("type"))){ sql.append(" AND CATEGORY_ID = :categoryId "); }else if("2".equals(params.get("type"))){ sql.append(" AND THIRDLEVEL_ID = :categoryId "); }else{ sql.append(" AND THIRD_CATEGORY_ID = :categoryId "); } } }