Przeglądaj źródła

修复绩效bug

lihui007 3 lat temu
rodzic
commit
4805809a80

+ 3 - 0
common/src/main/java/com/huaxu/util/DatesUtil.java

@@ -596,6 +596,9 @@ public class DatesUtil {
 	}
 
 	public static Date addMinuteOfDate(Date date,int i){
+		if (date == null) {
+			return null;
+		}
 		Calendar c = Calendar.getInstance();
 		c.setTime(date);
 		c.add(Calendar.MINUTE, i);

+ 10 - 5
operation_manager/src/main/java/com/huaxu/evaluation/job/EvaluationResultJob.java

@@ -86,12 +86,13 @@ public class EvaluationResultJob {
 
 
     /***
-     * @Scheduled(cron = "0/5 * * * * ?")
+     *  @Scheduled(cron = "0/5 * * * * ?")
      *  异步启动定时任务
      * @Author lihui
      * @Date 18:26 2021/5/17
      * @return void
      **/
+
     @Async
     public void run(){
         if (lock){
@@ -204,7 +205,8 @@ public class EvaluationResultJob {
         // 保存考评结果任务详情
         evaluationResultTaskMapper.insertEvaluationResultTask(taskDetailsVo);
         BigDecimal completeCount   = new BigDecimal(taskDetailsVo.getCompleteCount()) ;
-        BigDecimal completionRate  = taskDetailsVo.getCompletionRate();
+        // 按时完成率
+        BigDecimal completionRate  = EvaluationUtil.divide(taskDetailsVo.getCompleteCount() - taskDetailsVo.getDelayCompleteCount(), taskDetailsVo.getTotalCount());
         BigDecimal evaluationValue = null;
         for (EvaluationItemVo item : itemEntityList) {
             // 不是当前季度的,过滤
@@ -248,9 +250,8 @@ public class EvaluationResultJob {
                 taskEntity.setTotalCount(taskEntity.getTotalCount() + 1);
                 taskEntity.setCompleteCount(taskEntity.getCompleteCount() + (completedBoolean ? 1 : 0));
                 taskEntity.setNoCompleteCount(taskEntity.getNoCompleteCount() + (!completedBoolean ? 1 : 0));
-                int addMinute = valueCondition == null ? EvaluationUtil.minute(dto.getDateLimit()) : valueCondition.intValue();
                 // 计算完成的是否属于延期完成
-                if (completedBoolean && isDelay(dto, addMinute)) {
+                if (completedBoolean && isDelay(dto, EvaluationUtil.minute(dto.getDateLimit())  + valueCondition.intValue())) {
                     taskEntity.setDelayCompleteCount(taskEntity.getDelayCompleteCount() + 1);
                 }
             }
@@ -282,9 +283,13 @@ public class EvaluationResultJob {
      * @return boolean
      **/
     private boolean isDelay(WorkOrderManageDto dto, int addMinute){
+        // 工单时间
         Date planFinishDate = dto.getSendTime();
-        // 判断是不是任务
+        // 任务时间
         if (!EvaluationUtil.isWork(dto.getOrderTypeId())) {
+            if (dto.getPlanFinishDate() == null) {
+                return false;
+            }
             planFinishDate = DatesUtil.parseDate(DatesUtil.formatDate(dto.getPlanFinishDate(), "yyyy-MM-dd") + " 23:59:59",
                     "yyyy-MM-dd HH:mm:ss");
         }

+ 8 - 4
operation_manager/src/main/java/com/huaxu/evaluation/service/impl/EvaluationResultServiceImpl.java

@@ -272,16 +272,20 @@ public class EvaluationResultServiceImpl implements EvaluationResultService {
         if (month == null){
             throw new ServiceException(EvaluationResultStatus.PARAM_ERROR.getStatus(), EvaluationResultStatus.PARAM_ERROR.getMessage());
         }
-        if (month == 1) {
+        if (month == 3) {
             return Arrays.asList(1,2,3);
-        } else if (month == 2 ){
+        } else if (month == 6 ){
             return Arrays.asList(4,5,6);
-        } else if (month == 3) {
+        } else if (month == 9) {
             return Arrays.asList(7,8,9);
-        } else if (month == 4) {
+        } else if (month == 12) {
             return Arrays.asList(10,11,12);
         } else {
             throw new ServiceException(EvaluationResultStatus.PARAM_ERROR.getStatus(), EvaluationResultStatus.PARAM_ERROR.getMessage());
         }
     }
+
+    public static void main(String[] args) {
+        System.out.println(new BigDecimal(1).divide( new BigDecimal(1),4, BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal("100")).setScale(2, BigDecimal.ROUND_HALF_DOWN));
+    }
 }

+ 4 - 2
operation_manager/src/main/java/com/huaxu/order/controller/WorkOrderManageController.java

@@ -1064,8 +1064,10 @@ public class WorkOrderManageController {
             if (EvaluationUtil.isWork(workOrderManageDto.getOrderTypeId())) {
                 planFinishDate = DatesUtil.addMinuteOfDate(workOrderManageDto.getSendTime(), EvaluationUtil.minute(workOrderManageDto.getDateLimit()));
             } else {
-                planFinishDate = DatesUtil.parseDate(DatesUtil.formatDate(workOrderManageDto.getPlanFinishDate(), "yyyy-MM-dd") + " 23:59:59",
-                        "yyyy-MM-dd HH:mm:ss");
+                if (workOrderManageDto.getPlanFinishDate() != null) {
+                    planFinishDate = DatesUtil.parseDate(DatesUtil.formatDate(workOrderManageDto.getPlanFinishDate(), "yyyy-MM-dd") + " 23:59:59",
+                            "yyyy-MM-dd HH:mm:ss");
+                }
             }
             workOrderManageDto.setPlanFinishDate(planFinishDate);
             workOrderManageDto.setOrderStatusName(EvaluationUtil.getOrderStatusName(workOrderManageDto.getOrderStatus()));