市场法规库清单批量删除修改
This commit is contained in:
@@ -21,7 +21,9 @@ import java.io.PushbackInputStream;
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 导出返回信息
|
||||
@@ -179,4 +181,13 @@ public class ImportExcelUtil {
|
||||
}
|
||||
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"))) {
|
||||
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)
|
||||
@PostMapping(value = "/importExcel")
|
||||
@RequiresPermissions("marketStandard:importExcel")
|
||||
public Result<?> importExcel(@RequestParam("file") @ApiParam("文件") MultipartFile file) {
|
||||
List<LawsMarketStandardDetail> errorMessages = lawsMarketStandardDetailService.importExcel(file);
|
||||
return Result.OK(errorMessages);
|
||||
public Result<?> importExcel(@RequestParam("file") @ApiParam("文件") MultipartFile file,@RequestParam("manifestId") String manifestId) {
|
||||
return lawsMarketStandardDetailService.importExcel(file, manifestId);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
-2
@@ -112,9 +112,7 @@ public class LawsMarketStandardDetail implements Serializable {
|
||||
* 注册日期
|
||||
*/
|
||||
@Excel(name = "注册日期", width = 15)
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "注册日期")
|
||||
// todo 类型改成varchar
|
||||
private String registrationDate;
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ public interface ILawsMarketStandardDetailService extends IService<LawsMarketSta
|
||||
* @param file
|
||||
* @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.exception.JeroBootException;
|
||||
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.LawsMarketStandardDetail;
|
||||
import com.jero.modules.laws.marketStandard.mapper.LawsMarketStandardDetailMapper;
|
||||
import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardDetailService;
|
||||
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.lang3.StringUtils;
|
||||
import org.jeecgframework.poi.excel.ExcelImportUtil;
|
||||
@@ -104,21 +106,36 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
|
||||
|
||||
|
||||
@Override
|
||||
public List<LawsMarketStandardDetail> importExcel(MultipartFile file) {
|
||||
public Result<?> importExcel(MultipartFile file,String manifestId) {
|
||||
List<LawsMarketStandardDetail> list = new ArrayList<>();
|
||||
// 校验文件是否为excel
|
||||
if (!ImportExcelUtil.checkExcelFile(file)) {
|
||||
throw new JeroBootException("请导入excel文件");
|
||||
}
|
||||
ImportParams params = new ImportParams();
|
||||
params.setHeadRows(0);
|
||||
// todo 校验excel 字段是否正确
|
||||
// boolean b = ImportExcelUtil.checkTemplateTitle(file, LawsMarketStandardDetail.class, 0, 0);
|
||||
// if (!b) {
|
||||
// throw new JeroBootException("excel文件表头错误,请重新下载");
|
||||
// }
|
||||
params.setHeadRows(1);
|
||||
// 校验excel 字段是否正确
|
||||
boolean b = ImportExcelUtil.checkTemplateTitle(file, LawsMarketStandardDetail.class, params.getTitleRows(), 0);
|
||||
if (!b) {
|
||||
throw new JeroBootException("excel文件表头错误,请重新下载");
|
||||
}
|
||||
try {
|
||||
List<LawsMarketStandardDetail> listLawsMarketStandardDetail = ExcelImportUtil.importExcel(file.getInputStream(), LawsMarketStandardDetail.class, params);
|
||||
if(!CollectionUtils.isEmpty(listLawsMarketStandardDetail) && listLawsMarketStandardDetail.size() >= 2){
|
||||
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) {
|
||||
log.error(e.getMessage(),e);
|
||||
} finally {
|
||||
@@ -128,7 +145,7 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return list;
|
||||
return Result.OK("导入成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -154,12 +171,27 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
|
||||
|
||||
@Override
|
||||
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);
|
||||
return Result.OK("操作成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
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);
|
||||
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