puhanshu
2021-11-18 fb2a8aa5cec0ce252a76781bdc5d6fdd41b1ec03
居家隔离修改
8个文件已修改
1个文件已添加
260 ■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/HomeQuarantineRegisterExportVO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/HomeQuarantineRegisterStatisticsVO.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComActReserveApi.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComActReserveApi.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveAnswerContentMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveAnswerContentService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveAnswerContentServiceImpl.java 140 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveAnswerContentMapper.xml 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/HomeQuarantineRegisterExportVO.java
New file
@@ -0,0 +1,27 @@
package com.panzhihua.common.model.vos.community.reserve;
import java.util.List;
import com.panzhihua.common.model.vos.community.ComActQuestnaireSubVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @title: HomeQuarantineRegisterExportVO
 * @projectName: 成都呐喊信息技术有限公司-智慧社区项目
 * @description: 居家隔离统计导出信息
 * @author: hans
 * @date: 2021/11/18 14:54
 */
@Data
@ApiModel("居家隔离统计导出信息")
public class HomeQuarantineRegisterExportVO {
    @ApiModelProperty("题目列表")
    private List<ComActQuestnaireSubVO> subs;
    @ApiModelProperty("数据集")
    private List<List<Object>> dataList;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/reserve/HomeQuarantineRegisterStatisticsVO.java
@@ -25,16 +25,22 @@
    @ApiModelProperty("用户id")
    private Long userId;
    @ApiModelProperty("提交时间")
    @ApiModelProperty("开始登记时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createAt;
    @ApiModelProperty("用户昵称")
    private String nickName;
    @ApiModelProperty("题目")
    private String reserveSubContent;
    @ApiModelProperty("用户昵称")
    @ApiModelProperty("答案")
    private String answerContent;
    @ApiModelProperty("题目id")
    private Long reserveSubId;
    @ApiModelProperty("选项类型(0 单选  1 多选 2 输入框  3 手机号 4 身份证 5 文字描述 6 日期选择 7 时间选择 8 可换行的输入框 9姓名输入框 10图片选择 11文件上传 12签名)")
    private Integer optionType;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
@@ -7275,4 +7275,12 @@
     */
    @GetMapping("/property/publicity/incr-view")
    R incrPropertyPublicityView(@RequestParam("id") Long id);
    /**
     * 居家隔离导出
     * @param pageReserveRegisterDetailedAdminDTO
     * @return
     */
    @PostMapping("/reserve/admin/homeQuarantine/export")
    R exportHomeQuarantine(@RequestBody PageReserveRegisterDetailedAdminDTO pageReserveRegisterDetailedAdminDTO);
}
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComActReserveApi.java
@@ -8,6 +8,7 @@
import javax.annotation.Resource;
import com.panzhihua.common.model.vos.community.reserve.HomeQuarantineRegisterExportVO;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.springframework.beans.BeanUtils;
@@ -621,9 +622,9 @@
                     * 组合导出数据
                     * 用户问卷答案
                     */
                    R questnaireAnswersDTOR = communityService.exportRegisterAdmin(pageReserveRegisterDetailedAdminDTO);
                    QuestnaireAnswersDTO questnaireAnswersDTOS = JSON.parseObject(JSON.toJSONString(questnaireAnswersDTOR.getData()), QuestnaireAnswersDTO.class);
                    List<ComActQuestnaireSubVO> subVOList = questnaireAnswersDTOS.getSubs();
                    R exportResultR = communityService.exportHomeQuarantine(pageReserveRegisterDetailedAdminDTO);
                    HomeQuarantineRegisterExportVO exportVO = JSON.parseObject(JSON.toJSONString(exportResultR.getData()), HomeQuarantineRegisterExportVO.class);
                    List<ComActQuestnaireSubVO> subVOList = exportVO.getSubs();
                    //构造表头
                    List<List<String>> headList = new ArrayList<List<String>>();
                    String firstRowContent = "重点地区或高风险地区来攀返攀人员信息统计表(居家隔离表)";
@@ -655,7 +656,7 @@
                    head2.add("隔离体温情况");
                    headList.add(head2);
                    //数据转换
                    datalist = HomeQuarantineUtil.ReserveData(questnaireAnswersDTOS.getAnswers());
                    datalist = exportVO.getDataList();
                    WriteCellStyle headWriteCellStyle = new WriteCellStyle();
                    //设置头居中
                    headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComActReserveApi.java
@@ -332,4 +332,14 @@
    public R pageRegisterHomeQuarantine(@RequestBody PageReserveRegisterDetailedAdminDTO detailedAdminDTO) {
        return comActReserveAnswerContentService.pageRegisterHomeQuarantine(detailedAdminDTO);
    }
    /**
     * 居家隔离导出
     * @param detailedAdminDTO
     * @return
     */
    @PostMapping("/admin/homeQuarantine/export")
    public R exportHomeQuarantine(@RequestBody PageReserveRegisterDetailedAdminDTO detailedAdminDTO) {
        return comActReserveAnswerContentService.exportHomeQuarantine(detailedAdminDTO);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActReserveAnswerContentMapper.java
@@ -54,4 +54,11 @@
    IPage<String> pageRegisterHomeQuarantine(@Param("page") Page page, @Param("detailedAdminDTO") PageReserveRegisterDetailedAdminDTO detailedAdminDTO);
    List<HomeQuarantineRegisterStatisticsVO> selectStatistics(@Param("reserveId") Long reserveId, @Param("record") String record);
    /**
     * 查询居家隔离统计身份证号码
     * @param detailedAdminDTO
     * @return
     */
    List<String> exportHomeQuarantine(@Param("detailedAdminDTO") PageReserveRegisterDetailedAdminDTO detailedAdminDTO);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActReserveAnswerContentService.java
@@ -32,4 +32,11 @@
     * @return
     */
    R pageRegisterHomeQuarantine(PageReserveRegisterDetailedAdminDTO detailedAdminDTO);
    /**
     * 居家隔离导出
     * @param detailedAdminDTO
     * @return
     */
    R exportHomeQuarantine(PageReserveRegisterDetailedAdminDTO detailedAdminDTO);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveAnswerContentServiceImpl.java
@@ -1,12 +1,15 @@
package com.panzhihua.service_community.service.impl;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.annotation.Resource;
import javax.xml.bind.DatatypeConverter;
import com.panzhihua.common.model.vos.community.reserve.HomeQuarantineRegisterExportVO;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@@ -52,19 +55,7 @@
    @Override
    public R exportRegisterAdmin(PageReserveRegisterDetailedAdminDTO pageReserveRegisterDetailedAdminDTO){
        QuestnaireAnswersDTO result = new QuestnaireAnswersDTO();
        //查询题目
        List<ComActReserveSubDO> list = comActReserveSubMapper.selectList(new QueryWrapper<ComActReserveSubDO>().lambda()
                .eq(ComActReserveSubDO::getReserveId, pageReserveRegisterDetailedAdminDTO.getReserveId()).orderByAsc(ComActReserveSubDO::getCreateAt).orderByAsc(ComActReserveSubDO::getId));
        List<ComActQuestnaireSubVO> listSubVo = new ArrayList<>();
        list.forEach(subDo -> {
            if(!subDo.getType().equals(5)){
                ComActQuestnaireSubVO comActQuestnaireSubVO = new ComActQuestnaireSubVO();
                BeanUtils.copyProperties(subDo, comActQuestnaireSubVO);
                listSubVo.add(comActQuestnaireSubVO);
            }
        });
        result.setSubs(listSubVo);
        result.setSubs(retrieveQuestnaireSub(pageReserveRegisterDetailedAdminDTO));
        //查询用户回答
        List<ComActQuestnaireAnswerContentVO> vos = this.baseMapper.export(pageReserveRegisterDetailedAdminDTO);
@@ -157,23 +148,35 @@
                map.put("nub", nub + "");
                List<HomeQuarantineRegisterStatisticsVO> statisticsList = this.baseMapper.selectStatistics(detailedAdminDTO.getReserveId(), record);
                StringBuffer conditions = new StringBuffer();
                //渲染首次登记时间
                map.put("time", DateUtils.format(statisticsList.get(0).getCreateAt(), DateUtils.ymdhms_format));
                statisticsList.forEach(e -> {
                    //渲染登记时间
                    map.put("time", DateUtils.format(e.getCreateAt(), DateUtils.ymdhms_format));
                    String reserveSubContent = e.getReserveSubContent();
                    String dateString = dateFormat.format(e.getCreateAt());
                    if (reserveSubContent.contains("上午体温")) {
                        if (conditions.indexOf(dateString + " " + "上午体温") == -1) {
                        int index = conditions.indexOf(dateString + " " + "上午体温");
                        if (index == -1) {
                            conditions.append(dateString + " " + "上午体温:" + e.getAnswerContent() + "℃" + "\n");
                        } else {
                            conditions.replace(index, conditions.indexOf("℃", index),
                                    dateString + " " + "上午体温:" + e.getAnswerContent());
                        }
                    } else if (reserveSubContent.contains("下午体温")) {
                        if (conditions.indexOf(dateString + " " + "下午体温") == -1) {
                        int index = conditions.indexOf(dateString + " " + "下午体温");
                        if (index == -1) {
                            conditions.append(dateString + " " + "下午体温:" + e.getAnswerContent() + "℃" + "\n");
                        } else {
                            conditions.replace(index, conditions.indexOf("℃", index),
                                    dateString + " " + "下午体温:" + e.getAnswerContent());
                        }
                    } else if (reserveSubContent.contains("隔离情况")) {
                        if (conditions.indexOf(dateString + " " + "当日隔离情况") == -1) {
                        int index = conditions.indexOf(dateString + " " + "当日隔离情况");
                        if (index == -1) {
                            conditions.append(dateString + " " + "当日隔离情况:" + e.getAnswerContent() + "\n");
                            conditions.append("————————" + "\n");
                        } else {
                            conditions.replace(index, conditions.indexOf("\n", index),
                                    dateString + " " + "当日隔离情况:" + e.getAnswerContent());
                        }
                    } else {
                        map.put(e.getReserveSubId() + "", e.getAnswerContent());
@@ -187,4 +190,105 @@
        resultPage.setRecords(resultMapList);
        return R.ok(resultPage);
    }
    /**
     * 居家隔离导出
     * @param detailedAdminDTO
     * @return
     */
    @Override
    public R exportHomeQuarantine(PageReserveRegisterDetailedAdminDTO detailedAdminDTO) {
        HomeQuarantineRegisterExportVO exportVO = new HomeQuarantineRegisterExportVO();
        //题目
        exportVO.setSubs(retrieveQuestnaireSub(detailedAdminDTO));
        //结果数据集合
        List<List<Object>> resultList = new ArrayList<>();
        List<String> idCards = this.baseMapper.exportHomeQuarantine(detailedAdminDTO);
        if (!idCards.isEmpty()) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            for (String idCard : idCards) {
                //构建单个用户数据
                List<Object> userData = new ArrayList<>();
                List<HomeQuarantineRegisterStatisticsVO> statisticsList = this.baseMapper.selectStatistics(detailedAdminDTO.getReserveId(), idCard);
                HomeQuarantineRegisterStatisticsVO firstStatisticsVO = statisticsList.get(0);
                userData.add(firstStatisticsVO.getNickName());
                userData.add(DateUtils.format(firstStatisticsVO.getCreateAt(), DateUtils.ymdhms_format));
                int size = statisticsList.size();
                List<HomeQuarantineRegisterStatisticsVO> lastStatisticsVOList = statisticsList.subList(size - 13, size);
                for (HomeQuarantineRegisterStatisticsVO statisticsVO : lastStatisticsVOList) {
                    //判断当前的组件类型是否是图片上传,导出时需要导出图片
                    if (statisticsVO.getOptionType().equals(11)) {
                        try {
                            userData.add(new URL(statisticsVO.getAnswerContent()));
                        } catch (Exception e) {
                            userData.add(" ");
                            log.error("导出转换图片失败!");
                        }
                        continue;
                    }
                    //判断当前组件类型是否签名
                    if (statisticsVO.getOptionType().equals(12)) {
                        try {
                            userData.add(DatatypeConverter.parseBase64Binary(statisticsVO.getAnswerContent().substring(statisticsVO.getAnswerContent().indexOf(",") + 1)));
                        } catch (Exception e) {
                            userData.add(" ");
                            log.error("导出转换图片失败!");
                        }
                        continue;
                    }
                    userData.add(statisticsVO.getAnswerContent());
                }
                StringBuffer conditions = new StringBuffer();
                statisticsList.forEach(e -> {
                    String reserveSubContent = e.getReserveSubContent();
                    String dateString = dateFormat.format(e.getCreateAt());
                    if (reserveSubContent.contains("上午体温")) {
                        int index = conditions.indexOf(dateString + " " + "上午体温");
                        if (index == -1) {
                            conditions.append(dateString + " " + "上午体温:" + e.getAnswerContent() + "℃" + "\n");
                        } else {
                            conditions.replace(index, conditions.indexOf("℃", index),
                                    dateString + " " + "上午体温:" + e.getAnswerContent());
                        }
                    } else if (reserveSubContent.contains("下午体温")) {
                        int index = conditions.indexOf(dateString + " " + "下午体温");
                        if (index == -1) {
                            conditions.append(dateString + " " + "下午体温:" + e.getAnswerContent() + "℃" + "\n");
                        } else {
                            conditions.replace(index, conditions.indexOf("℃", index),
                                    dateString + " " + "下午体温:" + e.getAnswerContent());
                        }
                    } else if (reserveSubContent.contains("隔离情况")) {
                        int index = conditions.indexOf(dateString + " " + "当日隔离情况");
                        if (index == -1) {
                            conditions.append(dateString + " " + "当日隔离情况:" + e.getAnswerContent() + "\n");
                            conditions.append("————————" + "\n");
                        } else {
                            conditions.replace(index, conditions.indexOf("\n", index),
                                    dateString + " " + "当日隔离情况:" + e.getAnswerContent());
                        }
                    }
                });
                userData.add(conditions.toString());
                resultList.add(userData);
            }
        }
        exportVO.setDataList(resultList);
        return R.ok(exportVO);
    }
    private List<ComActQuestnaireSubVO> retrieveQuestnaireSub(PageReserveRegisterDetailedAdminDTO detailedAdminDTO) {
        //查询题目
        List<ComActReserveSubDO> list = comActReserveSubMapper.selectList(new QueryWrapper<ComActReserveSubDO>().lambda()
                .eq(ComActReserveSubDO::getReserveId, detailedAdminDTO.getReserveId()).orderByAsc(ComActReserveSubDO::getCreateAt).orderByAsc(ComActReserveSubDO::getId));
        List<ComActQuestnaireSubVO> listSubVo = new ArrayList<>();
        list.forEach(subDo -> {
            if(!subDo.getType().equals(5)){
                ComActQuestnaireSubVO comActQuestnaireSubVO = new ComActQuestnaireSubVO();
                BeanUtils.copyProperties(subDo, comActQuestnaireSubVO);
                listSubVo.add(comActQuestnaireSubVO);
            }
        });
        return listSubVo;
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActReserveAnswerContentMapper.xml
@@ -145,29 +145,51 @@
        LEFT JOIN com_act_reserve_answer_content carac ON carr.id=carac.reserve_record_id
        LEFT JOIN com_act_reserve_sub t ON carac.reserve_sub_id = t.id
        WHERE carr.reserve_id = #{detailedAdminDTO.reserveId} AND t.content LIKE '身份证%'
        <if test='detailedAdminDTO.startTime != null and detailedAdminDTO.startTime != &quot;&quot;'>
            AND carr.create_at <![CDATA[ >= ]]> #{detailedAdminDTO.startTime}
        </if>
        <if test='detailedAdminDTO.endTime != null and detailedAdminDTO.endTime != &quot;&quot;'>
            AND carr.create_at <![CDATA[ <= ]]> #{detailedAdminDTO.endTime}
        </if>
        <if test="detailedAdminDTO.keyword!=null and detailedAdminDTO.keyword != &quot;&quot;">
            AND carac.answer_content LIKE CONCAT (#{detailedAdminDTO.keyword},'%')
        </if>
        ORDER BY carr.id DESC LIMIT 9999999
        ) temp GROUP BY answer_content ORDER BY id DESC
        ORDER BY carr.id ASC LIMIT 9999999) temp
        WHERE 1=1
        <if test='detailedAdminDTO.startTime != null and detailedAdminDTO.startTime != &quot;&quot;'>
            AND temp.create_at <![CDATA[ >= ]]> #{detailedAdminDTO.startTime}
        </if>
        <if test='detailedAdminDTO.endTime != null and detailedAdminDTO.endTime != &quot;&quot;'>
            AND temp.create_at <![CDATA[ <= ]]> #{detailedAdminDTO.endTime}
        </if>
        GROUP BY answer_content ORDER BY id DESC
    </select>
    <select id="selectStatistics"
            resultType="com.panzhihua.common.model.vos.community.reserve.HomeQuarantineRegisterStatisticsVO">
        SELECT carr.id, carr.create_at, carac.reserve_record_id, car.content AS reserveSubContent,
        carac.answer_content AS answerContent, carac.reserve_sub_id AS reserveSubId, car.`type`
        SELECT carr.id, carr.create_at, su.nick_name, carac.reserve_record_id, car.content AS reserveSubContent,
        carac.answer_content AS answerContent, carac.reserve_sub_id AS reserveSubId, car.`type` AS optionType
        FROM com_act_reserve_record AS carr
        LEFT JOIN com_act_reserve_answer_content carac ON carr.id=carac.reserve_record_id
        LEFT JOIN com_act_reserve_sub AS car ON carac.reserve_sub_id = car.id
        LEFT JOIN sys_user su ON carr.user_id = su.user_id
        WHERE carr.id IN (
            SELECT t1.reserve_record_id FROM com_act_reserve_answer_content t1
            LEFT JOIN com_act_reserve_record t2 ON t1.reserve_record_id = t2.id
            WHERE t2.reserve_id = #{reserveId} AND t1.answer_content = #{record}
        ) ORDER BY carr.id ASC
    </select>
    <select id="exportHomeQuarantine" resultType="java.lang.String">
        SELECT answer_content FROM (
        SELECT carr.id, carac.answer_content
        FROM com_act_reserve_record AS carr
        LEFT JOIN com_act_reserve_answer_content carac ON carr.id=carac.reserve_record_id
        LEFT JOIN com_act_reserve_sub t ON carac.reserve_sub_id = t.id
        WHERE carr.reserve_id = #{detailedAdminDTO.reserveId} AND t.content LIKE '身份证%'
        <if test="detailedAdminDTO.keyword!=null and detailedAdminDTO.keyword != &quot;&quot;">
            AND carac.answer_content LIKE CONCAT (#{detailedAdminDTO.keyword},'%')
        </if>
        ORDER BY carr.id ASC LIMIT 9999999) temp
        WHERE 1=1
        <if test='detailedAdminDTO.startTime != null and detailedAdminDTO.startTime != &quot;&quot;'>
            AND temp.create_at <![CDATA[ >= ]]> #{detailedAdminDTO.startTime}
        </if>
        <if test='detailedAdminDTO.endTime != null and detailedAdminDTO.endTime != &quot;&quot;'>
            AND temp.create_at <![CDATA[ <= ]]> #{detailedAdminDTO.endTime}
        </if>
        GROUP BY answer_content ORDER BY id DESC
    </select>
</mapper>