wang-hao-jie
2021-12-08 1b4c59f5f3a0e332ad1cc27c836d98c6d2bdf22c
xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/controller/AddOilController.java
New file
@@ -0,0 +1,144 @@
package cn.exrick.xboot.your.controller;
import cn.exrick.xboot.core.common.utils.ExcelUtil;
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.AddOil;
import cn.exrick.xboot.your.service.IAddOilService;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import jodd.net.URLCoder;
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 javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @author zhangzeli
 */
@Slf4j
@RestController
@Api(tags = "加油记录管理接口")
@RequestMapping("/xboot/addOil")
@Transactional
public class AddOilController {
    @Autowired
    private IAddOilService iAddOilService;
    @RequestMapping(value = "/get/{id}", method = RequestMethod.GET)
    @ApiOperation(value = "通过id获取")
    public Result<AddOil> get(@PathVariable String id) {
        AddOil addOil = iAddOilService.getById(id);
        return new ResultUtil<AddOil>().setData(addOil);
    }
    @RequestMapping(value = "/getExcel", method = RequestMethod.GET)
    @ApiOperation(value = "通过车辆id获取")
    public Result<List<AddOil>> getExcel(String beginTime,String endTime) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        if (beginTime!=null && beginTime==""){
            //获取当前月第一天:
            Calendar c = Calendar.getInstance();
            c.add(Calendar.MONTH, 0);
            c.set(Calendar.DAY_OF_MONTH,1);
            beginTime = format.format(c.getTime());
        }
        if (endTime!=null && endTime==""){
            //获取当前月最后一天
            Calendar ca = Calendar.getInstance();
            ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
            endTime = format.format(ca.getTime());
        }
        QueryWrapper<AddOil> wrapper = new QueryWrapper<>();
        wrapper.ge(beginTime!=null && beginTime!="","add_date",beginTime);
        wrapper.le(endTime!=null && endTime!="","add_date",endTime);
        List<AddOil> list = iAddOilService.getAddOil(wrapper);
        List<AddOil> addOilList = new ArrayList<>();
        Map<String, List<AddOil>> map = list.stream().collect(Collectors.groupingBy(AddOil::getCarNo));
        map.forEach((key, value) -> {
            for (AddOil addOil:
                    value) {
                addOilList.add(addOil);
            }
            AddOil addOil = new AddOil();
            java.text.DecimalFormat   df   =new   java.text.DecimalFormat("#.00");
            addOil.setCarNo("合计");
            addOil.setAmount(value.stream().map(e -> e.getAmount()).reduce(Double::sum).get());
            addOil.setMileage(value.stream().map(e -> e.getMileage()).reduce(Integer::sum).get());
            addOil.setMoney(value.stream().map(e -> e.getMoney()).reduce(Double::sum).get());
            Double f = addOil.getAmount()/addOil.getMileage()*100;
            BigDecimal b = new BigDecimal(f);
            addOil.setOilWear(b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
            addOilList.add(addOil);
            addOilList.add(new AddOil());
            addOilList.add(new AddOil());
            addOilList.add(new AddOil());
        });
        return new ResultUtil<List<AddOil>>().setData(addOilList);
    }
    @RequestMapping(value = "/getAll", method = RequestMethod.GET)
    @ApiOperation(value = "获取全部数据")
    public Result<List<AddOil>> getAll() {
        List<AddOil> list = iAddOilService.list();
        return new ResultUtil<List<AddOil>>().setData(list);
    }
    @RequestMapping(value = "/getByPage", method = RequestMethod.GET)
    @ApiOperation(value = "分页获取")
    public Result<IPage<AddOil>> getByPage(PageVo page,String carNo) {
        QueryWrapper<AddOil> wrapper = new QueryWrapper<>();
        if(!StrUtil.isEmpty(carNo))
            wrapper.like("b.car_no","%"+carNo+"%");
        IPage<AddOil> data = iAddOilService.page2(PageUtil.initMpPage(page),wrapper);
        return new ResultUtil<IPage<AddOil>>().setData(data);
    }
    @RequestMapping(value = "/insertOrUpdate", method = RequestMethod.POST)
    @ApiOperation(value = "编辑或更新数据")
    public Result<AddOil> saveOrUpdate(AddOil addOil) {
        if (iAddOilService.saveOrUpdate(addOil)) {
            return new ResultUtil<AddOil>().setData(addOil);
        }
        return new ResultUtil<AddOil>().setErrorMsg("操作失败");
    }
    @RequestMapping(value = "/delByIds", method = RequestMethod.POST)
    @ApiOperation(value = "批量通过id删除")
    public Result<Object> delAllByIds(@RequestParam String[] ids) {
        for (String id : ids) {
            iAddOilService.removeById(id);
        }
        return ResultUtil.success("批量通过id删除数据成功");
    }
}