数据字典子项插入由批量改为逐条兼容多数据库
This commit is contained in:
parent
cb0265f95f
commit
2feaaae6b0
|
@ -1,7 +1,8 @@
|
||||||
package com.diboot.core.handle;
|
package com.diboot.core.handler;
|
||||||
|
|
||||||
import com.diboot.core.exception.BusinessException;
|
import com.diboot.core.exception.BusinessException;
|
||||||
import com.diboot.core.util.S;
|
import com.diboot.core.util.S;
|
||||||
|
import com.diboot.core.util.V;
|
||||||
import com.diboot.core.vo.Status;
|
import com.diboot.core.vo.Status;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
@ -44,7 +45,7 @@ public class DefaultExceptionHandler {
|
||||||
}
|
}
|
||||||
if (br != null && br.hasErrors()) {
|
if (br != null && br.hasErrors()) {
|
||||||
map.put("code", Status.FAIL_VALIDATION.code());
|
map.put("code", Status.FAIL_VALIDATION.code());
|
||||||
String validateErrorMsg = getBindingError(br);
|
String validateErrorMsg = V.getBindingError(br);
|
||||||
map.put("msg", validateErrorMsg);
|
map.put("msg", validateErrorMsg);
|
||||||
log.warn("数据校验失败, {}: {}", br.getObjectName(), validateErrorMsg);
|
log.warn("数据校验失败, {}: {}", br.getObjectName(), validateErrorMsg);
|
||||||
}
|
}
|
||||||
|
@ -124,21 +125,4 @@ public class DefaultExceptionHandler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 解析所有的验证错误信息,转换为JSON
|
|
||||||
* @param result
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
protected String getBindingError(BindingResult result){
|
|
||||||
if(result == null || !result.hasErrors()){
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
List<ObjectError> errors = result.getAllErrors();
|
|
||||||
List<String> allErrors = new ArrayList<>(errors.size());
|
|
||||||
for(ObjectError error : errors){
|
|
||||||
allErrors.add(error.getDefaultMessage().replaceAll("\"", "'"));
|
|
||||||
}
|
|
||||||
return S.join(allErrors);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -3,6 +3,7 @@ package com.diboot.core.service.impl;
|
||||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.diboot.core.entity.Dictionary;
|
import com.diboot.core.entity.Dictionary;
|
||||||
|
import com.diboot.core.exception.BusinessException;
|
||||||
import com.diboot.core.mapper.DictionaryMapper;
|
import com.diboot.core.mapper.DictionaryMapper;
|
||||||
import com.diboot.core.service.DictionaryService;
|
import com.diboot.core.service.DictionaryService;
|
||||||
import com.diboot.core.util.BeanUtils;
|
import com.diboot.core.util.BeanUtils;
|
||||||
|
@ -11,6 +12,7 @@ import com.diboot.core.util.ISetter;
|
||||||
import com.diboot.core.util.V;
|
import com.diboot.core.util.V;
|
||||||
import com.diboot.core.vo.DictionaryVO;
|
import com.diboot.core.vo.DictionaryVO;
|
||||||
import com.diboot.core.vo.KeyValue;
|
import com.diboot.core.vo.KeyValue;
|
||||||
|
import com.diboot.core.vo.Status;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.context.annotation.Primary;
|
import org.springframework.context.annotation.Primary;
|
||||||
|
@ -74,32 +76,33 @@ public class DictionaryServiceImpl extends BaseServiceImpl<DictionaryMapper, Dic
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public boolean addDictTree(DictionaryVO dictVO) {
|
public boolean addDictTree(DictionaryVO dictVO) {
|
||||||
//将DictionaryVO转化为Dictionary
|
//将DictionaryVO转化为Dictionary
|
||||||
Dictionary dictionary = new Dictionary();
|
Dictionary dictionary = new Dictionary();
|
||||||
dictionary = (Dictionary) BeanUtils.copyProperties(dictVO, dictionary);
|
dictionary = (Dictionary) BeanUtils.copyProperties(dictVO, dictionary);
|
||||||
if(!super.createEntity(dictionary)){
|
if(!super.createEntity(dictionary)){
|
||||||
log.warn("新建父数据字典失败,type="+dictVO.getType());
|
log.warn("新建数据字典定义失败,type="+dictVO.getType());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
List<Dictionary> children = dictVO.getChildren();
|
List<Dictionary> children = dictVO.getChildren();
|
||||||
if(V.notEmpty(children)){
|
if(V.notEmpty(children)){
|
||||||
try {
|
boolean success = true;
|
||||||
for(Dictionary dict : children){
|
for(Dictionary dict : children){
|
||||||
dict.setParentId(dictionary.getId());
|
dict.setParentId(dictionary.getId());
|
||||||
dict.setType(dictionary.getType());
|
dict.setType(dictionary.getType());
|
||||||
|
boolean insertOK = super.createEntity(dict);
|
||||||
|
if (!insertOK){
|
||||||
|
log.warn("dictionary插入数据字典失败,请检查!");
|
||||||
|
success = false;
|
||||||
}
|
}
|
||||||
if(!super.createEntities(children)){
|
}
|
||||||
log.warn("新建子数据字典失败,type="+dictVO.getType());
|
if(!success){
|
||||||
throw new RuntimeException();
|
String errorMsg = "新建数据字典子项失败,type="+dictVO.getType();
|
||||||
}
|
log.warn(errorMsg);
|
||||||
} catch (Exception e) {
|
throw new BusinessException(Status.FAIL_OPERATION, errorMsg);
|
||||||
log.warn("新建子数据字典失败,type="+dictVO.getType());
|
|
||||||
throw new RuntimeException();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -71,11 +71,11 @@ public class ContextHelper implements ApplicationContextAware {
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* 获取指定类型的单个Bean实例
|
* 获取指定类型的单个Bean实例
|
||||||
* @param type
|
* @param clazz
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static Object getBean(Class type){
|
public static <T> T getBean(Class<T> clazz){
|
||||||
return getApplicationContext().getBean(type);
|
return getApplicationContext().getBean(clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
|
|
|
@ -2,6 +2,8 @@ package com.diboot.core.util;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.validation.BindingResult;
|
||||||
|
import org.springframework.validation.ObjectError;
|
||||||
|
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
@ -385,4 +387,21 @@ public class V {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析所有的验证错误信息,转换为JSON
|
||||||
|
* @param result
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String getBindingError(BindingResult result){
|
||||||
|
if(result == null || !result.hasErrors()){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
List<ObjectError> errors = result.getAllErrors();
|
||||||
|
List<String> allErrors = new ArrayList<>(errors.size());
|
||||||
|
for(ObjectError error : errors){
|
||||||
|
allErrors.add(error.getDefaultMessage().replaceAll("\"", "'"));
|
||||||
|
}
|
||||||
|
return S.join(allErrors);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
package com.diboot.example.controller;
|
package com.diboot.example.controller;
|
||||||
|
|
||||||
import com.diboot.core.handle.DefaultExceptionHandler;
|
import com.diboot.core.handler.DefaultExceptionHandler;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package com.diboot.example.handle;
|
package com.diboot.example.handle;
|
||||||
|
|
||||||
import com.diboot.core.handle.DefaultExceptionHandler;
|
import com.diboot.core.handler.DefaultExceptionHandler;
|
||||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue