|
@@ -0,0 +1,493 @@
|
|
|
+package com.txz.operating.controller;
|
|
|
+
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import cn.hutool.poi.excel.ExcelUtil;
|
|
|
+import cn.hutool.poi.excel.ExcelWriter;
|
|
|
+
|
|
|
+import com.github.pagehelper.PageHelper;
|
|
|
+import com.github.pagehelper.PageInfo;
|
|
|
+import com.txz.operating.core.ResultCode;
|
|
|
+import com.txz.operating.core.ResultGenerator;
|
|
|
+import com.txz.operating.model.*;
|
|
|
+import com.txz.operating.result.Result;
|
|
|
+import com.txz.operating.service.*;
|
|
|
+import com.txz.operating.web.bo.*;
|
|
|
+import com.txz.operating.web.param.*;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import io.swagger.annotations.Api;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
+
|
|
|
+import tk.mybatis.mapper.entity.Condition;
|
|
|
+import tk.mybatis.mapper.entity.Example.Criteria;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import javax.servlet.ServletOutputStream;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Created by CodeGenerator on 2020/07/01.
|
|
|
+ */
|
|
|
+@Api(tags = "[后台]看板管理")
|
|
|
+@RestController
|
|
|
+@RequestMapping("/spectaculars")
|
|
|
+public class SpectacularsController {
|
|
|
+
|
|
|
+ private static Logger log = LoggerFactory.getLogger(SpectacularsController.class);
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private SpectacularsService spectacularsService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private SpectacularsDimensionService spectacularsDimensionService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private DimensionService dimensionService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private DimensionSectionService dimensionSectionService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private DayStatisticsService dayStatisticsService;
|
|
|
+
|
|
|
+ @Value("${statistics.data.ids}")
|
|
|
+ private String ids;
|
|
|
+
|
|
|
+ @GetMapping("/addDimensionView")
|
|
|
+ @ApiOperation(value = "新增纬度视图", httpMethod = "GET")
|
|
|
+ public Result<List<DimensionDto>> addDimensionView(@RequestParam Integer spectId) {
|
|
|
+ if (spectId == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.ID_IS_NULL);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ Condition c = new Condition(SpectacularsDimension.class);
|
|
|
+ c.createCriteria().andEqualTo("spectId", spectId);
|
|
|
+ List<SpectacularsDimension> haveList = spectacularsDimensionService.findByCondition(c);
|
|
|
+ c = new Condition(Dimension.class);
|
|
|
+ c.createCriteria().andEqualTo("status", 1).andEqualTo("type", 1);
|
|
|
+ List<Dimension> all = dimensionService.findByCondition(c);
|
|
|
+ if (CollUtil.isNotEmpty(haveList)) {
|
|
|
+ for (int i = all.size() - 1; i >= 0; i--) {
|
|
|
+ for (SpectacularsDimension spectacularsDimension : haveList) {
|
|
|
+ if (all.get(i).getId().compareTo(spectacularsDimension.getDimensionId()) == 0) {
|
|
|
+ all.remove(i);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (CollUtil.isNotEmpty(all)) {
|
|
|
+ return ResultGenerator.genSuccessResult(all.stream().map(temp -> BeanUtil.toBean(temp, DimensionDto.class)).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ return ResultGenerator.genSuccessResult(new ArrayList<>());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("新增对象操作异常e:{}", e);
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/add")
|
|
|
+ @ApiOperation(value = "新增看板", httpMethod = "POST")
|
|
|
+ public Result add(@RequestBody Spectaculars spectaculars) {
|
|
|
+ if (spectaculars == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.OBJECT_IS_NULL);
|
|
|
+ }
|
|
|
+ if (StrUtil.isBlank(spectaculars.getName())) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.NAME_IS_NULL);
|
|
|
+ }
|
|
|
+ if (spectaculars.getUserId() == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.USERID_IS_NULL);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ spectacularsService.save(spectaculars);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("新增对象操作异常e:{}", e);
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
+ }
|
|
|
+
|
|
|
+ return ResultGenerator.genSuccessResult();
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/addDimension")
|
|
|
+ @ApiOperation(value = "新增维度", httpMethod = "POST")
|
|
|
+ public Result addDimension(@RequestBody Spectaculars spectaculars) {
|
|
|
+ if (spectaculars == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.OBJECT_IS_NULL);
|
|
|
+ }
|
|
|
+ if (spectaculars.getId() == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.ID_IS_NULL);
|
|
|
+ }
|
|
|
+ if (CollUtil.isEmpty(spectaculars.getDimensions())) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.OBJECT_IS_NULL);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ Spectaculars temp = spectacularsService.findById(spectaculars.getId());
|
|
|
+ if (temp == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.OBJECT_IS_NULL);
|
|
|
+ }
|
|
|
+ for (SpectacularsDimension dimension : spectaculars.getDimensions()) {
|
|
|
+ dimension.setSpectId(spectaculars.getId());
|
|
|
+ }
|
|
|
+ spectacularsDimensionService.save(spectaculars.getDimensions());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("新增对象操作异常e:{}", e);
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
+ }
|
|
|
+
|
|
|
+ return ResultGenerator.genSuccessResult();
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/deleteDimension")
|
|
|
+ @ApiOperation(value = "删除维度", httpMethod = "GET")
|
|
|
+ public Result deleteDimension(@RequestParam Integer id) {
|
|
|
+ if (id == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.ID_IS_NULL);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ spectacularsDimensionService.deleteById(id);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("删除对象操作异常e:{}", e);
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
+ }
|
|
|
+ return ResultGenerator.genSuccessResult();
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/delete")
|
|
|
+ @ApiOperation(value = "spectaculars删除", httpMethod = "GET")
|
|
|
+ public Result delete(@RequestParam Integer id) {
|
|
|
+ if (id == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.ID_IS_NULL);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ spectacularsService.deleteById(id);
|
|
|
+ Condition condition = new Condition(SpectacularsDimension.class);
|
|
|
+ Criteria criteria = condition.createCriteria();
|
|
|
+ criteria.andEqualTo("spectId", id);
|
|
|
+ spectacularsDimensionService.deleteByCondition(condition);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("删除对象操作异常e:{}", e);
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
+ }
|
|
|
+ return ResultGenerator.genSuccessResult();
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/updateDimension")
|
|
|
+ @ApiOperation(value = "更新维度", httpMethod = "POST")
|
|
|
+ public Result updateDimension(@RequestBody DimensionParam param) {
|
|
|
+ if (param == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.OBJECT_IS_NULL);
|
|
|
+ }
|
|
|
+ if (param.getId() == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.ID_IS_NULL);
|
|
|
+ }
|
|
|
+ if (StrUtil.isBlank(param.getViewType())) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.OBJECT_IS_NULL);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ spectacularsDimensionService.update(SpectacularsDimension.builder().id(param.getId()).viewType(param.getViewType()).build());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("更新对象操作异常e:{}", e);
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
+ }
|
|
|
+ return ResultGenerator.genSuccessResult();
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/update")
|
|
|
+ @ApiOperation(value = "spectaculars更新", httpMethod = "POST")
|
|
|
+ public Result update(@RequestBody Spectaculars spectaculars) {
|
|
|
+ if (spectaculars == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.OBJECT_IS_NULL);
|
|
|
+ }
|
|
|
+ if (spectaculars.getId() == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.ID_IS_NULL);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ spectacularsService.update(spectaculars);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("更新对象操作异常e:{}", e);
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
+ }
|
|
|
+ return ResultGenerator.genSuccessResult();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取维度详情
|
|
|
+ @PostMapping("/dimensionDetail")
|
|
|
+ @ApiOperation(value = "获取维度详情", httpMethod = "POST")
|
|
|
+ public Result<DimensionDto> dimensionDetail(@RequestBody DimensionDetailParam param) {
|
|
|
+ if (param == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.OBJECT_IS_NULL);
|
|
|
+ }
|
|
|
+ if (param.getGranularity() == null) {
|
|
|
+ param.setGranularity(2);
|
|
|
+ }
|
|
|
+ if (param.getTimeInterval() != null) {
|
|
|
+ if (param.getTimeInterval() == -1) {
|
|
|
+ param.setStartTime(null);
|
|
|
+ param.setEndTime(null);
|
|
|
+ } else {
|
|
|
+ param.setTimeInterval(param.getTimeInterval() + 1);
|
|
|
+ param.setStartTime(DateUtil.format(DateUtil.offsetDay(DateUtil.date(), -param.getTimeInterval()), "yyyy-MM-dd") + " 00:00:00");
|
|
|
+ param.setEndTime(DateUtil.format(DateUtil.yesterday(), "yyyy-MM-dd") + " 00:00:00");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ SpectacularsDimension spectacularsDimension = spectacularsDimensionService.findBy("id", param.getId());
|
|
|
+ if (spectacularsDimension == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.OBJECT_IS_NULL);
|
|
|
+ }
|
|
|
+ Dimension dimension = dimensionService.findById(spectacularsDimension.getDimensionId());
|
|
|
+ if (dimension == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.OBJECT_IS_NULL);
|
|
|
+ }
|
|
|
+ DimensionDto dimensionDto = buildDimensionDto(dimension, param.getStartTime(), param.getEndTime(), param.getType(), param.getGranularity(), param.getAppCode());
|
|
|
+ dimensionDto.setViewType(spectacularsDimension.getViewType());
|
|
|
+ dimensionDto.setSpectacularsDimensionId(spectacularsDimension.getId());
|
|
|
+ return ResultGenerator.genSuccessResult(dimensionDto);
|
|
|
+ }
|
|
|
+
|
|
|
+ private DimensionDto buildDimensionDto(Dimension temp, String startTime, String endTime, Integer type, Integer granularity, String appCode) {
|
|
|
+ DimensionDto dto = BeanUtil.toBean(temp, DimensionDto.class);
|
|
|
+ Condition c = new Condition(DimensionSection.class);
|
|
|
+ Criteria criteria = c.createCriteria().andEqualTo("dimensionId", temp.getId());
|
|
|
+ if (granularity == 2) {
|
|
|
+ if (StrUtil.isNotBlank(appCode)) {
|
|
|
+ criteria.andLike("appCode", appCode.split("_")[0] + "%");
|
|
|
+ }
|
|
|
+ } else if (granularity == 3) {
|
|
|
+ String[] appCodes = appCode.split("_");
|
|
|
+ criteria.andLike("appCode", "%" + appCodes[appCodes.length - 1]);
|
|
|
+ }
|
|
|
+ c.setOrderByClause("id");
|
|
|
+ List<DimensionSection> sections = dimensionSectionService.findByCondition(c);
|
|
|
+ if (CollUtil.isNotEmpty(sections)) {
|
|
|
+ Map<String, DimensionSectionStatisticsDto> totalStatistics = new LinkedHashMap<>();
|
|
|
+ List<DimensionSectionDto> sectionList = sections.stream().map(temp2 -> {
|
|
|
+ DimensionSectionDto sectionDto = BeanUtil.toBean(temp2, DimensionSectionDto.class);
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("sectionId", temp2.getId());
|
|
|
+ map.put("startTime", startTime);
|
|
|
+ map.put("endTime", endTime);
|
|
|
+ map.put("dataType", type);
|
|
|
+ List<DayStatisticsBo> statistics = dayStatisticsService.findStatisticsByCondition(map);
|
|
|
+ if (CollUtil.isNotEmpty(statistics)) {
|
|
|
+ sectionDto.setStatistics(statistics.stream().map(temp3 -> {
|
|
|
+ DimensionSectionStatisticsDto tempStatistic = BeanUtil.toBean(temp3, DimensionSectionStatisticsDto.class);
|
|
|
+ DimensionSectionStatisticsDto dto1 = totalStatistics.get(tempStatistic.getCutDay());
|
|
|
+ if (temp2.getType() == 1) {
|
|
|
+ if (dto1 == null) {
|
|
|
+ totalStatistics.put(tempStatistic.getCutDay(), BeanUtil.toBean(tempStatistic, DimensionSectionStatisticsDto.class));
|
|
|
+ } else {
|
|
|
+ dto1.setStatisticsValue(dto1.getStatisticsValue().add(tempStatistic.getStatisticsValue()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return tempStatistic;
|
|
|
+ }).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ return sectionDto;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ if (temp.getStatisticsType().compareTo((byte) 2) == 0 && CollUtil.isNotEmpty(totalStatistics.values())) {
|
|
|
+ sectionList.add(DimensionSectionDto.builder().name(dto.getName() + "汇总").statistics(totalStatistics.values().stream().collect(Collectors.toList())).build());
|
|
|
+ }
|
|
|
+ for (DimensionSectionDto section : sectionList) {
|
|
|
+ if (section != null && CollUtil.isNotEmpty(section.getStatistics())) {
|
|
|
+ for (DimensionSectionStatisticsDto statisticsDto : section.getStatistics()) {
|
|
|
+ if (totalStatistics.get(statisticsDto.getCutDay()).getStatisticsValue().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ statisticsDto.setProportion(statisticsDto.getStatisticsValue().divide(totalStatistics.get(statisticsDto.getCutDay()).getStatisticsValue(), 4, BigDecimal.ROUND_HALF_DOWN));
|
|
|
+ } else {
|
|
|
+ statisticsDto.setProportion(BigDecimal.valueOf(100));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dto.setSections(sectionList);
|
|
|
+ }
|
|
|
+ return dto;
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/report")
|
|
|
+ @ApiOperation(value = "导出维度", httpMethod = "GET")
|
|
|
+ public void report(@RequestParam("id") Integer id, @RequestParam(value = "startTime", required = false) String startTime, @RequestParam(value = "endTime", required = false) String endTime, @RequestParam(value = "timeInterval", required = false) String timeInterval, HttpServletResponse response) {
|
|
|
+ if (id == null) {
|
|
|
+ log.info("关系id为空");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotBlank(timeInterval) && !StrUtil.equals("null", timeInterval)) {
|
|
|
+ if (Integer.valueOf(timeInterval) == -1) {
|
|
|
+ startTime = null;
|
|
|
+ endTime = null;
|
|
|
+ } else {
|
|
|
+ startTime = (DateUtil.format(DateUtil.offsetDay(DateUtil.date(), -Integer.valueOf(timeInterval)), "yyyy-MM-dd") + " 00:00:00");
|
|
|
+ endTime = (DateUtil.format(DateUtil.yesterday(), "yyyy-MM-dd") + " 00:00:00");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ SpectacularsDimension spectacularsDimension = spectacularsDimensionService.findBy("id", id);
|
|
|
+ if (spectacularsDimension == null) {
|
|
|
+ log.info("SpectacularsDimension 未找到");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Dimension dimension = dimensionService.findById(spectacularsDimension.getDimensionId());
|
|
|
+ if (dimension == null) {
|
|
|
+ log.info("dimension 未找到");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Condition c = new Condition(DimensionSection.class);
|
|
|
+ c.createCriteria().andEqualTo("dimensionId", dimension.getId());
|
|
|
+ List<DimensionSection> sections = dimensionSectionService.findByCondition(c);
|
|
|
+ List<String> rowHead = CollUtil.newArrayList("编号", "区间名称", "日切时间", "统计值");
|
|
|
+ ExcelWriter writer = ExcelUtil.getWriter();
|
|
|
+ try {
|
|
|
+ writer.writeHeadRow(rowHead);
|
|
|
+ List<List<Object>> rows = new LinkedList<>();
|
|
|
+ if (CollUtil.isNotEmpty(sections)) {
|
|
|
+ for (DimensionSection temp : sections) {
|
|
|
+ Condition c2 = new Condition(DayStatistics.class);
|
|
|
+ Criteria cc = c2.createCriteria().andEqualTo("sectionId", temp.getId());
|
|
|
+ if (StrUtil.isNotBlank(startTime)) {
|
|
|
+ cc.andGreaterThanOrEqualTo("cutDay", startTime);
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotBlank(endTime)) {
|
|
|
+ cc.andLessThanOrEqualTo("cutDay", endTime);
|
|
|
+ }
|
|
|
+ c2.setOrderByClause("cut_day");
|
|
|
+ List<DayStatistics> statistics = dayStatisticsService.findByCondition(c2);
|
|
|
+ if (CollUtil.isNotEmpty(statistics)) {
|
|
|
+ for (DayStatistics temp2 : statistics) {
|
|
|
+ List<Object> rowA = CollUtil.newArrayList(temp2.getId(), temp2.getSectionName(), DateUtil.format(temp2.getCutDay(), "yyyy-MM-dd"), temp2.getStatisticsValue()
|
|
|
+
|
|
|
+ );
|
|
|
+ rows.add(rowA);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ log.info("导出内容为空");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ writer.write(rows);
|
|
|
+ //设置宽度自适应
|
|
|
+ writer.setColumnWidth(-1, 22);
|
|
|
+ //response为HttpServletResponse对象
|
|
|
+ response.setContentType("application/vnd.ms-excel;charset=utf-8");
|
|
|
+ //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
|
|
|
+ response.setHeader("Content-Disposition", "attachment;filename=" + new String(("数据列表").getBytes("UTF-8"), "ISO-8859-1") + ".xls");
|
|
|
+ ServletOutputStream out = response.getOutputStream();
|
|
|
+ //out为OutputStream,需要写出到的目标流
|
|
|
+ writer.flush(out);
|
|
|
+ log.info("导出结束");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("导出异常", e);
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ // 关闭writer,释放内存
|
|
|
+ writer.close();
|
|
|
+ log.info("导出结束");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 看板详情
|
|
|
+ @PostMapping("/detail")
|
|
|
+ @ApiOperation(value = "看板详情", httpMethod = "POST")
|
|
|
+ public Result<SpectacularsDto> detail(@RequestBody SpectacularsDetailParam param) {
|
|
|
+ if (param.getId() == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.ID_IS_NULL);
|
|
|
+ }
|
|
|
+ if (param.getTimeInterval() != null) {
|
|
|
+ if (param.getTimeInterval() == -1) {
|
|
|
+ param.setStartTime(null);
|
|
|
+ param.setEndTime(null);
|
|
|
+ } else {
|
|
|
+ param.setTimeInterval(param.getTimeInterval() + 1);
|
|
|
+ param.setStartTime(DateUtil.format(DateUtil.offsetDay(DateUtil.date(), -param.getTimeInterval()), "yyyy-MM-dd") + " 00:00:00");
|
|
|
+ param.setEndTime(DateUtil.format(DateUtil.yesterday(), "yyyy-MM-dd") + " 00:00:00");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ SpectacularsDto spectacularsDto = null;
|
|
|
+ try {
|
|
|
+ Spectaculars spectaculars = spectacularsService.findById(param.getId());
|
|
|
+ if (spectaculars == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.OBJECT_IS_NULL);
|
|
|
+ }
|
|
|
+ spectacularsDto = BeanUtil.toBean(spectaculars, SpectacularsDto.class);
|
|
|
+ Condition condition = new Condition(SpectacularsDimension.class);
|
|
|
+ Criteria criteria = condition.createCriteria();
|
|
|
+ criteria.andEqualTo("spectId", spectaculars.getId());
|
|
|
+ List<SpectacularsDimension> spectacularsDimensions = spectacularsDimensionService.findByCondition(condition);
|
|
|
+ String dimensionIds = "";
|
|
|
+ if (CollUtil.isEmpty(spectacularsDimensions)) {
|
|
|
+ return ResultGenerator.genSuccessResult(spectacularsDto);
|
|
|
+ }
|
|
|
+ for (SpectacularsDimension temp : spectacularsDimensions) {
|
|
|
+ dimensionIds = dimensionIds + "," + temp.getDimensionId();
|
|
|
+ }
|
|
|
+ List<Dimension> dimensions = dimensionService.findByIds(dimensionIds.substring(1));
|
|
|
+ if (CollUtil.isEmpty(dimensions)) {
|
|
|
+ return ResultGenerator.genSuccessResult(spectacularsDto);
|
|
|
+ }
|
|
|
+ for (Dimension dimension : dimensions) {
|
|
|
+ for (SpectacularsDimension temp : spectacularsDimensions) {
|
|
|
+ if (temp.getDimensionId().compareTo(dimension.getId()) == 0) {
|
|
|
+ dimension.setViewType(temp.getViewType());
|
|
|
+ dimension.setSpectacularsDimensionId(temp.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ spectacularsDto.setDimensions(dimensions.stream().map(temp -> buildDimensionDto(temp, param.getStartTime(), param.getEndTime(), param.getType(), 1, null)).collect(Collectors.toList()));
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("查询对象操作异常e:{}", e);
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
+ }
|
|
|
+ return ResultGenerator.genSuccessResult(spectacularsDto);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/list")
|
|
|
+ @ApiOperation(value = "spectaculars获取列表", httpMethod = "POST")
|
|
|
+ public Result<List<Spectaculars>> list(@RequestBody SpectacularsListParam spectaculars) {
|
|
|
+
|
|
|
+ PageHelper.startPage(spectaculars.getPage(), spectaculars.getSize());
|
|
|
+
|
|
|
+ Condition condition = new Condition(Spectaculars.class);
|
|
|
+ Criteria criteria = condition.createCriteria();
|
|
|
+ criteria.andEqualTo("userId", spectaculars.getUserId());
|
|
|
+ PageInfo pageInfo = null;
|
|
|
+ try {
|
|
|
+ List<Spectaculars> list = spectacularsService.findByCondition(condition);
|
|
|
+ pageInfo = new PageInfo(list);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("查询对象操作异常e:{}", e);
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
+ }
|
|
|
+ return ResultGenerator.genSuccessResult(pageInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/yesterdayData")
|
|
|
+ @ApiOperation(value = "获取昨日数据", httpMethod = "POST")
|
|
|
+ public Result<List<DimensionBo>> yesterdayData() {
|
|
|
+ Condition condition = new Condition(DayStatistics.class);
|
|
|
+ Criteria criteria = condition.createCriteria();
|
|
|
+ if (StrUtil.isNotBlank(ids)) {
|
|
|
+ criteria.andIn("dimensionId", Arrays.asList(ids.split(",")));
|
|
|
+ }
|
|
|
+ criteria.andEqualTo("cutDay", DateUtil.format(DateUtil.yesterday(), "yyyy-MM-dd"));
|
|
|
+ condition.setOrderByClause("seq");
|
|
|
+ try {
|
|
|
+ List<DayStatistics> list = dayStatisticsService.findByCondition(condition);
|
|
|
+ if (CollUtil.isNotEmpty(list)) {
|
|
|
+ return ResultGenerator.genSuccessResult(list.stream().map(temp -> BeanUtil.toBean(temp, DimensionSectionBo.class)).collect(Collectors.toList()));
|
|
|
+ } else {
|
|
|
+ return ResultGenerator.genSuccessResult(new ArrayList<>());
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("查询对象操作异常e:{}", e);
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|