فهرست منبع

fix 持续时间超过模板长度的问题

lqc 4 سال پیش
والد
کامیت
9d0a34e0d0
1فایلهای تغییر یافته به همراه20 افزوده شده و 1 حذف شده
  1. 20 1
      src/main/java/com/mokamrp/privates/controller/pangu/FosterwxMobileController.java

+ 20 - 1
src/main/java/com/mokamrp/privates/controller/pangu/FosterwxMobileController.java

@@ -24,6 +24,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -65,6 +66,9 @@ public class FosterwxMobileController extends BaseController<FosterwxMobile> {
     @Autowired
     private FosterwxTaskTemplateService fosterwxTaskTemplateService;
 
+    @Autowired
+    private FosterwxTaskListService fosterwxTaskListService;
+
     /*
      * @fast
      * 默认生成的控制器所继承的父类中有index/add/edit/del四个基础方法,均为post json请求
@@ -161,6 +165,7 @@ public class FosterwxMobileController extends BaseController<FosterwxMobile> {
     }
 
     @PostMapping("/editPro")
+    @Transactional(rollbackFor = Exception.class)
     public Object editPro(@Valid @RequestBody EditHandle<FosterwxMobile> editHandle, @AuthUser User authUser) {
         String[] ids = editHandle.getIds().split(",");
         for (String id : ids) {
@@ -199,6 +204,18 @@ public class FosterwxMobileController extends BaseController<FosterwxMobile> {
             // 批量操作的时候传过来的件数不能跟数据库件数比较 因此独立判断
             if (editHandle.getRaw().getTaskTimeLists().size() > oldTimeList.size() || (editHandle.getRaw().getType() != null && editHandle.getRaw().getTaskTimeLists().size() == 2)) {
                 if (null != fosterwxMobileTaskTimeList.getTaskStartAt()) {
+                    if (null != fosterwxMobileTaskTimeList.getTaskEndAt()) {
+                        LocalDate startDate = fosterwxMobileTaskTimeList.getTaskStartAt().toLocalDate();
+                        LocalDate endDate = fosterwxMobileTaskTimeList.getTaskEndAt().toLocalDate();
+
+                        long dayLong = endDate.toEpochDay() - startDate.toEpochDay() + 1;
+
+                        LambdaQueryWrapper<FosterwxTaskList> fosterTaskListLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                        fosterTaskListLambdaQueryWrapper.eq(FosterwxTaskList::getTemplateId, fosterwxMobileTaskTimeList.getTemplateId());
+                        if (dayLong > fosterwxTaskListService.count(fosterTaskListLambdaQueryWrapper))
+                            return AjaxResult.error(fosterwxMobile.getMobileUnioCode() + "设置的持续时间超过模板的长度");
+                    }
+
                     fosterwxMobileTaskTimeListService.insertByMobile(fosterwxMobile, fosterwxMobileTaskTimeList);
                     ajaxResult = fosterwxTaskScheduleService.insertByTaskDate(fosterwxMobile, fosterwxMobileTaskTimeList, authUser, false);
                 }
@@ -209,7 +226,9 @@ public class FosterwxMobileController extends BaseController<FosterwxMobile> {
                         ajaxResult = fosterwxTaskScheduleService.insertByTaskDate(fosterwxMobile, fosterwxMobileTaskTimeList, authUser, false);
                     }
                 } else if (null != fosterwxMobileTaskTimeList.getTaskEndAt() && oldTimeList.get(oldTimeList.size() - 1).getTaskEndAt() == null) {
-                    fosterwxMobileTaskTimeListService.update(fosterwxMobileTaskTimeList, new LambdaQueryWrapper<FosterwxMobileTaskTimeList>().eq(FosterwxMobileTaskTimeList::getMobileUnioCode, fosterwxMobile.getMobileUnioCode()));
+                    fosterwxMobileTaskTimeListService.update(new FosterwxMobileTaskTimeList() {{
+                        setTaskEndAt(fosterwxMobileTaskTimeList.getTaskEndAt());
+                    }}, new LambdaQueryWrapper<FosterwxMobileTaskTimeList>().eq(FosterwxMobileTaskTimeList::getMobileUnioCode, fosterwxMobile.getMobileUnioCode()));
                     // 删除后面的任务
                     fosterwxTaskScheduleService.remove(new LambdaQueryWrapper<FosterwxTaskSchedule>().eq(FosterwxTaskSchedule::getStationId, oldVO.getStationId()).eq(FosterwxTaskSchedule::getMobileCode, oldVO.getMobileCode()).gt(FosterwxTaskSchedule::getSendDate, fosterwxMobileTaskTimeList.getTaskEndAt()));
                 }