当前位置:   article > 正文

Java项目:实现进销存系统(java+SSM+BootStrap+jsp+mysql)_jsperp 开源

jsperp 开源

源码获取:博客首页 "资源" 里下载!

项目介绍

进销存库存管理系统源码,采用了ssm框架,功能结构非常简单明了,界面也比较清爽大气,非常适合学生和Java新手拿来学习使用。
本项目主要分为管理员、销售、采购员三种角色;
管理员主要功能包括:
用户信息管理:用户查询、用户添加;
货物信息管理:货物查询、库存查询;
入库单信息管理:入库单新建、入库单审核;
出库信息管理:出库单新建、出库单审核;

销售主要功能包括:
出库信息管理:出库单新建;

采购员主要功能包括:
货物信息管理:库存查询
入库单信息管理:入库单新建;

环境要求:

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.是否Maven项目: 否;

6.数据库:MySql 5.7版本;

技术栈

1. 后端:Spring SpringMVC MyBatis

2. 前端:JSP+css+javascript+bootstrap+jQuery

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行;
3. 将项目中dbconfig.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入localhost:8080/ERPSystem 登录

 

 

 

 

 

用户管理控制层:

  1. @RestController
  2. @RequestMapping("/user")
  3. public class UserController {
  4. @Autowired
  5. private UserService userService;
  6. @Autowired
  7. private RoleService roleService;
  8. /**
  9. * 登录
  10. *
  11. * @param username 用户名
  12. * @param password 密码
  13. * @param request
  14. * @return
  15. */
  16. @SysLog("登陆操作")
  17. @PostMapping("/login")
  18. public Result login(String username, String password, HttpServletRequest request) {
  19. try {
  20. //获取当前登录主体对象
  21. Subject subject = SecurityUtils.getSubject();
  22. UsernamePasswordToken token = new UsernamePasswordToken(username, password);
  23. subject.login(token);
  24. LoginUserVO userDTO = (LoginUserVO) subject.getPrincipal();
  25. request.getSession().setAttribute("username", userDTO.getUser());
  26. return Result.success(true, "200", "登录成功");
  27. } catch (UnknownAccountException e) {
  28. e.printStackTrace();
  29. return Result.error(false, "400", "登录失败,用户名不存在");
  30. }catch (IncorrectCredentialsException e) {
  31. e.printStackTrace();
  32. return Result.error(false, "400", "登录失败,密码错误");
  33. }catch (AuthenticationException e) {
  34. e.printStackTrace();
  35. return Result.error(false, "400", "登录失败,账户禁用");
  36. }
  37. }
  38. /**
  39. * 得到登陆验证码
  40. * @param response
  41. * @param session
  42. * @throws IOException
  43. */
  44. @RequestMapping("/getCode")
  45. public void getCode(HttpServletResponse response, HttpSession session) throws IOException {
  46. //定义图形验证码的长和宽
  47. LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(116, 36,4,5);
  48. session.setAttribute("code",lineCaptcha.getCode());
  49. try {
  50. ServletOutputStream outputStream = response.getOutputStream();
  51. lineCaptcha.write(outputStream);
  52. outputStream.close();
  53. } catch (IOException e) {
  54. e.printStackTrace();
  55. }
  56. }
  57. /**
  58. * 查询所有用户信息
  59. *
  60. * @param userVO
  61. * @return
  62. */
  63. @SysLog("用户查询操作")
  64. @RequestMapping("/userList")
  65. public DataGridViewResult userList(UserVO userVO) {
  66. //分页构造函数
  67. IPage<User> page = new Page<>(userVO.getPage(), userVO.getLimit());
  68. QueryWrapper<User> queryWrapper = new QueryWrapper<>();
  69. queryWrapper.like(!StringUtils.isEmpty(userVO.getUsername()), "username", userVO.getUsername());
  70. queryWrapper.like(!StringUtils.isEmpty(userVO.getUname()), "uname", userVO.getUname());
  71. /**
  72. * 翻页查询
  73. * @param page 翻页对象
  74. * @param queryWrapper 实体对象封装操作类
  75. */
  76. IPage<User> userIPage = userService.page(page, queryWrapper);
  77. return new DataGridViewResult(userIPage.getTotal(), userIPage.getRecords());
  78. }
  79. /**
  80. * 添加用户信息
  81. *
  82. * @param user
  83. * @return
  84. */
  85. @SysLog("用户添加操作")
  86. @PostMapping("/adduser")
  87. public Result addRole(User user) {
  88. user.setUcreatetime(new Date());
  89. String salt = UUIDUtil.randomUUID();
  90. user.setPassword(PasswordUtil.md5("000000", salt, 2));
  91. user.setSalt(salt);
  92. user.setType(1);
  93. boolean bool = userService.save(user);
  94. try {
  95. if (bool) {
  96. return Result.success(true, "200", "添加成功!");
  97. }
  98. } catch (Exception e) {
  99. e.printStackTrace();
  100. }
  101. return Result.error(false, null, "添加失败!");
  102. }
  103. /**
  104. * 校验用户名是否存在
  105. *
  106. * @param username
  107. * @return
  108. */
  109. @RequestMapping("/checkUserName")
  110. public String checkUserName(String username) {
  111. Map<String, Object> map = new HashMap<>();
  112. try {
  113. QueryWrapper<User> queryWrapper = new QueryWrapper<>();
  114. queryWrapper.eq("username", username);
  115. User user = userService.getOne(queryWrapper);
  116. if (user != null) {
  117. map.put("exist", true);
  118. map.put("message", "用户名已存在");
  119. } else {
  120. map.put("exist", false);
  121. map.put("message", "用户名可以使用");
  122. }
  123. } catch (Exception e) {
  124. e.printStackTrace();
  125. }
  126. return JSON.toJSONString(map);
  127. }
  128. /**
  129. * 修改用户信息
  130. *
  131. * @param user
  132. * @return
  133. */
  134. @SysLog("用户修改操作")
  135. @PostMapping("/updateuser")
  136. public Result updateUser(User user) {
  137. boolean bool = userService.updateById(user);
  138. try {
  139. if (bool) {
  140. return Result.success(true, "200", "修改成功!");
  141. }
  142. } catch (Exception e) {
  143. e.printStackTrace();
  144. }
  145. return Result.error(false, null, "修改失败!");
  146. }
  147. /**
  148. * 删除单条数据
  149. *
  150. * @param id
  151. * @return
  152. */
  153. @SysLog("用户删除操作")
  154. @RequestMapping("/deleteOne")
  155. public Result deleteOne(int id) {
  156. boolean bool = userService.removeById(id);
  157. try {
  158. if (bool) {
  159. return Result.success(true, "200", "删除成功!");
  160. }
  161. } catch (Exception e) {
  162. e.printStackTrace();
  163. }
  164. return Result.error(false, null, "删除失败!");
  165. }
  166. /**
  167. * 重置密码
  168. *
  169. * @param id
  170. * @return
  171. */
  172. @SysLog("用户修改操作")
  173. @PostMapping("/resetPwd")
  174. public Result resetPwd(int id) {
  175. User user = new User();
  176. String salt = UUIDUtil.randomUUID();
  177. user.setUid(id);
  178. user.setPassword(PasswordUtil.md5("000000", salt, 2));
  179. user.setSalt(salt);
  180. boolean bool = userService.updateById(user);
  181. try {
  182. if (bool) {
  183. return Result.success(true, "200", "重置成功!");
  184. }
  185. } catch (Exception e) {
  186. e.printStackTrace();
  187. }
  188. return Result.error(false, null, "重置失败!");
  189. }
  190. /**
  191. * 根据id查询当前用户拥有的角色
  192. *
  193. * @param id
  194. * @return
  195. */
  196. @RequestMapping("/initRoleByUserId")
  197. public DataGridViewResult initRoleByUserId(int id) {
  198. List<Map<String, Object>> mapList = null;
  199. try {
  200. //查询所有角色列表
  201. mapList = roleService.listMaps();
  202. //根据用户id查询用户拥有的角色
  203. Set<Integer> roleIdList = userService.findRoleByUserId(id);
  204. for (Map<String, Object> map : mapList) {
  205. //定义标记 默认不选中
  206. boolean flag = false;
  207. int roleId = (int) map.get("roleid");
  208. for (Integer rid : roleIdList) {
  209. if (rid == roleId) {
  210. flag = true;
  211. break;
  212. }
  213. }
  214. map.put("LAY_CHECKED", flag);
  215. }
  216. } catch (Exception e) {
  217. e.printStackTrace();
  218. }
  219. return new DataGridViewResult(Long.valueOf(mapList.size()), mapList);
  220. }
  221. /**
  222. * 为用户分配角色
  223. *
  224. * @param roleids
  225. * @param userid
  226. * @return
  227. */
  228. @SysLog("用户添加操作")
  229. @RequestMapping("/saveUserRole")
  230. public Result saveUserRole(String roleids, int userid) {
  231. try {
  232. if (userService.saveUserRole(userid, roleids)) {
  233. return Result.success(true, null, "分配成功");
  234. }
  235. } catch (Exception e) {
  236. e.printStackTrace();
  237. }
  238. return Result.error(false, null, "分配失败");
  239. }
  240. /**
  241. * 修改密码
  242. *
  243. * @param newPassWord1
  244. * @param newPassWord2
  245. * @return
  246. */
  247. @RequestMapping("/updateUserPassWord")
  248. public Result updateUserPassWord(String newPassWord1, String newPassWord2,HttpSession session) {
  249. User sessionUser = (User) session.getAttribute("username");
  250. if (newPassWord1.equals(newPassWord2)){
  251. User user = new User();
  252. String salt = UUIDUtil.randomUUID();
  253. user.setUid(sessionUser.getUid());
  254. user.setPassword(PasswordUtil.md5(newPassWord1, salt, 2));
  255. user.setSalt(salt);
  256. boolean bool = userService.updateById(user);
  257. if (bool){
  258. return Result.success(true,null,"修改成功");
  259. }else {
  260. return Result.error(false,null,"修改失败!");
  261. }
  262. }else {
  263. return Result.error(false,null,"修改失败,两次密码不一致!");
  264. }
  265. }
  266. }

销售管理控制层:

  1. @RestController
  2. @RequestMapping("/sale")
  3. public class SaleController {
  4. @Autowired
  5. private SaleService saleService;
  6. @Autowired
  7. private GoodsService goodsService;
  8. @Autowired
  9. private CustomerService customerService;
  10. /**
  11. * 销售查询
  12. *
  13. * @param
  14. * @return
  15. */
  16. @SysLog("销售查询操作")
  17. @RequestMapping("/saleList")
  18. public DataGridViewResult saleList(SaleVO saleVO) {
  19. //创建分页信息 参数1 当前页 参数2 每页显示条数
  20. IPage<Sale> page = new Page<>(saleVO.getPage(), saleVO.getLimit());
  21. QueryWrapper<Sale> queryWrapper = new QueryWrapper<>();
  22. queryWrapper.like(!StringUtils.isEmpty(saleVO.getNumbering()),"numbering", saleVO.getNumbering());
  23. queryWrapper.eq(saleVO.getGid() != null && saleVO.getGid() != 0, "gid", saleVO.getGid());
  24. queryWrapper.ge(saleVO.getStartTime() != null, "buytime", saleVO.getStartTime());
  25. queryWrapper.le(saleVO.getEndTime() != null, "buytime", saleVO.getEndTime());
  26. queryWrapper.orderByDesc("buytime");
  27. IPage<Sale> saleIPage = saleService.page(page, queryWrapper);
  28. List<Sale> records = saleIPage.getRecords();
  29. for (Sale sale : records) {
  30. sale.setAllmoney(sale.getMoney()*sale.getBuyquantity());
  31. Customer customer = customerService.getById(sale.getCustid());
  32. if (null != customer) {
  33. sale.setCustomervip(customer.getCustvip());
  34. sale.setCustomername(customer.getCustname());
  35. }
  36. Goods goods = goodsService.getById(sale.getGid());
  37. if (null != goods) {
  38. sale.setGoodsname(goods.getGname());
  39. sale.setGnumbering(goods.getGnumbering());
  40. }
  41. }
  42. return new DataGridViewResult(saleIPage.getTotal(), records);
  43. }
  44. /**
  45. * 添加销售单信息
  46. *
  47. * @param sale
  48. * @return
  49. */
  50. @SysLog("销售添加操作")
  51. @PostMapping("/addsale")
  52. public Result addsale(Sale sale, HttpSession session) {
  53. if (sale.getGid()==0){
  54. return Result.error(false, null, "添加失败!未选商品");
  55. }
  56. Goods goods = goodsService.getById(sale.getGid());
  57. Integer gquantity = goods.getGquantity();
  58. if(gquantity<sale.getBuyquantity()){
  59. return Result.error(false, null, "添加失败!库存不足,库存为:"+gquantity);
  60. }
  61. User user = (User) session.getAttribute("username");
  62. String num = RandomStringUtils.randomAlphanumeric(7);
  63. sale.setNumbering(num);
  64. sale.setPerson(user.getUsername());
  65. sale.setBuytime(new Date());
  66. sale.setRealnumber(sale.getBuyquantity());
  67. boolean bool = saleService.save(sale);
  68. if (bool) {
  69. return Result.success(true, "200", "添加成功!");
  70. }
  71. return Result.error(false, null, "添加失败!库存不足");
  72. }
  73. /**
  74. * 修改销售单信息
  75. *
  76. * @param sale
  77. * @return
  78. */
  79. @SysLog("销售修改操作")
  80. @PostMapping("/updatesale")
  81. public Result updatesale(Sale sale, HttpSession session) {
  82. User user = (User) session.getAttribute("username");
  83. sale.setPerson(user.getUsername());
  84. sale.setBuytime(new Date());
  85. boolean bool = saleService.updateById(sale);
  86. if (bool) {
  87. return Result.success(true, "200", "修改成功!");
  88. }
  89. return Result.error(false, null, "修改失败!");
  90. }
  91. /**
  92. * 删除单条数据
  93. *
  94. * @param id
  95. * @return
  96. */
  97. @SysLog("销售删除操作")
  98. @RequestMapping("/deleteOne")
  99. public Result deleteOne(int id) {
  100. boolean bool = saleService.removeById(id);
  101. if (bool) {
  102. return Result.success(true, "200", "删除成功!");
  103. }
  104. return Result.error(false, null, "删除失败!");
  105. }
  106. }

