From aeacc7f80e3ae74cc56be90bb761e9a6b935f643 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 13 五月 2025 14:49:31 +0800
Subject: [PATCH] 收货流程修改 质检流程修改

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java  |   33 +++++++---
 rsf-server/src/main/java/com/vincent/rsf/server/system/controller/FieldsController.java           |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java |    8 +-
 rsf-admin/src/i18n/zh.js                                                                          |    2 
 rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx                                        |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java               |   19 ++++--
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java           |   45 +++++++++++++-
 rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx                                              |   31 ++++++----
 rsf-server/src/main/java/com/vincent/rsf/server/system/constant/GlobalConfigCode.java             |    2 
 rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemList.jsx                                  |    2 
 10 files changed, 105 insertions(+), 41 deletions(-)

diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index 84f4197..1e4d55c 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -486,7 +486,7 @@
             },
             qlyIsptItem: {
                 ispectId: "涓诲崟ID",
-                matnrCode: "鐗╂枡缂栧彿",
+                matnrCode: "鐗╂枡缂栫爜",
                 maktx: "鐗╂枡鍚嶇О",
                 label: "鏍囩",
                 splrName: "渚涘簲鍟�",
diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx
index 177fce8..6899c39 100644
--- a/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx
+++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx
@@ -123,7 +123,7 @@
     const setFinally = () => {
         const rows = tableRef.current.state.editRows;
         for (const key in rows) {
-            const find = tabelData.find(item => item.matnrId === +key);
+            const find = tabelData.find(item => item.id === +key);
             find.anfme = rows[key].anfme.value;
         }
         setTableData([...tabelData]);
@@ -201,7 +201,7 @@
 
 
     const handleDeleteItem = () => {
-        const newTableData = _.filter(tabelData, (item) => !selectedRows.includes(item.matnrId));
+        const newTableData = _.filter(tabelData, (item) => !selectedRows.includes(item.id));
         setTableData(newTableData);
     }
 
@@ -370,7 +370,6 @@
                         value: selectedSupplier.id,
                     });
                 }
-
             }
 
             }
@@ -598,9 +597,6 @@
             flex: 1,
             editable: false,
         },
-
-
-
     ])
 
     const action = {
@@ -615,7 +611,6 @@
                 </IconButton>
             </Tooltip>
         ),
-
     }
 
     let cdata = useRef([]);
