package com.artfess.rescue.patrol.controller;

import com.artfess.base.annotation.ApiGroup;
import com.artfess.base.constants.ApiGroupConsts;
import com.artfess.base.enums.DelStatusEnum;
import com.artfess.base.model.CommonResult;
import com.artfess.base.query.PageList;
import com.artfess.base.query.QueryFilter;
import com.artfess.base.query.QueryOP;
import com.artfess.base.valid.AddGroup;
import com.artfess.rescue.event.dto.InspectionInfoDto;
import com.artfess.rescue.monitor.aop.WebSocketNotify;
import com.artfess.rescue.monitor.eunms.RefreshType;
import com.artfess.rescue.patrol.manager.BizInspectionResultDetailManager;
import com.artfess.rescue.patrol.model.BizInspectionResultDetail;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.artfess.base.controller.BaseController;


/**
 * 巡检任务结果记录表 前端控制器
 *
 * @author 系统管理员
 * @company 阿特菲斯信息技术有限公司
 * @since 2024-08-02
 */
@RestController
@RequestMapping("/patrol/bizInspectionResultDetail/v1/")
@Api(tags = "巡检任务详情")
@ApiGroup(group = {ApiGroupConsts.GROUP_BIZ_RESCUE})
public class BizInspectionResultDetailController extends BaseController<BizInspectionResultDetailManager, BizInspectionResultDetail> {

    @Override
    @PostMapping(value = "/query", produces = {"application/json; charset=utf-8"})
    @ApiOperation("分页查询结果")
    public PageList<BizInspectionResultDetail> query(@ApiParam(name = "queryFilter", value = "分页查询信息") @RequestBody QueryFilter<BizInspectionResultDetail> queryFilter) {
        queryFilter.addFilter("is_dele_", DelStatusEnum.N.getType(), QueryOP.EQUAL);
        return baseService.findByPage(queryFilter);
    }

    @Override
    @GetMapping("/{id}")
    @ApiOperation("根据id查询实体")
    public BizInspectionResultDetail getById(@ApiParam(name = "id", value = "实体id") @PathVariable String id) {
        return baseService.findById(id);
    }

    @Override
    @PostMapping("/")
    @ApiOperation("添加实体的接口")
    public CommonResult<String> create(@ApiParam(name = "model", value = "实体信息") @Validated({AddGroup.class}) @RequestBody BizInspectionResultDetail t) {
        boolean saveInfo = baseService.saveInfo(t);
        return new CommonResult<>(saveInfo,saveInfo?"添加成功":"添加失败");
    }


    @RequestMapping(value = "/accept", method = RequestMethod.POST, produces = {"application/json; charset=utf-8"})
    @ApiOperation(value = "巡查任务接收", httpMethod = "POST", notes = "巡查任务接收")
    public CommonResult<String> accept(@RequestBody InspectionInfoDto t) {
        boolean accept = baseService.accept(t);
        return new CommonResult<>(accept,accept?"接收成功":"接收失败");
    }

    @RequestMapping(value = "/end", method = RequestMethod.POST, produces = {"application/json; charset=utf-8"})
    @ApiOperation(value = "完结巡查任务", httpMethod = "POST", notes = "完结巡查任务")
    @WebSocketNotify(topic = RefreshType.DLYXJC, operateType = "UPDATE")
    public CommonResult<String> end(@RequestBody InspectionInfoDto t) {
        boolean accept = baseService.end(t);
        return new CommonResult<>(accept,accept?"完结成功":"完结失败");
    }

}
