市场法规库清单批量删除修改

This commit is contained in:
梁琦涛
2024-07-05 16:57:58 +08:00
parent 4ca9af916b
commit 46f4131adf
6 changed files with 181 additions and 18 deletions
@@ -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);
}
}
@@ -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);
}
/**
@@ -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;
/**
@@ -39,7 +39,7 @@ public interface ILawsMarketStandardDetailService extends IService<LawsMarketSta
* @param file
* @return
*/
List<LawsMarketStandardDetail> importExcel(MultipartFile file);
Result<?> importExcel(MultipartFile file, String manifestId);
/**
* 下载模板
@@ -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;
}
}