@@ -636,7 +631,17 @@
         } = await request.get("/fields/enable/list");
         if (code === 200) {
             const cols = data.map(el => ({
-                field: el.fields,
+                field:  el.fields,
+                valueGetter: (value, row) => {
+                    if (value != null && value != undefined) {
+                        return value;
+                    }
+                    if (row.extendFields == null  ||row.extendFields[el.fields] == null) {
+                        return ''
+                    } else {
+                        return `${row.extendFields[el.fields] == null ? '' : row.extendFields[el.fields]}`;
+                    }
+                },
                 headerName: el.fieldsAlise,
                 minWidth: 100,
                 flex: 1,
@@ -648,17 +653,15 @@
         }
     }
 
-
-
     const handleDelete = (row) => {
-        const newData = _.filter(cdata.current, (item) => item.matnrId !== row.matnrId);
+        const newData = _.filter(cdata.current, (item) => item.id !== row.id);
         setTableData(newData);
     };
 
 
     const processRowUpdate = (newRow, oldRow) => {
         const rows = tabelData.map((r) =>
-            r.matnrId === newRow.matnrId ? { ...newRow } : r
+            r.id === newRow.id ? { ...newRow } : r
         )
         setTableData(rows)
         // setTableData((prevData) =>
@@ -673,6 +676,8 @@
 
 
     const handleSelectionChange = (ids) => {
+        console.log(ids);
+        
         setSelectedRows(ids)
 
     };
@@ -687,7 +692,7 @@
                 rows={tabelData}
                 columns={columns}
                 disableRowSelectionOnClick
-                getRowId={(row) => row.matnrId}
+                getRowId={(row) => row.id}
                 disableColumnFilter
                 disableColumnSelector
                 disableColumnSorting
diff --git a/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx b/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx
index fbccc69..2192223 100644
--- a/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx
+++ b/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx
@@ -97,7 +97,7 @@
                 <List
                     storeKey="IsptItem"
                     resource="qlyIsptItem/ispt/result"
-                    filter={{ id: record?.id, type: '1' }}
+                    filter={{ id: record?.id}}
                     empty={false}
                     filters={false}
                     sort={{ field: "create_time", order: "desc" }}
diff --git a/rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemList.jsx b/rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemList.jsx
index 0201f0e..13e72c0 100644
--- a/rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemList.jsx
+++ b/rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemList.jsx
@@ -64,8 +64,8 @@
 
 const filters = [
     <SearchInput source="condition" alwaysOn />,
-
     <NumberInput source="areaId" label="table.field.warehouseAreasItem.areaId" />,
+    <TextInput source="asnCode" label="table.field.warehouseAreasItem.asnCode" />,
     <TextInput source="areaName" label="table.field.warehouseAreasItem.areaName" />,
     <NumberInput source="matnrId" label="table.field.warehouseAreasItem.matnrId" />,
     <TextInput source="matnrName" label="table.field.warehouseAreasItem.matnrName" />,
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
index 3b87f18..5f955a8 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -21,12 +21,14 @@
 import com.vincent.rsf.server.manager.mapper.*;
 import com.vincent.rsf.server.manager.service.*;
 import com.vincent.rsf.server.system.constant.CodeRes;
+import com.vincent.rsf.server.system.constant.GlobalConfigCode;
 import com.vincent.rsf.server.system.constant.SerialRuleCode;
 import com.vincent.rsf.server.system.controller.param.LoginParam;
 import com.vincent.rsf.server.system.controller.result.LoginResult;
 import com.vincent.rsf.server.system.entity.*;
 import com.vincent.rsf.server.system.mapper.FieldsMapper;
 import com.vincent.rsf.server.system.mapper.TenantMapper;
+import com.vincent.rsf.server.system.service.ConfigService;
 import com.vincent.rsf.server.system.service.FieldsItemService;
 import com.vincent.rsf.server.system.service.UserLoginService;
 import com.vincent.rsf.server.system.service.UserService;
@@ -40,6 +42,8 @@
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -120,6 +124,8 @@
     private LocAreaMapper locAreaMapper;
     @Autowired
     private DeviceSiteMapper deviceSiteMapper;
+    @Autowired
+    private ConfigService configService;
 
     /**
      * @return
@@ -230,11 +236,15 @@
         }
         //TODO /**鏀惰揣鏁伴噺绱姞锛�1. 浼氬嚭瓒呮敹鎯呭喌 2. 浼氭湁鏀惰揣涓嶈冻鎯呭喌*/
         Double rcptedQty = asnOrder.getQty() + receiptQty;
-        asnOrder.setQty(rcptedQty).setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val);
 
+        asnOrder.setQty(rcptedQty).setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val);
         if (!asnOrderMapper.updateById(asnOrder)) {
             throw new CoolException("宸叉敹璐ф暟閲忎慨鏀瑰け璐ワ紒锛�");
         }
+
+        Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.ALLOW_OVER_CHANGE));
+
+
         List<Map<String, Object>> receipts1 = (List<Map<String, Object>>) params.get("receipts");
         for (Map<String, Object> rcpt : receipts1) {
             if (null == rcpt || Objects.isNull(rcpt)) {
@@ -266,7 +276,27 @@
             if (Objects.isNull(dto.getReceiptQty()) || Double.compare(dto.getReceiptQty(), 0.0) == 0) {
                 throw new CoolException("鐗╂枡:" + dto.getMaktx() + "鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒");
             }
+
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            try {
+                if (!Objects.isNull(dto.getProdTime())) {
+                    sdf.parse(dto.getProdTime());
+                }
+            } catch (ParseException e) {
+                throw new CoolException("璇疯緭鍏ユ纭殑鏃堕棿鏍煎紡锛侊紒");
+            }
+
             Double itemRcptQty = dto.getReceiptQty() + orderItem.getQty();
+            Boolean allowOver = false;
+            if (!Objects.isNull(config)) {
+                if (Boolean.parseBoolean(config.getVal())) {
+                    allowOver = true;
+                }
+            }
+            if (itemRcptQty.compareTo(orderItem.getAnfme()) > 0 && !allowOver) {
+                throw new CoolException("鏀惰揣鏁伴噺涓嶈兘澶т簬璁″垝鏁伴噺锛侊紒");
+            }
+
             orderItem.setQty(itemRcptQty)
 //                    .setSplrBatch(dto.getSplrBatch())
                     .setUpdateBy(loginUserId)
@@ -342,13 +372,20 @@
                 .setFieldsIndex(orderItem.getFieldsIndex())
                 .setShipperId(matnr.getShipperId());
         //TODO 渚涘簲鍟嗘爣璇嗘湭璁剧疆锛屾爣璇嗙敱PO鍗曚緵搴斿晢缂栫爜杞崲
-        WarehouseAreasItem serviceOne = warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>()
+
+        LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new LambdaQueryWrapper<WarehouseAreasItem>()
 //                .eq(WarehouseAreasItem::getAsnItemId, item.getAsnItemId())
                 .eq(WarehouseAreasItem::getMatnrCode, item.getMatnrCode())
                 .eq(!Cools.isEmpty(item.getFieldsIndex()), WarehouseAreasItem::getFieldsIndex, item.getFieldsIndex())
                 .eq(WarehouseAreasItem::getAsnCode, item.getAsnCode())
-                .eq(!Cools.isEmpty(item.getIsptResult()), WarehouseAreasItem::getIsptResult, item.getIsptResult())
-                .eq(StringUtils.isNotBlank(item.getSplrBatch()), WarehouseAreasItem::getSplrBatch, item.getSplrBatch()));
+                .eq(StringUtils.isNotBlank(item.getSplrBatch()), WarehouseAreasItem::getSplrBatch, item.getSplrBatch());
+        if (Objects.isNull(orderItem.getIsptResult())) {
+            queryWrapper.isNull(WarehouseAreasItem::getIsptResult);
+        } else {
+            queryWrapper.eq(WarehouseAreasItem::getIsptResult, orderItem.getIsptResult());
+        }
+
+        WarehouseAreasItem serviceOne = warehouseAreasItemService.getOne(queryWrapper);
 
         if (!Objects.isNull(serviceOne)) {
             item.setId(serviceOne.getId());
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
index 45e1fee..626dbd8 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
@@ -161,15 +161,22 @@
                 .setMatnrId(matnr.getId())
                 .setIsptResult(orderItem.getIsptResult())
                 .setMaktx(matnr.getName())
+                .setSplrBatch(orderItem.getSplrBatch())
                 .setWeight(matnr.getWeight())
                 .setFieldsIndex(orderItem.getFieldsIndex())
                 .setShipperId(matnr.getShipperId());
-        WarehouseAreasItem serviceOne = warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>()
-                .eq(WarehouseAreasItem::getMatnrCode, item.getMatnrCode())
-                .eq(!Cools.isEmpty(item.getFieldsIndex()), WarehouseAreasItem::getFieldsIndex, item.getFieldsIndex())
-                .eq(WarehouseAreasItem::getAsnCode, item.getAsnCode())
-                .eq(!Cools.isEmpty(item.getIsptResult()), WarehouseAreasItem::getIsptResult, item.getIsptResult())
-                .eq(StringUtils.isNotBlank(item.getSplrBatch()), WarehouseAreasItem::getSplrBatch, item.getSplrBatch()));
+        
+        LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new LambdaQueryWrapper<WarehouseAreasItem>()
+                .eq(WarehouseAreasItem::getMatnrCode, orderItem.getMatnrCode())
+                .eq(!Cools.isEmpty(orderItem.getFieldsIndex()), WarehouseAreasItem::getFieldsIndex, orderItem.getFieldsIndex())
+                .eq(WarehouseAreasItem::getAsnCode, orderItem.getAsnCode())
+                .eq(StringUtils.isNotBlank(orderItem.getSplrBatch()), WarehouseAreasItem::getSplrBatch, orderItem.getSplrBatch());
+        if (Objects.isNull(orderItem.getIsptResult())) {
+            queryWrapper.isNull(WarehouseAreasItem::getIsptResult);
+        } else {
+            queryWrapper.eq(WarehouseAreasItem::getIsptResult, orderItem.getIsptResult());
+        }
+        WarehouseAreasItem serviceOne = warehouseAreasItemService.getOne(queryWrapper);
         if (!Objects.isNull(serviceOne)) {
             item.setId(serviceOne.getId());
             item.setAnfme(item.getAnfme() + serviceOne.getAnfme());
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
index 1e74587..44c66d2 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
@@ -248,8 +248,8 @@
 //        }
         //淇濆瓨鎵╁睍瀛楁
         try {
+            StringBuffer sb = new StringBuffer();
             if (Objects.isNull(asnOrderItem.getFieldsIndex()) || StringUtils.isBlank(asnOrderItem.getFieldsIndex())) {
-                StringBuffer sb = new StringBuffer();
                 if (!Objects.isNull(asnOrderItem.getExtendFields()) && !asnOrderItem.getExtendFields().isEmpty()) {
                     Map<String, String> fields = asnOrderItem.getExtendFields();
                     asnOrderItem.getExtendFields().keySet().forEach(key -> {
@@ -260,10 +260,10 @@
                 //鑾峰彇16浣島uid
                 String uuid16 = Cools.md5Chinese(sb.toString());
                 asnOrderItem.setFieldsIndex(uuid16);
-                if (FieldsUtils.saveFields(params, uuid16)) {
-                    asnOrderItem.setFieldsIndex(uuid16);
-                }
+                params.put("index", uuid16);
             }
+            //淇濆瓨鎴栨洿鏂板姩鎬佸瓧娈靛��
+            FieldsUtils.updateFieldsValue(params);
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java
index d78953b..d375c92 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java
@@ -16,6 +16,7 @@
 import com.vincent.rsf.server.manager.service.QlyInspectService;
 import com.vincent.rsf.server.manager.service.QlyIsptItemService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -122,10 +123,9 @@
                     throw new CoolException("鏀惰揣鍖哄簱瀛樹俊鎭洿鏂板け璐ワ紒锛�");
                 }
 
+                //鏂板缓璐ㄦ鍗曪紝璐ㄦ缁撴灉涓嶄細鏈夎川妫�缁撴灉
                 if (Objects.isNull(orderItem.getIsptResult())) {
                     operateReceipt(item, orderItem);
-                } else {
-
                 }
             }
         }
@@ -141,7 +141,6 @@
                     .eq(QlyInspect::getId, isptItem.stream().findFirst().get().getIspectId()));
         }
 
-//        qlyIsptItemService.pageByIsptResult(null, new QueryWrapper<QlyIsptItem>())
         return true;
     }
 
