基于 Spring SSM框架 开发的一套 进存销管理系统

**

基于 Spring SSM框架 开发的一套 进存销管理系统

**

1.编写工具:Eclipse;
2.开发环境 java jdk版本1.8,Tomact 版本9.0;
3.运用框架 SSM(Spring spring Mvc Mybatis)Bootstrap-table Maven;
4.前台脚本语言 js jq ;
5.相关技术 SSM框架的集成
文件的上传下载
jave Excel的部分相关操作
controller service 之间的合理运用

项目代码文件层次

基于 Spring SSM框架 开发的一套 进存销管理系统_第1张图片

主要功能模块

1:系统管理员登录模块(此处运用验证进行了用户的登录验证 可以防止机器人的识别进行操作 登录时会判断当前管理员是否已有登录账号)
基于 Spring SSM框架 开发的一套 进存销管理系统_第2张图片
2:用户注册模块 (当系统管理员没有登录账号时可以通过注册进行登录 注册时 输入的账号 以及邮箱都为唯一约束 不可重复 并且阻止用户注册)
基于 Spring SSM框架 开发的一套 进存销管理系统_第3张图片
3:系统首页(管理员登录成功后 进入的页面 在此 可以通过搜索框对系统的功能进行搜索 快速查找 如 输入物料查找功能 点击提示框 则可以进入到相应的功能页面)

基于 Spring SSM框架 开发的一套 进存销管理系统_第4张图片基于 Spring SSM框架 开发的一套 进存销管理系统_第5张图片4:管理员信息管理模块(管理员可在此页面对自己相应的头像 地址 邮箱 密码 出生年月 等 个人资料进行设置后修改)
基于 Spring SSM框架 开发的一套 进存销管理系统_第6张图片
5:系统物料管理页(管理可在此页面进行系统物料的录入 并且 录入的物料为唯一条件 当录入后 会做相应的判断)录入成功后会自动显示在本页面 页面中搜索框提供快速查找系统物料 为模糊查询 并带有物料的删除功能
基于 Spring SSM框架 开发的一套 进存销管理系统_第7张图片
6:物料供应商的相关信息设置
基于 Spring SSM框架 开发的一套 进存销管理系统_第8张图片
7:商品采购的申请 (从一录入的系统物料中进行选择采购)
基于 Spring SSM框架 开发的一套 进存销管理系统_第9张图片
8:已提交申请的批准驳回(批准时 需要批准人进行签名并保存 驳回时 可附上驳回原因)
基于 Spring SSM框架 开发的一套 进存销管理系统_第10张图片
基于 Spring SSM框架 开发的一套 进存销管理系统_第11张图片
9:审核通过的申请可在商品采购页 进行采购 (采购时 会提醒选择采购数量 已交存放仓库 并且会判断采购数量是否大于所选仓库的剩余容量 反之则需重新选择入库仓库 或采购数量)
基于 Spring SSM框架 开发的一套 进存销管理系统_第12张图片
基于 Spring SSM框架 开发的一套 进存销管理系统_第13张图片
10:系统仓库管理(管理员可在本页面对系统仓库进行管理 仓库的管理 以及商品的出库 销售 并且会对相应的数量进行自动更新 当 当前商品的系统库存不够销售以及出库数量时 会提示管理重新操作 )
基于 Spring SSM框架 开发的一套 进存销管理系统_第14张图片
11:仓库管理 (当系统或对应商有新加仓库 或废弃仓库 可地仓库进行仓库其添加仓库会判断当前系统是否已有改仓库 删除仓库则会判断所选仓库中是否还包含有存放物料 反之则无法进行操作)
基于 Spring SSM框架 开发的一套 进存销管理系统_第15张图片
基于 Spring SSM框架 开发的一套 进存销管理系统_第16张图片
12:退出系统(完成相对应的操作后 点击退出即可完成退出登录)
基于 Spring SSM框架 开发的一套 进存销管理系统_第17张图片

部分代码片段

1:Users_infoController (用户信息控制器)

