package com.artfess.rescue.base.controller;


import com.artfess.base.annotation.ApiGroup;
import com.artfess.base.constants.ApiGroupConsts;
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.rescue.base.vo.OrgRoadVO;
import com.artfess.rescue.base.vo.RoadConfigVO;
import com.artfess.rescue.uc.manager.RescueOrgManager;
import com.artfess.rescue.uc.vo.OrgInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
import com.artfess.base.controller.BaseController;
import com.artfess.rescue.base.model.BizBaseRoad;
import com.artfess.rescue.base.manager.BizBaseRoadManager;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;


/**
 * 路段表 前端控制器
 *
 * @company 阿特菲斯信息技术有限公司
 * @author 系统管理员
 * @since 2024-07-24
 */
@RestController
@RequestMapping("/bizBaseRoad/v1/")
@Api(tags = "路段信息")
@ApiGroup(group = {ApiGroupConsts.GROUP_BIZ_RESCUE})
public class BizBaseRoadController extends BaseController<BizBaseRoadManager, BizBaseRoad> {
    @Resource
    RescueOrgManager orgManager;


    @RequestMapping(value = "SynchronizeData", method = RequestMethod.GET, produces = {"application/json; charset=utf-8"})
    @ApiOperation(value = "同步数据", httpMethod = "GET", notes = "同步数据")
    public CommonResult<String> SynchronizeData(){
        baseService.SynchronizeData();
        return new CommonResult<>("同步成功");
    }

    @GetMapping(value = "/roadTree")
    @ApiOperation(value = "路段树结构", httpMethod = "GET", notes = "路段管理数据详情")
    public List<OrgRoadVO> roadTree(){
        return baseService.roadTree();

    }

    @PostMapping("/updateConfig")
    @ApiOperation("根据路段id更新路段巡查配置")
    public CommonResult<String> updateConfig(@ApiParam(name = "model", value = "路段巡查配置信息") @RequestBody RoadConfigVO t) {
        baseService.updateConfig(t);
        return new CommonResult<>("配置更新成功");
    }

    @GetMapping("/getConfig/{id}")
    @ApiOperation("根据路段id查询路段巡查配置")
    public RoadConfigVO getConfig(@ApiParam(name = "id", value = "路段id") @PathVariable String id) {
        return baseService.getConfig(id);
    }

    @Override
    @PostMapping(value = "/query", produces = {"application/json; charset=utf-8"})
    @ApiOperation("分页查询结果")
    public PageList<BizBaseRoad> query(@ApiParam(name = "queryFilter", value = "分页查询信息") @RequestBody QueryFilter<BizBaseRoad> queryFilter) {
        //权限控制
        List<List<BizBaseRoad>> roadList = orgManager.roadTree().stream().map(OrgInfoVO::getRoadList).filter(Objects::nonNull).collect(Collectors.toList());
        ArrayList<String> roadIds = new ArrayList<>();
        if (roadList.isEmpty()){
            return new PageList<>();
        }
        for (List<BizBaseRoad> roads : roadList) {
            List<String> ids = roads.stream().map(BizBaseRoad::getId).filter(Objects::nonNull).collect(Collectors.toList());
            roadIds.addAll(ids);
        }
        queryFilter.addFilter("ID_",roadIds, QueryOP.IN);
        return baseService.queryInfoPage(queryFilter);
    }

}
