package cn.exrick.xboot.your.controller; import cn.exrick.xboot.core.common.utils.PageUtil; import cn.exrick.xboot.core.common.utils.ResultUtil; import cn.exrick.xboot.core.common.vo.PageVo; import cn.exrick.xboot.core.common.vo.Result; import cn.exrick.xboot.your.entity.*; import cn.exrick.xboot.your.service.*; import cn.exrick.xboot.your.vo.CarVo; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * @author zhangzeli */ @Slf4j @RestController @Api(tags = "车辆表管理接口") @RequestMapping("/xboot/car") @Transactional public class CarController { @Autowired private ICarService iCarService; @Autowired private IAddOilService iAddOilService; @Autowired private IDrivingRecordService iDrivingRecordService; @Autowired private ICustomerService iCustomerService; @RequestMapping(value = "/get/{id}", method = RequestMethod.GET) @ApiOperation(value = "通过id获取") public Result get(@PathVariable String id) { Car car = iCarService.getById(id); return new ResultUtil().setData(car); } @RequestMapping(value = "/getAllCar", method = RequestMethod.GET) @ApiOperation(value = "获取全部数据") public Result> getAllCar() { List list = iCarService.list(); return new ResultUtil>().setData(list); } @RequestMapping(value = "/getAll", method = RequestMethod.GET) @ApiOperation(value = "获取全部数据") public Result> getAll(String beginTime,String endTime,PageVo page) { List carVos = new ArrayList<>(); IPage list = iCarService.getAll2(PageUtil.initMpPage(page)); for (Car car:list.getRecords()){ CarVo carVo = new CarVo(); //加油信息 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("sum(money) as money,sum(amount) as amount").eq("car_id", car.getId()); //从发车时间行驶里程判断初始里程 QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select("min(mileage) as beginMileage,max(mileage) as endMileage").eq("car_id",car.getId()); wrapper.ge(beginTime!=null && beginTime!="","out_time",beginTime); queryWrapper.ge(beginTime!=null && beginTime!="","add_date",beginTime); wrapper.le(endTime!=null && endTime!="","in_time",endTime); queryWrapper.le(endTime!=null && endTime!="","add_date",endTime); QueryWrapper wrapper1 = new QueryWrapper<>(); wrapper1.eq("car_id",car.getId()); wrapper1.ge(beginTime!=null && beginTime!="","send_date",beginTime); wrapper1.le(endTime!=null && endTime!="","send_date",endTime); DrivingRecord drivingRecord = iDrivingRecordService.getOne(wrapper); AddOil addOil = iAddOilService.getOne(queryWrapper); if (addOil!=null){ carVo.setMoney(addOil.getMoney()); carVo.setOilWear(addOil.getAmount()); } if (drivingRecord!=null) { carVo.setBeginMileage(drivingRecord.getBeginMileage()); carVo.setEndMileage(drivingRecord.getEndMileage()); } carVo.setCar(car); carVos.add(carVo); carVo.setTotal(list.getTotal()); } return new ResultUtil>().setData(carVos); } @RequestMapping(value = "/getInfo", method = RequestMethod.GET) @ApiOperation(value = "通过车辆id获取") public Result> getInfo(String beginTime,String endTime) { java.text.DecimalFormat df =new java.text.DecimalFormat("#.##"); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.ge(beginTime!=null && beginTime!="","a.add_date",beginTime); wrapper.le(endTime!=null && endTime!="","a.add_date",endTime); wrapper.groupBy("car_no"); List list2 = iCarService.getCarInfo2(wrapper); List list = iCarService.getCarInfo(); for (Car car:list2){ for (Car car1:list){ if (car.getId().equals(car1.getId())){ car1.setAmount(Double.parseDouble(df.format(car.getAmount()))); car1.setMileage(Double.parseDouble(df.format(car.getMileage()))); car1.setMoney(Double.parseDouble(df.format(car.getMoney()))); car1.setAllAmount(Double.parseDouble(df.format(car1.getAllAmount()))); car1.setAllMileage(Double.parseDouble(df.format(car1.getAllMileage()))); car1.setAllMoney(Double.parseDouble(df.format(car1.getAllMoney()))); continue; } } } return new ResultUtil>().setData(list); } @RequestMapping(value = "/getByPage", method = RequestMethod.GET) @ApiOperation(value = "分页获取") public Result> getByPage(String carNo,PageVo page) { QueryWrapper wrapper = new QueryWrapper<>(); if(!StrUtil.isEmpty(carNo)){ wrapper.like("a.car_no","%"+carNo+"%"); } IPage data = iCarService.page2(PageUtil.initMpPage(page),wrapper); return new ResultUtil>().setData(data); } @RequestMapping(value = "/insertOrUpdate", method = RequestMethod.POST) @ApiOperation(value = "编辑或更新数据") public Result saveOrUpdate(Car car) { QueryWrapper wrapper = new QueryWrapper<>(); QueryWrapper wrapper1 = new QueryWrapper<>(); if (!car.getUserId().equals("")){ wrapper.eq("user_id",car.getUserId()); Car car1 = iCarService.getOne(wrapper); if (car1!=null && !car1.getId().equals(car.getId())){ return new ResultUtil().setErrorMsg("该驾驶员已被其他车辆绑定,请先解绑"); } } if (!car.getFollowUserId().equals("")){ wrapper1.eq("follow_user_id",car.getFollowUserId()); Car car1 = iCarService.getOne(wrapper1); if (car1!=null && !car1.getId().equals(car.getId())){ return new ResultUtil().setErrorMsg("该配送员已被其他车辆绑定,请先解绑"); } } if (iCarService.saveOrUpdate(car)) { return new ResultUtil().setData(car); } return new ResultUtil().setErrorMsg("操作失败"); } @RequestMapping(value = "/bindCar", method = RequestMethod.POST) @ApiOperation(value = "绑定车辆人员") public Result bindCar(String carId,String userId) { Car car = iCarService.getById(carId); car.setUserId(userId); iCarService.saveOrUpdate(car); return ResultUtil.success("绑定成功"); } @RequestMapping(value = "/delByIds", method = RequestMethod.POST) @ApiOperation(value = "批量通过id删除") public Result delAllByIds(@RequestParam String[] ids) { for (String id : ids) { iCarService.removeById(id); } return ResultUtil.success("批量通过id删除数据成功"); } }