wlzboy
2025-12-26 4fdde57a837b47b0a04aa17a7627c21b7425eda2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysTaskController.java
@@ -1,10 +1,14 @@
package com.ruoyi.web.controller.task;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.domain.SysTaskEmergency;
import com.ruoyi.system.service.*;
import org.springframework.beans.factory.annotation.Qualifier;
@@ -193,6 +197,30 @@
    public AjaxResult appAdd(@RequestBody TaskCreateVO createVO) {
        return toAjax(sysTaskService.insertSysTask(createVO));
    }
    /**
     * 检查任务是否重复(根据联系人电话和创建日期)
     * @param phone 联系人电话
     * @param createDate 任务创建日期(格式:YYYY-MM-DD)
     * @return 是否存在重复任务
     */
    @GetMapping("/checkDuplicate")
    public AjaxResult checkDuplicate(
            @RequestParam("phone") String phone,
            @RequestParam("createDate") String createDate) {
        if (StringUtils.isEmpty(phone) || StringUtils.isEmpty(createDate)) {
            return AjaxResult.error("参数不能为空");
        }
        boolean isDuplicate = sysTaskService.checkTaskDuplicate(phone, createDate);
        if (isDuplicate) {
            return AjaxResult.error("该联系电话在该日期已有任务,不能重复提交");
        }
        return AjaxResult.success("未发现重复任务");
    }
    /**
     * 修改任务(后台管理端)
@@ -280,6 +308,23 @@
        // 如果是取消状态,保存取消原因
        if (newStatus == TaskStatus.CANCELLED && StringUtils.isNotEmpty(request.getCancelReason())) {
            sysTaskService.saveCancelInfo(taskId, request.getCancelReason());
        }
        // 如果是强制完成,更新实际开始时间和结束时间
        if (newStatus == TaskStatus.COMPLETED && request.getActualStartTime() != null && request.getActualEndTime() != null) {
            SysTask task = new SysTask();
            task.setTaskId(taskId);
            task.setTaskStatus(newStatus.getCode());
            //将String转成Date
            task.setActualStartTime(DateUtils.parseDate(request.getActualStartTime()));
            task.setActualEndTime(DateUtils.parseDate(request.getActualEndTime()));
            task.setRemark(request.getRemark());
            task.setUpdateBy(SecurityUtils.getUsername());
            task.setUpdateTime(DateUtils.getNowDate());
            int result = sysTaskService.forceCompleteTask(task);
            return toAjax(result);
        }
        
        // 如果包含GPS位置信息,使用带位置的方法
@@ -438,6 +483,12 @@
        
        // 取消相关字段
        private String cancelReason;  // 取消原因(关联数据字典task_cancel_reason)
        // 强制完成相关字段
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
        private String actualStartTime;  // 实际开始时间
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
        private String actualEndTime;    // 实际结束时间
        public String getTaskStatus() {
            return taskStatus;
@@ -542,5 +593,21 @@
        public void setCancelReason(String cancelReason) {
            this.cancelReason = cancelReason;
        }
        public String getActualStartTime() {
            return actualStartTime;
        }
        public void setActualStartTime(String actualStartTime) {
            this.actualStartTime = actualStartTime;
        }
        public String getActualEndTime() {
            return actualEndTime;
        }
        public void setActualEndTime(String actualEndTime) {
            this.actualEndTime = actualEndTime;
        }
    }
}