Commit 265489a2e19c5f88710dc8c6dab95790be217145
1 parent
a610818b
feat:新增待入库物料明细报表
Showing
3 changed files
with
370 additions
and
114 deletions
src/main/java/com/huaheng/pc/receipt/receiptDetail/controller/ReceiptDetailController.java
... | ... | @@ -96,6 +96,35 @@ public class ReceiptDetailController extends BaseController { |
96 | 96 | } |
97 | 97 | } |
98 | 98 | |
99 | + /** | |
100 | + * 查询待入库明细 | |
101 | + */ | |
102 | + @RequiresPermissions("receipt:waitReceiptDetailList:view") | |
103 | + @GetMapping("waitReceiptDetailList") | |
104 | + public String receiptHeader() { | |
105 | + return prefix + "/waitReceiptDetail"; | |
106 | + } | |
107 | + | |
108 | + /** | |
109 | + * 查询待入库明细 | |
110 | + */ | |
111 | + @PostMapping("/waitReceiptDetailList") | |
112 | + @ResponseBody | |
113 | + public TableDataInfo waitReceiptDetailList(String createdBegin, String createdEnd, String receiptCode, String materialCode, String materialName, String noticeNo, String SNNO) { | |
114 | + LambdaQueryWrapper<ReceiptDetail> lambdaQueryWrapper = Wrappers.lambdaQuery(); | |
115 | + lambdaQueryWrapper | |
116 | + .ge(StringUtils.isNotBlank(createdBegin), ReceiptDetail::getCreated, createdBegin) | |
117 | + .le(StringUtils.isNotBlank(createdEnd), ReceiptDetail::getCreated, createdEnd) | |
118 | + .eq(StringUtils.isNotBlank(materialCode), ReceiptDetail::getMaterialCode, materialCode) | |
119 | + .eq(StringUtils.isNotBlank(materialName), ReceiptDetail::getMaterialName, materialName) | |
120 | + .eq(StringUtils.isNotBlank(noticeNo), ReceiptDetail::getNoticeNo, noticeNo) | |
121 | + .eq(StringUtils.isNotBlank(receiptCode), ReceiptDetail::getReceiptCode, receiptCode) | |
122 | + .eq(StringUtils.isNotBlank(SNNO), ReceiptDetail::getSNNO, SNNO); | |
123 | + List<ReceiptDetail> list = receiptDetailService.list(lambdaQueryWrapper); | |
124 | + List<ReceiptDetail> filteredList = filterAlreadyStoredRecords(list); | |
125 | + return getDataTable(filteredList); | |
126 | + } | |
127 | + | |
99 | 128 | |
100 | 129 | /** |
101 | 130 | * PDA查询入库详情 |
... | ... |
src/main/resources/templates/receipt/receiptDetail/waitReceiptDetail.html
0 → 100644
1 | +<!DOCTYPE html> | |
2 | +<html lang="zh" xmlns:th="http://www.thymeleaf.org" | |
3 | + xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> | |
4 | +<meta charset="utf-8"> | |
5 | +<head th:include="include :: header"></head> | |
6 | +<body class="gray-bg"> | |
7 | + | |
8 | +<div class="container-div"> | |
9 | + <div class="row"> | |
10 | + <div class="col-sm-12 select-info"> | |
11 | + <form id="receiptDetail-form"> | |
12 | + <div class="select-list"> | |
13 | + <ul> | |
14 | + <li>入库单号:<input type="text" name="receiptCode"/></li> | |
15 | + <li>条码:<input type="text" name="SNNO" id="SNNO"></li> | |
16 | + <li>通知单号:<input type="text" name="noticeNo" id="noticeNo"></li> | |
17 | + <li> | |
18 | + 物料编码:<input type="text" name="materialCode"/> | |
19 | + </li> | |
20 | + <li> | |
21 | + 物料名称:<input type="text" name="materialName"/> | |
22 | + </li> | |
23 | + <li class="time"> | |
24 | + <label>创建时间: </label> | |
25 | + <input type="text" class="time-input" id="startTime" placeholder="开始时间" | |
26 | + name="createdBegin" autocomplete="off"/> | |
27 | + <span>-</span> | |
28 | + <input type="text" class="time-input" id="endTime" placeholder="结束时间" | |
29 | + name="createdEnd" autocomplete="off"/> | |
30 | + </li> | |
31 | + <li> | |
32 | + <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i | |
33 | + class="fa fa-search"></i> 搜索</a> | |
34 | + <a class="btn btn-warning btn-rounded btn-sm" | |
35 | + onclick="$.form.reset('receiptDetail-form')"><i | |
36 | + class="fa fa-refresh"></i> 重置</a> | |
37 | + </li> | |
38 | + </ul> | |
39 | + </div> | |
40 | + </form> | |
41 | + </div> | |
42 | + <div class="col-sm-12 select-info"> | |
43 | + <table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover"></table> | |
44 | + </div> | |
45 | + </div> | |
46 | +</div> | |
47 | + | |
48 | + | |
49 | +<div th:include="include :: footer"></div> | |
50 | +<script th:inline="javascript"> | |
51 | + | |
52 | + var noReturnRequiredFlag = [[${@permission.hasPermi('receipt:receiptHeader:noReturnRequired')}]]; | |
53 | + var printFlag = [[${@permission.hasPermi('receipt:receiptHeader:report')}]]; | |
54 | + let receiveFlag = [[${@permission.hasPermi('receipt:receiptHeader:receive')}]]; | |
55 | + var detailPrefix = ctx + "receipt/receiptDetail"; | |
56 | + var datas = [[${@dict.getType('sys_normal_disable')}]]; | |
57 | + var receiptTypes = [[${@receiptTypeService.getType()}]]; | |
58 | + var originalWarehouse = [[${@dict.getType('originalWarehouse')}]]; | |
59 | + var receiptHeaderStatus = [[${@dict.getType('receiptHeaderStatus')}]]; | |
60 | + var uploadStatus = [[${@dict.getType('uploadStatus')}]]; | |
61 | + var company = [[${@companyService.getCode()}]]; | |
62 | + var supplier = [[${@SupplierService.getCode()}]]; | |
63 | + var inventoryStatus = [[${@dict.getType('inventoryStatus')}]]; | |
64 | + var receiptId = ''; | |
65 | + var receiptCode = ''; | |
66 | + let status = [[${status}]]; | |
67 | + var statusFirst = [[${statusFirst}]]; | |
68 | + var statusLast = [[${statusLast}]]; | |
69 | + var yes_or_no = [[${@dict.getType('yes_or_no')}]]; | |
70 | + var prefix = ctx + "receipt/receiptDetail"; | |
71 | + $(function () { | |
72 | + var options = { | |
73 | + url: prefix + "/waitReceiptDetailList", | |
74 | + modalName: "入库明细", | |
75 | + search: false, | |
76 | + columns: [{ | |
77 | + checkbox: true | |
78 | + }, | |
79 | + { | |
80 | + title: '操作', | |
81 | + align: 'center', | |
82 | + formatter: function (value, row, index) { | |
83 | + var actions = []; | |
84 | + actions.push('<a class="btn btn-primary btn-xs to-receive" onclick="Toreceiving(\'' + row.receiptCode + '\')"><i class="fa fa-cart-plus"></i>组盘</a> '); | |
85 | + return actions.join(''); | |
86 | + } | |
87 | + }, | |
88 | + { | |
89 | + field: 'id', | |
90 | + title: 'id', | |
91 | + visible: false | |
92 | + }, | |
93 | + { | |
94 | + field: 'noticeNo', | |
95 | + title: '通知单号' | |
96 | + }, | |
97 | + { | |
98 | + field: 'receiptCode', | |
99 | + title: '入库单编码' | |
100 | + }, | |
101 | + { | |
102 | + field: 'materialCode', | |
103 | + title: '物料编码' | |
104 | + }, | |
105 | + { | |
106 | + field: 'materialName', | |
107 | + title: '物料名称' | |
108 | + }, | |
109 | + { | |
110 | + field: 'materialSpec', | |
111 | + title: '物料规格' | |
112 | + }, | |
113 | + { | |
114 | + field: 'materialUnit', | |
115 | + title: '物料单位' | |
116 | + }, | |
117 | + { | |
118 | + field: 'processStamp', | |
119 | + title: '明细状态', | |
120 | + align: 'center', | |
121 | + formatter: function (value, row, index) { | |
122 | + return $.table.selectDictLabel(receiptHeaderStatus, value); | |
123 | + } | |
124 | + }, | |
125 | + { | |
126 | + field: 'sNNO', | |
127 | + title: '条码', | |
128 | + visible: true | |
129 | + }, | |
130 | + { | |
131 | + field: 'agingDate', | |
132 | + title: '入库日期', | |
133 | + visible: false | |
134 | + }, | |
135 | + { | |
136 | + field: 'qty', | |
137 | + title: '单据数量' | |
138 | + }, | |
139 | + { | |
140 | + field: 'taskQty', | |
141 | + title: '已收数量' | |
142 | + }, | |
143 | + { | |
144 | + field: 'selfCreated', | |
145 | + title: '自建单据物料', | |
146 | + formatter: function (value, row, index) { | |
147 | + return $.table.selectDictLabel(yes_or_no, value); | |
148 | + }, | |
149 | + align: 'center', | |
150 | + }, | |
151 | + { | |
152 | + field: 'isMustFlatWarehouseMaterial', | |
153 | + title: '必须平库物料', | |
154 | + formatter: function (value, row, index) { | |
155 | + return $.table.selectDictLabel(yes_or_no, value); | |
156 | + }, | |
157 | + align: 'center', | |
158 | + }, | |
159 | + { | |
160 | + field: 'isFlatWarehouse', | |
161 | + title: '仓库类型', | |
162 | + visible: true, | |
163 | + align: 'center', | |
164 | + formatter: function (value, row, index) { | |
165 | + if (value == 1) { | |
166 | + return '<span style="color:#51855c">平库</span>' | |
167 | + } else { | |
168 | + return '<span style="color:black">立库</span>' | |
169 | + } | |
170 | + } | |
171 | + }, | |
172 | + { | |
173 | + field: 'frequency', | |
174 | + title: '物料使用频率', | |
175 | + formatter: function (value, row, index) { | |
176 | + if (value === '频繁使用物料') { | |
177 | + return '<span style="color:#941616">频繁使用物料</span>' | |
178 | + } else if (value === '常用物料') { | |
179 | + return '<span style="color:#016201">常用物料</span>' | |
180 | + } else { | |
181 | + return '<span></span>' | |
182 | + } | |
183 | + }, | |
184 | + }, | |
185 | + { | |
186 | + field: 'inventorySts', | |
187 | + title: '库存状态', | |
188 | + visible: false | |
189 | + }, | |
190 | + { | |
191 | + field: 'created', | |
192 | + title: '创建时间' | |
193 | + }, | |
194 | + { | |
195 | + field: 'createdBy', | |
196 | + title: '创建用户', | |
197 | + visible: false | |
198 | + }, | |
199 | + { | |
200 | + field: 'lastUpdated', | |
201 | + title: '最后修改时间', | |
202 | + visible: true | |
203 | + }, | |
204 | + { | |
205 | + field: 'lastUpdatedBy', | |
206 | + title: '最后操作人', | |
207 | + visible: true | |
208 | + }, | |
209 | + { | |
210 | + field: 'remarks', | |
211 | + title: '备注', | |
212 | + }, | |
213 | + ] | |
214 | + }; | |
215 | + $.table.init(options); | |
216 | + }); | |
217 | + | |
218 | + | |
219 | + /* 收货 */ | |
220 | + function Toreceiving(code) { | |
221 | + let storage = window.localStorage; | |
222 | + storage.receiving_code = code; | |
223 | + createMenuItem(ctx + "receipt/receiving", "收货"); | |
224 | + parent.$('.tabReload').click(); | |
225 | + } | |
226 | +</script> | |
227 | +</body> | |
228 | +</html> | |
... | ... |
src/main/resources/templates/system/role/role.html
1 | 1 | <!DOCTYPE html> |
2 | 2 | <html lang="zh" xmlns:th="http://www.thymeleaf.org" |
3 | - xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> | |
3 | + xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> | |
4 | 4 | <meta charset="utf-8"> |
5 | 5 | <head th:include="include :: header"></head> |
6 | 6 | <body class="gray-bg"> |
7 | 7 | |
8 | - <div class="container-div"> | |
9 | - <div class="row"> | |
10 | - <div class="col-sm-12 select-info"> | |
11 | - <form id="role-form"> | |
12 | - <div class="select-list"> | |
13 | - <ul> | |
14 | - <li> | |
15 | - 角色名称:<input type="text" name="roleName"/> | |
16 | - </li> | |
17 | - <li> | |
18 | - 权限字符:<input type="text" name="roleCode"/> | |
19 | - </li> | |
20 | - <li> | |
21 | - 角色状态:<select name="enable" th:with="type=${@dict.getType('sys_normal_disable')}"> | |
22 | - <option value="">所有</option> | |
23 | - <option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option> | |
24 | - </select> | |
25 | - </li> | |
26 | - <!--<li class="time">--> | |
27 | - <!--<label>创建时间: </label>--> | |
28 | - <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginTime]"/>--> | |
29 | - <!--<span>-</span>--> | |
30 | - <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endTime]"/>--> | |
31 | - <!--</li>--> | |
32 | - <li> | |
33 | - <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> | |
34 | - <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('role-form')"><i class="fa fa-refresh"></i> 重置</a> | |
35 | - <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="system:role:export"><i class="fa fa-download"></i> 导出</a>--> | |
36 | - </li> | |
37 | - </ul> | |
38 | - </div> | |
39 | - </form> | |
40 | - </div> | |
8 | +<div class="container-div"> | |
9 | + <div class="row"> | |
10 | + <div class="col-sm-12 select-info"> | |
11 | + <form id="role-form"> | |
12 | + <div class="select-list"> | |
13 | + <ul> | |
14 | + <li> | |
15 | + 角色名称:<input type="text" name="roleName"/> | |
16 | + </li> | |
17 | + <li> | |
18 | + 权限字符:<input type="text" name="roleCode"/> | |
19 | + </li> | |
20 | + <li> | |
21 | + 角色状态:<select name="enable" th:with="type=${@dict.getType('sys_normal_disable')}"> | |
22 | + <option value="">所有</option> | |
23 | + <option th:each="e : ${type}" th:text="${e['dictLabel']}" | |
24 | + th:value="${e['dictValue']}"></option> | |
25 | + </select> | |
26 | + </li> | |
27 | + <li> | |
28 | + <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i | |
29 | + class="fa fa-search"></i> 搜索</a> | |
30 | + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('role-form')"><i | |
31 | + class="fa fa-refresh"></i> 重置</a> | |
32 | + <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="system:role:export"><i class="fa fa-download"></i> 导出</a>--> | |
33 | + </li> | |
34 | + </ul> | |
35 | + </div> | |
36 | + </form> | |
37 | + </div> | |
41 | 38 | |
42 | - <div class="btn-group hidden-xs" id="toolbar" role="group"> | |
43 | - <a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="system:role:add"> | |
44 | - <i class="fa fa-plus"></i> 新增 | |
45 | - </a> | |
46 | - <a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="system:role:remove"> | |
47 | - <i class="fa fa-trash-o"></i> 删除 | |
48 | - </a> | |
49 | - </div> | |
39 | + <div class="btn-group hidden-xs" id="toolbar" role="group"> | |
40 | + <a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" | |
41 | + shiro:hasPermission="system:role:add"> | |
42 | + <i class="fa fa-plus"></i> 新增 | |
43 | + </a> | |
44 | + <a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" | |
45 | + shiro:hasPermission="system:role:remove"> | |
46 | + <i class="fa fa-trash-o"></i> 删除 | |
47 | + </a> | |
48 | + </div> | |
50 | 49 | |
51 | - <div class="col-sm-12 select-info"> | |
52 | - <table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover"></table> | |
53 | - </div> | |
54 | - </div> | |
55 | - </div> | |
56 | - <div th:include="include :: footer"></div> | |
57 | - <script th:inline="javascript"> | |
58 | - var editFlag = [[${@permission.hasPermi('system:role:edit')}]]; | |
59 | - var removeFlag = [[${@permission.hasPermi('system:role:remove')}]]; | |
60 | - var datas = [[${@dict.getType('sys_normal_disable')}]]; | |
61 | - var prefix = ctx + "system/role" | |
50 | + <div class="col-sm-12 select-info"> | |
51 | + <table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover"></table> | |
52 | + </div> | |
53 | + </div> | |
54 | +</div> | |
55 | +<div th:include="include :: footer"></div> | |
56 | +<script th:inline="javascript"> | |
57 | + var editFlag = [[${@permission.hasPermi('system:role:edit')}]]; | |
58 | + var removeFlag = [[${@permission.hasPermi('system:role:remove')}]]; | |
59 | + var datas = [[${@dict.getType('sys_normal_disable')}]]; | |
60 | + var prefix = ctx + "system/role" | |
62 | 61 | |
63 | 62 | |
64 | - $(function() { | |
65 | - var options = { | |
66 | - url: prefix + "/list", | |
67 | - createUrl: prefix + "/add", | |
68 | - updateUrl: prefix + "/edit/{id}", | |
69 | - removeUrl: prefix + "/remove", | |
70 | - exportUrl: prefix + "/export", | |
71 | - sortName: "roleSort", | |
72 | - // height:610, | |
73 | - modalName: "角色", | |
74 | - search: false, | |
75 | - showExport: false, | |
76 | - columns: [{ | |
77 | - checkbox: true | |
78 | - }, | |
79 | - { | |
80 | - field: 'id', | |
81 | - title: '角色id' | |
82 | - }, | |
83 | - { | |
84 | - field: 'roleName', | |
85 | - title: '角色名称', | |
86 | - sortable: true | |
87 | - }, | |
88 | - { | |
89 | - field: 'roleCode', | |
90 | - title: '权限编码', | |
91 | - sortable: true | |
92 | - }, | |
93 | - { | |
94 | - field: 'roleSort', | |
95 | - title: '显示顺序', | |
96 | - sortable: true | |
97 | - }, | |
98 | - { | |
99 | - field: 'enable', | |
100 | - title: '状态', | |
101 | - align: 'center', | |
102 | - formatter: function(value, row, index) { | |
103 | - return $.table.selectDictLabel(datas, value); | |
104 | - } | |
105 | - }, | |
106 | - { | |
107 | - field: 'createTime', | |
108 | - title: '创建时间', | |
109 | - sortable: true | |
110 | - }, | |
111 | - { | |
112 | - title: '操作', | |
113 | - align: 'center', | |
114 | - formatter: function(value, row, index) { | |
115 | - var actions = []; | |
116 | - actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> '); | |
117 | - actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-trash-o"></i>删除</a>'); | |
118 | - return actions.join(''); | |
119 | - } | |
120 | - }] | |
121 | - }; | |
122 | - $.table.init(options); | |
123 | - }); | |
124 | - </script> | |
63 | + $(function () { | |
64 | + var options = { | |
65 | + url: prefix + "/list", | |
66 | + createUrl: prefix + "/add", | |
67 | + updateUrl: prefix + "/edit/{id}", | |
68 | + removeUrl: prefix + "/remove", | |
69 | + exportUrl: prefix + "/export", | |
70 | + sortName: "roleSort", | |
71 | + // height:610, | |
72 | + modalName: "角色", | |
73 | + search: false, | |
74 | + showExport: false, | |
75 | + columns: [{ | |
76 | + checkbox: true | |
77 | + }, | |
78 | + { | |
79 | + field: 'id', | |
80 | + title: '角色id' | |
81 | + }, | |
82 | + { | |
83 | + field: 'roleName', | |
84 | + title: '角色名称', | |
85 | + sortable: true | |
86 | + }, | |
87 | + { | |
88 | + field: 'roleCode', | |
89 | + title: '权限编码', | |
90 | + sortable: true | |
91 | + }, | |
92 | + { | |
93 | + field: 'roleSort', | |
94 | + title: '显示顺序', | |
95 | + sortable: true | |
96 | + }, | |
97 | + { | |
98 | + field: 'enable', | |
99 | + title: '状态', | |
100 | + align: 'center', | |
101 | + formatter: function (value, row, index) { | |
102 | + return $.table.selectDictLabel(datas, value); | |
103 | + } | |
104 | + }, | |
105 | + { | |
106 | + field: 'createTime', | |
107 | + title: '创建时间', | |
108 | + sortable: true | |
109 | + }, | |
110 | + { | |
111 | + title: '操作', | |
112 | + align: 'center', | |
113 | + formatter: function (value, row, index) { | |
114 | + var actions = []; | |
115 | + actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> '); | |
116 | + actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-trash-o"></i>删除</a>'); | |
117 | + return actions.join(''); | |
118 | + } | |
119 | + }] | |
120 | + }; | |
121 | + $.table.init(options); | |
122 | + }); | |
123 | +</script> | |
125 | 124 | </body> |
126 | 125 | </html> |
... | ... |