Title:SpringBoot之大屏数据统计DemoCreate:2024-03-15 ◊ :453
:2024-03-15 18:45
: TabKey9 :0 :0
写个简单的Demo(大屏数据统计,仅供参考),文末有请求示例(大屏数据需要的JSON数据结构)
控制层
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
/**
* @apiNote 数据统计
* @since 2024年3月15日
* @author TabKey9
* @version 0.0.1
*/
@Slf4j
@RestController
@Api(tags = "数据统计")
@RequestMapping("/api/admin/dataCount")
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class DataCountController {
/**
* 统计数据
*/
private final DataCountService dataCountService;
@ApiOperation("获取工单的大屏数据统计")
@GetMapping("/getBigScreenDataCountOfWorkOrder")
public R getPrefaceTableCountData(@NotBlank @RequestParam String dateType) {
if ("year".equals(dateType)) {
return dataCountService.getYearDataCount();
} else if ("month".equals(dateType)) {
return dataCountService.getThisYearOfMonthDataCount();
}
return R.ok();
}
}
服务层
/**
* @apiNote 图表数据统计相关业务
* @since 2024年3月15日
* @author TabKey9
* @version 0.0.1.240315
*/
public interface DataCountService {
/**
* @apiNote 获取年份数据统计
* @return R
* @since 2024年3月15日
* @author TabKey9
*/
R getYearDataCount();
/**
* @apiNote 获取今年的月份数据统计
* @return R
* @since 2024年3月15日
* @author TabKey9
*/
R getThisYearOfMonthDataCount();
}
PO
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @apiNote 数据统计的响应数据-Po
* @since 2024年3月15日
* @author TabKey9
* @version 0.0.1
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DataCountPo {
/**
* x轴(列)
*/
@ApiModelProperty(value = "x轴(列)")
private String xAxis;
/**
* y轴(行)
*/
@ApiModelProperty(value = "y轴(行)")
private String yAxis;
}
实现层
/**
* @apiNote 图表数据统计相关业务
* @since 2024年3月15日
* @author TabKey9
* @version 0.0.1.240315
*/
@Service("demoService")
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class DemoServiceImpl extends ServiceImpl<DemoDao, DemoEntity> implements DemoService, DataCountService {
@Override
public R getYearDataCount() {
List<DataCountPo> list = demoDao.getYearDataCount();
return R.ok().setData(list);
}
@Override
public R getThisYearOfMonthDataCount() {
List<DataCountPo> list = demoDao.getThisYearOfMonthDataCount();
return R.ok().setData(list);
}
}
Dao层
/**
* demo表
* @since 2024年3月15日
* @author TabKey9
* @version 0.0.1.240315
*/
@Mapper
public interface DemoDao extends BaseMapper<DemoEntity> {
/**
* @apiNote 获取年份数据统计
* @return List<T>
* @since 2024年3月15日
* @author TabKey9
*/
List<DataCountPo> getYearDataCount();
/**
* @apiNote 获取今年的月份数据统计
* @return List<T>
* @since 2024年3月15日
* @author TabKey9
*/
List<DataCountPo> getThisYearOfMonthDataCount();
}
XML
<!-- 获取年份数据统计 -->
<select id="getYearDataCount" resultType="cn.tlip.admin.po.DataCountPo">
SELECT YEAR(create_time) AS xAxis, COUNT(*) AS yAxis
FROM cms_verify_code_work_order
GROUP BY xAxis
ORDER BY xAxis
</select>
<!-- 获取今年月份的数据统计 -->
<select id="getThisYearOfMonthDataCount" resultType="cn.tlip.admin.po.DataCountPo">
SELECT DATE_FORMAT(create_time, '%Y-%m') AS xAxis, COUNT(*) AS yAxis
FROM cms_verify_code_work_order
WHERE YEAR(create_time) = YEAR(CURRENT_DATE)
GROUP BY xAxis
ORDER BY xAxis
</select>
请求示例
http://localhost:8080/api/admin/dataCount/getBigScreenDataCountOfWorkOrder?dateType=year
// year
{
"msg": "success",
"code": 200,
"data": [
{
"xaxis": "2023",
"yaxis": "3"
},
{
"xaxis": "2024",
"yaxis": "8"
}
],
"status": 200
}
// month
{
"msg": "success",
"code": 200,
"data": [
{
"xaxis": "2024-01",
"yaxis": "2"
},
{
"xaxis": "2024-02",
"yaxis": "2"
},
{
"xaxis": "2024-03",
"yaxis": "4"
}
],
"status": 200
}