Browse Source

材料创建时材料类型选择界面更新

lwx_dev
erdanergou 3 years ago
parent
commit
2f79ae19f9
  1. 6
      .idea/compiler.xml
  2. 1
      .idea/misc.xml
  3. 5
      pom.xml
  4. 129
      src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java
  5. 9
      src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java
  6. 55
      src/main/java/com/dreamchaser/depository_manage/controller/PageController.java
  7. 4
      src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfo.java
  8. 6
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.java
  9. 7
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.xml
  10. 45
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.java
  11. 82
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml
  12. 8
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.java
  13. 14
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml
  14. 6
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.java
  15. 7
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.xml
  16. 57
      src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java
  17. 15
      src/main/java/com/dreamchaser/depository_manage/service/DepositoryService.java
  18. 9
      src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java
  19. 12
      src/main/java/com/dreamchaser/depository_manage/service/MaterialTypeService.java
  20. 165
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java
  21. 75
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java
  22. 4
      src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java
  23. 26
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java
  24. 74
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialTypeServiceImpl.java
  25. 15
      src/main/java/com/dreamchaser/depository_manage/utils/DateUtil.java
  26. 2
      src/main/resources/templates/pages/chart/chart-in_back.html
  27. 4
      src/main/resources/templates/pages/chart/chart-out_back.html
  28. 1
      src/main/resources/templates/pages/chart/chart-stock_back.html
  29. 47
      src/main/resources/templates/pages/material/material-add.html
  30. 47
      src/main/resources/templates/pages/material/selectDepository.html
  31. 47
      src/main/resources/templates/pages/material/selectType.html
  32. 4
      src/main/resources/templates/pages/other/welcome.html
  33. 176
      src/test/java/com/dreamchaser/depository_manage/Test.java
  34. 7
      target/classes/com/dreamchaser/depository_manage/mapper/DepositoryMapper.xml
  35. 82
      target/classes/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml
  36. 14
      target/classes/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml
  37. 7
      target/classes/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.xml
  38. 2
      target/classes/templates/pages/chart/chart-in_back.html
  39. 4
      target/classes/templates/pages/chart/chart-out_back.html
  40. 1
      target/classes/templates/pages/chart/chart-stock_back.html
  41. 47
      target/classes/templates/pages/material/material-add.html
  42. 47
      target/classes/templates/pages/material/selectDepository.html
  43. 47
      target/classes/templates/pages/material/selectType.html
  44. 4
      target/classes/templates/pages/other/welcome.html

6
.idea/compiler.xml

@ -9,8 +9,12 @@
<outputRelativeToContentRoot value="true" /> <outputRelativeToContentRoot value="true" />
<module name="depository" /> <module name="depository" />
<module name="depository_manage" /> <module name="depository_manage" />
<module name="depositroy" /> <module name="depository_manage (2)" />
</profile> </profile>
</annotationProcessing> </annotationProcessing>
<bytecodeTargetLevel>
<module name="depository_manage (1)" target="1.5" />
<module name="depositroy" target="1.8" />
</bytecodeTargetLevel>
</component> </component>
</project> </project>

1
.idea/misc.xml

@ -2,6 +2,7 @@
<project version="4"> <project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="FrameworkDetectionExcludesConfiguration"> <component name="FrameworkDetectionExcludesConfiguration">
<file type="web" url="file://D:/Code/depository" />
<file type="web" url="file://$PROJECT_DIR$" /> <file type="web" url="file://$PROJECT_DIR$" />
</component> </component>
<component name="JavaScriptSettings"> <component name="JavaScriptSettings">

5
pom.xml

@ -72,6 +72,10 @@
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId> <artifactId>spring-boot-configuration-processor</artifactId>
@ -153,6 +157,7 @@
</dependency> </dependency>
<!-- 用于redis的连接--> <!-- 用于redis的连接-->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>

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

@ -104,21 +104,25 @@ public class DepositoryController {
Map<String, Integer> depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(); Map<String, Integer> depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId();
Iterator it = depositoryAllNameAndId.keySet().iterator(); Iterator it = depositoryAllNameAndId.keySet().iterator();
Map<String,Object> map = new HashMap<>(); Map<String,Object> map = new HashMap<>();
// 获取周仓库库存 // 获取周仓库库存
Map<String, Object> thisWeekInventoryByDName = getThisWeekInventoryByDName(depositoryService, depositoryRecordService); Map<String, Object> thisWeekInventoryByDName = getThisWeekInventoryByDName(depositoryService, depositoryRecordService);
while (it.hasNext()){ while (it.hasNext()){
int i; int i;
Object key = it.next(); Object key = it.next();
Double thisDayInventory = 0.0; Double thisDayInventory = 0.0;
// 本周周一的总量
thisDayInventory = ((List<Double>)thisWeekInventoryByDName.get(key.toString())).get(0); thisDayInventory = ((List<Double>)thisWeekInventoryByDName.get(key.toString())).get(0);
result.add(thisDayInventory); result.add(thisDayInventory);
int j = 0; int j = 0;
for (i = days.size() - 1; i > 0; i--) { for (i = days.size() - 1; i > 0; i--) {
// 遍历 Map并计算各仓库的入库数 // 遍历 Map并计算各仓库的入库数
Integer val = (Integer) depositoryAllNameAndId.get(key); Integer val = (Integer) depositoryAllNameAndId.get(key);
Double depositoryRecordByDateByIn = depositoryRecordService.findDepositoryRecordByDate(days.get(i), days.get(i - 1), 1, val); // 获取一段时间内的入库额度
Double depositoryRecordByDateByOut = depositoryRecordService.findDepositoryRecordByDate(days.get(i), days.get(i - 1), 0, val); Double depositoryRecordByDateByIn1 = depositoryRecordService.findApplicationInRecordByDate(days.get(i), days.get(i - 1), val);
result.add(result.get(j++) - depositoryRecordByDateByIn + depositoryRecordByDateByOut); // 获取一段时间内的出库库额度
Double depositoryRecordByDateByOut1 = depositoryRecordService.findApplicationOutRecordByDate(days.get(i), days.get(i - 1), val);
Double wareHouseCount1 = result.get(j++) - depositoryRecordByDateByIn1 + depositoryRecordByDateByOut1;
result.add(wareHouseCount1);
} }
result.remove(0); result.remove(0);
Collections.reverse(result); Collections.reverse(result);
@ -159,11 +163,7 @@ public class DepositoryController {
}else { }else {
int now = instance.get(Calendar.DAY_OF_WEEK) - 1; int now = instance.get(Calendar.DAY_OF_WEEK) - 1;
List<Long> days = new ArrayList<>(); List<Long> days = new ArrayList<>();
instance.add(Calendar.DATE, 1);
days.add(DateUtil.DateTimeByMonthToTimeStamp(formatter.format(instance.getTime()))); days.add(DateUtil.DateTimeByMonthToTimeStamp(formatter.format(instance.getTime())));
instance.add(Calendar.DATE, -1);
days.add(DateUtil.DateTimeByMonthToTimeStamp(formatter.format(instance.getTime())));
while (now - 1 > 0) { while (now - 1 > 0) {
now--; now--;
instance.add(Calendar.DATE, -1); instance.add(Calendar.DATE, -1);
@ -174,20 +174,40 @@ public class DepositoryController {
int i; int i;
Object key = it.next(); Object key = it.next();
int j =0; int j =0;
// 获取今天容量
Double toDayInventoryByDName = depositoryService.getToDayInventoryByDName(key.toString()); Double toDayInventoryByDName = depositoryService.getToDayInventoryByDName(key.toString());
result.add(toDayInventoryByDName); result.add(toDayInventoryByDName);
for (i = days.size() - 1; i > 0; i--) { for (i = 0;i<days.size() - 1;i++) {
// 获取本周周一日期
String mondayOnThisWeek = DateUtil.getMondayOnThisWeek();
if(mondayOnThisWeek.equals(DateUtil.TimeStampToDateTime(days.get(i)))){
break;
}
Integer val = (Integer) depositoryAllNameAndId.get(key);
// 获取一段时间内的入库额度
//测试
Double depositoryRecordByDateByIn1 = depositoryRecordService.findApplicationInRecordByDate(days.get(i), days.get(i + 1), val);
// 获取一段时间内的入库额度
Double depositoryRecordByDateByOut1 = depositoryRecordService.findApplicationOutRecordByDate(days.get(i), days.get(i + 1), val);
Double warehouserCount1 = result.get(j++) - depositoryRecordByDateByIn1 + depositoryRecordByDateByOut1;
result.add(warehouserCount1);
}
/* for (i = days.size() - 1; i > 0; i--) {
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE,1); calendar.add(Calendar.DATE,1);
String format = formatter.format(calendar.getTime()); String format = formatter.format(calendar.getTime()) + " 00:00:00";
if(days.get(i - 1).equals(format)){ if(Long.compare(days.get(i - 1),DateUtil.DateTimeToTimeStamp(format)) == 0){
continue; continue;
} }
Integer val = (Integer) depositoryAllNameAndId.get(key); Integer val = (Integer) depositoryAllNameAndId.get(key);
Double depositoryRecordByDateByIn = depositoryRecordService.findDepositoryRecordByDate(days.get(i - 1), days.get(i), 1, val); // 获取一段时间内的入库额度
Double depositoryRecordByDateByOut = depositoryRecordService.findDepositoryRecordByDate(days.get(i - 1), days.get(i), 0, val); //测试
result.add(result.get(j++) - depositoryRecordByDateByIn + depositoryRecordByDateByOut); Double depositoryRecordByDateByIn1 = depositoryRecordService.findApplicationInRecordByDate(days.get(i - 1), days.get(i), val);
} // 获取一段时间内的入库额度
Double depositoryRecordByDateByOut1 = depositoryRecordService.findApplicationOutRecordByDate(days.get(i - 1), days.get(i), val);
Double warehouserCount1 = result.get(j++) - depositoryRecordByDateByIn1 + depositoryRecordByDateByOut1;
result.add(warehouserCount1);
}*/
Collections.reverse(result); Collections.reverse(result);
map.put(key.toString(), ((ArrayList<Double>) result).clone()); map.put(key.toString(), ((ArrayList<Double>) result).clone());
result.clear(); result.clear();
@ -236,19 +256,23 @@ public class DepositoryController {
parmOut.put("depository_id",depositoryAll.get(j).getId()); parmOut.put("depository_id",depositoryAll.get(j).getId());
parmOut.put("start", months.get(num + 1)); parmOut.put("start", months.get(num + 1));
parmOut.put("end", months.get(num)); parmOut.put("end", months.get(num));
Double wareHouseInCountByMonth = depositoryRecordService.findMaterialCountByMonth(parmIn); // 获取月份中入库材料的总额
Double wareHouseOutCountByMonth = depositoryRecordService.findMaterialCountByMonth(parmOut); // 测试
Double wareHouseCount = result.get(k++) - wareHouseInCountByMonth + wareHouseOutCountByMonth; Double wareHouseInCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parmIn);
result.add(wareHouseCount); // 获取月份中出库材料的总额
((Map<String, Object>) sourceList.get(num)).put(depositoryAll.get(j).getDname(), wareHouseCount); // 测试
Double wareHouseOutCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parmOut);
// 获取当前月库存容量
// 测试
Double wareHouseCount1 = result.get(k++) - wareHouseInCountByMonth1 + wareHouseOutCountByMonth1;
result.add(wareHouseCount1);
((Map<String, Object>) sourceList.get(num)).put(depositoryAll.get(j).getDname(), wareHouseCount1);
} }
for (int i = 0; i < depositoryAll.size(); i++) { for (int i = 0; i < depositoryAll.size(); i++) {
result.remove(0); result.remove(0);
} }
// Double last = result.get(result.size() - 1);
// result.clear();
// result.add(last);
} }
for (int i = 0; i < depositoryAll.size(); i++) { for (int i = 0; i < depositoryAll.size(); i++) {
((Map<String, Object>) sourceList.get(0)).put(depositoryAll.get(i).getDname(), depositoryService.getToDayInventoryByDName(depositoryAll.get(i).getDname())); ((Map<String, Object>) sourceList.get(0)).put(depositoryAll.get(i).getDname(), depositoryService.getToDayInventoryByDName(depositoryAll.get(i).getDname()));
} }
@ -308,17 +332,20 @@ public class DepositoryController {
parmOut.put("start", months.get(j + 1)); parmOut.put("start", months.get(j + 1));
parmOut.put("end", months.get(j)); parmOut.put("end", months.get(j));
parmOut.put("dname", depositoryAll.get(i).getDname()); parmOut.put("dname", depositoryAll.get(i).getDname());
Double wareHouseInCountByMonth = depositoryRecordService.findMaterialCountByMonth(parmIn); // 获取某个月某材料入库总额
Double wareHouseOutCountByMonth = depositoryRecordService.findMaterialCountByMonth(parmOut); // 测试
Double wareHouseCount = (Double) productData.get(k++) - wareHouseInCountByMonth + wareHouseOutCountByMonth; Double wareHouseInCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parmIn);
productData.add(wareHouseCount); // 获取某个月某材料出库总额
// 测试
Double wareHouseOutCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parmOut);
Double wareHouseCount1 = (Double) productData.get(k++) - wareHouseInCountByMonth1 + wareHouseOutCountByMonth1;
productData.add(wareHouseCount1);
} }
List<Object> result = new ArrayList<>(); List<Object> result = new ArrayList<>();
result.add(productData.get(0)); result.add(productData.get(0));
for (int j = productData.size() - 2; j > 0;j--) { for (int j = productData.size() - 2; j > 0;j--) {
result.add(productData.get(j)); result.add(productData.get(j));
} }
// mapDataList.add(((ArrayList<Object>) productData).clone());
mapDataList.add(result); mapDataList.add(result);
productData.clear(); productData.clear();
} }
@ -326,6 +353,7 @@ public class DepositoryController {
return mapData; return mapData;
} }
/** /**
* 根据条件查询仓库 * 根据条件查询仓库
* *
@ -654,16 +682,20 @@ public class DepositoryController {
depositoryName.add(key.toString()); depositoryName.add(key.toString());
} }
Integer val = (Integer) depositoryAllNameAndId.get(key); Integer val = (Integer) depositoryAllNameAndId.get(key);
Double depositoryRecordByDateAndType = depositoryRecordService.findDepositoryRecordByDate(days.get(i), days.get(i - 1), Integer.parseInt(type), val); // 获取一段时间内的库存额度
drCountbyDrName.add(depositoryRecordByDateAndType); // 测试
Double depositoryRecordByDateAndType1 = depositoryRecordService.findApplicationRecordByDate(days.get(i), days.get(i - 1), Integer.parseInt(type), val);
drCountbyDrName.add(depositoryRecordByDateAndType1);
if (i == 2 && flag) { if (i == 2 && flag) {
yesterdayData.put(key.toString(), depositoryRecordByDateAndType); yesterdayData.put(key.toString(), depositoryRecordByDateAndType1);
} }
} }
Collections.reverse(drCountbyDrName);
show_data.put(key.toString(), ((ArrayList<Double>) drCountbyDrName).clone()); show_data.put(key.toString(), ((ArrayList<Double>) drCountbyDrName).clone());
drCountbyDrName.clear(); drCountbyDrName.clear();
} }
} else { }
else {
if (weekDay == 1) { if (weekDay == 1) {
//只获取今天 //只获取今天
Long now = DateUtil.DateTimeByMonthToTimeStamp(formatter.format(instance.getTime())); Long now = DateUtil.DateTimeByMonthToTimeStamp(formatter.format(instance.getTime()));
@ -676,12 +708,13 @@ public class DepositoryController {
Object key = it.next(); Object key = it.next();
depositoryName.add(key.toString()); depositoryName.add(key.toString());
Integer val = (Integer) depositoryAllNameAndId.get(key); Integer val = (Integer) depositoryAllNameAndId.get(key);
Double depositoryRecordByDate = depositoryRecordService.findDepositoryRecordByDate(tomorrow,now , Integer.parseInt(type), val); // 获取一段时间内的库存额度
Double depositoryRecordByDate1 = depositoryRecordService.findApplicationRecordByDate(tomorrow,now , Integer.parseInt(type), val);
Double toDayInventoryByDName = depositoryService.getToDayInventoryByDName(key.toString()); Double toDayInventoryByDName = depositoryService.getToDayInventoryByDName(key.toString());
todayInventory.put(key.toString(),toDayInventoryByDName); todayInventory.put(key.toString(),toDayInventoryByDName);
yesterdayData.put(key.toString(), depositoryRecordByDate); yesterdayData.put(key.toString(), depositoryRecordByDate1);
List<Double> drCountbyDrName = new ArrayList<>(); List<Double> drCountbyDrName = new ArrayList<>();
drCountbyDrName.add(depositoryRecordByDate); drCountbyDrName.add(depositoryRecordByDate1);
show_data.put(key.toString(), ((ArrayList<Double>) drCountbyDrName).clone()); show_data.put(key.toString(), ((ArrayList<Double>) drCountbyDrName).clone());
} }
} else { } else {
@ -709,10 +742,12 @@ public class DepositoryController {
depositoryName.add(key.toString()); depositoryName.add(key.toString());
} }
Integer val = (Integer) depositoryAllNameAndId.get(key); Integer val = (Integer) depositoryAllNameAndId.get(key);
Double depositoryRecordByDate = depositoryRecordService.findDepositoryRecordByDate(days.get(i - 1), days.get(i), Integer.parseInt(type), val); // 获取一段时间内的库存额度
drCountbyDrName.add(depositoryRecordByDate); // 测试
Double depositoryRecordByDate1 = depositoryRecordService.findApplicationRecordByDate(days.get(i - 1), days.get(i), Integer.parseInt(type), val);
drCountbyDrName.add(depositoryRecordByDate1);
if (i == 2 && flag) { if (i == 2 && flag) {
yesterdayData.put(key.toString(), depositoryRecordByDate); yesterdayData.put(key.toString(), depositoryRecordByDate1);
} }
} }
show_data.put(key.toString(), ((ArrayList<Double>) drCountbyDrName).clone()); show_data.put(key.toString(), ((ArrayList<Double>) drCountbyDrName).clone());
@ -737,8 +772,11 @@ public class DepositoryController {
parm.put("start", months.get(num + 1)); parm.put("start", months.get(num + 1));
parm.put("end", months.get(num)); parm.put("end", months.get(num));
parm.put("tname", materialTypeAll.get(j).getTname()); parm.put("tname", materialTypeAll.get(j).getTname());
//根据条件获取月份中材料的总额
Double materialCountByMonth = depositoryRecordService.findMaterialCountByMonth(parm); Double materialCountByMonth = depositoryRecordService.findMaterialCountByMonth(parm);
((Map<String, Object>) sourceList.get(num)).put(materialTypeAll.get(j).getTname(), materialCountByMonth); // 测试
Double materialCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parm);
((Map<String, Object>) sourceList.get(num)).put(materialTypeAll.get(j).getTname(), materialCountByMonth1);
} }
} }
@ -777,8 +815,10 @@ public class DepositoryController {
parm.put("start", months1.get(j)); parm.put("start", months1.get(j));
parm.put("end", months1.get(j - 1)); parm.put("end", months1.get(j - 1));
parm.put("tname", materialTypeAll.get(i).getTname()); parm.put("tname", materialTypeAll.get(i).getTname());
Double materialCountByMonth = depositoryRecordService.findMaterialCountByMonth(parm); //根据条件获取月份中材料的总额
productData.add(materialCountByMonth); // 测试
Double materialCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parm);
productData.add(materialCountByMonth1);
} }
mapDataList.add(((ArrayList<Object>) productData).clone()); mapDataList.add(((ArrayList<Object>) productData).clone());
productData.clear(); productData.clear();
@ -987,4 +1027,11 @@ public class DepositoryController {
return new RestResponse(administrationPList,size, 200); return new RestResponse(administrationPList,size, 200);
} }
// 构造树选择框
@GetMapping("/treeMenus")
public RestResponse InitTreeMenus(){
List<Object> list = depositoryService.InitTreeMenus();
return new RestResponse(list);
}
} }

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

@ -1,5 +1,6 @@
package com.dreamchaser.depository_manage.controller; package com.dreamchaser.depository_manage.controller;
import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.entity.Depository; import com.dreamchaser.depository_manage.entity.Depository;
import com.dreamchaser.depository_manage.entity.MaterialType; import com.dreamchaser.depository_manage.entity.MaterialType;
import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.exception.MyException;
@ -187,6 +188,12 @@ public class MaterialTypeController {
return new RestResponse(allSonDepository); return new RestResponse(allSonDepository);
} }
@GetMapping("/treeMenus")
public RestResponse InitTreeMenus(){
List<Object> list = materialTypeService.InitTreeMenus();
return new RestResponse(list);
}
/** /**
* 根据父级类型编号查询所有子类型 * 根据父级类型编号查询所有子类型
@ -295,4 +302,6 @@ public class MaterialTypeController {
} }
} }

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

@ -258,6 +258,7 @@ public class PageController {
}; };
mv.addObject("depositoryCount", depositoryService.findAllCountByNoDelete()); mv.addObject("depositoryCount", depositoryService.findAllCountByNoDelete());
mv.addObject("allPrice", materialService.findAllPriceNoDelete()); mv.addObject("allPrice", materialService.findAllPriceNoDelete());
mv.addObject("allMaterial", materialService.findMaterialAll().size());
/** /**
* 获取当天日期 * 获取当天日期
*/ */
@ -271,7 +272,12 @@ public class PageController {
Map<String, Object> parm = new HashMap<>(); Map<String, Object> parm = new HashMap<>();
map.put("statr", days.get(1)); map.put("statr", days.get(1));
map.put("end", days.get(0)); map.put("end", days.get(0));
Integer warehouseRecord = depositoryRecordService.findWarehouseRecord(parm); // Integer warehouseRecord = depositoryRecordService.findWarehouseRecord(parm);
Integer warehouseRecord = 0;
Map<String,Object> param = new HashMap<>();
Integer applicationOut = depositoryRecordService.findApplicationOutRecordPCountByCondition(param);
Integer applicationIn = depositoryRecordService.findApplicationInRecordPCountByCondition(param);
warehouseRecord = applicationIn + applicationOut;
mv.addObject("warehouseRecord", warehouseRecord); mv.addObject("warehouseRecord", warehouseRecord);
mv.addObject("notices", noticeService.findNoticeByCondition(map)); mv.addObject("notices", noticeService.findNoticeByCondition(map));
return mv; return mv;
@ -339,6 +345,17 @@ public class PageController {
return mv; return mv;
} }
@GetMapping("/selectType")
public String selectType(){
return "pages/material/selectType";
}
@GetMapping("/selectDepository")
public String selectDepository(){
return "pages/material/selectDepository";
}
@GetMapping("material_view") @GetMapping("material_view")
public ModelAndView material_view(Integer id) { public ModelAndView material_view(Integer id) {
ModelAndView mv = new ModelAndView(); ModelAndView mv = new ModelAndView();
@ -474,17 +491,31 @@ public class PageController {
return mv; return mv;
} }
/**
* 入库可视化
* @return
*/
@GetMapping("chart_in_back") @GetMapping("chart_in_back")
public ModelAndView chart_in_back() { public ModelAndView chart_in_back() {
ModelAndView mv = new ModelAndView(); ModelAndView mv = new ModelAndView();
mv.setViewName("pages/chart/chart-in_back"); mv.setViewName("pages/chart/chart-in_back");
/**
* 仓库总数
*/
mv.addObject("depositories", depositoryService.findDepositoryAll()); mv.addObject("depositories", depositoryService.findDepositoryAll());
mv.addObject("reviewers", userService.findReviewers()); /**
* 材料总数
*/
mv.addObject("materials", materialService.findMaterialAll()); mv.addObject("materials", materialService.findMaterialAll());
mv.addObject("InCount", depositoryRecordService.CalculateAllCount(1, "已入库")); // 转入材料数量
mv.addObject("allInCount", depositoryRecordService.CalculateAllCount(1, "")); mv.addObject("InCount", depositoryRecordService.CalculateAllApplicationInCount());
mv.addObject("InPrice", depositoryRecordService.CalculateAllPrice(1, "已入库"));
mv.addObject("allInPrice", depositoryRecordService.CalculateAllPrice(1, "")); // 转入材料总额
mv.addObject("allInCount", depositoryRecordService.CalculateAllApplicationInCount());
// 购入材料数量
mv.addObject("InPrice", depositoryRecordService.CalculateAllApplicationInPrice());
// 购入材料总额
mv.addObject("allInPrice", depositoryRecordService.CalculateAllApplicationInPrice());
return mv; return mv;
} }
@ -500,10 +531,14 @@ public class PageController {
mv.addObject("depositories", depositoryService.findDepositoryAll()); mv.addObject("depositories", depositoryService.findDepositoryAll());
mv.addObject("reviewers", userService.findReviewers()); mv.addObject("reviewers", userService.findReviewers());
mv.addObject("materials", materialService.findMaterialAll()); mv.addObject("materials", materialService.findMaterialAll());
mv.addObject("InCount", depositoryRecordService.CalculateAllCount(2, "已出库")); // 转出材料数量
mv.addObject("allInCount", depositoryRecordService.CalculateAllCount(2, "")); mv.addObject("InCount", depositoryRecordService.CalculateAllApplicationOutCount("已出库"));
mv.addObject("InPrice", depositoryRecordService.CalculateAllPrice(2, "已出库")); // 转出材料金额
mv.addObject("allInPrice", depositoryRecordService.CalculateAllPrice(2, "")); mv.addObject("allInCount", depositoryRecordService.CalculateAllApplicationOutCount(""));
// 出售材料数量
mv.addObject("InPrice", depositoryRecordService.CalculateAllApplicationOutPrice("已出库"));
// 出库材料总额
mv.addObject("allInPrice", depositoryRecordService.CalculateAllApplicationOutPrice(""));
return mv; return mv;
} }

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

