package com.hssx.pcbms.controller;


import com.hssx.pcbms.entity.Task;
import com.hssx.pcbms.entity.vo.GoodsVO;
import com.hssx.pcbms.entity.vo.TaskVO;
import com.hssx.pcbms.service.TaskFileService;
import com.hssx.pcbms.service.TaskService;
import com.hssx.pcbms.util.HttpRespMsg;
import com.hssx.pcbms.util.PageUtil;
import com.hssx.pcbms.util.UploadFileToFileNameUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author 吴涛涛
 * @since 2019-11-11
 */
@Controller
@RequestMapping("/task")
public class TaskController {

    @Autowired
    private TaskService taskService;
    @Value("${upload.path}")
    private String path;
    /**
     * 任务录入/修改
     * 参数：
     * publishId :当前发布任务的人的id,participantsIdes 参与人ids 如：“1,2,3”
     * name ：名称，tagId：标签id,code：模具型号，planTime:计划时间如：2019-10-10
     * ，workLoad：工作量如:10（单位：天），recipientId：接受人id，payer：付款方，content:任务内容
     * payee：收款方,状态0-待派发 1-已派发 2-已接受 3-待审核 4-未通过 5-已完成 6-已延期 7-已失效（创建默认不传该字段）
     * delayTime 延长日期（创建默认不传该字段，延期处理时传该字段）
     * 修改：，id: 任务id (以上其他字段不修改不传)
     */
    @ApiOperation(value = "任务录入/修改", notes = "任务录入/修改方法")
    @RequestMapping("/addOrUpdate")
    @ResponseBody
    public HttpRespMsg addOrUpdate(Task task,@RequestParam(required = false) String participantsIdes) {
        HttpRespMsg msg = taskService.addOrUpdate(task,participantsIdes);
        return msg;
    }
    /**
     * 任务接受
     * 参数：id:任务id,recipientId:接收人id
     *
     */
    @ApiOperation(value = "任务接受", notes = "任务录入/修改方法")
    @RequestMapping("/acceptTask")
    @ResponseBody
    public HttpRespMsg acceptTask(Task task) {
        HttpRespMsg msg = taskService.acceptTask(task);
        return msg;
    }


    /**
     * 任务列表
     * 参数：pageNum:当前页，pageSize：每页多少条，uid: 当前人id
     *  keyName:关键字，tagId 标签id,state 状态，startTime 开始时间，endTime 结束时间
     * type:0-我的任务 1-我发布的
     */
    @ApiOperation(value = "任务列表", notes = "任务列表方法")
    @RequestMapping("/list")
    @ResponseBody
    public HttpRespMsg list(TaskVO taskVO, PageUtil page) {
        HttpRespMsg msg = taskService.getListByCondition(taskVO,page);
        return msg;
    }

    /**
     * 任务详情
     * 参数：id: 任务id
     */
    @ApiOperation(value = "任务详情", notes = "任务详情方法")
    @RequestMapping("/detail")
    @ResponseBody
    public HttpRespMsg detail(TaskVO taskVO) {
        HttpRespMsg msg = taskService.detail(taskVO);
        return msg;
    }
    /**
     * 任务删除
     * 参数：id:任务id
     */
    @ApiOperation(value = "任务删除", notes = "任务删除方法")
    @RequestMapping("/del")
    @ResponseBody
    public HttpRespMsg del(Task task) {
        HttpRespMsg msg = taskService.del(task);
        return msg;
    }

    /**
     * 任务失效检测定时任务
     * 参数：
     * @return
     */
    @ApiOperation(value = "任务失效检测定时任务", notes = "任务失效检测定时任务")
    @RequestMapping("/taskInvalidChecking")
    @ResponseBody
    @Scheduled(cron = "0 0 1 * * ?")//配置时间点触发(每日凌晨1点)
    public HttpRespMsg taskInvalidChecking() {
        HttpRespMsg msg = taskService.taskInvalidChecking();
        return msg;
    }
}

