package cn.ksource.web.facade.knowledge.knowledgesh;
|
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import cn.ksource.beans.KM_LIBRARY;
|
import cn.ksource.beans.KM_LIBRARY_HISTORY;
|
import cn.ksource.beans.KM_LIBRARY_KNOWLEDGE;
|
import cn.ksource.beans.KM_LIBRARY_KNOWLEDGE_ACCESS;
|
import cn.ksource.beans.KM_LIBRARY_KNOWLEDGE_ACCESS_HISTORY;
|
import cn.ksource.beans.KM_LIBRARY_KNOWLEDGE_HISTORY;
|
import cn.ksource.beans.KM_LIBRARY_KNOWLEDGE_TEMP;
|
import cn.ksource.beans.KM_LIBRARY_TEMP;
|
import cn.ksource.beans.KM_LIBRARY_UPDATER;
|
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.web.Constants;
|
import cn.ksource.web.service.knowledge.KmRecordService;
|
|
@Service("knowledgeShFacade")
|
@SuppressWarnings("unchecked")
|
public class KnowledgeShFacadeImpl implements KnowledgeShFacade {
|
|
@Autowired
|
private BaseDao baseDao;
|
|
@Autowired
|
private KmRecordService kmRecordService;
|
|
@Override
|
public Integer queryKnowledgeShCount(Map<String, String> params) {
|
StringBuilder sql = new StringBuilder("SELECT COUNT(DISTINCT K.ID) FROM ( ");
|
sql.append("( SELECT ID, TITLE, TAG, SUMMARY, CONTENT, CATEGORY_ID, CATEGORY_NAME, CREATE_USER_ID, CREATE_USER_NAME, CREATE_TIME, STATE, VERSION, HITS, IS_EDITOR, THIRDLEVEL_NAME, THIRDLEVEL_ID, FIRST_CATEGORY_ID, FIRST_CATEGORY_NAME, SECOND_CATEGORY_ID, SECOND_CATEGORY_NAME, THIRD_CATEGORY_ID, THIRD_CATEGORY_NAME, UPDATE_DATE, UPDATER_ID, UPDATE_NAME, SECOND_KNOWCATEGORY_ID, SECOND_KNOWCATEGORY_NAME, FIRST_KNOWCATEGORY_ID, FIRST_KNOWCATEGORY_NAME, SECONDLEVEL_NAME, SECONDLEVEL_ID, FIRSTLEVEL_NAME, FIRSTLEVEL_ID, ACCESS_TYPE, AUDIT_STATE ,AUDIT_USERID FROM km_library_temp ) ");
|
sql.append(" UNION ALL( SELECT ID, TITLE, TAG, SUMMARY, CONTENT, CATEGORY_ID, CATEGORY_NAME, CREATE_USER_ID, CREATE_USER_NAME, CREATE_TIME, STATE, VERSION, HITS, IS_EDITOR, THIRDLEVEL_NAME, THIRDLEVEL_ID, FIRST_CATEGORY_ID, FIRST_CATEGORY_NAME, SECOND_CATEGORY_ID, SECOND_CATEGORY_NAME, THIRD_CATEGORY_ID, THIRD_CATEGORY_NAME, UPDATE_DATE, UPDATER_ID, UPDATE_NAME, SECOND_KNOWCATEGORY_ID, SECOND_KNOWCATEGORY_NAME, FIRST_KNOWCATEGORY_ID, FIRST_KNOWCATEGORY_NAME, SECONDLEVEL_NAME, SECONDLEVEL_ID, FIRSTLEVEL_NAME, FIRSTLEVEL_ID, ACCESS_TYPE, 2 AS AUDIT_STATE,AUDIT_USERID FROM km_library )");
|
sql.append(") K WHERE K.STATE=1 AND K.AUDIT_USERID=:loginUserId");
|
queryKnowledgeShIf(params,sql);
|
return baseDao.queryForInteger(sql.toString(), params);
|
}
|
|
@Override
|
public PageInfo queryKnowledgeShData(PageInfo pageInfo,
|
Map<String, String> params) {
|
StringBuilder sql = new StringBuilder("SELECT k.* FROM ( ");
|
sql.append("( SELECT ID, TITLE, TAG, SUMMARY, CONTENT, CATEGORY_ID, CATEGORY_NAME, CREATE_USER_ID, CREATE_USER_NAME, CREATE_TIME, STATE, VERSION, HITS, IS_EDITOR, THIRDLEVEL_NAME, THIRDLEVEL_ID, FIRST_CATEGORY_ID, FIRST_CATEGORY_NAME, SECOND_CATEGORY_ID, SECOND_CATEGORY_NAME, THIRD_CATEGORY_ID, THIRD_CATEGORY_NAME, UPDATE_DATE, UPDATER_ID, UPDATE_NAME, SECOND_KNOWCATEGORY_ID, SECOND_KNOWCATEGORY_NAME, FIRST_KNOWCATEGORY_ID, FIRST_KNOWCATEGORY_NAME, SECONDLEVEL_NAME, SECONDLEVEL_ID, FIRSTLEVEL_NAME, FIRSTLEVEL_ID, ACCESS_TYPE, AUDIT_STATE ,AUDIT_USERID FROM km_library_temp ) ");
|
sql.append(" UNION ALL( SELECT ID, TITLE, TAG, SUMMARY, CONTENT, CATEGORY_ID, CATEGORY_NAME, CREATE_USER_ID, CREATE_USER_NAME, CREATE_TIME, STATE, VERSION, HITS, IS_EDITOR, THIRDLEVEL_NAME, THIRDLEVEL_ID, FIRST_CATEGORY_ID, FIRST_CATEGORY_NAME, SECOND_CATEGORY_ID, SECOND_CATEGORY_NAME, THIRD_CATEGORY_ID, THIRD_CATEGORY_NAME, UPDATE_DATE, UPDATER_ID, UPDATE_NAME, SECOND_KNOWCATEGORY_ID, SECOND_KNOWCATEGORY_NAME, FIRST_KNOWCATEGORY_ID, FIRST_KNOWCATEGORY_NAME, SECONDLEVEL_NAME, SECONDLEVEL_ID, FIRSTLEVEL_NAME, FIRSTLEVEL_ID, ACCESS_TYPE, 2 AS AUDIT_STATE,AUDIT_USERID FROM km_library )");
|
sql.append(" ) K WHERE K.STATE=1 AND K.AUDIT_USERID=:loginUserId ");
|
queryKnowledgeShIf(params, sql);
|
sql.append(" ORDER BY K.AUDIT_STATE,K.CREATE_TIME DESC");
|
return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
|
}
|
|
private void queryKnowledgeShIf(Map<String, String> params,
|
StringBuilder sql) {
|
String title = params.get("title");
|
String keyword = params.get("keyword");
|
String state = params.get("state");
|
String sl = params.get("sl");
|
if(StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
if(sls.length==1) {
|
sql.append(" AND K.THIRD_CATEGORY_ID = :third_category_id");
|
params.put("third_category_id", sls[0]);
|
} else {
|
sql.append(" AND K.THIRD_CATEGORY_ID IN (");
|
for(int i=0; i<sls.length; i++) {
|
sql.append(" :third_category_id"+i);
|
sql.append(",");
|
params.put("third_category_id"+i, sls[i]);
|
}
|
sql.deleteCharAt(sql.lastIndexOf(","));
|
sql.append(")");
|
}
|
}
|
|
String know = params.get("know");
|
if(StringUtil.notEmpty(know)) {
|
String[] knows = know.split(",");
|
if(knows.length==1) {
|
sql.append(" AND K.CATEGORY_ID = :category_id");
|
params.put("category_id", knows[0]);
|
} else {
|
sql.append(" AND K.CATEGORY_ID IN (");
|
for(int i=0; i<knows.length; i++) {
|
sql.append(" :category_id"+i);
|
sql.append(",");
|
params.put("category_id"+i, knows[i]);
|
}
|
sql.deleteCharAt(sql.lastIndexOf(","));
|
sql.append(")");
|
}
|
}
|
|
String ci = params.get("ci");
|
if(StringUtil.notEmpty(ci)) {
|
String[] cis = ci.split(",");
|
if(cis.length==1) {
|
sql.append(" AND K.THIRDLEVEL_ID = :thirdlevel_id");
|
params.put("thirdlevel_id", cis[0]);
|
} else {
|
sql.append(" AND K.THIRDLEVEL_ID IN (");
|
for(int i=0; i<cis.length; i++) {
|
sql.append(" :thirdlevel_id"+i);
|
sql.append(",");
|
params.put("thirdlevel_id"+i, cis[i]);
|
}
|
sql.deleteCharAt(sql.lastIndexOf(","));
|
sql.append(")");
|
}
|
}
|
if (!StringUtil.isEmpty(title)) {
|
sql.append(" AND K.TITLE like :title ");
|
params.put("title", "%" + title + "%");
|
}
|
|
if (!StringUtil.isEmpty(keyword)) {
|
sql.append(" AND K.TAG like :keyword ");
|
params.put("keyword", "%" + keyword + "%");
|
}
|
if (state.equals(Constants.KM_LIBRARY_TEMP_AUDIT_STATE_DSH.toString())) {
|
sql.append(" AND K.AUDIT_STATE = :state ");
|
}else{
|
params.put("state", Constants.KM_LIBRARY_TEMP_AUDIT_STATE_DSH.toString());
|
sql.append(" AND K.AUDIT_STATE > :state ");
|
}
|
}
|
|
@SuppressWarnings("rawtypes")
|
@Override
|
public void saveKnowledgeSh(Map<String, String> params) {
|
|
//审核通过将知识添加入正式知识库
|
if(ConvertUtil.obj2Integer(params.get("state")) == Constants.KM_LIBRARY_TEMP_AUDIT_STATE_SHTG){
|
String id = params.get("id");//中间表的id
|
KM_LIBRARY_TEMP temp = new KM_LIBRARY_TEMP().setId(id).getInstanceById();
|
String zsId = temp.getOriginal_id();
|
|
//新增审核操作
|
if(temp.getContent_state() == 1){
|
KM_LIBRARY library = new KM_LIBRARY();
|
library.setTitle(temp.getTitle()).setTag(temp.getTag()).setSummary(temp.getSummary()).setContent(temp.getContent())
|
.setCategory_id(temp.getCategory_id()).setCategory_name(temp.getCategory_name()).setCreate_user_id(temp.getCreate_user_id())
|
.setCreate_user_name(temp.getCreate_user_name()).setCreate_time(temp.getCreate_time()).setState(temp.getState()).setVersion(temp.getVersion())
|
.setHits(temp.getHits()).setIs_editor(temp.getIs_editor()).setThirdlevel_id(temp.getThirdlevel_id()).setThirdlevel_name(temp.getThirdlevel_name())
|
.setFirst_category_id(temp.getFirst_category_id()).setFirst_category_name(temp.getFirst_category_name()).setSecond_category_id(temp.getSecond_category_id())
|
.setSecond_category_name(temp.getSecond_category_name()).setThird_category_id(temp.getThird_category_id()).setThird_category_name(temp.getThird_category_name())
|
.setUpdate_date(temp.getUpdate_date()).setUpdater_id(temp.getUpdater_id()).setUpdate_name(temp.getUpdate_name()).setSecond_knowcategory_id(temp.getSecond_knowcategory_id())
|
.setSecond_knowcategory_name(temp.getSecond_knowcategory_name()).setFirst_knowcategory_id(temp.getFirst_knowcategory_id()).setFirst_knowcategory_name(temp.getFirst_knowcategory_name())
|
.setSecondlevel_id(temp.getSecondlevel_id()).setSecondlevel_name(temp.getSecondlevel_name()).setFirstlevel_id(temp.getFirstlevel_id()).setFirstlevel_name(temp.getFirstlevel_name())
|
.setAccess_type(temp.getAccess_type()).setFile_id(id).setIs_essence(0).setIs_top(0).setAudit_userid(temp.getAudit_userid()).setAudit_username(temp.getAudit_username()).insert();
|
//清除知识库temp表数据
|
temp.deleteById();
|
//正式用户权限
|
List<Map> accessDatas = baseDao.queryForList("SELECT * FROM KM_LIBRARY_KNOWLEDGE_ACCESS_TEMP WHERE KNOWLEDGE_ID = :id", new SqlParameter().addValue("id", id));
|
if(accessDatas.size() > 0){
|
for (Map map : accessDatas) {
|
KM_LIBRARY_KNOWLEDGE_ACCESS access = new KM_LIBRARY_KNOWLEDGE_ACCESS();
|
access.setCustomer_id(String.valueOf(map.get("CUSTOMER_ID"))).setCustomer_name(String.valueOf(map.get("CUSTOMER_NAME"))).setKnowledge_id(library.getId()).insert();
|
}
|
//清除用户权限temp表数据
|
baseDao.execute("DELETE FROM KM_LIBRARY_KNOWLEDGE_ACCESS_TEMP WHERE KNOWLEDGE_ID = :id", new SqlParameter().addValue("id", id));
|
}
|
//关联知识信息
|
List<Map> glKnowDatas = baseDao.queryForList("SELECT * FROM KM_LIBRARY_KNOWLEDGE WHERE LIBRARY_ID = :id", new SqlParameter().addValue("id", id));
|
if(glKnowDatas.size() > 0 ){
|
for (Map map2 : glKnowDatas) {
|
KM_LIBRARY_KNOWLEDGE km_library_knowledge = new KM_LIBRARY_KNOWLEDGE();
|
km_library_knowledge.setKnowledge_id(String.valueOf(map2.get("KNOWLEDGE_ID"))).setLibrary_id(library.getId()).insert();
|
}
|
//清除关联知识信息
|
baseDao.execute("DELETE FROM KM_LIBRARY_KNOWLEDGE WHERE LIBRARY_ID = :id ", new SqlParameter().addValue("id", id));
|
}
|
Map<String,String> recordparams = new HashMap<String, String>();
|
recordparams.put("library_id", library.getId());
|
recordparams.put("userId", library.getCreate_user_id());
|
recordparams.put("type", ConvertUtil.obj2StrBlank(Constants.KM_SCORE_RULE_TYPE_YC));
|
kmRecordService.addrecord(recordparams);
|
}else{//修改审核操作
|
//向历史表添加数据
|
KM_LIBRARY zsLibrary = new KM_LIBRARY().setId(zsId).getInstanceById();
|
KM_LIBRARY_HISTORY library_history = new KM_LIBRARY_HISTORY();
|
library_history.setTitle(zsLibrary.getTitle()).setTag(zsLibrary.getTag()).setSummary(zsLibrary.getSummary()).setContent(zsLibrary.getContent())
|
.setCategory_id(zsLibrary.getCategory_id()).setCategory_name(zsLibrary.getCategory_name()).setCreate_user_id(temp.getUpdater_id())
|
.setCreate_user_name(temp.getUpdate_name()).setCreate_time(temp.getUpdate_date()).setState(zsLibrary.getState()).setVersion(zsLibrary.getVersion())
|
.setHits(zsLibrary.getHits()).setIs_editor(zsLibrary.getIs_editor()).setThirdlevel_id(zsLibrary.getThirdlevel_id()).setThirdlevel_name(zsLibrary.getThirdlevel_name())
|
.setFirst_category_id(zsLibrary.getFirst_category_id()).setFirst_category_name(zsLibrary.getFirst_category_name()).setSecond_category_id(zsLibrary.getSecond_category_id())
|
.setSecond_category_name(zsLibrary.getSecond_category_name()).setThird_category_id(zsLibrary.getThird_category_id()).setThird_category_name(zsLibrary.getThird_category_name())
|
.setSecond_knowcategory_id(zsLibrary.getSecond_knowcategory_id())
|
.setSecond_knowcategory_name(zsLibrary.getSecond_knowcategory_name()).setFirst_knowcategory_id(zsLibrary.getFirst_knowcategory_id()).setFirst_knowcategory_name(zsLibrary.getFirst_knowcategory_name())
|
.setSecondlevel_id(zsLibrary.getSecondlevel_id()).setSecondlevel_name(zsLibrary.getSecondlevel_name()).setFirstlevel_id(zsLibrary.getFirstlevel_id()).setFirstlevel_name(zsLibrary.getFirstlevel_name())
|
.setAccess_type(zsLibrary.getAccess_type()).setOriginal_id(zsLibrary.getId()).setFile_id(zsLibrary.getFile_id()).insert();//历史表的fileId就是正式表的fileId,正式表的需要更新成临时表的最新id
|
//向历史用户权限表添加信息
|
List<Map> accessDatas = baseDao.queryForList("SELECT * FROM KM_LIBRARY_KNOWLEDGE_ACCESS WHERE KNOWLEDGE_ID = :zsId", new SqlParameter().addValue("zsId", zsId));
|
if(accessDatas.size() > 0){
|
for (Map map : accessDatas) {
|
KM_LIBRARY_KNOWLEDGE_ACCESS_HISTORY access = new KM_LIBRARY_KNOWLEDGE_ACCESS_HISTORY();
|
access.setCustomer_id(String.valueOf(map.get("CUSTOMER_ID"))).setCustomer_name(String.valueOf(map.get("CUSTOMER_NAME"))).setKnowledge_id(library_history.getId()).insert();
|
}
|
/*因为修改未向中间表添加知识表信息,不需要删除数据*/
|
}
|
//向历史关联知识表添加信息
|
List<Map> glKnowDatas = baseDao.queryForList("SELECT * FROM KM_LIBRARY_KNOWLEDGE WHERE LIBRARY_ID = :zsId", new SqlParameter().addValue("zsId", zsId));
|
if(glKnowDatas.size() > 0 ){
|
for (Map map2 : glKnowDatas) {
|
KM_LIBRARY_KNOWLEDGE_HISTORY km_library_knowledge_history = new KM_LIBRARY_KNOWLEDGE_HISTORY();
|
km_library_knowledge_history.setKnowledge_id(String.valueOf(map2.get("KNOWLEDGE_ID"))).setLibrary_id(library_history.getId()).insert();
|
}
|
/*因为修改未向中间表添加关联知识信息,不需要删除数据*/
|
}
|
//更新正式表的信息(更新最后编辑人信息)
|
zsLibrary = new KM_LIBRARY().setTitle(temp.getTitle()).setTag(temp.getTag()).setSummary(temp.getSummary()).setContent(temp.getContent())
|
.setVersion(temp.getVersion()).setUpdate_date(temp.getUpdate_date()).setUpdater_id(temp.getUpdater_id()).setUpdate_name(temp.getUpdate_name())
|
.setSecond_knowcategory_name(temp.getSecond_knowcategory_name()).setFirst_knowcategory_id(temp.getFirst_knowcategory_id()).setFirst_knowcategory_name(temp.getFirst_knowcategory_name())
|
.setId(zsId).setAudit_userid(temp.getAudit_userid()).setAudit_username(temp.getAudit_username()).setFile_id(temp.getId()).update();
|
//向编辑记录表中添加信息
|
new KM_LIBRARY_UPDATER().setLibrary_id(zsLibrary.getId()).setType(2).setUser_name(temp.getUpdate_name()).setUser_id(temp.getUpdater_id()).setEditor_date(temp.getUpdate_date()).insert();
|
//删除中间表信息
|
temp.deleteById();
|
String sql = "SELECT COUNT(ID) FROM KM_RECORD WHERE USER_ID = :userId AND TYPE = :type AND LIBRARY_ID = :library_id ";
|
Map<String,String> recordparams = new HashMap<String, String>();
|
recordparams.put("library_id", zsLibrary.getId());
|
recordparams.put("userId", zsLibrary.getUpdater_id());
|
recordparams.put("type", ConvertUtil.obj2StrBlank(Constants.KM_SCORE_RULE_TYPE_BJ));
|
int count = baseDao.queryForInteger(sql,recordparams);
|
if(count == 0){
|
kmRecordService.addrecord(recordparams);
|
}
|
}
|
}else{
|
//审核不通过改变状态
|
String sql = new String("UPDATE KM_LIBRARY_TEMP SET AUDIT_STATE = :state,AUDIT_NOTE = :note WHERE ID = :id");
|
baseDao.execute(sql, params);
|
}
|
}
|
|
}
|