@ -19,7 +19,7 @@ import java.math.BigInteger;
public class ExcelInfo { public class ExcelInfo {
/** 材料编号 */ /** 材料编号 */
@ExcelProperty("材料编号") @ExcelProperty("EAS编号")
private Integer id; private Integer id;
/** 仓库名称 */ /** 仓库名称 */
@ -47,7 +47,7 @@ public class ExcelInfo {
private Integer state; private Integer state;
/** 存货编码 */ /** 存货编码 */
@ExcelProperty("存货编码") @ExcelProperty("存货编码(用友U8)")
private Long code; private Long code;
/** 规格型号 */ /** 规格型号 */

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

@ -130,4 +130,10 @@ public interface DepositoryMapper {
* @return * @return
*/ */
String findUserNameByDepositoryId(Integer depositoryId); String findUserNameByDepositoryId(Integer depositoryId);
/**
* 根据父级获取子类
* @param parentId
* @return
*/
List<Depository> getParentByDepository(Integer parentId);
} }

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

@ -141,6 +141,13 @@
AND d.state != 3 AND d.state != 3
</select> </select>
<select id="getParentByDepository" resultMap="depositoryMap" parameterType="int">
SELECT
<include refid="allColumns" />
FROM depository d WHERE d.parentId = #{parentId}
</select>
<!-- 根据主键查询数据--> <!-- 根据主键查询数据-->
<select id="findDepositoryRecordById" resultMap="depositoryMap" parameterType="Integer"> <select id="findDepositoryRecordById" resultMap="depositoryMap" parameterType="Integer">

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

@ -70,6 +70,18 @@ public interface DepositoryRecordMapper {
*/ */
List<DepositoryRecord> findDepositoryRecordAll(); List<DepositoryRecord> findDepositoryRecordAll();
/**
* 查找所有入库记录
* @return
*/
List<ApplicationInRecordP> findApplicationInRecordPAll();
/**
* 查找所有出库记录
* @return
*/
List<ApplicationOutRecordP> findApplicationOutRecordPAll();
/** /**
* 根据条件查询仓库调度记录同时支持分页查询需要begin和size参数 * 根据条件查询仓库调度记录同时支持分页查询需要begin和size参数
* @param map 查询参数 * @param map 查询参数
@ -137,6 +149,23 @@ public interface DepositoryRecordMapper {
*/ */
Double findDepositoryRecordByDate(Map<String,Object> map); Double findDepositoryRecordByDate(Map<String,Object> map);
/**
* 获取一段时间内的入库额度
*
* @param map
* @return
*/
Double findApplicationInRecordByDate(Map<String,Object> map);
/**
* 获取一段时间内的出库额度
*
* @param map
* @return
*/
Double findApplicationOutRecordByDate(Map<String,Object> map);
/** /**
* 根据条件获取月份中材料的总额 * 根据条件获取月份中材料的总额
* @param map * @param map
@ -144,6 +173,20 @@ public interface DepositoryRecordMapper {
*/ */
Double findMaterialCountByMonth(Map<String,Object> map); Double findMaterialCountByMonth(Map<String,Object> map);
/**
* 根据条件获取月份中入库材料的总额
* @param map
* @return
*/
Double findApplicationInByMonth(Map<String,Object> map);
/**
* 根据条件获取月份中出库材料的总额
* @param map
* @return
*/
Double findApplicationOutByMonth(Map<String,Object> map);
/** /**
* 查询仓库当天流水 * 查询仓库当天流水
* @return * @return
@ -229,4 +272,6 @@ public interface DepositoryRecordMapper {
* @return 受影响的行数 * @return 受影响的行数
*/ */
Integer deleteApplicationOutRecordByIds(List<Integer> list); Integer deleteApplicationOutRecordByIds(List<Integer> list);
} }

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

@ -260,7 +260,7 @@
LIMIT #{begin},#{size} LIMIT #{begin},#{size}
</if> </if>
</select> </select>
<!--根据条件查询入库记录-->
<select id="findApplicationInRecordPByCondition" parameterType="map" resultMap="applicationInRecord"> <select id="findApplicationInRecordPByCondition" parameterType="map" resultMap="applicationInRecord">
select select
<include refid="ApplicationInRecordInfo"/> <include refid="ApplicationInRecordInfo"/>
@ -285,7 +285,7 @@
LIMIT #{begin},#{size} LIMIT #{begin},#{size}
</if> </if>
</select> </select>
<!--根据条件查询出库记录-->
<select id="findApplicationOutRecordPByCondition" parameterType="map" resultMap="applicationOutRecord"> <select id="findApplicationOutRecordPByCondition" parameterType="map" resultMap="applicationOutRecord">
select select
<include refid="ApplicationOutRecordInfo"/> <include refid="ApplicationOutRecordInfo"/>
@ -349,8 +349,19 @@
LIMIT #{begin},#{size} LIMIT #{begin},#{size}
</if> </if>
</select> </select>
<!-- 查询所有入库记录-->
<select id="findApplicationInRecordPAll" resultMap="applicationInRecord">
select
<include refid="ApplicationInRecordInfo"/>
from applicationInRecordInfo
</select>
<!-- 查询所有出库记录-->
<select id="findApplicationOutRecordPAll" resultMap="applicationOutRecord">
select
<include refid="ApplicationOutRecordInfo"/>
from applicationOutRecordInfo
</select>
<!--根据主键查询出库记录-->
<select id="findApplicationOutRecordPById" parameterType="int" resultMap="applicationOutRecord"> <select id="findApplicationOutRecordPById" parameterType="int" resultMap="applicationOutRecord">
select select
<include refid="ApplicationOutRecordInfo"/> <include refid="ApplicationOutRecordInfo"/>
@ -358,7 +369,7 @@
where aorid = #{id} where aorid = #{id}
</select> </select>
<!--根据主键查询入库记录-->
<select id="findApplicationInRecordPById" parameterType="int" resultMap="applicationInRecord"> <select id="findApplicationInRecordPById" parameterType="int" resultMap="applicationInRecord">
select select
<include refid="ApplicationInRecordInfo"/> <include refid="ApplicationInRecordInfo"/>
@ -366,6 +377,7 @@
where airid = #{id} where airid = #{id}
</select> </select>
<!-- 根据条件查询入库记录数-->
<select id="findApplicationInRecordPCountByCondition" parameterType="map" resultType="int"> <select id="findApplicationInRecordPCountByCondition" parameterType="map" resultType="int">
select select
count(*) count(*)
@ -391,6 +403,7 @@
</if> </if>
</select> </select>
<!-- 根据条件查询出库记录数-->
<select id="findApplicationOutRecordPCountByCondition" parameterType="map" resultType="int"> <select id="findApplicationOutRecordPCountByCondition" parameterType="map" resultType="int">
select select
count(*) count(*)
@ -871,7 +884,7 @@
</foreach> </foreach>
</delete> </delete>
<!--获取一段时间内的库存额度-->
<select id="findDepositoryRecordByDate" parameterType="map" resultType="double"> <select id="findDepositoryRecordByDate" parameterType="map" resultType="double">
SELECT SELECT
ifnull(sum(quantity),0) ifnull(sum(quantity),0)
@ -892,6 +905,31 @@
and check_time between #{start} and #{end} and check_time between #{start} and #{end}
</select> </select>
<!--获取一段时间内的入库额度-->
<select id="findApplicationInRecordByDate" parameterType="map" resultType="double">
SELECT
ifnull(sum(quantity),0)
FROM applicationInrecordinfo
where 1 = 1
<if test="depositoryId != null">
and did = #{depositoryId}
</if>
and applicant_time between #{start} and #{end}
</select>
<!--获取一段时间内的出库额度-->
<select id="findApplicationOutRecordByDate" parameterType="map" resultType="double">
SELECT
ifnull(sum(aorquantity),0)
FROM applicationoutrecordinfo
where 1 = 1
<if test="depositoryId != null">
and depositoryId = #{depositoryId}
</if>
and aorstate = #{state}
and depositoryManagerTime between #{start} and #{end}
</select>
<!-- 获取某月某材料总额--> <!-- 获取某月某材料总额-->
<select id="findMaterialCountByMonth" parameterType="map" resultType="DOUBLE"> <select id="findMaterialCountByMonth" parameterType="map" resultType="DOUBLE">
@ -911,7 +949,37 @@
<if test="tname != null and tname != ''"> <if test="tname != null and tname != ''">
and tname = #{tname} and tname = #{tname}
</if> </if>
</select>
<!-- 获取某月某材料入库总额-->
<select id="findApplicationInByMonth" parameterType="map" resultType="DOUBLE">
select ifnull(sum(quantity),0)
from applicationinrecordinfo
where 1 = 1
<if test="depository_id != null and depository_id != ''">
and did = #{depository_id}
</if>
and applicant_time between #{start} and #{end}
<if test="tname != null and tname != ''">
and tname = #{tname}
</if>
</select>
<!-- 获取某月某材料出库总额-->
<select id="findApplicationOutByMonth" parameterType="map" resultType="DOUBLE">
select ifnull(sum(aorquantity),0)
from applicationoutrecordinfo
where 1 = 1
<if test="state != null and state != ''">
and aorstate = #{state}
</if>
<if test="depository_id != null and depository_id != ''">
and depositoryId = #{depository_id}
</if>
and depositoryManagerTime between #{start} and #{end}
<if test="tname != null and tname != ''">
and tname = #{tname}
</if>
</select> </select>
@ -951,4 +1019,6 @@
</foreach> </foreach>
</delete> </delete>
</mapper> </mapper>

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

@ -1,5 +1,6 @@
package com.dreamchaser.depository_manage.mapper; package com.dreamchaser.depository_manage.mapper;
import com.dreamchaser.depository_manage.entity.ExcelInfo;
import com.dreamchaser.depository_manage.entity.Material; import com.dreamchaser.depository_manage.entity.Material;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@ -21,6 +22,13 @@ public interface MaterialMapper {
* @return 受影响的行数 * @return 受影响的行数
*/ */
Integer insertMaterial(Map<String, Object> map); Integer insertMaterial(Map<String, Object> map);
/**
* 增加库存记录
*
* @param list 参数map
* @return 受影响的行数
*/
Integer insertMaterials(List<ExcelInfo> list);
/** /**
* 更新一条库存记录 * 更新一条库存记录

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

@ -171,10 +171,10 @@
) )
</insert> </insert>
<!-- 批量插入数据 <!-- 批量插入数据-->
<insert id="insertMaterials" parameterType="list"> <insert id="insertMaterials" parameterType="list">
INSERT INTO material ( INSERT INTO material (
id, depository_id, mname, quantity, price, type_id id, depository_id, mname, quantity, price, type_id,code,unit,version,texture,amounts,depositoryCode
) VALUES ) VALUES
<foreach collection="list" index="index" item="item" separator=","> <foreach collection="list" index="index" item="item" separator=",">
( (
@ -183,10 +183,16 @@
#{item.mname}, #{item.mname},
#{item.quantity}, #{item.quantity},
#{item.price}, #{item.price},
#{item.typeId} #{item.typeId},
#{item.code},
#{item.unit},
#{item.version},
#{item.texture},
#{item.amounts},
#{item.depositoryCode}
) )
</foreach> </foreach>
</insert>--> </insert>
<!-- 修改数据 --> <!-- 修改数据 -->

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

@ -105,5 +105,9 @@ public interface MaterialTypeMapper {
*/ */
Integer updateStateByParam(Map<String,Object> map); Integer updateStateByParam(Map<String,Object> map);
/**
* 查询所有顶级类型
* @return 所有记录
*/
List<MaterialType> findMaterialTypeNoParent();
} }

7
src/main/java/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.xml

@ -23,6 +23,13 @@
FROM material_type mt FROM material_type mt
where mt.state != 3 and mt.state != 4 where mt.state != 3 and mt.state != 4
</select> </select>
<!-- 查询所有顶级父类 -->
<select id="findMaterialTypeNoParent" resultMap="materialTypeMap">
select
<include refid="allColumns" />
FROM material_type mt
where mt.state != 3 and mt.state != 4 and mt.parentId = 0
</select>
<select id="findMaterialTypeCountByCondition" resultType="int" parameterType="map"> <select id="findMaterialTypeCountByCondition" resultType="int" parameterType="map">
select count(*) select count(*)

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

@ -161,7 +161,16 @@ public interface DepositoryRecordService {
* @return * @return
*/ */
Double CalculateAllPrice(Integer type,String state); Double CalculateAllPrice(Integer type,String state);
/**
* 计算入库材料总额
* @return
*/
Double CalculateAllApplicationInPrice();
/**
* 计算出库材料总额
* @return
*/
Double CalculateAllApplicationOutPrice(String state);
/** /**
* 获取一段时间内的库存额度 * 获取一段时间内的库存额度
@ -173,13 +182,47 @@ public interface DepositoryRecordService {
* @return * @return
*/ */
Double findDepositoryRecordByDate(Long end,Long start,Integer type,Integer depositoryId); Double findDepositoryRecordByDate(Long end,Long start,Integer type,Integer depositoryId);
/**
* 获取一段时间内的库存额度
*
* @param start
* @param end
* @param type
* @param depositoryId
* @return
*/
Double findApplicationRecordByDate(Long end,Long start,Integer type,Integer depositoryId);
/**
* 获取一段时间内的入库额度
*
* @param start
* @param end
* @param depositoryId
* @return
*/
Double findApplicationInRecordByDate(Long end,Long start,Integer depositoryId);
/**
* 获取一段时间内的出库额度
*
* @param start
* @param end
* @param depositoryId
* @return
*/
Double findApplicationOutRecordByDate(Long end,Long start,Integer depositoryId);
/** /**
* 根据条件获取月份中材料的总额 * 根据条件获取月份中材料的总额
* @param map * @param map
* @return * @return
*/ */
Double findMaterialCountByMonth(Map<String,Object> map); Double findMaterialCountByMonth(Map<String,Object> map);
/**
* 根据条件获取月份中材料的总额
* @param map
* @return
*/
Double findMaterialCountByMonth1(Map<String,Object> map);
/** /**
* 查询仓库当天流水 * 查询仓库当天流水
@ -229,4 +272,16 @@ public interface DepositoryRecordService {
* @return 受影响的行数 * @return 受影响的行数
*/ */
Integer deleteApplicationOutRecordByIds(List<Integer> list); Integer deleteApplicationOutRecordByIds(List<Integer> list);
/**
* 计算入库材料总数
* @return
*/
Double CalculateAllApplicationInCount();
/**
* 计算出库材料总数
* @return
*/
Double CalculateAllApplicationOutCount(String state);
} }

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

@ -118,4 +118,19 @@ public interface DepositoryService {
* @return * @return
*/ */
Double getToDayInventoryByDName(String dname); Double getToDayInventoryByDName(String dname);
/**
* 根据父级获取子类
* @param id
* @return
*/
List<Depository> getParentByDepository(Integer id);
/**
* 构造树形选择框
* @return
*/
List<Object> InitTreeMenus();
} }

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

@ -1,5 +1,6 @@
package com.dreamchaser.depository_manage.service; package com.dreamchaser.depository_manage.service;
import com.dreamchaser.depository_manage.entity.ExcelInfo;
import com.dreamchaser.depository_manage.entity.Material; import com.dreamchaser.depository_manage.entity.Material;
import com.dreamchaser.depository_manage.entity.MaterialType; import com.dreamchaser.depository_manage.entity.MaterialType;
import com.dreamchaser.depository_manage.pojo.MaterialP; import com.dreamchaser.depository_manage.pojo.MaterialP;
@ -20,6 +21,14 @@ public interface MaterialService {
*/ */
Integer insertMaterial(Map<String, Object> map); Integer insertMaterial(Map<String, Object> map);
/**
* 增加库存记录
*
* @param list 参数map
* @return 受影响的行数
*/
Integer insertMaterials(List<ExcelInfo> list);
/** /**
* 更新一条库存记录 * 更新一条库存记录
* *

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

@ -36,7 +36,11 @@ public interface MaterialTypeService {
* @return 所有记录 * @return 所有记录
*/ */
List<MaterialType> findMaterialTypeAll(); List<MaterialType> findMaterialTypeAll();
/**
* 查询所有顶级类型
* @return 所有记录
*/
List<MaterialType> findMaterialTypeNoParent();
/** /**
* 根据主键id完全删除记录 * 根据主键id完全删除记录
@ -86,4 +90,10 @@ public interface MaterialTypeService {
* @return * @return
*/ */
Integer updateStateByParam(Map<String,Object> map); Integer updateStateByParam(Map<String,Object> map);
/**
* 构造树形选择框
* @return
*/
List<Object> InitTreeMenus();
} }

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

@ -84,6 +84,11 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return depositoryRecordMapper.insertApplicationInRecord(map); return depositoryRecordMapper.insertApplicationInRecord(map);
} }
/**
* 插入一条出库记录
* @param map
* @return
*/
@Override @Override
public Integer insertApplicationOutRecord(Map<String, Object> map) { public Integer insertApplicationOutRecord(Map<String, Object> map) {
Double quantity = Double.parseDouble((String) map.get("quantity")); Double quantity = Double.parseDouble((String) map.get("quantity"));
@ -111,6 +116,44 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return depositoryRecordMapper.deleteApplicationOutRecordByIds(list); return depositoryRecordMapper.deleteApplicationOutRecordByIds(list);
} }
/**
* 计算购入材料总数
* @return
*/
@Override
public Double CalculateAllApplicationInCount() {
List<ApplicationInRecordP> applicationInRecordPAll = depositoryRecordMapper.findApplicationInRecordPAll();
Double sum = 0.0;
for (int i = 0; i < applicationInRecordPAll.size(); i++) {
sum += (double)applicationInRecordPAll.get(i).getQuantity();
}
return sum;
}
/**
* 计算出库材料总数
* @param state
* @return
*/
@Override
public Double CalculateAllApplicationOutCount(String state) {
List<ApplicationOutRecordP> applicationOutRecordPAll = depositoryRecordMapper.findApplicationOutRecordPAll();
Double sum = 0.0;
if (state.isEmpty()) {
for (int i = 0; i < applicationOutRecordPAll.size(); i++) {
sum += (double) applicationOutRecordPAll.get(i).getQuantity();
}
} else {
for (int i = 0; i < applicationOutRecordPAll.size(); i++) {
if ( state.equals(applicationOutRecordPAll.get(i).getState())) {
sum += (double)applicationOutRecordPAll.get(i).getQuantity();
}
}
}
return sum;
}
/** /**
* 转移申请 * 转移申请
* *
@ -213,9 +256,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
param.put("mname",material.getMname()); param.put("mname",material.getMname());
param.put("depositoryId",transferRecor.getToId()); param.put("depositoryId",transferRecor.getToId());
List<Material> materiallist = materialMapper.findMaterialByCondition(param); List<Material> materiallist = materialMapper.findMaterialByCondition(param);
map.put("mid",materiallist.get(0).getId());
if(materiallist.size() > 0){ if(materiallist.size() > 0){
applicationIn(map); applicationIn(map);
map.put("mid",materiallist.get(0).getId());
}else{ }else{
Map<String,Object> insert = new HashMap<>(); Map<String,Object> insert = new HashMap<>();
Material materialById = materialMapper.findMaterialById(mid); Material materialById = materialMapper.findMaterialById(mid);
@ -538,10 +581,10 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
} }
} }
} }
return sum; return sum;
} }
/** /**
* 计算材料总额 * 计算材料总额
* *
@ -567,6 +610,47 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return sum; return sum;
} }
/**
* 计算入库材料总额
* @return
*/
@Override
public Double CalculateAllApplicationInPrice() {
List<ApplicationInRecordP> applicationInRecordPAll = depositoryRecordMapper.findApplicationInRecordPAll();
Double sum = 0.0;
for (int i = 0; i < applicationInRecordPAll.size(); i++) {
int price = applicationInRecordPAll.get(i).getPrice();
sum += (double) price/100;
}
return sum;
}
/**
* 计算出库材料总额
* @param state
* @return
*/
@Override
public Double CalculateAllApplicationOutPrice(String state) {
List<ApplicationOutRecordP> applicationOutRecordPAll = depositoryRecordMapper.findApplicationOutRecordPAll();
Double sum = 0.0;
if (state.isEmpty()) {
for (int i = 0; i < applicationOutRecordPAll.size(); i++) {
Integer price = applicationOutRecordPAll.get(i).getPrice();
sum += (double)( price/ 100);
}
} else {
for (int i = 0; i < applicationOutRecordPAll.size(); i++) {
if ( state.equals(applicationOutRecordPAll.get(i).getState())) {
Integer price = applicationOutRecordPAll.get(i).getPrice();
sum += (double)( price/ 100);
}
}
}
return sum;
}
/** /**
* 获取一段时间内的库存额度 * 获取一段时间内的库存额度
* *
@ -591,6 +675,65 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return depositoryRecordMapper.findDepositoryRecordByDate(map); return depositoryRecordMapper.findDepositoryRecordByDate(map);
} }
/**
* 获取一段时间内的库存额度
*
* @param start
* @param end
* @param type
* @param depositoryId
* @return
*/
@Override
public Double findApplicationRecordByDate(Long end, Long start, Integer type, Integer depositoryId) {
Map<String, Object> map = new HashMap<>();
map.put("start", start);
map.put("end", end);
map.put("depositoryId", depositoryId);
if (type == 1) {
return depositoryRecordMapper.findApplicationInRecordByDate(map);
} else{
map.put("state", "已出库");
return depositoryRecordMapper.findApplicationOutRecordByDate(map);
}
}
/**
* 获取一段时间内的入库额度
*
* @param start
* @param end
* @param depositoryId
* @return
*/
@Override
public Double findApplicationInRecordByDate(Long end, Long start, Integer depositoryId) {
Map<String, Object> map = new HashMap<>();
map.put("start", start);
map.put("end", end);
map.put("depositoryId", depositoryId);
return depositoryRecordMapper.findApplicationInRecordByDate(map);
}
/**
* 获取一段时间内的出库额度
*
* @param start
* @param end
* @param depositoryId
* @return
*/
@Override
public Double findApplicationOutRecordByDate(Long end, Long start, Integer depositoryId) {
Map<String, Object> map = new HashMap<>();
map.put("start", start);
map.put("end", end);
map.put("depositoryId", depositoryId);
map.put("state", "已出库");
return depositoryRecordMapper.findApplicationOutRecordByDate(map);
}
/** /**
* 根据条件获取月份中材料的总额 * 根据条件获取月份中材料的总额
* *
@ -602,6 +745,24 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return depositoryRecordMapper.findMaterialCountByMonth(map); return depositoryRecordMapper.findMaterialCountByMonth(map);
} }
/**
* 根据条件获取月份中材料的总额
*
* @param map
* @return
*/
@Override
public Double findMaterialCountByMonth1(Map<String, Object> map) {
Integer type = ObjectFormatUtil.toInteger(map.get("type"));
if(type == 1){
// 如果入库
return depositoryRecordMapper.findApplicationInByMonth(map);
}else{
// 如果出库
return depositoryRecordMapper.findApplicationOutByMonth(map);
}
}
/** /**
* 查询仓库当天流水 * 查询仓库当天流水
* *

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

@ -1,11 +1,13 @@
package com.dreamchaser.depository_manage.service.impl; package com.dreamchaser.depository_manage.service.impl;
import com.dreamchaser.depository_manage.entity.Depository; import com.dreamchaser.depository_manage.entity.Depository;
import com.dreamchaser.depository_manage.entity.MaterialType;
import com.dreamchaser.depository_manage.mapper.DepositoryMapper; import com.dreamchaser.depository_manage.mapper.DepositoryMapper;
import com.dreamchaser.depository_manage.service.DepositoryService; import com.dreamchaser.depository_manage.service.DepositoryService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -156,6 +158,20 @@ public class DepositoryServiceImpl implements DepositoryService {
return depositoryMapper.getToDayInventoryByDName(dname); return depositoryMapper.getToDayInventoryByDName(dname);
} }
/**
* 根据父级获取子类
* @param id
* @return
*/
@Override
public List<Depository> getParentByDepository(Integer id) {
return depositoryMapper.getParentByDepository(id);
}
/** /**
* 根据多个主键id获取对应数据 * 根据多个主键id获取对应数据
* @param ids * @param ids
@ -166,5 +182,64 @@ public class DepositoryServiceImpl implements DepositoryService {
return depositoryMapper.selectDepositoryRecordByIds(ids); return depositoryMapper.selectDepositoryRecordByIds(ids);
} }
/**
* 构造树形选择框
* @return
*/
@Override
public List<Object> InitTreeMenus() {
Map<String,Object> param = new HashMap<>();
param.put("parentId",0);
List<Depository> depositories = depositoryMapper.findDepositoryRecordPByCondition(param);
List<Object> list = new ArrayList<>();
for (int i = 0; i < depositories.size(); i++) {
Depository d = depositories.get(i);
List<Object> childForMaterialTypeByParent = findChildForDepositoryByParent(d.getId());
Map<String, Object> stringObjectMap = InitTreeMenus2(d,childForMaterialTypeByParent);
list.add(stringObjectMap);
}
return list;
}
//判断是否有子类
public boolean isChildForDepository(Integer parentId){
boolean flag = false;
List<Depository> parentByDepository = depositoryMapper.getParentByDepository(parentId);
if(parentByDepository.size() > 0 ){
flag = true;
}
return flag;
}
// 根据id获取子类
public List<Object> findChildForDepositoryByParent(Integer id){
Map<String,Object> param = new HashMap<>();
List<Object> result = new ArrayList<>();
param.put("parentId",id);
// 获取当前父类的子类
List<Depository> parentByDepository = depositoryMapper.getParentByDepository(id);
if(parentByDepository.size() > 0){
for (int i = 0; i < parentByDepository.size(); i++) {
Depository d = parentByDepository.get(i);
List<Object> childForMaterialTypeByParent = findChildForDepositoryByParent(d.getId());
result.add(InitTreeMenus2(d,childForMaterialTypeByParent));
}
return result;
}else{
return null;
}
}
// 构造树形组件数据模板
public Map<String,Object> InitTreeMenus2(Depository d,List<Object> children){
if(d != null) {
Map<String, Object> map = new HashMap<>();
map.put("title", d.getDname());
map.put("id", d.getId());
map.put("children",children);
return map;
}
else{
return null;
}
}
} }

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

@ -64,7 +64,7 @@ public class ExcelServiceImpl implements ExcelService {
taskCenterUtil.submitTask(() -> { taskCenterUtil.submitTask(() -> {
List<Object> success = new ArrayList<>(); List<Object> success = new ArrayList<>();
Map<String,Object> returnResult = new HashMap<>(); Map<String,Object> returnResult = new HashMap<>();
log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVos));
for (int i = 0; i < excelVos.size(); i++) { for (int i = 0; i < excelVos.size(); i++) {
Map<String,Object> param = new HashMap<>(); Map<String,Object> param = new HashMap<>();
param.put("mname",excelVos.get(i).getMname()); param.put("mname",excelVos.get(i).getMname());
@ -82,6 +82,8 @@ public class ExcelServiceImpl implements ExcelService {
materialService.insertMaterial(param); materialService.insertMaterial(param);
success.add(excelVos.get(i)); success.add(excelVos.get(i));
} }
log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVos));
returnResult.put("success",success); returnResult.put("success",success);
returnResult.put("errMsg",errMsg); returnResult.put("errMsg",errMsg);
return ResultVoUtil.returnResultVo(200,returnResult,"结果"); return ResultVoUtil.returnResultVo(200,returnResult,"结果");

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

@ -1,9 +1,7 @@
package com.dreamchaser.depository_manage.service.impl; package com.dreamchaser.depository_manage.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.entity.DepositoryRecord; import com.dreamchaser.depository_manage.entity.*;
import com.dreamchaser.depository_manage.entity.Material;
import com.dreamchaser.depository_manage.entity.UserByPort;
import com.dreamchaser.depository_manage.mapper.DepositoryMapper; import com.dreamchaser.depository_manage.mapper.DepositoryMapper;
import com.dreamchaser.depository_manage.mapper.MaterialMapper; import com.dreamchaser.depository_manage.mapper.MaterialMapper;
import com.dreamchaser.depository_manage.mapper.MaterialTypeMapper; import com.dreamchaser.depository_manage.mapper.MaterialTypeMapper;
@ -47,10 +45,29 @@ public class MaterialServiceImpl implements MaterialService {
public Integer insertMaterial(Map<String, Object> map) { public Integer insertMaterial(Map<String, Object> map) {
int quantity = (int) Math.round(Double.parseDouble(map.get("quantity").toString())); int quantity = (int) Math.round(Double.parseDouble(map.get("quantity").toString()));
int price = (int) (Double.parseDouble( map.get("price").toString()) * 100); int price = (int) (Double.parseDouble( map.get("price").toString()) * 100);
String tname = (String) map.get("tname");
String dname = (String) map.get("dname");
Map<String,Object> param = new HashMap<>();
param.put("tname",tname);
param.put("dname",dname);
List<Depository> d = depositoryMapper.findDepositoryRecordPByCondition(param);
List<MaterialType> mt = materialTypeMapper.findMaterialTypeByCondition(param);
map.put("materialTypeId",mt.get(0).getId());
map.put("depositoryId",d.get(0).getId());
map.put("price",price); map.put("price",price);
map.put("amounts",quantity * price); map.put("amounts",quantity * price);
return materialMapper.insertMaterial(map); return materialMapper.insertMaterial(map);
} }
/**
* 增加一条库存记录
*
* @param list 参数map
* @return 受影响的行数
*/
@Override
public Integer insertMaterials(List<ExcelInfo> list) {
return materialMapper.insertMaterials(list);
}
/** /**
* 更新一条库存记录 * 更新一条库存记录
@ -202,10 +219,9 @@ public class MaterialServiceImpl implements MaterialService {
@Override @Override
public Double findAllPriceNoDelete() { public Double findAllPriceNoDelete() {
Double sum = 0.0; Double sum = 0.0;
// List<Material> materialAll = materialMapper.findMaterialAll();
List<Material> materialAll = materialMapper.findMaterialByCondition(new HashMap<String,Object>()); List<Material> materialAll = materialMapper.findMaterialByCondition(new HashMap<String,Object>());
for (int i = 0; i < materialAll.size(); i++) { for (int i = 0; i < materialAll.size(); i++) {
sum += materialAll.get(i).getPrice() / 100; sum += materialAll.get(i).getAmounts() / 100;
} }
return sum; return sum;
} }

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

@ -6,6 +6,8 @@ import com.dreamchaser.depository_manage.service.MaterialTypeService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -59,6 +61,16 @@ public class MaterialTypeServiceImpl implements MaterialTypeService {
return materialTypeMapper.findMaterialTypeAll(); return materialTypeMapper.findMaterialTypeAll();
} }
/**
* 查询所有顶级类型
* @return
*/
@Override
public List<MaterialType> findMaterialTypeNoParent() {
return materialTypeMapper.findMaterialTypeNoParent();
}
/** /**
* 根据主键id完全删除记录 * 根据主键id完全删除记录
* @param id * @param id
@ -129,5 +141,67 @@ public class MaterialTypeServiceImpl implements MaterialTypeService {
return materialTypeMapper.updateStateByParam(map); return materialTypeMapper.updateStateByParam(map);
} }
/**
* 构造树形选择框
* @return
*/
@Override
public List<Object> InitTreeMenus() {
List<MaterialType> materialTypeNoParent = materialTypeMapper.findMaterialTypeNoParent();
List<Object> list = new ArrayList<>();
for (int i = 0; i < materialTypeNoParent.size(); i++) {
MaterialType mt = materialTypeNoParent.get(i);
List<Object> childForMaterialTypeByParent = findChildForMaterialTypeByParent(mt.getId());
Map<String, Object> stringObjectMap = InitTreeMenus(mt,childForMaterialTypeByParent);
list.add(stringObjectMap);
}
return list;
}
// 构造树形组件数据模板
public Map<String,Object> InitTreeMenus(MaterialType mt,List<Object> children){
if(mt != null) {
Map<String, Object> map = new HashMap<>();
map.put("title", mt.getTname());
map.put("id", mt.getId());
map.put("children",children);
return map;
}
else{
return null;
}
}
// 判断是否有子类
public boolean isChildForMaterialType(Integer id){
boolean flag = false;
Map<String,Object> param = new HashMap<>();
param.put("parentId",id);
Integer count = materialTypeMapper.findMaterialTypeCountByCondition(param);
if(count > 0){
flag = true;
}
return flag;
}
// 根据id获取子类
public List<Object> findChildForMaterialTypeByParent(Integer id){
Map<String,Object> param = new HashMap<>();
List<Object> result = new ArrayList<>();
Map<String,Object> children = new HashMap<>();
param.put("parentId",id);
// 获取当前父类的子类
List<MaterialType> materialTypeByCondition = materialTypeMapper.findMaterialTypeByCondition(param);
if(materialTypeByCondition.size() > 0){
for (int i = 0; i < materialTypeByCondition.size(); i++) {
MaterialType mt = materialTypeByCondition.get(i);
List<Object> childForMaterialTypeByParent = findChildForMaterialTypeByParent(mt.getId());
result.add(InitTreeMenus(mt,childForMaterialTypeByParent));
}
return result;
}else{
return null;
}
}
} }

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

@ -100,4 +100,19 @@ public class DateUtil {
String format = simpleDateFormat.format(instance.getTime()); String format = simpleDateFormat.format(instance.getTime());
return format; return format;
} }
// 获取本周周一
public static String getMondayOnThisWeek(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
// 设置周一为第一天
cal.setFirstDayOfWeek(Calendar.MONDAY);
// 日期减去7天
cal.add(Calendar.DATE, -7);
// 时间设置到周日,此时时间为周日的日期
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
cal.add(Calendar.DATE,1);
String dataStr = sdf.format(cal.getTime());
return dataStr + " 00:00:00";
}
} }

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

