📄 inbookebo.java
字号:
package cn.javass.bookmgr.inbook.business.ebo;
import cn.javass.bookmgr.inbook.business.ebi.InBookEbi;
import cn.javass.bookmgr.inbook.valueobject.*;
import java.util.*;
import cn.javass.bookmgr.inbook.dao.factory.InBookDBFactory;
import cn.javass.bookmgr.stock.business.factory.StockFactory;
import cn.javass.bookmgr.stock.valueobject.StockModel;
/**
* 进货模块逻辑层具体实现类,提供外部模块和表现层所需要的功能
*
* <p>Title: Java私塾第一个Java项目——图书进销存系统(单机版)</p>
* <p>Description: 网址:<a href="http://www.javass.cn">http://www.javass.cn</a>
* 新电话:010-86835215 新地址:北京市海淀区厂洼路5号院深博达商务楼5层</p>
* <p>Copyright: Copyright (c) 2008</p>
* <p>Company: Java私塾</p>
* @author Java私塾
* @version 1.0
*/
public class InBookEbo implements InBookEbi {
/**
* 当前用于操作的进货单主记录数据,格式是:key-进货单主记录编号,value-进货单主记录model
*/
private static Map mainMap = new HashMap();
/**
* 当前用于操作的进货单明细记录数据,格式是:key-进货单明细记录编号,value-进货单明细记录model
*/
private static Map detailMap = new HashMap();
/**
* 静态块,获取进货模块对应的数据文件中的所有数据,包括进货主记录和明细记录
*/
static {
mainMap = InBookDBFactory.getInstance().createInBookDAO().getData();
detailMap = InBookDBFactory.getInstance().createInBookDAO().getDetailMap();
}
public boolean addInBook(InBookModel ibm,Collection colDetail) {
//1:保存进货单的主记录
mainMap.put(ibm.getId(), ibm);
InBookDBFactory.getInstance().createInBookDAO().saveData(mainMap);
//2:循环处理进货单明细的记录
Iterator it = colDetail.iterator();
while(it.hasNext()){
InBookDetailModel idm = (InBookDetailModel)it.next();
//因为现在不考虑删除,所以现在map的记录数加1就可以做id
//最好还是自己提供一个Id的生成器,这样才能保证不重复
int nibm = detailMap.size()+1;
idm.setId(""+nibm);
detailMap.put(idm.getId(),idm);
//3:修改库存记录
StockModel stm = StockFactory.getInstance().createStockEbi().getStockModelById(idm.getBookId());
if(stm.getId()==null || stm.getId().trim().length()==0){
stm.setId(idm.getBookId());
stm.setBookId(idm.getBookId());
}
stm.setSumNum(stm.getSumNum()+idm.getSumNum());
StockFactory.getInstance().createStockEbi().updateStock(stm);
}
//保存进货单明细的记录
InBookDBFactory.getInstance().createInBookDAO().saveDetailData(detailMap);
return true;
}
public boolean updateInBook(InBookModel newIbm) {
//1:修改当前map中的对应数据
mainMap.put(newIbm.getId(), newIbm);
//2:调用数据层把数据保存起来
InBookDBFactory.getInstance().createInBookDAO().saveData(mainMap);
return true;
}
public boolean deleteInBook(InBookModel ibm) {
//1:删除当前map中的对应数据
mainMap.remove(ibm.getId());
//2:调用数据层把数据保存起来
InBookDBFactory.getInstance().createInBookDAO().saveData(mainMap);
return true;
}
public Collection getAll() {
//就是把当前Map中的value值取出来,放到集合中并返回
Collection col = new ArrayList();
Iterator it = mainMap.keySet().iterator();
while (it.hasNext()) {
String key = (String) it.next();
InBookModel ibm = (InBookModel) mainMap.get(key);
col.add(ibm);
}
return col;
}
public Collection getByCondition(QueryInBookModel qm) {
//直接在当前的Map中查找
Collection col = new ArrayList();
Iterator it = mainMap.keySet().iterator();
while (it.hasNext()) {
String key = (String) it.next();
InBookModel ibm = (InBookModel) mainMap.get(key);
//判断是否满足条件
if (this.isMatch(ibm, qm, false)) {
col.add(ibm);
}
}
return col;
}
/**
* 判断一个进货单的主记录Model的数据是否能满足查询条件的要求
* @param ibm 进货单的主记录Model
* @param qm 查询Model
* @param isById 表示进货单的主记录编号的查询方式,
* true表示对进货单的主记录编号完全匹配,false表示对进货单的主记录编号模糊匹配
* @return true表示满足条件,false表示不满足条件
*/
private boolean isMatch(InBookModel ibm, QueryInBookModel qm, boolean isById) {
boolean flag = false;
boolean f1 = true;
boolean f2 = true;
boolean f3 = true;
boolean f4 = true;
boolean f5 = true;
boolean f6 = true;
if (!isById) {
//对进货单的主记录编号模糊匹配
if (qm.getId() != null && qm.getId().trim().length() > 0) {
if (ibm.getId() != null && ibm.getId().trim().length() > 0 &&
ibm.getId().indexOf(qm.getId()) >= 0) {
f1 = true;
}
else {
f1 = false;
}
}
}else {
//对进货单的主记录编号完全匹配
if (qm.getId() != null && qm.getId().trim().length() > 0) {
if (ibm.getId() != null && ibm.getId().trim().length() > 0 &&
ibm.getId().equals(qm.getId())) {
f1 = true;
}
else {
f1 = false;
}
}
}
if (qm.getInUserId() != null && qm.getInUserId().trim().length() > 0) {
//对进货单的操作人员编号模糊匹配
if (ibm.getInUserId() != null && ibm.getInUserId().trim().length() > 0 &&
ibm.getInUserId().indexOf(qm.getInUserId()) >= 0) {
f2 = true;
}
else {
f2 = false;
}
}
//对进货单的操作时间进行区间匹配
if (qm.getInDate() > 0) {
if (ibm.getInDate() >= qm.getInDate()) {
f3 = true;
}
else {
f3 = false;
}
}
if (qm.getInDate2() > 0) {
if (ibm.getInDate() <= qm.getInDate2()) {
f4 = true;
}
else {
f4 = false;
}
}
//如果满足所有的条件,那么这条记录就完全符合条件
flag = f1 && f2 && f3 && f4 ;
return flag;
}
public InBookModel getInBookModelById(String userId) {
InBookModel retIbm = new InBookModel();
//1:组织查询的model
QueryInBookModel qm = new QueryInBookModel();
qm.setId(userId);
//2:到当前的map中进行数据匹配
Iterator it = mainMap.keySet().iterator();
while (it.hasNext()) {
String key = (String) it.next();
InBookModel ibm = (InBookModel) mainMap.get(key);
//3:判断是否符合条件
if (this.isMatch(ibm, qm, true)) {
retIbm = ibm;
//4:找到一条就停止
break;
}
}
//5:返回查询到的数据
return retIbm;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -