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
}