소스 검색

feature 代码提交

xiahan 7 달 전
부모
커밋
037baebb7d

+ 1 - 1
jsglkh-common/src/main/java/com/rongwei/bscommon/sys/dao/PorjectCommonMapper.java

@@ -12,7 +12,7 @@ import java.util.List;
  * @date 2024/12/10
  */
 @Mapper
-public interface PorjectCommonMapper {
+public interface BusinessCommonMapper {
     // 获取时效内的项目数量信息
     List<String> withinTimeEPCProjectNames(@Param("mainIds") List<String> mainIds,
                                            @Param("projectName") List<String> projectName);

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

@@ -62,7 +62,10 @@ public class ScoreCalculationServiceNum13 implements ScoreCalculationService {
         // 扣分细则
         String errorMsg = null;
         // 获取考核项目信息 计划完成时间”在考核区间内且中标主体为二级单位以上的项目
-        List<JtFjglxm> khxmList = jtFjglxmService.list(new LambdaQueryWrapper<JtFjglxm>().eq(BaseDo::getDeleted, "0").eq(JtFjglxm::getZbztdj, "0").in(JtFjglxm::getMainid, khbmList.stream().map(JtXmkh::getId)).between(JtFjglxm::getJhwcsj, jtGsjtbsj.getAssessmentstarttime(), jtGsjtbsj.getAssessmentendtime()));
+        List<JtFjglxm> khxmList = jtFjglxmService.list(new LambdaQueryWrapper<JtFjglxm>().eq(BaseDo::getDeleted, "0")
+                .eq(JtFjglxm::getZbztdj, "0")
+                .in(JtFjglxm::getMainid, khbmList.stream().map(JtXmkh::getId))
+                .between(JtFjglxm::getJhwcsj, jtGsjtbsj.getAssessmentstarttime(), jtGsjtbsj.getAssessmentendtime()));
         if (khxmList.isEmpty()) {
             errorMsg = "公司级:分级管理-项目清单为空";
             finalScore = finalScore.subtract(THREE_SOURCE);
@@ -120,6 +123,12 @@ public class ScoreCalculationServiceNum13 implements ScoreCalculationService {
      * @return
      */
     public BigDecimal calculateApprovalRate(int denominator, int numerator) {
+        if(denominator==0){
+            return BigDecimal.ZERO;
+        }
+        if(numerator==0){
+            return BigDecimal.ZERO;
+        }
         return BigDecimal.valueOf(numerator).divide(BigDecimal.valueOf(denominator), 6, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")).setScale(3, BigDecimal.ROUND_HALF_UP);
     }
 }

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

@@ -117,6 +117,12 @@ public class ScoreCalculationServiceNum15 implements ScoreCalculationService {
      * @return
      */
     public BigDecimal calculateApprovalRate(int denominator, int numerator) {
+        if(denominator==0){
+            return BigDecimal.ZERO;
+        }
+        if(numerator==0){
+            return BigDecimal.ZERO;
+        }
         return BigDecimal.valueOf(numerator).divide(BigDecimal.valueOf(denominator), 6, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")).setScale(3, BigDecimal.ROUND_HALF_UP);
     }
 }

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

@@ -1,7 +1,7 @@
 package com.rongwei.bscommon.sys.strategy.scoreCalculation;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.rongwei.bscommon.sys.dao.PorjectCommonMapper;
+import com.rongwei.bscommon.sys.dao.BusinessCommonMapper;
 import com.rongwei.bscommon.sys.service.impl.JtFjglxmServiceImpl;
 import com.rongwei.bscommon.sys.service.impl.JtKcsjxmServiceImpl;
 import com.rongwei.bsentity.domain.*;
@@ -31,7 +31,7 @@ public class ScoreCalculationServiceNum16 implements ScoreCalculationService {
     @Autowired
     private JtKcsjxmServiceImpl jtKcsjxmService;
     @Autowired
-    private PorjectCommonMapper porjectCommonMapper;
+    private BusinessCommonMapper businessCommonMapper;
 
     /**
      * 考核范围:“计划开始时间”在考核区间内且中标主体为二级单位以上的项目
@@ -76,7 +76,7 @@ public class ScoreCalculationServiceNum16 implements ScoreCalculationService {
         List<String> denominator = list.stream().map(JtKcsjxm::getXmmc).distinct().collect(Collectors.toList());
 
         //时效内的EPC项目数量:批准时间(审查审定-审查审定率)不为空且批准时间小于等于“环节计划完成时间”(勘察设计项目工作清单)且是否涉及施工管理为是(分级管理-项目清单)的项目数量。
-        List<String> numerator = porjectCommonMapper.withinTimeEPCProjectNames(
+        List<String> numerator = businessCommonMapper.withinTimeEPCProjectNames(
                 khbmList.stream().map(JtXmkh::getId).collect(Collectors.toList()),
                 jtFjglxmList.stream().map(JtFjglxm::getXmmc).collect(Collectors.toList()));
         // 审查审定率=时效内的EPC项目数量/EPC项目数量。
@@ -112,6 +112,12 @@ public class ScoreCalculationServiceNum16 implements ScoreCalculationService {
      * @return
      */
     public BigDecimal calculateApprovalRate(int denominator, int numerator) {
+        if(denominator==0){
+            return BigDecimal.ZERO;
+        }
+        if(numerator==0){
+            return BigDecimal.ZERO;
+        }
         return BigDecimal.valueOf(numerator).divide(BigDecimal.valueOf(denominator), 6, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")).setScale(3, BigDecimal.ROUND_HALF_UP);
     }
 }

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

@@ -0,0 +1,197 @@
+package com.rongwei.bscommon.sys.strategy.scoreCalculation;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.rongwei.bscommon.sys.dao.BusinessCommonMapper;
+import com.rongwei.bscommon.sys.service.impl.JtFjglxmServiceImpl;
+import com.rongwei.bscommon.sys.service.impl.JtKcsjxmServiceImpl;
+import com.rongwei.bscommon.sys.service.impl.JtSjjdqdServiceImpl;
+import com.rongwei.bsentity.domain.*;
+import com.rongwei.rwadmincommon.system.vo.SysUserVo;
+import com.rongwei.rwcommon.base.BaseDo;
+import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+import static com.rongwei.bscommon.sys.utils.JXKHConstant.DefaultSource.TWO_SOURCE;
+import static com.rongwei.bscommon.sys.utils.JXKHUtils.CALCULATE_Y3;
+
+/**
+ * ScoreCalculationServiceNum1 class
+ * 设计交底
+ * @author XH
+ * @date 2024/12/09
+ */
+@Service
+public class ScoreCalculationServiceNum17 implements ScoreCalculationService {
+
+    @Autowired
+    private JtFjglxmServiceImpl jtFjglxmService;
+    @Autowired
+    private JtKcsjxmServiceImpl jtKcsjxmService;
+    @Autowired
+    private BusinessCommonMapper businessCommonMapper;
+    @Autowired
+    private JtSjjdqdServiceImpl jtSjjdqdService;
+
+    /**
+     * 考核范围:“计划完成时间”(分级管理-项目清单)在考核区间内且中标主体为二级单位以上的项目
+     * 覆盖率=交底项目数量/项目总数量
+     * 交底项目数量:该模块的数据量 - 计划交底时间不在考核区间内的项目数量
+     * 项目总数量:计划完成时间(分级管理-项目清单)在考核区间内的项目数量 - 计划交底时间不在考核区间内的项目数量
+     * 结果取小数点后一位。
+     * (3)评分规则
+     * 设计交底开展证明文件为空,扣2分。
+     * 覆盖率≥100%,不扣分。
+     * 覆盖率≤60%,扣2分。
+     * 其他数值线性计算得分,得分取小数点后三位。
+     *
+     * @param khbmList
+     * @param jtKhxmList
+     * @param jtGsjtbsj
+     * @param jkAssessmentRules
+     * @return
+     */
+    @Override
+    public JtYcpfhzDetail soreCalculation(JtYcpfhz jtYcpfhz, List<JtXmkh> khbmList, List<JtKhxm> jtKhxmList, JtGsjtbsj jtGsjtbsj, JkAssessmentRules jkAssessmentRules, SysUserVo currentUser) {
+        // 考核得分
+        BigDecimal finalScore = jkAssessmentRules.getWeight();
+        // 扣分细则
+        String errorMsg = null;
+        if (StringUtils.isBlank(jtGsjtbsj.getSjjdkzzm())) {
+            errorMsg = "公司级:设计交底开展证明文件为空";
+            finalScore = finalScore.subtract(TWO_SOURCE);
+            return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
+        }
+
+        // 考核范围:“计划完成时间”(分级管理-项目清单)在考核区间内且中标主体为二级单位以上的项目
+        List<JtFjglxm> jtFjglxmList = jtFjglxmService.list(new LambdaQueryWrapper<JtFjglxm>().eq(BaseDo::getDeleted, "0")
+                .eq(JtFjglxm::getZbztdj, "0")
+                .between(JtFjglxm::getJhkssj, jtGsjtbsj.getAssessmentstarttime(),
+                        jtGsjtbsj.getAssessmentendtime())
+                .in(JtFjglxm::getMainid, khbmList.stream().map(JtXmkh::getId)));
+        if (jtFjglxmList.isEmpty()) {
+            errorMsg = "项目级:无法获取到分级管理项目清单";
+            finalScore = finalScore.subtract(TWO_SOURCE);
+            return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
+        }
+        // 设计交底清单数据
+        List<JtSjjdqd> jtSjjdqdList = jtSjjdqdService.list(new LambdaQueryWrapper<JtSjjdqd>()
+                .eq(BaseDo::getDeleted, "0")
+                .in(JtSjjdqd::getMainid, khbmList.stream().map(JtXmkh::getId)));
+        if (jtSjjdqdList.isEmpty()) {
+            errorMsg = "项目级:无法获取到设计交底清单";
+            finalScore = finalScore.subtract(TWO_SOURCE);
+            return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
+        }
+        // 分子 EPC项目数量:交底项目数量:该模块的数据量 - 计划交底时间不在考核区间内的项目数量
+        int numerator = calculateNumerator(jtSjjdqdList, jtGsjtbsj);
+        // 分母 项目总数量:计划完成时间(分级管理-项目清单)在考核区间内的项目数量 - 计划交底时间不在考核区间内的项目数量
+        int denominator = calculateDenominator(jtFjglxmList, jtSjjdqdList, jtGsjtbsj);
+        // 覆盖率=交底项目数量/项目总数量
+        BigDecimal rate = calculateApprovalRate(denominator, numerator);
+        return calculateFinalSource(finalScore, rate, jtYcpfhz, jkAssessmentRules, currentUser);
+
+    }
+
+    /**
+     * 计算最终得分
+     * 覆盖率≥100%,不扣分。
+     * 覆盖率≤60%,扣2分。
+     * 其他数值线性计算得分,得分取小数点后三位。
+     * @param rete
+     */
+    public JtYcpfhzDetail calculateFinalSource(BigDecimal finalScore, BigDecimal rate, JtYcpfhz jtYcpfhz, JkAssessmentRules jkAssessmentRules,
+                                               SysUserVo currentUser) {
+        String errorMsg = "审查审定率为:" + rate.toString() + "%";
+        if (rate.compareTo(BigDecimal.valueOf(100)) >= 0) {
+            // 不扣分
+        } else if (rate.compareTo(BigDecimal.valueOf(60)) <= 0) {
+            finalScore = BigDecimal.ZERO.subtract(TWO_SOURCE);
+        } else {
+            finalScore = finalScore.subtract(CALCULATE_Y3(BigDecimal.valueOf(100), BigDecimal.valueOf(2), BigDecimal.valueOf(60), BigDecimal.ZERO, rate));
+        }
+        return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
+    }
+
+    /**
+     * 计算审查审定率
+     * @param denominator
+     * @param numerator
+     * @return
+     */
+    public BigDecimal calculateApprovalRate(int denominator, int numerator) {
+        if (denominator == 0) {
+            return BigDecimal.ZERO;
+        }
+        if (numerator == 0) {
+            return BigDecimal.ZERO;
+        }
+        return BigDecimal.valueOf(numerator).divide(BigDecimal.valueOf(denominator), 6, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")).setScale(3, BigDecimal.ROUND_HALF_UP);
+    }
+
+    /**
+     * 计算分子
+     * 交底项目数量:该模块的数据量 - 计划交底时间不在考核区间内的项目数量
+     */
+    public int calculateNumerator(List<JtSjjdqd> jtSjjdqdList, JtGsjtbsj jtGsjtbsj) {
+        //该模块的数据量
+        long allNameCount = jtSjjdqdList.stream().map(JtSjjdqd::getXmmc).distinct().count();
+        long count = jtSjjdqdList.stream().filter(data -> data.getJhjdsj() != null &&
+                        compareDatesIgnoringTime(jtGsjtbsj.getAssessmentstarttime(), jtGsjtbsj.getAssessmentendtime(), data.getJhjdsj())).map(JtSjjdqd::getXmmc)
+                .distinct()
+                .count();
+        return (int) (allNameCount - count);
+    }
+
+    /**
+     * 计算分母
+     * 计划完成时间(分级管理-项目清单)在考核区间内的项目数量 - 计划交底时间不在考核区间内的项目数量
+     * @return
+     */
+    public int calculateDenominator(List<JtFjglxm> jtFjglxmList, List<JtSjjdqd> jtSjjdqdList, JtGsjtbsj jtGsjtbsj) {
+        long count = jtFjglxmList.stream().map(JtFjglxm::getXmmc).distinct().count();
+        long count1 = jtSjjdqdList.stream().filter(data -> data.getJhjdsj() != null &&
+                        !compareDatesIgnoringTime(jtGsjtbsj.getAssessmentstarttime(), jtGsjtbsj.getAssessmentendtime(), data.getJhjdsj())).map(JtSjjdqd::getXmmc)
+                .distinct()
+                .count();
+        return (int) (count - count1);
+    }
+
+    /**
+     * 比较日期
+     * @param date1
+     * @param date2
+     * @param dat3
+     * @return
+     */
+    public boolean compareDatesIgnoringTime(Date date1, Date date2, Date dat3) {
+        Calendar cal1 = Calendar.getInstance();
+        Calendar cal2 = Calendar.getInstance();
+        Calendar cal3 = Calendar.getInstance();
+        cal1.setTime(date1);
+        cal2.setTime(date2);
+        cal3.setTime(dat3);
+
+        cal1.set(Calendar.HOUR_OF_DAY, 0);
+        cal1.set(Calendar.MINUTE, 0);
+        cal1.set(Calendar.SECOND, 0);
+        cal1.set(Calendar.MILLISECOND, 0);
+
+        cal2.set(Calendar.HOUR_OF_DAY, 0);
+        cal2.set(Calendar.MINUTE, 0);
+        cal2.set(Calendar.SECOND, 0);
+        cal2.set(Calendar.MILLISECOND, 0);
+
+        cal3.set(Calendar.HOUR_OF_DAY, 0);
+        cal3.set(Calendar.MINUTE, 0);
+        cal3.set(Calendar.SECOND, 0);
+        cal3.set(Calendar.MILLISECOND, 0);
+
+        return cal3.compareTo(cal2) <= 0 && cal3.compareTo(cal1) >= 0;
+    }
+}

+ 94 - 0
jsglkh-common/src/main/java/com/rongwei/bscommon/sys/strategy/scoreCalculation/ScoreCalculationServiceNum18.java

@@ -0,0 +1,94 @@
+package com.rongwei.bscommon.sys.strategy.scoreCalculation;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.rongwei.bscommon.sys.service.impl.JtFjglxmServiceImpl;
+import com.rongwei.bscommon.sys.service.impl.JtSjbgqdServiceImpl;
+import com.rongwei.bsentity.domain.*;
+import com.rongwei.rwadmincommon.system.vo.SysUserVo;
+import com.rongwei.rwcommon.base.BaseDo;
+import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static com.rongwei.bscommon.sys.utils.JXKHConstant.DefaultSource.FOUR_SOURCE;
+import static com.rongwei.bscommon.sys.utils.JXKHConstant.DefaultSource.ZERO_POINT_FIVE_SOURCE;
+
+/**
+ * ScoreCalculationServiceNum1 class
+ *  设计变更
+ * @author XH
+ * @date 2024/12/09
+ */
+@Service
+public class ScoreCalculationServiceNum18 implements ScoreCalculationService {
+    @Autowired
+    private JtSjbgqdServiceImpl jtSjbgqdService;
+    @Autowired
+    private JtFjglxmServiceImpl jtFjglxmService;
+
+    /**
+     * 变更制度为空,扣4分。
+     * 项目存在变更记录且变更提出人、变更提出时间不为空,变更负责人、变更批准时间为空扣1分/项。
+     * 若“是否属于新兴业务项目”=是(分级管理-项目清单),首件工程实施和总结为空,扣0.5分/项。
+     *
+     * @param khbmList
+     * @param jtKhxmList
+     * @param jtGsjtbsj
+     * @param jkAssessmentRules
+     * @return
+     */
+    @Override
+    public JtYcpfhzDetail soreCalculation(JtYcpfhz jtYcpfhz, List<JtXmkh> khbmList, List<JtKhxm> jtKhxmList, JtGsjtbsj jtGsjtbsj, JkAssessmentRules jkAssessmentRules, SysUserVo currentUser) {
+        // 考核得分
+        BigDecimal finalScore = jkAssessmentRules.getWeight();
+        // 扣分细则
+        String errorMsg = null;
+        if (StringUtils.isBlank(jtGsjtbsj.getBgglzd())) {
+            errorMsg = "公司级:变更管理制度为空";
+            finalScore = finalScore.subtract(FOUR_SOURCE);
+            return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
+        }
+        List<JtSjbgqd> jtSjbgqdList = jtSjbgqdService.list(new LambdaQueryWrapper<JtSjbgqd>()
+                .eq(BaseDo::getDeleted, "0")
+                .in(JtSjbgqd::getMainid, khbmList.stream().map(JtXmkh::getId)));
+        List<String> projectName = jtSjbgqdList.stream().filter(data -> (StringUtils.isNotBlank(data.getBgtcr()) && data.getBgtcsj() != null) &&
+                        (StringUtils.isNotBlank(data.getBgfzr()) || data.getBgpzsj() == null))
+                .map(JtSjbgqd::getXmmc).distinct().collect(Collectors.toList());
+        if (!projectName.isEmpty()) {
+            errorMsg = "项目级:以下项目名称" + String.join(",", projectName) + "变更提出人、变更提出时间不为空,但变更负责人、变更批准时间为空";
+            finalScore = finalScore.subtract(BigDecimal.valueOf(projectName.size()));
+            if (finalScore.compareTo(BigDecimal.ZERO) <= 0) {
+                finalScore = BigDecimal.ZERO;
+                return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
+            }
+        }
+        // 分级管理项目清单
+        List<JtFjglxm> fjglxmList = jtFjglxmService.list(new LambdaQueryWrapper<JtFjglxm>()
+                .eq(BaseDo::getDeleted, "0")
+                .eq(JtFjglxm::getSfxxyw, "0")
+                .in(JtFjglxm::getMainid, khbmList.stream().map(JtXmkh::getId)));
+        List<String> collect = jtSjbgqdList.stream().filter(data -> StringUtils.isNotBlank(data.getSjgcsshzj())).map(JtSjbgqd::getXmmc).collect(Collectors.toList());
+        if (collect.isEmpty()) {
+            errorMsg = errorMsg + "项目级:暂无首件工程实施和总结为空的项目";
+            return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
+        }
+        if (fjglxmList.isEmpty()) {
+            errorMsg = errorMsg + "项目级: 暂无是新兴业务的项目";
+            return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
+        }
+        List<String> collect1 = fjglxmList.stream().filter(data -> collect.contains(data.getXmmc())).map(JtFjglxm::getXmmc).distinct().collect(Collectors.toList());
+        if (!collect1.isEmpty()) {
+            errorMsg = errorMsg + "项目级: 以下项目 " + String.join(",", collect1) + "是新兴项目但首件工程实施和总结为空";
+            finalScore = finalScore.subtract(ZERO_POINT_FIVE_SOURCE.multiply(BigDecimal.valueOf(collect1.size())));
+            if (finalScore.compareTo(BigDecimal.ZERO) <= 0) {
+                finalScore = BigDecimal.ZERO;
+            }
+        }
+        return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
+    }
+
+}

+ 72 - 0
jsglkh-common/src/main/java/com/rongwei/bscommon/sys/strategy/scoreCalculation/ScoreCalculationServiceNum19.java

@@ -0,0 +1,72 @@
+package com.rongwei.bscommon.sys.strategy.scoreCalculation;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.rongwei.bscommon.sys.service.impl.JtZbrygwjzrfgqdServiceImpl;
+import com.rongwei.bsentity.domain.*;
+import com.rongwei.rwadmincommon.system.vo.SysUserVo;
+import com.rongwei.rwcommon.base.BaseDo;
+import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static com.rongwei.bscommon.sys.utils.JXKHConstant.DefaultSource.TWO_SOURCE;
+import static com.rongwei.bscommon.sys.utils.JXKHConstant.DefaultSource.ZERO_POINT_FIVE_SOURCE;
+
+/**
+ * ScoreCalculationServiceNum1 class
+ *总部人员岗位及责任分工
+ * @author XH
+ * @date 2024/12/09
+ */
+@Service
+public class ScoreCalculationServiceNum19 implements ScoreCalculationService {
+
+
+    @Autowired
+    private JtZbrygwjzrfgqdServiceImpl jtZbrygwjzrfgqdService;
+
+
+    /**
+     * 该模块没有数据扣2分。
+     * 管理人员岗位职责缺项扣0.5分/项。
+     *
+     * @param khbmList
+     * @param jtKhxmList
+     * @param jtGsjtbsj
+     * @param jkAssessmentRules
+     * @return
+     */
+    @Override
+    public JtYcpfhzDetail soreCalculation(JtYcpfhz jtYcpfhz, List<JtXmkh> khbmList, List<JtKhxm> jtKhxmList, JtGsjtbsj jtGsjtbsj, JkAssessmentRules jkAssessmentRules, SysUserVo currentUser) {
+        // 考核得分
+        BigDecimal finalScore = jkAssessmentRules.getWeight();
+        // 扣分细则
+        String errorMsg = null;
+        List<JtZbrygwjzrfgqd> list = jtZbrygwjzrfgqdService.list(new LambdaQueryWrapper<JtZbrygwjzrfgqd>()
+                .eq(BaseDo::getDeleted, "0")
+                .eq(JtZbrygwjzrfgqd::getMainid, jtGsjtbsj.getId()));
+        if (list.isEmpty()) {
+            finalScore = finalScore.subtract(TWO_SOURCE);
+            errorMsg = "公司级:总部人员岗位及责任分工为空";
+            return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
+        }
+        List<String> collect = list.stream().filter(info -> StringUtils.isBlank(info.getGlrygwzz())).map(JtZbrygwjzrfgqd::getGlryxm).collect(Collectors.toList());
+        if (collect.isEmpty()) {
+            errorMsg = "公司级:暂无人员缺失管理人员岗位职责";
+        } else {
+            errorMsg = "公司级:以下管理人员" + String.join(",", collect) + "岗位职责为空";
+            if (collect.size() >= 4) {
+                finalScore = BigDecimal.ZERO;
+            } else {
+                finalScore = finalScore.subtract(ZERO_POINT_FIVE_SOURCE.multiply(BigDecimal.valueOf(collect.size())));
+            }
+        }
+        return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
+    }
+
+
+}

+ 55 - 0
jsglkh-common/src/main/java/com/rongwei/bscommon/sys/strategy/scoreCalculation/ScoreCalculationServiceNum20.java

@@ -0,0 +1,55 @@
+package com.rongwei.bscommon.sys.strategy.scoreCalculation;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.rongwei.bscommon.sys.service.impl.JtZbrygwjzrfgqdServiceImpl;
+import com.rongwei.bsentity.domain.*;
+import com.rongwei.rwadmincommon.system.vo.SysUserVo;
+import com.rongwei.rwcommon.base.BaseDo;
+import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static com.rongwei.bscommon.sys.utils.JXKHConstant.DefaultSource.TWO_SOURCE;
+import static com.rongwei.bscommon.sys.utils.JXKHConstant.DefaultSource.ZERO_POINT_FIVE_SOURCE;
+
+/**
+ * ScoreCalculationServiceNum1 class
+ * 培训计划
+ * @author XH
+ * @date 2024/12/09
+ */
+@Service
+public class ScoreCalculationServiceNum20 implements ScoreCalculationService {
+
+
+    @Autowired
+    private JtZbrygwjzrfgqdServiceImpl jtZbrygwjzrfgqdService;
+
+
+    /**
+     * 按实施方案要求组织开展了技术方案标准化实施行动得1分;开展了国际标准制修订能力提升行动方案得1分。
+     * 未按文件要求组织申报标准立项申报或结题总结、优秀技术成果和集团工法申报,每项扣0.5分,包括迟报漏报等
+     * 集团组织开展的优秀总工程师培训班、优秀工程部长培训班等培训汇总获优秀个人的得0.5分/人,最高得1分。
+     *
+     * @param khbmList
+     * @param jtKhxmList
+     * @param jtGsjtbsj
+     * @param jkAssessmentRules
+     * @return
+     */
+    @Override
+    public JtYcpfhzDetail soreCalculation(JtYcpfhz jtYcpfhz, List<JtXmkh> khbmList, List<JtKhxm> jtKhxmList, JtGsjtbsj jtGsjtbsj, JkAssessmentRules jkAssessmentRules, SysUserVo currentUser) {
+        // 考核得分
+        BigDecimal finalScore = jkAssessmentRules.getWeight();
+        // 扣分细则
+        String errorMsg = null;
+
+        return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
+    }
+
+
+}

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

@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.rongwei.bscommon.sys.dao.PorjectCommonMapper">
+<mapper namespace="com.rongwei.bscommon.sys.dao.BusinessCommonMapper">
     <select id="withinTimeEPCProjectNames" resultType="java.lang.String">
         select distinct js.XMMC
         from jt_scsdl js

+ 28 - 28
jsglkh-entity/src/main/java/com/rongwei/bsentity/domain/JtZbrygwjzrfgqd.java

@@ -1,77 +1,77 @@
 package com.rongwei.bsentity.domain;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
-
 import com.rongwei.rwcommon.base.BaseDo;
 import lombok.Data;
 
+import java.io.Serializable;
+
 /**
  * 总部人员岗位及责任分工清单
  * @TableName jt_zbrygwjzrfgqd
  */
-@TableName(value ="jt_zbrygwjzrfgqd")
+@TableName(value = "jt_zbrygwjzrfgqd")
 @Data
 public class JtZbrygwjzrfgqd extends BaseDo implements Serializable {
+    private static final long serialVersionUID = 1L;
     /**
      * 主键ID
      */
-    @TableId(value = "ID")
     private String id;
-
     /**
      * 数据编码
      */
-    @TableField(value = "DATAID")
     private String dataid;
-
     /**
      * 数据主键
      */
-    @TableField(value = "INDEXID")
     private String indexid;
-
     /**
      * 管理人员姓名
      */
-    @TableField(value = "GLRYXM")
     private String glryxm;
-
     /**
      * 管理人员岗位职责
      */
-    @TableField(value = "GLRYGWZZ")
     private String glrygwzz;
-
     /**
      * 租户id
      */
-    @TableField(value = "TENANTID")
     private String tenantid;
-
     /**
      * 扩展json格式配置
      */
-    @TableField(value = "ROPTION")
     private String roption;
-
     /**
      * 技术管理阶段
      */
-    @TableField(value = "JSGLJD")
     private String jsgljd;
-
-
     /**
      * 同步状态
      */
-    @TableField(value = "SYNCSTATE")
     private String syncstate;
-
-    @TableField(exist = false)
-    private static final long serialVersionUID = 1L;
+    /**
+     * 管理人员ID
+     */
+    private String glryid;
+    /**
+     * 所属部门
+     */
+    private String ssbm;
+    /**
+     * 所属部门ID
+     */
+    private String ssbmid;
+    /**
+     * 公司考核管理ID
+     */
+    private String mainid;
+    /**
+     * 年份
+     */
+    private String year;
 }
+
+
+
+