Browse Source

假设条件逻辑修改

wucl 7 months ago
parent
commit
2104b40be2

+ 11 - 0
biz-base/src/main/java/com/dayou/controller/CertificateFixedAssetsController.java

@@ -30,4 +30,15 @@ public class CertificateFixedAssetsController {
         List<CertificateFixedAssets> list = certificateFixedAssetsService.getByBusinessIdAndTargetId(businessId,targetId);
         return Result.build(list);
     }
+
+    /**
+     * 删除不动产权证
+     * @param id
+     * @return
+     */
+    @DeleteMapping("/{id}")
+    public Result<Boolean> delete(@PathVariable("id") Long id){
+        boolean b = certificateFixedAssetsService.removeById(id);
+        return Result.build(b);
+    }
 }

+ 10 - 0
biz-base/src/main/java/com/dayou/controller/CertificateHouseOwnController.java

@@ -32,4 +32,14 @@ public class CertificateHouseOwnController {
         List<CertificateHouseOwn> list = certificateHouseOwnService.getByBusinessIdAndTargetId(businessId,targetId);
         return Result.build(list);
     }
+    /**
+     * 删除房屋所有权证
+     * @param id
+     * @return
+     */
+    @DeleteMapping("/{id}")
+    public Result<Boolean> delete(@PathVariable("id") Long id){
+        boolean b = certificateHouseOwnService.removeById(id);
+        return Result.build(b);
+    }
 }

+ 10 - 0
biz-base/src/main/java/com/dayou/controller/CertificateLandUseController.java

@@ -32,4 +32,14 @@ public class CertificateLandUseController {
         List<CertificateLandUse> list = certificateLandUseService.getByBusinessIdAndTargetId(businessId,targetId);
         return Result.build(list);
     }
+    /**
+     * 删除国土证
+     * @param id
+     * @return
+     */
+    @DeleteMapping("/{id}")
+    public Result<Boolean> delete(@PathVariable("id") Long id){
+        boolean b = certificateLandUseService.removeById(id);
+        return Result.build(b);
+    }
 }

+ 18 - 7
biz-base/src/test/java/com/dayou/ConditionDocumentTest.java

@@ -6,7 +6,9 @@ import com.dayou.constants.HouseGuarantyParagraphTemp;
 import com.dayou.doc.house.ConditionDO;
 import com.dayou.doc.house.ConsignorLetterDO;
 import com.dayou.dto.HouseGuarantyTableDTO;
+import com.dayou.entity.CertificateLandUse;
 import com.dayou.entity.HouseGuarantyTarget;
+import com.dayou.service.CertificateLandUseService;
 import com.dayou.service.HouseGuarantyTargetService;
 import com.dayou.service.TmplHouseParagraphService;
 import com.dayou.utils.AsposeWordUtil;
@@ -21,10 +23,12 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
-import static com.dayou.constants.HouseGuarantyDoc.IMMOVABLE;
+import static com.dayou.constants.HouseGuarantyDoc.NO;
 import static com.dayou.constants.HouseGuarantyDoc.YES;
 import static com.dayou.constants.HouseGuarantyParagraphTemp.*;
 
@@ -67,17 +71,24 @@ public class ConditionDocumentTest {
     @Autowired
     private HouseGuarantyTargetService houseGuarantyTargetService;
 
+    @Autowired
+    private CertificateLandUseService certificateLandUseService;
+
     /**
      * 一般假设测试类
      */
     @Test
     public void testYBJS() {
-        List<HouseGuarantyTarget> targets = houseGuarantyTargetService.list(new LambdaQueryWrapper<HouseGuarantyTarget>().eq(HouseGuarantyTarget::getDocId, 15));
-        String ybjsResult = tmplHouseParagraphService.findYBJSResult(targets, YES, YES);
-        //String wdsxjsResult = tmplHouseParagraphService.findWDSXJSResult(targets, IMMOVABLE, "233");
-//        String bxyzjsResult = tmplHouseParagraphService.findBXYZJSResult(targets, IMMOVABLE, "2024年2月23日");
-//        String yjbujsResult = tmplHouseParagraphService.findYJBUJSResult(targets, IMMOVABLE, "收益法");
-        System.out.println(ybjsResult);
+        String cers [] = {"《不动产权证书》","《房屋所有权利证书》","《国有土地证书》"};
+        List<String> cersList = Arrays.asList(cers);
+        List<HouseGuarantyTarget> targets = houseGuarantyTargetService.list(new LambdaQueryWrapper<HouseGuarantyTarget>().eq(HouseGuarantyTarget::getDocId, 42));
+        //String ybjsResult = tmplHouseParagraphService.findYBJSResult(targets, NO, cersList);
+        //List<CertificateLandUse> landCerts = certificateLandUseService.list(new LambdaQueryWrapper<CertificateLandUse>().eq(CertificateLandUse::getBusinessId, 42));
+
+        //String wdsxjsResult = tmplHouseParagraphService.findWDSXJSResult(targets, landCerts);
+       //String bxyzjsResult = tmplHouseParagraphService.findBXYZJSResult(targets, cersList, "2024年2月23日");
+        String yjbujsResult = tmplHouseParagraphService.findYJBUJSResult(targets, cersList, NO,"收益法");
+        System.out.println(yjbujsResult);
 
     }
 }

+ 13 - 1
common/src/main/java/com/dayou/constants/HouseGuarantyDoc.java

@@ -73,7 +73,19 @@ public class HouseGuarantyDoc {
     /**
      * 《不动产权证书》
      */
-    public static final String IMMOVABLE = "《不动产权证书》";
+    public static final String IMMOVABLE_CER = "《不动产权证书》";
+
+    /**
+     * 《房屋所有权证》
+     */
+    public static final String HOUSE_OWN_CER = "《房屋所有权证》";
+
+
+    /**
+     * 《国有土地使用证》
+     */
+    public static final String LAND_USE_CER = "《国有土地使用证》";
+
 
 
 }

+ 29 - 0
common/src/main/java/com/dayou/utils/AddressUtil.java

@@ -1,7 +1,9 @@
 package com.dayou.utils;
 
+import cn.hutool.core.util.StrUtil;
 import com.dayou.dto.Address;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -24,6 +26,9 @@ public class AddressUtil {
     private static final Pattern FLOOR_PATTERN = Pattern.compile("(?<floor>-?\\d+层|-?\\d+楼)");
     private static final Pattern ROOM_PATTERN = Pattern.compile("(?<room>\\d+室\\d+号|\\d+室|\\d+号)");
 
+    private static final List<String> BIG_CHENGDU  = Arrays.asList("锦江区","武侯区","青羊区","郫都区","金牛区","高新区","温江区","成华区","新都区"
+        ,"龙泉驿区","青白江区","双流区","都江堰市","崇州市","邛崃市","简阳市","彭州市","郫县","金堂县","大邑县","浦江县"
+        ,"新津县","成都天府新区直管区","成都高新技术产业开发区","成都经济技术开发区");
     /**
      *
      * @param address 地址字符串
@@ -105,4 +110,28 @@ public class AddressUtil {
             x.setRoom("");
         });
     }
+
+    /**
+     * 判断是否属于大成都范围
+     * @param address
+     * @return
+     */
+    public static Boolean isInBigChengdu(String address){
+        Address addr = parseAddress(address);
+        if (addr!=null){
+            String city = addr.getCity();
+            if (StrUtil.isNotBlank(city) && city.contains("成都")){
+                return true;
+            }
+            String district = addr.getDistrict();
+
+            for (String str : BIG_CHENGDU){
+                if (StrUtil.isNotBlank(district) && (str.contains(district) || district.contains(str))){
+                    return true;
+                }
+            }
+        }
+        return false;
+
+    }
 }

+ 127 - 99
common/src/main/java/com/dayou/utils/HouseDocumentUtil.java

@@ -5,10 +5,12 @@ import cn.hutool.json.*;
 import com.alibaba.fastjson2.JSON;
 import com.dayou.dto.Address;
 import com.dayou.dto.HouseGuarantyTargetDTO;