package com.controller;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.Ajax.AjaxRes;
import com.entitys.Users_infoEntity;
import com.service.Users_infoService;
import com.uuid.UuidUtil;

@Controller
public class Users_infoController {
	@Autowired
	private Users_infoService users_infoService;

	/**
	 * 用户注册 并且判断用户账号 以及用户邮箱是否被使用 如果是 则阻止用户注册 并提示跟换
	 * 
	 * @return
	 * @throws IOException 
	 */
	@RequestMapping("/addUsers")
	@ResponseBody
	public AjaxRes addUsers(Users_infoEntity users_info,
			@Param("users_zhanghao") String users_zhanghao,
			@Param("users_mail") String users_mail) throws IOException {
		AjaxRes res = new AjaxRes();
		// 账号判断
		users_info.setUsers_zhanghao(users_zhanghao);
		List users_infobyzh = users_infoService.findbyzh(users_info);
		// 邮箱判断
		users_info.setUsers_mail(users_mail);
		List users_infobyem = users_infoService.findbyem(users_info);
		if (users_infobyzh.size() > 0) {
			res.setResMsg("该账号已被使用!");
		} else if (users_infobyem.size() > 0) {
			res.setResMsg("该邮箱已被使用!");
		} else {
			// 用户注册
			// 用户赋值Uuid
			users_info.setUsers_id(UuidUtil.get32UUID());
			users_infoService.insert(users_info);
			res.setResMsg("注册成功!");
		}
		return res;
	}

	/**
	 * 用户登录 并且判断用户账号 以及用户密码的输入是否正确
	 * 
	 * @return
	 */
	@RequestMapping("/users_login")
	@ResponseBody
	public AjaxRes users_login(Users_infoEntity users_info,
			@Param("users_zhanghao") String users_zhanghao,
			@Param("users_pws") String users_pws,
			HttpServletRequest req,
			@Param("logoVerify_val") String logoVerify_val) {
		AjaxRes res = new AjaxRes();
		HttpSession session=req.getSession();
		String ip = req.getHeader("x-forwarded-for");
		// 账号判断
		users_info.setUsers_zhanghao(users_zhanghao);
		List users_infobyzh = users_infoService.findbyzh(users_info);
		// 密码判断
		users_info.setUsers_pws(users_pws);
		List users_infobypws = users_infoService.findbypws(users_info);
		if (users_infobyzh.isEmpty()) {
			res.setResMsg("该账号未注册!");
		} else if (users_infobypws.isEmpty()) {
			res.setResMsg("密码不正确!");
		}else if (!(logoVerify_val.equalsIgnoreCase(session.getAttribute("logoVerify_val").toString()))) {//验证码不区分大小写
			res.setResMsg("验证码不正确!");
		} else {
			//用户登录
			session.setAttribute("user",users_infobyzh.get(0));
			//更新用户登录ip地址 以及登录区域
			users_info.setUsers_zhanghao(users_zhanghao);
			users_info.setUsers_dl_ip(ip);
			System.out.println("---------------------------------------------"+ip);
			users_infoService.updatedlzc(users_info);
			res.setResMsg("登录成功!");
		}
		return res;
	}
	/**
	 * 用户退出登录(清空session)
	 * 
	 * @return
	 */
	@RequestMapping("/logout")
	public String Logout(HttpServletRequest req){
		HttpSession session=req.getSession();
		session.setAttribute("user", null);
		return "redirect:login";	
	}
	/**
	 * 用户资料设置
	 * @param users_info
	 * @param md
	 * @return
	 */
	@RequestMapping("/user_info")
	public String user_info(Users_infoEntity users_info,Model md){
		List user_infos=users_infoService.findbyId(users_info);
		//日期格式转换
		SimpleDateFormat slf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		for(int i=0;i users_infobyna = users_infoService.findbyna(users_info);
		// 邮箱判断
		users_info.setUsers_mail(users_mail);
		List users_infobyem = users_infoService.findbyem(users_info);
		if(users_infobyna.size()>0){
			res.setResMsg("该昵称已被使用!");
		} else if (users_infobyem.size() > 0) {
			res.setResMsg("该邮箱已被使用!");	
		}else{
			//用户修改个人数据
			users_infoService.update(users_info);
			res.setResMsg("修改成功!");	
		}
		return res;
	}
	/**
	 * 处于安全 用户在修改密码和邮箱时 必须经过原(旧密码的验证 )通过后才可修改 反之则阻止 修改成功时清空当前session 提示重新登录
	 * @param users_info
	 * @param resq
	 * @param old_users_pws
	 * @param users_mail
	 * @return
	 * @throws IOException
	 */
	@RequestMapping("/update_user_save")
	@ResponseBody
	public AjaxRes update_user_save(Users_infoEntity users_info,
			HttpServletRequest req,
			@Param("old_users_pws") String old_users_pws,
			@Param("users_pws") String users_pws,
			@Param("users_mail") String users_mail) {
		AjaxRes res=new AjaxRes();
		//旧密码验证判断
		users_info.setUsers_pws(old_users_pws);
		List users_infobypws = users_infoService.findbypws(users_info);
		// 邮箱判断
		users_info.setUsers_mail(users_mail);
		List users_infobyem = users_infoService.findbyem(users_info);
		if(users_infobypws.isEmpty()){
			res.setResMsg("原密码验证不通过 请核对后在修改!");
		} else if (users_infobyem.size() > 0) {
			res.setResMsg("该邮箱已被使用!");	
		}else{
			//用户修改个人数据
			users_info.setUsers_pws(users_pws);
			users_infoService.updatesave(users_info);
			res.setResMsg("修改成功当前登陆已过期请重新登陆!");
			//清空session
			HttpSession session=req.getSession();
			session.setAttribute("user", null);
		}
		return res;
	}
}

2:Shop_caigoushenheiController (采购审核控制器)

package com.controller;

import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.Ajax.AjaxRes;
import com.entitys.Shop_caigoushenheiEntity;
import com.entitys.Shop_wuliaoEntity;
import com.pageUtil.Page;
import com.service.Shop_caigoushenheiService;
import com.service.Shop_wuliaoService;
import com.uuid.UuidUtil;

import sun.misc.BASE64Decoder;

@Controller
public class Shop_caigoushenheiController {

