基于javaweb+mysql的ssm服装进销存管理系统(java+ssm+html+js+jsp+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM服装进销存管理系统(java+ssm+html+js+jsp+mysql)
项目介绍
管理员角色包含以下功能: 管理员登录,修改密码,管理员管理,货号管理,仓库管理,入库管理,出库管理,查看入库信息等功能。
环境需要
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.数据库:MySql 5.7版本;
技术栈
- 后端:Spring+SpringMVC+Mybatis 2. 前端:HTML+CSS+JavaScript+jsp
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/ 登录
queryWrapper.like(!StringUtils.isEmpty(userVO.getUsername()), "username", userVO.getUsername());
queryWrapper.like(!StringUtils.isEmpty(userVO.getUname()), "uname", userVO.getUname());
/**
* 翻页查询
* @param page 翻页对象
* @param queryWrapper 实体对象封装操作类
*/
IPage<User> userIPage = userService.page(page, queryWrapper);
return new DataGridViewResult(userIPage.getTotal(), userIPage.getRecords());
/**
* 添加用户信息
* @param user
* @return 返回一个map,其中:key 为 result表示操作的结果,包括:success 与
* error;key为total表示导入的总条数;key为available表示有效的条数
*/
@RequestMapping(value = "importRepositoryAdmin", method = RequestMethod.POST)
public
@ResponseBody
Map<String, Object> importRepositoryAdmin(MultipartFile file) throws RepositoryAdminManageServiceException {
// 初始化 Response
Response responseContent = ResponseFactory.newInstance();
String result = Response.RESPONSE_RESULT_ERROR;
// 读取文件
long total = 0;
long available = 0;
@SysLog("用户查询操作")
@RequestMapping("/userList")
public DataGridViewResult userList(UserVO userVO) {
//分页构造函数
IPage<User> page = new Page<>(userVO.getPage(), userVO.getLimit());
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like(!StringUtils.isEmpty(userVO.getUsername()), "username", userVO.getUsername());
queryWrapper.like(!StringUtils.isEmpty(userVO.getUname()), "uname", userVO.getUname());
/**
* 翻页查询
* @param page 翻页对象
* @return
*/
@SysLog("用户修改操作")
@PostMapping("/resetPwd")
public Result resetPwd(int id) {
User user = new User();
String salt = UUIDUtil.randomUUID();
user.setUid(id);
user.setPassword(PasswordUtil.md5("000000", salt, 2));
user.setSalt(salt);
boolean bool = userService.updateById(user);
try {
* @param number 出库数量
* @return 返回一个map,key为result的值表示操作是否成功
*/
@RequestMapping(value = "stockOut", method = RequestMethod.POST)
public
@ResponseBody
Map<String, Object> stockOut(@RequestParam("customerID") Integer customerID,
@RequestParam("goodsID") Integer goodsID,
@RequestParam(value = "repositoryID", required = false) String repositoryIDStr,
@RequestParam("number") long number) throws StockRecordManageServiceException {
// 初始化 Response
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
// 查询
Map<String, Object> queryResult = query(keyWord, searchType, offset, limit);
if (queryResult != null) {
rows = (List<RepositoryAdmin>) queryResult.get("data");
total = (long) queryResult.get("total");
// 设置 Response
responseContent.setCustomerInfo("rows", rows);
responseContent.setResponseTotal(total);
return responseContent.generateResponse();
/**
* 添加一条仓库管理员信息
* @param repositoryAdmin 仓库管理员信息
* @return 返回一个map,其中:key 为 result表示操作的结果,包括:success 与 error
boolean argumentCheck = true;
Integer repositoryID = null;
// 参数检查
if (repositoryIDStr != null) {
if (StringUtils.isNumeric(repositoryIDStr)) {
repositoryID = Integer.valueOf(repositoryIDStr);
} else {
argumentCheck = false;
responseContent.setResponseMsg("request argument error");
// 获取session中的信息
Subject currentUser = SecurityUtils.getSubject();
Session session = currentUser.getSession();
UserInfoDTO userInfo = (UserInfoDTO) session.getAttribute("userInfo");
// 设置非管理员请求的仓库ID
if (!currentUser.hasRole("systemAdmin")) {
if (repositoryIDBelong < 0) {
authorizeCheck = false;
responseContent.setResponseMsg("You are not authorized");
} else {
repositoryID = repositoryIDBelong;
if (authorizeCheck && argumentCheck) {
if (stockRecordManageService.stockOutOperation(customerID, goodsID, repositoryID, number, personInCharge))
result = Response.RESPONSE_RESULT_SUCCESS;
// 设置 Response
*/
@RequestMapping(value = "importRepositoryAdmin", method = RequestMethod.POST)
public
@ResponseBody
Map<String, Object> importRepositoryAdmin(MultipartFile file) throws RepositoryAdminManageServiceException {
// 初始化 Response
Response responseContent = ResponseFactory.newInstance();
String result = Response.RESPONSE_RESULT_ERROR;
// 读取文件
long total = 0;
*/
@RequestMapping("/checkUserName")
public String checkUserName(String username) {
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);
@RequestMapping("/deleteOne")
public Result deleteOne(int id) {
boolean bool = userService.removeById(id);
try {
if (bool) {
return Result.success(true, "200", "删除成功!");
} catch (Exception e) {
e.printStackTrace();
return Result.error(false, null, "删除失败!");
/**
* 重置密码
* @param id
@RequestMapping(value = "stockIn", method = RequestMethod.POST)
public
@ResponseBody
Map<String, Object> stockIn(@RequestParam("supplierID") Integer supplierID,
@RequestParam("goodsID") Integer goodsID,
@RequestParam(value = "repositoryID", required = false) String repositoryIDStr,
@RequestParam("number") long number) throws StockRecordManageServiceException {
// 初始化 Response
Response responseContent = ResponseFactory.newInstance();
String result = Response.RESPONSE_RESULT_ERROR;
boolean authorizeCheck = true;
@Autowired
private UserService userService;
@Autowired
private RoleService roleService;
/**
* 登录
* @param username 用户名
* @param password 密码
* @param request
* @return
*/
String result = Response.RESPONSE_RESULT_ERROR;
boolean authorizeCheck = true;
boolean argumentCheck = true;
Integer repositoryID = null;
// 参数检查
if (repositoryIDStr != null) {
if (StringUtils.isNumeric(repositoryIDStr)) {
repositoryID = Integer.valueOf(repositoryIDStr);
} else {
argumentCheck = false;
responseContent.setResponseMsg("request argument error");
// 获取 session 中的信息
Subject currentUser = SecurityUtils.getSubject();
try {
if (bool) {
return Result.success(true, "200", "修改成功!");
} catch (Exception e) {
e.printStackTrace();
return Result.error(false, null, "修改失败!");
/**
* 删除单条数据
* @param id
* @return
User user = new User();
String salt = UUIDUtil.randomUUID();
user.setUid(id);
user.setPassword(PasswordUtil.md5("000000", salt, 2));
user.setSalt(salt);
boolean bool = userService.updateById(user);
try {
if (bool) {
return Result.success(true, "200", "重置成功!");
} catch (Exception e) {
e.printStackTrace();
return Result.error(false, null, "重置失败!");
/**
Map<String, Object> getRepositoryAdminInfo(Integer repositoryAdminID) throws RepositoryAdminManageServiceException {
// 初始化 Response
Response responseContent = ResponseFactory.newInstance();
String result = Response.RESPONSE_RESULT_ERROR;
// 查询
RepositoryAdmin repositoryAdmin = null;
Map<String, Object> queryResult = repositoryAdminManageService.selectByID(repositoryAdminID);
if (queryResult != null) {
if ((repositoryAdmin = (RepositoryAdmin) queryResult.get("data")) != null)
result = Response.RESPONSE_RESULT_SUCCESS;
// 设置 Response
responseContent.setResponseResult(result);
responseContent.setResponseData(repositoryAdmin);


