xiahan пре 7 месеци
родитељ
комит
aef2f0c2f8

+ 1 - 1
jsglkh-common/src/main/java/com/rongwei/bscommon/sys/strategy/scoreCalculation/ScoreCalculationServiceNum15.java

@@ -103,7 +103,7 @@ public class ScoreCalculationServiceNum15 implements ScoreCalculationService {
         if (rate.compareTo(BigDecimal.valueOf(100)) >= 0) {
             // 不扣分
         } else if (rate.compareTo(BigDecimal.valueOf(60)) <= 0) {
-            finalScore = BigDecimal.ZERO.subtract(THREE_SOURCE);
+            finalScore = BigDecimal.ZERO;
         } else {
             finalScore = finalScore.subtract(CALCULATE_Y3(BigDecimal.valueOf(100), BigDecimal.valueOf(3), BigDecimal.valueOf(60), BigDecimal.ZERO, rate));
         }

+ 6 - 1
jsglkh-common/src/main/java/com/rongwei/bscommon/sys/strategy/scoreCalculation/ScoreCalculationServiceNum16.java

@@ -73,6 +73,11 @@ public class ScoreCalculationServiceNum16 implements ScoreCalculationService {
         List<JtKcsjxm> list = jtKcsjxmService.list(new LambdaQueryWrapper<JtKcsjxm>().eq(BaseDo::getDeleted, "0")
                 .in(JtKcsjxm::getMainid, khbmList.stream().map(JtXmkh::getId).collect(Collectors.toList()))
                 .in(JtKcsjxm::getXmmc, jtFjglxmList.stream().map(JtFjglxm::getXmmc).collect(Collectors.toList())));
+        if(list.isEmpty()){
+            errorMsg = "项目级:无法获取到勘察设计项目清单";
+            finalScore = BigDecimal.ZERO;
+            return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
+        }
         //EPC项目数量
         List<String> denominator = list.stream().map(JtKcsjxm::getXmmc).distinct().collect(Collectors.toList());
 
@@ -99,7 +104,7 @@ public class ScoreCalculationServiceNum16 implements ScoreCalculationService {
         if (rate.compareTo(BigDecimal.valueOf(90)) >= 0) {
             // 不扣分
         } else if (rate.compareTo(BigDecimal.valueOf(60)) <= 0) {
-            finalScore = BigDecimal.ZERO.subtract(TWO_SOURCE);
+            finalScore = BigDecimal.ZERO;
         } else {
             finalScore = finalScore.subtract(CALCULATE_Y3(BigDecimal.valueOf(90), BigDecimal.valueOf(2), BigDecimal.valueOf(60), BigDecimal.ZERO, rate));
         }

+ 1 - 1
jsglkh-common/src/main/java/com/rongwei/bscommon/sys/strategy/scoreCalculation/ScoreCalculationServiceNum17.java

@@ -113,7 +113,7 @@ public class ScoreCalculationServiceNum17 implements ScoreCalculationService {
         if (rate.compareTo(BigDecimal.valueOf(100)) >= 0) {
             // 不扣分
         } else if (rate.compareTo(BigDecimal.valueOf(60)) <= 0) {
-            finalScore = BigDecimal.ZERO.subtract(TWO_SOURCE);
+            finalScore = finalScore.subtract(TWO_SOURCE);
         } else {
             finalScore = finalScore.subtract(CALCULATE_Y3(BigDecimal.valueOf(100), BigDecimal.valueOf(2), BigDecimal.valueOf(60), BigDecimal.ZERO, rate));
         }

+ 31 - 24
jsglkh-common/src/main/java/com/rongwei/bscommon/sys/strategy/scoreCalculation/ScoreCalculationServiceNum3.java

@@ -62,6 +62,13 @@ public class ScoreCalculationServiceNum3 implements ScoreCalculationService {
             finalScore = finalScore.subtract(TWO_SOURCE);
             errorMsg = "公司级:工作大纲/指导书模板(编写指南)发布证明为空 ";
         }
+        // 获取勘察工作大纲
+        List<JtGzdg> gzdgList = jtGzdgService.list(new LambdaQueryWrapper<JtGzdg>().eq(BaseDo::getDeleted, "0")
+                .in(JtGzdg::getMainid, khbmList.stream().map(JtXmkh::getId).collect(Collectors.toList())));
+        if (gzdgList.isEmpty()) {
+            errorMsg = errorMsg + "项目级:无法获取到勘察工作大纲";
+            return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
+        }
 
         // 获取考核项目信息
         List<JtFjglxm> khxmList = jtFjglxmService.list(new LambdaQueryWrapper<JtFjglxm>()
@@ -73,29 +80,28 @@ public class ScoreCalculationServiceNum3 implements ScoreCalculationService {
 
         if (khxmList.isEmpty()) {
             finalScore = BigDecimal.ZERO;
-            errorMsg = errorMsg + "无法获取到项目信息";
+            errorMsg = errorMsg + "项目级: 考核区间内不存在项目";
             return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
         }
-        // 获取勘察工作大纲
-        List<JtGzdg> gzdgList = jtGzdgService.list(new LambdaQueryWrapper<JtGzdg>().eq(BaseDo::getDeleted, "0")
-                .eq(JtGzdg::getType, "0") //勘察工作大纲
-                //.in(JtGzdg::getXmmc, khxmList.stream().map(JtFjglxm::getXmmc).collect(Collectors.toList()))
-                .in(JtGzdg::getMainid, khbmList.stream().map(JtXmkh::getId).collect(Collectors.toList())));
-        if (gzdgList.isEmpty()) {
-            finalScore = BigDecimal.ZERO;
-            errorMsg = errorMsg + "项目级: 无法获取到勘察工作大纲";
-            return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
-        }
-        // 获取已审定的项目数量
-        List<JtGzdg> authorizeDatas = gzdgList.stream()
-                .filter(data -> StringUtils.isNotBlank(data.getSdzrr()) && data.getSdsj() != null)
+
+
+        /**************获取已审定的项目数量 分子******************/
+        List<String> authorizeDatas = gzdgList.stream()
+                .filter(data -> "0".equals(data.getType()) && StringUtils.isNotBlank(data.getSdzrr()) && data.getSdsj() != null)
+                .map(JtGzdg::getXmmc)
+                .distinct()
                 .collect(Collectors.toList());
-        BigDecimal approvalRate = calculateApprovalRate(khxmList, authorizeDatas);
+        /**************分母 勘察工作大纲*************/
+        List<String> xmmcs = gzdgList.stream().filter(data -> "0".equals(data.getType())).map(JtGzdg::getXmmc).distinct().collect(Collectors.toList());
+        List<String> collect = khxmList.stream().map(JtFjglxm::getXmmc).filter(xmmcs::contains).distinct().collect(Collectors.toList());
+        /*******审查审定率为***********/
+        BigDecimal approvalRate = calculateApprovalRate(collect, authorizeDatas);
         errorMsg = errorMsg + "公司级:审查审定率为:" + approvalRate + "% ";
-        if (approvalRate.compareTo(BigDecimal.valueOf(90)) >= 0) {
+        // modify at [ 2024-12-26 11:01:45 ] by xh: 文斌要求特殊处理
+        if (approvalRate.compareTo(BigDecimal.valueOf(90)) >= 0 || approvalRate.compareTo(BigDecimal.ZERO) == 0) {
             // 不扣分
 //            return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
-        } else if (approvalRate.compareTo(BigDecimal.valueOf(60)) <= 0) {
+        } else if (approvalRate.compareTo(BigDecimal.valueOf(60)) <= 0 ) {
             // 得零分
             finalScore = BigDecimal.ZERO;
             return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
@@ -108,7 +114,7 @@ public class ScoreCalculationServiceNum3 implements ScoreCalculationService {
             }
         }
         // 获取大纲中的项目名称
-        List<String> xmmcList = gzdgList.stream().map(JtGzdg::getXmmc).collect(Collectors.toList());
+        List<String> xmmcList = gzdgList.stream().filter(data -> StringUtils.isNotBlank(data.getType())).map(JtGzdg::getXmmc).collect(Collectors.toList());
         // 若每个项目没有“类型”为勘察工作大纲对应的数据(即三项都没有),扣0.5分/项。
         List<String> emptyBlankData = khxmList.stream()
                 .filter(info -> !xmmcList.contains(info.getXmmc()))
@@ -117,14 +123,15 @@ public class ScoreCalculationServiceNum3 implements ScoreCalculationService {
                 .collect(Collectors.toList());
         if (!emptyBlankData.isEmpty()) {
             String peojectNames = String.join(",", emptyBlankData);
-            errorMsg = errorMsg + "项目级:以下项目名称:" + peojectNames + " 没有勘察工作大纲";
+            errorMsg = errorMsg + "项目级:以下项目名称:" + peojectNames + " 没有勘察工作大纲/设计工作大纲/勘察设计指导书";
             finalScore = finalScore.subtract(BigDecimal.valueOf((double) emptyBlankData.size() * 0.5));
             if (finalScore.compareTo(BigDecimal.ZERO) <= 0) {
                 finalScore = BigDecimal.ZERO;
                 return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
             }
         }
-        List<String> emergingProjects = getEmergingProjects(khxmList, xmmcList, emptyBlankData.size());
+
+        List<String> emergingProjects = getEmergingProjects(khxmList, gzdgList.stream().map(JtGzdg::getXmmc).distinct().collect(Collectors.toList()));
         if (!emergingProjects.isEmpty()) {
             String peojectNames = String.join(",", emergingProjects);
             errorMsg = errorMsg + "项目级:以下项目名称:" + peojectNames + " 属于新兴业务项目但未开展勘察工作大纲审查";
@@ -146,11 +153,11 @@ public class ScoreCalculationServiceNum3 implements ScoreCalculationService {
      * @param gzdgList
      * @return
      */
-    public List<String> getEmergingProjects(List<JtFjglxm> khxmList, List<String> xmmcList, int limitSize) {
+    public List<String> getEmergingProjects(List<JtFjglxm> khxmList, List<String> xmmcList) {
 
         return khxmList
                 .stream()
-                .filter(info -> "0".equals(info.getSfxxyw()) && !xmmcList.contains(info.getXmmc()))
+                .filter(data -> "0".equals(data.getSfxxyw() ) && !xmmcList.contains(data.getXmmc()))
                 .map(JtFjglxm::getXmmc)
                 .distinct()
                 .collect(Collectors.toList());
@@ -163,11 +170,11 @@ public class ScoreCalculationServiceNum3 implements ScoreCalculationService {
      * @param authorizeDatas 已完成审定的项目数量
      * @return
      */
-    public BigDecimal calculateApprovalRate(List<JtFjglxm> khxmList, List<JtGzdg> authorizeDatas) {
+    public BigDecimal calculateApprovalRate(List<String> khxmList, List<String> authorizeDatas) {
         // 分母
         int denominator = khxmList.size();
         // 分子
-        int numerator = (int) authorizeDatas.stream().map(JtGzdg::getXmmc).distinct().count();
+        int numerator = authorizeDatas.size();
         if (denominator == 0) {
             return BigDecimal.ZERO;
         }

+ 31 - 26
jsglkh-common/src/main/java/com/rongwei/bscommon/sys/strategy/scoreCalculation/ScoreCalculationServiceNum4.java

@@ -62,7 +62,14 @@ public class ScoreCalculationServiceNum4 implements ScoreCalculationService {
             finalScore = finalScore.subtract(TWO_SOURCE);
             errorMsg = "公司级:工作大纲/指导书模板(编写指南)发布证明为空 ";
         }
-
+        // 获取勘察工作大纲
+        List<JtGzdg> gzdgList = jtGzdgService.list(new LambdaQueryWrapper<JtGzdg>().eq(BaseDo::getDeleted, "0")
+                .in(JtGzdg::getMainid, khbmList.stream().map(JtXmkh::getId).collect(Collectors.toList())));
+        if (gzdgList.isEmpty()) {
+            finalScore = BigDecimal.ZERO;
+            errorMsg = errorMsg + "项目级: 无法获取到设计工作大纲 ";
+            return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
+        }
         // 获取考核项目信息
         List<JtFjglxm> khxmList = jtFjglxmService.list(new LambdaQueryWrapper<JtFjglxm>()
                 .eq(BaseDo::getDeleted, "0")
@@ -72,32 +79,31 @@ public class ScoreCalculationServiceNum4 implements ScoreCalculationService {
         );
         if (khxmList.isEmpty()) {
             finalScore = BigDecimal.ZERO;
-            errorMsg = errorMsg + "无法获取到项目信息 ";
-            return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
-        }
-        // 获取勘察工作大纲
-        List<JtGzdg> gzdgList = jtGzdgService.list(new LambdaQueryWrapper<JtGzdg>().eq(BaseDo::getDeleted, "0")
-                .eq(JtGzdg::getType, "2") //勘察设计指导书
-                // .in(JtGzdg::getXmmc, khxmList.stream().map(JtFjglxm::getXmmc).collect(Collectors.toList()))
-                .in(JtGzdg::getMainid, khbmList.stream().map(JtXmkh::getId).collect(Collectors.toList())));
-        if (gzdgList.isEmpty()) {
-            finalScore = BigDecimal.ZERO;
-            errorMsg = errorMsg + "项目级: 无法获取到勘察工作大纲 ";
+            errorMsg = errorMsg + "项目级: 考核区间内不存在项目";
             return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
         }
-        // 获取已审定的项目数量
-        List<JtGzdg> authorizeDatas = gzdgList.stream()
-                .filter(data -> StringUtils.isNotBlank(data.getSdzrr()) && data.getSdsj() != null)
+
+
+        /**************获取已审定的项目数量 分子******************/
+        List<String> authorizeDatas = gzdgList.stream()
+                .filter(data -> "1".equals(data.getType()) && StringUtils.isNotBlank(data.getSdzrr()) && data.getSdsj() != null)
+                .map(JtGzdg::getXmmc)
+                .distinct()
                 .collect(Collectors.toList());
-        BigDecimal approvalRate = calculateApprovalRate(khxmList, authorizeDatas);
+        /**************分母设计工作大纲************/
+        List<String> xmmcs = gzdgList.stream().filter(data -> "1".equals(data.getType())).map(JtGzdg::getXmmc).distinct().collect(Collectors.toList());
+        List<String> collect = khxmList.stream().map(JtFjglxm::getXmmc).filter(xmmcs::contains).distinct().collect(Collectors.toList());
+        /*******审查审定率为***********/
+        BigDecimal approvalRate = calculateApprovalRate(collect, authorizeDatas);
         errorMsg = errorMsg + "公司级:审查审定率为:" + approvalRate + "% ";
-        if (approvalRate.compareTo(BigDecimal.valueOf(90)) >= 0) {
+        // modify at [ 2024-12-26 11:01:45 ] by xh: 文斌要求特殊处理
+        if (approvalRate.compareTo(BigDecimal.valueOf(90)) >= 0 || approvalRate.compareTo(BigDecimal.ZERO) == 0) {
 //            return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
         } else if (approvalRate.compareTo(BigDecimal.valueOf(60)) <= 0) {
             // 得零分
             finalScore = BigDecimal.ZERO;
             return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
-        } else {
+        }  else {
             // 90- 60之前计算线性得分
             finalScore = finalScore.subtract(CALCULATE_Y3(BigDecimal.valueOf(90), BigDecimal.valueOf(3), BigDecimal.valueOf(60), BigDecimal.ZERO, approvalRate));
             if (finalScore.compareTo(BigDecimal.ZERO) <= 0) {
@@ -106,7 +112,7 @@ public class ScoreCalculationServiceNum4 implements ScoreCalculationService {
             }
         }
         // 获取大纲中的项目名称
-        List<String> xmmcList = gzdgList.stream().map(JtGzdg::getXmmc).collect(Collectors.toList());
+        List<String> xmmcList = gzdgList.stream().filter(data -> StringUtils.isNotBlank(data.getType())).map(JtGzdg::getXmmc).collect(Collectors.toList());
         // 若每个项目没有“类型”为勘察工作大纲对应的数据(即三项都没有),扣0.5分/项。
         List<String> emptyBlankData = khxmList.stream()
                 .filter(info -> !xmmcList.contains(info.getXmmc()))
@@ -116,14 +122,14 @@ public class ScoreCalculationServiceNum4 implements ScoreCalculationService {
                 .collect(Collectors.toList());
         if (!emptyBlankData.isEmpty()) {
             String peojectNames = String.join(",", emptyBlankData);
-            errorMsg = errorMsg + "项目级:以下项目名称:" + peojectNames + " 没有勘察设计指导书 ";
+            errorMsg = errorMsg + "项目级:以下项目名称:" + peojectNames + " 没有勘察工作大纲/设计工作大纲/勘察设计指导书 ";
             finalScore = finalScore.subtract(BigDecimal.valueOf((double) emptyBlankData.size() * 0.5));
             if (finalScore.compareTo(BigDecimal.ZERO) <= 0) {
                 finalScore = BigDecimal.ZERO;
                 return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
             }
         }
-        List<String> emergingProjects = getEmergingProjects(khxmList, xmmcList, emptyBlankData.size());
+        List<String> emergingProjects = getEmergingProjects(khxmList, gzdgList.stream().map(JtGzdg::getXmmc).distinct().collect(Collectors.toList()));
         if (!emergingProjects.isEmpty()) {
             String peojectNames = String.join(",", emergingProjects);
             errorMsg = errorMsg + "项目级:以下项目名称:" + peojectNames + " 属于新兴业务项目但未开展设勘察设计指导书审查 ";
@@ -145,14 +151,13 @@ public class ScoreCalculationServiceNum4 implements ScoreCalculationService {
      * @param gzdgList
      * @return
      */
-    public List<String> getEmergingProjects(List<JtFjglxm> khxmList, List<String> xmmcList, int limitSize) {
+    public List<String> getEmergingProjects(List<JtFjglxm> khxmList, List<String> xmmcList) {
 
         return khxmList
                 .stream()
-                .filter(info -> "0".equals(info.getSfxxyw()) && !xmmcList.contains(info.getXmmc()))
+                .filter(data -> "0".equals(data.getSfxxyw() ) && !xmmcList.contains(data.getXmmc()))
                 .map(JtFjglxm::getXmmc)
                 .distinct()
-                .limit(6 - limitSize)
                 .collect(Collectors.toList());
     }
 
@@ -163,11 +168,11 @@ public class ScoreCalculationServiceNum4 implements ScoreCalculationService {
      * @param authorizeDatas 已完成审定的项目数量
      * @return
      */
-    public BigDecimal calculateApprovalRate(List<JtFjglxm> khxmList, List<JtGzdg> authorizeDatas) {
+    public BigDecimal calculateApprovalRate(List<String> khxmList, List<String> authorizeDatas) {
         // 分母
         int denominator = khxmList.size();
         // 分子
-        int numerator = (int) authorizeDatas.stream().map(JtGzdg::getXmmc).distinct().count();
+        int numerator = authorizeDatas.size();
         if (denominator == 0) {
             return BigDecimal.ZERO;
         }

+ 32 - 26
jsglkh-common/src/main/java/com/rongwei/bscommon/sys/strategy/scoreCalculation/ScoreCalculationServiceNum5.java

@@ -52,7 +52,7 @@ public class ScoreCalculationServiceNum5 implements ScoreCalculationService {
         // 考核得分
         BigDecimal finalScore = jkAssessmentRules.getWeight();
         // 扣分细则
-         String errorMsg="";
+        String errorMsg = "";
         if (StringUtils.isBlank(jtGsjtbsj.getGzdgzdsmbbxzn())) {
             finalScore = finalScore.subtract(THREE_SOURCE);
             errorMsg = "公司级:工作大纲/指导书模板(编写指南)为空";
@@ -62,6 +62,15 @@ public class ScoreCalculationServiceNum5 implements ScoreCalculationService {
             finalScore = finalScore.subtract(TWO_SOURCE);
             errorMsg = "公司级:工作大纲/指导书模板(编写指南)发布证明为空 ";
         }
+        // 获取勘察设计指导书
+        List<JtGzdg> gzdgList = jtGzdgService.list(new LambdaQueryWrapper<JtGzdg>().eq(BaseDo::getDeleted, "0")
+                .in(JtGzdg::getMainid, khbmList.stream().map(JtXmkh::getId).collect(Collectors.toList())));
+
+        if (gzdgList.isEmpty()) {
+            finalScore = BigDecimal.ZERO;
+            errorMsg = errorMsg + "项目级: 无法获取到勘察设计指导书";
+            return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
+        }
         // 获取考核项目信息
         List<JtFjglxm> khxmList = jtFjglxmService.list(new LambdaQueryWrapper<JtFjglxm>()
                 .eq(BaseDo::getDeleted, "0")
@@ -69,28 +78,26 @@ public class ScoreCalculationServiceNum5 implements ScoreCalculationService {
                 .in(JtFjglxm::getMainid, khbmList.stream().map(JtXmkh::getId).collect(Collectors.toList()))
                 .between(JtFjglxm::getJhkssj, jtGsjtbsj.getAssessmentstarttime(), jtGsjtbsj.getAssessmentendtime())
         );
+
         if (khxmList.isEmpty()) {
             finalScore = BigDecimal.ZERO;
-            errorMsg = errorMsg + "无法获取到项目信息";
+            errorMsg = errorMsg + "考核区间内不存在项目";
             return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
         }
-        // 获取勘察工作大纲
-        List<JtGzdg> gzdgList = jtGzdgService.list(new LambdaQueryWrapper<JtGzdg>().eq(BaseDo::getDeleted, "0")
-                .eq(JtGzdg::getType, "1") //勘察设计指导书
-                //.in(JtGzdg::getXmmc, khxmList.stream().map(JtFjglxm::getXmmc).collect(Collectors.toList()))
-                .in(JtGzdg::getMainid, khbmList.stream().map(JtXmkh::getId).collect(Collectors.toList())));
-        if (gzdgList.isEmpty()) {
-            finalScore = BigDecimal.ZERO;
-            errorMsg = errorMsg + "项目级: 无法获取到勘察工作大纲";
-            return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
-        }
-        // 获取已审定的项目数量
-        List<JtGzdg> authorizeDatas = gzdgList.stream()
-                .filter(data -> StringUtils.isNotBlank(data.getSdzrr()) && data.getSdsj() != null)
+        /*************获取已审定的项目数量 分子******************/
+        List<String> authorizeDatas = gzdgList.stream()
+                .filter(data -> "2".equals(data.getType()) && StringUtils.isNotBlank(data.getSdzrr()) && data.getSdsj() != null)
+                .map(JtGzdg::getXmmc)
+                .distinct()
                 .collect(Collectors.toList());
-        BigDecimal approvalRate = calculateApprovalRate(khxmList, authorizeDatas);
-        errorMsg = errorMsg +"公司级:审查审定率为:" + approvalRate + "% ";
-        if (approvalRate.compareTo(BigDecimal.valueOf(90)) >= 0) {
+        /*************分母  勘察设计指导书*************/
+        List<String> xmmcs = gzdgList.stream().filter(data -> "2".equals(data.getType())).map(JtGzdg::getXmmc).distinct().collect(Collectors.toList());
+        List<String> collect = khxmList.stream().map(JtFjglxm::getXmmc).filter(xmmcs::contains).distinct().collect(Collectors.toList());
+        /*******审查审定率为***********/
+        BigDecimal approvalRate = calculateApprovalRate(collect, authorizeDatas);
+        errorMsg = errorMsg + "公司级:审查审定率为:" + approvalRate + "% ";
+        // modify at [ 2024-12-26 11:01:45 ] by xh: 文斌要求特殊处理
+        if (approvalRate.compareTo(BigDecimal.valueOf(90)) >= 0 || approvalRate.compareTo(BigDecimal.ZERO) == 0) {
 //            return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
         } else if (approvalRate.compareTo(BigDecimal.valueOf(60)) <= 0) {
             // 得零分
@@ -105,7 +112,7 @@ public class ScoreCalculationServiceNum5 implements ScoreCalculationService {
             }
         }
         // 获取大纲中的项目名称
-        List<String> xmmcList = gzdgList.stream().map(JtGzdg::getXmmc).collect(Collectors.toList());
+        List<String> xmmcList = gzdgList.stream().filter(data -> StringUtils.isNotBlank(data.getType())).map(JtGzdg::getXmmc).collect(Collectors.toList());
         // 若每个项目没有“类型”为勘察工作大纲对应的数据(即三项都没有),扣0.5分/项。
         List<String> emptyBlankData = khxmList.stream()
                 .filter(info -> !xmmcList.contains(info.getXmmc()))
@@ -115,14 +122,14 @@ public class ScoreCalculationServiceNum5 implements ScoreCalculationService {
                 .collect(Collectors.toList());
         if (!emptyBlankData.isEmpty()) {
             String peojectNames = String.join(",", emptyBlankData);
-            errorMsg = errorMsg+ "项目级:以下项目名称:" + peojectNames + " 没有勘察设计指导书 ";
+            errorMsg = errorMsg + "项目级:以下项目名称:" + peojectNames + " 没有勘察工作大纲/设计工作大纲/勘察设计指导书 ";
             finalScore = finalScore.subtract(BigDecimal.valueOf((double) emptyBlankData.size() * 0.5));
             if (finalScore.compareTo(BigDecimal.ZERO) <= 0) {
                 finalScore = BigDecimal.ZERO;
                 return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
             }
         }
-        List<String> emergingProjects = getEmergingProjects(khxmList, xmmcList, emptyBlankData.size());
+        List<String> emergingProjects = getEmergingProjects(khxmList, gzdgList.stream().map(JtGzdg::getXmmc).distinct().collect(Collectors.toList()));
         if (!emergingProjects.isEmpty()) {
             String peojectNames = String.join(",", emergingProjects);
             errorMsg = errorMsg + "项目级:以下项目名称:" + peojectNames + " 属于新兴业务项目但未开展勘察设计指导书审查 ";
@@ -144,14 +151,13 @@ public class ScoreCalculationServiceNum5 implements ScoreCalculationService {
      * @param gzdgList
      * @return
      */
-    public List<String> getEmergingProjects(List<JtFjglxm> khxmList, List<String> xmmcList, int limitSize) {
+    public List<String> getEmergingProjects(List<JtFjglxm> khxmList, List<String> xmmcList) {
 
         return khxmList
                 .stream()
-                .filter(info -> "0".equals(info.getSfxxyw()) && !xmmcList.contains(info.getXmmc()))
+                .filter(data -> "0".equals(data.getSfxxyw() ) && !xmmcList.contains(data.getXmmc()))
                 .map(JtFjglxm::getXmmc)
                 .distinct()
-                .limit(6 - limitSize)
                 .collect(Collectors.toList());
     }
 
@@ -162,11 +168,11 @@ public class ScoreCalculationServiceNum5 implements ScoreCalculationService {
      * @param authorizeDatas 已完成审定的项目数量
      * @return
      */
-    public BigDecimal calculateApprovalRate(List<JtFjglxm> khxmList, List<JtGzdg> authorizeDatas) {
+    public BigDecimal calculateApprovalRate(List<String> khxmList, List<String> authorizeDatas) {
         // 分母
         int denominator = khxmList.size();
         // 分子
-        int numerator = (int) authorizeDatas.stream().map(JtGzdg::getXmmc).distinct().count();
+        int numerator = authorizeDatas.size();
         if (denominator == 0) {
             return BigDecimal.ZERO;
         }

+ 1 - 1
jsglkh-common/src/main/resources/mybatis/sys/BusinessCommonMapper.xml

@@ -7,7 +7,7 @@
         left join jt_kcsjxm jk on js.MAINID = jk.MAINID AND js.XMMC=jk.XMMC
         <where>
             js.DELETED='0'
-            AND jk.DELETED="0"
+            AND jk.DELETED='0'
             AND js.MAINID in
             <foreach collection="mainIds" item="mainId" open="(" separator="," close=")">
                 #{mainId}