基于javaweb+mysql的springboot超市进销存系统设计和实现(java+springboot+ssm+mysql+html+maven)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot超市进销存系统设计和实现(java+springboot+ssm+mysql+html+maven)
一、项目简述
本系统主要实现的功能有: 用户管理,商品管理,销售管理,进货退货管理,仓库管 理等等功能。
二、项目运行
环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
项目技术: Springboot+ SpringMVC + MyBatis + ThymeLeaf + JavaScript + JQuery + Ajax + maven等等
subject.logout();
return "redirect:login";
}
/**
*跳转到首页工作台
*/
@RequestMapping("/toDes")
public String toDesktop(){
return "system/home/desktopManager";
}
/**
* 跳转到日志管理页面
*
*/
@RequestMapping("/toLog")
public String toLog(){
return "system/log/logsManager";
}
/**
* 跳转到供应商管理页面
*
*/
@RequestMapping("/toProvider")
public String toProvider(){
return "system/provider/providerManager";
}
/**
* 跳转到客户管理页面
* @return
*/
@RequestMapping("/toCustomer")
public String toCustomer(){
return "system/customer/customerManager";
}
/**
* 跳转到商品类别管理页面
* @return
*/
/**
* <p>
* 前端控制器
* </p>
*
*/
@RestController
@RequestMapping("/inport")
public class InportController {
@Autowired
private InportService inportService;
@Autowired
private GoodsService goodsService;
@Autowired
}
return new DataGridViewResult(inportIPage.getTotal(), records);
}
/**
* 添加进货信息
*
* @param inport
* @return
*/
@SysLog("进货添加操作")
@PostMapping("/addinport")
public Result addInport(Inport inport, HttpSession session) {
if (inport.getGoodsid()==0||inport.getProviderid()==0){
return Result.error(false, null, "添加失败!未选供应商或商品");
}
User user = (User) session.getAttribute("username");
inport.setOperateperson(user.getUname());
inport.setInptime(new Date());
boolean bool = inportService.save(inport);
if (bool) {
return Result.success(true, "200", "添加成功!");
}
return Result.error(false, null, "添加失败!");
}
/**
* 删除单条数据
*
* @param id
* @return
*/
@SysLog("进货删除操作")
@RequestMapping("/deleteOne")
public Result deleteOne(int id) {
boolean bool = inportService.removeById(id);
if (bool) {
return Result.success(true, "200", "删除成功!");
}
return Result.error(false, null, "删除失败!");
}
/**
* 修改进货信息
*
* @param inport
* @return
queryWrapper
.select("sum( number ) as countnumbers,DATE_FORMAT( inptime, '%Y-%m' ) AS counttime")
.between("inptime",DateUtils.stepMonth(5),new Date())
.groupBy("counttime")
.orderByAsc("counttime");
List<Inport> inportsList = inportService.list(queryWrapper);
Map<String, Object> map = new HashMap<>();
List<String> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
for (Inport inport : inportsList) {
list1.add(inport.getCounttime());
list2.add(inport.getCountnumbers());
}
map.put("data1",list1);
map.put("data2",list2);
return new DataGridViewResult(map);
}
@SysLog("查询统计退货报表")
@RequestMapping("/statisticsoutGoods")
public DataGridViewResult statisticsoutGoods(){
Map<String, Object> map = new HashMap<>();
QueryWrapper<Outport> queryWrapper1 = new QueryWrapper<>();
queryWrapper1
.select("sum( number ) as countnumbers,DATE_FORMAT( outputtime, '%Y-%m' ) AS counttime")
.between("outputtime",DateUtils.stepMonth(5),new Date())
.groupBy("counttime")
.orderByAsc("counttime");
List<Outport> outportsList = outportService.list(queryWrapper1);
List<String> list3 = new ArrayList<>();
List<Integer> list4 = new ArrayList<>();
for (Outport outport : outportsList) {
list3.add(outport.getCounttime());
list4.add(outport.getCountnumbers());
}
map.put("data3",list3);
map.put("data4",list4);
return new DataGridViewResult(map);
}
boolean bool = categoryService.removeById(id);
if(bool){
return Result.success(true,"200","删除成功!");
}
return Result.error(false,null,"删除失败!");
}
}
/**
* <p>
* 前端控制器
* </p>
*
*/
@RestController
@RequestMapping("/permission")
public class PermissionController {
@Autowired
private PermissionService permissionService;
/**
* 菜单列表
* @param permissionVO
* @return
*/
Map<String, Object> map = new HashMap<>();
try {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("username", username);
User user = userService.getOne(queryWrapper);
if (user != null) {
map.put("exist", true);
map.put("message", "用户名已存在");
} else {
map.put("exist", false);
map.put("message", "用户名可以使用");
}
} catch (Exception e) {
e.printStackTrace();
}
return JSON.toJSONString(map);
}
/**
* 修改用户信息
*
* @param user
* @return
*/
@SysLog("用户修改操作")
@PostMapping("/updateuser")
public Result updateUser(User user) {
boolean bool = userService.updateById(user);
try {
if (bool) {
return Result.success(true, "200", "修改成功!");
}
} catch (Exception e) {
e.printStackTrace();
}
return Result.error(false, null, "修改失败!");
}
/**
* 删除单条数据
}
/**
* 删除单条数据
*
* @param id
* @return
*/
@SysLog("进货删除操作")
@RequestMapping("/deleteOne")
public Result deleteOne(int id) {
boolean bool = inportService.removeById(id);
if (bool) {
return Result.success(true, "200", "删除成功!");
}
return Result.error(false, null, "删除失败!");
}
/**
* 修改进货信息
*
* @param inport
* @return
*/
@SysLog("进货修改操作")
@PostMapping("/updateinport")
public Result updateGoods(Inport inport, HttpSession session) {
User user = (User) session.getAttribute("username");
inport.setOperateperson(user.getUname());
inport.setInptime(new Date());
boolean bool = inportService.updateById(inport);
if (bool) {
return Result.success(true, "200", "修改成功!");
}
return Result.error(false, null, "修改失败!");
}
}
* @param id
* @return
*/
@SysLog("供应商删除操作")
@RequestMapping("/deleteOne")
public Result deleteOne(int id) {
boolean bool = providerService.removeById(id);
if(bool){
return Result.success(true,"200","删除成功!");
}
return Result.error(false,null,"删除失败!");
}
/**
*
* 加载下拉框
* @return
*/
@RequestMapping("/loadAllProvider")
public DataGridViewResult loadAllProvider(){
QueryWrapper<Provider> queryWrapper = new QueryWrapper<>();
List<Provider> list = providerService.list(queryWrapper);
return new DataGridViewResult(list);
}
}
private UserService userService;
@Autowired
private RoleService roleService;
/**
* 加载首页左侧菜单
*
* @param session
* @return
*/
@RequestMapping("/loadIndexLeftMenuTree")
public DataGridViewResult loadIndexLeftMenuTree(HttpSession session) {
//调用查询权限菜单列表
QueryWrapper<Permission> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("type", "menu");
User username = (User) session.getAttribute("username");
List<Permission> permissionList = new ArrayList<>();
if (username.getType() == 0) {
permissionList = permissionService.list(queryWrapper);
}
try {
//1.根据当前登录用户ID查询该用户拥有的角色列表
Set<Integer> currentUserRoleIds = userService.findRoleByUserId(username.getUid());
//2.创建集合保存每个角色下拥有的权限菜单ID
Set<Integer> pids = new HashSet<Integer>();
//3.循环遍历当前用户拥有的角色列表
for (Integer roleId : currentUserRoleIds) {
//4.根据角色ID查询每个角色下拥有的权限菜单
Set<Integer> permissionIds = roleService.findRolePermissionByRoleId(roleId);
//5.将查询出来的权限id放到集合中
pids.addAll(permissionIds);
}
//判断当前权限集合是否有数据
if (pids.size() > 0) {
//拼接查询条件
queryWrapper.in("id", pids);
//执行查询
permissionList = permissionService.list(queryWrapper);
}
} catch (Exception e) {
e.printStackTrace();
}
//创建集合 保存树节点
List<TreeNode> treeNodes = new ArrayList<>();
for (Permission permission : permissionList) {
TreeNode treeNode = new TreeNode();
//菜单节点
treeNode.setId(permission.getId());
/**
* <p>
* 前端控制器
* </p>
*
*/
@RestController
@RequestMapping("/provider")
public class ProviderController {
@Autowired
private ProviderService providerService;
/**
* 供应商模糊查询
* @param
* @return
*/
@SysLog("供应商查询操作")
@RequestMapping("/providerList")
public DataGridViewResult providerList(ProviderVO providerVO) {
//创建分页信息 参数1 当前页 参数2 每页显示条数
IPage<Provider> page = new Page<>(providerVO.getPage(), providerVO.getLimit());
QueryWrapper<Provider> queryWrapper = new QueryWrapper<>();
queryWrapper.like(!StringUtils.isEmpty(providerVO.getProvidername()),"providername", providerVO.getProvidername());
queryWrapper.like(!StringUtils.isEmpty(providerVO.getTelephone()),"telephone", providerVO.getTelephone());
IPage<Provider> providerIPage = providerService.page(page, queryWrapper);
/**
* logsIPage.getTotal() 总条数
* logsIPage.getRecords() 分页记录列表
*/
return new DataGridViewResult(providerIPage.getTotal(),providerIPage.getRecords());
}
/**
* 供应商批量删除
* @param ids
* @return
*/
@SysLog("供应商删除操作")
@RequestMapping("/deleteList")
public Result deleteList(String ids) {
//将字符串拆分成数组
/**
* <p>
* 前端控制器
* </p>
*
*/
@RestController
@RequestMapping("/outport")
public class OutportController {
@Autowired
private OutportService outportService;
@Autowired
private GoodsService goodsService;
@Autowired
private InportService inportService;
@Autowired
private ProviderService providerService;
/**
* 添加退货信息
*
* @param id
* @param number
* @param remark
* @return
*/
@SysLog("退货添加操作")
@RequestMapping("addOutport")
public Result addOutport(Integer id, Integer number, String remark, HttpSession session) {
try {
outportService.addOutport(id, number, remark,session);
/**
* 根据供应商查商品下拉框
*
* @param providerid
* @return
*/
@RequestMapping("/loadGoodsByProvidreId")
public DataGridViewResult loadGoodsByProvidreId(Integer providerid) {
QueryWrapper<Goods> goodsQueryWrapper = new QueryWrapper<>();
goodsQueryWrapper.eq(providerid != null, "providerid", providerid);
List<Goods> list = goodsService.list(goodsQueryWrapper);
for (Goods goods : list) {
Provider provider = providerService.getById(goods.getProviderid());
if (null != provider) {
goods.setProvidername(provider.getProvidername());
}
}
return new DataGridViewResult(list);
}
}
@RestController
@RequestMapping("/report")
public class ReportController {
@Autowired
private SaleService saleService;
@Autowired
private OutsaleService outsaleService;
@Resource
private InportService inportService;
/**
* 供应商模糊查询
* @param
* @return
*/
@SysLog("供应商查询操作")
@RequestMapping("/providerList")
public DataGridViewResult providerList(ProviderVO providerVO) {
//创建分页信息 参数1 当前页 参数2 每页显示条数
IPage<Provider> page = new Page<>(providerVO.getPage(), providerVO.getLimit());
QueryWrapper<Provider> queryWrapper = new QueryWrapper<>();
queryWrapper.like(!StringUtils.isEmpty(providerVO.getProvidername()),"providername", providerVO.getProvidername());
queryWrapper.like(!StringUtils.isEmpty(providerVO.getTelephone()),"telephone", providerVO.getTelephone());
IPage<Provider> providerIPage = providerService.page(page, queryWrapper);
/**
* logsIPage.getTotal() 总条数
* logsIPage.getRecords() 分页记录列表
*/
return new DataGridViewResult(providerIPage.getTotal(),providerIPage.getRecords());
}
/**
* 供应商批量删除
* @param ids
* @return
*/
@SysLog("供应商删除操作")
@RequestMapping("/deleteList")
public Result deleteList(String ids) {
//将字符串拆分成数组
String[] idsStr = ids.split(",");
List<String> list = Arrays.asList(idsStr);
boolean bool = providerService.removeByIds(list);
if(bool){
return Result.success(true,"200","删除成功!");
}
return Result.error(false,null,"删除失败!");
}
/**
* 添加供应商信息
* @param provider
* @param session
* @return
*/
@SysLog("供应商添加操作")
@PostMapping("/addprovider")
public Result addProvider(Provider provider, HttpSession session){
}
/**
* 删除单条数据
* @param id
* @return
*/
@SysLog("类别删除操作")
@RequestMapping("/deleteOne")
public Result deleteOne(int id) {
boolean bool = categoryService.removeById(id);
if(bool){
return Result.success(true,"200","删除成功!");
}
return Result.error(false,null,"删除失败!");
}
}
/**
* <p>
* 前端控制器
* </p>
*
*/
@RestController
@RequestMapping("/permission")
.between("inptime",DateUtils.stepMonth(5),new Date())
.groupBy("counttime")
.orderByAsc("counttime");
List<Inport> inportsList = inportService.list(queryWrapper);
Map<String, Object> map = new HashMap<>();
List<String> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
for (Inport inport : inportsList) {
list1.add(inport.getCounttime());
list2.add(inport.getCountnumbers());
}
map.put("data1",list1);
map.put("data2",list2);
return new DataGridViewResult(map);
}
@SysLog("查询统计退货报表")
@RequestMapping("/statisticsoutGoods")
public DataGridViewResult statisticsoutGoods(){
Map<String, Object> map = new HashMap<>();
QueryWrapper<Outport> queryWrapper1 = new QueryWrapper<>();
queryWrapper1
.select("sum( number ) as countnumbers,DATE_FORMAT( outputtime, '%Y-%m' ) AS counttime")
.between("outputtime",DateUtils.stepMonth(5),new Date())
.groupBy("counttime")
.orderByAsc("counttime");
List<Outport> outportsList = outportService.list(queryWrapper1);
List<String> list3 = new ArrayList<>();
List<Integer> list4 = new ArrayList<>();
for (Outport outport : outportsList) {
list3.add(outport.getCounttime());
list4.add(outport.getCountnumbers());
}
map.put("data3",list3);
map.put("data4",list4);
return new DataGridViewResult(map);
}
@SysLog("查询盈利报表")
@RequestMapping("/profitStatement")
public DataGridViewResult profitStatement(){
Map<String, Object> map = new HashMap<>();
QueryWrapper<Permission> queryWrapper = new QueryWrapper<>();
//只查询菜单,不查权限
queryWrapper.eq("type", "menu");
//查询所有菜单
List<Permission> permissionList = permissionService.list(queryWrapper);
//创建节点集合
List<TreeNode> treeNodes = new ArrayList<>();
//循环遍历菜单集合
for (Permission permission : permissionList) {
Boolean spread = permission.getSpread() == 1 ? true : false;
treeNodes.add(new TreeNode(permission.getId(), permission.getPid(), permission.getTitle(), spread, "0"));
}
DataGridViewResult dataGridViewResult = new DataGridViewResult(treeNodes);
return dataGridViewResult;
}
}
/**
* <p>
* 前端控制器
* </p>
*
*/
@RestController
boolean bool = goodsService.removeById(id);
if (bool) {
return Result.success(true, "200", "删除成功!");
}
return Result.error(false, null, "删除失败!");
}
/**
* 根据id查询当前商品拥有的类别
*
* @param id
* @return
*/
@RequestMapping("/initGoodsByCategoryId")
public DataGridViewResult initGoodsByCategoryId(int id) {
List<Map<String, Object>> mapList = null;
try {
//查询所有类别列表
mapList = categoryService.listMaps();
//根据商品id查询商品拥有的类别
Set<Integer> cateIdList = categoryService.findGoodsByCategoryId(id);
for (Map<String, Object> map : mapList) {
//定义标记 默认不选中
boolean flag = false;
int cateId = (int) map.get("cateid");
for (Integer cid : cateIdList) {
if (cid == cateId) {
flag = true;
break;
}
}
map.put("LAY_CHECKED", flag);
}
} catch (Exception e) {
e.printStackTrace();
}
return new DataGridViewResult(Long.valueOf(mapList.size()), mapList);
}
/**
* 根据商品id加载商品信息
* @param goodsid
* @return
*/
@GetMapping("/loadGoodsById")
public DataGridViewResult loadGoodsById(int goodsid) {
QueryWrapper<Goods> goodsQueryWrapper = new QueryWrapper<>();
goodsQueryWrapper.eq(goodsid != 0, "gid", goodsid);
Goods goods = goodsService.getById(goodsid);