@ -1,5 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html xmlns:th="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>首页三</title> <title>首页三</title>

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

@ -1,5 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html xmlns:th="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>首页三</title> <title>首页三</title>
@ -153,7 +153,7 @@
var optionRecords = { var optionRecords = {
title: { title: {
text: '出库仓库-报表图' text: '仓库总量-报表图'
}, },
tooltip: { tooltip: {
trigger: 'axis', trigger: 'axis',

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

@ -411,6 +411,7 @@
} }
}, },
success:function (result){ success:function (result){
console.log(result)
echartsRecords.setOption(optionRecords); echartsRecords.setOption(optionRecords);
// 折线图 // 折线图
var optionRecordsSeries=[]; var optionRecordsSeries=[];

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

@ -1,5 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml"> <html lang="en" xmlns:th="http://www.thymeleaf.org">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>layui</title> <title>layui</title>
@ -44,19 +44,23 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">材料所处仓库:</label> <label class="layui-form-label">材料所处仓库:</label>
<div class="layui-input-block"> <div class="layui-input-block">
<select name="depositoryId" lay-verify="required" lay-filter="depositoryId"> <!--<select name="depositoryId" lay-verify="required" lay-filter="depositoryId">
<option value="" selected>请选择仓库</option> <option value="" selected>请选择仓库</option>
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}">外芯仓库</option> <option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}">外芯仓库</option>
</select> </select>-->
<input type="text" placeholder="请选择仓库" name="dname" class="layui-input" id="openSonByDepository" readonly
lay-verify="required"/>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">材料类型:</label> <label class="layui-form-label">材料类型:</label>
<div class="layui-input-block"> <div class="layui-input-block">
<select name="materialTypeId" lay-verify="required"> <!--<select name="materialTypeId" lay-verify="required">
<option th:each="materialType,iterStar:${materialTypes}" th:value="${materialType?.getId()}" th:text="${materialType?.getTname()}" selected>芯片类</option> <option th:each="materialType,iterStar:${materialTypes}" th:value="${materialType?.getId()}" th:text="${materialType?.getTname()}" selected>芯片类</option>
</select> </select>-->
<input type="text" placeholder="请选择材料类型" name="tname" class="layui-input" id="openSonByMateralType" readonly
lay-verify="required"/>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
@ -111,15 +115,44 @@
</div> </div>
</div> </div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script> <script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script> <script>
var data; var data;
layui.use(['form', 'layer','dropdown'], function () { layui.use(['form', 'layer','dropdown','tree'], function () {
var $ = layui.jquery, var $ = layui.jquery,
form = layui.form, form = layui.form,
dropdown = layui.dropdown, dropdown = layui.dropdown,
tree = layui.tree,
layer = layui.layer; layer = layui.layer;
$('#openSonByMateralType').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectType',
});
});
$('#openSonByDepository').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectDepository',
});
});
form.on('submit(formStep)', function (data) { form.on('submit(formStep)', function (data) {
$.ajax({ $.ajax({
url: "/material/material_add", url: "/material/material_add",
@ -140,7 +173,7 @@
icon: 6,//成功的表情 icon: 6,//成功的表情
time: 1000 //1秒关闭(如果不配置,默认是3秒) time: 1000 //1秒关闭(如果不配置,默认是3秒)
}); });
window.location="/material_add"
} }
}, },
complete: function () { complete: function () {

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

@ -0,0 +1,47 @@
<!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 id="test2" class="demo-tree"></div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
var data;
layui.use(['form', 'layer','dropdown','tree'], function () {
var $ = layui.jquery,
tree = layui.tree,
test = tree.render({
elem: '#test2'
,data: []
,onlyIconControl: true //是否仅允许节点左侧图标控制展开收缩
,click: function(obj){
$("#openSonByDepository",window.parent.document).val(obj.data.title)
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
$.ajax({
url: "/repository/treeMenus",
type: 'get',
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var data2 = d.data
console.log(data2)
test.reload({
data:data2
});
}
});
})
</script>
</body>
</html>

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

@ -0,0 +1,47 @@
<!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 id="test2" class="demo-tree"></div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
var data;
layui.use(['form', 'layer','dropdown','tree'], function () {
var $ = layui.jquery,
tree = layui.tree,
test = tree.render({
elem: '#test2'
,data: []
,onlyIconControl: true //是否仅允许节点左侧图标控制展开收缩
,click: function(obj){
$("#openSonByMateralType",window.parent.document).val(obj.data.title)
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
$.ajax({
url: "/materialType/treeMenus",
type: 'get',
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var data2 = d.data
console.log(data2)
test.reload({
data:data2
});
}
});
})
</script>
</body>
</html>

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

@ -79,10 +79,10 @@
<div class="panel-body"> <div class="panel-body">
<div class="panel-title"> <div class="panel-title">
<span class="label pull-right layui-bg-orange">实时</span> <span class="label pull-right layui-bg-orange">实时</span>
<h5>记录</h5> <h5>物品</h5>
</div> </div>
<div class="panel-content"> <div class="panel-content">
<h1 class="no-margins">7</h1> <h1 class="no-margins" th:text="${allMaterial}"></h1>
<small>当前分类总记录数</small> <small>当前分类总记录数</small>
</div> </div>
</div> </div>

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

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

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

@ -141,6 +141,13 @@
AND d.state != 3 AND d.state != 3
</select> </select>
<select id="getParentByDepository" resultMap="depositoryMap" parameterType="int">
SELECT
<include refid="allColumns" />
FROM depository d WHERE d.parentId = #{parentId}
</select>
<!-- 根据主键查询数据--> <!-- 根据主键查询数据-->
<select id="findDepositoryRecordById" resultMap="depositoryMap" parameterType="Integer"> <select id="findDepositoryRecordById" resultMap="depositoryMap" parameterType="Integer">

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

@ -260,7 +260,7 @@
LIMIT #{begin},#{size} LIMIT #{begin},#{size}
</if> </if>
</select> </select>
<!--根据条件查询入库记录-->
<select id="findApplicationInRecordPByCondition" parameterType="map" resultMap="applicationInRecord"> <select id="findApplicationInRecordPByCondition" parameterType="map" resultMap="applicationInRecord">
select select
<include refid="ApplicationInRecordInfo"/> <include refid="ApplicationInRecordInfo"/>
@ -285,7 +285,7 @@
LIMIT #{begin},#{size} LIMIT #{begin},#{size}
</if> </if>
</select> </select>
<!--根据条件查询出库记录-->
<select id="findApplicationOutRecordPByCondition" parameterType="map" resultMap="applicationOutRecord"> <select id="findApplicationOutRecordPByCondition" parameterType="map" resultMap="applicationOutRecord">
select select
<include refid="ApplicationOutRecordInfo"/> <include refid="ApplicationOutRecordInfo"/>
@ -349,8 +349,19 @@
LIMIT #{begin},#{size} LIMIT #{begin},#{size}
</if> </if>
</select> </select>
<!-- 查询所有入库记录-->
<select id="findApplicationInRecordPAll" resultMap="applicationInRecord">
select
<include refid="ApplicationInRecordInfo"/>
from applicationInRecordInfo
</select>
<!-- 查询所有出库记录-->
<select id="findApplicationOutRecordPAll" resultMap="applicationOutRecord">
select
<include refid="ApplicationOutRecordInfo"/>
from applicationOutRecordInfo
</select>
<!--根据主键查询出库记录-->
<select id="findApplicationOutRecordPById" parameterType="int" resultMap="applicationOutRecord"> <select id="findApplicationOutRecordPById" parameterType="int" resultMap="applicationOutRecord">
select select
<include refid="ApplicationOutRecordInfo"/> <include refid="ApplicationOutRecordInfo"/>
@ -358,7 +369,7 @@
where aorid = #{id} where aorid = #{id}
</select> </select>
<!--根据主键查询入库记录-->
<select id="findApplicationInRecordPById" parameterType="int" resultMap="applicationInRecord"> <select id="findApplicationInRecordPById" parameterType="int" resultMap="applicationInRecord">
select select
<include refid="ApplicationInRecordInfo"/> <include refid="ApplicationInRecordInfo"/>
@ -366,6 +377,7 @@
where airid = #{id} where airid = #{id}
</select> </select>
<!-- 根据条件查询入库记录数-->
<select id="findApplicationInRecordPCountByCondition" parameterType="map" resultType="int"> <select id="findApplicationInRecordPCountByCondition" parameterType="map" resultType="int">
select select
count(*) count(*)
@ -391,6 +403,7 @@
</if> </if>
</select> </select>
<!-- 根据条件查询出库记录数-->
<select id="findApplicationOutRecordPCountByCondition" parameterType="map" resultType="int"> <select id="findApplicationOutRecordPCountByCondition" parameterType="map" resultType="int">
select select
count(*) count(*)
@ -871,7 +884,7 @@
</foreach> </foreach>
</delete> </delete>
<!--获取一段时间内的库存额度-->
<select id="findDepositoryRecordByDate" parameterType="map" resultType="double"> <select id="findDepositoryRecordByDate" parameterType="map" resultType="double">
SELECT SELECT
ifnull(sum(quantity),0) ifnull(sum(quantity),0)
@ -892,6 +905,31 @@
and check_time between #{start} and #{end} and check_time between #{start} and #{end}
</select> </select>
<!--获取一段时间内的入库额度-->
<select id="findApplicationInRecordByDate" parameterType="map" resultType="double">
SELECT
ifnull(sum(quantity),0)
FROM applicationInrecordinfo
where 1 = 1
<if test="depositoryId != null">
and did = #{depositoryId}
</if>
and applicant_time between #{start} and #{end}
</select>
<!--获取一段时间内的出库额度-->
<select id="findApplicationOutRecordByDate" parameterType="map" resultType="double">
SELECT
ifnull(sum(aorquantity),0)
FROM applicationoutrecordinfo
where 1 = 1
<if test="depositoryId != null">
and depositoryId = #{depositoryId}
</if>
and aorstate = #{state}
and depositoryManagerTime between #{start} and #{end}
</select>
<!-- 获取某月某材料总额--> <!-- 获取某月某材料总额-->
<select id="findMaterialCountByMonth" parameterType="map" resultType="DOUBLE"> <select id="findMaterialCountByMonth" parameterType="map" resultType="DOUBLE">
@ -911,7 +949,37 @@
<if test="tname != null and tname != ''"> <if test="tname != null and tname != ''">
and tname = #{tname} and tname = #{tname}
</if> </if>
</select>
<!-- 获取某月某材料入库总额-->
<select id="findApplicationInByMonth" parameterType="map" resultType="DOUBLE">
select ifnull(sum(quantity),0)
from applicationinrecordinfo
where 1 = 1
<if test="depository_id != null and depository_id != ''">
and did = #{depository_id}
</if>
and applicant_time between #{start} and #{end}
<if test="tname != null and tname != ''">
and tname = #{tname}
</if>
</select>
<!-- 获取某月某材料出库总额-->
<select id="findApplicationOutByMonth" parameterType="map" resultType="DOUBLE">
select ifnull(sum(aorquantity),0)
from applicationoutrecordinfo
where 1 = 1
<if test="state != null and state != ''">
and aorstate = #{state}
</if>
<if test="depository_id != null and depository_id != ''">
and depositoryId = #{depository_id}
</if>
and depositoryManagerTime between #{start} and #{end}
<if test="tname != null and tname != ''">
and tname = #{tname}
</if>
</select> </select>
@ -951,4 +1019,6 @@
</foreach> </foreach>
</delete> </delete>
</mapper> </mapper>

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

@ -171,10 +171,10 @@
) )
</insert> </insert>
<!-- 批量插入数据 <!-- 批量插入数据-->
<insert id="insertMaterials" parameterType="list"> <insert id="insertMaterials" parameterType="list">
INSERT INTO material ( INSERT INTO material (
id, depository_id, mname, quantity, price, type_id id, depository_id, mname, quantity, price, type_id,code,unit,version,texture,amounts,depositoryCode
) VALUES ) VALUES
<foreach collection="list" index="index" item="item" separator=","> <foreach collection="list" index="index" item="item" separator=",">
( (
@ -183,10 +183,16 @@
#{item.mname}, #{item.mname},
#{item.quantity}, #{item.quantity},
#{item.price}, #{item.price},
#{item.typeId} #{item.typeId},
#{item.code},
#{item.unit},
#{item.version},
#{item.texture},
#{item.amounts},
#{item.depositoryCode}
) )
</foreach> </foreach>
</insert>--> </insert>
<!-- 修改数据 --> <!-- 修改数据 -->

7
target/classes/com/dreamchaser/depository_manage/mapper/MaterialTypeMapper.xml

@ -23,6 +23,13 @@
FROM material_type mt FROM material_type mt
where mt.state != 3 and mt.state != 4 where mt.state != 3 and mt.state != 4
</select> </select>
<!-- 查询所有顶级父类 -->
<select id="findMaterialTypeNoParent" resultMap="materialTypeMap">
select
<include refid="allColumns" />
FROM material_type mt
where mt.state != 3 and mt.state != 4 and mt.parentId = 0
</select>
<select id="findMaterialTypeCountByCondition" resultType="int" parameterType="map"> <select id="findMaterialTypeCountByCondition" resultType="int" parameterType="map">
select count(*) select count(*)

2
target/classes/templates/pages/chart/chart-in_back.html

@ -1,5 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html xmlns:th="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>首页三</title> <title>首页三</title>

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

@ -1,5 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html xmlns:th="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>首页三</title> <title>首页三</title>
@ -153,7 +153,7 @@
var optionRecords = { var optionRecords = {
title: { title: {
text: '出库仓库-报表图' text: '仓库总量-报表图'
}, },
tooltip: { tooltip: {
trigger: 'axis', trigger: 'axis',

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

@ -411,6 +411,7 @@
} }
}, },
success:function (result){ success:function (result){
console.log(result)
echartsRecords.setOption(optionRecords); echartsRecords.setOption(optionRecords);
// 折线图 // 折线图
var optionRecordsSeries=[]; var optionRecordsSeries=[];

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

@ -1,5 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml"> <html lang="en" xmlns:th="http://www.thymeleaf.org">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>layui</title> <title>layui</title>
@ -44,19 +44,23 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">材料所处仓库:</label> <label class="layui-form-label">材料所处仓库:</label>
<div class="layui-input-block"> <div class="layui-input-block">
<select name="depositoryId" lay-verify="required" lay-filter="depositoryId"> <!--<select name="depositoryId" lay-verify="required" lay-filter="depositoryId">
<option value="" selected>请选择仓库</option> <option value="" selected>请选择仓库</option>
<option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}">外芯仓库</option> <option th:each="depository,iterStar:${depositories}" th:value="${depository?.getId()}" th:text="${depository?.getDname()}">外芯仓库</option>
</select> </select>-->
<input type="text" placeholder="请选择仓库" name="dname" class="layui-input" id="openSonByDepository" readonly
lay-verify="required"/>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">材料类型:</label> <label class="layui-form-label">材料类型:</label>
<div class="layui-input-block"> <div class="layui-input-block">
<select name="materialTypeId" lay-verify="required"> <!--<select name="materialTypeId" lay-verify="required">
<option th:each="materialType,iterStar:${materialTypes}" th:value="${materialType?.getId()}" th:text="${materialType?.getTname()}" selected>芯片类</option> <option th:each="materialType,iterStar:${materialTypes}" th:value="${materialType?.getId()}" th:text="${materialType?.getTname()}" selected>芯片类</option>
</select> </select>-->
<input type="text" placeholder="请选择材料类型" name="tname" class="layui-input" id="openSonByMateralType" readonly
lay-verify="required"/>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
@ -111,15 +115,44 @@
</div> </div>
</div> </div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script> <script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script> <script>
var data; var data;
layui.use(['form', 'layer','dropdown'], function () { layui.use(['form', 'layer','dropdown','tree'], function () {
var $ = layui.jquery, var $ = layui.jquery,
form = layui.form, form = layui.form,
dropdown = layui.dropdown, dropdown = layui.dropdown,
tree = layui.tree,
layer = layui.layer; layer = layui.layer;
$('#openSonByMateralType').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectType',
});
});
$('#openSonByDepository').on('click', function(){
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area : ['800px' , '500px'],
content: '/selectDepository',
});
});
form.on('submit(formStep)', function (data) { form.on('submit(formStep)', function (data) {
$.ajax({ $.ajax({
url: "/material/material_add", url: "/material/material_add",
@ -140,7 +173,7 @@
icon: 6,//成功的表情 icon: 6,//成功的表情
time: 1000 //1秒关闭(如果不配置,默认是3秒) time: 1000 //1秒关闭(如果不配置,默认是3秒)
}); });
window.location="/material_add"
} }
}, },
complete: function () { complete: function () {

47
target/classes/templates/pages/material/selectDepository.html

@ -0,0 +1,47 @@
<!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 id="test2" class="demo-tree"></div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
var data;
layui.use(['form', 'layer','dropdown','tree'], function () {
var $ = layui.jquery,
tree = layui.tree,
test = tree.render({
elem: '#test2'
,data: []
,onlyIconControl: true //是否仅允许节点左侧图标控制展开收缩
,click: function(obj){
$("#openSonByDepository",window.parent.document).val(obj.data.title)
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
$.ajax({
url: "/repository/treeMenus",
type: 'get',
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var data2 = d.data
console.log(data2)
test.reload({
data:data2
});
}
});
})
</script>
</body>
</html>

47
target/classes/templates/pages/material/selectType.html

@ -0,0 +1,47 @@
<!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 id="test2" class="demo-tree"></div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
var data;
layui.use(['form', 'layer','dropdown','tree'], function () {
var $ = layui.jquery,
tree = layui.tree,
test = tree.render({
elem: '#test2'
,data: []
,onlyIconControl: true //是否仅允许节点左侧图标控制展开收缩
,click: function(obj){
$("#openSonByMateralType",window.parent.document).val(obj.data.title)
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
$.ajax({
url: "/materialType/treeMenus",
type: 'get',
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var data2 = d.data
console.log(data2)
test.reload({
data:data2
});
}
});
})
</script>
</body>
</html>

4
target/classes/templates/pages/other/welcome.html

@ -79,10 +79,10 @@
<div class="panel-body"> <div class="panel-body">
<div class="panel-title"> <div class="panel-title">
<span class="label pull-right layui-bg-orange">实时</span> <span class="label pull-right layui-bg-orange">实时</span>
<h5>记录</h5> <h5>物品</h5>
</div> </div>
<div class="panel-content"> <div class="panel-content">
<h1 class="no-margins">7</h1> <h1 class="no-margins" th:text="${allMaterial}"></h1>
<small>当前分类总记录数</small> <small>当前分类总记录数</small>
</div> </div>
</div> </div>

Loading…
Cancel
Save