From f214dd3e6828de72ee615097a65a1f2df88e047a Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 28 Nov 2022 16:21:47 +0800
Subject: [PATCH] 20221126

---
 src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java                |    4 +
 src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java          |    3 +
 src/main/resources/templates/febs/views/modules/order/goodsStatistics.html |   38 ++++++++++++
 src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java  |   12 ++++
 src/main/java/cc/mrbird/febs/mall/vo/AdminGoodsStatisticsVo.java           |   11 +++
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java  |    7 ++
 src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java |   16 +++++
 src/main/resources/mapper/modules/MallOrderInfoMapper.xml                  |   17 +++++
 src/main/resources/templates/febs/views/modules/order/orderList.html       |   20 ++++++
 src/main/java/cc/mrbird/febs/mall/service/IAdminMallOrderService.java      |    3 +
 10 files changed, 131 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java
index 4206392..ac9a274 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java
@@ -9,6 +9,7 @@
 import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum;
 import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
 import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.common.utils.FebsUtil;
 import cc.mrbird.febs.common.utils.SpringContextHolder;
 import cc.mrbird.febs.common.utils.excl.ExcelSheetPO;
 import cc.mrbird.febs.common.utils.excl.ExcelUtil;
@@ -25,6 +26,7 @@
 import cc.mrbird.febs.pay.service.IXcxPayService;
 import cc.mrbird.febs.pay.util.WechatConfigure;
 import cc.mrbird.febs.system.entity.Dept;
+import cc.mrbird.febs.system.entity.User;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
@@ -606,4 +608,18 @@
         return adminMallOrderService.showStateSwitchOff(id);
     }
 
+    /**
+     * 订单列表-统计商品份数
+     */
+    @GetMapping("goodsStatistics")
+    public FebsResponse goodsStatistics(MallOrderItem mallOrderItem, QueryRequest request, Integer parentId) {
+        if (parentId == null) {
+            ViewMallOrderController.orderIdsStr = "";
+        }
+        long[] longs = StrUtil.splitToLong(ViewMallOrderController.orderIdsStr, ',');
+        mallOrderItem.setOrderIdsStr(longs);
+        Map<String, Object> data = getDataTable(adminMallOrderService.goodsStatistics(mallOrderItem,request));
+        return new FebsResponse().success().data(data);
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java
index b8c5e06..6a55b29 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java
@@ -215,4 +215,16 @@
         return FebsUtil.view("modules/order/refundPayInfo");
     }
 
+    /**
+     * 订单列表-统计商品份数
+     * @return
+     */
+    public static String orderIdsStr;
+    @GetMapping("/goodsStatistics/{statistics}")
+    @RequiresPermissions("goodsStatistics:update")
+    public String goodsStatistics(@PathVariable String statistics, Model model) {
+        orderIdsStr = statistics;
+        return FebsUtil.view("modules/order/goodsStatistics");
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java
index a273b60..c162af5 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java
@@ -1,6 +1,7 @@
 package cc.mrbird.febs.mall.entity;
 
 import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -44,4 +45,7 @@
     private Integer hasSettle;
     //1:正常 2:退款中3:已退
     private Integer state;
+
+    @TableField(exist = false)
+    private long[] orderIdsStr;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
index bccbe07..0d655f4 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
@@ -5,6 +5,7 @@
 import cc.mrbird.febs.mall.dto.OrderListDto;
 import cc.mrbird.febs.mall.entity.MallOrderInfo;
 import cc.mrbird.febs.mall.entity.MallOrderItem;
+import cc.mrbird.febs.mall.vo.AdminGoodsStatisticsVo;
 import cc.mrbird.febs.mall.vo.AdminMallOrderInfoVo;
 import cc.mrbird.febs.mall.vo.AdminMallOrderVo;
 import cc.mrbird.febs.mall.vo.AdminOrderDetailVo;
@@ -76,4 +77,6 @@
     MallOrderInfo selectByIdAndTakeUniqueCode(@Param("orderId")long orderId,@Param("takeUniqueCode") String takeUniqueCode);
 
     MallOrderInfo selectAllOrderInfoByIdAndTakeUniqueCode(@Param("orderId")long orderId,@Param("takeUniqueCode") String takeUniqueCode);
+
+    IPage<AdminGoodsStatisticsVo> getGoodsStatisticsInPage(Page<AdminGoodsStatisticsVo> page, @Param("record") MallOrderItem mallOrderItem);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallOrderService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallOrderService.java
index 1be6703..97d8a43 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallOrderService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallOrderService.java
@@ -4,6 +4,7 @@
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.MallOrderInfo;
+import cc.mrbird.febs.mall.entity.MallOrderItem;
 import cc.mrbird.febs.mall.entity.MallOrderRefund;
 import cc.mrbird.febs.mall.entity.MallRefundEntity;
 import cc.mrbird.febs.mall.vo.*;
@@ -71,4 +72,6 @@
     void updateOrderStateAndDeliveryState(Long id, int value, int value1);
 
     IPage<MallRefundEntity> getOrderRefundListInPage(MallRefundEntity mallRefundEntity, QueryRequest request);
+
+    IPage<AdminGoodsStatisticsVo> goodsStatistics(MallOrderItem mallOrderItem, QueryRequest request);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
index 6713e9a..a9450bd 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
@@ -436,6 +436,13 @@
     }
 
     @Override
