MySQL根据日期进行查询数据,没有数据也要显示空

控制层: 

	/**
	 * 首页-用户数量统计
	 */
	@GetMapping("/countNum")
	@ApiOperationSupport(order = 2)
	@ApiOperation(value = "用户数量统计", notes = "传入doctorUserVO")
	public R countNum(DoctorUserVO doctorUserVO) {
		doctorUserVO.setTenantId(CommonUtils.getTenantId(request));
		Map<String, Object> countOneDayNum = userService.countOneDayNum(doctorUserVO);
		int countAllDayNum = userService.count(new QueryWrapper<DoctorUser>().eq("tenant_id",doctorUserVO.getTenantId()));
		Map<String, Object> map = new HashMap<>();
		map.put("count", countOneDayNum.get("count"));
		map.put("day", countOneDayNum.get("day"));
		map.put("total", countAllDayNum);
		return R.data(map);

	}

服务层接口

Map<String, Object> countOneDayNum(DoctorUserVO doctorUserVO);

服务层实现

	@Override
	public Map<String, Object> countOneDayNum(DoctorUserVO doctorUserVO) {
		List<DoctorUserVO> countOneDay = baseMapper.countOneDayNum(doctorUserVO);
		Map<String, Integer> map = new HashMap<>();
		Map<String, Integer> mapMonth = new LinkedHashMap<>();
		Map<String, Object> res = new HashMap<>();


		Calendar calendar = Calendar.getInstance();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

		for (DoctorUserVO doctorUser : countOneDay) {
			map.put(sdf.format(doctorUser.getCreateTime()), doctorUser.getCount());

		}

		for (int i = 0; i < 30; i++) {

			if (String.valueOf(map.keySet()).indexOf(sdf.format(calendar.getTime())) != -1) {
				mapMonth.put(sdf.format(calendar.getTime()), map.get(sdf.format(calendar.getTime())));
			} else {
				mapMonth.put(sdf.format(calendar.getTime()), 0);
			}
			calendar.add(Calendar.DAY_OF_MONTH, -1);
		}

		res.put("day", mapMonth.keySet());
		res.put("count", mapMonth.values());

		return res;

	}

Mapper接口

	List<DoctorUserVO> countOneDayNum(DoctorUserVO doctorUserVO);

Mapper.xml

    <select id="countOneDayNum" resultMap="userResultMap">
        SELECT
            DATE_FORMAT( du.create_time, '%Y-%m-%d' ) AS create_time,
            COUNT(*) AS count
        FROM
            doctor_user du
        WHERE
                du.tenant_id = #{tenantId}
            AND DATE_FORMAT(du.create_time, '%Y%m') <![CDATA[ = ]]> DATE_FORMAT( CURDATE( ) , '%Y%m' )
        GROUP BY
            create_time
    </select>

返回数据结构: 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值