package com.tievd.jyz.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.tievd.cube.commons.annotations.DictApi; import com.tievd.cube.commons.base.CubeController; import com.tievd.cube.commons.base.Result; import com.tievd.cube.commons.utils.SystemContextUtil; import com.tievd.cube.modules.system.model.LoginUser; import com.tievd.jyz.entity.OilStatis; import com.tievd.jyz.entity.TrafficFlow; import com.tievd.jyz.entity.vo.DataStatisReqVo; import com.tievd.jyz.entity.vo.StatDataTableVo; import com.tievd.jyz.service.IOilRecordService; import com.tievd.jyz.service.IOilStaticService; import com.tievd.jyz.service.ITrafficFlowService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.List; import java.util.Map; @Slf4j @DictApi @RestController @RequestMapping("/jyz/dataTable") @Tag(name = "数据报表接口") public class DataTableController extends CubeController { @Autowired IOilStaticService oilStaticService; @Autowired IOilRecordService oilRecordService; @PostMapping("/statisOrgTop") @Operation(summary = "机构-统计top10数据") public Result statisOrgTop(@RequestBody DataStatisReqVo param) { LoginUser user = SystemContextUtil.currentLoginUser(); param.setOrgCodeIfnull(user.getOrgCode()); //流量top List traffic = oilRecordService.statisOrgTopTraffic(param); //加油 List oilTop = oilRecordService.statisOrgTopOil(param); //销量 List oilVolumeTop = oilRecordService.statisOrgTopVolume(param); JSONObject res = new JSONObject(); res.put("trafficTop", traffic); res.put("oilTop", oilTop); res.put("oilVolumeTop", oilVolumeTop); return Result.ok(res); } @PostMapping("/statisTotal") @Operation(summary = "统计总数") public Result statisTotal(@RequestBody DataStatisReqVo param) { LoginUser user = SystemContextUtil.currentLoginUser(); param.setOrgCodeIfnull(user.getOrgCode()); //总数 StatDataTableVo total = oilRecordService.statisTotal(param); return Result.ok(total); } @GetMapping("/clientTop") @Operation(summary = "客户类型top10") public Result clientTop(@RequestParam String orgCode) { LoginUser user = SystemContextUtil.currentLoginUser(); if(StringUtils.isBlank(orgCode)) orgCode = user.getOrgCode(); Map res = new HashMap<>(); OilStatis statis = new OilStatis().setClientId(1).setOrgCode(orgCode); LambdaQueryWrapper wrapper = new LambdaQueryWrapper(statis); wrapper.orderByDesc(OilStatis::getOilSum); // wrapper.likeRight(OilStatis::getOrgCode, orgCode); wrapper.last("limit 10"); wrapper.select(OilStatis::getClientName, OilStatis::getLicenseNum, OilStatis::getOilSum, OilStatis::getOilCount); List list1 = oilStaticService.list(wrapper); statis.setClientId(2); List list2 = oilStaticService.list(wrapper); res.put("type1", list1); res.put("type2", list2); return Result.ok(res); } @PostMapping("/statisMidTable") @Operation(summary = "加油站统计-中部折线图(车型,加油位分析)") public Result statisMidTable(@RequestBody DataStatisReqVo param) { LoginUser user = SystemContextUtil.currentLoginUser(); param.setOrgCodeIfnull(user.getOrgCode()); //车型条形 param.setType(1); JSONObject statModelBar = oilRecordService.statBar(param); //车位条形 param.setType(2); JSONObject statPositionBar = oilRecordService.statBar(param); JSONObject res = new JSONObject(); res.put("statModelBar", statModelBar); res.put("statPositionBar", statPositionBar); return Result.ok(res); } @PostMapping("/statFan") @Operation(summary = "加油站统计-中部报表(扇形图)") public Result statFan(@RequestBody DataStatisReqVo param) { LoginUser user = SystemContextUtil.currentLoginUser(); param.setOrgCodeIfnull(user.getOrgCode()); JSONObject statFan = oilRecordService.statFan(param); return Result.ok(statFan); } @PostMapping("/statTrend") @Operation(summary = "加油站统计-顶部条形图") public Result statTrend(@RequestBody DataStatisReqVo param) { JSONObject statFan; if (param.getTrendType() == DataStatisReqVo.TrendType.CLIENT || param.getTrendType() == DataStatisReqVo.TrendType.LOSE_CLIENT) { statFan = oilRecordService.statTrendClient(param); } else { statFan = oilRecordService.statTrend(param); } return Result.ok(statFan); } }