TpEEmployeeTailDaoImpl.java 9.28 KB
package com.zteits.park.dao.impl;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.xiaoleilu.hutool.util.CollectionUtil;
import com.zteits.clouds.api.apibase.bean.BizResult;
import com.zteits.clouds.api.dto.clouds.param.QueryEmployeeDetailRequest;
import com.zteits.clouds.api.dto.park.dto.EmployeeAbnormalStaTailDTO;
import com.zteits.clouds.api.dto.park.dto.EmployeeStaticDateDTO;
import com.zteits.clouds.api.dto.park.dto.EmployeeTailDTO;
import com.zteits.park.domain.*;
import com.zteits.park.mapper.TpEEmployeeAbnormalStaTailMapper;
import com.zteits.park.mapper.smapper.TpEEmployeeTailSMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import org.apache.commons.collections4.CollectionUtils;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zteits.clouds.api.apibase.constants.DataStatusEnum;
import com.zteits.clouds.api.dto.clouds.param.QueryEmployeeRequest;
import com.zteits.park.dao.TpEEmployeeTailDao;
import com.zteits.park.domain.TpEEmployeeTailExample.Criteria;
import com.zteits.park.mapper.TpEEmployeeTailMapper;

/**
 * Copyright: Copyright (c) 2019  zteits
 *
 * @Description:
 * @version: v1.0.0
 * @author: xiejianpeng
 * @date: 2019/2/14 11
 * Modification History:
 * Date             Author          Version            Description
 * ---------------------------------------------------------*
 * 2019/2/14      xiejianpeng         v1.0.0               创建
 */
@Component
public class TpEEmployeeTailDaoImpl implements TpEEmployeeTailDao {

    @Autowired
    private TpEEmployeeTailMapper tpEEmployeeTailMapper;

    @Autowired
    private TpEEmployeeTailSMapper tpEEmployeeTailSMapper;

    @Autowired
    private TpEEmployeeAbnormalStaTailMapper tpEEmployeeAbnormalStaTailMapper;

    @Override
    public int insertSelective(TpEEmployeeTail record) {
        int flg = tpEEmployeeTailMapper.insertSelective(record);
        return flg;
    }

