ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2021-10-29 18:04:51  阅读:200  来源: 互联网

标签:map Map 查询 doctorUserVO MySQL put calendar 数据 countOneDayNum


控制层: 

	/**
	 * 首页-用户数量统计
	 */
	@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>

返回数据结构: 

 

标签:map,Map,查询,doctorUserVO,MySQL,put,calendar,数据,countOneDayNum
来源: https://blog.csdn.net/weixin_47297386/article/details/121039950

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有