springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/CommunityQuestnaireApi.java
@@ -34,94 +34,41 @@ @Resource private CommunityService communityService; @ApiOperation(value = "分页查询登录用户调查问卷", response = QuestnaireListVo.class) @ApiOperation(value = "分页查询社区调查问卷", response = QuestnaireListVo.class) @PostMapping("/pageUser") public R pageUser(@RequestBody PageQuestnaireDTO pageQuestnaireDTO) { LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); Integer isPartymember = loginUserInfo.getIsPartymember(); Integer isVolunteer = loginUserInfo.getIsVolunteer(); pageQuestnaireDTO.setForParty(1 == isPartymember.intValue()); pageQuestnaireDTO.setForVolunteer(1 == isVolunteer.intValue()); pageQuestnaireDTO.setUserId(loginUserInfo.getUserId()); return communityService.pageQuestnaire(pageQuestnaireDTO, loginUserInfo.getCommunityId()); } @ApiOperation(value = "分页查询社区调查问卷", response = QuestnaireListVo.class) @PostMapping("/pageVolunteer") public R pageVolunteer(@RequestBody PageQuestnaireDTO pageQuestnaireDTO) { pageQuestnaireDTO.setForMasses(null); pageQuestnaireDTO.setForVolunteer(true); pageQuestnaireDTO.setForParty(true); return communityService.pageQuestnaire(pageQuestnaireDTO, getLoginUserInfo().getCommunityId()); } @ApiOperation(value = "创建调查问卷") @PostMapping("/add") public R add(@RequestBody QuestnaireVO questnaireVO) { LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); boolean userHasRight = loginUserInfo.getIsmemberrole()==1; //if(!userHasRight){ if(false){ return R.fail("用户无创建调查问卷的权限!"); if(loginUserInfo == null){ return R.fail(401,"请先登录"); } return communityService.addQuestnaire(questnaireVO, loginUserInfo.getCommunityId(), loginUserInfo.getUserId()); pageQuestnaireDTO.setCommunityId(loginUserInfo.getCommunityId()); pageQuestnaireDTO.setUserId(loginUserInfo.getUserId()); return communityService.pageQuestnaire(pageQuestnaireDTO); } @ApiOperation(value = "查看问卷", response = UsersAnswerVO.class) @GetMapping("/view") @ApiOperation(value = "查询调查问卷详情", response = UsersAnswerVO.class) @GetMapping("/detail") public R viewQuestnaire(@RequestParam("questId") Long questId) { LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); return communityService.view(loginUserInfo.getUserId(), questId); } @ApiOperation(value = "在线统计信息", response = QuestnaireAnswerStatVO.class) @GetMapping("/stat") public R stat(@RequestParam("questId") Long questId) { return communityService.statistics(questId); } @ApiOperation(value = "在线统计详细", response = ComActQuestnaireAnswerContentVO.class) @PostMapping("/stat/details") public R statDetails(@RequestBody PageQuestnaireSubDetailsDTO pageQuestnaireSubDetailsDTO) { //问卷调查 return communityService.qaQeustAnswerDetails(pageQuestnaireSubDetailsDTO); if(loginUserInfo == null){ return R.fail(401,"请先登录"); } return communityService.viewDetail(loginUserInfo.getUserId(), questId); } @ApiOperation(value = "居民填写问卷调查问卷") @PostMapping("/stat/answer") public R usersAnswerQuestnaire(@RequestBody UsersAnswerQuestnaireVO usersAnswerQuestnaireVO) { LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); boolean userHasRight = loginUserInfo.getIsmemberrole()==1; //if(!userHasRight){ if(false){ return R.fail("用户写问卷调查问卷!"); if(loginUserInfo == null){ return R.fail("请先登录"); } usersAnswerQuestnaireVO.setUserId(loginUserInfo.getUserId()); //填写调查问卷发放积分 communityService.addIntegralTradeAdmin(new AddComActIntegralUserDTO(usersAnswerQuestnaireVO.getQuestId() ,AddComActIntegralUserDTO.integralType.cydcwj,loginUserInfo.getCommunityId(),loginUserInfo.getUserId())); return communityService.usersAnsweQuestnaire(usersAnswerQuestnaireVO, loginUserInfo.getUserId()); return communityService.usersAnsweQuestnaire(usersAnswerQuestnaireVO); } @ApiOperation(value = "编辑问卷") @PostMapping("/edit") public R editQuestnaire(@RequestBody QuestnaireVO questnaireVO) { LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); return communityService.editQuestnaire(questnaireVO); } @ApiOperation(value = "继续调研/停止调研") @PostMapping("/toggle") public R toggle(@RequestBody EditComActQuestnaireVo editComActQuestnaireVo) { LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); return communityService.editQuestnaireDO(editComActQuestnaireVo, loginUserInfo.getUserId()); } @ApiOperation(value = "删除问卷") @GetMapping("/delete") public R delete(@RequestParam("questId") Long questId) { LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); return communityService.editQuestnaireDO(questId, loginUserInfo.getUserId()); } } springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/IndexApi.java
@@ -342,9 +342,15 @@ } @ApiOperation(value = "获取最新活动和用户最新收益",response =ComActEasyPhotoRewardVO.class ) @PostMapping("getUserReward") public R getUserReward(){ return communityService.getUserReward(this.getUserId(),this.getCommunityId()); @GetMapping("getUserReward") public R getUserReward(@RequestParam("communityId") Long communityId){ Long userId = 0L; LoginUserInfoVO loginUserInfo = this.getLoginUserInfoSureNoLogin(); if(loginUserInfo != null){ userId = loginUserInfo.getUserId(); communityId = loginUserInfo.getCommunityId(); } return communityService.getUserReward(userId,communityId); } @ApiOperation(value = "读取用户随手拍奖励") springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageQuestnaireDTO.java
@@ -6,6 +6,7 @@ import lombok.Data; import java.util.Date; import java.util.List; /** * @Author: llming @@ -18,18 +19,20 @@ private String title; @ApiModelProperty(value = "用户Id") private Long userId; @ApiModelProperty(value = "状态 0 调研中 1已停止") private Integer state; @ApiModelProperty(value = "状态 1待发布 2调研中 3已停止") private List<Integer> states; @ApiModelProperty(value = "发布开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date startTime; private String startTime; @ApiModelProperty(value = "发布结束时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date endTime; private String endTime; @ApiModelProperty(value = "分页-当前页数", example = "1") private Long pageNum; private Long pageNum = 1L; @ApiModelProperty(value = "分页-每页记录数", example = "10") private Long pageSize; private Long pageSize = 10L; @ApiModelProperty(value = "广告位置(1.首页弹窗 2.首页顶部 3.首页应用)") private Integer advertPosition; @ApiModelProperty(value = "身份(1.全部居民 2.党员 3.志愿者)") private Integer identity; @ApiModelProperty("提供居民") private Boolean forMasses; @ApiModelProperty("提供党员") springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/questnaire/StatisticsSummaryDTO.java
New file @@ -0,0 +1,20 @@ package com.panzhihua.common.model.dtos.community.questnaire; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel("统计汇总请求参数") public class StatisticsSummaryDTO { @ApiModelProperty(value = "分页-当前页数", example = "1") private Long pageNum = 1L; @ApiModelProperty(value = "分页-每页记录数", example = "10") private Long pageSize = 10L; @ApiModelProperty(value = "调查问卷id") private Long questId; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActEasyPhotoRewardVO.java
@@ -5,6 +5,7 @@ import lombok.Data; import java.math.BigDecimal; import java.util.List; /** * 用户获得随手拍奖励返回参数 @@ -19,4 +20,13 @@ @ApiModelProperty("随手拍最新活动") private ComActEasyPhotoActivityVO easyPhotoActivityVO; @ApiModelProperty("正在进行中的弹窗问卷调查") private ComActQuestnaireAppVO popupQuestnaireVO; @ApiModelProperty("banner图位置问卷调查列表") private List<ComActQuestnaireAppVO> bannerQuestnaireList; @ApiModelProperty("应用位置问卷调查列表") private List<ComActQuestnaireAppVO> applicationQuestnaireList; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActQuestnaireAppVO.java
New file @@ -0,0 +1,31 @@ package com.panzhihua.common.model.vos.community; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel("正在进行中的调查问卷") public class ComActQuestnaireAppVO { @ApiModelProperty("调查问卷id") private Long id; @ApiModelProperty("组件唯一key") private String projectKey; @ApiModelProperty("标题(问卷调查主题)") private String title; @ApiModelProperty("问卷调查备注(应用名称)") private String remark; @ApiModelProperty("是否是封面(1.是 2.否)") private Integer isCover; @ApiModelProperty("是否强制调研(1.是 2.否)") private Integer isForce; @ApiModelProperty("广告弹窗(1.是 2.否 )") private Integer adverPositionPopup; @ApiModelProperty("广告顶部(1.是 2.否)") private Integer adverPositionTop; @ApiModelProperty("广告应用(1.是 2.否)") private Integer adverPositionApplication; @ApiModelProperty("是否显示提醒(1.是 2.否)") private Integer isDisplay = 2; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActQuestnaireVO.java
@@ -7,22 +7,24 @@ @Data @ApiModel("调查问卷 问卷表") public class ComActQuestnaireVO { @ApiModelProperty("id") @ApiModelProperty("主键id") private Long id; @ApiModelProperty("标题") private String title; @ApiModelProperty("问题描述") private String queDescribe; @ApiModelProperty("状态 0 调研中 1已停止") @ApiModelProperty("状态 1 待发布 2调研中 3已结束") private int state; @ApiModelProperty("参与人数") private Integer joinCount; @ApiModelProperty("社区ID") private Long communityId; @ApiModelProperty("调查对象-居民") private Boolean forMasses; @ApiModelProperty("调查对象-党员") private Boolean forParty; @ApiModelProperty("调查对象-志愿者") private Boolean forVolunteer; @ApiModelProperty("是否封面(1.是 2.否)") private Integer isCover; @ApiModelProperty("填报项数量") private Integer count; @ApiModelProperty("浏览量") private Long viewNum; @ApiModelProperty("问卷调查备注(应用名称)") private String remark; @ApiModelProperty("问卷组件唯一key") private String projectKey; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/EditComActQuestnaireVo.java
@@ -11,6 +11,19 @@ public class EditComActQuestnaireVo { @ApiModelProperty(value = "问卷调查Id") private Long questId; @ApiModelProperty(value = "状态 0 调研中 1已停止", example = "0") private Integer state; @ApiModelProperty(value = "类型(1.继续调研 2.停止调研 3.发布调研)") private Integer type; @ApiModelProperty(value = "用户id",hidden = true) private Long userId; @ApiModelProperty(value = "继续调研选择结束时间") private String endTime; /** * 类型(1.继续调研 2.停止调研) */ public interface type{ int jx = 1; int tz = 2; int fb = 3; } } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/QuestnaireDetailAdminVO.java
New file @@ -0,0 +1,57 @@ package com.panzhihua.common.model.vos.community.questnaire; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** * @Author: llming * @Description: */ @Data public class QuestnaireDetailAdminVO { @ApiModelProperty(value = "问卷调查id") private Long id; @ApiModelProperty(value = "社区id",hidden = true) private Long communityId; @ApiModelProperty(value = "问卷调查主题") private String title; @ApiModelProperty("广告顶部(1.是 2.否)") private Integer adverPositionTop; @ApiModelProperty("广告弹窗(1.是 2.否 )") private Integer adverPositionPopup; @ApiModelProperty("广告应用(1.是 2.否)") private Integer adverPositionApplication; @ApiModelProperty("调研开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date startTime; @ApiModelProperty("调研结束时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date endTime; @ApiModelProperty("是否强制调研(1.是 2.否)") private String isForce; @ApiModelProperty("是否封面(1.是 2.否)") private String isCover; @ApiModelProperty("问卷调查备注(应用名称)") private String remark; @ApiModelProperty("组件json数据") private String jsonObject; @ApiModelProperty("发布时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date publishTime; @ApiModelProperty("创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createAt; @ApiModelProperty("是否居民(1.是 2.否)") private Integer forMasses; @ApiModelProperty("是否党员(1.是 2.否)") private Integer forParty; @ApiModelProperty("是否志愿者(1.是 2.否)") private Integer forVolunteer; @ApiModelProperty("是否已填写(1.是 2.否)") private Integer isOk = 2; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/QuestnaireListAdminVO.java
New file @@ -0,0 +1,77 @@ package com.panzhihua.common.model.vos.community.questnaire; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; @Data public class QuestnaireListAdminVO { @ApiModelProperty("id") private String id; @ApiModelProperty("标题") private String title; @ApiModelProperty("状态 1待发布 2调研中 3已停止") private Integer state; @ApiModelProperty("是否封面(1.是 2.否)") private Integer isCover; @ApiModelProperty("参与人数") private Integer joinCount; @ApiModelProperty("浏览量") private Long viewNum; @ApiModelProperty("填报项数量") private Integer count; @ApiModelProperty("创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createAt; @ApiModelProperty("发布时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date publishTime; @ApiModelProperty("调查开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date startTime; @ApiModelProperty("调查结束时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date endTime; @ApiModelProperty("是否提供居民填写(1.是 2.否)") private Integer forMasses; @ApiModelProperty("是否提供党员填写(1.是 2.否)") private Integer forParty; @ApiModelProperty("是否提供志愿者填写(1.是 2.否)") private Integer forVolunteer; @ApiModelProperty("广告顶部(1.是 2.否)") private Integer adverPositionTop; @ApiModelProperty("广告弹窗(1.是 2.否 )") private Integer adverPositionPopup; @ApiModelProperty("广告应用(1.是 2.否)") private Integer adverPositionApplication; @ApiModelProperty("组件库唯一key") private String projectKey; @ApiModelProperty("调研对象身份") private String identity; @ApiModelProperty("广告位置") private String advertPosition; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/QuestnaireListVo.java
@@ -16,23 +16,26 @@ @ApiModelProperty("标题") private String title; @ApiModelProperty("状态 0 调研中 1已停止") @ApiModelProperty("状态 1待发布 2调研中 3已停止") private Integer state; @ApiModelProperty("参与人数") private Integer joinCount; @ApiModelProperty("发布人") private String createBy; @ApiModelProperty("浏览量") private Long viewNum; @ApiModelProperty("发布人姓名") private String createUser; @ApiModelProperty("填报项数量") private Integer count; @ApiModelProperty("发布时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createAt; @ApiModelProperty("是否已回答") private Boolean answer; @ApiModelProperty("是否已参与(1.是 2.否)") private Integer isAnswer; @ApiModelProperty("是否封面(1.是 2.否)") private Integer isCover; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/QuestnaireStatisticsSummaryAdminVO.java
New file @@ -0,0 +1,25 @@ package com.panzhihua.common.model.vos.community.questnaire; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; /** * 统计汇总返回对象 */ @Data public class QuestnaireStatisticsSummaryAdminVO { @ApiModelProperty(value = "问卷调查题目") private String subject; @ApiModelProperty(value = "问卷调查选项") private String option; @ApiModelProperty("选择该选项人数") private Integer count; @ApiModelProperty("问卷调查题目参与总数") private Integer allCount; @ApiModelProperty("百分比") private BigDecimal tag; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/QuestnaireStatisticsSummaryExcelAdminVO.java
New file @@ -0,0 +1,26 @@ package com.panzhihua.common.model.vos.community.questnaire; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; /** * 统计汇总返回对象 */ @Data public class QuestnaireStatisticsSummaryExcelAdminVO { @ExcelProperty(value = "问卷调查题目" ,index = 0) private String subject; @ExcelProperty(value = "问卷调查选项" ,index = 1) private String option; @ExcelProperty(value = "参与人数百分比" ,index = 2) private BigDecimal tag; @ExcelProperty(value = "选择该选项人数" ,index = 3) private Integer count; @ExcelProperty(value = "该题目参与人数" ,index = 4) private Integer allCount; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/QuestnaireStatisticsSummaryHeaderAdminVO.java
New file @@ -0,0 +1,31 @@ package com.panzhihua.common.model.vos.community.questnaire; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; /** * 统计汇总表头返回数据 */ @Data public class QuestnaireStatisticsSummaryHeaderAdminVO { @ApiModelProperty(value = "填报志愿者数量") private Integer volunteerCount = 0; @ApiModelProperty(value = "填报党员") private Integer partymemberCount = 0; @ApiModelProperty("总填报量") private Integer allCount = 0; @ApiModelProperty("总浏览量") private Integer viewNum = 0; @ApiModelProperty("今日新增") private Integer todayCount = 0; @ApiModelProperty("未填报志愿者") private Integer noVolunteerCount = 0; @ApiModelProperty("未填报党员") private Integer noPartymemberCount = 0; @ApiModelProperty("填报率") private Integer tag = 0; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/QuestnaireVO.java
@@ -1,5 +1,6 @@ package com.panzhihua.common.model.vos.community.questnaire; import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,18 +12,46 @@ */ @Data public class QuestnaireVO { @ApiModelProperty(value = "问卷调查Id") private Long questId; @ApiModelProperty(value = "问卷标题") private String queTitle; @ApiModelProperty(value = "问卷调查id") private Long id; @ApiModelProperty(value = "社区id",hidden = true) private Long communityId; @ApiModelProperty(value = "用户id",hidden = true) private Long userId; @ApiModelProperty(value = "问卷调查主题") private String title; @ApiModelProperty(value = "问卷描述") private String queDescribe; @ApiModelProperty(value = "提供居民", example = "true", required = true) private Boolean forMasses; @ApiModelProperty(value = "提供党员", example = "true", required = true) private Boolean forParty; @ApiModelProperty(value = "提供志愿者", example = "true", required = true) private Boolean forVolunteer; @ApiModelProperty(value = "题目") private List<QuestnaiteSubVO> questnaiteSubVOS; @ApiModelProperty(value = "身份(1.全部居民 2.党员 3.志愿者)") private Integer identity; @ApiModelProperty("广告顶部(1.是 2.否)") private Integer adverPositionTop; @ApiModelProperty("广告弹窗(1.是 2.否 )") private Integer adverPositionPopup; @ApiModelProperty("广告应用(1.是 2.否)") private Integer adverPositionApplication; @ApiModelProperty("调研开始时间") private String startTime; @ApiModelProperty("调研结束时间") private String endTime; @ApiModelProperty("是否强制调研(1.是 2.否)") private String isForce; @ApiModelProperty("是否封面(1.是 2.否)") private String isCover; @ApiModelProperty("问卷调查备注(应用名称)") private String remark; @ApiModelProperty("组件json数据") private String jsonObject; @ApiModelProperty("是否发布(1.是 2.否)") private Integer isRelease; /** * 身份(1.全部居民 2.党员 3.志愿者) */ public interface identity{ int jm = 1; int dy = 2; int zyz = 3; } } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/QuestnaireWriteListAdminVO.java
New file @@ -0,0 +1,41 @@ package com.panzhihua.common.model.vos.community.questnaire; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; import java.util.List; /** * 调查问卷填报列表返回参数 */ @Data public class QuestnaireWriteListAdminVO { @ApiModelProperty(value = "问卷调查题目列表") private List<String> subjectList; @ApiModelProperty(value = "问卷调查选项") private String option; @ApiModelProperty("选择该选项人数") private Integer count; @ApiModelProperty("问卷调查题目参与总数") private Integer allCount; @ApiModelProperty("百分比") private BigDecimal tag; @ApiModelProperty("用户id") private Long userId; @ApiModelProperty("用户昵称") private Long nickName; @ApiModelProperty("提交时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createAt; @ApiModelProperty("用户填报数据") private List<QuestnaiteSubVO> list; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/QuestnaiteSubSelectionVO.java
@@ -19,8 +19,11 @@ private String optionName; @ApiModelProperty(value = "选项内容") private String content; private String label; @ApiModelProperty(value = "选项类型 0 固定选项 1 自定义选项") private Integer type; private Integer type = 0; @ApiModelProperty(value = "选项key") private String key; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/QuestnaiteSubVO.java
@@ -16,9 +16,22 @@ @ApiModelProperty(value = "序号") private int sort; @ApiModelProperty(value = "题目内容") private String content; private String label; @ApiModelProperty(value = "类型 0单选1多选2问答题", example = "0") private int type; private Integer type; @ApiModelProperty(value = "问卷题目选项") private List<QuestnaiteSubSelectionVO> questnaiteSubSelectionVOS; private List<QuestnaiteSubSelectionVO> options; @ApiModelProperty(value = "问卷题目题目key") private String key; @ApiModelProperty(value = "答题选项内容key") private String values; /** * 0单选1多选2问答题 */ public interface type{ int danxuan = 0; int duoxuan = 1; int wenda = 2; } } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/questnaire/UsersAnswerQuestnaireVO.java
@@ -1,5 +1,6 @@ package com.panzhihua.common.model.vos.community.questnaire; import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -13,10 +14,16 @@ @Data @ApiModel("用户填写问卷情况") public class UsersAnswerQuestnaireVO { @ApiModelProperty(value = "调查问卷Id") private Long questId; @ApiModelProperty(value = "答题情况") private List<UserAnswerContentVO> answerContentVOList; private String jsonObject; @ApiModelProperty(value = "用户id",hidden = true) private Long userId; @ApiModelProperty(value = "社区id",hidden = true) private Long communityId; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
@@ -19,6 +19,7 @@ import com.panzhihua.common.model.dtos.community.integral.admin.EditComActIntegralRuleDTO; import com.panzhihua.common.model.dtos.community.integral.admin.PageComActIntegralRuleDTO; import com.panzhihua.common.model.dtos.community.integral.admin.PageComActIntegralTradeDTO; import com.panzhihua.common.model.dtos.community.questnaire.StatisticsSummaryDTO; import com.panzhihua.common.model.dtos.community.switchs.SearchCommunityDTO; import com.panzhihua.common.model.dtos.community.wallet.*; import com.panzhihua.common.model.dtos.elders.ComEldersAuthGetResultDTO; @@ -1883,16 +1884,25 @@ * @return */ @PostMapping("/questnaire/addquestnaire") R addQuestnaire(@RequestBody QuestnaireVO questnaireVO, @RequestParam("communityId") Long communityId, @RequestParam("userId") Long userId); R addQuestnaire(@RequestBody QuestnaireVO questnaireVO); /** * 社区问卷列表 * 小程序-社区问卷列表 * * @param pageQuestnaireDTO * @return * @param pageQuestnaireDTO 请求参数 * @return 社区问卷列表 */ @PostMapping("/questnaire/pagequestnaire") R pageQuestnaire(@RequestBody PageQuestnaireDTO pageQuestnaireDTO, @RequestParam("communityId") Long communityId); R pageQuestnaire(@RequestBody PageQuestnaireDTO pageQuestnaireDTO); /** * 社区后台-社区问卷列表 * * @param pageQuestnaireDTO 请求参数 * @return 社区问卷列表 */ @PostMapping("/questnaire/admin/pagequestnaire") R pageQuestnaireAdmin(@RequestBody PageQuestnaireDTO pageQuestnaireDTO); /** @@ -1912,7 +1922,7 @@ * @return */ @PostMapping("/questnaire/editquestnairedo") R editQuestnaireDO(@RequestBody EditComActQuestnaireVo editComActQuestnaireVo, @RequestParam("userId") Long userId); R editQuestnaireDO(@RequestBody EditComActQuestnaireVo editComActQuestnaireVo); /** * 删除问卷 ——隐藏 @@ -1940,6 +1950,23 @@ */ @GetMapping("/questnaire/view") R view(@RequestParam("userId") Long userId, @RequestParam("questId") Long questId); /** * 小程序-问卷调查详情 * @param userId 用户id * @param questId 问卷id * @return 问卷调查详情 */ @GetMapping("/questnaire/view/detail") R viewDetail(@RequestParam("userId") Long userId, @RequestParam("questId") Long questId); /** * 社区后台-查询问卷调查详情 * @param questId 问卷id * @return 问卷调查详情 */ @GetMapping("/questnaire/admin/detail") R QuesDetail(@RequestParam("questId") Long questId); /** * 用户问卷调查详细 @@ -1986,7 +2013,7 @@ * @param usersAnswerQuestnaireVO 填写情况 */ @PostMapping("/questnaire/usersanswequestnaire") R usersAnsweQuestnaire(@RequestBody UsersAnswerQuestnaireVO usersAnswerQuestnaireVO, @RequestParam("userId") Long userId); R usersAnsweQuestnaire(@RequestBody UsersAnswerQuestnaireVO usersAnswerQuestnaireVO); /** * 店铺列表-分页查询 @@ -4131,6 +4158,9 @@ @PostMapping("timedTaskActivityNotice") R timedTaskActivityNotice(); @PostMapping("timedTaskQuestionnaire") R timedTaskQuestionnaire(); /** * 查询社区所有列表 * @return 社区列表 @@ -4154,4 +4184,27 @@ @PostMapping("/switch/community/search/distance/list") R communitySwitchSearchDistanceList(@RequestBody SearchCommunityDTO communityDTO); /** * 问卷调查统计汇总 * @param summaryDTO 请求参数 * @return 统计汇总 */ @PostMapping("/questnaire/statisticsSummary") R statisticsSummary(@RequestBody StatisticsSummaryDTO summaryDTO); /** * 问卷调查统计汇总导出数据查询 * @param questId 调查问卷id * @return 调查统计汇总导出数据 */ @GetMapping("/questnaire/statisticsSummary/export") R statisticsSummaryExport(@RequestParam("questId") Long questId); /** * 问卷调查统计汇总表头统计 * @param questId 调查问卷id * @return 问卷调查统计汇总表头统计数据 */ @GetMapping("/questnaire/statisticsSummary/header") R statisticsSummaryHeader(@RequestParam("questId") Long questId); } springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityQuestnaireApi.java
@@ -7,11 +7,14 @@ import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.panzhihua.common.controller.BaseController; import com.panzhihua.common.model.dtos.community.PageQuestnaireAnswerDTO; import com.panzhihua.common.model.dtos.community.PageQuestnaireDTO; import com.panzhihua.common.model.dtos.community.PageQuestnaireSubDetailsDTO; import com.panzhihua.common.model.dtos.community.QuestnaireAnswersDTO; import com.panzhihua.common.model.dtos.community.questnaire.StatisticsSummaryDTO; import com.panzhihua.common.model.vos.LoginUserInfoVO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.*; @@ -53,42 +56,45 @@ @Resource private SFTPConfig sftpConfig; @ApiOperation(value = "分页查询调查问卷", response = QuestnaireListVo.class) @ApiOperation(value = "分页查询调查问卷-lyq", response = QuestnaireListVo.class) @PostMapping("/page") public R page(@RequestBody PageQuestnaireDTO pageQuestnaireDTO) { ClazzUtils.setIfStringIsEmpty(pageQuestnaireDTO); pageQuestnaireDTO.setForMasses(null); pageQuestnaireDTO.setForVolunteer(true); pageQuestnaireDTO.setForParty(true); return communityService.pageQuestnaire(pageQuestnaireDTO, this.getCommunityId()); LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); if(loginUserInfo == null){ return R.fail("请先登录"); } pageQuestnaireDTO.setCommunityId(loginUserInfo.getCommunityId()); return communityService.pageQuestnaireAdmin(pageQuestnaireDTO); } @ApiOperation(value = "创建调查问卷") @ApiOperation(value = "创建调查问卷-lyq") @PostMapping("/add") public R add(@RequestBody QuestnaireVO questnaireVO) { LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); return communityService.addQuestnaire(questnaireVO, loginUserInfo.getCommunityId(), loginUserInfo.getUserId()); questnaireVO.setCommunityId(loginUserInfo.getCommunityId()); questnaireVO.setUserId(loginUserInfo.getUserId()); return communityService.addQuestnaire(questnaireVO); } @ApiOperation(value = "继续调研/停止调研") @ApiOperation(value = "继续调研/停止调研-lyq") @PostMapping("/toggle") public R toggle(@RequestBody EditComActQuestnaireVo editComActQuestnaireVo) { LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); return communityService.editQuestnaireDO(editComActQuestnaireVo, loginUserInfo.getUserId()); editComActQuestnaireVo.setUserId(loginUserInfo.getUserId()); return communityService.editQuestnaireDO(editComActQuestnaireVo); } @ApiOperation(value = "删除问卷") @ApiOperation(value = "删除问卷-lyq") @GetMapping("/delete") public R delete(@RequestParam("questId") Long questId) { LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); return communityService.editQuestnaireDO(questId, loginUserInfo.getUserId()); } @ApiOperation(value = "查看详细-问卷详细", response = UsersAnswerVO.class) @ApiOperation(value = "查看详细-问卷详细-lyq", response = QuestnaireDetailAdminVO.class) @GetMapping("/view") public R viewQuestnaire(@RequestParam("questId") Long questId) { LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); return communityService.view(loginUserInfo.getUserId(), questId); return communityService.QuesDetail(questId); } @ApiOperation(value = "查看详细-调查结果", response = QuestnaireAnswerStatVO.class) @@ -117,14 +123,18 @@ return communityService.answerInfoQuestnaire(userId, questId); } @ApiOperation(value = "编辑问卷") @ApiOperation(value = "编辑问卷-lyq") @PostMapping("/edit") public R editQuestnaire(@RequestBody QuestnaireVO questnaireVO) { LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); if(loginUserInfo == null){ return R.fail("请先登录"); } questnaireVO.setUserId(loginUserInfo.getUserId()); return communityService.editQuestnaire(questnaireVO); } @ApiOperation(value = "导出数据", response = ComCvtBusinessVO.class) @ApiOperation(value = "导出数据-lyq", response = ComCvtBusinessVO.class) @GetMapping("/export") public R export(@RequestParam("questId") Long questId) { //获取登陆用户 @@ -276,4 +286,70 @@ } } @ApiOperation(value = "问卷调查统计汇总-lyq", response = QuestnaireStatisticsSummaryAdminVO.class) @PostMapping("/statistics/summary") public R statisticsSummary(@RequestBody StatisticsSummaryDTO summaryDTO) { return communityService.statisticsSummary(summaryDTO); } @ApiOperation(value = "问卷调查统计汇总导出-lyq", response = QuestnaireStatisticsSummaryAdminVO.class) @GetMapping("/statistics/summary/export") public R statisticsSummaryExport(@RequestParam("questId") Long questId) { String url=sftpConfig.getExcelUrl(); // String uuid= UUID.randomUUID().toString().replace("-",""); String name="问卷调查统计汇总导出数据.xlsx"; String ftpUrl="/mnt/data/web/excel/"; // 用户搜索了就下载搜索的用户否则下载所有用户 R r=communityService.statisticsSummaryExport(questId); if (R.isOk(r)) { List<QuestnaireStatisticsSummaryExcelAdminVO>eexcelUserDTOS= JSONArray.parseArray(JSONArray.toJSONString(r.getData()),QuestnaireStatisticsSummaryExcelAdminVO.class); 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去写 ExcelWriter excelWriter = null; InputStream inputStream=null; try { excelWriter = EasyExcel.write(fileName, QuestnaireStatisticsSummaryExcelAdminVO.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).registerWriteHandler(new CustomSheetWriteHandler()).build(); WriteSheet writeSheet = EasyExcel.writerSheet("问卷调查统计汇总导出数据").build(); excelWriter.write(eexcelUserDTOS, 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(url+name); } catch (Exception e) { e.printStackTrace(); log.error("文件传输失败【{}】", e.getMessage()); return R.fail(); } } return R.fail("未查询到用户"); } @ApiOperation(value = "问卷调查统计汇总表头统计-lyq", response = QuestnaireStatisticsSummaryHeaderAdminVO.class) @GetMapping("/statistics/summary/header") public R statisticsSummaryHeader(@RequestParam("questId") Long questId) { return communityService.statisticsSummaryHeader(questId); } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.panzhihua.common.exceptions.ServiceException; import com.panzhihua.common.model.dtos.community.*; import com.panzhihua.common.model.dtos.community.questnaire.StatisticsSummaryDTO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.SystemmanagementConfigVO; import com.panzhihua.common.model.vos.community.*; @@ -1420,32 +1421,56 @@ } } /** * 小程序-问卷调查详情 * @param userId 用户id * @param questId 问卷id * @return 问卷调查详情 */ @GetMapping("questnaire/view/detail") public R viewDetail(@RequestParam("questId") Long questId,@RequestParam("userId") Long userId) { return comActQuestnaireService.getQuesDetail(questId,userId); } /** * 社区后台-查询问卷调查详情 * @param questId 问卷id * @return 问卷调查详情 */ @GetMapping("questnaire/admin/detail") public R quesDetail( @RequestParam("questId") Long questId) { return comActQuestnaireService.getQuesDetailAdmin(questId); } /** * 新增社区问卷 * @param questnaireVO * @return */ @Transactional(rollbackFor = Exception.class) @PostMapping("questnaire/addquestnaire") public R addQuestnaire(@RequestBody QuestnaireVO questnaireVO, @RequestParam("communityId") Long communityId, @RequestParam("userId") Long userId) { return comActQuestnaireService.addQuestnaire(questnaireVO, communityId, userId); public R addQuestnaire(@RequestBody QuestnaireVO questnaireVO) { return comActQuestnaireService.addQuestnaire(questnaireVO); } /** * 社区问卷列表 * @param pageQuestnaireDTO * @return * 小程序-社区问卷列表 * @param pageQuestnaireDTO 请求参数 * @return 社区问卷列表 */ @PostMapping("questnaire/pagequestnaire") public R pageQuestnaire(@RequestBody PageQuestnaireDTO pageQuestnaireDTO,@RequestParam("communityId") Long communityId) { if(pageQuestnaireDTO.getForParty()==null){ pageQuestnaireDTO.setForParty(false); } if(pageQuestnaireDTO.getForVolunteer()==null){ pageQuestnaireDTO.setForVolunteer(false); } return comActQuestnaireService.pageQuestnaire(pageQuestnaireDTO, communityId); public R pageQuestnaire(@RequestBody PageQuestnaireDTO pageQuestnaireDTO) { return comActQuestnaireService.pageQuestnaire(pageQuestnaireDTO); } /** * 社区后台-社区问卷列表 * @param pageQuestnaireDTO 请求参数 * @return 社区问卷列表 */ @PostMapping("questnaire/admin/pagequestnaire") public R pageQuestnaireAdmin(@RequestBody PageQuestnaireDTO pageQuestnaireDTO) { return comActQuestnaireService.pageQuestnaireAdmin(pageQuestnaireDTO); } /** @@ -1453,7 +1478,6 @@ * @param questnaireVO * @return */ @Transactional(rollbackFor = Exception.class) @PostMapping("questnaire/editquestnaire") public R editQuestnaire(@RequestBody QuestnaireVO questnaireVO) { return comActQuestnaireService.editQuestnaire(questnaireVO); @@ -1465,8 +1489,8 @@ * @return */ @PostMapping("questnaire/editquestnairedo") public R editQuestnaireDO(@RequestBody EditComActQuestnaireVo editComActQuestnaireVo, @RequestParam("userId") Long userId) { return comActQuestnaireService.editQuestnaireDO(editComActQuestnaireVo, userId); public R editQuestnaireDO(@RequestBody EditComActQuestnaireVo editComActQuestnaireVo) { return comActQuestnaireService.editQuestnaireDO(editComActQuestnaireVo); } /** @@ -1520,12 +1544,11 @@ } /** * 居民填写问卷调查问卷 * @param usersAnswerQuestnaireVO * 居民填写问卷调查问卷questnaire/pagequestnaire */ @PostMapping("questnaire/usersanswequestnaire") public R usersAnsweQuestnaire(@RequestBody UsersAnswerQuestnaireVO usersAnswerQuestnaireVO,@RequestParam("userId") Long userId){ return comActQuestnaireService.usersAnsweQuestnaire(usersAnswerQuestnaireVO,userId); public R usersAnsweQuestnaire(@RequestBody UsersAnswerQuestnaireVO usersAnswerQuestnaireVO){ return comActQuestnaireService.usersAnsweQuestnaire(usersAnswerQuestnaireVO); } /** @@ -1812,4 +1835,23 @@ } @PostMapping("questnaire/statisticsSummary") public R statisticsSummary(@RequestBody StatisticsSummaryDTO summaryDTO) { return comActQuestnaireService.statisticsSummary(summaryDTO); } @GetMapping("questnaire/statisticsSummary/export") public R statisticsSummaryExport(@RequestParam("questId") Long questId) { return comActQuestnaireService.statisticsSummaryExport(questId); } @GetMapping("questnaire/statisticsSummary/header") public R statisticsSummaryHeader(@RequestParam("questId") Long questId) { return comActQuestnaireService.statisticsSummaryHeader(questId); } @PostMapping("timedTaskQuestionnaire") public R timedTaskQuestionnaire(){ return comActQuestnaireService.timedTaskQuestionnaire(); } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActQuestnaireDAO.java
@@ -4,11 +4,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.panzhihua.common.model.dtos.community.PageQuestnaireDTO; import com.panzhihua.common.model.vos.community.questnaire.QuestnaireListVo; import com.panzhihua.common.model.dtos.community.questnaire.StatisticsSummaryDTO; import com.panzhihua.common.model.vos.community.ComActQuestnaireAppVO; import com.panzhihua.common.model.vos.community.questnaire.*; import com.panzhihua.service_community.model.dos.ComActQuestnaireDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; /** * @Author: llming @@ -17,56 +21,133 @@ @Mapper public interface ComActQuestnaireDAO extends BaseMapper<ComActQuestnaireDO> { @Select("<script> " + "SELECT DISTINCT aq.id, aq.title, aq.state, u.name as create_user, aq.join_count, aq.create_at , aq.create_by \n" + "FROM \n" + " com_act_questnaire aq \n" + " LEFT JOIN sys_user u on aq.create_by = u.user_id \n" + "<if test='pageQuestnaireDTO.userId != null '>\n" + //筛选用户已回答的问卷 " LEFT JOIN com_act_questnaire_sub qs ON aq.id = qs.que_Id\n" + " LEFT JOIN com_act_questnaire_answer_content ac ON qs.id = ac.sub_id AND ac.user_id=#{pageQuestnaireDTO.userId} " + " </if> \n" + " where aq.is_hide=0 " + "<if test='pageQuestnaireDTO.userId != null '>\n" + //筛选用户已回答的问卷 " AND case when ac.id IS NULL then aq.state=0 ELSE TRUE end " + " </if> \n" + "<if test='communityId != null and communityId!=0l '>\n" + " and aq.community_id = #{communityId}\n" + " </if> " + "<if test='pageQuestnaireDTO.state != null '>\n" + " and aq.state = #{pageQuestnaireDTO.state} \n" + " </if> " + "<if test='pageQuestnaireDTO.forMasses != null '>\n" + " and aq.for_masses = #{pageQuestnaireDTO.forMasses} \n" + " </if> \n" + "<if test='pageQuestnaireDTO.title != null '>\n" + " and aq.title like concat('%', #{pageQuestnaireDTO.title},'%') \n" + " </if> \n" + "<if test='pageQuestnaireDTO.forParty==true and pageQuestnaireDTO.forVolunteer==true '>\n" + //既是党员又是志愿者 " and ( aq.for_party = 1 OR aq.for_volunteer=1 OR (aq.for_party!=1 AND aq.for_volunteer!=1) ) \n" + " </if> \n" + "<if test='pageQuestnaireDTO.forParty==true and pageQuestnaireDTO.forVolunteer==false '>\n" + //党员 不是志愿者 " and ( aq.for_party = 1 OR (aq.for_party!=1 AND aq.for_volunteer!=1) ) \n" + " </if> \n" + "<if test='pageQuestnaireDTO.forParty==false and pageQuestnaireDTO.forVolunteer==true '>\n" + //非党员的志愿者 " and ( aq.for_volunteer = 1 OR (aq.for_party!=1 AND aq.for_volunteer!=1) ) \n" + " </if> \n" + "<if test='pageQuestnaireDTO.forParty==false and pageQuestnaireDTO.forVolunteer==false '>\n" + //非党员非志愿者 " and (aq.for_party!=1 AND aq.for_volunteer!=1) \n" + " </if> \n" + "<if test='pageQuestnaireDTO.startTime != null '>\n" + " AND aq.create_at <![CDATA[>=]]> #{pageQuestnaireDTO.startTime} \n" + "</if>" + "<if test='pageQuestnaireDTO.endTime != null '>\n" + " AND aq.create_at <![CDATA[<=]]> #{pageQuestnaireDTO.endTime} \n" + " </if> \n" + " ORDER BY \n" + " aq.create_at DESC" + "SELECT " + " caq.id, " + " caq.project_key, " + " caq.title, " + " caq.state, " + " caq.join_count, " + " caq.remark, " + " caq.is_cover, " + " caq.is_force, " + " caq.create_at, " + " caq.count, " + " if(caqua.id is not null,1,2) isAnswer, " + " caq.view_num " + "FROM " + " com_act_questnaire as caq " + " left join com_act_questnaire_user_answer as caqua on caqua.questnaire_id = caq.id and caqua.user_id = #{pageQuestnaireDTO.userId} " + "WHERE " + " caq.state IN ( 2, 3 ) " + " AND caq.community_id = #{pageQuestnaireDTO.communityId} and caq.is_hide = 0 " + "ORDER BY " + " caq.state ASC, " + " isAnswer desc, " + " caq.create_at DESC" + "</script>") IPage<QuestnaireListVo> selectPageList(Page page, @Param("pageQuestnaireDTO") PageQuestnaireDTO pageQuestnaireDTO, @Param("communityId") Long communityId); IPage<QuestnaireListVo> selectPageList(Page page, @Param("pageQuestnaireDTO") PageQuestnaireDTO pageQuestnaireDTO); @Select("<script>" + "select id,title,view_num,join_count,for_masses,for_party,for_volunteer,adver_position_top,adver_position_popup" + ",adver_position_application,create_at,start_time,end_time,publish_time,state,is_cover,project_key,count" + " from com_act_questnaire as caq where community_id = #{pageQuestnaireDTO.communityId} and is_hide = 0 " + "<if test='pageQuestnaireDTO.identity != null and pageQuestnaireDTO.identity == 1'>" + " and caq.for_masses = 1 "+ " </if> " + "<if test='pageQuestnaireDTO.identity != null and pageQuestnaireDTO.identity == 2'>" + " and caq.for_party = 1 "+ " </if> " + "<if test='pageQuestnaireDTO.identity != null and pageQuestnaireDTO.identity == 3'>" + " and caq.for_volunteer = 1 "+ " </if> " + "<if test='pageQuestnaireDTO.advertPosition != null and pageQuestnaireDTO.advertPosition == 1'>" + " and caq.adver_position_popup = 1 "+ " </if> " + "<if test='pageQuestnaireDTO.advertPosition != null and pageQuestnaireDTO.advertPosition == 2'>" + " and caq.adver_position_top = 1 "+ " </if> " + "<if test='pageQuestnaireDTO.advertPosition != null and pageQuestnaireDTO.advertPosition == 3'>" + " and caq.adver_position_application = 1 "+ " </if> " + "<if test='pageQuestnaireDTO.states != null and pageQuestnaireDTO.states.size > 0 '>" + " and caq.state in "+ "<foreach item=\"item\" collection=\"pageQuestnaireDTO.states\" separator=\",\" open=\"(\" close=\")\" index=\"\"> \n" + "#{item}\n" + "</foreach>\n" + " </if> " + "<if test='pageQuestnaireDTO.startTime != null and pageQuestnaireDTO.startTime != ""'>" + " and caq.publish_time <![CDATA[ >= ]]> #{pageQuestnaireDTO.startTime}"+ " </if> " + "<if test='pageQuestnaireDTO.endTime != null and pageQuestnaireDTO.endTime != ""'>" + " and caq.publish_time <![CDATA[ <= ]]> #{pageQuestnaireDTO.endTime}"+ " </if> " + "<if test='pageQuestnaireDTO.title != null and pageQuestnaireDTO.title != ""'>" + " and caq.title like concat (#{pageQuestnaireDTO.title},'%')"+ " </if> " + " order by caq.create_at DESC " + "</script>") IPage<QuestnaireListAdminVO> selectPageListAdmin(Page page, @Param("pageQuestnaireDTO") PageQuestnaireDTO pageQuestnaireDTO); @Select("select count(id) from com_act_questnaire_user where user_id = #{userId} and questnaire_id = #{questnaireId}") Integer getNoRemindCount(@Param("userId") Long userId,@Param("questnaireId") Long questnaireId); @Select("SELECT " + " id, " + " title, " + " remark, " + " is_cover, " + " is_force, " + " adver_position_popup, " + " adver_position_top, " + " adver_position_application, " + " project_key " + "FROM " + " com_act_questnaire " + "WHERE " + " end_time >= now() " + " AND now() >= start_time " + " and community_id = #{communityId} " + " and adver_position_top = 1 " + " and state = 2") List<ComActQuestnaireAppVO> getIndexTopQuestnaireList(@Param("communityId") Long communityId); @Select("SELECT " + " id, " + " title, " + " remark, " + " is_cover, " + " is_force, " + " adver_position_popup, " + " adver_position_top, " + " adver_position_application, " + " project_key " + "FROM " + " com_act_questnaire " + "WHERE " + " end_time >= now() " + " AND now() >= start_time " + " and community_id = #{communityId} " + " and adver_position_application = 1 " + " and state = 2") List<ComActQuestnaireAppVO> getIndexApplicationQuestnaireList(@Param("communityId") Long communityId); Integer getAdvPopupCount(@Param("communityId") Long communityId,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("id") Long id); void deleteQuesSubAll(@Param("queId") Long queId); QuestnaireDetailAdminVO getQuesDetailAdmin(@Param("queId") Long queId); /** * 小程序-问卷调查详情 * @param userId 用户id * @param questId 问卷id * @return 问卷调查详情 */ QuestnaireDetailAdminVO getQuesDetail(@Param("questId") Long questId,@Param("userId") Long userId); IPage<QuestnaireStatisticsSummaryAdminVO> getStatisticsSummaryAdmin(Page page, @Param("summaryDTO") StatisticsSummaryDTO summaryDTO); List<QuestnaireStatisticsSummaryExcelAdminVO> getStatisticsSummaryExcelAdmin(@Param("questId") Long questId); QuestnaireStatisticsSummaryHeaderAdminVO statisticsSummaryHeader(@Param("questId") Long questId); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActQuestnaireUserAnswerMapper.java
New file @@ -0,0 +1,15 @@ package com.panzhihua.service_community.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.panzhihua.service_community.model.dos.ComActQuestnaireUserAnswerDO; import org.apache.ibatis.annotations.Mapper; /** * @auther lyq * @create 2021-08-17 17:42:06 * @describe 问卷调查用户答题记录mapper类 */ @Mapper public interface ComActQuestnaireUserAnswerMapper extends BaseMapper<ComActQuestnaireUserAnswerDO> { } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActQuestnaireAnswerContentDO.java
@@ -35,11 +35,11 @@ private Long userId; /** * 选项类型 0 固定选项 1 自定义选项 * 题目类型 (1.选项题 2.问答题) */ private Integer type; /** * * 题目选项id */ private Long selectionId; } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActQuestnaireDO.java
@@ -6,6 +6,7 @@ import lombok.Data; import java.io.Serializable; import java.util.Date; /** * @Author: llming @@ -26,7 +27,7 @@ */ private String queDescribe; /** * 状态 0 调研中 1已停止 * 状态 1待发布 2调研中 3已结束 */ private Integer state; /** @@ -41,19 +42,98 @@ /** * 提供居民 */ private Boolean forMasses; private Integer forMasses; /** * 提供党员 */ private Boolean forParty; private Integer forParty; /** * 提供志愿者 */ private Boolean forVolunteer; private Integer forVolunteer; /** * 是否隐藏显示 0 显示 1 隐藏 */ private Integer isHide; /** * 调研开始时间 */ private Date startTime; /** * 调研结束时间 */ private Date endTime; /** * 问卷调查备注(应用名称) */ private String remark; /** * 是否是封面(1.是 2.否) */ private Integer isCover; /** * 是否强制调研(1.是 2.否) */ private Integer isForce; /** * 广告弹窗(1.是 2.否 ) */ private Integer adverPositionPopup; /** * 广告顶部(1.是 2.否) */ private Integer adverPositionTop; /** * 广告应用(1.是 2.否) */ private Integer adverPositionApplication; /** * 组件唯一key */ private String projectKey; /** * 填报项数量 */ private Integer count; /** * 浏览量 */ private Long viewNum; /** * 发布时间 */ private Date publishTime; /** * 组件json数据 */ private String jsonObject; /** * 默认是否枚举 */ public interface isOk{ int yes = 1; int no = 2; } /** * 状态 1待发布 2调研中 3已结束 */ public interface state{ int dfb = 1; int dyz = 2; int yjs = 3; } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActQuestnaireSubDO.java
@@ -1,6 +1,7 @@ package com.panzhihua.service_community.model.dos; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -33,4 +34,10 @@ * 调查问卷Id */ private Long queId; /** * 问卷调查题目key */ @TableField("`key`") private String key; } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActQuestnaireSubSelectionDO.java
@@ -1,6 +1,7 @@ package com.panzhihua.service_community.model.dos; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -40,4 +41,15 @@ */ private Integer type; /** * 问卷调查Id */ private Long queId; /** * 问卷调查选项key */ @TableField("`key`") private String key; } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActQuestnaireUserAnswerDO.java
New file @@ -0,0 +1,60 @@ package com.panzhihua.service_community.model.dos; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * @auther lyq * @create 2021-08-17 17:42:06 * @describe 问卷调查用户答题记录实体类 */ @Data @TableName("com_act_questnaire_user_answer") public class ComActQuestnaireUserAnswerDO implements Serializable { private static final long serialVersionUID = 1L; /** * 主键id */ @TableId(type = IdType.AUTO) private Long id; /** * 调查问卷id */ private Long questnaireId; /** * 用户id */ private Long userId; /** * 创建时间 */ private Date createAt; /** * 用户答题json数据 */ private String jsonObject; @Override public String toString() { return "ComActQuestnaireUserAnswerDO{" + "id=" + id + ", questnaireId=" + questnaireId + ", userId=" + userId + ", createAt=" + createAt + ", jsonObject=" + jsonObject + "}"; } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActQuestnaireService.java
@@ -3,6 +3,7 @@ import com.panzhihua.common.model.dtos.community.PageQuestnaireAnswerDTO; import com.panzhihua.common.model.dtos.community.PageQuestnaireDTO; import com.panzhihua.common.model.dtos.community.PageQuestnaireSubDetailsDTO; import com.panzhihua.common.model.dtos.community.questnaire.StatisticsSummaryDTO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.questnaire.EditComActQuestnaireVo; import com.panzhihua.common.model.vos.community.questnaire.QuestnaireVO; @@ -18,12 +19,19 @@ * * @return */ R addQuestnaire(QuestnaireVO questnaireVO, Long communityId, Long userId); R addQuestnaire(QuestnaireVO questnaireVO); /** * 社区问卷列表 * 小程序-社区问卷列表 */ R pageQuestnaire(PageQuestnaireDTO pageQuestnaireDTO, Long communityId); R pageQuestnaire(PageQuestnaireDTO pageQuestnaireDTO); /** * 社区后台-社区问卷列表 * @param pageQuestnaireDTO 请求参数 * @return 社区问卷列表 */ R pageQuestnaireAdmin(PageQuestnaireDTO pageQuestnaireDTO); /** * 编辑问卷——问卷、题目、选项 @@ -33,7 +41,7 @@ /** * 修改问卷状态 */ R editQuestnaireDO(EditComActQuestnaireVo editComActQuestnaireVo, Long userId); R editQuestnaireDO(EditComActQuestnaireVo editComActQuestnaireVo); /** * 删除问卷 ——隐藏 @@ -90,8 +98,30 @@ /** * 居民填写问卷调查问卷 * @param usersAnswerQuestnaireVO * @param userId * @return */ R usersAnsweQuestnaire(UsersAnswerQuestnaireVO usersAnswerQuestnaireVO, Long userId); R usersAnsweQuestnaire(UsersAnswerQuestnaireVO usersAnswerQuestnaireVO); /** * 社区后台-查询问卷调查详情 * @param questId 问卷id * @return 问卷调查详情 */ R getQuesDetailAdmin(Long questId); /** * 小程序-问卷调查详情 * @param userId 用户id * @param questId 问卷id * @return 问卷调查详情 */ R getQuesDetail(Long questId,Long userId); R statisticsSummary(StatisticsSummaryDTO summaryDTO); R statisticsSummaryExport(Long questId); R statisticsSummaryHeader(Long questId); R timedTaskQuestionnaire(); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActQuestnaireUserAnswerService.java
New file @@ -0,0 +1,13 @@ package com.panzhihua.service_community.service; import com.baomidou.mybatisplus.extension.service.IService; import com.panzhihua.service_community.model.dos.ComActQuestnaireUserAnswerDO; /** * @auther lyq * @create 2021-08-17 17:42:06 * @describe 问卷调查用户答题记录服务类 */ public interface ComActQuestnaireUserAnswerService extends IService<ComActQuestnaireUserAnswerDO> { } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActEasyPhotoServiceImpl.java
@@ -52,6 +52,8 @@ private ComActUserWalletService comActUserWalletService; @Resource private ComActActSignDAO comActActSignDAO; @Resource private ComActQuestnaireDAO comActQuestnaireDAO; /** * 分页查询随手拍 * @@ -516,11 +518,48 @@ easyPhotoRewardVO.setEasyPhotoActivityVO(photoActivityVO); } //查询用户未读奖励金额 BigDecimal amount = comActEasyPhotoRewardMapper.getUserReward(userId,communityId); if(amount != null){ easyPhotoRewardVO.setAmount(amount); if(userId != null && userId != 0L){ //查询用户未读奖励金额 BigDecimal amount = comActEasyPhotoRewardMapper.getUserReward(userId,communityId); if(amount != null){ easyPhotoRewardVO.setAmount(amount); } } //查询当前社区正在进行中的弹窗调查问卷 ComActQuestnaireDO popupQuestnaireDO = comActQuestnaireDAO.selectOne(new QueryWrapper<ComActQuestnaireDO>().lambda() .le(ComActQuestnaireDO::getStartTime,nowDate).ge(ComActQuestnaireDO::getEndTime,nowDate) .eq(ComActQuestnaireDO::getCommunityId,communityId).eq(ComActQuestnaireDO::getState,2) .eq(ComActQuestnaireDO::getAdverPositionPopup,ComActQuestnaireDO.isOk.yes)); if(popupQuestnaireDO != null){ ComActQuestnaireAppVO popupQuestnaireVO = new ComActQuestnaireAppVO(); BeanUtils.copyProperties(popupQuestnaireDO,popupQuestnaireVO); if(userId != null){ if(popupQuestnaireDO.getIsForce().equals(ComActQuestnaireDO.isOk.no)){ //查询用户是否已点击不再提醒 Integer count = comActQuestnaireDAO.getNoRemindCount(userId,popupQuestnaireVO.getId()); if(count <= 0){ popupQuestnaireVO.setIsDisplay(ComActQuestnaireDO.isOk.yes); } }else{ popupQuestnaireVO.setIsDisplay(ComActQuestnaireDO.isOk.yes); } } easyPhotoRewardVO.setPopupQuestnaireVO(popupQuestnaireVO); } //查询社区正在进行中的banner位置调查问卷列表 List<ComActQuestnaireAppVO> bannerQuestnaireList = comActQuestnaireDAO.getIndexTopQuestnaireList(communityId); if(!bannerQuestnaireList.isEmpty()){ easyPhotoRewardVO.setBannerQuestnaireList(bannerQuestnaireList); } //查询社区正在进行中的应用位置调查问卷列表 List<ComActQuestnaireAppVO> applicationQuestnaireList = comActQuestnaireDAO.getIndexApplicationQuestnaireList(communityId); if(!applicationQuestnaireList.isEmpty()){ easyPhotoRewardVO.setApplicationQuestnaireList(applicationQuestnaireList); } return R.ok(easyPhotoRewardVO); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserTradeServiceImpl.java
@@ -258,13 +258,13 @@ return R.fail("未查询到用户信息,记录积分失败"); } //判断调查问卷调查的对象是什么身份,如果是党员和志愿者两种身份,则记录志愿者积分 if(questnaireDO.getForParty() && integralUser.getIsPartymember().equals(1)){ if(questnaireDO.getForParty().equals(1) && integralUser.getIsPartymember().equals(1)){ identityType = 2; if(questnaireDO.getForVolunteer() && integralUser.getIsVolunteer().equals(1)){ if(questnaireDO.getForVolunteer().equals(1) && integralUser.getIsVolunteer().equals(1)){ identityType = 3; } } if(questnaireDO.getForVolunteer() && integralUser.getIsVolunteer().equals(1)){ if(questnaireDO.getForVolunteer().equals(1) && integralUser.getIsVolunteer().equals(1)){ identityType = 3; } remark.append("参与调查问卷奖励积分"); springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireServiceImpl.java
@@ -1,8 +1,11 @@ package com.panzhihua.service_community.service.impl; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -16,13 +19,16 @@ import com.panzhihua.common.model.dtos.community.PageQuestnaireDTO; import com.panzhihua.common.model.dtos.community.PageQuestnaireSubDetailsDTO; import com.panzhihua.common.model.dtos.community.QuestnaireAnswersDTO; import com.panzhihua.common.model.dtos.community.questnaire.StatisticsSummaryDTO; import com.panzhihua.common.model.vos.LoginUserInfoVO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.questnaire.*; import com.panzhihua.common.service.user.UserService; import com.panzhihua.common.utlis.DateUtils; import com.panzhihua.service_community.dao.*; import com.panzhihua.service_community.model.dos.*; import com.panzhihua.service_community.service.ComActQuestnaireService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import com.panzhihua.common.model.vos.community.ComActQuestnaireAnswerContentVO; @@ -37,6 +43,7 @@ * @Author: llming * @Description: */ @Slf4j @Service public class ComActQuestnaireServiceImpl implements ComActQuestnaireService { @Resource @@ -57,50 +64,231 @@ ComActQuestnaireAnswerContentServiceImpl answerContentService; @Resource UserService userService; @Resource private ComActQuestnaireUserAnswerMapper comActQuestnaireUserAnswerMapper; @Override @Transactional(rollbackFor = Exception.class) public R addQuestnaire(QuestnaireVO questnaireVO, Long communityId, Long userId) { public R addQuestnaire(QuestnaireVO questnaireVO) { Long userId = questnaireVO.getUserId(); if(questnaireVO.getAdverPositionPopup().equals(ComActQuestnaireDO.isOk.yes)){ //查询当前时间段是否已有弹窗提醒了 Integer count = questnaireDAO.getAdvPopupCount(questnaireVO.getCommunityId(),questnaireVO.getStartTime(),questnaireVO.getEndTime(),null); if(count > 0){ return R.fail("所选时间段已设置了问卷调查弹窗,暂不支持再次添加!"); } } ComActQuestnaireDO comActQuestnaireDO = new ComActQuestnaireDO(); comActQuestnaireDO.setTitle(questnaireVO.getQueTitle()); comActQuestnaireDO.setQueDescribe(questnaireVO.getQueDescribe()); comActQuestnaireDO.setState(QuestnaireState.CONTINUED.getCode()); Date nowDate = new Date(); BeanUtils.copyProperties(questnaireVO,comActQuestnaireDO); comActQuestnaireDO.setState(ComActQuestnaireDO.state.dfb); comActQuestnaireDO.setTitle(questnaireVO.getTitle()); comActQuestnaireDO.setJoinCount(0); comActQuestnaireDO.setCommunityId(communityId); comActQuestnaireDO.setCreateBy(userId); comActQuestnaireDO.setIsHide(0); comActQuestnaireDO.setForMasses(questnaireVO.getForMasses()); comActQuestnaireDO.setForParty(questnaireVO.getForParty()); comActQuestnaireDO.setForVolunteer(questnaireVO.getForVolunteer()); int questId = questnaireDAO.insert(comActQuestnaireDO); if(questId!=1){ comActQuestnaireDO.setCreateAt(nowDate); Date startDate = DateUtils.stringToDate(questnaireVO.getStartTime(),DateUtils.ymdhms_format); if(startDate != null && startDate.getTime() <= nowDate.getTime()){ comActQuestnaireDO.setState(ComActQuestnaireDO.state.dyz); comActQuestnaireDO.setPublishTime(nowDate); } Date endDate = DateUtils.stringToDate(questnaireVO.getEndTime(),DateUtils.ymdhms_format); if(endDate != null && endDate.getTime() <= nowDate.getTime()){ comActQuestnaireDO.setState(ComActQuestnaireDO.state.yjs); } comActQuestnaireDO.setStartTime(startDate); comActQuestnaireDO.setEndTime(endDate); if(questnaireVO.getIdentity().equals(QuestnaireVO.identity.jm)){ comActQuestnaireDO.setForMasses(ComActQuestnaireDO.isOk.yes); }else if(questnaireVO.getIdentity().equals(QuestnaireVO.identity.dy)){ comActQuestnaireDO.setForParty(ComActQuestnaireDO.isOk.yes); }else if(questnaireVO.getIdentity().equals(QuestnaireVO.identity.zyz)){ comActQuestnaireDO.setForVolunteer(ComActQuestnaireDO.isOk.yes); } if(questnaireVO.getIsRelease() != null && questnaireVO.getIsRelease().equals(1)){ comActQuestnaireDO.setStartTime(nowDate); } //统计该调查问卷填报题目数量 int count = 0; List<QuestnaiteSubVO> questnaiteSubVOS = JSON.parseArray(questnaireVO.getJsonObject().toString(),QuestnaiteSubVO.class); if(!questnaiteSubVOS.isEmpty()){ count = questnaiteSubVOS.size(); } comActQuestnaireDO.setCount(count); comActQuestnaireDO.setJsonObject(questnaireVO.getJsonObject()); int quesCount = questnaireDAO.insert(comActQuestnaireDO); if(quesCount !=1 ){ return R.fail("创建失败"); } if(questnaireVO.getQuestnaiteSubVOS()!=null) { questnaireVO.getQuestnaiteSubVOS().forEach(sub -> { if(!questnaiteSubVOS.isEmpty()) { questnaiteSubVOS.forEach(sub -> { ComActQuestnaireSubDO comActQuestnaireSubDO = new ComActQuestnaireSubDO(); comActQuestnaireSubDO.setType(sub.getType()); comActQuestnaireSubDO.setContent(sub.getContent()); comActQuestnaireSubDO.setContent(sub.getLabel()); comActQuestnaireSubDO.setSort(sub.getSort()); comActQuestnaireSubDO.setQueId((long) comActQuestnaireDO.getId()); comActQuestnaireSubDO.setQueId(comActQuestnaireDO.getId()); comActQuestnaireSubDO.setCreateBy(userId); int subId = questnaireSubDAO.insert(comActQuestnaireSubDO); comActQuestnaireSubDO.setKey(sub.getKey()); questnaireSubDAO.insert(comActQuestnaireSubDO); ArrayList<ComActQuestnaireSubSelectionDO> subSelectionList = Lists.newArrayList(); if(sub.getQuestnaiteSubSelectionVOS()!=null) { List<QuestnaiteSubSelectionVO> l = sub.getQuestnaiteSubSelectionVOS(); for(int i=0; i<l.size(); i++){ QuestnaiteSubSelectionVO subSelect = l.get(i); if(sub.getOptions() != null && !sub.getOptions().isEmpty()) { List<QuestnaiteSubSelectionVO> subOptions = sub.getOptions(); for(int i=0; i<subOptions.size(); i++){ QuestnaiteSubSelectionVO subSelect = subOptions.get(i); ComActQuestnaireSubSelectionDO subSelectionDO = new ComActQuestnaireSubSelectionDO(); subSelectionDO.setQueSubId(comActQuestnaireSubDO.getId()); if(subSelect.getType()==1){ if(subSelect.getType().equals(1)){ //添加选项名称 subSelectionDO.setOptionName(subSelect.getOptionName()); }else { subSelectionDO.setOptionName(String.valueOf(Character.toChars('A' + i))); } subSelectionDO.setSort(subSelect.getSort()); subSelectionDO.setContent(subSelect.getContent()); subSelectionDO.setContent(subSelect.getLabel()); subSelectionDO.setQueId(comActQuestnaireDO.getId()); subSelectionDO.setCreateBy(userId); subSelectionDO.setType(subSelect.getType()); subSelectionDO.setKey(subSelect.getKey()); subSelectionList.add(subSelectionDO); } } subSelectionService.saveBatch(subSelectionList); }); } return R.ok(); } @Override public R pageQuestnaire(PageQuestnaireDTO pageQuestnaireDTO) { IPage<QuestnaireListVo> voPage = questnaireDAO.selectPageList(new Page<>(pageQuestnaireDTO.getPageNum(),pageQuestnaireDTO.getPageSize()),pageQuestnaireDTO); return R.ok(voPage); } @Override public R pageQuestnaireAdmin(PageQuestnaireDTO pageQuestnaireDTO) { IPage<QuestnaireListAdminVO> voPage = questnaireDAO.selectPageListAdmin(new Page<>(pageQuestnaireDTO.getPageNum(),pageQuestnaireDTO.getPageSize()),pageQuestnaireDTO); if(!voPage.getRecords().isEmpty()){ voPage.getRecords().forEach(vo -> { //判断调查人员身份 if(vo.getForMasses().equals(ComActQuestnaireDO.isOk.yes)){ vo.setIdentity("全部居民"); }else if(vo.getForParty().equals(ComActQuestnaireDO.isOk.yes)){ vo.setIdentity("党员"); }else if(vo.getForVolunteer().equals(ComActQuestnaireDO.isOk.yes)){ vo.setIdentity("志愿者"); } //判断广告位置 StringBuilder sb = new StringBuilder(); if(vo.getAdverPositionPopup().equals(ComActQuestnaireDO.isOk.yes)){ sb.append("首页弹窗,"); } if(vo.getAdverPositionTop().equals(ComActQuestnaireDO.isOk.yes)){ sb.append("首页顶部,"); } if(vo.getAdverPositionApplication().equals(ComActQuestnaireDO.isOk.yes)){ sb.append("首页应用,"); } String advertPosition = sb.toString(); if(advertPosition.length() > 0){ vo.setAdvertPosition(advertPosition.substring(0,advertPosition.length()-1)); }else{ vo.setAdvertPosition("无"); } }); } return R.ok(voPage); } @Override @Transactional(rollbackFor = Exception.class) public R editQuestnaire(QuestnaireVO questnaireVO) { Long queId = questnaireVO.getId(); Long userId = questnaireVO.getUserId(); ComActQuestnaireDO questnaireDO = this.questnaireDAO.selectById(queId); if(questnaireDO == null){ return R.fail("未查询到该问卷调查"); } if(!questnaireDO.getState().equals(1)){ return R.fail("该调查问卷不是待发布状态,不可编辑"); } if(questnaireVO.getAdverPositionPopup().equals(ComActQuestnaireDO.isOk.yes)){ //查询当前时间段是否已有弹窗提醒了 Integer count = questnaireDAO.getAdvPopupCount(questnaireVO.getCommunityId(),questnaireVO.getStartTime(),questnaireVO.getEndTime(),queId); if(count > 0){ return R.fail("所选时间段已设置了问卷调查弹窗,暂不支持再次添加!"); } } //更新调查问卷信息 Date nowDate = new Date(); BeanUtils.copyProperties(questnaireVO,questnaireDO); questnaireDO.setState(ComActQuestnaireDO.state.dfb); questnaireDO.setTitle(questnaireVO.getTitle()); questnaireDO.setUpdateBy(userId); questnaireDO.setUpdateAt(nowDate); Date startDate = DateUtils.stringToDate(questnaireVO.getStartTime(),DateUtils.ymdhms_format); if(startDate != null && startDate.getTime() <= nowDate.getTime()){ questnaireDO.setState(ComActQuestnaireDO.state.dyz); questnaireDO.setPublishTime(nowDate); } Date endDate = DateUtils.stringToDate(questnaireVO.getEndTime(),DateUtils.ymdhms_format); if(endDate != null && endDate.getTime() <= nowDate.getTime()){ questnaireDO.setState(ComActQuestnaireDO.state.yjs); } questnaireDO.setStartTime(startDate); questnaireDO.setEndTime(endDate); if(questnaireVO.getIdentity().equals(QuestnaireVO.identity.jm)){ questnaireDO.setForMasses(ComActQuestnaireDO.isOk.yes); }else if(questnaireVO.getIdentity().equals(QuestnaireVO.identity.dy)){ questnaireDO.setForParty(ComActQuestnaireDO.isOk.yes); }else if(questnaireVO.getIdentity().equals(QuestnaireVO.identity.zyz)){ questnaireDO.setForVolunteer(ComActQuestnaireDO.isOk.yes); } if(questnaireVO.getIsRelease() != null && questnaireVO.getIsRelease().equals(1)){ questnaireDO.setStartTime(nowDate); } //统计该调查问卷填报题目数量 int count = 0; List<QuestnaiteSubVO> questnaiteSubVOS = JSON.parseArray(questnaireVO.getJsonObject().toString(),QuestnaiteSubVO.class); if(!questnaiteSubVOS.isEmpty()){ count = questnaiteSubVOS.size(); } questnaireDO.setCount(count); questnaireDO.setJsonObject(questnaireVO.getJsonObject()); questnaireDAO.updateById(questnaireDO); //删除原调查问卷题目以及选项,重新进行新增 questnaireDAO.deleteQuesSubAll(queId); //重新新增题目以及题目选项 if(!questnaiteSubVOS.isEmpty()) { questnaiteSubVOS.forEach(sub -> { ComActQuestnaireSubDO comActQuestnaireSubDO = new ComActQuestnaireSubDO(); comActQuestnaireSubDO.setType(sub.getType()); comActQuestnaireSubDO.setContent(sub.getLabel()); comActQuestnaireSubDO.setSort(sub.getSort()); comActQuestnaireSubDO.setKey(sub.getKey()); comActQuestnaireSubDO.setQueId(queId); comActQuestnaireSubDO.setCreateBy(userId); questnaireSubDAO.insert(comActQuestnaireSubDO); ArrayList<ComActQuestnaireSubSelectionDO> subSelectionList = Lists.newArrayList(); if(sub.getOptions() != null && !sub.getOptions().isEmpty()) { List<QuestnaiteSubSelectionVO> subOptions = sub.getOptions(); for(int i=0; i<subOptions.size(); i++){ QuestnaiteSubSelectionVO subSelect = subOptions.get(i); ComActQuestnaireSubSelectionDO subSelectionDO = new ComActQuestnaireSubSelectionDO(); subSelectionDO.setQueSubId(comActQuestnaireSubDO.getId()); if(subSelect.getType().equals(1)){ //添加选项名称 subSelectionDO.setOptionName(subSelect.getOptionName()); }else { subSelectionDO.setOptionName(String.valueOf(Character.toChars('A' + i))); } subSelectionDO.setKey(subSelect.getKey()); subSelectionDO.setContent(subSelect.getLabel()); subSelectionDO.setQueId(queId); subSelectionDO.setCreateBy(userId); subSelectionDO.setType(subSelect.getType()); subSelectionList.add(subSelectionDO); @@ -113,94 +301,49 @@ } @Override public R pageQuestnaire(PageQuestnaireDTO pageQuestnaireDTO, Long communityId) { Page page = new Page<>(); Long pageNum = pageQuestnaireDTO.getPageNum(); Long pageSize = pageQuestnaireDTO.getPageSize(); if (null == pageNum || 0 == pageNum) { pageNum = 1l; } if (null == pageSize || 0 == pageSize) { pageSize = 10l; } page.setSize(pageSize); page.setCurrent(pageNum); IPage<QuestnaireListVo> voPage = questnaireDAO.selectPageList(page,pageQuestnaireDTO,communityId); voPage.getRecords().forEach(record -> { Integer userAnswerCount = questnaireAnswerContentDAO.selectUserCountByQuestnaireId(record.getId(), pageQuestnaireDTO.getUserId()); if(userAnswerCount>0){ record.setAnswer(true); }else{ record.setAnswer(false); } }); return R.ok(voPage); } @Override public R editQuestnaire(QuestnaireVO questnaireVO) { ComActQuestnaireDO questnaireDO = null; if (questnaireVO.getQuestId() != null && questnaireVO.getQuestId() != 0L) { questnaireDO = questnaireDAO.selectById(questnaireVO.getQuestId()); if (questnaireDO == null) { return R.fail(500, "id有误!"); } questnaireDO.setTitle(questnaireVO.getQueTitle()); questnaireDO.setQueDescribe(questnaireVO.getQueDescribe()); //保存问卷调查 questnaireDAO.updateById(questnaireDO); questnaireVO.getQuestnaiteSubVOS().forEach(sub -> { if (sub.getQueSubId() == null) { throw new ServiceException("500", "问卷题目Id为空!"); } ComActQuestnaireSubDO subDO = questnaireSubDAO.selectById(sub.getQueSubId()); if (subDO == null || sub.getContent() == null) { throw new ServiceException("500", "修改问卷题目数据有误!"); } subDO.setContent(sub.getContent()); //更新问卷题目 questnaireSubDAO.updateById(subDO); sub.getQuestnaiteSubSelectionVOS().forEach(subSelection -> { if (subSelection.getQueSubSelectionId() == null || subSelection.getContent() == null) { throw new ServiceException("500", "问卷题目选项数据有误!"); } ComActQuestnaireSubSelectionDO subSelectionDO = questnaireSubSelectionDAO.selectById(subSelection.getQueSubSelectionId()); subSelectionDO.setContent(subSelection.getContent()); //更新问卷选项 questnaireSubSelectionDAO.updateById(subSelectionDO); }); }); }else{ return R.fail("参数有误"); } return R.ok(); } @Override public R editQuestnaireDO(EditComActQuestnaireVo editComActQuestnaireVo, Long userId) { LambdaQueryWrapper<ComActQuestnaireDO> subParam = new LambdaQueryWrapper<ComActQuestnaireDO>().eq(ComActQuestnaireDO::getId, editComActQuestnaireVo.getQuestId()); public R editQuestnaireDO(EditComActQuestnaireVo editComActQuestnaireVo) { Long userId = editComActQuestnaireVo.getUserId(); LambdaQueryWrapper<ComActQuestnaireDO> subParam = new LambdaQueryWrapper<ComActQuestnaireDO>() .eq(ComActQuestnaireDO::getId, editComActQuestnaireVo.getQuestId()); ComActQuestnaireDO questDO = questnaireDAO.selectOne(subParam); if (questDO == null) { return R.fail(500, "Id有误!"); return R.fail("未查询到调查问卷记录"); } questDO.setState(editComActQuestnaireVo.getState()); if(editComActQuestnaireVo.getType().equals(EditComActQuestnaireVo.type.jx)){ questDO.setEndTime(DateUtils.stringToDate(editComActQuestnaireVo.getEndTime(),DateUtils.ymdhms_format)); questDO.setState(ComActQuestnaireDO.state.dyz); }else if(editComActQuestnaireVo.getType().equals(EditComActQuestnaireVo.type.tz)){ questDO.setState(ComActQuestnaireDO.state.yjs); }else if(editComActQuestnaireVo.getType().equals(EditComActQuestnaireVo.type.fb)){ questDO.setState(ComActQuestnaireDO.state.dyz); questDO.setStartTime(new Date()); } questDO.setUpdateBy(userId); questnaireDAO.updateById(questDO); return R.ok(); questDO.setUpdateAt(new Date()); if(questnaireDAO.updateById(questDO) > 0){ return R.ok(); }else{ return R.fail(); } } @Override public R deleteQuestnaire(Long questId, Long userId) { LambdaQueryWrapper<ComActQuestnaireDO> subParam = new LambdaQueryWrapper<ComActQuestnaireDO>().eq(ComActQuestnaireDO::getId, questId); ComActQuestnaireDO queDO = questnaireDAO.selectOne(subParam); ComActQuestnaireDO queDO = questnaireDAO.selectById(questId); if (queDO == null) { return R.fail(); return R.fail("未查询到调查问卷记录"); } if(!queDO.getState().equals(ComActQuestnaireDO.state.dfb)){ return R.fail("该调查问卷不是待发布状态,不可删除"); } queDO.setUpdateBy(userId); queDO.setUpdateAt(new Date()); queDO.setIsHide(1); questnaireDAO.updateById(queDO); return R.ok(); if(questnaireDAO.updateById(queDO) > 0){ return R.ok(); }else{ return R.fail(); } } @Override @@ -367,48 +510,209 @@ } @Override public R usersAnsweQuestnaire(UsersAnswerQuestnaireVO answerQuestnaireVO, Long userId) { if (answerQuestnaireVO == null || answerQuestnaireVO.getAnswerContentVOList() == null) { return R.fail(500, "数据为空!"); @Transactional(rollbackFor = Exception.class) public R usersAnsweQuestnaire(UsersAnswerQuestnaireVO answerQuestnaireVO) { if (answerQuestnaireVO == null || answerQuestnaireVO.getJsonObject() == null) { return R.fail("数据为空!"); } ComActQuestnaireDO questnaireDO = questnaireDAO.selectById(answerQuestnaireVO.getQuestId()); Long userId = answerQuestnaireVO.getUserId(); Long questId = answerQuestnaireVO.getQuestId(); Date nowDate = new Date(); ComActQuestnaireDO questnaireDO = questnaireDAO.selectById(questId); if (questnaireDO == null) { return R.fail(500, "调查问卷不存在!"); return R.fail("调查问卷不存在!"); } R r = userService.getUserInfoByUserId(userId+""); if(!R.isOk(r)){ return R.fail("用户信息错误"); ComActQuestnaireUserAnswerDO oldUserAnswerDO = comActQuestnaireUserAnswerMapper.selectOne(new QueryWrapper<ComActQuestnaireUserAnswerDO>().lambda() .eq(ComActQuestnaireUserAnswerDO::getQuestnaireId,questId).eq(ComActQuestnaireUserAnswerDO::getUserId,userId)); if(oldUserAnswerDO != null){ return R.fail("您已填写该问卷,不可重复提交"); } LoginUserInfoVO loginUserInfoVO = JSONObject.parseObject(JSONObject.toJSONString(r.getData()), LoginUserInfoVO.class); Long userCommunityId = loginUserInfoVO.getCommunityId(); if(questnaireDO.getCommunityId()!=null && questnaireDO.getCommunityId().longValue()!=userCommunityId.longValue()){ return R.fail(500, "您目前所属社区无法填写当前社区的调查问卷,请切换社区后重试"); } LambdaQueryWrapper<ComActQuestnaireSubDO> subQuery = new LambdaQueryWrapper<ComActQuestnaireSubDO>(); subQuery.eq(ComActQuestnaireSubDO::getQueId,answerQuestnaireVO.getQuestId()); List<ComActQuestnaireSubDO> subDOS = questnaireSubDAO.selectList(subQuery); List<Long> subIds = subDOS.stream().map(ComActQuestnaireSubDO::getId).collect(Collectors.toList()); List<UserAnswerContentVO> answerContentVOList = answerQuestnaireVO.getAnswerContentVOList(); List<ComActQuestnaireAnswerContentDO> answerContentDOList = Lists.newArrayList(); for (UserAnswerContentVO answerContent:answerContentVOList) { ComActQuestnaireAnswerContentDO answerContentDO = new ComActQuestnaireAnswerContentDO(); boolean b = subIds.stream().anyMatch(a -> a.equals(answerContent.getSubId())); if (!b) { throw new ServiceException("500", "调查问卷题目不存在!"); List<ComActQuestnaireAnswerContentDO> answerContentList = new ArrayList<>(); //解析用户上传json数据 List<QuestnaiteSubVO> questnaiteSubVOS = JSON.parseArray(answerQuestnaireVO.getJsonObject().toString(),QuestnaiteSubVO.class); if(!questnaiteSubVOS.isEmpty()){ for (QuestnaiteSubVO questnaiteSub:questnaiteSubVOS) { //查询用户填写题目 ComActQuestnaireSubDO questnaireSubDO = questnaireSubDAO.selectOne(new QueryWrapper<ComActQuestnaireSubDO>().lambda() .eq(ComActQuestnaireSubDO::getQueId,questId).eq(ComActQuestnaireSubDO::getKey,questnaiteSub.getKey())); if(questnaireSubDO == null){ log.error("未查询到调查问卷题目,题目名称:" + questnaiteSub.getLabel() + "题目key:" + questnaiteSub.getKey()); continue; } Long queSubId = questnaireSubDO.getId(); //根据上传的类型查询不同的题目选项 if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.danxuan)){ //单选题处理 ComActQuestnaireSubSelectionDO subSelectionDO = questnaireSubSelectionDAO.selectOne(new QueryWrapper<ComActQuestnaireSubSelectionDO>() .lambda().eq(ComActQuestnaireSubSelectionDO::getQueSubId,queSubId).eq(ComActQuestnaireSubSelectionDO::getQueId,questId) .eq(ComActQuestnaireSubSelectionDO::getKey,questnaiteSub.getValues())); if(subSelectionDO == null){ log.error("未查询到调查问卷选项,题目名称:" + questnaiteSub.getLabel() + "选项key:" + questnaiteSub.getValues()); continue; } ComActQuestnaireAnswerContentDO answerContentDO = new ComActQuestnaireAnswerContentDO(); answerContentDO.setUserId(userId); answerContentDO.setCreateAt(nowDate); answerContentDO.setCreateBy(userId); answerContentDO.setSelectionId(subSelectionDO.getId()); answerContentDO.setSubId(queSubId); answerContentDO.setType(1); answerContentDO.setChoice(subSelectionDO.getOptionName()); answerContentDO.setAnswerContent(subSelectionDO.getContent()); answerContentList.add(answerContentDO); }else if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.duoxuan)){ //多选题处理 String values = questnaiteSub.getValues(); String []value = values.split(","); for (int i = 0; i < value.length; i++) { ComActQuestnaireSubSelectionDO subSelectionDO = questnaireSubSelectionDAO.selectOne(new QueryWrapper<ComActQuestnaireSubSelectionDO>() .lambda().eq(ComActQuestnaireSubSelectionDO::getQueSubId,queSubId).eq(ComActQuestnaireSubSelectionDO::getQueId,questId) .eq(ComActQuestnaireSubSelectionDO::getKey,value[i])); if(subSelectionDO == null){ log.error("未查询到调查问卷选项,题目名称:" + questnaiteSub.getLabel() + "选项key:" + questnaiteSub.getValues()); continue; } ComActQuestnaireAnswerContentDO answerContentDO = new ComActQuestnaireAnswerContentDO(); answerContentDO.setUserId(userId); answerContentDO.setCreateAt(nowDate); answerContentDO.setCreateBy(userId); answerContentDO.setSelectionId(subSelectionDO.getId()); answerContentDO.setSubId(queSubId); answerContentDO.setType(1); answerContentDO.setChoice(subSelectionDO.getOptionName()); answerContentDO.setAnswerContent(subSelectionDO.getContent()); answerContentList.add(answerContentDO); } }else if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.wenda)){ //问答题处理 String values = questnaiteSub.getValues(); ComActQuestnaireAnswerContentDO answerContentDO = new ComActQuestnaireAnswerContentDO(); answerContentDO.setUserId(userId); answerContentDO.setCreateAt(nowDate); answerContentDO.setCreateBy(userId); answerContentDO.setSubId(queSubId); answerContentDO.setType(2); answerContentDO.setAnswerContent(values); answerContentList.add(answerContentDO); } } BeanUtils.copyProperties(answerContent,answerContentDO); answerContentDO.setUserId(userId); answerContentDOList.add(answerContentDO); } boolean batchAddSuccess = answerContentService.saveBatch(answerContentDOList); if(batchAddSuccess) { /** * 更新回答用户数量 */ //新增用户填写的答卷 if(!answerContentList.isEmpty()){ answerContentService.saveBatch(answerContentList); //更新回答用户数量 Integer joinCount = questnaireDO.getJoinCount(); questnaireDO.setJoinCount(joinCount != null ? joinCount + 1 : 1); questnaireDAO.updateById(questnaireDO); //新增用户答题记录 ComActQuestnaireUserAnswerDO userAnswerDO = new ComActQuestnaireUserAnswerDO(); userAnswerDO.setQuestnaireId(questId); userAnswerDO.setUserId(userId); userAnswerDO.setCreateAt(nowDate); userAnswerDO.setJsonObject(answerQuestnaireVO.getJsonObject()); comActQuestnaireUserAnswerMapper.insert(userAnswerDO); } return R.ok(); } /** * 社区后台-查询问卷调查详情 * @param questId 问卷id * @return 问卷调查详情 */ @Override public R getQuesDetailAdmin(Long questId){ QuestnaireDetailAdminVO result = questnaireDAO.getQuesDetailAdmin(questId); if(result == null){ return R.fail("未查询到该记录"); } return R.ok(result); } /** * 小程序-问卷调查详情 * @param userId 用户id * @param questId 问卷id * @return 问卷调查详情 */ @Override public R getQuesDetail(Long questId,Long userId){ QuestnaireDetailAdminVO result = questnaireDAO.getQuesDetail(questId,userId); if(result == null){ return R.fail("未查询到该记录"); } ComActQuestnaireUserAnswerDO oldUserAnswerDO = comActQuestnaireUserAnswerMapper.selectOne(new QueryWrapper<ComActQuestnaireUserAnswerDO>().lambda() .eq(ComActQuestnaireUserAnswerDO::getQuestnaireId,questId).eq(ComActQuestnaireUserAnswerDO::getUserId,userId)); if(oldUserAnswerDO != null){ result.setIsOk(1); } return R.ok(result); } @Override public R statisticsSummary(StatisticsSummaryDTO summaryDTO){ IPage<QuestnaireStatisticsSummaryAdminVO> summaryAdminList = questnaireDAO.getStatisticsSummaryAdmin(new Page(summaryDTO.getPageNum(),summaryDTO.getPageSize()),summaryDTO); summaryAdminList.getRecords().forEach(summary -> { if(summary.getAllCount().equals(0)){ summary.setTag(BigDecimal.ZERO); }else{ summary.setTag(BigDecimal.valueOf(summary.getCount()).divide(BigDecimal.valueOf(summary.getAllCount()),2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100))); } }); return R.ok(questnaireDAO.getStatisticsSummaryAdmin(new Page(summaryDTO.getPageNum(),summaryDTO.getPageSize()),summaryDTO)); } @Override public R statisticsSummaryExport(Long questId){ List<QuestnaireStatisticsSummaryExcelAdminVO> summaryExcelList = questnaireDAO.getStatisticsSummaryExcelAdmin(questId); summaryExcelList.forEach(summary -> { if(summary.getAllCount().equals(0)){ summary.setTag(BigDecimal.ZERO); }else{ summary.setTag(BigDecimal.valueOf(summary.getCount()).divide(BigDecimal.valueOf(summary.getAllCount()),2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100))); } }); return R.ok(summaryExcelList); } @Override public R statisticsSummaryHeader(Long questId){ QuestnaireStatisticsSummaryHeaderAdminVO summaryHeaderAdminVO = this.questnaireDAO.statisticsSummaryHeader(questId); return R.ok(summaryHeaderAdminVO); } @Override public R timedTaskQuestionnaire(){ Date nowDate = new Date(); //查询所有开始时间已经超过当前时间的待发布状态调查问卷 List<ComActQuestnaireDO> questnaireDOList = questnaireDAO.selectList(new QueryWrapper<ComActQuestnaireDO>().lambda() .eq(ComActQuestnaireDO::getState,ComActQuestnaireDO.state.dfb).eq(ComActQuestnaireDO::getIsHide,0) .ge(ComActQuestnaireDO::getStartTime,nowDate)); questnaireDOList.forEach(questnaire -> { questnaire.setState(ComActQuestnaireDO.state.dyz); questnaire.setPublishTime(nowDate); questnaireDAO.updateById(questnaire); }); //查询所有结束时间已经超过当前时间的调研中状态调查问卷 List<ComActQuestnaireDO> questnaireList = questnaireDAO.selectList(new QueryWrapper<ComActQuestnaireDO>().lambda() .eq(ComActQuestnaireDO::getState,ComActQuestnaireDO.state.dyz).eq(ComActQuestnaireDO::getIsHide,0) .ge(ComActQuestnaireDO::getEndTime,nowDate)); questnaireList.forEach(questnaire -> { questnaire.setState(ComActQuestnaireDO.state.yjs); questnaireDAO.updateById(questnaire); }); return R.ok(); } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActQuestnaireUserAnswerServiceImpl.java
New file @@ -0,0 +1,19 @@ package com.panzhihua.service_community.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.panzhihua.service_community.dao.ComActQuestnaireUserAnswerMapper; import com.panzhihua.service_community.model.dos.ComActQuestnaireUserAnswerDO; import com.panzhihua.service_community.service.ComActQuestnaireUserAnswerService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; /** * @auther lyq * @create 2021-08-17 17:42:06 * @describe 问卷调查用户答题记录服务实现类 */ @Slf4j @Service public class ComActQuestnaireUserAnswerServiceImpl extends ServiceImpl<ComActQuestnaireUserAnswerMapper, ComActQuestnaireUserAnswerDO> implements ComActQuestnaireUserAnswerService { } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActQuestnaireDOMapper.xml
New file @@ -0,0 +1,212 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.panzhihua.service_community.dao.ComActQuestnaireDAO"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActQuestnaireDO"> <id column="id" property="id" /> <result column="create_by" property="createBy" /> <result column="community_id" property="communityId" /> <result column="create_at" property="createAt" /> <result column="update_by" property="updateBy" /> <result column="update_at" property="updateAt" /> <result column="for_masses" property="forMasses" /> <result column="for_party" property="forParty" /> <result column="for_volunteer" property="forVolunteer" /> <result column="title" property="title" /> <result column="que_describe" property="queDescribe" /> <result column="state" property="state" /> <result column="join_count" property="joinCount" /> <result column="is_hide" property="isHide" /> <result column="project_key" property="projectKey" /> <result column="start_time" property="startTime" /> <result column="end_time" property="endTime" /> <result column="remark" property="remark" /> <result column="is_cover" property="isCover" /> <result column="is_force" property="isForce" /> <result column="adver_position_popup" property="adverPositionPopup" /> <result column="adver_position_top" property="adverPositionTop" /> <result column="adver_position_application" property="adverPositionApplication" /> <result column="count" property="count" /> <result column="view_num" property="viewNum" /> <result column="publish_time" property="publishTime" /> <result column="json_object" property="jsonObject" /> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> create_by, id, community_id, create_at, update_by, update_at, for_masses, for_party, for_volunteer, title, que_describe, state, join_count, is_hide, project_key, start_time, end_time, remark, is_cover, is_force, adver_position_popup, adver_position_top, adver_position_application, count, view_num, publish_time, json_object </sql> <select id="getAdvPopupCount" resultType="integer"> SELECT count( id ) FROM com_act_questnaire WHERE adver_position_popup = 1 and community_id = #{communityId} AND ( #{startTime} BETWEEN start_time AND end_time OR #{endTime} BETWEEN start_time AND end_time OR start_time BETWEEN #{startTime} AND #{endTime} OR end_time BETWEEN #{startTime} AND #{endTime} ) <if test="id != null"> AND id != #{id} </if> </select> <delete id="deleteQuesSubAll"> delete from com_act_questnaire_sub where que_Id = #{queId}; delete from com_act_questnaire_sub_selection where que_Id = #{queId}; </delete> <select id="getQuesDetailAdmin" resultType="com.panzhihua.common.model.vos.community.questnaire.QuestnaireDetailAdminVO"> SELECT id, community_id, create_at, for_masses, for_party, for_volunteer, title, state, join_count, start_time, end_time, remark, is_cover, is_force, adver_position_top, adver_position_popup, adver_position_application, count, view_num, publish_time, json_object FROM com_act_questnaire where id = #{queId} </select> <select id="getQuesDetail" resultType="com.panzhihua.common.model.vos.community.questnaire.QuestnaireDetailAdminVO"> SELECT caq.id, caq.community_id, caq.create_at, caq.for_masses, caq.for_party, caq.for_volunteer, caq.title, caq.state, caq.join_count, caq.start_time, caq.end_time, caq.remark, caq.is_cover, caq.is_force, caq.adver_position_top, caq.adver_position_popup, caq.adver_position_application, caq.count, caq.view_num, caq.publish_time, IFNULL(caqua.json_object,caq.json_object) as json_object FROM com_act_questnaire as caq left join com_act_questnaire_user_answer as caqua on caqua.questnaire_id = caq.id and caqua.user_id = #{userId} where caq.id = #{questId} </select> <select id="getStatisticsSummaryAdmin" parameterType="com.panzhihua.common.model.dtos.community.questnaire.StatisticsSummaryDTO" resultType="com.panzhihua.common.model.vos.community.questnaire.QuestnaireStatisticsSummaryAdminVO"> SELECT caqs.content AS `subject`, caqss.content as `option`,( SELECT count( id ) FROM com_act_questnaire_answer_content WHERE sub_id = caqss.que_sub_id AND selection_id = caqss.id ) AS count, (select count(id) from com_act_questnaire_answer_content where sub_id = caqss.que_sub_id) as allCount FROM com_act_questnaire_sub_selection AS caqss LEFT JOIN com_act_questnaire_sub AS caqs ON caqs.id = caqss.que_sub_id WHERE caqss.que_Id = #{summaryDTO.questId} order by caqss.create_at asc </select> <select id="getStatisticsSummaryExcelAdmin" resultType="com.panzhihua.common.model.vos.community.questnaire.QuestnaireStatisticsSummaryExcelAdminVO"> SELECT caqs.content AS `subject`, caqss.content as `option`,( SELECT count( id ) FROM com_act_questnaire_answer_content WHERE sub_id = caqss.que_sub_id AND selection_id = caqss.id ) AS count, (select count(id) from com_act_questnaire_answer_content where sub_id = caqss.que_sub_id) as allCount FROM com_act_questnaire_sub_selection AS caqss LEFT JOIN com_act_questnaire_sub AS caqs ON caqs.id = caqss.que_sub_id WHERE caqss.que_Id = #{questId} order by caqss.create_at asc </select> <select id="statisticsSummaryHeader" resultType="com.panzhihua.common.model.vos.community.questnaire.QuestnaireStatisticsSummaryHeaderAdminVO"> SELECT count( caqua.id ) AS volunteerCount, ( SELECT count( id ) FROM com_act_questnaire_user_answer AS caqua LEFT JOIN sys_user AS su ON su.user_id = caqua.user_id WHERE su.is_partymember = 1 AND caqua.questnaire_id = #{questId} ) AS partymemberCount, ( SELECT count( id ) FROM com_act_questnaire_user_answer WHERE questnaire_id = #{questId} ) AS allCount,( SELECT view_num FROM com_act_questnaire WHERE id = #{questId} ) AS viewNum, ( SELECT count( id ) FROM com_act_questnaire_user_answer WHERE questnaire_id = #{questId} AND create_at BETWEEN DATE_FORMAT( CURDATE(), '%Y-%m-%d %H:%i:%s' ) AND NOW() ) AS todayCount, ( SELECT count( user_id ) FROM sys_user AS su WHERE is_volunteer = 1 AND user_id NOT IN ( SELECT user_id FROM com_act_questnaire_user_answer WHERE questnaire_id = #{questId} )) AS noVolunteerCount, ( SELECT count( user_id ) FROM sys_user AS su WHERE is_partymember = 1 AND user_id NOT IN ( SELECT user_id FROM com_act_questnaire_user_answer WHERE questnaire_id = #{questId} )) AS noPartymemberCount FROM com_act_questnaire_user_answer AS caqua LEFT JOIN com_act_questnaire AS caq ON caq.id = caqua.questnaire_id LEFT JOIN sys_user AS su ON su.user_id = caqua.user_id WHERE su.is_volunteer = 1 AND caqua.questnaire_id = #{questId} </select> </mapper> springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActQuestnaireUserAnswerDOMapper.xml
New file @@ -0,0 +1,19 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.panzhihua.service_community.dao.ComActQuestnaireUserAnswerMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActQuestnaireUserAnswerDO"> <id column="id" property="id" /> <result column="questnaire_id" property="questnaireId" /> <result column="user_id" property="userId" /> <result column="create_at" property="createAt" /> <result column="json_object" property="jsonObject" /> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, questnaire_id, user_id, create_at, json_object </sql> </mapper> springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -609,7 +609,7 @@ //删除用户信息缓存 String userKey = UserConstants.LOGIN_USER_INFO + loginUserInfoVO.getUserId(); stringRedisTemplate.delete(userKey); return R.ok(); return R.ok(sysUserDO); } return R.fail(); } springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/java/com/panzhihua/timejob/jobhandler/CommunityJobHandler.java
@@ -167,4 +167,15 @@ log.info("执行结果【{}】",r.toString()); return ReturnT.SUCCESS; } /** * 定时任务检测待发布,调研中的问卷调查状态 */ @XxlJob("timedTaskQuestionnaireJobHandler") public ReturnT<String> timedTaskQuestionnaireJobHandler(String param){ log.info("定时任务检测待发布,调研中的问卷调查状态"); R r=communityService.timedTaskQuestionnaire(); log.info("执行结果【{}】",r.toString()); return ReturnT.SUCCESS; } }