From 5232d8b5939cb832c3d17c2aa1d6eaf66e5acb74 Mon Sep 17 00:00:00 2001
From: chen.llin <1442464845@qq.comm>
Date: 星期四, 25 十二月 2025 14:11:05 +0800
Subject: [PATCH] 出入库历史 +月结管理 按钮权限+sql

---
 src/main/webapp/static/css/common.css                                |    3 
 src/main/java/com/zy/asrs/controller/MonthlySettleController.java    |   33 ++++++++
 src/main/webapp/static/js/monthlySettle/monthlySettle.js             |   48 +++++++++++
 src/main/webapp/views/orderPakinLog/order.html                       |   24 +++++
 src/main/java/com/zy/asrs/service/impl/MonthlySettleServiceImpl.java |    2 
 src/main/resources/sql/按钮权限.sql                                      |   24 ++++++
 src/main/webapp/views/monthlySettle/monthlySettle.html               |   34 +++++++-
 src/main/webapp/views/orderPakoutLog/order.html                      |   24 +++++
 8 files changed, 181 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MonthlySettleController.java b/src/main/java/com/zy/asrs/controller/MonthlySettleController.java
index a3c847a..f6a9234 100644
--- a/src/main/java/com/zy/asrs/controller/MonthlySettleController.java
+++ b/src/main/java/com/zy/asrs/controller/MonthlySettleController.java
@@ -4,15 +4,19 @@
 import com.core.annotations.ManagerAuth;
 import com.core.common.R;
 import com.zy.asrs.entity.MonthlySettle;
+import com.zy.asrs.entity.MonthlySettleDetail;
 import com.zy.asrs.entity.param.DateRangeParam;
 import com.zy.asrs.entity.param.MonthlySettleQueryParam;
+import com.zy.asrs.entity.result.MonthlySettleStatisticsVO;
 import com.zy.asrs.service.MonthlySettleService;
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 @RestController
 public class MonthlySettleController extends BaseController {
@@ -131,5 +135,34 @@
         return R.ok("鍒犻櫎鎴愬姛");
     }
 
+    /**
+     * 瀵煎嚭鏈堢粨鏄庣粏
+     */
+    @RequestMapping(value = "/monthlySettle/detail/export/{id}/auth")
+    @ManagerAuth(memo = "瀵煎嚭鏈堢粨鏄庣粏")
+    public R exportDetail(@PathVariable("id") Long id) {
+        // 鑾峰彇鏈堢粨缁熻淇℃伅
+        MonthlySettleStatisticsVO statistics = monthlySettleService.getSettleStatistics(id);
+        if (statistics == null || statistics.getDetails() == null) {
+            return R.error("鏈堢粨鏄庣粏涓嶅瓨鍦�");
+        }
+        
+        List<MonthlySettleDetail> details = statistics.getDetails();
+        
+        // 瀹氫箟瀵煎嚭瀛楁
+        List<String> fields = new ArrayList<>();
+        fields.add("matnr");
+        fields.add("maktx");
+        fields.add("batch");
+        fields.add("brand");
+        fields.add("beginningQty");
+        fields.add("endingQty");
+        fields.add("diffQty");
+        fields.add("inQty");
+        fields.add("outQty");
+        
+        return R.ok(exportSupport(details, fields));
+    }
+
 }
 
diff --git a/src/main/java/com/zy/asrs/service/impl/MonthlySettleServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MonthlySettleServiceImpl.java
index fcd629b..f615603 100644
--- a/src/main/java/com/zy/asrs/service/impl/MonthlySettleServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MonthlySettleServiceImpl.java
@@ -498,8 +498,6 @@
         detail.setInQty(inQty);
         detail.setOutQty(outQty);
         detail.setEndingQty(endingQty);
-        // stock_qty 瀛楁宸插簾寮冿紝瀹為檯搴撳瓨绛変簬鏈熸湯搴撳瓨锛屼笉鍐嶅崟鐙瓨鍌�
-        // detail.setStockQty(endingQty);
         detail.setDiffQty(diffQty);
         // 鏃堕棿淇℃伅
         detail.setCreateTime(new Date());
