· #2

Open
pj7zf6ina wants to merge 0 commits from master into main

@ -0,0 +1,303 @@
### 该Pull Request关联的Issue
### 修改描述
### 测试用例
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<String, Object> query(String keyWord, String searchType, int offset, int limit) throws RepositoryAdminManageServiceException {
Map<String, Object> 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<String, Object> 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<RepositoryAdmin> rows = null;
long total = 0;
// 查询
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
*/
@RequestMapping(value = "addRepositoryAdmin", method = RequestMethod.POST)
public
@ResponseBody
Map<String, Object> 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 与 errorkey 为 data
* 的值为仓库管理员信息
*/
@RequestMapping(value = "getRepositoryAdminInfo", method = RequestMethod.GET)
public
@ResponseBody
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);
return responseContent.generateResponse();
}
/**
* 更新仓库管理员信息
*
* @param repositoryAdmin 仓库管理员信息
* @return 返回一个map其中key 为 result 的值为操作的结果包括success 与 errorkey 为 data
* 的值为仓库管理员信息
*/
@RequestMapping(value = "updateRepositoryAdmin", method = RequestMethod.POST)
public
@ResponseBody
Map<String, Object> 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 与 errorkey 为 data
* 的值为仓库管理员信息
*/
@RequestMapping(value = "deleteRepositoryAdmin", method = RequestMethod.GET)
public
@ResponseBody
Map<String, Object> 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 与
* errorkey为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;
if (file != null) {
Map<String, Object> 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<RepositoryAdmin> repositoryAdmins;
Map<String, Object> queryResult = query(keyWord, searchType, -1, -1);
if (queryResult != null)
repositoryAdmins = (List<RepositoryAdmin>) 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();
}
}
}
### 修复效果的截屏

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

