From 23855599412c4d61b38d78f0f3abd3430a48b5b1 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期三, 25 六月 2025 11:51:38 +0800 Subject: [PATCH] Merge branch 'mdc_hyjs_master' --- lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java | 513 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 513 insertions(+), 0 deletions(-) diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java new file mode 100644 index 0000000..c9f52a2 --- /dev/null +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java @@ -0,0 +1,513 @@ +package org.jeecg.modules.system.service.impl; + +import cn.hutool.core.lang.Validator; +import cn.hutool.core.util.ArrayUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.constant.CacheConstant; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.constant.DataBaseConstant; +import org.jeecg.common.constant.SymbolConstant; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.util.ResourceUtil; +import org.jeecg.common.system.vo.DictModel; +import org.jeecg.common.system.vo.DictModelMany; +import org.jeecg.common.system.vo.DictQuery; +import org.jeecg.common.util.SqlInjectionUtil; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.system.entity.SysDict; +import org.jeecg.modules.system.entity.SysDictItem; +import org.jeecg.modules.system.mapper.SysDictItemMapper; +import org.jeecg.modules.system.mapper.SysDictMapper; +import org.jeecg.modules.system.model.TreeSelectModel; +import org.jeecg.modules.system.service.ISysDictService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * <p> + * 瀛楀吀琛� 鏈嶅姟瀹炵幇绫� + * </p> + * + * @Author zhangweijian + * @since 2018-12-28 + */ +@Service +@Slf4j +public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> implements ISysDictService { + + @Autowired + private SysDictMapper sysDictMapper; + @Autowired + private SysDictItemMapper sysDictItemMapper; + + /** + * 閫氳繃鏌ヨ鎸囧畾code 鑾峰彇瀛楀吀 + * @param code + * @return + */ + @Override + @Cacheable(value = CacheConstant.SYS_DICT_CACHE,key = "#code", unless = "#result == null ") + public List<DictModel> queryDictItemsByCode(String code) { + log.debug("鏃犵紦瀛榙ictCache鐨勬椂鍊欒皟鐢ㄨ繖閲岋紒"); + return sysDictMapper.queryDictItemsByCode(code); + } + + @Override + @Cacheable(value = CacheConstant.SYS_ENABLE_DICT_CACHE,key = "#code", unless = "#result == null ") + public List<DictModel> queryEnableDictItemsByCode(String code) { + log.debug("鏃犵紦瀛榙ictCache鐨勬椂鍊欒皟鐢ㄨ繖閲岋紒"); + return sysDictMapper.queryEnableDictItemsByCode(code); + } + + @Override + public Map<String, List<DictModel>> queryDictItemsByCodeList(List<String> dictCodeList) { + List<DictModelMany> list = sysDictMapper.queryDictItemsByCodeList(dictCodeList); + Map<String, List<DictModel>> dictMap = new HashMap(5); + for (DictModelMany dict : list) { + List<DictModel> dictItemList = dictMap.computeIfAbsent(dict.getDictCode(), i -> new ArrayList<>()); + dict.setDictCode(null); + dictItemList.add(new DictModel(dict.getValue(), dict.getText())); + } + return dictMap; + } + + @Override + public Map<String, List<DictModel>> queryAllDictItems() { + Map<String, List<DictModel>> res = new HashMap(5); + List<SysDict> ls = sysDictMapper.selectList(null); + LambdaQueryWrapper<SysDictItem> queryWrapper = new LambdaQueryWrapper<SysDictItem>(); + queryWrapper.eq(SysDictItem::getStatus, 1); + queryWrapper.orderByAsc(SysDictItem::getSortOrder); + List<SysDictItem> sysDictItemList = sysDictItemMapper.selectList(queryWrapper); + + for (SysDict d : ls) { + List<DictModel> dictModelList = sysDictItemList.stream().filter(s -> d.getId().equals(s.getDictId())).map(item -> { + DictModel dictModel = new DictModel(); + dictModel.setText(item.getItemText()); + dictModel.setValue(item.getItemValue()); + return dictModel; + }).collect(Collectors.toList()); + res.put(d.getDictCode(), dictModelList); + } + //update-begin-author:taoyan date:2022-7-8 for: 绯荤粺瀛楀吀鏁版嵁搴旇鍖呮嫭鑷畾涔夌殑java绫�-鏋氫妇 + Map<String, List<DictModel>> enumRes = ResourceUtil.getEnumDictData(); + res.putAll(enumRes); + //update-end-author:taoyan date:2022-7-8 for: 绯荤粺瀛楀吀鏁版嵁搴旇鍖呮嫭鑷畾涔夌殑java绫�-鏋氫妇 + log.debug("-------鐧诲綍鍔犺浇绯荤粺瀛楀吀-----" + res.toString()); + return res; + } + + /** + * 閫氳繃鏌ヨ鎸囧畾code 鑾峰彇瀛楀吀鍊紅ext + * @param code + * @param key + * @return + */ + + @Override + @Cacheable(value = CacheConstant.SYS_DICT_CACHE,key = "#code+':'+#key", unless = "#result == null ") + public String queryDictTextByKey(String code, String key) { + log.debug("鏃犵紦瀛榙ictText鐨勬椂鍊欒皟鐢ㄨ繖閲岋紒"); + return sysDictMapper.queryDictTextByKey(code, key); + } + + @Override + public Map<String, List<DictModel>> queryManyDictByKeys(List<String> dictCodeList, List<String> keys) { + List<DictModelMany> list = sysDictMapper.queryManyDictByKeys(dictCodeList, keys); + Map<String, List<DictModel>> dictMap = new HashMap(5); + for (DictModelMany dict : list) { + List<DictModel> dictItemList = dictMap.computeIfAbsent(dict.getDictCode(), i -> new ArrayList<>()); + dictItemList.add(new DictModel(dict.getValue(), dict.getText())); + } + //update-begin-author:taoyan date:2022-7-8 for: 绯荤粺瀛楀吀鏁版嵁搴旇鍖呮嫭鑷畾涔夌殑java绫�-鏋氫妇 + Map<String, List<DictModel>> enumRes = ResourceUtil.queryManyDictByKeys(dictCodeList, keys); + dictMap.putAll(enumRes); + //update-end-author:taoyan date:2022-7-8 for: 绯荤粺瀛楀吀鏁版嵁搴旇鍖呮嫭鑷畾涔夌殑java绫�-鏋氫妇 + return dictMap; + } + + /** + * 閫氳繃鏌ヨ鎸囧畾table鐨� text code 鑾峰彇瀛楀吀 + * dictTableCache閲囩敤redis缂撳瓨鏈夋晥鏈�10鍒嗛挓 + * @param table + * @param text + * @param code + * @return + */ + @Override + //@Cacheable(value = CacheConstant.SYS_DICT_TABLE_CACHE) + public List<DictModel> queryTableDictItemsByCode(String table, String text, String code) { + log.debug("鏃犵紦瀛榙ictTableList鐨勬椂鍊欒皟鐢ㄨ繖閲岋紒"); + return sysDictMapper.queryTableDictItemsByCode(table,text,code); + } + + @Override + public List<DictModel> queryTableDictItemsByCodeAndFilter(String table, String text, String code, String filterSql) { + log.debug("鏃犵紦瀛榙ictTableList鐨勬椂鍊欒皟鐢ㄨ繖閲岋紒"); + return sysDictMapper.queryTableDictItemsByCodeAndFilter(table,text,code,filterSql); + } + + /** + * 閫氳繃鏌ヨ鎸囧畾table鐨� text code 鑾峰彇瀛楀吀鍊紅ext + * dictTableCache閲囩敤redis缂撳瓨鏈夋晥鏈�10鍒嗛挓 + * @param table + * @param text + * @param code + * @param key + * @return + */ + @Override + @Cacheable(value = CacheConstant.SYS_DICT_TABLE_CACHE, unless = "#result == null ") + public String queryTableDictTextByKey(String table,String text,String code, String key) { + log.debug("鏃犵紦瀛榙ictTable鐨勬椂鍊欒皟鐢ㄨ繖閲岋紒"); + return sysDictMapper.queryTableDictTextByKey(table,text,code,key); + } + + @Override + public List<DictModel> queryTableDictTextByKeys(String table, String text, String code, List<String> keys) { + //update-begin-author:taoyan date:20220113 for: @dict娉ㄨВ鏀寔 dicttable 璁剧疆where鏉′欢 + String filterSql = null; + if(table.toLowerCase().indexOf(DataBaseConstant.SQL_WHERE)>0){ + String[] arr = table.split(" (?i)where "); + table = arr[0]; + filterSql = arr[1]; + } + String[] tableAndFields = new String[]{table, text, code}; + SqlInjectionUtil.filterContent(tableAndFields); + SqlInjectionUtil.specialFilterContentForDictSql(filterSql); + return sysDictMapper.queryTableDictByKeysAndFilterSql(table, text, code, filterSql, keys); + //update-end-author:taoyan date:20220113 for: @dict娉ㄨВ鏀寔 dicttable 璁剧疆where鏉′欢 + } + + @Override + public List<String> queryTableDictByKeys(String table, String text, String code, String keys) { + return this.queryTableDictByKeys(table, text, code, keys, true); + } + + /** + * 閫氳繃鏌ヨ鎸囧畾table鐨� text code 鑾峰彇瀛楀吀锛屽寘鍚玹ext鍜寁alue + * dictTableCache閲囩敤redis缂撳瓨鏈夋晥鏈�10鍒嗛挓 + * @param table + * @param text + * @param code + * @param keys (閫楀彿鍒嗛殧) + * @param delNotExist 鏄惁绉婚櫎涓嶅瓨鍦ㄧ殑椤癸紝榛樿涓簍rue锛岃涓篺alse濡傛灉鏌愪釜key涓嶅瓨鍦ㄦ暟鎹簱涓紝鍒欑洿鎺ヨ繑鍥瀔ey鏈韩 + * @return + */ + @Override + //update-begin--Author:lvdandan Date:20201204 for锛欽T-36銆恛nline銆戞爲褰㈠垪琛╞ug淇敼鍚庯紝杩樻槸鏄剧ず鍘熸潵鍊� 鏆傛椂鍘绘帀缂撳瓨 + //@Cacheable(value = CacheConstant.SYS_DICT_TABLE_BY_KEYS_CACHE) + //update-end--Author:lvdandan Date:20201204 for锛欽T-36銆恛nline銆戞爲褰㈠垪琛╞ug淇敼鍚庯紝杩樻槸鏄剧ず鍘熸潵鍊� 鏆傛椂鍘绘帀缂撳瓨 + public List<String> queryTableDictByKeys(String table, String text, String code, String keys, boolean delNotExist) { + if(oConvertUtils.isEmpty(keys)){ + return null; + } + String[] keyArray = keys.split(","); + + //update-begin-author:taoyan date:2022-4-24 for: 涓嬫媺鎼滅储缁勪欢锛岃〃鍗曠紪杈戦〉闈㈠洖鏄句笅鎷夋悳绱㈢殑鏂囨湰鐨勬椂鍊欙紝鍥犱负琛ㄥ悕鍚庨厤缃簡鏉′欢锛屽鑷磗ql鎵ц澶辫触锛� + String filterSql = null; + if(table.toLowerCase().indexOf("where")!=-1){ + String[] arr = table.split(" (?i)where "); + table = arr[0]; + filterSql = arr[1]; + } + String[] tableAndFields = new String[]{table, text, code}; + SqlInjectionUtil.filterContent(tableAndFields); + SqlInjectionUtil.specialFilterContentForDictSql(filterSql); + List<DictModel> dicts = sysDictMapper.queryTableDictByKeysAndFilterSql(table, text, code, filterSql, Arrays.asList(keyArray)); + //update-end-author:taoyan date:2022-4-24 for: 涓嬫媺鎼滅储缁勪欢锛岃〃鍗曠紪杈戦〉闈㈠洖鏄句笅鎷夋悳绱㈢殑鏂囨湰鐨勬椂鍊欙紝鍥犱负琛ㄥ悕鍚庨厤缃簡鏉′欢锛屽鑷磗ql鎵ц澶辫触锛� + List<String> texts = new ArrayList<>(dicts.size()); + + // update-begin--author:sunjianlei--date:20210514--for锛氭柊澧瀌elNotExist鍙傛暟锛岃涓篺alse涓嶅垹闄ゆ暟鎹簱閲屼笉瀛樺湪鐨刱ey ---- + // 鏌ヨ鍑烘潵鐨勯『搴忓彲鑳芥槸涔辩殑锛岄渶瑕佹帓涓簭 + for (String key : keyArray) { + List<DictModel> res = dicts.stream().filter(i -> key.equals(i.getValue())).collect(Collectors.toList()); + if (res.size() > 0) { + texts.add(res.get(0).getText()); + } else if (!delNotExist) { + texts.add(key); + } + } + // update-end--author:sunjianlei--date:20210514--for锛氭柊澧瀌elNotExist鍙傛暟锛岃涓篺alse涓嶅垹闄ゆ暟鎹簱閲屼笉瀛樺湪鐨刱ey ---- + + return texts; + } + + /** + * 鏍规嵁瀛楀吀绫诲瀷id鍒犻櫎鍏宠仈琛ㄤ腑鍏跺搴旂殑鏁版嵁 + */ + @Override + public boolean deleteByDictId(SysDict sysDict) { + sysDict.setDelFlag(CommonConstant.DEL_FLAG_1); + return this.updateById(sysDict); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer saveMain(SysDict sysDict, List<SysDictItem> sysDictItemList) { + int insert=0; + try{ + insert = sysDictMapper.insert(sysDict); + if (sysDictItemList != null) { + for (SysDictItem entity : sysDictItemList) { + //update-begin---author:wangshuai ---date:20220211 for锛歔JTC-1168]濡傛灉瀛楀吀椤瑰�间负绌猴紝鍒欏瓧鍏搁」蹇界暐瀵煎叆------------ + if(oConvertUtils.isEmpty(entity.getItemValue())){ + return -1; + } + //update-end---author:wangshuai ---date:20220211 for锛歔JTC-1168]濡傛灉瀛楀吀椤瑰�间负绌猴紝鍒欏瓧鍏搁」蹇界暐瀵煎叆------------ + entity.setDictId(sysDict.getId()); + entity.setStatus(1); + sysDictItemMapper.insert(entity); + } + } + }catch(Exception e){ + return insert; + } + return insert; + } + + @Override + public List<DictModel> queryAllDepartBackDictModel() { + return baseMapper.queryAllDepartBackDictModel(); + } + + @Override + public List<DictModel> queryAllUserBackDictModel() { + return baseMapper.queryAllUserBackDictModel(); + } + +// @Override +// public List<DictModel> queryTableDictItems(String table, String text, String code, String keyword) { +// return baseMapper.queryTableDictItems(table, text, code, "%"+keyword+"%"); +// } + + @Override + public List<DictModel> queryLittleTableDictItems(String table, String text, String code, String condition, String keyword, int pageSize) { + Page<DictModel> page = new Page<DictModel>(1, pageSize); + page.setSearchCount(false); + + //銆恑ssues/3713銆戝瓧鍏告帴鍙e瓨鍦⊿QL娉ㄥ叆椋庨櫓 + SqlInjectionUtil.specialFilterContentForDictSql(code); + + String filterSql = getFilterSql(table, text, code, condition, keyword); + IPage<DictModel> pageList = baseMapper.queryTableDictWithFilter(page, table, text, code, filterSql); + return pageList.getRecords(); + } + + /** + * 鑾峰彇鏉′欢璇彞 + * @param text + * @param code + * @param condition + * @param keyword + * @return + */ + private String getFilterSql(String table, String text, String code, String condition, String keyword){ + String keywordSql = null, filterSql = "", sqlWhere = " where "; + // update-begin-author:sunjianlei date:20220112 for: 銆怞TC-631銆戝垽鏂鏋� table 鎼哄甫浜� where 鏉′欢锛岄偅涔堝氨浣跨敤 and 鏌ヨ锛岄槻姝㈡姤閿� + if (table.toLowerCase().contains(sqlWhere)) { + sqlWhere = " and "; + } + // update-end-author:sunjianlei date:20220112 for: 銆怞TC-631銆戝垽鏂鏋� table 鎼哄甫浜� where 鏉′欢锛岄偅涔堝氨浣跨敤 and 鏌ヨ锛岄槻姝㈡姤閿� + + //update-begin-author:taoyan date:2022-8-15 for: 涓嬫媺鎼滅储缁勪欢 鏀寔浼犲叆鎺掑簭淇℃伅 鏌ヨ鎺掑簭 + String orderField = "", orderType = ""; + if (oConvertUtils.isNotEmpty(keyword)) { + // 鍏抽敭瀛楅噷闈㈠鏋滃啓鍏ヤ簡 鎺掑簭淇℃伅 xxxxx[orderby:create_time,desc] + String orderKey = "[orderby"; + if (keyword.indexOf(orderKey) >= 0 && keyword.endsWith("]")) { + String orderInfo = keyword.substring(keyword.indexOf(orderKey) + orderKey.length() + 1, keyword.length() - 1); + keyword = keyword.substring(0, keyword.indexOf(orderKey)); + String[] orderInfoArray = orderInfo.split(SymbolConstant.COMMA); + orderField = orderInfoArray[0]; + orderType = orderInfoArray[1]; + } + + if (oConvertUtils.isNotEmpty(keyword)) { + // 鍒ゆ柇鏄惁鏄閫� + if (keyword.contains(SymbolConstant.COMMA)) { + //update-begin--author:scott--date:20220105--for锛欽TC-529銆愯〃鍗曡璁″櫒銆� 缂栬緫椤甸潰鎶ラ敊锛宨n鍙傛暟閲囩敤鍙屽紩鍙峰鑷� ---- + String inKeywords = "'" + String.join("','", keyword.split(",")) + "'"; + //update-end--author:scott--date:20220105--for锛欽TC-529銆愯〃鍗曡璁″櫒銆� 缂栬緫椤甸潰鎶ラ敊锛宨n鍙傛暟閲囩敤鍙屽紩鍙峰鑷�---- + keywordSql = "(" + text + " in (" + inKeywords + ") or " + code + " in (" + inKeywords + "))"; + } else { + keywordSql = "("+text + " like '%"+keyword+"%' or "+ code + " like '%"+keyword+"%')"; + } + } + } + //update-end-author:taoyan date:2022-8-15 for: 涓嬫媺鎼滅储缁勪欢 鏀寔浼犲叆鎺掑簭淇℃伅 鏌ヨ鎺掑簭 + if(oConvertUtils.isNotEmpty(condition) && oConvertUtils.isNotEmpty(keywordSql)){ + filterSql+= sqlWhere + condition + " and " + keywordSql; + }else if(oConvertUtils.isNotEmpty(condition)){ + filterSql+= sqlWhere + condition; + }else if(oConvertUtils.isNotEmpty(keywordSql)){ + filterSql+= sqlWhere + keywordSql; + } + //update-begin-author:taoyan date:2022-8-15 for: 涓嬫媺鎼滅储缁勪欢 鏀寔浼犲叆鎺掑簭淇℃伅 鏌ヨ鎺掑簭 + // 澧炲姞鎺掑簭閫昏緫 + if (oConvertUtils.isNotEmpty(orderField)) { + filterSql += " order by " + orderField + " " + orderType; + } + //update-end-author:taoyan date:2022-8-15 for: 涓嬫媺鎼滅储缁勪欢 鏀寔浼犲叆鎺掑簭淇℃伅 鏌ヨ鎺掑簭 + return filterSql; + } + @Override + public List<DictModel> queryAllTableDictItems(String table, String text, String code, String condition, String keyword) { + String filterSql = getFilterSql(table, text, code, condition, keyword); + List<DictModel> ls = baseMapper.queryAllTableDictItems(table, text, code, filterSql); + return ls; + } + + @Override + public List<TreeSelectModel> queryTreeList(Map<String, String> query,String table, String text, String code, String pidField,String pid,String hasChildField,int converIsLeafVal) { + return baseMapper.queryTreeList(query, table, text, code, pidField, pid, hasChildField,converIsLeafVal); + } + + @Override + public void deleteOneDictPhysically(String id) { + this.baseMapper.deleteOneById(id); + this.sysDictItemMapper.delete(new LambdaQueryWrapper<SysDictItem>().eq(SysDictItem::getDictId,id)); + } + + @Override + public void updateDictDelFlag(int delFlag, String id) { + baseMapper.updateDictDelFlag(delFlag,id); + } + + @Override + public List<SysDict> queryDeleteList() { + return baseMapper.queryDeleteList(); + } + + @Override + public List<DictModel> queryDictTablePageList(DictQuery query, int pageSize, int pageNo) { + Page page = new Page(pageNo,pageSize,false); + Page<DictModel> pageList = baseMapper.queryDictTablePageList(page, query); + return pageList.getRecords(); + } + + @Override + public List<DictModel> getDictItems(String dictCode) { + List<DictModel> ls; + if (dictCode.contains(SymbolConstant.COMMA)) { + //鍏宠仈琛ㄥ瓧鍏革紙涓句緥锛歴ys_user,realname,id锛� + String[] params = dictCode.split(","); + if (params.length < 3) { + // 瀛楀吀Code鏍煎紡涓嶆纭� + return null; + } + //SQL娉ㄥ叆鏍¢獙锛堝彧闄愬埗闈炴硶涓叉敼鏁版嵁搴擄級 + //update-begin-author:taoyan date:2022-7-4 for: issues/I5BNY9 鎸囧畾甯﹁繃婊ゆ潯浠剁殑瀛楀吀table鍦ㄧ敓鎴愪唬鐮佸悗澶辨晥 + // 琛ㄥ悕鍚庝篃鏈夊彲鑳藉甫鏉′欢and璇彞 涓嶈兘璧癴ilterContent鏂规硶 + SqlInjectionUtil.specialFilterContentForDictSql(params[0]); + final String[] sqlInjCheck = {params[1], params[2]}; + //update-end-author:taoyan date:2022-7-4 for: issues/I5BNY9 鎸囧畾甯﹁繃婊ゆ潯浠剁殑瀛楀吀table鍦ㄧ敓鎴愪唬鐮佸悗澶辨晥 + //銆恑ssues/3713銆戝瓧鍏告帴鍙e瓨鍦⊿QL娉ㄥ叆椋庨櫓 + SqlInjectionUtil.filterContent(sqlInjCheck); + if (params.length == 4) { + // SQL娉ㄥ叆鏍¢獙锛堟煡璇㈡潯浠禨QL 鐗规畩check锛屾鏂规硶浠呬緵姝ゅ浣跨敤锛� + SqlInjectionUtil.specialFilterContentForDictSql(params[3]); + ls = this.queryTableDictItemsByCodeAndFilter(params[0], params[1], params[2], params[3]); + } else if (params.length == 3) { + ls = this.queryTableDictItemsByCode(params[0], params[1], params[2]); + } else { + // 瀛楀吀Code鏍煎紡涓嶆纭� + return null; + } + } else { + //瀛楀吀琛� + ls = this.queryDictItemsByCode(dictCode); + } + //update-begin-author:taoyan date:2022-8-30 for: 瀛楀吀鑾峰彇鍙互鑾峰彇鏋氫妇绫荤殑鏁版嵁 + if (ls == null || ls.size() == 0) { + Map<String, List<DictModel>> map = ResourceUtil.getEnumDictData(); + if (map.containsKey(dictCode)) { + return map.get(dictCode); + } + } + //update-end-author:taoyan date:2022-8-30 for: 瀛楀吀鑾峰彇鍙互鑾峰彇鏋氫妇绫荤殑鏁版嵁 + return ls; + } + + @Override + public List<DictModel> loadDict(String dictCode, String keyword, Integer pageSize) { + //銆恑ssues/3713銆戝瓧鍏告帴鍙e瓨鍦⊿QL娉ㄥ叆椋庨櫓 + SqlInjectionUtil.specialFilterContentForDictSql(dictCode); + + if (dictCode.contains(SymbolConstant.COMMA)) { + //update-begin-author:taoyan date:20210329 for: 涓嬫媺鎼滅储涓嶆敮鎸佽〃鍚嶅悗鍔犳煡璇㈡潯浠� + String[] params = dictCode.split(","); + String condition = null; + if (params.length != 3 && params.length != 4) { + // 瀛楀吀Code鏍煎紡涓嶆纭� + return null; + } else if (params.length == 4) { + condition = params[3]; + // update-begin-author:taoyan date:20220314 for: online琛ㄥ崟涓嬫媺鎼滅储妗嗚〃瀛楀吀閰嶇疆#{sys_org_code}鎶ラ敊 #3500 + if(condition.indexOf(SymbolConstant.SYS_VAR_PREFIX)>=0){ + condition = QueryGenerator.getSqlRuleValue(condition); + } + // update-end-author:taoyan date:20220314 for: online琛ㄥ崟涓嬫媺鎼滅储妗嗚〃瀛楀吀閰嶇疆#{sys_org_code}鎶ラ敊 #3500 + } + + // 瀛楀吀Code鏍煎紡涓嶆纭� [琛ㄥ悕涓虹┖] + if(oConvertUtils.isEmpty(params[0])){ + return null; + } + List<DictModel> ls; + if (pageSize != null) { + ls = this.queryLittleTableDictItems(params[0], params[1], params[2], condition, keyword, pageSize); + } else { + ls = this.queryAllTableDictItems(params[0], params[1], params[2], condition, keyword); + } + //update-end-author:taoyan date:20210329 for: 涓嬫媺鎼滅储涓嶆敮鎸佽〃鍚嶅悗鍔犳煡璇㈡潯浠� + return ls; + } else { + // 瀛楀吀Code鏍煎紡涓嶆纭� + return null; + } + } + + @Override + @Cacheable(value = CacheConstant.SYS_DICT_TABLE_CACHE) + public String queryTableDictByParams(String table, String text, String codes, String params) { + log.info("鏃犵紦瀛榙ictTable queryTableDictByKeys鐨勬椂鍊欒皟鐢ㄨ繖閲岋紒"); + String[] codeArr = codes.split("&&"); + String[] paramArr = params.split("&&"); + + String subSql = ""; + for (int i = 0; i < codeArr.length; i++) { + String column = codeArr[i]; + // 榛樿鍙傛暟涓虹┖瀛楃涓� + String param = paramArr.length > i ? paramArr[i] : ""; + if(column == null || ! Validator.isGeneral(column)){ + log.error("<<<闈炴硶瀛楁:" + column); + return null; + } + if(null == param || (!"-1".equals(param) && ! Validator.isGeneralWithChinese(param.replaceAll(" ", "")))){ + log.error("<<<闈炴硶鍙傛暟:" + param); + return null; + } + + if(i != 0) subSql += " and "; + subSql += column+" = '"+param+"'"; + } + return sysDictMapper.queryTableDictTextBySubSql(table,text,subSql); + } + + @Override + public List<Map> queryTableFieldByParams(String queryTable, String[] columns, String paramName, String[] paramValues) { + String column = ArrayUtil.join(columns, ","); + return this.baseMapper.queryTableFieldByParams(queryTable, column, paramName, paramValues); + } + +} -- Gitblit v1.9.3