|
|
@@ -16,6 +16,7 @@ import com.jzg.quotation.commons.client.OrgClient;
|
|
|
import com.jzg.quotation.summary.aop.FactorMatch;
|
|
|
import com.jzg.quotation.summary.client.PtlNewAgreementClient;
|
|
|
import com.jzg.quotation.summary.service.*;
|
|
|
+import feign.FeignException;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.aspectj.lang.JoinPoint;
|
|
|
@@ -65,77 +66,90 @@ public class AuditVerificationAspect {
|
|
|
public void doBefore(JoinPoint point) {
|
|
|
Object[] args = point.getArgs();
|
|
|
for (Object arg : args) {
|
|
|
- String orderNo = "";
|
|
|
- if (arg instanceof UnderwritingVo){
|
|
|
- UnderwritingVo underwritingVo = JSONObject.parseObject(JSONObject.toJSONString(arg), UnderwritingVo.class);
|
|
|
- orderNo = underwritingVo.getOrder().getOrdersNo();
|
|
|
- }
|
|
|
+ try {
|
|
|
+ String orderNo = "";
|
|
|
+ if (arg instanceof UnderwritingVo){
|
|
|
+ UnderwritingVo underwritingVo = JSONObject.parseObject(JSONObject.toJSONString(arg), UnderwritingVo.class);
|
|
|
+ orderNo = underwritingVo.getOrder().getOrdersNo();
|
|
|
+ }
|
|
|
|
|
|
- InsOrders insOrders = insOrdersService.getById(orderNo);
|
|
|
- AssertionUtils.isFail(Objects.isNull(insOrders),"订单不存在");
|
|
|
- //查找费用 找不到则抛出异常
|
|
|
- InsFeeOrders insFeeOrders = insFeeOrdersService.getById(orderNo);
|
|
|
- AssertionUtils.isFail(Objects.isNull(insFeeOrders),"费用信息不匹配");
|
|
|
-
|
|
|
-
|
|
|
- // 获取订单车辆信息
|
|
|
- InsOrdersCarInfo insOrdersCarInfo = insOrdersCarInfoService.getById(insOrders.getId());
|
|
|
- // 获取订单险种信息
|
|
|
- List<InsOrdersRisk> insOrdersRisks = insOrdersRiskService.list(new LambdaQueryWrapper<InsOrdersRisk>().eq(InsOrdersRisk::getOrderNo, insOrders.getId()));
|
|
|
- // 获取订单车主、投被保人信息
|
|
|
- List<InsOrdersCarUserInfo> insOrdersCarUserInfos = insOrdersCarUserInfoService.list(new LambdaQueryWrapper<InsOrdersCarUserInfo>().eq(InsOrdersCarUserInfo::getOrderNo, insOrders.getId()));
|
|
|
- // 获取订单费用信息
|
|
|
- InsOrdersCosts insOrdersCosts = insOrdersCostsService.getById(insOrders.getId());
|
|
|
- // 获取订单险种信息
|
|
|
- List<InsOrdersKind> kindList = insOrdersKindService.list(new LambdaQueryWrapper<InsOrdersKind>().eq(InsOrdersKind::getOrderNo, insOrders.getId()));
|
|
|
- // 获取订单驾意险信息
|
|
|
- InsOrdersAccidentalDriving insOrdersAccidentalDriving = insOrdersAccidentalDrivingService.getById(insOrders.getId());
|
|
|
- // 获取订单其他信息
|
|
|
- InsOrdersOther insOrdersOther = insOrdersOtherService.getById(insOrders.getId());
|
|
|
-
|
|
|
- // 通过费用id 查找规则id
|
|
|
- String costId = insFeeOrders.getCostId();
|
|
|
- HttpResult httpResult = orgClient.queryCostById(costId);
|
|
|
- AssertionUtils.isFail(httpResult.getCode() == 500,"费用查找失败");
|
|
|
- PtlAgreementCost ptlAgreementCost = JSONObject.parseObject(JSONObject.toJSONString(httpResult.getData()),PtlAgreementCost.class);
|
|
|
- AssertionUtils.isFail(Objects.isNull(ptlAgreementCost),"费用查找失败");
|
|
|
- String coverRuleId = ptlAgreementCost.getCoverRuleId();
|
|
|
-
|
|
|
- // 查询承保规则实体,判断是否有parentId
|
|
|
- HttpResult ruleResult = orgClient.rulesGet(coverRuleId);
|
|
|
- AssertionUtils.isFail(ruleResult.getCode() == 500, "承保规则查找失败");
|
|
|
- PtlAgreementUndwrtRules ruleEntity = JSONObject.parseObject(JSONObject.toJSONString(ruleResult.getData()), PtlAgreementUndwrtRules.class);
|
|
|
-
|
|
|
- List<String> ruleIds = new ArrayList<>();
|
|
|
- if (ruleEntity != null && ruleEntity.getParentId() != null && !ruleEntity.getParentId().isEmpty()) {
|
|
|
- // 有parentId → 根据parentId查询所有子规则(多条)
|
|
|
- HttpResult childRulesResult = orgClient.rulesListByParentId(ruleEntity.getParentId());
|
|
|
- AssertionUtils.isFail(childRulesResult.getCode() == 500, "子规则查找失败");
|
|
|
- List<PtlAgreementUndwrtRules> childRules = JSONArray.parseArray(JSONObject.toJSONString(childRulesResult.getData()), PtlAgreementUndwrtRules.class);
|
|
|
- if (childRules != null) {
|
|
|
- ruleIds.addAll(childRules.stream().map(PtlAgreementUndwrtRules::getId).collect(Collectors.toList()));
|
|
|
+ InsOrders insOrders = insOrdersService.getById(orderNo);
|
|
|
+ AssertionUtils.isFail(Objects.isNull(insOrders),"订单不存在");
|
|
|
+ //查找费用 找不到则抛出异常
|
|
|
+ InsFeeOrders insFeeOrders = insFeeOrdersService.getById(orderNo);
|
|
|
+ AssertionUtils.isFail(Objects.isNull(insFeeOrders),"费用信息不匹配");
|
|
|
+
|
|
|
+
|
|
|
+ // 获取订单车辆信息
|
|
|
+ InsOrdersCarInfo insOrdersCarInfo = insOrdersCarInfoService.getById(insOrders.getId());
|
|
|
+ // 获取订单险种信息
|
|
|
+ List<InsOrdersRisk> insOrdersRisks = insOrdersRiskService.list(new LambdaQueryWrapper<InsOrdersRisk>().eq(InsOrdersRisk::getOrderNo, insOrders.getId()));
|
|
|
+ // 获取订单车主、投被保人信息
|
|
|
+ List<InsOrdersCarUserInfo> insOrdersCarUserInfos = insOrdersCarUserInfoService.list(new LambdaQueryWrapper<InsOrdersCarUserInfo>().eq(InsOrdersCarUserInfo::getOrderNo, insOrders.getId()));
|
|
|
+ // 获取订单费用信息
|
|
|
+ InsOrdersCosts insOrdersCosts = insOrdersCostsService.getById(insOrders.getId());
|
|
|
+ // 获取订单险种信息
|
|
|
+ List<InsOrdersKind> kindList = insOrdersKindService.list(new LambdaQueryWrapper<InsOrdersKind>().eq(InsOrdersKind::getOrderNo, insOrders.getId()));
|
|
|
+ // 获取订单驾意险信息
|
|
|
+ InsOrdersAccidentalDriving insOrdersAccidentalDriving = insOrdersAccidentalDrivingService.getById(insOrders.getId());
|
|
|
+ // 获取订单其他信息
|
|
|
+ InsOrdersOther insOrdersOther = insOrdersOtherService.getById(insOrders.getId());
|
|
|
+
|
|
|
+ // 通过费用id 查找规则id
|
|
|
+ String costId = insFeeOrders.getCostId();
|
|
|
+ HttpResult httpResult = orgClient.queryCostById(costId);
|
|
|
+ AssertionUtils.isFail(httpResult.getCode() == 500,"费用查找失败");
|
|
|
+ PtlAgreementCost ptlAgreementCost = JSONObject.parseObject(JSONObject.toJSONString(httpResult.getData()),PtlAgreementCost.class);
|
|
|
+ AssertionUtils.isFail(Objects.isNull(ptlAgreementCost),"费用查找失败");
|
|
|
+ String coverRuleId = ptlAgreementCost.getCoverRuleId();
|
|
|
+
|
|
|
+ // 查询承保规则实体,判断是否有parentId
|
|
|
+ HttpResult ruleResult = orgClient.rulesGet(coverRuleId);
|
|
|
+ AssertionUtils.isFail(ruleResult.getCode() == 500, "承保规则查找失败");
|
|
|
+ PtlAgreementUndwrtRules ruleEntity = JSONObject.parseObject(JSONObject.toJSONString(ruleResult.getData()), PtlAgreementUndwrtRules.class);
|
|
|
+ if (ruleEntity == null) {
|
|
|
+ log.info("承保规则不存在, coverRuleId={}, 订单号={}, 跳过承保规则校验", coverRuleId, orderNo);
|
|
|
+ continue;
|
|
|
}
|
|
|
- } else {
|
|
|
- // 无parentId → 使用当前规则
|
|
|
- ruleIds.add(coverRuleId);
|
|
|
- }
|
|
|
|
|
|
- // 收集所有规则的属性关联(按规则分组)
|
|
|
- List<List<PtlAgreementUndwrtRulesAttrLink>> ruleGroups = new ArrayList<>();
|
|
|
- for (String ruleId : ruleIds) {
|
|
|
- httpResult = orgClient.getRuleInfo(ruleId);
|
|
|
- AssertionUtils.isFail(httpResult.getCode() == 500, "承保规则详情查找失败");
|
|
|
- List<PtlAgreementUndwrtRulesAttrLink> ruleAttrLinks = JSONArray.parseArray(JSONObject.toJSONString(httpResult.getData()), PtlAgreementUndwrtRulesAttrLink.class);
|
|
|
- if (ruleAttrLinks != null && !ruleAttrLinks.isEmpty()) {
|
|
|
- ruleGroups.add(ruleAttrLinks);
|
|
|
+ List<String> ruleIds = new ArrayList<>();
|
|
|
+ if (ruleEntity.getParentId() != null && !ruleEntity.getParentId().isEmpty()) {
|
|
|
+ // 有parentId → 根据parentId查询所有子规则(多条)
|
|
|
+ HttpResult childRulesResult = orgClient.rulesListByParentId(ruleEntity.getParentId());
|
|
|
+ AssertionUtils.isFail(childRulesResult.getCode() == 500, "子规则查找失败");
|
|
|
+ List<PtlAgreementUndwrtRules> childRules = JSONArray.parseArray(JSONObject.toJSONString(childRulesResult.getData()), PtlAgreementUndwrtRules.class);
|
|
|
+ if (childRules != null) {
|
|
|
+ ruleIds.addAll(childRules.stream().map(PtlAgreementUndwrtRules::getId).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 无parentId → 使用当前规则
|
|
|
+ ruleIds.add(coverRuleId);
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- StringBuilder logs = new StringBuilder();
|
|
|
+ // 收集所有规则的属性关联(按规则分组)
|
|
|
+ List<List<PtlAgreementUndwrtRulesAttrLink>> ruleGroups = new ArrayList<>();
|
|
|
+ for (String ruleId : ruleIds) {
|
|
|
+ httpResult = orgClient.getRuleInfo(ruleId);
|
|
|
+ AssertionUtils.isFail(httpResult.getCode() == 500, "承保规则详情查找失败");
|
|
|
+ List<PtlAgreementUndwrtRulesAttrLink> ruleAttrLinks = JSONArray.parseArray(JSONObject.toJSONString(httpResult.getData()), PtlAgreementUndwrtRulesAttrLink.class);
|
|
|
+ if (ruleAttrLinks != null && !ruleAttrLinks.isEmpty()) {
|
|
|
+ ruleGroups.add(ruleAttrLinks);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- //先进行承保规则判断
|
|
|
- verificationRules(ruleGroups,logs, insOrdersOther, insOrdersCarInfo, insOrdersRisks,
|
|
|
- insOrdersCarUserInfos, kindList, insOrdersCosts, insOrdersAccidentalDriving, insOrders);
|
|
|
+ StringBuilder logs = new StringBuilder();
|
|
|
+
|
|
|
+ //先进行承保规则判断
|
|
|
+ verificationRules(ruleGroups,logs, insOrdersOther, insOrdersCarInfo, insOrdersRisks,
|
|
|
+ insOrdersCarUserInfos, kindList, insOrdersCosts, insOrdersAccidentalDriving, insOrders);
|
|
|
+ } catch (FeignException e) {
|
|
|
+ log.error("承保规则校验调用远程服务[jzg-organization]异常, url={}, status={}, body={}",
|
|
|
+ e.request() != null ? e.request().url() : "unknown",
|
|
|
+ e.status(),
|
|
|
+ e.contentUTF8(),
|
|
|
+ e);
|
|
|
+ throw new SystemException("承保规则校验服务暂时不可用,请稍后重试");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|