/*
 * Author: wangjian
 * 生成controller
 */
package com.tofly.gpsboot.controller.car;

import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tofly.common.core.entity.ResultRespone;
import com.tofly.common.log.annotation.ToFlyAppLog;
import com.tofly.gpsboot.service.car.CarService;
import com.tofly.gpsboot.service.car.CarUserService;
import com.tofly.pojo.car.CarUser;
import com.tofly.pojo.plan.Car;
import com.tofly.pojo.plan.vo.CarVo;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import org.springframework.web.bind.annotation.ModelAttribute;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 
 *
 * @author admin
 * @date Mon May 09 00:00:00 CST 2022
 */
//@RestController
//@AllArgsConstructor
//@RequestMapping("/car")
//@Api(tags="车辆信息接口")
public class CarController {

//    private final CarService carService;
//
//    private  final CarUserService carUserService;
//    /**
//    * 分页查询
//    * @param page 分页对象
//    * @param car
//    * @return
//    */
//    @GetMapping("/page" )
//    @ApiOperation(value = "分页查询")
//    public ResultRespone<Page<CarVo>> getCarPage(Page page, @ModelAttribute Car car) {
//        String replace = null;
//        String status = car.getStatus();
//        String[] statusArr =null;
//        if(StringUtils.isNotBlank(status)&&((statusArr=status.split(",")).length>1)){
//            car.setStatus(null);
//        }
//        if(StringUtils.isNotBlank(car.getQueryLike())){
//            StringBuilder sbl = new StringBuilder("SELECT id from tf_smpn_user_x  where REAL_NAME like '%{}%'");
//             replace = sbl.toString().replace("{}", car.getQueryLike());
//        }
//        Page page1 = carService.page(page, Wrappers.query(car)
//                .<Car>lambda()
//                .in(statusArr!=null && statusArr.length>1,Car::getStatus,statusArr)
//                .like(StringUtils.isNotBlank(car.getQueryLike()), Car::getCarNo, car.getQueryLike())
//                .or()
//                .inSql(StringUtils.isNotBlank(car.getQueryLike()), Car::getChargePerson, replace)
//        );
//        List list = carService.viewConversion(page1.getRecords());
//        page1.setRecords(list);
//
//        return ResultRespone.success(page1);
//    }
//
//    @GetMapping("/canBindUserCarList" )
//    @ApiOperation(value = "app查询可以绑定人员的车辆列表")
//    public ResultRespone<List<Car>> canBindUserCarList( @ModelAttribute Car car) {
//        //查询已经绑定了人员的车辆  并且未下班
//        List<Long> carIdList =
//                carUserService.list(Wrappers.<CarUser>lambdaQuery()
//                        .isNull(CarUser::getEndDate))
//                        .stream().map(CarUser::getCarId).distinct().collect(Collectors.toList());
//        List<Car> list = carService.list(Wrappers.<Car>lambdaQuery()
//                .notIn(carIdList != null&&carIdList.size()>0, Car::getId, carIdList)
//                .eq(Car::getStatus,"1")
//        );
//
//        return  ResultRespone.success(list);
//    }
//    /**
//     * 通过id查询
//     * @param id id
//     * @return ResultRespone
//     */
//    @GetMapping("/{id}" )
//    @ApiOperation(value = "通过ID查询")
//    @ApiImplicitParams({
//            @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "Long")
//    })
//    public ResultRespone getById(@PathVariable("id" ) Long id) {
//      return ResultRespone.success(carService.getById(id));
//    }
//
//    /**
//     * 新增
//     * @param car
//     * @return ResultRespone
//     */
//   // @ToFlyAppLog(title="新增" )
//    @ApiOperation(value = "新增")
//    @PostMapping
//    public ResultRespone save(@RequestBody Car car) {
//        //check车辆车牌号
//        int count = carService.count(Wrappers.<Car>lambdaQuery().eq(Car::getCarNo, car.getCarNo()));
//        Assert.isTrue(count==0,"车牌号重复，请检查后添加");
//
//        return ResultRespone.success(carService.save(car));
//    }
//
//    /**
//     * 修改
//     * @param car
//     * @return ResultRespone
//     */
//    @ToFlyAppLog(title="修改" )
//    @ApiOperation(value = "修改")
//    @PutMapping
//    public ResultRespone updateById(@RequestBody Car car) {
//        //check车辆车牌号
//        int count = carService.count(Wrappers.<Car>lambdaQuery()
//                .eq(Car::getCarNo, car.getCarNo())
//                .ne(Car::getId,car.getId())
//        );
//        Assert.isTrue(count==0,"车牌号重复，请检查后添加");
//
//        return ResultRespone.success(carService.updateWithCondition(car));
//    }
//
//    /**
//     * 修改
//     * @return ResultRespone
//     */
//    @ToFlyAppLog(title="全量列表查询" )
//    @ApiOperation(value = "列表查询")
//    @GetMapping("/listAll")
//    public ResultRespone updateById() {
//        List<Car> list = carService.list();
//        return ResultRespone.success(list);
//    }
//
//    /**
//     * 通过id删除
//     * @param id id
//     * @return ResultRespone
//     */
//   // @ToFlyAppLog(title="通过id删除" )
//    @ApiOperation(value = "通过ID删除")
//    @ApiImplicitParams({
//            @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "Long")
//    })
//    @DeleteMapping("/{id}" )
//    public ResultRespone removeById(@PathVariable Long id) {
//        Car carById = carService.getById(id);
//        assert !"1".equals(carById.getStatus()):"该车辆状态为在用,不能删除";
//
//        return ResultRespone.success(carService.removeById(id));
//    }
//
//    /**
//     * 通过id批量删除
//     * @param ids id
//     * @return ResultRespone
//     */
//    @ToFlyAppLog(title="通过id批量删除" )
//    @ApiOperation(value = "通过ID批量删除")
//    @ApiImplicitParams({
//            @ApiImplicitParam(name = "ids", value = "批量删除，多个id以逗号隔开", required = true, dataType = "String")
//    })
//    @DeleteMapping("/deleteByIds" )
//    public ResultRespone removeById(String ids) {
//        return ResultRespone.success(carService.removeByIds(Arrays.asList(ids.split(","))));
//    }
//
//
//    @GetMapping("/pageTrack" )
//    @ApiOperation(value = "分页查询")
//    public ResultRespone<Page<CarVo>> getPageTrack(Page page, @ModelAttribute Car car) {
//        String replace = null;
//        if(StringUtils.isNotBlank(car.getQueryLike())){
//            StringBuilder sbl = new StringBuilder("SELECT id from tf_smpn_user_x  where REAL_NAME like '%{}%'");
//            replace = sbl.toString().replace("{}", car.getQueryLike());
//        }
//        Page page1 = carService.page(page, Wrappers.query(car)
//                .<Car>lambda()
//                .like(StringUtils.isNotBlank(car.getQueryLike()), Car::getCarNo, car.getQueryLike())
//                .or()
//                .inSql(StringUtils.isNotBlank(car.getQueryLike()), Car::getChargePerson, replace)
//        );
//        List list = carService.viewConversion(page1.getRecords());
//        page1.setRecords(list);
//
//        return ResultRespone.success(page1);
//    }
}
