borrowaction.java

来自「实现图书的借阅和管理信息化」· Java 代码 · 共 277 行

JAVA
277
字号
/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.moonman.libraryManager.control.struts.action;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.actions.MappingDispatchAction;
import org.apache.struts.validator.DynaValidatorForm;

import com.moonman.libraryManager.model.service.BookService;
import com.moonman.libraryManager.model.service.BorrowService;
import com.moonman.libraryManager.model.service.ReaderService;
import com.moonman.libraryManager.model.vo.Books;
import com.moonman.libraryManager.model.vo.Borrow;
import com.moonman.libraryManager.model.vo.Punish;
import com.moonman.libraryManager.model.vo.Reader;
import com.moonman.libraryManager.model.vo.Rules;
import com.moonman.libraryManager.model.vo.Store;

/**
 * MyEclipse Struts Creation date: 01-23-2008
 * 
 * XDoclet definition:
 * 
 * @struts.action validate="true"
 */
public class BorrowAction extends MappingDispatchAction {
	/*
	 * Generated Methods
	 */

	private BorrowService borrowService;

	private ReaderService readerService;

	private BookService bookService;

	private BookAction bookAction;

	public void setBookAction(BookAction bookAction) {
		this.bookAction = bookAction;
	}

	public void setBookService(BookService bookService) {
		this.bookService = bookService;
	}

	public void setReaderService(ReaderService readerService) {
		this.readerService = readerService;
	}

	public void setBorrowService(BorrowService borrowService) {
		this.borrowService = borrowService;
	}

	/**
	 * 处理一次借阅记录的界面
	 * 
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return ActionForward
	 */
	public ActionForward borrow(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		ActionMessages mess = new ActionMessages();
		DynaValidatorForm df = (DynaValidatorForm) form;
		String bookNumber = df.getString("bookNumber");
		String type = df.getString("type");
		String readerCardNo = df.getString("readerCardNo");
		// 获得读者信息 根据证件号码
		Reader reader = this.readerService.getReaderByZjh(readerCardNo);
		if (reader != null) {
			byte flag = this.bookAction.judgeBorrow(reader,
					request, Integer.parseInt(bookNumber));
			switch (flag) {
			case 1:
				// 可以继续借阅
				// 通过图书的 索取号和读者的编号获得读者的交易信息
				// 读者已经预定了
				Borrow borrow = this.borrowService.getBorrowByReaderIdAndSqh(
						reader.getReaderId(), Integer.parseInt(bookNumber));
				// 判断预定信息是否存在
				if (borrow != null) {
					// 更新预约状态为 未归还 状态
					borrow.setZt(2);
					this.borrowService.modifyBorrowByBorrow(borrow);
				} else {
					// 读者没有预定直接借阅
					Borrow bor = new Borrow();
					bor.setBookId(new Integer(bookNumber));
					bor.setReaderId(reader.getReaderId());
					bor.setJysj(new Date());
					Calendar cend = Calendar.getInstance();
					// 获得用户规则
					Rules rule = reader.getRules();
					// 获得可以预约的天数
					cend.add(Calendar.DAY_OF_MONTH, rule.getBlts());
					bor.setDqsj(cend.getTime());
					bor.setGhrq(null);
					bor.setZt(2);
					bor.setXjcs(0);
					// 添加一条新记录
					this.borrowService.addBorrow(bor);
				}
				// 更新官藏表中的信息
				this.bookService.modifyStoreBySqh(Integer.parseInt(bookNumber),
						"未归还");
				mess.add("borrow.book.success", new ActionMessage(
						"borrow.book.success"));
				this.saveErrors(request, mess);
				return mapping.findForward("borrowSuccess");
			case 2:
				// 违反规则
				mess.add("book.bound", new ActionMessage("book.bound", reader
						.getRules().getBlts().intValue()));
				break;
			case 3:
				// 图书不存在
				mess.add("no.book.sended", new ActionMessage("no.book.sended",
						"3"));
				break;
			}
		} else {
			mess.add("no.name", new ActionMessage("no.name"));
		}
		this.saveErrors(request, mess);
		return mapping.getInputForward();
	}

