/* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.jfpt.healthcode.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springblade.jfpt.alarm.constant.AlarmTimeConstant; import org.springblade.jfpt.healthcode.entity.Healthcode; import org.springblade.jfpt.healthcode.mapper.healthcodeMapper; import org.springblade.jfpt.healthcode.service.IhealthcodeService; import org.springblade.jfpt.healthcode.vo.HealthcodeVO; import org.springblade.jfpt.parcel.vo.ConditionVo; import org.springframework.stereotype.Service; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * 服务实现类 * * @author BladeX * @since 2020-07-19 */ @Service public class HealthcodeServiceImpl extends ServiceImpl implements IhealthcodeService { @Override public int insert(String type, String jname, String province, String city, String district, String dtime) { return baseMapper.insert(type,jname,province,city,district,dtime); } @Override public List> selectCountr(String time) { return baseMapper.selectCountr(time); } @Override public List> selectCountz(String beginTime, String endTime) { return baseMapper.selectCountz(beginTime, endTime); } /** * 统计7天内每天红色健康码人数数量数据 * @return */ @Override public Map selectHealthcodeData() { //创建map对象 Map map = new HashMap<>(); //查询统计数据 List list = baseMapper.selectRedCodeDataStatis(); //封装数据 map.put("healthcodeData",list); //返回数据 return map; } /** * 自定义健康码分页/健康码统计图表点击事件 * @param healthcodeVO 健康码对象 * @param page 分页对象(页码) * @return */ @Override public IPage selectHealthcodeListPage(IPage page, HealthcodeVO healthcodeVO) { return page.setRecords(baseMapper.selectHealthcodeListPage(page,healthcodeVO)); } /** * 查询当前时间段红色健康码总个数 * @param conditionVo * @return */ @Override public Integer selHealthcodeTimeCount(ConditionVo conditionVo) { return baseMapper.selHealthcodeTimeCount(conditionVo); } /** * 查询当前时间段区间时间红色健康码个数 * @param conditionVo * @return */ @Override public List selHealthcodeTimeDis(ConditionVo conditionVo) { //查询当前时间段内的红色健康码数据集合 List healthcodeList = baseMapper.selRedCodeTimeData(conditionVo); if (healthcodeList.size()>0){ return getHealthcodeTimeDis(healthcodeList); } return Arrays.asList(0,0,0,0,0,0,0,0,0,0,0,0); } /** * 筛选数据,分类返回 * @param collect 集合数据 * @return */ private List getHealthcodeTimeDis(List collect) { List list = new ArrayList<>(); int count02 = 0; int count0204 = 0; int count0406 = 0; int count0608 = 0; int count0810 = 0; int count1012 = 0; int count1214 = 0; int count1416 = 0; int count1618 = 0; int count1820 = 0; int count2022 = 0; int count2224 = 0; //遍历集合 for (Healthcode healthcode:collect) { try { long hours = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(healthcode.getDtime()).getHours(); if (hours>0 && hours< AlarmTimeConstant.TWO){ count02+=1; } if (hours>=AlarmTimeConstant.TWO && hours=AlarmTimeConstant.FOUR && hours=AlarmTimeConstant.SIX && hours=AlarmTimeConstant.EIGHT && hours=AlarmTimeConstant.TEN && hours=AlarmTimeConstant.TWEKVE && hours=AlarmTimeConstant.FOURTEEN && hours=AlarmTimeConstant.SIXTEEN && hours=AlarmTimeConstant.EIGHTEEN && hours=AlarmTimeConstant.TWENTY && hours=AlarmTimeConstant.TWENTY_TWO && hours