Browse Source

优化可视化页面

lwx_dev
erdanergou 3 years ago
parent
commit
82c3b41ea0
  1. 391
      src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java
  2. 3
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.java
  3. 13
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryMapper.xml
  4. 4
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.java
  5. 25
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml
  6. 3
      src/main/java/com/dreamchaser/depository_manage/mapper/RoleMapper.xml
  7. 12
      src/main/java/com/dreamchaser/depository_manage/pojo/InventoryByDname.java
  8. 32
      src/main/java/com/dreamchaser/depository_manage/pojo/RestResponse.java
  9. 5
      src/main/java/com/dreamchaser/depository_manage/pojo/RoleAndDepository.java
  10. 4
      src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java
  11. 8
      src/main/java/com/dreamchaser/depository_manage/service/DepositoryService.java
  12. 81
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java
  13. 25
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java
  14. 2
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java
  15. 5
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialTypeServiceImpl.java
  16. 6
      src/main/resources/application-test.yml
  17. 11
      src/main/resources/templates/pages/chart/chart-in_back.html
  18. 6
      src/main/resources/templates/pages/chart/chart-stock_back.html
  19. 8
      src/main/resources/templates/pages/materialtype/materialType_view.html
  20. 5
      src/main/resources/templates/pages/warehouse/warehouse_view.html
  21. 234
      src/test/java/com/dreamchaser/depository_manage/Test2.java
  22. 190
      src/test/java/com/dreamchaser/depository_manage/Test3.java
  23. 6
      target/classes/application-test.yml
  24. 13
      target/classes/com/dreamchaser/depository_manage/mapper/DepositoryMapper.xml
  25. 25
      target/classes/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml
  26. 3
      target/classes/com/dreamchaser/depository_manage/mapper/RoleMapper.xml
  27. 11
      target/classes/templates/pages/chart/chart-in_back.html
  28. 6
      target/classes/templates/pages/chart/chart-stock_back.html
  29. 8
      target/classes/templates/pages/materialtype/materialType_view.html
  30. 5
      target/classes/templates/pages/warehouse/warehouse_view.html

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

