控制层:
/**
* 首页-用户数量统计
*/
@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>
返回数据结构: