package com.finance.system.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.finance.common.basic.PageDTO;
import com.finance.common.core.domain.entity.SysUser;
import com.finance.common.exception.ServiceException;
import com.finance.common.utils.BeanUtils;
import com.finance.common.utils.CollUtils;
import com.finance.system.domain.TbBasicDataConfig;
import com.finance.system.domain.TbScore;
import com.finance.system.mapper.TbScoreMapper;
import com.finance.system.query.CalculateDetailQuery;
import com.finance.system.query.DeptCalculateDetailQuery;
import com.finance.system.query.HistoryScoreQuery;
import com.finance.system.query.ScoreCalculateDetailQuery;
import com.finance.system.query.ScoreQuery;
import com.finance.system.service.TbBasicDataConfigService;
import com.finance.system.service.TbScoreService;
import com.finance.system.vo.DeptCalculateDetailVO;
import com.finance.system.vo.ScoreCalculateDetailVO;
import com.finance.system.vo.ScoreDetailVO;
import com.finance.system.vo.ScoreRankVO;
import com.finance.system.vo.ScoreVO;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
*
* 得分表 服务实现类
*
*
* @author mitao
* @since 2024-03-13
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class TbScoreServiceImpl extends ServiceImpl implements
TbScoreService {
private final TbBasicDataConfigService basicDataConfigService;
@Override
public Page pageScore(ScoreQuery query, Page page) {
return baseMapper.pageScore(query, page);
}
@Override
public PageDTO getHistoryScore(HistoryScoreQuery query) {
ScoreQuery scoreQuery = BeanUtils.copyBean(query, ScoreQuery.class);
Page scoreVOPage = baseMapper.pageScore(scoreQuery,
new Page<>(query.getPageNum(), query.getPageSize()));
return PageDTO.of(scoreVOPage);
}
@Override
public ScoreCalculateDetailVO scoreCalculateDetail(ScoreCalculateDetailQuery query) {
//查询计算类型
TbBasicDataConfig config = basicDataConfigService.getById(query.getId());
if (Objects.isNull(config)) {
throw new ServiceException("非法参数");
}
ScoreCalculateDetailVO vo = new ScoreCalculateDetailVO();
vo.setTypeName(config.getTypeName());
vo.setCalculateType(config.getCalculateType());
Page page = new Page<>(query.getPageNum(), query.getPageSize());
Page pageVO = baseMapper.scoreCalculateDetail(query, page);
vo.setTotal(pageVO.getTotal());
vo.setPages(pageVO.getPages());
vo.setList(pageVO.getRecords());
return vo;
}
@Override
public List queryTotalScoreList() {
return baseMapper.queryTotalScoreList();
}
@Override
public ScoreRankVO queryRankAndScoreByAreaCode(String areaCode) {
return baseMapper.queryRankAndScoreByAreaCode(areaCode);
}
@Override
public List deptCalculateDetail(DeptCalculateDetailQuery query,
String nowQuarter) {
return baseMapper.deptCalculateDetail(query, nowQuarter);
}
@Override
public ScoreCalculateDetailVO fieldsDetail(CalculateDetailQuery query,
List countyList) {
//查询计算类型
TbBasicDataConfig config = basicDataConfigService.getById(query.getId());
if (Objects.isNull(config)) {
throw new ServiceException("非法参数");
}
if (CollUtils.isEmpty(countyList)) {
return new ScoreCalculateDetailVO();
}
List areaCodeList = countyList.stream().map(SysUser::getAreaCode).distinct()
.collect(Collectors.toList());
ScoreCalculateDetailVO vo = new ScoreCalculateDetailVO();
vo.setTypeName(config.getTypeName());
vo.setCalculateType(config.getCalculateType());
Page page = new Page<>(query.getPageNum(), query.getPageSize());
Page pageVO = baseMapper.fieldsDetail(query, page, areaCodeList);
vo.setTotal(pageVO.getTotal());
vo.setPages(pageVO.getPages());
vo.setList(pageVO.getRecords());
return vo;
}
}