sucheng 8 月之前
父節點
當前提交
9e6571b48a

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

@@ -0,0 +1,86 @@
+package com.rongwei.bscommon.sys.strategy.scoreCalculation;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.rongwei.bscommon.sys.service.JtNdjhqdService;
+import com.rongwei.bsentity.domain.*;
+import com.rongwei.rwadmincommon.system.vo.SysUserVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.List;
+
+import static com.rongwei.bscommon.sys.utils.JXKHConstant.DefaultSource.FIVE_SOURCE;
+import static com.rongwei.bscommon.sys.utils.JXKHConstant.DefaultSource.THREE_SOURCE;
+import static com.rongwei.bscommon.sys.utils.JXKHUtils.CALCULATE_Y3;
+
+
+/**
+ * ScoreCalculationServiceNum1 class
+ *
+ * @author XH
+ * @date 2024/12/09
+ */
+@Service
+public class ScoreCalculationServiceNum23 implements ScoreCalculationService {
+    @Autowired
+    private JtNdjhqdService jtNdjhqdService;
+
+    /**
+     * ()计算规则
+     * 计划执行率=实际时间在计划完成时间内数量/计划数量
+     * 实际时间在计划完成时间内数量:年度计划列表中实际完成时间小于等于计划完成时间的计划数量。
+     * 计划数量:年度计划列表中数量。
+     * 结果取小数点后一位。
+     * ()评分规则
+     * 计划执行率≥80%,不扣分。
+     * 其他数值线性计算得分,得分取小数点后三位。
+     *
+     * @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 = "";
+
+        List<JtNdjhqd> list = jtNdjhqdService.list(new LambdaQueryWrapper<JtNdjhqd>()
+                .eq(JtNdjhqd::getDeleted, "0")
+                .in(JtNdjhqd::getMainid, jtGsjtbsj.getId()));
+        //实际时间在计划完成时间内数量:年度计划列表中实际完成时间小于等于计划完成时间的计划数量。
+        long goodCount = list.stream().filter(item -> ObjectUtil.isNotNull(item.getSjwcsj())
+                && ObjectUtil.isNotNull(item.getJhwcsj())
+                && item.getSjwcsj().compareTo(item.getJhwcsj()) <= 0).count();
+        //计划数量:年度计划列表中数量。
+        long totalCount = list.size();
+        //计划执行率=实际时间在计划完成时间内数量/计划数量 结果取小数点后一位。
+        BigDecimal planExecutionRate = new BigDecimal(goodCount).divide(new BigDecimal(totalCount), 1, RoundingMode.HALF_UP);
+        //计划执行率≥80%,不扣分。
+        //其他数值线性计算得分,得分取小数点后三位。
+        if (planExecutionRate.compareTo(new BigDecimal("0.8")) >= 0) {
+            //不扣分
+            errorMsg = "公司级:计划执行率≥80%";
+        } else {
+            //扣分
+            finalScore = finalScore.subtract(CALCULATE_Y3(BigDecimal.valueOf(0), jkAssessmentRules.getWeight(), BigDecimal.valueOf(0.8), BigDecimal.ZERO, planExecutionRate));
+            errorMsg = "公司级:计划执行率<80%";
+        }
+
+        if (finalScore.compareTo(BigDecimal.ZERO) < 0) {
+            finalScore = BigDecimal.ZERO;
+        }
+        if (finalScore.compareTo(jkAssessmentRules.getWeight()) > 0) {
+            finalScore = jkAssessmentRules.getWeight();
+        }
+        return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
+    }
+}

+ 68 - 4
jsglkh-entity/src/main/java/com/rongwei/bsentity/domain/JtNdjhqd.java

@@ -1,22 +1,20 @@
 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;
 
 /**
  * 年度计划清单
  * @TableName jt_ndjhqd
  */
-@TableName(value ="jt_ndjhqd")
+@TableName(value = "jt_ndjhqd")
 @Data
-public class JtNdjhqd extends BaseDo implements Serializable {
+public class JtNdjhqd implements Serializable {
     /**
      * 主键ID
      */
@@ -47,6 +45,54 @@ public class JtNdjhqd extends BaseDo implements Serializable {
     @TableField(value = "ROPTION")
     private String roption;
 
+    /**
+     * 是否删除Y/N
+     */
+    @TableField(value = "DELETED")
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    @TableField(value = "REMARK")
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "CREATEDATE")
+    private Date createdate;
+
+    /**
+     * 创建用户ID
+     */
+    @TableField(value = "CREATEUSERID")
+    private String createuserid;
+
+    /**
+     * 修改日期
+     */
+    @TableField(value = "MODIFYDATE")
+    private Date modifydate;
+
+    /**
+     * 修改用户ID
+     */
+    @TableField(value = "MODIFYUSERID")
+    private String modifyuserid;
+
+    /**
+     * 创建人
+     */
+    @TableField(value = "CREATEUSERNAME")
+    private String createusername;
+
+    /**
+     * 修改人
+     */
+    @TableField(value = "MODIFYUSERNAME")
+    private String modifyusername;
+
     /**
      * 计划编号
      */
@@ -83,6 +129,24 @@ public class JtNdjhqd extends BaseDo implements Serializable {
     @TableField(value = "SYNCSTATE")
     private String syncstate;
 
+    /**
+     * 年度
+     */
+    @TableField(value = "YEAR")
+    private String year;
+
+    /**
+     * 管理单位
+     */
+    @TableField(value = "GLDW")
+    private String gldw;
+
+    /**
+     * 公司考核管理ID
+     */
+    @TableField(value = "MAINID")
+    private String mainid;
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 }