Browse Source

库位增删改查

lwx_dev
erdanergou 3 years ago
parent
commit
b1a0aa8471
  1. 19
      pom.xml
  2. 3
      src/main/java/com/dreamchaser/depository_manage/config/PortConfig.java
  3. 20
      src/main/java/com/dreamchaser/depository_manage/config/RedissionConfig.java
  4. 34
      src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java
  5. 9
      src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java
  6. 30
      src/main/java/com/dreamchaser/depository_manage/controller/ExcelController.java
  7. 28
      src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java
  8. 24
      src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java
  9. 58
      src/main/java/com/dreamchaser/depository_manage/controller/PageController.java
  10. 154
      src/main/java/com/dreamchaser/depository_manage/controller/PlaceController.java
  11. 33
      src/main/java/com/dreamchaser/depository_manage/controller/UserController.java
  12. 9
      src/main/java/com/dreamchaser/depository_manage/converter/ExcelDepositoryInfoConverter.java
  13. 40
      src/main/java/com/dreamchaser/depository_manage/converter/ExcelMTParentIdConverter.java
  14. 59
      src/main/java/com/dreamchaser/depository_manage/converter/ExcelMaterialCodeConverter.java
  15. 2
      src/main/java/com/dreamchaser/depository_manage/converter/ExcelMaterialTypeInfoConverter.java
  16. 4
      src/main/java/com/dreamchaser/depository_manage/converter/ExcelStateInfoConverter.java
  17. 53
      src/main/java/com/dreamchaser/depository_manage/converter/ExcelValid.java
  18. 2
      src/main/java/com/dreamchaser/depository_manage/entity/ApplicationOutRecord.java
  19. 38
      src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfo.java
  20. 50
      src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfoByInventory.java
  21. 36
      src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfoByMT.java
  22. 8
      src/main/java/com/dreamchaser/depository_manage/entity/Material.java
  23. 57
      src/main/java/com/dreamchaser/depository_manage/entity/Place.java
  24. 10
      src/main/java/com/dreamchaser/depository_manage/entity/StandingBook.java
  25. 35
      src/main/java/com/dreamchaser/depository_manage/entity/materialOnly.java
  26. 4
      src/main/java/com/dreamchaser/depository_manage/listener/ExcelListener.java
  27. 7
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.java
  28. 23
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.xml
  29. 6
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.java
  30. 6
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml
  31. 6
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.java
  32. 38
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml
  33. 34
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.java
  34. 88
      src/main/java/com/dreamchaser/depository_manage/mapper/PlaceMapper.java
  35. 204
      src/main/java/com/dreamchaser/depository_manage/mapper/PlaceMapper.xml
  36. 13
      src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationModel.java
  37. 6
      src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationOutRecordP.java
  38. 30
      src/main/java/com/dreamchaser/depository_manage/pojo/MaterialOnlyP.java
  39. 10
      src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java
  40. 105
      src/main/java/com/dreamchaser/depository_manage/pojo/PlaceP.java
  41. 20
      src/main/java/com/dreamchaser/depository_manage/pojo/RestResponse.java
  42. 16
      src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java
  43. 23
      src/main/java/com/dreamchaser/depository_manage/service/ExcelService.java
  44. 13
      src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java
  45. 16
      src/main/java/com/dreamchaser/depository_manage/service/MaterialTypeService.java
  46. 87
      src/main/java/com/dreamchaser/depository_manage/service/PlaceService.java
  47. 87
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java
  48. 18
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java
  49. 173
      src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java
  50. 81
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java
  51. 14
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialTypeServiceImpl.java
  52. 136
      src/main/java/com/dreamchaser/depository_manage/service/impl/PlaceServiceImpl.java
  53. 6
      src/main/java/com/dreamchaser/depository_manage/utils/CreateQrCodeUtil.java
  54. 44
      src/main/java/com/dreamchaser/depository_manage/utils/ExcelInValid.java
  55. 23
      src/main/resources/application-test.yml
  56. 26
      src/main/resources/redisson-config.yml
  57. 12
      src/main/resources/static/api/init.json
  58. 12
      src/main/resources/static/api/init_checker.json
  59. 12
      src/main/resources/static/api/init_reviewer.json
  60. 12
      src/main/resources/static/api/test.json
  61. BIN
      src/main/resources/static/images/sousuo.png
  62. 4
      src/main/resources/templates/index.html
  63. 117
      src/main/resources/templates/pages/application/application-in.html
  64. 36
      src/main/resources/templates/pages/application/application-in_back.html
  65. 94
      src/main/resources/templates/pages/application/application-out.html
  66. 25
      src/main/resources/templates/pages/application/application-out_back.html
  67. 2
      src/main/resources/templates/pages/application/application-review.html
  68. 115
      src/main/resources/templates/pages/application/application-transfer.html
  69. 10
      src/main/resources/templates/pages/application/application-transfer_back.html
  70. 13
      src/main/resources/templates/pages/application/application_in_multi.html
  71. 5
      src/main/resources/templates/pages/application/application_multi.html
  72. 2
      src/main/resources/templates/pages/application/form-step-look.html
  73. 16
      src/main/resources/templates/pages/application/form-step-look_back.html
  74. 8
      src/main/resources/templates/pages/chart/chart-in.html
  75. 8
      src/main/resources/templates/pages/chart/chart-in_back.html
  76. 8
      src/main/resources/templates/pages/chart/chart-out.html
  77. 8
      src/main/resources/templates/pages/chart/chart-out_back.html
  78. 8
      src/main/resources/templates/pages/chart/chart-stock.html
  79. 12
      src/main/resources/templates/pages/depository/table-in.html
  80. 10
      src/main/resources/templates/pages/depository/table-out.html
  81. 64
      src/main/resources/templates/pages/depository/table-stock.html
  82. 52
      src/main/resources/templates/pages/material/material-add.html
  83. 210
      src/main/resources/templates/pages/material/material-add_back.html
  84. 98
      src/main/resources/templates/pages/material/material-out.html
  85. 494
      src/main/resources/templates/pages/material/material-out_back.html
  86. 61
      src/main/resources/templates/pages/material/material-view.html
  87. 21
      src/main/resources/templates/pages/material/selectDepositoryByCard.html
  88. 8
      src/main/resources/templates/pages/material/selectMaterialByCard.html
  89. 2
      src/main/resources/templates/pages/materialtype/materialTypeByParentId.html
  90. 14
      src/main/resources/templates/pages/materialtype/materialType_add.html
  91. 2
      src/main/resources/templates/pages/materialtype/materialType_edit.html
  92. 54
      src/main/resources/templates/pages/materialtype/materialType_view.html
  93. 2
      src/main/resources/templates/pages/other/welcome.html
  94. 140
      src/main/resources/templates/pages/place/place_add.html
  95. 131
      src/main/resources/templates/pages/place/place_edit.html
  96. 4
      src/main/resources/templates/pages/post/postRole_add.html
  97. 4
      src/main/resources/templates/pages/post/postRole_edit.html
  98. 4
      src/main/resources/templates/pages/user/user-add.html
  99. 2
      src/main/resources/templates/pages/user/user-email.html
  100. 4
      src/main/resources/templates/pages/user/user-role-edit.html

19
pom.xml

@ -175,6 +175,25 @@
<version>2.6.0</version>
</dependency>
<!-- 用于redisson分布锁-->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.8.2</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.8.2</version>
</dependency>
<!-- 用于生成二维码依赖-->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.4.0</version>
</dependency>
</dependencies>

3
src/main/java/com/dreamchaser/depository_manage/config/PortConfig.java

@ -2,6 +2,9 @@ package com.dreamchaser.depository_manage.config;
import lombok.Data;
/**
* 用于
*/
@Data
public class PortConfig {
// 接口地址

20
src/main/java/com/dreamchaser/depository_manage/config/RedissionConfig.java

@ -0,0 +1,20 @@
package com.dreamchaser.depository_manage.config;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.io.IOException;
@Configuration
public class RedissionConfig {
@Bean
public RedissonClient redisson() throws IOException {
// 本例子使用的是yaml格式的配置文件,读取使用Config.fromYAML,如果是Json文件,则使用Config.fromJSON
Config config = Config.fromYAML(RedissionConfig.class.getClassLoader().getResource("redisson-config.yml"));
return Redisson.create(config);
}
}

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

@ -275,10 +275,10 @@ public class DepositoryController {
parmOut.put("depository_id",depositoryAll.get(j).getId());
parmOut.put("start", months.get(num + 1));
parmOut.put("end", months.get(num));
// 获取月份中入库料的总额
// 获取月份中入库料的总额
// 测试
Double wareHouseInCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parmIn);
// 获取月份中出库料的总额
// 获取月份中出库料的总额
// 测试
Double wareHouseOutCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parmOut);
// 获取当前月库存容量
@ -351,10 +351,10 @@ public class DepositoryController {
parmOut.put("start", months.get(j + 1));
parmOut.put("end", months.get(j));
parmOut.put("dname", depositoryAll.get(i).getDname());
// 获取某个月某料入库总额
// 获取某个月某料入库总额
// 测试
Double wareHouseInCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parmIn);
// 获取某个月某料出库总额
// 获取某个月某料出库总额
// 测试
Double wareHouseOutCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parmOut);
Double wareHouseCount1 = (Double) productData.get(k++) - wareHouseInCountByMonth1 + wareHouseOutCountByMonth1;
@ -392,30 +392,28 @@ public class DepositoryController {
/**
* 根据父级编号获取所有仓库
* @param parentId
* @param map
* @return
*/
@GetMapping("/allWarehouseByParent")
public RestResponse findDepositoryByNoParent(@RequestParam(value = "parentId",required = false) String parentId){
Map<String,Object> param = new HashMap<>();
if (parentId == null) {
parentId = "0";
public RestResponse findDepositoryByNoParent(@RequestParam Map<String, Object> map){
if ("".equals(map.get("parentId")) || map.get("parentId") == null) {
map.put("parentId",0);
}
param.put("parentId",parentId);
List<Depository> list = depositoryService.findDepositoryRecordPByCondition(param);
List<Depository> list = depositoryService.findDepositoryRecordPByCondition(map);
// 获取所有行政单位
Map<String, Object> administration = findAdministration();
List<AdministrationP> administrationPList = (List<AdministrationP>) administration.get("administrationPList");
Integer total = (Integer) administration.get("total");
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < administrationPList.size(); j++) {
if(list.get(i).getCid().compareTo(administrationPList.get(j).getId()) == 0){
list.get(i).setCname(administrationPList.get(j).getName());
break;
}
}
}
return new RestResponse(list,total,200);
return new RestResponse(list,depositoryService.findCountByCondition(map),200);
}
@ -638,7 +636,7 @@ public class DepositoryController {
}
/**
* 修改当前仓库下的料状态
* 修改当前仓库下的料状态
* @param parentId
* @param state
*/
@ -799,7 +797,7 @@ public class DepositoryController {
parm.put("start", months.get(num + 1));
parm.put("end", months.get(num));
parm.put("tname", materialTypeAll.get(j).getTname());
//根据条件获取月份中料的总额
//根据条件获取月份中料的总额
Double materialCountByMonth = depositoryRecordService.findMaterialCountByMonth(parm);
// 测试
Double materialCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parm);
@ -842,7 +840,7 @@ public class DepositoryController {
parm.put("start", months1.get(j));
parm.put("end", months1.get(j - 1));
parm.put("tname", materialTypeAll.get(i).getTname());
//根据条件获取月份中料的总额
//根据条件获取月份中料的总额
// 测试
Double materialCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parm);
productData.add(materialCountByMonth1);
@ -880,7 +878,7 @@ public class DepositoryController {
}
/**
* 根据料编号查询所在仓库
* 根据料编号查询所在仓库
* @param mid
* @return
*/
@ -894,7 +892,7 @@ public class DepositoryController {
}
/**
* 根据料名称查询所在仓库
* 根据料名称查询所在仓库
* @param mname
* @return
*/

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

@ -201,7 +201,7 @@ public class DepositoryRecordController {
}
/**
* 将选中的料暂存到redis中
* 将选中的料暂存到redis中
* @param map
* @param request
* @return
@ -227,7 +227,7 @@ public class DepositoryRecordController {
}
/**
* 将选中的料从redis中删除
* 将选中的料从redis中删除
* @param map
* @param request
* @return
@ -353,6 +353,7 @@ public class DepositoryRecordController {
ap.setVersion(materialById.getVersion());
ap.setMname(materialById.getMname());
ap.setCode(materialById.getCode());
ap.setPrice(materialById.getPrice());
ap.setApplicant(userToken.getId());
ap.setQuantity(1.0);
list.add(ap);
@ -371,6 +372,7 @@ public class DepositoryRecordController {
UserByPort userToken= (UserByPort) request.getAttribute("userToken");
Integer quantity = ObjectFormatUtil.toInteger(map.get("quantity"));
map.put("quantity",quantity.toString());
map.put("price",map.get("price").toString());
map.put("applicantId",userToken.getId());
String type = (String) map.get("type");
Integer success = 0;
@ -402,10 +404,12 @@ public class DepositoryRecordController {
List<Integer> depositoryIds = (List<Integer>) map.get("depositoryIds");
List<Object> quantitys = (List<Object>) map.get("quantitys");
List<String> applyRemarks = (List<String>) map.get("applyRemarks");
List<Object> prices = (List<Object>) map.get("prices");
if("in".equals(type)){
for (int i = 0; i < mids.size(); i++) {
Integer mid = mids.get(i);
Integer depositoryId = depositoryIds.get(i);
String price = prices.get(i).toString();
Integer integer = ObjectFormatUtil.toInteger(quantitys.get(i));
String quantity = integer.toString();
String applyRemark = applyRemarks.get(i);
@ -414,6 +418,7 @@ public class DepositoryRecordController {
inRecord.put("mid",mid);
inRecord.put("depositoryId",depositoryId);
inRecord.put("quantity",quantity);
inRecord.put("price",price);
inRecord.put("applyRemark",applyRemark);
success += depositoryRecordService.applicationIn(inRecord);
}

30
src/main/java/com/dreamchaser/depository_manage/controller/ExcelController.java

@ -18,8 +18,32 @@ public class ExcelController {
@Autowired
ExcelService excelService;
@PostMapping("/importExcel")
public ResultVo importExcel(@RequestParam("file") MultipartFile excel) {
return excelService.importExcel(excel);
/**
* 用于物料的导入
* @param excel
* @return
*/
@PostMapping("/importExcelByMaterial")
public ResultVo importExcelByMaterial(@RequestParam("file") MultipartFile excel) {
return excelService.importExcelMaterial(excel,"material");
}
/**
* 用于物料类型的导入
* @param excel
* @return
*/
@PostMapping("/importExcelByMT")
public ResultVo importExcelByMT(@RequestParam("file") MultipartFile excel){
return excelService.importExcelMaterialType(excel);
}
/**
* 用于库存信息的导入
*/
@PostMapping("/importInventory")
public ResultVo importInventory(@RequestParam("file") MultipartFile excel){
return excelService.importExcelInventory(excel);
}
}

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

@ -8,6 +8,7 @@ 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.pojo.RoleAndDepository;
import com.dreamchaser.depository_manage.pojo.StatusInfo;
import com.dreamchaser.depository_manage.security.bean.UserToken;
import com.dreamchaser.depository_manage.service.DepositoryService;
import com.dreamchaser.depository_manage.service.MaterialService;
@ -19,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.*;
/**
@ -38,7 +40,7 @@ public class MaterialController {
DepositoryService depositoryService;
/**
* 根据料进行查询
* 根据料进行查询
* @param map
* @return
*/
@ -61,11 +63,11 @@ public class MaterialController {
}
}
}
return new RestResponse(list,materialService.findCountByCondition(map),200);
return new RestResponse(list,list.size(),200);
}
/**
* 添加一条料记录
* 添加一条料记录
* @param map
* @return
*/
@ -93,7 +95,7 @@ public class MaterialController {
}
/**
* 修改料信息
* 修改料信息
* @param map
* @return
*/
@ -134,7 +136,7 @@ public class MaterialController {
}
/**
* 根据id获取
* 根据id获取
* @param mid
* @return
*/
@ -176,4 +178,20 @@ public class MaterialController {
List<MaterialP> materialPByCondition = materialService.findMaterialPByCondition(map);
return new RestResponse(materialPByCondition,materialService.findCountByCondition(map),200);
}
@GetMapping("/createQrCode")
public RestResponse createQrCode(@RequestParam("mid") Integer mid) {
Material materialById = materialService.findMaterialById(mid);
// 二维码保存信息
Map<String,Object> code = new HashMap<>();
code.put("mname",materialById.getMname());
code.put("mcode",materialById.getCode());
code.put("verison",materialById.getVersion());
code.put("quantity",materialById.getQuantity());
try {
return RestResponse.CreateQrCode(code);
} catch (IOException e) {
return new RestResponse("err: "+e.getMessage(),678,new StatusInfo("失败","请联系开发人员"));
}
}
}

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

@ -27,7 +27,7 @@ public class MaterialTypeController {
MaterialService materialService;
/**
* 插入一条新料类型
* 插入一条新料类型
* @param map
* @return
*/
@ -37,7 +37,7 @@ public class MaterialTypeController {
}
/**
* 根据条件查询料类型
* 根据条件查询料类型
* @param map
* @return
*/
@ -49,7 +49,7 @@ public class MaterialTypeController {
/**
* 根据父级查询所有料类型
* 根据父级查询所有料类型
* @param parentId
* @return
*/
@ -66,7 +66,7 @@ public class MaterialTypeController {
/**
* 彻底删除料类别
* 彻底删除料类别
* @param map
* @return
*/
@ -99,7 +99,7 @@ public class MaterialTypeController {
}
/**
* 删除所有子料类型信息硬删除
* 删除所有子料类型信息硬删除
* @param parentId
*/
public void RealDeleteSonDepository(String parentId){
@ -108,14 +108,14 @@ public class MaterialTypeController {
// 获取当前仓库所有子仓库
List<MaterialType> materialTypeByCondition = materialTypeService.findMaterialTypeByCondition(param);
for (int i = 0; i < materialTypeByCondition.size(); i++) {
Integer id = materialTypeByCondition.get(i).getId(); // 获取当前料id
RealDeleteSonDepository(id.toString()); // 递归查询料类型
materialTypeService.deleteMaterialTypeById(id); // 删除料类型
Integer id = materialTypeByCondition.get(i).getId(); // 获取当前料id
RealDeleteSonDepository(id.toString()); // 递归查询料类型
materialTypeService.deleteMaterialTypeById(id); // 删除料类型
}
}
/**
* 根据主键删除料类型
* 根据主键删除料类型
* @param map
* @return
*/
@ -148,7 +148,7 @@ public class MaterialTypeController {
}
/**
* 修改料类型
* 修改料类型
* @param map
* @return
*/
@ -236,7 +236,7 @@ public class MaterialTypeController {
}
/**
* 修改料类型状态
* 修改料类型状态
* @param map
* @return
*/
@ -284,7 +284,7 @@ public class MaterialTypeController {
}
/**
* 修改当前料类型状态
* 修改当前料类型状态
* @param parentId
* @param state
*/

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

@ -61,6 +61,10 @@ public class PageController {
private RoleService roleService;
@Autowired
private PlaceService placeService;
public static JSONObject Captcha(){
@ -380,7 +384,7 @@ public class PageController {
return mv;
}
// 料类型树形菜单页面
// 料类型树形菜单页面
@GetMapping("/selectType")
public String selectType(){
return "pages/material/selectType";
@ -415,7 +419,7 @@ public class PageController {
return mv;
}
// 料树形菜单页面
// 料树形菜单页面
@GetMapping("/selectMaterial")
public ModelAndView selectMaterial(String mname,String type){
ModelAndView mv = new ModelAndView();
@ -425,7 +429,7 @@ public class PageController {
return mv;
}
// 专用于卡片料树形菜单页面
// 专用于卡片料树形菜单页面
@GetMapping("/selectMaterialByCard")
public ModelAndView selectMaterialByCard(String mname,String type,String clickObj){
ModelAndView mv = new ModelAndView();
@ -631,17 +635,17 @@ public class PageController {
*/
mv.addObject("depositories", depositoryService.findDepositoryAll());
/**
* 料总数
* 料总数
*/
mv.addObject("materials", materialService.findMaterialAll());
// 转入料数量
// 转入料数量
mv.addObject("InCount", depositoryRecordService.CalculateAllApplicationInCount());
// 转入料总额
// 转入料总额
mv.addObject("allInCount", depositoryRecordService.CalculateAllApplicationInCount());
// 购入料数量
// 购入料数量
mv.addObject("InPrice", depositoryRecordService.CalculateAllApplicationInPrice());
// 购入料总额
// 购入料总额
mv.addObject("allInPrice", depositoryRecordService.CalculateAllApplicationInPrice());
return mv;
}
@ -658,13 +662,13 @@ public class PageController {
mv.addObject("depositories", depositoryService.findDepositoryAll());
mv.addObject("reviewers", userService.findReviewers());
mv.addObject("materials", materialService.findMaterialAll());
// 转出料数量
// 转出料数量
mv.addObject("InCount", depositoryRecordService.CalculateAllApplicationOutCount("已出库"));
// 转出料金额
// 转出料金额
mv.addObject("allInCount", depositoryRecordService.CalculateAllApplicationOutCount(""));
// 出售料数量
// 出售料数量
mv.addObject("InPrice", depositoryRecordService.CalculateAllApplicationOutPrice("已出库"));
// 出库料总额
// 出库料总额
mv.addObject("allInPrice", depositoryRecordService.CalculateAllApplicationOutPrice(""));
return mv;
}
@ -819,7 +823,7 @@ public class PageController {
return mv;
}
@GetMapping("warehouseByParentId")
@GetMapping("/warehouseByParentId")
public ModelAndView warehouseByParentId(Integer parentId) {
ModelAndView mv = new ModelAndView();
mv.setViewName("pages/warehouse/warehouseByParentId");
@ -834,6 +838,32 @@ public class PageController {
return mv;
}
@GetMapping("/placeView")
public ModelAndView placeView(Integer id) {
ModelAndView mv = new ModelAndView();
mv.setViewName("pages/place/place_edit");
if (id != null) {
mv.addObject("id", id);
Place placeById = placeService.findPlaceById(id);
mv.addObject("place", placeById);
} else {
throw new MyException("缺少必要参数!");
}
return mv;
}
@GetMapping("/insertPlace")
public ModelAndView insertPlace(Integer depositoryId){
ModelAndView mv = new ModelAndView();
mv.setViewName("pages/place/place_add");
if(depositoryId != null){
mv.addObject("depositoryId",depositoryId);
}else{
throw new MyException("缺少必要参数!");
}
return mv;
}
@GetMapping("findWareHouseByParentId")
public ModelAndView findWareHouseByParentId(Integer parentId) {
ModelAndView mv = new ModelAndView();
@ -846,6 +876,8 @@ public class PageController {
mv.addObject("depositories", depositoryRecordPByCondition);
mv.setViewName("pages/warehouse/depository-out");
} else {
List<Place> placeByDid = placeService.findPlaceByDid(parentId);
mv.addObject("placeList",placeByDid);
mv.setViewName("pages/warehouse/warehouseByParentId");
}
} else {

154
src/main/java/com/dreamchaser/depository_manage/controller/PlaceController.java

@ -0,0 +1,154 @@
package com.dreamchaser.depository_manage.controller;
import com.dreamchaser.depository_manage.entity.Depository;
import com.dreamchaser.depository_manage.entity.Material;
import com.dreamchaser.depository_manage.entity.Place;
import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.pojo.MaterialP;
import com.dreamchaser.depository_manage.pojo.PlaceP;
import com.dreamchaser.depository_manage.pojo.RestResponse;
import com.dreamchaser.depository_manage.service.DepositoryService;
import com.dreamchaser.depository_manage.service.MaterialService;
import com.dreamchaser.depository_manage.service.PlaceService;
import com.dreamchaser.depository_manage.utils.CrudUtil;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/place")
public class PlaceController {
@Autowired
PlaceService placeService;
@Autowired
MaterialService materialService;
@Autowired
DepositoryService depositoryService;
/**
* 根据条件查询库位
*
* @param map
* @return
*/
@GetMapping("/findPlace")
public RestResponse findMaterial(@RequestParam Map<String, Object> map) {
List<Place> placeByCondition = placeService.findPlaceByCondition(map);
List<PlaceP> placePList = new ArrayList<>();
for (int i = 0; i < placeByCondition.size(); i++) {
Place place = placeByCondition.get(i);
PlaceP placeP = new PlaceP(place);
Integer depositoryId = place.getDid();
Integer mid = place.getMid();
Depository depositoryById = depositoryService.findDepositoryRecordById(depositoryId);
if(mid != null) {
Material materialById = materialService.findMaterialById(mid);
placeP.setMname(materialById.getMname());
}
placeP.setDepositoryName(depositoryById.getDname());
placeP.setDepositoryCode(depositoryById.getCode());
placePList.add(placeP);
}
return new RestResponse(placePList, placeService.findPlaceCountByCondition(map), 200);
}
@PostMapping("/addPlace")
public RestResponse insertPlace(@RequestBody Map<String, Object> map) {
String type = (String) map.get("type");
Map<String, Object> insert = new HashMap<>();
Integer success = 0;
if ("one".equals(type)) {
Integer place_x = ObjectFormatUtil.toInteger(map.get("place_x"));
Integer place_y = ObjectFormatUtil.toInteger(map.get("place_y"));
Integer place_z = ObjectFormatUtil.toInteger(map.get("place_z"));
String min = (String) map.get("min");
String max = (String) map.get("max");
String code = String.format("%02d", place_x) + String.format("%02d", place_y) + String.format("%02d", place_z);
insert.put("x", place_x);
insert.put("y", place_y);
insert.put("z", place_z);
insert.put("code", code);
insert.put("did", map.get("depositoryId"));
if (!"".equals(min)) {
insert.put("min", map.get("min"));
} else {
insert.put("min", 0);
}
if (!"".equals(max)) {
insert.put("max", map.get("max"));
} else {
insert.put("max", 0);
}
insert.put("state",1);
success += placeService.InsertPlace(insert);
} else {
}
if ("one".equals(type)) {
return CrudUtil.postHandle(success, 1);
} else {
return new RestResponse();
}
}
/**
* 将库位状态改为删除
* @param map
* @return
*/
@PostMapping("/deletePlace")
public RestResponse deletePlace(@RequestBody Map<String,Object> map){
if (map.containsKey("id")){
Integer id= ObjectFormatUtil.toInteger(map.get("id"));
return CrudUtil.deleteHandle(placeService.changeStateToDeletedById(id),1);
}else if (map.containsKey("ids")){
List<Integer> ids=(List<Integer>) map.get("ids");
return CrudUtil.deleteHandle(placeService.changeStateToDeletedByIds(ids),ids.size());
}else {
throw new MyException("所需请求参数缺失!");
}
}
/**
* 修改库位信息
*/
@PostMapping("/place_edit")
public RestResponse placeEdit(@RequestBody Map<String,Object> map){
if(map.containsKey("state")){
map.put("state",1);
}else{
map.put("state",2);
}
Map<String, Object> update = new HashMap<>();
Integer place_x = ObjectFormatUtil.toInteger(map.get("place_x"));
Integer place_y = ObjectFormatUtil.toInteger(map.get("place_y"));
Integer place_z = ObjectFormatUtil.toInteger(map.get("place_z"));
String min = (String) map.get("min");
String max = (String) map.get("max");
String code = String.format("%02d", place_x) + String.format("%02d", place_y) + String.format("%02d", place_z);
update.put("x", place_x);
update.put("y", place_y);
update.put("z", place_z);
update.put("code", code);
update.put("did", map.get("depositoryId"));
if (!"".equals(min)) {
update.put("min", map.get("min"));
} else {
update.put("min", 0);
}
if (!"".equals(max)) {
update.put("max", map.get("max"));
} else {
update.put("max", 0);
}
update.put("id",map.get("id"));
return CrudUtil.postHandle(placeService.UpdatePlace(update),1);
}
}

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

@ -60,13 +60,8 @@ public class UserController {
private UserService userService;
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
@Autowired
private JavaMailSender mailSender;
@Autowired
private RoleService roleService;
@Value("${spring.mail.username}")
private String fromEmail;
@Autowired
private DepositoryService depositoryService;
@ -134,8 +129,6 @@ public class UserController {
VerificationCode v = new VerificationCode();
//将验证码存入验证码等待池
VerificationCodePool.addCode(principal, v);
//发送邮箱验证码
sendEmail(principal, v.getCode());
return new RestResponse();
}
return new RestResponse("", 304, new StatusInfo("发送验证码失败,该账户已存在!", "发送验证码失败,该账户已存在!"));
@ -442,32 +435,6 @@ public class UserController {
return false;
}
/**
* 发送带有验证码的邮件信息
*/
private void sendEmail(String email, String code) {
//发送验证邮件
try {
SimpleMailMessage mailMessage = new SimpleMailMessage();
//主题
mailMessage.setSubject("仓库管理系统的验证码邮件");
//内容
mailMessage.setText("欢迎使用仓库管理系统,您正在注册此账户。" +
"\n您收到的验证码是: " + code + " ,请不要将此验证码透露给别人。");
//发送的邮箱地址
mailMessage.setTo(email);
//默认发送邮箱邮箱
mailMessage.setFrom(fromEmail);
//发送
mailSender.send(mailMessage);
} catch (Exception e) {
throw new MyException(e.toString());
}
}
/**

9
src/main/java/com/dreamchaser/depository_manage/converter/ExcelDepositoryInfoConverter.java

@ -17,6 +17,9 @@ import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.List;
/**
* 用于将仓库编码转为仓库id
*/
@Component
public class ExcelDepositoryInfoConverter implements Converter<Integer> {
@ -40,7 +43,7 @@ public class ExcelDepositoryInfoConverter implements Converter<Integer> {
List<Depository> depositoryAll = excelDepositoryInfoConverter.depositoryService.findDepositoryAll();
Integer data = 0;
for (int i = 0; i < depositoryAll.size(); i++) {
if(cellData.getStringValue().equals(depositoryAll.get(i).getDname())){
if(cellData.getStringValue().equals(depositoryAll.get(i).getCode())){
data = depositoryAll.get(i).getId();
}
}
@ -55,8 +58,8 @@ public class ExcelDepositoryInfoConverter implements Converter<Integer> {
List<Depository> depositoryAll = excelDepositoryInfoConverter.depositoryService.findDepositoryAll();
String data = "";
for (int i = 0; i < depositoryAll.size(); i++) {
if(value == depositoryAll.get(i).getId()){
data = depositoryAll.get(i).getDname();
if(Integer.compare(value,depositoryAll.get(i).getId()) == 0){
data = depositoryAll.get(i).getCode();
}
}
return new WriteCellData<>(data);

40
src/main/java/com/dreamchaser/depository_manage/converter/ExcelMTParentIdConverter.java

@ -0,0 +1,40 @@
package com.dreamchaser.depository_manage.converter;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import com.dreamchaser.depository_manage.entity.MaterialType;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 用于物料分类上级编码
*/
@Component
public class ExcelMTParentIdConverter implements Converter<Integer> {
@Override
public Class supportJavaTypeKey() {
return Integer.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public Integer convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
Integer data = 0;
if(cellData.getStringValue() != null){
data = ObjectFormatUtil.toInteger(cellData.getStringValue());
}
return data;
}
}

59
src/main/java/com/dreamchaser/depository_manage/converter/ExcelMaterialCodeConverter.java

@ -0,0 +1,59 @@
package com.dreamchaser.depository_manage.converter;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.converters.ReadConverterContext;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import com.dreamchaser.depository_manage.entity.Depository;
import com.dreamchaser.depository_manage.entity.Material;
import com.dreamchaser.depository_manage.service.DepositoryService;
import com.dreamchaser.depository_manage.service.MaterialService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.List;
/**
* 用于物料分类上级编码
*/
@Component
public class ExcelMaterialCodeConverter implements Converter<Long> {
@Autowired
private MaterialService materialService;
private static ExcelMaterialCodeConverter excelMaterialCodeConverter;
@Override
public Class<?> supportJavaTypeKey() {
return Long.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
/**
* 这里读的时候会调用
*
* @param
* @return
*/
@Override
public Long convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
Material material = excelMaterialCodeConverter.materialService.findMaterialByCode(Long.valueOf(cellData.getStringValue()));
if(material == null) {
throw new RuntimeException("没有该物料");
}
return Long.valueOf(cellData.getStringValue());
}
@PostConstruct
public void init(){
excelMaterialCodeConverter = this;
excelMaterialCodeConverter.materialService = this.materialService;
}
}

2
src/main/java/com/dreamchaser/depository_manage/converter/ExcelMaterialTypeInfoConverter.java

@ -17,7 +17,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.List;
// 用于表格数据导入时料类型部分数据的转换
// 用于表格数据导入时料类型部分数据的转换
@Component
public class ExcelMaterialTypeInfoConverter implements Converter<Integer> {

4
src/main/java/com/dreamchaser/depository_manage/converter/ExcelStateInfoConverter.java

@ -22,7 +22,7 @@ public class ExcelStateInfoConverter implements Converter<Integer> {
@Override
public Integer convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
switch (cellData.getStringValue()){
case "启用":
case "核准":
return 1;
case "禁用":
return 2;
@ -35,7 +35,7 @@ public class ExcelStateInfoConverter implements Converter<Integer> {
public WriteCellData<?> convertToExcelData(Integer value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
switch (value){
case 1:
return new WriteCellData("启用");
return new WriteCellData("核准");
case 2:
return new WriteCellData("禁用");
default:

53
src/main/java/com/dreamchaser/depository_manage/converter/ExcelValid.java

@ -0,0 +1,53 @@
package com.dreamchaser.depository_manage.converter;
import com.alibaba.excel.converters.AutoConverter;
import com.alibaba.excel.converters.Converter;
import java.lang.annotation.*;
/**
* Excel导入必填校验注解
*
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface ExcelValid {
String message() default "非空字段必填";
/**
* Index of column
*
* Read or write it on the index of column, If it's equal to -1, it's sorted by Java class.
*
* priority: index &gt; order &gt; default sort
*
* @return Index of column
*/
int index() default -1;
/**
* Defines the sort order for an column.
*
* priority: index &gt; order &gt; default sort
*
* @return Order of column
*/
int order() default Integer.MAX_VALUE;
/**
* Force the current field to use this converter.
*
* @return Converter
*/
Class<? extends Converter<?>> converter() default AutoConverter.class;
/**
*
* default @see com.alibaba.excel.util.TypeUtil if default is not meet you can set format
*
* @return Format string
* @deprecated please use {@link com.alibaba.excel.annotation.format.DateTimeFormat}
*/
@Deprecated
String format() default "";
}

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

@ -10,7 +10,7 @@ public class ApplicationOutRecord {
private Integer id;
/**
* 料id
* 料id
*/
private Integer mid;

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

@ -8,55 +8,41 @@ import com.dreamchaser.depository_manage.converter.ExcelMaterialTypeInfoConverte
import com.dreamchaser.depository_manage.converter.ExcelStateInfoConverter;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.xmlunit.util.Convert;
import java.math.BigInteger;
/**
* 用于excel表的导入
* 用于物料excel表的导入
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class ExcelInfo {
/** 料编号 */
/** 料编号 */
@ExcelProperty("EAS编号")
private Integer id;
/** 仓库名称 */
@ExcelProperty(value = "仓库名称",converter = ExcelDepositoryInfoConverter.class)
private Integer depositoryId;
/** 材料名称 */
@ExcelProperty("材料名称")
/** 物料名称 */
@ExcelProperty(value = "物料名称")
private String mname;
/** 数量 */
@ExcelProperty("数量")
private Double quantity;
/** 总金额 */
@ExcelProperty("总金额")
private Double amounts;
/** 材料种类id */
@ExcelProperty(value = "材料种类",converter = ExcelMaterialTypeInfoConverter.class)
/** 物料种类id */
@ExcelProperty(value = "物料种类编码")
private Integer typeId;
/** 料状态 */
/** 物料状态 */
@ExcelProperty(value = "状态",converter = ExcelStateInfoConverter.class)
private Integer state;
/** 存货编码 */
@ExcelProperty("存货编码")
/** 编码 */
@ExcelProperty("编码")
private Long code;
/** 规格型号 */
@ExcelProperty("规格型号")
private String version;
/** 单价 */
@ExcelProperty("单价")
private Double price;
/** 计量单位 */
@ExcelProperty("计量单位")
@ -65,8 +51,4 @@ public class ExcelInfo {
/** 材质 */
@ExcelProperty("材质")
private String texture;
/** 仓库编码 */
@ExcelProperty("仓库编码")
private String depositoryCode;
}

50
src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfoByInventory.java

@ -0,0 +1,50 @@
package com.dreamchaser.depository_manage.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.dreamchaser.depository_manage.converter.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 用于库存excel表的导入
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class ExcelInfoByInventory {
/** 物料编号 */
@ExcelProperty("EAS编号")
private Integer id;
/** 存货编码 */
@ExcelProperty(value = "编码",converter = ExcelMaterialCodeConverter.class)
private Long code;
/** 仓库名称 */
@ExcelProperty(value = "仓库编码",converter = ExcelDepositoryInfoConverter.class)
@ExcelValid(message = "仓库编码未填写")
private Integer depositoryId;
/** 物料名称 */
@ExcelProperty("物料名称")
private String mname;
/** 数量 */
@ExcelProperty(value = "数量")
@ExcelValid(message = "数量未填写")
private String quantity;
/** 总金额 */
@ExcelProperty("总金额")
private String amounts;
/** 单价 */
@ExcelProperty("单价")
@ExcelValid(message = "单价未填写")
private String price;
/** 仓库编码 */
@ExcelProperty("库位码")
private String depositoryCode;
}

36
src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfoByMT.java

@ -0,0 +1,36 @@
package com.dreamchaser.depository_manage.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.dreamchaser.depository_manage.converter.ExcelDepositoryInfoConverter;
import com.dreamchaser.depository_manage.converter.ExcelMTParentIdConverter;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 用于物料类型excel表的导入
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class ExcelInfoByMT {
/** 分类名称 */
@ExcelProperty(value = "分类名称")
private String tname;
/**
* 物料编码
*/
@ExcelProperty(value = "编码")
private Integer id;
/**
* 物料上级编码
*/
@ExcelProperty(value = "上级编码")
private Integer parentId;
/**
* 物料介绍
*/
@ExcelProperty(value = "介绍")
private String introduce;
}

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

@ -20,7 +20,7 @@ public class Material {
/** 仓库id */
private Integer depositoryId;
/** 料名称 */
/** 料名称 */
private String mname;
/** 数量 */
@ -29,10 +29,10 @@ public class Material {
/** 总金额 */
private Double amounts;
/** 料种类id */
/** 料种类id */
private Integer typeId;
/** 料状态 */
/** 料状态 */
private Integer state;
/** 存货编码 */
@ -44,7 +44,7 @@ public class Material {
/** 单价 */
private Double price;
/** 料类型 */
/** 料类型 */
private MaterialType materialType;
/** 所属仓库 */

57
src/main/java/com/dreamchaser/depository_manage/entity/Place.java

@ -0,0 +1,57 @@
package com.dreamchaser.depository_manage.entity;
import lombok.Data;
/**
* 库位
*/
@Data
public class Place {
/**
* id
*/
private Integer id;
/**
*
*/
private Integer x;
/**
*
*/
private Integer y;
/**
*
*/
private Integer z;
/**
* 存放物料id
*/
private Integer mid;
/**
* 该库位所处仓库
*/
private Integer did;
/**
* 库位编码
*/
private String code;
/**
* 当前库位最少数目
*/
private Integer min;
/**
* 当前库位最多数目
*/
private Integer max;
/**
* 当前库位状态
*/
private Integer state;
}

10
src/main/java/com/dreamchaser/depository_manage/entity/StandingBook.java

@ -24,7 +24,7 @@ public class StandingBook {
/** 总价 */
private Integer price;
/** 料名称 */
/** 料名称 */
private String materialName;
/* This code was generated by TableGo tools, mark 1 end. */
@ -108,19 +108,19 @@ public class StandingBook {
}
/**
* 获取料名称
* 获取料名称
*
* @return 料名称
* @return 料名称
*/
public String getMaterialName() {
return this.materialName;
}
/**
* 设置料名称
* 设置料名称
*
* @param materialName
* 料名称
* 料名称
*/
public void setMaterialName(String materialName) {
this.materialName = materialName;

35
src/main/java/com/dreamchaser/depository_manage/entity/materialOnly.java

@ -0,0 +1,35 @@
package com.dreamchaser.depository_manage.entity;
import lombok.Data;
import java.math.BigInteger;
@Data
public class materialOnly {
/** 存储id */
private Integer id;
/** 物料名称 */
private String mname;
/** 物料种类id */
private Integer typeId;
/** 物料状态 */
private Integer state;
/** 存货编码 */
private BigInteger code;
/** 规格型号 */
private String version;
/** 计量单位 */
private String unit;
/** 材质 */
private String texture;
}

4
src/main/java/com/dreamchaser/depository_manage/listener/ExcelListener.java

@ -6,6 +6,8 @@ import com.alibaba.excel.exception.ExcelDataConvertException;
import com.alibaba.excel.metadata.Cell;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.fastjson.JSON;
import com.dreamchaser.depository_manage.converter.ExcelValid;
import com.dreamchaser.depository_manage.utils.ExcelInValid;
import com.dreamchaser.depository_manage.utils.ResultVo;
import com.dreamchaser.depository_manage.utils.ResultVoUtil;
import lombok.extern.slf4j.Slf4j;
@ -27,6 +29,7 @@ public class ExcelListener<T> extends AnalysisEventListener<T> {
// 每一条数据解析都会来调用
@Override
public void invoke(T t, AnalysisContext analysisContext) {
ExcelInValid.valid(t,analysisContext);
log.info("【Excel文件】解析到一条数据{}:", JSON.toJSONString(t));
dataList.add(t);
}
@ -57,7 +60,6 @@ public class ExcelListener<T> extends AnalysisEventListener<T> {
Map<Integer, Cell> cellMap = context.readRowHolder().getCellMap();
Collection values = cellMap.values();
Iterator iterator = values.iterator();
String result = "";
while (iterator.hasNext()){
ReadCellData next = (ReadCellData) iterator.next();

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

@ -142,4 +142,11 @@ public interface DepositoryMapper {
* @return
*/
List<Depository> findDepositoryByAdminorg(String adminorg);
/**
* 根据部门获取当前父级下的子仓库
* @param map
* @return
*/
List<Depository> findDepositoryByAdminorgAndParent(Map<String,Object> map);
}

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

@ -59,9 +59,22 @@
<include refid="allColumns" />
FROM depository d WHERE 1 = 1
<if test="adminorg != null and adminorg != ''">
and d.adminorg = #{adminorg}
and d.adminorg = #{adminorg}
</if>
or d.adminorg = ''
or d.adminorg = '' and d.state != 3
</select>
<select id="findDepositoryByAdminorgAndParent" resultMap="depositoryMap" parameterType="map">
SELECT
<include refid="allColumns" />
FROM depository d WHERE 1 = 1
<if test="adminorg != null and adminorg != ''">
and (d.adminorg = #{adminorg} or d.adminorg = 361)
</if>
<if test="parentId != null">
AND d.parentId = #{parentId}
</if>
or d.adminorg = '' and d.state != 3
</select>
@ -104,8 +117,12 @@
and (d.adminorg = #{adminorg} or d.adminorg = '')
</if>
AND d.state != 3
<if test="begin != null and size != null">
LIMIT #{begin},#{size}
</if>
</select>
<!-- 根据条件参数查询数据列表数目 -->
<select id="findCountByCondition" resultType="int" parameterType="map">
SELECT count(*)
@ -122,7 +139,7 @@
<if test="state != null and state != '' ">
AND d.state = #{state}
</if>
<if test="parentId != null and parentId != ''">
<if test="parentId != null">
AND d.parentId = #{parentId}
</if>
<if test="cid != null">

6
src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.java

@ -167,21 +167,21 @@ public interface DepositoryRecordMapper {
Double findApplicationOutRecordByDate(Map<String,Object> map);
/**
* 根据条件获取月份中料的总额
* 根据条件获取月份中料的总额
* @param map
* @return
*/
Double findMaterialCountByMonth(Map<String,Object> map);
/**
* 根据条件获取月份中入库料的总额
* 根据条件获取月份中入库料的总额
* @param map
* @return
*/
Double findApplicationInByMonth(Map<String,Object> map);
/**
* 根据条件获取月份中出库料的总额
* 根据条件获取月份中出库料的总额
* @param map
* @return
*/

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

@ -933,7 +933,7 @@
</select>
<!-- 获取某月某料总额-->
<!-- 获取某月某料总额-->
<select id="findMaterialCountByMonth" parameterType="map" resultType="DOUBLE">
select ifnull(sum(quantity),0)
from MaterialCountByMonth
@ -953,7 +953,7 @@
</if>
</select>
<!-- 获取某月某料入库总额-->
<!-- 获取某月某料入库总额-->
<select id="findApplicationInByMonth" parameterType="map" resultType="DOUBLE">
select ifnull(sum(quantity),0)
from applicationinrecordinfo
@ -967,7 +967,7 @@
</if>
</select>
<!-- 获取某月某料出库总额-->
<!-- 获取某月某料出库总额-->
<select id="findApplicationOutByMonth" parameterType="map" resultType="DOUBLE">
select ifnull(sum(aorquantity),0)
from applicationoutrecordinfo

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

@ -46,7 +46,7 @@ public interface MaterialMapper {
Integer updateMaterial(Material material);
/**
* 将对应仓库id和料名称的库存修改数量和价格
* 将对应仓库id和料名称的库存修改数量和价格
* @param map 参数列表
* @return 受影响的行数
*/
@ -103,13 +103,13 @@ public interface MaterialMapper {
Integer findCountByCondition(Map<String,Object> map);
/**
* 根据主键id批量将料状态改为删除
* 根据主键id批量将料状态改为删除
* @param ids
* @return 受影响条数
*/
Integer changeStateToDeletedByIds(List<Integer> ids);
/**
* 根据主键id将料状态改为删除
* 根据主键id将料状态改为删除
* @param id
* @return 受影响条数
*/

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

@ -54,12 +54,12 @@
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,m.depositoryCode,m.number_of_temporary
</sql>
<!-- 表查询字段,包括料类型 -->
<!-- 表查询字段,包括料类型 -->
<sql id="allColumnsAndTypeName">
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
</sql>
@ -129,7 +129,7 @@
</if>
</select>
<!-- 根据仓库查询-->
<!-- 根据仓库查询-->
<select id="findMaterialByDepositorys" resultMap="materialMap" parameterType="list">
SELECT
<include refid="allColumns" />
@ -172,17 +172,42 @@
id, depository_id, mname, quantity, price, type_id,code,unit,version,texture,amounts,depositoryCode
) VALUES (
#{id},
<if test="depositoryId != null">
#{depositoryId},
</if>
<if test="depositoryId == null">
null,
</if>
#{mname},
<if test="quantity != null">
#{quantity},
</if>
<if test="quantity == null">
0,
</if>
<if test="price != null">
#{price},
</if>
<if test="price == null">
0,
</if>
#{materialTypeId},
#{code},
#{unit},
#{version},
#{texture},
<if test="amounts != null">
#{amounts},
</if>
<if test="amounts == null">
0,
</if>
<if test="depositoryCode != null">
#{depositoryCode}
</if>
<if test="depositoryCode == null">
''
</if>
)
</insert>
@ -248,13 +273,16 @@
depositoryCode = #{depositoryCode},
</if>
<if test="numberOfTemporary != null and numberOfTemporary != ''">
number_of_temporary = #{numberOfTemporary}
number_of_temporary = #{numberOfTemporary},
</if>
<if test="texture != null and texture != ''">
texture = #{texture}
</if>
</set>
WHERE id = #{id}
</update>
<!-- 根据仓库id和材料名称改变材料的数量 -->
<!-- 根据仓库id和物料名称改变物料的数量 -->
<update id="changeMaterial" parameterType="map">
UPDATE material
<set>

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

@ -15,63 +15,63 @@ import java.util.Map;
@Mapper
public interface MaterialTypeMapper {
/**
* 根据map插入一条新料类型
* 根据map插入一条新料类型
* @param map 参数map
* @return 受影响的行数
*/
Integer insertMaterialType(Map<String,Object> map);
/**
* 根据id修改料类型数据
* 根据id修改料类型数据
* @param map 修改的参数
* @return 受影响的行数
*/
Integer updateMaterialType(Map<String,Object> map);
/**
* 根据id查询料类型
* @param id 料类型id
* @return 料类型对象
* 根据id查询料类型
* @param id 料类型id
* @return 料类型对象
*/
MaterialType findMaterialTypeById(Integer id);
/**
* 根据id查询料名称
* @param id 料类型id
* @return 料名称
* 根据id查询料名称
* @param id 料类型id
* @return 料名称
*/
String findMaterialTypeNameById(Integer id);
/**
* 根据条件查询料类型数目
* 根据条件查询料类型数目
* @param map 条件参数map
* @return 符合条件的数目
*/
Integer findMaterialTypeCountByCondition(Map<String,Object> map);
/**
* 根据条件查询料类型
* 根据条件查询料类型
* @param map 条件参数map
* @return 符合条件的料类型
* @return 符合条件的料类型
*/
List<MaterialType> findMaterialTypeByCondition(Map<String,Object> map);
/**
* 查询所有料类型
* @return 所有料类型
* 查询所有料类型
* @return 所有料类型
*/
List<MaterialType> findMaterialTypeAll();
/**
* 根据id删除料类型
* 根据id删除料类型
* @param id 待删除id
* @return 受影响的条数
*/
Integer deleteMaterialTypeById(Integer id);
/**
* 根据多个id删除料类型
* 根据多个id删除料类型
* @param ids 待删除所有id
* @return 受影响条数
*/
@ -85,14 +85,14 @@ public interface MaterialTypeMapper {
Integer updateMaterialTypes(Map<String,Object> map);
/**
* 根据主键id将料类型状态修改为删除
* 根据主键id将料类型状态修改为删除
* @param id
* @return 受影响条数
*/
Integer changeStateToDeletedById(Integer id);
/**
* 根据多个主键id将料类型状态修改为删除
* 根据多个主键id将料类型状态修改为删除
* @param ids
* @return 受影响条数
*/

88
src/main/java/com/dreamchaser/depository_manage/mapper/PlaceMapper.java

@ -0,0 +1,88 @@
package com.dreamchaser.depository_manage.mapper;
import com.dreamchaser.depository_manage.entity.Place;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
@Repository
@Mapper
public interface PlaceMapper {
/**
* 查找所有库位
* @return
*/
List<Place> findPlaceAll();
/**
* 根据id查询库位
* @return
*/
Place findPlaceById(Integer id);
/**
* 根据条件查找库位
* @param map
* @return
*/
List<Place> findPlaceByCondition(Map<String,Object> map);
/**
* 查找符合条件的库位数
* @param map
* @return
*/
Integer findPlaceCountByCondition(Map<String,Object> map);
/**
* 根据条件修改库位
* @param map
* @return
*/
Integer UpdatePlace(Map<String,Object> map);
/**
* 根据条件修改库位
* @param place
* @return
*/
Integer UpdatePlace(Place place);
/**
* 根据主键删除库位
* @param id
* @return
*/
Integer DelPlace(Integer id);
/**
* 插入一条库位信息
* @param map
* @return
*/
Integer InsertPlace(Map<String,Object> map);
/**
* 根据仓库编号查找库位
* @param did
* @return
*/
List<Place> findPlaceByDid(Integer did);
/**
* 根据id将库位状态改为删除
* @param id
* @return
*/
Integer changeStateToDeletedById(Integer id);
/**
* 根据批量id将库位状态改为删除
* @param ids
* @return
*/
Integer changeStateToDeletedByIds(List<Integer> ids);
}

204
src/main/java/com/dreamchaser/depository_manage/mapper/PlaceMapper.xml

@ -0,0 +1,204 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- notice -->
<mapper namespace="com.dreamchaser.depository_manage.mapper.PlaceMapper">
<!-- This code was generated by TableGo tools, mark 1 begin. -->
<!-- 字段映射 -->
<resultMap id="placeMap" type="com.dreamchaser.depository_manage.entity.Place">
<id column="id" property="id" jdbcType="INTEGER" />
<result column="x" property="x" jdbcType="INTEGER" />
<result column="y" property="y" jdbcType="INTEGER" />
<result column="z" property="z" jdbcType="INTEGER" />
<result column="mid" property="mid" jdbcType="INTEGER" />
<result column="did" property="did" jdbcType="INTEGER" />
<result column="code" property="code" jdbcType="VARCHAR" />
<result column="min" property="min" jdbcType="INTEGER" />
<result column="max" property="max" jdbcType="INTEGER" />
<result column="state" property="state" jdbcType="INTEGER" />
</resultMap>
<!-- 表查询字段 -->
<sql id="allColumns">
p.id,p.x,p.y,p.z,p.code,p.mid,p.did,p.min,p.max,p.state
</sql>
<!-- 查询所有 -->
<select id="findPlaceAll" resultMap="placeMap">
SELECT
<include refid="allColumns" />
FROM place p
where p.state != 3
</select>
<!-- 根据条件参数查询列表 -->
<select id="findPlaceByCondition" resultMap="placeMap" parameterType="map">
SELECT
<include refid="allColumns" />
FROM place p WHERE 1 = 1
<if test="id != null and id != ''">
and p.id = #{id}
</if>
<if test="x != null and x != ''">
AND p.x = #{x}
</if>
<if test="y != null and y != ''">
AND p.y = #{y}
</if>
<if test="z != null and z != ''">
AND p.z = #{z}
</if>
<if test="code != null and code != ''">
AND p.code = #{code}
</if>
<if test="mid != null and mid != ''">
AND p.mid = #{mid}
</if>
<if test="did != null and did != ''">
AND p.did = #{did}
</if>
<if test="max != null and max != ''">
AND p.max = #{max}
</if>
<if test="min != null and min != ''">
AND p.min = #{min}
</if>
<if test="state != null and state != ''">
and p.state = #{state}
</if>
and p.state != 3
<if test="begin != null and size != null">
LIMIT #{begin},#{size}
</if>
</select>
<select id="findPlaceCountByCondition" parameterType="map" resultType="int">
SELECT
count(*)
FROM place p WHERE 1 = 1
<if test="id != null and id != ''">
and p.id = #{id}
</if>
<if test="x != null and x != ''">
AND p.x = #{x}
</if>
<if test="y != null and y != ''">
AND p.y = #{y}
</if>
<if test="z != null and z != ''">
AND p.z = #{z}
</if>
<if test="mid != null and mid != ''">
AND p.mid = #{mid}
</if>
<if test="did != null and did != ''">
AND p.did = #{did}
</if>
<if test="max != null and max != ''">
AND p.max = #{max}
</if>
<if test="min != null and min != ''">
AND p.min = #{min}
</if>
<if test="state != null and state != ''">
and p.state = #{state}
</if>
and p.state != 3
</select>
<select id="findPlaceByDid" parameterType="int" resultMap="placeMap">
SELECT
<include refid="allColumns" />
FROM place p WHERE 1 = 1 and p.did = #{did}
</select>
<!-- 根据主键查询信息 -->
<select id="findPlaceById" resultMap="placeMap" parameterType="int">
SELECT
<include refid="allColumns" />
FROM place p WHERE p.id = #{id}
</select>
<!-- 新增信息 -->
<insert id="InsertPlace">
INSERT INTO place (
id,x,y,z,code, mid,did,min,max,state
) VALUES (
#{id},
#{x},
#{y},
#{z},
#{code},
#{mid},
#{did},
#{min},
#{max},
#{state}
)
</insert>
<!-- 修改信息 -->
<update id="UpdatePlace">
UPDATE place
<set>
<if test="x != null">
x = #{x},
</if>
<if test="y != null">
y = #{y},
</if>
<if test="z != null">
z = #{z},
</if>
<if test="code != null">
code = #{code},
</if>
<if test="mid != null">
mid = #{mid},
</if>
<if test="did != null">
did = #{did},
</if>
<if test="min != null">
min = #{min},
</if>
<if test="max != null">
max = #{max},
</if>
<if test="state != null and state !=''">
state = #{state}
</if>
</set>
WHERE id = #{id}
</update>
<!-- 根据主键删除 -->
<delete id="DelPlace" parameterType="int">
DELETE FROM place WHERE id = #{id}
</delete>
<!-- 根据主键批量将状态改为删除-->
<update id="changeStateToDeletedByIds" parameterType="list">
update place
<set>
state = 3
</set>
where id in
<foreach collection="list" index="index" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</update>
<!-- 根据主键将状态改为删除-->
<update id="changeStateToDeletedById" parameterType="int">
UPDATE place
<set>
state = 3
</set>
WHERE id = #{id}
</update>
</mapper>

13
src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationModel.java

@ -15,7 +15,7 @@ public class ApplicationModel {
private String depositoryName;
/**
* 料型号
* 料型号
*/
private String version;
/**
@ -23,11 +23,11 @@ public class ApplicationModel {
*/
private Integer depositoryId;
/**
* 料名称
* 料名称
*/
private String mname;
/**
* 料编号
* 料编号
*/
private Integer mid;
/**
@ -36,7 +36,7 @@ public class ApplicationModel {
private Integer applicant;
/**
* 料编码
* 料编码
*/
private BigInteger code;
@ -49,4 +49,9 @@ public class ApplicationModel {
* 备注说明
*/
private String applyRemark;
/**
* 单价
*/
private Double price;
}

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

@ -10,12 +10,12 @@ public class ApplicationOutRecordP {
private Integer id;
/**
* 料id
* 料id
*/
private Integer mid;
/**
* 料名称
* 料名称
*/
private String mname;
@ -130,7 +130,7 @@ public class ApplicationOutRecordP {
private Integer transferId;
/**
* 料存货编码
* 料存货编码
*/
private String mcode;
}

30
src/main/java/com/dreamchaser/depository_manage/pojo/MaterialOnlyP.java

@ -0,0 +1,30 @@
package com.dreamchaser.depository_manage.pojo;
import java.math.BigInteger;
public class MaterialOnlyP {
/** 存储id */
private Integer id;
/** 物料名称 */
private String mname;
/** 物料种类id */
private Integer typeId;
/** 物料状态 */
private Integer state;
/** 存货编码 */
private BigInteger code;
/** 规格型号 */
private String version;
/** 计量单位 */
private String unit;
/** 材质 */
private String texture;
}

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

@ -28,7 +28,7 @@ public class MaterialP {
private Integer depositoryId;
/**
* 料名称
* 料名称
*/
private String mname;
@ -43,12 +43,12 @@ public class MaterialP {
private Double amounts;
/**
* 料种类名称
* 料种类名称
*/
private String typeName;
/**
* 料状态
* 料状态
*/
private Integer state;
@ -108,10 +108,10 @@ public class MaterialP {
public MaterialP(Material material) {
this.id = material.getId(); // 编号
this.mname = material.getMname(); // 料名称
this.mname = material.getMname(); // 料名称
this.quantity = material.getQuantity(); // 数量
this.price = material.getPrice(); // 单价
this.state = material.getState(); // 料状态
this.state = material.getState(); // 料状态
this.amounts = material.getAmounts(); // 总额
this.unit = material.getUnit(); // 计量单位
this.texture = material.getTexture(); // 材质

105
src/main/java/com/dreamchaser/depository_manage/pojo/PlaceP.java

@ -0,0 +1,105 @@
package com.dreamchaser.depository_manage.pojo;
import com.dreamchaser.depository_manage.entity.Place;
import lombok.Data;
@Data
public class PlaceP {
/**
* id
*/
private Integer id;
/**
*
*/
private Integer x;
/**
*
*/
private Integer y;
/**
*
*/
private Integer z;
/**
* 存放物料id
*/
private Integer mid;
/**
* 该库位所处仓库
*/
private Integer did;
/**
* 库位编码
*/
private String code;
/**
* 当前库位最少数目
*/
private Integer min;
/**
* 当前库位最多数目
*/
private Integer max;
/**
* 当前库位状态
*/
private Integer state;
/**
* 物料名称
*/
private String mname;
/**
* 物料编码
*/
private String mcode;
/**
* 仓库编码
*/
private String depositoryCode;
/**
* 仓库名称
*/
private String depositoryName;
public PlaceP(Integer id, Integer x, Integer y, Integer z, Integer mid, Integer did, String code, Integer min, Integer max, Integer state, String mname, String mcode, String depositoryCode, String depositoryName) {
this.id = id;
this.x = x;
this.y = y;
this.z = z;
this.mid = mid;
this.did = did;
this.code = code;
this.min = min;
this.max = max;
this.state = state;
this.mname = mname;
this.mcode = mcode;
this.depositoryCode = depositoryCode;
this.depositoryName = depositoryName;
}
public PlaceP(Place p){
this.id = p.getId();
this.x = p.getX();
this.y = p.getY();
this.z = p.getZ();
this.mid = p.getMid();
this.did = p.getDid();
this.code = p.getCode();
this.min = p.getMin();
this.max = p.getMax();
this.state = p.getState();
}
}

20
src/main/java/com/dreamchaser/depository_manage/pojo/RestResponse.java

@ -1,10 +1,16 @@
package com.dreamchaser.depository_manage.pojo;
import cn.hutool.core.lang.Snowflake;
import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.utils.CreateQrCodeUtil;
import com.dreamchaser.depository_manage.utils.SnowFlakeUtil;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.IOException;
import java.io.Serializable;
import java.util.Map;
/**
* 所有服务统一响应数据格式
@ -25,6 +31,10 @@ public class RestResponse implements Serializable {
* 状态码
*/
private int status=200;
// 通过雪花算法产生随机id
private String SnowId;
/**
* 状态信息
*/
@ -48,5 +58,15 @@ public class RestResponse implements Serializable {
this.status = status;
this.statusInfo = statusInfo;
}
public static RestResponse CreateQrCode(Map<String,Object> params) throws IOException {
// 获取要生产二维码的内容
String context = JSONObject.toJSONString(params);
// 生成base64类型图片
String qrCode = CreateQrCodeUtil.createQrCode(context, 200, 200);
return new RestResponse(qrCode,200,new StatusInfo("成功!","二维码生成成功"));
}
}

16
src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java

@ -151,23 +151,23 @@ public interface DepositoryRecordService {
/**
* 计算料总数
* 计算料总数
* @return
*/
Double CalculateAllCount(Integer type,String state);
/**
* 计算料总额
* 计算料总额
* @return
*/
Double CalculateAllPrice(Integer type,String state);
/**
* 计算入库料总额
* 计算入库料总额
* @return
*/
Double CalculateAllApplicationInPrice();
/**
* 计算出库料总额
* 计算出库料总额
* @return
*/
Double CalculateAllApplicationOutPrice(String state);
@ -212,13 +212,13 @@ public interface DepositoryRecordService {
*/
Double findApplicationOutRecordByDate(Long end,Long start,Integer depositoryId);
/**
* 根据条件获取月份中料的总额
* 根据条件获取月份中料的总额
* @param map
* @return
*/
Double findMaterialCountByMonth(Map<String,Object> map);
/**
* 根据条件获取月份中料的总额
* 根据条件获取月份中料的总额
* @param map
* @return
*/
@ -275,12 +275,12 @@ public interface DepositoryRecordService {
/**
* 计算入库料总数
* 计算入库料总数
* @return
*/
Double CalculateAllApplicationInCount();
/**
* 计算出库料总数
* 计算出库料总数
* @return
*/
Double CalculateAllApplicationOutCount(String state);

23
src/main/java/com/dreamchaser/depository_manage/service/ExcelService.java

@ -5,5 +5,26 @@ import com.dreamchaser.depository_manage.utils.ResultVo;
import org.springframework.web.multipart.MultipartFile;
public interface ExcelService {
public ResultVo importExcel(MultipartFile file);
/**
* 用于导入物料名称
* @param file
* @param excelInfo
* @return
*/
ResultVo importExcelMaterial(MultipartFile file,String excelInfo);
/**
* 用于导入物料分类
* @param file
* @return
*/
ResultVo importExcelMaterialType(MultipartFile file);
/**
* 用于导入库存信息
* @param file
* @return
*/
ResultVo importExcelInventory(MultipartFile file);
}

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

@ -9,7 +9,7 @@ import java.util.List;
import java.util.Map;
/**
* 库存料service层接口
* 库存料service层接口
* @author Dreamchaser
*/
public interface MaterialService {
@ -51,6 +51,13 @@ public interface MaterialService {
*/
List<MaterialP> findMaterialPByCondition(Map<String, Object> map);
/**
* 根据编码获取对应物料
* @return
*/
Material findMaterialByCode(Long code);
/**
* 查询所有的库存信息
* @return 所有的库存信息
@ -92,14 +99,14 @@ public interface MaterialService {
/**
* 根据主键Id将料状态改为删除
* 根据主键Id将料状态改为删除
* @param id
* @return 受影响条数
*/
Integer changeStateToDeletedById(Integer id);
/**
* 根据主键id批量将料状态改为删除
* 根据主键id批量将料状态改为删除
* @param ids
* @return 受影响条数
*/

16
src/main/java/com/dreamchaser/depository_manage/service/MaterialTypeService.java

@ -6,12 +6,12 @@ import java.util.List;
import java.util.Map;
/**
* 料的服务层接口
* 料的服务层接口
* @author 金昊霖
*/
public interface MaterialTypeService {
/**
* 插入一条料类型记录
* 插入一条料类型记录
* @param map 参数map
* @return 受影响的数量
*/
@ -25,14 +25,14 @@ public interface MaterialTypeService {
Integer findMaterialTypeCountByCondition(Map<String,Object> map);
/**
* 根据条件查询料类型
* 根据条件查询料类型
* @param map
* @return 符合条件的记录
*/
List<MaterialType> findMaterialTypeByCondition(Map<String,Object> map);
/**
* 查询所有料类型
* 查询所有料类型
* @return 所有记录
*/
List<MaterialType> findMaterialTypeAll();
@ -57,28 +57,28 @@ public interface MaterialTypeService {
Integer deleteMaterialTypeByIds(List<Integer> ids);
/**
* 修改料类型
* 修改料类型
* @param map
* @return 受影响条数
*/
Integer updateMaterialType(Map<String,Object> map);
/**
* 根据主键id查询对应料类型
* 根据主键id查询对应料类型
* @param id
* @return 对应记录
*/
MaterialType findMaterialTypeById(Integer id);
/**
* 根据主键id将料类型状态修改为删除
* 根据主键id将料类型状态修改为删除
* @param id
* @return 受影响条数
*/
Integer changeStateToDeletedById(Integer id);
/**
* 根据多个主键ids将料类型状态修改为删除
* 根据多个主键ids将料类型状态修改为删除
* @param ids
* @return 受影响条数
*/

87
src/main/java/com/dreamchaser/depository_manage/service/PlaceService.java

@ -0,0 +1,87 @@
package com.dreamchaser.depository_manage.service;
import com.dreamchaser.depository_manage.entity.Place;
import java.util.List;
import java.util.Map;
public interface PlaceService {
/**
* 查找所有库位
* @return
*/
List<Place> findPlaceAll();
/**
* 根据条件查找库位
* @param map
* @return
*/
List<Place> findPlaceByCondition(Map<String,Object> map);
/**
* 查找符合条件的库位数
* @param map
* @return
*/
Integer findPlaceCountByCondition(Map<String,Object> map);
/**
* 根据条件修改库位
* @param map
* @return
*/
Integer UpdatePlace(Map<String,Object> map);
/**
* 根据条件修改库位
* @param place
* @return
*/
Integer UpdatePlace(Place place);
/**
* 根据主键删除库位
* @param pid
* @return
*/
Integer DelPlace(Integer pid);
/**
* 插入一条库位信息
* @param map
* @return
*/
Integer InsertPlace(Map<String,Object> map);
/**
* 根据仓库编号查找库位
* @param did
* @return
*/
List<Place> findPlaceByDid(Integer did);
/**
* 根据id查询库位
* @return
*/
Place findPlaceById(Integer id);
/**
* 根据id将库位状态改为删除
* @param id
* @return
*/
Integer changeStateToDeletedById(Integer id);
/**
* 根据批量id将库位状态改为删除
* @param ids
* @return
*/
Integer changeStateToDeletedByIds(List<Integer> ids);
}

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

@ -12,11 +12,10 @@ import com.dreamchaser.depository_manage.mapper.*;
import com.dreamchaser.depository_manage.pojo.*;
import com.dreamchaser.depository_manage.service.DepositoryRecordService;
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 com.dreamchaser.depository_manage.utils.*;
import org.apache.http.protocol.HTTP;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.Mergeable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
@ -53,6 +52,12 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
@Autowired
private RedisTemplate<String, String> redisTemplate;
@Autowired
private RedissonClient redissonClient;
/**
* 提交申请插入一条仓库调度记录
*
@ -90,7 +95,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
Double Inventory = depositoryMapper.getToDayInventoryByDName(temp);
String code = createCode(depositoryRecordById.getDname(), "InOrderNumber");
Double quantity = Double.parseDouble((String) map.get("quantity"));
Double price = Double.parseDouble((String)map.get("price"));
Integer mid = ObjectFormatUtil.toInteger(map.get("mid"));
Material material = materialMapper.findMaterialById(mid);
// 判断剩余容量是否可以存入
if (depositoryRecordById.getMaxNumber() - Inventory < quantity) {
@ -100,23 +107,27 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
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);
// 获取当前入库金额
Double amounts = (quantity * price * 100);
// 获取平均价格
Double avgPrice = (material.getAmounts() + amounts) / (material.getQuantity() + quantity);
map.put("amounts", amounts);
map.put("price",price * 100);
String simpleTime = DateUtil.getSimpleTime(new Date());
map.put("applicant_time", DateUtil.DateTimeToTimeStamp(simpleTime));
map.put("code", code);
// 获取当前
// 获取当前
if (materialByCondition.size() > 0) { // 如果当前存在
Material mt = materialByCondition.get(0);
mt.setAmounts(mt.getAmounts() + amounts);
mt.setQuantity((int) (mt.getQuantity() + quantity));
mt.setPrice(avgPrice);
materialMapper.updateMaterial(mt);
} else {
Map<String, Object> insert = new HashMap<>();
Material materialById = materialMapper.findMaterialById(mid);
insert.put("depositoryId", depositoryId);
insert.put("price", materialById.getPrice());
insert.put("price", avgPrice);
insert.put("mname", materialById.getMname());
insert.put("quantity", quantity);
insert.put("materialTypeId", materialById.getTypeId());
@ -124,7 +135,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
insert.put("unit", materialById.getUnit());
insert.put("version", materialById.getVersion());
insert.put("texture", materialById.getTexture());
insert.put("amounts", quantity * materialById.getPrice());
insert.put("amounts", amounts);
insert.put("depositoryCode", materialById.getDepositoryCode());
materialMapper.insertMaterial(insert);
}
@ -143,7 +154,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
Long time = DateUtil.DateTimeToTimeStamp(DateUtil.getSimpleTime(new Date()));
map.put("applicantTime", time);
Integer mid = ObjectFormatUtil.toInteger(map.get("mid"));
// 获取当前
// 获取当前
Material materialById = materialMapper.findMaterialById(mid);
int amounts = (int) ((materialById.getPrice() / 100) * quantity * 100);
map.put("price", amounts);
@ -153,7 +164,11 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
map.put("istransfer", 2);
Map<String, Object> update = new HashMap<>();
update.put("id", materialById.getId());
update.put("numberOfTemporary", materialById.getNumberOfTemporary() + quantity);
Integer numberOfTemporary = materialById.getNumberOfTemporary();
if(numberOfTemporary == null){
numberOfTemporary = 0;
}
update.put("numberOfTemporary", numberOfTemporary + quantity);
materialMapper.updateMaterial(update);
Depository depositoryRecordById = depositoryMapper.findDepositoryRecordById(materialById.getDepositoryId());
String code = createCode(depositoryRecordById.getDname(), "outOrderNumber");
@ -172,7 +187,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
}
/**
* 计算购入料总数
* 计算购入料总数
*
* @return
*/
@ -187,7 +202,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
}
/**
* 计算出库料总数
* 计算出库料总数
*
* @param state
* @return
@ -586,7 +601,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
}
/**
* 计算料总数
* 计算料总数
*
* @return
*/
@ -614,7 +629,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
/**
* 计算料总额
* 计算料总额
*
* @return
*/
@ -641,7 +656,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
}
/**
* 计算入库料总额
* 计算入库料总额
*
* @return
*/
@ -659,7 +674,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
}
/**
* 计算出库料总额
* 计算出库料总额
*
* @param state
* @return
@ -771,7 +786,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
}
/**
* 根据条件获取月份中料的总额
* 根据条件获取月份中料的总额
*
* @param map
* @return
@ -782,7 +797,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
}
/**
* 根据条件获取月份中料的总额
* 根据条件获取月份中料的总额
*
* @param map
* @return
@ -939,21 +954,23 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
* @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;
RLock lock = redissonClient.getLock(key);
// 单号(公司简称+仓库简称+年月日+数字(位数设置>=9))
String code = "GK";
String nowTime = DateUtil.getNowTime();
depositoryName = WordUtil.getPinYinHeadChar(depositoryName);
lock.lock(5,TimeUnit.SECONDS);
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);
lock.unlock();
orderNumber = String.format("%09d", ObjectFormatUtil.toInteger(orderNumber));
code = code + depositoryName + nowTime + orderNumber;
return code;
}

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

@ -63,14 +63,14 @@ public class DepositoryServiceImpl implements DepositoryService {
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);
code = "GK" + dnamePinYin + "-" + String.format("%02d", condition.size() + 1);
}
}else{
// 设置编码
if(adminorgName.isEmpty()){
code = "GK" + dnamePinYin + "-01";
}else {
code = "GK" + adminorgName.substring(0,2) + dnamePinYin+"-01";
code = "GK" + dnamePinYin+"-01";
}
}
}else {
@ -112,6 +112,15 @@ public class DepositoryServiceImpl implements DepositoryService {
*/
@Override
public List<Depository> findDepositoryRecordPByCondition(Map<String,Object> map) {
Integer size = 10, page = 1;
if (map.containsKey("size")) {
size = ObjectFormatUtil.toInteger(map.get("size"));
map.put("size", size);
}
if (map.containsKey("page")) {
page = ObjectFormatUtil.toInteger(map.get("page"));
map.put("begin", (page - 1) * size);
}
List<Depository> list = depositoryMapper.findDepositoryRecordPByCondition(map);
for (int i = 0; i < list.size(); i++) {
Depository depository = list.get(i);
@ -309,7 +318,7 @@ public class DepositoryServiceImpl implements DepositoryService {
public List<Object> InitTreeMenus(String adminorg) {
Map<String,Object> param = new HashMap<>();
param.put("parentId",0);
param.put("adminorg",adminorg);
param.put("adminorg",361);
List<Depository> depositories = depositoryMapper.findDepositoryRecordPByCondition(param);
List<Object> list = new ArrayList<>();
for (int i = 0; i < depositories.size(); i++) {
@ -351,7 +360,8 @@ public class DepositoryServiceImpl implements DepositoryService {
}
// 获取当前父类的子类
// List<Depository> parentByDepository = depositoryMapper.getParentByDepository(id);
List<Depository> parentByDepository = depositoryMapper.findDepositoryRecordPByCondition(param);
// List<Depository> parentByDepository = depositoryMapper.findDepositoryRecordPByCondition(param);
List<Depository> parentByDepository = depositoryMapper.findDepositoryByAdminorgAndParent(param);
if(parentByDepository.size() > 0){
for (int i = 0; i < parentByDepository.size(); i++) {
Depository d = parentByDepository.get(i);

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

@ -2,8 +2,12 @@ package com.dreamchaser.depository_manage.service.impl;
import com.alibaba.fastjson.JSON;
import com.dreamchaser.depository_manage.entity.ExcelInfo;
import com.dreamchaser.depository_manage.entity.ExcelInfoByInventory;
import com.dreamchaser.depository_manage.entity.ExcelInfoByMT;
import com.dreamchaser.depository_manage.entity.Material;
import com.dreamchaser.depository_manage.service.ExcelService;
import com.dreamchaser.depository_manage.service.MaterialService;
import com.dreamchaser.depository_manage.service.MaterialTypeService;
import com.dreamchaser.depository_manage.utils.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
@ -31,8 +35,16 @@ public class ExcelServiceImpl implements ExcelService {
@Autowired
MaterialService materialService;
@Autowired
MaterialTypeService materialTypeService;
/**
* 用于导入物料名称
* @param file
* @param excelInfo
* @return
*/
@Override
public ResultVo importExcel(MultipartFile file) {
public ResultVo importExcelMaterial(MultipartFile file,String excelInfo) {
// 1.入参校验
ResultVo<String> checkExcelParam = excelutil.checkExcelParam(file);
if (!checkExcelParam.checkSuccess()) {
@ -49,10 +61,12 @@ public class ExcelServiceImpl implements ExcelService {
return ResultVoUtil.error("【导入Excel文件】生成的Excel文件的路径为空");
}
// 3.读取excel文件
Map<String,Object> readResult = excelutil.simpleExcelRead(filePath, ExcelInfo.class);
Map<String,Object> readResult = new HashMap<>();
if("material".equals(excelInfo)){
readResult = excelutil.simpleExcelRead(filePath, ExcelInfo.class);
}
List<ExcelInfo> excelVos = (List<ExcelInfo>) readResult.get("dataList");
List<String> errMsg =(List<String>) readResult.get("errMsg");
boolean empty = CollectionUtil.isEmpty(excelVos);
if ((CollectionUtil.isEmpty(excelVos) && errMsg.size() < 1) || (excelVos.size() < 2 && errMsg.size() < 1) ) {
log.error("【导入Excel文件】上传Excel文件{}为空", file.getOriginalFilename());
@ -69,14 +83,9 @@ public class ExcelServiceImpl implements ExcelService {
Map<String,Object> param = new HashMap<>();
param.put("mname",excelVos.get(i).getMname());
param.put("code",excelVos.get(i).getCode());
param.put("price",excelVos.get(i).getPrice());
param.put("unit",excelVos.get(i).getUnit());
param.put("amounts",excelVos.get(i).getAmounts());
param.put("quantity",excelVos.get(i).getQuantity());
param.put("version",excelVos.get(i).getVersion());
param.put("texture",excelVos.get(i).getTexture());
param.put("depositoryId",excelVos.get(i).getDepositoryId());
param.put("depositoryCode",excelVos.get(i).getDepositoryCode());
param.put("materialTypeId",excelVos.get(i).getTypeId());
param.put("id",excelVos.get(i).getId());
materialService.insertMaterial(param);
@ -98,4 +107,152 @@ public class ExcelServiceImpl implements ExcelService {
return ResultVoUtil.returnResultVo(200,readResult,"结果");
// return ResultVoUtil.success(excelVos);
}
/**
* 用于导入物料分类
* @param file
* @return
*/
@Override
public ResultVo importExcelMaterialType(MultipartFile file) {
// 1.入参校验
ResultVo<String> checkExcelParam = excelutil.checkExcelParam(file);
if (!checkExcelParam.checkSuccess()) {
log.error(checkExcelParam.getMsg());
return checkExcelParam;
}
// 2.上传至服务器某路径下
ResultVo resultVo = uploadFile(file);
if (!resultVo.checkSuccess()) {
return resultVo;
}
String filePath = (String)resultVo.getData();
if (StringUtils.isBlank(filePath)) {
return ResultVoUtil.error("【导入Excel文件】生成的Excel文件的路径为空");
}
// 3.读取excel文件
Map<String,Object> readResult = excelutil.simpleExcelRead(filePath, ExcelInfoByMT.class);
List<ExcelInfoByMT> excelVos = (List<ExcelInfoByMT>) readResult.get("dataList");
List<String> errMsg =(List<String>) readResult.get("errMsg");
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文件为空");
}
if ((CollectionUtil.isEmpty(excelVos) && errMsg.size() < 1) || (excelVos.size() < 2 && errMsg.size() < 1) ) {
log.error("【导入Excel文件】上传Excel文件{}为空", file.getOriginalFilename());
return ResultVoUtil.error("上传Excel文件为空");
}
// 4.通过线程池开启一个线程去执行数据库操作,主线程继续往下执行
// 4.1开启一个线程
TaskCenterUtil taskCenterUtil = TaskCenterUtil.getTaskCenterUtil();
taskCenterUtil.submitTask(() -> {
List<Object> success = new ArrayList<>();
Map<String,Object> returnResult = new HashMap<>();
for (int i = 0; i < excelVos.size(); i++) {
Map<String,Object> insert = new HashMap<>();
insert.put("id",excelVos.get(i).getId());
insert.put("tname",excelVos.get(i).getTname());
insert.put("introduce",excelVos.get(i).getIntroduce());
if(excelVos.get(i).getParentId() == null){
insert.put("materialTypeId",0);
}else {
insert.put("materialTypeId", excelVos.get(i).getParentId());
}
materialTypeService.insertMaterialType(insert);
success.add(excelVos.get(i));
}
log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVos));
returnResult.put("success",success);
returnResult.put("errMsg",errMsg);
return ResultVoUtil.returnResultVo(200,returnResult,"结果");
});
// 4.2删除临时文件
boolean deleteFile = FileUtil.deleteFile(new File(filePath));
if (!deleteFile) {
log.error("【导入Excel文件】删除临时文件失败,临时文件路径为{}", filePath);
return ResultVoUtil.error("删除临时文件失败");
}
log.info("【导入Excel文件】删除临时文件成功,临时文件路径为:{}", filePath);
return ResultVoUtil.returnResultVo(200,readResult,"结果");
// return ResultVoUtil.success(excelVos);
}
/**
* 用于导入库存信息
* @param file
* @return
*/
@Override
public ResultVo importExcelInventory(MultipartFile file) {
// 1.入参校验
ResultVo<String> checkExcelParam = excelutil.checkExcelParam(file);
if (!checkExcelParam.checkSuccess()) {
log.error(checkExcelParam.getMsg());
return checkExcelParam;
}
// 2.上传至服务器某路径下
ResultVo resultVo = uploadFile(file);
if (!resultVo.checkSuccess()) {
return resultVo;
}
String filePath = (String)resultVo.getData();
if (StringUtils.isBlank(filePath)) {
return ResultVoUtil.error("【导入Excel文件】生成的Excel文件的路径为空");
}
// 3.读取excel文件
Map<String,Object> readResult = excelutil.simpleExcelRead(filePath, ExcelInfoByInventory.class);
List<ExcelInfoByInventory> excelVos = (List<ExcelInfoByInventory>) readResult.get("dataList");
List<String> errMsg =(List<String>) readResult.get("errMsg");
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文件为空");
}
if ((CollectionUtil.isEmpty(excelVos) && errMsg.size() < 1) || (excelVos.size() < 2 && errMsg.size() < 1) ) {
log.error("【导入Excel文件】上传Excel文件{}为空", file.getOriginalFilename());
return ResultVoUtil.error("上传Excel文件为空");
}
// 4.通过线程池开启一个线程去执行数据库操作,主线程继续往下执行
// 4.1开启一个线程
TaskCenterUtil taskCenterUtil = TaskCenterUtil.getTaskCenterUtil();
taskCenterUtil.submitTask(() -> {
List<Object> success = new ArrayList<>();
Map<String,Object> returnResult = new HashMap<>();
for (int i = 0; i < excelVos.size(); i++) {
Map<String,Object> update = new HashMap<>();
update.put("price",excelVos.get(i).getPrice());
update.put("quantity",excelVos.get(i).getQuantity());
if(excelVos.get(i).getAmounts() == null || "".equals(excelVos.get(i).getAmounts())){
update.put("amounts",Double.parseDouble(excelVos.get(i).getPrice())*100 * Double.parseDouble(excelVos.get(i).getQuantity()));
}else {
update.put("amounts", Double.parseDouble(excelVos.get(i).getAmounts()) * 100);
}
update.put("depositoryId",excelVos.get(i).getDepositoryId());
update.put("depositoryCode",excelVos.get(i).getDepositoryCode());
Material materialByCode = materialService.findMaterialByCode(excelVos.get(i).getCode());
update.put("id",materialByCode.getId());
materialService.updateMaterial(update);
success.add(excelVos.get(i));
}
log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVos));
returnResult.put("success",success);
returnResult.put("errMsg",errMsg);
return ResultVoUtil.returnResultVo(200,returnResult,"结果");
});
// 4.2删除临时文件
boolean deleteFile = FileUtil.deleteFile(new File(filePath));
if (!deleteFile) {
log.error("【导入Excel文件】删除临时文件失败,临时文件路径为{}", filePath);
return ResultVoUtil.error("删除临时文件失败");
}
log.info("【导入Excel文件】删除临时文件成功,临时文件路径为:{}", filePath);
return ResultVoUtil.returnResultVo(200,readResult,"结果");
}
}

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

@ -45,12 +45,16 @@ public class MaterialServiceImpl implements MaterialService {
*/
@Override
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);
map.put("price",price);
map.put("amounts",quantity * price);
if(map.containsKey("quantity") && map.containsKey("price")) {
int quantity = (int) Math.round(Double.parseDouble(map.get("quantity").toString()));
int price = (int) (Double.parseDouble(map.get("price").toString()) * 100);
map.put("price",price);
map.put("amounts",quantity * price);
}
return materialMapper.insertMaterial(map);
}
/**
* 增加一条库存记录
*
@ -73,11 +77,15 @@ public class MaterialServiceImpl implements MaterialService {
if(map.containsKey("price")){
Double price = Double.parseDouble((String) map.get("price")) * 100;
Integer quantity = Integer.parseInt((String) map.get("quantity"));
map.put("amounts",price * quantity);
if(!map.containsKey("amounts")) {
map.put("amounts", price * quantity);
}
map.put("price",price);
}
Object materialTypeId = map.get("materialTypeId");
map.put("typeId",materialTypeId);
if(map.containsKey("materialTypeId")) {
Object materialTypeId = map.get("materialTypeId");
map.put("typeId", materialTypeId);
}
return materialMapper.updateMaterial(map);
}
@ -111,14 +119,29 @@ 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);
// 获取当前物料所处仓库
Integer depositoryId = list.get(i).getDepositoryId();
if(depositoryId != null){
Depository depositoryRecordById = depositoryMapper.findDepositoryRecordById(depositoryId);
String code = depositoryRecordById.getCode() + "-" +list.get(i).getDepositoryCode();
list.get(i).setDepositoryCode(code);
}
}
return pack(list);
}
/**
* 根据编码获取对应物料
* @return
*/
@Override
public Material findMaterialByCode(Long code) {
Map<String,Object> map = new HashMap<>();
map.put("code",code);
Material material = materialMapper.findMaterialByCondition(map).get(0);
return material;
}
/**
* 查询所有的库存信息
* @return 所有的库存信息
@ -192,7 +215,7 @@ public class MaterialServiceImpl implements MaterialService {
}
/**
* 根据主键Id将料状态改为删除
* 根据主键Id将料状态改为删除
* @param id
* @return 受影响条数
*/
@ -202,7 +225,7 @@ public class MaterialServiceImpl implements MaterialService {
}
/**
* 根据主键id批量将料状态改为删除
* 根据主键id批量将料状态改为删除
* @param ids
* @return 受影响条数
*/
@ -247,9 +270,12 @@ public class MaterialServiceImpl implements MaterialService {
List<MaterialP> result=new ArrayList<>(list.size());
for (Material material: list){
MaterialP m=new MaterialP(material);
m.setDepositoryName(depositoryMapper.findDepositoryNameById(material.getDepositoryId()));
Integer depositoryId = material.getDepositoryId();
if(depositoryId != null){
m.setDepositoryName(depositoryMapper.findDepositoryNameById(depositoryId));
m.setWarehouseManager(depositoryMapper.findUserNameByDepositoryId(depositoryId));
}
m.setTypeName(materialTypeMapper.findMaterialTypeNameById(material.getTypeId()));
m.setWarehouseManager(depositoryMapper.findUserNameByDepositoryId(material.getDepositoryId()));
result.add(m);
}
return result;
@ -294,7 +320,13 @@ public class MaterialServiceImpl implements MaterialService {
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);
Map<String, Object> stringObjectMap = new HashMap<>();
if(childForMaterialTypeByParent != null) {
stringObjectMap = InitTreeMenus(mt, childForMaterialTypeByParent);
}else{
List<Object> materialByType = AddMaterialByType(mt,mname,"");
stringObjectMap = InitTreeMenus(mt, materialByType);
}
list.add(stringObjectMap);
}
return list;
@ -310,7 +342,13 @@ public class MaterialServiceImpl implements MaterialService {
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);
Map<String, Object> stringObjectMap = new HashMap<>();
if(childForMaterialTypeByParent != null) {
stringObjectMap = InitTreeMenus(mt, childForMaterialTypeByParent);
}else{
List<Object> materialByType = AddMaterialByType(mt,mname,"");
stringObjectMap = InitTreeMenus(mt, materialByType);
}
list.add(stringObjectMap);
}
return list;
@ -330,7 +368,7 @@ public class MaterialServiceImpl implements MaterialService {
}
}
// 在类别后添加料名称
// 在类别后添加料名称
public List<Object> AddMaterialByType(MaterialType mt,String mname,String adminorg){
if(mt != null) {
Map<String, Object> param = new HashMap<>();
@ -341,7 +379,12 @@ public class MaterialServiceImpl implements MaterialService {
dids.add(depository.getId());
}
List<Material> materialPByCondition = new ArrayList<>();
List<Material> materialByDepositorys = materialMapper.findMaterialByDepositorys(dids);
List<Material> materialByDepositorys = new ArrayList<>();
if("".equals(adminorg)){
materialByDepositorys = materialMapper.findMaterialByCondition(new HashMap<String, Object>());
}else{
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));

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

@ -20,7 +20,7 @@ public class MaterialTypeServiceImpl implements MaterialTypeService {
MaterialTypeMapper materialTypeMapper;
/**
* 插入一条料类型记录
* 插入一条料类型记录
* @param map 参数map
* @return 受影响的数量
*/
@ -46,7 +46,7 @@ public class MaterialTypeServiceImpl implements MaterialTypeService {
}
/**
* 根据条件查询料类型
* 根据条件查询料类型
* @param map
* @return 符合条件的记录
*/
@ -56,7 +56,7 @@ public class MaterialTypeServiceImpl implements MaterialTypeService {
}
/**
* 查询所有料类型
* 查询所有料类型
* @return 所有记录
*/
@Override
@ -95,7 +95,7 @@ public class MaterialTypeServiceImpl implements MaterialTypeService {
}
/**
* 修改料类型
* 修改料类型
* @param map
* @return 受影响条数
*/
@ -111,7 +111,7 @@ public class MaterialTypeServiceImpl implements MaterialTypeService {
}
/**
* 根据主键id查询对应料类型
* 根据主键id查询对应料类型
* @param id
* @return 对应记录
*/
@ -121,7 +121,7 @@ public class MaterialTypeServiceImpl implements MaterialTypeService {
}
/**
* 根据主键id将料类型状态修改为删除
* 根据主键id将料类型状态修改为删除
* @param id
* @return 受影响条数
*/
@ -131,7 +131,7 @@ public class MaterialTypeServiceImpl implements MaterialTypeService {
}
/**
* 根据多个主键ids将料类型状态修改为删除
* 根据多个主键ids将料类型状态修改为删除
* @param ids
* @return 受影响条数
*/

136
src/main/java/com/dreamchaser/depository_manage/service/impl/PlaceServiceImpl.java

@ -0,0 +1,136 @@
package com.dreamchaser.depository_manage.service.impl;
import com.dreamchaser.depository_manage.entity.Place;
import com.dreamchaser.depository_manage.mapper.PlaceMapper;
import com.dreamchaser.depository_manage.service.PlaceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class PlaceServiceImpl implements PlaceService {
@Autowired
PlaceMapper placeMapper;
/**
* 查找所有库位
* @return
*/
@Override
public List<Place> findPlaceAll() {
return placeMapper.findPlaceAll();
}
/**
* 根据条件查找库位
* @param map
* @return
*/
@Override
public List<Place> findPlaceByCondition(Map<String, Object> map) {
Map<String,Object> condition = new HashMap<>();
if(map.containsKey("place_x")){
condition.put("x",map.get("place_x"));
}
if(map.containsKey("place_y")){
condition.put("y",map.get("place_y"));
}
if(map.containsKey("place_z")){
condition.put("z",map.get("place_z"));
}
if(map.containsKey("code")){
condition.put("code",map.get("code"));
}
if(map.containsKey("state")){
condition.put("state",map.get("state"));
}
return placeMapper.findPlaceByCondition(condition);
}
/**
* 查找符合条件的库位数
* @param map
* @return
*/
@Override
public Integer findPlaceCountByCondition(Map<String, Object> map) {
return placeMapper.findPlaceCountByCondition(map);
}
/**
* 根据条件修改库位
* @param map
* @return
*/
@Override
public Integer UpdatePlace(Map<String, Object> map) {
return placeMapper.UpdatePlace(map);
}
/**
* 根据条件修改库位
* @param place
* @return
*/
@Override
public Integer UpdatePlace(Place place) {
return placeMapper.UpdatePlace(place);
}
/**
* 根据主键删除库位
* @param pid
* @return
*/
@Override
public Integer DelPlace(Integer pid) {
return placeMapper.DelPlace(pid);
}
/**
* 插入一条库位信息
* @param map
* @return
*/
@Override
public Integer InsertPlace(Map<String, Object> map) {
return placeMapper.InsertPlace(map);
}
/**
* 根据仓库编号查找库位
* @param did
* @return
*/
@Override
public List<Place> findPlaceByDid(Integer did) {
return placeMapper.findPlaceByDid(did);
}
/**
* 根据id查询库位
* @return
*/
@Override
public Place findPlaceById(Integer id) {
return placeMapper.findPlaceById(id);
}
/**
* 根据id将库位状态改为删除
* @param id
* @return
*/
@Override
public Integer changeStateToDeletedById(Integer id) {
return placeMapper.changeStateToDeletedById(id);
}
/**
* 根据批量id将库位状态改为删除
* @param ids
* @return
*/
@Override
public Integer changeStateToDeletedByIds(List<Integer> ids) {
return placeMapper.changeStateToDeletedByIds(ids);
}
}

6
src/main/java/com/dreamchaser/depository_manage/utils/CreateQrCodeUtil.java

@ -16,18 +16,20 @@ import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Hashtable;
/*
** 二维码生成
*/
public class CreateQrCodeUtil {
public String createQrCode(String content, int width, int height) throws IOException {
public static String createQrCode(String content, int width, int height) throws IOException {
String resultImage = "";
if (!StringUtils.isEmpty(content)) {
ServletOutputStream stream = null;
ByteArrayOutputStream os = new ByteArrayOutputStream();
@SuppressWarnings("rawtypes")
HashMap<EncodeHintType, Comparable> hints = new HashMap<>();
// HashMap<EncodeHintType, Comparable> hints = new HashMap<>();
Hashtable hints = new Hashtable();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); // 指定字符编码为“utf-8”
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); // 指定二维码的纠错等级为中级
hints.put(EncodeHintType.MARGIN, 2); // 设置图片的边距

44
src/main/java/com/dreamchaser/depository_manage/utils/ExcelInValid.java

@ -0,0 +1,44 @@
package com.dreamchaser.depository_manage.utils;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.exception.ExcelDataConvertException;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.read.metadata.holder.ReadSheetHolder;
import com.dreamchaser.depository_manage.converter.ExcelValid;
import com.dreamchaser.depository_manage.exception.MyException;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.Objects;
public class ExcelInValid {
/**
* Excel导入字段校验
*
* @param object 校验的JavaBean 其属性须有自定义注解
* @author linmaosheng
*/
public static void valid(Object object, AnalysisContext context) {
ReadSheetHolder readSheetHolder = context.readSheetHolder();
Field[] fields = object.getClass().getDeclaredFields();
ReadCellData<?> tempCellData = readSheetHolder.getTempCellData();
for (Field field : fields) {
field.setAccessible(true);
//属性的值
Object fieldValue = null;
try {
fieldValue = field.get(object);
} catch (IllegalAccessException e) {
throw new ExcelDataConvertException(context.readRowHolder().getRowIndex(), tempCellData.getColumnIndex() + 1,null,null,"必填字段为空");
}
//是否包含必填校验注解
boolean isExcelValid = field.isAnnotationPresent(ExcelValid.class);
if (isExcelValid && Objects.isNull(fieldValue)) {
throw new ExcelDataConvertException(context.readRowHolder().getRowIndex(), tempCellData.getColumnIndex() + 1,null,null,"必填字段为空");
}
}
}
}

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

@ -11,21 +11,6 @@ spring:
max-file-size: 100MB # 单个文件上传的最大上限
max-request-size: 100MB # 一次请求总大小上限
mail:
#邮箱配置
#平台地址,这里用的是qq邮箱,使用其他邮箱请更换
host: smtp.qq.com
#这里是你要发送邮箱的账户
username: 1789131794@qq.com
#发送短信后它给你的授权码
password: ######
properties:
mail:
smtp:
ssl:
enable: true
##编码格式
default-encoding: utf-8
##数据库设置
datasource:
username: root
@ -74,10 +59,10 @@ spring:
database: 0
jedis:
pool:
max-active: 8
max-wait: 50ms
max-idle: 8
min-idle: 0
min-idle: 10
max-idle: 20
max-wait: -1ms
max-active: 200
timeout: 2000ms

26
src/main/resources/redisson-config.yml

@ -0,0 +1,26 @@
#Redisson配置
singleServerConfig:
address: "redis://127.0.0.1:6379"
clientName: null
database: 7 #选择使用哪个数据库0~15
idleConnectionTimeout: 10000
pingTimeout: 1000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
reconnectionTimeout: 3000
failedAttempts: 3
subscriptionsPerConnection: 5
subscriptionConnectionMinimumIdleSize: 1
subscriptionConnectionPoolSize: 50
connectionMinimumIdleSize: 32
connectionPoolSize: 64
dnsMonitoringInterval: 5000
#dnsMonitoring: false
threads: 0
nettyThreads: 0
codec:
class: "org.redisson.codec.JsonJacksonCodec"
transportMode: "NIO"

12
src/main/resources/static/api/init.json

@ -137,18 +137,18 @@
]
},
{
"title": "料种类管理",
"title": "料种类管理",
"icon": "fa fa-wrench",
"target": "_self",
"child": [
{
"title": "料种类添加",
"title": "料种类添加",
"href": "/materialType_add",
"icon": "layui-icon layui-icon-list",
"target": "_self"
},
{
"title": "料种类查询",
"title": "料种类查询",
"href": "/materialType_view",
"icon": "fa fa-th-list",
"target": "_self"
@ -156,18 +156,18 @@
]
},
{
"title": "料管理",
"title": "料管理",
"icon": "fa fa-wrench",
"target": "_self",
"child": [
{
"title": "创建料",
"title": "创建料",
"href": "/material_add",
"icon": "layui-icon layui-icon-template-1",
"target": "_self"
},
{
"title": "料查询",
"title": "料查询",
"href": "/material_out",
"icon": "fa fa-th-list",
"target": "_self"

12
src/main/resources/static/api/init_checker.json

@ -137,18 +137,18 @@
]
},
{
"title": "料种类管理",
"title": "料种类管理",
"icon": "fa fa-wrench",
"target": "_self",
"child": [
{
"title": "料种类添加",
"title": "料种类添加",
"href": "/materialType_add",
"icon": "layui-icon layui-icon-list",
"target": "_self"
},
{
"title": "料种类查询",
"title": "料种类查询",
"href": "/materialType_view",
"icon": "fa fa-th-list",
"target": "_self"
@ -156,18 +156,18 @@
]
},
{
"title": "料管理",
"title": "料管理",
"icon": "fa fa-wrench",
"target": "_self",
"child": [
{
"title": "创建料",
"title": "创建料",
"href": "/material_add",
"icon": "layui-icon layui-icon-template-1",
"target": "_self"
},
{
"title": "料查询",
"title": "料查询",
"href": "/material_out",
"icon": "fa fa-th-list",
"target": "_self"

12
src/main/resources/static/api/init_reviewer.json

@ -137,18 +137,18 @@
]
},
{
"title": "料种类管理",
"title": "料种类管理",
"icon": "fa fa-wrench",
"target": "_self",
"child": [
{
"title": "料种类添加",
"title": "料种类添加",
"href": "/materialType_add",
"icon": "layui-icon layui-icon-list",
"target": "_self"
},
{
"title": "料种类查询",
"title": "料种类查询",
"href": "/materialType_view",
"icon": "fa fa-th-list",
"target": "_self"
@ -156,18 +156,18 @@
]
},
{
"title": "料管理",
"title": "料管理",
"icon": "fa fa-wrench",
"target": "_self",
"child": [
{
"title": "创建料",
"title": "创建料",
"href": "/material_add",
"icon": "layui-icon layui-icon-template-1",
"target": "_self"
},
{
"title": "料查询",
"title": "料查询",
"href": "/material_out",
"icon": "fa fa-th-list",
"target": "_self"

12
src/main/resources/static/api/test.json

@ -161,19 +161,19 @@
{
"icon": "fa fa-mail-forward",
"href": "",
"title": "料种类管理",
"title": "料种类管理",
"target": "_self",
"child": [
{
"icon": "fa fa-th-list",
"href": "/materialType_add",
"title": "料种类添加",
"title": "料种类添加",
"target": "_self"
},
{
"icon": "layui-icon layui-icon-template-1",
"href": "/materialType_view",
"title": "料种类查询",
"title": "料种类查询",
"target": "_self"
}
]
@ -181,19 +181,19 @@
{
"icon": "fa fa-mail-forward",
"href": "",
"title": "料管理",
"title": "料管理",
"target": "_self",
"child": [
{
"icon": "layui-icon layui-icon-template-1",
"href": "/material_add",
"title": "创建料",
"title": "创建料",
"target": "_self"
},
{
"icon": "layui-icon layui-icon-template-1",
"href": "/material_out",
"title": "料查询",
"title": "料查询",
"target": "_self"
}
]

BIN
src/main/resources/static/images/sousuo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

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

@ -157,9 +157,9 @@
miniAdmin.render(options);
/*$("#scan").on("click",function () {
$("#scan").on("click",function () {
alert("扫一扫")
});*/
});
// 百度统计代码,只统计指定域名

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

@ -11,6 +11,22 @@
<link rel="stylesheet" href="/static/js/lay-module/step-lay/step.css" media="all">
</head>
<body>
<style>
.inputdiv{
display:flex;background-color: #fff;height: 38px;line-height: 38px;border: 1px solid rgb(238, 238, 238);
}
.layui-form-label{
padding: 9px 0px;
text-align: left;
}
.layui-input-block{
margin-left: 80px;
}
</style>
<div class="layuimini-container">
<div class="layuimini-main">
<div class="layui-fluid">
@ -20,31 +36,42 @@
<div>
<form class="layui-form" style="margin: 0 auto;max-width: 460px;padding-top: 40px;">
<div class="layui-card" id="cardParent">
<div class="layui-card-body" id="cardItem1">
<div class="layui-card-body" id="cardItem1" style="padding-right: 0px">
<hr>
<i class="layui-icon layui-icon-subtraction" style="display: inline" onclick="deleteItem(this)"></i>
<div class="layui-form-item">
<label class="layui-form-label">材料名称:</label>
<div class="layui-input-inline">
<input type="text" placeholder="请选择材料" class="layui-input"
<label class="layui-form-label" >物料名称:</label>
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input type="text" placeholder="请选择物料" class="layui-input" style="border-style: none"
id="openSonByMaterial" onblur="selectMaterialByName(this)"
lay-verify="required"/>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial" onclick="selectMaterial(this)"></i>
</div>
<input type="text" name="mid" class="layui-input" id="mid"
style="display: none" lay-verify="required" />
style="display: none" lay-verify="required"/>
</div>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial" onclick="selectMaterial(this)"></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 id="code" name="code" type="text" placeholder="请填写入料编码" value="" onblur="selectCode(this)"
<input id="code" name="code" type="text" placeholder="请填写入料编码" value="" onblur="selectCode(this)"
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">
<input name="quantity" type="number" placeholder="请填写入材料数量" value=""
<input name="price" 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">
<input name="quantity" type="number" placeholder="请填写入物料数量" value=""
class="layui-input" lay-verify="number">
</div>
</div>
@ -70,8 +97,8 @@
<!-- 提交按钮-->
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formStep">
<div class="layui-input-block" style="bottom: 15px;">
<button id="submitForm" class="layui-btn" lay-submit lay-filter="formStep" style="margin-left: 15%">
&emsp;提交&emsp;
</button>
</div>
@ -112,7 +139,7 @@
function selectCode(obj){}
// 用于点击搜索按钮
function selectMaterial(obj){}
// 用于料名称查询
// 用于料名称查询
function selectMaterialByName(obj){}
// 用于加载仓库菜单
function openDepositoryTree(obj){}
@ -171,7 +198,7 @@
complete: function () {
layer.close(this.layerIndex);
}
})
});
return false;
});
@ -194,32 +221,41 @@
// 获取父元素id
var parentId = obj.parentNode.id;
NewIdNumber = NewIdNumber + 1;
// 料名称栏目
// 料名称栏目
var materialItem = `
<div class="layui-card-body" id=`+"cardItem"+NewIdNumber+`>
<div class="layui-card-body" style="padding-right: 0px" id=`+"cardItem"+NewIdNumber+`>
<hr>
<i class="layui-icon layui-icon-subtraction" style="display: inline" onclick="deleteItem(this)"></i>
<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" onblur="selectMaterialByName(this)"/>
<label class="layui-form-label">物料名称</label>
<div class="layui-input-block">
<div class="inputdiv">
<input type="text" placeholder="请选择物料" class="layui-input" style="border-style: none"
id="openSonByMaterial" lay-verify="required" onblur="selectMaterialByName(this)"/>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial" onclick="selectMaterial(this)"></i>
</div>
<input type="text" name=`+"mid"+NewIdNumber+` class="layui-input" id="mid"
style="display: none" lay-verify="required" />
</div>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial" onclick="selectMaterial(this)"></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 id="code" name=`+"code"+NewIdNumber+` type="text" placeholder="请填写入料编码" value="" onblur="selectCode(this)"
<input id="code" name=`+"code"+NewIdNumber+` type="text" placeholder="请填写入料编码" value="" onblur="selectCode(this)"
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">
<input name=`+"price"+NewIdNumber+` 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">
<input name=`+"quantity"+NewIdNumber+` type="number" placeholder="请填写入材料数量" value=""
<input name=`+"quantity"+NewIdNumber+` type="number" placeholder="请填写入料数量" value=""
class="layui-input" lay-verify="number">
</div>
</div>
@ -277,16 +313,16 @@
}
// 用于实现通过编码查询
// 用于实现通过编码查询
selectCode = function(obj){
// 输入code
var code = obj.value;
// 获取对应元素
var parent = obj.parentNode.parentNode.parentNode;
var children = parent.childNodes[5];
var materialItem = children.childNodes[3].childNodes;
var materialItem = children.childNodes[3].childNodes[1].childNodes;
var materialName = materialItem[1];
var materialId = materialItem[3];
var materialId = materialName.parentNode.parentNode.childNodes[3];
$.ajax({
url: "/material/findMatrialByCode?code=" + code,
type: "get",
@ -309,15 +345,15 @@
// 用于实现点击搜索按钮
selectMaterial = function (obj) {
var parent = obj.parentNode.parentNode;
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var parentId = parent.id;
var codeChildren = parent.childNodes[7];
var materialChildren = parent.childNodes[5];
var codeItem = codeChildren.childNodes[3].childNodes;
var codeValue = codeItem[1];
var materialItem = materialChildren.childNodes[3].childNodes;
var materialItem = materialChildren.childNodes[3].childNodes[1].childNodes;
var materialName = materialItem[1];
var materialId = materialItem[3];
var materialId = materialName.parentNode.parentNode.childNodes[3];
var mname = materialName.value;
layer.open({
type: 2,
@ -325,8 +361,10 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
area: ['70%', '70%'],
content: '/selectMaterialByCard?mname='+mname+'&type=1&clickObj='+parentId,
move : '.layui-layer-title',
fixed:false,
end: function () {
var mid = materialId.value;
$.ajax({
@ -336,6 +374,9 @@
contentType: "application/json;charset=utf-8",
success: function (d) {
var code = d.data.code;
if(code === undefined){
code = "";
}
codeValue.value = code;
}
});
@ -344,19 +385,19 @@
});
};
//用于实现料名称搜索
//用于实现料名称搜索
selectMaterialByName = function (obj) {
// 输入code
var data = obj.value;
// 获取对应元素
var parent = obj.parentNode.parentNode.parentNode;
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var materialChildren = parent.childNodes[5];
var codeChildren = parent.childNodes[7];
var codeItem = codeChildren.childNodes[3].childNodes;
var codeValue = codeItem[1];
var materialItem = materialChildren.childNodes[3].childNodes;
var materialItem = materialChildren.childNodes[3].childNodes[1].childNodes;
var materialName = materialItem[1];
var materialId = materialItem[3];
var materialId = materialName.parentNode.parentNode.childNodes[3];
var req = {};
req.mname = data;
$.ajax({
@ -398,7 +439,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectDepositoryByCard?type=1&clickObj='+parentId,
});
}

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

@ -22,9 +22,9 @@
<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>
<label class="layui-form-label">料名称:</label>
<div class="layui-input-inline">
<input type="text" th:value="${materialById.getMname()}" placeholder="请选择料" class="layui-input"
<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"
@ -33,16 +33,23 @@
<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 id="code" name="code" th:value="${materialById.getCode()}" type="text" placeholder="请填写入料编码" value=""
<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">
<input name="quantity" type="number" placeholder="请填写入材料数量" value=""
<input name="price" 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">
<input name="quantity" type="number" placeholder="请填写入物料数量" value=""
class="layui-input" lay-verify="number">
</div>
</div>
@ -64,8 +71,8 @@
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formStep">
<div class="layui-input-block" style="bottom: 15px">
<button class="layui-btn" lay-submit lay-filter="formStep" style="margin-left: 15%">
&emsp;提交&emsp;
</button>
</div>
@ -170,7 +177,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectDepository?type=1',
});
});
@ -184,7 +193,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectMaterial?mname='+mname+'&type=1',
end: function () {
var mid = $("#mid").val();
@ -194,7 +205,10 @@
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var code = d.data.code
var code = d.data.code;
if(code === undefined){
code = "";
}
$("#code").val(code)
}

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

@ -11,6 +11,19 @@
<link rel="stylesheet" href="/static/js/lay-module/step-lay/step.css" media="all">
</head>
<body>
<style>
.inputdiv{
display:flex;background-color: #fff;height: 38px;line-height: 38px;border: 1px solid rgb(238, 238, 238);
}
.layui-form-label{
padding: 9px 0px;
text-align: left;
}
.layui-input-block{
margin-left: 80px;
}
</style>
<div class="layuimini-container">
<div class="layuimini-main">
<div class="layui-fluid">
@ -24,27 +37,29 @@
<hr>
<i class="layui-icon layui-icon-subtraction" style="display: inline" onclick="deleteItem(this)"></i>
<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" onblur="selectMaterialByName(this)"
lay-verify="required"/>
<label class="layui-form-label">物料名称:</label>
<div class="layui-input-block">
<div class="inputdiv">
<input type="text" placeholder="请选择物料" class="layui-input" style="border-style: none"
id="openSonByMaterial" onblur="selectMaterialByName(this)"
lay-verify="required"/>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial" onclick="selectMaterial(this)"></i>
</div>
<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" onclick="selectMaterial(this)"></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 id="code" name="code" type="text" placeholder="请填写入料编码" value="" onblur="selectCode(this)"
<input id="code" name="code" type="text" placeholder="请填写入料编码" value="" onblur="selectCode(this)"
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">
<input name="quantity" type="number" placeholder="请填写入料数量" value=""
<input name="quantity" type="number" placeholder="请填写入料数量" value=""
class="layui-input" lay-verify="number" required>
</div>
</div>
@ -61,7 +76,7 @@
<!-- 提交按钮-->
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formStep">
<button class="layui-btn" lay-submit lay-filter="formStep" style="margin-bottom: 30px;margin-left: 15%">
&emsp;提交申请&emsp;
</button>
</div>
@ -106,7 +121,7 @@
function selectCode(obj){}
// 用于点击搜索按钮
function selectMaterial(obj){}
// 用于料名称查询
// 用于料名称查询
function selectMaterialByName(obj){}
// 用于暂存卡片个数
var params = [];
@ -127,9 +142,7 @@
stepItems: [{
title: '填写信息'
}, {
title: '审核中'
}, {
title: '等待出库'
title: '提交成功'
}]
});
@ -185,32 +198,34 @@
// 获取父元素id
var parentId = obj.parentNode.id;
NewIdNumber = NewIdNumber + 1;
// 料名称栏目
// 料名称栏目
var materialItem = `
<div class="layui-card-body" id=`+"cardItem"+NewIdNumber+`>
<hr>
<i class="layui-icon layui-icon-subtraction" style="display: inline" onclick="deleteItem(this)"></i>
<div class="layui-form-item">
<label class="layui-form-label">材料名称</label>
<div class="layui-input-inline">
<input type="text" placeholder="请选择材料" class="layui-input"
<label class="layui-form-label">物料名称</label>
<div class="layui-input-block">
<div class="inputdiv">
<input type="text" placeholder="请选择物料" class="layui-input" style="border-style: none"
id="openSonByMaterial" lay-verify="required" onblur="selectMaterialByName(this)"/>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial" onclick="selectMaterial(this)"></i>
</div>
<input type="text" name=`+"mid"+NewIdNumber+` class="layui-input" id="mid"
style="display: none" lay-verify="required" />
</div>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial" onclick="selectMaterial(this)"></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 id="code" name=`+"code"+NewIdNumber+` type="text" placeholder="请填写入料编码" value="" onblur="selectCode(this)"
<input id="code" name=`+"code"+NewIdNumber+` type="text" placeholder="请填写入料编码" value="" onblur="selectCode(this)"
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">
<input name=`+"quantity"+NewIdNumber+` type="number" placeholder="请填写入料数量" value=""
<input name=`+"quantity"+NewIdNumber+` type="number" placeholder="请填写入料数量" value=""
class="layui-input" lay-verify="number">
</div>
</div>
@ -256,16 +271,16 @@
return result;
}
// 用于实现通过编码查询
// 用于实现通过编码查询
selectCode = function(obj){
// 输入code
var code = obj.value;
// 获取对应元素
var parent = obj.parentNode.parentNode.parentNode;
var children = parent.childNodes[5];
var materialItem = children.childNodes[3].childNodes;
var materialItem = children.childNodes[3].childNodes[1].childNodes;
var materialName = materialItem[1];
var materialId = materialItem[3];
var materialId = materialName.parentNode.parentNode.childNodes[3];
$.ajax({
url: "/material/findMatrialByCode?code=" + code,
type: "get",
@ -288,15 +303,15 @@
// 用于实现点击搜索按钮
selectMaterial = function (obj) {
var parent = obj.parentNode.parentNode;
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var parentId = parent.id;
var codeChildren = parent.childNodes[7];
var materialChildren = parent.childNodes[5];
var codeItem = codeChildren.childNodes[3].childNodes;
var codeValue = codeItem[1];
var materialItem = materialChildren.childNodes[3].childNodes;
var materialItem = materialChildren.childNodes[3].childNodes[1].childNodes;
var materialName = materialItem[1];
var materialId = materialItem[3];
var materialId = materialName.parentNode.parentNode.childNodes[3];
var mname = materialName.value;
layer.open({
type: 2,
@ -304,8 +319,10 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
content: '/selectMaterialByCard?mname='+mname+'&type=1&clickObj='+parentId,
area: ['70%', '70%'],
content: '/selectMaterialByCard?mname='+mname+'&type=2&clickObj='+parentId,
move : '.layui-layer-title',
fixed:false,
end: function () {
var mid = materialId.value;
$.ajax({
@ -315,6 +332,9 @@
contentType: "application/json;charset=utf-8",
success: function (d) {
var code = d.data.code;
if(code === undefined){
code = "";
}
codeValue.value = code;
}
});
@ -323,19 +343,19 @@
});
};
//用于实现料名称搜索
//用于实现料名称搜索
selectMaterialByName = function (obj) {
// 输入code
var data = obj.value;
// 获取对应元素
var parent = obj.parentNode.parentNode.parentNode;
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var materialChildren = parent.childNodes[5];
var codeChildren = parent.childNodes[7];
var codeItem = codeChildren.childNodes[3].childNodes;
var codeValue = codeItem[1];
var materialItem = materialChildren.childNodes[3].childNodes;
var materialItem = materialChildren.childNodes[3].childNodes[1].childNodes;
var materialName = materialItem[1];
var materialId = materialItem[3];
var materialId = materialName.parentNode.parentNode.childNodes[3];
var req = {};
req.mname = data;
$.ajax({
@ -368,6 +388,8 @@
};
})
</script>
</body>

25
src/main/resources/templates/pages/application/application-out_back.html

@ -21,9 +21,9 @@
<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>
<label class="layui-form-label">料名称:</label>
<div class="layui-input-inline">
<input type="text" placeholder="请选择料" class="layui-input" th:value="${materialById.getMname()}"
<input type="text" placeholder="请选择料" class="layui-input" th:value="${materialById.getMname()}"
id="openSonByMaterial"
lay-verify="required"/>
<input type="text" name="mid" class="layui-input" id="mid" th:value="${materialById.getId()}"
@ -32,16 +32,16 @@
<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 id="code" name="code" type="text" placeholder="请填写入料编码" value="" th:value="${materialById.getCode()}"
<input id="code" name="code" type="text" placeholder="请填写入料编码" value="" th:value="${materialById.getCode()}"
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">
<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" required>
</div>
</div>
<div class="layui-form-item">
@ -154,7 +154,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectDepository?type=2',
});
});
@ -168,7 +170,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectMaterial?mname='+mname+'&type=2',
end: function () {
var mid = $("#mid").val();
@ -178,7 +182,10 @@
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var code = d.data.code
var code = d.data.code;
if(code === undefined){
code = "";
}
$("#code").val(code)
}

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

@ -32,7 +32,7 @@
<td id="id" th:text="${record.getId()}">123456</td>
</tr>
<tr>
<td>料名称</td>
<td>料名称</td>
<td id="materialName" th:text="${record.getMname()}">骁龙888芯片</td>
</tr>
<tr>

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

@ -11,6 +11,20 @@
<link rel="stylesheet" href="/static/js/lay-module/step-lay/step.css" media="all">
</head>
<body>
<style>
.inputdiv{
display:flex;background-color: #fff;height: 38px;line-height: 38px;border: 1px solid rgb(238, 238, 238);
}
.layui-form-label{
padding: 9px 0px;
text-align: left;
}
.layui-input-block{
margin-left: 80px;
}
</style>
<div class="layuimini-container">
<div class="layuimini-main">
<div class="layui-fluid">
@ -25,27 +39,30 @@
<hr>
<i class="layui-icon layui-icon-subtraction" style="display: inline" onclick="deleteItem(this)"></i>
<div class="layui-form-item">
<label class="layui-form-label">材料名称:</label>
<div class="layui-input-inline">
<input type="text" placeholder="请选择材料" class="layui-input"
<label class="layui-form-label">物料名称:</label>
<div class="layui-input-block">
<div class="inputdiv">
<input type="text" placeholder="请选择物料" class="layui-input" style="border-style: none"
id="openSonByMaterial" onblur="selectMaterialByName(this)"
lay-verify="required"/>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial" onclick="selectMaterial(this)"></i>
</div>
<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" onclick="selectMaterial(this)"></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 id="code" name="code" type="text" placeholder="请填写入料编码" value="" onblur="selectCode(this)"
<input id="code" name="code" type="text" placeholder="请填写入料编码" value="" onblur="selectCode(this)"
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">
<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" required>
</div>
</div>
<div class="layui-form-item">
@ -67,7 +84,7 @@
<!-- 提交-->
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formStep">
<button class="layui-btn" lay-submit lay-filter="formStep" style="margin-bottom: 10px;margin-left: 15%">
&emsp;提交申请&emsp;
</button>
</div>
@ -92,20 +109,6 @@
</div>
</form>
</div>
<div>
<div style="text-align: center;margin-top: 90px;">
<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;">预计两小时到账</div>
</div>
<div style="text-align: center;margin-top: 50px;">
<button class="layui-btn next">再入一笔</button>
<button class="layui-btn layui-btn-primary">查看账单</button>
</div>
</div>
</div>
</div>
</div>
@ -127,7 +130,7 @@
function selectCode(obj){}
// 用于点击搜索按钮
function selectMaterial(obj){}
// 用于料名称查询
// 用于料名称查询
function selectMaterialByName(obj){}
// 用于加载仓库菜单
function openDepositoryTree(obj){}
@ -149,11 +152,7 @@
stepItems: [{
title: '填写信息'
}, {
title: '审核中'
}, {
title: '等待出库'
},{
title: '等待入库'
title: '提交成功'
}]
});
@ -211,37 +210,39 @@
// 获取父元素id
var parentId = obj.parentNode.id;
NewIdNumber = NewIdNumber + 1;
// 料名称栏目
// 料名称栏目
var materialItem = `
<div class="layui-card-body" id=`+"cardItem"+NewIdNumber+`>
<div class="layui-card-body" style="padding-right: 0px" id=`+"cardItem"+NewIdNumber+`>
<hr>
<i class="layui-icon layui-icon-subtraction" style="display: inline" onclick="deleteItem(this)"></i>
<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" onblur="selectMaterialByName(this)"/>
<label class="layui-form-label">物料名称</label>
<div class="layui-input-block">
<div class="inputdiv">
<input type="text" placeholder="请选择物料" class="layui-input" style="border-style: none"
id="openSonByMaterial" lay-verify="required" onblur="selectMaterialByName(this)"/>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial" onclick="selectMaterial(this)"></i>
</div>
<input type="text" name=`+"mid"+NewIdNumber+` class="layui-input" id="mid"
style="display: none" lay-verify="required" />
</div>
<i class="layui-icon layui-icon-search" style="display: inline" id="selectMaterial" onclick="selectMaterial(this)"></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 id="code" name=`+"code"+NewIdNumber+` type="text" placeholder="请填写入料编码" value="" onblur="selectCode(this)"
<input id="code" name=`+"code"+NewIdNumber+` type="text" placeholder="请填写入料编码" value="" onblur="selectCode(this)"
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">
<input name=`+"quantity"+NewIdNumber+` type="number" placeholder="请填写入料数量" value=""
<input name=`+"quantity"+NewIdNumber+` 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">
<input type="text" placeholder="请选择仓库" class="layui-input"
id="openSonByDepository" readonly onclick="openDepositoryTree(this)"
@ -293,16 +294,17 @@
return result;
}
// 用于实现通过编码查询材料
// 用于实现通过编码查询物料
selectCode = function(obj){
// 输入code
var code = obj.value;
// 获取对应元素
var parent = obj.parentNode.parentNode.parentNode;
var children = parent.childNodes[5];
var materialItem = children.childNodes[3].childNodes;
var materialItem = children.childNodes[3].childNodes[1].childNodes;
var materialName = materialItem[1];
var materialId = materialItem[3];
var materialId = materialName.parentNode.parentNode.childNodes[3];
$.ajax({
url: "/material/findMatrialByCode?code=" + code,
type: "get",
@ -325,15 +327,15 @@
// 用于实现点击搜索按钮
selectMaterial = function (obj) {
var parent = obj.parentNode.parentNode;
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var parentId = parent.id;
var codeChildren = parent.childNodes[7];
var materialChildren = parent.childNodes[5];
var codeItem = codeChildren.childNodes[3].childNodes;
var codeValue = codeItem[1];
var materialItem = materialChildren.childNodes[3].childNodes;
var materialItem = materialChildren.childNodes[3].childNodes[1].childNodes;
var materialName = materialItem[1];
var materialId = materialItem[3];
var materialId = materialName.parentNode.parentNode.childNodes[3];
var mname = materialName.value;
layer.open({
type: 2,
@ -341,8 +343,10 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
area: ['70%', '70%'],
content: '/selectMaterialByCard?mname='+mname+'&type=1&clickObj='+parentId,
move : '.layui-layer-title',
fixed:false,
end: function () {
var mid = materialId.value;
$.ajax({
@ -352,6 +356,9 @@
contentType: "application/json;charset=utf-8",
success: function (d) {
var code = d.data.code;
if(code === undefined){
code = "";
}
codeValue.value = code;
}
});
@ -360,19 +367,19 @@
});
};
//用于实现料名称搜索
//用于实现料名称搜索
selectMaterialByName = function (obj) {
// 输入code
var data = obj.value;
// 获取对应元素
var parent = obj.parentNode.parentNode.parentNode;
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var materialChildren = parent.childNodes[5];
var codeChildren = parent.childNodes[7];
var codeItem = codeChildren.childNodes[3].childNodes;
var codeValue = codeItem[1];
var materialItem = materialChildren.childNodes[3].childNodes;
var materialItem = materialChildren.childNodes[3].childNodes[1].childNodes;
var materialName = materialItem[1];
var materialId = materialItem[3];
var materialId = materialName.parentNode.parentNode.childNodes[3];
var req = {};
req.mname = data;
$.ajax({
@ -414,7 +421,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectDepositoryByCard?type=1&clickObj='+parentId,
});
}

10
src/main/resources/templates/pages/application/application-transfer_back.html

@ -21,19 +21,19 @@
<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>
<label class="layui-form-label">料名称:</label>
<div class="layui-input-block">
<!-- <input name="mname" type="text" placeholder="请填写料名称" class="layui-input" lay-verify="required" />-->
<!-- <input name="mname" type="text" placeholder="请填写料名称" class="layui-input" lay-verify="required" />-->
<select name="mname" lay-verify="required" lay-filter="mname">
<option value="" selected>请选择</option>
<option value="" selected>请选择</option>
<option th:each="Material,iterStar:${materials}" th:value="${Material?.getId()}" th:text="${Material?.getMname()}" >天玑1000</option>
</select>
</div>
</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 name="quantity" type="number" placeholder="请填写入料数量" value="" class="layui-input" lay-verify="number" required>
</div>
</div>
<div class="layui-form-item">

13
src/main/resources/templates/pages/application/application_in_multi.html

@ -100,7 +100,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectDepository?type=1',
});
});
@ -114,7 +116,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['800px', '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectMaterial?mname='+mname+'&type=1',
end: function () {
var mid = $("#mid").val();
@ -124,7 +128,10 @@
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var code = d.data.code
var code = d.data.code;
if(code === undefined){
code = "";
}
$("#code").val(code)
}

5
src/main/resources/templates/pages/application/application_multi.html

@ -64,11 +64,12 @@
cols: [
[
{type: "checkbox", width: 50},
{field: 'mname', width: '10%', title: '料名称'},
{field: 'mname', width: '10%', title: '料名称'},
{field: 'version', width: '10%', title: '规格型号'},
{field: 'code',width: 200,title: '存货编码',sort: true},
{field: 'depositoryName', width: '12%', title: '仓库名称'},
{field: 'quantity', width: '10%', title: '数量',edit:'quantity'},
{field: 'price', width: '10%', title: '单价',edit:'price'},
{field: 'depositoryId', width: '10%', title: '仓库编号',edit:'quantity'},
{field: 'applyRemark', width: '10%', title: '备注说明',edit:'applyRemark'},
{title: '操作', minWidth: 250, toolbar: '#currentTableBar', align: "center"}
@ -105,11 +106,13 @@
req.depositoryIds = [];
req.quantitys = [];
req.applyRemarks = [];
req.prices = [];
for (i = 0, len = data.length; i < len; i++) {
req.mids[i] = data[i].mid;
req.depositoryIds[i] = data[i].depositoryId;
req.quantitys[i] = data[i].quantity;
req.applyRemarks[i] = data[i].applyRemark;
req.prices[i] = data[i].price;
}
if(obj.event==='delete'){
if(req.mids > 0) {

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

@ -31,7 +31,7 @@
<td id="applicationId" th:text="${record.getAircode()}">123456</td>
</tr>
<tr>
<td>料名称</td>
<td>料名称</td>
<td id="materialName" th:text="${record.getMname()}">骁龙888芯片</td>
</tr>
<tr>

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

@ -31,7 +31,7 @@
<td id="applicationId" th:text="${record.getCode()}">123456</td>
</tr>
<tr>
<td>料名称</td>
<td>料名称</td>
<td id="materialName" th:text="${record.getMname()}">骁龙888芯片</td>
</tr>
<tr>
@ -118,13 +118,22 @@
var state=$("#state").text();
//当前处于的状态
var position=0,states={};
if (state === "待部门负责人审核" || state === "部门负责人审核未通过") {
var position=0,states={},number = 1;
/*if (state === "待部门负责人审核" || state === "部门负责人审核未通过") {
position = 1;
states = [{title: "提交申请"}, {title: state}, {title: "未入库"}];
} else {
position = 2;
states = [{title: "提交申请"}, {title: "审核通过"}, {title: state}];
}*/
if (state === "待部门负责人审核" || state === "部门负责人审核未通过") {
// , {title: "未入库"}
states = [ {title: state}];
number = 2;
} else {
// {title: "提交申请"},
states = [ {title: state}];
number = 3;
}
step.render({
elem: '#stepForm',
@ -132,6 +141,7 @@
width: '100%', //设置容器宽度
stepWidth: '750px',
height: '650px',
number:number,
position: position,
stepItems: states
});

8
src/main/resources/templates/pages/chart/chart-in.html

@ -37,7 +37,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">转入料数量</div>
<div class="layui-card-header">转入料数量</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">
@ -55,7 +55,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">转入料金额</div>
<div class="layui-card-header">转入料金额</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">
@ -73,7 +73,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">购入料数量</div>
<div class="layui-card-header">购入料数量</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">
@ -91,7 +91,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">入库料金额</div>
<div class="layui-card-header">入库料金额</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">

8
src/main/resources/templates/pages/chart/chart-in_back.html

@ -37,7 +37,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">转入料数量</div>
<div class="layui-card-header">转入料数量</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">
@ -55,7 +55,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">转入料金额</div>
<div class="layui-card-header">转入料金额</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">
@ -73,7 +73,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">购入料数量</div>
<div class="layui-card-header">购入料数量</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">
@ -91,7 +91,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">入库料金额</div>
<div class="layui-card-header">入库料金额</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">

8
src/main/resources/templates/pages/chart/chart-out.html

@ -37,7 +37,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">转出料数量</div>
<div class="layui-card-header">转出料数量</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">
@ -55,7 +55,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">转出料金额</div>
<div class="layui-card-header">转出料金额</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">
@ -73,7 +73,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">购出料数量</div>
<div class="layui-card-header">购出料数量</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">
@ -91,7 +91,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">出库料金额</div>
<div class="layui-card-header">出库料金额</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">

8
src/main/resources/templates/pages/chart/chart-out_back.html

@ -37,7 +37,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">转出料数量</div>
<div class="layui-card-header">转出料数量</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">
@ -55,7 +55,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">转出料金额</div>
<div class="layui-card-header">转出料金额</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">
@ -73,7 +73,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">出售料数量</div>
<div class="layui-card-header">出售料数量</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">
@ -91,7 +91,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">出库料金额</div>
<div class="layui-card-header">出库料金额</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">

8
src/main/resources/templates/pages/chart/chart-stock.html

@ -37,7 +37,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">库存料数量</div>
<div class="layui-card-header">库存料数量</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">
@ -55,7 +55,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">库存料金额</div>
<div class="layui-card-header">库存料金额</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">
@ -73,7 +73,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">库存料数量</div>
<div class="layui-card-header">库存料数量</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">
@ -91,7 +91,7 @@
<div class="layui-col-xs12 layui-col-md3">
<div class="layui-card top-panel">
<div class="layui-card-header">库存料金额</div>
<div class="layui-card-header">库存料金额</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space5">
<div class="layui-col-xs7 layui-col-md7 top-panel-number">

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

@ -36,11 +36,11 @@
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">料名称:</label>
<label class="layui-form-label">料名称:</label>
<div class="layui-input-inline">
<!-- <input name="mname" type="text" placeholder="请填写料名称" class="layui-input" lay-verify="required" />-->
<!-- <input name="mname" type="text" placeholder="请填写料名称" class="layui-input" lay-verify="required" />-->
<select name="mid">
<option value="" selected>请选择料名称</option>
<option value="" selected>请选择料名称</option>
<option th:each="Material,iterStar:${materials}" th:value="${Material?.getId()}" th:text="${Material?.getMname()}">天玑1000</option>
</select>
</div>
@ -87,7 +87,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectDepository?type=2',
});
});
@ -127,7 +129,7 @@
{type: "checkbox", width: 50},
{field: 'id', width: 100, title: '提交编号', sort: true},
{field: 'aircode', width: 100, title: '提交编码', sort: true},
{field: 'mname', width: 120, title: '料名称'},
{field: 'mname', width: 120, title: '料名称'},
{field: 'mcode', width: 120, title: '存货编码'},
{field: 'depositoryName', width: 120, title: '仓库名称'},
{field: 'quantity', width: 80, title: '数量', sort: true},

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

@ -36,10 +36,10 @@
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">料名称:</label>
<label class="layui-form-label">料名称:</label>
<div class="layui-input-inline">
<select name="mid">
<option value="" selected>请选择料名称</option>
<option value="" selected>请选择料名称</option>
<option th:each="Material,iterStar:${materials}" th:value="${Material?.getId()}" th:text="${Material?.getMname()}">天玑1000</option>
</select>
</div>
@ -87,7 +87,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectDepository?type=2',
});
});
@ -127,7 +129,7 @@
{type: "checkbox", width: 50},
{field: 'id', width: 100, title: '申请编号', sort: true},
{field: 'code', width: 100, title: '申请编码', sort: true},
{field: 'mname', width: 120, title: '料名称'},
{field: 'mname', width: 120, title: '料名称'},
{field: 'mcode', width: 120, title: '存货编码'},
{field: 'depositoryName', width: 120, title: '仓库名称'},
{field: 'quantity', width: 80, title: '数量', sort: true},

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

@ -29,7 +29,7 @@
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">料名称</label>
<label class="layui-form-label">料名称</label>
<div class="layui-input-inline">
<input type="text" name="mname" autocomplete="off" class="layui-input">
</div>
@ -55,6 +55,7 @@
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add">添加</button>
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="dispose">处理</button>
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" id="u_fileUpload" lay-event="import">导入数据</button>
</div>
</script>
@ -68,9 +69,10 @@
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
var data;
layui.use(['form', 'table'], function () {
layui.use(['form', 'table','upload'], function () {
var $ = layui.jquery,
form = layui.form,
upload = layui.upload,
table = layui.table;
$('#openSonByDepository').on('click', function(){
@ -80,7 +82,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
area : ['70%' , '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectDepository?type=2',
});
});
@ -111,11 +115,11 @@
cols: [
[
{type: "checkbox", width: 50},
{field: 'id', width: '10%', title: '料编号'},
{field: 'mname', width: '10%', title: '料名称'},
{field: 'id', width: '10%', title: '料编号'},
{field: 'mname', width: '10%', title: '料名称'},
{field: 'version',width: 200,title: '规格型号'},
{field: 'code',width: 200,title: '存货编码',sort: true},
{field: 'typeName', width: '10%', title: '料类型'},
{field: 'typeName', width: '10%', title: '料类型'},
{field: 'depositoryName', width: '12%', title: '仓库名称'},
{field: 'depositoryCode', width: '12%', title: '仓库编号'},
{field: 'quantity', width: '10%', title: '数量', sort: true},
@ -274,6 +278,54 @@
}
});
//用于导入数据
var upLoader = upload.render({
elem:"#u_fileUpload", // 绑定元素
url:'/excel/importInventory', // 上传接口
accept:'file', // 允许上传的格式,
before: function(obj) { //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
layer.load(); //上传loading
},
exts:'xls|xlsx|csv',
done:function(res){
layer.closeAll('loading'); //关闭loading
//如果上传成功
if(res.code == 200){
var re = "";
for (let i = 0; i < res.data.errMsg.length; i++) {
var show = "<p style='color: #ff211e'>"+res.data.errMsg[i] + ":错误"+"</p>"
re += show
}
for (let i = 0; i < res.data.dataList.length; i++) {
var mname = res.data.dataList[i]["mname"];
var code = res.data.dataList[i]["code"];
var price = res.data.dataList[i]["price"];
var quantity = res.data.dataList[i]["quantity"];
var show = "<p style='color: #00FF00'>"+mname +" " +code+" "+price +" "+quantity +":成功" +"</p>"
re += show
}
layer.open({
type: 1,
skin: 'layui-layer-rim', //加上边框
area: ['500px', '500px'], //宽高
content: re
})
}else{
layer.msg(res.msg)
}
},
error:function (){
layer.closeAll('loading'); //关闭loading
var demoText = $('#demoText');
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function(){
upLoader.upload()
})
}
})
});
</script>

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

@ -13,7 +13,7 @@
<div class="layuimini-container">
<div class="layuimini-main">
<fieldset class="table-search-fieldset">
<legend>料创建</legend>
<legend>料创建</legend>
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-body" style="padding-top: 40px;">
@ -21,9 +21,9 @@
<form class="layui-form"
style="margin: 0 auto;max-width: 700px;padding-top: 100px; padding-bottom: 200px" lay-filter="form1">
<div class="layui-form-item">
<label class="layui-form-label">料名称:</label>
<label class="layui-form-label">料名称:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写料名称" class="layui-input"
<input type="text" placeholder="请填写料名称" class="layui-input"
name="mname" lay-verify="required"/>
</div>
</div>
@ -42,28 +42,12 @@
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材料所处仓库</label>
<label class="layui-form-label">物料类型</label>
<div class="layui-input-block">
<input type="text" placeholder="请选择仓库" class="layui-input" id="openSonByDepository" readonly
<input type="text" placeholder="请选择物料类型" class="layui-input" id="openSonByMateralType" readonly
lay-verify="required"/>
<input type="text" name="depositoryId" class="layui-input" id="depositoryId" style="display: none" lay-verify="required"/>
</div>
</div>
<input type="text" id="materialTypeId" placeholder="请选择物料类型" name="materialTypeId" class="layui-input" style="display: none" lay-verify="required"/>
<div class="layui-form-item">
<label class="layui-form-label">材料类型:</label>
<div class="layui-input-block">
<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">
<label class="layui-form-label">仓库编码:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写仓库编码" class="layui-input"
name="depositoryCode" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
@ -80,24 +64,10 @@
name="unit" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">单价:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写单价" class="layui-input" value="0"
name="price"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">数量:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写数量" class="layui-input" value="0"
name="quantity"/>
</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>
@ -131,7 +101,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectType',
});
});
@ -143,7 +115,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectDepository?type=2',
});
});

210
src/main/resources/templates/pages/material/material-add_back.html

@ -0,0 +1,210 @@
<!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">
</head>
<body>
<div class="layuimini-container">
<div class="layuimini-main">
<fieldset class="table-search-fieldset">
<legend>物料创建</legend>
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-body" style="padding-top: 40px;">
<div>
<form class="layui-form"
style="margin: 0 auto;max-width: 700px;padding-top: 100px; padding-bottom: 200px" lay-filter="form1">
<div class="layui-form-item">
<label class="layui-form-label">物料名称:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写物料名称" class="layui-input"
name="mname" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">规格型号:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写规格型号" class="layui-input"
name="version" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">存货编码:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写存货编码" class="layui-input"
name="code" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">物料所处仓库:</label>
<div class="layui-input-block">
<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">
<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">
<label class="layui-form-label">仓库编码:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写仓库编码" class="layui-input"
name="depositoryCode" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材质:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写材质名称" class="layui-input"
name="texture" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">计量单位:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写计量单位" class="layui-input"
name="unit" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">单价:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写单价" class="layui-input" value="0"
name="price"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">数量:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写数量" class="layui-input" value="0"
name="quantity"/>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formStep">
&emsp;创建物料&emsp;
</button>
</div>
</div>
</form>
</div>
</div>
<hr>
</div>
</div>
</fieldset>
</div>
</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,
form = layui.form,
dropdown = layui.dropdown,
tree = layui.tree,
layer = layui.layer;
$('#openSonByMateralType').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectType',
});
});
$('#openSonByDepository').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectDepository?type=2',
});
});
form.on('submit(formStep)', function (data) {
$.ajax({
url: "/material/material_add",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(data.field),
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: 1000
}, //1秒关闭(如果不配置,默认是3秒)
function(){
//do something
window.location="/material_add"
});
}
},
complete: function () {
form.val("form1", {
"mname": "",// "name": "value"
"depositoryId": "",
"materialTypeId": "",
"texture":""
})
}
})
return false;
});
form.on('select(depositoryId)',function (data){
$.ajax({
url:"/repository/findDepositoryByParent?parentId="+data.value,
type:'get',
dataType:'json',
contentType: "application/json;charset=utf-8",
success:function(d){
console.log(d.data)
}
})
})
});
</script>
</body>
</html>

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

@ -33,15 +33,15 @@
<label class="layui-form-label">种类</label>
<div class="layui-input-inline">
<!--<select name="materialTypeId" >
<option value="" selected>请选择料类型</option>
<option value="" selected>请选择料类型</option>
<option th:each="materialType,iterStar:${materialTypes}" th:value="${materialType?.getId()}" th:text="${materialType?.getTname()}" >芯片类</option>
</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" />
<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">
<label class="layui-form-label">料名称</label>
<label class="layui-form-label">料名称</label>
<div class="layui-input-inline">
<input type="text" name="mname" autocomplete="off" class="layui-input">
</div>
@ -66,9 +66,17 @@
</div>
</fieldset>
<div class="layui-form-item">
<label class="layui-form-label">二维码</label>
<div class="layui-input-inline">
<!-- <input type="text" th:value="${record.depository.getDname()}" name="dname" required lay-verify="required" autocomplete="off" class="layui-input" readonly="readonly">-->
<img src="" id="qrCode">
</div>
</div>
<!-- 状态展示-->
<script type="text/html" id="switchTpl">
<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 type="text/html" id="toolbarDemo">
@ -86,11 +94,6 @@
<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>
</script>
<script id="selectManager" type="text/html">
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="manager">仓管员</a>
</script>
</div>
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
@ -108,7 +111,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectType',
});
});
@ -120,7 +125,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectDepository?type=2',
});
});
@ -156,18 +163,12 @@
{type: "checkbox", width: 50},
{field: 'code',width: 150,title: '存货编码',sort: true},
{field: 'id', width: 100, title: 'EAS编号',hidden:true},
{field: 'mname', width: 120, title: '料名称', sort: false},
{field: 'typeName',width: 150,title: '料种类'},
{field: 'mname', width: 120, title: '料名称', sort: false},
{field: 'typeName',width: 150,title: '料种类'},
{field: 'version',width: 200,title: '规格型号',sort: false},
{field: 'texture',width: 100,title: '材质'},
{field: 'unit',width: 150,title: '计量单位'},
{field: 'depositoryCode',width: 250,title: '仓库编码',sort: true},
{field: "depositoryName",width: 120,title: "仓库名称"},
{field: 'quantity',width: 120,title:'数量',sort: true},
{field: 'price',width: 150,title: '单价',sort: true},
{field: 'amounts',width: 180,title: '总金额',sort: true},
{field: 'state', title:'状态', minWidth: 80, templet: '#switchTpl'},
{title: '仓管员', minWidth: 80, templet: '#selectManager' ,align: "center"},
{title: '操作', minWidth: 200, toolbar: '#currentTableBar', align: "center"}
]],
limits: [10, 15, 20, 25, 50],
@ -274,33 +275,52 @@
return false;
}
}
else if(obj.event === 'createQrCode'){
$.ajax({
url:"/material/createQrCode?mid=3",
dataType: 'json',
type: 'get',
contentType: "application/json;charset=utf-8",
success:function (data) {
if(data.status != 200){
layer.msg(data.statusInfo.messgae)
}else{
$("#qrCode").attr("src",data.data);
}
}
})
}
});
//用于导入数据
var upLoader = upload.render({
elem:"#u_fileUpload", // 绑定元素
url:'/excel/importExcel', // 上传接口
url:'/excel/importExcelByMaterial', // 上传接口
accept:'file', // 允许上传的格式,
before: function(obj) { //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
layer.load(); //上传loading
},
exts:'xls|xlsx|csv',
done:function(res){
layer.closeAll('loading'); //关闭loading
//如果上传成功
console.log(res)
for (let i = 0; i < res.data.errMsg.length; i++) {
var show = "<p style='color: #ff211e'>"+res.data.errMsg[i] + ":错误"+"</p>"
re += show
}
if(res.code == 200){
var re = ""
for (let i = 0; i < res.data.dataList.length; i++) {
var mname = res.data.dataList[i]["mname"]
var code = res.data.dataList[i]["code"]
var version = res.data.dataList[i]["version"]
var texture = res.data.dataList[i]["texture"]
var price = res.data.dataList[i]["price"]
var quantity = res.data.dataList[i]["quantity"]
var unit = res.data.dataList[i]["unit"]
var show = "<p style='color: #00FF00'>"+mname + " "+ version+" " +code+" "+texture +" "+price +" "+quantity +" "+unit +":成功" +"</p>"
re += show
}
for (let i = 0; i < res.data.errMsg.length; i++) {
var show = "<p style='color: #ff211e'>"+res.data.errMsg[i] + ":错误"+"</p>"
var mname = res.data.dataList[i]["mname"];
var code = res.data.dataList[i]["code"] == null || res.data.dataList[i]["code"] == undefined ?"":res.data.dataList[i]["code"];
var version = res.data.dataList[i]["version"] == null || res.data.dataList[i]["version"] == undefined ?"":res.data.dataList[i]["version"];
var texture = res.data.dataList[i]["texture"] == null || res.data.dataList[i]["texture"] == undefined ?"":res.data.dataList[i]["texture"];
var unit = res.data.dataList[i]["unit"] == null || res.data.dataList[i]["unit"] == undefined ?"":res.data.dataList[i]["unit"];
var typeId = res.data.dataList[i]["typeId"] == null || res.data.dataList[i]["typeId"] == undefined ?"":res.data.dataList[i]["typeId"];
var show = "<p style='color: #00FF00'>"+mname + " "+ version+" " +code+" "+texture +" "+unit +" "+typeId+" :成功" +"</p>"
re += show
}
layer.open({
type: 1,
skin: 'layui-layer-rim', //加上边框
@ -313,6 +333,7 @@
},
error:function (){
layer.closeAll('loading'); //关闭loading
var demoText = $('#demoText');
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function(){
@ -338,6 +359,15 @@
shadeClose: true,
area: ['100%', '100%'],
content: '/material_view?id='+data.id,
end:function () {
//执行搜索重载
table.reload('currentTableId', {
url: '/material/material',
page: {
curr: 1
}
}, 'data');
}
});
$(window).on("resize", function () {
layer.full(index);

494
src/main/resources/templates/pages/material/material-out_back.html

@ -0,0 +1,494 @@
<!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">
</head>
<body>
<div class="layuimini-container">
<div class="layuimini-main">
<fieldset class="table-search-fieldset">
<legend>搜索信息</legend>
<div style="margin: 10px 10px 10px 10px">
<form class="layui-form layui-form-pane" action="">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">仓库</label>
<div class="layui-input-inline">
<!--<select name="depositoryId" >
<option value="" selected>请选择仓库</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>
<div class="layui-inline">
<label class="layui-form-label">种类</label>
<div class="layui-input-inline">
<!--<select name="materialTypeId" >
<option value="" selected>请选择物料类型</option>
<option th:each="materialType,iterStar:${materialTypes}" th:value="${materialType?.getId()}" th:text="${materialType?.getTname()}" >芯片类</option>
</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">
<label class="layui-form-label">物料名称</label>
<div class="layui-input-inline">
<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">
<select name="state">
<option value="">请选择状态</option>
<option value="1">启用</option>
<option value="2">禁用</option>
</select>
</div>
</div>
<div class="layui-inline">
<button type="submit" class="layui-btn layui-btn-primary" lay-submit
lay-filter="data-search-btn"><i class="layui-icon"></i> 搜 索
</button>
</div>
</div>
</form>
</div>
</fieldset>
<div class="layui-form-item">
<label class="layui-form-label">二维码</label>
<div class="layui-input-inline">
<!-- <input type="text" th:value="${record.depository.getDname()}" name="dname" required lay-verify="required" autocomplete="off" class="layui-input" readonly="readonly">-->
<img src="" id="qrCode">
</div>
</div>
<!-- 状态展示-->
<script type="text/html" id="switchTpl">
<input type="checkbox" name="state" value="{{d.id}}" lay-skin="switch" lay-text="启用|禁用" lay-filter="changeState" {{ d.state == 1 ? 'checked' : '' }} >
</script>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 添加</button>
<button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="delete"> 删除</button>
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" id="u_fileUpload" lay-event="import">导入数据</button>
</div>
</script>
<table class="layui-hide" id="currentTableId" lay-filter="currentTableFilter"></table>
<script type="text/html" id="currentTableBar">
<a class="layui-btn layui-btn-normal 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>
</script>
<script id="selectManager" type="text/html">
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="manager">仓管员</a>
</script>
</div>
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
layui.use(['form', 'table','upload'], function () {
var $ = layui.jquery,
form = layui.form,
table = layui.table,
upload = layui.upload;
$('#openSonByMateralType').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectType',
});
});
$('#openSonByDepository').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectDepository?type=2',
});
});
table.render({
elem: "#currentTableId",
url: '/material/material',
parseData: function (res) { //res 即为原始返回的数据
return {
"status": res.status, //解析接口状态
"message": res.statusInfo.message, //解析提示文本
"count": res.count, //解析数据长度
"data": res.data //解析数据列表
};
},
request: {
pageName: 'page', //页码的参数名称,默认:page
limitName: 'size' //每页数据量的参数名,默认:limit
},
where: {
type:"0"
},
response: {
statusName: 'status' //规定数据状态的字段名称,默认:code
,statusCode: 200 //规定成功的状态码,默认:0
,msgName: 'message' //规定状态信息的字段名称,默认:msg
,countName: 'count' //规定数据总数的字段名称,默认:count
,dataName: 'data' //规定数据列表的字段名称,默认:data
},
toolbar: '#toolbarDemo',
defaultToolbar: ['filter', 'exports', 'print'],
cols: [ [
{type: "checkbox", width: 50},
{field: 'code',width: 150,title: '存货编码',sort: true},
{field: 'id', width: 100, title: 'EAS编号',hidden:true},
{field: 'mname', width: 120, title: '物料名称', sort: false},
{field: 'typeName',width: 150,title: '物料种类'},
{field: 'version',width: 200,title: '规格型号',sort: false},
{field: 'texture',width: 100,title: '材质'},
{field: 'unit',width: 150,title: '计量单位'},
{field: 'depositoryCode',width: 250,title: '仓库编码',sort: true},
{field: "depositoryName",width: 120,title: "仓库名称"},
{field: 'quantity',width: 120,title:'数量',sort: true},
{field: 'price',width: 150,title: '单价',sort: true},
{field: 'amounts',width: 180,title: '总金额',sort: true},
{field: 'state', title:'状态', minWidth: 80, templet: '#switchTpl'},
{title: '仓管员', minWidth: 80, templet: '#selectManager' ,align: "center"},
{title: '操作', minWidth: 200, toolbar: '#currentTableBar', align: "center"}
]],
limits: [10, 15, 20, 25, 50],
limit: 10,
page: true,
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.mname!==''){
req.mname=data.mname;
}
if(data.depositoryId!== ''){
req.depositoryId = data.depositoryId;
}
if(data.materialTypeId !=''){
req.materialTypeId = data.materialTypeId;
}
if(data.state != ''){
req.state = data.state;
}
//执行搜索重载
table.reload('currentTableId', {
url: '/material/material',
page: {
curr: 1
},
where: req
}, 'data');
return false;
});
/**
* toolbar监听事件
*/
table.on('toolbar(currentTableFilter)', function (obj) {
if (obj.event === 'add') { // 监听添加操作
var index = layer.open({
title: '申请提交',
type: 2,
shade: 0.2,
maxmin: true,
shadeClose: true,
area: ['100%', '100%'],
content: '/material_add',
});
$(window).on("resize", function () {
layer.full(index);
});
}
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;
}
if(req.ids.length > 0) {
layer.confirm('真的删除么', {icon: 2, title: '提示'}, function (index) {
$.ajax({
url: '/material/material_del',
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']});
},
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秒)
});
//执行搜索重载
table.reload('currentTableId', {
url: '/material/material',
page: {
curr: 1
}
}, 'data');
return false;
}
}
})
})
}
else{
layer.msg("未选中记录,请确认!");
return false;
}
}
else if(obj.event === 'createQrCode'){
$.ajax({
url:"/material/createQrCode?mid=3",
dataType: 'json',
type: 'get',
contentType: "application/json;charset=utf-8",
success:function (data) {
if(data.status != 200){
layer.msg(data.statusInfo.messgae)
}else{
$("#qrCode").attr("src",data.data);
}
}
})
}
});
var upLoader = upload.render({
elem:"#u_fileUpload", // 绑定元素
url:'/excel/importExcel', // 上传接口
accept:'file', // 允许上传的格式,
exts:'xls|xlsx|csv',
done:function(res){
//如果上传成功
console.log(res)
if(res.code == 200){
var re = ""
for (let i = 0; i < res.data.dataList.length; i++) {
var mname = res.data.dataList[i]["mname"]
var code = res.data.dataList[i]["code"]
var version = res.data.dataList[i]["version"]
var texture = res.data.dataList[i]["texture"]
var price = res.data.dataList[i]["price"]
var quantity = res.data.dataList[i]["quantity"]
var unit = res.data.dataList[i]["unit"]
var show = "<p style='color: #00FF00'>"+mname + " "+ version+" " +code+" "+texture +" "+price +" "+quantity +" "+unit +":成功" +"</p>"
re += show
}
for (let i = 0; i < res.data.errMsg.length; i++) {
var show = "<p style='color: #ff211e'>"+res.data.errMsg[i] + ":错误"+"</p>"
re += show
}
layer.open({
type: 1,
skin: 'layui-layer-rim', //加上边框
area: ['500px', '500px'], //宽高
content: re
})
}else{
layer.msg(res.msg)
}
},
error:function (){
var demoText = $('#demoText');
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function(){
upLoader.upload()
})
}
})
//监听表格复选框选择
table.on('checkbox(currentTableFilter)', function (obj) {
console.log(obj)
});
table.on('tool(currentTableFilter)', function (obj) {
let data = obj.data;
if (obj.event === 'detail') {
var index = layer.open({
title: '仓库信息详情',
type: 2,
shade: 0.2,
maxmin: true,
shadeClose: true,
area: ['100%', '100%'],
content: '/material_view?id='+data.id,
});
$(window).on("resize", function () {
layer.full(index);
});
return false;
}
else if (obj.event === 'delete') {
var req={};
req.id=data.id;
layer.confirm('真的删除么', {icon: 2, title: '提示'}, function (index) {
$.ajax({
url: '/material/material_del',
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'] });
},
success:function(data){
layer.close(this.layerIndex);
if(data.status >= 300){
layer.msg(data.statusInfo.message);//失败的表情
return;
}else{
obj.del();
layer.msg("删除成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
});
}
}
})
});
}
else if (obj.event == 'realDelete'){ //彻底删除
var req={};
req.id=data.id;
layer.confirm('该操作会造成不可逆后果,是否继续?', {
btn: ['继续','取消'] //按钮
}, function(){
$.ajax({
url: '/material/realDeleteMaterial',
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'] });
},
success:function(data){
layer.close(this.layerIndex);
if(data.status >= 300){
layer.msg(data.statusInfo.message);//失败的表情
return;
}else{
obj.del();
layer.msg("删除成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
});
}
}
})
},function (){
// 执行重加载
table.reload('currentTableId', {
url: '/repository/warehouseRecord',
page: {
curr: 1
},
where: {"parentId":parentId}
});
});
}
else if (obj.event == 'manager'){
layer.open({
type: 2,
title: '仓管员信息',
shadeClose: true,
shade: false,
maxmin: true, //开启最大化最小化按钮
area: ['893px', '600px'],
content: '/ManagerViewByMid?id='+data.id
});
}
});
//监听状态操作
form.on('switch(changeState)', function(obj){
var req = new Map
if(obj.elem.checked){
req["state"] = 1
}
req["id"] = this.value
console.log(JSON.stringify(req))
$.ajax({
url: "/material/material_edit",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(req),
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='/material_out'
})
}
}
})
});
});
</script>
</body>
</html>

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

@ -14,13 +14,13 @@
<body>
<form class="layui-form" action="" >
<div class="layui-form-item" style="display: none">
<label class="layui-form-label">料编号</label>
<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>
<label class="layui-form-label">料名称</label>
<div class="layui-input-inline">
<input type="text" th:value="${record.getMname()}" name="mname" required lay-verify="required" autocomplete="off" class="layui-input">
</div>
@ -37,52 +37,32 @@
<input type="text" th:value="${record.getVersion()}" name="version" 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.getQuantity()}" name="quantity" 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-inline">
<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 autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材料单价</label>
<label class="layui-form-label">物料类型</label>
<div class="layui-input-inline">
<input type="text" th:value="${record.getPrice()}" name="price" required autocomplete="off" class="layui-input">
<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">
<label class="layui-form-label">料总额</label>
<label class="layui-form-label">材质</label>
<div class="layui-input-inline">
<input type="text" th:value="${record.getAmounts()}" name="amounts" required lay-verify="required" autocomplete="off" class="layui-input" readonly="readonly">
<input type="text" th:value="${record.getTexture()}" name="texture" required autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材料类型</label>
<label class="layui-form-label">计量单位</label>
<div class="layui-input-inline">
<!-- <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>-->
<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"/>
<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>
<label class="layui-form-label">二维码</label>
<div class="layui-input-inline">
<input type="text" th:value="${record.depository.getDname()}" name="dname" required lay-verify="required" autocomplete="off" class="layui-input" readonly="readonly">
<img src="" id="qrCode" onclick="changeQrCodeState()">
</div>
</div>
<div class="layui-form-item" style="display: none">
@ -100,6 +80,7 @@
</form>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
function changeQrCodeState(){};
layui.use('form', function(){
var form = layui.form, $ = layui.$;
$('#openSonByMateralType').on('click', function(){
@ -109,7 +90,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectType',
});
});
@ -131,10 +114,12 @@
layer.msg(data.statusInfo.message);//失败的表情
return;
} else {
layer.msg("仓库信息成功", {
layer.msg("修改成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
},function(){
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);//关闭当前页
window.location='/material_out'
})
}
@ -142,6 +127,12 @@
})
return false;
});
function changeQrCodeState() {
var mid = $("#id").val();
}
});
</script>

21
src/main/resources/templates/pages/material/selectDepositoryByCard.html

@ -17,7 +17,7 @@
<script>
var data;
layui.use(['form', 'layer','dropdown','tree'], function () {
layui.use(['form', 'layer', 'dropdown', 'tree'], function () {
var $ = layui.jquery,
tree = layui.tree;
@ -25,11 +25,16 @@
var clickObj = $("#clickObj").val();
test = tree.render({
elem: '#test2'
,data: []
,onlyIconControl: true //是否仅允许节点左侧图标控制展开收缩
,click: function(obj){
var windowParent = $("#"+clickObj,window.parent.document)[0];
var depositoryChildren = windowParent.childNodes[11];
, data: []
, onlyIconControl: true //是否仅允许节点左侧图标控制展开收缩
, click: function (obj) {
var windowParent = $("#" + clickObj, window.parent.document)[0];
var depositoryChildren = null;
if (windowParent.childNodes.length === 17) {
depositoryChildren = windowParent.childNodes[11];
} else {
depositoryChildren = windowParent.childNodes[13];
}
var depositoryItem = depositoryChildren.childNodes[3].childNodes;
var depositoryName = depositoryItem[1];
var depositoryId = depositoryItem[3];
@ -40,14 +45,14 @@
}
});
$.ajax({
url: "/repository/treeMenus?adminorg=0"+adminorg,
url: "/repository/treeMenus?adminorg=0" + adminorg,
type: 'get',
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var data2 = d.data;
test.reload({
data:data2
data: data2
});
}
});

8
src/main/resources/templates/pages/material/selectMaterialByCard.html

@ -35,9 +35,9 @@
}
var windowParent = $("#"+clickObj,window.parent.document)[0];
var children = windowParent.childNodes[5];
var materialItem = children.childNodes[3].childNodes;
var materialItem = children.childNodes[3].childNodes[1].childNodes;
var materialName = materialItem[1];
var materialId = materialItem[3];
var materialId = materialName.parentNode.parentNode.childNodes[3];
materialName.value = obj.data.title;
materialId.value = obj.data.id;
var index = parent.layer.getFrameIndex(window.name);
@ -50,7 +50,11 @@
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
beforeSend:function () {
this.layerIndex = layer.load(0, { shade: [0.5, '#393D49'] });
},
success: function (d) {
layer.close(this.layerIndex);
var data2 = d.data;
test.reload({
data: data2

2
src/main/resources/templates/pages/materialtype/materialTypeByParentId.html

@ -210,7 +210,7 @@
if (obj.event === 'detail') {
var index = layer.open({
title: '料种类详情',
title: '料种类详情',
type: 2,
shade: 0.2,
maxmin: true,

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

@ -14,7 +14,7 @@
<div class="layuimini-container">
<div class="layuimini-main">
<fieldset class="table-search-fieldset">
<legend>料种类增加</legend>
<legend>料种类增加</legend>
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-body" style="padding-top: 40px;">
@ -23,7 +23,7 @@
<div class="layui-form-item">
<label class="layui-form-label">种类名称:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写料种类名称" class="layui-input" name="tname"
<input type="text" placeholder="请填写料种类名称" class="layui-input" name="tname"
lay-verify="required"/>
</div>
</div>
@ -34,14 +34,14 @@
<option value="" selected>请选择类型</option>
<option th:each="materialType,iterStar:${materialTypes}" th:value="${materialType?.getId()}" th:text="${materialType?.getTname()}" >顶级类型</option>
</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" />
<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">
<label class="layui-form-label">种类介绍:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写入料种类介绍" name="introduce" class="layui-input"
<input type="text" placeholder="请填写入料种类介绍" name="introduce" class="layui-input"
lay-verify="required" required>
</div>
</div>
@ -80,7 +80,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectType',
});
});

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

@ -75,7 +75,7 @@
layer.msg(data.statusInfo.message);//失败的表情
return;
} else {
layer.msg("料类型信息修改成功", {
layer.msg("料类型信息修改成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
},function(){

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

@ -57,6 +57,7 @@
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 添加</button>
<button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="delete"> 删除</button>
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" id="u_fileUpload" lay-event="import">导入数据</button>
</div>
</script>
@ -73,9 +74,10 @@
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
layui.use(['form', 'table'], function () {
layui.use(['form', 'table','upload'], function () {
var $ = layui.jquery,
form = layui.form,
upload = layui.upload,
table = layui.table;
var parentId = document.getElementById("parentId").value;
table.render({
@ -162,7 +164,8 @@
$(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={};
@ -211,6 +214,51 @@
}
});
//用于导入数据
var upLoader = upload.render({
elem:"#u_fileUpload", // 绑定元素
url:'/excel/importExcelByMT', // 上传接口
accept:'file', // 允许上传的格式,
exts:'xls|xlsx|csv',
done:function(res){
//如果上传成功
console.log(res.data.dataList[0]["parentId"] == null)
if(res.code == 200){
var re = "";
for (let i = 0; i < res.data.errMsg.length; i++) {
var show = "<p style='color: #ff211e'>"+res.data.errMsg[i] + ":错误"+"</p>"
re += show
}
for (let i = 0; i < res.data.dataList.length; i++) {
var tname = res.data.dataList[i]["tname"];
var id = res.data.dataList[i]["id"];
var parentId = res.data.dataList[i]["parentId"] == null?"":res.data.dataList[i]["parentId"];
var introduce = res.data.dataList[i]["introduce"] == null?"":res.data.dataList[i]["introduce"];
var show = "<p style='color: #00FF00'>"+tname + " "+ id+" " +parentId+"成功" +"</p>"
re += show
}
layer.open({
type: 1,
skin: 'layui-layer-rim', //加上边框
area: ['500px', '500px'], //宽高
content: re
})
}else{
layer.msg(res.msg)
}
},
error:function (){
var demoText = $('#demoText');
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function(){
upLoader.upload()
})
}
})
//监听表格复选框选择
table.on('checkbox(currentTableFilter)', function (obj) {
console.log(obj)
@ -223,7 +271,7 @@
req = {};
req.parentId = parentId;
var index = layer.open({
title: '料种类详情',
title: '料种类详情',
type: 2,
shade: 0.2,
maxmin: true,

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

@ -126,7 +126,7 @@
</a>
</div>
<div class="layui-col-xs3 layuimini-qiuck-module">
<a href="javascript:;" layuimini-content-href="/table_in" data-title="入库查询" data-icon="fa fa-file-text">
<a href="javascript:;" layuimini-content-href="/application_transfer" data-title="入库查询" data-icon="fa fa-file-text">
<i class="fa fa-exchange"></i>
<cite>转移申请</cite>
</a>

140
src/main/resources/templates/pages/place/place_add.html

@ -0,0 +1,140 @@
<!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">
</head>
<body>
<div class="layuimini-container">
<div class="layuimini-main">
<fieldset class="table-search-fieldset">
<legend>库位创建</legend>
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-body" style="padding-top: 40px;">
<div>
<form class="layui-form"
style="margin: 0 auto;max-width: 700px;padding-top: 100px; padding-bottom: 200px" lay-filter="form1">
<input style="display: none" th:value="${depositoryId}" name="depositoryId" id="depositoryID">
<div class="layui-form-item">
<label class="layui-form-label">库位行:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写行数" class="layui-input"
name="place_x" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">库位列:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写列数" class="layui-input"
name="place_y" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">库位层:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写层数" class="layui-input"
name="place_z" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最大存放量:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写最大存放量" class="layui-input"
name="max" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最小存放量:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写最小存放量" class="layui-input"
name="min" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formStep">
&emsp;创建库位&emsp;
</button>
</div>
</div>
</form>
</div>
</div>
<hr>
</div>
</div>
</fieldset>
</div>
</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,
form = layui.form,
layer = layui.layer;
var depositoryId = $("#depositoryId").val();
form.on('submit(formStep)', function (data) {
var req = data.field;
req.type = "one";
$.ajax({
url: "/place/addPlace",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(req),
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: 1000
}, //1秒关闭(如果不配置,默认是3秒)
function(){
//do something
window.location="/insertPlace?depositoryId="+depositoryId
});
}
},
complete: function () {
form.val("form1", {
})
}
});
return false;
});
form.on('select(depositoryId)',function (data){
$.ajax({
url:"/repository/findDepositoryByParent?parentId="+data.value,
type:'get',
dataType:'json',
contentType: "application/json;charset=utf-8",
success:function(d){
console.log(d.data)
}
})
})
});
</script>
</body>
</html>

131
src/main/resources/templates/pages/place/place_edit.html

@ -0,0 +1,131 @@
<!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">
</head>
<body>
<div class="layuimini-container">
<div class="layuimini-main">
<fieldset class="table-search-fieldset">
<legend>库位创建</legend>
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-body" style="padding-top: 40px;">
<div>
<form class="layui-form"
style="margin: 0 auto;max-width: 700px;padding-top: 100px; padding-bottom: 200px" lay-filter="form1">
<div class="layui-form-item">
<label class="layui-form-label">库位行:</label>
<input th:value="${place.getId()}" name = "id" type="text" style="display: none">
<input th:value="${place.getDid()}" id="depositoryId" name = "did" type="text" style="display: none">
<div class="layui-input-block">
<input type="text" placeholder="请填写行数" class="layui-input" th:value="${place.getX()}"
name="place_x" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">库位列:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写列数" class="layui-input" th:value="${place.getY()}"
name="place_y" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">库位层:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写层数" class="layui-input" th:value="${place.getZ()}"
name="place_z" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最大存放量:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写最大存放量" class="layui-input" th:value="${place.getMax()}"
name="max" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最小存放量:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写最小存放量" class="layui-input" th:value="${place.getMin()}"
name="min" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formStep">
&emsp;提交&emsp;
</button>
</div>
</div>
</form>
</div>
</div>
<hr>
</div>
</div>
</fieldset>
</div>
</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,
form = layui.form,
layer = layui.layer;
var depositoryId = $("#depositoryId").val();
form.on('submit(formStep)', function (data) {
var req = data.field;
req.type = "one";
$.ajax({
url: "/place/place_edit",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(req),
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: 1000
}, //1秒关闭(如果不配置,默认是3秒)
function(){
//do something
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);//关闭当前页
window.location='/warehouseByParentId?parentId='+depositoryId;
});
}
},
complete: function () {
form.val("form1", {
})
}
});
return false;
});
});
</script>
</body>
</html>

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

@ -66,7 +66,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectDepository?type=2',
});
});

4
src/main/resources/templates/pages/post/postRole_edit.html

@ -73,7 +73,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectDepository?type=2',
});
});

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

@ -62,7 +62,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectDepository?type=2',
});
});

2
src/main/resources/templates/pages/user/user-email.html

@ -21,7 +21,7 @@
<div>
<form class="layui-form" style="margin: 0 auto;max-width: 460px;padding-top: 40px;">
<div class="layui-form-item">
<h2>验证码将发送至<span id="oldEmail" th:text="${email}">767564319@qq.com</span></h2>
<h2>验证码将发送至<span id="oldEmail" th:text="${email}">1789131794@qq.com</span></h2>
<h3 style="color: grey;margin-top: 1em">如果长时间未收到验证码,请检查垃圾箱</h3>
</div>
<div class="layui-form-item" style="margin-top: 5em">

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

@ -67,7 +67,9 @@
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
area: ['70%', '70%'],
move : '.layui-layer-title',
fixed:false,
content: '/selectDepository?type=2',
});
});

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

Loading…
Cancel
Save