@ -0,0 +1,204 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AutoImportSettings">
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="fc9e62f9-d23e-43be-9bb8-56d74e3a1d22" name="更改" comment="Merge remote-tracking branch 'origin/master'">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="TypeScript File" />
<option value="JavaScript File" />
</list>
</option>
</component>
<component name="Git.Settings">
<option name="PUSH_TAGS">
<GitPushTagMode>
<option name="argument" value="--tags" />
<option name="title" value="All" />
</GitPushTagMode>
</option>
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="HighlightingSettingsPerFile">
<setting file="file://$PROJECT_DIR$/WMS/.gitignore" root0="FORCE_HIGHLIGHTING" />
</component>
<component name="PerforceDirect.Settings">
<option name="CHARSET" value="none" />
</component>
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 1
}</component>
<component name="ProjectId" id="2wAA7OQpLWmEGCLWK1oO4AcaiEQ" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;git-widget-placeholder&quot;: &quot;master&quot;,
&quot;kotlin-language-version-configured&quot;: &quot;true&quot;,
&quot;last_opened_file_path&quot;: &quot;D:/Git/rjgc/cangku/warehouseManager-developer&quot;,
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
&quot;settings.editor.selected.configurable&quot;: &quot;vcs.Git&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
},
&quot;keyToStringList&quot;: {
&quot;ChangesTree.GroupingKeys&quot;: [
&quot;directory&quot;
]
}
}</component>
<component name="SharedIndexes">
<attachedChunks>
<set>
<option value="bundled-jdk-9823dce3aa75-b114ca120d71-intellij.indexing.shared.core-IU-242.21829.142" />
<option value="bundled-js-predefined-d6986cc7102b-7c0b70fcd90d-JavaScript-IU-242.21829.142" />
</set>
</attachedChunks>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
<component name="SvnConfiguration">
<configuration>C:\Users\任海洋\AppData\Roaming\Subversion</configuration>
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="默认任务">
<changelist id="fc9e62f9-d23e-43be-9bb8-56d74e3a1d22" name="更改" comment="" />
<created>1745473836915</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1745473836915</updated>
<workItem from="1745473838011" duration="3977000" />
<workItem from="1745490582601" duration="1878000" />
</task>
<task id="LOCAL-00001" summary="1">
<option name="closed" value="true" />
<created>1745487314023</created>
<option name="number" value="00001" />
<option name="presentableId" value="LOCAL-00001" />
<option name="project" value="LOCAL" />
<updated>1745487314023</updated>
</task>
<task id="LOCAL-00002" summary="1">
<option name="closed" value="true" />
<created>1745487472395</created>
<option name="number" value="00002" />
<option name="presentableId" value="LOCAL-00002" />
<option name="project" value="LOCAL" />
<updated>1745487472395</updated>
</task>
<task id="LOCAL-00003" summary="测试">
<option name="closed" value="true" />
<created>1745487863962</created>
<option name="number" value="00003" />
<option name="presentableId" value="LOCAL-00003" />
<option name="project" value="LOCAL" />
<updated>1745487863962</updated>
</task>
<task id="LOCAL-00004" summary="测试">
<option name="closed" value="true" />
<created>1745489539593</created>
<option name="number" value="00004" />
<option name="presentableId" value="LOCAL-00004" />
<option name="project" value="LOCAL" />
<updated>1745489539593</updated>
</task>
<task id="LOCAL-00005" summary="测试">
<option name="closed" value="true" />
<created>1745489716151</created>
<option name="number" value="00005" />
<option name="presentableId" value="LOCAL-00005" />
<option name="project" value="LOCAL" />
<updated>1745489716151</updated>
</task>
<task id="LOCAL-00006" summary="测试">
<option name="closed" value="true" />
<created>1745489774121</created>
<option name="number" value="00006" />
<option name="presentableId" value="LOCAL-00006" />
<option name="project" value="LOCAL" />
<updated>1745489774121</updated>
</task>
<task id="LOCAL-00007" summary="测试">
<option name="closed" value="true" />
<created>1745489930495</created>
<option name="number" value="00007" />
<option name="presentableId" value="LOCAL-00007" />
<option name="project" value="LOCAL" />
<updated>1745489930495</updated>
</task>
<task id="LOCAL-00008" summary="Merge remote-tracking branch 'origin/master'">
<option name="closed" value="true" />
<created>1745490801908</created>
<option name="number" value="00008" />
<option name="presentableId" value="LOCAL-00008" />
<option name="project" value="LOCAL" />
<updated>1745490801908</updated>
</task>
<task id="LOCAL-00009" summary="Merge remote-tracking branch 'origin/master'">
<option name="closed" value="true" />
<created>1745490823977</created>
<option name="number" value="00009" />
<option name="presentableId" value="LOCAL-00009" />
<option name="project" value="LOCAL" />
<updated>1745490823977</updated>
</task>
<task id="LOCAL-00010" summary="Merge remote-tracking branch 'origin/master'">
<option name="closed" value="true" />
<created>1745491116842</created>
<option name="number" value="00010" />
<option name="presentableId" value="LOCAL-00010" />
<option name="project" value="LOCAL" />
<updated>1745491116842</updated>
</task>
<option name="localTasksCounter" value="11" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State>
<option name="FILTERS">
<map>
<entry key="branch">
<value>
<list>
<option value="origin/main" />
</list>
</value>
</entry>
</map>
</option>
</State>
</value>
</entry>
</map>
</option>
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="1" />
<MESSAGE value="测试" />
<MESSAGE value="Merge remote-tracking branch 'origin/master'" />
<option name="LAST_COMMIT_MESSAGE" value="Merge remote-tracking branch 'origin/master'" />
</component>
</project>

@ -1,2 +1,112 @@
# cangku
<a href='https://gitee.com/yangshare/warehouseManager/stargazers'><img src='https://gitee.com/yangshare/warehouseManager/badge/star.svg?theme=white' alt='star'></img></a>
<a href='https://gitee.com/yangshare/warehouseManager/members'><img src='https://gitee.com/yangshare/warehouseManager/badge/fork.svg?theme=white' alt='fork'></img></a>
# 基于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) |

@ -19,7 +19,7 @@ import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
/// RHY
/**
* Handler
*/

@ -12,7 +12,7 @@ import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
/// RHY
/**
*
Spring MVC

@ -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.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/// RHY
/**
* Handler

@ -18,7 +18,7 @@ import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
/// RHY
/**
* Handler

@ -18,6 +18,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
//系统操作日志请求 H
/// RHY
/**
* Handler
*

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save