diff --git "a/src/main/resources/sql/\346\214\211\351\222\256\346\235\203\351\231\220.sql" "b/src/main/resources/sql/\346\214\211\351\222\256\346\235\203\351\231\220.sql"
new file mode 100644
index 0000000..6695205
--- /dev/null
+++ "b/src/main/resources/sql/\346\214\211\351\222\256\346\235\203\351\231\220.sql"
@@ -0,0 +1,24 @@
+--  鏈堢粨
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'monthlySettle/monthlySettle.html', N'鏈堢粨绠$悊', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'monthlySettle#btn-view', N'鏌ヨ',    ''     , '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'monthlySettle#btn-add', N'鍙戣捣鏈堢粨',   ''     , '3', '1', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'monthlySettle#btn-export', N'瀵煎嚭',   ''    , '3', '2', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'monthlySettle#btn-delete', N'鍒犻櫎',  ''     , '3', '3', '1');
+
+-- 鍏ュ簱鍘嗗彶璁㈠崟
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderPakinLog/order.html', N'鍏ュ簱鍘嗗彶鍗曟嵁', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderPakinLog#btn-view', N'鏌ヨ',       ''   , '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderPakinLog#btn-edit', N'淇敼涓氬姟鏃堕棿',   ''   , '3', '1', '1');
+
+-- 鍑哄簱鍘嗗彶璁㈠崟
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderPakoutLog/order.html', N'鍑哄簱鍘嗗彶鍗曟嵁', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderPakoutLog#btn-view', N'鏌ヨ',       ''    , '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderPakoutLog#btn-edit', N'淇敼涓氬姟鏃堕棿',   ''  , '3', '1', '1');
+
+
+
+
+
diff --git a/src/main/webapp/static/css/common.css b/src/main/webapp/static/css/common.css
index 5562fb9..861ace9 100644
--- a/src/main/webapp/static/css/common.css
+++ b/src/main/webapp/static/css/common.css
@@ -206,6 +206,9 @@
 #btn-into {
     display: none;
 }
+.btn-view {
+    display: none;
+}
 
 /*淇敼澶嶉�夋棰滆壊*/
 /*.layui-form-checked[lay-skin=primary] i {*/
diff --git a/src/main/webapp/static/js/monthlySettle/monthlySettle.js b/src/main/webapp/static/js/monthlySettle/monthlySettle.js
index 58bce67..f8600d9 100644
--- a/src/main/webapp/static/js/monthlySettle/monthlySettle.js
+++ b/src/main/webapp/static/js/monthlySettle/monthlySettle.js
@@ -29,7 +29,7 @@
             {field: 'totalOutQty', align: 'center', title: '鎬诲嚭搴撴暟閲�', width: 120},
             {field: 'totalMaterials', align: 'center', title: '鐗╂枡绉嶇被鏁�', width: 120},
             {field: 'createTime$', title: '鍒涘缓鏃堕棿', minWidth: 180, width: 180},
-            {align: 'center', title: '鎿嶄綔', toolbar: '#operate', width: 180}
+            {align: 'center', title: '鎿嶄綔', toolbar: '#operate', width: 240}
         ]],
         request: {
             pageName: 'curr',
@@ -368,6 +368,8 @@
         var layEvent = obj.event;
         if (layEvent === 'detail') {
             showDetailDialog(data);
+        } else if (layEvent === 'export') {
+            exportDetail(data);
         } else if (layEvent === 'delete') {
             deleteSettle(data);
         }
@@ -478,6 +480,50 @@
         });
     }
 
+    // 瀵煎嚭鏈堢粨鏄庣粏
+    function exportDetail(data) {
+        layer.confirm('纭畾瀵煎嚭鏈堢粨鏄庣粏 "' + data.settleNo + '" 鍚楋紵', {
+            shade: .1,
+            skin: 'layui-layer-admin'
+        }, function (i) {
+            layer.close(i);
+            layer.load(2);
+            $.ajax({
+                url: baseUrl + '/monthlySettle/detail/export/' + data.id + '/auth',
+                headers: {'token': localStorage.getItem('token')},
+                method: 'POST',
+                success: function (res) {
+                    layer.closeAll('loading');
+                    if (res.code === 200) {
+                        // 瀹氫箟琛ㄥご
+                        var titles = [
+                            '鐗╂枡缂栫爜',
+                            '鐗╂枡鍚嶇О',
+                            '鎵规',
+                            '鍝佺墝',
+                            '鏈熷垵搴撳瓨',
+                            '鏈熸湯搴撳瓨',
+                            '宸紓鏁伴噺',
+                            '鏈湡鍏ュ簱',
+                            '鏈湡鍑哄簱'
+                        ];
+                        // 浣跨敤 table.exportFile 瀵煎嚭
+                        table.exportFile(titles, res.data, 'xls');
+                        layer.msg('瀵煎嚭鎴愬姛', {icon: 1});
+                    } else if (res.code === 403) {
+                        top.location.href = baseUrl + "/";
+                    } else {
+                        layer.msg(res.msg || '瀵煎嚭澶辫触', {icon: 2});
+                    }
+                },
+                error: function() {
+                    layer.closeAll('loading');
+                    layer.msg('瀵煎嚭澶辫触', {icon: 2});
+                }
+            });
+        });
+    }
+
     // 鍒犻櫎鏈堢粨璁板綍
     function deleteSettle(data) {
         layer.confirm('纭瑕佸垹闄ゆ湀缁撹褰� "' + data.settleNo + '" 鍚楋紵鍒犻櫎鍚庡皢娓呴櫎鍏宠仈鐨勫嚭鍏ュ簱璁㈠崟鏈堢粨淇℃伅锛屽彲浠ラ噸鏂拌繘琛屾湀缁撱��', {
diff --git a/src/main/webapp/views/monthlySettle/monthlySettle.html b/src/main/webapp/views/monthlySettle/monthlySettle.html
index 245e32c..686eb52 100644
--- a/src/main/webapp/views/monthlySettle/monthlySettle.html
+++ b/src/main/webapp/views/monthlySettle/monthlySettle.html
@@ -9,6 +9,31 @@
     <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
     <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
     <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <style>
+        .btn-add {
+            display: none;
+        }
+
+        .btn-edit {
+            display: none;
+        }
+
+        .btn-complete {
+            display: none;
+        }
+
+        .btn-delete {
+            display: none;
+        }
+
+        .btn-export {
+            display: none;
+        }
+
+        .btn-view {
+            display: none;
+        }
+    </style>
 </head>
 <body>
 
@@ -28,10 +53,10 @@
                         </div>
                     </div>
                     <div class="layui-inline">
-                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
+                        <button class="layui-btn icon-btn btn-view" lay-filter="search" lay-submit>
                             <i class="layui-icon">&#xe615;</i>鎼滅储
                         </button>
-                        <button id="startSettleBtn" class="layui-btn icon-btn layui-btn-normal">
+                        <button id="startSettleBtn" class="layui-btn icon-btn layui-btn-normal btn-add">
                             <i class="layui-icon">&#xe608;</i>鍙戣捣鏈堢粨
                         </button>
                         <button type="button" class="layui-btn icon-btn layui-btn-primary" lay-filter="reset" lay-submit>
@@ -47,8 +72,9 @@
 
 <!-- 琛ㄦ牸鎿嶄綔鍒� -->
 <script type="text/html" id="operate">
-    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">鏌ョ湅鏄庣粏</a>
-    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">鍒犻櫎</a>
+    <a class="layui-btn layui-btn-normal layui-btn-xs btn-export" lay-event="export">瀵煎嚭</a>
+    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">鏄庣粏</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-delete" lay-event="delete">鍒犻櫎</a>
 </script>
 
 <!-- 鍙戣捣鏈堢粨寮圭獥 -->
diff --git a/src/main/webapp/views/orderPakinLog/order.html b/src/main/webapp/views/orderPakinLog/order.html
index 96b51a1..e99606c 100644
--- a/src/main/webapp/views/orderPakinLog/order.html
+++ b/src/main/webapp/views/orderPakinLog/order.html
@@ -25,6 +25,26 @@
         .layui-timeline:first-child .layui-timeline-item {
             margin-top: 30px;
         }
+
+        .btn-add {
+            display: none;
+        }
+
+        .btn-edit {
+            display: none;
+        }
+
+        .btn-complete {
+            display: none;
+        }
+
+        .btn-delete {
+            display: none;
+        }
+
+        .btn-view {
+            display: none;
+        }
     </style>
 </head>
 
@@ -66,7 +86,7 @@
                             </div>
                         </div>
                         <div class="layui-inline">
-                            <button class="layui-btn icon-btn" lay-filter="tbSearch" lay-submit>
+                            <button class="layui-btn icon-btn btn-view" lay-filter="tbSearch" lay-submit>
                                 <i class="layui-icon">&#xe615;</i>鎼滅储
                             </button>
                         </div>
@@ -92,7 +112,7 @@
     <!-- 鎿嶄綔鍒� -->
     <script type="text/html" id="operate">
     {{# if(!d.monthlySettleId || d.monthlySettleId == 0){ }}
-    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="editOrderTime">淇敼涓氬姟鏃堕棿</a>
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="editOrderTime">淇敼涓氬姟鏃堕棿</a>
     {{# } }}
 </script>
     <script type="text/html" id="orderNoTpl">
diff --git a/src/main/webapp/views/orderPakoutLog/order.html b/src/main/webapp/views/orderPakoutLog/order.html
index 9df2682..743e811 100644
--- a/src/main/webapp/views/orderPakoutLog/order.html
+++ b/src/main/webapp/views/orderPakoutLog/order.html
@@ -25,6 +25,26 @@
         .layui-timeline:first-child .layui-timeline-item {
             margin-top: 30px;
         }
+
+        .btn-add {
+            display: none;
+        }
+
+        .btn-edit {
+            display: none;
+        }
+
+        .btn-complete {
+            display: none;
+        }
+
+        .btn-delete {
+            display: none;
+        }
+
+        .btn-view {
+            display: none;
+        }
     </style>
 </head>
 
@@ -66,7 +86,7 @@
                             </div>
                         </div>
                         <div class="layui-inline">
-                            <button class="layui-btn icon-btn" lay-filter="tbSearch" lay-submit>
+                            <button class="layui-btn icon-btn btn-view" lay-filter="tbSearch" lay-submit>
                                 <i class="layui-icon">&#xe615;</i>鎼滅储
                             </button>
                         </div>
@@ -92,7 +112,7 @@
     <!-- 鎿嶄綔鍒� -->
     <script type="text/html" id="operate">
     {{# if(!d.monthlySettleId || d.monthlySettleId == 0){ }}
-    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="editOrderTime">淇敼涓氬姟鏃堕棿</a>
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="editOrderTime">淇敼涓氬姟鏃堕棿</a>
     {{# } }}
 </script>
     <script type="text/html" id="orderNoTpl">

--
Gitblit v1.9.1