基于javaweb+mysql的ssm农产品水果店销售管理系统(java+jsp+ssm+javabean+mysql+tomcat)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
农产品店、水果店等管理产品与销售、进货等信息
技术框架
JavaBean MVC JSP SSM(Spring SpringMVC MyBatis) MySQL EasyUI JavaScript
基于javaweb+mysql的SSM农产品水果店销售管理系统(java+jsp+ssm+javabean+mysql+tomcat)
if(menuService.edit(menu) <= 0){
ret.put("type", "error");
ret.put("msg", "修改失败,请联系管理员!");
return ret;
}
ret.put("type", "success");
ret.put("msg", "修改成功!");
return ret;
}
/**
* 删除菜单信息
* @param id
* @return
*/
@RequestMapping(value="/delete",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> delete(
@RequestParam(name="id",required=true) Long id
){
Map<String, String> ret = new HashMap<String, String>();
if(id == null){
ret.put("type", "error");
ret.put("msg", "请选择要删除的菜单信息!");
return ret;
}
List<Menu> findChildernList = menuService.findChildernList(id);
if(findChildernList != null && findChildernList.size() > 0){
//表示该分类下存在子分类,不能删除
ret.put("type", "error");
ret.put("msg", "该分类下存在子分类,不能删除!");
return ret;
}
if(menuService.delete(id) <= 0){
ret.put("type", "error");
ret.put("msg", "删除失败,请联系管理员!");
return ret;
}
ret.put("type", "success");
ret.put("msg", "删除成功!");
return ret;
@ResponseBody
public Map<String, String> add(User user){
Map<String, String> ret = new HashMap<String, String>();
if(user == null){
ret.put("type", "error");
ret.put("msg", "请填写正确的用户信息!");
return ret;
}
if(StringUtils.isEmpty(user.getUsername())){
ret.put("type", "error");
ret.put("msg", "请填写用户名!");
return ret;
}
if(StringUtils.isEmpty(user.getPassword())){
ret.put("type", "error");
ret.put("msg", "请填写密码!");
return ret;
}
if(user.getRoleId() == null){
ret.put("type", "error");
ret.put("msg", "请选择所属角色!");
return ret;
}
if(isExist(user.getUsername(), 0l)){
ret.put("type", "error");
ret.put("msg", "该用户名已经存在,请重新输入!");
return ret;
}
if(userService.add(user) <= 0){
ret.put("type", "error");
ret.put("msg", "用户添加失败,请联系管理员!");
return ret;
}
ret.put("type", "success");
ret.put("msg", "角色添加成功!");
return ret;
}
/**
* 编辑用户
* @param user
* @return
*/
@RequestMapping(value="/edit",method=RequestMethod.POST)
@ResponseBody
@ResponseBody
public Map<String, String> add(String productList,Sell sell,HttpServletRequest request){
Map<String, String> ret = new HashMap<String, String>();
if(StringUtils.isEmpty(productList)){
ret.put("type", "error");
ret.put("msg", "请至少选择一个商品信息!");
return ret;
}
if(sell == null){
ret.put("type", "error");
ret.put("msg", "请填写正确的销售单信息!");
return ret;
}
JSONArray productArray = JSONArray.fromObject(productList);
float money = 0;
int num = 0;
List<Stock> stockList = new ArrayList<Stock>();
for(int i = 0; i < productArray.size(); i++){
JSONObject jsonObject = productArray.getJSONObject(i);
SellDetail sellDetail = new SellDetail();
sellDetail.setProductName(jsonObject.getString("name"));
sellDetail.setProductNum(jsonObject.getInt("productNum"));
sellDetail.setPrice(Float.valueOf(jsonObject.getString("price")));
sellDetail.setMoney(sellDetail.getPrice() * sellDetail.getProductNum());
sell.getSellDetailList().add(sellDetail);
money += sellDetail.getMoney();
num += sellDetail.getProductNum();
Stock stock = new Stock();
stock.setProductId(Long.valueOf(jsonObject.getInt("id")+""));
stock.setProductNum(sellDetail.getProductNum());
stock.setCreateTime(new Date());
stockList.add(stock);
}
sell.setMoney(money);
sell.setProductNum(num);
User admin = (User)request.getSession().getAttribute("admin");
sell.setOperator(admin.getUsername());
sell.setCreateTime(new Date());
if(sellService.add(sell) <= 0){
ret.put("type", "error");
ret.put("msg", "添加失败,请联系管理员!");
return ret;
}
//进行库存调整操作
updateStock(stockList);
ret.put("type", "success");
ret.put("msg", "添加成功!");
return ret;
private LogService logService;
/**
* 系统登录后的主页
* @param model
* @return
*/
@RequestMapping(value="/index",method=RequestMethod.GET)
public ModelAndView index(ModelAndView model,HttpServletRequest request){
List<Menu> userMenus = (List<Menu>)request.getSession().getAttribute("userMenus");
model.addObject("topMenuList", MenuUtil.getAllTopMenu(userMenus));
model.addObject("secondMenuList", MenuUtil.getAllSecondMenu(userMenus));
model.setViewName("system/index");
return model;//WEB-INF/views/+system/index+.jsp = WEB-INF/views/system/index.jsp
}
/**
* 系统登录后的欢迎页
* @param model
* @return
*/
@RequestMapping(value="/welcome",method=RequestMethod.GET)
public ModelAndView welcome(ModelAndView model){
model.setViewName("system/welcome");
return model;
}
/**
* 登陆页面
* @param model
* @return
*/
@RequestMapping(value="/login",method=RequestMethod.GET)
public ModelAndView login(ModelAndView model){
model.setViewName("system/login");
return model;
}
/**
* 登录表单提交处理控制器
* @param user
* @param cpacha
* @return
*/
@RequestMapping(value="/login",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> loginAct(User user,String cpacha,HttpServletRequest request){
Map<String, String> ret = new HashMap<String, String>();
if(user == null){
ret.put("type", "error");
ret.put("msg", "请填写用户信息!");
return ret;
}
ret.put("msg", "请填写供应商电话!");
return ret;
}
if(StringUtils.isEmpty(supplier.getContactName())){
ret.put("type", "error");
ret.put("msg", "请填写供应商联系人!");
return ret;
}
if(StringUtils.isEmpty(supplier.getContactPhone())){
ret.put("type", "error");
ret.put("msg", "请填写供应商联系人手机号!");
return ret;
}
if(StringUtils.isEmpty(supplier.getAddress())){
ret.put("type", "error");
ret.put("msg", "请填写供应商地址!");
return ret;
}
if(supplierService.edit(supplier) <= 0){
ret.put("type", "error");
ret.put("msg", "编辑失败,请联系管理员!");
return ret;
}
ret.put("type", "success");
ret.put("msg", "添加成功!");
return ret;
}
/**
* 删除指定id的供应商
* @param id
* @return
*/
@RequestMapping(value="/delete",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> delete(Long id){
Map<String, String> ret = new HashMap<String, String>();
if(id == null){
ret.put("type", "error");
ret.put("msg", "请选择要删除的供应商!");
return ret;
}
try {
if(supplierService.delete(id) <= 0){
ret.put("type", "error");
ret.put("msg", "删除失败,请联系管理员!");
return ret;
}
} catch (Exception e) {
// TODO: handle exception
ret.put("type", "error");
if(productNum != null){
queryMap.put("productNum", productNum);
}
queryMap.put("offset", page.getOffset());
queryMap.put("pageSize", page.getRows());
ret.put("total", stockService.getTotal(queryMap));
ret.put("rows", stockService.findList(queryMap));
return ret;
}
/**
* 编辑商品库存信息
* @param stock
* @return
*/
@RequestMapping(value="edit",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> edit(Stock stock){
Map<String, String> ret = new HashMap<String, String>();
if(stock == null){
ret.put("type", "error");
ret.put("msg", "请填写正确的商品库存信息!");
return ret;
}
if(stock.getProductNum() < 0){
ret.put("type", "error");
ret.put("msg", "商品库存数量不能小于0!");
return ret;
}
if(stockService.edit(stock) <= 0){
ret.put("type", "error");
ret.put("msg", "编辑失败,请联系管理员!");
return ret;
}
ret.put("type", "success");
ret.put("msg", "添加成功!");
return ret;
}
/**
* 删除指定id的商品库存
* @param id
* @return
*/
@RequestMapping(value="/delete",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> delete(Long id){
Map<String, String> ret = new HashMap<String, String>();
* @return
*/
@RequestMapping(value="edit",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> edit(Product product){
Map<String, String> ret = new HashMap<String, String>();
if(product == null){
ret.put("type", "error");
ret.put("msg", "请填写正确的商品信息!");
return ret;
}
if(StringUtils.isEmpty(product.getName())){
ret.put("type", "error");
ret.put("msg", "请填写商品名称!");
return ret;
}
if(product.getSupplierId() == null){
ret.put("type", "error");
ret.put("msg", "请选择商品供应商!");
return ret;
}
if(product.getPrice() == null){
ret.put("type", "error");
ret.put("msg", "请填写商品价格!");
return ret;
}
if(productService.edit(product) <= 0){
ret.put("type", "error");
ret.put("msg", "编辑失败,请联系管理员!");
return ret;
}
ret.put("type", "success");
ret.put("msg", "添加成功!");
return ret;
}
/**
* 删除指定id的商品
* @param id
* @return
*/
@RequestMapping(value="/delete",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> delete(Long id){
Map<String, String> ret = new HashMap<String, String>();
if(id == null){
ret.put("type", "error");
ret.put("msg", "请选择要删除的商品!");
return ret;
}
try {
if(productService.delete(id) <= 0){
if(StringUtils.isEmpty(product.getName())){
ret.put("type", "error");
ret.put("msg", "请填写农产品名称!");
return ret;
}
if(product.getSupplierId() == null){
ret.put("type", "error");
ret.put("msg", "请选择农产品供应商!");
return ret;
}
if(product.getPrice() == null){
ret.put("type", "error");
ret.put("msg", "请填写农产品单价!");
return ret;
}
if(productService.add(product) <= 0){
ret.put("type", "error");
ret.put("msg", "添加失败,请联系管理员!");
return ret;
}
ret.put("type", "success");
ret.put("msg", "添加成功!");
return ret;
}
/**
* 编辑商品信息
* @param product
* @return
*/
@RequestMapping(value="edit",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> edit(Product product){
Map<String, String> ret = new HashMap<String, String>();
if(product == null){
ret.put("type", "error");
ret.put("msg", "请填写正确的商品信息!");
return ret;
}
if(StringUtils.isEmpty(product.getName())){
ret.put("type", "error");
ret.put("msg", "请填写商品名称!");
return ret;
}
if(product.getSupplierId() == null){
ret.put("type", "error");
ret.put("msg", "请选择商品供应商!");
return ret;
}
/**
* 商品管理控制器
*
*/
@RequestMapping("/admin/product")
@Controller
public class ProductController {
@Autowired
private SupplierService supplierService;
@Autowired
private ProductService productService;
/**
* 商品管理列表页面
* @param model
* @return
*/
@RequestMapping(value="/list",method=RequestMethod.GET)
public ModelAndView list(ModelAndView model){
Map<String, Object> queryMap = new HashMap<String, Object>();
queryMap.put("offset", 0);
queryMap.put("pageSize", 9999);
model.addObject("supplierList", supplierService.findList(queryMap));
model.setViewName("product/list");
return model;
}
/**
* 模糊搜索分页获取商品信息
* @return
*/
@RequestMapping(value="/list",method=RequestMethod.POST)
@ResponseBody
public Map<String, Object> getList(
@RequestParam(name="supplierId",required=false) Long supplierId,
@RequestParam(name="name",defaultValue="") String name,Page page
sell.setStatus(1);
if(sellService.edit(sell) <= 0){
ret.put("type", "error");
ret.put("msg", "编辑失败,请联系管理员!");
return ret;
}
ret.put("type", "success");
ret.put("msg", "编辑成功!");
return ret;
}
/**
* 商品库存调整
* @param stockList
*/
private void updateStock(List<Stock> stockList){
for(Stock stock : stockList){
Stock existStock = stockService.findByProductId(stock.getProductId());
if(existStock!= null){
//更新商品库存数量及销售数量
existStock.setProductNum(existStock.getProductNum() - stock.getProductNum());
existStock.setSellNum(existStock.getSellNum() + stock.getProductNum());
if(existStock.getProductNum() < 0){
existStock.setProductNum(0);
}
stockService.edit(existStock);
}
}
}
}
ret.put("msg", "请填写用户名!");
return ret;
}
if(StringUtils.isEmpty(user.getPassword())){
ret.put("type", "error");
ret.put("msg", "请填写密码!");
return ret;
}
Object loginCpacha = request.getSession().getAttribute("loginCpacha");
if(loginCpacha == null){
ret.put("type", "error");
ret.put("msg", "会话超时,请刷新页面!");
return ret;
}
if(!cpacha.toUpperCase().equals(loginCpacha.toString().toUpperCase())){
ret.put("type", "error");
ret.put("msg", "验证码错误!");
logService.add("用户名为"+user.getUsername()+"的用户登录时输入验证码错误!");
return ret;
}
User findByUsername = userService.findByUsername(user.getUsername());
if(findByUsername == null){
ret.put("type", "error");
ret.put("msg", "该用户名不存在!");
logService.add("登录时,用户名为"+user.getUsername()+"的用户不存在!");
return ret;
}
if(!user.getPassword().equals(findByUsername.getPassword())){
ret.put("type", "error");
ret.put("msg", "密码错误!");
logService.add("用户名为"+user.getUsername()+"的用户登录时输入密码错误!");
return ret;
}
//说明用户名密码及验证码都正确
//此时需要查询用户的角色权限
Role role = roleService.find(findByUsername.getRoleId());
List<Authority> authorityList = authorityService.findListByRoleId(role.getId());//根据角色获取权限列表
String menuIds = "";
for(Authority authority:authorityList){
menuIds += authority.getMenuId() + ",";
}
if(!StringUtils.isEmpty(menuIds)){
menuIds = menuIds.substring(0,menuIds.length()-1);
}
List<Menu> userMenus = menuService.findListByIds(menuIds);
//把角色信息、菜单信息放到session中
request.getSession().setAttribute("admin", findByUsername);
request.getSession().setAttribute("role", role);
request.getSession().setAttribute("userMenus", userMenus);
ret.put("type", "success");
ret.put("msg", "登录成功!");
logService.add("用户名为{"+user.getUsername()+"},角色为{"+role.getName()+"}的用户登录成功!");
return ret;
@ResponseBody
public Map<String, String> add(Product product){
Map<String, String> ret = new HashMap<String, String>();
if(product == null){
ret.put("type", "error");
ret.put("msg", "请填写正确的农产品信息!");
return ret;
}
if(StringUtils.isEmpty(product.getName())){
ret.put("type", "error");
ret.put("msg", "请填写农产品名称!");
return ret;
}
if(product.getSupplierId() == null){
ret.put("type", "error");
ret.put("msg", "请选择农产品供应商!");
return ret;
}
if(product.getPrice() == null){
ret.put("type", "error");
ret.put("msg", "请填写农产品单价!");
return ret;
}
if(productService.add(product) <= 0){
ret.put("type", "error");
ret.put("msg", "添加失败,请联系管理员!");
return ret;
}
ret.put("type", "success");
ret.put("msg", "添加成功!");
return ret;
}
/**
* 编辑商品信息
* @param product
* @return
*/
@RequestMapping(value="edit",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> edit(Product product){
Map<String, String> ret = new HashMap<String, String>();
if(product == null){
ret.put("type", "error");
ret.put("msg", "请填写正确的商品信息!");
@Autowired
private LogService logService;
/**
* 系统登录后的主页
* @param model
* @return
*/
@RequestMapping(value="/index",method=RequestMethod.GET)
public ModelAndView index(ModelAndView model,HttpServletRequest request){
List<Menu> userMenus = (List<Menu>)request.getSession().getAttribute("userMenus");
model.addObject("topMenuList", MenuUtil.getAllTopMenu(userMenus));
model.addObject("secondMenuList", MenuUtil.getAllSecondMenu(userMenus));
model.setViewName("system/index");
return model;//WEB-INF/views/+system/index+.jsp = WEB-INF/views/system/index.jsp
}
/**
* 系统登录后的欢迎页
* @param model
* @return
*/
@RequestMapping(value="/welcome",method=RequestMethod.GET)
public ModelAndView welcome(ModelAndView model){
model.setViewName("system/welcome");
return model;
}
/**
* 登陆页面
* @param model
* @return
*/
@RequestMapping(value="/login",method=RequestMethod.GET)
public ModelAndView login(ModelAndView model){
model.setViewName("system/login");
return model;
}
/**
* 登录表单提交处理控制器
* @param user
* @param cpacha
* @return
*/
@RequestMapping(value="/login",method=RequestMethod.POST)
@Autowired
private ProductService productService;
@Autowired
private OrderInRebackService orderInRebackService;
@Autowired
private StockService stockService;
/**
* 进货退货单管理列表页面
* @param model
* @return
*/
@RequestMapping(value="/list",method=RequestMethod.GET)
public ModelAndView list(ModelAndView model){
model.setViewName("order_in_reback/list");
return model;
}
/**
* 模糊搜索分页获取进货退货单信息
* @return
*/
@RequestMapping(value="/list",method=RequestMethod.POST)
@ResponseBody
public Map<String, Object> getList(
@RequestParam(name="payType",required=false) Integer payType,
@RequestParam(name="status",required=false) Integer status,
@RequestParam(name="minMoney",required=false) Float minMoney,
@RequestParam(name="maxMoney",required=false) Float maxMoney,
@RequestParam(name="operator",defaultValue="") String operator,Page page
){
Map<String, Object> ret = new HashMap<String, Object>();
Map<String, Object> queryMap = new HashMap<String, Object>();
queryMap.put("operator", operator);
if(payType != null){
queryMap.put("payType", payType);
}
if(status != null){
queryMap.put("status", status);
}
if(minMoney != null){
queryMap.put("minMoney", minMoney);
}
return ret;
}
if(userService.add(user) <= 0){
ret.put("type", "error");
ret.put("msg", "用户添加失败,请联系管理员!");
return ret;
}
ret.put("type", "success");
ret.put("msg", "角色添加成功!");
return ret;
}
/**
* 编辑用户
* @param user
* @return
*/
@RequestMapping(value="/edit",method=RequestMethod.POST)
@ResponseBody
public Map<String, String> edit(User user){
Map<String, String> ret = new HashMap<String, String>();
if(user == null){
ret.put("type", "error");
ret.put("msg", "请填写正确的用户信息!");
return ret;
}
if(StringUtils.isEmpty(user.getUsername())){
ret.put("type", "error");
ret.put("msg", "请填写用户名!");
return ret;
}
// if(StringUtils.isEmpty(user.getPassword())){
// ret.put("type", "error");
// ret.put("msg", "请填写密码!");
// return ret;
// }
if(user.getRoleId() == null){
ret.put("type", "error");
ret.put("msg", "请选择所属角色!");
return ret;
}
if(isExist(user.getUsername(), user.getId())){
ret.put("type", "error");
ret.put("msg", "该用户名已经存在,请重新输入!");
return ret;
}
if(userService.edit(user) <= 0){
ret.put("type", "error");
ret.put("msg", "用户添加失败,请联系管理员!");
return ret;
* @return
*/
@RequestMapping(value="/list",method=RequestMethod.GET)
public ModelAndView list(ModelAndView model){
model.setViewName("sell/list");
return model;
}
/**
* 模糊搜索分页获取销售单信息
* @return
*/
@RequestMapping(value="/list",method=RequestMethod.POST)
@ResponseBody
public Map<String, Object> getList(
@RequestParam(name="payType",required=false) Integer payType,
@RequestParam(name="status",required=false) Integer status,
@RequestParam(name="minMoney",required=false) Float minMoney,
@RequestParam(name="maxMoney",required=false) Float maxMoney,
@RequestParam(name="operator",defaultValue="") String operator,Page page
){
Map<String, Object> ret = new HashMap<String, Object>();
Map<String, Object> queryMap = new HashMap<String, Object>();
queryMap.put("operator", operator);
if(payType != null){
queryMap.put("payType", payType);
}
if(status != null){
queryMap.put("status", status);
}
if(minMoney != null){
queryMap.put("minMoney", minMoney);
}
if(maxMoney != null){
queryMap.put("maxMoney", maxMoney);
}
queryMap.put("offset", page.getOffset());
queryMap.put("pageSize", page.getRows());
ret.put("total", sellService.getTotal(queryMap));
ret.put("rows", sellService.findList(queryMap));
return ret;
}
/**
* 添加销售单信息
* @param sell
System.out.println(sheetAt.getLastRowNum());
for(int rowIndex = 1; rowIndex <= sheetAt.getLastRowNum(); rowIndex++){
HSSFRow row = sheetAt.getRow(rowIndex);
Product product = new Product();
if(row.getCell(0) == null){
msg += "第" + (rowIndex+1) + "行商品名称为空,跳过!\n";
continue;
}
String name = row.getCell(0).getStringCellValue();
product.setName(name);
product.setPlace(row.getCell(1) == null ? "" : row.getCell(1).getStringCellValue());
product.setSpec(row.getCell(2) == null ? "" : row.getCell(2).getStringCellValue());
product.setPk(row.getCell(3) == null ? "" : row.getCell(3).getStringCellValue());
product.setUnit(row.getCell(4) == null ? "" : row.getCell(4).getStringCellValue());
if(row.getCell(5) == null){
msg += "第" + (rowIndex+1) + "行商品价格为空,跳过!\n";
continue;
}
try {
Double priceDouble = row.getCell(5).getNumericCellValue();
float price = Float.valueOf(priceDouble+"");
product.setPrice(price);
} catch (Exception e) {
// TODO: handle exception
msg += "第" + (rowIndex+1) + "行商品价格格式错误,跳过!\n";
continue;
}
product.setRemark(row.getCell(6) == null ? "" : row.getCell(6).getStringCellValue());
product.setSupplierId(supplierId);
if(productService.add(product) <= 0){
msg += "第" + (rowIndex+1) + "行商品添加失败!\n";
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return msg;
}
}
```![请添加图片描述](https://img-blog.csdnimg.cn/3886f60ea07141d38642cd1b71eec208.jpeg)
![请添加图片描述](https://img-blog.csdnimg.cn/4268fe0304874856a242878c21f39a0d.jpeg)
![请添加图片描述](https://img-blog.csdnimg.cn/3dc6004a7f784200930df34a4d409fd3.jpeg)
![请添加图片描述](https://img-blog.csdnimg.cn/e0d227402d5c4a4f88bd278fef217bf1.jpeg)
![请添加图片描述](https://img-blog.csdnimg.cn/6a7f23e341f04e9188643b6a86ae6e8a.jpeg)
![请添加图片描述](https://img-blog.csdnimg.cn/106d121f8ac44f68be182fb360b01999.jpeg)
![请添加图片描述](https://img-blog.csdnimg.cn/8cbd0fb1f55e43d7961d3a22bf2dfd89.jpeg)
![请添加图片描述](https://img-blog.csdnimg.cn/907e09d1d373443ba5f4a1828e3e20d3.jpeg)
![请添加图片描述](https://img-blog.csdnimg.cn/e343f51d3d17438ea587a208d790c246.jpeg)
![请添加图片描述](https://img-blog.csdnimg.cn/cee1d9d27c654b9d91ba29179f383916.jpeg)
![请添加图片描述](https://img-blog.csdnimg.cn/87e96e1bfc884afab64d80591c3f006c.jpeg)
![请添加图片描述](https://img-blog.csdnimg.cn/87e1725801504639a1ff1eada9b982e9.jpeg)