java编程中if else多层嵌套的优化
@Override
public Result occUdhDupliCheck(UdhMissionApply udhMissionApply) {
/**
* 一、查询相同身份证号(查询状态不包括【自动完结】和【取消】和【待发起】并且创建人不是自己)
* 1.没有相同:
* {
* (1)查房产证号是否相同
* 《1》有相同:判断对应授信申请是否为空
* -------<1>为空:不允许发起下户(说明在7天保护期内)
* -------<2>不为空:查看授信发起日期,如果发起如果发起时间小于7天可下户申请,否则不允许发起下户申请(说明在7天保护期内)。
* 《2》没有相同:可以下户
* }
*2.有相同:{
* 直接判断对应授信申请是否为空
* -------<1>为空:不允许发起下户(说明在7天保护期内)
* -------<2>不为空:查看授信发起日期,如果发起如果发起时间小于7天可下户申请,否则不允许发起下户申请(说明在7天保护期内)。
*}
**/
//查询相同身份证号
List<UdhMissionApply> udhMissionApplyList = udhMissionApplyExtMapper.selectByCerNoSelfAndUnderHouseStatus(udhMissionApply.getCertNoSelf(),udhMissionApply.getCreateUser());
//判断有相同身份证号
if (udhMissionApplyList == null || udhMissionApplyList.size() == 0) {
//没有相同身份证的情况,查询相同房产证
udhMissionApplyList = udhMissionApplyExtMapper.selectByHousePropCertificateAndUnderHouseStatus(udhMissionApply.getHousePropCertificate(),udhMissionApply.getCreateUser());
//身份证和房产证都不存在的情况可以提交下户申请
if (udhMissionApplyList == null || udhMissionApplyList.size() == 0){
return Result.success();
}
}
//有相同身份证或者有相同身份证并且有相同房产证时,判断授信申请
if (this.method(udhMissionApplyList)){
return Result.success();
}else {
return Result.fail("下户申请失败");
}
}
/**
* 下户撞单对授信申请的验证,是否超过有效期
* @param
* @return
*/
private boolean method(List<UdhMissionApply> udhMissionApplyList) {
for (UdhMissionApply missionApply : udhMissionApplyList) {
//获取对应的授信数据
LmtGrtApply lmtGrtApply = lmtGrtApplyExtMapper.selectByUnderhouseNum(missionApply.getUnderhouseNum());
if (ObjectUtils.isEmpty(lmtGrtApply)) {
//如果授信申请为空,则授信申请正在进行中,不能进行下户申请,
return false;
}
//如果授信申请不为为空,获取授信申请开始时间
String startTime = lmtGrtApply.getCreateTime();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(startTime, formatter);
//算出现在与授信申请开始的时间差是否超过有效期天数
Duration duration = Duration.between(dateTime, LocalDateTime.now());
long days = duration.toDays();
String day = configExtMapper.selectValidParamValueByParamCode(CommConstant.MAXIMUM_LENGTH_OF_CREDIT_EXTENSION_APPLICATION);
//小于有效期,不能下户申请
if (days <= Integer.parseInt(day)) {
return false;
}
//当授信时间超过有效期,判断授信状态是否还在授信审批,如果还在授信审批,可以进行下户申请,否则不可以
if (! (DictConstant.LMT_GRT_STATUS_1).equals(lmtGrtApply.getApproveStatus())) {
return false;
}
}
return true;
}