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