package com.ycl.platform.service.impl;
|
|
import annotation.DataScope;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ycl.platform.base.CheckIndex;
|
import com.ycl.platform.domain.dto.CheckResultExportDTO;
|
import com.ycl.platform.domain.dto.CheckScoreDTO;
|
import com.ycl.platform.domain.dto.CheckScoreIndexDTO;
|
import com.ycl.platform.domain.dto.ScoreIndexDTO;
|
import com.ycl.platform.domain.entity.*;
|
import com.ycl.platform.domain.query.DashboardQuery;
|
import com.ycl.platform.domain.vo.*;
|
import com.ycl.platform.mapper.*;
|
import com.ycl.platform.service.ICheckIndexCarService;
|
import com.ycl.platform.service.ICheckIndexFaceService;
|
import com.ycl.platform.service.ICheckIndexVideoService;
|
import com.ycl.platform.service.ICheckScoreService;
|
import com.ycl.system.entity.BaseEntity;
|
import com.ycl.system.entity.SysRole;
|
import com.ycl.system.entity.SysUser;
|
import com.ycl.system.service.ISysDeptService;
|
import com.ycl.utils.DateUtils;
|
import com.ycl.utils.SecurityUtils;
|
import com.ycl.utils.StringUtils;
|
import constant.CheckConstants;
|
import enumeration.general.AreaDeptEnum;
|
import enumeration.general.PublishType;
|
import jakarta.servlet.http.HttpServletResponse;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.CollectionUtils;
|
import pojo.ExcelExp;
|
import utils.poi.ExcelUtilManySheet;
|
|
import java.io.IOException;
|
import java.math.BigDecimal;
|
import java.math.RoundingMode;
|
import java.net.InetAddress;
|
import java.text.SimpleDateFormat;
|
import java.time.LocalDateTime;
|
import java.util.*;
|
import java.util.function.Function;
|
import java.util.stream.Collectors;
|
|
/**
|
* 考核积分明细Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2024-04-22
|
*/
|
@Service
|
@Slf4j
|
public class CheckScoreServiceImpl extends ServiceImpl<CheckScoreMapper, CheckScore> implements ICheckScoreService {
|
@Autowired
|
private CheckScoreMapper scoreMapper;
|
@Autowired
|
private CheckTemplateMapper templateMapper;
|
@Autowired
|
private CheckTemplateRuleMapper templateRuleMapper;
|
@Autowired
|
private CheckRuleMapper ruleMapper;
|
@Autowired
|
private ICheckIndexCarService indexCarService;
|
@Autowired
|
private ICheckIndexFaceService indexFaceService;
|
@Autowired
|
private ICheckIndexVideoService indexVideoService;
|
@Autowired
|
private ISysDeptService deptService;
|
@Autowired
|
private PlatformMapper platformMapper;
|
|
/**
|
* 查询考核积分指标
|
*
|
* @param id 考核积分主键
|
* @return 考核积分
|
*/
|
@Override
|
@DataScope(deptAlias = "d", userAlias = "u")
|
public CheckScoreDetailVO selectCheckScoreById(CheckScoreIndexDTO checkScoreIndexDTO) {
|
Long checkScoreId = checkScoreIndexDTO.getId();
|
|
CheckScoreDetailVO checkScoreDetailVO = new CheckScoreDetailVO();
|
//根据id读取score
|
CheckScore checkScore = scoreMapper.selectCheckScoreById(checkScoreId);
|
Integer templateId = 0;
|
//方便切换改为:根据score考核类别和dto考核标签查模板规则和权重,注意同种类同标签只能有一个模板
|
QueryWrapper<CheckTemplate> wrapper = new QueryWrapper<>();
|
wrapper.eq("examine_tag", checkScoreIndexDTO.getExamineTag());
|
wrapper.eq("examine_category", checkScore.getExamineCategory());
|
Optional<CheckTemplate> first = templateMapper.selectList(wrapper).stream().findFirst();
|
if (first.isPresent()) {
|
CheckTemplate checkTemplate = first.get();
|
templateId = checkTemplate.getId();
|
}
|
//读取规则以及权重
|
List<CheckTemplateRule> templateRuleList = templateRuleMapper.selectListByTemplateId(templateId);
|
|
List<CheckRule> checkRules = new ArrayList<>();
|
//读取模板对应所有规则
|
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.addAll(ruleIndex);
|
//根据examineCategory 读取不同index表
|
Short examineCategory = checkScore.getExamineCategory();
|
String[] indexTableArr = {"", "t_check_index_video", "t_check_index_car", "t_check_index_face"};
|
String tableName = indexTableArr[examineCategory];
|
|
ScoreIndexDTO scoreIndexDTO = new ScoreIndexDTO()
|
.setTableName(tableName)
|
.setDeptId(checkScore.getDeptId())
|
.setDate(checkScoreIndexDTO.getDate())
|
.setQuarter(checkScoreIndexDTO.getQuarter());
|
scoreIndexDTO.setParams(checkScoreIndexDTO.getParams());
|
scoreIndexDTO.setExamineTag(checkScoreIndexDTO.getExamineTag());
|
//获当月份
|
if (StringUtils.isEmpty(scoreIndexDTO.getDate()) && CollectionUtils.isEmpty(checkScoreIndexDTO.getQuarter())) {
|
//如果查询条件不含参数,查询积分对应创建时间
|
Date createTime = checkScore.getCreateTime();
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM");
|
scoreIndexDTO.setDate(formatter.format(createTime));
|
}
|
|
//权限控制
|
roleControl(scoreIndexDTO);
|
List<Map> map = scoreMapper.selectScoreIndex(scoreIndexDTO);
|
|
scoreMap.put("tableData", checkRules);
|
scoreMap.put("dataMap", map);
|
|
checkScoreDetailVO.setCheckRuleList(templateRuleList);
|
checkScoreDetailVO.setScoreMap(scoreMap);
|
return checkScoreDetailVO;
|
}
|
|
|
/**
|
* 查询考核积分卡片列表
|
*
|
* @param checkScore 考核积分
|
* @return 考核积分
|
*/
|
@Override
|
@DataScope(deptAlias = "d", userAlias = "u")
|
public Map<Long, List<CheckScore>> selectCheckScoreList(CheckScore checkScore) {
|
//区县只能看已发布
|
roleControl(checkScore);
|
|
// 获取数据日期时间
|
Calendar calendar = Calendar.getInstance();
|
getCheckScore(checkScore, calendar);
|
|
// 一号查询之前的数据
|
if (LocalDateTime.now().getDayOfMonth() == 1) {
|
calendar.add(Calendar.DAY_OF_MONTH, -1);
|
}
|
|
List<CheckScore> checkScores = scoreMapper.selectCheckScoreMap(checkScore);
|
|
// 如果数据为空,则查询之前的数据
|
if (checkScores.isEmpty()) {
|
CheckScore one = scoreMapper.getLast(checkScore);
|
if (Objects.nonNull(one)) {
|
calendar.setTime(one.getCreateTime());
|
getCheckScore(checkScore, calendar);
|
checkScores = scoreMapper.selectCheckScoreMap(checkScore);
|
}
|
}
|
//分数保留一位小数
|
checkScores.stream().forEach(item -> item.setScore(item.getScore().setScale(1, RoundingMode.HALF_UP)));
|
return checkScores.stream().collect(Collectors.groupingBy(CheckScore::getDeptId));
|
}
|
|
private void getCheckScore(CheckScore checkScore, Calendar calendar) {
|
// 0.省厅月度 1.省厅季度 2.市局月度 3.市局季度 4.公安部月度 5.公安部季度
|
switch (checkScore.getExamineTag()) {
|
case 0, 2 ,4:
|
checkScore.setEndDate(calendar.getTime());
|
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
checkScore.setStartDate(calendar.getTime());
|
if(checkScore.getExamineTag() == 0) checkScore.setExamineTag(Integer.valueOf(CheckConstants.Examine_Tag_Province+""));
|
if(checkScore.getExamineTag() == 2) checkScore.setExamineTag(Integer.valueOf(CheckConstants.Examine_Tag_County+""));
|
if(checkScore.getExamineTag() == 4) checkScore.setExamineTag(Integer.valueOf(CheckConstants.Examine_Tag_Dept+""));
|
break;
|
case 1, 3, 5:
|
checkScore.setStartDate(DateUtils.getQuarterStart(calendar).getTime());
|
checkScore.setEndDate(DateUtils.getQuarterEnd(calendar).getTime());
|
if(checkScore.getExamineTag() == 1) checkScore.setExamineTag(Integer.valueOf(CheckConstants.Examine_Tag_Province+""));
|
if(checkScore.getExamineTag() == 3) checkScore.setExamineTag(Integer.valueOf(CheckConstants.Examine_Tag_County+""));
|
if(checkScore.getExamineTag() == 5) checkScore.setExamineTag(Integer.valueOf(CheckConstants.Examine_Tag_Dept+""));
|
break;
|
}
|
}
|
|
/**
|
* 查询考核积分卡片折线图
|
*
|
* @param checkScore 考核积分
|
* @return 考核积分
|
*/
|
@Override
|
@DataScope(deptAlias = "d", userAlias = "u")
|
public Map<Long, List<CheckScore>> selectCheckScoreChart(CheckScore checkScore) {
|
//区县只能看已发布
|
roleControl(checkScore);
|
|
//查询成绩
|
String date = checkScore.getDate();
|
if (StringUtils.isEmpty(date)) {
|
//如果为空查本月的数据
|
Calendar now = Calendar.getInstance();
|
//取昨天
|
// now.add(Calendar.DATE, -1);
|
Date yesterday = now.getTime();
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
|
date = simpleDateFormat.format(yesterday);
|
checkScore.setDate(date);
|
}
|
List<CheckScore> checkScores = scoreMapper.selectCheckScoreList(checkScore);
|
//分数保留一位小数
|
checkScores.stream().forEach(item -> item.setScore(item.getScore().setScale(1, RoundingMode.HALF_UP)));
|
return checkScores.stream().collect(Collectors.groupingBy(CheckScore::getDeptId));
|
}
|
|
/**
|
* 区县详情
|
*
|
* @param checkScore 考核积分
|
* @return 考核积分
|
*/
|
@Override
|
@DataScope(deptAlias = "d", userAlias = "u")
|
public List<CheckScore> page(CheckScore checkScore) {
|
//区县只能看已发布
|
roleControl(checkScore);
|
List<CheckScore> scoreList = scoreMapper.selectCheckScoreList(checkScore);
|
scoreList.stream().forEach(item -> item.setScore(item.getScore().setScale(1, RoundingMode.HALF_UP)));
|
return scoreList;
|
}
|
|
/**
|
* 发布考核积分信息
|
*
|
* @param checkScoreDTO 考核积分
|
* @return 结果
|
*/
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public int publishCheckScore(CheckScoreDTO checkScoreDTO) {
|
if (CollectionUtils.isEmpty(checkScoreDTO.getId())) {
|
return 0;
|
}
|
PublishType publishType = null;
|
try {
|
publishType = PublishType.valueOf(checkScoreDTO.getPublish());
|
} catch (IllegalArgumentException e) {
|
throw new IllegalArgumentException("参数类型不匹配");
|
}
|
String code = publishType.getCode();
|
checkScoreDTO.setPublish(code);
|
int i = scoreMapper.publishCheckScore(checkScoreDTO);
|
//控制index表的发布状态
|
List<Integer> ids = checkScoreDTO.getId();
|
QueryWrapper<CheckScore> queryWrapper = new QueryWrapper<>();
|
queryWrapper.in("id", ids);
|
List<CheckScore> scoreList = scoreMapper.selectList(queryWrapper);
|
//最多为3次循环
|
for (CheckScore checkScore : scoreList) {
|
Short examineCategory = checkScore.getExamineCategory();
|
if (CheckConstants.Rule_Category_Video.equals(examineCategory)) {
|
UpdateWrapper<CheckIndexVideo> updateWrapper = new UpdateWrapper<>();
|
updateWrapper.set("publish", code);
|
updateWrapper.eq("id", checkScore.getIndexId());
|
indexVideoService.update(updateWrapper);
|
} else if (CheckConstants.Rule_Category_Car.equals(examineCategory)) {
|
UpdateWrapper<CheckIndexCar> updateWrapper = new UpdateWrapper<>();
|
updateWrapper.set("publish", code);
|
updateWrapper.eq("id", checkScore.getIndexId());
|
indexCarService.update(updateWrapper);
|
} else if (CheckConstants.Rule_Category_Face.equals(examineCategory)) {
|
UpdateWrapper<CheckIndexFace> updateWrapper = new UpdateWrapper<>();
|
updateWrapper.set("publish", code);
|
updateWrapper.eq("id", checkScore.getIndexId());
|
indexFaceService.update(updateWrapper);
|
}
|
}
|
return i;
|
}
|
|
/**
|
* 导出指标
|
*
|
* @param checkScore 考核积分
|
* @return 考核积分
|
*/
|
@Override
|
public void exportIndex(HttpServletResponse response, CheckResultExportDTO exportDTO) throws IOException {
|
//没有标签默认全导
|
if(CollectionUtils.isEmpty(exportDTO.getExamineTags())){
|
exportDTO.setExamineTags(Arrays.asList(0,1,2));
|
}
|
/** 导三张sheet */
|
//车辆
|
List<CheckIndexCar> checkIndexCars = new ArrayList<>();
|
//车辆和人脸没有公安部
|
for (Integer examineTag : exportDTO.getExamineTags()) {
|
if(examineTag ==2) continue;
|
CheckIndexCar checkIndexCar = new CheckIndexCar();
|
// checkIndexCar.setDate(date);
|
checkIndexCar.setQuarter(exportDTO.getQuarter());
|
checkIndexCar.setDeptId(exportDTO.getDeptId());
|
checkIndexCar.setDeptIds(exportDTO.getDeptIds());
|
//权限控制 只能查看已发布
|
roleControl(checkIndexCar);
|
checkIndexCar.setExamineTag(Short.valueOf(examineTag + ""));
|
if (examineTag == 0) {
|
checkIndexCar.setProvinceTag(Boolean.TRUE);
|
}
|
checkIndexCars.addAll(indexCarService.selectCheckIndexCarList(checkIndexCar));
|
}
|
//计算平均值放在excel最后
|
if (exportDTO.getAverage() != null && exportDTO.getAverage() && !CollectionUtils.isEmpty(checkIndexCars)) {
|
//先区分考核标签,再区分区县
|
List<CheckIndexCar> countyList = checkIndexCars.stream().filter(car -> CheckConstants.Examine_Tag_County.equals(car.getExamineTag())).collect(Collectors.toList());
|
if (!CollectionUtils.isEmpty(countyList)) {
|
Map<Long, List<CheckIndexCar>> carMap = countyList.stream().collect(Collectors.groupingBy(CheckIndexCar::getDeptId));
|
List<CheckIndexCar> cars = new ArrayList<>();
|
carMap.forEach((deptId, list) -> {
|
CheckIndexCar car = CheckIndexCar.calculateAverage(list);
|
cars.add(car);
|
});
|
//根据积分降序
|
checkIndexCars.addAll(cars.stream().sorted(Comparator.comparing(CheckIndexCar::getScore).reversed()).collect(Collectors.toList()));
|
}
|
List<CheckIndexCar> provinceList = checkIndexCars.stream().filter(car -> CheckConstants.Examine_Tag_Province.equals(car.getExamineTag())).collect(Collectors.toList());
|
if (!CollectionUtils.isEmpty(provinceList)) {
|
Map<Long, List<CheckIndexCar>> carMap = provinceList.stream().collect(Collectors.groupingBy(CheckIndexCar::getDeptId));
|
List<CheckIndexCar> cars = new ArrayList<>();
|
carMap.forEach((deptId, list) -> {
|
CheckIndexCar car = CheckIndexCar.calculateAverage(list);
|
cars.add(car);
|
});
|
//根据积分降序
|
checkIndexCars.addAll(cars.stream().sorted(Comparator.comparing(CheckIndexCar::getScore).reversed()).collect(Collectors.toList()));
|
}
|
}
|
List<CheckIndexCarVO> checkIndexCarVOS = new ArrayList<>();
|
for (CheckIndexCar indexCar : checkIndexCars) {
|
CheckIndexCarVO excelVo = CheckIndexCar.getExcelVo(indexCar);
|
checkIndexCarVOS.add(excelVo);
|
}
|
ExcelExp e1 = new ExcelExp("车辆考核指标数据", checkIndexCarVOS, CheckIndexCarVO.class);
|
|
//人脸
|
List<CheckIndexFace> checkIndexFaces = new ArrayList<>();
|
for (Integer examineTag : exportDTO.getExamineTags()) {
|
if(examineTag ==2) continue;
|
CheckIndexFace checkIndexFace = new CheckIndexFace();
|
// checkIndexFace.setDate(date);
|
checkIndexFace.setQuarter(exportDTO.getQuarter());
|
checkIndexFace.setDeptId(exportDTO.getDeptId());
|
checkIndexFace.setDeptIds(exportDTO.getDeptIds());
|
//权限控制 只能查看已发布
|
roleControl(checkIndexFace);
|
checkIndexFace.setExamineTag(Short.valueOf(examineTag + ""));
|
if (examineTag == 0) {
|
checkIndexFace.setProvinceTag(Boolean.TRUE);
|
}
|
checkIndexFaces.addAll(indexFaceService.selectCheckIndexFaceList(checkIndexFace));
|
}
|
//计算平均值放在excel最后
|
if (exportDTO.getAverage() != null && exportDTO.getAverage() && !CollectionUtils.isEmpty(checkIndexFaces)) {
|
//先区分考核标签,再区分区县
|
List<CheckIndexFace> countyList = checkIndexFaces.stream().filter(face -> CheckConstants.Examine_Tag_County.equals(face.getExamineTag())).collect(Collectors.toList());
|
if (!CollectionUtils.isEmpty(countyList)) {
|
Map<Long, List<CheckIndexFace>> faceMap = countyList.stream().collect(Collectors.groupingBy(CheckIndexFace::getDeptId));
|
List<CheckIndexFace> faces = new ArrayList<>();
|
faceMap.forEach((deptId, list) -> {
|
CheckIndexFace face = CheckIndexFace.calculateAverage(list);
|
faces.add(face);
|
});
|
//根据积分降序
|
checkIndexFaces.addAll(faces.stream().sorted(Comparator.comparing(CheckIndexFace::getScore).reversed()).collect(Collectors.toList()));
|
}
|
List<CheckIndexFace> provinceList = checkIndexFaces.stream().filter(face -> CheckConstants.Examine_Tag_Province.equals(face.getExamineTag())).collect(Collectors.toList());
|
if (!CollectionUtils.isEmpty(provinceList)) {
|
Map<Long, List<CheckIndexFace>> faceMap = provinceList.stream().collect(Collectors.groupingBy(CheckIndexFace::getDeptId));
|
List<CheckIndexFace> faces = new ArrayList<>();
|
faceMap.forEach((deptId, list) -> {
|
CheckIndexFace face = CheckIndexFace.calculateAverage(list);
|
faces.add(face);
|
});
|
//根据积分降序
|
checkIndexFaces.addAll(faces.stream().sorted(Comparator.comparing(CheckIndexFace::getScore).reversed()).collect(Collectors.toList()));
|
}
|
}
|
List<CheckIndexFaceVO> checkIndexFaceVOS = new ArrayList<>();
|
for (CheckIndexFace indexFace : checkIndexFaces) {
|
CheckIndexFaceVO excelVo = CheckIndexFace.getExcelVo(indexFace);
|
checkIndexFaceVOS.add(excelVo);
|
}
|
ExcelExp e2 = new ExcelExp("人脸考核指标数据", checkIndexFaceVOS, CheckIndexFaceVO.class);
|
|
//视频
|
List<CheckIndexVideo> checkIndexVideos = new ArrayList<>();
|
for (Integer examineTag : exportDTO.getExamineTags()) {
|
CheckIndexVideo checkIndexVideo = new CheckIndexVideo();
|
// checkIndexVideo.setDate(date);
|
checkIndexVideo.setQuarter(exportDTO.getQuarter());
|
checkIndexVideo.setDeptId(exportDTO.getDeptId());
|
checkIndexVideo.setDeptIds(exportDTO.getDeptIds());
|
//权限控制 只能查看已发布
|
roleControl(checkIndexVideo);
|
checkIndexVideo.setExamineTag(Short.valueOf(examineTag + ""));
|
if (examineTag == 0) {
|
checkIndexVideo.setProvinceTag(Boolean.TRUE);
|
}else if(examineTag ==2){
|
//只有视频有公安部数据
|
checkIndexVideo.setDeptTag(Boolean.TRUE);
|
}
|
checkIndexVideos.addAll(indexVideoService.selectCheckIndexVideoList(checkIndexVideo));
|
}
|
//计算平均值放在excel最后
|
if (exportDTO.getAverage() != null && exportDTO.getAverage() && !CollectionUtils.isEmpty(checkIndexVideos)) {
|
//先区分考核标签,再区分区县
|
List<CheckIndexVideo> countyList = checkIndexVideos.stream().filter(video -> CheckConstants.Examine_Tag_County.equals(video.getExamineTag())).collect(Collectors.toList());
|
if (!CollectionUtils.isEmpty(countyList)) {
|
Map<Long, List<CheckIndexVideo>> videoMap = countyList.stream().collect(Collectors.groupingBy(CheckIndexVideo::getDeptId));
|
List<CheckIndexVideo> videos = new ArrayList<>();
|
videoMap.forEach((deptId, list) -> {
|
CheckIndexVideo video = CheckIndexVideo.calculateAverage(list);
|
videos.add(video);
|
});
|
//根据积分降序
|
checkIndexVideos.addAll(videos.stream().sorted(Comparator.comparing(CheckIndexVideo::getScore).reversed()).collect(Collectors.toList()));
|
}
|
List<CheckIndexVideo> provinceList = checkIndexVideos.stream().filter(video -> CheckConstants.Examine_Tag_Province.equals(video.getExamineTag())).collect(Collectors.toList());
|
if (!CollectionUtils.isEmpty(provinceList)) {
|
Map<Long, List<CheckIndexVideo>> videoMap = provinceList.stream().collect(Collectors.groupingBy(CheckIndexVideo::getDeptId));
|
List<CheckIndexVideo> videos = new ArrayList<>();
|
videoMap.forEach((deptId, list) -> {
|
CheckIndexVideo video = CheckIndexVideo.calculateAverage(list);
|
videos.add(video);
|
});
|
//根据积分降序
|
checkIndexVideos.addAll(videos.stream().sorted(Comparator.comparing(CheckIndexVideo::getScore).reversed()).collect(Collectors.toList()));
|
}
|
List<CheckIndexVideo> deptList = checkIndexVideos.stream().filter(video -> CheckConstants.Examine_Tag_Dept.equals(video.getExamineTag())).collect(Collectors.toList());
|
if (!CollectionUtils.isEmpty(deptList)) {
|
Map<Long, List<CheckIndexVideo>> videoMap = deptList.stream().collect(Collectors.groupingBy(CheckIndexVideo::getDeptId));
|
List<CheckIndexVideo> videos = new ArrayList<>();
|
videoMap.forEach((deptId, list) -> {
|
CheckIndexVideo video = CheckIndexVideo.calculateAverage(list);
|
videos.add(video);
|
});
|
//根据积分降序
|
checkIndexVideos.addAll(videos.stream().sorted(Comparator.comparing(CheckIndexVideo::getScore).reversed()).collect(Collectors.toList()));
|
}
|
}
|
List<CheckIndexVideoVO> checkIndexVideoVOS = new ArrayList<>();
|
for (CheckIndexVideo indexVideo : checkIndexVideos) {
|
CheckIndexVideoVO excelVo = CheckIndexVideo.getExcelVo(indexVideo);
|
checkIndexVideoVOS.add(excelVo);
|
}
|
ExcelExp e3 = new ExcelExp("视频考核指标数据", checkIndexVideoVOS, CheckIndexVideoVO.class);
|
|
List<ExcelExp> mysheet = new ArrayList<>();
|
mysheet.add(e1);
|
mysheet.add(e2);
|
mysheet.add(e3);
|
//规则明细
|
List<RuleExcelVO> allRuleTemplate = templateRuleMapper.getAllRuleTemplate();
|
//整合数据
|
List<RuleExcelVO> countyRuleList = allRuleTemplate.stream().filter(vo -> vo.getExamineTag().equals(Integer.parseInt(CheckConstants.Examine_Tag_County + ""))).collect(Collectors.toList());
|
List<RuleExcelVO> provinceRuleList = allRuleTemplate.stream().filter(vo -> vo.getExamineTag().equals(Integer.parseInt(CheckConstants.Examine_Tag_Province + ""))).collect(Collectors.toList());
|
//用区县规则做主体展示
|
for (RuleExcelVO countyRule : countyRuleList) {
|
countyRule.setCountyWeight(countyRule.getWeight());
|
//筛选同种规则权重
|
for (RuleExcelVO provinceRule : provinceRuleList) {
|
if (provinceRule.getRuleId().equals(countyRule.getRuleId()) && provinceRule.getExamineCategory().equals(countyRule.getExamineCategory())) {
|
countyRule.setProvinceWeight(provinceRule.getWeight());
|
}
|
}
|
}
|
ExcelExp e4 = new ExcelExp("规则明细", countyRuleList, RuleExcelVO.class);
|
mysheet.add(e4);
|
ExcelUtilManySheet<List<ExcelExp>> util = new ExcelUtilManySheet<>(mysheet);
|
util.exportExcelManySheet(response, mysheet);
|
|
}
|
|
private void roleControl(CheckIndex checkIndex) {
|
List<SysRole> roles = SecurityUtils.getLoginUser().getUser().getRoles();
|
SysUser user = SecurityUtils.getLoginUser().getUser();
|
if (!user.isAdmin()) {
|
for (SysRole role : roles) {
|
if (role.getPermissions().contains("check:score:role:publish")) {
|
Map<String, Object> params = checkIndex.getParams();
|
params.put("publish", PublishType.PUBLISHED.getCode());
|
}
|
}
|
}
|
}
|
|
private void roleControl(BaseEntity checkScore) {
|
List<SysRole> roles = SecurityUtils.getLoginUser().getUser().getRoles();
|
SysUser user = SecurityUtils.getLoginUser().getUser();
|
if (!user.isAdmin()) {
|
for (SysRole role : roles) {
|
if (role.getPermissions().contains("check:score:role:publish")) {
|
Map<String, Object> params = checkScore.getParams();
|
params.put("publish", PublishType.PUBLISHED.getCode());
|
}
|
}
|
}
|
}
|
|
@Override
|
public List<Map<String, Object>> home() {
|
return baseMapper.home();
|
}
|
|
|
@Override
|
public List<Map<String, Object>> calculate(String category) {
|
Calendar calendar = Calendar.getInstance();
|
Date endDate = calendar.getTime();
|
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
Date startDate = calendar.getTime();
|
return scoreMapper.calculate(startDate, endDate, category);
|
}
|
|
//大屏展示考核得分
|
@Override
|
public Map<String, Map<String, Object>> dashboard(DashboardQuery dashboardQuery) {
|
Date now = new Date();
|
dashboardQuery.setStartTime(DateUtils.getMouthStart(now));
|
dashboardQuery.setEndTime(DateUtils.getMouthEnd(now));
|
List<CheckScore> dashboard = scoreMapper.dashboard(dashboardQuery);
|
//初始化各个区县数据
|
Map<String, Map<String, Object>> resultMap = new HashMap<>();
|
for (AreaDeptEnum value : AreaDeptEnum.values()) {
|
Map<String, Object> map = new HashMap<>();
|
map.put("score", 0);
|
resultMap.put(value.getName(), map);
|
}
|
//填充各个区县数据
|
for (CheckScore checkScore : dashboard) {
|
Map<String, Object> map = new HashMap<>();
|
map.put("score", checkScore.getScore().setScale(1,RoundingMode.HALF_UP));
|
resultMap.put(checkScore.getDeptName(), map);
|
}
|
return resultMap;
|
}
|
|
// /**
|
// * 新增考核积分
|
// *
|
// * @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);
|
// }
|
}
|