	@Override
	public PageInfo<TpEEmployeeTail> querySignTailInfoBySignId(QueryEmployeeRequest request) {
		PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize());
        TpEEmployeeTailExample example = new TpEEmployeeTailExample();
        Criteria sql = example.createCriteria();
        sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
        sql.andSignRecordIdEqualTo(request.getSignRecordId());
        if(request.getBeginTime() != null && request.getEndTime() != null ){
        	sql.andRecordTimeBetween(request.getBeginTime(), request.getEndTime());

        }
		List<TpEEmployeeTail> list = tpEEmployeeTailMapper.selectByExample(example );
        if (CollectionUtils.isNotEmpty(list)) {
            return new PageInfo<TpEEmployeeTail>(list);
        }
        return new PageInfo<TpEEmployeeTail>(new ArrayList<TpEEmployeeTail>());
	}

    @Override
    public PageInfo<TpEEmployeeTail> querySignTailInfoByRangeTime(QueryEmployeeRequest request) {

        PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize());
        TpEEmployeeTailExample example = new TpEEmployeeTailExample();
        Criteria sql = example.createCriteria();
        sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
        sql.andChargerCodeEqualTo(request.getChargerCode());
        sql.andRecordTimeBetween(request.getBeginTime(), request.getEndTime());

        List<TpEEmployeeTail> list = tpEEmployeeTailMapper.selectByExample(example );
        if (CollectionUtils.isNotEmpty(list)) {
            return new PageInfo<>(list);
        }
        return new PageInfo<>(new ArrayList<>());
    }

    @Override
    public TpESignRecord querySignRecordPointInfoBySignId(Long signId) {
        TpESignRecord record = tpEEmployeeTailSMapper.querySignRecordPointInfoBySignId(signId);
        if(null != record && null != record.getPointAll() && record.getPointAll() != 0 ){

            BigDecimal pointAll = new BigDecimal(record.getPointAll());


            BigDecimal r100 = new BigDecimal(record.getRadius100()*100);
            BigDecimal r200 = new BigDecimal(record.getRadius200()*100);
            BigDecimal r300 = new BigDecimal(record.getRadius300()*100);
            BigDecimal r400 = new BigDecimal(record.getRadius400()*100);
            BigDecimal r500 = new BigDecimal(record.getRadius500()*100);
            BigDecimal r600 = new BigDecimal(record.getRadius600()*100);

            record.setRadius100(r100.divide(pointAll,2, RoundingMode.HALF_UP).doubleValue());
            record.setRadius200(r200.divide(pointAll,2, RoundingMode.HALF_UP).doubleValue());
            record.setRadius300(r300.divide(pointAll,2, RoundingMode.HALF_UP).doubleValue());
            record.setRadius400(r400.divide(pointAll,2, RoundingMode.HALF_UP).doubleValue());
            record.setRadius500(r500.divide(pointAll,2, RoundingMode.HALF_UP).doubleValue());
            record.setRadius600(r600.divide(pointAll,2, RoundingMode.HALF_UP).doubleValue());


        }else{
            record = new TpESignRecord();
            record.setId(signId);
            record.setPointAll(0);
            record.setRadius100(0.00);
            record.setRadius200(0.00);
            record.setRadius300(0.00);
            record.setRadius400(0.00);
            record.setRadius500(0.00);
            record.setRadius600(0.00);
        }

        return record;
    }

    @Override
    public TpESignRecordDetail querySignDetailRecordPointInfoBySignId(Long signDetailId) {
        TpESignRecordDetail record = tpEEmployeeTailSMapper.querySignRecordPointInfoBySignDetailId(signDetailId);
        if(null != record && null != record.getPointAll() && record.getPointAll() != 0 ){

            BigDecimal pointAll = new BigDecimal(record.getPointAll());


            BigDecimal r100 = new BigDecimal(record.getRadius100()*100);
            BigDecimal r200 = new BigDecimal(record.getRadius200()*100);
            BigDecimal r300 = new BigDecimal(record.getRadius300()*100);
            BigDecimal r400 = new BigDecimal(record.getRadius400()*100);
            BigDecimal r500 = new BigDecimal(record.getRadius500()*100);
            BigDecimal r600 = new BigDecimal(record.getRadius600()*100);

            record.setRadius100(r100.divide(pointAll,2, RoundingMode.HALF_UP).doubleValue());
            record.setRadius200(r200.divide(pointAll,2, RoundingMode.HALF_UP).doubleValue());
            record.setRadius300(r300.divide(pointAll,2, RoundingMode.HALF_UP).doubleValue());
            record.setRadius400(r400.divide(pointAll,2, RoundingMode.HALF_UP).doubleValue());
            record.setRadius500(r500.divide(pointAll,2, RoundingMode.HALF_UP).doubleValue());
            record.setRadius600(r600.divide(pointAll,2, RoundingMode.HALF_UP).doubleValue());


        }else{
            record = new TpESignRecordDetail();
            record.setId(signDetailId);
            record.setPointAll(0);
            record.setRadius100(0.00);
            record.setRadius200(0.00);
            record.setRadius300(0.00);
            record.setRadius400(0.00);
            record.setRadius500(0.00);
            record.setRadius600(0.00);
        }

        return record;
    }

    /**
     * 统计收费员点位异常数据
     * @param request
     * @return
     */
    @Override
    public List<EmployeeTailDTO> getEmployeeTail(QueryEmployeeDetailRequest request) {
        List<EmployeeTailDTO> result = new ArrayList<>();
        TpEEmployeeTailExample example = new TpEEmployeeTailExample();
        Criteria sql = example.createCriteria();
        sql.andDataStateEqualTo(DataStatusEnum.DATA_STATUS_VALID.value());
        sql.andChargerCodeEqualTo(request.getChargerCode());
        sql.andRecordTimeBetween(request.getBeginTime(), request.getEndTime());
        List<TpEEmployeeTail> list = tpEEmployeeTailMapper.selectByExample(example );
        if (CollectionUtil.isNotEmpty(list)) {
            for (TpEEmployeeTail i : list) {
                EmployeeTailDTO dto = new EmployeeTailDTO();
                BeanUtils.copyProperties(i, dto);
                result.add(dto);
            }
        }
        return result;
    }

    /**
     * 插入到收费员点位统计数据表中
     * @param tailDto
     */
    @Override
    public void insertEmployeeAbnormalStaTail(EmployeeAbnormalStaTailDTO tailDto) {
        TpEEmployeeAbnormalStaTail tail = new TpEEmployeeAbnormalStaTail();
        tail.setStaticDate(tailDto.getStaticDate());
        tail.setChargerCode(tailDto.getChargerCode());
        tail.setChargerName(tailDto.getChargerName());
        tail.setEarliestTime(tailDto.getEarliestTime());
        tail.setThelatestTime(tailDto.getThelatestTime());
        tail.setTotalPoints(tailDto.getTotalPoints());
        tail.setAbnormalTimes(tailDto.getAbnormalTimes());
        tail.setDataState(1);
        tail.setCreateTime(new Date());
        tpEEmployeeAbnormalStaTailMapper.insert(tail);
    }

    /**
     * 按照时间分组,dat作为入参的统计时间
     * @param request
     * @return
     */
    @Override
    public List<EmployeeStaticDateDTO> getEmployeeTailDateList(QueryEmployeeDetailRequest request) {
        List<EmployeeStaticDateDTO> list = tpEEmployeeTailSMapper.getEmployeeTailDateList(request );
        return list;
    }
}