@@ -158,37 +157,51 @@
         if (sum.compareTo(orderItem.getAnfme()) >= 0) {
             //瀹屾垚璐ㄦ,鍋氭洿鏂版搷浣�
             if (safeQty.compareTo(0.0) > 0) {
-                orderItem.setIsptQty(safeQty);
+                orderItem.setIsptQty(safeQty).setAnfme(safeQty);
                 orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val);
                 if (!warehouseAreasItemService.updateById(orderItem)) {
                     throw new CoolException("鏀惰揣鍖哄簱瀛樻槑缁嗘洿鏂板け璐ワ紒锛�");
                 }
             }
 
+            WarehouseAreasItem areasItem = new WarehouseAreasItem();
+            BeanUtils.copyProperties(orderItem, areasItem);
             if (disQty.compareTo(0.0) > 0) {
-                orderItem.setIsptQty(disQty)
+                areasItem.setIsptQty(disQty)
+                        .setAnfme(disQty)
                         .setId(null)
                         .setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val);
-                if (!warehouseAreasItemService.saveOrUpdate(orderItem)) {
+                if (!warehouseAreasItemService.saveOrUpdate(areasItem)) {
                     throw new CoolException("鏀惰揣鍖哄簱瀛樻槑缁嗘洿鏂板け璐ワ紒锛�");
                 }
             }
         } else {
+            orderItem.setAnfme(orderItem.getAnfme() - sum);
+            if (!warehouseAreasItemService.updateById(orderItem)) {
+                throw new CoolException("鏀惰揣鍖哄簱瀛樻槑缁嗘洿鏂板け璐ワ紒锛�");
+            }
+
+            WarehouseAreasItem areasItem = new WarehouseAreasItem();
+            BeanUtils.copyProperties(orderItem, areasItem);
             //鏈畬鎴愬仛娣诲姞鎿嶄綔
             if (safeQty.compareTo(0.0) > 0) {
-                orderItem.setIsptQty(safeQty)
+                areasItem.setIsptQty(safeQty)
+                        .setAnfme(safeQty)
                         .setId(null)
                         .setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val);
-                if (!warehouseAreasItemService.saveOrUpdate(orderItem)) {
+                if (!warehouseAreasItemService.saveOrUpdate(areasItem)) {
                     throw new CoolException("鏀惰揣鍖哄簱瀛樻槑缁嗘洿鏂板け璐ワ紒锛�");
                 }
             }
 
+            WarehouseAreasItem items = new WarehouseAreasItem();
+            BeanUtils.copyProperties(orderItem, items);
             if (disQty.compareTo(0.0) > 0) {
-                orderItem.setIsptQty(disQty)
+                items.setIsptQty(disQty)
+                        .setAnfme(disQty)
                         .setId(null)
                         .setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val);
-                if (!warehouseAreasItemService.saveOrUpdate(orderItem)) {
+                if (!warehouseAreasItemService.saveOrUpdate(items)) {
                     throw new CoolException("鏀惰揣鍖哄簱瀛樻槑缁嗘洿鏂板け璐ワ紒锛�");
                 }
             }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/GlobalConfigCode.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/GlobalConfigCode.java
index 15ea16e..615ca93 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/GlobalConfigCode.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/GlobalConfigCode.java
@@ -13,5 +13,7 @@
 
     /**鐩存帴缁勬墭*/
     public final static String DIRECT_WAIT_PAKIN = "DirectWaitPakin";
+    /**鏀惰揣鏃舵槸鍚﹀厑璁歌秴鏀�*/
+    public final static String ALLOW_OVER_CHANGE = "AllowOverchange";
 
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/FieldsController.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/FieldsController.java
index 5d55317..e52f73f 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/FieldsController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/FieldsController.java
@@ -46,7 +46,7 @@
     @GetMapping("/fields/enable/list")
     @ApiOperation("鑾峰彇宸插紑鍚墿灞曞瓧娈�")
     public R getEnableList() {
-        return R.ok(fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1)));
+        return R.ok(fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1)));
     }
 
     @PreAuthorize("hasAuthority('system:fields:list')")

--
Gitblit v1.9.1