Browse Source

实现库存界面跳转入库申请

lwx_dev
erdanergou 3 years ago
parent
commit
83aadac637
  1. 6
      pom.xml
  2. 16
      src/main/java/com/dreamchaser/depository_manage/config/WebMvcConfig.java
  3. 173
      src/main/java/com/dreamchaser/depository_manage/controller/CompanyController.java
  4. 48
      src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java
  5. 25
      src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java
  6. 58
      src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java
  7. 2
      src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java
  8. 214
      src/main/java/com/dreamchaser/depository_manage/controller/PageController.java
  9. 127
      src/main/java/com/dreamchaser/depository_manage/controller/UserController.java
  10. 5
      src/main/java/com/dreamchaser/depository_manage/entity/ApplicationInRecord.java
  11. 110
      src/main/java/com/dreamchaser/depository_manage/entity/Depository.java
  12. 2
      src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfo.java
  13. 2
      src/main/java/com/dreamchaser/depository_manage/entity/Material.java
  14. 18
      src/main/java/com/dreamchaser/depository_manage/entity/UserByPort.java
  15. 16
      src/main/java/com/dreamchaser/depository_manage/intercepter/UserInterceptor.java
  16. 12
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.java
  17. 85
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.xml
  18. 18
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml
  19. 7
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.java
  20. 26
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml
  21. 2
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.java
  22. 30
      src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.java
  23. 53
      src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.xml
  24. 31
      src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationInRecordP.java
  25. 7
      src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationOutRecordP.java
  26. 8
      src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java
  27. 10
      src/main/java/com/dreamchaser/depository_manage/pojo/PostP.java
  28. 15
      src/main/java/com/dreamchaser/depository_manage/pojo/RoleAndDepository.java
  29. 2
      src/main/java/com/dreamchaser/depository_manage/pojo/UserByPortP.java
  30. 8
      src/main/java/com/dreamchaser/depository_manage/security/pool/AuthenticationTokenPool.java
  31. 13
      src/main/java/com/dreamchaser/depository_manage/service/DepositoryService.java
  32. 19
      src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java
  33. 35
      src/main/java/com/dreamchaser/depository_manage/service/RoleService.java
  34. 111
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java
  35. 151
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java
  36. 4
      src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java
  37. 164
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java
  38. 11
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialTypeServiceImpl.java
  39. 209
      src/main/java/com/dreamchaser/depository_manage/service/impl/RedisServiceImpl.java
  40. 55
      src/main/java/com/dreamchaser/depository_manage/service/impl/RoleServiceImpl.java
  41. 8
      src/main/java/com/dreamchaser/depository_manage/utils/CrudUtil.java
  42. 17
      src/main/java/com/dreamchaser/depository_manage/utils/DateUtil.java
  43. 23
      src/main/resources/application-test.yml
  44. 15
      src/main/resources/templates/index.html
  45. 158
      src/main/resources/templates/pages/application/application-in.html
  46. 185
      src/main/resources/templates/pages/application/application-in_back.html
  47. 111
      src/main/resources/templates/pages/application/application-out.html
  48. 5
      src/main/resources/templates/pages/application/application-review.html
  49. 18
      src/main/resources/templates/pages/application/application-transfer.html
  50. 14
      src/main/resources/templates/pages/application/form-step-look.html
  51. 3
      src/main/resources/templates/pages/application/form-step-look_back.html
  52. 17
      src/main/resources/templates/pages/application/my-apply.html
  53. 2
      src/main/resources/templates/pages/application/my-task.html
  54. 4
      src/main/resources/templates/pages/chart/chart-stock_back.html
  55. 21
      src/main/resources/templates/pages/depository/table-in.html
  56. 25
      src/main/resources/templates/pages/depository/table-out.html
  57. 69
      src/main/resources/templates/pages/depository/table-stock.html
  58. 16
      src/main/resources/templates/pages/material/material-add.html
  59. 51
      src/main/resources/templates/pages/material/material-out.html
  60. 28
      src/main/resources/templates/pages/material/material-view.html
  61. 12
      src/main/resources/templates/pages/material/selectDepository.html
  62. 1
      src/main/resources/templates/pages/material/selectType.html
  63. 25
      src/main/resources/templates/pages/materialtype/materialType_add.html
  64. 7
      src/main/resources/templates/pages/materialtype/materialType_edit.html
  65. 26
      src/main/resources/templates/pages/materialtype/materialType_view.html
  66. 101
      src/main/resources/templates/pages/other/welcome.html
  67. 21
      src/main/resources/templates/pages/post/post-out.html
  68. 37
      src/main/resources/templates/pages/post/postRole_add.html
  69. 11
      src/main/resources/templates/pages/user/account-look.html
  70. 36
      src/main/resources/templates/pages/user/login.html
  71. 47
      src/main/resources/templates/pages/user/table-user.html
  72. 28
      src/main/resources/templates/pages/user/user-add.html
  73. 3
      src/main/resources/templates/pages/user/user-edit.html
  74. 97
      src/main/resources/templates/pages/user/user-password.html
  75. 116
      src/main/resources/templates/pages/user/user-role-edit.html
  76. 268
      src/main/resources/templates/pages/warehouse/depository-out.html
  77. 69
      src/main/resources/templates/pages/warehouse/depository_add.html
  78. 8
      src/main/resources/templates/pages/warehouse/manager.html
  79. 58
      src/main/resources/templates/pages/warehouse/warehouse_view.html
  80. 172
      src/test/java/com/dreamchaser/depository_manage/Test.java
  81. 23
      target/classes/application-test.yml
  82. 85
      target/classes/com/dreamchaser/depository_manage/mapper/DepositoryMapper.xml
  83. 18
      target/classes/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml
  84. 26
      target/classes/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml
  85. 53
      target/classes/com/dreamchaser/depository_manage/mapper/RoleMapper.xml
  86. 15
      target/classes/templates/index.html
  87. 158
      target/classes/templates/pages/application/application-in.html
  88. 185
      target/classes/templates/pages/application/application-in_back.html
  89. 111
      target/classes/templates/pages/application/application-out.html
  90. 5
      target/classes/templates/pages/application/application-review.html
  91. 18
      target/classes/templates/pages/application/application-transfer.html
  92. 14
      target/classes/templates/pages/application/form-step-look.html
  93. 3
      target/classes/templates/pages/application/form-step-look_back.html
  94. 17
      target/classes/templates/pages/application/my-apply.html
  95. 2
      target/classes/templates/pages/application/my-task.html
  96. 4
      target/classes/templates/pages/chart/chart-stock_back.html
  97. 21
      target/classes/templates/pages/depository/table-in.html
  98. 25
      target/classes/templates/pages/depository/table-out.html
  99. 69
      target/classes/templates/pages/depository/table-stock.html
  100. 16
      target/classes/templates/pages/material/material-add.html

6
pom.xml

@ -94,6 +94,12 @@
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>

16
src/main/java/com/dreamchaser/depository_manage/config/WebMvcConfig.java

@ -16,21 +16,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
.excludePathPatterns("/static/**");
}
// private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
// "classpath:/META-INF/resources/", "classpath:/resources/",
// "classpath:/static/", "classpath:/public/" };
// @Override
// public void addResourceHandlers(ResourceHandlerRegistry registry) {
// if (!registry.hasMappingForPattern("/webjars/**")) {
// registry.addResourceHandler("/webjars/**").addResourceLocations(
// "classpath:/META-INF/resources/webjars/");
// }
// if (!registry.hasMappingForPattern("/**")) {
// registry.addResourceHandler("/**").addResourceLocations(
// CLASSPATH_RESOURCE_LOCATIONS);
// }
//
// }
}

173
src/main/java/com/dreamchaser/depository_manage/controller/CompanyController.java

@ -6,6 +6,7 @@ import com.dreamchaser.depository_manage.entity.*;
import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.pojo.*;
import com.dreamchaser.depository_manage.service.CompanyService;
import com.dreamchaser.depository_manage.service.DepositoryService;
import com.dreamchaser.depository_manage.service.RoleService;
import com.dreamchaser.depository_manage.service.impl.CompanyServiceImpl;
import com.dreamchaser.depository_manage.utils.CrudUtil;
@ -31,6 +32,9 @@ public class CompanyController {
@Autowired
RoleService roleService;
@Autowired
DepositoryService depositoryService;
/**
* 查询组织架构
* @param
@ -39,6 +43,7 @@ public class CompanyController {
@PostMapping("/allCompanyByParent")
public RestResponse findCompanyByNoParent(@RequestParam Map<String,Object>map){
String url = "http://172.20.2.87:39168/org/govlist";
// String url = "http://127.0.0.1:39168/org/govlist";
Object page = map.get("page");
Object pagesize = map.get("pagesize");
String superior = (String) map.get("superior");
@ -60,6 +65,9 @@ public class CompanyController {
JSONObject jsonObject = JSONObject.parseObject(post);
JSONObject data = (JSONObject) jsonObject.get("data");
JSONArray list = (JSONArray) data.get("list");
if(list == null){
list = new JSONArray();
}
Integer total = ObjectFormatUtil.toInteger(data.get("total"));
List<AdministrationP> administrationPList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
@ -78,6 +86,7 @@ public class CompanyController {
@PostMapping("/companyByCondition")
public RestResponse findcompanyByCondition(@RequestParam Map<String,Object> map){
String url = "http://172.20.2.87:39168/org/govlist";
// String url = "http://127.0.0.1:39168/org/govlist";
if(map.containsKey("state")){
Object state = map.get("state");
map.put("state",ObjectFormatUtil.toInteger(state));
@ -97,6 +106,9 @@ public class CompanyController {
JSONObject jsonObject = JSONObject.parseObject(post);
JSONObject data = (JSONObject) jsonObject.get("data");
JSONArray list = (JSONArray) data.get("list");
if(list == null){
list = new JSONArray();
}
Integer total = ObjectFormatUtil.toInteger(data.get("total"));
List<AdministrationP> administrationPList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
@ -110,6 +122,7 @@ public class CompanyController {
@PostMapping("/allPostByOrganization")
public RestResponse allPostByParent(@RequestParam Map<String,Object> map) {
String url = "http://172.20.2.87:39168/org/positionlist";
// String url = "http://127.0.0.1:39168/org/positionlist";
Object page = map.get("page");
Object pagesize = map.get("pagesize");
map.put("page",ObjectFormatUtil.toInteger(page));
@ -125,15 +138,32 @@ public class CompanyController {
JSONObject jsonObject = JSONObject.parseObject(post);
JSONObject data = (JSONObject) jsonObject.get("data");
JSONArray list = (JSONArray) data.get("list");
if(list == null){
list = new JSONArray();
}
Integer total = ObjectFormatUtil.toInteger(data.get("total"));
List<PostP> postList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
Post object = JSONObject.toJavaObject((JSONObject)list.get(i), Post.class);
PostP postP = new PostP(object);
RoleAndDepository depositoryAndRole = roleService.findDepositoryAndRole(postP.getId());
List<RoleAndDepository> depositoryAndRole = roleService.findDepositoryAndRole(postP.getId());
if(depositoryAndRole != null) {
postP.setRolename(depositoryAndRole.getRoleName());
postP.setDepositoryName(depositoryAndRole.getDepositoryName());
StringBuilder RoleName = new StringBuilder();
StringBuilder Depository = new StringBuilder();
for (int j = 0; j < depositoryAndRole.size(); j++) {
String roleName = depositoryAndRole.get(i).getRoleName();
String depositoryName = depositoryAndRole.get(i).getDepositoryName();
if(roleName == null){
roleName = "";
}
if(depositoryName == null){
depositoryName = "";
}
RoleName.append(roleName + " ");
Depository.append(depositoryName + " ");
}
postP.setRolename(RoleName.toString());
postP.setDepositoryName(Depository.toString());
}else{
postP.setRolename("");
postP.setDepositoryName("");
@ -143,15 +173,138 @@ public class CompanyController {
return new RestResponse(postList,total,200);
}
@PostMapping("post_role")
@PostMapping("/post_role")
public RestResponse addUser(@RequestBody Map<String, Object> map) {
map.put("classes",2);
RoleAndDepository userid = roleService.findDepositoryAndRole(ObjectFormatUtil.toInteger(map.get("userid")));
if(userid!=null){
return CrudUtil.postHandle(roleService.updateUserOrPostRoleAndDepository(map), 1);
}else {
return CrudUtil.postHandle(roleService.addUserOrPostRoleAndDepository(map), 1);
Map<String,Object> userParam = new HashMap<>();
userParam.put("position",ObjectFormatUtil.toInteger(map.get("userid")));
List<UserByPort> userByPortList = PageController.FindUserByMap(userParam);
Integer success = 0;
if(map.containsKey("depositoryId")) {
for (int i = 0; i < userByPortList.size(); i++) {
Map<String, Object> param = new HashMap<>();
param.put("userId", userByPortList.get(i).getId());
param.put("depositoryId", map.get("depositoryId"));
param.put("classes", 2);
List<RoleAndDepository> roleAndDepositoryByCondition = roleService.findRoleAndDepositoryByCondition(param);
if (roleAndDepositoryByCondition.size() > 0) {
continue;
} else {
Map<String, Object> insert = new HashMap<>();
insert.put("classes", 2);
insert.put("authority", 0);
insert.put("depositoryId", map.get("depositoryId"));
insert.put("userid", userByPortList.get(i).getId());
success += roleService.addUserOrPostRoleAndDepository(insert);
}
}
}else{
List<Depository> depositoryAll = depositoryService.findDepositoryAll();
for (int i = 0; i < depositoryAll.size(); i++) {
for (int j = 0; j < userByPortList.size(); j++) {
Map<String, Object> param = new HashMap<>();
param.put("userId", userByPortList.get(j).getId());
param.put("depositoryId", depositoryAll.get(i).getId());
param.put("classes", 2);
List<RoleAndDepository> roleAndDepositoryByCondition = roleService.findRoleAndDepositoryByCondition(param);
if (roleAndDepositoryByCondition.size() > 0) {
continue;
} else {
Map<String, Object> insert = new HashMap<>();
insert.put("classes", 2);
insert.put("authority", 0);
insert.put("depositoryId",depositoryAll.get(i).getId());
insert.put("userid", userByPortList.get(j).getId());
success += roleService.addUserOrPostRoleAndDepository(insert);
}
}
}
}
return CrudUtil.postHandle(success,success);
}
@PostMapping("/postRole_edit")
public RestResponse editPostRole(@RequestBody Map<String, Object> map) {
Map<String,Object> userParam = new HashMap<>();
Integer oldDepository = ObjectFormatUtil.toInteger(map.get("oldDepository"));
Integer depositoryId = ObjectFormatUtil.toInteger(map.get("depositoryId"));
userParam.put("position",ObjectFormatUtil.toInteger(map.get("userid")));
Map<String,Object> param = new HashMap<>();
param.put("depositoryId",oldDepository);
param.put("classes",2);
List<RoleAndDepository> roleAndDepositoryByCondition = roleService.findRoleAndDepositoryByCondition(param);
Integer success = 0;
for (int i = 0; i < roleAndDepositoryByCondition.size(); i++) {
RoleAndDepository roleAndDepository = roleAndDepositoryByCondition.get(i);
Map<String,Object> update = new HashMap<>();
update.put("roleId",roleAndDepository.getId());
update.put("depositoryId",depositoryId);
update.put("classes",2);
success += roleService.UpdateRoleAndDepositoryById(update);
}
return CrudUtil.postHandle(success,roleAndDepositoryByCondition.size());
}
/**
* 根据主键删除权限类型
* @param map
* @return
*/
@PostMapping("/postRole_del")
public RestResponse deleteRoleAndDepository(@RequestBody Map<String,Object> map){
if(map.containsKey("depositoryId")) {
Integer depositoryId = ObjectFormatUtil.toInteger(map.get("depositoryId"));
Map<String, Object> param = new HashMap<>();
param.put("depositoryId", depositoryId);
param.put("classes", 2);
List<RoleAndDepository> roleAndDepositoryByCondition = roleService.findRoleAndDepositoryByCondition(param);
Integer success = 0;
for (int i = 0; i < roleAndDepositoryByCondition.size(); i++) {
success += roleService.deleteRoleAndDepositoryById(roleAndDepositoryByCondition.get(i).getId());
}
return CrudUtil.postHandle(success, roleAndDepositoryByCondition.size());
}else if(map.containsKey("depositoryIds")){
Integer num = 0;
List<Integer> depositoryIds =(List<Integer>) map.get("depositoryIds");
Integer success = 0;
Integer total = 0;
for (int i = 0; i < depositoryIds.size(); i++) {
Integer depositoryId = depositoryIds.get(i);
Map<String, Object> param = new HashMap<>();
param.put("depositoryId", depositoryId);
param.put("classes", 2);
List<RoleAndDepository> roleAndDepositoryByCondition = roleService.findRoleAndDepositoryByCondition(param);
total += roleAndDepositoryByCondition.size();
for (int j = 0; j < roleAndDepositoryByCondition.size(); j++) {
success += roleService.deleteRoleAndDepositoryById(roleAndDepositoryByCondition.get(j).getId());
}
}
return CrudUtil.postHandle(success, total);
}
else{
throw new MyException("所需请求参数缺失!");
}
}
@GetMapping("/findPostRole")
public RestResponse findPostRole(@RequestParam("postId") Integer postId){
Map<String,Object> userParam = new HashMap<>();
userParam.put("position",postId);
List<UserByPort> userByPortList = PageController.FindUserByMap(userParam);
Post postById = PageController.findPostById(postId);
List<RoleAndDepository> roleAndDepositoryByCondition = new ArrayList<>();
if(userByPortList.size() != 0){
Map<String,Object> param = new HashMap<>();
param.put("classes",2);
param.put("userId",userByPortList.get(0).getId());
roleAndDepositoryByCondition = roleService.findRoleAndDepositoryByCondition(param);
}
List<PostP> postPS = new ArrayList<>();
for (int i = 0; i < roleAndDepositoryByCondition.size(); i++) {
PostP pp = new PostP(postById);
pp.setDepositoryName(roleAndDepositoryByCondition.get(i).getDepositoryName());
pp.setDepositoryId(roleAndDepositoryByCondition.get(i).getDepositoryId());
postPS.add(pp);
}
return new RestResponse(postPS, postPS.size(), 200);
}
}

48
src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java

@ -4,10 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.entity.*;
import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.pojo.AdministrationP;
import com.dreamchaser.depository_manage.pojo.DepositoryRecordP;
import com.dreamchaser.depository_manage.pojo.MaterialP;
import com.dreamchaser.depository_manage.pojo.RestResponse;
import com.dreamchaser.depository_manage.pojo.*;
import com.dreamchaser.depository_manage.service.*;
import com.dreamchaser.depository_manage.service.impl.DepositoryRecordServiceImpl;
import com.dreamchaser.depository_manage.service.impl.DepositoryServiceImpl;
@ -164,6 +161,7 @@ public class DepositoryController {
int now = instance.get(Calendar.DAY_OF_WEEK) - 1;
List<Long> days = new ArrayList<>();
days.add(DateUtil.DateTimeByMonthToTimeStamp(formatter.format(instance.getTime())));
Boolean flag = false;
while (now - 1 > 0) {
now--;
instance.add(Calendar.DATE, -1);
@ -177,19 +175,39 @@ public class DepositoryController {
// 获取今天容量
Double toDayInventoryByDName = depositoryService.getToDayInventoryByDName(key.toString());
result.add(toDayInventoryByDName);
// 判断当天是否有出入口记录
Calendar IsInOut = Calendar.getInstance();
Long start = DateUtil.DateTimeByMonthToTimeStamp(formatter.format(IsInOut.getTime()));
IsInOut.add(Calendar.DATE,1);
Long end = DateUtil.DateTimeByMonthToTimeStamp(formatter.format(IsInOut.getTime()));
Double inCount = depositoryRecordService.findApplicationInRecordByDate(end, start, null);
Double OutCount = depositoryRecordService.findApplicationOutRecordByDate(end, start, null);
if(inCount >0 || OutCount > 0){
flag = true;
}
for (i = 0;i<days.size() - 1;i++) {
// 获取本周周一日期
String mondayOnThisWeek = DateUtil.getMondayOnThisWeek();
if(mondayOnThisWeek.equals(DateUtil.TimeStampToDateTime(days.get(i)))){
break;
}
// 当前日期额度
Double aDouble = result.get(j++);
// 获取当前仓库
Integer val = (Integer) depositoryAllNameAndId.get(key);
// 如果今天有出入库记录
if(flag){
Double inRecordByDate = depositoryRecordService.findApplicationInRecordByDate(end, start, val);
Double OutRecordByDate = depositoryRecordService.findApplicationOutRecordByDate(end, start, val);
aDouble = aDouble - inRecordByDate + OutRecordByDate;
flag = false;
}
// 获取一段时间内的入库额度
//测试
Double depositoryRecordByDateByIn1 = depositoryRecordService.findApplicationInRecordByDate(days.get(i), days.get(i + 1), val);
// 获取一段时间内的入库额度
// 获取一段时间内的库额度
Double depositoryRecordByDateByOut1 = depositoryRecordService.findApplicationOutRecordByDate(days.get(i), days.get(i + 1), val);
Double warehouserCount1 = result.get(j++) - depositoryRecordByDateByIn1 + depositoryRecordByDateByOut1;
Double warehouserCount1 = aDouble - depositoryRecordByDateByIn1 + depositoryRecordByDateByOut1;
result.add(warehouserCount1);
}
/* for (i = days.size() - 1; i > 0; i--) {
@ -363,6 +381,11 @@ public class DepositoryController {
@GetMapping("/warehouseRecord")
public RestResponse findDepositoryRecordByCondition(@RequestParam Map<String, Object> map) {
List<Depository> list = depositoryService.findDepositoryRecordPByCondition(map);
for (int i = 0; i < list.size(); i++) {
Depository depository = list.get(i);
Administration company = PageController.getCompany(depository.getCid());
list.get(i).setCname(company.getName());
}
return new RestResponse(list, depositoryService.findCountByCondition(map), 200);
}
@ -402,6 +425,7 @@ public class DepositoryController {
public static Map<String, Object> findAdministration(){
Map<String,Object> map = new HashMap<>();
String url = "http://172.20.2.87:39168/org/govlist";
// String url = "http://127.0.0.1:39168/org/govlist";
String superior = "313";
map.put("superior",superior);
map.put("state",1);
@ -416,6 +440,9 @@ public class DepositoryController {
JSONObject jsonObject = JSONObject.parseObject(post);
JSONObject data = (JSONObject) jsonObject.get("data");
JSONArray list = (JSONArray) data.get("list");
if(list == null){
list = new JSONArray();
}
Integer total = ObjectFormatUtil.toInteger(data.get("total"));
Map<String,Object> result = new HashMap();
List<AdministrationP> administrationPList = new ArrayList<>();
@ -1029,8 +1056,13 @@ public class DepositoryController {
// 构造树选择框
@GetMapping("/treeMenus")
public RestResponse InitTreeMenus(){
List<Object> list = depositoryService.InitTreeMenus();
public RestResponse InitTreeMenus(@RequestParam(value = "adminorg",required = false) Integer adminorg){
List<Object> list = new ArrayList<>();
if(Integer.compare(0,adminorg) == 0){
list = depositoryService.InitTreeMenus();
}else {
list = depositoryService.InitTreeMenus(adminorg.toString());
}
return new RestResponse(list);
}

25
src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java

@ -55,16 +55,20 @@ public class DepositoryRecordController {
UserByPort userToken= (UserByPort) request.getAttribute("userToken");
map.put("applicantId",userToken.getId());
List<ApplicationInRecordP> applicationInRecordPlist = depositoryRecordService.findApplicationInRecordPByCondition(map);
Integer InCount = depositoryRecordService.findApplicationInRecordPCountByCondition(map);
for (int i = 0; i < applicationInRecordPlist.size(); i++) {
applicationInRecordPlist.get(i).setPrice(applicationInRecordPlist.get(i).getPrice() / 100);
}
List<ApplicationOutRecordP> applicationOutRecordPlist = depositoryRecordService.findApplicationOutRecordPByCondition(map);
Integer OutCount = depositoryRecordService.findApplicationOutRecordPCountByCondition(map);
for (int i = 0; i < applicationOutRecordPlist.size(); i++) {
applicationOutRecordPlist.get(i).setPrice(applicationOutRecordPlist.get(i).getPrice() / 100);
}
Map<String,Object> result = new HashMap<>();
result.put("applicationIn",applicationInRecordPlist);
result.put("InCount",InCount);
result.put("applicationOut",applicationOutRecordPlist);
result.put("OutCount",OutCount);
return new RestResponse(result,result.size(),200);
}
/*@GetMapping("/myApply")
@ -99,7 +103,12 @@ public class DepositoryRecordController {
public RestResponse insertApplicationInRecord(@RequestBody Map<String,Object> map, HttpServletRequest request){
UserByPort userToken= (UserByPort) request.getAttribute("userToken");
map.put("applicantId",userToken.getId());
return CrudUtil.postHandle(depositoryRecordService.applicationIn(map),1);
Integer integer = depositoryRecordService.applicationIn(map);
if (integer != 0) {
return CrudUtil.postHandle(integer, 1);
}else{
return new RestResponse("",666,new StatusInfo("存储失败","超出最大存储量,请重新选择存储位"));
}
}
@ -137,7 +146,12 @@ public class DepositoryRecordController {
@PutMapping("/review")
public RestResponse review(@RequestBody Map<String,Object> map, HttpServletRequest request){
UserByPort userToken= (UserByPort) request.getAttribute("userToken");
return CrudUtil.postHandle(depositoryRecordService.review(map,userToken.getId()),1);
Integer review = depositoryRecordService.review(map, userToken.getId());
if(review != -1) {
return CrudUtil.postHandle(review, 1);
}else{
return new RestResponse("",666,new StatusInfo("出库失败","当前存储位库存不足,请重新选择"));
}
}
@PutMapping("/transfer")
public RestResponse transfer(@RequestBody Map<String,Object> map, HttpServletRequest request){
@ -145,7 +159,8 @@ public class DepositoryRecordController {
UserByPort departmentHeadByUser = findDepartmentHeadByUser(userToken);
map.put("departmenthead",departmentHeadByUser.getId());
map.put("applicantId",userToken.getId());
map.put("toId",map.get("depositoryId"));
map.remove("depositoryId");
return CrudUtil.postHandle(depositoryRecordService.transferApply(map),1);
}
@ -192,6 +207,7 @@ public class DepositoryRecordController {
*/
public static UserByPort findDepartmentHeadByUser(UserByPort user){
String url = "http://172.20.2.87:39168/org/positionlist";
// String url = "http://127.0.0.1:39168/org/positionlist";
Integer maindeparment = user.getMaindeparment();
Map<String,Object> map = new HashMap<>();
map.put("organization",maindeparment.toString());
@ -207,6 +223,9 @@ public class DepositoryRecordController {
JSONObject jsonObject = JSONObject.parseObject(post);
JSONObject data = (JSONObject) jsonObject.get("data");
JSONArray list = (JSONArray) data.get("list");
if(list == null){
list = new JSONArray();
}
Post userPost = JSONObject.toJavaObject((JSONObject) list.get(0), Post.class);
Map<String,Object> param = new HashMap<>();
param.put("position",userPost.getId());

58
src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java

@ -1,15 +1,22 @@
package com.dreamchaser.depository_manage.controller;
import com.dreamchaser.depository_manage.entity.Material;
import com.dreamchaser.depository_manage.entity.MaterialType;
import com.dreamchaser.depository_manage.entity.UserByPort;
import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.pojo.MaterialP;
import com.dreamchaser.depository_manage.pojo.RestResponse;
import com.dreamchaser.depository_manage.security.bean.UserToken;
import com.dreamchaser.depository_manage.service.MaterialService;
import com.dreamchaser.depository_manage.utils.CrudUtil;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import com.sun.mail.imap.protocol.ID;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -86,4 +93,55 @@ public class MaterialController {
throw new MyException("所需请求参数缺失!");
}
}
@PostMapping("/treeMenus")
public RestResponse InitTreeMenus(@RequestBody Map<String, Object> map, HttpServletRequest request){
String mname = (String) map.get("mname");
String type = (String) map.get("type");
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
Integer maindeparment = userToken.getMaindeparment();
List<Object> list = new ArrayList<>();
if("1".equals(type)){
list = materialService.InitTreeMenus(mname);
}else{
list = materialService.InitTreeMenus(mname, String.valueOf(maindeparment));
}
return new RestResponse(list);
}
/**
* 根据id获取材料
* @param mid
* @return
*/
@GetMapping("/findMatrialById")
public RestResponse findMatrialById(@RequestParam(value = "mid",required = false) String mid){
if("".equals(mid)){
return new RestResponse("",0,200);
}
Material materialById = materialService.findMaterialById(ObjectFormatUtil.toInteger(mid));
return new RestResponse(materialById,1,200);
}
@GetMapping("/findMatrialByCode")
public RestResponse findMatrialByCode(@RequestParam(value = "code") String code){
Map<String,Object> param = new HashMap<>();
if("".equals(code)){
return new RestResponse(null,1,200);
}
param.put("code",code);
List<MaterialP> materialPByCondition = materialService.findMaterialPByCondition(param);
MaterialP mp = null;
if(materialPByCondition.size() > 0){
mp = materialPByCondition.get(0);
}
return new RestResponse(mp,1,200);
}
@PostMapping("/findMaterialByCondition")
public RestResponse findMaterialByCondition(@RequestBody Map<String, Object> map){
List<MaterialP> materialPByCondition = materialService.findMaterialPByCondition(map);
return new RestResponse(materialPByCondition,materialService.findCountByCondition(map),200);
}
}

2
src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java

@ -171,7 +171,7 @@ public class MaterialTypeController {
public RestResponse findMaterialByMaterialTypeId(@RequestBody Map<String, Object> map){
Boolean allSonDepository = false;
if(map.containsKey("id")){
Integer materialTypeId = (Integer) map.get("id");
Integer materialTypeId = ObjectFormatUtil.toInteger(map.get("id"));
allSonDepository = findAllSonMaterialType(materialTypeId.toString());
}else if(map.containsKey("ids")){
List<Integer> ids = (List<Integer>) map.get("ids");

214
src/main/java/com/dreamchaser/depository_manage/controller/PageController.java

@ -7,20 +7,26 @@ import com.dreamchaser.depository_manage.entity.*;
import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.pojo.*;
import com.dreamchaser.depository_manage.security.bean.UserToken;
import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool;
import com.dreamchaser.depository_manage.service.*;
import com.dreamchaser.depository_manage.utils.DateUtil;
import com.dreamchaser.depository_manage.utils.HttpUtils;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import com.dreamchaser.depository_manage.utils.WordUtil;
import javafx.geometry.Pos;
import org.apache.http.protocol.HTTP;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
* 专门用来展示页面的controller
@ -53,10 +59,12 @@ public class PageController {
@Autowired
private RoleService roleService;
@GetMapping("/login")
public ModelAndView login() {
public static JSONObject Captcha(){
String url = "http://172.20.2.87:6666/base/captcha";
ModelAndView mv = new ModelAndView();
// String url = "http://127.0.0.1:6666/base/captcha";
JSONObject param = new JSONObject();
String post = null;
try {
@ -66,8 +74,26 @@ public class PageController {
}
JSONObject jsonObject = JSONObject.parseObject(post);
JSONObject data = (JSONObject) jsonObject.get("data");
String picPath = (String) data.get("picPath");
String captchaid = (String) data.get("captchaid");
return data;
}
@GetMapping("/")
public ModelAndView Init(HttpServletRequest request){
ModelAndView mv = new ModelAndView();
mv.setViewName("index");
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
mv.addObject("user", userToken);
return mv;
}
@GetMapping("/login")
public ModelAndView login() {
ModelAndView mv = new ModelAndView();
JSONObject captcha = Captcha();
String picPath = (String) captcha.get("picPath");
String captchaid = (String) captcha.get("captchaid");
mv.addObject("picPath", picPath);
mv.addObject("captchaid", captchaid);
mv.setViewName("pages/user/login");
@ -75,6 +101,8 @@ public class PageController {
}
@GetMapping("/index")
public ModelAndView index(HttpServletRequest request) {
ModelAndView mv = new ModelAndView();
@ -95,6 +123,7 @@ public class PageController {
public Map<String, Object> index_menus(@RequestParam("uid") String uid) {
//定义链接地址
String url = "http://172.20.2.87:6666/system_authorizing/obtain_authorization";
// String url = "http://127.0.0.1:6666/system_authorizing/obtain_authorization";
Map<String, Object> param = new HashMap<>();
param.put("system", "cangchu");
String jsonString = JSONObject.toJSONString(param);
@ -108,6 +137,9 @@ public class PageController {
JSONObject jsonObject = JSONObject.parseObject(post);
JSONObject data = (JSONObject) jsonObject.get("data");
JSONArray powerid = (JSONArray) data.get("powerid");
if(powerid == null){
powerid = new JSONArray();
}
List<String> stringList = JSONObject.parseArray(powerid.toJSONString(), String.class);
List<AccesstoAddress> accessToAddressByList = accessAddressService.findAccessToAddressByList(stringList);
// 获取顶级菜单
@ -303,7 +335,11 @@ public class PageController {
map.put("parentId", 0);
List<Depository> depositoryAll = depositoryService.findDepositoryRecordPByCondition(map);
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
Integer role = roleService.findRoleByUid(userToken.getId().toString());
// Integer role = roleService.findRoleByUid(userToken.getId().toString());
Integer role = userToken.getRole();
if(role == null){
role = 0;
}
if (role == 1) {
mv.addObject("display", "inline-block");
} else {
@ -352,8 +388,24 @@ public class PageController {
@GetMapping("/selectDepository")
public String selectDepository(){
return "pages/material/selectDepository";
public ModelAndView selectDepository(Integer type,HttpServletRequest request){
ModelAndView mv = new ModelAndView();
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
if(type == 1) {
Integer maindeparment = userToken.getMaindeparment();
mv.addObject("adminorg", maindeparment);
}
mv.setViewName("pages/material/selectDepository");
return mv;
}
@GetMapping("/selectMaterial")
public ModelAndView selectMaterial(String mname,String type){
ModelAndView mv = new ModelAndView();
mv.addObject("mname",mname);
mv.addObject("type",type);
mv.setViewName("pages/material/selectMaterial");
return mv;
}
@GetMapping("material_view")
@ -385,7 +437,11 @@ public class PageController {
Map<String, Object> map = new HashMap<>();
map.put("parentId", 0);
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
Integer role = roleService.findRoleByUid(userToken.getId().toString());
// Integer role = roleService.findRoleByUid(userToken.getId().toString());
Integer role = userToken.getRole();
if(role == null){
role = 0;
}
List<MaterialType> materialTypeAll = materialTypeService.findMaterialTypeByCondition(map);
mv.addObject("materialTypes", materialTypeAll);
if (role == 1) {
@ -406,6 +462,17 @@ public class PageController {
return mv;
}
@GetMapping("/application_in_back")
public ModelAndView applicationIn(Integer mid,Integer depositoryId){
ModelAndView mv = new ModelAndView();
Material materialById = materialService.findMaterialById(mid);
Depository depositoryRecordById = depositoryService.findDepositoryRecordById(depositoryId);
mv.addObject("materialById",materialById);
mv.addObject("depository",depositoryRecordById);
mv.setViewName("pages/application/application-in_back");
return mv;
}
@GetMapping("/application_out")
public ModelAndView application_out() {
ModelAndView mv = new ModelAndView();
@ -563,6 +630,7 @@ public class PageController {
*/
public static List<UserByPort> FindUserByMap(Map<String,Object> map) {
String url = "http://172.20.2.87:39168/staff/archiveslist";
// String url = "http://127.0.0.1:39168/staff/archiveslist";
String jsonString = JSONObject.toJSONString(map);
JSONObject paramObject = JSONObject.parseObject(jsonString);
String post = null;
@ -575,6 +643,9 @@ public class PageController {
JSONObject data = (JSONObject) jsonObject.get("data");
JSONArray list = (JSONArray) data.get("list");
List<UserByPort> result = new ArrayList<>();
if(list == null){
list = new JSONArray();
}
for (int i = 0; i < list.size(); i++) {
UserByPort userByPort = JSONObject.toJavaObject((JSONObject) list.get(i), UserByPort.class);
result.add(userByPort);
@ -584,6 +655,7 @@ public class PageController {
public static UserByPort FindUserById(Integer id) {
String url = "http://172.20.2.87:39168/staff/archivescont";
// String url = "http://127.0.0.1:39168/staff/archivescont";
Map<String, Object> map = new HashMap<>();
map.put("id", id);
String jsonString = JSONObject.toJSONString(map);
@ -602,20 +674,56 @@ public class PageController {
@GetMapping("/user_add")
public ModelAndView user_add(Integer id) {
public ModelAndView user_add(Integer userId) {
ModelAndView mv = new ModelAndView();
mv.setViewName("pages/user/user-add");
Map<String,Object> map = new HashMap<>();
map.put("number",id.toString());
UserByPortP userByPortP = new UserByPortP(FindUserByMap(map).get(0));
RoleAndDepository depositoryAndRole = roleService.findDepositoryAndRole(userByPortP.getId());
if (depositoryAndRole != null) {
userByPortP.setRolename(depositoryAndRole.getRoleName());
userByPortP.setDepositoryName(depositoryAndRole.getDepositoryName());
UserByPort userByPort = FindUserById(userId);
UserByPortP userByPortP = new UserByPortP(userByPort);
mv.addObject("userByPort", userByPortP);
mv.addObject("roles", roleService.findAllRole());
mv.addObject("depositories", depositoryService.findDepositoryAll());
return mv;
}
@GetMapping("/user_role_edit")
public ModelAndView user_role_edit(Integer id) {
ModelAndView mv = new ModelAndView();
mv.setViewName("pages/user/user-role-edit");
RoleAndDepository roleAndDepositoryById = roleService.findRoleAndDepositoryById(id);
UserByPortP userByPortP = null;
if (roleAndDepositoryById != null) {
UserByPort userByPort = FindUserById(roleAndDepositoryById.getUserId());
userByPortP = new UserByPortP(userByPort);
userByPortP.setRolename(roleAndDepositoryById.getRoleName());
userByPortP.setDepositoryName(roleAndDepositoryById.getDepositoryName());
}
mv.addObject("userByPort", userByPortP);
mv.addObject("roleId", roleAndDepositoryById.getId());
mv.addObject("roles", roleService.findAllRole());
mv.addObject("depositoryId",roleAndDepositoryById.getDepositoryId());
mv.addObject("depositories", depositoryService.findDepositoryAll());
return mv;
}
@GetMapping("/post_role_edit")
public ModelAndView post_role_edit(Integer id,Integer depositoryId) {
ModelAndView mv = new ModelAndView();
mv.setViewName("pages/post/postRole_edit");
Map<String,Object> userParam = new HashMap<>();
userParam.put("position",id);
List<UserByPort> userByPortList = PageController.FindUserByMap(userParam);
Post postById = findPostById(id);
PostP pp = new PostP(postById);
Map<String,Object> param = new HashMap<>();
param.put("depositoryId",depositoryId);
param.put("userId",userByPortList.get(0).getId());
List<RoleAndDepository> roleAndDepositoryByCondition = roleService.findRoleAndDepositoryByCondition(param);
pp.setDepositoryName(roleAndDepositoryByCondition.get(0).getDepositoryName());
pp.setDepositoryId(roleAndDepositoryByCondition.get(0).getDepositoryId());
mv.addObject("post", pp);
mv.addObject("roles", roleService.findAllRole());
mv.addObject("depositories", depositoryService.findDepositoryAll());
mv.addObject("record", roleAndDepositoryByCondition);
return mv;
}
@ -637,8 +745,14 @@ public class PageController {
ModelAndView mv = new ModelAndView();
mv.setViewName("pages/warehouse/warehouse_view");
if (id != null) {
mv.addObject("record", depositoryService.findDepositoryRecordById(id));
Depository depositoryRecordById = depositoryService.findDepositoryRecordById(id);
mv.addObject("record", depositoryRecordById);
Integer cid = depositoryRecordById.getCid();
List<AdministrationP> postList = findCompanyBySuperior(cid.toString());
List<AdministrationP> administrationPList = findAllCompany();
// 部门列表
mv.addObject("postList", postList);
// 公司列表
mv.addObject("administrationPList", administrationPList);
mv.addObject("depositories", depositoryService.findDepositoryAll());
} else {
@ -682,7 +796,7 @@ public class PageController {
return mv;
}
@GetMapping("ManagerView")
@GetMapping("/ManagerView")
public ModelAndView findManagerView(Integer id) {
ModelAndView mv = new ModelAndView();
mv.addObject("did", id);
@ -690,7 +804,22 @@ public class PageController {
return mv;
}
@GetMapping("ManagerViewByMid")
@GetMapping("/userRoleView")
public ModelAndView finduserRoleView(Integer id) {
ModelAndView mv = new ModelAndView();
mv.addObject("userId", id);
mv.setViewName("pages/user/userRole");
return mv;
}
@GetMapping("/postRoleView")
public ModelAndView findPostRoleView(Integer id) {
ModelAndView mv = new ModelAndView();
mv.addObject("postId", id);
mv.setViewName("pages/post/postRole");
return mv;
}
@GetMapping("/ManagerViewByMid")
public ModelAndView findManagerViewByMid(Integer id) {
ModelAndView mv = new ModelAndView();
Material materialById = materialService.findMaterialById(id);
@ -826,8 +955,25 @@ public class PageController {
ModelAndView mv = new ModelAndView();
mv.setViewName("pages/user/account-look");
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
RoleAndDepository depositoryAndRole = roleService.findDepositoryAndRole(userToken.getId());
List<RoleAndDepository> depositoryAndRole = roleService.findDepositoryAndRole(userToken.getId());
StringBuilder RoleName = new StringBuilder();
StringBuilder DepositoryName = new StringBuilder();
for (int i = 0; i < depositoryAndRole.size(); i++) {
String roleName = depositoryAndRole.get(i).getRoleName();
if(roleName == null){
roleName = "";
}
String depositoryName = depositoryAndRole.get(i).getDepositoryName();
if(depositoryName == null){
depositoryName = "";
}
RoleName.append(roleName + " ");
DepositoryName.append(depositoryName + " ");
}
mv.addObject("roleAndDepository", depositoryAndRole);
mv.addObject("RoleName", RoleName.toString());
mv.addObject("DepositoryName", DepositoryName.toString());
mv.addObject("user", userToken);
return mv;
}
@ -844,6 +990,7 @@ public class PageController {
public List<AdministrationP> findAllCompany() {
String url = "http://172.20.2.87:39168/org/govlist";
// String url = "http://127.0.0.1:39168/org/govlist";
Map<String, Object> map = new HashMap<>();
map.put("superior", "313");
String jsonString = JSONObject.toJSONString(map);
@ -857,6 +1004,9 @@ public class PageController {
JSONObject jsonObject = JSONObject.parseObject(post);
JSONObject data = (JSONObject) jsonObject.get("data");
JSONArray list = (JSONArray) data.get("list");
if(list == null){
list = new JSONArray();
}
Integer total = ObjectFormatUtil.toInteger(data.get("total"));
List<AdministrationP> administrationPList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
@ -890,6 +1040,7 @@ public class PageController {
@GetMapping("/company_detail")
public ModelAndView company_detail(Integer id) {
String url = "http://172.20.2.87:39168/org/getgovcont";
// String url = "http://127.0.0.1:39168/org/getgovcont";
Map<String, Object> map = new HashMap<>();
ModelAndView mv = new ModelAndView();
mv.setViewName("pages/company/company_edit");
@ -916,8 +1067,9 @@ public class PageController {
return mv;
}
public Administration getCompany(Integer id) {
public static Administration getCompany(Integer id) {
String url = "http://172.20.2.87:39168/org/getgovcont";
// String url = "http://127.0.0.1:39168/org/getgovcont";
Map<String, Object> map = new HashMap<>();
map.put("id", id);
map.put("idstr", id.toString());
@ -939,6 +1091,7 @@ public class PageController {
public static List<AdministrationP> findCompanyBySuperior(String superior) {
String url = "http://172.20.2.87:39168/org/govlist";
// String url = "http://127.0.0.1:39168/org/govlist";
Map<String, Object> map = new HashMap<>();
map.put("superior", superior);
String jsonString = JSONObject.toJSONString(map);
@ -952,6 +1105,9 @@ public class PageController {
JSONObject jsonObject = JSONObject.parseObject(post);
JSONObject data = (JSONObject) jsonObject.get("data");
JSONArray list = (JSONArray) data.get("list");
if(list == null){
list = new JSONArray();
}
Integer total = ObjectFormatUtil.toInteger(data.get("total"));
List<AdministrationP> administrationPList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
@ -966,6 +1122,7 @@ public class PageController {
public ModelAndView findCompanyByParentId(Integer parentId) {
ModelAndView mv = new ModelAndView();
String url = "http://172.20.2.87:39168/org/govlist";
// String url = "http://127.0.0.1:39168/org/govlist";
if (parentId != null) {
mv.addObject("parentId", parentId);
List<AdministrationP> administrationPList = findCompanyBySuperior(parentId.toString());
@ -984,6 +1141,7 @@ public class PageController {
@GetMapping("/findPostByOrganization")
public ModelAndView findPostByOrganization(Integer organization) {
String url = "http://172.20.2.87:39168/org/positionlist";
// String url = "http://127.0.0.1:39168/org/positionlist";
ModelAndView mv = new ModelAndView();
mv.setViewName("pages/post/post-out");
mv.addObject("parentId", organization);
@ -1001,12 +1159,16 @@ public class PageController {
JSONObject jsonObject = JSONObject.parseObject(post);
JSONObject data = (JSONObject) jsonObject.get("data");
JSONArray list = (JSONArray) data.get("list");
if(list == null){
list = new JSONArray();
}
List<Post> postList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
Post object = JSONObject.toJavaObject((JSONObject) list.get(i), Post.class);
postList.add(object);
}
mv.addObject("postList", postList);
mv.addObject("organization", organization);
mv.setViewName("pages/post/post-out");
} else {
throw new MyException("缺少必要参数!");
@ -1027,8 +1189,9 @@ public class PageController {
return mv;
}
public Post findPostById(Integer id) {
public static Post findPostById(Integer id) {
String url = "http://172.20.2.87:39168/org/getpositioncont";
// String url = "http://127.0.0.1:39168/org/getpositioncont";
Map<String, Object> map = new HashMap<>();
map.put("id", id);
map.put("idstr", id.toString());
@ -1050,6 +1213,7 @@ public class PageController {
@GetMapping("/findPostByParentId")
public ModelAndView findPostByParentId(Integer parentId) {
String url = "http://172.20.2.87:39168/org/positionlist";
// String url = "http://127.0.0.1:39168/org/positionlist";
ModelAndView mv = new ModelAndView();
if (parentId != null) {
Map<String, Object> map = new HashMap<>();
@ -1066,6 +1230,9 @@ public class PageController {
JSONObject jsonObject = JSONObject.parseObject(post);
JSONObject data = (JSONObject) jsonObject.get("data");
JSONArray list = (JSONArray) data.get("list");
if(list == null){
list = new JSONArray();
}
Integer total = ObjectFormatUtil.toInteger(data.get("total"));
List<Post> postList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
@ -1095,4 +1262,5 @@ public class PageController {
mv.addObject("depositories", depositoryService.findDepositoryAll());
return mv;
}
}

127
src/main/java/com/dreamchaser/depository_manage/controller/UserController.java

@ -3,6 +3,7 @@ package com.dreamchaser.depository_manage.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.entity.Depository;
import com.dreamchaser.depository_manage.entity.User;
import com.dreamchaser.depository_manage.entity.UserByPort;
import com.dreamchaser.depository_manage.exception.MyException;
@ -16,6 +17,7 @@ import com.dreamchaser.depository_manage.security.bean.UserToken;
import com.dreamchaser.depository_manage.security.bean.VerificationCode;
import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool;
import com.dreamchaser.depository_manage.security.pool.VerificationCodePool;
import com.dreamchaser.depository_manage.service.DepositoryService;
import com.dreamchaser.depository_manage.service.RoleService;
import com.dreamchaser.depository_manage.service.UserService;
import com.dreamchaser.depository_manage.utils.CrudUtil;
@ -33,7 +35,9 @@ import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.time.Instant;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -62,6 +66,9 @@ public class UserController {
@Value("${spring.mail.username}")
private String fromEmail;
@Autowired
private DepositoryService depositoryService;
/**
* 注册用户通常为手机或者邮箱注册
*
@ -145,6 +152,7 @@ public class UserController {
@PostMapping("/login")
public RestResponse login(@RequestBody Map<String, String> map, HttpServletRequest request) {
String url = "http://172.20.2.87:6666/base/login";
// String url = "http://127.0.0.1:6666/base/login";
String jsonString = JSONObject.toJSONString(map);
JSONObject paramObject = JSONObject.parseObject(jsonString);
String post = null;
@ -155,13 +163,18 @@ public class UserController {
}
JSONObject jsonObject = JSONObject.parseObject(post);
JSONObject data = (JSONObject) jsonObject.get("data");
if(data != null) {
String userkey = (String) data.get("key");
if(userkey != null) {
String usertoken = (String) data.get("token");
HttpUtils.setUserKey(userkey);
HttpUtils.setUserToken(usertoken);
UserByPort userinfo = JSONObject.toJavaObject((JSONObject) data.get("userinfo"), UserByPort.class);
AuthenticationTokenPool.addToken(usertoken,userinfo);
HttpSession session = request.getSession();
session.setAttribute("token",usertoken);
session.setMaxInactiveInterval(1800);
// 设置放入时间
// userinfo.setInstant(Instant.now());
return new RestResponse(usertoken);
}else{
return CrudUtil.NOT_EXIST_USER_OR_ERROR_PWD_RESPONSE;
@ -184,6 +197,15 @@ public class UserController {
return CrudUtil.NOT_EXIST_USER_OR_ERROR_PWD_RESPONSE;
}
}
@GetMapping("/loginOut")
public RestResponse loginOut(HttpServletRequest request){
HttpSession session = request.getSession();
String token = (String) session.getAttribute("token");
session.invalidate();
request.removeAttribute("userToken");
AuthenticationTokenPool.removeToken(token);
return new RestResponse("",200,new StatusInfo("退出成功","退出成功"));
}
/**
@ -209,6 +231,7 @@ public class UserController {
@PostMapping("/sys/findUsers")
public RestResponse findUsersByPort(@RequestParam Map<String, Object> map) {
String url = "http://172.20.2.87:39168/staff/archiveslist";
// String url = "http://127.0.0.1:39168/staff/archiveslist";
if(map.containsKey("company")){
map.put("company",ObjectFormatUtil.toInteger(map.get("company")));
}
@ -230,13 +253,23 @@ public class UserController {
JSONObject jsonObject = JSONObject.parseObject(post);
JSONObject data = (JSONObject) jsonObject.get("data");
JSONArray list = (JSONArray) data.get("list");
if(list == null){
list = new JSONArray();
}
Integer total = ObjectFormatUtil.toInteger(data.get("total"));
List<UserByPortP> userByPortList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
UserByPort userByPort = JSONObject.toJavaObject((JSONObject)list.get(i), UserByPort.class);
UserByPortP user = new UserByPortP(userByPort);
RoleAndDepository depositoryAndRole = roleService.findDepositoryAndRole(userByPort.getId());
if(depositoryAndRole != null) {
Map<String,Object> param = new HashMap<>();
param.put("userId",userByPort.getId());
param.put("classes",1);
List<RoleAndDepository> roleAndDepositoryByCondition = roleService.findRoleAndDepositoryByCondition(param);
RoleAndDepository depositoryAndRole = null;
if(roleAndDepositoryByCondition.size() > 0){
depositoryAndRole = roleAndDepositoryByCondition.get(0);
}
if(depositoryAndRole != null && depositoryAndRole.getClasses() != 2) {
user.setRolename(depositoryAndRole.getRoleName());
user.setDepositoryName(depositoryAndRole.getDepositoryName());
}else{
@ -261,13 +294,40 @@ public class UserController {
@PostMapping("/sys/user_role")
public RestResponse addUser(@RequestBody Map<String, Object> map) {
map.put("classes",1);
RoleAndDepository userid = roleService.findDepositoryAndRole(ObjectFormatUtil.toInteger(map.get("userid")));
if(userid!=null){
return CrudUtil.postHandle(roleService.updateUserOrPostRoleAndDepository(map), 1);
}else {
Map<String,Object> param = new HashMap<>();
param.put("userId",map.get("userid"));
param.put("classes",1);
if(map.containsKey("depositoryId")){
param.put("depositoryId",map.get("depositoryId"));
List<RoleAndDepository> roleAndDepositoryByCondition = roleService.findRoleAndDepositoryByCondition(param);
if(roleAndDepositoryByCondition.size() > 0){
return CrudUtil.postHandle(-1,-1);
}else{
return CrudUtil.postHandle(roleService.addUserOrPostRoleAndDepository(map), 1);
}
// return CrudUtil.postHandle(userService.insertUser(map), 1);
}else{
List<Depository> depositoryAll = depositoryService.findDepositoryAll();
Integer success = 0;
for (int i = 0; i < depositoryAll.size(); i++) {
param.put("depositoryId",depositoryAll.get(i).getId());
map.put("depositoryId",depositoryAll.get(i).getId());
List<RoleAndDepository> roleAndDepositoryByCondition = roleService.findRoleAndDepositoryByCondition(param);
if(roleAndDepositoryByCondition.size() > 0){
continue;
}else{
success += roleService.addUserOrPostRoleAndDepository(map);
}
}
return CrudUtil.postHandle(success,depositoryAll.size());
}
}
@PostMapping("/sys/userRole_edit")
public RestResponse editUserRole(@RequestBody Map<String, Object> map) {
RoleAndDepository roleId = roleService.findRoleAndDepositoryById(ObjectFormatUtil.toInteger(map.get("roleId")));
map.put("classes",1);
return CrudUtil.postHandle(roleService.UpdateRoleAndDepositoryById(map),1);
}
@PostMapping("/sys/user_detail")
@ -299,6 +359,30 @@ public class UserController {
}
}
/**
* 根据主键删除权限类型
* @param map
* @return
*/
@PostMapping("/sys/userRole_del")
public RestResponse deleteRoleAndDepository(@RequestBody Map<String,Object> map){
if(map.containsKey("id")) {
Integer id = ObjectFormatUtil.toInteger(map.get("id"));
return CrudUtil.deleteHandle(roleService.deleteRoleAndDepositoryById(id), 1);
}
else if(map.containsKey("ids")){
Integer num = 0;
List<Integer> ids=(List<Integer>) map.get("ids");
for (int i = 0; i < ids.size(); i++) {
Integer id = ids.get(i);
num += roleService.deleteRoleAndDepositoryById(id);
}
return CrudUtil.deleteHandle(num, ids.size());
}else {
throw new MyException("所需请求参数缺失!");
}
}
@PutMapping("/user")
public RestResponse updateSelf(@RequestBody Map<String, Object> map, HttpServletRequest request) {
UserToken userToken = (UserToken) request.getAttribute("userToken");
@ -409,6 +493,33 @@ public class UserController {
return CrudUtil.postHandle(userService.updateUserPasswordById(map), 1);
}
/**
* 获取验证码
* @return
*/
@GetMapping("/getCaptchaid")
public JSONObject getCaptchaid(){
JSONObject captcha = PageController.Captcha();
return captcha;
}
@GetMapping("/findUserRole")
public RestResponse findUserRole(@RequestParam("userId") Integer userId){
Map<String,Object> param = new HashMap<>();
param.put("classes",1);
param.put("userId",userId);
List<UserByPortP> userByPortPList = new ArrayList<>();
List<RoleAndDepository> roleAndDepositoryByCondition = roleService.findRoleAndDepositoryByCondition(param);
for (int i = 0; i < roleAndDepositoryByCondition.size(); i++) {
UserByPort userByPort = PageController.FindUserById(roleAndDepositoryByCondition.get(i).getUserId());
UserByPortP up = new UserByPortP(userByPort);
up.setId(roleAndDepositoryByCondition.get(i).getId());
up.setDepositoryName(roleAndDepositoryByCondition.get(i).getDepositoryName());
userByPortPList.add(up);
}
return new RestResponse(userByPortPList, userByPortPList.size(), 200);
}
}

5
src/main/java/com/dreamchaser/depository_manage/entity/ApplicationInRecord.java

@ -38,4 +38,9 @@ public class ApplicationInRecord {
* 仓库编号
*/
private Integer depository_id;
/**
* 入库编码
*/
private String aircode;
}

110
src/main/java/com/dreamchaser/depository_manage/entity/Depository.java

@ -38,6 +38,30 @@ public class Depository {
* 公司名称
*/
private String cname;
/**
* 仓库编码
*/
private String code;
/**
* 所属部门
*/
private String adminorg;
/**
* 所属部门名称
*/
private String adminorgName;
/**
* 当前仓库最大存储量
*/
private Integer maxNumber;
/**
* 当前仓库最小存储量
*/
private Integer minNumber;
/**
* 获取id
*
@ -161,13 +185,99 @@ public class Depository {
this.cid = cid;
}
/**
* 获取公司名称
* @return
*/
public String getCname() {
return cname;
}
/**
* 设置公司名称
* @param cname
*/
public void setCname(String cname) {
this.cname = cname;
}
/**
* 获取仓库编码
* @return
*/
public String getCode() {
return code;
}
/**
* 设置仓库编码
* @param code
*/
public void setCode(String code) {
this.code = code;
}
/**
* 获取所属部门
* @return
*/
public String getAdminorg() {
return adminorg;
}
/**
* 设置所属部门
* @param adminorg
*/
public void setAdminorg(String adminorg) {
this.adminorg = adminorg;
}
/**
* 获取部门名称
* @return
*/
public String getAdminorgName() {
return adminorgName;
}
/**
* 设置部门名称
* @param adminorgName
*/
public void setAdminorgName(String adminorgName) {
this.adminorgName = adminorgName;
}
/**
* 获取当前仓库存储最大值
* @return
*/
public Integer getMaxNumber() {
return maxNumber;
}
/**
* 设置当前仓库存储最大值
* @return
*/
public void setMaxNumber(Integer maxNumber) {
this.maxNumber = maxNumber;
}
/**
* 获取当前仓库存储最小值
* @return
*/
public Integer getMinNumber() {
return minNumber;
}
/**
* 设置当前仓库存储最小值
* @return
*/
public void setMinNumber(Integer minNumber) {
this.minNumber = minNumber;
}
/* This code was generated by TableGo tools, mark 2 end. */
}

2
src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfo.java

@ -47,7 +47,7 @@ public class ExcelInfo {
private Integer state;
/** 存货编码 */
@ExcelProperty("存货编码(用友U8)")
@ExcelProperty("存货编码")
private Long code;
/** 规格型号 */

2
src/main/java/com/dreamchaser/depository_manage/entity/Material.java

@ -17,7 +17,7 @@ public class Material {
/** 存储id */
private Integer id;
/** 仓库名称 */
/** 仓库id */
private Integer depositoryId;
/** 材料名称 */

18
src/main/java/com/dreamchaser/depository_manage/entity/UserByPort.java

@ -6,6 +6,10 @@ import java.time.Instant;
@Data
public class UserByPort {
private static Integer term = 1800; // 登录有效时间
/**
* id
*/
@ -283,5 +287,19 @@ public class UserByPort {
*/
private String keystr;
/**
* 放入的时间
*/
private Instant instant;
/**
* 根据时间判断是否有效
* @return 有效则返回true否则返回false
*/
/* public boolean isValid(){
return Instant.now().getEpochSecond()-instant.getEpochSecond()<=term;
}*/
}

16
src/main/java/com/dreamchaser/depository_manage/intercepter/UserInterceptor.java

@ -9,6 +9,7 @@ import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
@ -25,18 +26,15 @@ public class UserInterceptor extends HandlerInterceptorAdapter {
//拿到requset中的head
String token =null;
Cookie[] cookies=request.getCookies();
if (cookies!=null){
for (Cookie c:cookies){
if (c.getName().equals("token")){
token=c.getValue();
break;
}
}
}
HttpSession session = request.getSession();
token = (String) session.getAttribute("token");
//如果是访问logout则删除对应的令牌
if ("/logout".equals(request.getServletPath())){
AuthenticationTokenPool.removeToken(token);
session.invalidate();
return true;
}
if("/getCaptchaid".equals(request.getServletPath())){
return true;
}
if (token!=null&&AuthenticationTokenPool.getToken(token)!=null){

12
src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.java

@ -109,11 +109,11 @@ public interface DepositoryMapper {
/**
* 根据仓库名称获取当前仓库库存容量
* @param dname
* 根据仓库名称或仓库编码获取当前仓库库存容量
* @param map
* @return
*/
Double getToDayInventoryByDName(String dname);
Double getToDayInventoryByDName(Map<String,Object> map);
/**
@ -136,4 +136,10 @@ public interface DepositoryMapper {
* @return
*/
List<Depository> getParentByDepository(Integer parentId);
/**
* 获取当前部门以及公共仓库
* @param adminorg
* @return
*/
List<Depository> findDepositoryByAdminorg(String adminorg);
}

85
src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.xml

@ -12,17 +12,21 @@
<result column="introduce" property="introduce" jdbcType="VARCHAR" />
<result column="parentId" property="parentId" jdbcType="INTEGER"/>
<result column="cid" property="cid" jdbcType="INTEGER"/>
<result column="code" property="code" jdbcType="VARCHAR"/>
<result column="adminorg" property="adminorg" jdbcType="VARCHAR"/>
<result column="minNumber" property="minNumber" jdbcType="INTEGER"/>
<result column="maxNumber" property="maxNumber" jdbcType="INTEGER"/>
</resultMap>
<!-- This code was generated by TableGo tools, mark 1 end. -->
<!-- This code was generated by TableGo tools, mark 2 begin. -->
<!-- 表查询字段 -->
<sql id="allColumns">
d.id, d.dname, d.address, d.introduce,d.state,d.parentId,d.cid
d.id, d.dname, d.address, d.introduce,d.state,d.parentId,d.cid,d.code,d.adminorg,d.maxNumber,d.minNumber
</sql>
<!-- 视图查询字段-->
<sql id="depositoryAndCompany">
id,dname,address,introduce,state,parentId,cid,cname
id,dname,address,introduce,state,parentId,cid,cname,code,adminorg,minNumber,maxNumber
</sql>
<!-- This code was generated by TableGo tools, mark 2 end. -->
@ -49,6 +53,17 @@
Where dc.state != 3
</select>
<!-- 获取当前部门仓库以及公共仓库-->
<select id="findDepositoryByAdminorg" resultMap="depositoryMap" parameterType="string">
SELECT
<include refid="allColumns" />
FROM depository d WHERE 1 = 1
<if test="adminorg != null and adminorg != ''">
and d.adminorg = #{adminorg}
</if>
or d.adminorg = ''
</select>
<!-- 根据主键查询多个数据-->
<select id="selectDepositoryRecordByIds" parameterType="list" resultMap="depositoryMap">
@ -85,36 +100,11 @@
<if test="cid != null">
and d.cid = #{cid}
</if>
AND d.state != 3
</select>
<!-- 根据条件查询数据列表-->
<!--<select id="findDepositoryRecordPByCondition" resultMap="depositoryMap" parameterType="map">
SELECT
<include refid="depositoryAndCompany" />
FROM depositoryandcompany d WHERE 1 = 1
<if test="depositoryId != null">
AND d.id = #{depositoryId}
</if>
<if test="dname != null and dname != ''">
AND d.dname LIKE CONCAT('%', #{dname}, '%')
</if>
<if test="address != null and address != ''">
AND d.address LIKE CONCAT('%', #{address}, '%')
</if>
<if test="introduce != null and introduce != ''">
AND d.introduce LIKE CONCAT('%', #{introduce}, '%')
</if>
<if test="state != null and state != '' ">
AND d.state = #{state}
</if>
<if test="parentId != null">
AND d.parentId = #{parentId}
</if>
<if test="cid != null">
and d.cid = #{cid}
<if test="adminorg != null">
and (d.adminorg = #{adminorg} or d.adminorg = '')
</if>
AND d.state != 3
</select>-->
</select>
<!-- 根据条件参数查询数据列表数目 -->
<select id="findCountByCondition" resultType="int" parameterType="map">
@ -138,6 +128,9 @@
<if test="cid != null">
and d.cid = #{cid}
</if>
<if test="adminorg != null">
and d.adminorg = #{adminorg}
</if>
AND d.state != 3
</select>
@ -161,14 +154,18 @@
<!-- 插入数据 -->
<insert id="insertDepository" parameterType="map">
INSERT INTO depository (
id, dname, address, introduce,parentId,cid
id, dname, address, introduce,parentId,cid,code,adminorg,maxNumber,minNumber
) VALUES (
#{id},
#{dname},
#{address},
#{introduce},
#{parentId},
#{cid}
#{cid},
#{code},
#{adminorg},
#{maxNumber},
#{minNumber}
)
</insert>
@ -208,7 +205,19 @@
parentId = #{parentId},
</if>
<if test="cid != null">
cid = #{cid}
cid = #{cid},
</if>
<if test="adminorg != null">
adminorg = #{adminorg},
</if>
<if test="code != null">
code = #{code},
</if>
<if test="minNumber != null and minNumber != ''">
minNumber = #{minNumber},
</if>
<if test="maxNumber != null and maxNumber != ''">
maxNumber = #{maxNumber}
</if>
</set>
WHERE id = #{id}
@ -291,10 +300,16 @@
where d.state != 3
</select>
<select id="getToDayInventoryByDName" resultType="double" parameterType="string">
<select id="getToDayInventoryByDName" resultType="double" parameterType="map">
select ifnull(sum(quantity),0.0)
from depositoryAndmaterial
where dname = #{dname}
where 1 = 1
<if test="dname != null and dname !=''">
and dname = #{dname}
</if>
<if test="dcode != null and dcode !=''">
and dcode = #{dcode}
</if>
</select>

18
src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml

@ -55,6 +55,13 @@
<result column="dname" property="depositoryName" jdbcType="VARCHAR" />
<result column="applicant_id" property="applicantId" jdbcType="INTEGER" />
<result column="applyRemark" property="applyRemark" jdbcType="INTEGER" />
<result column="aircode" property="aircode" jdbcType="VARCHAR" />
<result column="mcode" property="mcode" jdbcType="VARCHAR" />
<result column="mversion" property="mversion" jdbcType="VARCHAR" />
<result column="munit" property="munit" jdbcType="VARCHAR" />
<result column="mtexture" property="mtexture" jdbcType="VARCHAR" />
<result column="mkingdeecode" property="mkingdeecode" jdbcType="VARCHAR" />
<result column="mdepositoryCode" property="mdepositoryCode" jdbcType="VARCHAR" />
</resultMap>
<!-- 插入出库记录-->
@ -81,6 +88,7 @@
<result column="aorstate" property="state" jdbcType="VARCHAR" />
<result column="istransfer" property="istransfer" jdbcType="INTEGER" />
<result column="transferId" property="transferId" jdbcType="INTEGER" />
<result column="mcode" property="mcode" jdbcType="VARCHAR" />
</resultMap>
@ -110,12 +118,12 @@
</sql>
<sql id="ApplicationInRecordInfo">
airid,mname,quantity,price,tname,applicant_time,aircode,dname,applicant_id,applyRemark
airid,mname,quantity,price,tname,applicant_time,aircode,dname,applicant_id,applyRemark,mcode,mversion,munit,mtexture,mkingdeecode,mdepositoryCode
</sql>
<sql id="ApplicationOutRecordInfo">
aorid,mid,mname,depositoryId,dname,applicantId,applicantTime,applyRemark,aorcode,aorpirce,aorquantity,departmenthead,departmentheadPass,departmentHeadTime,departmentheadMessage,
depositoryManager,depositoryManagerPass,depositoryManagerTime,depositoryManagerMessage,aorstate,istransfer,transferId
depositoryManager,depositoryManagerPass,depositoryManagerTime,depositoryManagerMessage,aorstate,istransfer,transferId,mcode
</sql>
<!-- 查询所有数据行数 -->
<select id="findCount" resultType="integer">
@ -398,9 +406,6 @@
<if test="applicantTime != null and applicantTime != ''">
and applicant_time >= #{applicantTime}
</if>
<if test="begin != null and size != null">
LIMIT #{begin},#{size}
</if>
</select>
<!-- 根据条件查询出库记录数-->
@ -463,9 +468,6 @@
<if test="istransfer != null and istransfer != ''">
and istransfer = #{istransfer}
</if>
<if test="begin != null and size != null">
LIMIT #{begin},#{size}
</if>
</select>

7
src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.java

@ -122,6 +122,11 @@ public interface MaterialMapper {
*/
Integer updateStateByParam(Map<String,Object> map);
/**
* 根据仓库查询物品
* @param ids
* @return
*/
List<Material> findMaterialByDepositorys(List<Integer> ids);
}

26
src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml

@ -55,12 +55,12 @@
<!-- 表查询字段,包括材料类型 -->
<sql id="allColumnsAndTypeName">
m.id,m.depository_id,m.mname,m.quantity,m.price,m.type_id,m.state,m.code ,m.version ,m.amounts ,m.unit ,m.texture,mt.tname,m.depositoryCode,d.dname
id,depository_id,mname,quantity,price,type_id,state,code ,version ,amounts ,unit ,texture,tname,depositoryCode,dname
</sql>
<!-- 表查询字段,包括材料类型 用于视图-->
<sql id="allColumnsAndTypeNameOnView">
id,depository_id,mname,quantity,price,type_id,state,tname,dname,version,amounts ,unit ,texture,code,depositoryCode
id,depository_id,mname,quantity,price,type_id,state,tname,dname,version,amounts ,unit ,texture,code,depositoryCode,depository_id
</sql>
<!-- 查询所有数据的条数 -->
<select id="findCount" resultType="integer">
@ -120,11 +120,27 @@
<if test="state != null and state != ''">
And state = #{state}
</if>
<if test="code != null and code != '' ">
and code = #{code}
</if>
<if test="begin != null and size != null">
LIMIT #{begin},#{size}
</if>
</select>
<!-- 根据仓库查询材料-->
<select id="findMaterialByDepositorys" resultMap="materialMap" parameterType="list">
SELECT
<include refid="allColumns" />
from material m
where m.depository_id in
<foreach collection="list" index="index" item="item" open="("
separator="," close=")">
#{item}
</foreach>
</select>
<!-- 根据主键查询数据 -->
<select id="findMaterialById" resultMap="materialMap" parameterType="integer">
SELECT
@ -135,10 +151,8 @@
<select id="findMaterialAndTypeById" resultMap="materialAndTypeMap" parameterType="integer">
select
<include refid="allColumnsAndTypeName"/>
from material m ,material_type mt,depository d
where m.id = #{id}
and m.depository_id = d.id
and m.type_id = mt.id
from materialAndType
where id = #{id}
</select>
<!-- 根据主键查询数据 -->

2
src/main/java/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.java

@ -1,5 +1,6 @@
package com.dreamchaser.depository_manage.mapper;
import com.dreamchaser.depository_manage.entity.Material;
import com.dreamchaser.depository_manage.entity.MaterialType;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@ -110,4 +111,5 @@ public interface MaterialTypeMapper {
* @return 所有记录
*/
List<MaterialType> findMaterialTypeNoParent();
}

30
src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.java

@ -30,7 +30,7 @@ public interface RoleMapper {
* @param userid
* @return
*/
RoleAndDepository findDepositoryAndRole(Integer userid);
List<RoleAndDepository> findDepositoryAndRole(Integer userid);
/**
* 修改用户或者岗位权限及管理的仓库
@ -55,6 +55,34 @@ public interface RoleMapper {
*/
List<Integer> findUserIdByDid(Integer did);
/**
* 根据条件获取权限
* @param map
* @return
*/
List<RoleAndDepository> findRoleAndDepositoryByCondition(Map<String,Object> map);
/**
* 根据id获取权限
* @param id
* @return
*/
RoleAndDepository findRoleAndDepositoryById(Integer id);
/**
* 修改权限列表
* @param map
* @return
*/
Integer UpdateRoleAndDepositoryById(Map<String,Object> map);
/**
* 根据id删除
* @param id
* @return
*/
Integer deleteRoleAndDepositoryById(Integer id);
}

53
src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.xml

@ -19,12 +19,15 @@
</resultMap>
<resultMap id="depositoryAndrole" type="com.dreamchaser.depository_manage.pojo.RoleAndDepository">
<result column="prid" property="id" jdbcType="INTEGER"/>
<result column="userId" property="userId" jdbcType="INTEGER"/>
<result column="roleName" property="roleName" jdbcType="VARCHAR"/>
<result column="depositoryName" property="depositoryName" jdbcType="VARCHAR"/>
<result column="depositoryAddress" property="depositoryAddress" jdbcType="VARCHAR"/>
<result column="depositoryIntroduce" property="depositoryIntroduce" jdbcType="VARCHAR"/>
<result column="depositoryState" property="depositoryState" jdbcType="VARCHAR"/>
<result column="did" property="depositoryId" jdbcType="VARCHAR"/>
<result column="classes" property="classes" jdbcType="INTEGER"/>
</resultMap>
<sql id="allColumns">
@ -32,7 +35,7 @@
</sql>
<sql id="roleNameAnddepositoryName">
userid as userId,name as roleName,dname as depositoryName,address as depositoryAddress ,introduce as depositoryIntroduce,state as depositoryState
prid,userid as userId,name as roleName,dname as depositoryName,address as depositoryAddress ,introduce as depositoryIntroduce,state as depositoryState,did,classes
</sql>
<select id="findAllRole" resultMap="roleMap">
@ -52,7 +55,22 @@
</if>
</set>
where userid = #{userid}
</update>
<update id="UpdateRoleAndDepositoryById" parameterType="map">
update postoruserrole
<set>
<if test="authority != null and authority != ''">
role = #{authority},
</if>
<if test="depositoryId != null and depositoryId != ''">
did = #{depositoryId},
</if>
<if test="classes != null and classes != ''">
classes = #{classes}
</if>
</set>
where id = #{roleId}
</update>
<insert id="addUserOrPostRoleAndDepository" parameterType="map">
@ -76,14 +94,43 @@
</select>
<select id="findRoleByUid" parameterType="int" resultType="int">
select rid from userandrole where uid = #{uid}
select role from postoruserrole where userid = #{uid} and classes = 1
</select>
<select id="findUserIdByDid" parameterType="int" resultType="int">
select userid from postoruserrole where classes = 1 and did = #{did}
select userid from postoruserrole where 1 = 1 and did = #{did}
</select>
<select id="findRoleAndDepositoryByCondition" parameterType="map" resultMap="depositoryAndrole">
select
<include refid="roleNameAnddepositoryName"/>
from userroleanddepository
where 1 = 1
<if test="depositoryId != null and depositoryId != ''">
and did = #{depositoryId}
</if>
<if test="userId != null and userId != ''">
and userId = #{userId}
</if>
<if test="classes != null and classes != ''">
and classes = #{classes}
</if>
</select>
<select id="findRoleAndDepositoryById" parameterType="int" resultMap="depositoryAndrole">
select
<include refid="roleNameAnddepositoryName"/>
from userroleanddepository
where prid = #{id}
</select>
<delete id="deleteRoleAndDepositoryById" parameterType="int">
delete from postoruserrole WHERE id = #{id}
</delete>

31
src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationInRecordP.java

@ -19,7 +19,7 @@ public class ApplicationInRecordP {
/**
* 入库金额
*/
private int price;
private Double price;
/**
* 入库物品类型
*/
@ -55,5 +55,34 @@ public class ApplicationInRecordP {
*/
private String applyRemark;
/**
* 入库编码
*/
private String aircode;
/**
* 物品编码
*/
private String mcode;
/**
* 物品规格型号
*/
private String mversion;
/**
* 物品计量单位
*/
private String munit;
/**
* 物品材质
*/
private String mtexture;
/**
* 物品金蝶编码
*/
private String mkingdeecode;
/**
* 物品仓库编码
*/
private String mdepositoryCode;
}

7
src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationOutRecordP.java

@ -58,7 +58,7 @@ public class ApplicationOutRecordP {
/**
* 金额
*/
private Integer price;
private Double price;
/**
* 数量
@ -128,4 +128,9 @@ public class ApplicationOutRecordP {
* 转移申请编号
*/
private Integer transferId;
/**
* 材料存货编码
*/
private String mcode;
}

8
src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java

@ -22,6 +22,11 @@ public class MaterialP {
*/
private String depositoryName;
/**
* 仓库id
*/
private Integer depositoryId;
/**
* 材料名称
*/
@ -110,6 +115,7 @@ public class MaterialP {
this.texture = material.getTexture(); // 材质
this.code = material.getCode(); // 存货编码
this.version = material.getVersion(); // 规格型号
this.depositoryCode = material.getDepositoryCode(); // 仓库编号
this.depositoryCode = material.getDepositoryCode(); // 仓库编码
this.depositoryId = material.getDepositoryId(); // 仓库id
}
}

10
src/main/java/com/dreamchaser/depository_manage/pojo/PostP.java

@ -74,6 +74,15 @@ public class PostP {
* 管理仓库
*/
private String depositoryName;
/**
* 管理仓库编号
*/
private Integer depositoryId;
/**
* 归属行政组织
*/
private Integer administrativeorganization;
public PostP(Post post){
this.id = post.getId();
@ -87,6 +96,7 @@ public class PostP {
this.superiorname = post.getSuperiorname();
this.superiornumber = post.getSuperiornumber();
this.departmentname = post.getDepartmentname();
this.administrativeorganization = post.getAdministrativeorganization();
}

15
src/main/java/com/dreamchaser/depository_manage/pojo/RoleAndDepository.java

@ -5,17 +5,27 @@ import lombok.Data;
@Data
public class RoleAndDepository {
/**
* 权限列表编号
*/
private Integer id;
/**
* 归属人/岗位编号
*/
private Integer userId;
/**
* 权限名称
*/
private String roleName;
/**
* 仓库编号
*/
private Integer depositoryId;
/**
* 仓库名称
@ -36,4 +46,9 @@ public class RoleAndDepository {
* 仓库状态
*/
private Integer depositoryState;
/**
* 权限类型1个人2岗位
*/
private Integer classes;
}

2
src/main/java/com/dreamchaser/depository_manage/pojo/UserByPortP.java

@ -75,6 +75,8 @@ public class UserByPortP {
private String depositoryName;
public UserByPortP(UserByPort userByPort) {
this.id = userByPort.getId();
this.number = userByPort.getNumber();

8
src/main/java/com/dreamchaser/depository_manage/security/pool/AuthenticationTokenPool.java

@ -9,14 +9,13 @@ import java.util.concurrent.ConcurrentHashMap;
/**
* 认证后的令牌连接池由于获取全局的session比较麻烦所以自己维护一个类似session的令牌池
* @author 金昊霖
*/
public class AuthenticationTokenPool {
/**
* 认证后的令牌连接池
*/
// private static Map<String, UserToken> pool=new ConcurrentHashMap<>(10);
private static Map<String, UserByPort> pool = new ConcurrentHashMap<>(10);
private static Map<String, UserByPort> pool = new ConcurrentHashMap<>(100);
public static void addToken(String token,UserByPort userToken){
pool.put(token, userToken);
@ -47,7 +46,7 @@ public class AuthenticationTokenPool {
return null;
}
}
/*public static UserToken getToken(String token){
/* public static UserToken getToken(String token){
UserToken userToken=pool.get(token);
//如果没有相应令牌则直接返回null
@ -63,8 +62,7 @@ public class AuthenticationTokenPool {
pool.remove(token);
return null;
}
}
*/
}*/
/**
* 根据凭证删除对应的令牌
* @param token 凭证

13
src/main/java/com/dreamchaser/depository_manage/service/DepositoryService.java

@ -133,4 +133,17 @@ public interface DepositoryService {
*/
List<Object> InitTreeMenus();
/**
* 根据部门构造树形选择框
* @param adminorg
* @return
*/
List<Object> InitTreeMenus(String adminorg);
/**
* 获取当前部门以及公共仓库
* @param adminorg
* @return
*/
List<Depository> findDepositoryByAdminorg(String adminorg);
}

19
src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java

@ -117,4 +117,23 @@ public interface MaterialService {
* @return
*/
Integer updateStateByParam(Map<String,Object> map);
/**
* 构造树形选择框
* @return
*/
List<Object> InitTreeMenus(String mname,String adminorg);
/**
* 构造树形选择框
* @return
*/
List<Object> InitTreeMenus(String mname);
/**
* 根据仓库查询物品
* @param dids
* @return
*/
List<Material> findMaterialByDepositorys(List<Integer> dids);
}

35
src/main/java/com/dreamchaser/depository_manage/service/RoleService.java

@ -28,7 +28,7 @@ public interface RoleService {
* @param userid
* @return
*/
RoleAndDepository findDepositoryAndRole(Integer userid);
List<RoleAndDepository> findDepositoryAndRole(Integer userid);
/**
* 修改用户或者岗位权限及管理的仓库
@ -52,6 +52,39 @@ public interface RoleService {
*/
List<Integer> findUserIdByDid(Integer did);
/**
* 根据条件获取权限
* @param map
* @return
*/
List<RoleAndDepository> findRoleAndDepositoryByCondition(Map<String,Object> map);
/**
* 根据id获取权限
* @param id
* @return
*/
RoleAndDepository findRoleAndDepositoryById(Integer id);
/**
* 修改权限列表
* @param map
* @return
*/
Integer UpdateRoleAndDepositoryById(Map<String,Object> map);
/**
* 根据id删除
* @param id
* @return
*/
Integer deleteRoleAndDepositoryById(Integer id);
/**
* 根据仓库编号查询权限记录
* @param did
* @return
*/
List<RoleAndDepository> findRoleAndDepositoryByDid(Integer did);
}

111
src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java

@ -1,6 +1,7 @@
package com.dreamchaser.depository_manage.service.impl;
import cn.hutool.core.util.IdUtil;
import cn.hutool.log.Log;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.controller.PageController;
@ -13,15 +14,19 @@ import com.dreamchaser.depository_manage.service.RoleService;
import com.dreamchaser.depository_manage.utils.DateUtil;
import com.dreamchaser.depository_manage.utils.HttpUtils;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import com.dreamchaser.depository_manage.utils.WordUtil;
import org.apache.http.protocol.HTTP;
import org.springframework.beans.Mergeable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import cn.hutool.core.lang.Snowflake;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
* @author Dreamchaser
@ -40,6 +45,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
private MaterialMapper materialMapper;
@Autowired
private RoleService roleService;
@Autowired
private RedisTemplate<String,String> redisTemplate;
/**
* 提交申请插入一条仓库调度记录
@ -69,21 +76,52 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
*/
@Override
public Integer applicationIn(Map<String, Object> map) {
Integer depositoryId =ObjectFormatUtil.toInteger(map.get("depositoryId"));
Depository depositoryRecordById = depositoryMapper.findDepositoryRecordById(depositoryId);
Map<String,Object> temp = new HashMap<>();
temp.put("dname",depositoryRecordById.getDname());
Double Inventory = depositoryMapper.getToDayInventoryByDName(temp);
String code = createCode(depositoryRecordById.getDname(),"InOrderNumber");
Double quantity = Double.parseDouble((String) map.get("quantity"));
Integer mid = ObjectFormatUtil.toInteger(map.get("mid"));
// 获取当前材料
Material material = materialMapper.findMaterialById(mid);
// 判断剩余容量是否可以存入
if(depositoryRecordById.getMaxNumber() - Inventory <quantity){
return 0;
}
Map<String,Object> param = new HashMap<>();
param.put("depositoryId",depositoryId);
param.put("mname",material.getMname());
List<Material> materialByCondition = materialMapper.findMaterialByCondition(param);
// 计算当前入库材料金额
int amounts = (int) ((material.getPrice() / 100) * quantity * 100);
map.put("price", amounts);
String simpleTime = DateUtil.getSimpleTime(new Date());
map.put("applicant_time",DateUtil.DateTimeToTimeStamp(simpleTime));
map.put("code",code);
// 获取当前材料
if(materialByCondition.size() > 0){ // 如果当前存在
material.setAmounts(material.getAmounts() + amounts);
material.setQuantity((int) (material.getQuantity() + quantity));
materialMapper.updateMaterial(material);
}else{
Map<String,Object> insert = new HashMap<>();
Material materialById = materialMapper.findMaterialById(mid);
insert.put("depositoryId",depositoryId);
insert.put("price",materialById.getPrice());
insert.put("mname",materialById.getMname());
insert.put("quantity",quantity);
insert.put("materialTypeId",materialById.getTypeId());
insert.put("code",materialById.getCode());
insert.put("unit",materialById.getUnit());
insert.put("version",materialById.getVersion());
insert.put("texture",materialById.getTexture());
insert.put("amounts",quantity * materialById.getPrice());
insert.put("depositoryCode",materialById.getDepositoryCode());
materialMapper.insertMaterial(insert);
}
return depositoryRecordMapper.insertApplicationInRecord(map);
}
/**
* 插入一条出库记录
* @param map
@ -103,6 +141,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
map.put("depositoryId",materialById.getDepositoryId());
map.put("state","待部门负责人审核");
map.put("istransfer",2);
Depository depositoryRecordById = depositoryMapper.findDepositoryRecordById(materialById.getDepositoryId());
String code = createCode(depositoryRecordById.getDname(),"outOrderNumber");
map.put("code",code);
return depositoryRecordMapper.insertApplicationOutRecord(map);
}
@ -179,6 +220,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
transferRecordMapper.addTransferRecord(map);
TransferRecord transferRecordByCondition = transferRecordMapper.findTransferRecordByCondition(map).get(0);
map.put("transferId",transferRecordByCondition.getId());
Depository depositoryRecordById = depositoryMapper.findDepositoryRecordById(material.getDepositoryId());
map.put("code",createCode(depositoryRecordById.getDname(),"outOrderNumber"));
//清除主键
return depositoryRecordMapper.insertApplicationOutRecord(map);
}
@ -200,9 +243,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
Integer departmentheadPass = (Integer) map.get("departmentheadPass");
if (departmentheadPass == 1) {
map.put("state", "待仓库管理员审核");
} else {
map.put("state", "部门负责人审核未通过");
}
String depositoryManager = "";
List<Integer> userIdByDidList = roleService.findUserIdByDid(record.getDepositoryId());
for (int i = 0; i < userIdByDidList.size(); i++) {
@ -210,6 +250,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
depositoryManager += userByPort.getId().toString() + ",";
}
map.put("depositoryManager",depositoryManager);
} else {
map.put("state", "部门负责人审核未通过");
}
}
else {
String simpleTime = DateUtil.getSimpleTime(new Date());
@ -233,7 +276,10 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
transferMaterial(map);
}
} else {
throw new MyException("库存不足于该出库请求");
map.put("state","未出库");
map.put("depositoryManagerMessage","当前仓位库存量不足");
depositoryRecordMapper.updateApplicationOutRecord(map);
return -1;
}
map.put("state", "已出库");
} else {
@ -570,17 +616,19 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
Double sum = 0.0;
if (state.isEmpty()) {
for (int i = 0; i < depositoryRecordAll.size(); i++) {
if (depositoryRecordAll.get(i).getType() == type) {
if (Integer.compare(depositoryRecordAll.get(i).getType(),type) == 0) {
sum += depositoryRecordAll.get(i).getQuantity();
}
}
} else {
for (int i = 0; i < depositoryRecordAll.size(); i++) {
if (depositoryRecordAll.get(i).getType() == type && state.equals(depositoryRecordAll.get(i).getState())) {
if (Integer.compare(depositoryRecordAll.get(i).getType(),type) == 0 && state.equals(depositoryRecordAll.get(i).getState())) {
sum += depositoryRecordAll.get(i).getQuantity();
}
}
}
BigDecimal bg = new BigDecimal(sum);
sum = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
return sum;
}
@ -596,17 +644,19 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
Double sum = 0.0;
if (state.isEmpty()) {
for (int i = 0; i < depositoryRecordAll.size(); i++) {
if (depositoryRecordAll.get(i).getType() == type) {
if (Integer.compare(depositoryRecordAll.get(i).getType(),type) == 0) {
sum += (depositoryRecordAll.get(i).getPrice() / 100);
}
}
} else {
for (int i = 0; i < depositoryRecordAll.size(); i++) {
if (depositoryRecordAll.get(i).getType() == type && state.equals(depositoryRecordAll.get(i).getState())) {
if (Integer.compare(depositoryRecordAll.get(i).getType(),type) == 0 && state.equals(depositoryRecordAll.get(i).getState())) {
sum += (depositoryRecordAll.get(i).getPrice() / 100);
}
}
}
BigDecimal bg = new BigDecimal(sum);
sum = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
return sum;
}
@ -619,9 +669,11 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
List<ApplicationInRecordP> applicationInRecordPAll = depositoryRecordMapper.findApplicationInRecordPAll();
Double sum = 0.0;
for (int i = 0; i < applicationInRecordPAll.size(); i++) {
int price = applicationInRecordPAll.get(i).getPrice();
sum += (double) price/100;
double price = applicationInRecordPAll.get(i).getPrice();
sum += price/100;
}
BigDecimal bg = new BigDecimal(sum);
sum = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
return sum;
}
@ -636,18 +688,20 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
Double sum = 0.0;
if (state.isEmpty()) {
for (int i = 0; i < applicationOutRecordPAll.size(); i++) {
Integer price = applicationOutRecordPAll.get(i).getPrice();
Double price = applicationOutRecordPAll.get(i).getPrice();
sum += (double)( price/ 100);
}
} else {
for (int i = 0; i < applicationOutRecordPAll.size(); i++) {
if ( state.equals(applicationOutRecordPAll.get(i).getState())) {
Integer price = applicationOutRecordPAll.get(i).getPrice();
Double price = applicationOutRecordPAll.get(i).getPrice();
sum += (double)( price/ 100);
}
}
}
BigDecimal bg = new BigDecimal(sum);
sum = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
return sum;
}
@ -869,8 +923,14 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return d;
}
/**
* 根据id获取对应用户
* @param id
* @return
*/
private UserByPort findUserByPortById(Integer id) {
String url = "http://172.20.2.87:39168/staff/archivescont";
// String url = "http://127.0.0.1:39168/staff/archivescont";
Map<String, Object> map = new HashMap<>();
map.put("id", id);
String jsonString = JSONObject.toJSONString(map);
@ -887,4 +947,27 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return userByPort;
}
/**
* 生成单号
* @param depositoryName
* @return
*/
private String createCode(String depositoryName,String key){
// 单号(公司简称+仓库简称+年月日+数字(位数设置>=9))
String code = "GK";
String nowTime = DateUtil.getNowTime();
depositoryName = WordUtil.getPinYinHeadChar(depositoryName);
String orderNumber = redisTemplate.opsForValue().get(key);
if(orderNumber == null){
redisTemplate.opsForValue().set(key,"1",DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS);
orderNumber = "1";
}
int newNumber = ObjectFormatUtil.toInteger(orderNumber) + 1;
redisTemplate.boundValueOps(key).set(String.valueOf(newNumber),DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS);
orderNumber = String.format("%09d", ObjectFormatUtil.toInteger(orderNumber));
code = code + depositoryName + nowTime + orderNumber;
return code;
}
}

151
src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java

@ -1,9 +1,16 @@
package com.dreamchaser.depository_manage.service.impl;
import cn.hutool.db.Page;
import com.dreamchaser.depository_manage.controller.PageController;
import com.dreamchaser.depository_manage.entity.Administration;
import com.dreamchaser.depository_manage.entity.Depository;
import com.dreamchaser.depository_manage.entity.MaterialType;
import com.dreamchaser.depository_manage.mapper.DepositoryMapper;
import com.dreamchaser.depository_manage.mapper.RoleMapper;
import com.dreamchaser.depository_manage.pojo.RoleAndDepository;
import com.dreamchaser.depository_manage.service.DepositoryService;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import com.dreamchaser.depository_manage.utils.WordUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -17,6 +24,9 @@ public class DepositoryServiceImpl implements DepositoryService {
@Autowired
DepositoryMapper depositoryMapper;
@Autowired
RoleMapper roleMapper;
/**
* 根据条件插入数据
* @param map 参数map
@ -24,9 +34,74 @@ public class DepositoryServiceImpl implements DepositoryService {
*/
@Override
public Integer insertDepository(Map<String, Object> map) {
if("".equals(map.get("parentId"))){
// 获取当前仓库拼音首字母
String dname = (String) map.get("dname");
String dnamePinYin = WordUtil.getPinYinHeadChar(dname);
String code = "";
if("".equals(map.get("depositoryId"))){ // 如果是顶级仓库
map.put("parentId",0);
Map<String,Object> temp = new HashMap<>();
temp.put("dname",dname);
temp.put("parentId",0);
// 当前名称是否有重复
List<Depository> condition = depositoryMapper.findDepositoryRecordPByCondition(temp);
// 公司编号
Integer cid = ObjectFormatUtil.toInteger(map.get("cid"));
String companyName = PageController.getCompany(cid).getName();
String adminorgName = "";
// 部门编号
if(!"".equals(map.get("adminorg"))){
Integer adminorg = ObjectFormatUtil.toInteger(map.get("adminorg"));
adminorgName = PageController.getCompany(adminorg).getName();
}
// 公司简称
companyName = WordUtil.getPinYinHeadChar(companyName);
// 部门简称
adminorgName = WordUtil.getPinYinHeadChar(adminorgName);
if(condition.size() > 0){
// 设置编码
if(adminorgName.isEmpty()){
code = "GK" + dnamePinYin +"-"+ String.format("%02d", condition.size() + 1);
}else {
code = "GK" + adminorgName.substring(0, 2) + dnamePinYin + "-" + String.format("%02d", condition.size() + 1);
}
}else{
// 设置编码
if(adminorgName.isEmpty()){
code = "GK" + dnamePinYin + "-01";
}else {
code = "GK" + adminorgName.substring(0,2) + dnamePinYin+"-01";
}
}
}else {
map.put("parentId",map.get("depositoryId"));
map.remove("depositoryId");
// 获取当前仓库父仓库
Integer parentId = ObjectFormatUtil.toInteger(map.get("parentId"));
Depository depositoryId = depositoryMapper.findDepositoryRecordById(parentId);
// 获取当前选择部门
String adminorgName = "";
// 部门编号
if(!"".equals(map.get("adminorg"))){
Integer adminorg = ObjectFormatUtil.toInteger(map.get("adminorg"));
adminorgName = PageController.getCompany(adminorg).getName();
adminorgName = WordUtil.getPinYinHeadChar(adminorgName).substring(0,2);
}
// 获取父仓库编码
String parentCode = depositoryId.getCode();
if(!parentCode.contains(adminorgName)){
StringBuffer sb = new StringBuffer(parentCode);
sb.insert(2,adminorgName);
parentCode = sb.toString();
}
// 获取当前仓库简称
Map<String,Object> param = new HashMap<>();
param.put("parentId",parentId);
// 获取父仓库所有子仓库
Integer sonDepositoryNum = depositoryMapper.findCountByCondition(param);
code = parentCode +String.format("%02d",sonDepositoryNum + 1);
}
map.put("code",code);
return depositoryMapper.insertDepository(map);
}
@ -37,7 +112,15 @@ public class DepositoryServiceImpl implements DepositoryService {
*/
@Override
public List<Depository> findDepositoryRecordPByCondition(Map<String,Object> map) {
return depositoryMapper.findDepositoryRecordPByCondition(map);
List<Depository> list = depositoryMapper.findDepositoryRecordPByCondition(map);
for (int i = 0; i < list.size(); i++) {
Depository depository = list.get(i);
if(!depository.getAdminorg().isEmpty()){
Administration company = PageController.getCompany(ObjectFormatUtil.toInteger(depository.getAdminorg()));
depository.setAdminorgName(company.getName());
}
}
return list;
}
/**
@ -57,6 +140,13 @@ public class DepositoryServiceImpl implements DepositoryService {
*/
@Override
public Integer deleteDepositoryRecordById(Integer id) {
// 删除权限记录
Map<String,Object> map = new HashMap<>();
map.put("depositoryId",id);
List<RoleAndDepository> roleAndDepositoryByDid = roleMapper.findRoleAndDepositoryByCondition(map);
for (int j = 0; j < roleAndDepositoryByDid.size(); j++) {
roleMapper.deleteRoleAndDepositoryById(roleAndDepositoryByDid.get(j).getId());
}
return depositoryMapper.deleteDepositoryRecordById(id);
}
@ -143,7 +233,9 @@ public class DepositoryServiceImpl implements DepositoryService {
List<Depository> depositoryAll = depositoryMapper.findDepositoryAll();
Map<String,Integer> map = new HashMap<>();
for (int i = 0; i < depositoryAll.size(); i++) {
map.put(depositoryAll.get(i).getDname(),depositoryAll.get(i).getId());
if(depositoryAll.get(i).getParentId() != 0) {
map.put(depositoryAll.get(i).getDname() + "," + depositoryAll.get(i).getCode(), depositoryAll.get(i).getId());
}
}
return map;
}
@ -155,7 +247,14 @@ public class DepositoryServiceImpl implements DepositoryService {
*/
@Override
public Double getToDayInventoryByDName(String dname) {
return depositoryMapper.getToDayInventoryByDName(dname);
String[] split = dname.split(",");
Map<String,Object> map = new HashMap<>();
if(split.length > 1){
map.put("dcode",split[1]);
}else {
map.put("dname", split[0]);
}
return depositoryMapper.getToDayInventoryByDName(map);
}
@ -194,13 +293,45 @@ public class DepositoryServiceImpl implements DepositoryService {
List<Object> list = new ArrayList<>();
for (int i = 0; i < depositories.size(); i++) {
Depository d = depositories.get(i);
List<Object> childForMaterialTypeByParent = findChildForDepositoryByParent(d.getId());
List<Object> childForMaterialTypeByParent = findChildForDepositoryByParent(d.getId(),"");
Map<String, Object> stringObjectMap = InitTreeMenus2(d,childForMaterialTypeByParent);
list.add(stringObjectMap);
}
return list;
}
/**
* 根据部门构造树形选择框
* @param adminorg
* @return
*/
@Override
public List<Object> InitTreeMenus(String adminorg) {
Map<String,Object> param = new HashMap<>();
param.put("parentId",0);
param.put("adminorg",adminorg);
List<Depository> depositories = depositoryMapper.findDepositoryRecordPByCondition(param);
List<Object> list = new ArrayList<>();
for (int i = 0; i < depositories.size(); i++) {
Depository d = depositories.get(i);
List<Object> childForMaterialTypeByParent = findChildForDepositoryByParent(d.getId(),adminorg);
Map<String, Object> stringObjectMap = InitTreeMenus2(d,childForMaterialTypeByParent);
list.add(stringObjectMap);
}
return list;
}
/**
* 获取当前部门以及公共仓库
* @param adminorg
* @return
*/
@Override
public List<Depository> findDepositoryByAdminorg(String adminorg) {
List<Depository> depositoryByAdminorg = depositoryMapper.findDepositoryByAdminorg(adminorg);
return depositoryByAdminorg;
}
//判断是否有子类
public boolean isChildForDepository(Integer parentId){
boolean flag = false;
@ -211,16 +342,20 @@ public class DepositoryServiceImpl implements DepositoryService {
return flag;
}
// 根据id获取子类
public List<Object> findChildForDepositoryByParent(Integer id){
public List<Object> findChildForDepositoryByParent(Integer id,String adminorg){
Map<String,Object> param = new HashMap<>();
List<Object> result = new ArrayList<>();
param.put("parentId",id);
if(!"".equals(adminorg)){
param.put("adminorg",adminorg);
}
// 获取当前父类的子类
List<Depository> parentByDepository = depositoryMapper.getParentByDepository(id);
// List<Depository> parentByDepository = depositoryMapper.getParentByDepository(id);
List<Depository> parentByDepository = depositoryMapper.findDepositoryRecordPByCondition(param);
if(parentByDepository.size() > 0){
for (int i = 0; i < parentByDepository.size(); i++) {
Depository d = parentByDepository.get(i);
List<Object> childForMaterialTypeByParent = findChildForDepositoryByParent(d.getId());
List<Object> childForMaterialTypeByParent = findChildForDepositoryByParent(d.getId(),adminorg);
result.add(InitTreeMenus2(d,childForMaterialTypeByParent));
}
return result;

4
src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java

@ -53,8 +53,8 @@ public class ExcelServiceImpl implements ExcelService {
List<ExcelInfo> excelVos = (List<ExcelInfo>) readResult.get("dataList");
List<String> errMsg =(List<String>) readResult.get("errMsg");
if (CollectionUtil.isEmpty(excelVos) || excelVos.size() < 2) {
boolean empty = CollectionUtil.isEmpty(excelVos);
if ((CollectionUtil.isEmpty(excelVos) && errMsg.size() < 1) || (excelVos.size() < 2 && errMsg.size() < 1) ) {
log.error("【导入Excel文件】上传Excel文件{}为空", file.getOriginalFilename());
return ResultVoUtil.error("上传Excel文件为空");
}

164
src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java

@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -45,15 +46,6 @@ public class MaterialServiceImpl implements MaterialService {
public Integer insertMaterial(Map<String, Object> map) {
int quantity = (int) Math.round(Double.parseDouble(map.get("quantity").toString()));
int price = (int) (Double.parseDouble( map.get("price").toString()) * 100);
String tname = (String) map.get("tname");
String dname = (String) map.get("dname");
Map<String,Object> param = new HashMap<>();
param.put("tname",tname);
param.put("dname",dname);
List<Depository> d = depositoryMapper.findDepositoryRecordPByCondition(param);
List<MaterialType> mt = materialTypeMapper.findMaterialTypeByCondition(param);
map.put("materialTypeId",mt.get(0).getId());
map.put("depositoryId",d.get(0).getId());
map.put("price",price);
map.put("amounts",quantity * price);
return materialMapper.insertMaterial(map);
@ -83,6 +75,8 @@ public class MaterialServiceImpl implements MaterialService {
map.put("amounts",price * quantity);
map.put("price",price);
}
Object materialTypeId = map.get("materialTypeId");
map.put("typeId",materialTypeId);
return materialMapper.updateMaterial(map);
}
@ -116,6 +110,10 @@ public class MaterialServiceImpl implements MaterialService {
for (int i = 0; i < list.size(); i++) {
list.get(i).setPrice(list.get(i).getPrice() / 100);
list.get(i).setAmounts(list.get(i).getAmounts() / 100);
// 获取当前材料所处仓库
Depository depositoryRecordById = depositoryMapper.findDepositoryRecordById(list.get(i).getDepositoryId());
String code = depositoryRecordById.getCode() + "-" +list.get(i).getDepositoryCode();
list.get(i).setDepositoryCode(code);
}
return pack(list);
}
@ -223,6 +221,8 @@ public class MaterialServiceImpl implements MaterialService {
for (int i = 0; i < materialAll.size(); i++) {
sum += materialAll.get(i).getAmounts() / 100;
}
BigDecimal bg = new BigDecimal(sum);
sum = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
return sum;
}
@ -256,6 +256,7 @@ public class MaterialServiceImpl implements MaterialService {
private UserByPort findUserByPortById(Integer id) {
String url = "http://172.20.2.87:39168/staff/archivescont";
// String url = "http://127.0.0.1:39168/staff/archivescont";
Map<String, Object> map = new HashMap<>();
map.put("id", id);
String jsonString = JSONObject.toJSONString(map);
@ -271,4 +272,149 @@ public class MaterialServiceImpl implements MaterialService {
UserByPort userByPort = JSONObject.toJavaObject( data, UserByPort.class);
return userByPort;
}
/**
* 根据仓库查询物品
* @param dids
* @return
*/
@Override
public List<Material> findMaterialByDepositorys(List<Integer> dids) {
return materialMapper.findMaterialByDepositorys(dids);
}
/**
* 构造树形选择框
* @return
*/
public List<Object> InitTreeMenus(String mname,String adminorg) {
List<MaterialType> materialTypeNoParent = materialTypeMapper.findMaterialTypeNoParent();
List<Object> list = new ArrayList<>();
for (int i = 0; i < materialTypeNoParent.size(); i++) {
MaterialType mt = materialTypeNoParent.get(i);
List<Object> childForMaterialTypeByParent = findChildForMaterialTypeByParent(mt.getId(),mname,adminorg);
Map<String, Object> stringObjectMap = InitTreeMenus(mt,childForMaterialTypeByParent);
list.add(stringObjectMap);
}
return list;
}
/**
* 构造树形选择框
* @return
*/
public List<Object> InitTreeMenus(String mname){
List<MaterialType> materialTypeNoParent = materialTypeMapper.findMaterialTypeNoParent();
List<Object> list = new ArrayList<>();
for (int i = 0; i < materialTypeNoParent.size(); i++) {
MaterialType mt = materialTypeNoParent.get(i);
List<Object> childForMaterialTypeByParent = findChildForMaterialTypeByParent(mt.getId(),mname,"");
Map<String, Object> stringObjectMap = InitTreeMenus(mt,childForMaterialTypeByParent);
list.add(stringObjectMap);
}
return list;
}
// 构造树形组件数据模板
public Map<String,Object> InitTreeMenus(MaterialType mt,List<Object> children){
if(mt != null) {
Map<String, Object> map = new HashMap<>();
map.put("title", mt.getTname());
map.put("id", mt.getId());
map.put("children",children);
return map;
}
else{
return null;
}
}
// 在类别后添加材料名称
public List<Object> AddMaterialByType(MaterialType mt,String mname,String adminorg){
if(mt != null) {
Map<String, Object> param = new HashMap<>();
param.put("materialTypeId", mt.getId());
List<Depository> depositoryByAdminorg = depositoryMapper.findDepositoryByAdminorg(adminorg);
List<Integer> dids = new ArrayList<>();
for (Depository depository : depositoryByAdminorg) {
dids.add(depository.getId());
}
List<Material> materialPByCondition = new ArrayList<>();
List<Material> materialByDepositorys = materialMapper.findMaterialByDepositorys(dids);
for (int i = 0; i < materialByDepositorys.size(); i++) {
if (Integer.compare(materialByDepositorys.get(i).getTypeId(), mt.getId()) == 0){
materialPByCondition.add(materialByDepositorys.get(i));
}
}
List<Object> result = new ArrayList<>();
if("".equals(mname)) {
for (Material material : materialPByCondition) {
Map<String, Object> map = new HashMap<>();
String version = material.getVersion();
if(version == null){
version = "";
}
map.put("title", material.getMname() + " 规格型号: "+version);
map.put("id", material.getId());
result.add(map);
}
}else{
for (Material material : materialPByCondition) {
Map<String, Object> map = new HashMap<>();
if(material.getMname().contains(mname)) {
String version = material.getVersion();
if(version == null){
version = "";
}
map.put("title", material.getMname() + " 规格型号: "+version);
map.put("id", material.getId());
result.add(map);
}
}
}
return result;
}
else {
return null;
}
}
// 判断是否有子类
public boolean isChildForMaterialType(Integer id){
boolean flag = false;
Map<String,Object> param = new HashMap<>();
param.put("parentId",id);
Integer count = materialTypeMapper.findMaterialTypeCountByCondition(param);
if(count > 0){
flag = true;
}
return flag;
}
// 根据id获取子类
public List<Object> findChildForMaterialTypeByParent(Integer id,String mname,String adminorg){
Map<String,Object> param = new HashMap<>();
List<Object> result = new ArrayList<>();
Map<String,Object> children = new HashMap<>();
param.put("parentId",id);
// 获取当前父类的子类
List<MaterialType> materialTypeByCondition = materialTypeMapper.findMaterialTypeByCondition(param);
if(materialTypeByCondition.size() > 0){
for (MaterialType mt : materialTypeByCondition) {
List<Object> childForMaterialTypeByParent = findChildForMaterialTypeByParent(mt.getId(),mname,adminorg);
Map<String, Object> stringObjectMap = null;
if(childForMaterialTypeByParent == null) {
List<Object> list = AddMaterialByType(mt,mname,adminorg);
stringObjectMap = InitTreeMenus(mt, list);
}else{
stringObjectMap = InitTreeMenus(mt, childForMaterialTypeByParent);
}
result.add(stringObjectMap);
}
return result;
}else{
return null;
}
}
}

11
src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialTypeServiceImpl.java

@ -26,8 +26,11 @@ public class MaterialTypeServiceImpl implements MaterialTypeService {
*/
@Override
public Integer insertMaterialType(Map<String,Object> map) {
if("".equals(map.get("parentId"))){
if("".equals(map.get("materialTypeId"))){
map.put("parentId",0);
}else{
map.put("parentId",map.get("materialTypeId"));
map.remove("materialTypeId");
}
return materialTypeMapper.insertMaterialType(map);
}
@ -98,6 +101,12 @@ public class MaterialTypeServiceImpl implements MaterialTypeService {
*/
@Override
public Integer updateMaterialType(Map<String, Object> map) {
if(map.containsKey("parentId")) {
String parentId = (String) map.get("parentId");
if (parentId.isEmpty()) {
map.put("parentId", 0);
}
}
return materialTypeMapper.updateMaterialType(map);
}

209
src/main/java/com/dreamchaser/depository_manage/service/impl/RedisServiceImpl.java

@ -1,11 +1,220 @@
package com.dreamchaser.depository_manage.service.impl;
import com.alibaba.excel.util.StringUtils;
import com.dreamchaser.depository_manage.service.RedisService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.TimeUnit;
/**
* 操作redis
* @author shy
* @date 2020/12/10 10:01
*/
@Service
public class RedisServiceImpl implements RedisService {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisTemplate<String,String> redisTemplate;
/**
* 判断String类型key是否存在
*
* @param key
* @return
* @author shy
* @date 2018年11月13日 下午1:40:37
*/
public boolean hasStringKey(String key) {
if (StringUtils.isBlank(key)) {
throw new RuntimeException();
}
return stringRedisTemplate.opsForValue().getOperations().hasKey(key);
}
/**
* 判断String类型key是否存在
*
* @param key
* @return
* @author shy
* @date 2018年11月13日 下午1:43:51
*/
public boolean nonStringKey(String key) {
return !hasStringKey(key);
}
/**
* 设置String类型keyString类型value过期时间timeoutTimeUnit
*
* @param key
* @param value
* @param timeout
* @param timeUnit
* @author shy
* @date 2018年12月10日13:53:38
*/
public void setStringKey(String key, String value, Long timeout, TimeUnit timeUnit) {
if (StringUtils.isBlank(key) || Objects.isNull(timeout)) {
throw new RuntimeException();
}
stringRedisTemplate.opsForValue().set(key, value, timeout, timeUnit);
}
public void setStringKey(String key, String value) {
if (StringUtils.isBlank(key)) {
throw new RuntimeException();
}
stringRedisTemplate.opsForValue().set(key, value);
}
/**
* 获取String类型value
*
* @param key
* @return
* @author shy
* @date 2018年11月12日 下午7:09:31
*/
public String getStringValue(String key) {
if (StringUtils.isBlank(key)) {
throw new RuntimeException();
}
return stringRedisTemplate.opsForValue().get(key);
}
/**
* 获取Key的过期时间
*
* @param key
* @return
* @author shy
* @date 2019年4月25日17:28:36
*/
public Long getExpire(String key) {
if (StringUtils.isBlank(key)) {
throw new RuntimeException();
}
return stringRedisTemplate.getExpire(key);
}
/**
* 设置Key的过期时间
*
* @param key
* @return
* @author shy
* @date 2019年4月25日17:28:36
*/
public Boolean setExpire(String key,Long timeout, TimeUnit timeUnit) {
if (StringUtils.isBlank(key)) {
throw new RuntimeException();
}
return stringRedisTemplate.expire(key, timeout, timeUnit);
}
/**
* value自增+n
* @param key
* @return
* @author shy
* @date 2019年4月8日15:54:30
*/
public Long setIncrementValue(String key) {
if (StringUtils.isBlank(key)) {
throw new RuntimeException();
}
return stringRedisTemplate.opsForValue().increment(key, 1L);
}
/**
* 设置String类型keyObject类型value过期时间timeout
*
* @param key
* @param value
* @param timeout
* @author shy
* @date 2018年12月10日13:54:07
*/
public void setObjectKey(String key, String value, Long timeout,TimeUnit time) {
if (StringUtils.isBlank(key) || Objects.isNull(timeout)) {
throw new RuntimeException();
}
redisTemplate.opsForValue().set(key, value, timeout, time);
}
public void setObjectKey(String key, String value) {
if (StringUtils.isBlank(key)) {
throw new RuntimeException();
}
redisTemplate.opsForValue().set(key, value);
}
/**
* 获取Object类型value
*
* @param key
* @param clazz
* @return
* @author shy
* @date 2019年11月6日10:01:30
*/
@SuppressWarnings("unchecked")
public <T> T getObjectValue(String key, Class<T> clazz) {
if (StringUtils.isBlank(key)) {
return null;
}
return (T) redisTemplate.opsForValue().get(key);
}
/**
* 移除单个String类型key
*
* @param key
* @author shy
* @date 2018年11月13日 上午10:42:01
*/
public void removeSingleStringKey(String key) {
if (StringUtils.isBlank(key)) {
throw new RuntimeException();
}
stringRedisTemplate.opsForValue().getOperations().delete(key);
}
/**
* 移除Collection<String>类型keys
*
* @param keys
* @author shy
* @date 2018年11月13日 下午3:15:16
*/
public void removeMultiStringKey(Collection<String> keys) {
if (CollectionUtils.isNotEmpty(keys)) {
stringRedisTemplate.opsForValue().getOperations().delete(keys);
}
}
/**
* redis key 模糊查询
* @author shy
* @date 2021年1月4日 上午11:21:45
* @param key
* @return
*/
public Set<String> queryStringKeys(String key) {
return redisTemplate.keys(key + "*");
}
}

55
src/main/java/com/dreamchaser/depository_manage/service/impl/RoleServiceImpl.java

@ -8,6 +8,7 @@ import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -33,6 +34,7 @@ public class RoleServiceImpl implements RoleService {
*/
@Override
public Integer addUserOrPostRoleAndDepository(Map<String, Object> map){
map.put("authority",0);
return roleMapper.addUserOrPostRoleAndDepository(map);
}
/**
@ -41,7 +43,7 @@ public class RoleServiceImpl implements RoleService {
* @return
*/
@Override
public RoleAndDepository findDepositoryAndRole(Integer userid) {
public List<RoleAndDepository> findDepositoryAndRole(Integer userid) {
return roleMapper.findDepositoryAndRole(userid);
}
/**
@ -68,4 +70,55 @@ public class RoleServiceImpl implements RoleService {
public List<Integer> findUserIdByDid(Integer did) {
return roleMapper.findUserIdByDid(did);
}
/**
* 根据条件获取权限
* @param map
* @return
*/
@Override
public List<RoleAndDepository> findRoleAndDepositoryByCondition(Map<String, Object> map) {
return roleMapper.findRoleAndDepositoryByCondition(map);
}
/**
* 根据id获取权限
* @param id
* @return
*/
@Override
public RoleAndDepository findRoleAndDepositoryById(Integer id) {
return roleMapper.findRoleAndDepositoryById(id);
}
/**
* 修改权限列表
* @param map
* @return
*/
@Override
public Integer UpdateRoleAndDepositoryById(Map<String, Object> map) {
return roleMapper.UpdateRoleAndDepositoryById(map);
}
/**
* 根据id删除
* @param id
* @return
*/
@Override
public Integer deleteRoleAndDepositoryById(Integer id) {
return roleMapper.deleteRoleAndDepositoryById(id);
}
/**
* 根据仓库编号查询权限记录
* @param did
* @return
*/
@Override
public List<RoleAndDepository> findRoleAndDepositoryByDid(Integer did) {
Map<String,Object> map = new HashMap<>();
map.put("depositoryId",did);
return roleMapper.findRoleAndDepositoryByCondition(map);
}
}

8
src/main/java/com/dreamchaser/depository_manage/utils/CrudUtil.java

@ -19,6 +19,7 @@ public class CrudUtil {
public static final RestResponse NOT_EXIST_USER_OR_ERROR_PWD_RESPONSE =new RestResponse("",402,new StatusInfo("登录失败,账号或者密码错误!","错误码402,账号或者密码错误"));
public static final RestResponse USER_FROZEN_RESPONSE=new RestResponse("",406,new StatusInfo("账户已冻结,请稍后登录!","错误码406,账户已冻结,请稍后登录!"));
public static final RestResponse CODE_ERROR=new RestResponse("",408,new StatusInfo("验证码错误!","错误码408,验证码错误请重新输入!"));
public static final RestResponse Insert_ERR=new RestResponse("",6666,new StatusInfo("添加失败,该数据已经存在请不要重复插入","请重新输入!"));
public static final RestResponse SYSTEM_ERROR_RESPONSE =new RestResponse("",500,new StatusInfo("服务器系统错误!bug常有,请多多包含,请及时联系相关管理员,我们会尽快修复!","服务器错误!"));
@ -29,9 +30,12 @@ public class CrudUtil {
* @return 处理后的RestResponse
*/
public static RestResponse postHandle(Integer result,Integer standard){
if (result.equals(standard)){
if (result.equals(standard) && result != -1){
return RESPONSE201;
}else{
}else if(result == -1 && standard == -1){
return Insert_ERR;
}
else{
return RESPONSE304;
}
}

17
src/main/java/com/dreamchaser/depository_manage/utils/DateUtil.java

@ -11,7 +11,6 @@ import java.util.Date;
/**
* 用于处理时间类型的工具类
* @author 金昊霖
*/
public class DateUtil {
private static final SimpleDateFormat TIME_FORMAT =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@ -115,4 +114,20 @@ public class DateUtil {
String dataStr = sdf.format(cal.getTime());
return dataStr + " 00:00:00";
}
/**
* 判断当前时间距离第二天凌晨的秒数
*
* @return 返回值单位为[s:]
*/
public static Long getSecondsNextEarlyMorning() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.MILLISECOND, 0);
return (cal.getTimeInMillis() - System.currentTimeMillis()) / 1000;
}
}

23
src/main/resources/application-test.yml

@ -55,17 +55,6 @@ spring:
removeAbandoned: true
removeAbandonedTimeout: 1800
logAbandoned: true
redis:
host: 127.0.0.1
port: 6379
lettuce:
shutdown-timeout: 1000
pool:
max-active: 0
max-wait: -1
max-idle: 8
min-idle: 0
timeout: 500
banner:
location: banner.txt
thymeleaf:
@ -79,6 +68,18 @@ spring:
prefix: /templates/
suffix: .html
static-path-pattern: /static/**
redis:
port: 6379
host: 127.0.0.1
database: 0
jedis:
pool:
max-active: 8
max-wait: 50ms
max-idle: 8
min-idle: 0
timeout: 2000ms
# resources:
# static-locations: classpath:/static/
server:

15
src/main/resources/templates/index.html

@ -167,9 +167,22 @@
});
$('.login-out').on("click", function () {
layer.msg('退出登录成功', function () {
$.ajax({
url:"/loginOut",
type: 'get',
dataType: 'json',
contentType: "application/json;charset=utf-8",
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (data) {
layer.close(this.layerIndex);
layer.msg(data.statusInfo.message, function () {
window.location = '/login';
});
}
});
});
});
</script>

158
src/main/resources/templates/pages/application/application-in.html

@ -16,37 +16,51 @@
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-body" style="padding-top: 40px;">
<!-- 入库申请提交-->
<div class="layui-carousel" id="stepForm" lay-filter="stepForm" style="margin: 0 auto;">
<div carousel-item>
<div>
<form class="layui-form" style="margin: 0 auto;max-width: 460px;padding-top: 40px;">
<div class="layui-form-item">
<label class="layui-form-label">材料名称:</label>
<div class="layui-input-inline">
<input type="text" placeholder="请选择材料" class="layui-input"
id="openSonByMaterial"
lay-verify="required"/>
<input type="text" name="mid" class="layui-input" id="mid"
style="display: none" lay-verify="required" />
</div>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial"></i>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材料编码:</label>
<div class="layui-input-block">
<!-- <input name="mname" type="text" placeholder="请填写材料名称" class="layui-input" lay-verify="required" />-->
<select name="mid" lay-verify="required">
<option th:each="Material,iterStar:${materials}" th:value="${Material?.getId()}" th:text="${Material?.getMname()}" selected>天玑1000</option>
</select>
<input id="code" name="code" type="text" placeholder="请填写入材料编码" value=""
class="layui-input" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材料数量:</label>
<div class="layui-input-block">
<input name="quantity" type="number" placeholder="请填写入材料数量" value="" class="layui-input" lay-verify="number" required>
<input name="quantity" type="number" placeholder="请填写入材料数量" value=""
class="layui-input" lay-verify="number">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">仓库:</label>
<div class="layui-input-block">
<select name="depositoryId" lay-verify="required">
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}" selected>外芯仓库</option>
</select>
<input type="text" placeholder="请选择仓库" class="layui-input"
id="openSonByDepository" readonly
lay-verify="required"/>
<input type="text" name="depositoryId" class="layui-input" id="depositoryId"
style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">备注说明:</label>
<div class="layui-input-block">
<textarea name="applyRemark" placeholder="请填写相关原因及申请原因" value="" class="layui-textarea"></textarea>
<textarea name="applyRemark" placeholder="请填写相关原因及申请原因" value=""
class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
@ -85,11 +99,109 @@
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script src="/static/js/lay-config.js?v=1.0.4" charset="utf-8"></script>
<script>
layui.use([ 'form', 'step'], function () {
layui.use(['form', 'step'], function () {
var $ = layui.$,
form = layui.form,
step = layui.step;
$("#code").blur(function () {
var code = $(this).val();
$.ajax({
url: "/material/findMatrialByCode?code=" + code,
type: "get",
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var d = d.data;
if(d == null){
layer.msg("没有该编码,请确认是否输入正确");
$("#openSonByMaterial").val("");
$("#mid").val("");
$("#code").val("");
}else{
$("#openSonByMaterial").val(d.mname);
$("#mid").val(d.id);
}
}
});
});
$("#openSonByMaterial").blur(function () {
var data = $(this).val();
var req = {};
req.mname = data;
$.ajax({
url: "/material/findMaterialByCondition",
type: "post",
dataType: 'json',
data:JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
if(d.count > 1){
layer.msg("请点击右侧搜索确定物品");
$("#mid").val("");
$("#code").val("");
return false;
}else if(d.count === 0){
layer.msg("没有该物品,请确认输入是否正确");
$("#mid").val("");
$("#code").val("");
$("#openSonByMaterial").val("");
return false;
}
else{
var material = d.data[0];
$("#openSonByMaterial").val(material.mname)
$("#mid").val(material.id);
$("#code").val(material.code);
}
}
});
})
$('#openSonByDepository').on('click', function () {
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
content: '/selectDepository?type=1',
});
});
$('#selectMaterial').on('click', function () {
var mname = $("#openSonByMaterial").val();
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
content: '/selectMaterial?mname='+mname+'&type=1',
end: function () {
var mid = $("#mid").val();
$.ajax({
url: "/material/findMatrialById?mid=" + mid,
type: "get",
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var code = d.data.code
$("#code").val(code)
}
});
}
});
});
step.render({
elem: '#stepForm',
filter: 'stepForm',
@ -105,27 +217,27 @@
form.on('submit(formStep)', function (data) {
data=data.field;
data.type=1;
data = data.field;
data.type = 1;
$.ajax({
url:"/depositoryRecord/applicationIn",
type:'post',
dataType:'json',
url: "/depositoryRecord/applicationIn",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data:JSON.stringify(data),
beforeSend:function () {
this.layerIndex = layer.load(0, { shade: [0.5, '#393D49'] });
data: JSON.stringify(data),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success:function(data){
success: function (data) {
layer.close(this.layerIndex);
if(data.status >= 300){
layer.msg(data.statusInfo.message);//失败的表情
if (data.status >= 300) {
layer.msg(data.statusInfo.detail);//失败的表情
return;
}else{
} else {
layer.msg("申请提交成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
}, function(){
}, function () {
step.next('#stepForm');
});
}

185
src/main/resources/templates/pages/application/application-in_back.html

@ -16,52 +16,57 @@
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-body" style="padding-top: 40px;">
<!-- 入库申请提交-->
<div class="layui-carousel" id="stepForm" lay-filter="stepForm" style="margin: 0 auto;">
<div carousel-item>
<div>
<form class="layui-form" style="margin: 0 auto;max-width: 460px;padding-top: 40px;">
<div class="layui-form-item">
<label class="layui-form-label">材料名称:</label>
<div class="layui-input-block">
<!-- <input name="mname" type="text" placeholder="请填写材料名称" class="layui-input" lay-verify="required" />-->
<select name="mname" lay-verify="required">
<option th:each="Material,iterStar:${materials}" th:value="${Material?.getMname()}" th:text="${Material?.getMname()}" selected>天玑1000</option>
</select>
<div class="layui-input-inline">
<input type="text" th:value="${materialById.getMname()}" placeholder="请选择材料" class="layui-input"
id="openSonByMaterial"
lay-verify="required"/>
<input type="text" th:value="${materialById.getId()}" name="mid" class="layui-input" id="mid"
style="display: none" lay-verify="required" />
</div>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial"></i>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材料数量:</label>
<label class="layui-form-label">材料编码:</label>
<div class="layui-input-block">
<input name="quantity" type="number" placeholder="请填写入材料数量" value="" class="layui-input" lay-verify="number" required>
<input id="code" name="code" th:value="${materialById.getCode()}" type="text" placeholder="请填写入材料编码" value=""
class="layui-input" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">仓库:</label>
<label class="layui-form-label">材料数量:</label>
<div class="layui-input-block">
<select name="depositoryId" lay-verify="required">
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}" selected>外芯仓库</option>
</select>
<input name="quantity" type="number" placeholder="请填写入材料数量" value=""
class="layui-input" lay-verify="number">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">审核人:</label>
<label class="layui-form-label">仓库:</label>
<div class="layui-input-block">
<select name="reviewerId" lay-verify="required">
<option th:each="reviewer,iterStat:${reviewers}" th:value="${reviewer?.getId()}" th:text="${reviewer?.getUname()}" selected>张三</option>
</select>
<input type="text" placeholder="请选择仓库" class="layui-input" th:value="${depository.getDname()}"
id="openSonByDepository" readonly
lay-verify="required"/>
<input type="text" name="depositoryId" class="layui-input" id="depositoryId" th:value="${depository.getId()}"
style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">备注说明:</label>
<div class="layui-input-block">
<textarea name="applyRemark" placeholder="请填写相关原因及申请原因" value="" class="layui-textarea"></textarea>
<textarea name="applyRemark" placeholder="请填写相关原因及申请原因" value=""
class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formStep">
&emsp;提交申请&emsp;
&emsp;提交&emsp;
</button>
</div>
</div>
@ -73,23 +78,19 @@
<i class="layui-icon layui-circle"
style="color: white;font-size:30px;font-weight:bold;background: #52C41A;padding: 20px;line-height: 80px;">&#xe605;</i>
<div style="font-size: 24px;color: #333;font-weight: 500;margin-top: 30px;">
提交申请成功
</div>
<div style="font-size: 14px;color: #666;margin-top: 20px;">预计审核时间为1天</div>
提交成功
</div>
<div style="text-align: center;margin-top: 50px;">
<button class="layui-btn next">再申请一次</button>
<button class="layui-btn next">再填写一次</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<hr>
<div style="color: #666;margin-top: 30px;margin-bottom: 40px;padding-left: 30px;">
<h3>说明</h3><br>
申请提交后,24小时内审核完毕
</div>
</div>
</div>
@ -98,11 +99,109 @@
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script src="/static/js/lay-config.js?v=1.0.4" charset="utf-8"></script>
<script>
layui.use([ 'form', 'step'], function () {
layui.use(['form', 'step'], function () {
var $ = layui.$,
form = layui.form,
step = layui.step;
$("#code").blur(function () {
var code = $(this).val();
$.ajax({
url: "/material/findMatrialByCode?code=" + code,
type: "get",
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var d = d.data;
if(d == null){
layer.msg("没有该编码,请确认是否输入正确");
$("#openSonByMaterial").val("");
$("#mid").val("");
$("#code").val("");
}else{
$("#openSonByMaterial").val(d.mname);
$("#mid").val(d.id);
}
}
});
});
$("#openSonByMaterial").blur(function () {
var data = $(this).val();
var req = {};
req.mname = data;
$.ajax({
url: "/material/findMaterialByCondition",
type: "post",
dataType: 'json',
data:JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
if(d.count > 1){
layer.msg("请点击右侧搜索确定物品");
$("#mid").val("");
$("#code").val("");
return false;
}else if(d.count === 0){
layer.msg("没有该物品,请确认输入是否正确");
$("#mid").val("");
$("#code").val("");
$("#openSonByMaterial").val("");
return false;
}
else{
var material = d.data[0];
$("#openSonByMaterial").val(material.mname)
$("#mid").val(material.id);
$("#code").val(material.code);
}
}
});
})
$('#openSonByDepository').on('click', function () {
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
content: '/selectDepository?type=1',
});
});
$('#selectMaterial').on('click', function () {
var mname = $("#openSonByMaterial").val();
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
content: '/selectMaterial?mname='+mname+'&type=1',
end: function () {
var mid = $("#mid").val();
$.ajax({
url: "/material/findMatrialById?mid=" + mid,
type: "get",
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var code = d.data.code
$("#code").val(code)
}
});
}
});
});
step.render({
elem: '#stepForm',
filter: 'stepForm',
@ -110,37 +209,35 @@
stepWidth: '750px',
height: '600px',
stepItems: [{
title: '填写申请信息'
title: '填写信息'
}, {
title: '审核中'
}, {
title: '等待入库'
title: '提交成功'
}]
});
form.on('submit(formStep)', function (data) {
data=data.field;
data.type=1;
data = data.field;
data.type = 1;
$.ajax({
url:"/depositoryRecord/depositoryRecord",
type:'post',
dataType:'json',
url: "/depositoryRecord/applicationIn",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data:JSON.stringify(data),
beforeSend:function () {
this.layerIndex = layer.load(0, { shade: [0.5, '#393D49'] });
data: JSON.stringify(data),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success:function(data){
success: function (data) {
layer.close(this.layerIndex);
if(data.status >= 300){
layer.msg(data.statusInfo.message);//失败的表情
if (data.status >= 300) {
layer.msg(data.statusInfo.detail);//失败的表情
return;
}else{
} else {
layer.msg("申请提交成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
}, function(){
}, function () {
step.next('#stepForm');
});
}

111
src/main/resources/templates/pages/application/application-out.html

@ -22,12 +22,20 @@
<form class="layui-form" style="margin: 0 auto;max-width: 460px;padding-top: 40px;">
<div class="layui-form-item">
<label class="layui-form-label">材料名称:</label>
<div class="layui-input-inline">
<input type="text" placeholder="请选择材料" class="layui-input"
id="openSonByMaterial"
lay-verify="required"/>
<input type="text" name="mid" class="layui-input" id="mid"
style="display: none" lay-verify="required" />
</div>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial"></i>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材料编码:</label>
<div class="layui-input-block">
<!-- <input name="mname" type="text" placeholder="请填写材料名称" class="layui-input" lay-verify="required" />-->
<select name="mid" id="mid" lay-verify="required" lay-filter="mid">
<option value="" selected>请选择材料</option>
<option th:each="Material,iterStar:${materials}" th:value="${Material?.getId()}" th:text="${Material?.getMname()}">天玑1000</option>
</select>
<input id="code" name="code" type="text" placeholder="请填写入材料编码" value=""
class="layui-input" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
@ -86,6 +94,99 @@
var $ = layui.$,
form = layui.form,
step = layui.step;
$("#code").blur(function () {
var code = $(this).val();
$.ajax({
url: "/material/findMatrialByCode?code=" + code,
type: "get",
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var d = d.data;
if(d == null){
layer.msg("没有该编码,请确认是否输入正确");
$("#openSonByMaterial").val("");
$("#mid").val("");
}else{
$("#openSonByMaterial").val(d.mname);
$("#mid").val(d.id);
}
}
});
});
$("#openSonByMaterial").blur(function () {
var data = $(this).val();
var req = {};
req.mname = data;
$.ajax({
url: "/material/findMaterialByCondition",
type: "post",
dataType: 'json',
data:JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
if(d.count > 1){
layer.msg("请点击右侧搜索确定物品");
$("#mid").val("");
$("#code").val("");
return false;
}else if(d.count === 0){
layer.msg("没有该物品,请确认输入是否正确");
$("#mid").val("");
$("#code").val("");
return false;
}
else{
var material = d.data[0];
$("#openSonByMaterial").val(material.mname)
$("#mid").val(material.id);
$("#code").val(material.code);
}
}
});
})
$('#openSonByDepository').on('click', function () {
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
content: '/selectDepository?type=2',
});
});
$('#selectMaterial').on('click', function () {
var mname = $("#openSonByMaterial").val();
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
content: '/selectMaterial?mname='+mname+'&type=2',
end: function () {
var mid = $("#mid").val();
$.ajax({
url: "/material/findMatrialById?mid=" + mid,
type: "get",
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var code = d.data.code
$("#code").val(code)
}
});
}
});
});
step.render({
elem: '#stepForm',
filter: 'stepForm',

5
src/main/resources/templates/pages/application/application-review.html

@ -218,7 +218,10 @@
success:function(data){
layer.close(this.layerIndex);
if(data.status >= 300){
layer.msg(data.statusInfo.message);//失败的表情
layer.msg(data.statusInfo.detail,function () {
window.location = '/ApplicationOutView?id='+req.id;
});//失败的表情
return;
}else{
layer.msg("提交成功", {

18
src/main/resources/templates/pages/application/application-transfer.html

@ -39,10 +39,13 @@
<div class="layui-form-item">
<label class="layui-form-label">转入仓库:</label>
<div class="layui-input-block">
<select name="toId" lay-verify="required">
<!-- <select name="toId" lay-verify="required">
<option value="" selected>请选择仓库</option>
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}">外芯仓库</option>
</select>
</select>-->
<input type="text" placeholder="请选择仓库" class="layui-input" id="openSonByDepository" readonly
lay-verify="required"/>
<input type="text" name="depositoryId" class="layui-input" id="depositoryId" style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
@ -110,6 +113,17 @@
form = layui.form,
step = layui.step;
$('#openSonByDepository').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectDepository?type=2',
});
});
step.render({
elem: '#stepForm',

14
src/main/resources/templates/pages/application/form-step-look.html

@ -28,15 +28,19 @@
<tbody>
<tr>
<td>申请编号</td>
<td id="applicationId" th:text="${record.getId()}">123456</td>
<td id="applicationId" th:text="${record.getAircode()}">123456</td>
</tr>
<tr>
<td>材料名称</td>
<td id="materialName" th:text="${record.getMname()}">骁龙888芯片</td>
</tr>
<tr>
<td>仓库名称</td>
<td id="depositoryName" th:text="${record.getDepositoryName()}">外芯仓库</td>
<td>存货编码</td>
<td id="mcode" th:text="${record.getMcode()}">外芯仓库</td>
</tr>
<tr>
<td>计量单位</td>
<td id="munit" th:text="${record.getMunit()}">外芯仓库</td>
</tr>
<tr>
<td>数量</td>
@ -46,6 +50,10 @@
<td>金额</td>
<td id="price" th:text="${record.getPrice()}">2016-11-28</td>
</tr>
<tr>
<td>仓库名称</td>
<td id="depositoryName" th:text="${record.getDepositoryName()}">外芯仓库</td>
</tr>
<tr>
<td>提交人</td>
<td id="applicantName" th:text="${record.getApplicantName()}">2016-11-28</td>

3
src/main/resources/templates/pages/application/form-step-look_back.html

@ -28,7 +28,7 @@
<tbody>
<tr>
<td>申请编号</td>
<td id="applicationId" th:text="${record.getId()}">123456</td>
<td id="applicationId" th:text="${record.getCode()}">123456</td>
</tr>
<tr>
<td>材料名称</td>
@ -146,6 +146,7 @@
}
}
if (depositoryManagerNameTime!=null&&depositoryManagerNameTime!==""){
$("#depositoryManagerNameT").show();
$("#depositoryManagerNameTimeT").show();
$("#depositoryManagerNameMessageT").show();

17
src/main/resources/templates/pages/application/my-apply.html

@ -48,7 +48,8 @@
flow = layui.flow,
util=layui.util;
let size=8;
let pre=0;
let inpre=0;
let outpre=0;
flow.load({
elem: '#LAY_floor_in' //流加载容器
,scrollElem: '#LAY_floor_in' //滚动条所在元素,一般不用填,此处只是演示需要。
@ -59,8 +60,8 @@
$.get('/depositoryRecord/myApply?page='+page+'&size='+size, function(res){
result=res.data;
applicationIn = result["applicationIn"];
InCount = result["InCount"];
applicationOut = result["applicationOut"];
console.log(result)
for (let i = 0; i < applicationIn.length; i++) {
if (i%4===0){
lis.push('<tr>');
@ -75,10 +76,10 @@
lis.push('</tr>');
}
}
pre+=result.length;
inpre+=applicationIn.length;
//执行下一页渲染,第二参数为:满足“加载更多”的条件,即后面仍有分页
//pages为Ajax返回的总页数,只有当前页小于总页数的情况下,才会继续出现加载更多
next(lis.join(''), pre < res.count);
next(lis.join(''), inpre < InCount);
});
}
});
@ -93,7 +94,7 @@
result=res.data;
applicationIn = result["applicationIn"];
applicationOut = result["applicationOut"];
console.log(result)
OutCount = result["OutCount"];
for (let i = 0; i < applicationOut.length; i++) {
if (i%4===0){
lis.push('<tr>');
@ -108,12 +109,10 @@
lis.push('</tr>');
}
}
pre+=result.length;
outpre+=applicationOut.length;
//执行下一页渲染,第二参数为:满足“加载更多”的条件,即后面仍有分页
//pages为Ajax返回的总页数,只有当前页小于总页数的情况下,才会继续出现加载更多
next(lis.join(''), pre < res.count);
next(lis.join(''), outpre < OutCount);
});
}
});

2
src/main/resources/templates/pages/application/my-task.html

@ -73,7 +73,7 @@
let result;
$.get('/depositoryRecord/myTask?page='+page+'&size='+size+'&isDone=0', function(res){
result=res.data;
console.log(result)
console.log(res)
for (let i=0;i<result.length;i++){
if (i%4===0){
lis.push('<tr>');

4
src/main/resources/templates/pages/chart/chart-stock_back.html

@ -426,7 +426,7 @@
}
optionRecords = {
title: {
text: '出库仓库-报表图'
text: '仓库库存-报表图'
},
tooltip: {
trigger: 'axis',
@ -496,7 +496,7 @@
}
optionRecords = {
title: {
text: '出库仓库-报表图'
text: '仓库库存-报表图'
},
tooltip: {
trigger: 'axis',

21
src/main/resources/templates/pages/depository/table-in.html

@ -27,10 +27,12 @@
<div class="layui-inline">
<label class="layui-form-label">仓库</label>
<div class="layui-input-inline">
<select name="depositoryId">
<!--<select name="depositoryId">
<option value="" selected>请选择仓库</option>
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}" >外芯仓库</option>
</select>
</select>-->
<input type="text" placeholder="请选择仓库" class="layui-input" id="openSonByDepository" readonly />
<input type="text" name="depositoryId" class="layui-input" id="depositoryId" style="display: none" />
</div>
</div>
<div class="layui-inline">
@ -77,6 +79,19 @@
table = layui.table,
laydate=layui.laydate;
$('#openSonByDepository').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectDepository?type=2',
});
});
//日期
laydate.render({
elem: '#date'
@ -111,7 +126,9 @@
cols: [ [
{type: "checkbox", width: 50},
{field: 'id', width: 100, title: '提交编号', sort: true},
{field: 'aircode', width: 100, title: '提交编码', sort: true},
{field: 'mname', width: 120, title: '材料名称'},
{field: 'mcode', width: 120, title: '存货编码'},
{field: 'depositoryName', width: 120, title: '仓库名称', sort: true},
{field: 'quantity', width: 80, title: '数量', sort: true},
{field: 'price', title: '金额', minWidth: 80, sort: true},

25
src/main/resources/templates/pages/depository/table-out.html

@ -27,10 +27,12 @@
<div class="layui-inline">
<label class="layui-form-label">仓库</label>
<div class="layui-input-inline">
<select name="depositoryId" >
<!--<select name="depositoryId" >
<option value="" selected>请选择仓库</option>
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}" >外芯仓库</option>
</select>
</select>-->
<input type="text" placeholder="请选择仓库" class="layui-input" id="openSonByDepository" readonly />
<input type="text" name="depositoryId" class="layui-input" id="depositoryId" style="display: none" />
</div>
</div>
<div class="layui-inline">
@ -78,6 +80,18 @@
table = layui.table,
laydate=layui.laydate;
$('#openSonByDepository').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectDepository?type=2',
});
});
//日期
laydate.render({
elem: '#date'
@ -112,7 +126,9 @@
cols: [ [
{type: "checkbox", width: 50},
{field: 'id', width: 100, title: '申请编号', sort: true},
{field: 'code', width: 100, title: '申请编码', sort: true},
{field: 'mname', width: 120, title: '材料名称'},
{field: 'mcode', width: 120, title: '存货编码'},
{field: 'depositoryName', width: 120, title: '仓库名称', sort: true},
{field: 'quantity', width: 80, title: '数量', sort: true},
{field: 'price', title: '金额', minWidth: 80, sort: true},
@ -133,7 +149,10 @@
limits: [10, 15, 20, 25, 50],
limit: 10,
page: true,
skin: 'line'
skin: 'line',
done:function () {
$("[data-field='id']").css('display','none');
}
});
// 监听搜索操作

69
src/main/resources/templates/pages/depository/table-stock.html

@ -20,10 +20,12 @@
<div class="layui-inline">
<label class="layui-form-label">仓库</label>
<div class="layui-input-inline">
<select name="depositoryId" >
<!-- <select name="depositoryId" >
<option value="" selected>请选择仓库</option>
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}" >外芯仓库</option>
</select>
</select>-->
<input type="text" placeholder="请选择仓库" class="layui-input" id="openSonByDepository" readonly />
<input type="text" name="depositoryId" class="layui-input" id="depositoryId" style="display: none" />
</div>
</div>
<div class="layui-inline">
@ -32,6 +34,12 @@
<input type="text" name="mname" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">存货编码</label>
<div class="layui-input-inline">
<input type="text" name="code" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<button type="submit" class="layui-btn layui-btn-primary" lay-submit
@ -44,6 +52,10 @@
</fieldset>
<table class="layui-hide" id="currentTableId" lay-filter="currentTableFilter"></table>
<script id="currentTableBar" type="text/html">
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-subclass" lay-event="applicationIn">入库申请</a>
<a class="layui-btn layui-btn-xs data-count-edit" lay-event="applicationOut" >出库申请</a>
</script>
</div>
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
@ -54,6 +66,18 @@
form = layui.form,
table = layui.table;
$('#openSonByDepository').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectDepository?type=2',
});
});
table.render({
elem: "#currentTableId",
url: '/material/material',
@ -77,19 +101,24 @@
,dataName: 'data' //规定数据列表的字段名称,默认:data
},
toolbar: ['filter', 'exports', 'print'],
cols: [ [
cols: [
[
{type: "checkbox", width: 50},
{field: 'id', width: '10%', title: '材料编号'},
{field: 'mname', width: '10%', title: '材料名称'},
{field: 'version',width: 200,title: '规格型号',sort: false},
{field: 'code',width: 200,title: '存货编码',sort: true},
{field: 'typeName', width: '10%', title: '材料类型'},
{field: 'depositoryName', width: '12%', title: '仓库名称', sort: true},
{field: 'depositoryCode', width: '12%', title: '仓库编号', sort: true},
{field: 'quantity', width: '10%', title: '数量', sort: true},
{field: 'price', title: '单价', width: '8%', sort: true},
{field: 'amounts', title: '总金额', minWidth: 150, sort: true},
{field: 'unit',width: '10%',title: '计量单位',sort: true},
{field: 'texture',width: '8%',title: '材质',sort: true},
]],
{title: '操作', minWidth: 250, toolbar: '#currentTableBar', align: "center"}
]
],
limits: [10, 15, 20, 25, 50],
limit: 10,
page: true,
@ -99,6 +128,11 @@
}
});
//监听表格复选框选择
table.on('checkbox(currentTableFilter)', function (obj) {
console.log(obj)
});
// 监听搜索操作
form.on('submit(data-search-btn)', function (data) {
var req={};
@ -109,7 +143,9 @@
if (data.depositoryId!==''){
req.depositoryId=data.depositoryId;
}
if(data.code !==''){
req.code =data.code;
}
//执行搜索重载
table.reload('currentTableId', {
url: '/material/material',
@ -120,6 +156,29 @@
}, 'data');
return false;
});
table.on('tool(currentTableFilter)', function (obj) {
let data = obj.data;
if (obj.event === 'applicationIn') {
// 入库申请
var index = layer.open({
title: '入库申请',
type: 2,
shade: 0.2,
maxmin: true,
shadeClose: true,
area: ['100%', '100%'],
content: '/application_in_back?mid='+data.id+"&depositoryId="+data.depositoryId
});
$(window).on("resize", function () {
layer.full(index);
});
return false;
}else{
// 出库申请
console.log(data)
}
});
});
</script>

16
src/main/resources/templates/pages/material/material-add.html

@ -48,8 +48,9 @@
<option value="" selected>请选择仓库</option>
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}">外芯仓库</option>
</select>-->
<input type="text" placeholder="请选择仓库" name="dname" class="layui-input" id="openSonByDepository" readonly
<input type="text" placeholder="请选择仓库" class="layui-input" id="openSonByDepository" readonly
lay-verify="required"/>
<input type="text" name="depositoryId" class="layui-input" id="depositoryId" style="display: none" lay-verify="required"/>
</div>
</div>
@ -59,8 +60,10 @@
<!--<select name="materialTypeId" lay-verify="required">
<option th:each="materialType,iterStar:${materialTypes}" th:value="${materialType?.getId()}" th:text="${materialType?.getTname()}" selected>芯片类</option>
</select>-->
<input type="text" placeholder="请选择材料类型" name="tname" class="layui-input" id="openSonByMateralType" readonly
<input type="text" placeholder="请选择材料类型" class="layui-input" id="openSonByMateralType" readonly
lay-verify="required"/>
<input type="text" id="materialTypeId" placeholder="请选择材料类型" name="materialTypeId" class="layui-input" style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
@ -148,7 +151,7 @@
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectDepository',
content: '/selectDepository?type=2',
});
});
@ -171,9 +174,12 @@
} else {
layer.msg("添加成功!", {
icon: 6,//成功的表情
time: 1000 //1秒关闭(如果不配置,默认是3秒)
});
time: 1000
}, //1秒关闭(如果不配置,默认是3秒)
function(){
//do something
window.location="/material_add"
});
}
},
complete: function () {

51
src/main/resources/templates/pages/material/material-out.html

@ -21,19 +21,23 @@
<div class="layui-inline">
<label class="layui-form-label">仓库</label>
<div class="layui-input-inline">
<select name="depositoryId" >
<!--<select name="depositoryId" >
<option value="" selected>请选择仓库</option>
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}" >外芯仓库</option>
</select>
</select>-->
<input type="text" placeholder="请选择仓库" class="layui-input" id="openSonByDepository" readonly />
<input type="text" name="depositoryId" class="layui-input" id="depositoryId" style="display: none" />
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">种类</label>
<div class="layui-input-inline">
<select name="materialTypeId" >
<!--<select name="materialTypeId" >
<option value="" selected>请选择材料类型</option>
<option th:each="materialType,iterStar:${materialTypes}" th:value="${materialType?.getId()}" th:text="${materialType?.getTname()}" >芯片类</option>
</select>
</select>-->
<input type="text" placeholder="请选择材料类型" class="layui-input" id="openSonByMateralType" readonly />
<input type="text" id="materialTypeId" placeholder="请选择材料类型" name="materialTypeId" class="layui-input" style="display: none" />
</div>
</div>
<div class="layui-inline">
@ -97,6 +101,30 @@
table = layui.table,
upload = layui.upload;
$('#openSonByMateralType').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectType',
});
});
$('#openSonByDepository').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectDepository?type=2',
});
});
table.render({
elem: "#currentTableId",
url: '/material/material',
@ -126,14 +154,14 @@
defaultToolbar: ['filter', 'exports', 'print'],
cols: [ [
{type: "checkbox", width: 50},
{field: 'code',width: 150,title: '存货编码(用友U8)',sort: true},
{field: 'id', width: 100, title: 'EAS编号', sort: false},
{field: 'code',width: 150,title: '存货编码',sort: true},
{field: 'id', width: 100, title: 'EAS编号', sort: false,hidden:true},
{field: 'mname', width: 120, title: '材料名称', sort: false},
{field: 'typeName',width: 150,title: '材料种类',sort: true},
{field: 'version',width: 200,title: '规格型号',sort: false},
{field: 'texture',width: 100,title: '材质',sort: true},
{field: 'unit',width: 150,title: '计量单位',sort: true},
{field: 'depositoryCode',width: 150,title: '仓库编码',sort: true},
{field: 'depositoryCode',width: 250,title: '仓库编码',sort: true},
{field: "depositoryName",width: 120,title: "仓库名称",sort: true},
{field: 'quantity',width: 120,title:'数量',sort: true},
{field: 'price',width: 150,title: '单价',sort: true},
@ -145,10 +173,11 @@
limits: [10, 15, 20, 25, 50],
limit: 10,
page: true,
skin: 'line'
// done:function () {
// $("[data-field='id']").css('display','none');
// }
skin: 'line',
done:function () {
$("[data-field='id']").css('display','none');
}
});
// 监听搜索操作

28
src/main/resources/templates/pages/material/material-view.html

@ -13,7 +13,7 @@
<body>
<form class="layui-form" action="" >
<div class="layui-form-item">
<div class="layui-form-item" style="display: none">
<label class="layui-form-label">材料编号</label>
<div class="layui-input-block">
<input type="text" th:value="${record.getId()}" name="id" required lay-verify="required" autocomplete="off" class="layui-input" readonly="readonly">
@ -34,7 +34,7 @@
<div class="layui-form-item">
<label class="layui-form-label">规格型号</label>
<div class="layui-input-inline">
<input type="text" th:value="${record.getVersion()}" name="version" required lay-verify="required" autocomplete="off" class="layui-input">
<input type="text" th:value="${record.getVersion()}" name="version" required autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
@ -46,19 +46,19 @@
<div class="layui-form-item">
<label class="layui-form-label">计量单位</label>
<div class="layui-input-inline">
<input type="text" th:value="${record.getUnit()}" name="unit" required lay-verify="required" autocomplete="off" class="layui-input">
<input type="text" th:value="${record.getUnit()}" name="unit" required autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">仓库编码</label>
<div class="layui-input-inline">
<input type="text" th:value="${record.getDepositoryCode()}" name="depositoryCode" required lay-verify="required" autocomplete="off" class="layui-input">
<input type="text" th:value="${record.getDepositoryCode()}" name="depositoryCode" required autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材料单价</label>
<div class="layui-input-inline">
<input type="text" th:value="${record.getPrice()}" name="price" required lay-verify="required" autocomplete="off" class="layui-input">
<input type="text" th:value="${record.getPrice()}" name="price" required autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
@ -70,10 +70,13 @@
<div class="layui-form-item">
<label class="layui-form-label">材料类型</label>
<div class="layui-input-inline">
<select name="typeId" th:value="${record.getTypeId()}" lay-verify="required">
<!-- <select name="typeId" th:value="${record.getTypeId()}" lay-verify="required">
<option value="">请选择类型</option>
<option th:each="materialType,iterStar:${materialTypes}" th:value="${materialType?.getId()}" th:text="${materialType?.getTname()}" th:selected="${materialType.getId() == record.getTypeId()}">芯片类</option>
</select>
</select>-->
<input type="text" placeholder="请选择材料类型" class="layui-input" id="openSonByMateralType" readonly th:value="${record.getMaterialType().getTname()}"
lay-verify="required"/>
<input type="text" id="materialTypeId" th:value="${record.getTypeId()}" placeholder="请选择材料类型" name="materialTypeId" class="layui-input" style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
@ -99,6 +102,17 @@
<script>
layui.use('form', function(){
var form = layui.form, $ = layui.$;
$('#openSonByMateralType').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectType',
});
});
//提交
form.on('submit(formDemo)', function(data){
data = data.field

12
src/main/resources/templates/pages/material/selectDepository.html

@ -10,31 +10,35 @@
<link rel="stylesheet" href="/static/css/public.css" media="all">
</head>
<body>
<input id="adminorg" name="adminorg" th:value="${adminorg}" style="display: none">
<div id="test2" class="demo-tree"></div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
var data;
layui.use(['form', 'layer','dropdown','tree'], function () {
var $ = layui.jquery,
tree = layui.tree,
tree = layui.tree;
var adminorg = $("#adminorg").val();
test = tree.render({
elem: '#test2'
,data: []
,onlyIconControl: true //是否仅允许节点左侧图标控制展开收缩
,click: function(obj){
$("#openSonByDepository",window.parent.document).val(obj.data.title)
$("#depositoryId",window.parent.document).val(obj.data.id)
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
$.ajax({
url: "/repository/treeMenus",
url: "/repository/treeMenus?adminorg=0"+adminorg,
type: 'get',
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var data2 = d.data
var data2 = d.data;
console.log(data2)
test.reload({
data:data2

1
src/main/resources/templates/pages/material/selectType.html

@ -23,6 +23,7 @@
,onlyIconControl: true //是否仅允许节点左侧图标控制展开收缩
,click: function(obj){
$("#openSonByMateralType",window.parent.document).val(obj.data.title)
$("#materialTypeId",window.parent.document).val(obj.data.id)
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);

25
src/main/resources/templates/pages/materialtype/materialType_add.html

@ -1,4 +1,5 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<html>
<head>
<meta charset="utf-8">
@ -29,10 +30,12 @@
<div class="layui-form-item">
<label class="layui-form-label">父级类型:</label>
<div class="layui-input-block">
<select name="parentId" >
<!--<select name="parentId" >
<option value="" selected>请选择类型</option>
<option th:each="materialType,iterStar:${materialTypes}" th:value="${materialType?.getId()}" th:text="${materialType?.getTname()}" >顶级类型</option>
</select>
</select>-->
<input type="text" placeholder="请选择材料类型" class="layui-input" id="openSonByMateralType" readonly />
<input type="text" id="materialTypeId" placeholder="请选择材料类型" name="materialTypeId" class="layui-input" style="display: none" />
</div>
</div>
<div class="layui-form-item">
@ -63,11 +66,25 @@
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
var data;
layui.use(['form', 'layer'], function () {
layui.use(['form', 'layer','tree'], function () {
var $ = layui.jquery,
form = layui.form,
tree = layui.tree,
layer = layui.layer;
$('#openSonByMateralType').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectType',
});
});
form.on('submit(formStep)', function (data) {
$.ajax({
url:"/materialType/materialType_add",
@ -87,6 +104,8 @@
layer.msg("添加成功!", {
icon: 6,//成功的表情
time: 1000 //1秒关闭(如果不配置,默认是3秒)
},function () {
window.location="/materialType_add"
});
}
},

7
src/main/resources/templates/pages/materialtype/materialType_edit.html

@ -13,7 +13,7 @@
<body>
<form class="layui-form" action="" >
<div class="layui-form-item">
<div class="layui-form-item" style="display:none;">
<label class="layui-form-label">类型编号</label>
<div class="layui-input-block">
<input type="text" th:value="${record.getId()}" name="id" required lay-verify="required" autocomplete="off" class="layui-input" readonly="readonly">
@ -79,8 +79,9 @@
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
},function(){
window.location='/materialType_view'
window.location='/materialType_view';
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);//关闭当前页
})
}
}

26
src/main/resources/templates/pages/materialtype/materialType_view.html

@ -111,21 +111,15 @@
{field: 'tname', width: 120, title: '类型名称', sort: true},
{field: 'introduce',width: 200,title: '类型介绍',sort: true},
{field:'state', title:'状态', minWidth: 80, templet: '#switchTpl'},
/* {
field: 'state', title: '状态', minWidth: 80, sort: true, templet: function (d) {
if (d.state == 1){
return "启用";
}else if(d.state == 2){
return "禁用";
}
}
},*/
{title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"}
]],
limits: [10, 15, 20, 25, 50],
limit: 10,
page: true,
skin: 'line'
skin: 'line',
done:function () {
$("[data-field='id']").css('display','none');
}
});
// 监听搜索操作
@ -218,6 +212,8 @@
let data = obj.data;
if (obj.event === 'detail') {
req = {};
req.parentId = parentId;
var index = layer.open({
title: '材料种类详情',
type: 2,
@ -226,6 +222,16 @@
shadeClose: true,
area: ['100%', '100%'],
content: '/materialType_detail?id='+data.id,
end:function () {
//执行搜索重载
table.reload('currentTableId', {
url: '/materialType/materialTypeRecord',
page: {
curr: 1
},
where:req
}, 'data');
}
});
$(window).on("resize", function () {
layer.full(index);

101
src/main/resources/templates/pages/other/welcome.html

@ -187,99 +187,10 @@
<div class="layuimini-notice-title" th:text="${notice.getTitle()}">修改选项卡样式</div>
<div class="layuimini-notice-extra" th:text="${notice.getTime()}">2019-07-11 23:06</div>
<div class="layuimini-notice-content layui-hide" th:text="${notice.getContent()}">
界面足够简洁清爽。<br>
一个接口几行代码而已直接初始化整个框架,无需复杂操作。<br>
支持多tab,可以打开多窗口。<br>
支持无限级菜单和对font-awesome图标库的完美支持。<br>
失效以及报错菜单无法直接打开,并给出弹出层提示完美的线上用户体验。<br>
url地址hash定位,可以清楚看到当前tab的地址信息。<br>
刷新页面会保留当前的窗口,并且会定位当前窗口对应左侧菜单栏。<br>
移动端的友好支持。<br>
</div>
</div>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header"><i class="fa fa-fire icon"></i>版本信息</div>
<div class="layui-card-body layui-text">
<table class="layui-table">
<colgroup>
<col width="100">
<col >
</colgroup>
<tbody>
<tr>
<td>项目名称</td>
<td>
仓库管理系统
</td>
</tr>
<tr>
<td>当前版本</td>
<td>v1.0.0</td>
</tr>
<tr>
<td>作者</td>
<td>金昊霖</td>
</tr>
<tr>
<td>使用技术</td>
<td>
前端技术:Layui/jquery/echarts<br>
后端技术:JavaEE/MySql/SSM/SpringBoot
</td>
</tr>
<tr>
<td>主要特色</td>
<td>响应式 / 清爽 / 极简</td>
</tr>
<tr>
<td>前端模板</td>
<td>
<!-- layui-mini<br>-->
iframe版-v2:<a href="http://layuimini.99php.cn/iframe/v2/index.html" target="_blank">点击查看</a><br>
单页版-v2:<a href="http://layuimini.99php.cn/onepage/v2/index.html" target="_blank">点击查看</a><br>
</td>
</tr>
<!-- <tr>-->
<!-- <td>下载地址</td>-->
<!-- <td>-->
<!-- iframe版-v2:<a href="https://github.com/zhongshaofa/layuimini/tree/v2" target="_blank">github</a> / <a href="https://gitee.com/zhongshaofa/layuimini/tree/v2" target="_blank">gitee</a><br>-->
<!-- 单页版-v2:<a href="https://github.com/zhongshaofa/layuimini/tree/v2-onepage" target="_blank">github</a> / <a href="https://gitee.com/zhongshaofa/layuimini/tree/v2-onepage" target="_blank">gitee</a><br>-->
<!-- </td>-->
<!-- </tr>-->
<!-- <tr>-->
<!-- <td>Gitee</td>-->
<!-- <td style="padding-bottom: 0;">-->
<!-- <div class="layui-btn-container">-->
<!-- <a href="https://gitee.com/zhongshaofa/layuimini" target="_blank" style="margin-right: 15px"><img src="https://gitee.com/zhongshaofa/layuimini/badge/star.svg?theme=dark" alt="star"></a>-->
<!-- <a href="https://gitee.com/zhongshaofa/layuimini" target="_blank"><img src="https://gitee.com/zhongshaofa/layuimini/badge/fork.svg?theme=dark" alt="fork"></a>-->
<!-- </div>-->
<!-- </td>-->
<!-- </tr>-->
<!-- <tr>-->
<!-- <td>Github</td>-->
<!-- <td style="padding-bottom: 0;">-->
<!-- <div class="layui-btn-container">-->
<!-- <iframe src="https://ghbtns.com/github-btn.html?user=zhongshaofa&repo=layuimini&type=star&count=true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>-->
<!-- <iframe src="https://ghbtns.com/github-btn.html?user=zhongshaofa&repo=layuimini&type=fork&count=true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>-->
<!-- </div>-->
<!-- </td>-->
<!-- </tr>-->
</tbody>
</table>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header"><i class="fa fa-paper-plane-o icon"></i>作者心语</div>
<div class="layui-card-body layui-text layadmin-text">
<p>该项目为作者大二的实训大作业,前端借用了layuimini的模板</p>
<p>欢迎大家关注我的CSDN博客:<a href="https://blog.csdn.net/qq_46101869">Dreamchaser追梦</a></p>
</div>
</div>
</div>
</div>
</div>
@ -318,10 +229,10 @@
content:html,
success: function (layero) {
var btn = layero.find('.layui-layer-btn');
btn.find('.layui-layer-btn0').attr({
href: 'https://gitee.com/zhongshaofa/layuimini',
target: '_blank'
});
// btn.find('.layui-layer-btn0').attr({
// href: 'https://gitee.com/zhongshaofa/layuimini',
// target: '_blank'
// });
}
});
});
@ -329,7 +240,7 @@
/**
* 报表功能
*/
var echartsRecords = echarts.init(document.getElementById('echarts-records'), 'walden');
/* var echartsRecords = echarts.init(document.getElementById('echarts-records'), 'walden');
var optionRecords = {
tooltip: {
trigger: 'axis'
@ -389,7 +300,7 @@
// echarts 窗口缩放自适应
window.onresize = function(){
echartsRecords.resize();
}
}*/
});
</script>

21
src/main/resources/templates/pages/post/post-out.html

@ -17,13 +17,14 @@
<div style="margin: 10px 10px 10px 10px">
<form class="layui-form layui-form-pane" action="">
<input id="parentId" style="display: none" th:value="${parentId}">
<input id="organization" style="display: none" th:value="${organization}">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">岗位名称</label>
<div class="layui-input-inline">
<select name="name" >
<option value="" selected>请选择岗位</option>
<option th:each="post,iterStar:${postList}" th:value="${post?.getId()}" th:text="${post?.getName()}" >顶级岗位</option>
<option th:each="post,iterStar:${postList}" th:value="${post?.getName()}" th:text="${post?.getName()}" >顶级岗位</option>
</select>
</div>
</div>
@ -67,6 +68,7 @@
form = layui.form,
table = layui.table;
var parentId = document.getElementById("parentId").value;
var organization = document.getElementById("organization").value;
table.render({
elem: "#currentTableId",
url: '/company/allPostByOrganization',
@ -126,6 +128,7 @@
skin: 'line',
one:function () {
$("[data-field='id']").css('display','none');
$("[data-field='rolename']").css('display','none');
}
});
@ -140,9 +143,11 @@
req.state = data.state;
}
req.superior = parentId
req.organization = organization
//执行搜索重载
table.reload('currentTableId', {
url: '/company/companyByCondition',
url: '/company/allPostByOrganization',
page: {
curr: 1
},
@ -191,7 +196,8 @@
return false;
}
else if (obj.event == 'add_role'){
var index = layer.open({
/*var index = layer.open({
title: '设置权限',
type: 2,
shade: 0.2,
@ -199,6 +205,15 @@
shadeClose: true,
area: ['100%', '100%'],
content: '/postRoleAdd?id='+data.id
});*/
var index = layer.open({
type: 2,
title: '权限信息',
shadeClose: true,
shade: false,
maxmin: true, //开启最大化最小化按钮
area: ['893px', '600px'],
content: '/postRoleView?id='+data.id
});
$(window).on("resize", function () {
layer.full(index);

37
src/main/resources/templates/pages/post/postRole_add.html

@ -25,10 +25,10 @@
<tip>填写自己管理账号的名称。</tip>
</div>
</div>
<div class=" layui-form-item" >
<div class=" layui-form-item" style="display: none">
<label class="layui-form-label required">权限:</label>
<div class="layui-inline " style="margin-bottom: 10px">
<select name="authority" class="layui-input-inline" lay-verify="required">
<select name="authority" class="layui-input-inline" >
<option value="">请选择权限</option>
<option th:each="role,iterStar:${roles}" th:value="${role?.getId()}" th:text="${role?.getName()}" >系统管理员</option>
</select>
@ -37,11 +37,8 @@
<div class=" layui-form-item" >
<label class="layui-form-label required">负责仓库:</label>
<div class="layui-inline" style="margin-bottom: 10px">
<select name="depositoryId" lay-verify="required">
<option value="">请选择仓库</option>
<option value="0">全部仓库</option>
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}" >外芯仓库</option>
</select>
<input type="text" placeholder="请选择仓库" class="layui-input" id="openSonByDepository" readonly/>
<input type="text" name="depositoryId" class="layui-input" id="depositoryId" style="display: none" />
</div>
</div>
@ -62,6 +59,17 @@
laydate=layui.laydate,
$ = layui.$;
$('#openSonByDepository').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectDepository?type=2',
});
});
//日期
laydate.render({
elem: '#date'
@ -86,14 +94,21 @@
success: function (data) {
layer.close(this.layerIndex);
if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情
return;
console.log(data)
layer.msg(data.statusInfo.message,{
icon: 7,
time: 200
},function () {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);//关闭当前页
});
} else {
layer.msg("申请提交成功", {
layer.msg("添加成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
},function(){
window.location='/findPostByOrganization?organization='+organization
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);//关闭当前页
})
}
}

11
src/main/resources/templates/pages/user/account-look.html

@ -34,7 +34,7 @@
<div class="layui-form-item">
<label class="layui-form-label required">头像</label>
<div class="layui-input-block">
<img th:src="${user.getIcon()}">
<img th:src="${user.getIcon()}" style="width: 100px;border-radius: 10px">
</div>
</div>
<div class="layui-form-item">
@ -89,7 +89,10 @@
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="checkbox" name="state" lay-skin="switch" lay-text="启用|禁用" th:checked="${user.getState() == 1}" readonly>
<div th:switch="${user.getState()}">
<span th:case="1">启用</span>
<span th:case="2">禁用</span>
</div>
</div>
</div>
<div class="layui-form-item">
@ -232,11 +235,11 @@
</tr>
<tr>
<td>身份</td>
<td th:text="${roleAndDepository.getRoleName()}">系统管理员</td>
<td th:text="${RoleName}">系统管理员</td>
</tr>
<tr>
<td>负责仓库</td>
<td th:text="${roleAndDepository.getDepositoryName()}">all</td>
<td th:text="${DepositoryName}">all</td>
</tr>
</tbody>
</table>

36
src/main/resources/templates/pages/user/login.html

@ -51,10 +51,10 @@
<!-- 徒有其表的验证码,主要是不想另外弄了 -->
<div class="layui-form-item">
<label class="layui-icon layui-icon-vercode" ></label>
<input type="text" name="captcha" lay-verify="required|captcha" placeholder="图形验证码" autocomplete="off" class="layui-input verification captcha">
<input type="text" name="captcha" id="captcha" lay-verify="required|captcha" placeholder="图形验证码" autocomplete="off" class="layui-input verification captcha">
<div class="captcha-img">
<input type="text" name="captchaId" style="display: none" th:value="${captchaid}">
<img id="captchaPic" th:src="${picPath}">
<input type="text" id="captchaId" name="captchaId" style="display: none" th:value="${captchaid}">
<img id="captchaPic" th:src="${picPath}" onclick="changerPic()">
</div>
</div>
<div class="layui-form-item">
@ -117,8 +117,19 @@
},
success:function(data){
layer.close(this.layerIndex);
if(data.status !== 200){
if(data.status != 200){
layer.msg(data.statusInfo.message);//失败的表情
$.ajax({
url:"/getCaptchaid",
type:"get",
dataType:'json',
contentType: "application/json;charset=utf-8",
success:function (data) {
$("#captcha").val("");
$("#captchaPic").attr("src",data.picPath);
$("#captchaId").val(data.captchaid);
}
});
return;
}else{
layer.msg("登录成功", {
@ -126,7 +137,7 @@
time: 1000 //1秒关闭(如果不配置,默认是3秒)
}, function(){
console.log(data)
cookieUtil.createCookie("token",data.data)
// cookieUtil.createCookie("token",data.data)
window.location = '/index';
});
@ -135,10 +146,23 @@
complete: function () {
layer.close(this.layerIndex);
}
})
});
return false;
});
});
function changerPic() {
$.ajax({
url:"/getCaptchaid",
type:"get",
dataType:'json',
contentType: "application/json;charset=utf-8",
success:function (data) {
$("#captchaPic").attr("src",data.picPath);
$("#captchaId").val(data.captchaid);
}
});
}
</script>
</body>
</html>

47
src/main/resources/templates/pages/user/table-user.html

@ -121,7 +121,9 @@
}else if(d.gender == 2){
return "女性";
}else if(d.gender == 3){
return "中性"
return "中性";
}else{
return "";
}
}},
{
@ -130,6 +132,8 @@
return "启用";
}else if(d.state == 2){
return "禁用";
}else{
return "";
}
}
},
@ -145,7 +149,9 @@
case 4:
return "有生理缺陷";
case 5:
return "残废"
return "残废";
default:
return "";
}
}
},
@ -162,7 +168,11 @@
limits: [10, 15, 20, 25, 50, 100],
limit: 10,
page: true,
skin: 'line'
skin: 'line',
done:function () {
$("[data-field='id']").css('display','none');
$("[data-field='rolename']").css('display','none');
}
});
// 监听搜索操作
@ -203,11 +213,18 @@
dataType:'json',
contentType: "application/json;charset=utf-8",
success:function(d){
$('#adminorg').empty()
$.each(d.data,function(index,item){
$('#adminorg').append(new Option(item.name,item.id));//往下拉菜单里添加元素
})
if(data.value != "") {
$('#adminorg').empty();
$('#adminorg').append(new Option("请选择部门", ""));
$.each(d.data, function (index, item) {
$('#adminorg').append(new Option(item.name, item.id));//往下拉菜单里添加元素
});
form.render();
}else{
$('#adminorg').empty();
form.render();
}
}
})
})
@ -236,19 +253,15 @@
return false;
}
else if(obj.event == 'add_role'){
var index = layer.open({
title: '添加权限',
layer.open({
type: 2,
shade: 0.2,
maxmin:true,
title: '权限信息',
shadeClose: true,
area: ['100%', '100%'],
content: '/user_add?id='+data.number,
shade: false,
maxmin: true, //开启最大化最小化按钮
area: ['893px', '600px'],
content: '/userRoleView?id='+data.id
});
$(window).on("resize", function () {
layer.full(index);
});
return false;
}
});

28
src/main/resources/templates/pages/user/user-add.html

@ -24,10 +24,10 @@
<tip>填写自己管理账号的名称。</tip>
</div>
</div>
<div class=" layui-form-item" >
<div class=" layui-form-item" style="display:none;">
<label class="layui-form-label required">权限:</label>
<div class="layui-inline " style="margin-bottom: 10px">
<select name="authority" class="layui-input-inline" lay-verify="required">
<select name="authority" class="layui-input-inline">
<option value="">请选择权限</option>
<option th:each="role,iterStar:${roles}" th:value="${role?.getId()}" th:text="${role?.getName()}" th:selected="${userByPort.getRolename() == role.getName()}">系统管理员</option>
</select>
@ -36,11 +36,9 @@
<div class=" layui-form-item" >
<label class="layui-form-label required">负责仓库:</label>
<div class="layui-inline" style="margin-bottom: 10px">
<select name="depositoryId" lay-verify="required">
<option value="">请选择仓库</option>
<option value="-1">全部仓库</option>
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}" th:selected="${userByPort.getDepositoryName() == depository.getDname()}" >外芯仓库</option>
</select>
<input type="text" placeholder="请选择仓库" class="layui-input" id="openSonByDepository" readonly/>
<input type="text" name="depositoryId" class="layui-input" id="depositoryId" style="display: none" />
</div>
</div>
@ -57,12 +55,21 @@
layer = layui.layer,
laydate=layui.laydate,
$ = layui.$;
$('#openSonByDepository').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectDepository?type=2',
});
});
//日期
laydate.render({
elem: '#date'
});
//监听提交
form.on('submit(saveBtn)', function (data) {
data=data.field;
@ -89,7 +96,8 @@
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
},function(){
window.location='/table_user'
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);//关闭当前页
})
}
}

3
src/main/resources/templates/pages/user/user-edit.html

@ -33,8 +33,7 @@
<div class="layui-form-item">
<label class="layui-form-label required">头像</label>
<div class="layui-input-block">
<!-- <input type="text" name="number" th:value="${user.getNumber()}" lay-verify="email" value="" class="layui-input" readonly>-->
<img th:src="${user.getIcon()}">
<img th:src="${user.getIcon()}" style="width: 100px;border-radius: 10px" >
</div>
</div>
<div class="layui-form-item">

97
src/main/resources/templates/pages/user/user-password.html

@ -1,97 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>修改密码</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="/static/lib/layui-v2.6.3/css/layui.css" media="all">
<link rel="stylesheet" href="/static/css/public.css" media="all">
<style>
.layui-form-item .layui-input-company {width: auto;padding-right: 10px;line-height: 38px;}
</style>
</head>
<body>
<div class="layuimini-container">
<div class="layuimini-main">
<div class="layui-form layuimini-form">
<div class="layui-form-item">
<input style="display: none" name="email" th:value="${user.getEmail()}">
<label class="layui-form-label required">旧的密码</label>
<div class="layui-input-block">
<input type="password" name="old_password" lay-verify="required" lay-reqtext="旧的密码不能为空" placeholder="请输入旧的密码" value="" class="layui-input">
<tip>填写自己账号的旧的密码。</tip>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label required">新的密码</label>
<div class="layui-input-block">
<input type="password" name="new_password" lay-verify="required" lay-reqtext="新的密码不能为空" placeholder="请输入新的密码" value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label required">新的密码</label>
<div class="layui-input-block">
<input type="password" name="again_password" lay-verify="required|confirmPass" lay-reqtext="新的密码不能为空" placeholder="请输入新的密码" value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
</div>
</div>
</div>
</div>
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script src="/static/js/lay-config.js?v=1.0.4" charset="utf-8"></script>
<script>
layui.use(['form','miniTab'], function () {
var form = layui.form,
layer = layui.layer,
miniTab = layui.miniTab;
$ = layui.$;
form.verify({
confirmPass:function(value){
if($('input[name=new_password]').val() !== value)
return '提示:两次输入密码不一致!';
}
});
//监听提交
form.on('submit(saveBtn)', function (data) {
data = data.field;
$.ajax({
url: "/edit_password",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(data),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (data) {
layer.close(this.layerIndex);
if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情
return;
} else {
layer.msg("密码修改成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
},function(){
window.location='/user_password'
})
}
}
})
return false;
});
});
</script>
</body>
</html>

116
src/main/resources/templates/pages/user/user-role-edit.html

@ -0,0 +1,116 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>layui</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="/static/lib/layui-v2.6.3/css/layui.css" media="all">
<link rel="stylesheet" href="/static/css/public.css" media="all">
<style>
body {
background-color: #ffffff;
}
</style>
</head>
<body>
<div class="layui-form layuimini-form">
<input type="text" name="userid" th:value="${userByPort.getId()}" style="display: none">
<input type="text" name="roleId" th:value="${roleId}" style="display: none">
<div class="layui-form-item">
<label class="layui-form-label required">用户名</label>
<div class="layui-input-block">
<input type="text" lay-verify="required" lay-reqtext="用户名不能为空" placeholder="请输入用户名" th:value="${userByPort.getName()}" class="layui-input" readonly>
<tip>填写自己管理账号的名称。</tip>
</div>
</div>
<div class=" layui-form-item" style="display:none;">
<label class="layui-form-label required">权限:</label>
<div class="layui-inline " style="margin-bottom: 10px">
<select name="authority" class="layui-input-inline">
<option value="">请选择权限</option>
<option th:each="role,iterStar:${roles}" th:value="${role?.getId()}" th:text="${role?.getName()}" th:selected="${userByPort.getRolename() == role.getName()}">系统管理员</option>
</select>
</div>
</div>
<div class=" layui-form-item" >
<label class="layui-form-label required">负责仓库:</label>
<div class="layui-inline" style="margin-bottom: 10px">
<!--<select name="depositoryId" lay-verify="required">
<option value="">请选择仓库</option>
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}" th:selected="${userByPort.getDepositoryName() == depository.getDname()}" >外芯仓库</option>
</select>-->
<input type="text" placeholder="请选择仓库" class="layui-input" id="openSonByDepository" readonly th:value="${userByPort.getDepositoryName()}"
lay-verify="required"/>
<input type="text" th:value="${depositoryId}" name="depositoryId" class="layui-input" id="depositoryId" style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
</div>
</div>
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
layui.use(['form','layer','laydate'], function () {
var form = layui.form,
layer = layui.layer,
laydate=layui.laydate,
$ = layui.$;
$('#openSonByDepository').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectDepository?type=2',
});
});
//日期
laydate.render({
elem: '#date'
});
//监听提交
form.on('submit(saveBtn)', function (data) {
data=data.field;
//去除对应的仓库id
if (data.depositoryId===""){
delete data.depositoryId;
}
$.ajax({
url: "/sys/userRole_edit",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(data),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (data) {
layer.close(this.layerIndex);
if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情
return;
} else {
layer.msg("申请提交成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
},function(){
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);//关闭当前页
})
}
}
})
return false;
});
});
</script>
</body>
</html>

268
src/main/resources/templates/pages/warehouse/depository-out.html

@ -21,9 +21,11 @@
<div class="layui-inline">
<label class="layui-form-label">仓库</label>
<div class="layui-input-inline">
<select name="depositoryId" >
<select name="depositoryId">
<option selected value="">请选择仓库</option>
<option th:each="depository,iterStar:${depositories}" th:text="${depository?.getDname()}" th:value="${depository?.getId()}" >外芯仓库</option>
<option th:each="depository,iterStar:${depositories}"
th:text="${depository?.getDname()}" th:value="${depository?.getId()}">外芯仓库
</option>
</select>
</div>
</div>
@ -55,7 +57,8 @@
<!-- 状态展示-->
<script id="switchTpl" type="text/html">
<input type="checkbox" name="state" value="{{d.id}}" lay-skin="switch" lay-text="启用|禁用" lay-filter="changeState" {{ d.state == 1 ? 'checked' : '' }} >
<input type="checkbox" name="state" value="{{d.id}}" lay-skin="switch" lay-text="启用|禁用"
lay-filter="changeState" {{ d.state== 1 ? 'checked' : '' }} >
</script>
<script id="selectManager" type="text/html">
@ -75,7 +78,8 @@
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-subclass" lay-event="subclass">子仓</a>
<a class="layui-btn layui-btn-xs data-count-edit" lay-event="detail">详情</a>
<a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
<a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" th:style="'display:'+${display}" lay-event="realDelete">彻底删除</a>
<a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" th:style="'display:'+${display}"
lay-event="realDelete">彻底删除</a>
</script>
</div>
@ -89,7 +93,7 @@
var parentId = document.getElementById("parentId").value;
table.render({
elem: "#currentTableId",
url: '/repository/allWarehouseByParent?parentId='+parentId,
url: '/repository/allWarehouseByParent?parentId=' + parentId,
parseData: function (res) { //res 即为原始返回的数据
return {
"status": res.status, //解析接口状态
@ -103,48 +107,56 @@
limitName: 'size' //每页数据量的参数名,默认:limit
},
where: {
type:"0"
type: "0"
},
response: {
statusName: 'status' //规定数据状态的字段名称,默认:code
,statusCode: 200 //规定成功的状态码,默认:0
,msgName: 'message' //规定状态信息的字段名称,默认:msg
,countName: 'count' //规定数据总数的字段名称,默认:count
,dataName: 'data' //规定数据列表的字段名称,默认:data
, statusCode: 200 //规定成功的状态码,默认:0
, msgName: 'message' //规定状态信息的字段名称,默认:msg
, countName: 'count' //规定数据总数的字段名称,默认:count
, dataName: 'data' //规定数据列表的字段名称,默认:data
},
toolbar: '#toolbarDemo',
defaultToolbar: ['filter', 'exports', 'print'],
cols: [ [
cols: [
[
{type: "checkbox", width: 50},
{field: 'id', width: 100, title: '仓库编号', sort: true},
{field: 'code', width: 150, title: '仓库编码', sort: true},
{field: 'dname', width: 120, title: '仓库名称', sort: true},
{field: 'cname', width: 200, title: '所处公司', sort: true},
{field: 'address',width: 120,title:'仓库地址',sort: true},
{field: 'introduce',width: 200,title: '仓库介绍',sort: true},
{field: 'state', title:'状态', minWidth: 80, templet: '#switchTpl'},
{title: '仓管员', minWidth: 80, templet: '#selectManager' ,align: "center"},
{title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"}
]],
{field: 'adminorgName', width: 150, title: '所属部门', sort: true},
{field: 'address', width: 120, title: '仓库地址', sort: true},
{field: 'introduce', width: 200, title: '仓库介绍', sort: true},
{field: 'maxNumber', width: 200, title: '最大存储量', sort: true},
{field: 'minNumber', width: 200, title: '最小存储量', sort: true},
{field: 'state', title: '状态', minWidth: 80, templet: '#switchTpl'},
{title: '仓管员', minWidth: 80, templet: '#selectManager', align: "center"},
{title: '操作', minWidth: 250, toolbar: '#currentTableBar', align: "center"}
]
],
limits: [10, 15, 20, 25, 50],
limit: 10,
page: true,
skin: 'line'
skin: 'line',
done: function () {
$("[data-field='id']").css('display', 'none');
}
});
// 监听搜索操作
form.on('submit(data-search-btn)', function (data) {
var req={};
data=data.field;
req.type=1;
if (data.address!==''){
req.address=data.address;
var req = {};
data = data.field;
req.type = 1;
if (data.address !== '') {
req.address = data.address;
}
if(data.depositoryId!== ''){
if (data.depositoryId !== '') {
req.depositoryId = data.depositoryId;
}
if(data.state != ''){
if (data.state != '') {
req.state = data.state;
}
req.parentId = parentId
@ -164,8 +176,7 @@
* toolbar监听事件
*/
table.on('toolbar(currentTableFilter)', function (obj) {
if (obj.event === 'add')
{ // 监听添加操作
if (obj.event === 'add') { // 监听添加操作
var index = layer.open({
title: '申请提交',
type: 2,
@ -178,41 +189,51 @@
$(window).on("resize", function () {
layer.full(index);
});
}
else if (obj.event === 'delete')
{ // 监听删除操作
} else if (obj.event === 'delete') { // 监听删除操作
var checkStatus = table.checkStatus('currentTableId')
, data = checkStatus.data;
var req={};
req.ids=[];
for (i=0,len=data.length;i<len;i++){
req.ids[i]=data[i].id;
var req = {};
req.ids = [];
for (i = 0, len = data.length; i < len; i++) {
req.ids[i] = data[i].id;
}
$.ajax({
url: "/repository/findRelevancyByDepository",
type: "post",
data:JSON.stringify(req),
data: JSON.stringify(req),
dataType: "json",
contentType: "application/json;charset=utf-8",
success: function (data) {
}
if (data.data) {
layer.msg("该仓库尚有记录无法删除", {
icon: 7,
time: 500 //1秒关闭(如果不配置,默认是3秒)
}, function () {
// 执行重加载
table.reload('currentTableId', {
url: '/repository/warehouseRecord',
page: {
curr: 1
},
where: {"parentId": parentId}
});
})
} else {
$.ajax({
url: '/repository/depository_del',
dataType:'json',
type:'POST',
dataType: 'json',
type: 'POST',
contentType: "application/json;charset=utf-8",
data:JSON.stringify(req),
beforeSend:function () {
this.layerIndex = layer.load(0, { shade: [0.5, '#393D49'] });
data: JSON.stringify(req),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success:function(data){
success: function (data) {
layer.close(this.layerIndex);
if(data.status >= 300){
if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情
return;
}else{
} else {
layer.msg("删除成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
@ -229,6 +250,10 @@
}
})
}
}
});
}
});
@ -247,54 +272,53 @@
maxmin: true,
shadeClose: true,
area: ['100%', '100%'],
content: '/findWareHouseByParentId?parentId='+data.id
content: '/findWareHouseByParentId?parentId=' + data.id
});
$(window).on("resize", function () {
layer.full(index);
});
return false;
}
else if (obj.event === 'delete') { // 软删除
var req={};
req.id=data.id;
} else if (obj.event === 'delete') { // 软删除
var req = {};
req.id = data.id;
$.ajax({
url:"/repository/findRelevancyByDepository",
type:"post",
dataType:"json",
data:JSON.stringify(req),
url: "/repository/findRelevancyByDepository",
type: "post",
dataType: "json",
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (data) {
if(data.data){
if (data.data) {
layer.msg("该仓库尚有记录无法删除", {
icon: 7,
time: 500 //1秒关闭(如果不配置,默认是3秒)
},function(){
}, function () {
// 执行重加载
table.reload('currentTableId', {
url: '/repository/warehouseRecord',
page: {
curr: 1
},
where: {"parentId":parentId}
where: {"parentId": parentId}
});
})
}else{
} else {
layer.confirm('真的删除么', {icon: 2, title: '提示'}, function (index) {
$.ajax({
url: '/repository/depository_del',
dataType:'json',
type:'POST',
dataType: 'json',
type: 'POST',
contentType: "application/json;charset=utf-8",
data:JSON.stringify(req),
beforeSend:function () {
this.layerIndex = layer.load(0, { shade: [0.5, '#393D49'] });
data: JSON.stringify(req),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success:function(data){
success: function (data) {
layer.close(this.layerIndex);
if(data.status >= 300){
if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情
return;
}else{
} else {
obj.del();
layer.msg("删除成功", {
icon: 6,//成功的表情
@ -307,8 +331,7 @@
}
}
});
}
else if (obj.event === 'detail'){
} else if (obj.event === 'detail') {
var index = layer.open({
title: '仓库信息详情',
type: 2,
@ -316,57 +339,69 @@
maxmin: true,
shadeClose: true,
area: ['100%', '100%'],
content: '/warehouse_view?id='+data.id,
content: '/warehouse_view?id=' + data.id,
end:function () {
req = {}
req.parentId = parentId
//执行搜索重载
table.reload('currentTableId', {
url: '/repository/warehouseRecord',
page: {
curr: 1
},
where: req
}, 'data');
return false;
}
});
$(window).on("resize", function () {
layer.full(index);
});
return false;
}
else if (obj.event == 'realDelete'){ // 彻底删除
var req={};
req.id=data.id;
} else if (obj.event == 'realDelete') { // 彻底删除
var req = {};
req.id = data.id;
$.ajax({
url:"/repository/findRelevancyByDepository",
type:"post",
dataType:"json",
data:JSON.stringify(req),
url: "/repository/findRelevancyByDepository",
type: "post",
dataType: "json",
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (data) {
var hasSon = data.data
if(hasSon){ // 若当前仓库及子仓库有关联信息
if (hasSon) { // 若当前仓库及子仓库有关联信息
layer.msg("该仓库尚有记录无法删除", {
icon: 7,
time: 500 //1秒关闭(如果不配置,默认是3秒)
},function(){
}, function () {
// 执行重加载
table.reload('currentTableId', {
url: '/repository/warehouseRecord',
page: {
curr: 1
},
where: {"parentId":parentId}
where: {"parentId": parentId}
});
})
}else{
} else {
layer.confirm('该操作会造成不可逆后果,是否继续?', {
btn: ['继续','取消'] //按钮
}, function(){
btn: ['继续', '取消'] //按钮
}, function () {
$.ajax({
url: '/repository/realDeleteDepository',
dataType:'json',
type:'POST',
dataType: 'json',
type: 'POST',
contentType: "application/json;charset=utf-8",
data:JSON.stringify(req),
beforeSend:function () {
this.layerIndex = layer.load(0, { shade: [0.5, '#393D49'] });
data: JSON.stringify(req),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success:function(data){
success: function (data) {
layer.close(this.layerIndex);
if(data.status >= 300){
if (data.status >= 300) {
layer.msg(data.statusInfo.message);//失败的表情
return;
}else{
} else {
obj.del();
layer.msg("删除成功", {
icon: 6,//成功的表情
@ -375,22 +410,21 @@
}
}
})
},function (){
}, function () {
// 执行重加载
table.reload('currentTableId', {
url: '/repository/warehouseRecord',
page: {
curr: 1
},
where: {"parentId":parentId}
where: {"parentId": parentId}
});
});
}
}
})
}
else if (obj.event == 'manager'){
} else if (obj.event == 'manager') {
layer.open({
type: 2,
title: '仓管员信息',
@ -398,35 +432,35 @@
shade: false,
maxmin: true, //开启最大化最小化按钮
area: ['893px', '600px'],
content: '/ManagerView?id='+data.id
content: '/ManagerView?id=' + data.id
});
}
});
//监听状态操作
form.on('switch(changeState)', function(obj){
form.on('switch(changeState)', function (obj) {
// 首先发送请求判断待禁用的仓库是否还有货物,如果没有就直接禁用,否则进行判断
var hasMaterial = false
var req = new Map
if(obj.elem.checked){
if (obj.elem.checked) {
req["state"] = 1
}
req["id"] = this.value
console.log(req)
if(req["state"] == undefined){// 如果禁用
if (req["state"] == undefined) {// 如果禁用
$.ajax({
url:"/repository/findMaterialByDepository?depositoryId="+this.value,
type:"get",
dataType:"json",
url: "/repository/findMaterialByDepository?depositoryId=" + this.value,
type: "get",
dataType: "json",
contentType: "application/json;charset=utf-8",
success: function (data) {
hasMaterial = data.data
// 子仓库下是否有物品
if(hasMaterial){ // 有
if (hasMaterial) { // 有
layer.confirm('仓库下还有物品,确定封库?', {
btn: ['封库','取消'] //按钮
}, function(){
btn: ['封库', '取消'] //按钮
}, function () {
req["envelop"] = 1 // 封库操作
$.ajax({
url: "/repository/EditDepositoryState",
@ -446,32 +480,30 @@
layer.msg("封库成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
},function(){
}, function () {
// 执行重加载
table.reload('currentTableId', {
url: '/repository/warehouseRecord',
page: {
curr: 1
},
where: {"parentId":parentId}
where: {"parentId": parentId}
});
})
}
}
})
},function (){
}, function () {
// 执行重加载
table.reload('currentTableId', {
url: '/repository/warehouseRecord',
page: {
curr: 1
},
where: {"parentId":parentId}
where: {"parentId": parentId}
});
});
}
else{
console.log(JSON.stringify(req))
} else {
$.ajax({
url: "/repository/EditDepositoryState",
type: 'post',
@ -490,14 +522,14 @@
layer.msg("修改成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
},function(){
}, function () {
// 执行重加载
table.reload('currentTableId', {
url: '/repository/warehouseRecord',
page: {
curr: 1
},
where: {"parentId":parentId}
where: {"parentId": parentId}
});
})
}
@ -506,7 +538,7 @@
}
}
})
} else{ // 如果启用
} else { // 如果启用
$.ajax({
url: "/repository/EditDepositoryState",
type: 'post',
@ -525,7 +557,7 @@
layer.msg("修改成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
},function(){
}, function () {
// window.location='/findWareHouseByParentId?parentId=0'+parentId
// 执行重加载
table.reload('currentTableId', {
@ -533,7 +565,7 @@
page: {
curr: 1
},
where: {"parentId":parentId}
where: {"parentId": parentId}
});
})
}

69
src/main/resources/templates/pages/warehouse/depository_add.html

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml">
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>layui</title>
@ -27,22 +27,30 @@
name="dname" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-item" style="display: inline-block">
<label class="layui-form-label">所处公司:</label>
<div class="layui-input-block">
<select name="cid" >
<select name="cid" lay-filter="company">
<option value="" selected>请选择公司</option>
<option th:each="administrationP,iterStar:${administrationPList}" th:value="${administrationP?.getId()}" th:text="${administrationP?.getName()}" >外芯仓库</option>
</select>
</div>
</div>
<div class="layui-inline" style="display: inline-block">
<label class="layui-form-label">部门</label>
<div class="layui-input-inline">
<select name="adminorg" id="adminorg"></select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">父级仓库:</label>
<div class="layui-input-block">
<select name="parentId" >
<!-- <select name="parentId" >
<option value="" selected>请选择仓库</option>
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}" >外芯仓库</option>
</select>
</select>-->
<input type="text" placeholder="请选择仓库" class="layui-input" id="openSonByDepository" readonly />
<input type="text" name="depositoryId" class="layui-input" id="depositoryId" style="display: none" />
</div>
</div>
<div class="layui-form-item">
@ -59,6 +67,20 @@
class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最大存储量:</label>
<div class="layui-input-block">
<input name="maxNumber" placeholder="请填写最大存储量..."
class="layui-input" value="500"></input>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最小存储量:</label>
<div class="layui-input-block">
<input name="minNumber" placeholder="请填写最小存储量..."
class="layui-input" value="0"></input>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
@ -85,6 +107,41 @@
form = layui.form,
layer = layui.layer;
form.on('select(company)',function (data){
$.ajax({
url:"/repository/findPostByCompany?company=0"+data.value,
type:'get',
dataType:'json',
contentType: "application/json;charset=utf-8",
success:function(d){
if(data.value != "") {
$('#adminorg').empty();
$('#adminorg').append(new Option("请选择部门", ""));
$.each(d.data, function (index, item) {
$('#adminorg').append(new Option(item.name, item.id));//往下拉菜单里添加元素
});
form.render();
}else{
$('#adminorg').empty();
form.render();
}
}
})
});
$('#openSonByDepository').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectDepository?type=2',
});
});
form.on('submit(formStep)', function (data) {
$.ajax({
@ -105,6 +162,8 @@
layer.msg("添加成功!", {
icon: 6,//成功的表情
time: 1000 //1秒关闭(如果不配置,默认是3秒)
},function () {
window.location="/depository_add"
});
}

8
src/main/resources/templates/pages/warehouse/manager.html

@ -43,7 +43,6 @@
, countName: 'count' //规定数据总数的字段名称,默认:count
, dataName: 'data' //规定数据列表的字段名称,默认:data
}
, page: true //开启分页
, cols: [
[ //表头
{field: 'id', width: 80, title: 'ID', sort: true},
@ -57,6 +56,8 @@
return "女性";
} else if (d.gender == 3) {
return "中性"
}else{
return "";
}
}
},
@ -81,7 +82,9 @@
case 4:
return "有生理缺陷";
case 5:
return "残废"
return "残废";
default:
return "";
}
}
},
@ -98,7 +101,6 @@
page: true,
skin: 'line'
});
});
</script>
</body>

58
src/main/resources/templates/pages/warehouse/warehouse_view.html

@ -13,27 +13,42 @@
<body>
<form class="layui-form" action="" >
<div class="layui-form-item">
<div class="layui-form-item" style="display: none">
<label class="layui-form-label">仓库编号</label>
<div class="layui-input-block">
<input type="text" th:value="${record.getId()}" name="id" required lay-verify="required" autocomplete="off" class="layui-input" readonly="readonly">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">仓库编码</label>
<div class="layui-input-block">
<input type="text" th:value="${record.getCode()}" name="code" autocomplete="off" class="layui-input" readonly="readonly">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">仓库名称</label>
<div class="layui-input-inline">
<input type="text" th:value="${record.getDname()}" name="dname" required lay-verify="required" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-item" style="display: inline-block">
<label class="layui-form-label">所处公司</label>
<div class="layui-input-inline">
<select name="cid" th:value="${record.getCid()}" lay-verify="required">
<select name="cid" th:value="${record.getCid()}" lay-verify="required" lay-filter="company">
<option value="">请选择公司</option>
<option th:each="administrationP,iterStar:${administrationPList}" th:value="${administrationP?.getId()}" th:text="${administrationP?.getName()}" th:selected="${record.getCid() == administrationP.getId()}">外芯仓库</option>
</select>
</div>
</div>
<div class="layui-form-item" style="display: inline-block">
<label class="layui-form-label">部门</label>
<div class="layui-input-inline">
<select name="adminorg" id="adminorg">
<option value="">请选择部门</option>
<option th:each="post,iterStar:${postList}" th:text="${post?.getName()}" th:value="${post?.getId()}" th:selected="${record.getAdminorg().equals(post.getId().toString())}"></option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">仓库地址</label>
<div class="layui-input-block">
@ -55,6 +70,18 @@
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最大存储量</label>
<div class="layui-input-block">
<input type="text" th:value="${record.getMaxNumber()}" name="maxNumber" required lay-verify="required" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最小存储量</label>
<div class="layui-input-block">
<input type="text" th:value="${record.getMinNumber()}" name="minNumber" required lay-verify="required" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item" style="display: none">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
@ -72,6 +99,29 @@
<script>
layui.use('form', function(){
var form = layui.form, $ = layui.$;
form.on('select(company)',function (data){
$.ajax({
url:"/repository/findPostByCompany?company=0"+data.value,
type:'get',
dataType:'json',
contentType: "application/json;charset=utf-8",
success:function(d){
if(data.value != "") {
$('#adminorg').empty();
$('#adminorg').append(new Option("请选择部门", ""));
$.each(d.data, function (index, item) {
$('#adminorg').append(new Option(item.name, item.id));//往下拉菜单里添加元素
});
form.render();
}else{
$('#adminorg').empty();
form.render();
}
}
})
});
//提交
form.on('submit(formDemo)', function(data){
data = data.field
@ -94,6 +144,8 @@
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
},function(){
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);//关闭当前页
window.location='/depository-out'
})
}

172
src/test/java/com/dreamchaser/depository_manage/Test.java

@ -2,193 +2,39 @@ package com.dreamchaser.depository_manage;
import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.controller.DepositoryController;
import com.dreamchaser.depository_manage.entity.Depository;
import com.dreamchaser.depository_manage.entity.Material;
import com.dreamchaser.depository_manage.entity.MaterialType;
import com.dreamchaser.depository_manage.entity.Md5Encryption;
import com.dreamchaser.depository_manage.mapper.DepositoryRecordMapper;
import com.dreamchaser.depository_manage.mapper.RoleMapper;
import com.dreamchaser.depository_manage.mapper.MaterialTypeMapper;
import com.dreamchaser.depository_manage.pojo.MaterialP;
import com.dreamchaser.depository_manage.service.DepositoryRecordService;
import com.dreamchaser.depository_manage.service.DepositoryService;
import com.dreamchaser.depository_manage.service.MaterialService;
import com.dreamchaser.depository_manage.service.MaterialTypeService;
import com.dreamchaser.depository_manage.utils.DateUtil;
import lombok.extern.java.Log;
import com.dreamchaser.depository_manage.utils.*;
import lombok.extern.log4j.Log4j2;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.test.context.junit4.SpringRunner;
import org.xmlunit.util.Convert;
import java.sql.SQLOutput;
import java.text.SimpleDateFormat;
import javax.swing.*;
import java.util.*;
import java.util.concurrent.TimeUnit;
@Log4j2
@RunWith(SpringRunner.class)
@SpringBootTest(classes = DepositoryManageApplication.class)
public class Test {
@Autowired(required = false)
private RedisTemplate redisTemplate;
@Autowired
private DepositoryService depositoryService;
@Autowired
private DepositoryRecordService depositoryRecordService;
@Autowired
private MaterialTypeService materialTypeService;
/**
* {
* "title": '江西'
* ,"id": 1
* ,"children": [{
* title: '南昌'
* ,id: 1000
* ,children: [{
* title: '青山湖区'
* ,id: 10001
* },{
* title: '高新区'
* ,id: 10002
* }]
* },{
* title: '九江'
* ,id: 1001
* },{
* title: '赣州'
* ,id: 1002
* }]
* }
*/
// 材料类型选择
@org.junit.Test
public void test1(){
List<MaterialType> materialTypeNoParent = materialTypeService.findMaterialTypeNoParent();
List<Object> list = new ArrayList<>();
for (int i = 0; i < materialTypeNoParent.size(); i++) {
MaterialType mt = materialTypeNoParent.get(i);
List<Object> childForMaterialTypeByParent = findChildForMaterialTypeByParent(mt.getId());
Map<String, Object> stringObjectMap = InitTreeMenus(mt,childForMaterialTypeByParent);
list.add(stringObjectMap);
}
String s = JSONObject.toJSONString(list);
System.out.println(s);
}
// 构造树形组件数据模板
public Map<String,Object> InitTreeMenus(MaterialType mt,List<Object> children){
if(mt != null) {
Map<String, Object> map = new HashMap<>();
map.put("title", mt.getTname());
map.put("id", mt.getId());
map.put("children",children);
return map;
}
else{
return null;
}
}
// 构造树形组件数据模板
public Map<String,Object> InitTreeMenus2(Depository d,List<Object> children){
if(d != null) {
Map<String, Object> map = new HashMap<>();
map.put("title", d.getDname());
map.put("id", d.getId());
map.put("children",children);
return map;
}
else{
return null;
}
}
// 判断是否有子类
public boolean isChildForMaterialType(Integer id){
boolean flag = false;
Map<String,Object> param = new HashMap<>();
param.put("parentId",id);
Integer count = materialTypeService.findMaterialTypeCountByCondition(param);
if(count > 0){
flag = true;
}
return flag;
}
// 根据id获取子类
public List<Object> findChildForMaterialTypeByParent(Integer id){
Map<String,Object> param = new HashMap<>();
List<Object> result = new ArrayList<>();
param.put("parentId",id);
// 获取当前父类的子类
List<MaterialType> materialTypeByCondition = materialTypeService.findMaterialTypeByCondition(param);
if(materialTypeByCondition.size() > 0){
for (int i = 0; i < materialTypeByCondition.size(); i++) {
MaterialType mt = materialTypeByCondition.get(i);
List<Object> childForMaterialTypeByParent = findChildForMaterialTypeByParent(mt.getId());
result.add(InitTreeMenus(mt,childForMaterialTypeByParent));
}
return result;
}else{
return null;
}
}
// 仓库种类选择
@org.junit.Test
public void test2(){
Map<String,Object> param = new HashMap<>();
param.put("parentId",0);
List<Depository> depositories = depositoryService.findDepositoryRecordPByCondition(param);
List<Object> list = new ArrayList<>();
for (int i = 0; i < depositories.size(); i++) {
Depository d = depositories.get(i);
List<Object> childForMaterialTypeByParent = findChildForDepositoryByParent(d.getId());
Map<String, Object> stringObjectMap = InitTreeMenus2(d,childForMaterialTypeByParent);
list.add(stringObjectMap);
}
String s = JSONObject.toJSONString(list);
System.out.println(s);
}
//判断是否有子类
public boolean isChildForDepository(Integer parentId){
boolean flag = false;
List<Depository> parentByDepository = depositoryService.getParentByDepository(parentId);
if(parentByDepository.size() > 0 ){
flag = true;
}
return flag;
}
}
// 根据id获取子类
public List<Object> findChildForDepositoryByParent(Integer id){
Map<String,Object> param = new HashMap<>();
List<Object> result = new ArrayList<>();
param.put("parentId",id);
// 获取当前父类的子类
List<Depository> parentByDepository = depositoryService.getParentByDepository(id);
if(parentByDepository.size() > 0){
for (int i = 0; i < parentByDepository.size(); i++) {
Depository d = parentByDepository.get(i);
List<Object> childForMaterialTypeByParent = findChildForDepositoryByParent(d.getId());
result.add(InitTreeMenus2(d,childForMaterialTypeByParent));
}
return result;
}else{
return null;
}
}
}

23
target/classes/application-test.yml

@ -55,17 +55,6 @@ spring:
removeAbandoned: true
removeAbandonedTimeout: 1800
logAbandoned: true
redis:
host: 127.0.0.1
port: 6379
lettuce:
shutdown-timeout: 1000
pool:
max-active: 0
max-wait: -1
max-idle: 8
min-idle: 0
timeout: 500
banner:
location: banner.txt
thymeleaf:
@ -79,6 +68,18 @@ spring:
prefix: /templates/
suffix: .html
static-path-pattern: /static/**
redis:
port: 6379
host: 127.0.0.1
database: 0
jedis:
pool:
max-active: 8
max-wait: 50ms
max-idle: 8
min-idle: 0
timeout: 2000ms
# resources:
# static-locations: classpath:/static/
server:

85
target/classes/com/dreamchaser/depository_manage/mapper/DepositoryMapper.xml

@ -12,17 +12,21 @@
<result column="introduce" property="introduce" jdbcType="VARCHAR" />
<result column="parentId" property="parentId" jdbcType="INTEGER"/>
<result column="cid" property="cid" jdbcType="INTEGER"/>
<result column="code" property="code" jdbcType="VARCHAR"/>
<result column="adminorg" property="adminorg" jdbcType="VARCHAR"/>
<result column="minNumber" property="minNumber" jdbcType="INTEGER"/>
<result column="maxNumber" property="maxNumber" jdbcType="INTEGER"/>
</resultMap>
<!-- This code was generated by TableGo tools, mark 1 end. -->
<!-- This code was generated by TableGo tools, mark 2 begin. -->
<!-- 表查询字段 -->
<sql id="allColumns">
d.id, d.dname, d.address, d.introduce,d.state,d.parentId,d.cid
d.id, d.dname, d.address, d.introduce,d.state,d.parentId,d.cid,d.code,d.adminorg,d.maxNumber,d.minNumber
</sql>
<!-- 视图查询字段-->
<sql id="depositoryAndCompany">
id,dname,address,introduce,state,parentId,cid,cname
id,dname,address,introduce,state,parentId,cid,cname,code,adminorg,minNumber,maxNumber
</sql>
<!-- This code was generated by TableGo tools, mark 2 end. -->
@ -49,6 +53,17 @@
Where dc.state != 3
</select>
<!-- 获取当前部门仓库以及公共仓库-->
<select id="findDepositoryByAdminorg" resultMap="depositoryMap" parameterType="string">
SELECT
<include refid="allColumns" />
FROM depository d WHERE 1 = 1
<if test="adminorg != null and adminorg != ''">
and d.adminorg = #{adminorg}
</if>
or d.adminorg = ''
</select>
<!-- 根据主键查询多个数据-->
<select id="selectDepositoryRecordByIds" parameterType="list" resultMap="depositoryMap">
@ -85,36 +100,11 @@
<if test="cid != null">
and d.cid = #{cid}
</if>
AND d.state != 3
</select>
<!-- 根据条件查询数据列表-->
<!--<select id="findDepositoryRecordPByCondition" resultMap="depositoryMap" parameterType="map">
SELECT
<include refid="depositoryAndCompany" />
FROM depositoryandcompany d WHERE 1 = 1
<if test="depositoryId != null">
AND d.id = #{depositoryId}
</if>
<if test="dname != null and dname != ''">
AND d.dname LIKE CONCAT('%', #{dname}, '%')
</if>
<if test="address != null and address != ''">
AND d.address LIKE CONCAT('%', #{address}, '%')
</if>
<if test="introduce != null and introduce != ''">
AND d.introduce LIKE CONCAT('%', #{introduce}, '%')
</if>
<if test="state != null and state != '' ">
AND d.state = #{state}
</if>
<if test="parentId != null">
AND d.parentId = #{parentId}
</if>
<if test="cid != null">
and d.cid = #{cid}
<if test="adminorg != null">
and (d.adminorg = #{adminorg} or d.adminorg = '')
</if>
AND d.state != 3
</select>-->
</select>
<!-- 根据条件参数查询数据列表数目 -->
<select id="findCountByCondition" resultType="int" parameterType="map">
@ -138,6 +128,9 @@
<if test="cid != null">
and d.cid = #{cid}
</if>
<if test="adminorg != null">
and d.adminorg = #{adminorg}
</if>
AND d.state != 3
</select>
@ -161,14 +154,18 @@
<!-- 插入数据 -->
<insert id="insertDepository" parameterType="map">
INSERT INTO depository (
id, dname, address, introduce,parentId,cid
id, dname, address, introduce,parentId,cid,code,adminorg,maxNumber,minNumber
) VALUES (
#{id},
#{dname},
#{address},
#{introduce},
#{parentId},
#{cid}
#{cid},
#{code},
#{adminorg},
#{maxNumber},
#{minNumber}
)
</insert>
@ -208,7 +205,19 @@
parentId = #{parentId},
</if>
<if test="cid != null">
cid = #{cid}
cid = #{cid},
</if>
<if test="adminorg != null">
adminorg = #{adminorg},
</if>
<if test="code != null">
code = #{code},
</if>
<if test="minNumber != null and minNumber != ''">
minNumber = #{minNumber},
</if>
<if test="maxNumber != null and maxNumber != ''">
maxNumber = #{maxNumber}
</if>
</set>
WHERE id = #{id}
@ -291,10 +300,16 @@
where d.state != 3
</select>
<select id="getToDayInventoryByDName" resultType="double" parameterType="string">
<select id="getToDayInventoryByDName" resultType="double" parameterType="map">
select ifnull(sum(quantity),0.0)
from depositoryAndmaterial
where dname = #{dname}
where 1 = 1
<if test="dname != null and dname !=''">
and dname = #{dname}
</if>
<if test="dcode != null and dcode !=''">
and dcode = #{dcode}
</if>
</select>

18
target/classes/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml

@ -55,6 +55,13 @@
<result column="dname" property="depositoryName" jdbcType="VARCHAR" />
<result column="applicant_id" property="applicantId" jdbcType="INTEGER" />
<result column="applyRemark" property="applyRemark" jdbcType="INTEGER" />
<result column="aircode" property="aircode" jdbcType="VARCHAR" />
<result column="mcode" property="mcode" jdbcType="VARCHAR" />
<result column="mversion" property="mversion" jdbcType="VARCHAR" />
<result column="munit" property="munit" jdbcType="VARCHAR" />
<result column="mtexture" property="mtexture" jdbcType="VARCHAR" />
<result column="mkingdeecode" property="mkingdeecode" jdbcType="VARCHAR" />
<result column="mdepositoryCode" property="mdepositoryCode" jdbcType="VARCHAR" />
</resultMap>
<!-- 插入出库记录-->
@ -81,6 +88,7 @@
<result column="aorstate" property="state" jdbcType="VARCHAR" />
<result column="istransfer" property="istransfer" jdbcType="INTEGER" />
<result column="transferId" property="transferId" jdbcType="INTEGER" />
<result column="mcode" property="mcode" jdbcType="VARCHAR" />
</resultMap>
@ -110,12 +118,12 @@
</sql>
<sql id="ApplicationInRecordInfo">
airid,mname,quantity,price,tname,applicant_time,aircode,dname,applicant_id,applyRemark
airid,mname,quantity,price,tname,applicant_time,aircode,dname,applicant_id,applyRemark,mcode,mversion,munit,mtexture,mkingdeecode,mdepositoryCode
</sql>
<sql id="ApplicationOutRecordInfo">
aorid,mid,mname,depositoryId,dname,applicantId,applicantTime,applyRemark,aorcode,aorpirce,aorquantity,departmenthead,departmentheadPass,departmentHeadTime,departmentheadMessage,
depositoryManager,depositoryManagerPass,depositoryManagerTime,depositoryManagerMessage,aorstate,istransfer,transferId
depositoryManager,depositoryManagerPass,depositoryManagerTime,depositoryManagerMessage,aorstate,istransfer,transferId,mcode
</sql>
<!-- 查询所有数据行数 -->
<select id="findCount" resultType="integer">
@ -398,9 +406,6 @@
<if test="applicantTime != null and applicantTime != ''">
and applicant_time >= #{applicantTime}
</if>
<if test="begin != null and size != null">
LIMIT #{begin},#{size}
</if>
</select>
<!-- 根据条件查询出库记录数-->
@ -463,9 +468,6 @@
<if test="istransfer != null and istransfer != ''">
and istransfer = #{istransfer}
</if>
<if test="begin != null and size != null">
LIMIT #{begin},#{size}
</if>
</select>

26
target/classes/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml

@ -55,12 +55,12 @@
<!-- 表查询字段,包括材料类型 -->
<sql id="allColumnsAndTypeName">
m.id,m.depository_id,m.mname,m.quantity,m.price,m.type_id,m.state,m.code ,m.version ,m.amounts ,m.unit ,m.texture,mt.tname,m.depositoryCode,d.dname
id,depository_id,mname,quantity,price,type_id,state,code ,version ,amounts ,unit ,texture,tname,depositoryCode,dname
</sql>
<!-- 表查询字段,包括材料类型 用于视图-->
<sql id="allColumnsAndTypeNameOnView">
id,depository_id,mname,quantity,price,type_id,state,tname,dname,version,amounts ,unit ,texture,code,depositoryCode
id,depository_id,mname,quantity,price,type_id,state,tname,dname,version,amounts ,unit ,texture,code,depositoryCode,depository_id
</sql>
<!-- 查询所有数据的条数 -->
<select id="findCount" resultType="integer">
@ -120,11 +120,27 @@
<if test="state != null and state != ''">
And state = #{state}
</if>
<if test="code != null and code != '' ">
and code = #{code}
</if>
<if test="begin != null and size != null">
LIMIT #{begin},#{size}
</if>
</select>
<!-- 根据仓库查询材料-->
<select id="findMaterialByDepositorys" resultMap="materialMap" parameterType="list">
SELECT
<include refid="allColumns" />
from material m
where m.depository_id in
<foreach collection="list" index="index" item="item" open="("
separator="," close=")">
#{item}
</foreach>
</select>
<!-- 根据主键查询数据 -->
<select id="findMaterialById" resultMap="materialMap" parameterType="integer">
SELECT
@ -135,10 +151,8 @@
<select id="findMaterialAndTypeById" resultMap="materialAndTypeMap" parameterType="integer">
select
<include refid="allColumnsAndTypeName"/>
from material m ,material_type mt,depository d
where m.id = #{id}
and m.depository_id = d.id
and m.type_id = mt.id
from materialAndType
where id = #{id}
</select>
<!-- 根据主键查询数据 -->

53
target/classes/com/dreamchaser/depository_manage/mapper/RoleMapper.xml

@ -19,12 +19,15 @@
</resultMap>
<resultMap id="depositoryAndrole" type="com.dreamchaser.depository_manage.pojo.RoleAndDepository">
<result column="prid" property="id" jdbcType="INTEGER"/>
<result column="userId" property="userId" jdbcType="INTEGER"/>
<result column="roleName" property="roleName" jdbcType="VARCHAR"/>
<result column="depositoryName" property="depositoryName" jdbcType="VARCHAR"/>
<result column="depositoryAddress" property="depositoryAddress" jdbcType="VARCHAR"/>
<result column="depositoryIntroduce" property="depositoryIntroduce" jdbcType="VARCHAR"/>
<result column="depositoryState" property="depositoryState" jdbcType="VARCHAR"/>
<result column="did" property="depositoryId" jdbcType="VARCHAR"/>
<result column="classes" property="classes" jdbcType="INTEGER"/>
</resultMap>
<sql id="allColumns">
@ -32,7 +35,7 @@
</sql>
<sql id="roleNameAnddepositoryName">
userid as userId,name as roleName,dname as depositoryName,address as depositoryAddress ,introduce as depositoryIntroduce,state as depositoryState
prid,userid as userId,name as roleName,dname as depositoryName,address as depositoryAddress ,introduce as depositoryIntroduce,state as depositoryState,did,classes
</sql>
<select id="findAllRole" resultMap="roleMap">
@ -52,7 +55,22 @@
</if>
</set>
where userid = #{userid}
</update>
<update id="UpdateRoleAndDepositoryById" parameterType="map">
update postoruserrole
<set>
<if test="authority != null and authority != ''">
role = #{authority},
</if>
<if test="depositoryId != null and depositoryId != ''">
did = #{depositoryId},
</if>
<if test="classes != null and classes != ''">
classes = #{classes}
</if>
</set>
where id = #{roleId}
</update>
<insert id="addUserOrPostRoleAndDepository" parameterType="map">
@ -76,14 +94,43 @@
</select>
<select id="findRoleByUid" parameterType="int" resultType="int">
select rid from userandrole where uid = #{uid}
select role from postoruserrole where userid = #{uid} and classes = 1
</select>
<select id="findUserIdByDid" parameterType="int" resultType="int">
select userid from postoruserrole where classes = 1 and did = #{did}
select userid from postoruserrole where 1 = 1 and did = #{did}
</select>
<select id="findRoleAndDepositoryByCondition" parameterType="map" resultMap="depositoryAndrole">
select
<include refid="roleNameAnddepositoryName"/>
from userroleanddepository
where 1 = 1
<if test="depositoryId != null and depositoryId != ''">
and did = #{depositoryId}
</if>
<if test="userId != null and userId != ''">
and userId = #{userId}
</if>
<if test="classes != null and classes != ''">
and classes = #{classes}
</if>
</select>
<select id="findRoleAndDepositoryById" parameterType="int" resultMap="depositoryAndrole">
select
<include refid="roleNameAnddepositoryName"/>
from userroleanddepository
where prid = #{id}
</select>
<delete id="deleteRoleAndDepositoryById" parameterType="int">
delete from postoruserrole WHERE id = #{id}
</delete>

15
target/classes/templates/index.html

@ -167,9 +167,22 @@
});
$('.login-out').on("click", function () {
layer.msg('退出登录成功', function () {
$.ajax({
url:"/loginOut",
type: 'get',
dataType: 'json',
contentType: "application/json;charset=utf-8",
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (data) {
layer.close(this.layerIndex);
layer.msg(data.statusInfo.message, function () {
window.location = '/login';
});
}
});
});
});
</script>

158
target/classes/templates/pages/application/application-in.html

@ -16,37 +16,51 @@
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-body" style="padding-top: 40px;">
<!-- 入库申请提交-->
<div class="layui-carousel" id="stepForm" lay-filter="stepForm" style="margin: 0 auto;">
<div carousel-item>
<div>
<form class="layui-form" style="margin: 0 auto;max-width: 460px;padding-top: 40px;">
<div class="layui-form-item">
<label class="layui-form-label">材料名称:</label>
<div class="layui-input-inline">
<input type="text" placeholder="请选择材料" class="layui-input"
id="openSonByMaterial"
lay-verify="required"/>
<input type="text" name="mid" class="layui-input" id="mid"
style="display: none" lay-verify="required" />
</div>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial"></i>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材料编码:</label>
<div class="layui-input-block">
<!-- <input name="mname" type="text" placeholder="请填写材料名称" class="layui-input" lay-verify="required" />-->
<select name="mid" lay-verify="required">
<option th:each="Material,iterStar:${materials}" th:value="${Material?.getId()}" th:text="${Material?.getMname()}" selected>天玑1000</option>
</select>
<input id="code" name="code" type="text" placeholder="请填写入材料编码" value=""
class="layui-input" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材料数量:</label>
<div class="layui-input-block">
<input name="quantity" type="number" placeholder="请填写入材料数量" value="" class="layui-input" lay-verify="number" required>
<input name="quantity" type="number" placeholder="请填写入材料数量" value=""
class="layui-input" lay-verify="number">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">仓库:</label>
<div class="layui-input-block">
<select name="depositoryId" lay-verify="required">
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}" selected>外芯仓库</option>
</select>
<input type="text" placeholder="请选择仓库" class="layui-input"
id="openSonByDepository" readonly
lay-verify="required"/>
<input type="text" name="depositoryId" class="layui-input" id="depositoryId"
style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">备注说明:</label>
<div class="layui-input-block">
<textarea name="applyRemark" placeholder="请填写相关原因及申请原因" value="" class="layui-textarea"></textarea>
<textarea name="applyRemark" placeholder="请填写相关原因及申请原因" value=""
class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
@ -85,11 +99,109 @@
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script src="/static/js/lay-config.js?v=1.0.4" charset="utf-8"></script>
<script>
layui.use([ 'form', 'step'], function () {
layui.use(['form', 'step'], function () {
var $ = layui.$,
form = layui.form,
step = layui.step;
$("#code").blur(function () {
var code = $(this).val();
$.ajax({
url: "/material/findMatrialByCode?code=" + code,
type: "get",
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var d = d.data;
if(d == null){
layer.msg("没有该编码,请确认是否输入正确");
$("#openSonByMaterial").val("");
$("#mid").val("");
$("#code").val("");
}else{
$("#openSonByMaterial").val(d.mname);
$("#mid").val(d.id);
}
}
});
});
$("#openSonByMaterial").blur(function () {
var data = $(this).val();
var req = {};
req.mname = data;
$.ajax({
url: "/material/findMaterialByCondition",
type: "post",
dataType: 'json',
data:JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
if(d.count > 1){
layer.msg("请点击右侧搜索确定物品");
$("#mid").val("");
$("#code").val("");
return false;
}else if(d.count === 0){
layer.msg("没有该物品,请确认输入是否正确");
$("#mid").val("");
$("#code").val("");
$("#openSonByMaterial").val("");
return false;
}
else{
var material = d.data[0];
$("#openSonByMaterial").val(material.mname)
$("#mid").val(material.id);
$("#code").val(material.code);
}
}
});
})
$('#openSonByDepository').on('click', function () {
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
content: '/selectDepository?type=1',
});
});
$('#selectMaterial').on('click', function () {
var mname = $("#openSonByMaterial").val();
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
content: '/selectMaterial?mname='+mname+'&type=1',
end: function () {
var mid = $("#mid").val();
$.ajax({
url: "/material/findMatrialById?mid=" + mid,
type: "get",
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var code = d.data.code
$("#code").val(code)
}
});
}
});
});
step.render({
elem: '#stepForm',
filter: 'stepForm',
@ -105,27 +217,27 @@
form.on('submit(formStep)', function (data) {
data=data.field;
data.type=1;
data = data.field;
data.type = 1;
$.ajax({
url:"/depositoryRecord/applicationIn",
type:'post',
dataType:'json',
url: "/depositoryRecord/applicationIn",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data:JSON.stringify(data),
beforeSend:function () {
this.layerIndex = layer.load(0, { shade: [0.5, '#393D49'] });
data: JSON.stringify(data),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success:function(data){
success: function (data) {
layer.close(this.layerIndex);
if(data.status >= 300){
layer.msg(data.statusInfo.message);//失败的表情
if (data.status >= 300) {
layer.msg(data.statusInfo.detail);//失败的表情
return;
}else{
} else {
layer.msg("申请提交成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
}, function(){
}, function () {
step.next('#stepForm');
});
}

185
target/classes/templates/pages/application/application-in_back.html

@ -16,52 +16,57 @@
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-body" style="padding-top: 40px;">
<!-- 入库申请提交-->
<div class="layui-carousel" id="stepForm" lay-filter="stepForm" style="margin: 0 auto;">
<div carousel-item>
<div>
<form class="layui-form" style="margin: 0 auto;max-width: 460px;padding-top: 40px;">
<div class="layui-form-item">
<label class="layui-form-label">材料名称:</label>
<div class="layui-input-block">
<!-- <input name="mname" type="text" placeholder="请填写材料名称" class="layui-input" lay-verify="required" />-->
<select name="mname" lay-verify="required">
<option th:each="Material,iterStar:${materials}" th:value="${Material?.getMname()}" th:text="${Material?.getMname()}" selected>天玑1000</option>
</select>
<div class="layui-input-inline">
<input type="text" th:value="${materialById.getMname()}" placeholder="请选择材料" class="layui-input"
id="openSonByMaterial"
lay-verify="required"/>
<input type="text" th:value="${materialById.getId()}" name="mid" class="layui-input" id="mid"
style="display: none" lay-verify="required" />
</div>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial"></i>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材料数量:</label>
<label class="layui-form-label">材料编码:</label>
<div class="layui-input-block">
<input name="quantity" type="number" placeholder="请填写入材料数量" value="" class="layui-input" lay-verify="number" required>
<input id="code" name="code" th:value="${materialById.getCode()}" type="text" placeholder="请填写入材料编码" value=""
class="layui-input" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">仓库:</label>
<label class="layui-form-label">材料数量:</label>
<div class="layui-input-block">
<select name="depositoryId" lay-verify="required">
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}" selected>外芯仓库</option>
</select>
<input name="quantity" type="number" placeholder="请填写入材料数量" value=""
class="layui-input" lay-verify="number">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">审核人:</label>
<label class="layui-form-label">仓库:</label>
<div class="layui-input-block">
<select name="reviewerId" lay-verify="required">
<option th:each="reviewer,iterStat:${reviewers}" th:value="${reviewer?.getId()}" th:text="${reviewer?.getUname()}" selected>张三</option>
</select>
<input type="text" placeholder="请选择仓库" class="layui-input" th:value="${depository.getDname()}"
id="openSonByDepository" readonly
lay-verify="required"/>
<input type="text" name="depositoryId" class="layui-input" id="depositoryId" th:value="${depository.getId()}"
style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">备注说明:</label>
<div class="layui-input-block">
<textarea name="applyRemark" placeholder="请填写相关原因及申请原因" value="" class="layui-textarea"></textarea>
<textarea name="applyRemark" placeholder="请填写相关原因及申请原因" value=""
class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formStep">
&emsp;提交申请&emsp;
&emsp;提交&emsp;
</button>
</div>
</div>
@ -73,23 +78,19 @@
<i class="layui-icon layui-circle"
style="color: white;font-size:30px;font-weight:bold;background: #52C41A;padding: 20px;line-height: 80px;">&#xe605;</i>
<div style="font-size: 24px;color: #333;font-weight: 500;margin-top: 30px;">
提交申请成功
</div>
<div style="font-size: 14px;color: #666;margin-top: 20px;">预计审核时间为1天</div>
提交成功
</div>
<div style="text-align: center;margin-top: 50px;">
<button class="layui-btn next">再申请一次</button>
<button class="layui-btn next">再填写一次</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<hr>
<div style="color: #666;margin-top: 30px;margin-bottom: 40px;padding-left: 30px;">
<h3>说明</h3><br>
申请提交后,24小时内审核完毕
</div>
</div>
</div>
@ -98,11 +99,109 @@
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script src="/static/js/lay-config.js?v=1.0.4" charset="utf-8"></script>
<script>
layui.use([ 'form', 'step'], function () {
layui.use(['form', 'step'], function () {
var $ = layui.$,
form = layui.form,
step = layui.step;
$("#code").blur(function () {
var code = $(this).val();
$.ajax({
url: "/material/findMatrialByCode?code=" + code,
type: "get",
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var d = d.data;
if(d == null){
layer.msg("没有该编码,请确认是否输入正确");
$("#openSonByMaterial").val("");
$("#mid").val("");
$("#code").val("");
}else{
$("#openSonByMaterial").val(d.mname);
$("#mid").val(d.id);
}
}
});
});
$("#openSonByMaterial").blur(function () {
var data = $(this).val();
var req = {};
req.mname = data;
$.ajax({
url: "/material/findMaterialByCondition",
type: "post",
dataType: 'json',
data:JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
if(d.count > 1){
layer.msg("请点击右侧搜索确定物品");
$("#mid").val("");
$("#code").val("");
return false;
}else if(d.count === 0){
layer.msg("没有该物品,请确认输入是否正确");
$("#mid").val("");
$("#code").val("");
$("#openSonByMaterial").val("");
return false;
}
else{
var material = d.data[0];
$("#openSonByMaterial").val(material.mname)
$("#mid").val(material.id);
$("#code").val(material.code);
}
}
});
})
$('#openSonByDepository').on('click', function () {
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
content: '/selectDepository?type=1',
});
});
$('#selectMaterial').on('click', function () {
var mname = $("#openSonByMaterial").val();
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
content: '/selectMaterial?mname='+mname+'&type=1',
end: function () {
var mid = $("#mid").val();
$.ajax({
url: "/material/findMatrialById?mid=" + mid,
type: "get",
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var code = d.data.code
$("#code").val(code)
}
});
}
});
});
step.render({
elem: '#stepForm',
filter: 'stepForm',
@ -110,37 +209,35 @@
stepWidth: '750px',
height: '600px',
stepItems: [{
title: '填写申请信息'
title: '填写信息'
}, {
title: '审核中'
}, {
title: '等待入库'
title: '提交成功'
}]
});
form.on('submit(formStep)', function (data) {
data=data.field;
data.type=1;
data = data.field;
data.type = 1;
$.ajax({
url:"/depositoryRecord/depositoryRecord",
type:'post',
dataType:'json',
url: "/depositoryRecord/applicationIn",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data:JSON.stringify(data),
beforeSend:function () {
this.layerIndex = layer.load(0, { shade: [0.5, '#393D49'] });
data: JSON.stringify(data),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success:function(data){
success: function (data) {
layer.close(this.layerIndex);
if(data.status >= 300){
layer.msg(data.statusInfo.message);//失败的表情
if (data.status >= 300) {
layer.msg(data.statusInfo.detail);//失败的表情
return;
}else{
} else {
layer.msg("申请提交成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
}, function(){
}, function () {
step.next('#stepForm');
});
}

111
target/classes/templates/pages/application/application-out.html

@ -22,12 +22,20 @@
<form class="layui-form" style="margin: 0 auto;max-width: 460px;padding-top: 40px;">
<div class="layui-form-item">
<label class="layui-form-label">材料名称:</label>
<div class="layui-input-inline">
<input type="text" placeholder="请选择材料" class="layui-input"
id="openSonByMaterial"
lay-verify="required"/>
<input type="text" name="mid" class="layui-input" id="mid"
style="display: none" lay-verify="required" />
</div>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial"></i>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材料编码:</label>
<div class="layui-input-block">
<!-- <input name="mname" type="text" placeholder="请填写材料名称" class="layui-input" lay-verify="required" />-->
<select name="mid" id="mid" lay-verify="required" lay-filter="mid">
<option value="" selected>请选择材料</option>
<option th:each="Material,iterStar:${materials}" th:value="${Material?.getId()}" th:text="${Material?.getMname()}">天玑1000</option>
</select>
<input id="code" name="code" type="text" placeholder="请填写入材料编码" value=""
class="layui-input" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
@ -86,6 +94,99 @@
var $ = layui.$,
form = layui.form,
step = layui.step;
$("#code").blur(function () {
var code = $(this).val();
$.ajax({
url: "/material/findMatrialByCode?code=" + code,
type: "get",
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var d = d.data;
if(d == null){
layer.msg("没有该编码,请确认是否输入正确");
$("#openSonByMaterial").val("");
$("#mid").val("");
}else{
$("#openSonByMaterial").val(d.mname);
$("#mid").val(d.id);
}
}
});
});
$("#openSonByMaterial").blur(function () {
var data = $(this).val();
var req = {};
req.mname = data;
$.ajax({
url: "/material/findMaterialByCondition",
type: "post",
dataType: 'json',
data:JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
if(d.count > 1){
layer.msg("请点击右侧搜索确定物品");
$("#mid").val("");
$("#code").val("");
return false;
}else if(d.count === 0){
layer.msg("没有该物品,请确认输入是否正确");
$("#mid").val("");
$("#code").val("");
return false;
}
else{
var material = d.data[0];
$("#openSonByMaterial").val(material.mname)
$("#mid").val(material.id);
$("#code").val(material.code);
}
}
});
})
$('#openSonByDepository').on('click', function () {
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
content: '/selectDepository?type=2',
});
});
$('#selectMaterial').on('click', function () {
var mname = $("#openSonByMaterial").val();
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
content: '/selectMaterial?mname='+mname+'&type=2',
end: function () {
var mid = $("#mid").val();
$.ajax({
url: "/material/findMatrialById?mid=" + mid,
type: "get",
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var code = d.data.code
$("#code").val(code)
}
});
}
});
});
step.render({
elem: '#stepForm',
filter: 'stepForm',

5
target/classes/templates/pages/application/application-review.html

@ -218,7 +218,10 @@
success:function(data){
layer.close(this.layerIndex);
if(data.status >= 300){
layer.msg(data.statusInfo.message);//失败的表情
layer.msg(data.statusInfo.detail,function () {
window.location = '/ApplicationOutView?id='+req.id;
});//失败的表情
return;
}else{
layer.msg("提交成功", {

18
target/classes/templates/pages/application/application-transfer.html

@ -39,10 +39,13 @@
<div class="layui-form-item">
<label class="layui-form-label">转入仓库:</label>
<div class="layui-input-block">
<select name="toId" lay-verify="required">
<!-- <select name="toId" lay-verify="required">
<option value="" selected>请选择仓库</option>
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}">外芯仓库</option>
</select>
</select>-->
<input type="text" placeholder="请选择仓库" class="layui-input" id="openSonByDepository" readonly
lay-verify="required"/>
<input type="text" name="depositoryId" class="layui-input" id="depositoryId" style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
@ -110,6 +113,17 @@
form = layui.form,
step = layui.step;
$('#openSonByDepository').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectDepository?type=2',
});
});
step.render({
elem: '#stepForm',

14
target/classes/templates/pages/application/form-step-look.html

@ -28,15 +28,19 @@
<tbody>
<tr>
<td>申请编号</td>
<td id="applicationId" th:text="${record.getId()}">123456</td>
<td id="applicationId" th:text="${record.getAircode()}">123456</td>
</tr>
<tr>
<td>材料名称</td>
<td id="materialName" th:text="${record.getMname()}">骁龙888芯片</td>
</tr>
<tr>
<td>仓库名称</td>
<td id="depositoryName" th:text="${record.getDepositoryName()}">外芯仓库</td>
<td>存货编码</td>
<td id="mcode" th:text="${record.getMcode()}">外芯仓库</td>
</tr>
<tr>
<td>计量单位</td>
<td id="munit" th:text="${record.getMunit()}">外芯仓库</td>
</tr>
<tr>
<td>数量</td>
@ -46,6 +50,10 @@
<td>金额</td>
<td id="price" th:text="${record.getPrice()}">2016-11-28</td>
</tr>
<tr>
<td>仓库名称</td>
<td id="depositoryName" th:text="${record.getDepositoryName()}">外芯仓库</td>
</tr>
<tr>
<td>提交人</td>
<td id="applicantName" th:text="${record.getApplicantName()}">2016-11-28</td>

3
target/classes/templates/pages/application/form-step-look_back.html

@ -28,7 +28,7 @@
<tbody>
<tr>
<td>申请编号</td>
<td id="applicationId" th:text="${record.getId()}">123456</td>
<td id="applicationId" th:text="${record.getCode()}">123456</td>
</tr>
<tr>
<td>材料名称</td>
@ -146,6 +146,7 @@
}
}
if (depositoryManagerNameTime!=null&&depositoryManagerNameTime!==""){
$("#depositoryManagerNameT").show();
$("#depositoryManagerNameTimeT").show();
$("#depositoryManagerNameMessageT").show();

17
target/classes/templates/pages/application/my-apply.html

@ -48,7 +48,8 @@
flow = layui.flow,
util=layui.util;
let size=8;
let pre=0;
let inpre=0;
let outpre=0;
flow.load({
elem: '#LAY_floor_in' //流加载容器
,scrollElem: '#LAY_floor_in' //滚动条所在元素,一般不用填,此处只是演示需要。
@ -59,8 +60,8 @@
$.get('/depositoryRecord/myApply?page='+page+'&size='+size, function(res){
result=res.data;
applicationIn = result["applicationIn"];
InCount = result["InCount"];
applicationOut = result["applicationOut"];
console.log(result)
for (let i = 0; i < applicationIn.length; i++) {
if (i%4===0){
lis.push('<tr>');
@ -75,10 +76,10 @@
lis.push('</tr>');
}
}
pre+=result.length;
inpre+=applicationIn.length;
//执行下一页渲染,第二参数为:满足“加载更多”的条件,即后面仍有分页
//pages为Ajax返回的总页数,只有当前页小于总页数的情况下,才会继续出现加载更多
next(lis.join(''), pre < res.count);
next(lis.join(''), inpre < InCount);
});
}
});
@ -93,7 +94,7 @@
result=res.data;
applicationIn = result["applicationIn"];
applicationOut = result["applicationOut"];
console.log(result)
OutCount = result["OutCount"];
for (let i = 0; i < applicationOut.length; i++) {
if (i%4===0){
lis.push('<tr>');
@ -108,12 +109,10 @@
lis.push('</tr>');
}
}
pre+=result.length;
outpre+=applicationOut.length;
//执行下一页渲染,第二参数为:满足“加载更多”的条件,即后面仍有分页
//pages为Ajax返回的总页数,只有当前页小于总页数的情况下,才会继续出现加载更多
next(lis.join(''), pre < res.count);
next(lis.join(''), outpre < OutCount);
});
}
});

2
target/classes/templates/pages/application/my-task.html

@ -73,7 +73,7 @@
let result;
$.get('/depositoryRecord/myTask?page='+page+'&size='+size+'&isDone=0', function(res){
result=res.data;
console.log(result)
console.log(res)
for (let i=0;i<result.length;i++){
if (i%4===0){
lis.push('<tr>');

4
target/classes/templates/pages/chart/chart-stock_back.html

@ -426,7 +426,7 @@
}
optionRecords = {
title: {
text: '出库仓库-报表图'
text: '仓库库存-报表图'
},
tooltip: {
trigger: 'axis',
@ -496,7 +496,7 @@
}
optionRecords = {
title: {
text: '出库仓库-报表图'
text: '仓库库存-报表图'
},
tooltip: {
trigger: 'axis',

21
target/classes/templates/pages/depository/table-in.html

@ -27,10 +27,12 @@
<div class="layui-inline">
<label class="layui-form-label">仓库</label>
<div class="layui-input-inline">
<select name="depositoryId">
<!--<select name="depositoryId">
<option value="" selected>请选择仓库</option>
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}" >外芯仓库</option>
</select>
</select>-->
<input type="text" placeholder="请选择仓库" class="layui-input" id="openSonByDepository" readonly />
<input type="text" name="depositoryId" class="layui-input" id="depositoryId" style="display: none" />
</div>
</div>
<div class="layui-inline">
@ -77,6 +79,19 @@
table = layui.table,
laydate=layui.laydate;
$('#openSonByDepository').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectDepository?type=2',
});
});
//日期
laydate.render({
elem: '#date'
@ -111,7 +126,9 @@
cols: [ [
{type: "checkbox", width: 50},
{field: 'id', width: 100, title: '提交编号', sort: true},
{field: 'aircode', width: 100, title: '提交编码', sort: true},
{field: 'mname', width: 120, title: '材料名称'},
{field: 'mcode', width: 120, title: '存货编码'},
{field: 'depositoryName', width: 120, title: '仓库名称', sort: true},
{field: 'quantity', width: 80, title: '数量', sort: true},
{field: 'price', title: '金额', minWidth: 80, sort: true},

25
target/classes/templates/pages/depository/table-out.html

@ -27,10 +27,12 @@
<div class="layui-inline">
<label class="layui-form-label">仓库</label>
<div class="layui-input-inline">
<select name="depositoryId" >
<!--<select name="depositoryId" >
<option value="" selected>请选择仓库</option>
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}" >外芯仓库</option>
</select>
</select>-->
<input type="text" placeholder="请选择仓库" class="layui-input" id="openSonByDepository" readonly />
<input type="text" name="depositoryId" class="layui-input" id="depositoryId" style="display: none" />
</div>
</div>
<div class="layui-inline">
@ -78,6 +80,18 @@
table = layui.table,
laydate=layui.laydate;
$('#openSonByDepository').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectDepository?type=2',
});
});
//日期
laydate.render({
elem: '#date'
@ -112,7 +126,9 @@
cols: [ [
{type: "checkbox", width: 50},
{field: 'id', width: 100, title: '申请编号', sort: true},
{field: 'code', width: 100, title: '申请编码', sort: true},
{field: 'mname', width: 120, title: '材料名称'},
{field: 'mcode', width: 120, title: '存货编码'},
{field: 'depositoryName', width: 120, title: '仓库名称', sort: true},
{field: 'quantity', width: 80, title: '数量', sort: true},
{field: 'price', title: '金额', minWidth: 80, sort: true},
@ -133,7 +149,10 @@
limits: [10, 15, 20, 25, 50],
limit: 10,
page: true,
skin: 'line'
skin: 'line',
done:function () {
$("[data-field='id']").css('display','none');
}
});
// 监听搜索操作

69
target/classes/templates/pages/depository/table-stock.html

@ -20,10 +20,12 @@
<div class="layui-inline">
<label class="layui-form-label">仓库</label>
<div class="layui-input-inline">
<select name="depositoryId" >
<!-- <select name="depositoryId" >
<option value="" selected>请选择仓库</option>
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}" >外芯仓库</option>
</select>
</select>-->
<input type="text" placeholder="请选择仓库" class="layui-input" id="openSonByDepository" readonly />
<input type="text" name="depositoryId" class="layui-input" id="depositoryId" style="display: none" />
</div>
</div>
<div class="layui-inline">
@ -32,6 +34,12 @@
<input type="text" name="mname" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">存货编码</label>
<div class="layui-input-inline">
<input type="text" name="code" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<button type="submit" class="layui-btn layui-btn-primary" lay-submit
@ -44,6 +52,10 @@
</fieldset>
<table class="layui-hide" id="currentTableId" lay-filter="currentTableFilter"></table>
<script id="currentTableBar" type="text/html">
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-subclass" lay-event="applicationIn">入库申请</a>
<a class="layui-btn layui-btn-xs data-count-edit" lay-event="applicationOut" >出库申请</a>
</script>
</div>
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
@ -54,6 +66,18 @@
form = layui.form,
table = layui.table;
$('#openSonByDepository').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectDepository?type=2',
});
});
table.render({
elem: "#currentTableId",
url: '/material/material',
@ -77,19 +101,24 @@
,dataName: 'data' //规定数据列表的字段名称,默认:data
},
toolbar: ['filter', 'exports', 'print'],
cols: [ [
cols: [
[
{type: "checkbox", width: 50},
{field: 'id', width: '10%', title: '材料编号'},
{field: 'mname', width: '10%', title: '材料名称'},
{field: 'version',width: 200,title: '规格型号',sort: false},
{field: 'code',width: 200,title: '存货编码',sort: true},
{field: 'typeName', width: '10%', title: '材料类型'},
{field: 'depositoryName', width: '12%', title: '仓库名称', sort: true},
{field: 'depositoryCode', width: '12%', title: '仓库编号', sort: true},
{field: 'quantity', width: '10%', title: '数量', sort: true},
{field: 'price', title: '单价', width: '8%', sort: true},
{field: 'amounts', title: '总金额', minWidth: 150, sort: true},
{field: 'unit',width: '10%',title: '计量单位',sort: true},
{field: 'texture',width: '8%',title: '材质',sort: true},
]],
{title: '操作', minWidth: 250, toolbar: '#currentTableBar', align: "center"}
]
],
limits: [10, 15, 20, 25, 50],
limit: 10,
page: true,
@ -99,6 +128,11 @@
}
});
//监听表格复选框选择
table.on('checkbox(currentTableFilter)', function (obj) {
console.log(obj)
});
// 监听搜索操作
form.on('submit(data-search-btn)', function (data) {
var req={};
@ -109,7 +143,9 @@
if (data.depositoryId!==''){
req.depositoryId=data.depositoryId;
}
if(data.code !==''){
req.code =data.code;
}
//执行搜索重载
table.reload('currentTableId', {
url: '/material/material',
@ -120,6 +156,29 @@
}, 'data');
return false;
});
table.on('tool(currentTableFilter)', function (obj) {
let data = obj.data;
if (obj.event === 'applicationIn') {
// 入库申请
var index = layer.open({
title: '入库申请',
type: 2,
shade: 0.2,
maxmin: true,
shadeClose: true,
area: ['100%', '100%'],
content: '/application_in_back?mid='+data.id+"&depositoryId="+data.depositoryId
});
$(window).on("resize", function () {
layer.full(index);
});
return false;
}else{
// 出库申请
console.log(data)
}
});
});
</script>

16
target/classes/templates/pages/material/material-add.html

@ -48,8 +48,9 @@
<option value="" selected>请选择仓库</option>
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}">外芯仓库</option>
</select>-->
<input type="text" placeholder="请选择仓库" name="dname" class="layui-input" id="openSonByDepository" readonly
<input type="text" placeholder="请选择仓库" class="layui-input" id="openSonByDepository" readonly
lay-verify="required"/>
<input type="text" name="depositoryId" class="layui-input" id="depositoryId" style="display: none" lay-verify="required"/>
</div>
</div>
@ -59,8 +60,10 @@
<!--<select name="materialTypeId" lay-verify="required">
<option th:each="materialType,iterStar:${materialTypes}" th:value="${materialType?.getId()}" th:text="${materialType?.getTname()}" selected>芯片类</option>
</select>-->
<input type="text" placeholder="请选择材料类型" name="tname" class="layui-input" id="openSonByMateralType" readonly
<input type="text" placeholder="请选择材料类型" class="layui-input" id="openSonByMateralType" readonly
lay-verify="required"/>
<input type="text" id="materialTypeId" placeholder="请选择材料类型" name="materialTypeId" class="layui-input" style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
@ -148,7 +151,7 @@
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectDepository',
content: '/selectDepository?type=2',
});
});
@ -171,9 +174,12 @@
} else {
layer.msg("添加成功!", {
icon: 6,//成功的表情
time: 1000 //1秒关闭(如果不配置,默认是3秒)
});
time: 1000
}, //1秒关闭(如果不配置,默认是3秒)
function(){
//do something
window.location="/material_add"
});
}
},
complete: function () {

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

Loading…
Cancel
Save