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

📄 salebookebo.java

📁 java私塾里的图书进销存项目的源代码,非常不错,J2SE基础知识复习非常有帮助!
💻 JAVA
字号:
package cn.javass.bookmgr.salebook.business.ebo;

import cn.javass.bookmgr.salebook.business.ebi.SaleBookEbi;
import cn.javass.bookmgr.salebook.valueobject.*;
import java.util.*;
import cn.javass.bookmgr.salebook.dao.factory.SaleBookDBFactory;
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 SaleBookEbo implements SaleBookEbi {
  /**
   * 当前用于操作的销售主记录数据,格式是:key-销售主记录编号,value-销售主记录model
   */
  private static Map mainMap = new HashMap();
  /**
   * 当前用于操作的销售子记录数据,格式是:key-销售子记录编号,value-销售子记录model
   */
  private static Map detailMap = new HashMap();
  /**
   * 静态块,获取销售模块对应的数据文件中的所有数据,包括销售主记录和销售子记录
   */
  static {
    mainMap = SaleBookDBFactory.getInstance().createSaleBookDAO().getData();
    detailMap = SaleBookDBFactory.getInstance().createSaleBookDAO().
        getDetailMap();
  }

  public boolean addSaleBook(SaleBookModel sbm, Collection colDetail) {
    //1:保存销售单的主记录
    mainMap.put(sbm.getId(), sbm);
    SaleBookDBFactory.getInstance().createSaleBookDAO().saveData(mainMap);
    //2:保存销售单明细的记录
    Iterator it = colDetail.iterator();
    while (it.hasNext()) {
      SaleBookDetailModel idm = (SaleBookDetailModel) it.next();
      //因为现在不考虑删除,所以现在map的记录数加1就可以做id
      //最好还是自己提供一个Id的生成器,这样才能保证不重复
      int num = detailMap.size() + 1;
      idm.setId("" + num);
      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);
    }
    //保存销售单明细的记录
    SaleBookDBFactory.getInstance().createSaleBookDAO().saveDetailData(
        detailMap);
    return true;
  }

  public boolean updateSaleBook(SaleBookModel newsbm) {
    //1:把新数据添加到当前的map中
    mainMap.put(newsbm.getId(), newsbm);
    //2:调用数据层把数据保存起来
    SaleBookDBFactory.getInstance().createSaleBookDAO().saveData(mainMap);
    return true;
  }

  public boolean deleteSaleBook(SaleBookModel sbm) {
    //1:修改当前map中的对应数据
    mainMap.remove(sbm.getId());
    //2:调用数据层把数据保存起来
    SaleBookDBFactory.getInstance().createSaleBookDAO().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();
      SaleBookModel sbm = (SaleBookModel) mainMap.get(key);
      col.add(sbm);
    }
    return col;
  }

  public Collection getByCondition(QuerySaleBookModel qm) {
    Collection col = new ArrayList();
     //直接在当前的Map中查找
    Iterator it = mainMap.keySet().iterator();
    while (it.hasNext()) {
      String key = (String) it.next();
      SaleBookModel sbm = (SaleBookModel) mainMap.get(key);
      //判断是否满足条件
      if (this.isMatch(sbm, qm, false)) {
        col.add(sbm);
      }
    }
    return col;
  }
  /**
   * 判断一个销售主记录Model的数据是否能满足查询条件的要求
   * @param sbm 销售主记录Model
   * @param qm 查询Model
   * @param isById 表示销售主记录编号的查询方式,
   *               true表示对销售主记录编号完全匹配,false表示对销售主记录编号模糊匹配
   * @return true表示满足条件,false表示不满足条件
   */
  private boolean isMatch(SaleBookModel sbm, QuerySaleBookModel 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 (sbm.getId() != null && sbm.getId().trim().length() > 0 &&
            sbm.getId().indexOf(qm.getId()) >= 0) {
          f1 = true;
        }
        else {
          f1 = false;
        }
      }
    }
    else {
      //对销售主记录编号完全匹配
      if (qm.getId() != null && qm.getId().trim().length() > 0) {
        if (sbm.getId() != null && sbm.getId().trim().length() > 0 &&
            sbm.getId().equals(qm.getId())) {
          f1 = true;
        }
        else {
          f1 = false;
        }
      }
    }
    //对销售操作人员进行模糊匹配
    if (qm.getOutUserId() != null && qm.getOutUserId().trim().length() > 0) {
      if (sbm.getOutUserId() != null && sbm.getOutUserId().trim().length() > 0 &&
          sbm.getOutUserId().indexOf(qm.getOutUserId()) >= 0) {
        f2 = true;
      }
      else {
        f2 = false;
      }
    }
    //对销售时间进行区间匹配
    if (qm.getOutDate() > 0) {
      if (sbm.getOutDate() >= qm.getOutDate()) {
        f3 = true;
      }
      else {
        f3 = false;
      }
    }
    if (qm.getOutDate2() > 0) {
      if (sbm.getOutDate() <= qm.getOutDate2()) {
        f4 = true;
      }
      else {
        f4 = false;
      }
    }
    //如果满足所有的条件,那么这条记录就完全符合条件
    flag = f1 && f2 && f3 && f4;
    return flag;
  }

  public SaleBookModel getSaleBookModelById(String userId) {
    SaleBookModel retsbm = new SaleBookModel();
    //1:组织查询的model
    QuerySaleBookModel qm = new QuerySaleBookModel();
    qm.setId(userId);
    //2:到当前的map中进行数据匹配
    Iterator it = mainMap.keySet().iterator();
    while (it.hasNext()) {
      String key = (String) it.next();
      SaleBookModel sbm = (SaleBookModel) mainMap.get(key);
      //3:判断是否符合条件
      if (this.isMatch(sbm, qm, true)) {
        retsbm = sbm;
        //4:找到一条就停止
        break;
      }
    }
    return retsbm;
  }

}

⌨️ 快捷键说明

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