Commit de73475a authored by mx's avatar mx

bug

parent 56ffa6ec
......@@ -10,6 +10,7 @@ import org.rcisoft.sys.sysuser.entity.SysUser;
import org.rcisoft.sys.visit.dto.ExportVisitInfoDto;
import org.rcisoft.sys.visit.dto.ExportVisitUserDTO;
import org.rcisoft.sys.visit.dto.VisitInformationErrorDTO;
import org.rcisoft.sys.visit.dto.VisitPersonDTO;
import org.rcisoft.sys.wbac.user.dto.ErrorDTO;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.util.CollectionUtils;
......@@ -99,10 +100,10 @@ public class CheckUtil {
notTrue.add("访问事由不能为空");
if (StringUtils.isEmpty(visitInfoDto.getVisitRegion()))
notTrue.add("访问区域不能为空");
if (!isValid(visitInfoDto.getVisitDate(),DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.CHINA))) {
if (!isValid(visitInfoDto.getVisitDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.CHINA))) {
notTrue.add("访问日期为空或不符合规范");
}
if (!isValid(visitInfoDto.getVisitTime(),DateTimeFormatter.ofPattern("HH:mm", Locale.CHINA))) {
if (!isValid(visitInfoDto.getVisitTime(), DateTimeFormatter.ofPattern("HH:mm", Locale.CHINA))) {
notTrue.add("访问时间为空或不符合规范");
}
if (StringUtils.isEmpty(visitInfoDto.getVisitName()))
......@@ -110,16 +111,18 @@ public class CheckUtil {
if (StringUtils.isEmpty(visitInfoDto.getVisitPhone()))
notTrue.add("访客手机号不能为空");
// 判断访客姓名和手机号是否数量匹配
List<String> userName = Arrays.asList(visitInfoDto.getVisitName().split(",|,")).stream()
.filter(u -> StringUtils.isNotEmpty(u)).collect(Collectors.toList());
List<String> phone = Arrays.asList(visitInfoDto.getVisitPhone().split(",|,")).stream()
.filter(p -> StringUtils.isNotEmpty(p)).distinct()
.collect(Collectors.toList());
if (userName.size() != phone.size())
notTrue.add("访客姓名和访客手机号数量不对应");
List<String> matchList = phone.stream().filter(p -> p.matches("^1[3-9]\\d{9}$")).collect(Collectors.toList());
if (matchList.size() < phone.size())
notTrue.add("访客手机号不符合规范");
if (StringUtils.isNotEmpty(visitInfoDto.getVisitName()) && StringUtils.isEmpty(visitInfoDto.getVisitPhone())) {
List<String> userName = Arrays.asList(visitInfoDto.getVisitName().split(",|,")).stream()
.filter(u -> StringUtils.isNotEmpty(u)).collect(Collectors.toList());
List<String> phone = Arrays.asList(visitInfoDto.getVisitPhone().split(",|,")).stream()
.filter(p -> StringUtils.isNotEmpty(p)).distinct()
.collect(Collectors.toList());
if (userName.size() != phone.size())
notTrue.add("访客姓名和访客手机号数量不对应");
List<String> matchList = phone.stream().filter(p -> p.matches("^1[3-9]\\d{9}$")).collect(Collectors.toList());
if (matchList.size() < phone.size())
notTrue.add("访客手机号不符合规范");
}
if (notTrue.size() > 0) {
BeanUtil.copyProperties(visitInfoDto, errorDTO);
errorDTO.setError(notTrue.stream().collect(Collectors.joining(",")));
......@@ -129,7 +132,7 @@ public class CheckUtil {
}
public static boolean isValid(String dateStr, DateTimeFormatter dateFormatter) {
if(StringUtils.isEmpty(dateStr))
if (StringUtils.isEmpty(dateStr))
return false;
try {
dateFormatter.parse(dateStr);
......@@ -139,22 +142,35 @@ public class CheckUtil {
return true;
}
public static ErrorDTO visvitNotNull(ExportVisitUserDTO sysUser, int index) {
ErrorDTO errorDTO = new ErrorDTO();
public static VisitPersonDTO visvitNotNull(ExportVisitUserDTO sysUser) {
VisitPersonDTO errorDTO = new VisitPersonDTO();
Map<Integer, List<String>> notTrues = new HashMap<>();
List<String> notTrue = new ArrayList<>();
errorDTO.setSuccess(0);
// errorDTO.setSuccess(0);
if (StringUtils.isEmpty(sysUser.getName())) {
notTrue.add("姓名不能为空");
}
if (StringUtils.isEmpty(sysUser.getPhone())) {
notTrue.add("手机号不能为空");
}
if (!StringUtils.isEmpty(sysUser.getPhone())) {
List<String> phone = Arrays.asList(sysUser.getPhone().split(",|,")).stream()
.filter(p -> StringUtils.isNotEmpty(p)).distinct().collect(Collectors.toList());
List<String> matchList = phone.stream().filter(p -> p.matches("^1[3-9]\\d{9}$")).collect(Collectors.toList());
if (matchList.size() < phone.size())
notTrue.add("访客手机号不符合规范");
}
if (notTrue.size() > 0) {
errorDTO.setSuccess(1);
notTrues.put(index, notTrue);
errorDTO.setMap(notTrues);
BeanUtil.copyProperties(sysUser, errorDTO);
errorDTO.setError(notTrue.stream().collect(Collectors.joining(",")));
// errorDTO.setSuccess(1);
// notTrues.put(index, notTrue);
// errorDTO.setMap(notTrues);
return errorDTO;
}
return errorDTO;
return null;
}
}
......@@ -26,6 +26,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
......@@ -205,10 +206,10 @@ public class VisitPersonController extends CyPaginationController<SysUser> {
@ApiOperation(value = "导入访客信息", notes = "导入访客信息")
@PostMapping("/importExcel")
@CyEptSm4EnableAnno
public CyResult importSysUser(MultipartFile file) {
public CyResult importSysUser(MultipartFile file, HttpServletResponse response) throws ParseException {
return CyResultGenUtil.builder(new CyPersistModel(1),
CyMessCons.MESSAGE_ALERT_SUCCESS,
CyMessCons.MESSAGE_ALERT_ERROR,
visitUserServiceImpl.importVisitUserExcel(file));
visitUserServiceImpl.importVisitUserExcel(file, response));
}
}
package org.rcisoft.sys.visit.dto;
import cn.afterturn.easypoi.excel.annotation.Excel;
public class VisitPersonDTO extends ExportVisitUserDTO {
@Excel(name = "错误提示", orderNum = "3", width = 40)
private String error;
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
}
......@@ -9,6 +9,7 @@ import org.rcisoft.core.model.CyPageInfo;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.util.List;
/**
......@@ -17,64 +18,74 @@ import java.util.List;
public interface VisitUserService {
/**
* 保存 邀访访客信息表
* @param visitUser
* @return
*/
* 保存 邀访访客信息表
*
* @param visitUser
* @return
*/
CyPersistModel persist(VisitUser visitUser);
/**
* 删除 邀访访客信息表
* @param visitUser
* @return
*/
* 删除 邀访访客信息表
*
* @param visitUser
* @return
*/
CyPersistModel remove(VisitUser visitUser);
/**
* 逻辑删除 邀访访客信息表
* @param visitUser
* @return
*/
* 逻辑删除 邀访访客信息表
*
* @param visitUser
* @return
*/
CyPersistModel removeLogical(VisitUser visitUser);
/**
* 修改 邀访访客信息表
* @param visitUser
* @return
*/
* 修改 邀访访客信息表
*
* @param visitUser
* @return
*/
CyPersistModel merge(VisitUser visitUser);
/**
* 根据id查询 邀访访客信息表
* @param id
* @return
*/
* 根据id查询 邀访访客信息表
*
* @param id
* @return
*/
VisitUser findById(int id);
/**
* 分页查询 邀访访客信息表
* @param visitUser
* @return
*/
* 分页查询 邀访访客信息表
*
* @param visitUser
* @return
*/
IPage<VisitUser> findAllByPagination(CyPageInfo<VisitUser> paginationUtility,
VisitUser visitUser);
VisitUser visitUser);
/**
* 查询list 邀访访客信息表
* @param visitUser
* @return
*/
* 查询list 邀访访客信息表
*
* @param visitUser
* @return
*/
List<VisitUser> findAll(VisitUser visitUser);
/**
* 导出邀访访客信息表
* @return
*/
* 导出邀访访客信息表
*
* @return
*/
List<VisitUser> export(VisitUser visitUser);
int deleteByVisitId(int id);
int exportEmptyTemplate(HttpServletResponse response);
ImportVistUserDTO importVisitUserExcel(MultipartFile file);
ImportVistUserDTO importVisitUserExcel(MultipartFile file, HttpServletResponse response) throws ParseException;
}
......@@ -563,10 +563,10 @@ public class VisitInfomationServiceImpl extends ServiceImpl<VisitInfomationRepos
try {
flag = CyEpExcelUtil.isFileInUser(file, exportVisitInfoDto, 2);
} catch (Exception e) {
throw new CyServiceException(CyResSvcExcEnum.EXCEL_IMPORT_HEADER_ERROR);
throw new CyServiceException(500, "非模板文件");
}
if (!flag) {
throw new CyServiceException(CyResSvcExcEnum.EXCEL_IMPORT_HEADER_ERROR);
throw new CyServiceException(500, "非模板文件");
}
/** 从excel表中读到数据,有一部分为空值 */
List<ExportVisitInfoDto> visitInfoDtoList = CyEpExcelUtil.importExcel(file, 2, 1, ExportVisitInfoDto.class);
......@@ -731,7 +731,7 @@ public class VisitInfomationServiceImpl extends ServiceImpl<VisitInfomationRepos
CyEpExcelUtil.exportExcel(errorDTOArrayList, "邀访错误数据", "邀访错误数据",
VisitInformationErrorDTO.class, "邀访错误数据.xlsx", response);
}
return importVistInfoDTO;
return null;
}
@Override
......
......@@ -16,8 +16,7 @@ import org.rcisoft.sys.sysuser.util.CheckUtil;
import org.rcisoft.sys.sysuser.util.CyEpExcelUtil;
import org.rcisoft.sys.visit.dao.VisitPersonRepositorys;
import org.rcisoft.sys.visit.dao.VisitUserRepository;
import org.rcisoft.sys.visit.dto.ExportVisitUserDTO;
import org.rcisoft.sys.visit.dto.ImportVistUserDTO;
import org.rcisoft.sys.visit.dto.*;
import org.rcisoft.sys.visit.entity.VisitUser;
import org.rcisoft.sys.visit.service.VisitUserService;
......@@ -30,6 +29,7 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.rcisoft.core.model.CyPageInfo;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
......@@ -61,6 +61,7 @@ public class VisitUserServiceImpl extends ServiceImpl<VisitUserRepository, Visit
@Autowired
private VisitPersonRepositorys visitPersonRepositorys;
/**
* 保存 邀访访客信息表
*
......@@ -196,8 +197,9 @@ public class VisitUserServiceImpl extends ServiceImpl<VisitUserRepository, Visit
}
@Override
public ImportVistUserDTO importVisitUserExcel(MultipartFile file) {
public ImportVistUserDTO importVisitUserExcel(MultipartFile file, HttpServletResponse response) throws ParseException {
ImportVistUserDTO importUserDTO = new ImportVistUserDTO();
ArrayList<VisitPersonDTO> visitPersonList = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
String nowTime = new SimpleDateFormat("yyyyMMddHHmmss").format(calendar.getTime());
String fileName = "用户错误信息" + nowTime + ".txt";
......@@ -207,44 +209,51 @@ public class VisitUserServiceImpl extends ServiceImpl<VisitUserRepository, Visit
try {
flag = CyEpExcelUtil.isFileInUser(file, exportUserDTO, 2);
} catch (Exception e) {
throw new CyServiceException(CyResSvcExcEnum.EXCEL_IMPORT_HEADER_ERROR);
}
if (!flag){
throw new CyServiceException(org.rcisoft.sys.visit.entity.CyResSvcExcEnum.EXCEL_IMPORT_HEADER_ERROR);
throw new CyServiceException(500, "非模板文件");
}
if (!flag || !CyCompareToolUtils.compareFileName(file, "访客信息", 0, 0)) {
String errorBefore = "上传模板错误请重新下载!";
errorText(errorBefore, importUserDTO, maps, fileName);
try {
errorTxt.exportTxtPaper(maps, fileName);
} catch (Exception e) {
throw new CyServiceException(CyResSvcExcEnum.EXCEL_IMPORT_HEADER_ERROR);
}
return importUserDTO;
if (!flag) {
throw new CyServiceException(500, "非模板文件");
}
// if (!flag || !CyCompareToolUtils.compareFileName(file, "访客信息", 0, 0)) {
// String errorBefore = "上传模板错误请重新下载!";
// errorText(errorBefore, importUserDTO, maps, fileName);
// try {
// errorTxt.exportTxtPaper(maps, fileName);
// } catch (Exception e) {
// throw new CyServiceException(CyResSvcExcEnum.EXCEL_IMPORT_HEADER_ERROR);
// }
// return importUserDTO;
// }
/** 从excel表中读到数据,有一部分为空值 */
List<ExportVisitUserDTO> sysUserList = CyEpExcelUtil.importExcel(file, 2, 1, ExportVisitUserDTO.class);
List<ExportVisitUserDTO> addUserList = new ArrayList<>();
/** 遍历 从Excel表中读到的数据 抛出不合适的数据 */
//判断整个Excel是不是为空 计算非空数据有多少条
int information = CyCompareToolUtils.cmpareInformation(sysUserList);
// if (information == 0) {
// String errorBefore = "Excel文件不可为空,请检查Excel文件是否填写!";
// errorText(errorBefore, importUserDTO, maps, fileName);
// try {
// errorTxt.exportTxtPaper(maps, fileName);
// } catch (Exception e) {
// throw new CyServiceException(CyResSvcExcEnum.ERROR_NETWORK);
// }
// return importUserDTO;
// } else if (information > 500) {
// String errorMore = "单次导入数据不可超过500,请检查!";
// errorText(errorMore, importUserDTO, maps, fileName);
// try {
// errorTxt.exportTxtPaper(maps, fileName);
// } catch (Exception e) {
// throw new CyServiceException(CyResSvcExcEnum.ERROR_NETWORK);
// }
// return importUserDTO;
// }
if (information == 0) {
String errorBefore = "Excel文件不可为空,请检查Excel文件是否填写!";
errorText(errorBefore, importUserDTO, maps, fileName);
try {
errorTxt.exportTxtPaper(maps, fileName);
} catch (Exception e) {
throw new CyServiceException(CyResSvcExcEnum.ERROR_NETWORK);
}
return importUserDTO;
throw new CyServiceException(500, "Excel文件不可为空,请检查Excel文件是否填写!");
} else if (information > 500) {
String errorMore = "单次导入数据不可超过500,请检查!";
errorText(errorMore, importUserDTO, maps, fileName);
try {
errorTxt.exportTxtPaper(maps, fileName);
} catch (Exception e) {
throw new CyServiceException(CyResSvcExcEnum.ERROR_NETWORK);
}
return importUserDTO;
throw new CyServiceException(500, "单次导入数据不可超过500,请检查!");
} else {
//去除空数据
try {
......@@ -253,36 +262,37 @@ public class VisitUserServiceImpl extends ServiceImpl<VisitUserRepository, Visit
throw new CyServiceException(CyResSvcExcEnum.ERROR_NETWORK);
}
//校验 将错误信息放入maps
int index = 3; //从第3行开始
// int index = 3; //从第3行开始
for (ExportVisitUserDTO sysUser : sysUserList) {
//判断 是否为空
ErrorDTO userNull = CheckUtil.visvitNotNull(sysUser, index);
if (userNull.getSuccess() == 1) {
maps.add(userNull.getMap());
}
index++;
VisitPersonDTO userNull = CheckUtil.visvitNotNull(sysUser);
if (userNull != null) {
visitPersonList.add(userNull);
} else
addUserList.add(sysUser);
// index++;
}
}
int i = 0;
/** 将 信息插入sys_user */
if (sysUserList.size() > 0) {
for (ExportVisitUserDTO sysUser : sysUserList) {
if (addUserList.size() > 0) {
for (ExportVisitUserDTO sysUser : addUserList) {
i++;
if (sysUser.getName().length() >=20){
throw new CyServiceException(1008,"导入的数据第" + i + "行存在用户名格式错误,请重新输入");
if (sysUser.getName().length() >= 20) {
throw new CyServiceException(1008, "导入的数据第" + i + "行存在用户名格式错误,请重新输入");
}
//用户类型
SysUser user = new SysUser();
user.setUserType("1");
Pattern pattern = Pattern.compile("^((13[0-9])|(14[0-9])|(15[0-9])|(16[0-9])|(17[0-9])|(18[0-9]))\\d{8}$+");
if (sysUser.getPhone().length() != 11){
throw new CyServiceException(1008,"导入的数据第" + i + "行存在手机号格式错误,请重新输入");
if (sysUser.getPhone().length() != 11) {
throw new CyServiceException(1008, "导入的数据第" + i + "行存在手机号格式错误,请重新输入");
}
Matcher m = pattern.matcher(sysUser.getPhone());
boolean isMatch = m.matches();
if (!isMatch){
if (!isMatch) {
throw new CyServiceException(org.rcisoft.sys.visit.entity.CyResSvcExcEnum.PHONE_DATA_ERROR);
}
user.setPhone(sysUser.getPhone());
......@@ -294,13 +304,16 @@ public class VisitUserServiceImpl extends ServiceImpl<VisitUserRepository, Visit
if (sysUsers.size() == 0) {
user.setPersonId(UUID.randomUUID().toString());
sysUserRepositorys.insert(user);
}
else {
} else {
sysUsers.get(0).setName(sysUser.getName());
sysUserRepositorys.updateSysUser(sysUsers.get(0));
}
}
}
return importUserDTO;
if (null != visitPersonList && visitPersonList.size() > 0) {
CyEpExcelUtil.exportExcel(visitPersonList, "访客错误数据", "访客错误数据",
VisitInformationErrorDTO.class, "访客错误数据.xlsx", response);
}
return null;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment