no
DESKTOP-71BH0QO\L、ming
2021-04-09 8dcf2d7c559ebcff579ab722ca1627fd806be93d
no
2个文件已添加
3个文件已修改
167 ■■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/ExportAnswerResultVo.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityQuestnaireApi.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/config/SFTPConfig.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActQuestnaireService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/ExportAnswerResultVo.java
New file
@@ -0,0 +1,11 @@
package com.panzhihua.common.model.vos.community.questnaire;
import lombok.Data;
/**
 * @Author: llming
 * @Description: 导出调查问卷答题结果记录
 */
@Data
public class ExportAnswerResultVo {
}
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityQuestnaireApi.java
@@ -1,21 +1,40 @@
package com.panzhihua.community_backstage.api;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.fastjson.JSON;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.enums.PopulIsOkEnum;
import com.panzhihua.common.enums.PopulPoliticalOutlookEnum;
import com.panzhihua.common.enums.PopulSexEnum;
import com.panzhihua.common.model.dtos.community.PageComCvtBusinessAppletsDTO;
import com.panzhihua.common.model.dtos.community.PageQuestnaireDTO;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComCvtBusinessVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationExcelVo;
import com.panzhihua.common.model.vos.community.ComMngPopulationVO;
import com.panzhihua.common.model.vos.community.questnaire.EditComActQuestnaireVo;
import com.panzhihua.common.model.vos.community.questnaire.QuestnaireVO;
import com.panzhihua.common.service.community.CommunityService;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.common.utlis.SFTPUtil;
import com.panzhihua.community_backstage.config.SFTPConfig;
import com.panzhihua.community_backstage.excel.CustomSheetWriteHandler;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
/**
 * @description: 社区通/调查问卷接口
@@ -30,6 +49,12 @@
    @Resource
    private CommunityService communityService;
    @Resource
    private SFTPConfig sftpConfig;
    static {
    }
    @ApiOperation(value = "分页查询调查问卷", response = ComCvtBusinessVO.class)
    @PostMapping("/page")
@@ -90,8 +115,71 @@
    @ApiOperation(value = "导出数据", response = ComCvtBusinessVO.class)
    @GetMapping("/export")
    public R export(@RequestBody PageComCvtBusinessAppletsDTO comCvtBusinessAppletsDTO) {
        return null;
    public R export(@RequestParam("questId") Long questId) {
        //获取登陆用户
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        //获取登陆用户绑定社区id
        Long communityId = loginUserInfo.getCommunityId();
        //生成动态模板excel通过ftp工具上传到主节点,然后返回模板下载地址
        String ftpUrl = "/mnt/data/web/excel/";
        String name = "问卷调查答题情况.xlsx";
        try {
            SFTPUtil sftp = new SFTPUtil(sftpConfig.getUserName(), sftpConfig.getPassword(), sftpConfig.getHost(), sftpConfig.getPort());
            sftp.login();
            boolean existDir = sftp.isExistDir(ftpUrl + name);
            if (!existDir) {
                String property = System.getProperty("user.dir");
                String fileName = property + File.separator + name;
                // 这里 需要指定写用哪个class去写
                // 这里 需要指定写用哪个class去写
                ExcelWriter excelWriter = null;
                InputStream inputStream = null;
                try {
                    List<ComMngPopulationVO> populList = null;
                    populList = JSON.parseArray(JSON.toJSONString(communityService.getPopulationLists(questId).getData()), ComMngPopulationVO.class);
                    List<ComMngPopulationExcelVo> populationExcelVoList = new ArrayList<>();
                    if (populList != null && populList.size() > 0) {
                        for (ComMngPopulationVO popul : populList) {
                            ComMngPopulationExcelVo populationExcelVo = new ComMngPopulationExcelVo();
                            BeanUtils.copyProperties(popul, populationExcelVo);
                            //设置性别
                            populationExcelVo.setSex(PopulSexEnum.getCnDescByName(popul.getSex()));
                            //设置政治面貌
                            populationExcelVo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(popul.getPoliticalOutlook()));
                            //设置是否租住
                            populationExcelVo.setIsRent(PopulIsOkEnum.getCnDescByName(popul.getIsRent()));
                            populationExcelVoList.add(populationExcelVo);
                        }
                    }
                    excelWriter = EasyExcel.write(fileName, ComMngPopulationExcelVo.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).registerWriteHandler(new CustomSheetWriteHandler()).build();
                    WriteSheet writeSheet = EasyExcel.writerSheet("问卷调查答题导出数据").build();
                    excelWriter.write(populationExcelVoList, writeSheet);
                    excelWriter.finish();
                    File file = new File(fileName);
                    inputStream = new FileInputStream(file);
                    sftp.uploadMore(ftpUrl, name, inputStream);
                    sftp.logout();
                    inputStream.close();
                    String absolutePath = file.getAbsolutePath();
                    boolean delete = file.delete();
                    log.info("删除excel【{}】结果【{}】", absolutePath, delete);
                } finally {
                    // 千万别忘记finish 会帮忙关闭流
                    if (inputStream != null) {
                        inputStream.close();
                    }
                    if (excelWriter != null) {
                        excelWriter.finish();
                    }
                }
            }
            return R.ok(sftpConfig.getExcelUrl() + name);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("文件传输失败【{}】", e.getMessage());
            return R.fail();
        }
    }
}
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/config/SFTPConfig.java
New file
@@ -0,0 +1,30 @@
package com.panzhihua.community_backstage.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
/**
 * @Author: llming
 * @Description:
 */
