|
@@ -1,5 +1,6 @@
|
|
|
package org.dromara.risk.service.impl;
|
|
package org.dromara.risk.service.impl;
|
|
|
|
|
|
|
|
|
|
+import cn.hutool.core.util.IdUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
@@ -17,6 +18,8 @@ import org.dromara.risk.mapper.RiskHiddenDangerMapper;
|
|
|
import org.dromara.risk.service.IRiskHiddenDangerService;
|
|
import org.dromara.risk.service.IRiskHiddenDangerService;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
|
|
@@ -92,7 +95,11 @@ public class RiskHiddenDangerServiceImpl implements IRiskHiddenDangerService {
|
|
|
public int insertByBo(RiskHiddenDangerBo bo) {
|
|
public int insertByBo(RiskHiddenDangerBo bo) {
|
|
|
// 发现时间前端不传时取当前时间
|
|
// 发现时间前端不传时取当前时间
|
|
|
if (bo.getDiscoverTime() == null) {
|
|
if (bo.getDiscoverTime() == null) {
|
|
|
- bo.setDiscoverTime(new java.util.Date());
|
|
|
|
|
|
|
+ bo.setDiscoverTime(new Date());
|
|
|
|
|
+ }
|
|
|
|
|
+ // 隐患编号:前端未传时系统自动生成(确保 UNIQUE 索引不冲突)
|
|
|
|
|
+ if (StringUtils.isBlank(bo.getDangerCode())) {
|
|
|
|
|
+ bo.setDangerCode(generateDangerCode());
|
|
|
}
|
|
}
|
|
|
RiskHiddenDanger add = MapstructUtils.convert(bo, RiskHiddenDanger.class);
|
|
RiskHiddenDanger add = MapstructUtils.convert(bo, RiskHiddenDanger.class);
|
|
|
int row = baseMapper.insert(add);
|
|
int row = baseMapper.insert(add);
|
|
@@ -100,6 +107,28 @@ public class RiskHiddenDangerServiceImpl implements IRiskHiddenDangerService {
|
|
|
return row;
|
|
return row;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 生成隐患编号:AHD + yyyyMMddHHmmss + 3位随机数
|
|
|
|
|
+ * 冲突时自动重试(最多 5 次),保证 UNIQUE KEY uk_danger_code 不冲突
|
|
|
|
|
+ */
|
|
|
|
|
+ private String generateDangerCode() {
|
|
|
|
|
+ String prefix = "AHD";
|
|
|
|
|
+ String ts = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
|
|
|
|
|
+ java.util.concurrent.ThreadLocalRandom random = java.util.concurrent.ThreadLocalRandom.current();
|
|
|
|
|
+ for (int i = 0; i < 5; i++) {
|
|
|
|
|
+ String suffix = StringUtils.leftPad(
|
|
|
|
|
+ Integer.toString(random.nextInt(1000)), 3, '0');
|
|
|
|
|
+ String code = prefix + ts + suffix;
|
|
|
|
|
+ Long exists = baseMapper.selectCount(Wrappers.<RiskHiddenDanger>lambdaQuery()
|
|
|
|
|
+ .eq(RiskHiddenDanger::getDangerCode, code));
|
|
|
|
|
+ if (exists == null || exists == 0) {
|
|
|
|
|
+ return code;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // 极端情况:同秒生成的 5 个都撞了,加 UUID 后缀兜底
|
|
|
|
|
+ return prefix + ts + IdUtil.fastSimpleUUID().substring(0, 4).toUpperCase();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 修改安全隐患
|
|
* 修改安全隐患
|
|
|
*/
|
|
*/
|