+import com.dayou.entity.CertificateLandUse;
 import com.dayou.entity.HouseGuarantyTarget;
 import com.dayou.entity.TmplHouseParagraph;
 import com.dayou.enums.HouseTargetTableColumn;
 import com.dayou.exception.ErrorCode;
+import org.apache.commons.math3.analysis.function.Add;
 
 import java.lang.reflect.Field;
 import java.math.BigDecimal;
@@ -473,14 +475,14 @@ public class HouseDocumentUtil {
 
     /**
      * 一般假设、格式化“是否核对权属原件”
-     * @param hasImmovable 是否有不动产权利证
+     * @param certificates 权属证书类型
      * @param tmplHouseParagraph 段落模版
      * @return
      */
-    public static String getCheckOriginCertificate(String isCheckOriginCertificate,String hasImmovable, TmplHouseParagraph tmplHouseParagraph){
+    public static String getCheckOriginCertificate(String isCheckOriginCertificate,List<String> certificates, TmplHouseParagraph tmplHouseParagraph){
         if (checkBoolean(isCheckOriginCertificate)){
             String paragraph = tmplHouseParagraph.getParagraph();
-            return paragraph.replace("{immovable}",hasImmovable);
+            return paragraph.replace("{certificates}",CollectionUtil.formatDotAndRemoveMiddle(certificates));
         }
         return null;
     }
@@ -503,7 +505,7 @@ public class HouseDocumentUtil {
                 if (tIds.size() == targets.size()){
                     return paragraph.replace("{tIds}", "");
                 }else {
-                    String tIdStr = CollectionUtil.formatSplitAndRemoveMiddle(tIds);
+                    String tIdStr = CollectionUtil.formatDotAndRemoveMiddle(tIds);
                     return paragraph.replace("{tIds}", tIdStr);
                 }
             }
@@ -537,7 +539,7 @@ public class HouseDocumentUtil {
      * 未定事项假设、格式化“建成年代”
      * @return
      */
-    public static String buildingYear(List<HouseGuarantyTarget> targets,String hasImmovable,TmplHouseParagraph tmplHouseParagraph){
+    public static String buildingYear(List<HouseGuarantyTarget> targets,TmplHouseParagraph tmplHouseParagraph){
         String paragraph = tmplHouseParagraph.getParagraph();
         String result = null;
         if (CollectionUtil.isNotEmpty(targets)){
@@ -547,7 +549,6 @@ public class HouseDocumentUtil {
                 List<String> buildingYears = collect.stream().map(HouseGuarantyTarget::getBuildingYear).collect(Collectors.toList());
                 result = paragraph.replace("{tIds}", CollectionUtil.formatDotAndRemoveMiddle(tIds))
                         .replace("{years}", CollectionUtil.formatDotAndRemoveMiddle(buildingYears));
-                result = result.replace("{immovable}",hasImmovable);
 
             }
         }
@@ -562,23 +563,22 @@ public class HouseDocumentUtil {
     public static String isUseDiff(List<HouseGuarantyTarget> targets,TmplHouseParagraph tmplHouseParagraph) {
         StringBuilder result = new StringBuilder();
         if (CollectionUtil.isNotEmpty(targets)){
-            List<HouseGuarantyTarget> collect = targets.stream().filter(x -> StrUtil.isNotBlank(x.getLandUseTo())).collect(Collectors.toList());
-            if (CollectionUtil.isNotEmpty(collect)){
-                for (HouseGuarantyTarget target : collect) {
+                for (HouseGuarantyTarget target : targets) {
                     List<HouseGuarantyTargetDTO> targetDTOS = JSON.parseArray(target.getBaseInfo(), HouseGuarantyTargetDTO.class);
-                    Set<String> houseUseTo = targetDTOS.stream().map(HouseGuarantyTargetDTO::getUseTo).collect(Collectors.toSet());
-                    if (!houseUseTo.contains(target.getLandUseTo())){
-                        result.append(tmplHouseParagraph.getParagraph())
-                                .append("估价对象").append(target.getTId())
-                                .append("所在宗地《国有土地使用证》记载土地用途为")
-                                .append(target.getLandUseTo()).append(",估价对象")
-                                .append(target.getTId()).append("《房屋所有权证》记载规划用途为")
-                                .append(CollectionUtil.formatDotAndRemoveMiddle(houseUseTo))
-                                .append(",本次估价以估价对象合法保持房屋实际用途继续使用为假设前提。\n");
+                    for (HouseGuarantyTargetDTO targetDTO : targetDTOS) {
+                        if (!targetDTO.getLandType().contains(targetDTO.getUseTo())){
+                            result.append(tmplHouseParagraph.getParagraph())
+                                    .append("估价对象").append(targetDTO.getId()).append("序号").append(targetDTO.getNo())
+                                    .append("所在宗地《国有土地使用证》记载土地用途为")
+                                    .append(targetDTO.getLandType()).append(",估价对象")
+                                    .append(targetDTO.getId()).append("序号").append(targetDTO.getNo()).append("《房屋所有权证》记载规划用途为")
+                                    .append(targetDTO.getUseTo())
+                                    .append(",本次估价以估价对象合法保持房屋实际用途继续使用为假设前提。\n");
+                        }
                     }
+
                 }
                 result.append("\n");
-            }
         }
         return result.toString();
     }
@@ -588,18 +588,17 @@ public class HouseDocumentUtil {
      * @param targets
      * @return
      */
-    public static String isProvideLandBigCertificate(List<HouseGuarantyTarget> targets,TmplHouseParagraph tmplHouseParagraph) {
+    public static String isProvideLandBigCertificate(List<HouseGuarantyTarget> targets,TmplHouseParagraph tmplHouseParagraph, CertificateLandUse certificateLandUse) {
         StringBuilder result = new StringBuilder();
         String paragraph = tmplHouseParagraph.getParagraph();
         if (CollectionUtil.isNotEmpty(targets)){
             List<HouseGuarantyTarget> collect = targets.stream().filter(x -> StrUtil.isNotBlank(x.getLandCertificateType())
                     && x.getLandCertificateType().equals("大证")&& !x.getIsCostingShareMethod()).collect(Collectors.toList());
-            if (CollectionUtil.isNotEmpty(collect)){
+            if (CollectionUtil.isNotEmpty(collect) && certificateLandUse!=null){
                 for (HouseGuarantyTarget target : collect) {
                     String tId = target.getTId();
                     String landUseTo = target.getLandUseTo();
-                    String landExpireDate = target.getLandExpireDate();
-                    String content = paragraph.replace("{tId}", tId).replace("{landUseTo}", landUseTo).replace("{landExpireDate}", landExpireDate);
+                    String content = paragraph.replace("{tId}", tId).replace("{landUseTo}", certificateLandUse.getUseType()).replace("{landExpireDate}", certificateLandUse.getExpireDate());
                     result.append(content).append("\n");
                 }
             }
@@ -613,19 +612,21 @@ public class HouseDocumentUtil {
      * @param tmplHouseParagraph
      * @return
      */
-    public static String isProvideLandBigCertificateShare(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplHouseParagraph) {
+    public static String isProvideLandBigCertificateShare(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplHouseParagraph, List<CertificateLandUse> landCerts) {
         StringBuilder result = new StringBuilder();
         String paragraph = tmplHouseParagraph.getParagraph();
         if (CollectionUtil.isNotEmpty(targets)){
             List<HouseGuarantyTarget> collect = targets.stream().filter(x -> (StrUtil.isNotBlank(x.getLandCertificateType()) &&
-                    x.getLandCertificateType().equals("大证") && x.getIsCostingShareMethod())).collect(Collectors.toList());
-            if (CollectionUtil.isNotEmpty(collect)){
+                    x.getLandCertificateType().equals("大证") )).collect(Collectors.toList());
+            if (CollectionUtil.isNotEmpty(collect) && CollectionUtil.isNotEmpty(landCerts)){
                 for (HouseGuarantyTarget target : collect) {
-                    String tId = target.getTId();
-                    String landExpireDate = target.getLandExpireDate();
-                    String shareAcreage1 = target.getShareAcreage1();
-                    String content = paragraph.replace("{tId}", tId).replace("{landExpireDate}", landExpireDate).replace("{shareAcreage1}", shareAcreage1);
-                    result.append(content).append("\n");
+                    List<CertificateLandUse> certs = landCerts.stream().filter(x -> x.getTid().equals(target.getTId())).collect(Collectors.toList());
+                    if (CollectionUtil.isNotEmpty(certs)){
+                        String tId = target.getTId();
+                        String content = paragraph.replace("{tId}", tId).replace("{landExpireDate}",certs.get(0).getExpireDate()).replace("{shareAcreage1}", certs.get(0).getOutterAcreage());
+                        result.append(content).append("\n");
+                    }
+
                 }
             }
         }
@@ -637,10 +638,9 @@ public class HouseDocumentUtil {
      * 未定事项假设 房屋分层面积处理方式1 有图
      * @param targets
      * @param tmplHouseParagraph
-     * @param hasImmovableCertificate
      * @return
      */
-    public static String isDivideMethod1(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplHouseParagraph, String hasImmovableCertificate) {
+    public static String isDivideMethod1(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplHouseParagraph) {
         StringBuilder result = new StringBuilder();
         String paragraph = tmplHouseParagraph.getParagraph();
         if (CollectionUtil.isNotEmpty(targets)){
@@ -674,7 +674,7 @@ public class HouseDocumentUtil {
                     }else {
                         floorAcreageDesc.append(";");
                     }
-                    paragraph = paragraph.replace("{immovable}", hasImmovableCertificate).replace("{tId}", tId).replace("{acreage}", acreage.toPlainString());
+                    paragraph = paragraph.replace("{tId}", tId).replace("{acreage}", acreage.toPlainString());
                     paragraph = paragraph.replace("{floorAcreageDesc}", floorAcreageDesc.toString());
                     result.append(paragraph).append("\n");
                 }
@@ -687,10 +687,9 @@ public class HouseDocumentUtil {
      * 未定事项假设 房屋分层面积处理方式2 无图
      * @param targets
      * @param tmplHouseParagraph
-     * @param hasImmovableCertificate
      * @return
      */
-    public static String isDivideMethod2(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplHouseParagraph, String hasImmovableCertificate) {
+    public static String isDivideMethod2(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplHouseParagraph) {
         StringBuilder result = new StringBuilder();
         String paragraph = tmplHouseParagraph.getParagraph();
         if (CollectionUtil.isNotEmpty(targets)){
@@ -724,7 +723,7 @@ public class HouseDocumentUtil {
                     }else {
                         floorAcreageDesc.append(";");
                     }
-                    paragraph = paragraph.replace("{immovable}", hasImmovableCertificate).replace("{tId}", tId).replace("{acreage}", acreage.toPlainString());
+                    paragraph = paragraph.replace("{tId}", tId).replace("{acreage}", acreage.toPlainString());
                     paragraph = paragraph.replace("{floorAcreageDesc}", floorAcreageDesc.toString());
                     result.append(paragraph).append("\n");
                 }
@@ -736,11 +735,11 @@ public class HouseDocumentUtil {
     /**
      * 不相一致假设 登记地址与实勘地址不一致 有证明
      * @param targets
-     * @param hasImmovableCertificate
+     * @param certificates
      * @param tmplHouseParagraph
      * @return
      */
-    public static String isAddressDiffCertificate(List<HouseGuarantyTarget> targets, String hasImmovableCertificate, TmplHouseParagraph tmplHouseParagraph) {
+    public static String isAddressDiffCertificate(List<HouseGuarantyTarget> targets, List<String> certificates, TmplHouseParagraph tmplHouseParagraph) {
         StringBuilder result = new StringBuilder();
         String paragraph = tmplHouseParagraph.getParagraph();
         if (CollectionUtil.isNotEmpty(targets)){
@@ -752,7 +751,7 @@ public class HouseDocumentUtil {
                     List<HouseGuarantyTargetDTO> targetDTOS = JSON.parseArray(target.getBaseInfo(), HouseGuarantyTargetDTO.class);
                     String location = targetDTOS.get(0).getLocation();
                     String actAddress = targetDTOS.get(0).getActAddress();
-                    String replace = paragraph.replace("{tId}", tId).replace("{location}", location).replace("{actAddress}", actAddress).replace("{immovable}", hasImmovableCertificate);
+                    String replace = paragraph.replace("{tId}", tId).replace("{address}", location).replace("{actAddress}", actAddress).replace("{certificates}", CollectionUtil.formatDotAndRemoveMiddle(certificates));
                     result.append(replace).append("\n");
                 }
             }
@@ -763,11 +762,11 @@ public class HouseDocumentUtil {
     /**
      * 不相一致假设 登记地址与实勘地址不一致 无证明
      * @param targets
-     * @param hasImmovableCertificate
+     * @param certificates
      * @param tmplHouseParagraph
      * @return
      */
-    public static String isAddressDiffNoCertificate(List<HouseGuarantyTarget> targets, String hasImmovableCertificate, TmplHouseParagraph tmplHouseParagraph) {
+    public static String isAddressDiffNoCertificate(List<HouseGuarantyTarget> targets, List<String> certificates, TmplHouseParagraph tmplHouseParagraph) {
         StringBuilder result = new StringBuilder();
         String paragraph = tmplHouseParagraph.getParagraph();
         if (CollectionUtil.isNotEmpty(targets)){
@@ -776,16 +775,10 @@ public class HouseDocumentUtil {
             if (CollectionUtil.isNotEmpty(collect)){
                 for (HouseGuarantyTarget target : collect) {
                     String tId = target.getTId();
-                    Boolean noBuildingHouseNos = target.getNoBuildingHouseNos();
-                    String noBuildingHouseNosStr="";
-                    if (noBuildingHouseNos){
-                        noBuildingHouseNosStr = ",未见估价对象栋号,房号。";
-                    }
                     List<HouseGuarantyTargetDTO> targetDTOS = JSON.parseArray(target.getBaseInfo(), HouseGuarantyTargetDTO.class);
-                    String location = targetDTOS.get(0).getLocation();
                     String actAddress = targetDTOS.get(0).getActAddress();
-                    String replace = paragraph.replace("{tId}", tId).replace("{location}", location)
-                            .replace("{actAddress}", actAddress).replace("{noBuildingHouseNos}",noBuildingHouseNosStr).replace("{immovable}", hasImmovableCertificate);
+                    String replace = paragraph.replace("{tId}", tId)
+                            .replace("{actAddress}", actAddress).replace("{certificates}", CollectionUtil.formatDotAndRemoveMiddle(certificates));
                     result.append(replace).append("\n");
                 }
             }
@@ -799,7 +792,7 @@ public class HouseDocumentUtil {
      * @param tmplHouseParagraph
      * @return
      */
-    public static String isDateDiff(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplHouseParagraph,String docDate) {
+    public static String isDateDiff(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplHouseParagraph,String valueTiming) {
         StringBuilder result = new StringBuilder();
         String paragraph = tmplHouseParagraph.getParagraph();
         if (CollectionUtil.isNotEmpty(targets)){
@@ -808,7 +801,7 @@ public class HouseDocumentUtil {
                 for (HouseGuarantyTarget target : collect) {
                     String tId = target.getTId();
                     String exploreDate = target.getExploreDate();
-                    String replace = paragraph.replace("{tId}", tId).replace("{exploreDate}", exploreDate).replace("{docDate}", docDate);
+                    String replace = paragraph.replace("{tId}", tId).replace("{exploreDate}", exploreDate==null?"<缺失实勘日期>":exploreDate).replace("{valueTiming}", valueTiming);
                     result.append(replace).append("\n");
                 }
             }
@@ -822,24 +815,13 @@ public class HouseDocumentUtil {
      * @param tmplParagraph
      * @return
      */
-    public static String isBigCertificateOnlyHouse(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplParagraph) {
-        if (CollectionUtil.isNotEmpty(targets)){
+    public static String isBigCertificateOnlyHouse(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplParagraph,String isCheckOriginCertificate) {
+        if (CollectionUtil.isNotEmpty(targets) && !checkBoolean(isCheckOriginCertificate)){
             List<HouseGuarantyTarget> collect = targets.stream().filter(x -> StrUtil.isNotBlank(x.getLandCertificateType()) &&
-                    x.getLandCertificateType().equals("大证")).collect(Collectors.toList());
-            List<String> tIds = new ArrayList<>();
+                    x.getLandCertificateType().equals("大证") && !x.getHouseGetLandInfo()).collect(Collectors.toList());
             if (CollectionUtil.isNotEmpty(collect)){
-                for (HouseGuarantyTarget target : collect) {
-                    List<HouseGuarantyTargetDTO> targetDTOS = JSON.parseArray(target.getBaseInfo(), HouseGuarantyTargetDTO.class);
-                    List<String> userTos = targetDTOS.stream().map(HouseGuarantyTargetDTO::getUseTo).collect(Collectors.toList());
-                    for (String userTo : userTos){
-                        if (userTo.contains("住宅")){
-                            tIds.add(target.getTId());
-                        }
-                    }
-                }
-            }
-            if (CollectionUtil.isNotEmpty(tIds)){
                 String paragraph = tmplParagraph.getParagraph();
+                List<String> tIds = collect.stream().map(HouseGuarantyTarget::getTId).collect(Collectors.toList());
                 return paragraph.replace("{tIds}",CollectionUtil.formatDotAndRemoveMiddle(tIds));
             }
         }
@@ -852,14 +834,12 @@ public class HouseDocumentUtil {
      * @param tmplParagraph
      * @return
      */
-    public static String isNotOriginCertificateOnlyHouse(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplParagraph,String hasImmovable) {
+    public static String isNotOriginCertificateOnlyHouse(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplParagraph,String isCheckOriginCertificate,List<String> certificates) {
         if (CollectionUtil.isNotEmpty(targets)){
-            List<HouseGuarantyTarget> collect = targets.stream().filter(x -> x.getHasOriginCertificate()!=null && !x.getHasOriginCertificate()
-                    &&x.getIsPromise()!=null &&  x.getIsPromise() && x.getIsPromiseFile()!=null && !x.getIsPromiseFile()).collect(Collectors.toList());
-            if (CollectionUtil.isNotEmpty(collect)){
-                List<String> tIds = collect.stream().map(HouseGuarantyTarget::getTId).collect(Collectors.toList());
+            if (!checkBoolean(isCheckOriginCertificate)){
+                List<String> tIds = targets.stream().map(HouseGuarantyTarget::getTId).collect(Collectors.toList());
                 String paragraph = tmplParagraph.getParagraph();
-                return paragraph.replace("{tIds}", CollectionUtil.formatDotAndRemoveMiddle(tIds)).replace("{hasImmovable}", hasImmovable);
+                return paragraph.replace("{tIds}", CollectionUtil.formatDotAndRemoveMiddle(tIds)).replace("{certificates}", CollectionUtil.formatDotAndRemoveMiddle(certificates));
             }
         }
         return null;
@@ -871,17 +851,23 @@ public class HouseDocumentUtil {
      * @param tmplParagraph
      * @return
      */
-    public static String isNotOriginFileInChengDu(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplParagraph) {
-        if (CollectionUtil.isNotEmpty(targets)){
-            List<HouseGuarantyTarget> collect = targets.stream().filter(x ->
-                    x.getHasOriginCertificate()!=null &&!x.getHasOriginCertificate()
-                    && x.getIsPromise()!=null && x.getIsPromise()
-                            && x.getIsPromiseFile()!=null && x.getIsPromiseFile()
-                            && x.getIsInChengDu()!=null && x.getIsInChengDu()).collect(Collectors.toList());
-            if (CollectionUtil.isNotEmpty(collect)){
-                List<String> tIds = collect.stream().map(HouseGuarantyTarget::getTId).collect(Collectors.toList());
+    public static String isNotOriginFileInChengDu(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplParagraph ,String isCheckOriginCertificate,List<String> certificates) {
+        if (CollectionUtil.isNotEmpty(targets) && !checkBoolean(isCheckOriginCertificate)){
+            List<String> tIds = new ArrayList<>();
+            for (HouseGuarantyTarget target : targets) {
+                List<HouseGuarantyTargetDTO> targetDTOS = JSON.parseArray(target.getBaseInfo(), HouseGuarantyTargetDTO.class);
+                List<String> addresses = targetDTOS.stream().map(HouseGuarantyTargetDTO::getLocation).collect(Collectors.toList());
+                for (String address : addresses) {
+                    Boolean inBigChengdu = AddressUtil.isInBigChengdu(address);
+                    if (inBigChengdu){
+                        tIds.add(target.getTId());
+                    }
+                }
+
+            }
+            if (CollectionUtil.isNotEmpty(tIds) ){
                 String paragraph = tmplParagraph.getParagraph();
-                return paragraph.replace("{tIds}", CollectionUtil.formatDotAndRemoveMiddle(tIds));
+                return paragraph.replace("{tIds}", CollectionUtil.formatDotAndRemoveMiddle(tIds)).replace("{certificates}",CollectionUtil.formatDotAndRemoveMiddle(certificates));
             }
         }
         return null;
@@ -893,15 +879,23 @@ public class HouseDocumentUtil {
      * @param tmplParagraph
      * @return
      */
-    public static String isNotOriginFileOutChengDu(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplParagraph) {
-        if (CollectionUtil.isNotEmpty(targets)){
-            List<HouseGuarantyTarget> collect = targets.stream().filter(x -> x.getHasOriginCertificate()!=null && !x.getHasOriginCertificate()
-                    && x.getIsPromise()!=null&& x.getIsPromise() && x.getIsPromiseFile() !=null && x.getIsPromiseFile()
-                    && x.getIsInChengDu()!=null && !x.getIsInChengDu()).collect(Collectors.toList());
-            if (CollectionUtil.isNotEmpty(collect)){
-                List<String> tIds = collect.stream().map(HouseGuarantyTarget::getTId).collect(Collectors.toList());
+    public static String isNotOriginFileOutChengDu(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplParagraph,String isCheckOriginCertificate,List<String> certificates) {
+        if (CollectionUtil.isNotEmpty(targets) && !checkBoolean(isCheckOriginCertificate)){
+            List<String> tIds = new ArrayList<>();
+            for (HouseGuarantyTarget target : targets) {
+                List<HouseGuarantyTargetDTO> targetDTOS = JSON.parseArray(target.getBaseInfo(), HouseGuarantyTargetDTO.class);
+                List<String> addresses = targetDTOS.stream().map(HouseGuarantyTargetDTO::getLocation).collect(Collectors.toList());
+                for (String address : addresses) {
+                    Boolean inBigChengdu = AddressUtil.isInBigChengdu(address);
+                    if (!inBigChengdu){
+                        tIds.add(target.getTId());
+                    }
+                }
+
+            }
+            if (CollectionUtil.isNotEmpty(tIds) ){
                 String paragraph = tmplParagraph.getParagraph();
-                return paragraph.replace("{tIds}", CollectionUtil.formatDotAndRemoveMiddle(tIds));
+                return paragraph.replace("{tIds}", CollectionUtil.formatDotAndRemoveMiddle(tIds)).replace("{certificates}",CollectionUtil.formatDotAndRemoveMiddle(certificates));
             }
         }
         return null;
@@ -935,8 +929,7 @@ public class HouseDocumentUtil {
     public static String isNotContractLandLowerHouseSY(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplParagraph,String methods) {
         if (methods.contains("收益法")){
             if (CollectionUtil.isNotEmpty(targets)){
-                List<HouseGuarantyTarget> collect = targets.stream().filter(x ->  x.getHasLandUseRightContract()!=null &&!x.getHasLandUseRightContract()
-                        && x.getLandYearLowerHouseYear()!=null && x.getLandYearLowerHouseYear()).collect(Collectors.toList());
+                List<HouseGuarantyTarget> collect = targets.stream().filter(x ->   x.getIsBuildingReduceValue()!=null && x.getIsBuildingReduceValue()).collect(Collectors.toList());
                 if (CollectionUtil.isNotEmpty(collect)){
                     List<String> tIds = collect.stream().map(HouseGuarantyTarget::getTId).collect(Collectors.toList());
                     String paragraph = tmplParagraph.getParagraph();
@@ -956,8 +949,7 @@ public class HouseDocumentUtil {
     public static String isNotContractLandLowerHouseCB(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplParagraph,String methods) {
         if (methods.contains("成本法")){
             if (CollectionUtil.isNotEmpty(targets)){
-                List<HouseGuarantyTarget> collect = targets.stream().filter(x -> x.getHasLandUseRightContract()!=null && !x.getHasLandUseRightContract()
-                        && x.getLandYearLowerHouseYear()!=null && x.getLandYearLowerHouseYear()).collect(Collectors.toList());
+                List<HouseGuarantyTarget> collect = targets.stream().filter(x ->  x.getIsBuildingReduceValue()!=null && x.getIsBuildingReduceValue()).collect(Collectors.toList());
                 if (CollectionUtil.isNotEmpty(collect)){
                     List<String> tIds = collect.stream().map(HouseGuarantyTarget::getTId).collect(Collectors.toList());
                     String paragraph = tmplParagraph.getParagraph();
@@ -1030,12 +1022,22 @@ public class HouseDocumentUtil {
      * @param tmplParagraph
      * @return
      */
-    public static String isHasImmovableCertificate(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplParagraph, String hasImmovableCertificate) {
+    public static String isHasImmovableCertificate(List<HouseGuarantyTarget> targets, TmplHouseParagraph tmplParagraph, List<String> certificates) {
         String paragraph = tmplParagraph.getParagraph();
-        if (StrUtil.isNotBlank(hasImmovableCertificate)){
-            paragraph = paragraph.replace("{immovable1}","、“不动产登记薄”");
+        if (CollectionUtil.isNotEmpty(certificates)){
+            List<String> list = new ArrayList<>();
+            if (certificates.contains(HOUSE_OWN_CER)){
+                list.add("“房屋登记簿”");
+            }
+            if (certificates.contains(LAND_USE_CER)){
+                list.add("“土地登记簿”");
+            }
+            if (certificates.contains(IMMOVABLE_CER)){
+                list.add("“不动产登记簿”");
+            }
+            paragraph = paragraph.replace("{certificates1}",CollectionUtil.formatDotAndRemoveMiddle(list));
         }
-        return paragraph.replace("{immovable}", hasImmovableCertificate);
+        return paragraph.replace("{certificates}", CollectionUtil.formatDotAndRemoveMiddle(certificates));
 
     }
 
@@ -1344,4 +1346,30 @@ public class HouseDocumentUtil {
     }
 
 
+    /**
+     * 是否核对权属原件第九点
+     * @param isCheckOriginCertificate
+     * @param paragraph
+     * @return
+     */
+    public static String getCheckOriginCertificateX(String isCheckOriginCertificate, TmplHouseParagraph paragraph) {
+        if (HouseDocumentUtil.checkBoolean(isCheckOriginCertificate)){
+            return paragraph.getParagraph();
+        }
+        return null;
+    }
+
+    /**
+     * 是否核对权属原件第八点
+     * @param paragraph
+     * @return
+     */
+    public static String getCheckOriginCertificateXX(List<String> certificates, TmplHouseParagraph paragraph) {
+        if (CollectionUtil.isNotEmpty(certificates)){
+            String paragraph1 = paragraph.getParagraph();
+            return paragraph1.replace("{certificates}", CollectionUtil.formatDotAndRemoveMiddle(certificates));
+        }
+        return null;
+    }
+
 }

+ 0 - 4
domain/src/main/java/com/dayou/doc/house/ConsignorLetterDO.java

@@ -95,10 +95,6 @@ public class ConsignorLetterDO {
      */
     private String isCheckOriginCertificate;
 
-    /**
-     * 是否提供不动产权利证
-     */
-    private String hasImmovableCertificate;
 
     /**
      * 土地使用权类型

+ 2 - 0
domain/src/main/java/com/dayou/entity/HouseGuarantyTarget.java

@@ -105,4 +105,6 @@ public class HouseGuarantyTarget extends BaseEntity implements Serializable {
     private Boolean isPromiseFile;
 
     private Boolean isInChengDu;
+
+    private Boolean houseGetLandInfo;
 }

+ 3 - 1
domain/src/main/java/com/dayou/enums/BusinessEnum.java

@@ -140,6 +140,8 @@ public enum BusinessEnum implements CodeMsgEnumInterface<String,String>{
     public enum HouseGuarantyRules implements CodeMsgEnumInterface<String,String>{
 
         IS_CHECK_ORIGIN_CERTIFICATE("IS_CHECK_ORIGIN_CERTIFICATE","是否核验权属资料原件"),
+        IS_CHECK_ORIGIN_CERTIFICATE_X("IS_CHECK_ORIGIN_CERTIFICATE_X","是否核验权属资料原件"),
+        IS_CHECK_ORIGIN_CERTIFICATE_XX("IS_CHECK_ORIGIN_CERTIFICATE_XX","是否核验权属资料原件"),
         IS_BUILDING_PART("IS_BUILDING_PART","估价对象为整个房地产中的一部分"),
         IS_HOTEL_PART("IS_HOTEL_PART","估价对象为整个酒店房地产中的一部分"),
         IS_REGISTER_BUILDING_YEAR("IS_REGISTER_BUILDING_YEAR","是否登记建成年代"),
@@ -148,7 +150,7 @@ public enum BusinessEnum implements CodeMsgEnumInterface<String,String>{
         IS_PROVIDE_LAND_BIG_CERTIFICATE_SHARE("IS_PROVIDE_LAND_BIG_CERTIFICATE_SHARE","未提供分户土地证,提供宗地大证需要采用成本法,分摊土地面积处理方式"),
         IS_DIVIDE_METHOD1("IS_DIVIDE_METHOD1","房屋分层面积处理方式一"),
         IS_DIVIDE_METHOD2("IS_DIVIDE_METHOD2","房屋分层面积处理方式二"),
-        IS_ADDRESS_DIFF_CERTIFICATE("IS_ADDRESS_DIFF","登记地址与实勘地址不一致(有证明)"),
+        IS_ADDRESS_DIFF_CERTIFICATE("IS_ADDRESS_DIFF_CERTIFICATE","登记地址与实勘地址不一致(有证明)"),
         IS_ADDRESS_DIFF_NO_CERTIFICATE("IS_ADDRESS_DIFF_NO_CERTIFICATE","登记地址与实勘地址不一致(无证明)"),
         IS_DATE_DIFF("IS_DATE_DIFF","价值时点与查勘日期不一致"),
         IS_BIG_CERTIFICATE_ONLY_HOUSE("IS_BIG_CERTIFICATE_ONLY_HOUSE","未办理分户土地证和提供所在宗地大证仅限住宅商品房"),

+ 8 - 7
service/src/main/java/com/dayou/service/TmplHouseParagraphService.java

@@ -1,6 +1,7 @@
 package com.dayou.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.dayou.entity.CertificateLandUse;
 import com.dayou.entity.HouseGuarantyTarget;
 import com.dayou.entity.TmplHouseParagraph;
 
@@ -13,36 +14,36 @@ public interface TmplHouseParagraphService extends IService<TmplHouseParagraph>
     /**
      * 生成一般假设最终结果
      */
-    String findYBJSResult(List<HouseGuarantyTarget> targets,String isCheckOriginCertificate, String hasImmovableCertificate);
+    String findYBJSResult(List<HouseGuarantyTarget> targets,String isCheckOriginCertificate, List<String> certificates);
 
     /**
      * 生成未定事项假设最终结果
      * @param targets
      */
-    String findWDSXJSResult(List<HouseGuarantyTarget> targets,String hasImmovableCertificate,String acreage);
+    String findWDSXJSResult(List<HouseGuarantyTarget> targets, List<CertificateLandUse> landCerts );
 
     /**
      * 生成不相一致假设结果
      * @param targets
-     * @param hasImmovableCertificate
-     * @param docDate
+     * @param certificates
+     * @param valueTiming
      * @return
      */
-    String findBXYZJSResult(List<HouseGuarantyTarget> targets, String hasImmovableCertificate, String docDate);
+    String findBXYZJSResult(List<HouseGuarantyTarget> targets, List<String> certificates, String valueTiming);
 
     /**
      * 生成依据不足假设结果
      * @param targets
      * @return
      */
-    String findYJBUJSResult(List<HouseGuarantyTarget> targets,String hasImmovableCertificate,String methods);
+    String findYJBUJSResult(List<HouseGuarantyTarget> targets,List<String> certificates,String isCheckOriginCertificate,String methods);
 
     /**
      * 生成限制条件结果
      * @param targets
      * @return
      */
-    String findLimitConditionResult(List<HouseGuarantyTarget> targets,Boolean isDeductSellAmount,Boolean hasTechReport,Boolean isNsBank,String hasImmovableCertificate);
+    String findLimitConditionResult(List<HouseGuarantyTarget> targets,Boolean isDeductSellAmount,Boolean hasTechReport,Boolean isNsBank,List<String> certificates);
 
     /**
      * 生成使用报告说明

+ 1 - 1
service/src/main/java/com/dayou/service/impl/CertificateFixedAssetsServiceImpl.java

@@ -14,7 +14,7 @@ public class CertificateFixedAssetsServiceImpl extends ServiceImpl<CertificateFi
 
     @Override
     public Boolean add(CertificateFixedAssets certificateFixedAssets) {
-        return this.save(certificateFixedAssets);
+        return this.saveOrUpdate(certificateFixedAssets);
     }
 
     @Override

+ 1 - 1
service/src/main/java/com/dayou/service/impl/CertificateHouseOwnServiceImpl.java

@@ -15,7 +15,7 @@ public class CertificateHouseOwnServiceImpl extends ServiceImpl<CertificateHouse
 
     @Override
     public Boolean add(CertificateHouseOwn certificateHouseOwn) {
-        return this.save(certificateHouseOwn);
+        return this.saveOrUpdate(certificateHouseOwn);
     }
 
     @Override

+ 1 - 1
service/src/main/java/com/dayou/service/impl/CertificateLandUseServiceImpl.java

@@ -18,7 +18,7 @@ public class CertificateLandUseServiceImpl extends ServiceImpl<CertificateLandUs
 
     @Override
     public Boolean add(CertificateLandUse certificateLandUse) {
-        return this.save(certificateLandUse);
+        return this.saveOrUpdate(certificateLandUse);
     }
 
     @Override

+ 42 - 16
service/src/main/java/com/dayou/service/impl/HouseGuarantyServiceImpl.java

@@ -16,10 +16,7 @@ import com.dayou.doc.house.ConditionDO;
 import com.dayou.doc.house.ConsignorLetterDO;
 import com.dayou.dto.HouseGuarantyTableDTO;
 import com.dayou.dto.HouseGuarantyTargetDTO;
-import com.dayou.entity.DocumentProduction;
-import com.dayou.entity.HouseGuarantyProcess;
-import com.dayou.entity.HouseGuarantyTarget;
-import com.dayou.entity.TmplHouseParagraph;
+import com.dayou.entity.*;
 import com.dayou.enums.DocumentType;
 import com.dayou.enums.BusinessEnum;
 import com.dayou.exception.ErrorCode;
@@ -74,6 +71,15 @@ public class HouseGuarantyServiceImpl implements HouseGuarantyService {
     @Autowired
     private TmplHouseParagraphService tmplHouseParagraphService;
 
+    @Autowired
+    private CertificateFixedAssetsService certificateFixedAssetsService;
+
+    @Autowired
+    private CertificateHouseOwnService certificateHouseOwnService;
+
+    @Autowired
+    private CertificateLandUseService certificateLandUseService;
+
     @Override
     public Long createTableWord(HouseGuarantyTableDTO houseGuarantyTableDTO) {
         try {
@@ -213,32 +219,35 @@ public class HouseGuarantyServiceImpl implements HouseGuarantyService {
             Map<String, String> valueMap = EasyExcelUtil.getExcelCellValue(workbook, BASE_INFO_ZH);
             ConditionDO conditionDO = JSON.parseObject(JSON.toJSONString(valueMap), ConditionDO.class);
 
+            //获取估价对象所提供的权属证书类型
+            List<String> certificates = getCertificateTypes(id);
+
             //获取估价对象补充信息
-            List<HouseGuarantyTarget> targets = houseGuarantyTargetService.list(new LambdaQueryWrapper<HouseGuarantyTarget>().eq(HouseGuarantyTarget::getDocId, id).eq(BaseEntity::getDeleteStatus, Boolean.FALSE));
+            List<HouseGuarantyTarget> targets = houseGuarantyTargetService
+                    .list(new LambdaQueryWrapper<HouseGuarantyTarget>().eq(HouseGuarantyTarget::getDocId, id)
+                            .eq(BaseEntity::getDeleteStatus, Boolean.FALSE));
 
-            String hasImmovableCertificate = valueMap.get("hasImmovableCertificate");
 
-            if (HouseDocumentUtil.checkBoolean(hasImmovableCertificate)){
-                hasImmovableCertificate = IMMOVABLE;
-            }else {
-                hasImmovableCertificate = "";
-            }
+            //获取土地证信息
+            List<CertificateLandUse> landCerts = certificateLandUseService.list(new LambdaQueryWrapper<CertificateLandUse>().eq(CertificateLandUse::getBusinessId, id));
+            String isCheckOriginCertificate = valueMap.get("isCheckOriginCertificate");
+
 
             //组合一般假设内容
 
-            String ybjsResult = tmplHouseParagraphService.findYBJSResult(targets,valueMap.get("isCheckOriginCertificate"), hasImmovableCertificate);
+            String ybjsResult = tmplHouseParagraphService.findYBJSResult(targets,isCheckOriginCertificate, certificates);
             conditionDO.setYBJS(ybjsResult);
 
             //组合未定事项假设内容
-            String wdsxjsResult = tmplHouseParagraphService.findWDSXJSResult(targets, hasImmovableCertificate,valueMap.get("acreage"));
+            String wdsxjsResult = tmplHouseParagraphService.findWDSXJSResult(targets,landCerts);
             conditionDO.setWDSXJS(wdsxjsResult);
 
             //组合不相一致假设内容
-            String bxyzjsResult = tmplHouseParagraphService.findBXYZJSResult(targets,hasImmovableCertificate,valueMap.get("docDate"));
+            String bxyzjsResult = tmplHouseParagraphService.findBXYZJSResult(targets,certificates,valueMap.get("valueTiming"));
             conditionDO.setBXYZJS(bxyzjsResult);
 
             //组合依据不足假设内容
-            String yjbujsResult = tmplHouseParagraphService.findYJBUJSResult(targets,hasImmovableCertificate,valueMap.get("methods"));
+            String yjbujsResult = tmplHouseParagraphService.findYJBUJSResult(targets,certificates,isCheckOriginCertificate,valueMap.get("methods"));
             conditionDO.setYJBZJS(yjbujsResult);
 
             //组合限制条件内容
@@ -246,7 +255,7 @@ public class HouseGuarantyServiceImpl implements HouseGuarantyService {
                         ,HouseDocumentUtil.checkBoolean(valueMap.get("isDeductSellAmount"))
                     ,HouseDocumentUtil.checkBoolean(valueMap.get("hasTechReport"))
                     ,HouseDocumentUtil.checkBoolean(valueMap.get("isNsBank"))
-                            ,hasImmovableCertificate);
+                            ,certificates);
 
             conditionDO.setXZTJ(limitCondition);
 
@@ -349,4 +358,21 @@ public class HouseGuarantyServiceImpl implements HouseGuarantyService {
         dp.setConsignor(consignor);
         return dp;
     }
+
+    private List<String> getCertificateTypes(Long businessId){
+        List<String> certificateTypes = new ArrayList<>();
+        int imm = certificateFixedAssetsService.count(new LambdaQueryWrapper<CertificateFixedAssets>().eq(CertificateFixedAssets::getBusinessType, GUARANTY).eq(CertificateFixedAssets::getBusinessId, businessId));
+        if (imm>0){
+            certificateTypes.add(IMMOVABLE_CER);
+        }
+        int house = certificateHouseOwnService.count(new LambdaQueryWrapper<CertificateHouseOwn>().eq(CertificateHouseOwn::getBusinessType, GUARANTY).eq(CertificateHouseOwn::getBusinessId, businessId));
+        if (house>0){
+            certificateTypes.add(HOUSE_OWN_CER);
+        }
+        int land = certificateLandUseService.count(new LambdaQueryWrapper<CertificateLandUse>().eq(CertificateLandUse::getBusinessType, GUARANTY).eq(CertificateLandUse::getBusinessId, businessId));
+        if (land>0){
+            certificateTypes.add(LAND_USE_CER);
+        }
+        return certificateTypes;
+    }
 }

+ 39 - 25
service/src/main/java/com/dayou/service/impl/TmplHouseParagraphServiceImpl.java

@@ -3,9 +3,11 @@ package com.dayou.service.impl;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dayou.entity.CertificateLandUse;
 import com.dayou.entity.HouseGuarantyTarget;
 import com.dayou.entity.TmplHouseParagraph;
 import com.dayou.mapper.TmplHouseParagraphMapper;
+import com.dayou.service.CertificateLandUseService;
 import com.dayou.service.TmplHouseParagraphService;
 import com.dayou.utils.HouseDocumentUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -25,13 +27,16 @@ public class TmplHouseParagraphServiceImpl extends ServiceImpl<TmplHouseParagrap
     @Autowired
     private TmplHouseParagraphMapper tmplHouseParagraphMapper;
 
+    @Autowired
+    private CertificateLandUseService certificateLandUseService;
+
     @Override
     public List<TmplHouseParagraph> findByMoldAndChapter(TmplHouseParagraph tmplHouseParagraph) {
         return tmplHouseParagraphMapper.findByMoldAndChapter(tmplHouseParagraph);
     }
 
     @Override
-    public String findYBJSResult(List<HouseGuarantyTarget> targets, String isCheckOriginCertificate, String hasImmovableCertificate) {
+    public String findYBJSResult(List<HouseGuarantyTarget> targets, String isCheckOriginCertificate, List<String> certificates) {
         List<TmplHouseParagraph> paragraphTemps = this.list(new LambdaQueryWrapper<TmplHouseParagraph>()
                 .eq(TmplHouseParagraph::getDocMold, GUARANTY).eq(TmplHouseParagraph::getChapter, ORDINARY_ASSUMPTION).orderByAsc(TmplHouseParagraph::getSort));
         Map<Integer, List<TmplHouseParagraph>> collect = paragraphTemps.stream().collect(Collectors.groupingBy(TmplHouseParagraph::getSort));
@@ -44,7 +49,7 @@ public class TmplHouseParagraphServiceImpl extends ServiceImpl<TmplHouseParagrap
                 if (StrUtil.isNotBlank(rule)){
                     if (IS_CHECK_ORIGIN_CERTIFICATE.getCode().equals(rule)){
                         String checkOriginCertificate = HouseDocumentUtil.getCheckOriginCertificate(isCheckOriginCertificate,
-                                hasImmovableCertificate, paragraph);
+                                certificates, paragraph);
 
                         if (StrUtil.isNotBlank(checkOriginCertificate)){
                             normalCondition.append(i).append(". ");
@@ -52,6 +57,15 @@ public class TmplHouseParagraphServiceImpl extends ServiceImpl<TmplHouseParagrap
                             i++;
                         }
                     }
+                    if (IS_CHECK_ORIGIN_CERTIFICATE_XX.getCode().equals(rule)){
+                        String checkOriginCertificateXX = HouseDocumentUtil.getCheckOriginCertificateXX(certificates,paragraph);
+
+                        if (StrUtil.isNotBlank(checkOriginCertificateXX)){
+                            normalCondition.append(i).append(". ");
+                            normalCondition.append(checkOriginCertificateXX);
+                            i++;
+                        }
+                    }
                     if (IS_BUILDING_PART.getCode().equals(rule)){
                         String isBuildingPart = HouseDocumentUtil.getIsBuildingPart(targets,paragraph);
                         if (StrUtil.isNotBlank(isBuildingPart)){
@@ -81,7 +95,7 @@ public class TmplHouseParagraphServiceImpl extends ServiceImpl<TmplHouseParagrap
     }
 
     @Override
-    public String findWDSXJSResult(List<HouseGuarantyTarget> targets,String hasImmovableCertificate,String acreage) {
+    public String findWDSXJSResult(List<HouseGuarantyTarget> targets, List<CertificateLandUse> landCerts ) {
 
         List<TmplHouseParagraph> paragraphTemps = this.list(new LambdaQueryWrapper<TmplHouseParagraph>()
                 .eq(TmplHouseParagraph::getDocMold, GUARANTY).eq(TmplHouseParagraph::getChapter, UNDEFINED_ASSUMPTION).orderByAsc(TmplHouseParagraph::getSort));
@@ -91,7 +105,7 @@ public class TmplHouseParagraphServiceImpl extends ServiceImpl<TmplHouseParagrap
             String rule = paragraph.getRule();
             if (StrUtil.isNotBlank(rule)){
                 if (IS_REGISTER_BUILDING_YEAR.getCode().equals(rule)){
-                    String buildingYear = HouseDocumentUtil.buildingYear(targets, hasImmovableCertificate, paragraph);
+                    String buildingYear = HouseDocumentUtil.buildingYear(targets, paragraph);
                     if (StrUtil.isNotBlank(buildingYear)){
                         result.append(i).append(". ").append(buildingYear);
                         i++;
@@ -104,29 +118,29 @@ public class TmplHouseParagraphServiceImpl extends ServiceImpl<TmplHouseParagrap
                         i++;
                     }
                 }
-                if (IS_PROVIDE_LAND_BIG_CERTIFICATE.getCode().equals(rule)){
-                    String provideLandBigCertificate = HouseDocumentUtil.isProvideLandBigCertificate(targets,paragraph);
-                    if (StrUtil.isNotBlank(provideLandBigCertificate)){
-                        result.append(i).append(". ").append(provideLandBigCertificate);
-                        i++;
-                    }
-                }
+//                if (IS_PROVIDE_LAND_BIG_CERTIFICATE.getCode().equals(rule)){
+//                    String provideLandBigCertificate = HouseDocumentUtil.isProvideLandBigCertificate(targets,paragraph);
+//                    if (StrUtil.isNotBlank(provideLandBigCertificate)){
+//                        result.append(i).append(". ").append(provideLandBigCertificate);
+//                        i++;
+//                    }
+//                }
                 if (IS_PROVIDE_LAND_BIG_CERTIFICATE_SHARE.getCode().equals(rule)){
-                    String provideLandBigCertificateShare = HouseDocumentUtil.isProvideLandBigCertificateShare(targets,paragraph);
+                    String provideLandBigCertificateShare = HouseDocumentUtil.isProvideLandBigCertificateShare(targets,paragraph,landCerts);
                     if (StrUtil.isNotBlank(provideLandBigCertificateShare)){
                         result.append(i).append(". ").append(provideLandBigCertificateShare);
                         i++;
                     }
                 }
                 if (IS_DIVIDE_METHOD1.getCode().equals(rule)){
-                    String divideMethod1 = HouseDocumentUtil.isDivideMethod1(targets,paragraph,hasImmovableCertificate);
+                    String divideMethod1 = HouseDocumentUtil.isDivideMethod1(targets,paragraph);
                     if (StrUtil.isNotBlank(divideMethod1)){
                         result.append(i).append(". ").append(divideMethod1);
                         i++;
                     }
                 }
                 if (IS_DIVIDE_METHOD2.getCode().equals(rule)){
-                    String divideMethod2 = HouseDocumentUtil.isDivideMethod2(targets,paragraph,hasImmovableCertificate);
+                    String divideMethod2 = HouseDocumentUtil.isDivideMethod2(targets,paragraph);
                     if (StrUtil.isNotBlank(divideMethod2)){
                         result.append(i).append(". ").append(divideMethod2);
                         i++;
@@ -143,7 +157,7 @@ public class TmplHouseParagraphServiceImpl extends ServiceImpl<TmplHouseParagrap
     }
 
     @Override
-    public String findBXYZJSResult(List<HouseGuarantyTarget> targets, String hasImmovableCertificate, String docDate) {
+    public String findBXYZJSResult(List<HouseGuarantyTarget> targets, List<String> certificates, String valueTiming) {
         List<TmplHouseParagraph> paragraphTemps = this.list(new LambdaQueryWrapper<TmplHouseParagraph>()
                 .eq(TmplHouseParagraph::getDocMold, GUARANTY).eq(TmplHouseParagraph::getChapter, UNCONFORMITY_ASSUMPTION).orderByAsc(TmplHouseParagraph::getSort));
         StringBuilder result = new StringBuilder();
@@ -152,21 +166,21 @@ public class TmplHouseParagraphServiceImpl extends ServiceImpl<TmplHouseParagrap
             String rule = paragraph.getRule();
             if (StrUtil.isNotBlank(rule)){
                 if (IS_ADDRESS_DIFF_CERTIFICATE.getCode().equals(rule)){
-                    String addressDiffCertificate = HouseDocumentUtil.isAddressDiffCertificate(targets, hasImmovableCertificate, paragraph);
+                    String addressDiffCertificate = HouseDocumentUtil.isAddressDiffCertificate(targets, certificates, paragraph);
                     if (StrUtil.isNotBlank(addressDiffCertificate)){
                         result.append(i).append(". ").append(addressDiffCertificate);
                         i++;
                     }
                 }
                 if (IS_ADDRESS_DIFF_NO_CERTIFICATE.getCode().equals(rule)){
-                    String addressDiffNoCertificate = HouseDocumentUtil.isAddressDiffNoCertificate(targets, hasImmovableCertificate, paragraph);
+                    String addressDiffNoCertificate = HouseDocumentUtil.isAddressDiffNoCertificate(targets, certificates, paragraph);
                     if (StrUtil.isNotBlank(addressDiffNoCertificate)){
                         result.append(i).append(". ").append(addressDiffNoCertificate);
                         i++;
                     }
                 }
                 if (IS_DATE_DIFF.getCode().equals(rule)){
-                    String dateDiff = HouseDocumentUtil.isDateDiff(targets, paragraph, docDate);
+                    String dateDiff = HouseDocumentUtil.isDateDiff(targets, paragraph, valueTiming);
                     if (StrUtil.isNotBlank(dateDiff)){
                         result.append(i).append(". ").append(dateDiff);
                         i++;
@@ -183,7 +197,7 @@ public class TmplHouseParagraphServiceImpl extends ServiceImpl<TmplHouseParagrap
     }
 
     @Override
-    public String findYJBUJSResult(List<HouseGuarantyTarget> targets,String hasImmovableCertificate,String methods) {
+    public String findYJBUJSResult(List<HouseGuarantyTarget> targets,List<String> certificates,String isCheckOriginCertificate,String methods) {
         List<TmplHouseParagraph> paragraphTemps = this.list(new LambdaQueryWrapper<TmplHouseParagraph>()
                 .eq(TmplHouseParagraph::getDocMold, GUARANTY).eq(TmplHouseParagraph::getChapter, DEFICIENCY_ASSUMPTION).orderByAsc(TmplHouseParagraph::getSort));
         StringBuilder result = new StringBuilder();
@@ -192,28 +206,28 @@ public class TmplHouseParagraphServiceImpl extends ServiceImpl<TmplHouseParagrap
             String rule = paragraph.getRule();
             if (StrUtil.isNotBlank(rule)){
                 if (IS_BIG_CERTIFICATE_ONLY_HOUSE.getCode().equals(rule)){
-                    String bigCertificateOnlyHouse = HouseDocumentUtil.isBigCertificateOnlyHouse(targets,paragraph);
+                    String bigCertificateOnlyHouse = HouseDocumentUtil.isBigCertificateOnlyHouse(targets,paragraph,isCheckOriginCertificate);
                     if (StrUtil.isNotBlank(bigCertificateOnlyHouse)){
                         result.append(i).append(". ").append(bigCertificateOnlyHouse);
                         i++;
                     }
                 }
                 if (IS_NOT_ORIGIN_CERTIFICATE_AND_PROMISE_SAME.getCode().equals(rule)){
-                    String notOriginCertificateOnlyHouse = HouseDocumentUtil.isNotOriginCertificateOnlyHouse(targets,paragraph,hasImmovableCertificate);
+                    String notOriginCertificateOnlyHouse = HouseDocumentUtil.isNotOriginCertificateOnlyHouse(targets,paragraph,isCheckOriginCertificate,certificates);
                     if (StrUtil.isNotBlank(notOriginCertificateOnlyHouse)){
                         result.append(i).append(". ").append(notOriginCertificateOnlyHouse);
                         i++;
                     }
                 }
                 if (IS_NOT_ORIGIN_FILES_IN_CHENGDU.getCode().equals(rule)){
-                    String bigCertificateOnlyHouse = HouseDocumentUtil.isNotOriginFileInChengDu(targets,paragraph);
+                    String bigCertificateOnlyHouse = HouseDocumentUtil.isNotOriginFileInChengDu(targets,paragraph,isCheckOriginCertificate,certificates);
                     if (StrUtil.isNotBlank(bigCertificateOnlyHouse)){
                         result.append(i).append(". ").append(bigCertificateOnlyHouse);
                         i++;
                     }
                 }
                 if (IS_NOT_ORIGIN_FILES_OUT_CHENGDU.getCode().equals(rule)){
-                    String notOriginFileOutChengDu = HouseDocumentUtil.isNotOriginFileOutChengDu(targets,paragraph);
+                    String notOriginFileOutChengDu = HouseDocumentUtil.isNotOriginFileOutChengDu(targets,paragraph,isCheckOriginCertificate,certificates);
                     if (StrUtil.isNotBlank(notOriginFileOutChengDu)){
                         result.append(i).append(". ").append(notOriginFileOutChengDu);
                         i++;
@@ -251,7 +265,7 @@ public class TmplHouseParagraphServiceImpl extends ServiceImpl<TmplHouseParagrap
     }
 
     @Override
-    public String findLimitConditionResult(List<HouseGuarantyTarget> targets,Boolean isDeductSellAmount,Boolean hasTechReport,Boolean isNsBank,String hasImmovableCertificate) {
+    public String findLimitConditionResult(List<HouseGuarantyTarget> targets,Boolean isDeductSellAmount,Boolean hasTechReport,Boolean isNsBank,List<String> certificates) {
         List<TmplHouseParagraph> paragraphTemps = this.list(new LambdaQueryWrapper<TmplHouseParagraph>()
                 .eq(TmplHouseParagraph::getDocMold, GUARANTY).eq(TmplHouseParagraph::getChapter, LIMIT_CONDITION).orderByAsc(TmplHouseParagraph::getSort));
         StringBuilder result = new StringBuilder();
@@ -316,7 +330,7 @@ public class TmplHouseParagraphServiceImpl extends ServiceImpl<TmplHouseParagrap
                     }
                 }
                 if (IS_HAS_IMMOVABLE_CERTIFICATE.getCode().equals(rule)){
-                    String hasImmovableCertificate1 = HouseDocumentUtil.isHasImmovableCertificate(targets,paragraph,hasImmovableCertificate);
+                    String hasImmovableCertificate1 = HouseDocumentUtil.isHasImmovableCertificate(targets,paragraph,certificates);
                     if (StrUtil.isNotBlank(hasImmovableCertificate1)){
                         result.append(i).append(". ").append(hasImmovableCertificate1);
                         i++;