diff --git a/.gitee/PULL_REQUEST_TEMPLATE.zh-CN.md b/.gitee/PULL_REQUEST_TEMPLATE.zh-CN.md index 286d18e..534be43 100644 --- a/.gitee/PULL_REQUEST_TEMPLATE.zh-CN.md +++ b/.gitee/PULL_REQUEST_TEMPLATE.zh-CN.md @@ -6,294 +6,6 @@ ### 测试用例 -package com.ken.wms.common.controller; - -import com.ken.wms.common.service.Interface.RepositoryAdminManageService; -import com.ken.wms.common.util.Response; -import com.ken.wms.common.util.ResponseFactory; -import com.ken.wms.domain.RepositoryAdmin; -import com.ken.wms.exception.RepositoryAdminManageServiceException; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -/// RHY -/** -* 仓库管理员管理请求 Handler - -*/ -@Controller -@RequestMapping(value = "/**/repositoryAdminManage") -public class RepositoryAdminManageHandler { - - @Autowired - private RepositoryAdminManageService repositoryAdminManageService; - - // 查询类型 - private static final String SEARCH_BY_ID = "searchByID"; - private static final String SEARCH_BY_NAME = "searchByName"; - private static final String SEARCH_BY_REPOSITORY_ID = "searchByRepositoryID"; - private static final String SEARCH_ALL = "searchAll"; - - /** - * 通用记录查询 - * - * @param keyWord 查询关键字 - * @param searchType 查询类型 - * @param offset 分页偏移值 - * @param limit 分页大小 - * @return 返回所有符合条件的记录 - */ - private Map query(String keyWord, String searchType, int offset, int limit) throws RepositoryAdminManageServiceException { - Map queryResult = null; - - // query - switch (searchType) { - case SEARCH_ALL: - queryResult = repositoryAdminManageService.selectAll(offset, limit); - break; - case SEARCH_BY_ID: - if (StringUtils.isNumeric(keyWord)) - queryResult = repositoryAdminManageService.selectByID(Integer.valueOf(keyWord)); - break; - case SEARCH_BY_NAME: - queryResult = repositoryAdminManageService.selectByName(offset, limit, keyWord); - break; - case SEARCH_BY_REPOSITORY_ID: - if (StringUtils.isNumeric(keyWord)) - queryResult = repositoryAdminManageService.selectByRepositoryID(Integer.valueOf(keyWord)); - break; - default: - // do other things - break; - } - - return queryResult; - } - - /** - * 查询仓库管理员信息 - * - * @param searchType 查询类型 - * @param offset 分页偏移值 - * @param limit 分页大小 - * @param keyWord 查询关键字 - * @return 返回一个Map,其中key=rows,表示查询出来的记录;key=total,表示记录的总条数 - */ - @SuppressWarnings("unchecked") - @RequestMapping(value = "getRepositoryAdminList", method = RequestMethod.GET) - public - @ResponseBody - Map getRepositoryAdmin(@RequestParam("searchType") String searchType, - @RequestParam("keyWord") String keyWord, @RequestParam("offset") int offset, - @RequestParam("limit") int limit) throws RepositoryAdminManageServiceException { - // 初始化 Response - Response responseContent = ResponseFactory.newInstance(); - - List rows = null; - long total = 0; - - // 查询 - Map queryResult = query(keyWord, searchType, offset, limit); - - if (queryResult != null) { - rows = (List) 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 - */ - @RequestMapping(value = "addRepositoryAdmin", method = RequestMethod.POST) - public - @ResponseBody - Map addRepositoryAdmin(@RequestBody RepositoryAdmin repositoryAdmin) throws RepositoryAdminManageServiceException { - // 初始化 Response - Response responseContent = ResponseFactory.newInstance(); - - // 添加结果 - String result = repositoryAdminManageService.addRepositoryAdmin(repositoryAdmin) - ? Response.RESPONSE_RESULT_SUCCESS : Response.RESPONSE_RESULT_ERROR; - - // 设置 Response - responseContent.setResponseResult(result); - return responseContent.generateResponse(); - } - - /** - * 查询指定 ID 的仓库管理员信息 - * - * @param repositoryAdminID 仓库管理员ID - * @return 返回一个map,其中:key 为 result 的值为操作的结果,包括:success 与 error;key 为 data - * 的值为仓库管理员信息 - */ - @RequestMapping(value = "getRepositoryAdminInfo", method = RequestMethod.GET) - public - @ResponseBody - Map getRepositoryAdminInfo(Integer repositoryAdminID) throws RepositoryAdminManageServiceException { - // 初始化 Response - Response responseContent = ResponseFactory.newInstance(); - String result = Response.RESPONSE_RESULT_ERROR; - - // 查询 - RepositoryAdmin repositoryAdmin = null; - Map 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); - return responseContent.generateResponse(); - } - - /** - * 更新仓库管理员信息 - * - * @param repositoryAdmin 仓库管理员信息 - * @return 返回一个map,其中:key 为 result 的值为操作的结果,包括:success 与 error;key 为 data - * 的值为仓库管理员信息 - */ - @RequestMapping(value = "updateRepositoryAdmin", method = RequestMethod.POST) - public - @ResponseBody - Map updateRepositoryAdmin(@RequestBody RepositoryAdmin repositoryAdmin) throws RepositoryAdminManageServiceException { - // 初始化 Response - Response responseContent = ResponseFactory.newInstance(); - - // 更新 - String result = repositoryAdminManageService.updateRepositoryAdmin(repositoryAdmin) - ? Response.RESPONSE_RESULT_SUCCESS : Response.RESPONSE_RESULT_ERROR; - - // 设置 Response - responseContent.setResponseResult(result); - return responseContent.generateResponse(); - } - - /** - * 删除指定 ID 的仓库管理员信息 - * - * @param repositoryAdminID 仓库ID - * @return 返回一个map,其中:key 为 result 的值为操作的结果,包括:success 与 error;key 为 data - * 的值为仓库管理员信息 - */ - @RequestMapping(value = "deleteRepositoryAdmin", method = RequestMethod.GET) - public - @ResponseBody - Map deleteRepositoryAdmin(Integer repositoryAdminID) throws RepositoryAdminManageServiceException { - // 初始化 Response - Response responseContent = ResponseFactory.newInstance(); - - // 删除记录 - String result = repositoryAdminManageService.deleteRepositoryAdmin(repositoryAdminID) - ? Response.RESPONSE_RESULT_SUCCESS : Response.RESPONSE_RESULT_ERROR; - - // 设置 Response - responseContent.setResponseResult(result); - return responseContent.generateResponse(); - } - - /** - * 从文件中导入仓库管理员信息 - * - * @param file 保存有仓库管理员信息的文件 - * @return 返回一个map,其中:key 为 result表示操作的结果,包括:success 与 - * error;key为total表示导入的总条数;key为available表示有效的条数 - */ - @RequestMapping(value = "importRepositoryAdmin", method = RequestMethod.POST) - public - @ResponseBody - Map importRepositoryAdmin(MultipartFile file) throws RepositoryAdminManageServiceException { - // 初始化 Response - Response responseContent = ResponseFactory.newInstance(); - String result = Response.RESPONSE_RESULT_ERROR; - - // 读取文件 - long total = 0; - long available = 0; - if (file != null) { - Map importInfo = repositoryAdminManageService.importRepositoryAdmin(file); - if (importInfo != null) { - total = (long) importInfo.get("total"); - available = (long) importInfo.get("available"); - result = Response.RESPONSE_RESULT_SUCCESS; - } - } - - // 设置 Response - responseContent.setResponseResult(result); - responseContent.setResponseTotal(total); - responseContent.setCustomerInfo("available", available); - return responseContent.generateResponse(); - } - - /** - * 导出仓库管理员信息到文件中 - * - * @param searchType 查询类型 - * @param keyWord 查询关键字 - * @param response HttpServletResponse - */ - @SuppressWarnings("unchecked") - @RequestMapping(value = "exportRepositoryAdmin", method = RequestMethod.GET) - public void exportRepositoryAdmin(@RequestParam("searchType") String searchType, - @RequestParam("keyWord") String keyWord, HttpServletResponse response) throws RepositoryAdminManageServiceException, IOException { - - // 导出文件名 - String fileName = "repositoryAdminInfo.xlsx"; - - // 查询 - List repositoryAdmins; - Map queryResult = query(keyWord, searchType, -1, -1); - - if (queryResult != null) - repositoryAdmins = (List) queryResult.get("data"); - else - repositoryAdmins = new ArrayList<>(); - - // 生成文件 - File file = repositoryAdminManageService.exportRepositoryAdmin(repositoryAdmins); - - // 输出文件 - if (file != null) { - // 设置响应头 - response.addHeader("Content-Disposition", "attachment;filename=" + fileName); - FileInputStream inputStream = new FileInputStream(file); - OutputStream outputStream = response.getOutputStream(); - byte[] buffer = new byte[8192]; - - int len; - while ((len = inputStream.read(buffer, 0, buffer.length)) > 0) { - outputStream.write(buffer, 0, len); - outputStream.flush(); - } - - inputStream.close(); - outputStream.close(); - } - } -} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5d947ca --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +# Build and Release Folders +bin-debug/ +bin-release/ +[Oo]bj/ +[Bb]in/ + +# Other files and folders +.settings/ + +# Executables +*.swf +*.air +*.ipa +*.apk + +# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties` +# should NOT be excluded as they contain compiler settings and other important +# information for Eclipse / Flash Builder. diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..35410ca --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml new file mode 100644 index 0000000..5983d33 --- /dev/null +++ b/.idea/dataSources.xml @@ -0,0 +1,31 @@ + + + + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://localhost:3306 + + + + + + + $ProjectFileDir$ + + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://localhost:3306/wms_db + + + + + + + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/.idea/libraries/WMS.xml b/.idea/libraries/WMS.xml new file mode 100644 index 0000000..0e14349 --- /dev/null +++ b/.idea/libraries/WMS.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 639900d..a289170 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,7 @@ - + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..fd14004 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml new file mode 100644 index 0000000..3404959 --- /dev/null +++ b/.idea/sqldialects.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..35eb1dd 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/warehouseManager-developer.iml b/.idea/warehouseManager-developer.iml new file mode 100644 index 0000000..78fa7a4 --- /dev/null +++ b/.idea/warehouseManager-developer.iml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/webContexts.xml b/.idea/webContexts.xml new file mode 100644 index 0000000..5ce618f --- /dev/null +++ b/.idea/webContexts.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index 0f54cb7..0000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - { - "associatedIndex": 1 -} - - - - - { - "keyToString": { - "RunOnceActivity.ShowReadmeOnStart": "true", - "git-widget-placeholder": "master", - "kotlin-language-version-configured": "true", - "last_opened_file_path": "D:/Git/rjgc/cangku/warehouseManager-developer", - "node.js.detected.package.eslint": "true", - "node.js.detected.package.tslint": "true", - "node.js.selected.package.eslint": "(autodetect)", - "node.js.selected.package.tslint": "(autodetect)", - "nodejs_package_manager_path": "npm", - "settings.editor.selected.configurable": "vcs.Git", - "vue.rearranger.settings.migration": "true" - }, - "keyToStringList": { - "ChangesTree.GroupingKeys": [ - "directory" - ] - } -} - - - - - - - - - C:\Users\任海洋\AppData\Roaming\Subversion - - - - - 1745473836915 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 261eeb9..0000000 --- a/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/README.md b/README.md deleted file mode 100644 index 12eaf07..0000000 --- a/README.md +++ /dev/null @@ -1,112 +0,0 @@ -star -fork - -# 基于SSM框架的仓库管理系统 - - -## ✅ 分支说明 - -| 分支 | spring框架 | MySQL8.0 | MySQL5.7 | 登录验证码 | -|----|----------|----------|----------|----------| -| dev-springboot | springboot | ✅ | ✅ | ✅ | -| developer | springmvc | ✅ | ✅ | ✅ | -| 去登录验证码 | springmvc | ✅ | ✅ | ❎ | -| MySQL5.7 | springmvc | ❎ | ✅ | ✅ | - - -## ✅ 非常紧急的问题或功能定制可以关注公众号->发消息:仓库管理 - -> ![输入图片说明](qrcode_for_gh_cf005810de67_258.jpg) - -## 计划 -- [x] 录制idea启动系统演示视频(价值:很多初学者需要) -- [x] 数据库驱动兼容8.0,兼容MySQL5.7的旧代码放在分支mysql5.7(价值:应届毕业生80%以上默认用的MySQL8.0+) -- [x] springmvc迁移到springboot(价值:应届毕业生80%以上默认用的springboot框架),见【dev-springboot】分支 - -![输入图片说明](video/image.png) - - -## ⭕ 视频-IDEA导入+运行项目演示 - -> [基于SSM框架的仓库管理系统演示.mp4](/video/基于SSM框架的仓库管理系统演示.mp4) - -## 📋 功能 - -* 系统操作权限管理。系统提供基本的登入登出功能,同时系统包含两个角色:系统超级管理员和普通管理员,超级管理员具有最高的操作权限,而普通管理员仅具有最基本的操作权限,而且仅能操作自己被指派的仓库。 -* 请求URL鉴权。对于系统使用者登陆后进行操作发送请求的URL,后台会根据当前用户的角色判断是否拥有请求该URL的权限。 -* 基础数据信息管理。对包括:货物信息、供应商信息、客户信息、仓库信息在内的基础数据信息进行管理,提供的操作有:添加、删除、修改、条件查询、导出为Excel和到从Excel导入。 -* 仓库管理员管理。对仓库管理员信息CRUD操作,或者为指定的仓库管理员指派所管理的仓库。上述中的仓库管理员可以以普通管理员身份登陆到系统。 -* 库存信息管理。对库存信息的CRUD操作,导入导出操作,同时查询的时候可以根据仓库以及商品ID等信息进行多条件查询。 -* 基本仓库事务操作。执行货物的入库与出库操作。 -* 系统登陆日志查询。超级管理员可以查询某一用户在特定时间段内的系统登陆日志。 -* 系统操作日志查询。超级管理员可以查询某一用户在特定时间段内对系统进行操作的操作记录。、 -* 密码修改。 - - - -## ✳️ 使用到的框架和库 - -* Apache POI -* MyBatis -* Spring Framework -* Spring MVC -* Apache Shiro -* Ehcache -* Apache Commons -* Log4j -* Slf4j -* Jackson -* C3P0 -* Junit -* MySQL-Connector -* jQuery -* Bootstrap -## ✴️ 登陆系统方式 -用户ID : 1001 -密码 :123456 -![输入图片说明](https://images.gitee.com/uploads/images/2020/0106/172938_7e1c90d9_736072.png "屏幕截图.png") -加密代码 -``` -// 用户密码(wms_user.USER_PASSWORD)加密规则 -String tempStr = MD5Util.MD5("123456");// 第一次对密码进行加密 -String encryptPassword = MD5Util.MD5(tempStr + "1001");// 第二次对密码进行加密 -//存入数据库的加密密码 -System.out.println(encryptPassword); -``` -新增用户默认密码为用户ID(比如新增一个用户ID为1012,密码也为1012) -## 📚 JDK版本 - -### jdk 1.8 - -## 📚 数据库版本 -### MySQL 8.0+ -查看版本号命令如下: -> MySQL> select version(); - -## ⭐ 数据库关系图 -![输入图片说明](https://gitee.com/uploads/images/2018/0412/194935_92258b3b_736072.png "Diagram 1.png") - -## 📚 部分截图 -![输入图片说明](https://images.gitee.com/uploads/images/2020/0106/173158_70c3cba9_736072.png "WMS-截图1.PNG") -![输入图片说明](https://images.gitee.com/uploads/images/2020/0106/173225_8869b802_736072.png "MWS-截图2.PNG") -![输入图片说明](https://images.gitee.com/uploads/images/2020/0106/173239_39be69c7_736072.png "WMS-截图3.PNG") -![输入图片说明](https://images.gitee.com/uploads/images/2020/0106/173247_db6a6bdf_736072.png "WMS-截图4.PNG") -![输入图片说明](https://images.gitee.com/uploads/images/2020/0106/173256_8b7d7df4_736072.png "WMS-截图5.PNG") -![输入图片说明](https://images.gitee.com/uploads/images/2020/0106/173311_53b058f8_736072.png "WMS-截图7.PNG") -![输入图片说明](https://images.gitee.com/uploads/images/2020/0106/173321_f828f801_736072.png "WMS-截图8.PNG") -![输入图片说明](https://images.gitee.com/uploads/images/2020/0106/173328_41f84519_736072.png "WMS-截图9.PNG") - -## 📚 常见问题 -#### ①中文乱码 -![输入图片说明](image.png) -解决方式:数据库连接后面加上编码方式jdbc.url = jdbc:mysql:///192.168.X.X:3306\WMS_DB?useUnicode=true&characterEncoding=utf8 - - -## 👍 支持 - -- If the project is very helpful to you, you can buy the author a cup of coffee☕. -- 如果这个项目对您有帮助,可以请作者喝杯咖啡哟☕ - -|支付宝 | 微信| -| :--------: | :--------:| -| ![输入图片说明](%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20230225215404.jpg)|![输入图片说明](%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20230225215651.jpg) | \ No newline at end of file diff --git a/WMS/src/main/java/com/ken/wms/common/cheshi/cs1.js b/WMS/src/main/java/com/ken/wms/common/cheshi/cs1.js deleted file mode 100644 index e69de29..0000000 diff --git a/WMS/src/main/java/com/ken/wms/common/cheshi/cs4 b/WMS/src/main/java/com/ken/wms/common/cheshi/cs4 deleted file mode 100644 index e69de29..0000000 diff --git a/WMS/src/main/java/com/ken/wms/common/controller/CustomerManageHandler.java b/WMS/src/main/java/com/ken/wms/common/controller/CustomerManageHandler.java index 925bb79..d963a93 100644 --- a/WMS/src/main/java/com/ken/wms/common/controller/CustomerManageHandler.java +++ b/WMS/src/main/java/com/ken/wms/common/controller/CustomerManageHandler.java @@ -19,7 +19,7 @@ import java.io.IOException; import java.io.OutputStream; import java.util.List; import java.util.Map; -/// RHY +//WSY /** * 客户信息管理请求 Handler */ diff --git a/WMS/src/main/java/com/ken/wms/common/controller/FileSourceHandler.java b/WMS/src/main/java/com/ken/wms/common/controller/FileSourceHandler.java index 4aaabf4..2a3019d 100644 --- a/WMS/src/main/java/com/ken/wms/common/controller/FileSourceHandler.java +++ b/WMS/src/main/java/com/ken/wms/common/controller/FileSourceHandler.java @@ -12,7 +12,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -/// RHY +//WSY /** * 处理文件下载请求 Spring MVC控制器类,用于处理文件下载请求 diff --git a/WMS/src/main/java/com/ken/wms/common/controller/GoodsManageHandler.java b/WMS/src/main/java/com/ken/wms/common/controller/GoodsManageHandler.java index 10cd0fa..7ad3bc6 100644 --- a/WMS/src/main/java/com/ken/wms/common/controller/GoodsManageHandler.java +++ b/WMS/src/main/java/com/ken/wms/common/controller/GoodsManageHandler.java @@ -1,5 +1,5 @@ package com.ken.wms.common.controller; -/// RHY + import com.ken.wms.common.service.Interface.GoodsManageService; import com.ken.wms.common.util.Response; import com.ken.wms.common.util.ResponseFactory; @@ -19,7 +19,7 @@ import java.io.IOException; import java.io.OutputStream; import java.util.List; import java.util.Map; - +//WSY /** * 货物信息管理请求 Handler diff --git a/WMS/src/main/java/com/ken/wms/common/controller/RepositoryAdminManageHandler.java b/WMS/src/main/java/com/ken/wms/common/controller/RepositoryAdminManageHandler.java index ce91e63..6c57bc9 100644 --- a/WMS/src/main/java/com/ken/wms/common/controller/RepositoryAdminManageHandler.java +++ b/WMS/src/main/java/com/ken/wms/common/controller/RepositoryAdminManageHandler.java @@ -19,7 +19,7 @@ import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import java.util.Map; -/// RHY + /** * 仓库管理员管理请求 Handler @@ -48,8 +48,7 @@ public class RepositoryAdminManageHandler { */ private Map query(String keyWord, String searchType, int offset, int limit) throws RepositoryAdminManageServiceException { Map queryResult = null; - - // query + //WSY switch (searchType) { case SEARCH_ALL: queryResult = repositoryAdminManageService.selectAll(offset, limit); diff --git a/WMS/src/main/java/com/ken/wms/common/controller/RepositoryManageHandler.java b/WMS/src/main/java/com/ken/wms/common/controller/RepositoryManageHandler.java index 3a35a49..fa52b29 100644 --- a/WMS/src/main/java/com/ken/wms/common/controller/RepositoryManageHandler.java +++ b/WMS/src/main/java/com/ken/wms/common/controller/RepositoryManageHandler.java @@ -20,7 +20,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; - +//WSY /** * 仓库信息管理请求 Handler */ diff --git a/WMS/src/main/java/com/ken/wms/common/controller/StockRecordManageHandler.java b/WMS/src/main/java/com/ken/wms/common/controller/StockRecordManageHandler.java index 6b1f267..4ec6db4 100644 --- a/WMS/src/main/java/com/ken/wms/common/controller/StockRecordManageHandler.java +++ b/WMS/src/main/java/com/ken/wms/common/controller/StockRecordManageHandler.java @@ -21,7 +21,7 @@ import java.text.ParseException; import java.util.ArrayList; import java.util.List; import java.util.Map; - +//WSY /** * 商品出入库管理请求Handler */ diff --git a/WMS/src/main/java/com/ken/wms/common/controller/StorageManageHandler.java b/WMS/src/main/java/com/ken/wms/common/controller/StorageManageHandler.java index 8966ce8..fae1a3b 100644 --- a/WMS/src/main/java/com/ken/wms/common/controller/StorageManageHandler.java +++ b/WMS/src/main/java/com/ken/wms/common/controller/StorageManageHandler.java @@ -23,7 +23,7 @@ import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import java.util.Map; - +//WSY /** * 库存管理请求处理 * diff --git a/WMS/src/main/java/com/ken/wms/common/controller/SupplierManageHandler.java b/WMS/src/main/java/com/ken/wms/common/controller/SupplierManageHandler.java index 5eea2d0..acaaf56 100644 --- a/WMS/src/main/java/com/ken/wms/common/controller/SupplierManageHandler.java +++ b/WMS/src/main/java/com/ken/wms/common/controller/SupplierManageHandler.java @@ -18,7 +18,7 @@ import java.io.IOException; import java.io.OutputStream; import java.util.List; import java.util.Map; -/// RHY +//WSY /** * 供应商信息管理请求 Handler diff --git a/WMS/src/main/java/com/ken/wms/common/controller/SystemLogHandler.java b/WMS/src/main/java/com/ken/wms/common/controller/SystemLogHandler.java index 1d019cb..ba83d0a 100644 --- a/WMS/src/main/java/com/ken/wms/common/controller/SystemLogHandler.java +++ b/WMS/src/main/java/com/ken/wms/common/controller/SystemLogHandler.java @@ -17,9 +17,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; import java.util.List; import java.util.Map; - -//系统操作日志请求 H -/// RHY +//WSY /** * 系统操作日志请求 Handler * diff --git a/WMS/src/main/java/com/ken/wms/util/aop/ServiceLogging.java b/WMS/src/main/java/com/ken/wms/util/aop/ServiceLogging.java index f10648c..f658e6c 100644 --- a/WMS/src/main/java/com/ken/wms/util/aop/ServiceLogging.java +++ b/WMS/src/main/java/com/ken/wms/util/aop/ServiceLogging.java @@ -3,7 +3,7 @@ package com.ken.wms.util.aop; import org.aspectj.lang.JoinPoint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -///RHY + /** * Service层日志处理 diff --git a/WMS/src/main/java/com/ken/wms/util/aop/UserOperation.java b/WMS/src/main/java/com/ken/wms/util/aop/UserOperation.java index 3c57031..682f1c5 100644 --- a/WMS/src/main/java/com/ken/wms/util/aop/UserOperation.java +++ b/WMS/src/main/java/com/ken/wms/util/aop/UserOperation.java @@ -1,7 +1,7 @@ package com.ken.wms.util.aop; import java.lang.annotation.*; -//RHY + /** * 用户操作注解 * 用于标注用户操作的方法名称 diff --git a/WMS/src/test/java/com/ken/wms/MapperTest.java b/WMS/src/test/java/com/ken/wms/MapperTest.java index 7937949..1c4f2bf 100644 --- a/WMS/src/test/java/com/ken/wms/MapperTest.java +++ b/WMS/src/test/java/com/ken/wms/MapperTest.java @@ -1,5 +1,5 @@ package com.ken.wms; -//RHY + import com.ken.wms.common.service.Interface.StockRecordManageService; import com.ken.wms.common.service.Interface.SystemLogService; import com.ken.wms.dao.AccessRecordMapper; diff --git a/WMS/src/test/java/com/ken/wms/MyTest.java b/WMS/src/test/java/com/ken/wms/MyTest.java index 2df0c08..68eaa73 100644 --- a/WMS/src/test/java/com/ken/wms/MyTest.java +++ b/WMS/src/test/java/com/ken/wms/MyTest.java @@ -1,5 +1,5 @@ package com.ken.wms; -///RHY + import com.ken.wms.security.util.MD5Util; public class MyTest { diff --git a/cheshi/chehsi1.txt b/cheshi/chehsi1.txt deleted file mode 100644 index e69de29..0000000 diff --git a/cheshi/chehsi2.txt b/cheshi/chehsi2.txt deleted file mode 100644 index e69de29..0000000 diff --git a/ck.md b/ck.md deleted file mode 100644 index 84f3895..0000000 --- a/ck.md +++ /dev/null @@ -1,44 +0,0 @@ -package com.ken.wms.common.controller; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; - -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -/// RHY -/** -* 处理文件下载请求 - Spring MVC控制器类,用于处理文件下载请求 - @PathVariable获取路径中的文件名 - HttpServletRequest和HttpServletResponse用于处理请求和响应 - */ - @Controller - @RequestMapping("/commons/fileSource")//指定了基础路径 - public class FileSourceHandler { - - @RequestMapping(value = "download/{fileName:.+}", method = RequestMethod.GET)//处理GET请求路径中包含文件名参数,使用正则表达式.+匹配带扩展名的文件名 - public void fileDownload(@PathVariable("fileName") String fileName, HttpServletRequest request, - HttpServletResponse response) throws IOException { - - if (fileName == null) - return; - - // 获取文件 - ServletContext context = request.getServletContext(); - String directory = context.getRealPath("/WEB-INF/download"); - Path file = Paths.get(directory, fileName); - if (Files.exists(file)) { - // 设置响应头 - response.addHeader("Content-Disposition", "attachment;filename=" + file.getFileName()); - Files.copy(file, response.getOutputStream()); - response.getOutputStream().flush(); - } - } - } diff --git a/untitled1/.idea/vcs.xml b/untitled1/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/untitled1/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file