EvalGroupIndicatorHitLogServiceImpl.java 3.33 KB
package cn.fw.morax.service.data.eval.impl;


import cn.fw.morax.common.utils.PublicUtil;
import cn.fw.morax.dao.eval.EvalGroupIndicatorHitLogDao;
import cn.fw.morax.domain.db.eval.EvalGroupIndicatorHitLog;
import cn.fw.morax.domain.enums.EvalScopeEnum;
import cn.fw.morax.service.data.eval.EvalGroupIndicatorHitLogService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;

/**
 * <p>
 * 绩效组指标项 服务实现类
 * </p>
 *
 * @author jiangchao
 * @since 2022-12-09
 */
@Service
public class EvalGroupIndicatorHitLogServiceImpl extends ServiceImpl<EvalGroupIndicatorHitLogDao, EvalGroupIndicatorHitLog>
        implements EvalGroupIndicatorHitLogService {

    @Override
    public void saveUnique(EvalGroupIndicatorHitLog evalGroupIndicatorHitLog) {
        Long kpiIndicatorId = evalGroupIndicatorHitLog.getEvalGroupIndicatorId();
        LocalDate dataDate = evalGroupIndicatorHitLog.getDataDate();
        EvalGroupIndicatorHitLog hitLog = this.getOne(Wrappers.<EvalGroupIndicatorHitLog>lambdaQuery()
                .eq(EvalGroupIndicatorHitLog::getEvalGroupIndicatorId, kpiIndicatorId)
                .eq(EvalGroupIndicatorHitLog::getDataDate, dataDate)
                .eq(EvalGroupIndicatorHitLog::getPoolId, evalGroupIndicatorHitLog.getPoolId())
                .eq(EvalGroupIndicatorHitLog::getScopeType, evalGroupIndicatorHitLog.getScopeType())
                .eq(EvalGroupIndicatorHitLog::getYn, Boolean.TRUE)
        );
        if (Objects.nonNull(hitLog)) {
            evalGroupIndicatorHitLog.setId(hitLog.getId());
        }
        this.saveOrUpdate(evalGroupIndicatorHitLog);
    }

    @Override
    public Optional<EvalGroupIndicatorHitLog> getHitLog(Long evalGroupIndicatorId, Long poolId, EvalScopeEnum scopeType, LocalDate dataDate) {
        EvalGroupIndicatorHitLog indicatorHitLog = this.getOne(Wrappers.<EvalGroupIndicatorHitLog>lambdaQuery()
                .eq(EvalGroupIndicatorHitLog::getEvalGroupIndicatorId, evalGroupIndicatorId)
                .eq(EvalGroupIndicatorHitLog::getDataDate, dataDate)
                .eq(EvalGroupIndicatorHitLog::getPoolId, poolId)
                .eq(EvalGroupIndicatorHitLog::getScopeType, scopeType)
                .eq(EvalGroupIndicatorHitLog::getYn, Boolean.TRUE)
        );

        return Optional.ofNullable(indicatorHitLog);
    }

    @Override
    public List<EvalGroupIndicatorHitLog> getHitLogs(List<Long> evalGroupIndicatorIds, List<Long> poolIds, EvalScopeEnum scopeType, LocalDate dataDate) {
        if (PublicUtil.isEmpty(evalGroupIndicatorIds) || PublicUtil.isEmpty(poolIds)) {
            return new ArrayList<>();
        }
        List<EvalGroupIndicatorHitLog> indicatorHitLogs = this.list(Wrappers.<EvalGroupIndicatorHitLog>lambdaQuery()
                .in(EvalGroupIndicatorHitLog::getEvalGroupIndicatorId, evalGroupIndicatorIds)
                .eq(EvalGroupIndicatorHitLog::getDataDate, dataDate)
                .in(EvalGroupIndicatorHitLog::getPoolId, poolIds)
                .eq(EvalGroupIndicatorHitLog::getScopeType, scopeType)
                .eq(EvalGroupIndicatorHitLog::getYn, Boolean.TRUE)
        );

        return indicatorHitLogs;
    }
}