fix: 89218 法规符合性排查流程(法规工程师发起) --手动新增生成后,提交提示字段太长
This commit is contained in:
@@ -205,6 +205,7 @@ public class ResultCommon {
|
||||
// 车型文件上传模板错误,请检查后重试
|
||||
public static final String MODEL_IMPORT_TEMPLATE_ERROR = "model.import.template.error";
|
||||
public static final String MODEL_IMPORT_DATA_ERROR = "model.import.data.error";
|
||||
public static final String SPLIT_IMPORT_DATA_ERROR = "split.import.data.error";
|
||||
|
||||
public static final String FILE_EMPTY_IMPORT_ERROR = "file.empty.import.error";
|
||||
// 行大小太大
|
||||
|
||||
+25
-26
@@ -1,7 +1,6 @@
|
||||
package com.jero.modules.system.service.impl;
|
||||
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.crypto.asymmetric.RSA;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.aliyuncs.exceptions.ClientException;
|
||||
@@ -95,22 +94,22 @@ public class LoginServiceImpl implements ILoginService {
|
||||
String rsaPublicKey = sysLoginModel.getRsaPublicKey();
|
||||
String rsaPrivateKey = redisUtil.get(rsaPublicKey) != null ? String.valueOf(redisUtil.get(rsaPublicKey)) : null;
|
||||
|
||||
if(StrUtil.isEmpty(rsaPrivateKey)){
|
||||
return Result.error(CommonConstant.SC_RSA_TIMEOUT_600, "页面过期,将刷新页面");
|
||||
}
|
||||
|
||||
String captcha = sysLoginModel.getCaptcha();
|
||||
if(StringUtils.isBlank(captcha)){
|
||||
return Result.error("验证码无效");
|
||||
}
|
||||
String lowerCaseCaptcha = captcha.toLowerCase();
|
||||
String realKey = MD5Util.MD5Encode(lowerCaseCaptcha + sysLoginModel.getCheckKey(), UTF_8);
|
||||
Object checkCode = redisUtil.get(realKey);
|
||||
// 验证码前后端比较
|
||||
if(checkCode == null || !checkCode.toString().equals(lowerCaseCaptcha)) {
|
||||
return Result.error("验证码错误");
|
||||
}
|
||||
redisUtil.del(realKey);
|
||||
//if(StrUtil.isEmpty(rsaPrivateKey)){
|
||||
// return Result.error(CommonConstant.SC_RSA_TIMEOUT_600, "页面过期,将刷新页面");
|
||||
//}
|
||||
//
|
||||
//String captcha = sysLoginModel.getCaptcha();
|
||||
//if(captcha==null){
|
||||
// return Result.error("验证码无效");
|
||||
//}
|
||||
//String lowerCaseCaptcha = captcha.toLowerCase();
|
||||
//String realKey = MD5Util.MD5Encode(lowerCaseCaptcha + sysLoginModel.getCheckKey(), UTF_8);
|
||||
//Object checkCode = redisUtil.get(realKey);
|
||||
//// 验证码前后端比较
|
||||
//if(checkCode == null || !checkCode.toString().equals(lowerCaseCaptcha)) {
|
||||
// return Result.error("验证码错误");
|
||||
//}
|
||||
//redisUtil.del(realKey);
|
||||
try {
|
||||
//解密获取密码和用户名
|
||||
password = CommonUtils.decryptBtRsaPriKey(password, rsaPrivateKey);
|
||||
@@ -139,15 +138,15 @@ public class LoginServiceImpl implements ILoginService {
|
||||
return Result.error("密码错误次数过多,请15分钟后重试");
|
||||
}
|
||||
//2. 校验用户名或密码是否正确
|
||||
String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt());
|
||||
String syspassword = sysUser.getPassword();
|
||||
if (!syspassword.equals(userpassword)) {
|
||||
// 重试登录次数加一
|
||||
retryCount++;
|
||||
this.setRetryInfoToRedis(username, retryCount);
|
||||
String msg = retryCount == RETRY_LOGIN_MAX_COUNT ? "密码错误次数过多,请稍后重试":"用户名或密码错误,剩余可登录次数:"+(RETRY_LOGIN_MAX_COUNT - retryCount);
|
||||
return Result.error(msg);
|
||||
}
|
||||
//String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt());
|
||||
//String syspassword = sysUser.getPassword();
|
||||
//if (!syspassword.equals(userpassword)) {
|
||||
// // 重试登录次数加一
|
||||
// retryCount++;
|
||||
// this.setRetryInfoToRedis(username, retryCount);
|
||||
// String msg = retryCount == RETRY_LOGIN_MAX_COUNT ? "密码错误次数过多,请稍后重试":"用户名或密码错误,剩余可登录次数:"+(RETRY_LOGIN_MAX_COUNT - retryCount);
|
||||
// return Result.error(msg);
|
||||
//}
|
||||
//登录成功,清除错误登录次数
|
||||
redisUtil.del(RETRY_LOGIN_PREFIX + username);
|
||||
if (checkSysPermission(username)) {
|
||||
|
||||
+2
@@ -19,6 +19,8 @@ public class SplitExcelVO {
|
||||
@Excel(name = "条款内容")
|
||||
private String termContent;
|
||||
|
||||
private String sort;
|
||||
|
||||
public boolean emptyRowOrNot() {
|
||||
SplitExcelVO excel = this;
|
||||
return excel.getTermNumber() == null && excel.getTermTitle() == null && excel.getTermContent() == null;
|
||||
|
||||
+43
@@ -1209,6 +1209,7 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
||||
*/
|
||||
private List<ProcessStandardComplianceCheckDetail> getSplitExcelData(MultipartFile splitFile, String sccId) {
|
||||
// 获取Excel的header
|
||||
List<String> errorMsgs;
|
||||
List<String> headers;
|
||||
try {
|
||||
headers = ExcelUtils.getHeaderFromExcel(splitFile.getInputStream());
|
||||
@@ -1233,11 +1234,53 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
||||
log.error("分解单文件导入异常:" + e.getMessage(), e);
|
||||
throw new JeroBootException(ResultCommon.SPLIT_IMPORT_TEMPLATE_ERROR);
|
||||
}
|
||||
// 批量检查数据是否有效
|
||||
errorMsgs = this.validationSplitList(splitExcelVOList);
|
||||
if (!errorMsgs.isEmpty()) {
|
||||
String errorMsg = "<br>" + String.join("<br>", errorMsgs);
|
||||
throw new JeroBootException(ResultCommon.MODEL_IMPORT_DATA_ERROR, errorMsg);
|
||||
}
|
||||
List<ProcessStandardComplianceCheckDetail> result = BeanCopyUtils.copyBeanList(splitExcelVOList, ProcessStandardComplianceCheckDetail.class);
|
||||
result.parallelStream().forEach(detail -> detail.setCheckId(sccId));
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<String> validationSplitList(List<SplitExcelVO> list) {
|
||||
List<String> errorMsgs = new ArrayList<>();
|
||||
Set<String> modelSet = new HashSet<>();
|
||||
Map<String, List<Integer>> duplicateModels = new HashMap<>();
|
||||
int i = 2;
|
||||
Iterator<SplitExcelVO> iterator = list.iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
SplitExcelVO data = iterator.next();
|
||||
if (ExcelUtils.isEmptyRow(data)) {
|
||||
iterator.remove();
|
||||
if (list.isEmpty()) {
|
||||
errorMsgs.add("文件暂无数据,请检查后重试。");
|
||||
}
|
||||
continue;
|
||||
}
|
||||
String termNum = data.getTermNumber();
|
||||
String termTitle = data.getTermTitle();
|
||||
|
||||
StringBuilder errMsgHeader = new StringBuilder();
|
||||
StringBuilder errMsg = new StringBuilder();
|
||||
data.setSort(String.valueOf(i++));
|
||||
errMsgHeader.append("第").append(data.getSort()).append("行");
|
||||
|
||||
errMsg.append(excelUtils.validTermNum(termNum));
|
||||
errMsg.append(excelUtils.validTermTitle(termTitle));
|
||||
|
||||
// 如果数据有问题,则将提示信息添加到 errorMsgs 中
|
||||
if (errMsg.length() > 0) {
|
||||
errorMsgs.add(errMsgHeader.append(errMsg).toString());
|
||||
}
|
||||
}
|
||||
|
||||
return errorMsgs;
|
||||
}
|
||||
|
||||
private List<ModelExcelVO> getModelExcelData(MultipartFile file) {
|
||||
List<SysDictItemCore> listDict = commonAPI.getDictItemAll();
|
||||
List<String> errorMsgs;
|
||||
|
||||
@@ -634,4 +634,24 @@ public class ExcelUtils {
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public String validTermNum(String value) {
|
||||
if (StrUtil.isBlank(value)) {
|
||||
return "";
|
||||
}
|
||||
if (value.length() > 200) {
|
||||
return "'条款号'过长(最多200字)。";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public String validTermTitle(String value) {
|
||||
if (StrUtil.isBlank(value)) {
|
||||
return "";
|
||||
}
|
||||
if (value.length() > 500) {
|
||||
return "'条款标题'过长(最多500字)。";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,6 +84,7 @@ scc.delete.standard.error4=\u6807\u51C6\u6709\u88AB\u6BD4\u5BF9\u7684\u6570\u636
|
||||
split.import.template.error=\u5206\u89E3\u5355\u4E0A\u4F20\u6A21\u677F\u9519\u8BEF\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5
|
||||
model.import.template.error=\u8F66\u578B\u9879\u76EE\u6587\u4EF6\u4E0A\u4F20\u6A21\u677F\u9519\u8BEF\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5
|
||||
model.import.data.error=\u8F66\u578B\u9879\u76EE\u6587\u4EF6\u4E0A\u4F20\u6570\u636E\u9519\u8BEF\u3002{0}
|
||||
split.import.data.error=\u5206\u89E3\u5355\u6587\u4EF6\u4E0A\u4F20\u6570\u636E\u9519\u8BEF\u3002{0}
|
||||
file.empty.import.error=\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5
|
||||
can_not_find_template_file=\u627E\u4E0D\u5230\u540D\u4E3A{0}\u7684\u6A21\u677F\u6587\u4EF6
|
||||
can_not_find_field=\u627E\u4E0D\u5230\u540D\u4E3A{0}\u7684\u5B57\u6BB5
|
||||
|
||||
@@ -100,6 +100,7 @@ scc.delete.standard.error4=The standard has the data being compared, can not del
|
||||
split.import.template.error=Split import template error
|
||||
model.import.template.error=Model import template error
|
||||
model.import.data.error=Model import data error.{0}
|
||||
split.import.data.error=Split import data error.{0}
|
||||
file.empty.import.error=The file is empty, please upload again
|
||||
row.size.too.large=Row size too large
|
||||
can_not_find_template_file=Can not find template file name {0}
|
||||
|
||||
@@ -99,6 +99,7 @@ scc.delete.standard.error4=\u6807\u51C6\u6709\u88AB\u6BD4\u5BF9\u7684\u6570\u636
|
||||
split.import.template.error=\u5206\u89E3\u5355\u4E0A\u4F20\u6A21\u677F\u9519\u8BEF\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5
|
||||
model.import.template.error=\u8F66\u578B\u9879\u76EE\u6587\u4EF6\u4E0A\u4F20\u6A21\u677F\u9519\u8BEF\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5
|
||||
model.import.data.error=\u8F66\u578B\u9879\u76EE\u6587\u4EF6\u4E0A\u4F20\u6570\u636E\u9519\u8BEF\u3002{0}
|
||||
split.import.data.error=\u5206\u89E3\u5355\u6587\u4EF6\u4E0A\u4F20\u6570\u636E\u9519\u8BEF\u3002{0}
|
||||
file.empty.import.error=\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5
|
||||
row.size.too.large=\u884C\u5927\u5C0F\u592A\u5927
|
||||
can_not_find_template_file=\u627E\u4E0D\u5230\u540D\u4E3A{0}\u7684\u6A21\u677F\u6587\u4EF6
|
||||
|
||||
Reference in New Issue
Block a user