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<TrafficFlow, ITrafficFlowService> {
|
|
@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<Map> traffic = oilRecordService.statisOrgTopTraffic(param);
|
//加油
|
List<Map> oilTop = oilRecordService.statisOrgTopOil(param);
|
//销量
|
List<Map> 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<StatDataTableVo> statisTotal(@RequestBody DataStatisReqVo param) {
|
LoginUser user = SystemContextUtil.currentLoginUser();
|
param.setOrgCodeIfnull(user.getOrgCode());
|
//总数
|
StatDataTableVo total = oilRecordService.statisTotal(param);
|
return Result.ok(total);
|
}
|
|
@PostMapping("/statisOilFreqCompare")
|
@Operation(summary = "活动前后车辆加油频次统计")
|
public Result<?> statisOilFreqCompare(@RequestBody DataStatisReqVo param) {
|
LoginUser user = SystemContextUtil.currentLoginUser();
|
param.setOrgCodeIfnull(user.getOrgCode());
|
List<Map> list = oilRecordService.statisOilFreqCompare(param);
|
return Result.ok(list);
|
}
|
|
@GetMapping("/clientTop")
|
@Operation(summary = "客户类型top10")
|
public Result<?> clientTop(@RequestParam String orgCode) {
|
LoginUser user = SystemContextUtil.currentLoginUser();
|
if(StringUtils.isBlank(orgCode)) orgCode = user.getOrgCode();
|
Map<String, List> res = new HashMap<>();
|
OilStatis statis = new OilStatis().setClientId(1).setOrgCode(orgCode);
|
LambdaQueryWrapper<OilStatis> 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<OilStatis> list1 = oilStaticService.list(wrapper);
|
statis.setClientId(2);
|
List<OilStatis> 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("/statBar")
|
@Operation(summary = "加油站统计-柱状图")
|
public Result<?> statBar(@RequestBody DataStatisReqVo param) {
|
LoginUser user = SystemContextUtil.currentLoginUser();
|
param.setOrgCodeIfnull(user.getOrgCode());
|
JSONObject statBar = oilRecordService.statBar(param);
|
return Result.ok(statBar);
|
}
|
|
@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) {
|
LoginUser user = SystemContextUtil.currentLoginUser();
|
param.setOrgCodeIfnull(user.getOrgCode());
|
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);
|
}
|
|
@PostMapping("/statTrendDetail")
|
@Operation(summary = "加油站统计-趋势分析明细")
|
public Result<?> statTrendDetail(@RequestBody DataStatisReqVo param) {
|
LoginUser user = SystemContextUtil.currentLoginUser();
|
param.setOrgCodeIfnull(user.getOrgCode());
|
List<Map<String, Object>> list = oilRecordService.statTrendDetail(param);
|
return Result.ok(list);
|
}
|
|
|
}
|