供应商管理控制层:

  1. @RestController
  2. @RequestMapping("/provider")
  3. public class ProviderController {
  4. @Autowired
  5. private ProviderService providerService;
  6. /**
  7. * 供应商模糊查询
  8. * @param
  9. * @return
  10. */
  11. @SysLog("供应商查询操作")
  12. @RequestMapping("/providerList")
  13. public DataGridViewResult providerList(ProviderVO providerVO) {
  14. //创建分页信息 参数1 当前页 参数2 每页显示条数
  15. IPage<Provider> page = new Page<>(providerVO.getPage(), providerVO.getLimit());
  16. QueryWrapper<Provider> queryWrapper = new QueryWrapper<>();
  17. queryWrapper.like(!StringUtils.isEmpty(providerVO.getProvidername()),"providername", providerVO.getProvidername());
  18. queryWrapper.like(!StringUtils.isEmpty(providerVO.getTelephone()),"telephone", providerVO.getTelephone());
  19. IPage<Provider> providerIPage = providerService.page(page, queryWrapper);
  20. /**
  21. * logsIPage.getTotal() 总条数
  22. * logsIPage.getRecords() 分页记录列表
  23. */
  24. return new DataGridViewResult(providerIPage.getTotal(),providerIPage.getRecords());
  25. }
  26. /**
  27. * 供应商批量删除
  28. * @param ids
  29. * @return
  30. */
  31. @SysLog("供应商删除操作")
  32. @RequestMapping("/deleteList")
  33. public Result deleteList(String ids) {
  34. //将字符串拆分成数组
  35. String[] idsStr = ids.split(",");
  36. List<String> list = Arrays.asList(idsStr);
  37. boolean bool = providerService.removeByIds(list);
  38. if(bool){
  39. return Result.success(true,"200","删除成功!");
  40. }
  41. return Result.error(false,null,"删除失败!");
  42. }
  43. /**
  44. * 添加供应商信息
  45. * @param provider
  46. * @param session
  47. * @return
  48. */
  49. @SysLog("供应商添加操作")
  50. @PostMapping("/addprovider")
  51. public Result addProvider(Provider provider, HttpSession session){
  52. User user = (User) session.getAttribute("username");
  53. provider.setOpername(user.getUname());
  54. boolean bool = providerService.save(provider);
  55. if(bool){
  56. return Result.success(true,"200","添加成功!");
  57. }
  58. return Result.error(false,null,"添加失败!");
  59. }
  60. /**
  61. * 修改供应商信息
  62. * @param provider
  63. * @return
  64. */
  65. @SysLog("供应商修改操作")
  66. @PostMapping("/updateprovider")
  67. public Result updateProvider(Provider provider){
  68. boolean bool = providerService.updateById(provider);
  69. if(bool){
  70. return Result.success(true,"200","修改成功!");
  71. }
  72. return Result.error(false,null,"修改失败!");
  73. }
  74. /**
  75. * 删除单条数据
  76. * @param id
  77. * @return
  78. */
  79. @SysLog("供应商删除操作")
  80. @RequestMapping("/deleteOne")
  81. public Result deleteOne(int id) {
  82. boolean bool = providerService.removeById(id);
  83. if(bool){
  84. return Result.success(true,"200","删除成功!");
  85. }
  86. return Result.error(false,null,"删除失败!");
  87. }
  88. /**
  89. *
  90. * 加载下拉框
  91. * @return
  92. */
  93. @RequestMapping("/loadAllProvider")
  94. public DataGridViewResult loadAllProvider(){
  95. QueryWrapper<Provider> queryWrapper = new QueryWrapper<>();
  96. List<Provider> list = providerService.list(queryWrapper);
  97. return new DataGridViewResult(list);
  98. }
  99. }

源码获取:博客首页 "资源" 里下载! 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/412493
推荐阅读
相关标签
  

闽ICP备14008679号