	@Autowired
	private Shop_wuliaoService wuliaoService;
	@Autowired
	private Shop_caigoushenheiService caigoushenheiService;
	/**
	 * 查询物料信息(放入前面的页面select下拉选项选项)
	 * @param wuliao
	 * @param md
	 * @return
	 */
	@RequestMapping("/findwuliaoname")
	public String find(Shop_wuliaoEntity wuliao,Model md){
		List wuliaos=wuliaoService.find(wuliao);
		md.addAttribute("wuliaos", wuliaos);
		return "page/subchaigoushenhei";	
	}
	/**
	 * 条件查询物料信息(放入前面的页面物料选项卡中)
	 * @param wuliao
	 * @param md
	 * @return
	 */
	@RequestMapping("/findwuliaobyId")
	@ResponseBody
	public AjaxRes findwuliaoby(Shop_wuliaoEntity wuliao,Model md){
		AjaxRes res=new AjaxRes();
		List wuliaoby=wuliaoService.findbyId(wuliao);
		res.setSucceed(wuliaoby,"获取成功");
		md.addAttribute("wuliaoby",wuliaoby);
		return res;			
	}
	/**
	 * 申请采购的提交
	 * @param caigoushenhei
	 * @return
	 */
	@RequestMapping("/subcaigoushenhei")
	@ResponseBody
	public AjaxRes Subcaigoushenhei(Shop_caigoushenheiEntity caigoushenhei){
		//赋值uuid
		caigoushenhei.setShop_caigoushenhei_id(UuidUtil.get32UUID());
		AjaxRes res=new AjaxRes();
		caigoushenheiService.insert(caigoushenhei);
		res.setResMsg("申请提交成功!");
		return res;
	}
	/**
	 * 查询出全部的采购审核信息 并显示到页面
	 * @param caigoushenhei
	 * @return
	 */
	@RequestMapping("/showcaigoushenhei")
	@ResponseBody
	public Object Showcaigoushenhei(Shop_caigoushenheiEntity caigoushenhei){
		List caigoushenheis=caigoushenheiService.find(caigoushenhei);
		if(caigoushenhei.getLimit()>0){
			caigoushenhei.setLimits("1");
		}
		//实例化page对象
		Page page=new Page();
		page.setPageNumber(caigoushenhei.getOffset());
		page.setPageSize(caigoushenhei.getLimit());
		page.setTotal(caigoushenheiService.count(caigoushenhei));
		page.setObj(caigoushenheis);
		return page;
	}
	/**
	 * 此处查询审核通过的提交信息 必将审核日期格式进行转换
	 * @param caigoushenhei
	 * @return
	 */
	@RequestMapping("/showcaigoushenheizt")
	@ResponseBody
	public Object Showcaigoushenheizt(Shop_caigoushenheiEntity caigoushenhei){
		List caigoushenheis=caigoushenheiService.findzt(caigoushenhei);
		//获取到时间戳 并将其转换
		 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		 for(int i=0;i0){
			caigoushenhei.setLimits("1");
		}
		//实例化page对象
		Page page=new Page();
		page.setPageNumber(caigoushenhei.getOffset());
		page.setPageSize(caigoushenhei.getLimit());
		page.setTotal(caigoushenheiService.count(caigoushenhei));
		page.setObj(caigoushenheis);
		return page;
	}
	//申请批准
	/**
	 * 当管理员同意申请过后 并置入管理员的签名 签名后将base64格式的签名图片转换为文件路径格式存放在数据库中
	 * @param caigoushenhei
	 * @param req
	 * @return
	 * @throws IOException
	 */
	@RequestMapping("/pizhuncaigou")
	@ResponseBody
	public AjaxRes pizhuncaigou(Shop_caigoushenheiEntity caigoushenhei,HttpServletRequest req) throws IOException{
		AjaxRes res=new AjaxRes();
		String qianming=caigoushenhei.getShop_caigoushenhei_qianming();
		//声明要截取的字段(前几位)
		int i=22;
		//将base64编码获取并截取
		byte[] buffer;
	    qianming=qianming.substring(i);
	    //转码
	    buffer = new BASE64Decoder().decodeBuffer(qianming);
	    //存入的文件路径
		String lujing="\\uploadFile\\qianming\\"+buffer+".png";
		String realPath=req.getServletContext().getRealPath(lujing);
		FileOutputStream out = new FileOutputStream(realPath);
		out.write(buffer);
		out.close();
		//把路径存到数据库	
		caigoushenhei.setShop_caigoushenhei_qianming_lujing(lujing);
		caigoushenheiService.update(caigoushenhei);
		res.setResMsg("申请批准成功!");
		return res;
	}
	/**
	 * 审核驳回 如果未通过审核 管理员可将本条审核信息进行驳回
	 * @param caigoushenhei
	 * @return
	 */
	@RequestMapping("/pizhunbohui")
	@ResponseBody
	public AjaxRes pizhunbohui(Shop_caigoushenheiEntity caigoushenhei){
		AjaxRes res=new AjaxRes();
		caigoushenheiService.updatebohui(caigoushenhei);
		res.setResMsg("执行成功!");
		return res;
		
	}
	/**
	 * 删除已处理的审核信息
	 * @param caigoushenhei
	 * @return
	 */
	@RequestMapping("/delshenhei")
	@ResponseBody
	public AjaxRes delshenhei(Shop_caigoushenheiEntity caigoushenhei){
		AjaxRes res=new AjaxRes();
		caigoushenheiService.delete(caigoushenhei);
		res.setResMsg("删除成功");
		return res;
		
	}

}

3:仓库管理控制器(Shop_cangkuController)

package com.controller;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.Ajax.AjaxRes;
import com.entitys.Shop_cangkuEntity;
import com.entitys.Shop_infoEntity;
import com.service.Shop_cangkuService;
import com.service.Shop_infoService;
import com.uuid.UuidUtil;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.UnderlineStyle;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

@Controller
public class Shop_cangkuController {
	@Autowired
	private Shop_cangkuService cangkuService;
	@Autowired
	private Shop_infoService shop_infoService;
	/**
	 *  新加仓库(先查询是否有输入的厂库 在让其添加   系统仓库唯一约束)
	 * @param cangku
	 * @param shop_cangku_name
	 * @return
	 */
	@RequestMapping("/addcangku")
	@ResponseBody
	public AjaxRes addcangku(Shop_cangkuEntity cangku, @Param("shop_cangku_name") String shop_cangku_name) {
		AjaxRes res = new AjaxRes();
		cangku.setShop_cangku_name(shop_cangku_name);
		List cangkubyname = cangkuService.findbyname(cangku);
		// 判断是否已有厂库
		if (cangkubyname.isEmpty()) {
			// 赋值仓库id
			cangku.setShop_cangku_id(UuidUtil.get32UUID());
			cangkuService.insert(cangku);
			System.out.println("--------------------------------------------------------" + cangku);
			res.setResMsg("新加成功!");

		} else {
			res.setResMsg("系统已有此仓库 请勿重复添加!");
		}
		return res;
	}
	/**
	 * 根据仓库名查询(已采购的商品) 以及仓库 并显示在相关页面
	 * @param shop_info
	 * @param cangku
	 * @param md
	 * @return
	 */
	@RequestMapping("/findckname")
	public String findckname(Shop_infoEntity shop_info, Shop_cangkuEntity cangku, Model md) {
		List cangkus = cangkuService.find(cangku);
		md.addAttribute("cangkus", cangkus);
		List shop_infos = shop_infoService.findbyckname(shop_info);
		md.addAttribute("shop_infos", shop_infos);
		return "page/cangku";
	}
	/**
	 * 仓库管理 这里可以修改厂库的管理人员 运营状态 仓库地址 但不可修改仓库名 已交仓库容量
	 * @param cangku
	 * @param shop_cangku_name
	 * @return
	 */
	@RequestMapping("/upck")
	@ResponseBody
	public AjaxRes upck(Shop_cangkuEntity cangku, @Param("shop_cangku_name") String shop_cangku_name) {
		AjaxRes res = new AjaxRes();
		cangku.setShop_cangku_name(shop_cangku_name);
		List cangkubyname = cangkuService.findbyname(cangku);
		// 判断是否已有厂库
		if (cangkubyname.isEmpty()) {
			cangkuService.update(cangku);
			res.setResMsg("修改成功!");

		} else {
			res.setResMsg("仓库名重复!");
		}
		return res;

	}
	/**
	 * 根据仓库名查询改仓库的容量 (因仓库名为唯一字段)
	 * @param cangku
	 * @param md
	 * @return
	 */
	@RequestMapping("/findsize")
	@ResponseBody
	public AjaxRes findsize(Shop_cangkuEntity cangku, Model md) {
		AjaxRes res = new AjaxRes();
		List cangkusize = cangkuService.findbyname(cangku);
		res.setSucceed(cangkusize, "获取成功");
		md.addAttribute("cangkusize", cangkusize);
		return res;
	}	
	/**
	 * 在仓库管理中删除商品信息 当确认删除时 自动更新相关仓库的容量
	 * @param cangku
	 * @param shop_info
	 * @param shop_id
	 * @return
	 */
	@RequestMapping("/delete_shop_info")
	@ResponseBody
	public AjaxRes delete_shop_info(Shop_cangkuEntity cangku,Shop_infoEntity shop_info,
			@Param("shop_id") String shop_id) {
		AjaxRes res = new AjaxRes();
		cangkuService.update_rongliang(cangku);
		//得到需要删除的商品id
		shop_info.setShop_id(shop_id);
		shop_infoService.delete(shop_info);
		res.setResMsg("删除成功!");
		return res;
	}
	/**
	 * 系统仓库的删除 判断当前仓库中是否还存在商品信息 如果存在 则阻止删除(验证在前端验证)
	 * @param cangku
	 * @return
	 */
	@RequestMapping("/del_cangku")
	@ResponseBody
	public AjaxRes delcangku(Shop_cangkuEntity cangku){
		AjaxRes res=new AjaxRes();
		cangkuService.delete(cangku);
		res.setResMsg("改仓库已被成功删除!");
		return res;
	}

	
	/**
	 * 盘库管理(excel操作 导入以及导出)
	 * @param cangku
	 * @param shop_info
	 * @param req
	 * @param shop_cangku_name
	 * @return
	 */
	@RequestMapping("/panku")
	@ResponseBody
	public AjaxRes panku(Shop_cangkuEntity cangku,Shop_infoEntity shop_info, HttpServletRequest req,
			@Param("shop_int_cangku") String shop_cangku_name) {
		AjaxRes res = new AjaxRes();
		// excel存放路径
		String realPath = req.getSession().getServletContext().getRealPath("/");
		String exclePath = "static\\excel\\";
		String pathName = shop_cangku_name + "盘库表.xls";
		String fileName = realPath + exclePath + pathName;
		File xlsFile = new File(fileName);
		WritableWorkbook workbook = null;
		try {
			workbook = Workbook.createWorkbook(xlsFile);
			WritableSheet sheet = workbook.createSheet("sheet", 0);
			Date date = new Date();
			//日期格式装换
			SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			String zhDate=sdf.format(date);	
			try {
				WritableFont wf = new WritableFont(WritableFont.ARIAL, 15,WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK); // 定义格式 字体 下划线 斜体 粗体 颜色
				WritableCellFormat wcf = new WritableCellFormat(wf); // 单元格定义
				wcf.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式
				//标题样式
				WritableFont wftit = new WritableFont(WritableFont.ARIAL, 15,WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK); // 定义格式 字体 下划线 斜体 粗体 颜色
				WritableCellFormat wcftit = new WritableCellFormat(wftit); // 单元格定义
/*				wcftit.setBackground(jxl.format.Colour.WHITE); // 设置单元格的背景颜色*/
				wcftit.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式
				//内容样式
				WritableFont wfcont = new WritableFont(WritableFont.ARIAL, 14,WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK); // 定义格式 字体 下划线 斜体 粗体 颜色
				WritableCellFormat wccont = new WritableCellFormat(wfcont); // 单元格定义		
				wccont.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式
				// 因为仓库名为唯一约束(所以这里采用根据仓库名查询)
				List cangkus = cangkuService.findbyname(cangku);
				if (cangkus != null && cangkus.size() > 0) {

					for (int i = 0; i < cangkus.size(); i++) {
						sheet.addCell(new Label(0, 0,zhDate+":"+cangkus.get(i).getShop_cangku_name() + ":盘库",wcf));
			            sheet.mergeCells(0, 0, 5, 0);//合并垮了5列。
						sheet.addCell(new Label(0, 1, "仓库类型"+":" + cangkus.get(i).getShop_cangku_leixing(),wcf));
						sheet.addCell(new Label(1, 1, "管理员"+":" + cangkus.get(i).getShop_cangku_user(),wcf));
						sheet.addCell(new Label(2, 1, "仓库容量"+":" + cangkus.get(i).getShop_cangku_rongliang().toString(),wcf));
						sheet.addCell(new Label(3, 1, "当前容量"+":" + cangkus.get(i).getShop_cangku_now_rongliang().toString(),wcf));
					}
				}
				// 设置盘库表头
				sheet.addCell(new Label(0, 2, "盘后商品总容量",wcftit));
				// 设置盘库表头
				sheet.addCell(new Label(2, 2, "现仓库剩余容量",wcftit));
				// 设置列表名
				sheet.addCell(new Label(0, 3, "商品名",wcftit));
				sheet.addCell(new Label(1, 3, "供应商",wcftit));
				sheet.addCell(new Label(2, 3, "入库仓库",wcftit));
				sheet.addCell(new Label(3, 3, "当前数量",wcftit));
				sheet.addCell(new Label(4, 3, "实际数量",wcftit));
				sheet.addCell(new Label(5, 3, "备注",wcftit));
				shop_info.setShop_int_cangku(shop_cangku_name);
				List shop_infos = shop_infoService.findbyckname(shop_info);
				if (shop_infos != null && shop_infos.size() > 0) {
					for (int row = 0; row < shop_infos.size(); row++) {
						sheet.addCell(new Label(0, row + 4, shop_infos.get(row).getShop_name(),wccont));
						sheet.addCell(new Label(1, row + 4, shop_infos.get(row).getShop_gongyin_name(),wccont));
						sheet.addCell(new Label(2, row + 4, shop_infos.get(row).getShop_int_cangku(),wccont));
						sheet.addCell(new Label(3, row + 4, shop_infos.get(row).getShop_size().toString(),wccont));
						sheet.addCell(new Label(4, row + 4, null));
						sheet.addCell(new Label(5, row + 4, null));
					}
				}
				//设置行宽
				sheet.setColumnView(0,30); 
				sheet.setColumnView(1,30); 
				sheet.setColumnView(2,30); 
				sheet.setColumnView(3,30); 
				sheet.setColumnView(4,30); 
				sheet.setColumnView(5,30); 
				sheet.setColumnView(6,30); 
				//设置行高
				sheet.setRowView(0, 500);
				sheet.setRowView(2, 500);
				workbook.write();
				workbook.close();
			} catch (RowsExceededException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (WriteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return res;
	}
	
}

4:验证码

package com.logoverify;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class VerifyController {
	private int width = 150;// 定义图片的width
    private int height = 50;// 定义图片的height
    private int codeCount = 4;// 定义图片上显示验证码的个数
    private int xx = 30;
    private int fontHeight = 24;
    private int codeY = 30;
    char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
            'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
    /**
     * 定义并创建前端用户登录验证是的验证码
     * @param req
     * @param resp
     * @throws IOException
     */
    @RequestMapping("/logoVerify")
    public void getCode(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        // 定义图像buffer
        BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics gd = buffImg.getGraphics();
        // 创建一个随机数生成器类
        Random random = new Random();
        // 将图像填充为白色
        gd.setColor(Color.WHITE);
        gd.fillRect(0, 0, width, height);
        // 创建字体,字体的大小应该根据图片的高度来定。
        Font font = new Font("Fixedsys", Font.BOLD, fontHeight);
        // 设置字体。
        gd.setFont(font);
        // 画边框。
        gd.setColor(Color.BLACK);
        gd.drawRect(0, 0, width - 1, height - 1);
        // 随机产生40条干扰线,使图象中的认证码不易被其它程序探测到。
        gd.setColor(Color.BLACK);
        for (int i = 0; i < 40; i++) {
            int x = random.nextInt(width);
            int y = random.nextInt(height);
            int xl = random.nextInt(12);
            int yl = random.nextInt(12);
            gd.drawLine(x, y, x + xl, y + yl);
        }
        // randomCode用于保存随机产生的验证码,以便用户登录后进行验证。
        StringBuffer randomCode = new StringBuffer();
        int red = 0, green = 0, blue = 0;
        // 随机产生codeCount数字的验证码。
        for (int i = 0; i < codeCount; i++) {
            // 得到随机产生的验证码数字。
            String code = String.valueOf(codeSequence[random.nextInt(codeSequence.length-1)]);
            // 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。
            red = random.nextInt(255);
            green = random.nextInt(255);
            blue = random.nextInt(255);
            // 用随机产生的颜色将验证码绘制到图像中。
            gd.setColor(new Color(red, green, blue));
            gd.drawString(code, (i + 1) * xx, codeY);
            // 将产生的四个随机数组合在一起。
            randomCode.append(code);
        }
        // 将四位数字的验证码保存到Session中。
        HttpSession session = req.getSession();
        //session传值
        session.setAttribute("logoVerify_val", randomCode.toString());
        // 禁止图像缓存。
        resp.setHeader("Pragma", "no-cache");
        resp.setHeader("Cache-Control", "no-cache");
        resp.setDateHeader("Expires", 0);
        resp.setContentType("image/jpeg");
        // 将图像输出到Servlet输出流中。
        ServletOutputStream sos = resp.getOutputStream();
        ImageIO.write(buffImg, "jpeg", sos);
        sos.close();
    }

}

5:spring-mvl.xml




  	   
    
	
	  
	 
	  
	
  	  
	   
	      
	        
	         
	         
	         
	         
	      
	        
	            
	                    
	          
	      
	
  	
    
        
        
        
        
    
    
         
	 
	 
    
		
		
		
	

	
		
			
			
				
					
						text/html;charset=UTF-8
						text/json;charset=UTF-8
						application/json;charset=UTF-8
					
				
			
		
	
	
	
		
		
		
		
		
		
	


6:SSM Maven 相关pom.xml 配置文件


  4.0.0
  com
  InvoicingManagementSystem
  war
  0.0.1-SNAPSHOT
  InvoicingManagementSystem Maven Webapp
  http://maven.apache.org
    
        
            javax
            javaee-web-api
            6.0
            provided
        
    
	    org.springframework
	    spring-jdbc
	    4.3.5.RELEASE
  	
  	 		
	
	    org.springframework
	    spring-webmvc
	    4.3.5.RELEASE
	
 	
 	
	    commons-io
	    commons-io
	    2.4
  	
  	
  	
	    commons-fileupload
	    commons-fileupload
	    1.3.1
  	
  	
  	
	    org.apache.commons
	    commons-lang3
	    3.3.2
  			
	
	
	    jstl
	    jstl
	    1.2
	
  	
	
	    commons-codec
	    commons-codec
	    1.9
	
 	
 	
	
	
	
	    org.apache.commons
	    commons-dbcp2
	    2.1.1
	
	
	
	    mysql
	    mysql-connector-java
	    5.0.8
	    runtime
		
	
 	
	    com.alibaba
	    druid
	    1.0.15
	
 	
 	 
	    org.mybatis
	    mybatis
	    3.3.1
	 
	
	    org.mybatis
	    mybatis-spring
	    1.2.4
	
	
	
	    com.github.pagehelper
	    pagehelper
	    4.2.1
	
	
	
	
	    log4j
	    log4j
	    1.2.17
	
	
	
	
	    org.apache.commons
	    commons-lang3
	    3.4
	
	
	
	    commons-beanutils
	    commons-beanutils
	    1.9.1
	
		
	
	
	    org.slf4j
	    slf4j-api
	    1.7.25
	
	
		
			org.aspectj
			aspectjweaver
			1.8.11
		
		
		
			aspectj
			aspectjrt
			1.5.3
		
	   
	    
	        com.fasterxml.jackson.core
	        jackson-core
	        2.9.5
	    
	    
	        com.fasterxml.jackson.core
	        jackson-databind
	        2.9.5
	    
	  	
		    com.fasterxml.jackson.core
		    jackson-annotations
		    2.9.5
	  	
	  	
		
		    jexcelapi
		    jxl
		    2.6
		
	  	
    
  
    InvoicingManagementSystem
  


7:前台用户管理页面

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>






	
个人信息界面





	


昵        称:

登录账号 :

性        别:

生        日:

邮        箱:

电        话:

地        址:

注册时间 :

上次登录 :

信息修改:












账户安全:





以上便是小生通过 java SSM框架 制作的一套进存销管理系统 学习永无止境 欢迎大家进行参观与指导
项目下载
https://download.csdn.net/download/qq_41193701/11176065

你可能感兴趣的:(管理系统)