市场法规库清单批量删除修改
This commit is contained in:
@@ -21,7 +21,9 @@ import java.io.PushbackInputStream;
|
|||||||
import java.lang.annotation.Annotation;
|
import java.lang.annotation.Annotation;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出返回信息
|
* 导出返回信息
|
||||||
@@ -179,4 +181,13 @@ public class ImportExcelUtil {
|
|||||||
}
|
}
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean checkExcelFile(MultipartFile file){
|
||||||
|
if(Objects.isNull(file)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
String fileName = file.getOriginalFilename();
|
||||||
|
String extension = fileName.substring(fileName.lastIndexOf(".") + 1);
|
||||||
|
return Arrays.asList("xls","xlsx","XLS","XLSX").contains(extension);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-4
@@ -146,7 +146,7 @@ public class MarketStandardDetailController {
|
|||||||
if (!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))) {
|
if (!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))) {
|
||||||
return Result.error("请选择数据!");
|
return Result.error("请选择数据!");
|
||||||
}
|
}
|
||||||
return lawsMarketStandardDetailService.deleteBatchById(map.get("id"));
|
return lawsMarketStandardDetailService.deleteBatchById(map.get("ids"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -160,9 +160,8 @@ public class MarketStandardDetailController {
|
|||||||
@ApiOperationSupport(order = 7)
|
@ApiOperationSupport(order = 7)
|
||||||
@PostMapping(value = "/importExcel")
|
@PostMapping(value = "/importExcel")
|
||||||
@RequiresPermissions("marketStandard:importExcel")
|
@RequiresPermissions("marketStandard:importExcel")
|
||||||
public Result<?> importExcel(@RequestParam("file") @ApiParam("文件") MultipartFile file) {
|
public Result<?> importExcel(@RequestParam("file") @ApiParam("文件") MultipartFile file,@RequestParam("manifestId") String manifestId) {
|
||||||
List<LawsMarketStandardDetail> errorMessages = lawsMarketStandardDetailService.importExcel(file);
|
return lawsMarketStandardDetailService.importExcel(file, manifestId);
|
||||||
return Result.OK(errorMessages);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
-2
@@ -112,9 +112,7 @@ public class LawsMarketStandardDetail implements Serializable {
|
|||||||
* 注册日期
|
* 注册日期
|
||||||
*/
|
*/
|
||||||
@Excel(name = "注册日期", width = 15)
|
@Excel(name = "注册日期", width = 15)
|
||||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
|
||||||
@ApiModelProperty(value = "注册日期")
|
@ApiModelProperty(value = "注册日期")
|
||||||
// todo 类型改成varchar
|
|
||||||
private String registrationDate;
|
private String registrationDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@ public interface ILawsMarketStandardDetailService extends IService<LawsMarketSta
|
|||||||
* @param file
|
* @param file
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<LawsMarketStandardDetail> importExcel(MultipartFile file);
|
Result<?> importExcel(MultipartFile file, String manifestId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 下载模板
|
* 下载模板
|
||||||
|
|||||||
+41
-11
@@ -7,11 +7,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||||||
import com.jero.common.api.vo.Result;
|
import com.jero.common.api.vo.Result;
|
||||||
import com.jero.common.exception.JeroBootException;
|
import com.jero.common.exception.JeroBootException;
|
||||||
import com.jero.common.system.query.QueryGenerator;
|
import com.jero.common.system.query.QueryGenerator;
|
||||||
|
import com.jero.common.util.ImportExcelUtil;
|
||||||
import com.jero.modules.laws.marketStandard.entity.LawsMarketStandard;
|
import com.jero.modules.laws.marketStandard.entity.LawsMarketStandard;
|
||||||
import com.jero.modules.laws.marketStandard.entity.LawsMarketStandardDetail;
|
import com.jero.modules.laws.marketStandard.entity.LawsMarketStandardDetail;
|
||||||
import com.jero.modules.laws.marketStandard.mapper.LawsMarketStandardDetailMapper;
|
import com.jero.modules.laws.marketStandard.mapper.LawsMarketStandardDetailMapper;
|
||||||
import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardDetailService;
|
import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardDetailService;
|
||||||
import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardService;
|
import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardService;
|
||||||
|
import com.jero.modules.laws.utils.ValidUtil;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.jeecgframework.poi.excel.ExcelImportUtil;
|
import org.jeecgframework.poi.excel.ExcelImportUtil;
|
||||||
@@ -104,21 +106,36 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<LawsMarketStandardDetail> importExcel(MultipartFile file) {
|
public Result<?> importExcel(MultipartFile file,String manifestId) {
|
||||||
List<LawsMarketStandardDetail> list = new ArrayList<>();
|
List<LawsMarketStandardDetail> list = new ArrayList<>();
|
||||||
|
// 校验文件是否为excel
|
||||||
|
if (!ImportExcelUtil.checkExcelFile(file)) {
|
||||||
|
throw new JeroBootException("请导入excel文件");
|
||||||
|
}
|
||||||
ImportParams params = new ImportParams();
|
ImportParams params = new ImportParams();
|
||||||
params.setHeadRows(0);
|
params.setHeadRows(1);
|
||||||
// todo 校验excel 字段是否正确
|
// 校验excel 字段是否正确
|
||||||
// boolean b = ImportExcelUtil.checkTemplateTitle(file, LawsMarketStandardDetail.class, 0, 0);
|
boolean b = ImportExcelUtil.checkTemplateTitle(file, LawsMarketStandardDetail.class, params.getTitleRows(), 0);
|
||||||
// if (!b) {
|
if (!b) {
|
||||||
// throw new JeroBootException("excel文件表头错误,请重新下载");
|
throw new JeroBootException("excel文件表头错误,请重新下载");
|
||||||
// }
|
}
|
||||||
try {
|
try {
|
||||||
List<LawsMarketStandardDetail> listLawsMarketStandardDetail = ExcelImportUtil.importExcel(file.getInputStream(), LawsMarketStandardDetail.class, params);
|
List<LawsMarketStandardDetail> listLawsMarketStandardDetail = ExcelImportUtil.importExcel(file.getInputStream(), LawsMarketStandardDetail.class, params);
|
||||||
if(!CollectionUtils.isEmpty(listLawsMarketStandardDetail) && listLawsMarketStandardDetail.size() >= 2){
|
if(!CollectionUtils.isEmpty(listLawsMarketStandardDetail) && listLawsMarketStandardDetail.size() >= 2){
|
||||||
listLawsMarketStandardDetail = listLawsMarketStandardDetail.subList(2,listLawsMarketStandardDetail.size());
|
listLawsMarketStandardDetail = listLawsMarketStandardDetail.subList(2,listLawsMarketStandardDetail.size());
|
||||||
}
|
}
|
||||||
return listLawsMarketStandardDetail;
|
for (LawsMarketStandardDetail lawsMarketStandardDetail : listLawsMarketStandardDetail) {
|
||||||
|
lawsMarketStandardDetail.setManifestId(manifestId);
|
||||||
|
// 校验数据
|
||||||
|
StringBuilder m = new StringBuilder();
|
||||||
|
StringBuilder g = ValidUtil.validateReturnBuilder(lawsMarketStandardDetail);
|
||||||
|
if(!StringUtils.isEmpty(g.toString())){
|
||||||
|
m.append(g.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
saveBatch(listLawsMarketStandardDetail);
|
||||||
|
return Result.OK("导入成功");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error(e.getMessage(),e);
|
log.error(e.getMessage(),e);
|
||||||
} finally {
|
} finally {
|
||||||
@@ -128,7 +145,7 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return list;
|
return Result.OK("导入成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -154,12 +171,27 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result<?> add(LawsMarketStandardDetail marketStandardDetail) {
|
public Result<?> add(LawsMarketStandardDetail marketStandardDetail) {
|
||||||
|
LambdaQueryWrapper<LawsMarketStandardDetail> queryLawsMarketStandardDetail = new LambdaQueryWrapper<>();
|
||||||
|
queryLawsMarketStandardDetail.eq(LawsMarketStandardDetail::getStandardId,marketStandardDetail.getStandardId());
|
||||||
|
queryLawsMarketStandardDetail.eq(LawsMarketStandardDetail::getManifestId,marketStandardDetail.getManifestId());
|
||||||
|
long l = count(queryLawsMarketStandardDetail);
|
||||||
|
if(l > 0){
|
||||||
|
Result.error("标准已存在");
|
||||||
|
}
|
||||||
save(marketStandardDetail);
|
save(marketStandardDetail);
|
||||||
return Result.OK("操作成功");
|
return Result.OK("操作成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result<?> edit(LawsMarketStandardDetail marketStandardDetail) {
|
public Result<?> edit(LawsMarketStandardDetail marketStandardDetail) {
|
||||||
|
LambdaQueryWrapper<LawsMarketStandardDetail> queryLawsMarketStandardDetail = new LambdaQueryWrapper<>();
|
||||||
|
queryLawsMarketStandardDetail.eq(LawsMarketStandardDetail::getStandardId,marketStandardDetail.getStandardId());
|
||||||
|
queryLawsMarketStandardDetail.eq(LawsMarketStandardDetail::getManifestId,marketStandardDetail.getManifestId());
|
||||||
|
queryLawsMarketStandardDetail.ne(LawsMarketStandardDetail::getId,marketStandardDetail.getId());
|
||||||
|
long l = count(queryLawsMarketStandardDetail);
|
||||||
|
if(l > 0){
|
||||||
|
Result.error("标准已存在");
|
||||||
|
}
|
||||||
updateById(marketStandardDetail);
|
updateById(marketStandardDetail);
|
||||||
return Result.OK("操作成功");
|
return Result.OK("操作成功");
|
||||||
}
|
}
|
||||||
@@ -178,5 +210,3 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,125 @@
|
|||||||
|
package com.jero.modules.laws.utils;
|
||||||
|
|
||||||
|
import com.jero.common.exception.JeroBootException;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.util.ReflectionUtils;
|
||||||
|
|
||||||
|
import javax.validation.ConstraintViolation;
|
||||||
|
import javax.validation.Validation;
|
||||||
|
import javax.validation.Validator;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手动校验@Vaild方法
|
||||||
|
* @author liJiaRao
|
||||||
|
* @date 2021-08-05 15:09
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class ValidUtil {
|
||||||
|
|
||||||
|
private static Validator validator;
|
||||||
|
|
||||||
|
static {
|
||||||
|
validator = Validation.buildDefaultValidatorFactory()
|
||||||
|
.getValidator();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手动校验@Vaild并抛出异常信息
|
||||||
|
*
|
||||||
|
* @param object 待校验对象
|
||||||
|
* @param groups 待校验的组
|
||||||
|
*/
|
||||||
|
public static void validate(Object object, Class<?>... groups){
|
||||||
|
StringBuilder msg = new StringBuilder();
|
||||||
|
Set<ConstraintViolation<Object>> set = validator.validate(object, groups);
|
||||||
|
for (ConstraintViolation<Object> constraintViolation : set) {
|
||||||
|
msg.append(constraintViolation.getMessage()).append(";");
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(msg)) {
|
||||||
|
throw new JeroBootException(msg.substring(0,msg.length()-1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手动校验@Vaild并抛出异常信息list
|
||||||
|
*
|
||||||
|
* @param object 待校验对象
|
||||||
|
* @param groups 待校验的组
|
||||||
|
* @return errorList
|
||||||
|
*/
|
||||||
|
public static List<String> validateReturnList(Object object, Class<?>... groups){
|
||||||
|
List<String> list = new ArrayList<>();
|
||||||
|
Set<ConstraintViolation<Object>> set = validator.validate(object, groups);
|
||||||
|
for (ConstraintViolation<Object> constraintViolation : set) {
|
||||||
|
list.add(constraintViolation.getMessage());
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description 校验全部数据格式
|
||||||
|
* @Author lqt
|
||||||
|
* @Date 2021/8/26
|
||||||
|
* @Param object 对象
|
||||||
|
* @Return StringBuilder
|
||||||
|
*/
|
||||||
|
public static StringBuilder validateReturnBuilder(Object object, Class<?>... groups){
|
||||||
|
StringBuilder msg = new StringBuilder();
|
||||||
|
Set<ConstraintViolation<Object>> set = validator.validate(object, groups);
|
||||||
|
if(set != null && set.size() >0 ){
|
||||||
|
Field[] fields = object.getClass().getDeclaredFields();
|
||||||
|
setField(object, fields);
|
||||||
|
for (Field field : fields) {
|
||||||
|
for(ConstraintViolation<Object> constraintViolation : set){
|
||||||
|
if(Objects.equals(constraintViolation.getPropertyPath().toString(),field.getName())){
|
||||||
|
// 这里循环获取错误信息,可以自定义格式
|
||||||
|
msg.append(constraintViolation.getMessage()).append(";");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void setField(Object object, Field[] fields) {
|
||||||
|
for (Field field : fields) {
|
||||||
|
try {
|
||||||
|
ReflectionUtils.makeAccessible(field);
|
||||||
|
Object obj = ReflectionUtils.getField(field,object);
|
||||||
|
if(!Objects.isNull(obj) && StringUtils.isBlank(obj.toString())){
|
||||||
|
ReflectionUtils.makeAccessible(field);
|
||||||
|
ReflectionUtils.setField(field,object,null);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description 校验全部数据格式
|
||||||
|
* @Author lqt
|
||||||
|
* @Date 2021/8/26
|
||||||
|
* @Param object 对象
|
||||||
|
* @Return StringBuilder
|
||||||
|
*/
|
||||||
|
public static StringBuilder validateReturnBuilderByFields(String fields,Object object, Class<?>... groups){
|
||||||
|
StringBuilder msg = new StringBuilder();
|
||||||
|
Set<ConstraintViolation<Object>> set = validator.validate(object, groups);
|
||||||
|
if(set != null && set.size() >0 ){
|
||||||
|
for(ConstraintViolation<Object> constraintViolation : set){
|
||||||
|
if(Objects.equals(constraintViolation.getPropertyPath().toString(),fields)){
|
||||||
|
// 这里循环获取错误信息,可以自定义格式
|
||||||
|
msg.append(constraintViolation.getMessage()).append(";");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user