add:征集问题

This commit is contained in:
syxy
2022-07-04 18:04:37 +08:00
parent c35a63ea2e
commit dd73af6fd5
13 changed files with 363 additions and 4 deletions
+21
View File
@@ -0,0 +1,21 @@
//7 2022-7-4
ALTER TABLE `pay_meeting` add COLUMN `is_add_question` tinyint(1) NULL DEFAULT NULL COMMENT '是否需要问题征集(0:否,1:是)' ;
ALTER TABLE `pay_meeting` add COLUMN `end_time_add_question` datetime NULL DEFAULT NULL COMMENT '征集截止日期' ;
ALTER TABLE `pay_meeting` add COLUMN `questions` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '征集问题text' ;
CREATE TABLE `pay_meeting_question` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新日期',
`meeting_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '会议id',
`standard_number` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标准号',
`standard_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标准名称',
`number` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '章条编号',
`question_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '问题名称',
`email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱',
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人名称',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `id`(`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '会议征集问题' ROW_FORMAT = Dynamic;
@@ -9,6 +9,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.constant.CommonConstant;
@@ -26,10 +27,7 @@ import com.jero.data.service.IPayCaseCommitteeSubitemService;
import com.jero.data.service.IPayCaseCouncilSubitemService;
import com.jero.meeting.common.MeetingCommon;
import com.jero.meeting.common.MeetingSubitemCommon;
import com.jero.meeting.entity.PayMeeting;
import com.jero.meeting.entity.PayMeetingContacts;
import com.jero.meeting.entity.PayMeetingHotelContacts;
import com.jero.meeting.entity.PayMeetingSituation;
import com.jero.meeting.entity.*;
import com.jero.meeting.service.IPayMeetingContactsService;
import com.jero.meeting.service.IPayMeetingHotelContactsService;
import com.jero.meeting.service.IPayMeetingService;
@@ -273,6 +271,7 @@ public class PayMeetingController extends JeroController<PayMeeting, IPayMeeting
meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone()));
PayMeetingVO payMeetingVO = new PayMeetingVO();
BeanUtils.copyProperties(meeting, payMeetingVO);
Optional.ofNullable(meeting.getQuestions()).ifPresent(s -> {payMeetingVO.setQuestionList(JSONObject.parseArray(s, Question.class));});
String meetingType = meeting.getMeetingType().toString();
payMeetingVO.setMeetingType(meetingType);
if (meeting.getTbMeetingType() != null) {
@@ -0,0 +1,112 @@
package com.jero.meeting.controller;
import java.util.Arrays;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser;
import com.jero.meeting.entity.PayMeetingQuestion;
import com.jero.meeting.service.IPayMeetingQuestionService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* @Description: 征集问题
* @Author: jeecg-boot
* @Date: 2022-07-04
* @Version: V1.0
*/
@Slf4j
@Api(tags="征集问题")
@RestController
@RequestMapping("/payMeetingQuestion/payMeetingQuestion")
public class PayMeetingQuestionController extends JeroController<PayMeetingQuestion, IPayMeetingQuestionService> {
@Autowired
private IPayMeetingQuestionService payMeetingQuestionService;
/**
* 分页列表查询
*
* @param payMeetingQuestion
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "征集问题-分页列表查询")
@ApiOperation(value="征集问题-分页列表查询", notes="征集问题-分页列表查询")
@GetMapping(value = "/list")
public Result<?> queryPageList(PayMeetingQuestion payMeetingQuestion,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
LambdaQueryWrapper<PayMeetingQuestion> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(StringUtils.isNotBlank(payMeetingQuestion.getStandardNumber()),PayMeetingQuestion::getStandardNumber,payMeetingQuestion.getStandardNumber());
lambdaQueryWrapper.like(StringUtils.isNotBlank(payMeetingQuestion.getName()),PayMeetingQuestion::getName,payMeetingQuestion.getName());
Page<PayMeetingQuestion> page = new Page<>(pageNo, pageSize);
IPage<PayMeetingQuestion> pageList = payMeetingQuestionService.page(page, lambdaQueryWrapper);
return Result.ok(pageList);
}
/**
* 添加
*
* @param payMeetingQuestion
* @return
*/
@AutoLog(value = "征集问题-添加")
@ApiOperation(value="征集问题-添加", notes="征集问题-添加")
@PostMapping(value = "/add")
public Result<?> add(@RequestBody PayMeetingQuestion payMeetingQuestion) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
payMeetingQuestion.setName(sysUser.getRealname());
payMeetingQuestion.setEmail(sysUser.getEmail());
payMeetingQuestionService.save(payMeetingQuestion);
return Result.ok("添加成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "征集问题-通过id删除")
@ApiOperation(value="征集问题-通过id删除", notes="征集问题-通过id删除")
@DeleteMapping(value = "/delete")
public Result<?> delete(@RequestParam(name="id",required=true) String id) {
payMeetingQuestionService.removeById(id);
return Result.ok("删除成功!");
}
/**
* 导出excel
*
* @param request
* @param payMeetingQuestion
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, PayMeetingQuestion payMeetingQuestion) {
return super.exportXls(request, payMeetingQuestion, PayMeetingQuestion.class, "征集问题");
}
}
@@ -1,5 +1,6 @@
package com.jero.meeting.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
@@ -17,6 +18,7 @@ import com.jero.data.service.IPayCaseCommitteeService;
import com.jero.meeting.common.MeetingCommon;
import com.jero.meeting.entity.PayMeeting;
import com.jero.meeting.entity.PayMeetingHotelContacts;
import com.jero.meeting.entity.Question;
import com.jero.meeting.service.IPayMeetingHotelContactsService;
import com.jero.meeting.service.IPayMeetingService;
import com.jero.meeting.vo.PayMeetingVO;
@@ -221,6 +223,7 @@ public class StandardsMeetingController extends JeroController<PayMeeting, IPayM
meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone()));
PayMeetingVO payMeetingVO = new PayMeetingVO();
BeanUtils.copyProperties(meeting, payMeetingVO);
Optional.ofNullable(meeting.getQuestions()).ifPresent(s -> {payMeetingVO.setQuestionList(JSONObject.parseArray(s, Question.class));});
String meetingType = meeting.getMeetingType().toString();
//String meetingType1 = sysBaseAPI.translateDict("meeting_type", meetingType);
payMeetingVO.setMeetingType(meetingType);
@@ -304,4 +307,24 @@ public class StandardsMeetingController extends JeroController<PayMeeting, IPayM
payMeetingService.standardsRelease(publishReminderVO);
return Result.OK();
}
/**
* 标准号下拉框
*
* @param meetingId
* @return
*/
@AutoLog(value = "征集问题-标准号下拉框")
@ApiOperation(value="征集问题-标准号下拉框", notes="征集问题-标准号下拉框")
@DeleteMapping(value = "/getStandardNumberList")
public Result<?> getStandardNumberList(@RequestParam(name="meetingId",required=true) String meetingId) {
PayMeeting payMeeting = payMeetingService.getById(meetingId);
List<String> list=null;
if(StringUtils.isNotBlank(payMeeting.getQuestions())){
List<Question> questions = JSONObject.parseArray(payMeeting.getQuestions(), Question.class);
list=questions.stream().map(Question::getStandardNumber).collect(Collectors.toList());
};
return Result.OK(list);
}
}
@@ -342,4 +342,24 @@ public class PayMeeting implements Serializable {
@ApiModelProperty(value = "缴费凭证")
@TableField(exist = false)
private String paymentRecord;
/**是否需要问题征集*/
@ApiModelProperty(value = "是否需要问题征集")
private String isAddQuestion;
/**征集问题text*/
@ApiModelProperty(value = "征集问题text")
private String questions;
/**征集问题text*/
@TableField(exist = false)
@ApiModelProperty(value = "征集问题状态")
private String addQuestionStatue;
/**征集截止日期*/
@Excel(name = "征集截止日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "征集截止日期")
private java.util.Date endTimeAddQuestion;
}
@@ -0,0 +1,83 @@
package com.jero.meeting.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* @Description: 征集问题
* @Author: jeecg-boot
* @Date: 2022-07-04
* @Version: V1.0
*/
@Data
@TableName("pay_meeting_question")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="pay_meeting_question对象", description="征集问题")
public class PayMeetingQuestion {
/**id*/
@TableId(type = IdType.ID_WORKER_STR)
@ApiModelProperty(value = "id")
private java.lang.String id;
/**创建人*/
@Excel(name = "创建人", width = 15)
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建日期*/
@Excel(name = "创建日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private java.util.Date createTime;
/**更新人*/
@Excel(name = "更新人", width = 15)
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**更新日期*/
@Excel(name = "更新日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期")
private java.util.Date updateTime;
/**会议id*/
@Excel(name = "会议id", width = 15)
@ApiModelProperty(value = "会议id")
private java.lang.String meetingId;
/**标准号*/
@Excel(name = "标准号", width = 15)
@ApiModelProperty(value = "标准号")
private java.lang.String standardNumber;
/**标准名称*/
@Excel(name = "标准名称", width = 15)
@ApiModelProperty(value = "标准名称")
private java.lang.String standardName;
/**章条编号*/
@Excel(name = "章条编号", width = 15)
@ApiModelProperty(value = "章条编号")
private java.lang.String number;
/**问题名称*/
@Excel(name = "问题名称", width = 15)
@ApiModelProperty(value = "问题名称")
private java.lang.String questionName;
/**邮箱*/
@Excel(name = "邮箱", width = 15)
@ApiModelProperty(value = "邮箱")
private java.lang.String email;
/**创建人名称*/
@Excel(name = "创建人名称", width = 15)
@ApiModelProperty(value = "创建人名称")
private java.lang.String name;
}
@@ -0,0 +1,21 @@
package com.jero.meeting.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author zhangqinlin
* @className: Question
* @description:征集问题
* @date 2022/7/4 14:07
* @version1.0
*/
@Data
public class Question {
/**标准号*/
@ApiModelProperty(value = "标准号")
private String standardNumber;
/**标准名称*/
@ApiModelProperty(value = "标准名称")
private String standardName;
}
@@ -0,0 +1,15 @@
package com.jero.meeting.mapper;
import com.jero.meeting.entity.PayMeetingQuestion;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 征集问题
* @Author: jeecg-boot
* @Date: 2022-07-04
* @Version: V1.0
*/
public interface PayMeetingQuestionMapper extends BaseMapper<PayMeetingQuestion> {
}
@@ -0,0 +1,5 @@
<?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.jero.meeting.mapper.PayMeetingQuestionMapper">
</mapper>
@@ -0,0 +1,15 @@
package com.jero.meeting.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.meeting.entity.PayMeetingQuestion;
/**
* @Description: 征集问题
* @Author: jeecg-boot
* @Date: 2022-07-04
* @Version: V1.0
*/
public interface IPayMeetingQuestionService extends IService<PayMeetingQuestion> {
}
@@ -0,0 +1,19 @@
package com.jero.meeting.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.meeting.entity.PayMeetingQuestion;
import com.jero.meeting.mapper.PayMeetingQuestionMapper;
import com.jero.meeting.service.IPayMeetingQuestionService;
import org.springframework.stereotype.Service;
/**
* @Description: 征集问题
* @Author: jeecg-boot
* @Date: 2022-07-04
* @Version: V1.0
*/
@Service
public class PayMeetingQuestionServiceImpl extends ServiceImpl<PayMeetingQuestionMapper, PayMeetingQuestion> implements IPayMeetingQuestionService {
}
@@ -482,6 +482,9 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
// ValidUtil.validate(hotelContacts, StandardMeeting.class);
//}
BeanUtils.copyProperties(payMeetingVO, payMeeting);
if(org.apache.commons.collections.CollectionUtils.isNotEmpty(payMeetingVO.getQuestionList())){
payMeeting.setQuestions(JSONObject.toJSONString(payMeetingVO.getQuestionList()));
}
return payMeeting;
}
@@ -905,6 +908,13 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
payMeetingContacts.setMeetingContactsPhone(PasswordUtil.decrypt(phone));
}
meeting.setMeetingContactsList(meetingContactsList);
Optional.ofNullable(meeting.getEndTimeAddQuestion()).ifPresent(time->{
if (time.before(new Date())) {
meeting.setAddQuestionStatue("已结束");
} else {
meeting.setAddQuestionStatue("征集中");
}
});
}
return pageList;
}
@@ -8,6 +8,7 @@ import com.jero.common.aspect.annotation.Dict;
import com.jero.common.util.PasswordUtil;
import com.jero.meeting.entity.PayMeetingContacts;
import com.jero.meeting.entity.PayMeetingHotelContacts;
import com.jero.meeting.entity.Question;
import com.jero.meeting.valid.group.*;
import com.jero.modules.system.volid.group.UpdateGroup;
import io.swagger.annotations.ApiModel;
@@ -300,4 +301,19 @@ public class PayMeetingVO implements Serializable {
@ApiModelProperty(value = "会议联系人")
private List<PayMeetingContacts> meetingContactsList;
/**是否需要问题征集*/
@ApiModelProperty(value = "是否需要问题征集")
private String isAddQuestion;
/**征集问题text*/
@ApiModelProperty(value = "征集问题text")
private List<Question> questionList;
/**征集截止日期*/
@Excel(name = "征集截止日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "征集截止日期")
private java.util.Date endTimeAddQuestion;
}