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 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 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 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 :state "); } } @SuppressWarnings("rawtypes") @Override public void saveKnowledgeSh(Map 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 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 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 recordparams = new HashMap(); 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 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 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 recordparams = new HashMap(); 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); } } }