仓库管理系统(上货、回库)

仓库管理系统(上货、回库)

超市库存系统,库存管理员可登录系统,三次机会,否则需要管理员解锁。仓库管理员可选择入库,上货,回库。入库时,选择已有商品(可通过检索方式),如果已有商品中没有此商品,则可新建。上货:即将库中物品放至超市中。回库:将超市内物品重新放回库中。 物品即将过期时有过期提醒。

上一篇是写了过期提醒,这篇主要写上货和回库,其他功能大都是实现一些基本的增删改查就不一一写了。

首先说一下页面的布局,是使用easyui的面板,将页面分为上、左、中、右、下,只有中部是通过选择左部菜单中的选项,从而打开选项卡变换的,其他模块都是固定不变的。

以下时上货和回库的效果图:


仓库管理系统(上货、回库)_第1张图片

图1.仓库原内库存量 

 


仓库管理系统(上货、回库)_第2张图片
 图2.超市内原货量

 


仓库管理系统(上货、回库)_第3张图片
 图3.上货量超过库存量,发出提醒

 


仓库管理系统(上货、回库)_第4张图片
 图4.上货量为20

 


仓库管理系统(上货、回库)_第5张图片
 图5.上货成功1(库存量减20)

 


仓库管理系统(上货、回库)_第6张图片
 图6.上货成功2(超市内货量加20)

 


仓库管理系统(上货、回库)_第7张图片
 图7.回库量大于超市内货量

 


仓库管理系统(上货、回库)_第8张图片
 图8.回库量30

 


仓库管理系统(上货、回库)_第9张图片
 图9.回库成功1(超市货量减30)

 


仓库管理系统(上货、回库)_第10张图片
 图10.回库成功2(仓库内库存量加30)

 

大致效果如上。

那么下面就说一下上货和回库在dao层实现的方法吧:其实这两个方法大相径庭,上货呢,就只是在批次表中将库存量减前台页面传来的上货量,再将产品表中的货量加上传过来的上货量;回库呢,就是与之相反的操作,即将sql语句中的加减号与上货的反过来即可(下面附上上货方法的代码)。

 

/**
* 根据商品编号,和用户输入的数量,改变该商品的数量,
* 即:增加超市内商品数量,减少库存量,简称上货,
*(*********回库,就是减少 超市呢商品数量,增加库存量***********)
* (由前台js做出判断:若上货的数量超过库存量则给予用户提醒)
* @param proid 商品编号
* @param count 数量
* @return
*/
public boolean changeWarehouse(String proid,int amount){
        //batch 是批次表,sto_amount是库存量
        String sql = "update batch set sto_amount=sto_amount - "+ amount+" where proid="+proid                 +"and sto_amount >="+ amount ;
       //product 是产品表,amount是超市内货量
       String sql2 = "update product set amount=amount + "+ amount+" where proid="+proid ;
       boolean result = false;
       conn = DBUtil.getConn();
       try {
              ps = conn.prepareStatement(sql);
              int count = ps.executeUpdate();
              if(count>0){
                                 ps = conn.prepareStatement(sql2);
                                 int count1 = ps.executeUpdate();
                                 if(count1>0){
                                                       result = true;
                                  }
               }
       } catch (SQLException e) {
                    e.printStackTrace();
       }finally{
                   DBUtil.close(rs, ps, conn);
       }
        return result;
}

  

  接下来是上货的页面代码:

 

 

 

  当在页面点击 上货 时,会弹出一个window窗口,携带商品编号和需要用户输入的上货量,提交和重置按钮。

回库 代码与之相似)

在script中

$("#change").linkbutton({
width:80,
plain:true,
iconCls:"icon-edit",
onClick:function(){
var rows = $("#mytable").datagrid("getSelections");
if(rows.length != 1){
$.messager.alert("警告框","请选择一行数据进行修改","info");
return;
}else{
$("#batch_window").window({
title:"上货",
width:260,
height:220,
modal:true,//可视化
href:"${pageContext.request.contextPath}/jsp/change.jsp",
queryParams:{"type":"change",
"baid":rows[0].baid,
"sto_amount":rows[0].sto_amount,
"proid":rows[0].pro.proid,
//"proname":rows[0].pro.proname
},
onClose:function(){
$("#mytable").datagrid("reload");
}
});
}
}
});

 

下面是上货界面的代码,回库界面代码与之相似

<%@ page language="java"  pageEncoding="utf-8"%>


  
    上货界面
    
    
    
    
    
  
  
  
  	
  
	页面显示内容
  	

提交 重置

 

最后就是servlet中的代码啦,当用户在页面发出上货(change)的请求,servlet就会调用上货的方法并进行相应的页面跳转,当用户在页面发出回库(back)的请求,servlet也会作出相应的响应。

// 将库存中商品的数量减少放置到超市中的商品数量
else if ("change".equals(type)) {
String proid = request.getParameter("pro");//获取商品编号
int amount = Integer.parseInt(request.getParameter("count"));//获取上货量
boolean result = service.changeWarehouse(proid, amount);
Gson obj = new Gson();
String str = obj.toJson(result);//转gson格式
System.out.println(str);
if (result) {
request.getRequestDispatcher("jsp/search.jsp").forward(request,
response);//跳转页面到查询库存列表页面(即查询批次列表)
} else {
out.print("商品上货数量不能超过库存量!");
}
}

// 将从超市中减少的商品数量添加到仓库中的库存量中
else if ("back".equals(type)) {
String proid = request.getParameter("pro");
int amount = Integer.parseInt(request.getParameter("count"));//获取回货量
boolean result = service.changeMarket(proid, amount);
if (result) {
Gson obj = new Gson();
String str = obj.toJson(result);
System.out.println(str);
request.getRequestDispatcher("jsp/products.jsp").forward(
request, response);//跳转到查询超市商品列表页面(即查询产品表)
} else {
out.print("回库的商品数量不能超过超市内货存量!");
}
}

 

整理得比较凌乱,如有什么不够清楚的地方可以给我评论指出,有什么更好的方法和建议也希望能得到各位大神的指教!

 

你可能感兴趣的:(J2EE)