diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/home/controller/HomePageViewController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/home/controller/HomePageViewController.java
index dec9f70..973c0f6 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/home/controller/HomePageViewController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/home/controller/HomePageViewController.java
@@ -10,6 +10,7 @@ import org.jeecg.modules.system.entity.SysDictItem;
 import org.jeecg.modules.system.service.impl.SysDictItemServiceImpl;
 import org.jeecg.modules.wms.config.location.entity.Location;
 import org.jeecg.modules.wms.config.location.service.impl.LocationServiceImpl;
+import org.jeecg.modules.wms.home.service.HomePageViewService;
 import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail;
 import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryHeader;
 import org.jeecg.modules.wms.inventory.inventoryHeader.service.impl.InventoryDetailServiceImpl;
@@ -55,21 +56,7 @@ public class HomePageViewController {
 
 
     @Resource
-    ShipmentHeaderServiceImpl shipmentHeaderServiceImpl;
-    @Resource
-    ReceiptHeaderServiceImpl receiptHeaderServiceImpl;
-    @Resource
-    SysDictItemServiceImpl sysDictItemServiceImpl;
-    @Resource
-    LocationServiceImpl locationServiceImpl;
-    @Resource
-    InventoryDetailServiceImpl inventoryDetailServiceImpl;
-    @Resource
-    InventoryHeaderServiceImpl inventoryHeaderServiceImpl;
-    @Resource
-    TaskDetailServiceImpl taskDetailServiceImpl;
-    @Resource
-    TaskHeaderServiceImpl taskHeaderService;
+    HomePageViewService homePageViewService;
 
 
     /**
@@ -78,75 +65,7 @@ public class HomePageViewController {
      */
     @RequestMapping(value = "/deliveringAmount", method = {RequestMethod.PUT,RequestMethod.POST})
     public Result<String> deliveringAmount() {
-        //查询出库单的7天出库量
-        LambdaQueryWrapper<ShipmentHeader> shipmentHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
-        shipmentHeaderLambdaQueryWrapper
-        .select(ShipmentHeader::getCreateTime,ShipmentHeader::getTotalQty);
-        List<ShipmentHeader> shipmentHeaders = shipmentHeaderServiceImpl.list(shipmentHeaderLambdaQueryWrapper);
-        LinkedHashMap<String, String> list = new LinkedHashMap<>();
-
-        for (int i=6;i>=0;i--)
-        {
-            List<ShipmentHeader> shipmentHeadersCop = shipmentHeaders;
-            String today = new SimpleDateFormat("yyyy-MM-dd").format(System.currentTimeMillis() -(1000 * 60 * 60 * 24)*i).toString();
-            List<ShipmentHeader> collect = shipmentHeadersCop.stream().filter(shipmentHeader -> new SimpleDateFormat("yyyy-MM-dd").format(shipmentHeader.getCreateTime()).toString().contains(today)).collect(Collectors.toList());
-            list.put(today, String.valueOf(collect.size()));
-        }
-
-
-        //查询入库单的7天入库量
-        LambdaQueryWrapper<ReceiptHeader> receiptHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
-        receiptHeaderLambdaQueryWrapper
-                .select(ReceiptHeader::getCreateTime,ReceiptHeader::getTotalqty);
-        List<ReceiptHeader> receiptHeaders = receiptHeaderServiceImpl.list(receiptHeaderLambdaQueryWrapper);
-        LinkedHashMap<String, String> list2 = new LinkedHashMap<>();
-        for (int i=6;i>=0;i--)
-        {
-            List<ReceiptHeader> receiptHeadersCop = receiptHeaders;
-            String today = new SimpleDateFormat("yyyy-MM-dd").format(System.currentTimeMillis() -(1000 * 60 * 60 * 24)*i).toString();
-            List<ReceiptHeader> collect = receiptHeadersCop.stream().filter(ReceiptHeader -> new SimpleDateFormat("yyyy-MM-dd").format(ReceiptHeader.getCreateTime()).toString().contains(today)).collect(Collectors.toList());
-            list2.put(today, String.valueOf(collect.size()));
-        }
-
-        Option option = new Option();
-        option.tooltip().trigger(Trigger.axis).axisPointer().type(PointerType.cross);
-        option.grid().setLeft("3%");
-        option.grid().setRight("4%");
-        option.grid().setBottom("3%");
-        List<Object> content = new ArrayList<>();
-        content.add("#c23531");
-        content.add("#2f4554");
-        option.setColor(content);
-        option.grid().containLabel(true);
-        option.legend().data().add("收货量");
-        option.legend().data().add("发货量");
-        Map<Object, Object> map = new HashMap<>();
-        Axis axis = new CategoryAxis() ;
-        axis.boundaryGap(false);
-        Line line = new Line();
-        line.setName("发货量");
-        for (String key : list.keySet()) {
-            Object o1 = key;
-            Object o2 = list.get(key);
-            axis.data().add(o1);
-            line.data().add(o2);
-        }
-
-        Line line2 = new Line();
-        line2.setName("收货量");
-        for (String key : list2.keySet()) {
-            Object o1 = key;
-            Object o2 = list2.get(key);
-            line2.data().add(o2);
-        }
-
-
-        option.setxAxis(Arrays.asList(axis));
-        ValueAxis yAxis = new ValueAxis();
-        option.setyAxis(Arrays.asList(yAxis));
-        option.series(line,line2);
-        String format = GsonUtil.format(option);
-        return Result.ok(GsonUtil.format(option));
+        return homePageViewService.deliveringAmount();
     }
 
 
@@ -156,57 +75,7 @@ public class HomePageViewController {
      */
     @RequestMapping(value = "/inventoryUtilization", method = {RequestMethod.PUT,RequestMethod.POST})
     public Result<String> inventoryUtilization() {
-
-        //查询所有容器 select限制字段速度更快
-        LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery();
-        locationLambdaQueryWrapper.select(Location::getContainerCode);
-        List<Location> locations = locationServiceImpl.list(locationLambdaQueryWrapper);
-
-        //先存储总数
-        int inStock=locations.size();
-
-        //删除为空的数量
-        locations.removeIf(location -> StringUtils.isEmpty(location.getContainerCode()));
-
-        //有货数量 总数-无货数量
-        inStock=inStock-locations.size();
-
-        Option option = new Option();
-//        option.title("库存状态分布").title().x("center");
-        option.tooltip(Trigger.item).tooltip().formatter("{a} <br/>{b} : {c} ({d}%)");
-        option.legend().setOrient(Orient.vertical);
-        option.legend().setRight(10);
-        option.legend().setTop(20);
-        option.legend().setBottom(20);
-        option.legend().setData(new ArrayList<String>());
-        List<Object> content = new ArrayList<>();
-        content.add("#c23531");
-        content.add("#2f4554");
-        option.setColor(content);
-        Pie pie = new Pie();
-        pie.setName("货位状态");
-        pie.setType(SeriesType.pie);
-        pie.setRadius("55%");
-        pie.setCenter(new String[]{"40%","50%"});
-        Normal normal = new Normal();
-        normal.setFormatter("{b} \n {c} ({d}%)");
-        normal.setBarBorderColor("#eee");
-        normal.setBorderWidth(1);
-        normal.setBorderRadius(4);
-        pie.label().normal(normal);
-        pie.itemStyle().emphasis().setShadowBlur(10);
-        pie.itemStyle().emphasis().setShadowOffsetX(0);
-        pie.itemStyle().emphasis().setShadowColor("rgba(0, 0, 0, 0.4)");
-
-        option.legend().data().add("有货");
-        pie.data().add(new ChartData("有货", Convert.toDouble(inStock)));
-
-        option.legend().data().add("无货");
-        pie.data().add(new ChartData("无货", Convert.toDouble(locations.size())));
-
-        option.series(pie);
-        String format = GsonUtil.format(option);
-        return Result.ok(GsonUtil.format(option));
+        return homePageViewService.inventoryUtilization();
     }
 
 
@@ -216,58 +85,7 @@ public class HomePageViewController {
      */
     @RequestMapping(value = "/inventoryStatus", method = {RequestMethod.PUT,RequestMethod.POST})
     public Result<String> inventoryStatus() {
-        Option option = new Option();
-        option.tooltip(Trigger.item).tooltip().formatter("{a} <br/>{b} : {c} ({d}%)");
-        option.legend().setOrient(Orient.vertical);
-        option.legend().setRight(10);
-        option.legend().setTop(20);
-        option.legend().setBottom(10);
-        option.legend().setData(new ArrayList<String>());
-        List<Object> content = new ArrayList<>();
-        content.add("#c23531");
-        content.add("#2f4554");
-        option.setColor(content);
-
-        Pie pie = new Pie();
-        pie.setName("库存状态");
-        pie.setType(SeriesType.pie);
-        pie.setRadius("70%");
-        pie.setCenter(new String[]{"40%","50%"});
-        Normal normal = new Normal();
-        normal.setFormatter("{b} \n {c} ({d}%)");
-        normal.setBarBorderColor("#eee");
-        normal.setBorderWidth(1);
-        normal.setBorderRadius(4);
-        pie.label().normal(normal);
-        pie.itemStyle().emphasis().setShadowBlur(10);
-        pie.itemStyle().emphasis().setShadowOffsetX(0);
-        pie.itemStyle().emphasis().setShadowColor("rgba(0, 0, 0, 0.4)");
-
-
-        QueryWrapper<InventoryDetail> queryWrapper = new QueryWrapper<>();
-        queryWrapper.select("inventory_status ,SUM(qty) qty")
-                .eq("warehouse_code", "CS0001").groupBy("inventory_status");
-        List<InventoryDetail> inventoryDetails = inventoryDetailServiceImpl.list(queryWrapper);
-
-
-        LambdaQueryWrapper<SysDictItem> sysDictItemLambdaQueryWrapper = Wrappers.lambdaQuery();
-        sysDictItemLambdaQueryWrapper.select(SysDictItem::getItemText,SysDictItem::getItemValue);
-        List<SysDictItem> sysDictItems = sysDictItemServiceImpl.list(sysDictItemLambdaQueryWrapper);
-        List<String> collect = sysDictItems.stream().map(SysDictItem::getItemValue).collect(Collectors.toList());
-        Object[] objects = collect.toArray();
-
-
-        for(InventoryDetail inventoryDetail : inventoryDetails){
-            int i = ArrayUtil.indexOf(objects, inventoryDetail.getInventoryStatus());
-            ChartData chartData = new ChartData();
-            option.legend().getData().add(sysDictItems.get(i).getItemText());
-            chartData.setName(sysDictItems.get(i).getItemText());
-            chartData.setValue(Convert.toDouble(inventoryDetail.getQty()));
-            pie.data().add(chartData);
-        }
-        option.series().add(pie);
-        String format = GsonUtil.format(option);
-        return Result.ok(GsonUtil.format(option));
+        return homePageViewService.inventoryStatus();
     }
 
 
@@ -277,57 +95,7 @@ public class HomePageViewController {
      */
     @RequestMapping(value = "/inventoryOverview", method = {RequestMethod.PUT,RequestMethod.POST})
     public Result<String> inventoryOverview() {
-
-        QueryWrapper<InventoryDetail> queryWrapper = new QueryWrapper<>();
-        queryWrapper.select("material_name, sum(qty) AS qty")
-                .eq("warehouse_code", "CS0001").groupBy("material_name");
-        List<InventoryDetail> inventoryDetails = inventoryDetailServiceImpl.list(queryWrapper);
-        Option option = new Option();
-        option.tooltip(Trigger.item).tooltip().formatter("{a} <br/>{b} : {c} ({d}%)");
-        option.legend().setOrient(Orient.vertical);
-        option.legend().setRight(10);
-        option.legend().setTop(10);
-        option.legend().setBottom(10);
-        option.legend().setData(new ArrayList<String>());
-        option.legend().setType(LegendType.scroll);
-        List<Object> content = new ArrayList<>();
-        content.add("#c23531");
-        content.add("#2f4554");
-        option.setColor(content);
-        Pie pie = new Pie();
-        pie.setName("库存");
-        pie.setType(SeriesType.pie);
-        pie.setRadius("55%");
-        pie.setCenter(new String[]{"40%","50%"});
-        pie.itemStyle().emphasis().setShadowBlur(10);
-        pie.itemStyle().emphasis().setShadowOffsetX(0);
-        pie.itemStyle().emphasis().setShadowColor("rgba(0, 0, 0, 0.4)");
-        Normal normal = new Normal();
-        normal.setFormatter("{b} \n {c} ({d}%)");
-        normal.setBarBorderColor("#eee");
-        normal.setBorderWidth(1);
-        normal.setBorderRadius(4);
-        pie.label().normal(normal);
-
-        int i = 0;
-        Map<String, Boolean> map = new HashMap<>();
-        for(InventoryDetail inventory: inventoryDetails){
-            Object o1 = inventory.getMaterialName();
-            Object o2 = inventory.getQty();
-            option.legend().data().add(o1);
-            pie.data().add(new ChartData(o1.toString(), Convert.toDouble(o2)));
-            if(i<6){
-                map.put(o1.toString(),true);
-            }else{
-                map.put(o1.toString(),false);
-            }
-            i++;
-        }
-        option.series(pie);
-        option.legend().setSelected(map);
-        String format = GsonUtil.format(option);
-        return Result.ok(GsonUtil.format(option));
-
+        return homePageViewService.inventoryOverview();
     }
 
 
@@ -338,61 +106,7 @@ public class HomePageViewController {
      */
     @RequestMapping(value = "/getCommonData", method = {RequestMethod.PUT,RequestMethod.POST})
     public Result getCommonData() {
-
-        //昨天日期
-        String today = new SimpleDateFormat("yyyy-MM-dd").format(System.currentTimeMillis() - 1000 * 60 * 60 * 24).toString();
-        Map<String, Object> map = new HashMap<>();
-
-        //今天入库量
-        LambdaQueryWrapper<TaskDetail> taskDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
-        taskDetailLambdaQueryWrapper.select(TaskDetail::getTaskType,TaskDetail::getQty).gt(TaskDetail::getCreateTime,today);
-        List<TaskDetail> taskDetails = taskDetailServiceImpl.list(taskDetailLambdaQueryWrapper);
-        BigDecimal receiptQty = BigDecimal.ZERO;
-        BigDecimal shipmentQty = BigDecimal.ZERO;
-
-        for(TaskDetail taskDetail : taskDetails)
-        {
-            if (taskDetail.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLERECEIPT))
-            {
-                receiptQty=receiptQty.add(taskDetail.getQty());
-            }else if (taskDetail.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLESHIPMENT))
-            {
-                shipmentQty=shipmentQty.add(taskDetail.getQty());
-            }
-
-        }
-        map.put("receiptTotal",receiptQty);
-        map.put("shipmentTotal",shipmentQty);
-        //今日交易量
-        map.put("bllCount",receiptQty.add(shipmentQty));
-
-
-        //库存总数
-        LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
-        inventoryHeaderLambdaQueryWrapper.select(InventoryHeader::getTotalQty);
-        List<InventoryHeader> inventoryHeaders = inventoryHeaderServiceImpl.list(inventoryHeaderLambdaQueryWrapper);
-        BigDecimal inventoryQty = BigDecimal.ZERO;
-        for(InventoryHeader inventoryHeader : inventoryHeaders)
-        {
-            inventoryQty=inventoryQty.add(inventoryHeader.getTotalQty());
-        }
-        map.put("inventoryTotal",inventoryQty);
-
-
-        //库内品数
-        LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
-        inventoryDetailLambdaQueryWrapper.select(InventoryDetail::getId).groupBy(InventoryDetail::getInventoryStatus);
-        List<InventoryDetail> inventoryDetails = inventoryDetailServiceImpl.list(inventoryDetailLambdaQueryWrapper);
-        map.put("materialCount",inventoryDetails.size());
-
-        //待执行任务数
-        LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
-        taskHeaderLambdaQueryWrapper.ge(TaskHeader::getStatus,QuantityConstant.TASK_STATUS_RELEASE)
-                .lt(TaskHeader::getStatus,QuantityConstant.TASK_STATUS_COMPLETED);
-        List<TaskHeader> taskHeaders = taskHeaderService.list(taskHeaderLambdaQueryWrapper);
-        map.put("taskUncompletedTotal",taskHeaders.size());
-
-        return Result.ok(map);
+        return homePageViewService.getCommonData();
     }
 
 }
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/home/service/HomePageViewService.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/home/service/HomePageViewService.java
new file mode 100644
index 0000000..ba84956
--- /dev/null
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/home/service/HomePageViewService.java
@@ -0,0 +1,30 @@
+package org.jeecg.modules.wms.home.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.wms.config.location.entity.Location;
+import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader;
+
+import java.io.Serializable;
+import java.util.Collection;
+
+/**
+ * @Description: 任务表
+ * @Author: jeecg-boot
+ * @Date:   2022-11-10
+ * @Version: V1.0
+ */
+public interface HomePageViewService {
+
+
+    Result<String> deliveringAmount();
+
+    Result<String> inventoryUtilization();
+
+    Result<String> inventoryStatus();
+
+    Result<String> inventoryOverview();
+
+    Result getCommonData();
+
+}
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/home/service/impl/HomePageViewServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/home/service/impl/HomePageViewServiceImpl.java
new file mode 100644
index 0000000..5167fb7
--- /dev/null
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/home/service/impl/HomePageViewServiceImpl.java
@@ -0,0 +1,374 @@
+package org.jeecg.modules.wms.home.service.impl;
+
+
+import cn.hutool.core.util.ArrayUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.abel533.echarts.Option;
+import com.github.abel533.echarts.axis.Axis;
+import com.github.abel533.echarts.axis.CategoryAxis;
+import com.github.abel533.echarts.axis.ValueAxis;
+import com.github.abel533.echarts.code.*;
+import com.github.abel533.echarts.json.GsonUtil;
+import com.github.abel533.echarts.series.Line;
+import com.github.abel533.echarts.series.Pie;
+import com.github.abel533.echarts.style.itemstyle.Normal;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.system.entity.SysDictItem;
+import org.jeecg.modules.system.service.impl.SysDictItemServiceImpl;
+import org.jeecg.modules.wms.config.location.entity.Location;
+import org.jeecg.modules.wms.config.location.service.impl.LocationServiceImpl;
+import org.jeecg.modules.wms.home.service.HomePageViewService;
+
+import org.jeecg.modules.wms.home.support.ChartData;
+import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail;
+import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryHeader;
+import org.jeecg.modules.wms.inventory.inventoryHeader.service.impl.InventoryDetailServiceImpl;
+import org.jeecg.modules.wms.inventory.inventoryHeader.service.impl.InventoryHeaderServiceImpl;
+import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptHeader;
+import org.jeecg.modules.wms.receipt.receiptHeader.service.impl.ReceiptHeaderServiceImpl;
+import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentHeader;
+import org.jeecg.modules.wms.shipment.shipmentHeader.service.impl.ShipmentHeaderServiceImpl;
+import org.jeecg.modules.wms.task.taskHeader.entity.TaskDetail;
+import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader;
+import org.jeecg.modules.wms.task.taskHeader.service.impl.TaskDetailServiceImpl;
+import org.jeecg.modules.wms.task.taskHeader.service.impl.TaskHeaderServiceImpl;
+import org.jeecg.utils.StringUtils;
+import org.jeecg.utils.constant.QuantityConstant;
+import org.jeecg.utils.support.Convert;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+
+/**
+ * @Description: 任务表
+ * @Author: jeecg-boot
+ * @Date:   2022-11-10
+ * @Version: V1.0
+ */
+@Service
+public class HomePageViewServiceImpl implements HomePageViewService {
+
+
+    @Resource
+    ShipmentHeaderServiceImpl shipmentHeaderServiceImpl;
+    @Resource
+    ReceiptHeaderServiceImpl receiptHeaderServiceImpl;
+    @Resource
+    SysDictItemServiceImpl sysDictItemServiceImpl;
+    @Resource
+    LocationServiceImpl locationServiceImpl;
+    @Resource
+    InventoryDetailServiceImpl inventoryDetailServiceImpl;
+    @Resource
+    InventoryHeaderServiceImpl inventoryHeaderServiceImpl;
+    @Resource
+    TaskDetailServiceImpl taskDetailServiceImpl;
+    @Resource
+    TaskHeaderServiceImpl taskHeaderService;
+    @Resource
+    HomePageViewService homePageViewService;
+
+
+    @Override
+    public Result<String> deliveringAmount() {
+        //查询出库单的7天出库量
+        LambdaQueryWrapper<ShipmentHeader> shipmentHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
+        shipmentHeaderLambdaQueryWrapper
+                .select(ShipmentHeader::getCreateTime,ShipmentHeader::getTotalQty);
+        List<ShipmentHeader> shipmentHeaders = shipmentHeaderServiceImpl.list(shipmentHeaderLambdaQueryWrapper);
+        LinkedHashMap<String, String> list = new LinkedHashMap<>();
+
+        for (int i=6;i>=0;i--)
+        {
+            List<ShipmentHeader> shipmentHeadersCop = shipmentHeaders;
+            String today = new SimpleDateFormat("yyyy-MM-dd").format(System.currentTimeMillis() -(1000 * 60 * 60 * 24)*i).toString();
+            List<ShipmentHeader> collect = shipmentHeadersCop.stream().filter(shipmentHeader -> new SimpleDateFormat("yyyy-MM-dd").format(shipmentHeader.getCreateTime()).toString().contains(today)).collect(Collectors.toList());
+            list.put(today, String.valueOf(collect.size()));
+        }
+
+
+        //查询入库单的7天入库量
+        LambdaQueryWrapper<ReceiptHeader> receiptHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
+        receiptHeaderLambdaQueryWrapper
+                .select(ReceiptHeader::getCreateTime,ReceiptHeader::getTotalqty);
+        List<ReceiptHeader> receiptHeaders = receiptHeaderServiceImpl.list(receiptHeaderLambdaQueryWrapper);
+        LinkedHashMap<String, String> list2 = new LinkedHashMap<>();
+        for (int i=6;i>=0;i--)
+        {
+            List<ReceiptHeader> receiptHeadersCop = receiptHeaders;
+            String today = new SimpleDateFormat("yyyy-MM-dd").format(System.currentTimeMillis() -(1000 * 60 * 60 * 24)*i).toString();
+            List<ReceiptHeader> collect = receiptHeadersCop.stream().filter(ReceiptHeader -> new SimpleDateFormat("yyyy-MM-dd").format(ReceiptHeader.getCreateTime()).toString().contains(today)).collect(Collectors.toList());
+            list2.put(today, String.valueOf(collect.size()));
+        }
+
+        Option option = new Option();
+        option.tooltip().trigger(Trigger.axis).axisPointer().type(PointerType.cross);
+        option.grid().setLeft("3%");
+        option.grid().setRight("4%");
+        option.grid().setBottom("3%");
+        List<Object> content = new ArrayList<>();
+        content.add("#c23531");
+        content.add("#2f4554");
+        option.setColor(content);
+        option.grid().containLabel(true);
+        option.legend().data().add("收货量");
+        option.legend().data().add("发货量");
+        Map<Object, Object> map = new HashMap<>();
+        Axis axis = new CategoryAxis() ;
+        axis.boundaryGap(false);
+        Line line = new Line();
+        line.setName("发货量");
+        for (String key : list.keySet()) {
+            Object o1 = key;
+            Object o2 = list.get(key);
+            axis.data().add(o1);
+            line.data().add(o2);
+        }
+
+        Line line2 = new Line();
+        line2.setName("收货量");
+        for (String key : list2.keySet()) {
+            Object o1 = key;
+            Object o2 = list2.get(key);
+            line2.data().add(o2);
+        }
+
+
+        option.setxAxis(Arrays.asList(axis));
+        ValueAxis yAxis = new ValueAxis();
+        option.setyAxis(Arrays.asList(yAxis));
+        option.series(line,line2);
+        String format = GsonUtil.format(option);
+        return Result.ok(GsonUtil.format(option));
+    }
+
+    @Override
+    public Result<String> inventoryUtilization() {
+        //查询所有容器 select限制字段速度更快
+        LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery();
+        locationLambdaQueryWrapper.select(Location::getContainerCode);
+        List<Location> locations = locationServiceImpl.list(locationLambdaQueryWrapper);
+
+        //先存储总数
+        int inStock=locations.size();
+
+        //删除为空的数量
+        locations.removeIf(location -> StringUtils.isEmpty(location.getContainerCode()));
+
+        //有货数量 总数-无货数量
+        inStock=inStock-locations.size();
+
+        Option option = new Option();
+//        option.title("库存状态分布").title().x("center");
+        option.tooltip(Trigger.item).tooltip().formatter("{a} <br/>{b} : {c} ({d}%)");
+        option.legend().setOrient(Orient.vertical);
+        option.legend().setRight(10);
+        option.legend().setTop(20);
+        option.legend().setBottom(20);
+        option.legend().setData(new ArrayList<String>());
+        List<Object> content = new ArrayList<>();
+        content.add("#c23531");
+        content.add("#2f4554");
+        option.setColor(content);
+        Pie pie = new Pie();
+        pie.setName("货位状态");
+        pie.setType(SeriesType.pie);
+        pie.setRadius("55%");
+        pie.setCenter(new String[]{"40%","50%"});
+        Normal normal = new Normal();
+        normal.setFormatter("{b} \n {c} ({d}%)");
+        normal.setBarBorderColor("#eee");
+        normal.setBorderWidth(1);
+        normal.setBorderRadius(4);
+        pie.label().normal(normal);
+        pie.itemStyle().emphasis().setShadowBlur(10);
+        pie.itemStyle().emphasis().setShadowOffsetX(0);
+        pie.itemStyle().emphasis().setShadowColor("rgba(0, 0, 0, 0.4)");
+
+        option.legend().data().add("有货");
+        pie.data().add(new ChartData("有货", Convert.toDouble(inStock)));
+
+        option.legend().data().add("无货");
+        pie.data().add(new ChartData("无货", Convert.toDouble(locations.size())));
+
+        option.series(pie);
+        String format = GsonUtil.format(option);
+        return Result.ok(GsonUtil.format(option));
+    }
+
+    @Override
+    public Result<String> inventoryStatus() {
+        Option option = new Option();
+        option.tooltip(Trigger.item).tooltip().formatter("{a} <br/>{b} : {c} ({d}%)");
+        option.legend().setOrient(Orient.vertical);
+        option.legend().setRight(10);
+        option.legend().setTop(20);
+        option.legend().setBottom(10);
+        option.legend().setData(new ArrayList<String>());
+        List<Object> content = new ArrayList<>();
+        content.add("#c23531");
+        content.add("#2f4554");
+        option.setColor(content);
+
+        Pie pie = new Pie();
+        pie.setName("库存状态");
+        pie.setType(SeriesType.pie);
+        pie.setRadius("70%");
+        pie.setCenter(new String[]{"40%","50%"});
+        Normal normal = new Normal();
+        normal.setFormatter("{b} \n {c} ({d}%)");
+        normal.setBarBorderColor("#eee");
+        normal.setBorderWidth(1);
+        normal.setBorderRadius(4);
+        pie.label().normal(normal);
+        pie.itemStyle().emphasis().setShadowBlur(10);
+        pie.itemStyle().emphasis().setShadowOffsetX(0);
+        pie.itemStyle().emphasis().setShadowColor("rgba(0, 0, 0, 0.4)");
+
+
+        QueryWrapper<InventoryDetail> queryWrapper = new QueryWrapper<>();
+        queryWrapper.select("inventory_status ,SUM(qty) qty")
+                .eq("warehouse_code", "CS0001").groupBy("inventory_status");
+        List<InventoryDetail> inventoryDetails = inventoryDetailServiceImpl.list(queryWrapper);
+
+
+        LambdaQueryWrapper<SysDictItem> sysDictItemLambdaQueryWrapper = Wrappers.lambdaQuery();
+        sysDictItemLambdaQueryWrapper.select(SysDictItem::getItemText,SysDictItem::getItemValue);
+        List<SysDictItem> sysDictItems = sysDictItemServiceImpl.list(sysDictItemLambdaQueryWrapper);
+        List<String> collect = sysDictItems.stream().map(SysDictItem::getItemValue).collect(Collectors.toList());
+        Object[] objects = collect.toArray();
+
+
+        for(InventoryDetail inventoryDetail : inventoryDetails){
+            int i = ArrayUtil.indexOf(objects, inventoryDetail.getInventoryStatus());
+            ChartData chartData = new ChartData();
+            option.legend().getData().add(sysDictItems.get(i).getItemText());
+            chartData.setName(sysDictItems.get(i).getItemText());
+            chartData.setValue(Convert.toDouble(inventoryDetail.getQty()));
+            pie.data().add(chartData);
+        }
+        option.series().add(pie);
+        String format = GsonUtil.format(option);
+        return Result.ok(GsonUtil.format(option));
+    }
+
+    @Override
+    public Result<String> inventoryOverview() {
+        QueryWrapper<InventoryDetail> queryWrapper = new QueryWrapper<>();
+        queryWrapper.select("material_name, sum(qty) AS qty")
+                .eq("warehouse_code", "CS0001").groupBy("material_name");
+        List<InventoryDetail> inventoryDetails = inventoryDetailServiceImpl.list(queryWrapper);
+        Option option = new Option();
+        option.tooltip(Trigger.item).tooltip().formatter("{a} <br/>{b} : {c} ({d}%)");
+        option.legend().setOrient(Orient.vertical);
+        option.legend().setRight(10);
+        option.legend().setTop(10);
+        option.legend().setBottom(10);
+        option.legend().setData(new ArrayList<String>());
+        option.legend().setType(LegendType.scroll);
+        List<Object> content = new ArrayList<>();
+        content.add("#c23531");
+        content.add("#2f4554");
+        option.setColor(content);
+        Pie pie = new Pie();
+        pie.setName("库存");
+        pie.setType(SeriesType.pie);
+        pie.setRadius("55%");
+        pie.setCenter(new String[]{"40%","50%"});
+        pie.itemStyle().emphasis().setShadowBlur(10);
+        pie.itemStyle().emphasis().setShadowOffsetX(0);
+        pie.itemStyle().emphasis().setShadowColor("rgba(0, 0, 0, 0.4)");
+        Normal normal = new Normal();
+        normal.setFormatter("{b} \n {c} ({d}%)");
+        normal.setBarBorderColor("#eee");
+        normal.setBorderWidth(1);
+        normal.setBorderRadius(4);
+        pie.label().normal(normal);
+
+        int i = 0;
+        Map<String, Boolean> map = new HashMap<>();
+        for(InventoryDetail inventory: inventoryDetails){
+            Object o1 = inventory.getMaterialName();
+            Object o2 = inventory.getQty();
+            option.legend().data().add(o1);
+            pie.data().add(new ChartData(o1.toString(), Convert.toDouble(o2)));
+            if(i<6){
+                map.put(o1.toString(),true);
+            }else{
+                map.put(o1.toString(),false);
+            }
+            i++;
+        }
+        option.series(pie);
+        option.legend().setSelected(map);
+        String format = GsonUtil.format(option);
+        return Result.ok(GsonUtil.format(option));
+    }
+
+    @Override
+    public Result getCommonData() {
+        //昨天日期
+        String today = new SimpleDateFormat("yyyy-MM-dd").format(System.currentTimeMillis() - 1000 * 60 * 60 * 24).toString();
+        Map<String, Object> map = new HashMap<>();
+
+        //今天入库量
+        LambdaQueryWrapper<TaskDetail> taskDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
+        taskDetailLambdaQueryWrapper.select(TaskDetail::getTaskType,TaskDetail::getQty).gt(TaskDetail::getCreateTime,today);
+        List<TaskDetail> taskDetails = taskDetailServiceImpl.list(taskDetailLambdaQueryWrapper);
+        BigDecimal receiptQty = BigDecimal.ZERO;
+        BigDecimal shipmentQty = BigDecimal.ZERO;
+
+        for(TaskDetail taskDetail : taskDetails)
+        {
+            if (taskDetail.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLERECEIPT))
+            {
+                receiptQty=receiptQty.add(taskDetail.getQty());
+            }else if (taskDetail.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLESHIPMENT))
+            {
+                shipmentQty=shipmentQty.add(taskDetail.getQty());
+            }
+
+        }
+        map.put("receiptTotal",receiptQty);
+        map.put("shipmentTotal",shipmentQty);
+        //今日交易量
+        map.put("bllCount",receiptQty.add(shipmentQty));
+
+
+        //库存总数
+        LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
+        inventoryHeaderLambdaQueryWrapper.select(InventoryHeader::getTotalQty);
+        List<InventoryHeader> inventoryHeaders = inventoryHeaderServiceImpl.list(inventoryHeaderLambdaQueryWrapper);
+        BigDecimal inventoryQty = BigDecimal.ZERO;
+        for(InventoryHeader inventoryHeader : inventoryHeaders)
+        {
+            inventoryQty=inventoryQty.add(inventoryHeader.getTotalQty());
+        }
+        map.put("inventoryTotal",inventoryQty);
+
+
+        //库内品数
+        LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
+        inventoryDetailLambdaQueryWrapper.select(InventoryDetail::getId).groupBy(InventoryDetail::getInventoryStatus);
+        List<InventoryDetail> inventoryDetails = inventoryDetailServiceImpl.list(inventoryDetailLambdaQueryWrapper);
+        map.put("materialCount",inventoryDetails.size());
+
+        //待执行任务数
+        LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
+        taskHeaderLambdaQueryWrapper.ge(TaskHeader::getStatus,QuantityConstant.TASK_STATUS_RELEASE)
+                .lt(TaskHeader::getStatus,QuantityConstant.TASK_STATUS_COMPLETED);
+        List<TaskHeader> taskHeaders = taskHeaderService.list(taskHeaderLambdaQueryWrapper);
+        map.put("taskUncompletedTotal",taskHeaders.size());
+
+        return Result.ok(map);
+    }
+
+
+}