Răsfoiți Sursa

数据字典相关修改

zuypeng 1 an în urmă
părinte
comite
837bd39dcf

+ 59 - 38
admin-web/src/utils/u.ts

@@ -7,15 +7,15 @@ const previewUrl = import.meta.env.VITE_PREVIEW_URL
 const u = {
     url: {
         file: fileUrl,
-        server:serverUrl,
-        preview:previewUrl
+        server: serverUrl,
+        preview: previewUrl
     },
-    dialog:{
-        actions:{
-           'add':{title:'新增',btn:'创建'},
-           'del':{title:'删除',btn:'确定'},
-           'edit':{title:'修改',btn:'修改'},
-           'view':{title:'详情',btn:'确定'},
+    dialog: {
+        actions: {
+            'add': {title: '新增', btn: '创建'},
+            'del': {title: '删除', btn: '确定'},
+            'edit': {title: '修改', btn: '修改'},
+            'view': {title: '详情', btn: '确定'},
         },
     },
     /**
@@ -34,14 +34,31 @@ const u = {
         // Return the RGB values as an object
         return {r, g, b};
     },
-
+    distinctByKey(elements: Array<any>, key: string) {
+        let result:any[] = [];
+        let keys:Array<string> = [];
+        if (!elements || elements.length === 0) {
+            return result;
+        }
+        for (let i = 0; i < elements.length; i++) {
+            if (!elements[i][key] && elements[i][key] !== 0) {
+                continue;
+            }
+            let k = elements[i][key].toString();
+            if(!keys.includes(k)){
+                result.push(elements[i]);
+                keys.push(k);
+            }
+        }
+        return result;
+    },
     groupByKey(elements: Array<any>, key: string) {
         let map = {};
         if (!elements || elements.length === 0) {
             return map;
         }
         for (let i = 0; i < elements.length; i++) {
-            if(!elements[i][key]&&elements[i][key]!==0){
+            if (!elements[i][key] && elements[i][key] !== 0) {
                 continue;
             }
             let k = elements[i][key].toString();
@@ -85,10 +102,10 @@ const u = {
             }
         })
     },
-    toMap(elements: Array<any>, fn:Function) {
+    toMap(elements: Array<any>, fn: Function) {
         let ret = {};
-        elements.forEach(item=>{
-            let key = fn.apply(null,[item]);
+        elements.forEach(item => {
+            let key = fn.apply(null, [item]);
             ret[key] = item;
         })
         return ret;
@@ -443,7 +460,7 @@ const u = {
             }
             return t;
         },
-        end(time:Date, type = 'day') {
+        end(time: Date, type = 'day') {
             let t: Date = time || new Date();
             let year = t.getFullYear(), month = t.getMonth(), day = t.getDate()
             switch (type) {
@@ -473,7 +490,7 @@ const u = {
     },
     validator: {
         required: {required: true, message: "必填项", trigger: 'blur'},
-        requiredEnum: {type:'number',min: 1, message: "必选项", trigger: 'blur'}, //字典类的校验规则
+        requiredEnum: {type: 'number', min: 1, message: "必选项", trigger: 'blur'}, //字典类的校验规则
         verifyCode: {required: true, message: "请输入验证码", trigger: 'blur'},
         rangeDate: {type: 'array', length: 2, required: true, message: "必选项"},
         lengthMax2: {type: 'string', max: 2, message: "最多2个字"},
@@ -491,31 +508,35 @@ const u = {
         negativeInt: {type: 'number', max: -1, message: "必须为负数"},
         mobile: {type: 'string', length: 11, max: 11, pattern: '^[1][3,4,5,7,8][0-9]{9}$', message: "11位数字手机号格式错误"},
         email: {type: 'email', min: 6, pattern: '^(\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$', message: "邮箱格式错误"},
-        password: { min: 8,message: "请输入8位密码", trigger: 'blur'},
+        password: {min: 8, message: "请输入8位密码", trigger: 'blur'},
         // password: {type: 'string', min: 6, max: 12, pattern: '(\\w){6,12}', message: '格式为6-12位数字字母组合'},
         idNo: {type: 'string', pattern: '(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X)$)', message: '身份证号码格式错误'},
         chinese: {type: 'string', pattern: '^[\\u4e00-\\u9fa5]{0,}$', message: '请输入中文字符'},
         num: {type: 'string', pattern: /^\d*$/, message: "只能输入数字"},
         letter: {type: 'string', pattern: /^[A-Za-z0-9\-]$/, message: "只能输入字母和数字"},
         tel: {type: 'string', pattern: /^[-\d]*$/, message: "电话只能包含数字和-"},
-        url: {type: 'string', pattern: /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/, message: "链接地址错误"},
+        url: {
+            type: 'string',
+            pattern: /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/,
+            message: "链接地址错误"
+        },
     },
     fmt: {
-        fmtMoney:function (money:number) {
-            if(!money){
+        fmtMoney: function (money: number) {
+            if (!money) {
                 return "0.00";
             }
-            return ( money/100).toFixed(2);
+            return (money / 100).toFixed(2);
         },
         fmtUrl: function (v: string) {
             let token = Session.get('accessToken')
-            if(!v){
+            if (!v) {
                 return '';
             }
             if (v.indexOf("http") === 0) {
                 return v;
             }
-            console.log(v,fileUrl)
+            console.log(v, fileUrl)
             // return fileUrl + v;
             return `${fileUrl}${v}`
         },
@@ -544,22 +565,22 @@ const u = {
          * byte 单位转换
          * @param size
          */
-        fmtSize(size:number=0){
-            if(size<1024){
-                return size+'B';
-            }
-           size =   size/ 1024;
-          if(size>1024){
-              size =   size/ 1024;
-              if(size>1024){
-                  size =   size/ 1024;
-                  return size.toFixed(2)+'GB'
-              }else{
-                  return size.toFixed(2)+'MB'
-              }
-          }else{
-              return size.toFixed(2)+'KB'
-          }
+        fmtSize(size: number = 0) {
+            if (size < 1024) {
+                return size + 'B';
+            }
+            size = size / 1024;
+            if (size > 1024) {
+                size = size / 1024;
+                if (size > 1024) {
+                    size = size / 1024;
+                    return size.toFixed(2) + 'GB'
+                } else {
+                    return size.toFixed(2) + 'MB'
+                }
+            } else {
+                return size.toFixed(2) + 'KB'
+            }
         },
         fmtDateTime(t: any) {
             if (t == null) {

+ 30 - 29
admin-web/src/views/admin/dict/index.vue

@@ -118,9 +118,9 @@
       </div>
 
 
-      <el-affix position="bottom" :offset="49">
+<!--      <el-affix position="bottom" :offset="49">
         <ext-page class="page-pager" v-model:value="state.pageQuery" @change="loadData(false)"/>
-      </el-affix>
+      </el-affix>-->
 
     </el-card>
   </div>
@@ -150,7 +150,7 @@ const state = reactive({
   },
   pageQuery: {
     pageNum: 1,
-    pageSize: 20,
+    pageSize: 10240,
     total: 0
   },
   formQuery: {},
@@ -170,7 +170,8 @@ const state = reactive({
   },
   dictLoading: false,
   visible:false,
-  saveVisible:false
+  saveVisible:false,
+  dictList:[] as any[]
 });
 
 
@@ -180,10 +181,9 @@ const loadData = (refresh: boolean = false) => {
     state.pageQuery.pageNum = 1;
   }
   state.tableData.loading = true;
-  $body('dataDict/listV2', {query:state.formQuery, ...state.pageQuery}).then((res: any) => {
-    let {list, total} = res;
-    state.tableData.data = list;
-    state.pageQuery.total = total;
+  $body('dataDict/list', state.formQuery).then((res: any) => {
+    state.dictList = res;
+    state.tableData.data = u.distinctByKey(res,"code");
     state.tableData.loading = false;
   })
 };
@@ -219,30 +219,25 @@ onMounted(() => {
 
 const handleDictRowClick = (row: any) => {
   state.dictLoading = true;
-  Msg.showLoading()
-  $body(`dataDict/list`, {query: {code: row.code}}).then(res => {
-    state.visible = true;
-    Msg.hideLoading()
-    state.dictLoading = false;
-    let {list} = res;
-    if (u.isEmptyOrNull(list)) {
-      state.dictForm = {
-        code: '',
-        remark: '',
-        list: []
-      }
-      return;
-    }
-
-    u.sort(list, 'weight');
+  let list = state.dictList.filter(k=>k.code===row.code);
+  if (u.isEmptyOrNull(list)) {
     state.dictForm = {
-      id: list[0].id,
-      code: list[0].code,
-      remark: list[0].remark,
-      list: list
+      id:0,
+      code: '',
+      remark: '',
+      list: []
     }
+    return;
+  }
+  u.sort(list, 'weight');
+  state.dictForm = {
+    id: list[0].id,
+    code: list[0].code,
+    remark: list[0].remark,
+    list: list
+  }
 
-  })
+  state.visible = true;
 }
 
 const handleDeleteDictItem = (idx) => {
@@ -276,6 +271,12 @@ const handleAddDictItem = () => {
 const handleSaveDict = () => {
   let params = state.dictForm.list.map(k => {
     let {id, name, value, weight} = k;
+    if(!name){
+      throw Error("字典项名称不能为空");
+    }
+    if(!value){
+      throw Error("字典项码值不能为空");
+    }
     return {
       id, name, value, weight,
       code: state.dictForm.code,

+ 2 - 14
car-wash-admin/src/main/java/com/kym/admin/controller/DataDictController.java

@@ -1,6 +1,5 @@
 package com.kym.admin.controller;
 
-import com.kym.common.IQuery;
 import com.kym.common.R;
 import com.kym.common.annotation.SysLog;
 import com.kym.common.controller.IController;
@@ -43,25 +42,14 @@ public class DataDictController extends IController {
      */
     @SysLog("查询字典列表")
     @PostMapping("list")
-    public R<?> list(@RequestBody IQuery<DataDict> query) {
+    public R<?> list(@RequestBody DataDict query) {
         return resp(() -> dataDictService.list(query));
     }
 
 
-    /**
-     * 字典列表
-     *
-     * @param query
-     * @return
-     */
-    @SysLog("查询字典列表")
-    @PostMapping("listV2")
-    public R<?> listV2(@RequestBody IQuery<DataDict> query) {
-        return resp(() -> dataDictService.listV2(query));
-    }
 
 
-    @SysLog("查询字典保存更新接口")
+    @SysLog(value = "查询字典保存更新接口" ,ignoreParams = true)
     @PostMapping("saveOrUpdate")
     public R<?> saveOrUpdate(@RequestBody List<DataDict> dictList) {
         return resp((t) -> dataDictService.saveOrUpdateBatch(dictList));

+ 0 - 114
car-wash-common/src/main/java/com/kym/common/ContextHelper.java

@@ -1,114 +0,0 @@
-package com.kym.common;
-
-
-import com.kym.common.utils.CommUtil;
-
-
-/**
- * 线程变量管理类
- *
- * @author yaopeng
- */
-public class ContextHelper {
-
-    private static ThreadLocal<String> TID = new ThreadLocal<>();
-    private static ThreadLocal<String> TOKEN = new ThreadLocal<>();
-    private static ThreadLocal<IUser> USER = new ThreadLocal<>();
-    private static ThreadLocal<String> IP = new ThreadLocal<>();
-    private static ThreadLocal<Integer> CLIENT = new ThreadLocal<>();
-    private static ThreadLocal<Long> ASSOID = new ThreadLocal<>();
-    private static ThreadLocal<String> REMARK = new ThreadLocal<>();
-    private static ThreadLocal<Long> ORGID = new ThreadLocal<>();
-
-
-    public static String getTid() {
-        return TID.get();
-    }
-
-    public static void setTid(String tid) {
-        TID.set(tid);
-    }
-
-    public static long getOid() {
-        return CommUtil.null2Long(ORGID.get());
-    }
-
-    public static void setOid(Long orgId) {
-        ORGID.set(orgId);
-    }
-
-    public static void setToken(String token) {
-        TOKEN.set(token);
-    }
-
-    public static IUser getUser() {
-        return USER.get();
-    }
-
-    public static void setUser(IUser user) {
-        USER.set(user);
-    }
-
-    public static void clear() {
-        TID.remove();
-        USER.remove();
-        IP.remove();
-        CLIENT.remove();
-        TOKEN.remove();
-        ASSOID.remove();
-        REMARK.remove();
-        ORGID.remove();
-    }
-
-    public static String getIp() {
-        return IP.get();
-    }
-
-    public static void setIp(String ip) {
-        IP.set(ip);
-    }
-
-    public static String getToken() {
-        return TOKEN.get();
-    }
-
-
-    public static void setClient(int client) {
-        CLIENT.set(client);
-    }
-
-    /**
-     * PLATFORM_ALL = 0;<br>
-     * PLATFORM_CMS = 1;<br>
-     * PLATFORM_PORTAL = 3;<br>
-     * PLATFORM_WX_PB = 4;<br>
-     * PLATFORM_APP = 5;<br>
-     * PLATFORM_WX_MINI = 2;<br>
-     * PLATFORM_BD_MINI = 6;<br>
-     * PLATFORM_ZFB_MINI = 7;<br>
-     * PLATFORM_TT_MINI = 8;<br>
-     * PLATFORM_QQ_MINI = 9;
-     * <br>分终端进行权限验证
-     */
-    public static int getClient() {
-        return null == CLIENT.get() ? -1 : CLIENT.get();
-    }
-
-
-    public static void setAssoId(long id) {
-        ASSOID.set(id);
-    }
-
-    public static Long getAssoId() {
-        return null == ASSOID.get() ? 0L : ASSOID.get();
-    }
-
-    public static void setRemark(String remark) {
-        REMARK.set(remark);
-    }
-
-    public static String getRemark() {
-        return REMARK.get();
-    }
-
-}

+ 0 - 20
car-wash-common/src/main/java/com/kym/common/DiffVo.java

@@ -1,20 +0,0 @@
-package com.kym.common;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-
-@AllArgsConstructor
-@NoArgsConstructor
-@Data
-@Builder
-public class DiffVo {
-    public String field;
-    public String name;
-    public String src;
-    public String dest;
-    public boolean richText;
-
-}

+ 0 - 31
car-wash-common/src/main/java/com/kym/common/IQuery.java

@@ -1,31 +0,0 @@
-package com.kym.common;
-
-import java.util.List;
-
-
-/**
- * 实体查询对象
- *
- * @param <T>
- */
-public class IQuery<T> {
-    public int pageSize = -1;
-    public int pageNum;
-    public T query;
-
-
-    public static class  IPageBean<T>{
-        public int pageSize;
-        public int pageNum;
-        public int total;
-        public List<T> list;
-    }
-
-    public static IPageBean  newPageBean(long count,List<?> dtoList){
-        IPageBean page = new IPageBean();
-        page.total = (int) count;
-        page.list = dtoList;
-        return page;
-    }
-
-}

+ 2 - 17
car-wash-miniapp/src/main/java/com/kym/miniapp/controller/DataDictController.java

@@ -2,7 +2,6 @@ package com.kym.miniapp.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.dev33.satoken.annotation.SaMode;
-import com.kym.common.IQuery;
 import com.kym.common.R;
 import com.kym.common.controller.IController;
 import com.kym.entity.miniapp.DataDict;
@@ -30,7 +29,7 @@ import java.util.List;
  * @since 2023-08-13
  */
 @RestController
-@RequestMapping("/dataDict")
+@RequestMapping("/dict")
 public class DataDictController extends IController {
 
     @Resource
@@ -38,27 +37,13 @@ public class DataDictController extends IController {
 
     /**
      * 字典列表
-     *
-     * @param query
-     * @return
      */
     @PostMapping("list")
-    public R<?> list(@RequestBody IQuery<DataDict> query) {
+    public R<?> list(@RequestBody DataDict query) {
         return resp(() -> dataDictService.list(query));
     }
 
 
-    /**
-     * 字典列表
-     *
-     * @param query
-     * @return
-     */
-    @PostMapping("listV2")
-    public R<?> listV2(@RequestBody IQuery<DataDict> query) {
-        return resp(() -> dataDictService.listV2(query));
-    }
-
 
     @SaCheckPermission(value = {"dict.add", "dict.modify"}, mode = SaMode.OR)
     @PostMapping("saveOrUpdate")

+ 1 - 1
car-wash-miniapp/src/main/java/com/kym/miniapp/controller/UserController.java

@@ -84,7 +84,7 @@ public class UserController {
      * @param userVo
      * @return
      */
-    @PutMapping
+    @PostMapping("updateUser")
     R<?> updateUser(@RequestBody UserVo userVo) {
         userService.updateUser(userVo);
         return R.success();

+ 6 - 1
car-wash-service/src/main/java/com/kym/service/cache/KymCache.java

@@ -2,6 +2,7 @@ package com.kym.service.cache;
 
 import cn.hutool.extra.spring.SpringUtil;
 import com.kym.common.exception.BusinessException;
+import com.kym.common.utils.CommUtil;
 import com.kym.entity.admin.ConnectorInfo;
 import com.kym.entity.admin.EquipmentRelation;
 import com.kym.entity.admin.Station;
@@ -184,7 +185,11 @@ public enum KymCache {
      * @return
      */
     public String[] getProductKeyAndDeviceNameByWashShortId(String shortId) {
-        var res = Objects.requireNonNull(KymCacheInjector.redisTemplate.opsForValue().get(RedisKeys.WASH_SHORT_ID_TO_PRODUCT_KEY_AND_DEVICE_NAME + shortId)).split(",");
+        var res = new String[]{};
+        var s = Objects.requireNonNull(KymCacheInjector.redisTemplate.opsForValue().get(RedisKeys.WASH_SHORT_ID_TO_PRODUCT_KEY_AND_DEVICE_NAME + shortId));
+        if(CommUtil.isNotEmptyAndNull(s)){
+            res = s.split(",");
+        }
         if (res.length != 2) {
             throw new BusinessException("设备信息异常");
         }

+ 1 - 3
car-wash-service/src/main/java/com/kym/service/miniapp/DataDictService.java

@@ -1,7 +1,6 @@
 package com.kym.service.miniapp;
 
 import com.github.yulichang.base.MPJBaseService;
-import com.kym.common.IQuery;
 import com.kym.entity.miniapp.DataDict;
 
 import java.util.List;
@@ -17,9 +16,8 @@ import java.util.List;
  */
 public interface DataDictService extends MPJBaseService<DataDict> {
 
-    Object list(IQuery<DataDict> query);
+    Object list(DataDict query);
 
-    Object listV2(IQuery<DataDict> query);
 
     void saveOrUpdate(List<DataDict> dictList);
 }

+ 21 - 48
car-wash-service/src/main/java/com/kym/service/miniapp/impl/DataDictServiceImpl.java

@@ -1,25 +1,16 @@
 package com.kym.service.miniapp.impl;
 
-import cn.hutool.core.util.ClassUtil;
-import cn.hutool.core.util.ReflectUtil;
-
-import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
-import com.github.pagehelper.PageHelper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
-import com.kym.common.IQuery;
 import com.kym.common.utils.CommUtil;
-import com.kym.entity.common.PageBean;
 import com.kym.entity.miniapp.DataDict;
 import com.kym.mapper.miniapp.DataDictMapper;
 import com.kym.service.miniapp.DataDictService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 
@@ -36,14 +27,15 @@ public class DataDictServiceImpl extends MPJBaseServiceImpl<DataDictMapper, Data
 
 
     @Override
-    public Object list(IQuery<DataDict> query) {
-        QueryChainWrapper<DataDict> wrapper = getWrapper(query.query, DataDict.class);
-//        PageHelper.startPage(query.pageNum, query.pageSize);
-        List<DataDict> list = wrapper.list();
-        return new PageBean<>(list);
+    public Object list(DataDict query) {
+        var list = lambdaQuery()
+                .like(CommUtil.isNotEmptyAndNull(query.getCode()), DataDict::getCode, query.getCode())
+                .like(CommUtil.isNotEmptyAndNull(query.getName()), DataDict::getName, query.getName())
+                .list();
+        return list;
     }
 
-
+/*
     @Override
     public Object listV2(IQuery<DataDict> query) {
         QueryChainWrapper<DataDict> wrapper = getWrapper(query.query, DataDict.class);
@@ -58,42 +50,23 @@ public class DataDictServiceImpl extends MPJBaseServiceImpl<DataDictMapper, Data
         } else {
             return IQuery.newPageBean(0, Collections.emptyList());
         }
-    }
+    }*/
 
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void saveOrUpdate(List<DataDict> dictList) {
-        saveOrUpdateBatch(dictList);
-    }
-
-
-    public <T> QueryChainWrapper<T> getWrapper(Object query, Class<T> clz) {
-        QueryChainWrapper<T> wrapper = new QueryChainWrapper<>(clz);
-        if (null == query) {
-            return wrapper;
-        }
-
-
-        Field[] fields = ClassUtil.getDeclaredFields(query.getClass());
-        if (!CommUtil.isEmptyOrNull(fields)) {
-            for (Field field : fields) {
-                int modifiers = field.getModifiers();
-                if (Modifier.isFinal(modifiers) || Modifier.isStatic(modifiers)) {
-                    continue;
-                }
-                Object fieldValue = ReflectUtil.getFieldValue(query, field);
-                if (!CommUtil.isEmptyOrNull(fieldValue)) {
-                    Class<?> aClass = field.getType();
-
-                    if (ClassUtil.isBasicType(aClass)) {
-                        wrapper.eq(CommUtil.toDbColumn(field.getName()), fieldValue);
-                    } else if (String.class.isAssignableFrom(aClass)) {
-                        wrapper.like(CommUtil.toDbColumn(field.getName()), fieldValue);
-                    }
+        List<DataDict> list = lambdaQuery().list();
+        if (CommUtil.isNotEmptyAndNull(list)) {
+            Map<String, List<DataDict>> dbDictMap = list.stream().collect(Collectors.groupingBy(DataDict::getCode));
+            //校验重名和重复值
+            dictList.forEach(dict -> {
+                List<DataDict> dataDicts = dbDictMap.get(dict.getCode());
+                if (CommUtil.isNotEmptyAndNull(dataDicts)) {
+                        CommUtil.asserts(dataDicts.stream().noneMatch(k-> !Objects.equals(k.getId(), dict.getId()) &&(k.getName().equalsIgnoreCase(dict.getName())||k.getValue().equalsIgnoreCase(dict.getValue()))),String.format("字典%s取值异常,请核对",dict.getCode()));
                 }
-            }
+            });
         }
-
-        return wrapper;
+        saveOrUpdateBatch(dictList);
     }
+
 }