/*
|
* 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.common.entity.HealthcodeExcel;
|
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<healthcodeMapper, Healthcode> 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<Map<String, Object>> selectCountr(String time) {
|
return baseMapper.selectCountr(time);
|
}
|
|
@Override
|
public List<Map<String, Object>> selectCountz(String beginTime, String endTime) {
|
return baseMapper.selectCountz(beginTime, endTime);
|
}
|
|
/**
|
* 统计7天内每天红色健康码人数数量数据
|
* @return
|
*/
|
@Override
|
public Map<String, Object> selectHealthcodeData() {
|
//创建map对象
|
Map<String, Object> map = new HashMap<>();
|
//查询统计数据
|
List<Integer> list = baseMapper.selectRedCodeDataStatis();
|
//封装数据
|
map.put("healthcodeData",list);
|
//返回数据
|
return map;
|
}
|
|
/**
|
* 自定义健康码分页/健康码统计图表点击事件
|
* @param healthcodeVO 健康码对象
|
* @param page 分页对象(页码)
|
* @return
|
*/
|
@Override
|
public IPage<Healthcode> selectHealthcodeListPage(IPage<Healthcode> 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<Integer> selHealthcodeTimeDis(ConditionVo conditionVo) {
|
//查询当前时间段内的红色健康码数据集合
|
List<Healthcode> 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<Integer> getHealthcodeTimeDis(List<Healthcode> collect) {
|
List<Integer> 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){
|
count0204+=1;
|
}
|
if (hours>=AlarmTimeConstant.FOUR && hours<AlarmTimeConstant.SIX){
|
count0406+=1;
|
}
|
if (hours>=AlarmTimeConstant.SIX && hours<AlarmTimeConstant.EIGHT){
|
count0608+=1;
|
}
|
if (hours>=AlarmTimeConstant.EIGHT && hours<AlarmTimeConstant.TEN){
|
count0810+=1;
|
}
|
if (hours>=AlarmTimeConstant.TEN && hours<AlarmTimeConstant.TWEKVE){
|
count1012+=1;
|
}
|
if (hours>=AlarmTimeConstant.TWEKVE && hours<AlarmTimeConstant.FOURTEEN){
|
count1214+=1;
|
}
|
if (hours>=AlarmTimeConstant.FOURTEEN && hours<AlarmTimeConstant.SIXTEEN){
|
count1416+=1;
|
}
|
if (hours>=AlarmTimeConstant.SIXTEEN && hours<AlarmTimeConstant.EIGHTEEN){
|
count1618+=1;
|
}
|
if (hours>=AlarmTimeConstant.EIGHTEEN && hours<AlarmTimeConstant.TWENTY){
|
count1820+=1;
|
}
|
if (hours>=AlarmTimeConstant.TWENTY && hours<AlarmTimeConstant.TWENTY_TWO){
|
count2022+=1;
|
}
|
if (hours>=AlarmTimeConstant.TWENTY_TWO && hours<AlarmTimeConstant.TWENTY_FOUR){
|
count2224+=1;
|
}
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
}
|
//封装数据
|
list.add(count02);
|
list.add(count0204);
|
list.add(count0406);
|
list.add(count0608);
|
list.add(count0810);
|
list.add(count1012);
|
list.add(count1214);
|
list.add(count1416);
|
list.add(count1618);
|
list.add(count1820);
|
list.add(count2022);
|
list.add(count2224);
|
//返回数据
|
return list;
|
}
|
|
/**
|
* 统计时间段内红色健康码人数数量数据
|
* @param conditionVo
|
* @return
|
*/
|
@Override
|
public Map<String, Object> selectHealthcodeTimeData(ConditionVo conditionVo) {
|
conditionVo.setStartTime(conditionVo.getStartTime().substring(0,10));
|
conditionVo.setEndTime(conditionVo.getEndTime().substring(0,10));
|
//创建map对象
|
Map<String, Object> map = new HashMap<>();
|
//查询统计数据
|
List<Integer> list = baseMapper.selectHealthcodeTimeData(conditionVo);
|
//封装数据
|
map.put("healthcodeData",list);
|
//返回数据
|
return map;
|
}
|
|
/**
|
* 导出健康码数据表格
|
* @param healthcodeVO 查询条件
|
*/
|
@Override
|
public List<HealthcodeExcel> exportHealthcode(HealthcodeVO healthcodeVO) {
|
return baseMapper.exportHealthcode(healthcodeVO);
|
}
|
|
/**
|
* 获取健康码图标数据
|
* @param healthcodeVO 查询条件
|
* @return
|
*/
|
@Override
|
public List<HealthcodeExcel> getHealthcodePie(HealthcodeVO healthcodeVO) {
|
return baseMapper.getHealthcodePie(healthcodeVO);
|
}
|
}
|