@ -22,6 +22,7 @@ import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.*;
/** /**
* @author Dreamchser * @author Dreamchser
@ -232,11 +233,8 @@ public class DepositoryController {
* @return * @return
*/ */
public static List<Object> getBeforeInventoryByMonth(DepositoryService depositoryService, DepositoryRecordService depositoryRecordService, UserByPort userByPort) { public static List<Object> getBeforeInventoryByMonth(DepositoryService depositoryService, DepositoryRecordService depositoryRecordService, UserByPort userByPort) {
// List<Depository> depositoryAll = depositoryService.findDepositoryAll();
List<Depository> depositoryAll = depositoryService.findDepositoryByAdminorgAndUser(userByPort); List<Depository> depositoryAll = depositoryService.findDepositoryByAdminorgAndUser(userByPort);
// List<Depository> depositoryAll = depositoryService.findDepositoryByAdminorg(userByPort.getMaindeparment().toString());
// 获取该用户管理的仓库 // 获取该用户管理的仓库
Map<String, Object> previousMonth = getPreviousMonth(); Map<String, Object> previousMonth = getPreviousMonth();
List<Object> months = (List<Object>) previousMonth.get("months"); List<Object> months = (List<Object>) previousMonth.get("months");
List<Object> sourceList = (List<Object>) previousMonth.get("sourceList"); List<Object> sourceList = (List<Object>) previousMonth.get("sourceList");
@ -271,10 +269,10 @@ public class DepositoryController {
parmOut.put("end", months.get(num)); parmOut.put("end", months.get(num));
// 获取月份中入库物料的总额 // 获取月份中入库物料的总额
// 测试 // 测试
Double wareHouseInCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parmIn); Integer wareHouseInCountByMonth1 = depositoryRecordService.findMaterialCountByMonth2(parmIn);
// 获取月份中出库物料的总额 // 获取月份中出库物料的总额
// 测试 // 测试
Double wareHouseOutCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parmOut); Integer wareHouseOutCountByMonth1 = depositoryRecordService.findMaterialCountByMonth2(parmOut);
// 获取当前月库存容量 // 获取当前月库存容量
// 测试 // 测试
Double wareHouseCount1 = result.get(k++) - wareHouseInCountByMonth1 + wareHouseOutCountByMonth1; Double wareHouseCount1 = result.get(k++) - wareHouseInCountByMonth1 + wareHouseOutCountByMonth1;
@ -339,19 +337,17 @@ public class DepositoryController {
parmIn.put("depository_id", depositoryAll.get(i).getId()); parmIn.put("depository_id", depositoryAll.get(i).getId());
parmIn.put("start", months.get(j + 1)); parmIn.put("start", months.get(j + 1));
parmIn.put("end", months.get(j)); parmIn.put("end", months.get(j));
parmIn.put("dname", depositoryAll.get(i).getDname());
parmOut.put("type", 2); parmOut.put("type", 2);
parmOut.put("state", "已出库"); parmOut.put("state", "已出库");
parmOut.put("depository_id", depositoryAll.get(i).getId()); parmOut.put("depository_id", depositoryAll.get(i).getId());
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());
// 获取某个月某物料入库总额 // 获取某个月某物料入库总额
// 测试 // 测试
Double wareHouseInCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parmIn); Integer wareHouseInCountByMonth1 = depositoryRecordService.findMaterialCountByMonth2(parmIn);
// 获取某个月某物料出库总额 // 获取某个月某物料出库总额
// 测试 // 测试
Double wareHouseOutCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parmOut); Integer wareHouseOutCountByMonth1 = depositoryRecordService.findMaterialCountByMonth2(parmOut);
Double wareHouseCount1 = (Double) productData.get(k++) - wareHouseInCountByMonth1 + wareHouseOutCountByMonth1; Double wareHouseCount1 = (Double) productData.get(k++) - wareHouseInCountByMonth1 + wareHouseOutCountByMonth1;
productData.add(wareHouseCount1); productData.add(wareHouseCount1);
} }
@ -684,11 +680,10 @@ 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("oldId", materialTypeAll.get(j).getOldId());
//根据条件获取月份中物料的总额 //根据条件获取月份中物料的总额
Double materialCountByMonth = depositoryRecordService.findMaterialCountByMonth(parm);
// 测试 // 测试
Double materialCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parm); Integer materialCountByMonth1 = depositoryRecordService.findMaterialCountByMonth2(parm);
((Map<String, Object>) sourceList.get(num)).put(materialTypeAll.get(j).getTname(), materialCountByMonth1); ((Map<String, Object>) sourceList.get(num)).put(materialTypeAll.get(j).getTname(), materialCountByMonth1);
} }
} }
@ -893,7 +888,7 @@ public class DepositoryController {
*/ */
@RequestMapping(value = "/layui/echart_back", method = RequestMethod.GET) @RequestMapping(value = "/layui/echart_back", method = RequestMethod.GET)
@ResponseBody @ResponseBody
public Map<String, Object> learnLayuiAndEchart_back(@RequestParam("type") String type, @RequestParam(value = "last", required = false) String last, HttpServletRequest request) { public Map<String, Object> learnLayuiAndEchart_back(@RequestParam("type") String type, HttpServletRequest request) {
// 获取当前登录用户 // 获取当前登录用户
UserByPort userByPort = (UserByPort) request.getAttribute("userToken"); UserByPort userByPort = (UserByPort) request.getAttribute("userToken");
@ -910,6 +905,12 @@ public class DepositoryController {
// 获取各仓库名称以及id // 获取各仓库名称以及id
Map<String, Integer> depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort); Map<String, Integer> depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort);
ExecutorService exs = Executors.newFixedThreadPool(20);
// 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 1.定义CompletionService
CompletionService<Object> completionService = new ExecutorCompletionService<Object>(exs);
Iterator it = depositoryAllNameAndId.keySet().iterator(); Iterator it = depositoryAllNameAndId.keySet().iterator();
// 仓库名称列表 // 仓库名称列表
List<String> depositoryName = new ArrayList<>(); List<String> depositoryName = new ArrayList<>();
@ -923,38 +924,16 @@ public class DepositoryController {
Calendar instance = Calendar.getInstance(); Calendar instance = Calendar.getInstance();
// 获取昨天数据标志位 // 获取昨天数据标志位
boolean flag = true; boolean flag = true;
// 用于标准开启了几个线程
int taskNum = 0;
// 获取今天是周几 // 获取今天是周几
int weekDay = instance.get(Calendar.DAY_OF_WEEK); int weekDay = instance.get(Calendar.DAY_OF_WEEK);
weekDay = weekDay - 1; // 具体周几 weekDay = weekDay - 1; // 具体周几
// 获取日期 // 获取日期
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
// 如果是获取上周
if (last != null) {
List<Long> days = getLastTimeInterval();
List<Double> drCountbyDrName = new ArrayList<>();
while (it.hasNext()) {
int i;
Object key = it.next();
for (i = days.size() - 1; i > 0; i--) {
// 遍历 Map并计算各仓库的入库数
if (i == days.size() - 1) {
depositoryName.add(key.toString());
}
Integer val = (Integer) depositoryAllNameAndId.get(key);
// 获取一段时间内的库存额度
// 测试
Double depositoryRecordByDateAndType1 = depositoryRecordService.findApplicationRecordByDate(days.get(i), days.get(i - 1), Integer.parseInt(type), val);
drCountbyDrName.add(depositoryRecordByDateAndType1);
if (i == 2 && flag) {
yesterdayData.put(key.toString(), depositoryRecordByDateAndType1);
}
}
Collections.reverse(drCountbyDrName);
show_data.put(key.toString(), ((ArrayList<Double>) drCountbyDrName).clone());
drCountbyDrName.clear();
}
} else {
if (weekDay == 1) { if (weekDay == 1) {
//只获取今天 //只获取今天
Long now = DateUtil.DateTimeByMonthToTimeStamp(formatter.format(instance.getTime())); Long now = DateUtil.DateTimeByMonthToTimeStamp(formatter.format(instance.getTime()));
@ -976,7 +955,133 @@ public class DepositoryController {
drCountbyDrName.add(depositoryRecordByDate1); drCountbyDrName.add(depositoryRecordByDate1);
show_data.put(key.toString(), ((ArrayList<Double>) drCountbyDrName).clone()); show_data.put(key.toString(), ((ArrayList<Double>) drCountbyDrName).clone());
} }
} else { }
else {
Future<Object> future = completionService.submit(new distributeTasks(type,1,userByPort,yesterdayData,depositoryName));
futureList.add(future);
taskNum += 1;
}
// 获取本月及之前月份各种类别入/出库总量
Future<Object> future = completionService.submit(new distributeTasks(type,3,userByPort,yesterdayData,depositoryName));
futureList.add(future);
taskNum += 1;
// 中国地图数据
// ['product', '3月', '4月', '5月', '6月', '7月', '8月'],
// ['电子产品类', 41.1, 30.4, 65.1, 53.3, 83.8, 98.7],
Map<String, Object> mapData = new HashMap<>();
if (!"0".equals(type)) {
Future<Object> future1 = completionService.submit(new distributeTasks(type,4,userByPort,yesterdayData,depositoryName));
futureList.add(future1);
taskNum += 1;
}
// 封装 展示数据
Map<String, Object> depository_data = new LinkedHashMap<String, Object>();
List<Object> sourceList = new ArrayList<>();
for (int i = 0; i < taskNum; i++) {
Object result = null;
try {
result = completionService.take().get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
if(sourceList == null || sourceList.size() == 0) {
sourceList = (List<Object>) ((Map<String, Object>) result).get("sourceList");
}
if(show_data == null || show_data.size() == 0) {
show_data = (Map<String, Object>) ((Map<String, Object>) result).get("show_data");
}
if(mapData == null || mapData.size() == 0){
mapData = (Map<String, Object>) ((Map<String, Object>) result).get("mapData");
}
}
// 构造对应格式
depository_data.put("week", show_weekday);
depository_data.put("data", show_data);
depository_data.put("sourceList", sourceList);
// 获取库存图
if ("0".equals(type)) {
// 如果是获取库存
depository_data.put("todayInventory", todayInventory);
depository_data.put("sourceListByMonth", getBeforeInventoryByMonth(depositoryService, depositoryRecordService, userByPort));
depository_data.put("ThisWeekInventory", getThisWeekInventoryByDName(depositoryService, depositoryRecordService, userByPort));
depository_data.put("BeforeInventory", getBeforeInventoryByDName(depositoryService, depositoryRecordService, userByPort));
depository_data.put("MapInventory", getBeforeInventoryOnMap(depositoryService, depositoryRecordService, userByPort));
}
else {
// 如果不是
depository_data.put("yesterdayData", yesterdayData);
depository_data.put("mapData", mapData);
}
// 封装 最终数据
Map<String, Object> data = new LinkedHashMap<String, Object>();
data.put("depository_data", depository_data);
data.put("depository_name", depositoryName);
// 返回结果
Map<String, Object> resMap = new LinkedHashMap<String, Object>();
resMap.put("code", 0);
resMap.put("data", data);
resMap.put("msg", "成功获取到图表数据!");
return resMap;
}
// 用于
class distributeTasks implements Callable<Object>{
String type;
int taskType;
UserByPort userByPort;
Map<String,Double> yesterdayData;
List<String> depositoryName;
distributeTasks(String type ,int taskType,UserByPort userByPort,Map<String,Double> yesterdayData,List<String> depositoryName){
this.taskType = taskType;
this.type = type;
this.userByPort = userByPort;
this.yesterdayData = yesterdayData;
this.depositoryName = depositoryName;
}
@Override
public Object call() throws Exception {
// taskType 1为折线图2为饼图3为柱状图4为中国地图
Map<String,Object> result = new HashMap<>();
if(1 == taskType){
Map<String, Object> showData = getShowData(type, userByPort, yesterdayData,depositoryName);
result.put("show_data",showData);
}else if(2 == taskType){
}else if(3 == taskType){
List<Object> sourceList = getSourceList(type);
result.put("sourceList",sourceList);
}else if(4 == taskType){
Map<String, Object> mapData = getMapData(type);
result.put("mapData",mapData);
}
return result;
}
}
// 用于获取折线图
public Map<String,Object> getShowData(String type,UserByPort userByPort,Map<String,Double> yesterdayData,List<String> depositoryName){
// 获取各仓库名称以及id
Map<String, Integer> depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort);
// 各仓库当前库存数目
Map<String, Object> todayInventory = new HashMap<>();
Iterator it = depositoryAllNameAndId.keySet().iterator();
// 仓库名称列表
//获取获取系统的当前日历对象
Calendar instance = Calendar.getInstance();
// 获取日期
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
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); instance.add(Calendar.DATE, 1);
@ -990,6 +1095,10 @@ public class DepositoryController {
days.add(format); days.add(format);
} }
List<Double> drCountbyDrName = new ArrayList<>(); List<Double> drCountbyDrName = new ArrayList<>();
// 获取昨天数据标志位
boolean flag = true;
// 每天各仓库入库数目
Map<String, Object> show_data = new HashMap<>();
while (it.hasNext()) { while (it.hasNext()) {
int i; int i;
Object key = it.next(); Object key = it.next();
@ -1012,15 +1121,67 @@ public class DepositoryController {
show_data.put(key.toString(), ((ArrayList<Double>) drCountbyDrName).clone()); show_data.put(key.toString(), ((ArrayList<Double>) drCountbyDrName).clone());
drCountbyDrName.clear(); drCountbyDrName.clear();
} }
} return show_data;
} }
// 获取本月及之前月份各种类别入/出库总量
//获取本月及之前月份各种类别入/出库总量
public List<Object> getSourceList(String type){
List<MaterialType> materialTypeAll = materialTypeService.findMaterialTypeNoParent(); List<MaterialType> materialTypeAll = materialTypeService.findMaterialTypeNoParent();
Map<String, Object> previousMonth = getPreviousMonth(); Map<String, Object> previousMonth = getPreviousMonth();
List<Object> months = (List<Object>) previousMonth.get("months"); List<Object> months = (List<Object>) previousMonth.get("months");
List<Object> sourceList = (List<Object>) previousMonth.get("sourceList"); List<Object> sourceList = (List<Object>) previousMonth.get("sourceList");
ExecutorService exs = Executors.newFixedThreadPool(months.size());
// 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 1.定义CompletionService
CompletionService<Object> completionService = new ExecutorCompletionService<Object>(exs);
for (int num = 0; num < months.size() - 1; num++) { for (int num = 0; num < months.size() - 1; num++) {
Map<String,Object> map = (Map<String, Object>) sourceList.get(num);
Future<Object> future = completionService.submit(new getSourceListTask(map,type,months.get(num + 1).toString(),months.get(num).toString()));
futureList.add(future);
}
for (int i = 0; i < months.size() - 1; i++) {
Object result = null;
try {
result = completionService.take();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
List<String> barSource = new ArrayList<>();
barSource.add("month");
for (int i = 0; i < materialTypeAll.size(); i++) {
barSource.add(materialTypeAll.get(i).getTname());
}
sourceList.add(barSource);
return sourceList;
}
// 具体执行getSourceList逻辑
class getSourceListTask implements Callable<Object> {
String type;
String start;
String end;
Map<String,Object> map;
getSourceListTask(Map<String,Object> map, String type, String start, String end){
this.map = map;
this.type = type;
this.start = start;
this.end = end;
}
@Override
public Object call() throws Exception {
List<MaterialType> materialTypeAll = materialTypeService.findMaterialTypeNoParent();
ExecutorService exs = Executors.newFixedThreadPool(materialTypeAll.size());
// 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 1.定义CompletionService
CompletionService<Object> completionService = new ExecutorCompletionService<Object>(exs);
for (int j = 0; j < materialTypeAll.size(); j++) { for (int j = 0; j < materialTypeAll.size(); j++) {
Map<String, Object> parm = new HashMap<>(); Map<String, Object> parm = new HashMap<>();
parm.put("type", Integer.parseInt(type)); parm.put("type", Integer.parseInt(type));
@ -1029,42 +1190,105 @@ public class DepositoryController {
} else if (Integer.parseInt(type) == 2) { } else if (Integer.parseInt(type) == 2) {
parm.put("state", "已出库"); parm.put("state", "已出库");
} }
parm.put("start", months.get(num + 1)); parm.put("start",start);
parm.put("end", months.get(num)); parm.put("end", end);
parm.put("tname", materialTypeAll.get(j).getTname()); parm.put("oldId", materialTypeAll.get(j).getOldId());
//根据条件获取月份中物料的总额 //根据条件获取月份中物料的总额
// 测试 // 测试
Double materialCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parm);
((Map<String, Object>) sourceList.get(num)).put(materialTypeAll.get(j).getTname(), materialCountByMonth1); Future<Object> future = completionService.submit(new findMaterialCountTaskForSourceList(parm));
futureList.add(future);
}
for (int i = 0; i < materialTypeAll.size(); i++) {
Object result = null;
try {
result = completionService.take().get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
map.putAll((Map<? extends String, ?>) result);
}
return map;
} }
} }
List<String> barSource = new ArrayList<>();
barSource.add("month"); // 根据条件获取月份中物料的总额用于sourcelist
for (int i = 0; i < materialTypeAll.size(); i++) { class findMaterialCountTaskForSourceList implements Callable<Object> {
barSource.add(materialTypeAll.get(i).getTname());
Map<String,Object> map;
findMaterialCountTaskForSourceList(Map<String,Object> map){
this.map = map;
}
@Override
public Object call() throws Exception {
Map<String,Object> result = new HashMap<>();
Integer materialCountByMonth1 = depositoryRecordService.findMaterialCountByMonth2(map);
Long oldId = Long.valueOf(map.get("oldId").toString());
MaterialType materialTypeByOldId = materialTypeService.findMaterialTypeByOldId(oldId);
result.put(materialTypeByOldId.getTname(),materialCountByMonth1);
return result;
}
} }
sourceList.add(barSource);
// 中国地图数据
// ['product', '3月', '4月', '5月', '6月', '7月', '8月'],
// ['电子产品类', 41.1, 30.4, 65.1, 53.3, 83.8, 98.7],
Map<String, Object> mapData = new HashMap<>();
if (!"0".equals(type)) { // 中国地图数据
public Map<String, Object> getMapData(String type){
List<Object> mapDataList = new ArrayList<>(); List<Object> mapDataList = new ArrayList<>();
Map<String, Object> previousMonth1 = getPreviousMonth(); Map<String, Object> previousMonth1 = getPreviousMonth();
List<Object> months1 = (List<Object>) previousMonth1.get("months");
List<Object> sourceList1 = (List<Object>) previousMonth1.get("sourceList"); List<Object> sourceList1 = (List<Object>) previousMonth1.get("sourceList");
ArrayList<Object> title = new ArrayList<>(); ArrayList<Object> title = new ArrayList<>();
title.add("product"); title.add("product");
for (int i = sourceList1.size() - 1; i >= 0; i--) { for (int i = sourceList1.size() - 1; i >= 0; i--) {
title.add(((Map<String, Object>) sourceList1.get(i)).get("month")); title.add(((Map<String, Object>) sourceList1.get(i)).get("month"));
} }
mapDataList.add(title); mapDataList.add(title);
// 获取所有顶级类别
List<MaterialType> materialTypeAll = materialTypeService.findMaterialTypeNoParent();
// 定义对应数量的线程池
ExecutorService exs = Executors.newFixedThreadPool(materialTypeAll.size());
// 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 1.定义CompletionService
CompletionService<Object> completionService = new ExecutorCompletionService<Object>(exs);
for (int i = 0; i < materialTypeAll.size(); i++) {
MaterialType mt = materialTypeAll.get(i);
Future<Object> future = completionService.submit(new findMapData(previousMonth1,type,mt));
futureList.add(future);
}
for (int i = 0; i < materialTypeAll.size(); i++) { for (int i = 0; i < materialTypeAll.size(); i++) {
Object result = null;
try {
result = completionService.take().get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
mapDataList.add(result);
}
Map<String,Object> mapData =new HashMap<>();
mapData.put("mapDataList", mapDataList);
return mapData;
}
class findMapData implements Callable<Object>{
String type ;
MaterialType mt;
Map<String, Object> previousMonth1;
findMapData( Map<String, Object> previousMonth1,String type ,MaterialType mt){
this.previousMonth1 = previousMonth1;
this.type = type;
this.mt = mt;
}
@Override
public Object call() throws Exception {
List<Object> productData = new ArrayList<>(); List<Object> productData = new ArrayList<>();
productData.add(materialTypeAll.get(i).getTname()); List<Object> months1 = (List<Object>) previousMonth1.get("months");
productData.add(mt.getTname());
for (int j = months1.size() - 1; j > 0; j--) { for (int j = months1.size() - 1; j > 0; j--) {
Map<String, Object> parm = new HashMap<>(); Map<String, Object> parm = new HashMap<>();
parm.put("type", Integer.parseInt(type)); parm.put("type", Integer.parseInt(type));
@ -1075,49 +1299,16 @@ 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("oldId", mt.getOldId());
//根据条件获取月份中物料的总额 //根据条件获取月份中物料的总额
// 测试 // 测试
Double materialCountByMonth1 = depositoryRecordService.findMaterialCountByMonth1(parm); Integer materialCountByMonth1 = depositoryRecordService.findMaterialCountByMonth2(parm);
productData.add(materialCountByMonth1); productData.add(materialCountByMonth1);
} }
mapDataList.add(((ArrayList<Object>) productData).clone()); return productData;
productData.clear();
} }
mapData.put("mapDataList", mapDataList);
}
// 封装 展示数据
Map<String, Object> depository_data = new LinkedHashMap<String, Object>();
// 构造对应格式
depository_data.put("week", show_weekday);
depository_data.put("data", show_data);
depository_data.put("sourceList", sourceList);
// 获取库存图
if ("0".equals(type)) {
// 如果是获取库存
depository_data.put("todayInventory", todayInventory);
depository_data.put("sourceListByMonth", getBeforeInventoryByMonth(depositoryService, depositoryRecordService, userByPort));
depository_data.put("ThisWeekInventory", getThisWeekInventoryByDName(depositoryService, depositoryRecordService, userByPort));
depository_data.put("BeforeInventory", getBeforeInventoryByDName(depositoryService, depositoryRecordService, userByPort));
depository_data.put("MapInventory", getBeforeInventoryOnMap(depositoryService, depositoryRecordService, userByPort));
} else {
// 如果不是
depository_data.put("yesterdayData", yesterdayData);
depository_data.put("mapData", mapData);
} }
// 封装 最终数据
Map<String, Object> data = new LinkedHashMap<String, Object>();
data.put("depository_data", depository_data);
data.put("depository_name", depositoryName);
// 返回结果
Map<String, Object> resMap = new LinkedHashMap<String, Object>();
resMap.put("code", 0);
resMap.put("data", data);
resMap.put("msg", "成功获取到图表数据!");
return resMap;
}
/** /**
* 根据物料编号查询所在仓库 * 根据物料编号查询所在仓库
@ -1330,21 +1521,21 @@ public class DepositoryController {
// 构造仓库二维码 // 构造仓库二维码
@PostMapping("/createQrCode") @PostMapping("/createQrCode")
public RestResponse createQrCode(@RequestBody Map<String,Object> map) { public RestResponse createQrCode(@RequestBody Map<String, Object> map) {
// 通过雪花算法计算随机数 // 通过雪花算法计算随机数
Snowflake snowflake = new Snowflake(10,10,true); Snowflake snowflake = new Snowflake(10, 10, true);
String qrCode = snowflake.nextIdStr(); String qrCode = snowflake.nextIdStr();
Integer depositoryId = ObjectFormatUtil.toInteger(map.get("depositoryId")); Integer depositoryId = ObjectFormatUtil.toInteger(map.get("depositoryId"));
Depository depository = depositoryService.findDepositoryRecordById(depositoryId); Depository depository = depositoryService.findDepositoryRecordById(depositoryId);
String qrCodeByDepository = depositoryService.findQrCodeByDepository(depository.getId()); String qrCodeByDepository = depositoryService.findQrCodeByDepository(depository.getId());
if(qrCodeByDepository == null) { if (qrCodeByDepository == null) {
Map<String, Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();
param.put("depositoryId", depository.getId()); param.put("depositoryId", depository.getId());
param.put("qrCode", qrCode); param.put("qrCode", qrCode);
depositoryService.addQrCodeByDepository(param); depositoryService.addQrCodeByDepository(param);
}else{ } else {
qrCode = qrCodeByDepository; qrCode = qrCodeByDepository;
} }
try { try {

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

@ -1,6 +1,7 @@
package com.dreamchaser.depository_manage.mapper; package com.dreamchaser.depository_manage.mapper;
import com.dreamchaser.depository_manage.entity.Depository; import com.dreamchaser.depository_manage.entity.Depository;
import com.dreamchaser.depository_manage.pojo.InventoryByDname;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@ -116,6 +117,8 @@ public interface DepositoryMapper {
Double getToDayInventoryByDName(Map<String,Object> map); Double getToDayInventoryByDName(Map<String,Object> map);
List<InventoryByDname> getToDayInventoryByDNameTest();
/** /**
* 根据条件修改状态 * 根据条件修改状态
* @param map * @param map

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

@ -17,6 +17,11 @@
<result column="minNumber" property="minNumber" jdbcType="INTEGER"/> <result column="minNumber" property="minNumber" jdbcType="INTEGER"/>
<result column="maxNumber" property="maxNumber" jdbcType="INTEGER"/> <result column="maxNumber" property="maxNumber" jdbcType="INTEGER"/>
</resultMap> </resultMap>
<resultMap id="inventoryByDname" type="com.dreamchaser.depository_manage.pojo.InventoryByDname">
<result column="inventory" property="inventory" jdbcType="INTEGER"/>
<result column="dname" property="dname" jdbcType="VARCHAR"/>
</resultMap>
<!-- This code was generated by TableGo tools, mark 1 end. --> <!-- This code was generated by TableGo tools, mark 1 end. -->
<!-- This code was generated by TableGo tools, mark 2 begin. --> <!-- This code was generated by TableGo tools, mark 2 begin. -->
@ -339,6 +344,14 @@
</if> </if>
</select> </select>
<select id="getToDayInventoryByDNameTest" resultMap="inventoryByDname">
select ifnull(sum(quantity),0.0) as inventory ,dname
from depositoryAndmaterial
where 1 = 1
GROUP BY dname
</select>
<select id="findUserNameByDepositoryId" resultType="string" parameterType="int"> <select id="findUserNameByDepositoryId" resultType="string" parameterType="int">
select uname select uname

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

@ -176,7 +176,9 @@ public interface DepositoryRecordMapper {
* @param map * @param map
* @return * @return
*/ */
Double findApplicationInByMonth(Map<String,Object> map); Integer findApplicationInByMonth(Map<String,Object> map);
Integer findApplicationInByMonthTest(Map<String,Object> map);
/** /**
* 根据条件获取月份中出库物料的总额 * 根据条件获取月份中出库物料的总额

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

@ -1128,7 +1128,7 @@
</select> </select>
<!-- 获取某月某物料入库总额--> <!-- 获取某月某物料入库总额-->
<select id="findApplicationInByMonth" parameterType="map" resultType="DOUBLE"> <select id="findApplicationInByMonth" parameterType="map" resultType="int">
select ifnull(sum(quantity),0) select ifnull(sum(quantity),0)
from applicationinrecordinfo from applicationinrecordinfo
where 1 = 1 where 1 = 1
@ -1139,6 +1139,29 @@
<if test="tname != null and tname != ''"> <if test="tname != null and tname != ''">
and tname = #{tname} and tname = #{tname}
</if> </if>
<if test="typeId != null and typeId != ''">
and mtid = #{typeId}
</if>
</select>
<select id="findApplicationInByMonthTest" parameterType="map" resultType="int">
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>
<if test="list != null">
and mtid in
<foreach collection="list" index="index" item="typeId" open="(" separator="," close=")">
#{typeId}
</foreach>
</if>
</select> </select>
<!-- 获取某月某物料出库总额--> <!-- 获取某月某物料出库总额-->

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

@ -27,6 +27,7 @@
<result column="depositoryIntroduce" property="depositoryIntroduce" jdbcType="VARCHAR"/> <result column="depositoryIntroduce" property="depositoryIntroduce" jdbcType="VARCHAR"/>
<result column="depositoryState" property="depositoryState" jdbcType="VARCHAR"/> <result column="depositoryState" property="depositoryState" jdbcType="VARCHAR"/>
<result column="did" property="depositoryId" jdbcType="VARCHAR"/> <result column="did" property="depositoryId" jdbcType="VARCHAR"/>
<result column="depositoryCode" property="depositoryCode" jdbcType="VARCHAR"/>
<result column="classes" property="classes" jdbcType="INTEGER"/> <result column="classes" property="classes" jdbcType="INTEGER"/>
</resultMap> </resultMap>
@ -35,7 +36,7 @@
</sql> </sql>
<sql id="roleNameAnddepositoryName"> <sql id="roleNameAnddepositoryName">
prid,userid as userId,name as roleName,dname as depositoryName,address as depositoryAddress ,introduce as depositoryIntroduce,state as depositoryState,did,classes prid,userid as userId,name as roleName,dname as depositoryName,address as depositoryAddress ,introduce as depositoryIntroduce,state as depositoryState,did,classes,code as depositoryCode
</sql> </sql>
<select id="findAllRole" resultMap="roleMap"> <select id="findAllRole" resultMap="roleMap">

12
src/main/java/com/dreamchaser/depository_manage/pojo/InventoryByDname.java

@ -0,0 +1,12 @@
package com.dreamchaser.depository_manage.pojo;
import lombok.Data;
/**
* 用于仓库与库存的对应
*/
@Data
public class InventoryByDname {
Integer inventory;
String dname;
}

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

@ -7,8 +7,11 @@ import com.dreamchaser.depository_manage.utils.CreateQrCodeUtil;
import com.dreamchaser.depository_manage.utils.SnowFlakeUtil; import com.dreamchaser.depository_manage.utils.SnowFlakeUtil;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import sun.misc.BASE64Decoder;
import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream;
import java.io.Serializable; import java.io.Serializable;
import java.util.Map; import java.util.Map;
@ -75,6 +78,35 @@ public class RestResponse implements Serializable {
return new RestResponse(qrCode,200,new StatusInfo("成功!","二维码生成成功")); return new RestResponse(qrCode,200,new StatusInfo("成功!","二维码生成成功"));
} }
/**
* 将base64编码转为图片
* @param imgStr
* @param imgFilePath
* @return
*/
public static boolean GenerateImage(String imgStr, String imgFilePath) {// 对字节数组字符串进行Base64解码并生成图片
if (imgStr == null) // 图像数据为空
return false;
BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解码
byte[] bytes = decoder.decodeBuffer(imgStr);
for (int i = 0; i < bytes.length; ++i) {
if (bytes[i] < 0) {// 调整异常数据
bytes[i] += 256;
}
}
// 生成jpeg图片
OutputStream out = new FileOutputStream(imgFilePath);
out.write(bytes);
out.flush();
out.close();
return true;
} catch (Exception e) {
return false;
}
}
} }

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

@ -51,4 +51,9 @@ public class RoleAndDepository {
* 权限类型1个人2岗位 * 权限类型1个人2岗位
*/ */
private Integer classes; private Integer classes;
/**
* 仓库编码
*/
private String depositoryCode;
} }

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

@ -232,7 +232,9 @@ public interface DepositoryRecordService {
* @param map * @param map
* @return * @return
*/ */
Double findMaterialCountByMonth1(Map<String,Object> map); Integer findMaterialCountByMonth1(Map<String,Object> map);
Integer findMaterialCountByMonth2(Map<String,Object> map);
/** /**
* 查询仓库当天流水 * 查询仓库当天流水

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

@ -2,6 +2,7 @@ package com.dreamchaser.depository_manage.service;
import com.dreamchaser.depository_manage.entity.Depository; import com.dreamchaser.depository_manage.entity.Depository;
import com.dreamchaser.depository_manage.entity.UserByPort; import com.dreamchaser.depository_manage.entity.UserByPort;
import com.dreamchaser.depository_manage.pojo.InventoryByDname;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -176,4 +177,11 @@ public interface DepositoryService {
*/ */
Integer addQrCodeByDepository(Map<String,Object> map); Integer addQrCodeByDepository(Map<String,Object> map);
/**
* 获取每个仓库以及对应
* @return
*/
List<InventoryByDname> getToDayInventoryByDNameTest();
} }

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

@ -1914,7 +1914,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
* @return * @return
*/ */
@Override @Override
public Double findMaterialCountByMonth1(Map<String, Object> map) { public Integer findMaterialCountByMonth1(Map<String, Object> map) {
Integer type = ObjectFormatUtil.toInteger(map.get("type")); Integer type = ObjectFormatUtil.toInteger(map.get("type"));
Map<String, Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();
param.put("tname", map.get("tname")); param.put("tname", map.get("tname"));
@ -1924,24 +1924,46 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 获取当前类型 // 获取当前类型
mt = materialTypeByCondition.get(0); mt = materialTypeByCondition.get(0);
} }
Double sumCount = 0.0; Integer sumCount = 0;
List<MaterialType> allMtByParent = findChildForMaterialTypeByParent(mt); List<Long> allMtByParent = findChildForMaterialTypeByParent(mt);
if (type == 1) { if (type == 1) {
// 如果入库 // 如果入库
for (int i = 0; i < allMtByParent.size(); i++) { map.put("list",allMtByParent);
map.put("tname", allMtByParent.get(i).getTname()); sumCount = depositoryRecordMapper.findApplicationInByMonthTest(map);
sumCount += depositoryRecordMapper.findApplicationInByMonth(map);
}
} else { } else {
// 如果出库 // 如果出库
for (int i = 0; i < allMtByParent.size(); i++) { map.put("list",allMtByParent);
map.put("tname", allMtByParent.get(i).getTname()); sumCount = depositoryRecordMapper.findApplicationInByMonthTest(map);
sumCount += depositoryRecordMapper.findApplicationOutByMonth(map);
} }
return sumCount;
}
@Override
public Integer findMaterialCountByMonth2(Map<String, Object> map) {
Integer type = ObjectFormatUtil.toInteger(map.get("type"));
Object o = map.get("oldId");
List<Long> allMtByParent = null;
if(o!=null){
String oldId = String.valueOf(o);
MaterialType mt = materialTypeMapper.findMaterialTypeByOldId(Long.valueOf(oldId));
allMtByParent = findChildForMaterialTypeByParent(mt);
map.put("list",allMtByParent);
}
Integer sumCount = 0;
if (type == 1) {
// 如果入库
sumCount = depositoryRecordMapper.findApplicationInByMonthTest(map);
} else {
// 如果出库
sumCount = depositoryRecordMapper.findApplicationInByMonthTest(map);
} }
return sumCount; return sumCount;
} }
/** /**
* 查询仓库当天流水 * 查询仓库当天流水
* *
@ -2108,23 +2130,38 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
} }
// 根据id获取子类 // 根据id获取子类
public List<MaterialType> findChildForMaterialTypeByParent(MaterialType mt) { public List<Long> findChildForMaterialTypeByParent(MaterialType mt) {
Map<String, Object> param = new HashMap<>(); List<Long> result = new ArrayList<>();
List<MaterialType> result = new ArrayList<>(); result.add(mt.getOldId());
result.add(mt); List<Long> parentId = new ArrayList<>();
param.put("parentId", mt.getOldId()); parentId.add(mt.getOldId());
// 获取当前父类的子类 List<MaterialType> materialTypeAll = materialTypeMapper.findMaterialTypeAll();
List<MaterialType> materialTypeByCondition = materialTypeMapper.findMaterialTypeByCondition(param); for (int i = 0; i < materialTypeAll.size(); i++) {
if (materialTypeByCondition.size() > 0) { MaterialType materialType = materialTypeAll.get(i);
for (int i = 0; i < materialTypeByCondition.size(); i++) { if(isTrueForParent(parentId,materialType.getParentId())){
MaterialType mts = materialTypeByCondition.get(i); parentId.add(materialType.getOldId());
List<MaterialType> childForMaterialTypeByParent = findChildForMaterialTypeByParent(mts); result.add(materialType.getOldId());
result.addAll(childForMaterialTypeByParent);
} }
} }
return result; return result;
} }
/**
* 判断当前id是否在ids中
*
* @param parentList
* @param id
* @return
*/
public Boolean isTrueForParent(List<Long> parentList,Long id){
for (Long aLong : parentList) {
if (Long.compare(aLong, id) == 0) {
return true;
}
}
return false;
}
/** /**
* 判断当前id是否在ids中 * 判断当前id是否在ids中

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

@ -6,6 +6,7 @@ import com.dreamchaser.depository_manage.mapper.DepositoryMapper;
import com.dreamchaser.depository_manage.mapper.PlaceMapper; import com.dreamchaser.depository_manage.mapper.PlaceMapper;
import com.dreamchaser.depository_manage.mapper.QrCodeMapper; import com.dreamchaser.depository_manage.mapper.QrCodeMapper;
import com.dreamchaser.depository_manage.mapper.RoleMapper; import com.dreamchaser.depository_manage.mapper.RoleMapper;
import com.dreamchaser.depository_manage.pojo.InventoryByDname;
import com.dreamchaser.depository_manage.pojo.RoleAndDepository; import com.dreamchaser.depository_manage.pojo.RoleAndDepository;
import com.dreamchaser.depository_manage.service.DepositoryService; import com.dreamchaser.depository_manage.service.DepositoryService;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
@ -474,21 +475,22 @@ public class DepositoryServiceImpl implements DepositoryService {
List<Depository> depositoryByAdminorg = depositoryMapper.findDepositoryByAdminorg(userByPort.getMaindeparment().toString()); List<Depository> depositoryByAdminorg = depositoryMapper.findDepositoryByAdminorg(userByPort.getMaindeparment().toString());
// 仓库id列表 // 仓库id列表
List<Depository> depositoryList = new ArrayList<>();
// 添加到列表 // 添加到列表
depositoryList.addAll(depositoryByAdminorg); List<Depository> depositoryList = new ArrayList<>(depositoryByAdminorg);
// 获取当前用户管理的仓库 // 获取当前用户管理的仓库
List<RoleAndDepository> depositoryAndRole = roleMapper.findDepositoryAndRole(userByPort.getId()); List<RoleAndDepository> depositoryAndRole = roleMapper.findDepositoryAndRole(userByPort.getId());
for (int i = 0; i < depositoryAndRole.size(); i++) { for (RoleAndDepository roleAndDepository : depositoryAndRole) {
RoleAndDepository roleAndDepository = depositoryAndRole.get(i); Depository d = new Depository();
Depository depositoryRecordById = depositoryMapper.findDepositoryById(roleAndDepository.getDepositoryId()); d.setDname(roleAndDepository.getDepositoryName());
d.setId(roleAndDepository.getId());
d.setCode(roleAndDepository.getDepositoryCode());
// 如果重复则跳过 // 如果重复则跳过
if (hasDepository(depositoryList,depositoryRecordById)) { if (hasDepository(depositoryList, d)) {
continue; continue;
} else { } else {
depositoryList.add(depositoryRecordById); depositoryList.add(d);
} }
} }
@ -521,6 +523,15 @@ public class DepositoryServiceImpl implements DepositoryService {
return qrCodeMapper.addQrCodeByPidOrDid(map); return qrCodeMapper.addQrCodeByPidOrDid(map);
} }
/**
* 获取每个仓库以及对应
* @return
*/
@Override
public List<InventoryByDname> getToDayInventoryByDNameTest() {
return depositoryMapper.getToDayInventoryByDNameTest();
}
//判断是否有子类 //判断是否有子类
public boolean isChildForDepository(Integer parentId) { public boolean isChildForDepository(Integer parentId) {
boolean flag = false; boolean flag = false;

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

@ -1387,6 +1387,8 @@ public class MaterialServiceImpl implements MaterialService {
} }
// 根据id获取子类 // 根据id获取子类
public List<Object> findChildForMaterialTypeByParent_Test(Long Oldid,int level,int staticlevel) { public List<Object> findChildForMaterialTypeByParent_Test(Long Oldid,int level,int staticlevel) {
Map<String, Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();

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

@ -35,6 +35,8 @@ public class MaterialTypeServiceImpl implements MaterialTypeService {
map.put("parentId",map.get("materialTypeId")); map.put("parentId",map.get("materialTypeId"));
map.remove("materialTypeId"); map.remove("materialTypeId");
} }
Object oldId = map.get("oldId");
if(oldId == null) {
Long parentId =Long.valueOf(map.get("parentId").toString()); Long parentId =Long.valueOf(map.get("parentId").toString());
MaterialType materialTypeById = materialTypeMapper.findMaterialTypeByOldId(parentId); MaterialType materialTypeById = materialTypeMapper.findMaterialTypeByOldId(parentId);
Integer size = 0; Integer size = 0;
@ -48,7 +50,8 @@ public class MaterialTypeServiceImpl implements MaterialTypeService {
firstName = materialTypeById.getOldId().toString(); firstName = materialTypeById.getOldId().toString();
map.put("parentId",materialTypeById.getOldId()); map.put("parentId",materialTypeById.getOldId());
} }
map.put("oldId",firstName+String.format("%02d",size+1)); map.put("oldId", firstName + String.format("%02d", size + 1));
}
return materialTypeMapper.insertMaterialType(map); return materialTypeMapper.insertMaterialType(map);
} }

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