+    public IPage<AdminGoodsStatisticsVo> goodsStatistics(MallOrderItem mallOrderItem, QueryRequest request) {
+        Page<AdminGoodsStatisticsVo> page = new Page<>(request.getPageNum(), request.getPageSize());
+        IPage<AdminGoodsStatisticsVo> adminGoodsStatisticsVos = mallOrderInfoMapper.getGoodsStatisticsInPage(page, mallOrderItem);
+        return adminGoodsStatisticsVos;
+    }
+
+    @Override
     public void deliverGoodsByOrderNo(DeliverGoodsDto deliverGoodsDto) {
         MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectByOrderNo(deliverGoodsDto.getOrderNo());
         if (mallOrderInfo == null) {
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminGoodsStatisticsVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminGoodsStatisticsVo.java
new file mode 100644
index 0000000..4b32ba0
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminGoodsStatisticsVo.java
@@ -0,0 +1,11 @@
+package cc.mrbird.febs.mall.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "AdminGoodsStatisticsVo", description = "信息返回类")
+public class AdminGoodsStatisticsVo {
+    private String goodsName;
+    private Integer goodsCnt;
+}
diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
index c4e2735..3c4df5f 100644
--- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
+++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -466,4 +466,21 @@
         where a.del_flag=2 and  a.id = #{orderId} and a.take_unique_code = #{takeUniqueCode}
         order by a.created_time desc
     </select>
+
+    <select id="getGoodsStatisticsInPage" resultType="cc.mrbird.febs.mall.vo.AdminGoodsStatisticsVo">
+    select
+        goods_name goodsName,
+        SUM(cnt) goodsCnt
+    from mall_order_item
+    <where>
+        <if test="record.orderIdsStr != null">
+            and order_id in
+                <foreach collection="record.orderIdsStr" item="id" index="index" open="(" close=")" separator=",">
+                    #{id}
+                </foreach>
+        </if>
+    </where>
+        GROUP BY goods_id
+        ORDER BY goods_id desc
+</select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/order/goodsStatistics.html b/src/main/resources/templates/febs/views/modules/order/goodsStatistics.html
new file mode 100644
index 0000000..56a1381
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/order/goodsStatistics.html
@@ -0,0 +1,38 @@
+<div className="layui-fluid layui-anim febs-anim" id="febs-order-goods-child" lay-title="商品数量统计">
+    <div className="layui-row febs-container">
+        <div className="layui-col-md12">
+            <div className="layui-card">
+                <div className="layui-card-body febs-table-full">
+                    <table lay-filter="orderGoodsChild" lay-data="{id: 'orderGoodsChild'}"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script data-th-inline="none" type="text/javascript">
+    layui.use(['jquery', 'form', 'table', 'febs'], function () {
+        var $ = layui.jquery,
+            febs = layui.febs,
+            form = layui.form,
+            table = layui.table,
+            $view = $('#febs-order-goods-child'),
+            tableIns;
+
+        form.render();
+
+        initTable();
+
+        function initTable() {
+            tableIns = febs.table.init({
+                elem: $view.find('table'),
+                id: 'orderGoodsChild',
+                url: ctx + 'admin/order/goodsStatistics?parentId=1',
+                cols: [[
+                    {field: 'goodsName', title: '商品名称', minWidth: 130},
+                    {field: 'goodsCnt', title: '总数', minWidth: 130}
+                ]]
+            });
+        }
+
+    })
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/order/orderList.html b/src/main/resources/templates/febs/views/modules/order/orderList.html
index d9e5133..1c8c545 100644
--- a/src/main/resources/templates/febs/views/modules/order/orderList.html
+++ b/src/main/resources/templates/febs/views/modules/order/orderList.html
@@ -116,6 +116,7 @@
         <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="exportDeliverOne">导出待发货订单,系统自动发货</button>
         <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="confirmOrder">确认到货</button>
         <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="printSelect">自定义打印</button>
+        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="goodsStatistics">统计商品份数</button>
 <!--        <button id="printSelect" type="button" class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain">自定义打印</button>-->
 <!--        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="exportDeliverTwo">导出未发货订单(快递)</button>-->
 <!--        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" id="importDeliver" lay-event="importDeliver">导入发货</button>-->
@@ -184,6 +185,25 @@
                     printSelect(checkStatus.data)
                 }
             }
+            if(event === 'goodsStatistics'){
+                var data = checkStatus.data;
+                let statistics = 0;
+                for(let i = 0;i < data.length;i++){
+                        statistics = statistics+ "," + data[i].id;
+                }
+                if(statistics == null || statistics == ""){
+                    febs.alert.warn('请选择需要统计的订单');
+                    return;
+                }
+                febs.modal.open( '商品数量统计', 'modules/order/goodsStatistics/'+statistics, {
+                    maxmin: true,
+                });
+                // febs.get(ctx + 'admin/order/goodsStatistics?orderIds='+ids, null, function () {
+                //     febs.alert.success('操作成功');
+                //     $query.click();
+                // });
+                // window.location.href = ctx + "admin/order/confirmOrder?takeUniqueCode="+uniqueCodeValue+"&orderIds="+ids;
+            }
             if(event === 'confirmOrder'){
                 let uniqueCodeValue = $searchForm.find("select[name='uniqueCode']").val();
                 // if(uniqueCodeValue == '' || uniqueCodeValue == null){

--
Gitblit v1.9.1