Explorar o código

报表-平均工时

guarantee-lsq hai 2 semanas
pai
achega
16316223c1

+ 19 - 19
platform-service/src/main/java/com/platform/service/repair/impl/RepairApplicationFormServiceImpl.java

@@ -1013,13 +1013,9 @@ public class RepairApplicationFormServiceImpl
     public void finish(RepairApplicationFormDTO dto) {
         RepairTimeRecord query = new RepairTimeRecord();
         query.setRepairId(dto.getId());
-        query.setCompleteFlag(Boolean.FALSE);
         List<RepairTimeRecord> recordList = repairTimeRecordMapper.select(query);
         if(CollectionUtils.isEmpty(recordList)){
-            throw new DeniedException("该维修单没有开始维修记录,无法完成维修");
-        }
-        if (recordList.size() > 1){
-            throw new DeniedException("该维修单多笔点了【开始/继续】的记录,操作异常,请联系开发人员");
+            throw new DeniedException("该维修单尚未开始维修,无法完成维修");
         }
         // 1. 将维修单的状态修改已完成
         RepairApplicationForm applicationForm = mapper.selectById(dto.getId());
@@ -1038,21 +1034,25 @@ public class RepairApplicationFormServiceImpl
         if (dto.getRepairEndTime() != null) {
             applicationForm.setRepairEndTime(dto.getRepairEndTime());
         }
-        // 补充记录
-        RepairTimeRecord record = recordList.get(0);
-        record.setUpdateTime(applicationForm.getRepairEndTime());
-        record.setCompleteFlag(Boolean.TRUE);
-        record.setUpdateUserId(SecurityUtils.getUserInfo().getUserId());
-        record.setUpdateUserName(SecurityUtils.getUserInfo().getRealName());
-        double repairHour = DateUtils.getDurationHours(record.getCreatedTime(), record.getUpdateTime());
-        record.setRepairHour(BigDecimalUtil.valueOf(repairHour));
-        record.setEndRecordFlag(Boolean.TRUE);
-        repairTimeRecordMapper.updateByPrimaryKeySelective(record);
-        // 修正实际维修时长
-        double historyRepairHour = applicationForm.getRepairMinutes() == null ? 0.0 : applicationForm.getRepairMinutes();
-        historyRepairHour = historyRepairHour + repairHour;
-        applicationForm.setRepairMinutes(historyRepairHour);
         applicationForm.setAssistantStatus(RepairAssistantStatusEnum.end.getValue());
+        query.setCompleteFlag(Boolean.FALSE);
+        recordList = repairTimeRecordMapper.select(query);
+        if (!CollectionUtils.isEmpty(recordList)){ // 用户自己点过暂停维修,记录是齐全的
+            // 补充记录
+            RepairTimeRecord record = recordList.get(0);
+            record.setUpdateTime(applicationForm.getRepairEndTime());
+            record.setCompleteFlag(Boolean.TRUE);
+            record.setUpdateUserId(SecurityUtils.getUserInfo().getUserId());
+            record.setUpdateUserName(SecurityUtils.getUserInfo().getRealName());
+            double repairHour = DateUtils.getDurationHours(record.getCreatedTime(), record.getUpdateTime());
+            record.setRepairHour(BigDecimalUtil.valueOf(repairHour));
+            record.setEndRecordFlag(Boolean.TRUE);
+            repairTimeRecordMapper.updateByPrimaryKeySelective(record);
+            // 修正实际维修时长
+            double historyRepairHour = applicationForm.getRepairMinutes() == null ? 0.0 : applicationForm.getRepairMinutes();
+            historyRepairHour = historyRepairHour + repairHour;
+            applicationForm.setRepairMinutes(historyRepairHour);
+        }
         if(applicationForm.getRepairMinutes() == null){
             // 老单据继续走之前的逻辑
             applicationForm.setRepairMinutes(