📄 organizationchat.java.svn-base
字号:
package jm.form.msn.ctrl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import jm.entity.CommandSYKeys;
import jm.entity.ESM000500;
import jm.form.msn.bean.BusinessImportance;
import jm.form.msn.bean.BusinessUser;
import jm.form.msn.config.JMMRConfigConstants;
import jm.form.msn.util.Manager;
import jm.util.JMEntity;
import jm.util.JMVector;
/**
* 智能聊天组织
* 梦界家园MSNP15
*
* @author ISHome
* @since 0.1
* @version 0.5.0.2.1
*/
@SuppressWarnings("unchecked")
public class OrganizationChat implements JMMRConfigConstants {
private Manager manager = null;
public OrganizationChat(Manager server) {
manager = server;
}
/**
* 智能聊天组织
*/
public void invoker(BusinessUser u, String[] fields) {
JMVector<ESM000500> messageList = new JMVector<ESM000500>();
ESM000500 faq;
try {
// 全部FAQ
Hashtable<String, ESM000500> faqMap = (Hashtable<String, ESM000500>) manager.getFaqMap();
// System.out.println("faqMap==="+faqMap);
// 相似度
HashMap<String, BusinessImportance> importanceBeanMap = new HashMap<String, BusinessImportance>();
Map.Entry entry = null;
BusinessImportance bean;
String tag;
// 内存遍历
for (Iterator iter = faqMap.entrySet().iterator(); iter.hasNext();) {
entry = (Map.Entry) iter.next();
faq = (ESM000500) entry.getValue();
// 相似度比较
for (int i = 0; i < fields.length; i++) {
tag = faq.getTag();
if (tag.indexOf(fields[i]) >= 0) {
bean = importanceBeanMap.get(faq.getNumID());
if (bean == null) {
bean = new BusinessImportance();
}
// Importance 重要度
int num = bean.getImportance();
num = num + 1;
bean.setImportance(num);// 使用
// Tag
tag = bean.getTag();
if (tag == null) {
tag = "";
}
tag = tag + (fields[i] + JMEntity.SPLIT);
bean.setTag(tag);
importanceBeanMap.put(faq.getNumID(), bean);
}
}
// 精确程度,一次返回最多数据
if (importanceBeanMap.size() > Integer.parseInt(manager.getConfigMap().get(MAX_IMPORTANCE_NUMBER))) {
break;
}
}
// if(importanceBeanMap.size()>0)
{
// 数据库临时保存
StringBuffer sql = new StringBuffer();
// insert
sql.append(" insert into ");
// table
sql.append(" " + CommandSYKeys.DBTABLE_TEMP + " (");
// item
sql.append(CommandSYKeys.DB_KEY_SM000600_USERID + ",");
sql.append(CommandSYKeys.DB_KEY_SM000600_NUMID + ",");
sql.append(CommandSYKeys.DB_KEY_SM000600_IMPORTANT);
sql.append(" ) values ( ?, ?, ? )");
// 操作数据库
Connection conn = manager.getConnectionPool().getConnection();
conn.setAutoCommit(false);
PreparedStatement pstmt = conn.prepareStatement("" + sql);
// 整理插入数据
for (Iterator iter = importanceBeanMap.entrySet().iterator(); iter.hasNext();) {
entry = (Map.Entry) iter.next();
pstmt.setString(1, u.getMsnID());
pstmt.setString(2, "" + entry.getKey());
pstmt.setString(3, "" + ((BusinessImportance) entry.getValue()).getImportance());
pstmt.addBatch();
}
pstmt.executeBatch();
if (pstmt != null)
pstmt.close();
// 结果取回,操作数据库
sql = new StringBuffer();
sql.append("select " + CommandSYKeys.DB_KEY_SM000600_NUMID);
sql.append(" from " + CommandSYKeys.DBTABLE_TEMP);
sql.append(" where ");
sql.append(CommandSYKeys.DB_KEY_SM000600_USERID + "='" + u.getMsnID() + "'");
sql.append(" order by ");
sql.append(CommandSYKeys.DB_KEY_SM000600_IMPORTANT + " DESC"); // 结果排序
pstmt = conn.prepareStatement("" + sql);
ResultSet resultData = pstmt.executeQuery();
// 整理查询结果
{
while (resultData.next()) {
faq = (ESM000500) (faqMap.get(resultData.getString(1)).clone());
faq.setTag("" + importanceBeanMap.get(faq.getNumID()).getTag());// 匹配Tag
messageList.add(faq);
}// While
}
if (resultData != null)
resultData.close();
if (pstmt != null)
pstmt.close();
if (conn != null) {
conn.rollback();
// conn.commit();
conn.close();
}
}
} catch (Exception e) {
faq = new ESM000500();
faq.setNumID("99999");
faq.setFaqValue("系统忙,请稍后再试。");
messageList.add(faq);
e.printStackTrace();
}
// 用户对话结果保存
u.setMessageList(messageList);
manager.getUserList().put(u.getMsnID(), u);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -