Procházet zdrojové kódy

fix 方案管理 限制驾意险只可存在一个默认或强制

liub před 1 týdnem
rodič
revize
e532f0ef0a

+ 19 - 0
commons/src/main/java/com/jzg/commons/entity/scheme/vo/PtlSchemeSaveVo.java

@@ -262,6 +262,11 @@ public class PtlSchemeSaveVo {
         List<PtlSchemeInsurance> ptlSchemeInsuranceList = new ArrayList<>();
         for (Scheme scheme : schemeList) {
             scheme.schemeInsuranceList.forEach(schemeInsurance -> {
+                if (Objects.isNull(schemeInsurance.getOptionId()) || schemeInsurance.getOptionId().isEmpty()) {
+                    String insuranceName = Objects.isNull(schemeInsurance.getKindName()) || schemeInsurance.getKindName().isEmpty()
+                            ? schemeInsurance.getInsuranceId() : schemeInsurance.getKindName();
+                    throw new ValidateException("方案[" + scheme.getSchemeName() + "]中险种[" + insuranceName + "]未选择保额");
+                }
                 schemeInsurance.getOptionId().forEach(optionId ->{
                     PtlSchemeInsurance ptlSchemeInsurance = new PtlSchemeInsurance();
                     if(Objects.isNull(scheme.getId()) || scheme.getId().isEmpty()) {
@@ -281,6 +286,20 @@ public class PtlSchemeSaveVo {
     public List<PtlSchemeInsuranceDrivingIntention> getPtlSchemeInsuranceDrivingIntentionList(){
         List<PtlSchemeInsuranceDrivingIntention> ptlSchemeInsuranceDrivingIntentionList = new ArrayList<>();
         for (Scheme scheme : schemeList) {
+            // 校验同一方案内驾意险的选中类型:默认选中(1)/强制选中(2)只能出现一种且各最多一条(可选=3)
+            long defaultSelectedCount = scheme.getDrivingList().stream()
+                    .filter(drivingIntention -> "1".equals(drivingIntention.getSelectedStatus())).count();
+            long forceSelectedCount = scheme.getDrivingList().stream()
+                    .filter(drivingIntention -> "2".equals(drivingIntention.getSelectedStatus())).count();
+            if (defaultSelectedCount > 1) {
+                throw new ValidateException("方案[" + scheme.getSchemeName() + "]中默认选中的驾意险只能有一条");
+            }
+            if (forceSelectedCount > 1) {
+                throw new ValidateException("方案[" + scheme.getSchemeName() + "]中强制选中的驾意险只能有一条");
+            }
+            if (defaultSelectedCount > 0 && forceSelectedCount > 0) {
+                throw new ValidateException("方案[" + scheme.getSchemeName() + "]中默认选中与强制选中的驾意险不能同时存在");
+            }
             scheme.getDrivingList().forEach(drivingIntention -> {
                 PtlSchemeInsuranceDrivingIntention ptlSchemeInsuranceDrivingIntention = new PtlSchemeInsuranceDrivingIntention();
                 ptlSchemeInsuranceDrivingIntention.setId(IdGenerate.nextId());