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 templateRuleList = templateRuleMapper.selectListByTemplateId(checkScore.getTemplateId()); //checkRules添加考核对象和考核时间 List checkRules = new ArrayList<>(); CheckRule checkRule1 = new CheckRule(); checkRule1.setRuleName("考核时间"); checkRule1.setRuleIndex("create_time"); CheckRule checkRule2 = new CheckRule(); checkRule2.setRuleName("考核对象"); checkRule2.setRuleIndex("deptId"); //读取模板对应所有规则 Map scoreMap = new HashMap<>(); List ruleIds = templateRuleList.stream().map(checkTemplateRule -> checkTemplateRule.getCheckRuleId()) .collect(Collectors.toList()); List 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 = 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> selectCheckScoreList(CheckScore checkScore) { //TODO:数据权限 //查询成绩 List checkScores = scoreMapper.selectCheckScoreList(checkScore); Map> deptMap = checkScores.stream().collect(Collectors.groupingBy(CheckScore::getDeptId)); return deptMap; } /** * 区县详情 * * @param checkScore 考核积分 * @return 考核积分 */ @Override public List 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); } }