linzhijie
2021-03-11 93af1c6ffb9ae0e894689ad3a37b548e57d54cff
src/main/java/com/ots/project/exam/service/impl/TReportTemplateServiceImpl.java
@@ -1,4 +1,5 @@
package com.ots.project.exam.service.impl;
import com.ots.common.enums.UserTypeEnum;
import com.ots.common.utils.DateUtils;
import com.ots.common.utils.StringUtils;
@@ -18,25 +19,42 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 报告模板配置Service业务层处理
 *
 * @author ots
 * @date 2020-03-24
 */
@Service
public class TReportTemplateServiceImpl implements ITReportTemplateService {
    @Autowired
    private TReportTemplateMapper tReportTemplateMapper;
    @Autowired
    private ISysUserExtendService sysUserExtendService;
    @Autowired
    private ISysUserPaperService userPaperService;
    @Autowired
    private ITExamPaperService paperService;
    /**
     * 查询报告模板配置
     *
     * @param id 报告模板配置ID
     * @return 报告模板配置
     */
    @Override
    public TReportTemplate selectTReportTemplateById(Long id) {
        return tReportTemplateMapper.selectTReportTemplateById(id);
    }
    @Override
    public String selectTReportTemplateFilePath(TReportTemplate tReportTemplate) {
        TReportTemplate tReportTemplateResult = tReportTemplateMapper.selectTReportTemplate(tReportTemplate);
@@ -45,17 +63,26 @@
        }
        return "";
    }
    /**
     * 查询报告模板配置列表
     *
     * @param tReportTemplate 报告模板配置
     * @return 报告模板配置
     */
    @Override
    public List<TReportTemplate> selectTReportTemplateList(TReportTemplate tReportTemplate) {
        return tReportTemplateMapper.selectTReportTemplateList(tReportTemplate);
    }
    @Override
    public List<TReportTemplate> getReportTemplates(User user) {
        return getReportTemplates(user, null);
    }
    @Override
    public List<TReportTemplate> getReportTemplates(User user, Long prodId) {
        if (Objects.nonNull(prodId)) {
            TExamPaper tExamPaper = paperService.selectTExamPaperById(prodId);
            String reportTemplateId = tExamPaper.getReportTemplateId();
@@ -65,14 +92,17 @@
                item.setReportType(value);
                return item;
            }).collect(Collectors.toList());
            //取用户授权和产品包配置的交集
            if (!Objects.equals(UserTypeEnum.SYS_USER.getUserType(), user.getUserType())) {
                SysUserExtend sysUserExtend = sysUserExtendService.selectSysUserExtendById(user.getUserId());
                //查询产品包授权分配的报告模板
                SysUserPaper sysUserPaper = new SysUserPaper();
                sysUserPaper.setUserId(user.getUserId());
                sysUserPaper.setProdId(prodId);
                List<SysUserPaper> sysUserPapers = userPaperService.selectSysUserPaperList(sysUserPaper);
                List<TReportTemplate> templates = new ArrayList<>();
                for (SysUserPaper paper : sysUserPapers) {
                    String rid = paper.getReportTemplateId();
@@ -81,6 +111,7 @@
                    }
                    templates.addAll(selectTReportTemplates(rid));
                }
                List<Long> collect = ret.stream().map(pp -> pp.getId()).collect(Collectors.toList());
                List<TReportTemplate> resultTemplateList = new ArrayList<>();
                for (TReportTemplate template : templates) {
@@ -94,7 +125,7 @@
                                ArrayList::new
                        )
                );
                //根据企业用户配置的支持语言类型过滤
                if (Objects.nonNull(sysUserExtend) && Objects.nonNull(sysUserExtend.getLangType())) {
                    List<String> langTypes = Arrays.asList(sysUserExtend.getLangType().split(","));
                    tReportTemplates = tReportTemplates.stream().filter(f -> langTypes.contains(f.getLangType())).collect(Collectors.toList());
@@ -108,6 +139,7 @@
            }
            return ret;
        }
        if (Objects.equals(UserTypeEnum.SYS_USER.getUserType(), user.getUserType())) {
            TReportTemplate template = new TReportTemplate();
            List<TReportTemplate> tReportTemplates = tReportTemplateMapper.selectTReportTemplateList(template);
@@ -118,12 +150,14 @@
            }).collect(Collectors.toList());
            return ret;
        }
        //查询产品包授权分配的报告模板
        SysUserPaper sysUserPaper = new SysUserPaper();
        if (!Objects.equals(UserTypeEnum.SYS_USER.getUserType(), user.getUserType())) {
            sysUserPaper.setUserId(user.getUserId());
        }
        List<SysUserPaper> sysUserPapers = userPaperService.selectSysUserPaperList(sysUserPaper);
        List<TReportTemplate> templates = new ArrayList<>();
        for (SysUserPaper paper : sysUserPapers) {
            String reportTemplateId = paper.getReportTemplateId();
@@ -132,15 +166,16 @@
            }
            templates.addAll(selectTReportTemplates(reportTemplateId));
        }
        //对象去重
//        List<TReportTemplate> tReportTemplates = templates.stream().distinct().collect(Collectors.toList());
        List<TReportTemplate> tReportTemplates = templates.stream().collect(Collectors.collectingAndThen
                (Collectors.toCollection(() ->
                                new TreeSet<>(Comparator.comparing(t -> t.getLocation()))),
                        ArrayList::new
                )
        );
        //根据企业用户配置的支持语言类型过滤
        if (Objects.equals(UserTypeEnum.ENT_USER.getUserType(), user.getUserType())) {
            SysUserExtend sysUserExtend = sysUserExtendService.selectSysUserExtendById(user.getUserId());
            if (Objects.nonNull(sysUserExtend) && Objects.nonNull(sysUserExtend.getLangType())) {
@@ -153,8 +188,10 @@
            item.setReportType(value);
            return item;
        }).collect(Collectors.toList());
        return result;
    }
    @Override
    public List<TReportTemplate> selectTReportTemplates(String ids) {
        if (Objects.isNull(ids)) {
@@ -162,7 +199,14 @@
        }
        return tReportTemplateMapper.selectTReportTemplates(Convert.toStrArray(ids));
    }
    /**
     * 新增报告模板配置
     *
     * @param tReportTemplate 报告模板配置
     * @return 结果
     */
    @Override
    public int insertTReportTemplate(TReportTemplate tReportTemplate) {
        tReportTemplate.setCreateTime(DateUtils.getNowDate());
@@ -177,7 +221,13 @@
        }
        return tReportTemplateMapper.insertTReportTemplate(tReportTemplate);
    }
    /**
     * 修改报告模板配置
     *
     * @param tReportTemplate 报告模板配置
     * @return 结果
     */
    @Override
    public int updateTReportTemplate(TReportTemplate tReportTemplate) {
        tReportTemplate.setUpdateTime(DateUtils.getNowDate());
@@ -193,12 +243,24 @@
        }
        return tReportTemplateMapper.updateTReportTemplate(tReportTemplate);
    }
    /**
     * 删除报告模板配置对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteTReportTemplateByIds(String ids) {
        return tReportTemplateMapper.deleteTReportTemplateByIds(Convert.toStrArray(ids));
    }
    /**
     * 删除报告模板配置信息
     *
     * @param id 报告模板配置ID
     * @return 结果
     */
    public int deleteTReportTemplateById(Long id) {
        return tReportTemplateMapper.deleteTReportTemplateById(id);
    }