@Configuration
@Data
public class SFTPConfig {
    // FTP 登录用户名
    @Value("${ftp.username}")
    private String userName;
    // FTP 登录密码
    @Value("${ftp.password}")
    private String password;
    // FTP 服务器地址IP地址
    @Value("${ftp.host}")
    private String host;
    // FTP 端口
    @Value("${ftp.port}")
    private int port;
    @Value("${ftp.url}")
    private String url;
    @Value("${excel.userurl}")
    private String excelUrl;
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActQuestnaireService.java
@@ -62,4 +62,11 @@
     * @param questId 问卷ID
     */
    R answerInfoQuestnaire(Long userId, Long questId);
    /**
     * 问卷答题结果
     *
     * @param questId 问卷ID
     */
    R answerResultList(Long questId);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java
@@ -176,7 +176,7 @@
    }
    @Override
    public R statQuestnaire(Long questId){
    public R statQuestnaire(Long questId) {
        ComActQuestnaireDO comActQuestnaireDO = questnaireDAO.selectById(questId);
        QuestnaireAnswerStatVO usersAnswerStatVO = new QuestnaireAnswerStatVO();
@@ -193,7 +193,7 @@
        List<UsersSubAnswerStatVO> usersSubAnswerStatVOList = new ArrayList<>();
        comActQuestnaireSubDOList.forEach(comActQuestnaireSubDO->{
        comActQuestnaireSubDOList.forEach(comActQuestnaireSubDO -> {
            UsersSubAnswerStatVO usersSubAnswerStatVO = new UsersSubAnswerStatVO();
            ComActQuestnaireSubVO comActQuestnaireSubVO = new ComActQuestnaireSubVO();
@@ -203,13 +203,13 @@
            List<UserSubAnswerSelectionStatVO> userSubAnswerSelectionStatVOList = new ArrayList<>();
            usersSubAnswerStatVO.setTotal(0);
            usearSubAnswerSelectionStatVOList.forEach(stat ->{
                if(stat.getSubId()==comActQuestnaireSubDO.getId()){
            usearSubAnswerSelectionStatVOList.forEach(stat -> {
                if (stat.getSubId() == comActQuestnaireSubDO.getId()) {
                    userSubAnswerSelectionStatVOList.add(stat);
                }
            });
            usersSubAnswerStatVO.setUsersAnswer(userSubAnswerSelectionStatVOList);
            Integer count = questnaireAnswerContentDAO.selectCount(new QueryWrapper<ComActQuestnaireAnswerContentDO>().select(" DISTINCT sub_id, user_id ").lambda().eq(ComActQuestnaireAnswerContentDO::getSubId,comActQuestnaireSubDO.getId()));
            Integer count = questnaireAnswerContentDAO.selectCount(new QueryWrapper<ComActQuestnaireAnswerContentDO>().select(" DISTINCT sub_id, user_id ").lambda().eq(ComActQuestnaireAnswerContentDO::getSubId, comActQuestnaireSubDO.getId()));
            usersSubAnswerStatVO.setTotal(count);
            usersSubAnswerStatVOList.add(usersSubAnswerStatVO);
        });
@@ -226,8 +226,8 @@
    public R answerInfoQuestnaire(Long userId, Long questId) {
        ComActQuestnaireDO comActQuestnaireDO = questnaireDAO.selectById(questId);
        if(comActQuestnaireDO==null){
            return  R.fail("问卷不存在!");
        if (comActQuestnaireDO == null) {
            return R.fail("问卷不存在!");
        }
        UsersAnswerVO usersAnswerVO = new UsersAnswerVO();
@@ -239,7 +239,7 @@
        list.sort(Comparator.comparing(ComActQuestnaireSubDO::getSort).reversed());
        List<UsersSubAnswerVO> usersSubAnswerVOList = new ArrayList<>();
        list.forEach(comActQuestnaireSubDO ->{
        list.forEach(comActQuestnaireSubDO -> {
                    UsersSubAnswerVO usersSubAnswerVO = new UsersSubAnswerVO();
                    //问卷调查题目
                    ComActQuestnaireSubVO comActQuestnaireSubVO = new ComActQuestnaireSubVO();
@@ -260,7 +260,7 @@
                    });
                    usersSubAnswerVO.setQuestSelectionList(comActQuestnaireSubSelectionVOs);
                    //用户回答
                    if(userId!=null) {
                    if (userId != null) {
                        List<ComActQuestnaireAnswerContentDO> questnaireAnswerContentDOList =
                                questnaireAnswerContentDAO.selectList(new QueryWrapper<ComActQuestnaireAnswerContentDO>().lambda().eq(ComActQuestnaireAnswerContentDO::getUserId, userId)
                                        .eq(ComActQuestnaireAnswerContentDO::getSubId, subId));
@@ -281,4 +281,13 @@
        return R.ok(usersAnswerVO);
    }
    @Override
    public R answerResultList(Long questId) {
        LambdaQueryWrapper<ComActQuestnaireSubDO> subParam = new LambdaQueryWrapper<ComActQuestnaireSubDO>().eq(ComActQuestnaireSubDO::getQueId, questId);
        List<ComActQuestnaireSubDO> subDOS = questnaireSubDAO.selectList(subParam);
        new LambdaQueryWrapper<ComActQuestnaireAnswerContentDO>().eq(ComActQuestnaireAnswerContentDO::get)
        questnaireAnswerContentDAO.selectList()
    }
}