	/**
	 * 处理一次归还图书的界面
	 * 
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return ActionForward 根据模型的结果选择合适的视图
	 */
	public ActionForward returnTreate(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		ActionMessages mess = new ActionMessages();
		DynaValidatorForm df = (DynaValidatorForm) form;
		String bookNumber = df.getString("bookNumber");
		String type = df.getString("type");
		String readerCardNo = df.getString("readerCardNo");
		// 首先判断用户是否存在
		Reader reader = this.readerService.getReaderByZjh(readerCardNo);
		if (reader != null) {
			// 判断图书状态是否正确
			Borrow borrow = this.borrowService.getBorrowByReaderIdAndSqh(reader
					.getReaderId(), Integer.parseInt(bookNumber));
			if (borrow != null) {
				if (borrow.getZt() == 1) {
					mess.add("book.returned", new ActionMessage(
							"book.returned",
							(new SimpleDateFormat("yyyy-MM-dd")).format(borrow
									.getDqsj())));
				} else {
					// 设置成为已经归还
					borrow.setZt(1);
					// 设置归还时间
					borrow.setGhrq(new Date());
					// 更新借阅表中的信息
					this.borrowService.modifyBorrowByBorrow(borrow);
					// 根据索取号获得馆藏的信息
					Store st = this.bookService.getStoreByStore(borrow
							.getBookId(), "未归还");
					st.setSkzt("可借");
					st.setJycs(st.getJycs() + 1);
					// 更新管藏表中的信息
					this.bookService.modifyStoreByStore(st);
					long timeB = System.currentTimeMillis()
							- borrow.getDqsj().getTime();
					int day = Math.round(timeB / 60 / 60 / 24 / 1000);
					Store store = this.bookService.getStoreByStore(borrow
							.getBookId(), "可借");
					Books book = store.getBooks();
					// 过期天数
					request.setAttribute("cgsj", day);
					// 保存图书信息
					request.setAttribute("book", book);
					// 设置借阅信息
					request.setAttribute("borrow", borrow);
					// 设置罚款金额
					request.setAttribute("hkje", book.getPcje());
					return mapping.findForward("returnSuccess");
				}
			} else {
				// 没有此图书借阅信息
				mess.add("no.info", new ActionMessage("no.info"));
			}
		} else {
			// 用户不存在
			mess.add("no.name", new ActionMessage("no.name"));
		}
		this.saveErrors(request, mess);
		return mapping.getInputForward();
	}

	/**
	 * 处理罚款界面
	 * 
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return ActionForward 根据模型的结果选择合适的视图
	 */
	public ActionForward punishShow(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		String readerId = request.getParameter("readerId");
		String bookId = request.getParameter("bookId");
		request.setAttribute("readerId", readerId);
		request.setAttribute("bookId", bookId);
		return mapping.findForward("punishShow");
	}

	/**
	 * 进行罚款操作
	 * 
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return ActionForward 根据模型的结果选择合适的视图
	 */
	public ActionForward punish(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		String readerId = request.getParameter("readerId");
		String bookId = request.getParameter("bookId");
		String type = request.getParameter("type");
		String result = request.getParameter("result");
		String bail = request.getParameter("bail");
		Punish pun = new Punish();
		pun.setBookId(Integer.parseInt(bookId));
		pun.setReaderId(Integer.parseInt(readerId));
		pun.setCfyy(type);
		pun.setCfjg(result);
		pun.setFkje(Float.parseFloat(bail));
		this.borrowService.addPunish(pun);
		return mapping.findForward("punishSuccess");
	}

	/**
	 * 根据索取号删除预定图书的信息
	 * 
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return ActionForward 根据模型的结果选择合适的视图
	 */
	public ActionForward deleteBorrowBySqh(ActionMapping mapping,
			ActionForm form, HttpServletRequest request,
			HttpServletResponse response) {
		String sqh = request.getParameter("id");
		// 删除预定图书的信息
		this.borrowService.deleteBorrowBySqh(sqh);
		// 更新管藏表中图书的信息
		this.bookService.modifyStoreBySqh(Integer.parseInt(sqh), "可借");
		return mapping.findForward("deleteSuccess");
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?