parent
1f646a6b18
commit
498335a9b8
@ -0,0 +1,28 @@ |
||||
package digital.laboratory.platform.entrustment.entity; |
||||
import com.baomidou.mybatisplus.annotation.TableName; |
||||
import digital.laboratory.platform.common.mybatis.base.BaseEntity; |
||||
import io.swagger.annotations.ApiModel; |
||||
import lombok.Data; |
||||
import lombok.EqualsAndHashCode; |
||||
|
||||
@Data |
||||
@TableName(value = "b_suspect", autoResultMap = true) |
||||
@EqualsAndHashCode(callSuper = true) |
||||
@ApiModel(value = "委托嫌疑人") |
||||
public class Suspect extends BaseEntity { |
||||
private String id; |
||||
|
||||
private String name; |
||||
|
||||
private String idNumber; |
||||
|
||||
private String phoneNumber; |
||||
|
||||
private String sex; |
||||
|
||||
private int age; |
||||
|
||||
private String entrustId; |
||||
|
||||
private int orderNo; |
||||
} |
@ -0,0 +1,13 @@ |
||||
package digital.laboratory.platform.entrustment.mapper; |
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
import digital.laboratory.platform.entrustment.entity.Suspect; |
||||
import org.apache.ibatis.annotations.Mapper; |
||||
import org.springframework.stereotype.Repository; |
||||
|
||||
/** |
||||
* 委托嫌疑人数据访问接口 |
||||
*/ |
||||
@Mapper |
||||
public interface SuspectMapper extends BaseMapper<Suspect> { |
||||
} |
@ -0,0 +1,13 @@ |
||||
package digital.laboratory.platform.entrustment.service; |
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService; |
||||
import digital.laboratory.platform.entrustment.entity.Suspect; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 委托嫌疑人业务逻辑接口 |
||||
*/ |
||||
public interface SuspectService extends IService<Suspect> { |
||||
List<Suspect> addSuspectList(List<Suspect> suspectList, String entrustId); |
||||
} |
@ -0,0 +1,88 @@ |
||||
package digital.laboratory.platform.entrustment.service.impl; |
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker; |
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||
import com.esotericsoftware.minlog.Log; |
||||
import digital.laboratory.platform.entrustment.entity.Suspect; |
||||
import digital.laboratory.platform.entrustment.mapper.SuspectMapper; |
||||
import digital.laboratory.platform.entrustment.service.SuspectService; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
import java.time.LocalDate; |
||||
import java.time.format.DateTimeFormatter; |
||||
import java.time.temporal.ChronoUnit; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 委托嫌疑人业务逻辑实现类 |
||||
*/ |
||||
@Service |
||||
public class SuspectServiceImpl extends ServiceImpl<SuspectMapper, Suspect> implements SuspectService { |
||||
|
||||
/** |
||||
* 批量添加嫌疑人信息并关联到指定委托 |
||||
* |
||||
* @param suspectList 嫌疑人信息列表 |
||||
* @param entrustId 委托ID,用于关联嫌疑人与委托关系 |
||||
* @return 添加成功返回原嫌疑人列表,失败返回null |
||||
*/ |
||||
@Override |
||||
public List<Suspect> addSuspectList(List<Suspect> suspectList, String entrustId) { |
||||
// 遍历嫌疑人列表进行预处理
|
||||
int orderNo = 1; |
||||
for (Suspect suspect : suspectList) { |
||||
// 生成全局唯一ID并设置(转为大写保证一致性)
|
||||
suspect.setId(IdWorker.get32UUID().toUpperCase()); |
||||
|
||||
// 从身份证号码中提取并填充性别和年龄信息
|
||||
String idNumber = suspect.getIdNumber(); |
||||
if (!StringUtils.isNotBlank(idNumber) || idNumber.length() != 18){ |
||||
throw new RuntimeException("身份证号码格式错误"); |
||||
} |
||||
this.fillIdentityInfo(suspect); |
||||
|
||||
// 关联委托ID,建立嫌疑人与委托的关系
|
||||
suspect.setEntrustId(entrustId); |
||||
suspect.setOrderNo(orderNo); |
||||
orderNo++; |
||||
} |
||||
|
||||
// 批量保存嫌疑人信息到数据库
|
||||
boolean ret = this.saveBatch(suspectList); |
||||
|
||||
// 根据保存结果返回处理后的列表或null
|
||||
return ret ? suspectList : null; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* 从身份证号码中提取并填充性别和年龄信息 |
||||
*/ |
||||
private void fillIdentityInfo(Suspect suspect) { |
||||
String idNumber = suspect.getIdNumber(); |
||||
|
||||
// 去除空格并转换为大写
|
||||
idNumber = idNumber.trim().toUpperCase(); |
||||
|
||||
// 校验身份证长度
|
||||
if (idNumber.length() == 18) { |
||||
try { |
||||
// 提取性别
|
||||
int genderCode = Integer.parseInt(idNumber.substring(16, 17)); |
||||
suspect.setSex(genderCode % 2 == 0 ? "女" : "男"); |
||||
|
||||
// 提取出生日期并计算年龄
|
||||
String birthDateStr = idNumber.substring(6, 14); |
||||
LocalDate birthDate = LocalDate.parse(birthDateStr, DateTimeFormatter.BASIC_ISO_DATE); |
||||
LocalDate currentDate = LocalDate.now(); |
||||
long age = ChronoUnit.YEARS.between(birthDate, currentDate); |
||||
suspect.setAge((int)age); |
||||
|
||||
} catch (Exception e) { |
||||
// 身份证格式异常,记录日志但不中断业务
|
||||
Log.info("身份证号码格式异常: {}", idNumber, e); |
||||
} |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue