自动化立体仓库 - WMS系统
#
lsh
2024-12-13 fe2ac1e9580172bc3341553032fb2679e70fd42a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
package com.zy.common.model.enumUtils;
 
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.OrderDetlPakinService;
import com.zy.asrs.service.OrderDetlPakoutService;
import com.zy.asrs.service.OrderPakinService;
import com.zy.asrs.service.OrderPakoutService;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
 
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
 
public enum OrderInAndOutType {
    PAKIN{
        @Transactional
        public void implement() {}
 
        @Transactional
        public void query(String orderNo) {
            OrderPakin orderPakin = orderPakinService.selectByNo(orderNo);
            if (!Cools.isEmpty(orderPakin)) {
                throw new CoolException(orderNo + "单据已存在,请勿重复提交");
            }
        }
        @Transactional
        public Order selectByNo(String orderNo) {
            OrderPakin orderPakin = orderPakinService.selectByNo(orderNo);
            if (Cools.isEmpty(orderPakin)) {
                return null;
            }
            return transformationOrder(orderPakin);
        }
        @Transactional
        public List<Order> selectBySettle(Long settle) {
            List<OrderPakin> orderPakinList = orderPakinService.selectBySettle(settle);
            return transformationOrderList(orderPakinList);
        }
        @Transactional
        public List<OrderDetl> selectByOrderId(Long orderId) {
            List<OrderDetlPakin> orderDetlPakinList = orderDetlPakinService.selectByOrderId(orderId);
            return transformationOrderDetlList(orderDetlPakinList);
        }
        @Transactional
        public List<OrderDetl> selectWorkingDetls(Long orderId) {
            List<OrderDetlPakin> orderDetlPakinList = orderPakinService.selectWorkingDetls(orderId);
            return transformationOrderDetlList(orderDetlPakinList);
        }
        @Transactional
        public void checkComplete(String orderNo) {
            orderPakinService.checkComplete(orderNo);
        }
        @Transactional
        public boolean saveHandlerOrder(Boolean pakin, WrkMast wrkMast, List<WrkDetl> wrkDetls) {
            return orderPakinService.saveHandlerOrder(pakin,wrkMast,wrkDetls);
        }
        @Transactional
        public void insertOrder(Order order) {
            OrderPakin orderPakin = new OrderPakin();
            orderPakin.sync(order);
            if (!orderPakinService.insert(orderPakin)) {
                throw new CoolException("生成单据主档失败,请联系管理员");
            }
        }
        @Transactional
        public void insertOrderDetl(Order order, OrderDetl orderDetl) {
            OrderPakin orderPakin = orderPakinService.selectByNo(order.getOrderNo());
            OrderDetlPakin orderDetlPakin = new OrderDetlPakin();
            orderDetlPakin.sync(orderDetl);
            orderDetlPakin.setOrderId(orderPakin.getId());
            orderDetlPakin.setOrderNo(orderPakin.getOrderNo());
            if (!orderDetlPakinService.insert(orderDetlPakin)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
        }
        @Transactional
        public void updateOrder(Long id, Long settle, Long userId) {
            if (!orderPakinService.updateSettle(id, settle, userId)) {
                throw new CoolException("服务器内部错误,请联系管理员");
            }
        }
        @Transactional
        public void updateOrderDetl(Order order, OrderDetl orderDetl) {
            OrderPakin orderPakin = orderPakinService.selectByNo(order.getOrderNo());
            OrderDetlPakin orderDetlPakin = new OrderDetlPakin();
            orderDetlPakin.sync(orderDetl);
            orderDetlPakin.setOrderId(orderPakin.getId());
            orderDetlPakin.setOrderNo(orderPakin.getOrderNo());
            if (!orderDetlPakinService.insert(orderDetlPakin)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
        }
        @Transactional
        public void remove(Long orderId) {
            try{
                orderPakinService.remove(orderId);
            } catch (Exception e){
                throw new CoolException("删除单据失败");
            }
        }
        @Transactional
        public List<Order> selectComplete() {
            List<OrderPakin> orderPakinList = orderPakinService.selectComplete();
            return transformationOrderList(orderPakinList);
        }
 
        @Transactional
        public List<Order> selectComplete8() {
            List<OrderPakin> orderPakinList = orderPakinService.selectComplete8();
            return transformationOrderList(orderPakinList);
        }
 
        @Transactional
        public boolean addToLogTableOrder(Order order) {
            OrderPakin orderPakin = transformation(order);
            return orderPakinService.addToLogTable(orderPakin);
        }
 
        @Transactional
        public List<Order> selectOrderNoL(String orderNo) {
            List<OrderPakin> orderPakinList = orderPakinService.selectorderNoL(orderNo);
            return transformationOrderList(orderPakinList);
        }
 
        @Transactional
        public Order selectOrderMoveStatus() {
            OrderPakin orderPakin = orderPakinService.selectOrderMoveStatus();
            return transformationOrder(orderPakin);
        }
 
        @Transactional
        public Order selectOrderMoveStatusInitial() {
            OrderPakin orderPakin = orderPakinService.selectOrderMoveStatusInitial();
            return transformationOrder(orderPakin);
        }
 
        @Transactional
        public OrderDetl selectItem(Long orderId, String matnr, String batch) {
            OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(orderId, matnr, batch);
            return transformationOrderDetl(orderDetlPakin);
        }
 
        @Transactional
        public OrderDetl selectItem(String orderNo, String matnr, String batch) {
            OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(orderNo, matnr, batch);
            return transformationOrderDetl(orderDetlPakin);
        }
 
        @Transactional
        public OrderDetl findByLook(List<OrderDetl> orderDetls, Long orderId, String matnr, String batch) {
            List<OrderDetlPakin> orderDetlPakins = transformationDetlList(orderDetls);
            OrderDetlPakin orderDetlPakin = orderDetlPakinService.findByLook(orderDetlPakins, orderId, matnr,batch);
            return transformationOrderDetl(orderDetlPakin);
        }
        @Transactional
        public boolean increase(Long orderId, String matnr, String batch, Double qty) {
            return orderDetlPakinService.increase(orderId, matnr, batch, qty);
        }
        @Transactional
        public boolean decrease(String orderNo, String matnr, String batch, Double qty) {
            return orderDetlPakinService.decrease(orderNo, matnr, batch, qty);
        }
        @Transactional
        public boolean modifyStatus(Long orderId, Integer status) {
            return orderDetlPakinService.modifyStatus(orderId, status);
        }
        @Transactional
        public boolean addToLogTableOrderDetl(OrderDetl orderDetl) {
            OrderDetlPakin orderDetlPakin = transformationDetl(orderDetl);
            return orderDetlPakinService.addToLogTable(orderDetlPakin);
        }
        @Transactional
        public boolean increaseQtyByOrderNo(String orderNo, String matnr, String batch, Double qty) {
            return orderDetlPakinService.increaseQtyByOrderNo(orderNo, matnr, batch, qty);
        }
        @Transactional
        public boolean increaseWorkQty(Long orderId, String matnr, String batch, Double workQty) {
            return orderDetlPakinService.increaseWorkQty(orderId, matnr, batch, workQty);
        }
 
 
        public Order transformationOrder(OrderPakin orderPakin){
            Order order = new Order();
            order.sync(orderPakin);
            return order;
        }
        public List<Order> transformationOrderList(List<OrderPakin> orderPakinList){
            List<Order> orderList = new ArrayList<>();
            for (OrderPakin orderPakin : orderPakinList){
                Order order = new Order();
                order.sync(orderPakin);
                orderList.add(order);
            }
            return orderList;
        }
        public OrderDetl transformationOrderDetl(OrderDetlPakin orderDetlPakin){
            OrderDetl orderDetl = new OrderDetl();
            orderDetl.sync(orderDetlPakin);
            return orderDetl;
        }
        public List<OrderDetl> transformationOrderDetlList(List<OrderDetlPakin> orderDetlPakinList){
            List<OrderDetl> orderDetlList = new ArrayList<>();
            for (OrderDetlPakin orderDetlPakin : orderDetlPakinList){
                OrderDetl orderDetl = new OrderDetl();
                orderDetl.sync(orderDetlPakin);
                orderDetlList.add(orderDetl);
            }
            return orderDetlList;
        }
 
        public OrderPakin transformation(Order order){
            OrderPakin orderPakin = new OrderPakin();
            orderPakin.sync(order);
            return orderPakin;
        }
        public List<OrderPakin> transformationList(List<Order> orderList){
            List<OrderPakin> orderPakinList = new ArrayList<>();
            for (Order order : orderList){
                OrderPakin orderPakin = new OrderPakin();
                orderPakin.sync(order);
                orderPakinList.add(orderPakin);
            }
            return orderPakinList;
        }
        public OrderDetlPakin transformationDetl(OrderDetl orderDetl){
            OrderDetlPakin orderDetlPakin = new OrderDetlPakin();
            orderDetlPakin.sync(orderDetl);
            return orderDetlPakin;
        }
        public List<OrderDetlPakin> transformationDetlList(List<OrderDetl> orderDetlList){
            List<OrderDetlPakin> orderDetlPakinList = new ArrayList<>();
            for (OrderDetl orderDetl : orderDetlList){
                OrderDetlPakin orderDetlPakin = new OrderDetlPakin();
                orderDetlPakin.sync(orderDetl);
                orderDetlPakinList.add(orderDetlPakin);
            }
            return orderDetlPakinList;
        }
    },
    PAKOUT{
        @Transactional
        public void implement() {}
 
        @Transactional
        public void query(String orderNo) {
            OrderPakout orderPakout = orderPakoutService.selectByNo(orderNo);
            if (!Cools.isEmpty(orderPakout)) {
                throw new CoolException(orderNo + "单据已存在,请勿重复提交");
            }
        }
        @Transactional
        public Order selectByNo(String orderNo) {
            OrderPakout orderPakout = orderPakoutService.selectByNo(orderNo);
            if (Cools.isEmpty(orderPakout)) {
                return null;
            }
            return transformationOrder(orderPakout);
        }
        @Transactional
        public List<Order> selectBySettle(Long settle) {
            List<OrderPakout> orderPakoutList = orderPakoutService.selectBySettle(settle);
            return transformationOrderList(orderPakoutList);
        }
        @Transactional
        public List<OrderDetl> selectByOrderId(Long orderId) {
            List<OrderDetlPakout> orderDetlPakoutList = orderDetlPakoutService.selectByOrderId(orderId);
            return transformationOrderDetlList(orderDetlPakoutList);
        }
        @Transactional
        public List<OrderDetl> selectWorkingDetls(Long orderId) {
            List<OrderDetlPakout> orderDetlPakoutList = orderPakoutService.selectWorkingDetls(orderId);
            return transformationOrderDetlList(orderDetlPakoutList);
        }
        @Transactional
        public void checkComplete(String orderNo) {
            orderPakoutService.checkComplete(orderNo);
        }
        @Transactional
        public boolean saveHandlerOrder(Boolean Pakout, WrkMast wrkMast, List<WrkDetl> wrkDetls) {
            return orderPakoutService.saveHandlerOrder(Pakout,wrkMast,wrkDetls);
        }
        @Transactional
        public void insertOrder(Order order) {
            OrderPakout orderPakout = new OrderPakout();
            orderPakout.sync(order);
            if (!orderPakoutService.insert(orderPakout)) {
                throw new CoolException("生成单据主档失败,请联系管理员");
            }
        }
        @Transactional
        public void insertOrderDetl(Order order, OrderDetl orderDetl) {
            OrderPakout orderPakout = orderPakoutService.selectByNo(order.getOrderNo());
            OrderDetlPakout orderDetlPakout = new OrderDetlPakout();
            orderDetlPakout.sync(orderDetl);
            orderDetlPakout.setOrderId(orderPakout.getId());
            orderDetlPakout.setOrderNo(orderPakout.getOrderNo());
            if (!orderDetlPakoutService.insert(orderDetlPakout)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
        }
        @Transactional
        public void updateOrder(Long id, Long settle, Long userId) {
            if (!orderPakoutService.updateSettle(id, settle, userId)) {
                throw new CoolException("服务器内部错误,请联系管理员");
            }
        }
        @Transactional
        public void updateOrderDetl(Order order, OrderDetl orderDetl) {
            OrderPakout orderPakout = orderPakoutService.selectByNo(order.getOrderNo());
            OrderDetlPakout orderDetlPakout = new OrderDetlPakout();
            orderDetlPakout.sync(orderDetl);
            orderDetlPakout.setOrderId(orderPakout.getId());
            orderDetlPakout.setOrderNo(orderPakout.getOrderNo());
            if (!orderDetlPakoutService.insert(orderDetlPakout)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
        }
        @Transactional
        public void remove(Long orderId) {
            try{
                orderPakoutService.remove(orderId);
            } catch (Exception e){
                throw new CoolException("删除单据失败");
            }
        }
 
 
        @Transactional
        public List<Order> selectComplete8() {
            List<OrderPakout> orderPakoutList = orderPakoutService.selectComplete8();
            return transformationOrderList(orderPakoutList);
        }
 
        @Transactional
        public boolean addToLogTableOrder(Order order) {
            OrderPakout orderPakout = transformation(order);
            return orderPakoutService.addToLogTable(orderPakout);
        }
 
        @Transactional
        public List<Order> selectOrderNoL(String orderNo) {
            List<OrderPakout> orderPakoutList = orderPakoutService.selectorderNoL(orderNo);
            return transformationOrderList(orderPakoutList);
        }
 
        @Transactional
        public Order selectOrderMoveStatus() {
            OrderPakout orderPakout = orderPakoutService.selectOrderMoveStatus();
            return transformationOrder(orderPakout);
        }
 
        @Transactional
        public Order selectOrderMoveStatusInitial() {
            OrderPakout orderPakout = orderPakoutService.selectOrderMoveStatusInitial();
            return transformationOrder(orderPakout);
        }
 
        @Transactional
        public List<Order> selectComplete() {
            List<OrderPakout> orderPakoutList = orderPakoutService.selectComplete();
            return transformationOrderList(orderPakoutList);
        }
 
        @Transactional
        public OrderDetl selectItem(Long orderId, String matnr, String batch) {
            OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(orderId, matnr, batch);
            return transformationOrderDetl(orderDetlPakout);
        }
 
        @Transactional
        public OrderDetl selectItem(String orderNo, String matnr, String batch) {
            OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(orderNo, matnr, batch);
            return transformationOrderDetl(orderDetlPakout);
        }
 
        @Transactional
        public OrderDetl findByLook(List<OrderDetl> orderDetls, Long orderId, String matnr, String batch) {
            List<OrderDetlPakout> orderDetlPakouts = transformationDetlList(orderDetls);
            OrderDetlPakout orderDetlPakout = orderDetlPakoutService.findByLook(orderDetlPakouts, orderId, matnr,batch);
            return transformationOrderDetl(orderDetlPakout);
        }
        @Transactional
        public boolean increase(Long orderId, String matnr, String batch, Double qty) {
            return orderDetlPakoutService.increase(orderId, matnr, batch, qty);
        }
        @Transactional
        public boolean decrease(String orderNo, String matnr, String batch, Double qty) {
            return orderDetlPakoutService.decrease(orderNo, matnr, batch, qty);
        }
        @Transactional
        public boolean modifyStatus(Long orderId, Integer status) {
            return orderDetlPakoutService.modifyStatus(orderId, status);
        }
        @Transactional
        public boolean addToLogTableOrderDetl(OrderDetl orderDetl) {
            OrderDetlPakout orderDetlPakout = transformationDetl(orderDetl);
            return orderDetlPakoutService.addToLogTable(orderDetlPakout);
        }
        @Transactional
        public boolean increaseQtyByOrderNo(String orderNo, String matnr, String batch, Double qty) {
            return orderDetlPakoutService.increaseQtyByOrderNo(orderNo, matnr, batch, qty);
        }
        @Transactional
        public boolean increaseWorkQty(Long orderId, String matnr, String batch, Double workQty) {
            return orderDetlPakoutService.increaseWorkQty(orderId, matnr, batch, workQty);
        }
 
 
        public Order transformationOrder(OrderPakout orderPakout){
            Order order = new Order();
            order.sync(orderPakout);
            return order;
        }
        public List<Order> transformationOrderList(List<OrderPakout> orderPakoutList){
            List<Order> orderList = new ArrayList<>();
            for (OrderPakout orderPakout : orderPakoutList){
                Order order = new Order();
                order.sync(orderPakout);
                orderList.add(order);
            }
            return orderList;
        }
        public OrderDetl transformationOrderDetl(OrderDetlPakout orderDetlPakout){
            OrderDetl orderDetl = new OrderDetl();
            orderDetl.sync(orderDetlPakout);
            return orderDetl;
        }
        public List<OrderDetl> transformationOrderDetlList(List<OrderDetlPakout> orderDetlPakoutList){
            List<OrderDetl> orderDetlList = new ArrayList<>();
            for (OrderDetlPakout orderDetlPakout : orderDetlPakoutList){
                OrderDetl orderDetl = new OrderDetl();
                orderDetl.sync(orderDetlPakout);
                orderDetlList.add(orderDetl);
            }
            return orderDetlList;
        }
 
        public OrderPakout transformation(Order order){
            OrderPakout orderPakout = new OrderPakout();
            orderPakout.sync(order);
            return orderPakout;
        }
        public List<OrderPakout> transformationList(List<Order> orderList){
            List<OrderPakout> orderPakoutList = new ArrayList<>();
            for (Order order : orderList){
                OrderPakout orderPakout = new OrderPakout();
                orderPakout.sync(order);
                orderPakoutList.add(orderPakout);
            }
            return orderPakoutList;
        }
        public OrderDetlPakout transformationDetl(OrderDetl orderDetl){
            OrderDetlPakout orderDetlPakout = new OrderDetlPakout();
            orderDetlPakout.sync(orderDetl);
            return orderDetlPakout;
        }
        public List<OrderDetlPakout> transformationDetlList(List<OrderDetl> orderDetlList){
            List<OrderDetlPakout> orderDetlPakoutList = new ArrayList<>();
            for (OrderDetl orderDetl : orderDetlList){
                OrderDetlPakout orderDetlPakout = new OrderDetlPakout();
                orderDetlPakout.sync(orderDetl);
                orderDetlPakoutList.add(orderDetlPakout);
            }
            return orderDetlPakoutList;
        }
    };
 
    public abstract void implement();
 
    public abstract void query(String orderNo);
 
    public abstract Order selectByNo(String orderNo);
 
    public abstract List<OrderDetl> selectByOrderId(Long orderId);
 
    public abstract List<OrderDetl> selectWorkingDetls(Long orderId);
 
    public abstract void checkComplete(String orderNo);
 
    public abstract boolean saveHandlerOrder(Boolean pakin, WrkMast wrkMast, List<WrkDetl> wrkDetls);
 
    public abstract void insertOrder(Order order);
 
    public abstract void insertOrderDetl(Order order, OrderDetl orderDetl);
 
    public abstract void updateOrder(Long id, Long settle, Long userId);
 
    public abstract void updateOrderDetl(Order order, OrderDetl orderDetl);
 
    public abstract void remove(Long orderId);
 
    public abstract List<Order> selectComplete();
 
    public abstract List<Order> selectComplete8();
 
    public abstract boolean addToLogTableOrder(Order order);
 
    public abstract List<Order> selectOrderNoL(String orderNo);
 
    public abstract Order selectOrderMoveStatus();
 
    public abstract Order selectOrderMoveStatusInitial();
 
    public abstract OrderDetl selectItem(Long orderId, String matnr, String batch);
 
    public abstract OrderDetl selectItem(String orderNo, String matnr, String batch);
 
    public abstract OrderDetl findByLook(List<OrderDetl> orderDetls, Long orderId, String matnr, String batch);
 
    public abstract boolean increase(Long orderId, String matnr, String batch, Double qty);
 
    public abstract boolean decrease(String orderNo, String matnr, String batch, Double qty);
 
    public abstract boolean modifyStatus(Long orderId, Integer status);
 
    public abstract boolean addToLogTableOrderDetl(OrderDetl orderDetl);
 
    public abstract boolean increaseQtyByOrderNo(String orderNo, String matnr, String batch, Double qty);
 
    public abstract boolean increaseWorkQty(Long orderId, String matnr, String batch, Double workQty);
 
    @Setter
    OrderPakinService orderPakinService;
    @Setter
    OrderDetlPakinService orderDetlPakinService;
    @Setter
    OrderPakoutService orderPakoutService;
    @Setter
    OrderDetlPakoutService orderDetlPakoutService;
 
    @Component
    public static class ReportTypeServiceInjector {
        @Autowired
        OrderPakinService orderPakinService;
        @Autowired
        OrderDetlPakinService orderDetlPakinService;
        @Autowired
        OrderPakoutService orderPakoutService;
        @Autowired
        OrderDetlPakoutService orderDetlPakoutService;
        @PostConstruct
        public void postConstruct(){
            for(OrderInAndOutType orderInAndOutType : EnumSet.allOf(OrderInAndOutType.class)){
                orderInAndOutType.setOrderPakinService(orderPakinService);
                orderInAndOutType.setOrderDetlPakinService(orderDetlPakinService);
                orderInAndOutType.setOrderPakoutService(orderPakoutService);
                orderInAndOutType.setOrderDetlPakoutService(orderDetlPakoutService);
            }
        }
    }
 
}