栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SSM框架实现OA系统

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SSM框架实现OA系统

SSM+MySQL实现线上办公系统

开发时间:2019.5-2019.7

项目模块

一、在线信息模块

包括:发送信息、删除信息、草稿箱管理、查询信息

二、代码 1.spring配置文件

applicationContext.xml文件作为系统的父容器,用来处理除了controller以外的内容。

```xml





	
	
		
			
				classpath:db_config.properties
			
		
	
	
	
	
		
			
				classpath:db_config.properties
			
		
	

	
	
		
	

	
	
		
		
		
		
		
		
		
		
	

	
	
		
		
		
		
		service.addMes(Message);
	}

	
	@RequestMapping("/mes/addMesByLoginName")
	public void addMesByLoginName(HttpServletRequest request, HttpServletResponse response, Integer[] emp,
			Message mes) {

		for (int i = 0; i < emp.length; i++) {

			Date mesSendDate = new Date();

			HttpSession session = request.getSession();

			String empLoginName = (String) session.getAttribute("empLoginName");
			Employee employee = empService.queryEmpByLoginName(empLoginName);
			employee.setEmpId(empService.getId(empLoginName));

			Integer empId = employee.getEmpId();

			Employee mesSender = new Employee();
			mesSender.setEmpId(empId);
			mes.setMesSender(mesSender);

			Employee mesReciver = empService.getById(emp[i]);

			mes.setMesReciver(mesReciver);

			mes.setMesSendConfirm("已发");
			mes.setMesReadConfirm("未读");
			mes.setMesSendDate(mesSendDate);

			service.addMes(mes);
		}
	}
	
	
	@RequestMapping("/mes/addDraftByLoginNameNew")
	public void addDraftByLoginNameNew(HttpServletRequest request, HttpServletResponse response, Integer[] emp,
			Message mes) {

		for (int i = 0; i < emp.length; i++) {

			Date mesSendDate = new Date();

			HttpSession session = request.getSession();

			String empLoginName = (String) session.getAttribute("empLoginName");
			Employee employee = empService.queryEmpByLoginName(empLoginName);
			employee.setEmpId(empService.getId(empLoginName));

			Integer empId = employee.getEmpId();

			Employee mesSender = new Employee();
			mesSender.setEmpId(empId);
			mes.setMesSender(mesSender);

			Employee mesReciver = empService.getById(emp[i]);

			mes.setMesReciver(mesReciver);

			mes.setMesSendConfirm("未发");
			mes.setMesReadConfirm("未读");
			mes.setMesSendDate(mesSendDate);

			service.addMes(mes);
		}
	}

	
	@RequestMapping("/mes/addDraftByLoginName")
	public void addDraftByLoginName(HttpServletRequest request, HttpServletResponse response, Message mes) {

		Date mesSendDate = new Date();

		HttpSession session = request.getSession();

		String empLoginName = (String) session.getAttribute("empLoginName");
		Employee emp = empService.queryEmpByLoginName(empLoginName);
		emp.setEmpId(empService.getId(empLoginName));

		Integer empId = emp.getEmpId();

		Employee mesSender = new Employee();
		mesSender.setEmpId(empId);
		mes.setMesSender(mesSender);

		mes.setMesSendConfirm("未发");
		mes.setMesReadConfirm("未读");
		mes.setMesSendDate(mesSendDate);

		service.addMes(mes);
	}

	
	@RequestMapping("/mes/deleteMes")
	public void delete(HttpServletRequest request, HttpServletResponse response, Integer mesId) {
		service.deleteMes(mesId);
	}

	
	@RequestMapping("/mes/updateMes")
	public void update(HttpServletRequest request, HttpServletResponse response, Message mes) {

		Date mesSendDate = new Date();

		HttpSession session = request.getSession();

		String empLoginName = (String) session.getAttribute("empLoginName");
		Employee employee = empService.queryEmpByLoginName(empLoginName);
		employee.setEmpId(empService.getId(empLoginName));

		Integer empId = employee.getEmpId();

		Employee mesSender = new Employee();
		mesSender.setEmpId(empId);
		mes.setMesSender(mesSender);
		mes.setMesSendDate(mesSendDate);

		service.updateMes(mes);

	}
	
	
	@RequestMapping("/mes/updateMesNew")
	public void updateNew(HttpServletRequest request, HttpServletResponse response, Message mes) {

		Date mesSendDate = new Date();

		HttpSession session = request.getSession();

		String empLoginName = (String) session.getAttribute("empLoginName");
		Employee employee = empService.queryEmpByLoginName(empLoginName);
		employee.setEmpId(empService.getId(empLoginName));

		Integer empId = employee.getEmpId();

		Employee mesSender = new Employee();
		mesSender.setEmpId(empId);
		mes.setMesSender(mesSender);
		mes.setMesSendDate(mesSendDate);
		mes.setMesSendConfirm("已发");

		service.updateMes(mes);

	}

	
	@RequestMapping("/mes/updateUnread")
	public void updateUnread(HttpServletRequest request, HttpServletResponse response, Message mes) {
		
//		HttpSession session = request.getSession();
//
//		String empLoginName = (String) session.getAttribute("empLoginName");
//		Employee employee = empService.queryEmpByLoginName(empLoginName);
//		employee.setEmpId(empService.getId(empLoginName));
//
//		Integer empId = employee.getEmpId();

//		Employee mesSender = new Employee();
//		mesSender.setEmpId(empId);
//		mes.setMesSendDate(mesSendDate);
		
		HttpSession session = request.getSession();

		String empLoginName = (String) session.getAttribute("empLoginName");
		Employee employee = empService.queryEmpByLoginName(empLoginName);
		employee.setEmpId(empService.getId(empLoginName));

		Integer empId = employee.getEmpId();

		Employee mesSender = new Employee();
		mesSender.setEmpId(empId);
		mes.setMesSender(mesSender);

		mes.setMesReadConfirm("已读");

		service.updateMes(mes);

	}

	
	@RequestMapping("/mes/queryByCondition")
	@ResponseBody
	public HashMap queryByCondition(HttpServletRequest request, HttpServletResponse response,
			Integer pageNum, Integer pageSize, String mesSendDate, String empEmail, String mesTitle, Integer empId,
			String mesInfo) throws UnsupportedEncodingException {

		if (pageNum == null) {
			pageNum = 0;
		}

		if (pageSize == null) {
			pageSize = 5;
		}

		Pager pager = new Pager(service.getMesCountByCondition(mesSendDate, empEmail, mesTitle, empId, mesInfo),
				pageSize, pageNum);

		List list = service.queryMesByCondition(pager, mesSendDate, empEmail, mesTitle, empId, mesInfo);

		// 在Map集合中存储分页数据和信息数据
		HashMap map = new HashMap<>();
		map.put("pager", pager);
		map.put("list", list);

		return map;
	}

	
	@RequestMapping("/mes/queryByCondition1")
	@ResponseBody
	public HashMap queryByCondition1(HttpServletRequest request, HttpServletResponse response,
			Integer pageNum, Integer pageSize, String mesSendDate, String empEmail, String mesTitle) {

		if (pageNum == null) {
			pageNum = 0;
		}

		if (pageSize == null) {
			pageSize = 5;
		}

		Pager pager = new Pager(service.getMesCount(), pageSize, pageNum);

		List list = service.queryMesByCondition1(pager, mesSendDate, empEmail, mesTitle);

		// 在Map集合中存储分页数据和信息数据
		HashMap map = new HashMap<>();
		map.put("pager", pager);
		map.put("list", list);

		return map;
	}

	
	@RequestMapping("/mes/queryByEmpLoginName")
	@ResponseBody
	public HashMap queryByEmpLoginName(HttpServletRequest request, HttpServletResponse response,
			Integer pageNum, Integer pageSize, String empLoginName, String mesSendDate, String empEmail,
			String mesTitle, Integer empId, String mesInfo) {

		HttpSession session = request.getSession();

		empLoginName = (String) session.getAttribute("empLoginName");
		Employee emp = empService.queryEmpByLoginName(empLoginName);
		session.setAttribute("empId", emp.getEmpId()); // 记录用户id

		if (pageNum == null) {
			pageNum = 0;
		}

		if (pageSize == null) {
			pageSize = 5;
		}

		Pager pager = new Pager(
				service.getMesCountByEmpLoginName(empLoginName, mesSendDate, empEmail, mesTitle, empId, mesInfo),
				pageSize, pageNum);

		List list = service.queryMesByLoginName(empLoginName, pager, mesSendDate, empEmail, mesTitle, empId,
				mesInfo);

		// 在Map集合中存储分页数据和信息数据
		HashMap map = new HashMap<>();
		map.put("pager", pager);
		map.put("list", list);

		return map;
	}

	
	@RequestMapping("/mes/queryDraft")
	@ResponseBody
	public HashMap queryDraft(HttpServletRequest request, HttpServletResponse response,
			String mesSendConfirm, Integer pageNum, Integer pageSize, String empLoginName) {

		HttpSession session = request.getSession();

		empLoginName = (String) session.getAttribute("empLoginName");
		Employee emp = empService.queryEmpByLoginName(empLoginName);
		session.setAttribute("empId", emp.getEmpId()); // 记录用户id

		if (pageNum == null) {
			pageNum = 0;
		}

		if (pageSize == null) {
			pageSize = 5;
		}

		Pager pager = new Pager(service.getMesDraftCount("未发", empLoginName), pageSize, pageNum);

		List list = service.queryMesDraft("未发", pager, empLoginName);

		// 在Map集合中存储分页数据和信息数据
		HashMap map = new HashMap<>();
		map.put("pager", pager);
		map.put("list", list);

		return map;
	}

	
	@RequestMapping("/mes/queryOutbox")
	@ResponseBody
	public HashMap queryOutbox(HttpServletRequest request, HttpServletResponse response,
			String mesSendConfirm, Integer pageNum, Integer pageSize, String empLoginName) {

		HttpSession session = request.getSession();

		empLoginName = (String) session.getAttribute("empLoginName");
		Employee emp = empService.queryEmpByLoginName(empLoginName);
		session.setAttribute("empId", emp.getEmpId()); // 记录用户id

		if (pageNum == null) {
			pageNum = 0;
		}

		if (pageSize == null) {
			pageSize = 5;
		}

		Pager pager = new Pager(service.getMesDraftCount("已发", empLoginName), pageSize, pageNum);

		List list = service.queryMesDraft("已发", pager, empLoginName);

		// 在Map集合中存储分页数据和信息数据
		HashMap map = new HashMap<>();
		map.put("pager", pager);
		map.put("list", list);

		return map;
	}

	
	@RequestMapping("/mes/queryInbox")
	@ResponseBody
	public HashMap queryInbox(HttpServletRequest request, HttpServletResponse response, Integer pageNum,
			Integer pageSize, String empLoginName) {

		HttpSession session = request.getSession();

		empLoginName = (String) session.getAttribute("empLoginName");
		Employee emp = empService.queryEmpByLoginName(empLoginName);
		session.setAttribute("empId", emp.getEmpId()); // 记录用户id

		if (pageNum == null) {
			pageNum = 0;
		}

		if (pageSize == null) {
			pageSize = 5;
		}

		Pager pager = new Pager(service.getMesInboxCount(empLoginName), pageSize, pageNum);

		List list = service.queryMesInbox(pager, empLoginName);

		// 在Map集合中存储分页数据和信息数据
		HashMap map = new HashMap<>();
		map.put("pager", pager);
		map.put("list", list);

		return map;
	}

	
	@RequestMapping("/mes/queryUnread")
	@ResponseBody
	public HashMap queryUnread(HttpServletRequest request, HttpServletResponse response,
			String mesSendConfirm, String mesReadConfirm, Integer pageNum, Integer pageSize, String empLoginName) {

		HttpSession session = request.getSession();

		empLoginName = (String) session.getAttribute("empLoginName");
		Employee emp = empService.queryEmpByLoginName(empLoginName);
		session.setAttribute("empId", emp.getEmpId()); // 记录用户id

		if (pageNum == null) {
			pageNum = 0;
		}

		if (pageSize == null) {
			pageSize = 5;
		}

		Pager pager = new Pager(service.getMesUnreadCount("已发", "未读", empLoginName), pageSize, pageNum);

		List list = service.queryMesUnread("已发", "未读", pager, empLoginName);

		// 在Map集合中存储分页数据和信息数据
		HashMap map = new HashMap<>();
		map.put("pager", pager);
		map.put("list", list);

		return map;
	}

	
	@RequestMapping("/mes/queryById")
	@ResponseBody
	public Message queryById(HttpServletRequest request, HttpServletResponse response, Integer mesId) {

		Message mes = service.queryMesById(mesId);

		return mes;
	}

	
	@RequestMapping("mes/queryByIndex")
	@ResponseBody
	public List queryByIndex(HttpServletRequest request, HttpServletResponse response, String queryStr)
			throws ParseException, IOException, InvalidTokenOffsetsException {

		return service.queryMesByIndex(queryStr);
	}

	
	@RequestMapping("mes/deleteMany")
	public void deleteMany(HttpServletRequest request, HttpServletResponse response, Integer[] ids)
			throws ParseException, IOException, InvalidTokenOffsetsException {

		for (int i = 0; i < ids.length; i++) {
			service.deleteMes(ids[i]);
		}

	}

	
	@RequestMapping("mes/addMany")
	public void insertMany(HttpServletRequest request, HttpServletResponse response, Integer[] emp, Message mes) {
		for (int i = 0; i < emp.length; i++) {

			Employee employee = empService.getById(emp[i]);

			mes.setMesReciver(employee);

			service.addMes(mes);
		}
	}

	
	@RequestMapping("mes/getUnreadCount")
	@ResponseBody
	public Integer getUnreadCount(HttpServletRequest request, HttpServletResponse response, Integer count,
			String empLoginName) {

		HttpSession session = request.getSession();

		empLoginName = (String) session.getAttribute("empLoginName");
		Employee emp = empService.queryEmpByLoginName(empLoginName);
		session.setAttribute("empId", emp.getEmpId()); // 记录用户id

		count = service.getMesUnreadCount("已发", "未读", empLoginName);

		return count;

	}

	
	@RequestMapping("mes/getInboxCount")
	@ResponseBody
	public Integer getInboxCount(HttpServletRequest request, HttpServletResponse response, Integer count,
			String empLoginName) {
		HttpSession session = request.getSession();

		empLoginName = (String) session.getAttribute("empLoginName");
		Employee emp = empService.queryEmpByLoginName(empLoginName);
		session.setAttribute("empId", emp.getEmpId()); // 记录用户id

		count = service.getMesInboxCount(empLoginName);

		return count;
	}

	
	@RequestMapping("mes/getOutboxCount")
	@ResponseBody
	public Integer getOutboxCount(HttpServletRequest request, HttpServletResponse response, Integer count,
			String empLoginName) {
		HttpSession session = request.getSession();

		empLoginName = (String) session.getAttribute("empLoginName");
		Employee emp = empService.queryEmpByLoginName(empLoginName);
		session.setAttribute("empId", emp.getEmpId()); // 记录用户id

		count = service.getMesDraftCount("已发", empLoginName);

		return count;
	}

	
	@RequestMapping("mes/getDraftCount")
	@ResponseBody
	public Integer getDraftCount(HttpServletRequest request, HttpServletResponse response, Integer count,
			String empLoginName) {
		HttpSession session = request.getSession();

		empLoginName = (String) session.getAttribute("empLoginName");
		Employee emp = empService.queryEmpByLoginName(empLoginName);
		session.setAttribute("empId", emp.getEmpId()); // 记录用户id

		count = service.getMesDraftCount("未发", empLoginName);

		return count;
	}

	
	@RequestMapping("mes/getCount")
	@ResponseBody
	public Integer getCount(HttpServletRequest request, HttpServletResponse response, Integer count,
			String empLoginName) {
		HttpSession session = request.getSession();

		empLoginName = (String) session.getAttribute("empLoginName");
		Employee emp = empService.queryEmpByLoginName(empLoginName);
		session.setAttribute("empId", emp.getEmpId()); // 记录用户id

		count = service.getMesCountByEmpLoginName(empLoginName, null, null, null, null, null);

		return count;
	}

}

4、MessageService.java
package com.icss.oa.message.service;

import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.analysis.util.CharArraySet;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.Term;
import org.apache.lucene.document.TextField;
import org.apache.lucene.queryparser.classic.MultiFieldQueryParser;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.highlight.InvalidTokenOffsetsException;
import org.apache.lucene.util.Version;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.icss.oa.common.Pager;
import com.icss.oa.message.dao.MessageMapper;
import com.icss.oa.message.index.MessageIndexDao;
import com.icss.oa.message.pojo.Message;
import com.icss.oa.system.dao.EmployeeMapper;
import com.icss.oa.system.pojo.Employee;


@Service
@Transactional(rollbackFor = Exception.class)
public class MessageService {

	@Autowired
	private MessageMapper mapper;
	
	@Autowired
	private EmployeeMapper empMapper;
	
	@Autowired
	private MessageIndexDao indexDao;

	
	public Message queryMesById(Integer mesId) {
		return mapper.queryById(mesId);
	}

	
	public void addMes(Message mes) {
		mapper.insert(mes);

		// 获得插入员工的自动编号
		int mesId = mapper.getLastInsertId();

		try {
			
			// 创建索引文档
			Document document = new Document();
			document.add(new TextField("mesId", String.valueOf(mesId), Store.YES));
			document.add(new TextField("mesTitle", mes.getMesTitle(), Store.YES));
			document.add(new TextField("mesInfo", mes.getMesInfo(), Store.YES));

			// 调用索引dao
			indexDao.create(document);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	
	public void deleteMes(Integer mesId) {
		mapper.delete(mesId);

		// 索引
		try {
			Term term = new Term("mesId", String.valueOf(mesId));
			// 调用索引dao
			indexDao.delete(term);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	
	public void updateMes(Message mes) {
		mapper.update(mes);

		// 索引
		try {
			Term term = new Term("mesId", String.valueOf(mes.getMesId()));

			// 创建索引文档
			Document document = new Document();
			document.add(new TextField("empId", String.valueOf(mes.getMesId()), Store.YES));
			document.add(new TextField("mesTitle", mes.getMesTitle(), Store.YES));
			document.add(new TextField("mesInfo", mes.getMesInfo(), Store.YES));

			// 调用索引dao
			indexDao.update(term, document);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	
	@Transactional(readOnly = true)
	public int getMesCount() {
		return mapper.getCount();
	}

	
	@Transactional(readOnly = true)
	public List queryMesByCondition(Pager pager, String mesSendDate, String empEmail, String mesTitle,
			Integer mesReciver, String mesInfo) {
		return mapper.queryByCondition(pager.getStart(), pager.getPageSize(), mesSendDate, empEmail, mesTitle,
				mesReciver, mesInfo);
	}

	
	@Transactional(readOnly = true)
	public List queryMesByCondition1(Pager pager, String mesSendDate, String empEmail, String mesTitle) {
		return mapper.queryByCondition1(pager.getStart(), pager.getPageSize(), mesSendDate, empEmail, mesTitle);
	}

	
	@Transactional(readOnly = true)
	public Integer getMesCountByCondition(String mesSendDate, String empEmail, String mesTitle, Integer mesReciver,
			String mesInfo) {
		return mapper.getCountByCondition(mesSendDate, empEmail, mesTitle, mesReciver, mesInfo);
	}

	
	@Transactional(readOnly = true)
	public List queryMesByIndex(String queryStr)
			throws IOException, InvalidTokenOffsetsException, ParseException {

		// 设置常见停用词(的,么,啊,着之类的东东)
		String[] self_stop_words = { "的", "着", "啊", "么", "嘛", "是" };
		CharArraySet cas = new CharArraySet(Version.LUCENE_47, 0, true);
		for (int i = 0; i < self_stop_words.length; i++) {
			cas.add(self_stop_words[i]);
		}

		// 加入系统默认停用词
		Iterator itor = StandardAnalyzer.STOP_WORDS_SET.iterator();
		while (itor.hasNext()) {
			cas.add(itor.next());
		}

		// 中文分词器(设置停用词)
		Analyzer analyzer = new SmartChineseAnalyzer(Version.LUCENE_47, cas);

		// 创建查询解析器对象,多字段搜索
		QueryParser queryParser = new MultiFieldQueryParser(Version.LUCENE_47,
				new String[] { "mesId", "mesTitle", "mesInfo" }, analyzer);

		// 创建查询对象
		Query query = queryParser.parse(queryStr);

		// 调用索引dao
		List list = indexDao.search(query);

		return list;
	}

	
	@Transactional(readOnly = true)
	public List queryMesByLoginName(String empLoginName, Pager pager, String mesSendDate, String empEmail,
			String mesTitle, Integer mesReciver, String mesInfo) {
		return mapper.queryByLoginName(empLoginName, pager.getStart(), pager.getPageSize(), mesSendDate, empEmail,
				mesTitle, mesReciver, mesInfo);
	}

	
	@Transactional(readOnly = true)
	public int getMesCountByEmpLoginName(String empLoginName, String mesSendDate, String empEmail, String mesTitle,
			Integer mesReciver, String mesInfo) {
		return mapper.getCountByEmpLoginName(empLoginName, mesSendDate, empEmail, mesTitle, mesReciver, mesInfo);
	}

	
	@Transactional(readOnly = true)
	public List queryMesDraft(String mesSendConfirm, Pager pager, String empLoginName) {
		return mapper.queryDraft(mesSendConfirm, pager.getStart(), pager.getPageSize(), empLoginName);
	}

	
	@Transactional(readOnly = true)
	public Integer getMesDraftCount(String mesSendConfirm, String empLoginName) {
		return mapper.getCountDraft(mesSendConfirm, empLoginName);
	}

	
	@Transactional(readOnly = true)
	public List queryMesInbox(Pager pager, String empLoginName) {
		return mapper.queryInbox(pager.getStart(), pager.getPageSize(), empLoginName);
	}

	
	@Transactional(readOnly = true)
	public Integer getMesInboxCount(String empLoginName) {
		return mapper.getCountInbox(empLoginName);
	}

	
	@Transactional(readOnly = true)
	public List queryMesUnread(String mesSendConfirm, String mesReadConfirm, Pager pager,
			String empLoginName) {
		return mapper.queryUnread(mesSendConfirm, mesReadConfirm, pager.getStart(), pager.getPageSize(), empLoginName);
	}

	
	@Transactional(readOnly = true)
	public Integer getMesUnreadCount(String mesSendConfirm, String mesReadConfirm, String empLoginName) {
		return mapper.getCountUnread(mesSendConfirm, mesReadConfirm, empLoginName);
	}

	
	public void groupSend(Message mes, Integer[] ids,String empLoginName) {
		
		Employee sender = empMapper.queryByLoginName(empLoginName);
		mes.setMesSender(sender);
		
		for (int i = 0; i < ids.length; i++) {
			
			Employee mesReciver = new Employee();
			mesReciver.setEmpId(ids[i]);
			mes.setMesReciver(mesReciver);
			
			mapper.insert(mes);
			
			// 获得插入信息的自动编号
			int mesId = mapper.getLastInsertId();

			try {
				
				// 创建索引文档
				Document document = new Document();
				document.add(new TextField("mesId", String.valueOf(mesId), Store.YES));
				document.add(new TextField("mesTitle", mes.getMesTitle(), Store.YES));
				document.add(new TextField("mesInfo", mes.getMesInfo(), Store.YES));

				// 调用索引dao
				indexDao.create(document);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

}

 
5、MessageMapper.java 
package com.icss.oa.message.dao;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.icss.oa.message.pojo.Message;


public interface MessageMapper {

	void insert(Message mes); // 增加信息

	void update(Message mes); // 修改信息

	void delete(Integer mesId); // 删除信息

	Message queryById(Integer mesId); // 根据id查询信息

	int getCount(); // 获得总数

	// 条件查询个数
	int getCountByCondition(@Param("mesSendDate") String mesSendDate, // 日期
			@Param("empEmail") String empEmail, // 邮箱
			@Param("mesTitle") String mesTitle, // 题目
			@Param("mesReciver") Integer mesReciver, // 收件人
			@Param("mesInfo") String mesInfo // 邮件信息
	); // 根据条件获得总记录数

	// 条件查询
	List queryByCondition(@Param("start") Integer start, @Param("pageSize") Integer pageSize, // 分页
			@Param("mesSendDate") String mesSendDate, // 日期
			@Param("empEmail") String empEmail, // 邮箱
			@Param("mesTitle") String mesTitle, // 题目
			@Param("mesReciver") Integer mesReciver, // 收件人
			@Param("mesInfo") String mesInfo // 邮件信息
	);

	// 条件查询1
	List queryByCondition1(@Param("start") Integer start, @Param("pageSize") Integer pageSize, // 分页
			@Param("mesSendDate") String mesSendDate, // 日期
			@Param("empEmail") String empEmail, // 邮箱
			@Param("mesTitle") String mesTitle // 题目
	);

	// 获得最后一个添加的信息的id
	int getLastInsertId();

	// 根据登录名获得信息
	List queryByLoginName(@Param("empLoginName") String empLoginName, @Param("start") Integer start,
			@Param("pageSize") Integer pageSize,
			@Param("mesSendDate") String mesSendDate, // 日期
			@Param("empEmail") String empEmail, // 邮箱
			@Param("mesTitle") String mesTitle, // 题目
			@Param("mesReciver") Integer mesReciver, // 收件人
			@Param("mesInfo") String mesInfo // 邮件信息
			);

	// 根据登录名获得个数
	int getCountByEmpLoginName(@Param("empLoginName") String empLoginName,
			@Param("mesSendDate") String mesSendDate, // 日期
			@Param("empEmail") String empEmail, // 邮箱
			@Param("mesTitle") String mesTitle, // 题目
			@Param("mesReciver") Integer mesReciver, // 收件人
			@Param("mesInfo") String mesInfo // 邮件信息
			);
	
	// 草稿箱以及发件箱
	List queryDraft(@Param("mesSendConfirm") String mesSendConfirm, // 是否发送
			@Param("start") Integer start, @Param("pageSize") Integer pageSize,
			@Param("empLoginName") String empLoginName);

	// 草稿箱以及发件箱的个数
	int getCountDraft(@Param("mesSendConfirm") String mesSendConfirm, @Param("empLoginName") String empLoginName);

	// 收件箱
	List queryInbox(@Param("start") Integer start, @Param("pageSize") Integer pageSize,
			@Param("empLoginName") String empLoginName);

	// 收件箱的个数
	int getCountInbox(@Param("empLoginName") String empLoginName);

	// 未读消息查询
	List queryUnread(@Param("mesSendConfirm") String mesSendConfirm, // 是否发送
			@Param("mesReadConfirm") String mesReadConfirm, @Param("start") Integer start,
			@Param("pageSize") Integer pageSize, @Param("empLoginName") String empLoginName);

	// 未读消息的个数
	int getCountUnread(@Param("mesSendConfirm") String mesSendConfirm, @Param("mesReadConfirm") String mesReadConfirm,
			@Param("empLoginName") String empLoginName);

}

6、MessageMapping.xml




	
	
		
		
		
		
		
		

		
			
			
			
			
		

		
			
			
			
			
		

	

	
	
		insert into message
		values(default, #{mesTitle}, #{mesSendConfirm},
		#{mesReadConfirm},
		#{mesSendDate}, #{mesInfo},
		#{mesSender.empId},#{mesReciver.empId})
	

	
	
		update message set mes_title =
		#{mesTitle},
		mes_sender = #{mesSender.empId},
		mes_reciver =
		#{mesReciver.empId},
		mes_send_confirm = #{mesSendConfirm},
		mes_read_confirm =
		#{mesReadConfirm},
		mes_send_date = #{mesSendDate},
		mes_info = #{mesInfo}
		where mes_id=#{mesId}
	

	
	
		delete from message
		where
		mes_id = #{mesId}
	

	
	
		SELECT m.*,e1.emp_id
		mes_sender,e2.emp_id
		mes_reciver,e1.emp_name
		sender_name,e2.emp_name
		reciver_name,
		e1.emp_email sender_email,
		e2.emp_email reciver_email
		FROM
		message m
		LEFT OUTER JOIN employee as e1
		ON m.`mes_sender` = e1.`emp_id`
		LEFT OUTER JOIN employee as e2
		ON
		m.`mes_reciver` = e2.`emp_id`
		order by
		mes_send_date desc
	

	
	
		SELECT m.*,e1.emp_id mes_sender,e2.emp_id
		mes_reciver,e1.emp_name sender_name,e2.emp_name reciver_name,
		e1.emp_email sender_email, e2.emp_email reciver_email
		FROM message m
		LEFT OUTER JOIN employee as e1
		ON m.`mes_sender` = e1.`emp_id`
		LEFT
		OUTER JOIN employee as e2
		ON m.`mes_reciver` = e2.`emp_id`
		order by
		mes_send_date desc
		LIMIT
		#{start}, #{pageSize}
	

	
	
		SELECT m.*,e1.emp_id mes_sender,e2.emp_id mes_reciver,e1.emp_name
		sender_name,e2.emp_name reciver_name,
		e1.emp_email sender_email,
		e2.emp_email reciver_email
		FROM message m
		LEFT OUTER JOIN employee as e1
		ON m.`mes_sender` = e1.`emp_id`
		LEFT OUTER JOIN employee as e2
		ON
		m.`mes_reciver` = e2.`emp_id`
		
			
				and mes_title like
				concat('%',#{mesTitle,jdbcType=VARCHAR},'%')
			
			
				and e2.`emp_email` like
				concat('%',#{empEmail,jdbcType=VARCHAR},'%')
			
			
				and mes_send_date like concat('%', #{mesSendDate}, '%')
			
		
		order by mes_send_date desc
		LIMIT #{start}, #{pageSize}
	

	
	
		select count(*)
		from message m
		LEFT OUTER JOIN employee as e1
		ON
		m.`mes_sender` = e1.`emp_id`
		LEFT OUTER JOIN employee as e2
		ON
		m.`mes_reciver` = e2.`emp_id`
		
			
				and mes_title like
				concat('%',#{mesTitle,jdbcType=VARCHAR},'%')
			
			
				and e2.`emp_email` like
				concat('%',#{empEmail,jdbcType=VARCHAR},'%')
			
			
				and mes_send_date like concat('%', #{mesSendDate}, '%')
			
			
				and mes_reciver=#{mesReciver}
			
			
				and mes_info like
				concat('%',#{mesInfo,jdbcType=VARCHAR},'%')
			
		
		order by mes_send_date desc
	

	
	

	
	
		select count(*)
		from message m
		LEFT OUTER JOIN employee as e1
		ON
		m.`mes_sender` =
		e1.`emp_id`
		LEFT OUTER JOIN employee as e2
		ON
		m.`mes_reciver` =
		e2.`emp_id`
		
			(e1.emp_login_name=#{empLoginName}
			OR
			e2.emp_login_name=#{empLoginName})
			
				and mes_title like
				concat('%',#{mesTitle,jdbcType=VARCHAR},'%')
			
			
				and e2.`emp_email` like
				concat('%',#{empEmail,jdbcType=VARCHAR},'%')
			
			
				and mes_send_date like concat('%', #{mesSendDate}, '%')
			
			
				and mes_reciver = #{mesReciver}
			
			
				and mes_info like
				concat('%',#{mesInfo,jdbcType=VARCHAR},'%')
			
		
	

	
	
		SELECT count(*)
		FROM
		message m
		LEFT OUTER JOIN employee as e1 ON m.`mes_sender` =
		e1.`emp_id`
		LEFT OUTER JOIN employee as e2 ON m.`mes_reciver` =
		e2.`emp_id`
		WHERe
		mes_send_confirm=#{mesSendConfirm}
		and
		e1.emp_login_name=#{empLoginName}
	

	
	
		SELECT count(*)
		FROM
		message m
		LEFT OUTER JOIN employee as e1 ON m.`mes_sender` =
		e1.`emp_id`
		LEFT OUTER JOIN employee as e2 ON m.`mes_reciver` =
		e2.`emp_id`
		WHERe
		e2.emp_login_name=#{empLoginName}
	

	
	
		SELECT count(*)
		FROM
		message m
		LEFT OUTER JOIN employee as e1 ON m.`mes_sender` =
		e1.`emp_id`
		LEFT OUTER JOIN employee as e2 ON m.`mes_reciver` =
		e2.`emp_id`
		WHERe
		e2.emp_login_name=#{empLoginName}
		AND
		mes_send_confirm=#{mesSendConfirm}
		AND
		mes_read_confirm=#{mesReadConfirm}
	


全文索引
package com.icss.oa.message.index;

import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.Filter;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.Sort;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.search.highlight.Highlighter;
import org.apache.lucene.search.highlight.InvalidTokenOffsetsException;
import org.apache.lucene.search.highlight.QueryScorer;
import org.apache.lucene.search.highlight.SimpleFragmenter;
import org.apache.lucene.search.highlight.SimpleHTMLFormatter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Repository;

import com.icss.oa.message.pojo.Message;

@Repository
public class MessageIndexDao {

	// 在线信息索引目录,使用资源文件的键值对
	@Value("#{prop.mes_index_path}")
	private String mesIndexPath;

	// 中文分词器
	public Analyzer analyzer = new SmartChineseAnalyzer(Version.LUCENE_47);

	
	public void create(Document document) throws IOException {
		// 设置索引的分词器
		IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_47, analyzer);
		// 索引目录对象
		Directory directory = FSDirectory.open(new File(mesIndexPath));
		// 索引写入对象
		IndexWriter indexWriter = new IndexWriter(directory, config);
		// 增加索引
		indexWriter.addDocument(document);
		// 提交
		indexWriter.commit();
		// 关闭
		indexWriter.close();
	}

	
	public void update(Term term, Document document) throws IOException {
		// 设置索引的分词器
		IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_47, analyzer);
		// 索引目录对象
		Directory directory = FSDirectory.open(new File(mesIndexPath));
		// 索引写入对象
		IndexWriter indexWriter = new IndexWriter(directory, config);
		// 修改索引
		indexWriter.updateDocument(term, document);
		// 提交
		indexWriter.commit();
		// 关闭
		indexWriter.close();
	}

	
	public void delete(Term term) throws IOException {
		// 设置索引的分词器
		IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_47, analyzer);
		// 索引目录对象
		Directory directory = FSDirectory.open(new File(mesIndexPath));
		// 索引写入对象
		IndexWriter indexWriter = new IndexWriter(directory, config);
		// 删除索引
		indexWriter.deleteDocuments(term);
		// 提交
		indexWriter.commit();
		// 关闭
		indexWriter.close();
	}
	
	
	public List search(Query query) throws IOException, InvalidTokenOffsetsException{
		// 设置索引的分词器
		IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_47, analyzer);
		// 索引目录对象
		Directory directory = FSDirectory.open(new File(mesIndexPath));

		// 搜索对象
		IndexReader indexReader = DirectoryReader.open(directory);
		IndexSearcher indexSearcher = new IndexSearcher(indexReader);

		// 过滤对象(附加的删选条件,效率比较低,因为需要二次遍历数据)
		Filter filter = null;

		// 排序对象(默认按照相关度排序,就是匹配的越多越靠前,类似于百度)
		Sort sort = new Sort();

		// 得到满足条件的前100行记录
		TopDocs topDocs = indexSearcher.search(query, 100, sort);

		// 总记录数
		int recordCount = topDocs.totalHits;

		// 文档集合
		ArrayList mesList = new ArrayList<>();

		// ============高亮和截取某个字段的文本摘要设置=============
		// 设置环绕的首尾字符串
		SimpleHTMLFormatter formatter = new SimpleHTMLFormatter("", "");
		// 语法高亮显示设置
		Highlighter highlighter = new Highlighter(formatter, new QueryScorer(query));
		// 100是是表示摘要的字数
		highlighter.setTextFragmenter(new SimpleFragmenter(100));
		// ===================================================

		// 遍历文档
		for (int i = 0; i < recordCount; i++) {
			// 获得原始文档
			ScoreDoc scoreDoc = topDocs.scoreDocs[i];
			// 获得文档内部编号
			int docSn = scoreDoc.doc;
			// 获得Document文档
			Document document = indexSearcher.doc(docSn);

			// 获得员工编号
			Integer mesId = Integer.parseInt(document.get("mesId"));
			// 获得员工姓名
			String mesTitle = document.get("mesTitle");
			// 获得员工电话
			String mesInfo = document.get("mesInfo");

			// 把员工自我介绍进行截取摘要以及添加高亮
			TokenStream tream = analyzer.tokenStream("mesInfo", new StringReader(mesInfo));
			String mesInfoFragment = highlighter.getBestFragment(tream, mesInfo);

			// 把姓名增加高亮
			tream = analyzer.tokenStream("mesTitle", new StringReader(mesTitle));
			String mesTitleFragment = highlighter.getBestFragment(tream, mesTitle);

			// 如果内容没有包含搜索关键字或原始内容不足100字
			if (mesInfoFragment == null) {
				int minLen = mesInfo.length() >= 100 ? 100 : mesInfo.length();
				mesInfoFragment = mesInfo.substring(0, minLen);
			}

			if (mesTitleFragment == null) {
				int minLen = mesTitle.length() >= 100 ? 100 : mesTitle.length();
				mesTitleFragment = mesTitle.substring(0, minLen);
			}

			// 封装到Employee对象
			Message mes = new Message();

			mes.setMesId(mesId);
			mes.setMesTitle(mesTitleFragment);
			mes.setMesInfo(mesInfoFragment);

			// 放到集合中
			mesList.add(mes);
		}

		return mesList;
	}

}

总结

gitee链接:https://gitee.com/bao-hailu/oa.git

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号