提交 76908ec7 authored 作者: 黄承天's avatar 黄承天

[指标]初始提交

上级 8ed6113d
package com.tykj.index.controller;
import com.google.common.collect.ImmutableMap;
import com.tykj.base.result.ResultObj;
import com.tykj.base.result.ResultUtil;
import com.tykj.index.entity.vo.ChartVO;
import com.tykj.index.entity.vo.IndexInfoVo;
import com.tykj.index.entity.vo.MouthChartVo;
import com.tykj.index.service.IndexInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@Api(tags = "指标相关接口")
@RestController
@RequestMapping("/index")
public class IndexInfoController {
@Autowired
private IndexInfoService indexInfoService;
@ApiOperation("新增单个指标 不需要传children数据")
@PostMapping
public ResponseEntity<ResultObj<Object>> save(@RequestBody IndexInfoVo indexInfoVo) {
indexInfoService.save(indexInfoVo);
return ResultUtil.success("新增成功");
}
@ApiOperation("修改单个指标 不需要传children数据")
@PutMapping
public ResponseEntity<ResultObj<Object>> update(@RequestBody IndexInfoVo indexInfoVo) {
indexInfoService.update(indexInfoVo);
return ResultUtil.success("修改成功");
}
@ApiOperation("根据parentId查询剩余可用权重")
@GetMapping("/remain/weight/{parentId}")
public ResponseEntity<Map<String, String>> checkRemainWeight(@PathVariable Integer parentId) {
Double weight = indexInfoService.checkRemainWeight(parentId);
return ResponseEntity.ok(ImmutableMap.of("weight", weight.toString()));
}
@ApiOperation("根据id查图表")
@GetMapping("/chart/{id}")
public ResponseEntity<ChartVO> queryChart(@PathVariable Integer id) {
ChartVO result = indexInfoService.querySQL(id);
return ResponseEntity.ok(result);
}
@ApiOperation("根据id 开始时间和结束时间 查询期间的多个图表数据")
@GetMapping("/chart/mouth/{id}/{start}/{end}")
public ResponseEntity<List<MouthChartVo>> queryChildrenChart(@PathVariable Integer id, @PathVariable String start, @PathVariable String end) {
List<MouthChartVo> result = indexInfoService.queryMouthCharts(id, start, end);
return ResponseEntity.ok(result);
}
@ApiOperation("根据指标id更新其上级节点的数据")
@GetMapping("/update/values/{id}")
public ResponseEntity<ResultObj<Object>> updateValues(@PathVariable Integer id) {
indexInfoService.updateValue(id);
return ResultUtil.success("同步成功");
}
@ApiOperation("查询指标列表 返回的是由根节点展开的指标数据")
@GetMapping
public ResponseEntity<List<IndexInfoVo>> findAll() {
List<IndexInfoVo> root = indexInfoService.findAll();
return ResponseEntity.ok(root);
}
@ApiOperation("删除单个指标")
@DeleteMapping("/{id}")
public ResponseEntity<ResultObj<Object>> deleteById(@PathVariable Integer id) {
indexInfoService.deleteById(id);
return ResultUtil.success("删除成功");
}
}
package com.tykj.index.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.tykj.base.entity.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
@Table
public class IndexInfo extends BaseEntity {
private String label;
private String alias;
private String description;
private String sqlContent;
private Integer level;
private Double weight;
@Column(columnDefinition = "text")
private String ranks;
private Integer parentId;
@JsonIgnore
private Integer tableId;
}
package com.tykj.index.entity.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class AreaChart {
private String name;
private List<Double> areaValues;
private List<Double> areaValues2;
private List<String> rankNames;
private List<String> rankColors;
}
package com.tykj.index.entity.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class ChartVO {
private List<String> names;
private List<Double> values;
private List<Double> values2;
private List<String> rankNames;
private List<String> rankColors;
private List<AreaChart> areaCharts;
}
package com.tykj.index.entity.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class IndexInfoVo {
@ApiModelProperty("主键")
private Integer id;
@ApiModelProperty("名称")
private String label;
@ApiModelProperty("别名 用于创建对应实体的表名")
private String alias;
@ApiModelProperty("简介")
private String description;
@ApiModelProperty("SQL内容")
private String sql;
@ApiModelProperty("层级")
private Integer level;
@ApiModelProperty("权重")
private Double weight;
@ApiModelProperty("范围")
private List<Rank> ranks;
@ApiModelProperty("下级子节点")
private List<IndexInfoVo> children;
@ApiModelProperty("上级节点id")
private Integer parentId;
}
package com.tykj.index.entity.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class MouthChartVo {
private String month;
private List<String> names;
private List<Double> values;
private List<Double> values2;
private List<String> rankNames;
private List<String> rankColors;
}
package com.tykj.index.entity.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Rank {
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("最小值")
private Double min;
@ApiModelProperty("最大值")
private Double max;
@ApiModelProperty("颜色")
private String color;
}
package com.tykj.index.init;
import com.tykj.index.repository.IndexInfoRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class InitRootIndexInfo implements CommandLineRunner {
@Autowired
private IndexInfoRepository indexInfoRepository;
@Override
public void run(String... args) {
}
}
package com.tykj.index.repository;
import com.tykj.index.entity.IndexInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface IndexInfoRepository extends JpaRepository<IndexInfo, Integer> {
List<IndexInfo> findAllByParentId(Integer parentId);
IndexInfo findByLevel(Integer level);
}
package com.tykj.model.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* 月份计算工具类
*/
public class MonthUtil {
public static SimpleDateFormat simpleDateFormatMonth = new SimpleDateFormat("yyyy-MM");
public static SimpleDateFormat simpleDateFormatDay = new SimpleDateFormat("yyyy-MM-DD");
/**
* 计算开始时间到结束时间,中间的所有月份
* @param start 开始时间 例如:2020-1
* @param end 结束时间 例如:2020-1
* @return
*/
public static List<String> getMonthList(String start, String end){
List<String> date=new ArrayList<String>();
try{
Date d1 = new SimpleDateFormat("yyyy-MM").parse(start);//定义起始日期
Date d2 = new SimpleDateFormat("yyyy-MM").parse(end);//定义结束日期
Calendar dd = Calendar.getInstance();//定义日期实例
dd.setTime(d1);//设置日期起始时间
while (dd.getTime().before(d2)) {//判断是否到结束日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
String str = sdf.format(dd.getTime());
date.add(str);
dd.add(Calendar.MONTH, 1);//进行当前日期月份加1
}
date.add(end);;//输出日期结果
}catch (Exception e){
System.out.println("异常"+e.getMessage());
}
return date;
}
public static List<String> getMountListEndNow(String start){
return getMonthList(start,new SimpleDateFormat("yyyy-MM").format(new Date()));
}
public static Date lastDay(String month){
Date parse = null;
try {
parse = simpleDateFormatMonth.parse(month);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar ca = Calendar.getInstance();
ca.setTime(parse);
ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
ca.set(Calendar.HOUR_OF_DAY,23);
ca.set(Calendar.MINUTE,59);
ca.set(Calendar.SECOND,59);
return ca.getTime();
}
public static Date firstDay(String month){
Date parse = null;
try {
parse = simpleDateFormatMonth.parse(month);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar ca = Calendar.getInstance();
ca.setTime(parse);
ca.set(Calendar.DAY_OF_MONTH,1);
return ca.getTime();
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论