fuliqi
2024-04-26 224428e399b4f4d46ddf3f15b2bbf426fb922e2c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
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);
    }
 
 
}