新增起草组-会议-CRUD

This commit is contained in:
sunzheng
2024-01-05 16:35:24 +08:00
parent da941fef86
commit 2b19ac2c38
14 changed files with 453 additions and 0 deletions
@@ -0,0 +1,42 @@
package com.jero.drafting.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.DictPoint;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.base.controller.JeroController;
import com.jero.drafting.entity.PayDraftingGroupDistributionRecord;
import com.jero.drafting.service.IPayDraftingGroupDistributionRecordService;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.project.common.PayProjectCommon;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* <p>
* 起草组成员企业联系人表 前端控制器
* </p>
*
* @author sz
* @since 2024-01-02
*/
@Api(tags = "起草组-分发记录")
@RestController
@RequestMapping("/drafting/payDraftingGroupDistributionRecord")
@Slf4j
public class PayDraftingGroupDistributionRecordController extends JeroController<PayDraftingGroupDistributionRecord, IPayDraftingGroupDistributionRecordService> {
@Resource
private IOSSFileService iossFileService;
@Value("${jero.path.upload}")
private String upLoadPath;
}
@@ -0,0 +1,104 @@
package com.jero.drafting.entity;
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 com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* @Description: pay_drafting_group_distribution_record
* @Author: jeecg-boot
* @Date: 2024-01-05
* @Version: V1.0
*/
@Data
@TableName("pay_drafting_group_distribution_record")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="pay_drafting_group_distribution_record", description="pay_drafting_group_distribution_record")
public class PayDraftingGroupDistributionRecord implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private String id;
/**资料id*/
@Excel(name = "资料id", width = 15)
@ApiModelProperty(value = "资料id")
private String dataId;
/**起草组id或者分标委id*/
@Excel(name = "起草组id或者分标委id", width = 15)
@ApiModelProperty(value = "起草组id或者分标委id")
private String projectId;
/**工作组成员id或者分标委成员id*/
@Excel(name = "工作组成员id或者分标委成员id", width = 15)
@ApiModelProperty(value = "工作组成员id或者分标委成员id")
private String subId;
/**文件id*/
@Excel(name = "文件id", width = 15)
@ApiModelProperty(value = "文件id")
private String fileId;
/**联系人id*/
@Excel(name = "联系人id", width = 15)
@ApiModelProperty(value = "联系人id")
private String contactsId;
/**联系人名称*/
@Excel(name = "联系人名称", width = 15)
@ApiModelProperty(value = "联系人名称")
private String contactsName;
/**创建人*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**创建时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**更新时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private Date updateTime;
/**资料ids 多个以逗号分隔*/
@Excel(name = "资料ids 多个以逗号分隔", width = 15)
@ApiModelProperty(value = "资料ids 多个以逗号分隔")
@TableField(exist = false)
private String dataIds;
/**项目类型1:起草组,2:分标委*/
@ApiModelProperty(value = "项目类型1:起草组,2:分标委")
private Integer projectType;
/**联系人ids 多个以逗号分隔*/
@TableField(exist = false)
@ApiModelProperty(value = "联系人ids 多个以逗号分隔")
private String contactsIds;
/**
* 联系人临时id
*/
@TableField(exist = false)
@ApiModelProperty(value = "联系人临时id")
private String temporaryContactsId;
/**
* 是否发送邮件
*/
@TableField(exist = false)
@ApiModelProperty(value = "是否发送邮件")
private Integer sendEmailFlag;
}
@@ -0,0 +1,15 @@
package com.jero.drafting.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.drafting.entity.PayDraftingGroupDistributionRecord;
/**
* <p>
* 起草组-分发记录表 Mapper 接口
* </p>
*
* @author sz
* @since 2024-01-02
*/
public interface PayDraftingGroupDistributionRecordMapper extends BaseMapper<PayDraftingGroupDistributionRecord> {
}
@@ -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.drafting.mapper.PayDraftingGroupDistributionRecordMapper">
</mapper>
@@ -0,0 +1,16 @@
package com.jero.drafting.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.drafting.entity.PayDraftingGroupDistributionRecord;
import com.jero.drafting.entity.PayDraftingGroupSubItemContacts;
/**
* <p>
* 起草组 分发记录表 服务类
* </p>
*
* @author sz
* @since 2024-01-02
*/
public interface IPayDraftingGroupDistributionRecordService extends IService<PayDraftingGroupDistributionRecord> {
}
@@ -0,0 +1,22 @@
package com.jero.drafting.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.drafting.entity.PayDraftingGroupDistributionRecord;
import com.jero.drafting.entity.PayDraftingGroupSubItemContacts;
import com.jero.drafting.mapper.PayDraftingGroupDistributionRecordMapper;
import com.jero.drafting.mapper.PayDraftingGroupSubItemContactsMapper;
import com.jero.drafting.service.IPayDraftingGroupDistributionRecordService;
import com.jero.drafting.service.IPayDraftingGroupSubItemContactsService;
import org.springframework.stereotype.Service;
/**
* <p>
* 起草组 分发记录表 服务实现类
* </p>
*
* @author sz
* @since 2024-01-05
*/
@Service
public class PayDraftingGroupDistributionRecordServiceImpl extends ServiceImpl<PayDraftingGroupDistributionRecordMapper, PayDraftingGroupDistributionRecord> implements IPayDraftingGroupDistributionRecordService {
}
@@ -56,6 +56,14 @@ public class MeetingCommon {
* 理事会会议
*/
public final static Integer COUNCIL_MEETING_INT = 6;
/**
* 起草组会议
*/
public final static String DRAFTING_GROUP_MEETING = "7";
/**
* 起草组会议
*/
public final static Integer DRAFTING_GROUP_MEETING_INT = 7;
/**
* 标准宣贯
*/
@@ -0,0 +1,172 @@
package com.jero.meeting.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.ValidUtil;
import com.jero.drafting.entity.PayDraftingGroup;
import com.jero.drafting.service.IPayDraftingGroupService;
import com.jero.meeting.common.MeetingCommon;
import com.jero.meeting.entity.PayMeeting;
import com.jero.meeting.entity.PayMeetingHotelContacts;
import com.jero.meeting.service.IPayMeetingHotelContactsService;
import com.jero.meeting.service.IPayMeetingService;
import com.jero.meeting.vo.PayMeetingVO;
import com.jero.modules.system.volid.group.UpdateGroup;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@Api(tags = "会议管理-起草组会议")
@RestController
@RequestMapping("/meeting/draftGroupMeeting")
@Slf4j
public class DraftGroupMeetingController {
@Resource
private IPayMeetingService payMeetingService;
@Resource
private ISysBaseAPI sysBaseAPI;
@Resource
private IPayMeetingHotelContactsService meetingHotelContactsService;
@Resource
private IPayDraftingGroupService payDraftingGroupService;
/**
* 分页列表查询
*/
// @RequiresPermissions("draftGroupMeeting:search")
@ApiOperation(value = "会议管理-分页列表查询", notes = "会议管理-分页列表查询")
@GetMapping(value = "/page")
public Result<?> queryPageList(PayMeeting payMeeting,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
payMeeting.setMeetingType(MeetingCommon.DRAFTING_GROUP_MEETING_INT);
IPage<PayMeeting> pageList = payMeetingService.queryPageList(payMeeting, pageNo, pageSize, req);
return Result.OK(pageList);
}
/**
* 添加
*/
// @RequiresPermissions("draftGroupMeeting:add")
@AutoLog(value = "会议管理-添加")
@ApiOperation(value = "会议管理-添加", notes = "会议管理-添加")
@PostMapping(value = "/add")
public Result<?> add(@RequestBody PayMeetingVO payMeetingVO) {
String meetingType = payMeetingVO.getMeetingType();
if (!Objects.equals(meetingType, MeetingCommon.DRAFTING_GROUP_MEETING)) {
throw new RuntimeException();
}
ValidUtil.validate(payMeetingVO);
payMeetingService.add(payMeetingVO);
return Result.OK("添加成功!");
}
/**
* 编辑
*/
// @RequiresPermissions("draftGroupMeeting:edit")
@AutoLog(value = "会议管理-编辑")
@ApiOperation(value = "会议管理-编辑", notes = "会议管理-编辑")
@PostMapping(value = "/edit")
public Result<?> edit(@RequestBody PayMeetingVO payMeetingVO) {
String id = payMeetingVO.getId();
verifyMeetingType(id);
ValidUtil.validate(payMeetingVO, UpdateGroup.class);
payMeetingService.editById(payMeetingVO);
return Result.OK("编辑成功!");
}
/**
* 验证会议类型
* @param id
*/
private void verifyMeetingType(String id) {
if (StringUtils.isBlank(id)) {
throw new JeroBootException("会议id不能为空");
}
PayMeeting payMeeting = payMeetingService.getById(id);
if (Objects.isNull(payMeeting)) {
throw new JeroBootException("该会议不存在");
}
Integer meetingType = payMeeting.getMeetingType();
if (!Objects.equals(meetingType, MeetingCommon.DRAFTING_GROUP_MEETING_INT)) {
throw new RuntimeException();
}
}
/**
* 通过id删除
*/
// @RequiresPermissions("draftGroupMeeting:delete")
@AutoLog(value = "会议管理-通过id删除")
@ApiOperation(value = "会议管理-通过id删除", notes = "会议管理-通过id删除")
@GetMapping(value = "/delete")
public Result<?> delete(@RequestParam(name = "id") String id) {
verifyMeetingType(id);
payMeetingService.deleteById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*/
// @RequiresPermissions("draftGroupMeeting:batchDel")
@AutoLog(value = "会议管理-批量删除")
@ApiOperation(value = "会议管理-批量删除", notes = "会议管理-批量删除")
@GetMapping(value = "/deleteBatch")
public Result<?> deleteBatch(@RequestParam(name = "ids") String ids) {
List<String> idList = Arrays.asList(ids.split(","));
for (String id : idList) {
verifyMeetingType(id);
}
this.payMeetingService.deleteByIds(idList);
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*/
@ApiOperation(value = "会议管理-通过id查询", notes = "会议管理-通过id查询")
@GetMapping(value = "/queryById")
public Result<?> queryById(@RequestParam(name = "id") String id) {
PayMeeting meeting = payMeetingService.queryById(id);
if (meeting == null || !Objects.equals(meeting.getMeetingType(), MeetingCommon.DRAFTING_GROUP_MEETING_INT)) {
return Result.error("未找到对应数据");
}
//查询会议负责人
LoginUser user = sysBaseAPI.getUserById(meeting.getDirectorId());
meeting.setDirectorName(user.getRealname());
meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone()));
PayMeetingVO payMeetingVO = new PayMeetingVO();
BeanUtils.copyProperties(meeting, payMeetingVO);
String meetingType = meeting.getMeetingType().toString();
payMeetingVO.setMeetingType(meetingType);
payMeetingVO.setTbMeetingType(meeting.getMeetingType().toString());
//会议查询酒店联系人列表
LambdaQueryWrapper<PayMeetingHotelContacts> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayMeetingHotelContacts::getMeetingId, meeting.getId());
List<PayMeetingHotelContacts> payMeetingHotelContactsList = meetingHotelContactsService.list(wrapper);
payMeetingVO.setHotelContactsList(payMeetingHotelContactsList);
// 起草组项目查询起草组项目名
String draftingGroupId = meeting.getDraftingGroupId();
PayDraftingGroup payDraftingGroup = payDraftingGroupService.getById(draftingGroupId);
payMeetingVO.setDirectorName(payDraftingGroup.getDraftingGroupProject());
return Result.OK(payMeetingVO);
}
}
@@ -397,4 +397,13 @@ public class PayMeeting implements Serializable {
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "征集截止日期")
private java.util.Date endTimeAddQuestion;
/**起草组id*/
@Excel(name = "起草组名称", width = 15, dictTable = "pay_drafting_group",dicText = "drafting_group_project",dicCode = "id")
@ApiModelProperty(value = "起草id")
private String draftingGroupId;
/**起草组名称*/
@ApiModelProperty(value = "起草组名称")
private String draftingGroupName;
}
@@ -35,6 +35,9 @@ public interface PayMeetingMapper extends BaseMapper<PayMeeting> {
IPage<PayMeeting> workGroupPage(Page<PayMeeting> page, @Param(Constants.WRAPPER) QueryWrapper<PayMeeting> queryWrapper);
IPage<PayMeeting> draftGroupPage(Page<PayMeeting> page, QueryWrapper<PayMeeting> queryWrapper);
IPage<PayMeeting> standardPage(Page<PayMeeting> page, @Param(Constants.WRAPPER) QueryWrapper<PayMeeting> queryWrapper);
IPage<PayMeeting> basePage(Page<PayMeeting> page, @Param(Constants.WRAPPER) QueryWrapper<PayMeeting> queryWrapper);
@@ -230,6 +230,16 @@
${ew.customSqlSegment}
</select>
<select id="draftGroupPage" resultMap="PayMeetingResultMap">
select distinct pm.*
from pay_meeting pm
left join pay_meeting_situation pms on pm.id = pms.meeting_id
left join pay_drafting_group pdg on pdg.id = pm.drafting_group_id
left join pay_meeting_contacts pmc on pm.id = pmc.meeting_id
${ew.customSqlSegment}
</select>
<select id="standardPage" resultMap="PayMeetingResultMap">
select distinct pm.*
from pay_meeting pm
@@ -36,6 +36,8 @@ import com.jero.data.service.IPayCaseCommitteeService;
import com.jero.data.service.IPayCaseCommitteeSubitemService;
import com.jero.data.service.IPayCaseCouncilService;
import com.jero.data.service.IPayCaseCouncilSubitemService;
import com.jero.drafting.entity.PayDraftingGroup;
import com.jero.drafting.service.IPayDraftingGroupService;
import com.jero.meeting.common.MeetingCommon;
import com.jero.meeting.common.MeetingSubitemCommon;
import com.jero.meeting.entity.*;
@@ -134,6 +136,8 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
private PayMeetingGuestsFileMapper meetingGuestsFileMapper;
@Resource
private PayMeetingRemindMailRecordService meetingRemindMailRecordService;
@Resource
private IPayDraftingGroupService payDraftingGroupService;
/**
* 新增会议
@@ -458,6 +462,16 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
payMeetingVO.setWorkingGroupName(workingGroup.getWorkingGroupProject());
payMeetingVO.setRemind(MeetingCommon.REMIND_0);
break;
case MeetingCommon.DRAFTING_GROUP_MEETING:
// ValidUtil.validate(payMeetingVO, DraftingGroupMeeting.class);
String draftingGroupId = payMeetingVO.getDraftingGroupId();
PayDraftingGroup payDraftingGroup = payDraftingGroupService.getById(draftingGroupId);
if (payDraftingGroup == null) {
throw new JeroBootException("起草组项目不存在");
}
payMeetingVO.setDraftingGroupName(payDraftingGroup.getDraftingGroupProject());
payMeetingVO.setRemind(MeetingCommon.REMIND_0);
break;
case MeetingCommon.STANDARD_MEETING:
//ValidUtil.validate(payMeetingVO, StandardMeeting.class);
//标协会议类型
@@ -963,6 +977,8 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
permission = "committeeMeeting:search";
}else if (meetingType.equals(MeetingCommon.COUNCIL_MEETING_INT)){
permission = "committeeMeeting:search";
}else if (meetingType.equals(MeetingCommon.DRAFTING_GROUP_MEETING_INT)) {
permission = "draftGroupMeeting:search";
}
}
if (StringUtils.isNotBlank(permission)) {
@@ -980,6 +996,19 @@ public class PayMeetingServiceImpl extends ServiceImpl<PayMeetingMapper, PayMeet
.eq("pmc.meeting_contacts_id", sysUser.getId())
);
pageList = baseMapper.workGroupPage(page,queryWrapper);
}else if (meetingType.equals(MeetingCommon.DRAFTING_GROUP_MEETING_INT)){
queryWrapper.and(
a -> a.eq("pdg.principal_id_a", sysUser.getId())
.or()
.eq("pdg.principal_id_b", sysUser.getId())
.or()
.eq("dock_id", sysUser.getId())
.or()
.eq("pm.director_id", sysUser.getId())
.or()
.eq("pmc.meeting_contacts_id", sysUser.getId())
);
pageList = baseMapper.draftGroupPage(page,queryWrapper);
}else if (meetingType.equals(MeetingCommon.INTERNATIONAL_MEETING_INT)){
queryWrapper.and(
a -> a.eq("director_id", sysUser.getId())
@@ -0,0 +1,9 @@
package com.jero.meeting.valid.group;
/**
* 起草组类型
* @author sz
* @date 2024-01-05
*/
public @interface DraftingGroupMeeting {
}
@@ -358,4 +358,13 @@ public class PayMeetingVO implements Serializable {
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "征集截止日期")
private java.util.Date endTimeAddQuestion;
/**起草组id*/
@Excel(name = "起草组名称", width = 15, dictTable = "pay_drafting_group",dicText = "drafting_group_project",dicCode = "id")
@ApiModelProperty(value = "起草id")
private String draftingGroupId;
/**起草组名称*/
@ApiModelProperty(value = "起草组名称")
private String draftingGroupName;
}