@ -79,9 +79,9 @@ mybatis:
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
log-prefix: mapper. log-prefix: mapper.
mybatis-plus: #mybatis-plus:
configuration: # configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
file: file:
uploadPath: D:/upLoad uploadPath: D:/upLoad

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

@ -314,6 +314,7 @@
success: function (result) { success: function (result) {
layer.close(this.layerIndex); layer.close(this.layerIndex);
if (result.code === 0) { if (result.code === 0) {
console.log(result)
echartsRecords.setOption(optionRecords); echartsRecords.setOption(optionRecords);
echartsPies.setOption(optionPies); echartsPies.setOption(optionPies);
@ -372,6 +373,7 @@
optionDataset.series.push({type: 'bar'}) optionDataset.series.push({type: 'bar'})
} }
for (let i = 0; i < result.data.depository_data.mapData.mapDataList.length; i++) { for (let i = 0; i < result.data.depository_data.mapData.mapDataList.length; i++) {
optionMap.dataset.source.push(result.data.depository_data.mapData.mapDataList[i]); optionMap.dataset.source.push(result.data.depository_data.mapData.mapDataList[i]);
if(i < result.data.depository_data.mapData.mapDataList.length - 1) { if(i < result.data.depository_data.mapData.mapDataList.length - 1) {
@ -379,6 +381,9 @@
} }
} }
var month = new Date().getMonth() + 1; var month = new Date().getMonth() + 1;
optionMap.series.push( optionMap.series.push(
@ -454,6 +459,10 @@
}, },
series: optionPiesSeries series: optionPiesSeries
}; };
console.log(result)
console.log(optionRecords)
console.log(optionPies)
echartsRecords.setOption(optionRecords); echartsRecords.setOption(optionRecords);
echartsPies.setOption(optionPies); echartsPies.setOption(optionPies);
echartsDataset.setOption(optionDataset); echartsDataset.setOption(optionDataset);
@ -466,7 +475,7 @@
// echarts 窗口缩放自适应 // echarts 窗口缩放自适应
window.onresize = function () { window.onresize = function () {
echartsRecords.resize(); echartsRecords.resize();
} };
form.on('submit(thisWeek)', function () { form.on('submit(thisWeek)', function () {
$.ajax({ $.ajax({

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

@ -258,7 +258,7 @@
} }
}, },
data:[] data:[]
} };
// 柱状图 // 柱状图
optionDataset = { optionDataset = {
legend: {}, legend: {},
@ -282,7 +282,7 @@
}) })
} }
var dimensions = result.data.depository_data.sourceListByMonth[result.data.depository_data.sourceListByMonth.length - 1] var dimensions = result.data.depository_data.sourceListByMonth[result.data.depository_data.sourceListByMonth.length - 1]
optionDataset.dataset.dimensions = dimensions optionDataset.dataset.dimensions = dimensions;
for (let i = result.data.depository_data.sourceListByMonth.length - 2; i >= 0; i--) { for (let i = result.data.depository_data.sourceListByMonth.length - 2; i >= 0; i--) {
optionDataset.dataset.source.push(result.data.depository_data.sourceListByMonth[i]) optionDataset.dataset.source.push(result.data.depository_data.sourceListByMonth[i])
} }
@ -458,7 +458,7 @@
echartsRecords.setOption(optionRecords); echartsRecords.setOption(optionRecords);
} }
}) })
}) });
form.on('submit(lastWeek)', function () { form.on('submit(lastWeek)', function () {
$.ajax({ $.ajax({

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

@ -174,7 +174,7 @@
var req={}; var req={};
req.ids=[]; req.ids=[];
for (i=0,len=data.length;i<len;i++){ for (i=0,len=data.length;i<len;i++){
req.ids[i]=data[i].id; req.ids[i]=data[i].oldId;
} }
if(req.ids.length > 0) { if(req.ids.length > 0) {
layer.confirm('真的删除么', {icon: 2, title: '提示'}, function (index) { layer.confirm('真的删除么', {icon: 2, title: '提示'}, function (index) {
@ -279,7 +279,7 @@
maxmin: true, maxmin: true,
shadeClose: true, shadeClose: true,
area: ['100%', '100%'], area: ['100%', '100%'],
content: '/materialType_detail?id='+data.id, content: '/materialType_detail?id='+data.oldId,
end:function () { end:function () {
//执行搜索重载 //执行搜索重载
table.reload('currentTableId', { table.reload('currentTableId', {
@ -298,7 +298,7 @@
} }
else if (obj.event === 'delete') { else if (obj.event === 'delete') {
var req = {}; var req = {};
req.id = data.id; req.id = data.oldId;
$.ajax({ $.ajax({
url: "/materialType/findMaterialByMaterialTypeId", // 判断该类型下是否有物品 url: "/materialType/findMaterialByMaterialTypeId", // 判断该类型下是否有物品
type: "post", type: "post",
@ -367,7 +367,7 @@
} }
else if (obj.event == 'realDelete') { // 彻底删除 else if (obj.event == 'realDelete') { // 彻底删除
var req = {}; var req = {};
req.id = data.id; req.id = data.oldId;
$.ajax({ $.ajax({
url: "/materialType/findMaterialByMaterialTypeId", // 判断该类型下是否有物品 url: "/materialType/findMaterialByMaterialTypeId", // 判断该类型下是否有物品
type: "post", type: "post",

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

@ -106,7 +106,9 @@
<script> <script>
function createQrCode() { function createQrCode() {
}; }
layui.use('form', function(){ layui.use('form', function(){
var form = layui.form, $ = layui.$; var form = layui.form, $ = layui.$;
@ -186,6 +188,7 @@
} }
}) })
} }
}); });
</script> </script>

234
src/test/java/com/dreamchaser/depository_manage/Test2.java

@ -0,0 +1,234 @@
package com.dreamchaser.depository_manage;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.controller.PageController;
import com.dreamchaser.depository_manage.entity.Depository;
import com.dreamchaser.depository_manage.entity.MaterialType;
import com.dreamchaser.depository_manage.entity.UserByPort;
import com.dreamchaser.depository_manage.mapper.DepositoryMapper;
import com.dreamchaser.depository_manage.mapper.DepositoryRecordMapper;
import com.dreamchaser.depository_manage.mapper.MaterialTypeMapper;
import com.dreamchaser.depository_manage.mapper.RoleMapper;
import com.dreamchaser.depository_manage.pojo.InventoryByDname;
import com.dreamchaser.depository_manage.pojo.RoleAndDepository;
import com.dreamchaser.depository_manage.service.DepositoryRecordService;
import com.dreamchaser.depository_manage.service.DepositoryService;
import com.dreamchaser.depository_manage.service.MaterialTypeService;
import com.dreamchaser.depository_manage.utils.DateUtil;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
@SpringBootTest
@RunWith(SpringRunner.class)
public class Test2 {
@Autowired
MaterialTypeService materialTypeService;
@Autowired
DepositoryRecordService depositoryRecordService;
@Autowired
DepositoryRecordMapper depositoryRecordMapper;
@Autowired
DepositoryMapper depositoryMapper;
@Autowired
MaterialTypeMapper materialTypeMapper;
@Autowired
DepositoryService depositoryService;
@Autowired
RoleMapper roleMapper;
@Test
public void test(){
UserByPort userByPort = PageController.FindUserById(6235, null);
List<Depository> depositoryAll = depositoryService.findDepositoryByAdminorgAndUser(userByPort);
// 获取该用户管理的仓库
Map<String, Object> previousMonth = getPreviousMonth();
List<Object> sourceList = (List<Object>) previousMonth.get("sourceList");
Calendar instance = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
instance.add(Calendar.MONTH, 1);
instance.set(Calendar.DATE, 1);
List<Integer> result = new ArrayList<>();
List<InventoryByDname> toDayInventoryByDNameTest = depositoryMapper.getToDayInventoryByDNameTest();
for (int i = 0; i < depositoryAll.size(); i++) {
Depository depository = depositoryAll.get(i);
Integer inventoryByDname = getInventoryByDname(depository.getDname(), toDayInventoryByDNameTest);
result.add(inventoryByDname);
((Map<String, Object>) sourceList.get(0)).put(depository.getDname(), result.get(i));
}
}
/**
* 获取当前仓库下的库存
* @param dname
* @param list
* @return
*/
public Integer getInventoryByDname(String dname,List<InventoryByDname> list){
for (InventoryByDname inventoryByDname : list) {
if (dname.equals(inventoryByDname.getDname())) {
return inventoryByDname.getInventory();
}
}
return 0;
}
public List<Object> getBeforeInventoryByMonth(DepositoryService depositoryService, DepositoryRecordService depositoryRecordService, UserByPort userByPort) {
List<Depository> depositoryAll = depositoryService.findDepositoryByAdminorgAndUser(userByPort);
// 获取该用户管理的仓库
Map<String, Object> previousMonth = getPreviousMonth();
List<Object> months = (List<Object>) previousMonth.get("months");
List<Object> sourceList = (List<Object>) previousMonth.get("sourceList");
Calendar instance = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
instance.add(Calendar.MONTH, 1);
instance.set(Calendar.DATE, 1);
List<Integer> result = new ArrayList<>();
List<InventoryByDname> toDayInventoryByDNameTest = depositoryService.getToDayInventoryByDNameTest();
for (int i = 0; i < depositoryAll.size(); i++) {
Depository depository = depositoryAll.get(i);
Integer inventoryByDname = getInventoryByDname(depository.getDname(), toDayInventoryByDNameTest);
result.add(inventoryByDname);
((Map<String, Object>) sourceList.get(0)).put(depository.getDname(), result.get(i));
}
for (int num = 0; num < months.size() - 1; num++) {
int k = 0;
for (int j = 0; j < depositoryAll.size(); j++) {
// 获取该仓库本月库存
Map<String, Object> parmIn = new HashMap<>();
Map<String, Object> parmOut = new HashMap<>();
// 获取每月入库总额
parmIn.put("type", 1);
parmIn.put("state", "已入库");
parmIn.put("depository_id", depositoryAll.get(j).getId());
parmIn.put("start", months.get(num + 1));
parmIn.put("end", months.get(num));
// 获取每月出库总额
parmOut.put("type", 2);
parmOut.put("state", "已出库");
parmOut.put("depository_id", depositoryAll.get(j).getId());
parmOut.put("start", months.get(num + 1));
parmOut.put("end", months.get(num));
// 获取月份中入库物料的总额
Integer wareHouseInCountByMonth1 = depositoryRecordService.findMaterialCountByMonth2(parmIn);
// 获取月份中出库物料的总额
Integer wareHouseOutCountByMonth1 = depositoryRecordService.findMaterialCountByMonth2(parmOut);
// 获取当前月库存容量
Integer wareHouseCount1 = result.get(k++) - wareHouseInCountByMonth1 + wareHouseOutCountByMonth1;
result.add(wareHouseCount1);
Map<String, Object> map = (Map<String, Object>) sourceList.get(num);
map.put(depositoryAll.get(j).getDname(), wareHouseCount1);
}
for (int i = 0; i < depositoryAll.size(); i++) {
result.remove(0);
}
}
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()));
}
List<String> barSource = new ArrayList<>();
barSource.add("month");
for (int i = 0; i < depositoryAll.size(); i++) {
barSource.add(depositoryAll.get(i).getDname());
}
sourceList.add(barSource);
return sourceList;
}
// 用于获取之前各月库存的线程任务
class getBeforeInventoryByMonthTask implements Callable<Object>{
List<Depository> depositoryAll;
List<Object> months;
Integer num;
Map<String,Object> map;
getBeforeInventoryByMonthTask( List<Depository> depositoryAll, List<Object> months,Integer num,Map<String,Object> map){
this.depositoryAll = depositoryAll;
this.months = months;
this.num = num;
this.map = map;
}
@Override
public Object call() throws Exception {
for (int j = 0; j < depositoryAll.size(); j++) {
// 获取该仓库本月库存
Map<String, Object> parmIn = new HashMap<>();
Map<String, Object> parmOut = new HashMap<>();
// 获取每月入库总额
parmIn.put("type", 1);
parmIn.put("state", "已入库");
parmIn.put("depository_id", depositoryAll.get(j).getId());
parmIn.put("start", months.get(num + 1));
parmIn.put("end", months.get(num));
// 获取每月出库总额
parmOut.put("type", 2);
parmOut.put("state", "已出库");
parmOut.put("depository_id", depositoryAll.get(j).getId());
parmOut.put("start", months.get(num + 1));
parmOut.put("end", months.get(num));
// 获取月份中入库物料的总额
// 测试
Integer wareHouseInCountByMonth1 = depositoryRecordService.findMaterialCountByMonth2(parmIn);
// 获取月份中出库物料的总额
// 测试
Integer wareHouseOutCountByMonth1 = depositoryRecordService.findMaterialCountByMonth2(parmOut);
// 获取当前月库存容量
// 测试
// Double wareHouseCount1 = result.get(k++) - wareHouseInCountByMonth1 + wareHouseOutCountByMonth1;
// result.add(wareHouseCount1);
// map.put(depositoryAll.get(j).getDname(), wareHouseCount1);
}
return null;
}
}
/**
* 获取本月之前的月份
*
* @return
*/
public static Map<String, Object> getPreviousMonth() {
Calendar instance = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Map<String, Object> source = new HashMap<>();
List<Object> sourceList = new ArrayList<>();
int month = instance.get(Calendar.MONTH) + 1;
ArrayList<Object> months = new ArrayList<>();
while (month > 0) {
instance.set(Calendar.MONTH, month);
instance.set(Calendar.DAY_OF_MONTH, 1);
source.put("month", month + "月");
months.add(DateUtil.DateTimeByMonthToTimeStamp(formatter.format(instance.getTime())));
month--;
sourceList.add(((HashMap<String, Object>) source).clone());
}
instance.set(Calendar.MONTH, month);
instance.set(Calendar.DAY_OF_MONTH, 1);
months.add(DateUtil.DateTimeByMonthToTimeStamp(formatter.format(instance.getTime())));
Map<String, Object> map = new HashMap<>();
map.put("months", months);
map.put("sourceList", sourceList);
return map;
}
}

190
src/test/java/com/dreamchaser/depository_manage/Test3.java

@ -0,0 +1,190 @@
package com.dreamchaser.depository_manage;
import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.controller.DepositoryController;
import com.dreamchaser.depository_manage.controller.PageController;
import com.dreamchaser.depository_manage.entity.MaterialType;
import com.dreamchaser.depository_manage.entity.UserByPort;
import com.dreamchaser.depository_manage.mapper.DepositoryMapper;
import com.dreamchaser.depository_manage.mapper.DepositoryRecordMapper;
import com.dreamchaser.depository_manage.mapper.MaterialTypeMapper;
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.MaterialTypeService;
import com.dreamchaser.depository_manage.utils.DateUtil;
import lombok.Data;
import org.apache.xmlbeans.impl.jam.mutable.MPackage;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
@SpringBootTest
@RunWith(SpringRunner.class)
public class Test3 {
@Autowired
MaterialTypeService materialTypeService;
@Autowired
DepositoryRecordService depositoryRecordService;
@Autowired
DepositoryRecordMapper depositoryRecordMapper;
@Autowired
DepositoryMapper depositoryMapper;
@Autowired
MaterialTypeMapper materialTypeMapper;
@Autowired
DepositoryService depositoryService;
@Autowired
RoleMapper roleMapper;
@Test
public void Test() {
UserByPort userByPort = PageController.FindUserById(78, null);
Map<String,Double> yesterdayData = new HashMap<>();
List<String> depositoryName = new ArrayList<>();
Map<String, Object> showData = getShowData("1", userByPort, yesterdayData, depositoryName);
System.out.println(JSONObject.toJSONString(showData));
}
public Map<String,Object> getShowData(String type,UserByPort userByPort,Map<String,Double> yesterdayData,List<String> depositoryName){
// 获取各仓库名称以及id
Map<String, Integer> depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort);
Iterator it = depositoryAllNameAndId.keySet().iterator();
// 仓库名称列表
//获取获取系统的当前日历对象
Calendar instance = Calendar.getInstance();
// 获取日期
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
int now = instance.get(Calendar.DAY_OF_WEEK) - 1;
List<Long> days = new ArrayList<>(); // 周一至今的每天
instance.add(Calendar.DATE, 1);
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) {
now--;
instance.add(Calendar.DATE, -1);
Long format = DateUtil.DateTimeByMonthToTimeStamp(formatter.format(instance.getTime()));
days.add(format);
}
List<Double> drCountbyDrName = new ArrayList<>();
// 定义线程
ExecutorService exs = Executors.newFixedThreadPool(depositoryAllNameAndId.size());
// 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 1.定义CompletionService
CompletionService<Object> completionService = new ExecutorCompletionService<Object>(exs);
// 每天各仓库入库数目
Map<String, Object> show_data = new HashMap<>();
while (it.hasNext()) {
Object next = it.next();
getApplicationRecordByDate getApplicationRecordByDate = new getApplicationRecordByDate(type, next, days, depositoryAllNameAndId);
getApplicationRecordByDate.setShow_data(show_data);
getApplicationRecordByDate.setDepositoryName(depositoryName);
getApplicationRecordByDate.setYesterdayData(yesterdayData);
Future<Object> future = completionService.submit(getApplicationRecordByDate);
futureList.add(future);
}
for (int i = 0; i < depositoryAllNameAndId.size(); i++) {
Object result = null;
try {
result = completionService.take().get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
return show_data;
}
@Data
class getApplicationRecordByDate implements Callable<Object>{
Object key;
List<Long> days;
Map<String, Integer> depositoryAllNameAndId;
List<String> depositoryName;
Map<String,Double> yesterdayData;
String type;
Map<String, Object> show_data;
getApplicationRecordByDate(String type,Object key,List<Long> days,Map<String, Integer> depositoryAllNameAndId ){
this.key = key;
this.depositoryAllNameAndId = depositoryAllNameAndId;
this.days = days;
this.type = type;
}
@Override
public Object call() throws Exception {
int i;
List<Double> drCountbyDrName = new ArrayList<>();
for (i = days.size() - 1; i > 0; i--) {
// 遍历 Map并计算各仓库的入库数
if (i == days.size() - 1) {
depositoryName.add(key.toString());
}
Integer val = (Integer) depositoryAllNameAndId.get(key);
// 获取一段时间内的库存额度
Double depositoryRecordByDate1 = depositoryRecordService.findApplicationRecordByDate(days.get(i - 1), days.get(i), Integer.parseInt(type), val);
drCountbyDrName.add(depositoryRecordByDate1);
if (i == 2) {
yesterdayData.put(key.toString(), depositoryRecordByDate1);
}
}
show_data.put(key.toString(),drCountbyDrName);
return null;
}
}
/**
* 获取本月之前的月份
*
* @return
*/
public static Map<String, Object> getPreviousMonth() {
Calendar instance = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Map<String, Object> source = new HashMap<>();
List<Object> sourceList = new ArrayList<>();
int month = instance.get(Calendar.MONTH) + 1;
ArrayList<Object> months = new ArrayList<>();
while (month > 0) {
instance.set(Calendar.MONTH, month);
instance.set(Calendar.DAY_OF_MONTH, 1);
source.put("month", month + "月");
months.add(DateUtil.DateTimeByMonthToTimeStamp(formatter.format(instance.getTime())));
month--;
sourceList.add(((HashMap<String, Object>) source).clone());
}
instance.set(Calendar.MONTH, month);
instance.set(Calendar.DAY_OF_MONTH, 1);
months.add(DateUtil.DateTimeByMonthToTimeStamp(formatter.format(instance.getTime())));
Map<String, Object> map = new HashMap<>();
map.put("months", months);
map.put("sourceList", sourceList);
return map;
}
}

6
target/classes/application-test.yml

@ -79,9 +79,9 @@ mybatis:
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
log-prefix: mapper. log-prefix: mapper.
mybatis-plus: #mybatis-plus:
configuration: # configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
file: file:
uploadPath: D:/upLoad uploadPath: D:/upLoad

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

@ -17,6 +17,11 @@
<result column="minNumber" property="minNumber" jdbcType="INTEGER"/> <result column="minNumber" property="minNumber" jdbcType="INTEGER"/>
<result column="maxNumber" property="maxNumber" jdbcType="INTEGER"/> <result column="maxNumber" property="maxNumber" jdbcType="INTEGER"/>
</resultMap> </resultMap>
<resultMap id="inventoryByDname" type="com.dreamchaser.depository_manage.pojo.InventoryByDname">
<result column="inventory" property="inventory" jdbcType="INTEGER"/>
<result column="dname" property="dname" jdbcType="VARCHAR"/>
</resultMap>
<!-- This code was generated by TableGo tools, mark 1 end. --> <!-- This code was generated by TableGo tools, mark 1 end. -->
<!-- This code was generated by TableGo tools, mark 2 begin. --> <!-- This code was generated by TableGo tools, mark 2 begin. -->
@ -339,6 +344,14 @@
</if> </if>
</select> </select>
<select id="getToDayInventoryByDNameTest" resultMap="inventoryByDname">
select ifnull(sum(quantity),0.0) as inventory ,dname
from depositoryAndmaterial
where 1 = 1
GROUP BY dname
</select>
<select id="findUserNameByDepositoryId" resultType="string" parameterType="int"> <select id="findUserNameByDepositoryId" resultType="string" parameterType="int">
select uname select uname

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

@ -1128,7 +1128,7 @@
</select> </select>
<!-- 获取某月某物料入库总额--> <!-- 获取某月某物料入库总额-->
<select id="findApplicationInByMonth" parameterType="map" resultType="DOUBLE"> <select id="findApplicationInByMonth" parameterType="map" resultType="int">
select ifnull(sum(quantity),0) select ifnull(sum(quantity),0)
from applicationinrecordinfo from applicationinrecordinfo
where 1 = 1 where 1 = 1
@ -1139,6 +1139,29 @@
<if test="tname != null and tname != ''"> <if test="tname != null and tname != ''">
and tname = #{tname} and tname = #{tname}
</if> </if>
<if test="typeId != null and typeId != ''">
and mtid = #{typeId}
</if>
</select>
<select id="findApplicationInByMonthTest" parameterType="map" resultType="int">
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>
<if test="list != null">
and mtid in
<foreach collection="list" index="index" item="typeId" open="(" separator="," close=")">
#{typeId}
</foreach>
</if>
</select> </select>
<!-- 获取某月某物料出库总额--> <!-- 获取某月某物料出库总额-->

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

@ -27,6 +27,7 @@
<result column="depositoryIntroduce" property="depositoryIntroduce" jdbcType="VARCHAR"/> <result column="depositoryIntroduce" property="depositoryIntroduce" jdbcType="VARCHAR"/>
<result column="depositoryState" property="depositoryState" jdbcType="VARCHAR"/> <result column="depositoryState" property="depositoryState" jdbcType="VARCHAR"/>
<result column="did" property="depositoryId" jdbcType="VARCHAR"/> <result column="did" property="depositoryId" jdbcType="VARCHAR"/>
<result column="depositoryCode" property="depositoryCode" jdbcType="VARCHAR"/>
<result column="classes" property="classes" jdbcType="INTEGER"/> <result column="classes" property="classes" jdbcType="INTEGER"/>
</resultMap> </resultMap>
@ -35,7 +36,7 @@
</sql> </sql>
<sql id="roleNameAnddepositoryName"> <sql id="roleNameAnddepositoryName">
prid,userid as userId,name as roleName,dname as depositoryName,address as depositoryAddress ,introduce as depositoryIntroduce,state as depositoryState,did,classes prid,userid as userId,name as roleName,dname as depositoryName,address as depositoryAddress ,introduce as depositoryIntroduce,state as depositoryState,did,classes,code as depositoryCode
</sql> </sql>
<select id="findAllRole" resultMap="roleMap"> <select id="findAllRole" resultMap="roleMap">

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

@ -314,6 +314,7 @@
success: function (result) { success: function (result) {
layer.close(this.layerIndex); layer.close(this.layerIndex);
if (result.code === 0) { if (result.code === 0) {
console.log(result)
echartsRecords.setOption(optionRecords); echartsRecords.setOption(optionRecords);
echartsPies.setOption(optionPies); echartsPies.setOption(optionPies);
@ -372,6 +373,7 @@
optionDataset.series.push({type: 'bar'}) optionDataset.series.push({type: 'bar'})
} }
for (let i = 0; i < result.data.depository_data.mapData.mapDataList.length; i++) { for (let i = 0; i < result.data.depository_data.mapData.mapDataList.length; i++) {
optionMap.dataset.source.push(result.data.depository_data.mapData.mapDataList[i]); optionMap.dataset.source.push(result.data.depository_data.mapData.mapDataList[i]);
if(i < result.data.depository_data.mapData.mapDataList.length - 1) { if(i < result.data.depository_data.mapData.mapDataList.length - 1) {
@ -379,6 +381,9 @@
} }
} }
var month = new Date().getMonth() + 1; var month = new Date().getMonth() + 1;
optionMap.series.push( optionMap.series.push(
@ -454,6 +459,10 @@
}, },
series: optionPiesSeries series: optionPiesSeries
}; };
console.log(result)
console.log(optionRecords)
console.log(optionPies)
echartsRecords.setOption(optionRecords); echartsRecords.setOption(optionRecords);
echartsPies.setOption(optionPies); echartsPies.setOption(optionPies);
echartsDataset.setOption(optionDataset); echartsDataset.setOption(optionDataset);
@ -466,7 +475,7 @@
// echarts 窗口缩放自适应 // echarts 窗口缩放自适应
window.onresize = function () { window.onresize = function () {
echartsRecords.resize(); echartsRecords.resize();
} };
form.on('submit(thisWeek)', function () { form.on('submit(thisWeek)', function () {
$.ajax({ $.ajax({

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

@ -258,7 +258,7 @@
} }
}, },
data:[] data:[]
} };
// 柱状图 // 柱状图
optionDataset = { optionDataset = {
legend: {}, legend: {},
@ -282,7 +282,7 @@
}) })
} }
var dimensions = result.data.depository_data.sourceListByMonth[result.data.depository_data.sourceListByMonth.length - 1] var dimensions = result.data.depository_data.sourceListByMonth[result.data.depository_data.sourceListByMonth.length - 1]
optionDataset.dataset.dimensions = dimensions optionDataset.dataset.dimensions = dimensions;
for (let i = result.data.depository_data.sourceListByMonth.length - 2; i >= 0; i--) { for (let i = result.data.depository_data.sourceListByMonth.length - 2; i >= 0; i--) {
optionDataset.dataset.source.push(result.data.depository_data.sourceListByMonth[i]) optionDataset.dataset.source.push(result.data.depository_data.sourceListByMonth[i])
} }
@ -458,7 +458,7 @@
echartsRecords.setOption(optionRecords); echartsRecords.setOption(optionRecords);
} }
}) })
}) });
form.on('submit(lastWeek)', function () { form.on('submit(lastWeek)', function () {
$.ajax({ $.ajax({

8
target/classes/templates/pages/materialtype/materialType_view.html

@ -174,7 +174,7 @@
var req={}; var req={};
req.ids=[]; req.ids=[];
for (i=0,len=data.length;i<len;i++){ for (i=0,len=data.length;i<len;i++){
req.ids[i]=data[i].id; req.ids[i]=data[i].oldId;
} }
if(req.ids.length > 0) { if(req.ids.length > 0) {
layer.confirm('真的删除么', {icon: 2, title: '提示'}, function (index) { layer.confirm('真的删除么', {icon: 2, title: '提示'}, function (index) {
@ -279,7 +279,7 @@
maxmin: true, maxmin: true,
shadeClose: true, shadeClose: true,
area: ['100%', '100%'], area: ['100%', '100%'],
content: '/materialType_detail?id='+data.id, content: '/materialType_detail?id='+data.oldId,
end:function () { end:function () {
//执行搜索重载 //执行搜索重载
table.reload('currentTableId', { table.reload('currentTableId', {
@ -298,7 +298,7 @@
} }
else if (obj.event === 'delete') { else if (obj.event === 'delete') {
var req = {}; var req = {};
req.id = data.id; req.id = data.oldId;
$.ajax({ $.ajax({
url: "/materialType/findMaterialByMaterialTypeId", // 判断该类型下是否有物品 url: "/materialType/findMaterialByMaterialTypeId", // 判断该类型下是否有物品
type: "post", type: "post",
@ -367,7 +367,7 @@
} }
else if (obj.event == 'realDelete') { // 彻底删除 else if (obj.event == 'realDelete') { // 彻底删除
var req = {}; var req = {};
req.id = data.id; req.id = data.oldId;
$.ajax({ $.ajax({
url: "/materialType/findMaterialByMaterialTypeId", // 判断该类型下是否有物品 url: "/materialType/findMaterialByMaterialTypeId", // 判断该类型下是否有物品
type: "post", type: "post",

5
target/classes/templates/pages/warehouse/warehouse_view.html

@ -106,7 +106,9 @@
<script> <script>
function createQrCode() { function createQrCode() {
}; }
layui.use('form', function(){ layui.use('form', function(){
var form = layui.form, $ = layui.$; var form = layui.form, $ = layui.$;
@ -186,6 +188,7 @@
} }
}) })
} }
}); });
</script> </script>

Loading…
Cancel
Save