|
@@ -0,0 +1,102 @@
|
|
|
+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.JtFjglxmService;
|
|
|
+import com.rongwei.bscommon.sys.service.JtYxwjfbqdService;
|
|
|
+import com.rongwei.bsentity.domain.*;
|
|
|
+import com.rongwei.rwadmincommon.system.vo.SysUserVo;
|
|
|
+import com.rongwei.rwcommon.base.BaseDo;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.LinkedList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+import static com.rongwei.bscommon.sys.utils.JXKHConstant.DefaultSource.*;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * ScoreCalculationServiceNum1 class
|
|
|
+ *
|
|
|
+ * @author XH
|
|
|
+ * @date 2024/12/09
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class ScoreCalculationServiceNum33 implements ScoreCalculationService {
|
|
|
+ @Autowired
|
|
|
+ private JtFjglxmService jtFjglxmService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 成果资料归档分级分类管理制度附件为空扣3分。
|
|
|
+ * 发布证明为空扣2分。
|
|
|
+ * 成果资料计划归档日期(分级管理-项目清单)为空扣2分。
|
|
|
+ * 考核成果资料计划归档日期在考核区间内的项目,所有成果资料实际归档日期(分级管理-项目清单)不为空且小于等于计划归档日期不扣分;
|
|
|
+ * 成果资料实际归档日期(分级管理-项目清单)为空或大于成果资料计划归档日期,扣0.5分/项(上面指标扣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 = "";
|
|
|
+ //成果资料归档分级分类管理制度附件为空扣3分。
|
|
|
+ if (ObjectUtil.isEmpty(jtGsjtbsj.getJszlgdfjflglzd())) {
|
|
|
+ finalScore = finalScore.subtract(THREE_SOURCE);
|
|
|
+ errorMsg = errorMsg + "公司级:成果资料归档分级分类管理制度附件为空。";
|
|
|
+ return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
|
|
|
+ }
|
|
|
+ //发布证明为空扣2分。
|
|
|
+ if (ObjectUtil.isEmpty(jtGsjtbsj.getJszlgdfjflglzdfbzm())) {
|
|
|
+ finalScore = finalScore.subtract(TWO_SOURCE);
|
|
|
+ errorMsg = errorMsg + "公司级:发布证明为空。";
|
|
|
+ }
|
|
|
+ // 成果资料计划归档日期(分级管理-项目清单)为空扣2分。
|
|
|
+ // 获取考核项目信息
|
|
|
+ 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::getJhkssj, jtGsjtbsj.getAssessmentstarttime(), jtGsjtbsj.getAssessmentendtime()));
|
|
|
+ if (khxmList.isEmpty()) {
|
|
|
+ finalScore = finalScore.subtract(TWO_SOURCE);
|
|
|
+ errorMsg = errorMsg + "项目级:没有(分级管理-项目清单)数据。";
|
|
|
+ return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
|
|
|
+ }
|
|
|
+ List<String> xmmcList = new LinkedList<>();
|
|
|
+ for (JtFjglxm jtFjglxm : khxmList) {
|
|
|
+ //成果资料计划归档日期(分级管理-项目清单)为空扣2分。
|
|
|
+ if (ObjectUtil.isEmpty(jtFjglxm.getCgzljhgdsj())) {
|
|
|
+ finalScore = finalScore.subtract(TWO_SOURCE);
|
|
|
+ errorMsg = errorMsg + "项目级:" + jtFjglxm.getXmmc() + "的成果资料计划归档日期(分级管理-项目清单)为空。";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ //考核成果资料计划归档日期在考核区间内的项目,所有成果资料实际归档日期(分级管理-项目清单)不为空且小于等于计划归档日期不扣分;
|
|
|
+ //成果资料实际归档日期(分级管理-项目清单)为空或大于成果资料计划归档日期,扣0.5分/项(上面指标扣2分之后,这条指标就不计算了)。
|
|
|
+ if (ObjectUtil.isEmpty(jtFjglxm.getCgzlsjgdsj()) || jtFjglxm.getCgzlsjgdsj().compareTo(jtFjglxm.getCgzljhgdsj()) > 0) {
|
|
|
+ //同一项目名称防止重复扣分
|
|
|
+ if(xmmcList.contains(jtFjglxm.getXmmc())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ xmmcList.add(jtFjglxm.getXmmc());
|
|
|
+
|
|
|
+ finalScore = finalScore.subtract(ZERO_POINT_FIVE_SOURCE);
|
|
|
+ errorMsg = errorMsg + "项目级:" + jtFjglxm.getXmmc() + "的成果资料实际归档日期(分级管理-项目清单)为空或大于成果资料计划归档日期。";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (finalScore.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
+ finalScore = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+ return assemblyYcpfhzDetail(jtYcpfhz, jkAssessmentRules, finalScore, errorMsg, currentUser);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|