龚焕茏
2024-04-26 eb806b5ec0bb72536e78c1a7fcffb94bcd24cbbe
ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
New file
@@ -0,0 +1,200 @@
package com.ycl.platform.service.impl;
import com.ycl.platform.domain.dto.CheckScoreDTO;
import com.ycl.platform.domain.entity.CheckRule;
import com.ycl.platform.domain.entity.CheckScore;
import com.ycl.platform.domain.entity.CheckTemplate;
import com.ycl.platform.domain.entity.CheckTemplateRule;
import com.ycl.platform.domain.vo.CheckScoreDetailVO;
import com.ycl.platform.mapper.CheckRuleMapper;
import com.ycl.platform.mapper.CheckScoreMapper;
import com.ycl.platform.mapper.CheckTemplateMapper;
import com.ycl.platform.mapper.CheckTemplateRuleMapper;
import com.ycl.platform.service.ICheckScoreService;
import com.ycl.system.entity.SysRole;
import com.ycl.utils.SecurityUtils;
import enumeration.general.PublishType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import utils.DateUtils;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * 考核积分明细Service业务层处理
 *
 * @author ruoyi
 * @date 2024-04-22
 */
@Service
@Slf4j
public class CheckScoreServiceImpl implements ICheckScoreService
{
    @Autowired
    private CheckScoreMapper scoreMapper;
    @Autowired
    private CheckTemplateMapper templateMapper;
    @Autowired
    private CheckTemplateRuleMapper templateRuleMapper;
    @Autowired
    private CheckRuleMapper ruleMapper;
    /**
     * 查询考核积分
     *
     * @param id 考核积分主键
     * @return 考核积分
     */
    @Override
    public CheckScoreDetailVO selectCheckScoreById(Long id)
    {
        CheckScoreDetailVO checkScoreDetailVO = new CheckScoreDetailVO();
        //根据id读取score
        CheckScore checkScore = scoreMapper.selectCheckScoreById(id);
        //读取规则以及权重
        List<CheckTemplateRule> templateRuleList = templateRuleMapper.selectListByTemplateId(checkScore.getTemplateId());
        //checkRules添加考核对象和考核时间
        List<CheckRule> checkRules = new ArrayList<>();
        CheckRule checkRule1 = new CheckRule();
        checkRule1.setRuleName("考核时间");
        checkRule1.setRuleIndex("create_time");
        CheckRule checkRule2 = new CheckRule();
        checkRule2.setRuleName("考核对象");
        checkRule2.setRuleIndex("deptId");
        //读取模板对应所有规则
        Map<String,Object> scoreMap = new HashMap<>();
        List<Integer> ruleIds = templateRuleList.stream().map(checkTemplateRule -> checkTemplateRule.getCheckRuleId())
                .collect(Collectors.toList());
        List<CheckRule> ruleIndex = ruleMapper.selectBatchIds(ruleIds);
//        checkRules.add(checkRule1);
//        checkRules.add(checkRule2);
        checkRules.addAll(ruleIndex);
        //根据examineCategory 读取不同index表
        Integer examineCategory = checkScore.getExamineCategory();
        String[] indexTableArr ={"t_check_index_car","t_check_index_face","t_check_index_video"};
        String tableName = indexTableArr[examineCategory];
        //TODO:获取当前月份 暂定 后期改为前端传
        LocalDate now = LocalDate.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
        String date = formatter.format(now);
        List<Map> map = scoreMapper.selectScoreIndex(tableName,checkScore.getDeptId(),date);
        scoreMap.put("tableData",checkRules);
        scoreMap.put("dataMap",map);
        checkScoreDetailVO.setCheckRuleList(templateRuleList);
        checkScoreDetailVO.setScoreMap(scoreMap);
        return checkScoreDetailVO;
    }
    /**
     * 查询考核积分卡片列表
     *
     * @param checkScore 考核积分
     * @return 考核积分
     */
    @Override
    public Map<Long, List<CheckScore>> selectCheckScoreList(CheckScore checkScore)
    {
        //TODO:数据权限
        //查询成绩
        List<CheckScore> checkScores = scoreMapper.selectCheckScoreList(checkScore);
        Map<Long, List<CheckScore>> deptMap = checkScores.stream().collect(Collectors.groupingBy(CheckScore::getDeptId));
        return deptMap;
    }
    /**
     * 区县详情
     *
     * @param checkScore 考核积分
     * @return 考核积分
     */
    @Override
    public List<CheckScore> page(CheckScore checkScore) {
        return scoreMapper.selectCheckScoreList(checkScore);
    }
    /**
     * 新增考核积分
     *
     * @param checkScore 考核积分
     * @return 结果
     */
    @Override
    public int insertCheckScore(CheckScore checkScore)
    {
        checkScore.setCreateTime(DateUtils.getNowDate());
        return scoreMapper.insertCheckScore(checkScore);
    }
    /**
     * 修改考核明细
     *
     * @param checkScore 考核积分明细
     * @return 结果
     */
    @Override
    public int updateCheckScore(CheckScore checkScore)
    {
        return scoreMapper.updateCheckScore(checkScore);
    }
    /**
     * 批量删除考核积分
     *
     * @param ids 需要删除的考核积分主键
     * @return 结果
     */
    @Override
    public int deleteCheckScoreByIds(Long[] ids)
    {
        return scoreMapper.deleteCheckScoreByIds(ids);
    }
    /**
     * 删除考核积分信息
     *
     * @param id 考核积分主键
     * @return 结果
     */
    @Override
    public int deleteCheckScoreById(Long id)
    {
        return scoreMapper.deleteCheckScoreById(id);
    }
    /**
     * 发布考核积分信息
     *
     * @param checkScoreDTO 考核积分
     * @return 结果
     */
    @Override
    public int publishCheckScore(CheckScoreDTO checkScoreDTO) {
        if(CollectionUtils.isEmpty(checkScoreDTO.getId())){
            return 0;
        }
        PublishType publishType = null;
        try {
            publishType = PublishType.valueOf(checkScoreDTO.getPublish());
        } catch (IllegalArgumentException e) {
            log.error("参数类型不匹配");
            throw new IllegalArgumentException("参数类型不匹配");
        }
        String code = publishType.getCode();
        checkScoreDTO.setPublish(code);
        return scoreMapper.publishCheckScore(checkScoreDTO);
    }
}