From 4b2fabf5d17ac1440157703f8fc963caddaaf586 Mon Sep 17 00:00:00 2001 From: lijiarao Date: Thu, 30 Sep 2021 10:37:09 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=9A=E8=AE=AE=E5=A4=8D=E5=88=B65?= =?UTF-8?q?=E4=BB=BD=E6=8B=86=E5=88=86=E6=88=90=E4=BA=94=E7=A7=8D=E4=BC=9A?= =?UTF-8?q?=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CommitteeMeetingController.java | 489 ++++++++++++++++++ .../CommitteeMeetingSituationController.java | 367 +++++++++++++ .../controller/InternalMeetingController.java | 489 ++++++++++++++++++ .../InternalMeetingSituationController.java | 367 +++++++++++++ .../controller/OtherMeetingController.java | 489 ++++++++++++++++++ .../OtherMeetingSituationController.java | 367 +++++++++++++ .../controller/PayMeetingController.java | 2 +- .../StandardsMeetingController.java | 489 ++++++++++++++++++ .../StandardsMeetingSituationController.java | 367 +++++++++++++ .../WorkGroupMeetingController.java | 489 ++++++++++++++++++ .../WorkGroupMeetingSituationController.java | 367 +++++++++++++ 11 files changed, 4281 insertions(+), 1 deletion(-) create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/CommitteeMeetingController.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/CommitteeMeetingSituationController.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/InternalMeetingController.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/InternalMeetingSituationController.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/OtherMeetingController.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/OtherMeetingSituationController.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/StandardsMeetingController.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/StandardsMeetingSituationController.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/WorkGroupMeetingController.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/WorkGroupMeetingSituationController.java diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/CommitteeMeetingController.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/CommitteeMeetingController.java new file mode 100644 index 00000000..1d6ff50a --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/CommitteeMeetingController.java @@ -0,0 +1,489 @@ +package com.jero.meeting.controller; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +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.exception.JeroBootException; +import com.jero.common.system.api.ISysBaseAPI; +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.common.util.AuthenticationUtils; +import com.jero.common.util.PasswordUtil; +import com.jero.common.util.ValidUtil; +import com.jero.common.util.oConvertUtils; +import com.jero.company.service.IPayContactsManagementService; +import com.jero.data.entity.PayCaseCommittee; +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.service.IPayMeetingHotelContactsService; +import com.jero.meeting.service.IPayMeetingService; +import com.jero.meeting.vo.PayMeetingVO; +import com.jero.meeting.vo.PublishReminderVO; +import com.jero.meeting.vo.UploadFileVO; +import com.jero.meeting.vo.excel.*; +import com.jero.modules.oss.entity.OSSFile; +import com.jero.modules.oss.service.IOSSFileService; +import com.jero.modules.system.volid.group.UpdateGroup; +import com.jero.project.entity.PayWorkingGroup; +import com.jero.project.service.IPayWorkingGroupService; +import com.jero.standards.xuanguan.stablecrosstraining.entity.StableCrossTraining; +import com.jero.util.QrcodeUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.*; +import java.util.stream.Collectors; + + +/** + * @description: 会议管理 + * @author: jero-boot + * @date: 2021-09-02 + * @version: V1.0 + */ +@Api(tags = "会议管理-分标委会议") +@RestController +@RequestMapping("/meeting/committeeMeeting") +@Slf4j +public class CommitteeMeetingController extends JeroController { + @Resource + private IPayMeetingService payMeetingService; + @Resource + private ISysBaseAPI sysBaseApi; + @Resource + private IPayMeetingHotelContactsService meetingHotelContactsService; + @Resource + private IPayWorkingGroupService payWorkingGroupService; + @Resource + private AuthenticationUtils authenticationUtils; + @Resource + private IOSSFileService iossFileService; + @Resource + private IPayCaseCommitteeService payCaseCommitteeService; + @Resource + private IPayContactsManagementService payContactsManagementService; + + /** + * 分页列表查询 + */ + @RequiresPermissions("committeeMeeting: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) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeeting, req.getParameterMap()); + String meetingStartTime = req.getParameter("meetingStartTime"); + String meetingEndTime = req.getParameter("meetingEndTime"); + if (ObjectUtil.isNotEmpty(meetingStartTime) && ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime).or().lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingStartTime)) { + queryWrapper.not( + a -> a.lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime) + ); + } + + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingService.page(page, queryWrapper); + for (PayMeeting meeting : pageList.getRecords()) { + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(payMeetingVO, payMeeting); + //查询酒店联系人列表 + if (meeting.getMeetingType().equals(Integer.parseInt(MeetingCommon.STANDARD_MEETING))) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingHotelContacts::getMeetingId, meeting.getId()); + List payMeetingHotelContactsList = meetingHotelContactsService.list(wrapper); + meeting.setHotelContactsList(payMeetingHotelContactsList); + } + } + + return Result.OK(pageList); + } + + /** + * 企业端-会议-分页列表查询参会人的会议 + */ + @ApiOperation(value = "企业端-会议-分页列表查询参会人的会议") + @GetMapping(value = "/pageContract") + public Result queryPageListContract(PayMeeting payMeeting, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeeting, req.getParameterMap()); + String meetingStartTime = req.getParameter("meetingStartTime"); + String meetingEndTime = req.getParameter("meetingEndTime"); + if (ObjectUtil.isNotEmpty(meetingStartTime) && ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime).or().lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingStartTime)) { + queryWrapper.not( + a -> a.lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime) + ); + } + String meetingStatus = req.getParameter("meetingStatus"); + String now = DateUtil.formatDate(new Date()); + if (StringUtils.isNotBlank(meetingStatus)) { + switch (meetingStatus) { + case MeetingCommon.MEETING_STATUS_2: + queryWrapper.gt("date_format(start_time,'%Y-%m-%d')", now); + break; + case MeetingCommon.MEETING_STATUS_3: + queryWrapper.le("date_format(start_time,'%Y-%m-%d')", now); + queryWrapper.ge("date_format(end_time,'%Y-%m-%d')", now); + break; + case MeetingCommon.MEETING_STATUS_4: + queryWrapper.le("date_format(end_time,'%Y-%m-%d')", now); + break; + } + } + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String id = sysUser.getId(); + + //会议报名状态:1可报名/2已报名 + String meetingSignUpType = req.getParameter("meetingSignUpType"); + if (Objects.equals(meetingSignUpType,1+"")) { + queryWrapper.eq("pmrr.contact_id",id); + }else if (Objects.equals(meetingSignUpType,2+"")) { + queryWrapper.eq("pms.company_contact_id",id); + }else { + queryWrapper.and( + a -> a.eq("pms.company_contact_id",id) + .or() + .eq("pms.post_contact_id",id) + .or() + .eq("pmrr.contact_id",id) + ); + } + + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingService.pageListContract(page, queryWrapper, now); + for (PayMeeting meeting : pageList.getRecords()) { + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(payMeetingVO, payMeeting); + } + + return Result.OK(pageList); + } + + /** + * 列表查询 + */ + @RequiresPermissions("committeeMeeting:search") + @ApiOperation(value = "会议管理-列表查询", notes = "会议管理-列表查询") + @GetMapping(value = "/list") + public Result> queryList() { + List list = payMeetingService.queryList(); + return Result.OK(list); + } + + /** + * 添加 + */ + @RequiresPermissions("committeeMeeting:add") + @AutoLog(value = "会议管理-添加") + @ApiOperation(value = "会议管理-添加", notes = "会议管理-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody PayMeetingVO payMeetingVO) { + ValidUtil.validate(payMeetingVO); + payMeetingService.add(payMeetingVO); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + */ + @RequiresPermissions("committeeMeeting:edit") + @AutoLog(value = "会议管理-编辑") + @ApiOperation(value = "会议管理-编辑", notes = "会议管理-编辑") + @PostMapping(value = "/edit") + public Result edit(@RequestBody PayMeetingVO payMeetingVO) { + ValidUtil.validate(payMeetingVO, UpdateGroup.class); + payMeetingService.editById(payMeetingVO); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + */ + @RequiresPermissions("committeeMeeting:delete") + @AutoLog(value = "会议管理-通过id删除") + @ApiOperation(value = "会议管理-通过id删除", notes = "会议管理-通过id删除") + @GetMapping(value = "/delete") + public Result delete(@RequestParam(name = "id") String id) { + payMeetingService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + */ + @RequiresPermissions("committeeMeeting:batchDel") + @AutoLog(value = "会议管理-批量删除") + @ApiOperation(value = "会议管理-批量删除", notes = "会议管理-批量删除") + @GetMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids") String ids) { + this.payMeetingService.deleteByIds(Arrays.asList(ids.split(","))); + 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) { + return Result.error("未找到对应数据"); + } + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(meeting, payMeetingVO); + String meetingType = meeting.getMeetingType().toString(); + //String meetingType1 = sysBaseApi.translateDict("meeting_type", meetingType); + payMeetingVO.setMeetingType(meetingType); + payMeetingVO.setTbMeetingType(meeting.getMeetingType().toString()); + //payMeetingVO.setHotelContactsList(new ArrayList<>()); + //标协会议查询酒店联系人列表 + if (meetingType.equals(MeetingCommon.STANDARD_MEETING)) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingHotelContacts::getMeetingId, meeting.getId()); + List payMeetingHotelContactsList = meetingHotelContactsService.list(wrapper); + payMeetingVO.setHotelContactsList(payMeetingHotelContactsList); + //标协会议类型 + //String tbMeetingType = meeting.getTbMeetingType().toString(); + //String type = sysBaseApi.translateDict("standard_meeting_type", tbMeetingType); + //payMeetingVO.setTbMeetingType(type); + // 工作组项目查询工作组项目名 + } else if (meetingType.equals(MeetingCommon.WORKING_GROUP_MEETING)) { + String workingGroupId = meeting.getWorkingGroupId(); + PayWorkingGroup workingGroup = payWorkingGroupService.getById(workingGroupId); + payMeetingVO.setWorkingGroupName(workingGroup.getWorkingGroupProject()); + } + return Result.OK(payMeetingVO); + } + + /** + * 导出excel + */ + @RequiresPermissions("committeeMeeting:export") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, PayMeeting payMeeting) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeeting, request.getParameterMap()); + List pageList = payMeetingService.list(queryWrapper); + List exportList = new ArrayList<>(); + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + pageList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + } + if (pageList.isEmpty()) { + throw new JeroBootException("没有数据"); + } + String meetingType = pageList.get(0).getMeetingType().toString(); + for (PayMeeting meeting : pageList) { + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(meeting, payMeetingVO); + meetingType = meeting.getMeetingType().toString(); + String meetingType1 = sysBaseApi.translateDict("meeting_type", meetingType); + payMeetingVO.setMeetingType(meetingType1); + payMeetingVO.setHotelContactsList(new ArrayList<>()); + //标协会议查询酒店联系人列表 + switch (meetingType) { + case MeetingCommon.STANDARD_MEETING: + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingHotelContacts::getMeetingId, meeting.getId()); + List payMeetingHotelContactsList = meetingHotelContactsService.list(wrapper); + payMeetingVO.setHotelContactsList(payMeetingHotelContactsList); + //标协会议类型 + String tbMeetingType = meeting.getTbMeetingType().toString(); + String type = sysBaseApi.translateDict("standard_meeting_type", tbMeetingType); + payMeetingVO.setTbMeetingType(type); + //保存数据 + StandardsMeetingExcel standardsMeetingExcel = new StandardsMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, standardsMeetingExcel); + exportList.add(standardsMeetingExcel); + // 工作组项目查询工作组项目名 + break; + case MeetingCommon.WORKING_GROUP_MEETING: + String workingGroupId = meeting.getWorkingGroupId(); + PayWorkingGroup workingGroup = payWorkingGroupService.getById(workingGroupId); + payMeetingVO.setWorkingGroupName(workingGroup.getWorkingGroupProject()); + //保存数据 + WorkingGroupMeetingExcel workingGroupMeetingExcel = new WorkingGroupMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, workingGroupMeetingExcel); + exportList.add(workingGroupMeetingExcel); + break; + case MeetingCommon.INTERNATIONAL_MEETING: + //保存数据 + InternationalMeetingExcel internationalMeetingExcel = new InternationalMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, internationalMeetingExcel); + exportList.add(internationalMeetingExcel); + break; + case MeetingCommon.OTHER_MEETING: + //保存数据 + OtherMeetingExcel otherMeetingExcel = new OtherMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, otherMeetingExcel); + exportList.add(otherMeetingExcel); + break; + case MeetingCommon.COMMITTEE_MEETING: + String caseCommitteeId = meeting.getCaseCommitteeId(); + PayCaseCommittee payCaseCommittee = payCaseCommitteeService.getById(caseCommitteeId); + payMeetingVO.setCaseCommitteeName(payCaseCommittee.getName()); + + CommitteeMeetingExcel committeeMeetingExcel = new CommitteeMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, committeeMeetingExcel); + exportList.add(committeeMeetingExcel); + break; + } + } + Class classToExport = null; + switch (meetingType) { + case MeetingCommon.WORKING_GROUP_MEETING: + classToExport = WorkingGroupMeetingExcel.class; + break; + case MeetingCommon.STANDARD_MEETING: + classToExport = StandardsMeetingExcel.class; + break; + case MeetingCommon.INTERNATIONAL_MEETING: + classToExport = InternationalMeetingExcel.class; + break; + case MeetingCommon.OTHER_MEETING: + classToExport = OtherMeetingExcel.class; + break; + case MeetingCommon.COMMITTEE_MEETING: + classToExport = CommitteeMeetingExcel.class; + break; + } + return super.exportListXls(exportList, classToExport, "会议管理"); + } + + /** + * 上传资料 + */ + @AutoLog(value = "上传资料") + @RequiresPermissions("committeeMeeting:upload") + @ApiOperation(value = "上传资料", notes = "上传资料") + @PostMapping(value = "/uploadFile") + public Result uploadFile(@RequestBody UploadFileVO uploadFileVO) { + String fileIds = uploadFileVO.getFileIds(); + String id = uploadFileVO.getId(); + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(PayMeeting::getId, id); + wrapper.set(PayMeeting::getMeetingData, fileIds); + payMeetingService.update(wrapper); + PayMeeting payMeeting = payMeetingService.getById(id); + if (payMeeting.getMeetingType().equals(Integer.parseInt(MeetingCommon.STANDARD_MEETING))) { + List idList = Arrays.asList(fileIds.split(",")); + List ossFiles = iossFileService.listByIds(idList); + for (OSSFile ossFile : ossFiles) { + String url = ossFile.getUrl(); + String[] fileUrl = url.split("/"); + int length = fileUrl.length; + ossFile.setFileName(fileUrl[length - 1]); + } + AuthenticationUtils.post("/stablecrosstraining/stableCrossTraining/addStandardsFile", null, ossFiles); + StableCrossTraining stableCrossTraining = new StableCrossTraining(); + stableCrossTraining.setId(id); + stableCrossTraining.setMeetingFiles(fileIds); + AuthenticationUtils.post("/stablecrosstraining/stableCrossTraining/updateStandardsFile", null, stableCrossTraining); + } + return Result.OK("上传资料成功!"); + } + + /** + * 发布提醒 + */ + @AutoLog("发布提醒") + @RequiresPermissions("committeeMeeting:publish") + @ApiOperation(value = "发布提醒", notes = "发布提醒") + @PostMapping(value = "/publishReminder") + public Result publishReminder(@RequestBody PublishReminderVO publishReminderVO) { + payMeetingService.publishReminder(publishReminderVO); + return Result.OK(); + } + + @ApiOperation(value = "生成base64") + @GetMapping(value = "/createBase64") + @ApiImplicitParam(name = "contact", value = "内容", required = true, paramType = "query") + public Result createBase64(String contact) { + return Result.OK(QrcodeUtil.create(contact)); + } + + /** + * 新增标协会议 + */ + @ApiOperation(value = "新增标协会议") + @PostMapping(value = "/addStandards") + public Result addStandards(@RequestBody PayMeeting payMeeting, HttpServletRequest request) { + String publicKey = request.getParameter("publicKey"); + String token = request.getParameter("token"); + authenticationUtils.check(token, publicKey); + + payMeetingService.addStandards(payMeeting); + return Result.OK("合并开票成功!"); + } + + /** + * 新增会议文件 + */ + @ApiOperation(value = "新增会议文件", notes = "新增会议文件") + @PostMapping(value = "/addStandardsFile") + public Result addStandardsFile(@RequestBody List ossFileList, HttpServletRequest request) { + String publicKey = request.getParameter("publicKey"); + String token = request.getParameter("token"); + authenticationUtils.check(token, publicKey); + for (OSSFile ossFile : ossFileList) { + iossFileService.saveOrUpdate(ossFile); + } + return Result.OK("新增会议文件成功!"); + } + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/CommitteeMeetingSituationController.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/CommitteeMeetingSituationController.java new file mode 100644 index 00000000..21bf96e3 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/CommitteeMeetingSituationController.java @@ -0,0 +1,367 @@ +package com.jero.meeting.controller; + +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.aspect.annotation.DictPoint; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.system.query.QueryGenerator; +import com.jero.common.util.AuthenticationUtils; +import com.jero.common.util.PasswordUtil; +import com.jero.common.util.ValidUtil; +import com.jero.common.util.oConvertUtils; +import com.jero.company.entity.PayCompanyManagement; +import com.jero.company.entity.PayContactsManagement; +import com.jero.company.service.IPayCompanyManagementService; +import com.jero.company.service.IPayContactsManagementService; +import com.jero.meeting.common.MeetingCommon; +import com.jero.meeting.entity.PayMeetingSituation; +import com.jero.meeting.service.IPayMeetingSituationService; +import com.jero.meeting.vo.*; +import com.jero.meeting.vo.excel.*; +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.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + + +/** + * @description: 参会人员信息 + * @author: jero-boot + * @date: 2021-09-02 + * @version: V1.0 + */ +@Api(tags = "参会人员信息") +@RestController +@RequestMapping("/meeting/committeeMeetingSituation") +@Slf4j +public class CommitteeMeetingSituationController extends JeroController { + @Resource + private IPayMeetingSituationService payMeetingSituationService; + @Resource + private AuthenticationUtils authenticationUtils; + @Resource + private IPayContactsManagementService contactsManagementService; + @Resource + private IPayCompanyManagementService companyManagementService; + /** + * 分页列表查询 + */ + @RequiresPermissions("committeeMeetingSituation:search") + @ApiOperation(value = "参会人员信息-分页列表查询", notes = "参会人员信息-分页列表查询") + @GetMapping(value = "/page") + public Result queryPageList(PayMeetingSituation payMeetingSituation, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, req.getParameterMap()); + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingSituationService.page(page, queryWrapper); + List situationList = pageList.getRecords(); + for (PayMeetingSituation meetingSituation : situationList) { + Integer payMode = meetingSituation.getPayMode(); + //汇款并且缴费凭证为空 + if (Objects.equals(payMode,1) && StringUtils.isBlank(meetingSituation.getPaymentRecord())){ + meetingSituation.setIdentification(PayProjectCommon.YES); + }else { + meetingSituation.setIdentification(PayProjectCommon.NO); + } + } + return Result.OK(pageList); + } + + /** + * 合同查询未关联参会人列表 + */ + @ApiOperation(value = "合同查询未关联参会人列表", notes = "合同查询未关联参会人列表") + @GetMapping(value = "/contractPage") + public Result contractPage(MeetingSituationContractVO meetingSituationContractVO, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingSituationService.contractPage(page, meetingSituationContractVO); + return Result.OK(pageList); + } + + /** + * 分页列表查询 会员系统系统 + */ + @ApiOperation(value = "参会人员信息-分页列表查询 会员系统系统", notes = "参会人员信息-分页列表查询") + @GetMapping(value = "/page2") + public Result queryPageList2(PayMeetingSituation payMeetingSituation, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + String publicKey = req.getParameter("publicKey"); + String token = req.getParameter("token"); + authenticationUtils.check(token, publicKey); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, req.getParameterMap()); + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingSituationService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 列表查询 + */ + @ApiOperation(value = "参会人员信息-列表查询", notes = "参会人员信息-列表查询") + @GetMapping(value = "/list") + public Result> queryList() { + List list = payMeetingSituationService.queryList(); + return Result.OK(list); + } + + /** + * 添加参会人 + */ + @RequiresPermissions("committeeMeetingSituation:add") + @AutoLog(value = "参会人员信息-添加参会人") + @ApiOperation(value = "参会人员信息-添加参会人", notes = "参会人员信息-添加参会人") + @PostMapping(value = "/add") + public Result add(@RequestBody PayMeetingSituation payMeetingSituation) { + payMeetingSituationService.add(payMeetingSituation); + return Result.OK("添加成功!"); + } + + /** + * 报名 + */ + @AutoLog(value = "报名信息-报名") + @ApiOperation(value = "报名信息-报名", notes = "报名信息-报名") + @PostMapping(value = "/signUp") + public Result signUp(@RequestBody PayMeetingSituation payMeetingSituation) { + payMeetingSituationService.signUp(payMeetingSituation); + return Result.OK("添加成功!"); + } + + + /** + * 编辑 + */ + @AutoLog(value = "参会人员信息-编辑") + @RequiresPermissions("committeeMeetingSituation:edit") + @ApiOperation(value = "参会人员信息-编辑", notes = "参会人员信息-编辑") + @PostMapping(value = "/edit") + public Result edit(@RequestBody PayMeetingSituationVO payMeetingSituationVO) { + payMeetingSituationService.editById(payMeetingSituationVO); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + */ + @RequiresPermissions("committeeMeetingSituation:delete") + @AutoLog(value = "参会人员信息-通过id删除") + @ApiOperation(value = "参会人员信息-通过id删除", notes = "参会人员信息-通过id删除") + @GetMapping(value = "/delete") + public Result delete(@RequestParam(name = "id") String id) { + payMeetingSituationService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + */ + @RequiresPermissions("committeeMeetingSituation:batchDel") + @AutoLog(value = "参会人员信息-批量删除") + @ApiOperation(value = "参会人员信息-批量删除", notes = "参会人员信息-批量删除") + @GetMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids") String ids) { + this.payMeetingSituationService.deleteByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + */ + @DictPoint + @ApiOperation(value = "参会人员信息-通过id查询", notes = "参会人员信息-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id") String id) { + PayMeetingSituation payMeetingSituation = payMeetingSituationService.queryById(id); + if (payMeetingSituation == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(payMeetingSituation); + } + + /** + * 通过会议id查询自己的参会人信息 + */ + @DictPoint + @ApiOperation(value = "参会人员信息-通过会议id查询自己的参会人信息") + @GetMapping(value = "/queryByMeetingId") + public Result queryByMeetingId(@RequestParam(name = "meetingId") String meetingId) { + PayMeetingSituation payMeetingSituation = payMeetingSituationService.queryByMeetingIdAndContactId(meetingId); + if (payMeetingSituation == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(payMeetingSituation); + } + + /** + * 导出excel + */ + @RequiresPermissions("committeeMeetingSituation:export") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, PayMeetingSituation payMeetingSituation) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, request.getParameterMap()); + List pageList = payMeetingSituationService.list(queryWrapper); + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + pageList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + } + if (pageList.isEmpty()) { + throw new JeroBootException("没有数据"); + } + String meetingType = payMeetingSituationService.getMeetingType(payMeetingSituation); + List exportList = new ArrayList<>(); + for (PayMeetingSituation meetingSituation : pageList) { + + String companyContactId = meetingSituation.getCompanyContactId(); + PayContactsManagement contactsManagement = contactsManagementService.getById(companyContactId); + meetingSituation.setCompanyContactName(contactsManagement.getName()); + meetingSituation.setPost(contactsManagement.getPost()); + meetingSituation.setPhone(PasswordUtil.decrypt(contactsManagement.getPhone())); + meetingSituation.setEmail(PasswordUtil.decrypt(contactsManagement.getEmail())); + PayCompanyManagement companyManagement = companyManagementService.getById(contactsManagement.getCompanyId()); + meetingSituation.setCompanyName(companyManagement.getCompanyName()); + switch (meetingType) { + case MeetingCommon.STANDARD_MEETING: + //保存数据 + StandardsSituationExcel standardsSituationExcel = new StandardsSituationExcel(); + BeanUtils.copyProperties(meetingSituation, standardsSituationExcel); + exportList.add(standardsSituationExcel); + // 工作组项目查询工作组项目名 + break; + case MeetingCommon.WORKING_GROUP_MEETING: + //保存数据 + WorkingGroupSituationExcel workingGroupSituationExcel = new WorkingGroupSituationExcel(); + BeanUtils.copyProperties(meetingSituation, workingGroupSituationExcel); + exportList.add(workingGroupSituationExcel); + break; + case MeetingCommon.INTERNATIONAL_MEETING: + //保存数据 + InternationalSituationExcel internationalSituationExcel = new InternationalSituationExcel(); + BeanUtils.copyProperties(meetingSituation, internationalSituationExcel); + exportList.add(internationalSituationExcel); + break; + case MeetingCommon.OTHER_MEETING: + //保存数据 + SituationExcel situationExcel = new SituationExcel(); + BeanUtils.copyProperties(meetingSituation, situationExcel); + exportList.add(situationExcel); + break; + case MeetingCommon.COMMITTEE_MEETING: + //保存数据 + CommitteeSituationExcel committeeSituationExcel = new CommitteeSituationExcel(); + BeanUtils.copyProperties(meetingSituation, committeeSituationExcel); + exportList.add(committeeSituationExcel); + break; + } + } + + + Class classToExport = null; + switch (meetingType) { + case MeetingCommon.WORKING_GROUP_MEETING: + classToExport = WorkingGroupSituationExcel.class; + break; + case MeetingCommon.STANDARD_MEETING: + classToExport = StandardsSituationExcel.class; + break; + case MeetingCommon.INTERNATIONAL_MEETING: + classToExport = InternationalSituationExcel.class; + break; + case MeetingCommon.OTHER_MEETING: + classToExport = SituationExcel.class; + break; + case MeetingCommon.COMMITTEE_MEETING: + classToExport = CommitteeSituationExcel.class; + break; + } + return super.exportListXls(exportList, classToExport, "参会人员信息"); + } + + + /** + * 设置对接人 + */ + @RequiresPermissions("committeeMeetingSituation:batchSetDocker") + @AutoLog(value = "设置对接人") + @ApiOperation(value = "设置对接人", notes = "设置对接人") + @PostMapping(value = "/addDock") + public Result addDock(@RequestBody AddDockVO addDockVO) { + payMeetingSituationService.addDock(addDockVO); + return Result.OK("设置对接人成功!"); + } + + /** + * 审核付款凭证 + */ + @RequiresPermissions("committeeMeetingSituation:auditCredentials") + @AutoLog(value = "审核付款凭证") + @ApiOperation(value = "审核付款凭证") + @PostMapping(value = "/check") + public Result check(@RequestBody CheckVO checkVO) { + payMeetingSituationService.check(checkVO); + return Result.OK("审核成功!"); + } + + /** + * 审核报名信息 + */ + @AutoLog(value = "审核报名信息") + @RequiresPermissions("committeeMeetingSituation:auditSignUp") + @ApiOperation(value = "审核报名信息") + @PostMapping(value = "/checkRegister") + public Result checkRegister(@RequestBody CheckVO checkVO) { + payMeetingSituationService.checkRegister(checkVO); + return Result.OK("审核成功!"); + } + + /** + * 合并开票 + */ + @AutoLog(value = "合并开票") + @ApiOperation(value = "合并开票", notes = "合并开票") + @PostMapping(value = "/batchPayBill") + public Result mergePayBill(@RequestBody MergePayBillVO mergePayBillVO) { + ValidUtil.validate(mergePayBillVO); + payMeetingSituationService.mergePayBill(mergePayBillVO); + return Result.OK("合并开票成功!"); + } + + /** + * 签到 + */ + @AutoLog(value = "签到") + @ApiOperation(value = "签到") + @PostMapping(value = "/signIn") + public Result signIn(@RequestBody SignInVO signInVO) { + ValidUtil.validate(signInVO); + payMeetingSituationService.signIn(signInVO); + return Result.OK("签到成功!"); + } + + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/InternalMeetingController.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/InternalMeetingController.java new file mode 100644 index 00000000..5bff6d44 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/InternalMeetingController.java @@ -0,0 +1,489 @@ +package com.jero.meeting.controller; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +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.exception.JeroBootException; +import com.jero.common.system.api.ISysBaseAPI; +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.common.util.AuthenticationUtils; +import com.jero.common.util.PasswordUtil; +import com.jero.common.util.ValidUtil; +import com.jero.common.util.oConvertUtils; +import com.jero.company.service.IPayContactsManagementService; +import com.jero.data.entity.PayCaseCommittee; +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.service.IPayMeetingHotelContactsService; +import com.jero.meeting.service.IPayMeetingService; +import com.jero.meeting.vo.PayMeetingVO; +import com.jero.meeting.vo.PublishReminderVO; +import com.jero.meeting.vo.UploadFileVO; +import com.jero.meeting.vo.excel.*; +import com.jero.modules.oss.entity.OSSFile; +import com.jero.modules.oss.service.IOSSFileService; +import com.jero.modules.system.volid.group.UpdateGroup; +import com.jero.project.entity.PayWorkingGroup; +import com.jero.project.service.IPayWorkingGroupService; +import com.jero.standards.xuanguan.stablecrosstraining.entity.StableCrossTraining; +import com.jero.util.QrcodeUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.*; +import java.util.stream.Collectors; + + +/** + * @description: 会议管理 + * @author: jero-boot + * @date: 2021-09-02 + * @version: V1.0 + */ +@Api(tags = "会议管理-国际研讨会") +@RestController +@RequestMapping("/meeting/internalMeeting") +@Slf4j +public class InternalMeetingController extends JeroController { + @Resource + private IPayMeetingService payMeetingService; + @Resource + private ISysBaseAPI sysBaseApi; + @Resource + private IPayMeetingHotelContactsService meetingHotelContactsService; + @Resource + private IPayWorkingGroupService payWorkingGroupService; + @Resource + private AuthenticationUtils authenticationUtils; + @Resource + private IOSSFileService iossFileService; + @Resource + private IPayCaseCommitteeService payCaseCommitteeService; + @Resource + private IPayContactsManagementService payContactsManagementService; + + /** + * 分页列表查询 + */ + @RequiresPermissions("internalMeeting: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) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeeting, req.getParameterMap()); + String meetingStartTime = req.getParameter("meetingStartTime"); + String meetingEndTime = req.getParameter("meetingEndTime"); + if (ObjectUtil.isNotEmpty(meetingStartTime) && ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime).or().lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingStartTime)) { + queryWrapper.not( + a -> a.lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime) + ); + } + + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingService.page(page, queryWrapper); + for (PayMeeting meeting : pageList.getRecords()) { + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(payMeetingVO, payMeeting); + //查询酒店联系人列表 + if (meeting.getMeetingType().equals(Integer.parseInt(MeetingCommon.STANDARD_MEETING))) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingHotelContacts::getMeetingId, meeting.getId()); + List payMeetingHotelContactsList = meetingHotelContactsService.list(wrapper); + meeting.setHotelContactsList(payMeetingHotelContactsList); + } + } + + return Result.OK(pageList); + } + + /** + * 企业端-会议-分页列表查询参会人的会议 + */ + @ApiOperation(value = "企业端-会议-分页列表查询参会人的会议") + @GetMapping(value = "/pageContract") + public Result queryPageListContract(PayMeeting payMeeting, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeeting, req.getParameterMap()); + String meetingStartTime = req.getParameter("meetingStartTime"); + String meetingEndTime = req.getParameter("meetingEndTime"); + if (ObjectUtil.isNotEmpty(meetingStartTime) && ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime).or().lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingStartTime)) { + queryWrapper.not( + a -> a.lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime) + ); + } + String meetingStatus = req.getParameter("meetingStatus"); + String now = DateUtil.formatDate(new Date()); + if (StringUtils.isNotBlank(meetingStatus)) { + switch (meetingStatus) { + case MeetingCommon.MEETING_STATUS_2: + queryWrapper.gt("date_format(start_time,'%Y-%m-%d')", now); + break; + case MeetingCommon.MEETING_STATUS_3: + queryWrapper.le("date_format(start_time,'%Y-%m-%d')", now); + queryWrapper.ge("date_format(end_time,'%Y-%m-%d')", now); + break; + case MeetingCommon.MEETING_STATUS_4: + queryWrapper.le("date_format(end_time,'%Y-%m-%d')", now); + break; + } + } + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String id = sysUser.getId(); + + //会议报名状态:1可报名/2已报名 + String meetingSignUpType = req.getParameter("meetingSignUpType"); + if (Objects.equals(meetingSignUpType,1+"")) { + queryWrapper.eq("pmrr.contact_id",id); + }else if (Objects.equals(meetingSignUpType,2+"")) { + queryWrapper.eq("pms.company_contact_id",id); + }else { + queryWrapper.and( + a -> a.eq("pms.company_contact_id",id) + .or() + .eq("pms.post_contact_id",id) + .or() + .eq("pmrr.contact_id",id) + ); + } + + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingService.pageListContract(page, queryWrapper, now); + for (PayMeeting meeting : pageList.getRecords()) { + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(payMeetingVO, payMeeting); + } + + return Result.OK(pageList); + } + + /** + * 列表查询 + */ + @RequiresPermissions("internalMeeting:search") + @ApiOperation(value = "会议管理-列表查询", notes = "会议管理-列表查询") + @GetMapping(value = "/list") + public Result> queryList() { + List list = payMeetingService.queryList(); + return Result.OK(list); + } + + /** + * 添加 + */ + @RequiresPermissions("internalMeeting:add") + @AutoLog(value = "会议管理-添加") + @ApiOperation(value = "会议管理-添加", notes = "会议管理-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody PayMeetingVO payMeetingVO) { + ValidUtil.validate(payMeetingVO); + payMeetingService.add(payMeetingVO); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + */ + @RequiresPermissions("internalMeeting:edit") + @AutoLog(value = "会议管理-编辑") + @ApiOperation(value = "会议管理-编辑", notes = "会议管理-编辑") + @PostMapping(value = "/edit") + public Result edit(@RequestBody PayMeetingVO payMeetingVO) { + ValidUtil.validate(payMeetingVO, UpdateGroup.class); + payMeetingService.editById(payMeetingVO); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + */ + @RequiresPermissions("internalMeeting:delete") + @AutoLog(value = "会议管理-通过id删除") + @ApiOperation(value = "会议管理-通过id删除", notes = "会议管理-通过id删除") + @GetMapping(value = "/delete") + public Result delete(@RequestParam(name = "id") String id) { + payMeetingService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + */ + @RequiresPermissions("internalMeeting:batchDel") + @AutoLog(value = "会议管理-批量删除") + @ApiOperation(value = "会议管理-批量删除", notes = "会议管理-批量删除") + @GetMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids") String ids) { + this.payMeetingService.deleteByIds(Arrays.asList(ids.split(","))); + 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) { + return Result.error("未找到对应数据"); + } + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(meeting, payMeetingVO); + String meetingType = meeting.getMeetingType().toString(); + //String meetingType1 = sysBaseApi.translateDict("meeting_type", meetingType); + payMeetingVO.setMeetingType(meetingType); + payMeetingVO.setTbMeetingType(meeting.getMeetingType().toString()); + //payMeetingVO.setHotelContactsList(new ArrayList<>()); + //标协会议查询酒店联系人列表 + if (meetingType.equals(MeetingCommon.STANDARD_MEETING)) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingHotelContacts::getMeetingId, meeting.getId()); + List payMeetingHotelContactsList = meetingHotelContactsService.list(wrapper); + payMeetingVO.setHotelContactsList(payMeetingHotelContactsList); + //标协会议类型 + //String tbMeetingType = meeting.getTbMeetingType().toString(); + //String type = sysBaseApi.translateDict("standard_meeting_type", tbMeetingType); + //payMeetingVO.setTbMeetingType(type); + // 工作组项目查询工作组项目名 + } else if (meetingType.equals(MeetingCommon.WORKING_GROUP_MEETING)) { + String workingGroupId = meeting.getWorkingGroupId(); + PayWorkingGroup workingGroup = payWorkingGroupService.getById(workingGroupId); + payMeetingVO.setWorkingGroupName(workingGroup.getWorkingGroupProject()); + } + return Result.OK(payMeetingVO); + } + + /** + * 导出excel + */ + @RequiresPermissions("internalMeeting:export") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, PayMeeting payMeeting) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeeting, request.getParameterMap()); + List pageList = payMeetingService.list(queryWrapper); + List exportList = new ArrayList<>(); + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + pageList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + } + if (pageList.isEmpty()) { + throw new JeroBootException("没有数据"); + } + String meetingType = pageList.get(0).getMeetingType().toString(); + for (PayMeeting meeting : pageList) { + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(meeting, payMeetingVO); + meetingType = meeting.getMeetingType().toString(); + String meetingType1 = sysBaseApi.translateDict("meeting_type", meetingType); + payMeetingVO.setMeetingType(meetingType1); + payMeetingVO.setHotelContactsList(new ArrayList<>()); + //标协会议查询酒店联系人列表 + switch (meetingType) { + case MeetingCommon.STANDARD_MEETING: + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingHotelContacts::getMeetingId, meeting.getId()); + List payMeetingHotelContactsList = meetingHotelContactsService.list(wrapper); + payMeetingVO.setHotelContactsList(payMeetingHotelContactsList); + //标协会议类型 + String tbMeetingType = meeting.getTbMeetingType().toString(); + String type = sysBaseApi.translateDict("standard_meeting_type", tbMeetingType); + payMeetingVO.setTbMeetingType(type); + //保存数据 + StandardsMeetingExcel standardsMeetingExcel = new StandardsMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, standardsMeetingExcel); + exportList.add(standardsMeetingExcel); + // 工作组项目查询工作组项目名 + break; + case MeetingCommon.WORKING_GROUP_MEETING: + String workingGroupId = meeting.getWorkingGroupId(); + PayWorkingGroup workingGroup = payWorkingGroupService.getById(workingGroupId); + payMeetingVO.setWorkingGroupName(workingGroup.getWorkingGroupProject()); + //保存数据 + WorkingGroupMeetingExcel workingGroupMeetingExcel = new WorkingGroupMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, workingGroupMeetingExcel); + exportList.add(workingGroupMeetingExcel); + break; + case MeetingCommon.INTERNATIONAL_MEETING: + //保存数据 + InternationalMeetingExcel internationalMeetingExcel = new InternationalMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, internationalMeetingExcel); + exportList.add(internationalMeetingExcel); + break; + case MeetingCommon.OTHER_MEETING: + //保存数据 + OtherMeetingExcel otherMeetingExcel = new OtherMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, otherMeetingExcel); + exportList.add(otherMeetingExcel); + break; + case MeetingCommon.COMMITTEE_MEETING: + String caseCommitteeId = meeting.getCaseCommitteeId(); + PayCaseCommittee payCaseCommittee = payCaseCommitteeService.getById(caseCommitteeId); + payMeetingVO.setCaseCommitteeName(payCaseCommittee.getName()); + + CommitteeMeetingExcel committeeMeetingExcel = new CommitteeMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, committeeMeetingExcel); + exportList.add(committeeMeetingExcel); + break; + } + } + Class classToExport = null; + switch (meetingType) { + case MeetingCommon.WORKING_GROUP_MEETING: + classToExport = WorkingGroupMeetingExcel.class; + break; + case MeetingCommon.STANDARD_MEETING: + classToExport = StandardsMeetingExcel.class; + break; + case MeetingCommon.INTERNATIONAL_MEETING: + classToExport = InternationalMeetingExcel.class; + break; + case MeetingCommon.OTHER_MEETING: + classToExport = OtherMeetingExcel.class; + break; + case MeetingCommon.COMMITTEE_MEETING: + classToExport = CommitteeMeetingExcel.class; + break; + } + return super.exportListXls(exportList, classToExport, "会议管理"); + } + + /** + * 上传资料 + */ + @AutoLog(value = "上传资料") + @RequiresPermissions("internalMeeting:upload") + @ApiOperation(value = "上传资料", notes = "上传资料") + @PostMapping(value = "/uploadFile") + public Result uploadFile(@RequestBody UploadFileVO uploadFileVO) { + String fileIds = uploadFileVO.getFileIds(); + String id = uploadFileVO.getId(); + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(PayMeeting::getId, id); + wrapper.set(PayMeeting::getMeetingData, fileIds); + payMeetingService.update(wrapper); + PayMeeting payMeeting = payMeetingService.getById(id); + if (payMeeting.getMeetingType().equals(Integer.parseInt(MeetingCommon.STANDARD_MEETING))) { + List idList = Arrays.asList(fileIds.split(",")); + List ossFiles = iossFileService.listByIds(idList); + for (OSSFile ossFile : ossFiles) { + String url = ossFile.getUrl(); + String[] fileUrl = url.split("/"); + int length = fileUrl.length; + ossFile.setFileName(fileUrl[length - 1]); + } + AuthenticationUtils.post("/stablecrosstraining/stableCrossTraining/addStandardsFile", null, ossFiles); + StableCrossTraining stableCrossTraining = new StableCrossTraining(); + stableCrossTraining.setId(id); + stableCrossTraining.setMeetingFiles(fileIds); + AuthenticationUtils.post("/stablecrosstraining/stableCrossTraining/updateStandardsFile", null, stableCrossTraining); + } + return Result.OK("上传资料成功!"); + } + + /** + * 发布提醒 + */ + @AutoLog("发布提醒") + @RequiresPermissions("internalMeeting:publish") + @ApiOperation(value = "发布提醒", notes = "发布提醒") + @PostMapping(value = "/publishReminder") + public Result publishReminder(@RequestBody PublishReminderVO publishReminderVO) { + payMeetingService.publishReminder(publishReminderVO); + return Result.OK(); + } + + @ApiOperation(value = "生成base64") + @GetMapping(value = "/createBase64") + @ApiImplicitParam(name = "contact", value = "内容", required = true, paramType = "query") + public Result createBase64(String contact) { + return Result.OK(QrcodeUtil.create(contact)); + } + + /** + * 新增标协会议 + */ + @ApiOperation(value = "新增标协会议") + @PostMapping(value = "/addStandards") + public Result addStandards(@RequestBody PayMeeting payMeeting, HttpServletRequest request) { + String publicKey = request.getParameter("publicKey"); + String token = request.getParameter("token"); + authenticationUtils.check(token, publicKey); + + payMeetingService.addStandards(payMeeting); + return Result.OK("合并开票成功!"); + } + + /** + * 新增会议文件 + */ + @ApiOperation(value = "新增会议文件", notes = "新增会议文件") + @PostMapping(value = "/addStandardsFile") + public Result addStandardsFile(@RequestBody List ossFileList, HttpServletRequest request) { + String publicKey = request.getParameter("publicKey"); + String token = request.getParameter("token"); + authenticationUtils.check(token, publicKey); + for (OSSFile ossFile : ossFileList) { + iossFileService.saveOrUpdate(ossFile); + } + return Result.OK("新增会议文件成功!"); + } + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/InternalMeetingSituationController.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/InternalMeetingSituationController.java new file mode 100644 index 00000000..4b801f8c --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/InternalMeetingSituationController.java @@ -0,0 +1,367 @@ +package com.jero.meeting.controller; + +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.aspect.annotation.DictPoint; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.system.query.QueryGenerator; +import com.jero.common.util.AuthenticationUtils; +import com.jero.common.util.PasswordUtil; +import com.jero.common.util.ValidUtil; +import com.jero.common.util.oConvertUtils; +import com.jero.company.entity.PayCompanyManagement; +import com.jero.company.entity.PayContactsManagement; +import com.jero.company.service.IPayCompanyManagementService; +import com.jero.company.service.IPayContactsManagementService; +import com.jero.meeting.common.MeetingCommon; +import com.jero.meeting.entity.PayMeetingSituation; +import com.jero.meeting.service.IPayMeetingSituationService; +import com.jero.meeting.vo.*; +import com.jero.meeting.vo.excel.*; +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.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + + +/** + * @description: 参会人员信息 + * @author: jero-boot + * @date: 2021-09-02 + * @version: V1.0 + */ +@Api(tags = "参会人员信息") +@RestController +@RequestMapping("/meeting/internalMeetingSituation") +@Slf4j +public class InternalMeetingSituationController extends JeroController { + @Resource + private IPayMeetingSituationService payMeetingSituationService; + @Resource + private AuthenticationUtils authenticationUtils; + @Resource + private IPayContactsManagementService contactsManagementService; + @Resource + private IPayCompanyManagementService companyManagementService; + /** + * 分页列表查询 + */ + @RequiresPermissions("internalMeetingSituation:search") + @ApiOperation(value = "参会人员信息-分页列表查询", notes = "参会人员信息-分页列表查询") + @GetMapping(value = "/page") + public Result queryPageList(PayMeetingSituation payMeetingSituation, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, req.getParameterMap()); + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingSituationService.page(page, queryWrapper); + List situationList = pageList.getRecords(); + for (PayMeetingSituation meetingSituation : situationList) { + Integer payMode = meetingSituation.getPayMode(); + //汇款并且缴费凭证为空 + if (Objects.equals(payMode,1) && StringUtils.isBlank(meetingSituation.getPaymentRecord())){ + meetingSituation.setIdentification(PayProjectCommon.YES); + }else { + meetingSituation.setIdentification(PayProjectCommon.NO); + } + } + return Result.OK(pageList); + } + + /** + * 合同查询未关联参会人列表 + */ + @ApiOperation(value = "合同查询未关联参会人列表", notes = "合同查询未关联参会人列表") + @GetMapping(value = "/contractPage") + public Result contractPage(MeetingSituationContractVO meetingSituationContractVO, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingSituationService.contractPage(page, meetingSituationContractVO); + return Result.OK(pageList); + } + + /** + * 分页列表查询 会员系统系统 + */ + @ApiOperation(value = "参会人员信息-分页列表查询 会员系统系统", notes = "参会人员信息-分页列表查询") + @GetMapping(value = "/page2") + public Result queryPageList2(PayMeetingSituation payMeetingSituation, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + String publicKey = req.getParameter("publicKey"); + String token = req.getParameter("token"); + authenticationUtils.check(token, publicKey); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, req.getParameterMap()); + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingSituationService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 列表查询 + */ + @ApiOperation(value = "参会人员信息-列表查询", notes = "参会人员信息-列表查询") + @GetMapping(value = "/list") + public Result> queryList() { + List list = payMeetingSituationService.queryList(); + return Result.OK(list); + } + + /** + * 添加参会人 + */ + @RequiresPermissions("internalMeetingSituation:add") + @AutoLog(value = "参会人员信息-添加参会人") + @ApiOperation(value = "参会人员信息-添加参会人", notes = "参会人员信息-添加参会人") + @PostMapping(value = "/add") + public Result add(@RequestBody PayMeetingSituation payMeetingSituation) { + payMeetingSituationService.add(payMeetingSituation); + return Result.OK("添加成功!"); + } + + /** + * 报名 + */ + @AutoLog(value = "报名信息-报名") + @ApiOperation(value = "报名信息-报名", notes = "报名信息-报名") + @PostMapping(value = "/signUp") + public Result signUp(@RequestBody PayMeetingSituation payMeetingSituation) { + payMeetingSituationService.signUp(payMeetingSituation); + return Result.OK("添加成功!"); + } + + + /** + * 编辑 + */ + @AutoLog(value = "参会人员信息-编辑") + @RequiresPermissions("internalMeetingSituation:edit") + @ApiOperation(value = "参会人员信息-编辑", notes = "参会人员信息-编辑") + @PostMapping(value = "/edit") + public Result edit(@RequestBody PayMeetingSituationVO payMeetingSituationVO) { + payMeetingSituationService.editById(payMeetingSituationVO); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + */ + @RequiresPermissions("internalMeetingSituation:delete") + @AutoLog(value = "参会人员信息-通过id删除") + @ApiOperation(value = "参会人员信息-通过id删除", notes = "参会人员信息-通过id删除") + @GetMapping(value = "/delete") + public Result delete(@RequestParam(name = "id") String id) { + payMeetingSituationService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + */ + @RequiresPermissions("internalMeetingSituation:batchDel") + @AutoLog(value = "参会人员信息-批量删除") + @ApiOperation(value = "参会人员信息-批量删除", notes = "参会人员信息-批量删除") + @GetMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids") String ids) { + this.payMeetingSituationService.deleteByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + */ + @DictPoint + @ApiOperation(value = "参会人员信息-通过id查询", notes = "参会人员信息-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id") String id) { + PayMeetingSituation payMeetingSituation = payMeetingSituationService.queryById(id); + if (payMeetingSituation == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(payMeetingSituation); + } + + /** + * 通过会议id查询自己的参会人信息 + */ + @DictPoint + @ApiOperation(value = "参会人员信息-通过会议id查询自己的参会人信息") + @GetMapping(value = "/queryByMeetingId") + public Result queryByMeetingId(@RequestParam(name = "meetingId") String meetingId) { + PayMeetingSituation payMeetingSituation = payMeetingSituationService.queryByMeetingIdAndContactId(meetingId); + if (payMeetingSituation == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(payMeetingSituation); + } + + /** + * 导出excel + */ + @RequiresPermissions("internalMeetingSituation:export") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, PayMeetingSituation payMeetingSituation) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, request.getParameterMap()); + List pageList = payMeetingSituationService.list(queryWrapper); + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + pageList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + } + if (pageList.isEmpty()) { + throw new JeroBootException("没有数据"); + } + String meetingType = payMeetingSituationService.getMeetingType(payMeetingSituation); + List exportList = new ArrayList<>(); + for (PayMeetingSituation meetingSituation : pageList) { + + String companyContactId = meetingSituation.getCompanyContactId(); + PayContactsManagement contactsManagement = contactsManagementService.getById(companyContactId); + meetingSituation.setCompanyContactName(contactsManagement.getName()); + meetingSituation.setPost(contactsManagement.getPost()); + meetingSituation.setPhone(PasswordUtil.decrypt(contactsManagement.getPhone())); + meetingSituation.setEmail(PasswordUtil.decrypt(contactsManagement.getEmail())); + PayCompanyManagement companyManagement = companyManagementService.getById(contactsManagement.getCompanyId()); + meetingSituation.setCompanyName(companyManagement.getCompanyName()); + switch (meetingType) { + case MeetingCommon.STANDARD_MEETING: + //保存数据 + StandardsSituationExcel standardsSituationExcel = new StandardsSituationExcel(); + BeanUtils.copyProperties(meetingSituation, standardsSituationExcel); + exportList.add(standardsSituationExcel); + // 工作组项目查询工作组项目名 + break; + case MeetingCommon.WORKING_GROUP_MEETING: + //保存数据 + WorkingGroupSituationExcel workingGroupSituationExcel = new WorkingGroupSituationExcel(); + BeanUtils.copyProperties(meetingSituation, workingGroupSituationExcel); + exportList.add(workingGroupSituationExcel); + break; + case MeetingCommon.INTERNATIONAL_MEETING: + //保存数据 + InternationalSituationExcel internationalSituationExcel = new InternationalSituationExcel(); + BeanUtils.copyProperties(meetingSituation, internationalSituationExcel); + exportList.add(internationalSituationExcel); + break; + case MeetingCommon.OTHER_MEETING: + //保存数据 + SituationExcel situationExcel = new SituationExcel(); + BeanUtils.copyProperties(meetingSituation, situationExcel); + exportList.add(situationExcel); + break; + case MeetingCommon.COMMITTEE_MEETING: + //保存数据 + CommitteeSituationExcel committeeSituationExcel = new CommitteeSituationExcel(); + BeanUtils.copyProperties(meetingSituation, committeeSituationExcel); + exportList.add(committeeSituationExcel); + break; + } + } + + + Class classToExport = null; + switch (meetingType) { + case MeetingCommon.WORKING_GROUP_MEETING: + classToExport = WorkingGroupSituationExcel.class; + break; + case MeetingCommon.STANDARD_MEETING: + classToExport = StandardsSituationExcel.class; + break; + case MeetingCommon.INTERNATIONAL_MEETING: + classToExport = InternationalSituationExcel.class; + break; + case MeetingCommon.OTHER_MEETING: + classToExport = SituationExcel.class; + break; + case MeetingCommon.COMMITTEE_MEETING: + classToExport = CommitteeSituationExcel.class; + break; + } + return super.exportListXls(exportList, classToExport, "参会人员信息"); + } + + + /** + * 设置对接人 + */ + @RequiresPermissions("internalMeetingSituation:batchSetDocker") + @AutoLog(value = "设置对接人") + @ApiOperation(value = "设置对接人", notes = "设置对接人") + @PostMapping(value = "/addDock") + public Result addDock(@RequestBody AddDockVO addDockVO) { + payMeetingSituationService.addDock(addDockVO); + return Result.OK("设置对接人成功!"); + } + + /** + * 审核付款凭证 + */ + @RequiresPermissions("internalMeetingSituation:auditCredentials") + @AutoLog(value = "审核付款凭证") + @ApiOperation(value = "审核付款凭证") + @PostMapping(value = "/check") + public Result check(@RequestBody CheckVO checkVO) { + payMeetingSituationService.check(checkVO); + return Result.OK("审核成功!"); + } + + /** + * 审核报名信息 + */ + @AutoLog(value = "审核报名信息") + @RequiresPermissions("internalMeetingSituation:auditSignUp") + @ApiOperation(value = "审核报名信息") + @PostMapping(value = "/checkRegister") + public Result checkRegister(@RequestBody CheckVO checkVO) { + payMeetingSituationService.checkRegister(checkVO); + return Result.OK("审核成功!"); + } + + /** + * 合并开票 + */ + @AutoLog(value = "合并开票") + @ApiOperation(value = "合并开票", notes = "合并开票") + @PostMapping(value = "/batchPayBill") + public Result mergePayBill(@RequestBody MergePayBillVO mergePayBillVO) { + ValidUtil.validate(mergePayBillVO); + payMeetingSituationService.mergePayBill(mergePayBillVO); + return Result.OK("合并开票成功!"); + } + + /** + * 签到 + */ + @AutoLog(value = "签到") + @ApiOperation(value = "签到") + @PostMapping(value = "/signIn") + public Result signIn(@RequestBody SignInVO signInVO) { + ValidUtil.validate(signInVO); + payMeetingSituationService.signIn(signInVO); + return Result.OK("签到成功!"); + } + + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/OtherMeetingController.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/OtherMeetingController.java new file mode 100644 index 00000000..d539ca79 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/OtherMeetingController.java @@ -0,0 +1,489 @@ +package com.jero.meeting.controller; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +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.exception.JeroBootException; +import com.jero.common.system.api.ISysBaseAPI; +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.common.util.AuthenticationUtils; +import com.jero.common.util.PasswordUtil; +import com.jero.common.util.ValidUtil; +import com.jero.common.util.oConvertUtils; +import com.jero.company.service.IPayContactsManagementService; +import com.jero.data.entity.PayCaseCommittee; +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.service.IPayMeetingHotelContactsService; +import com.jero.meeting.service.IPayMeetingService; +import com.jero.meeting.vo.PayMeetingVO; +import com.jero.meeting.vo.PublishReminderVO; +import com.jero.meeting.vo.UploadFileVO; +import com.jero.meeting.vo.excel.*; +import com.jero.modules.oss.entity.OSSFile; +import com.jero.modules.oss.service.IOSSFileService; +import com.jero.modules.system.volid.group.UpdateGroup; +import com.jero.project.entity.PayWorkingGroup; +import com.jero.project.service.IPayWorkingGroupService; +import com.jero.standards.xuanguan.stablecrosstraining.entity.StableCrossTraining; +import com.jero.util.QrcodeUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.*; +import java.util.stream.Collectors; + + +/** + * @description: 会议管理 + * @author: jero-boot + * @date: 2021-09-02 + * @version: V1.0 + */ +@Api(tags = "会议管理-其他会议") +@RestController +@RequestMapping("/meeting/otherMeeting") +@Slf4j +public class OtherMeetingController extends JeroController { + @Resource + private IPayMeetingService payMeetingService; + @Resource + private ISysBaseAPI sysBaseApi; + @Resource + private IPayMeetingHotelContactsService meetingHotelContactsService; + @Resource + private IPayWorkingGroupService payWorkingGroupService; + @Resource + private AuthenticationUtils authenticationUtils; + @Resource + private IOSSFileService iossFileService; + @Resource + private IPayCaseCommitteeService payCaseCommitteeService; + @Resource + private IPayContactsManagementService payContactsManagementService; + + /** + * 分页列表查询 + */ + @RequiresPermissions("otherMeeting: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) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeeting, req.getParameterMap()); + String meetingStartTime = req.getParameter("meetingStartTime"); + String meetingEndTime = req.getParameter("meetingEndTime"); + if (ObjectUtil.isNotEmpty(meetingStartTime) && ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime).or().lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingStartTime)) { + queryWrapper.not( + a -> a.lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime) + ); + } + + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingService.page(page, queryWrapper); + for (PayMeeting meeting : pageList.getRecords()) { + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(payMeetingVO, payMeeting); + //查询酒店联系人列表 + if (meeting.getMeetingType().equals(Integer.parseInt(MeetingCommon.STANDARD_MEETING))) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingHotelContacts::getMeetingId, meeting.getId()); + List payMeetingHotelContactsList = meetingHotelContactsService.list(wrapper); + meeting.setHotelContactsList(payMeetingHotelContactsList); + } + } + + return Result.OK(pageList); + } + + /** + * 企业端-会议-分页列表查询参会人的会议 + */ + @ApiOperation(value = "企业端-会议-分页列表查询参会人的会议") + @GetMapping(value = "/pageContract") + public Result queryPageListContract(PayMeeting payMeeting, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeeting, req.getParameterMap()); + String meetingStartTime = req.getParameter("meetingStartTime"); + String meetingEndTime = req.getParameter("meetingEndTime"); + if (ObjectUtil.isNotEmpty(meetingStartTime) && ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime).or().lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingStartTime)) { + queryWrapper.not( + a -> a.lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime) + ); + } + String meetingStatus = req.getParameter("meetingStatus"); + String now = DateUtil.formatDate(new Date()); + if (StringUtils.isNotBlank(meetingStatus)) { + switch (meetingStatus) { + case MeetingCommon.MEETING_STATUS_2: + queryWrapper.gt("date_format(start_time,'%Y-%m-%d')", now); + break; + case MeetingCommon.MEETING_STATUS_3: + queryWrapper.le("date_format(start_time,'%Y-%m-%d')", now); + queryWrapper.ge("date_format(end_time,'%Y-%m-%d')", now); + break; + case MeetingCommon.MEETING_STATUS_4: + queryWrapper.le("date_format(end_time,'%Y-%m-%d')", now); + break; + } + } + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String id = sysUser.getId(); + + //会议报名状态:1可报名/2已报名 + String meetingSignUpType = req.getParameter("meetingSignUpType"); + if (Objects.equals(meetingSignUpType,1+"")) { + queryWrapper.eq("pmrr.contact_id",id); + }else if (Objects.equals(meetingSignUpType,2+"")) { + queryWrapper.eq("pms.company_contact_id",id); + }else { + queryWrapper.and( + a -> a.eq("pms.company_contact_id",id) + .or() + .eq("pms.post_contact_id",id) + .or() + .eq("pmrr.contact_id",id) + ); + } + + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingService.pageListContract(page, queryWrapper, now); + for (PayMeeting meeting : pageList.getRecords()) { + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(payMeetingVO, payMeeting); + } + + return Result.OK(pageList); + } + + /** + * 列表查询 + */ + @RequiresPermissions("otherMeeting:search") + @ApiOperation(value = "会议管理-列表查询", notes = "会议管理-列表查询") + @GetMapping(value = "/list") + public Result> queryList() { + List list = payMeetingService.queryList(); + return Result.OK(list); + } + + /** + * 添加 + */ + @RequiresPermissions("otherMeeting:add") + @AutoLog(value = "会议管理-添加") + @ApiOperation(value = "会议管理-添加", notes = "会议管理-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody PayMeetingVO payMeetingVO) { + ValidUtil.validate(payMeetingVO); + payMeetingService.add(payMeetingVO); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + */ + @RequiresPermissions("otherMeeting:edit") + @AutoLog(value = "会议管理-编辑") + @ApiOperation(value = "会议管理-编辑", notes = "会议管理-编辑") + @PostMapping(value = "/edit") + public Result edit(@RequestBody PayMeetingVO payMeetingVO) { + ValidUtil.validate(payMeetingVO, UpdateGroup.class); + payMeetingService.editById(payMeetingVO); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + */ + @RequiresPermissions("otherMeeting:delete") + @AutoLog(value = "会议管理-通过id删除") + @ApiOperation(value = "会议管理-通过id删除", notes = "会议管理-通过id删除") + @GetMapping(value = "/delete") + public Result delete(@RequestParam(name = "id") String id) { + payMeetingService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + */ + @RequiresPermissions("otherMeeting:batchDel") + @AutoLog(value = "会议管理-批量删除") + @ApiOperation(value = "会议管理-批量删除", notes = "会议管理-批量删除") + @GetMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids") String ids) { + this.payMeetingService.deleteByIds(Arrays.asList(ids.split(","))); + 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) { + return Result.error("未找到对应数据"); + } + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(meeting, payMeetingVO); + String meetingType = meeting.getMeetingType().toString(); + //String meetingType1 = sysBaseApi.translateDict("meeting_type", meetingType); + payMeetingVO.setMeetingType(meetingType); + payMeetingVO.setTbMeetingType(meeting.getMeetingType().toString()); + //payMeetingVO.setHotelContactsList(new ArrayList<>()); + //标协会议查询酒店联系人列表 + if (meetingType.equals(MeetingCommon.STANDARD_MEETING)) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingHotelContacts::getMeetingId, meeting.getId()); + List payMeetingHotelContactsList = meetingHotelContactsService.list(wrapper); + payMeetingVO.setHotelContactsList(payMeetingHotelContactsList); + //标协会议类型 + //String tbMeetingType = meeting.getTbMeetingType().toString(); + //String type = sysBaseApi.translateDict("standard_meeting_type", tbMeetingType); + //payMeetingVO.setTbMeetingType(type); + // 工作组项目查询工作组项目名 + } else if (meetingType.equals(MeetingCommon.WORKING_GROUP_MEETING)) { + String workingGroupId = meeting.getWorkingGroupId(); + PayWorkingGroup workingGroup = payWorkingGroupService.getById(workingGroupId); + payMeetingVO.setWorkingGroupName(workingGroup.getWorkingGroupProject()); + } + return Result.OK(payMeetingVO); + } + + /** + * 导出excel + */ + @RequiresPermissions("otherMeeting:export") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, PayMeeting payMeeting) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeeting, request.getParameterMap()); + List pageList = payMeetingService.list(queryWrapper); + List exportList = new ArrayList<>(); + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + pageList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + } + if (pageList.isEmpty()) { + throw new JeroBootException("没有数据"); + } + String meetingType = pageList.get(0).getMeetingType().toString(); + for (PayMeeting meeting : pageList) { + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(meeting, payMeetingVO); + meetingType = meeting.getMeetingType().toString(); + String meetingType1 = sysBaseApi.translateDict("meeting_type", meetingType); + payMeetingVO.setMeetingType(meetingType1); + payMeetingVO.setHotelContactsList(new ArrayList<>()); + //标协会议查询酒店联系人列表 + switch (meetingType) { + case MeetingCommon.STANDARD_MEETING: + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingHotelContacts::getMeetingId, meeting.getId()); + List payMeetingHotelContactsList = meetingHotelContactsService.list(wrapper); + payMeetingVO.setHotelContactsList(payMeetingHotelContactsList); + //标协会议类型 + String tbMeetingType = meeting.getTbMeetingType().toString(); + String type = sysBaseApi.translateDict("standard_meeting_type", tbMeetingType); + payMeetingVO.setTbMeetingType(type); + //保存数据 + StandardsMeetingExcel standardsMeetingExcel = new StandardsMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, standardsMeetingExcel); + exportList.add(standardsMeetingExcel); + // 工作组项目查询工作组项目名 + break; + case MeetingCommon.WORKING_GROUP_MEETING: + String workingGroupId = meeting.getWorkingGroupId(); + PayWorkingGroup workingGroup = payWorkingGroupService.getById(workingGroupId); + payMeetingVO.setWorkingGroupName(workingGroup.getWorkingGroupProject()); + //保存数据 + WorkingGroupMeetingExcel workingGroupMeetingExcel = new WorkingGroupMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, workingGroupMeetingExcel); + exportList.add(workingGroupMeetingExcel); + break; + case MeetingCommon.INTERNATIONAL_MEETING: + //保存数据 + InternationalMeetingExcel internationalMeetingExcel = new InternationalMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, internationalMeetingExcel); + exportList.add(internationalMeetingExcel); + break; + case MeetingCommon.OTHER_MEETING: + //保存数据 + OtherMeetingExcel otherMeetingExcel = new OtherMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, otherMeetingExcel); + exportList.add(otherMeetingExcel); + break; + case MeetingCommon.COMMITTEE_MEETING: + String caseCommitteeId = meeting.getCaseCommitteeId(); + PayCaseCommittee payCaseCommittee = payCaseCommitteeService.getById(caseCommitteeId); + payMeetingVO.setCaseCommitteeName(payCaseCommittee.getName()); + + CommitteeMeetingExcel committeeMeetingExcel = new CommitteeMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, committeeMeetingExcel); + exportList.add(committeeMeetingExcel); + break; + } + } + Class classToExport = null; + switch (meetingType) { + case MeetingCommon.WORKING_GROUP_MEETING: + classToExport = WorkingGroupMeetingExcel.class; + break; + case MeetingCommon.STANDARD_MEETING: + classToExport = StandardsMeetingExcel.class; + break; + case MeetingCommon.INTERNATIONAL_MEETING: + classToExport = InternationalMeetingExcel.class; + break; + case MeetingCommon.OTHER_MEETING: + classToExport = OtherMeetingExcel.class; + break; + case MeetingCommon.COMMITTEE_MEETING: + classToExport = CommitteeMeetingExcel.class; + break; + } + return super.exportListXls(exportList, classToExport, "会议管理"); + } + + /** + * 上传资料 + */ + @AutoLog(value = "上传资料") + @RequiresPermissions("otherMeeting:upload") + @ApiOperation(value = "上传资料", notes = "上传资料") + @PostMapping(value = "/uploadFile") + public Result uploadFile(@RequestBody UploadFileVO uploadFileVO) { + String fileIds = uploadFileVO.getFileIds(); + String id = uploadFileVO.getId(); + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(PayMeeting::getId, id); + wrapper.set(PayMeeting::getMeetingData, fileIds); + payMeetingService.update(wrapper); + PayMeeting payMeeting = payMeetingService.getById(id); + if (payMeeting.getMeetingType().equals(Integer.parseInt(MeetingCommon.STANDARD_MEETING))) { + List idList = Arrays.asList(fileIds.split(",")); + List ossFiles = iossFileService.listByIds(idList); + for (OSSFile ossFile : ossFiles) { + String url = ossFile.getUrl(); + String[] fileUrl = url.split("/"); + int length = fileUrl.length; + ossFile.setFileName(fileUrl[length - 1]); + } + AuthenticationUtils.post("/stablecrosstraining/stableCrossTraining/addStandardsFile", null, ossFiles); + StableCrossTraining stableCrossTraining = new StableCrossTraining(); + stableCrossTraining.setId(id); + stableCrossTraining.setMeetingFiles(fileIds); + AuthenticationUtils.post("/stablecrosstraining/stableCrossTraining/updateStandardsFile", null, stableCrossTraining); + } + return Result.OK("上传资料成功!"); + } + + /** + * 发布提醒 + */ + @AutoLog("发布提醒") + @RequiresPermissions("otherMeeting:publish") + @ApiOperation(value = "发布提醒", notes = "发布提醒") + @PostMapping(value = "/publishReminder") + public Result publishReminder(@RequestBody PublishReminderVO publishReminderVO) { + payMeetingService.publishReminder(publishReminderVO); + return Result.OK(); + } + + @ApiOperation(value = "生成base64") + @GetMapping(value = "/createBase64") + @ApiImplicitParam(name = "contact", value = "内容", required = true, paramType = "query") + public Result createBase64(String contact) { + return Result.OK(QrcodeUtil.create(contact)); + } + + /** + * 新增标协会议 + */ + @ApiOperation(value = "新增标协会议") + @PostMapping(value = "/addStandards") + public Result addStandards(@RequestBody PayMeeting payMeeting, HttpServletRequest request) { + String publicKey = request.getParameter("publicKey"); + String token = request.getParameter("token"); + authenticationUtils.check(token, publicKey); + + payMeetingService.addStandards(payMeeting); + return Result.OK("合并开票成功!"); + } + + /** + * 新增会议文件 + */ + @ApiOperation(value = "新增会议文件", notes = "新增会议文件") + @PostMapping(value = "/addStandardsFile") + public Result addStandardsFile(@RequestBody List ossFileList, HttpServletRequest request) { + String publicKey = request.getParameter("publicKey"); + String token = request.getParameter("token"); + authenticationUtils.check(token, publicKey); + for (OSSFile ossFile : ossFileList) { + iossFileService.saveOrUpdate(ossFile); + } + return Result.OK("新增会议文件成功!"); + } + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/OtherMeetingSituationController.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/OtherMeetingSituationController.java new file mode 100644 index 00000000..b7a655f5 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/OtherMeetingSituationController.java @@ -0,0 +1,367 @@ +package com.jero.meeting.controller; + +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.aspect.annotation.DictPoint; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.system.query.QueryGenerator; +import com.jero.common.util.AuthenticationUtils; +import com.jero.common.util.PasswordUtil; +import com.jero.common.util.ValidUtil; +import com.jero.common.util.oConvertUtils; +import com.jero.company.entity.PayCompanyManagement; +import com.jero.company.entity.PayContactsManagement; +import com.jero.company.service.IPayCompanyManagementService; +import com.jero.company.service.IPayContactsManagementService; +import com.jero.meeting.common.MeetingCommon; +import com.jero.meeting.entity.PayMeetingSituation; +import com.jero.meeting.service.IPayMeetingSituationService; +import com.jero.meeting.vo.*; +import com.jero.meeting.vo.excel.*; +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.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + + +/** + * @description: 参会人员信息 + * @author: jero-boot + * @date: 2021-09-02 + * @version: V1.0 + */ +@Api(tags = "参会人员信息") +@RestController +@RequestMapping("/meeting/ohterMeetingSituation") +@Slf4j +public class OtherMeetingSituationController extends JeroController { + @Resource + private IPayMeetingSituationService payMeetingSituationService; + @Resource + private AuthenticationUtils authenticationUtils; + @Resource + private IPayContactsManagementService contactsManagementService; + @Resource + private IPayCompanyManagementService companyManagementService; + /** + * 分页列表查询 + */ + @RequiresPermissions("otherMeetingSituation::search") + @ApiOperation(value = "参会人员信息-分页列表查询", notes = "参会人员信息-分页列表查询") + @GetMapping(value = "/page") + public Result queryPageList(PayMeetingSituation payMeetingSituation, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, req.getParameterMap()); + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingSituationService.page(page, queryWrapper); + List situationList = pageList.getRecords(); + for (PayMeetingSituation meetingSituation : situationList) { + Integer payMode = meetingSituation.getPayMode(); + //汇款并且缴费凭证为空 + if (Objects.equals(payMode,1) && StringUtils.isBlank(meetingSituation.getPaymentRecord())){ + meetingSituation.setIdentification(PayProjectCommon.YES); + }else { + meetingSituation.setIdentification(PayProjectCommon.NO); + } + } + return Result.OK(pageList); + } + + /** + * 合同查询未关联参会人列表 + */ + @ApiOperation(value = "合同查询未关联参会人列表", notes = "合同查询未关联参会人列表") + @GetMapping(value = "/contractPage") + public Result contractPage(MeetingSituationContractVO meetingSituationContractVO, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingSituationService.contractPage(page, meetingSituationContractVO); + return Result.OK(pageList); + } + + /** + * 分页列表查询 会员系统系统 + */ + @ApiOperation(value = "参会人员信息-分页列表查询 会员系统系统", notes = "参会人员信息-分页列表查询") + @GetMapping(value = "/page2") + public Result queryPageList2(PayMeetingSituation payMeetingSituation, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + String publicKey = req.getParameter("publicKey"); + String token = req.getParameter("token"); + authenticationUtils.check(token, publicKey); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, req.getParameterMap()); + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingSituationService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 列表查询 + */ + @ApiOperation(value = "参会人员信息-列表查询", notes = "参会人员信息-列表查询") + @GetMapping(value = "/list") + public Result> queryList() { + List list = payMeetingSituationService.queryList(); + return Result.OK(list); + } + + /** + * 添加参会人 + */ + @RequiresPermissions("otherMeetingSituation::add") + @AutoLog(value = "参会人员信息-添加参会人") + @ApiOperation(value = "参会人员信息-添加参会人", notes = "参会人员信息-添加参会人") + @PostMapping(value = "/add") + public Result add(@RequestBody PayMeetingSituation payMeetingSituation) { + payMeetingSituationService.add(payMeetingSituation); + return Result.OK("添加成功!"); + } + + /** + * 报名 + */ + @AutoLog(value = "报名信息-报名") + @ApiOperation(value = "报名信息-报名", notes = "报名信息-报名") + @PostMapping(value = "/signUp") + public Result signUp(@RequestBody PayMeetingSituation payMeetingSituation) { + payMeetingSituationService.signUp(payMeetingSituation); + return Result.OK("添加成功!"); + } + + + /** + * 编辑 + */ + @AutoLog(value = "参会人员信息-编辑") + @RequiresPermissions("otherMeetingSituation::edit") + @ApiOperation(value = "参会人员信息-编辑", notes = "参会人员信息-编辑") + @PostMapping(value = "/edit") + public Result edit(@RequestBody PayMeetingSituationVO payMeetingSituationVO) { + payMeetingSituationService.editById(payMeetingSituationVO); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + */ + @RequiresPermissions("otherMeetingSituation::delete") + @AutoLog(value = "参会人员信息-通过id删除") + @ApiOperation(value = "参会人员信息-通过id删除", notes = "参会人员信息-通过id删除") + @GetMapping(value = "/delete") + public Result delete(@RequestParam(name = "id") String id) { + payMeetingSituationService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + */ + @RequiresPermissions("otherMeetingSituation::batchDel") + @AutoLog(value = "参会人员信息-批量删除") + @ApiOperation(value = "参会人员信息-批量删除", notes = "参会人员信息-批量删除") + @GetMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids") String ids) { + this.payMeetingSituationService.deleteByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + */ + @DictPoint + @ApiOperation(value = "参会人员信息-通过id查询", notes = "参会人员信息-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id") String id) { + PayMeetingSituation payMeetingSituation = payMeetingSituationService.queryById(id); + if (payMeetingSituation == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(payMeetingSituation); + } + + /** + * 通过会议id查询自己的参会人信息 + */ + @DictPoint + @ApiOperation(value = "参会人员信息-通过会议id查询自己的参会人信息") + @GetMapping(value = "/queryByMeetingId") + public Result queryByMeetingId(@RequestParam(name = "meetingId") String meetingId) { + PayMeetingSituation payMeetingSituation = payMeetingSituationService.queryByMeetingIdAndContactId(meetingId); + if (payMeetingSituation == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(payMeetingSituation); + } + + /** + * 导出excel + */ + @RequiresPermissions("otherMeetingSituation::export") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, PayMeetingSituation payMeetingSituation) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, request.getParameterMap()); + List pageList = payMeetingSituationService.list(queryWrapper); + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + pageList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + } + if (pageList.isEmpty()) { + throw new JeroBootException("没有数据"); + } + String meetingType = payMeetingSituationService.getMeetingType(payMeetingSituation); + List exportList = new ArrayList<>(); + for (PayMeetingSituation meetingSituation : pageList) { + + String companyContactId = meetingSituation.getCompanyContactId(); + PayContactsManagement contactsManagement = contactsManagementService.getById(companyContactId); + meetingSituation.setCompanyContactName(contactsManagement.getName()); + meetingSituation.setPost(contactsManagement.getPost()); + meetingSituation.setPhone(PasswordUtil.decrypt(contactsManagement.getPhone())); + meetingSituation.setEmail(PasswordUtil.decrypt(contactsManagement.getEmail())); + PayCompanyManagement companyManagement = companyManagementService.getById(contactsManagement.getCompanyId()); + meetingSituation.setCompanyName(companyManagement.getCompanyName()); + switch (meetingType) { + case MeetingCommon.STANDARD_MEETING: + //保存数据 + StandardsSituationExcel standardsSituationExcel = new StandardsSituationExcel(); + BeanUtils.copyProperties(meetingSituation, standardsSituationExcel); + exportList.add(standardsSituationExcel); + // 工作组项目查询工作组项目名 + break; + case MeetingCommon.WORKING_GROUP_MEETING: + //保存数据 + WorkingGroupSituationExcel workingGroupSituationExcel = new WorkingGroupSituationExcel(); + BeanUtils.copyProperties(meetingSituation, workingGroupSituationExcel); + exportList.add(workingGroupSituationExcel); + break; + case MeetingCommon.INTERNATIONAL_MEETING: + //保存数据 + InternationalSituationExcel internationalSituationExcel = new InternationalSituationExcel(); + BeanUtils.copyProperties(meetingSituation, internationalSituationExcel); + exportList.add(internationalSituationExcel); + break; + case MeetingCommon.OTHER_MEETING: + //保存数据 + SituationExcel situationExcel = new SituationExcel(); + BeanUtils.copyProperties(meetingSituation, situationExcel); + exportList.add(situationExcel); + break; + case MeetingCommon.COMMITTEE_MEETING: + //保存数据 + CommitteeSituationExcel committeeSituationExcel = new CommitteeSituationExcel(); + BeanUtils.copyProperties(meetingSituation, committeeSituationExcel); + exportList.add(committeeSituationExcel); + break; + } + } + + + Class classToExport = null; + switch (meetingType) { + case MeetingCommon.WORKING_GROUP_MEETING: + classToExport = WorkingGroupSituationExcel.class; + break; + case MeetingCommon.STANDARD_MEETING: + classToExport = StandardsSituationExcel.class; + break; + case MeetingCommon.INTERNATIONAL_MEETING: + classToExport = InternationalSituationExcel.class; + break; + case MeetingCommon.OTHER_MEETING: + classToExport = SituationExcel.class; + break; + case MeetingCommon.COMMITTEE_MEETING: + classToExport = CommitteeSituationExcel.class; + break; + } + return super.exportListXls(exportList, classToExport, "参会人员信息"); + } + + + /** + * 设置对接人 + */ + @RequiresPermissions("otherMeetingSituation::batchSetDocker") + @AutoLog(value = "设置对接人") + @ApiOperation(value = "设置对接人", notes = "设置对接人") + @PostMapping(value = "/addDock") + public Result addDock(@RequestBody AddDockVO addDockVO) { + payMeetingSituationService.addDock(addDockVO); + return Result.OK("设置对接人成功!"); + } + + /** + * 审核付款凭证 + */ + @RequiresPermissions("otherMeetingSituation::auditCredentials") + @AutoLog(value = "审核付款凭证") + @ApiOperation(value = "审核付款凭证") + @PostMapping(value = "/check") + public Result check(@RequestBody CheckVO checkVO) { + payMeetingSituationService.check(checkVO); + return Result.OK("审核成功!"); + } + + /** + * 审核报名信息 + */ + @AutoLog(value = "审核报名信息") + @RequiresPermissions("otherMeetingSituation::auditSignUp") + @ApiOperation(value = "审核报名信息") + @PostMapping(value = "/checkRegister") + public Result checkRegister(@RequestBody CheckVO checkVO) { + payMeetingSituationService.checkRegister(checkVO); + return Result.OK("审核成功!"); + } + + /** + * 合并开票 + */ + @AutoLog(value = "合并开票") + @ApiOperation(value = "合并开票", notes = "合并开票") + @PostMapping(value = "/batchPayBill") + public Result mergePayBill(@RequestBody MergePayBillVO mergePayBillVO) { + ValidUtil.validate(mergePayBillVO); + payMeetingSituationService.mergePayBill(mergePayBillVO); + return Result.OK("合并开票成功!"); + } + + /** + * 签到 + */ + @AutoLog(value = "签到") + @ApiOperation(value = "签到") + @PostMapping(value = "/signIn") + public Result signIn(@RequestBody SignInVO signInVO) { + ValidUtil.validate(signInVO); + payMeetingSituationService.signIn(signInVO); + return Result.OK("签到成功!"); + } + + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/PayMeetingController.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/PayMeetingController.java index 004d4fae..ab5cfacf 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/PayMeetingController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/PayMeetingController.java @@ -86,7 +86,7 @@ public class PayMeetingController extends JeroController queryPageList(PayMeeting payMeeting, diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/StandardsMeetingController.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/StandardsMeetingController.java new file mode 100644 index 00000000..d36b8bf9 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/StandardsMeetingController.java @@ -0,0 +1,489 @@ +package com.jero.meeting.controller; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +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.exception.JeroBootException; +import com.jero.common.system.api.ISysBaseAPI; +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.common.util.AuthenticationUtils; +import com.jero.common.util.PasswordUtil; +import com.jero.common.util.ValidUtil; +import com.jero.common.util.oConvertUtils; +import com.jero.company.service.IPayContactsManagementService; +import com.jero.data.entity.PayCaseCommittee; +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.service.IPayMeetingHotelContactsService; +import com.jero.meeting.service.IPayMeetingService; +import com.jero.meeting.vo.PayMeetingVO; +import com.jero.meeting.vo.PublishReminderVO; +import com.jero.meeting.vo.UploadFileVO; +import com.jero.meeting.vo.excel.*; +import com.jero.modules.oss.entity.OSSFile; +import com.jero.modules.oss.service.IOSSFileService; +import com.jero.modules.system.volid.group.UpdateGroup; +import com.jero.project.entity.PayWorkingGroup; +import com.jero.project.service.IPayWorkingGroupService; +import com.jero.standards.xuanguan.stablecrosstraining.entity.StableCrossTraining; +import com.jero.util.QrcodeUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.*; +import java.util.stream.Collectors; + + +/** + * @description: 会议管理 + * @author: jero-boot + * @date: 2021-09-02 + * @version: V1.0 + */ +@Api(tags = "会议管理-标协会议") +@RestController +@RequestMapping("/meeting/standardsMeeting") +@Slf4j +public class StandardsMeetingController extends JeroController { + @Resource + private IPayMeetingService payMeetingService; + @Resource + private ISysBaseAPI sysBaseApi; + @Resource + private IPayMeetingHotelContactsService meetingHotelContactsService; + @Resource + private IPayWorkingGroupService payWorkingGroupService; + @Resource + private AuthenticationUtils authenticationUtils; + @Resource + private IOSSFileService iossFileService; + @Resource + private IPayCaseCommitteeService payCaseCommitteeService; + @Resource + private IPayContactsManagementService payContactsManagementService; + + /** + * 分页列表查询 + */ + @RequiresPermissions("standardsMeeting: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) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeeting, req.getParameterMap()); + String meetingStartTime = req.getParameter("meetingStartTime"); + String meetingEndTime = req.getParameter("meetingEndTime"); + if (ObjectUtil.isNotEmpty(meetingStartTime) && ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime).or().lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingStartTime)) { + queryWrapper.not( + a -> a.lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime) + ); + } + + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingService.page(page, queryWrapper); + for (PayMeeting meeting : pageList.getRecords()) { + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(payMeetingVO, payMeeting); + //查询酒店联系人列表 + if (meeting.getMeetingType().equals(Integer.parseInt(MeetingCommon.STANDARD_MEETING))) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingHotelContacts::getMeetingId, meeting.getId()); + List payMeetingHotelContactsList = meetingHotelContactsService.list(wrapper); + meeting.setHotelContactsList(payMeetingHotelContactsList); + } + } + + return Result.OK(pageList); + } + + /** + * 企业端-会议-分页列表查询参会人的会议 + */ + @ApiOperation(value = "企业端-会议-分页列表查询参会人的会议") + @GetMapping(value = "/pageContract") + public Result queryPageListContract(PayMeeting payMeeting, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeeting, req.getParameterMap()); + String meetingStartTime = req.getParameter("meetingStartTime"); + String meetingEndTime = req.getParameter("meetingEndTime"); + if (ObjectUtil.isNotEmpty(meetingStartTime) && ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime).or().lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingStartTime)) { + queryWrapper.not( + a -> a.lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime) + ); + } + String meetingStatus = req.getParameter("meetingStatus"); + String now = DateUtil.formatDate(new Date()); + if (StringUtils.isNotBlank(meetingStatus)) { + switch (meetingStatus) { + case MeetingCommon.MEETING_STATUS_2: + queryWrapper.gt("date_format(start_time,'%Y-%m-%d')", now); + break; + case MeetingCommon.MEETING_STATUS_3: + queryWrapper.le("date_format(start_time,'%Y-%m-%d')", now); + queryWrapper.ge("date_format(end_time,'%Y-%m-%d')", now); + break; + case MeetingCommon.MEETING_STATUS_4: + queryWrapper.le("date_format(end_time,'%Y-%m-%d')", now); + break; + } + } + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String id = sysUser.getId(); + + //会议报名状态:1可报名/2已报名 + String meetingSignUpType = req.getParameter("meetingSignUpType"); + if (Objects.equals(meetingSignUpType,1+"")) { + queryWrapper.eq("pmrr.contact_id",id); + }else if (Objects.equals(meetingSignUpType,2+"")) { + queryWrapper.eq("pms.company_contact_id",id); + }else { + queryWrapper.and( + a -> a.eq("pms.company_contact_id",id) + .or() + .eq("pms.post_contact_id",id) + .or() + .eq("pmrr.contact_id",id) + ); + } + + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingService.pageListContract(page, queryWrapper, now); + for (PayMeeting meeting : pageList.getRecords()) { + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(payMeetingVO, payMeeting); + } + + return Result.OK(pageList); + } + + /** + * 列表查询 + */ + @RequiresPermissions("standardsMeeting:search") + @ApiOperation(value = "会议管理-列表查询", notes = "会议管理-列表查询") + @GetMapping(value = "/list") + public Result> queryList() { + List list = payMeetingService.queryList(); + return Result.OK(list); + } + + /** + * 添加 + */ + @RequiresPermissions("standardsMeeting:add") + @AutoLog(value = "会议管理-添加") + @ApiOperation(value = "会议管理-添加", notes = "会议管理-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody PayMeetingVO payMeetingVO) { + ValidUtil.validate(payMeetingVO); + payMeetingService.add(payMeetingVO); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + */ + @RequiresPermissions("standardsMeeting:edit") + @AutoLog(value = "会议管理-编辑") + @ApiOperation(value = "会议管理-编辑", notes = "会议管理-编辑") + @PostMapping(value = "/edit") + public Result edit(@RequestBody PayMeetingVO payMeetingVO) { + ValidUtil.validate(payMeetingVO, UpdateGroup.class); + payMeetingService.editById(payMeetingVO); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + */ + @RequiresPermissions("standardsMeeting:delete") + @AutoLog(value = "会议管理-通过id删除") + @ApiOperation(value = "会议管理-通过id删除", notes = "会议管理-通过id删除") + @GetMapping(value = "/delete") + public Result delete(@RequestParam(name = "id") String id) { + payMeetingService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + */ + @RequiresPermissions("standardsMeeting:batchDel") + @AutoLog(value = "会议管理-批量删除") + @ApiOperation(value = "会议管理-批量删除", notes = "会议管理-批量删除") + @GetMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids") String ids) { + this.payMeetingService.deleteByIds(Arrays.asList(ids.split(","))); + 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) { + return Result.error("未找到对应数据"); + } + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(meeting, payMeetingVO); + String meetingType = meeting.getMeetingType().toString(); + //String meetingType1 = sysBaseApi.translateDict("meeting_type", meetingType); + payMeetingVO.setMeetingType(meetingType); + payMeetingVO.setTbMeetingType(meeting.getMeetingType().toString()); + //payMeetingVO.setHotelContactsList(new ArrayList<>()); + //标协会议查询酒店联系人列表 + if (meetingType.equals(MeetingCommon.STANDARD_MEETING)) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingHotelContacts::getMeetingId, meeting.getId()); + List payMeetingHotelContactsList = meetingHotelContactsService.list(wrapper); + payMeetingVO.setHotelContactsList(payMeetingHotelContactsList); + //标协会议类型 + //String tbMeetingType = meeting.getTbMeetingType().toString(); + //String type = sysBaseApi.translateDict("standard_meeting_type", tbMeetingType); + //payMeetingVO.setTbMeetingType(type); + // 工作组项目查询工作组项目名 + } else if (meetingType.equals(MeetingCommon.WORKING_GROUP_MEETING)) { + String workingGroupId = meeting.getWorkingGroupId(); + PayWorkingGroup workingGroup = payWorkingGroupService.getById(workingGroupId); + payMeetingVO.setWorkingGroupName(workingGroup.getWorkingGroupProject()); + } + return Result.OK(payMeetingVO); + } + + /** + * 导出excel + */ + @RequiresPermissions("standardsMeeting:export") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, PayMeeting payMeeting) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeeting, request.getParameterMap()); + List pageList = payMeetingService.list(queryWrapper); + List exportList = new ArrayList<>(); + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + pageList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + } + if (pageList.isEmpty()) { + throw new JeroBootException("没有数据"); + } + String meetingType = pageList.get(0).getMeetingType().toString(); + for (PayMeeting meeting : pageList) { + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(meeting, payMeetingVO); + meetingType = meeting.getMeetingType().toString(); + String meetingType1 = sysBaseApi.translateDict("meeting_type", meetingType); + payMeetingVO.setMeetingType(meetingType1); + payMeetingVO.setHotelContactsList(new ArrayList<>()); + //标协会议查询酒店联系人列表 + switch (meetingType) { + case MeetingCommon.STANDARD_MEETING: + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingHotelContacts::getMeetingId, meeting.getId()); + List payMeetingHotelContactsList = meetingHotelContactsService.list(wrapper); + payMeetingVO.setHotelContactsList(payMeetingHotelContactsList); + //标协会议类型 + String tbMeetingType = meeting.getTbMeetingType().toString(); + String type = sysBaseApi.translateDict("standard_meeting_type", tbMeetingType); + payMeetingVO.setTbMeetingType(type); + //保存数据 + StandardsMeetingExcel standardsMeetingExcel = new StandardsMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, standardsMeetingExcel); + exportList.add(standardsMeetingExcel); + // 工作组项目查询工作组项目名 + break; + case MeetingCommon.WORKING_GROUP_MEETING: + String workingGroupId = meeting.getWorkingGroupId(); + PayWorkingGroup workingGroup = payWorkingGroupService.getById(workingGroupId); + payMeetingVO.setWorkingGroupName(workingGroup.getWorkingGroupProject()); + //保存数据 + WorkingGroupMeetingExcel workingGroupMeetingExcel = new WorkingGroupMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, workingGroupMeetingExcel); + exportList.add(workingGroupMeetingExcel); + break; + case MeetingCommon.INTERNATIONAL_MEETING: + //保存数据 + InternationalMeetingExcel internationalMeetingExcel = new InternationalMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, internationalMeetingExcel); + exportList.add(internationalMeetingExcel); + break; + case MeetingCommon.OTHER_MEETING: + //保存数据 + OtherMeetingExcel otherMeetingExcel = new OtherMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, otherMeetingExcel); + exportList.add(otherMeetingExcel); + break; + case MeetingCommon.COMMITTEE_MEETING: + String caseCommitteeId = meeting.getCaseCommitteeId(); + PayCaseCommittee payCaseCommittee = payCaseCommitteeService.getById(caseCommitteeId); + payMeetingVO.setCaseCommitteeName(payCaseCommittee.getName()); + + CommitteeMeetingExcel committeeMeetingExcel = new CommitteeMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, committeeMeetingExcel); + exportList.add(committeeMeetingExcel); + break; + } + } + Class classToExport = null; + switch (meetingType) { + case MeetingCommon.WORKING_GROUP_MEETING: + classToExport = WorkingGroupMeetingExcel.class; + break; + case MeetingCommon.STANDARD_MEETING: + classToExport = StandardsMeetingExcel.class; + break; + case MeetingCommon.INTERNATIONAL_MEETING: + classToExport = InternationalMeetingExcel.class; + break; + case MeetingCommon.OTHER_MEETING: + classToExport = OtherMeetingExcel.class; + break; + case MeetingCommon.COMMITTEE_MEETING: + classToExport = CommitteeMeetingExcel.class; + break; + } + return super.exportListXls(exportList, classToExport, "会议管理"); + } + + /** + * 上传资料 + */ + @AutoLog(value = "上传资料") + @RequiresPermissions("standardsMeeting:upload") + @ApiOperation(value = "上传资料", notes = "上传资料") + @PostMapping(value = "/uploadFile") + public Result uploadFile(@RequestBody UploadFileVO uploadFileVO) { + String fileIds = uploadFileVO.getFileIds(); + String id = uploadFileVO.getId(); + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(PayMeeting::getId, id); + wrapper.set(PayMeeting::getMeetingData, fileIds); + payMeetingService.update(wrapper); + PayMeeting payMeeting = payMeetingService.getById(id); + if (payMeeting.getMeetingType().equals(Integer.parseInt(MeetingCommon.STANDARD_MEETING))) { + List idList = Arrays.asList(fileIds.split(",")); + List ossFiles = iossFileService.listByIds(idList); + for (OSSFile ossFile : ossFiles) { + String url = ossFile.getUrl(); + String[] fileUrl = url.split("/"); + int length = fileUrl.length; + ossFile.setFileName(fileUrl[length - 1]); + } + AuthenticationUtils.post("/stablecrosstraining/stableCrossTraining/addStandardsFile", null, ossFiles); + StableCrossTraining stableCrossTraining = new StableCrossTraining(); + stableCrossTraining.setId(id); + stableCrossTraining.setMeetingFiles(fileIds); + AuthenticationUtils.post("/stablecrosstraining/stableCrossTraining/updateStandardsFile", null, stableCrossTraining); + } + return Result.OK("上传资料成功!"); + } + + /** + * 发布提醒 + */ + @AutoLog("发布提醒") + @RequiresPermissions("standardsMeeting:publish") + @ApiOperation(value = "发布提醒", notes = "发布提醒") + @PostMapping(value = "/publishReminder") + public Result publishReminder(@RequestBody PublishReminderVO publishReminderVO) { + payMeetingService.publishReminder(publishReminderVO); + return Result.OK(); + } + + @ApiOperation(value = "生成base64") + @GetMapping(value = "/createBase64") + @ApiImplicitParam(name = "contact", value = "内容", required = true, paramType = "query") + public Result createBase64(String contact) { + return Result.OK(QrcodeUtil.create(contact)); + } + + /** + * 新增标协会议 + */ + @ApiOperation(value = "新增标协会议") + @PostMapping(value = "/addStandards") + public Result addStandards(@RequestBody PayMeeting payMeeting, HttpServletRequest request) { + String publicKey = request.getParameter("publicKey"); + String token = request.getParameter("token"); + authenticationUtils.check(token, publicKey); + + payMeetingService.addStandards(payMeeting); + return Result.OK("合并开票成功!"); + } + + /** + * 新增会议文件 + */ + @ApiOperation(value = "新增会议文件", notes = "新增会议文件") + @PostMapping(value = "/addStandardsFile") + public Result addStandardsFile(@RequestBody List ossFileList, HttpServletRequest request) { + String publicKey = request.getParameter("publicKey"); + String token = request.getParameter("token"); + authenticationUtils.check(token, publicKey); + for (OSSFile ossFile : ossFileList) { + iossFileService.saveOrUpdate(ossFile); + } + return Result.OK("新增会议文件成功!"); + } + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/StandardsMeetingSituationController.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/StandardsMeetingSituationController.java new file mode 100644 index 00000000..9e754038 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/StandardsMeetingSituationController.java @@ -0,0 +1,367 @@ +package com.jero.meeting.controller; + +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.aspect.annotation.DictPoint; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.system.query.QueryGenerator; +import com.jero.common.util.AuthenticationUtils; +import com.jero.common.util.PasswordUtil; +import com.jero.common.util.ValidUtil; +import com.jero.common.util.oConvertUtils; +import com.jero.company.entity.PayCompanyManagement; +import com.jero.company.entity.PayContactsManagement; +import com.jero.company.service.IPayCompanyManagementService; +import com.jero.company.service.IPayContactsManagementService; +import com.jero.meeting.common.MeetingCommon; +import com.jero.meeting.entity.PayMeetingSituation; +import com.jero.meeting.service.IPayMeetingSituationService; +import com.jero.meeting.vo.*; +import com.jero.meeting.vo.excel.*; +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.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + + +/** + * @description: 参会人员信息 + * @author: jero-boot + * @date: 2021-09-02 + * @version: V1.0 + */ +@Api(tags = "参会人员信息") +@RestController +@RequestMapping("/meeting/standardsMeetingSituation") +@Slf4j +public class StandardsMeetingSituationController extends JeroController { + @Resource + private IPayMeetingSituationService payMeetingSituationService; + @Resource + private AuthenticationUtils authenticationUtils; + @Resource + private IPayContactsManagementService contactsManagementService; + @Resource + private IPayCompanyManagementService companyManagementService; + /** + * 分页列表查询 + */ + @RequiresPermissions("standardsMeetingSituation:search") + @ApiOperation(value = "参会人员信息-分页列表查询", notes = "参会人员信息-分页列表查询") + @GetMapping(value = "/page") + public Result queryPageList(PayMeetingSituation payMeetingSituation, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, req.getParameterMap()); + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingSituationService.page(page, queryWrapper); + List situationList = pageList.getRecords(); + for (PayMeetingSituation meetingSituation : situationList) { + Integer payMode = meetingSituation.getPayMode(); + //汇款并且缴费凭证为空 + if (Objects.equals(payMode,1) && StringUtils.isBlank(meetingSituation.getPaymentRecord())){ + meetingSituation.setIdentification(PayProjectCommon.YES); + }else { + meetingSituation.setIdentification(PayProjectCommon.NO); + } + } + return Result.OK(pageList); + } + + /** + * 合同查询未关联参会人列表 + */ + @ApiOperation(value = "合同查询未关联参会人列表", notes = "合同查询未关联参会人列表") + @GetMapping(value = "/contractPage") + public Result contractPage(MeetingSituationContractVO meetingSituationContractVO, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingSituationService.contractPage(page, meetingSituationContractVO); + return Result.OK(pageList); + } + + /** + * 分页列表查询 会员系统系统 + */ + @ApiOperation(value = "参会人员信息-分页列表查询 会员系统系统", notes = "参会人员信息-分页列表查询") + @GetMapping(value = "/page2") + public Result queryPageList2(PayMeetingSituation payMeetingSituation, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + String publicKey = req.getParameter("publicKey"); + String token = req.getParameter("token"); + authenticationUtils.check(token, publicKey); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, req.getParameterMap()); + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingSituationService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 列表查询 + */ + @ApiOperation(value = "参会人员信息-列表查询", notes = "参会人员信息-列表查询") + @GetMapping(value = "/list") + public Result> queryList() { + List list = payMeetingSituationService.queryList(); + return Result.OK(list); + } + + /** + * 添加参会人 + */ + @RequiresPermissions("standardsMeetingSituation:add") + @AutoLog(value = "参会人员信息-添加参会人") + @ApiOperation(value = "参会人员信息-添加参会人", notes = "参会人员信息-添加参会人") + @PostMapping(value = "/add") + public Result add(@RequestBody PayMeetingSituation payMeetingSituation) { + payMeetingSituationService.add(payMeetingSituation); + return Result.OK("添加成功!"); + } + + /** + * 报名 + */ + @AutoLog(value = "报名信息-报名") + @ApiOperation(value = "报名信息-报名", notes = "报名信息-报名") + @PostMapping(value = "/signUp") + public Result signUp(@RequestBody PayMeetingSituation payMeetingSituation) { + payMeetingSituationService.signUp(payMeetingSituation); + return Result.OK("添加成功!"); + } + + + /** + * 编辑 + */ + @AutoLog(value = "参会人员信息-编辑") + @RequiresPermissions("standardsMeetingSituation:edit") + @ApiOperation(value = "参会人员信息-编辑", notes = "参会人员信息-编辑") + @PostMapping(value = "/edit") + public Result edit(@RequestBody PayMeetingSituationVO payMeetingSituationVO) { + payMeetingSituationService.editById(payMeetingSituationVO); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + */ + @RequiresPermissions("standardsMeetingSituation:delete") + @AutoLog(value = "参会人员信息-通过id删除") + @ApiOperation(value = "参会人员信息-通过id删除", notes = "参会人员信息-通过id删除") + @GetMapping(value = "/delete") + public Result delete(@RequestParam(name = "id") String id) { + payMeetingSituationService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + */ + @RequiresPermissions("standardsMeetingSituation:batchDel") + @AutoLog(value = "参会人员信息-批量删除") + @ApiOperation(value = "参会人员信息-批量删除", notes = "参会人员信息-批量删除") + @GetMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids") String ids) { + this.payMeetingSituationService.deleteByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + */ + @DictPoint + @ApiOperation(value = "参会人员信息-通过id查询", notes = "参会人员信息-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id") String id) { + PayMeetingSituation payMeetingSituation = payMeetingSituationService.queryById(id); + if (payMeetingSituation == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(payMeetingSituation); + } + + /** + * 通过会议id查询自己的参会人信息 + */ + @DictPoint + @ApiOperation(value = "参会人员信息-通过会议id查询自己的参会人信息") + @GetMapping(value = "/queryByMeetingId") + public Result queryByMeetingId(@RequestParam(name = "meetingId") String meetingId) { + PayMeetingSituation payMeetingSituation = payMeetingSituationService.queryByMeetingIdAndContactId(meetingId); + if (payMeetingSituation == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(payMeetingSituation); + } + + /** + * 导出excel + */ + @RequiresPermissions("standardsMeetingSituation:export") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, PayMeetingSituation payMeetingSituation) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, request.getParameterMap()); + List pageList = payMeetingSituationService.list(queryWrapper); + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + pageList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + } + if (pageList.isEmpty()) { + throw new JeroBootException("没有数据"); + } + String meetingType = payMeetingSituationService.getMeetingType(payMeetingSituation); + List exportList = new ArrayList<>(); + for (PayMeetingSituation meetingSituation : pageList) { + + String companyContactId = meetingSituation.getCompanyContactId(); + PayContactsManagement contactsManagement = contactsManagementService.getById(companyContactId); + meetingSituation.setCompanyContactName(contactsManagement.getName()); + meetingSituation.setPost(contactsManagement.getPost()); + meetingSituation.setPhone(PasswordUtil.decrypt(contactsManagement.getPhone())); + meetingSituation.setEmail(PasswordUtil.decrypt(contactsManagement.getEmail())); + PayCompanyManagement companyManagement = companyManagementService.getById(contactsManagement.getCompanyId()); + meetingSituation.setCompanyName(companyManagement.getCompanyName()); + switch (meetingType) { + case MeetingCommon.STANDARD_MEETING: + //保存数据 + StandardsSituationExcel standardsSituationExcel = new StandardsSituationExcel(); + BeanUtils.copyProperties(meetingSituation, standardsSituationExcel); + exportList.add(standardsSituationExcel); + // 工作组项目查询工作组项目名 + break; + case MeetingCommon.WORKING_GROUP_MEETING: + //保存数据 + WorkingGroupSituationExcel workingGroupSituationExcel = new WorkingGroupSituationExcel(); + BeanUtils.copyProperties(meetingSituation, workingGroupSituationExcel); + exportList.add(workingGroupSituationExcel); + break; + case MeetingCommon.INTERNATIONAL_MEETING: + //保存数据 + InternationalSituationExcel internationalSituationExcel = new InternationalSituationExcel(); + BeanUtils.copyProperties(meetingSituation, internationalSituationExcel); + exportList.add(internationalSituationExcel); + break; + case MeetingCommon.OTHER_MEETING: + //保存数据 + SituationExcel situationExcel = new SituationExcel(); + BeanUtils.copyProperties(meetingSituation, situationExcel); + exportList.add(situationExcel); + break; + case MeetingCommon.COMMITTEE_MEETING: + //保存数据 + CommitteeSituationExcel committeeSituationExcel = new CommitteeSituationExcel(); + BeanUtils.copyProperties(meetingSituation, committeeSituationExcel); + exportList.add(committeeSituationExcel); + break; + } + } + + + Class classToExport = null; + switch (meetingType) { + case MeetingCommon.WORKING_GROUP_MEETING: + classToExport = WorkingGroupSituationExcel.class; + break; + case MeetingCommon.STANDARD_MEETING: + classToExport = StandardsSituationExcel.class; + break; + case MeetingCommon.INTERNATIONAL_MEETING: + classToExport = InternationalSituationExcel.class; + break; + case MeetingCommon.OTHER_MEETING: + classToExport = SituationExcel.class; + break; + case MeetingCommon.COMMITTEE_MEETING: + classToExport = CommitteeSituationExcel.class; + break; + } + return super.exportListXls(exportList, classToExport, "参会人员信息"); + } + + + /** + * 设置对接人 + */ + @RequiresPermissions("standardsMeetingSituation:batchSetDocker") + @AutoLog(value = "设置对接人") + @ApiOperation(value = "设置对接人", notes = "设置对接人") + @PostMapping(value = "/addDock") + public Result addDock(@RequestBody AddDockVO addDockVO) { + payMeetingSituationService.addDock(addDockVO); + return Result.OK("设置对接人成功!"); + } + + /** + * 审核付款凭证 + */ + @RequiresPermissions("standardsMeetingSituation:auditCredentials") + @AutoLog(value = "审核付款凭证") + @ApiOperation(value = "审核付款凭证") + @PostMapping(value = "/check") + public Result check(@RequestBody CheckVO checkVO) { + payMeetingSituationService.check(checkVO); + return Result.OK("审核成功!"); + } + + /** + * 审核报名信息 + */ + @AutoLog(value = "审核报名信息") + @RequiresPermissions("standardsMeetingSituation:auditSignUp") + @ApiOperation(value = "审核报名信息") + @PostMapping(value = "/checkRegister") + public Result checkRegister(@RequestBody CheckVO checkVO) { + payMeetingSituationService.checkRegister(checkVO); + return Result.OK("审核成功!"); + } + + /** + * 合并开票 + */ + @AutoLog(value = "合并开票") + @ApiOperation(value = "合并开票", notes = "合并开票") + @PostMapping(value = "/batchPayBill") + public Result mergePayBill(@RequestBody MergePayBillVO mergePayBillVO) { + ValidUtil.validate(mergePayBillVO); + payMeetingSituationService.mergePayBill(mergePayBillVO); + return Result.OK("合并开票成功!"); + } + + /** + * 签到 + */ + @AutoLog(value = "签到") + @ApiOperation(value = "签到") + @PostMapping(value = "/signIn") + public Result signIn(@RequestBody SignInVO signInVO) { + ValidUtil.validate(signInVO); + payMeetingSituationService.signIn(signInVO); + return Result.OK("签到成功!"); + } + + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/WorkGroupMeetingController.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/WorkGroupMeetingController.java new file mode 100644 index 00000000..533219fe --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/WorkGroupMeetingController.java @@ -0,0 +1,489 @@ +package com.jero.meeting.controller; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +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.exception.JeroBootException; +import com.jero.common.system.api.ISysBaseAPI; +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.common.util.AuthenticationUtils; +import com.jero.common.util.PasswordUtil; +import com.jero.common.util.ValidUtil; +import com.jero.common.util.oConvertUtils; +import com.jero.company.service.IPayContactsManagementService; +import com.jero.data.entity.PayCaseCommittee; +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.service.IPayMeetingHotelContactsService; +import com.jero.meeting.service.IPayMeetingService; +import com.jero.meeting.vo.PayMeetingVO; +import com.jero.meeting.vo.PublishReminderVO; +import com.jero.meeting.vo.UploadFileVO; +import com.jero.meeting.vo.excel.*; +import com.jero.modules.oss.entity.OSSFile; +import com.jero.modules.oss.service.IOSSFileService; +import com.jero.modules.system.volid.group.UpdateGroup; +import com.jero.project.entity.PayWorkingGroup; +import com.jero.project.service.IPayWorkingGroupService; +import com.jero.standards.xuanguan.stablecrosstraining.entity.StableCrossTraining; +import com.jero.util.QrcodeUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.*; +import java.util.stream.Collectors; + + +/** + * @description: 会议管理 + * @author: jero-boot + * @date: 2021-09-02 + * @version: V1.0 + */ +@Api(tags = "会议管理-工作组会议") +@RestController +@RequestMapping("/meeting/workGroupMeeting") +@Slf4j +public class WorkGroupMeetingController extends JeroController { + @Resource + private IPayMeetingService payMeetingService; + @Resource + private ISysBaseAPI sysBaseApi; + @Resource + private IPayMeetingHotelContactsService meetingHotelContactsService; + @Resource + private IPayWorkingGroupService payWorkingGroupService; + @Resource + private AuthenticationUtils authenticationUtils; + @Resource + private IOSSFileService iossFileService; + @Resource + private IPayCaseCommitteeService payCaseCommitteeService; + @Resource + private IPayContactsManagementService payContactsManagementService; + + /** + * 分页列表查询 + */ + @RequiresPermissions("workGroupMeeting: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) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeeting, req.getParameterMap()); + String meetingStartTime = req.getParameter("meetingStartTime"); + String meetingEndTime = req.getParameter("meetingEndTime"); + if (ObjectUtil.isNotEmpty(meetingStartTime) && ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime).or().lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingStartTime)) { + queryWrapper.not( + a -> a.lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime) + ); + } + + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingService.page(page, queryWrapper); + for (PayMeeting meeting : pageList.getRecords()) { + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(payMeetingVO, payMeeting); + //查询酒店联系人列表 + if (meeting.getMeetingType().equals(Integer.parseInt(MeetingCommon.STANDARD_MEETING))) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingHotelContacts::getMeetingId, meeting.getId()); + List payMeetingHotelContactsList = meetingHotelContactsService.list(wrapper); + meeting.setHotelContactsList(payMeetingHotelContactsList); + } + } + + return Result.OK(pageList); + } + + /** + * 企业端-会议-分页列表查询参会人的会议 + */ + @ApiOperation(value = "企业端-会议-分页列表查询参会人的会议") + @GetMapping(value = "/pageContract") + public Result queryPageListContract(PayMeeting payMeeting, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeeting, req.getParameterMap()); + String meetingStartTime = req.getParameter("meetingStartTime"); + String meetingEndTime = req.getParameter("meetingEndTime"); + if (ObjectUtil.isNotEmpty(meetingStartTime) && ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime).or().lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingStartTime)) { + queryWrapper.not( + a -> a.lt("end_time", meetingStartTime) + ); + } else if (ObjectUtil.isNotEmpty(meetingEndTime)) { + queryWrapper.not( + a -> a.gt("start_time", meetingEndTime) + ); + } + String meetingStatus = req.getParameter("meetingStatus"); + String now = DateUtil.formatDate(new Date()); + if (StringUtils.isNotBlank(meetingStatus)) { + switch (meetingStatus) { + case MeetingCommon.MEETING_STATUS_2: + queryWrapper.gt("date_format(start_time,'%Y-%m-%d')", now); + break; + case MeetingCommon.MEETING_STATUS_3: + queryWrapper.le("date_format(start_time,'%Y-%m-%d')", now); + queryWrapper.ge("date_format(end_time,'%Y-%m-%d')", now); + break; + case MeetingCommon.MEETING_STATUS_4: + queryWrapper.le("date_format(end_time,'%Y-%m-%d')", now); + break; + } + } + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String id = sysUser.getId(); + + //会议报名状态:1可报名/2已报名 + String meetingSignUpType = req.getParameter("meetingSignUpType"); + if (Objects.equals(meetingSignUpType,1+"")) { + queryWrapper.eq("pmrr.contact_id",id); + }else if (Objects.equals(meetingSignUpType,2+"")) { + queryWrapper.eq("pms.company_contact_id",id); + }else { + queryWrapper.and( + a -> a.eq("pms.company_contact_id",id) + .or() + .eq("pms.post_contact_id",id) + .or() + .eq("pmrr.contact_id",id) + ); + } + + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingService.pageListContract(page, queryWrapper, now); + for (PayMeeting meeting : pageList.getRecords()) { + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(payMeetingVO, payMeeting); + } + + return Result.OK(pageList); + } + + /** + * 列表查询 + */ + @RequiresPermissions("workGroupMeeting:search") + @ApiOperation(value = "会议管理-列表查询", notes = "会议管理-列表查询") + @GetMapping(value = "/list") + public Result> queryList() { + List list = payMeetingService.queryList(); + return Result.OK(list); + } + + /** + * 添加 + */ + @RequiresPermissions("workGroupMeeting:add") + @AutoLog(value = "会议管理-添加") + @ApiOperation(value = "会议管理-添加", notes = "会议管理-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody PayMeetingVO payMeetingVO) { + ValidUtil.validate(payMeetingVO); + payMeetingService.add(payMeetingVO); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + */ + @RequiresPermissions("workGroupMeeting:edit") + @AutoLog(value = "会议管理-编辑") + @ApiOperation(value = "会议管理-编辑", notes = "会议管理-编辑") + @PostMapping(value = "/edit") + public Result edit(@RequestBody PayMeetingVO payMeetingVO) { + ValidUtil.validate(payMeetingVO, UpdateGroup.class); + payMeetingService.editById(payMeetingVO); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + */ + @RequiresPermissions("workGroupMeeting:delete") + @AutoLog(value = "会议管理-通过id删除") + @ApiOperation(value = "会议管理-通过id删除", notes = "会议管理-通过id删除") + @GetMapping(value = "/delete") + public Result delete(@RequestParam(name = "id") String id) { + payMeetingService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + */ + @RequiresPermissions("workGroupMeeting:batchDel") + @AutoLog(value = "会议管理-批量删除") + @ApiOperation(value = "会议管理-批量删除", notes = "会议管理-批量删除") + @GetMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids") String ids) { + this.payMeetingService.deleteByIds(Arrays.asList(ids.split(","))); + 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) { + return Result.error("未找到对应数据"); + } + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(meeting, payMeetingVO); + String meetingType = meeting.getMeetingType().toString(); + //String meetingType1 = sysBaseApi.translateDict("meeting_type", meetingType); + payMeetingVO.setMeetingType(meetingType); + payMeetingVO.setTbMeetingType(meeting.getMeetingType().toString()); + //payMeetingVO.setHotelContactsList(new ArrayList<>()); + //标协会议查询酒店联系人列表 + if (meetingType.equals(MeetingCommon.STANDARD_MEETING)) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingHotelContacts::getMeetingId, meeting.getId()); + List payMeetingHotelContactsList = meetingHotelContactsService.list(wrapper); + payMeetingVO.setHotelContactsList(payMeetingHotelContactsList); + //标协会议类型 + //String tbMeetingType = meeting.getTbMeetingType().toString(); + //String type = sysBaseApi.translateDict("standard_meeting_type", tbMeetingType); + //payMeetingVO.setTbMeetingType(type); + // 工作组项目查询工作组项目名 + } else if (meetingType.equals(MeetingCommon.WORKING_GROUP_MEETING)) { + String workingGroupId = meeting.getWorkingGroupId(); + PayWorkingGroup workingGroup = payWorkingGroupService.getById(workingGroupId); + payMeetingVO.setWorkingGroupName(workingGroup.getWorkingGroupProject()); + } + return Result.OK(payMeetingVO); + } + + /** + * 导出excel + */ + @RequiresPermissions("workGroupMeeting:export") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, PayMeeting payMeeting) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeeting, request.getParameterMap()); + List pageList = payMeetingService.list(queryWrapper); + List exportList = new ArrayList<>(); + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + pageList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + } + if (pageList.isEmpty()) { + throw new JeroBootException("没有数据"); + } + String meetingType = pageList.get(0).getMeetingType().toString(); + for (PayMeeting meeting : pageList) { + //查询会议负责人 + LoginUser user = sysBaseApi.getUserById(meeting.getDirectorId()); + meeting.setDirectorName(user.getUsername()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(meeting, payMeetingVO); + meetingType = meeting.getMeetingType().toString(); + String meetingType1 = sysBaseApi.translateDict("meeting_type", meetingType); + payMeetingVO.setMeetingType(meetingType1); + payMeetingVO.setHotelContactsList(new ArrayList<>()); + //标协会议查询酒店联系人列表 + switch (meetingType) { + case MeetingCommon.STANDARD_MEETING: + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingHotelContacts::getMeetingId, meeting.getId()); + List payMeetingHotelContactsList = meetingHotelContactsService.list(wrapper); + payMeetingVO.setHotelContactsList(payMeetingHotelContactsList); + //标协会议类型 + String tbMeetingType = meeting.getTbMeetingType().toString(); + String type = sysBaseApi.translateDict("standard_meeting_type", tbMeetingType); + payMeetingVO.setTbMeetingType(type); + //保存数据 + StandardsMeetingExcel standardsMeetingExcel = new StandardsMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, standardsMeetingExcel); + exportList.add(standardsMeetingExcel); + // 工作组项目查询工作组项目名 + break; + case MeetingCommon.WORKING_GROUP_MEETING: + String workingGroupId = meeting.getWorkingGroupId(); + PayWorkingGroup workingGroup = payWorkingGroupService.getById(workingGroupId); + payMeetingVO.setWorkingGroupName(workingGroup.getWorkingGroupProject()); + //保存数据 + WorkingGroupMeetingExcel workingGroupMeetingExcel = new WorkingGroupMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, workingGroupMeetingExcel); + exportList.add(workingGroupMeetingExcel); + break; + case MeetingCommon.INTERNATIONAL_MEETING: + //保存数据 + InternationalMeetingExcel internationalMeetingExcel = new InternationalMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, internationalMeetingExcel); + exportList.add(internationalMeetingExcel); + break; + case MeetingCommon.OTHER_MEETING: + //保存数据 + OtherMeetingExcel otherMeetingExcel = new OtherMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, otherMeetingExcel); + exportList.add(otherMeetingExcel); + break; + case MeetingCommon.COMMITTEE_MEETING: + String caseCommitteeId = meeting.getCaseCommitteeId(); + PayCaseCommittee payCaseCommittee = payCaseCommitteeService.getById(caseCommitteeId); + payMeetingVO.setCaseCommitteeName(payCaseCommittee.getName()); + + CommitteeMeetingExcel committeeMeetingExcel = new CommitteeMeetingExcel(); + BeanUtils.copyProperties(payMeetingVO, committeeMeetingExcel); + exportList.add(committeeMeetingExcel); + break; + } + } + Class classToExport = null; + switch (meetingType) { + case MeetingCommon.WORKING_GROUP_MEETING: + classToExport = WorkingGroupMeetingExcel.class; + break; + case MeetingCommon.STANDARD_MEETING: + classToExport = StandardsMeetingExcel.class; + break; + case MeetingCommon.INTERNATIONAL_MEETING: + classToExport = InternationalMeetingExcel.class; + break; + case MeetingCommon.OTHER_MEETING: + classToExport = OtherMeetingExcel.class; + break; + case MeetingCommon.COMMITTEE_MEETING: + classToExport = CommitteeMeetingExcel.class; + break; + } + return super.exportListXls(exportList, classToExport, "会议管理"); + } + + /** + * 上传资料 + */ + @AutoLog(value = "上传资料") + @RequiresPermissions("workGroupMeeting:upload") + @ApiOperation(value = "上传资料", notes = "上传资料") + @PostMapping(value = "/uploadFile") + public Result uploadFile(@RequestBody UploadFileVO uploadFileVO) { + String fileIds = uploadFileVO.getFileIds(); + String id = uploadFileVO.getId(); + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(PayMeeting::getId, id); + wrapper.set(PayMeeting::getMeetingData, fileIds); + payMeetingService.update(wrapper); + PayMeeting payMeeting = payMeetingService.getById(id); + if (payMeeting.getMeetingType().equals(Integer.parseInt(MeetingCommon.STANDARD_MEETING))) { + List idList = Arrays.asList(fileIds.split(",")); + List ossFiles = iossFileService.listByIds(idList); + for (OSSFile ossFile : ossFiles) { + String url = ossFile.getUrl(); + String[] fileUrl = url.split("/"); + int length = fileUrl.length; + ossFile.setFileName(fileUrl[length - 1]); + } + AuthenticationUtils.post("/stablecrosstraining/stableCrossTraining/addStandardsFile", null, ossFiles); + StableCrossTraining stableCrossTraining = new StableCrossTraining(); + stableCrossTraining.setId(id); + stableCrossTraining.setMeetingFiles(fileIds); + AuthenticationUtils.post("/stablecrosstraining/stableCrossTraining/updateStandardsFile", null, stableCrossTraining); + } + return Result.OK("上传资料成功!"); + } + + /** + * 发布提醒 + */ + @AutoLog("发布提醒") + @RequiresPermissions("workGroupMeeting:publish") + @ApiOperation(value = "发布提醒", notes = "发布提醒") + @PostMapping(value = "/publishReminder") + public Result publishReminder(@RequestBody PublishReminderVO publishReminderVO) { + payMeetingService.publishReminder(publishReminderVO); + return Result.OK(); + } + + @ApiOperation(value = "生成base64") + @GetMapping(value = "/createBase64") + @ApiImplicitParam(name = "contact", value = "内容", required = true, paramType = "query") + public Result createBase64(String contact) { + return Result.OK(QrcodeUtil.create(contact)); + } + + /** + * 新增标协会议 + */ + @ApiOperation(value = "新增标协会议") + @PostMapping(value = "/addStandards") + public Result addStandards(@RequestBody PayMeeting payMeeting, HttpServletRequest request) { + String publicKey = request.getParameter("publicKey"); + String token = request.getParameter("token"); + authenticationUtils.check(token, publicKey); + + payMeetingService.addStandards(payMeeting); + return Result.OK("合并开票成功!"); + } + + /** + * 新增会议文件 + */ + @ApiOperation(value = "新增会议文件", notes = "新增会议文件") + @PostMapping(value = "/addStandardsFile") + public Result addStandardsFile(@RequestBody List ossFileList, HttpServletRequest request) { + String publicKey = request.getParameter("publicKey"); + String token = request.getParameter("token"); + authenticationUtils.check(token, publicKey); + for (OSSFile ossFile : ossFileList) { + iossFileService.saveOrUpdate(ossFile); + } + return Result.OK("新增会议文件成功!"); + } + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/WorkGroupMeetingSituationController.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/WorkGroupMeetingSituationController.java new file mode 100644 index 00000000..77d3c17b --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/WorkGroupMeetingSituationController.java @@ -0,0 +1,367 @@ +package com.jero.meeting.controller; + +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.aspect.annotation.DictPoint; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.system.query.QueryGenerator; +import com.jero.common.util.AuthenticationUtils; +import com.jero.common.util.PasswordUtil; +import com.jero.common.util.ValidUtil; +import com.jero.common.util.oConvertUtils; +import com.jero.company.entity.PayCompanyManagement; +import com.jero.company.entity.PayContactsManagement; +import com.jero.company.service.IPayCompanyManagementService; +import com.jero.company.service.IPayContactsManagementService; +import com.jero.meeting.common.MeetingCommon; +import com.jero.meeting.entity.PayMeetingSituation; +import com.jero.meeting.service.IPayMeetingSituationService; +import com.jero.meeting.vo.*; +import com.jero.meeting.vo.excel.*; +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.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + + +/** + * @description: 参会人员信息 + * @author: jero-boot + * @date: 2021-09-02 + * @version: V1.0 + */ +@Api(tags = "参会人员信息") +@RestController +@RequestMapping("/meeting/workGroupMeetingSituation") +@Slf4j +public class WorkGroupMeetingSituationController extends JeroController { + @Resource + private IPayMeetingSituationService payMeetingSituationService; + @Resource + private AuthenticationUtils authenticationUtils; + @Resource + private IPayContactsManagementService contactsManagementService; + @Resource + private IPayCompanyManagementService companyManagementService; + /** + * 分页列表查询 + */ + @RequiresPermissions("workGroupMeetingSituation:search") + @ApiOperation(value = "参会人员信息-分页列表查询", notes = "参会人员信息-分页列表查询") + @GetMapping(value = "/page") + public Result queryPageList(PayMeetingSituation payMeetingSituation, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, req.getParameterMap()); + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingSituationService.page(page, queryWrapper); + List situationList = pageList.getRecords(); + for (PayMeetingSituation meetingSituation : situationList) { + Integer payMode = meetingSituation.getPayMode(); + //汇款并且缴费凭证为空 + if (Objects.equals(payMode,1) && StringUtils.isBlank(meetingSituation.getPaymentRecord())){ + meetingSituation.setIdentification(PayProjectCommon.YES); + }else { + meetingSituation.setIdentification(PayProjectCommon.NO); + } + } + return Result.OK(pageList); + } + + /** + * 合同查询未关联参会人列表 + */ + @ApiOperation(value = "合同查询未关联参会人列表", notes = "合同查询未关联参会人列表") + @GetMapping(value = "/contractPage") + public Result contractPage(MeetingSituationContractVO meetingSituationContractVO, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingSituationService.contractPage(page, meetingSituationContractVO); + return Result.OK(pageList); + } + + /** + * 分页列表查询 会员系统系统 + */ + @ApiOperation(value = "参会人员信息-分页列表查询 会员系统系统", notes = "参会人员信息-分页列表查询") + @GetMapping(value = "/page2") + public Result queryPageList2(PayMeetingSituation payMeetingSituation, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + String publicKey = req.getParameter("publicKey"); + String token = req.getParameter("token"); + authenticationUtils.check(token, publicKey); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, req.getParameterMap()); + Page page = new Page<>(pageNo, pageSize); + IPage pageList = payMeetingSituationService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 列表查询 + */ + @ApiOperation(value = "参会人员信息-列表查询", notes = "参会人员信息-列表查询") + @GetMapping(value = "/list") + public Result> queryList() { + List list = payMeetingSituationService.queryList(); + return Result.OK(list); + } + + /** + * 添加参会人 + */ + @RequiresPermissions("workGroupMeetingSituation:add") + @AutoLog(value = "参会人员信息-添加参会人") + @ApiOperation(value = "参会人员信息-添加参会人", notes = "参会人员信息-添加参会人") + @PostMapping(value = "/add") + public Result add(@RequestBody PayMeetingSituation payMeetingSituation) { + payMeetingSituationService.add(payMeetingSituation); + return Result.OK("添加成功!"); + } + + /** + * 报名 + */ + @AutoLog(value = "报名信息-报名") + @ApiOperation(value = "报名信息-报名", notes = "报名信息-报名") + @PostMapping(value = "/signUp") + public Result signUp(@RequestBody PayMeetingSituation payMeetingSituation) { + payMeetingSituationService.signUp(payMeetingSituation); + return Result.OK("添加成功!"); + } + + + /** + * 编辑 + */ + @AutoLog(value = "参会人员信息-编辑") + @RequiresPermissions("workGroupMeetingSituation:edit") + @ApiOperation(value = "参会人员信息-编辑", notes = "参会人员信息-编辑") + @PostMapping(value = "/edit") + public Result edit(@RequestBody PayMeetingSituationVO payMeetingSituationVO) { + payMeetingSituationService.editById(payMeetingSituationVO); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + */ + @RequiresPermissions("workGroupMeetingSituation:delete") + @AutoLog(value = "参会人员信息-通过id删除") + @ApiOperation(value = "参会人员信息-通过id删除", notes = "参会人员信息-通过id删除") + @GetMapping(value = "/delete") + public Result delete(@RequestParam(name = "id") String id) { + payMeetingSituationService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + */ + @RequiresPermissions("workGroupMeetingSituation:batchDel") + @AutoLog(value = "参会人员信息-批量删除") + @ApiOperation(value = "参会人员信息-批量删除", notes = "参会人员信息-批量删除") + @GetMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids") String ids) { + this.payMeetingSituationService.deleteByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + */ + @DictPoint + @ApiOperation(value = "参会人员信息-通过id查询", notes = "参会人员信息-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id") String id) { + PayMeetingSituation payMeetingSituation = payMeetingSituationService.queryById(id); + if (payMeetingSituation == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(payMeetingSituation); + } + + /** + * 通过会议id查询自己的参会人信息 + */ + @DictPoint + @ApiOperation(value = "参会人员信息-通过会议id查询自己的参会人信息") + @GetMapping(value = "/queryByMeetingId") + public Result queryByMeetingId(@RequestParam(name = "meetingId") String meetingId) { + PayMeetingSituation payMeetingSituation = payMeetingSituationService.queryByMeetingIdAndContactId(meetingId); + if (payMeetingSituation == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(payMeetingSituation); + } + + /** + * 导出excel + */ + @RequiresPermissions("workGroupMeetingSituation:export") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, PayMeetingSituation payMeetingSituation) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, request.getParameterMap()); + List pageList = payMeetingSituationService.list(queryWrapper); + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + pageList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + } + if (pageList.isEmpty()) { + throw new JeroBootException("没有数据"); + } + String meetingType = payMeetingSituationService.getMeetingType(payMeetingSituation); + List exportList = new ArrayList<>(); + for (PayMeetingSituation meetingSituation : pageList) { + + String companyContactId = meetingSituation.getCompanyContactId(); + PayContactsManagement contactsManagement = contactsManagementService.getById(companyContactId); + meetingSituation.setCompanyContactName(contactsManagement.getName()); + meetingSituation.setPost(contactsManagement.getPost()); + meetingSituation.setPhone(PasswordUtil.decrypt(contactsManagement.getPhone())); + meetingSituation.setEmail(PasswordUtil.decrypt(contactsManagement.getEmail())); + PayCompanyManagement companyManagement = companyManagementService.getById(contactsManagement.getCompanyId()); + meetingSituation.setCompanyName(companyManagement.getCompanyName()); + switch (meetingType) { + case MeetingCommon.STANDARD_MEETING: + //保存数据 + StandardsSituationExcel standardsSituationExcel = new StandardsSituationExcel(); + BeanUtils.copyProperties(meetingSituation, standardsSituationExcel); + exportList.add(standardsSituationExcel); + // 工作组项目查询工作组项目名 + break; + case MeetingCommon.WORKING_GROUP_MEETING: + //保存数据 + WorkingGroupSituationExcel workingGroupSituationExcel = new WorkingGroupSituationExcel(); + BeanUtils.copyProperties(meetingSituation, workingGroupSituationExcel); + exportList.add(workingGroupSituationExcel); + break; + case MeetingCommon.INTERNATIONAL_MEETING: + //保存数据 + InternationalSituationExcel internationalSituationExcel = new InternationalSituationExcel(); + BeanUtils.copyProperties(meetingSituation, internationalSituationExcel); + exportList.add(internationalSituationExcel); + break; + case MeetingCommon.OTHER_MEETING: + //保存数据 + SituationExcel situationExcel = new SituationExcel(); + BeanUtils.copyProperties(meetingSituation, situationExcel); + exportList.add(situationExcel); + break; + case MeetingCommon.COMMITTEE_MEETING: + //保存数据 + CommitteeSituationExcel committeeSituationExcel = new CommitteeSituationExcel(); + BeanUtils.copyProperties(meetingSituation, committeeSituationExcel); + exportList.add(committeeSituationExcel); + break; + } + } + + + Class classToExport = null; + switch (meetingType) { + case MeetingCommon.WORKING_GROUP_MEETING: + classToExport = WorkingGroupSituationExcel.class; + break; + case MeetingCommon.STANDARD_MEETING: + classToExport = StandardsSituationExcel.class; + break; + case MeetingCommon.INTERNATIONAL_MEETING: + classToExport = InternationalSituationExcel.class; + break; + case MeetingCommon.OTHER_MEETING: + classToExport = SituationExcel.class; + break; + case MeetingCommon.COMMITTEE_MEETING: + classToExport = CommitteeSituationExcel.class; + break; + } + return super.exportListXls(exportList, classToExport, "参会人员信息"); + } + + + /** + * 设置对接人 + */ + @RequiresPermissions("workGroupMeetingSituation:batchSetDocker") + @AutoLog(value = "设置对接人") + @ApiOperation(value = "设置对接人", notes = "设置对接人") + @PostMapping(value = "/addDock") + public Result addDock(@RequestBody AddDockVO addDockVO) { + payMeetingSituationService.addDock(addDockVO); + return Result.OK("设置对接人成功!"); + } + + /** + * 审核付款凭证 + */ + @RequiresPermissions("workGroupMeetingSituation:auditCredentials") + @AutoLog(value = "审核付款凭证") + @ApiOperation(value = "审核付款凭证") + @PostMapping(value = "/check") + public Result check(@RequestBody CheckVO checkVO) { + payMeetingSituationService.check(checkVO); + return Result.OK("审核成功!"); + } + + /** + * 审核报名信息 + */ + @AutoLog(value = "审核报名信息") + @RequiresPermissions("workGroupMeetingSituation:auditSignUp") + @ApiOperation(value = "审核报名信息") + @PostMapping(value = "/checkRegister") + public Result checkRegister(@RequestBody CheckVO checkVO) { + payMeetingSituationService.checkRegister(checkVO); + return Result.OK("审核成功!"); + } + + /** + * 合并开票 + */ + @AutoLog(value = "合并开票") + @ApiOperation(value = "合并开票", notes = "合并开票") + @PostMapping(value = "/batchPayBill") + public Result mergePayBill(@RequestBody MergePayBillVO mergePayBillVO) { + ValidUtil.validate(mergePayBillVO); + payMeetingSituationService.mergePayBill(mergePayBillVO); + return Result.OK("合并开票成功!"); + } + + /** + * 签到 + */ + @AutoLog(value = "签到") + @ApiOperation(value = "签到") + @PostMapping(value = "/signIn") + public Result signIn(@RequestBody SignInVO signInVO) { + ValidUtil.validate(signInVO); + payMeetingSituationService.signIn(signInVO); + return Result.OK("签到成功!"); + } + + +}