package com.base.biz.controller.rpc;

import com.base.api.model.FzTaskRpcDTO;
import com.base.api.model.request.FzTaskInfoRpcReqDTO;
import com.base.api.model.request.FzTaskInfoUpdateRpcDTO;
import com.base.api.model.request.TaskStateNotice;
import com.base.biz.model.dto.request.FzTaskInfoReqDTO;
import com.base.biz.model.dto.request.FzTaskInfoUpdateDTO;
import com.base.biz.service.FzTaskService;
import com.base.orbit.utils.BizUtils;
import com.base.orbit.web.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/rpc/fz")
@Slf4j
public class FzTaskRpcController {

    @Resource
    FzTaskService fzTaskService;

    @RequestMapping(value = "/list", method = RequestMethod.POST)
    public List<FzTaskRpcDTO> getFzTaskDTOList(@RequestBody FzTaskInfoRpcReqDTO req) {
        FzTaskInfoReqDTO fzTaskInfoReqDTO = new FzTaskInfoReqDTO();
        BeanUtils.copyProperties(req, fzTaskInfoReqDTO);

        List<FzTaskRpcDTO> fzTaskDTOS = BizUtils.copyEntityToDto(FzTaskRpcDTO.class, fzTaskService.getFzTaskDTOList(fzTaskInfoReqDTO));
       if (!CollectionUtils.isEmpty(fzTaskDTOS)){
           log.info("星下点查询开始时间:{}",fzTaskDTOS.get(0).getStartTime());
           log.info("星下点查询结束时间:{}",fzTaskDTOS.get(0).getEndTime());
       }
        return fzTaskDTOS;
    }

    @PostMapping("/update")
    public Object updateTaskDTO(@RequestBody FzTaskInfoUpdateRpcDTO req) {
        FzTaskInfoUpdateDTO fzTaskInfoUpdateDTO = new FzTaskInfoUpdateDTO();
        BeanUtils.copyProperties(req, fzTaskInfoUpdateDTO);
        fzTaskService.updateFzTask(fzTaskInfoUpdateDTO);
        return Result.success();
    }

    @PostMapping("/step/notice")
    public Object taskStepStateUpdate(@RequestBody TaskStateNotice taskStateNotice) {
        fzTaskService.updateTaskStepState(taskStateNotice);
        return Result.success();
    }

    @PostMapping("/step/delete")
    public Object taskStepStateDelete(@RequestBody TaskStateNotice taskStateNotice) {
        fzTaskService.deleteTaskStepState(taskStateNotice);
        return Result.success();
    }
}