⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 organizationchat.java.svn-base

📁 MSN客服自动化机器人
💻 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 + -