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<String, String> 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<String, String> 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<Map> datas = info.getDatas();
|
if(datas.size()>0){
|
for(Map map:datas){
|
List<Map> 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<Map> categoryList = baseDao.queryForList(sql.toString(),paraMap);
|
|
if(!StringUtil.isEmpty(pid)){
|
List<Map> resultList = new LinkedList<Map>();
|
Map cacheMap = new HashMap();
|
Map<String, Map> yjgnCache = new HashMap<String, Map>();
|
Map<String, Map> ejgnCache = new HashMap<String, Map>();
|
|
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<Map> ejgnList = new LinkedList<Map>();
|
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<Map> list = (List<Map>)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<Map> 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<Map> categoryList = baseDao.queryForList(sql.toString(),new SqlParameter("userId",userId));
|
|
List<Map> resultList = new LinkedList<Map>();
|
if(!StringUtil.isEmpty(pid)){
|
Map cacheMap = new HashMap();
|
Map<String, Map> yjgnCache = new HashMap<String, Map>();
|
Map<String, Map> ejgnCache = new HashMap<String, Map>();
|
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<Map> ejgnList = new LinkedList<Map>();
|
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<Map> list = (List<Map>)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<Map> categoryList = baseDao.queryForList(sql.toString());
|
if(!StringUtil.isEmpty(pid)){
|
List<Map> resultList = new LinkedList<Map>();
|
Map cacheMap = new HashMap();
|
Map<String, Map> yjgnCache = new HashMap<String, Map>();
|
Map<String, Map> ejgnCache = new HashMap<String, Map>();
|
|
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<Map> ejgnList = new LinkedList<Map>();
|
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<Map> list = (List<Map>)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<Map> 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<Map> categoryList = baseDao.queryForList(sql.toString(),new SqlParameter("userId",userId));
|
List<Map> resultList = new LinkedList<Map>();
|
if(!StringUtil.isEmpty(pid)){
|
Map cacheMap = new HashMap();
|
Map<String, Map> yjgnCache = new HashMap<String, Map>();
|
Map<String, Map> ejgnCache = new HashMap<String, Map>();
|
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<Map> ejgnList = new LinkedList<Map>();
|
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<Map> list = (List<Map>)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<Map> categoryList = baseDao.queryForList(sql.toString());
|
|
if(!StringUtil.isEmpty(pid)){
|
List<Map> resultList = new LinkedList<Map>();
|
Map cacheMap = new HashMap();
|
Map<String, Map> yjgnCache = new HashMap<String, Map>();
|
Map<String, Map> ejgnCache = new HashMap<String, Map>();
|
|
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<Map> ejgnList = new LinkedList<Map>();
|
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<Map> list = (List<Map>)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<Map> 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<Map> categoryList = baseDao.queryForList(sql.toString(),new SqlParameter("userId",userId));
|
|
List<Map> resultList = new LinkedList<Map>();
|
if(!StringUtil.isEmpty(pid)){
|
Map cacheMap = new HashMap();
|
Map<String, Map> yjgnCache = new HashMap<String, Map>();
|
Map<String, Map> ejgnCache = new HashMap<String, Map>();
|
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<Map> ejgnList = new LinkedList<Map>();
|
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<Map> list = (List<Map>)yjgnMap.get("ejTree");
|
list.add(map);
|
|
ejgnCache.put(map.get("ID").toString(), map);
|
continue;
|
}
|
}
|
}
|
|
return resultList;
|
}
|
|
@Override
|
public Integer queryCompanyNewKwCount(Map<String, String> 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<String, String> 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<Map> datas = info.getDatas();
|
if(datas.size()>0){
|
List<Map> 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<String, String> 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<String, String> 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<Map> datas = info.getDatas();
|
if(datas.size()>0){
|
List<Map> 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<String, String> 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 ");
|
}
|
}
|
|
|
}
|