diff --git a/db/24年6月海外会议变更.sql b/db/24年6月海外会议变更.sql new file mode 100644 index 00000000..a7683831 --- /dev/null +++ b/db/24年6月海外会议变更.sql @@ -0,0 +1,58 @@ +-- auto-generated definition +create table pay_meeting_overseas_situation +( + id varchar(36) not null comment 'id', + create_by varchar(50) null comment '创建人', + create_time datetime null comment '创建日期', + update_by varchar(50) null comment '更新人', + update_time datetime null comment '更新日期', + meeting_id varchar(50) null comment '会议id', + photo varchar(50) null comment '照片', + name varchar(200) null comment '姓名', + unit varchar(200) null comment '单位', + post varchar(200) null comment '职务', + nationality varchar(200) null comment '国籍', + address varchar(200) null comment '地址', + email varchar(200) null comment '邮箱', + phone varchar(200) null comment '联系电话', + need_visa tinyint(1) null comment '是否需要签证', + foreign_name varchar(200) null comment '外文姓名', + sex varchar(50) null comment '性别', + birthday date null comment '出生日期', + passport_no varchar(200) null comment '护照号码', + entry_date date null comment '出境日期', + exit_date date null comment '入境日期', + embassies_and_consulates varchar(200) null comment '办理签证使领馆', + constraint Index_1 + unique (id) +) + comment '海外会议报名表'; + +create index pm_situation_idx_meeting_id + on pay_meeting_overseas_situation (meeting_id); + +alter table pay_meeting_overseas_situation + add primary key (id); + + + +insert into sys_permission (id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external, external_terminal_show) +values ('1805490588726943746', '1430376424950026242', '海外会议报名信息编辑页', '/incomePayments/meetManage/SignUpInfoEditOverseas', 'incomePayments/meetManage/SignUpInfoEditOverseas', null, null, 1, null, '1', 13, 0, null, 1, 1, 0, 1, null, 'LKGLZ', '2024-06-25 14:37:55', 'LKGLZ', '2024-06-25 14:43:42', 0, 0, '1', 0, 1), + ('1803343905960304641', '1803335479314161665', '删除', null, null, null, null, 2, 'overseasMeetingSituation:delete', '1', 1, 0, null, 1, 1, 0, 0, null, 'LKGLZ', '2024-06-19 16:27:46', null, null, 0, 0, '1', 0, 1), + ('1803343796841291778', '1803335479314161665', '编辑', '', null, null, null, 2, 'overseasMeetingSituation:edit', '1', 1, 0, null, 1, 1, 0, 0, null, 'LKGLZ', '2024-06-19 16:27:20', null, null, 0, 0, '1', 0, 1), + ('1803343698526806018', '1803335479314161665', '批量删除', '', null, null, null, 2, 'overseasMeetingSituation:batchDel', '1', 1, 0, null, 1, 1, 0, 0, null, 'LKGLZ', '2024-06-19 16:26:57', null, null, 0, 0, '1', 0, 1), + ('1803343493899296770', '1803335479314161665', '导出', '', null, null, null, 2, 'overseasMeetingSituation:export', '1', 1, 0, null, 1, 1, 0, 0, null, 'LKGLZ', '2024-06-19 16:26:08', null, null, 0, 0, '1', 0, 1), + ('1803343388232196098', '1803335479314161665', '添加参会人', '', null, null, null, 2, 'overseasMeetingSituation:add', '1', 1, 0, null, 1, 1, 0, 0, null, 'LKGLZ', '2024-06-19 16:25:43', null, null, 0, 0, '1', 0, 1), + ('1803343206362980353', '1803335479314161665', '查询', null, null, null, null, 2, 'overseasMeetingSituation:search', '1', 1, 0, null, 1, 1, 0, 0, null, 'LKGLZ', '2024-06-19 16:25:00', null, null, 0, 0, '1', 0, 1), + ('1803339101372489730', '1803308298231947266', '删除', '', null, null, null, 2, 'overseasMeeting:delete', '1', 1, 0, null, 1, 1, 0, 0, null, 'LKGLZ', '2024-06-19 16:08:41', null, null, 0, 0, '1', 0, 1), + ('1803338998020644865', '1803308298231947266', '编辑', null, null, null, null, 2, 'overseasMeeting:edit', '1', 1, 0, null, 1, 1, 0, 0, null, 'LKGLZ', '2024-06-19 16:08:16', null, null, 0, 0, '1', 0, 1), + ('1803338903925628930', '1803308298231947266', '上传文件', null, null, null, null, 2, 'overseasMeeting:upload', '1', 1, 0, null, 1, 1, 0, 0, null, 'LKGLZ', '2024-06-19 16:07:54', null, null, 0, 0, '1', 0, 1), + ('1803338833180303361', '1803308298231947266', '会议纪要', null, null, null, null, 2, 'overseasMeeting:uploadCouncil', '1', 1, 0, null, 1, 1, 0, 0, null, 'LKGLZ', '2024-06-19 16:07:37', null, null, 0, 0, '1', 0, 1), + ('1803338519882571778', '1803308298231947266', '批量删除', '', null, null, null, 2, 'overseasMeeting:batchDel', '1', 1, 0, null, 1, 1, 0, 0, null, 'LKGLZ', '2024-06-19 16:06:22', null, null, 0, 0, '1', 0, 1), + ('1803338277288222722', '1803308298231947266', '导出', '', null, null, null, 2, 'overseasMeeting:export', '1', 1, 0, null, 1, 1, 0, 0, null, 'LKGLZ', '2024-06-19 16:05:24', 'LKGLZ', '2024-06-19 16:05:41', 0, 0, '1', 0, 1), + ('1803338186548649985', '1803308298231947266', '新增', null, null, null, null, 2, 'overseasMeeting:add', '1', 1, 0, null, 1, 1, 0, 0, null, 'LKGLZ', '2024-06-19 16:05:03', null, null, 0, 0, '1', 0, 1), + ('1803338041375399938', '1803308298231947266', '查询', '', null, null, null, 2, 'overseasMeeting:search', '1', 1, 0, null, 1, 1, 0, 0, null, 'LKGLZ', '2024-06-19 16:04:28', null, null, 0, 0, '1', 0, 1), + ('1803335479314161665', '1430376424950026242', '海外会议参会情况', '/incomePayments/meetManage/AttendanceOverseasMeeting', 'incomePayments/meetManage/Attendance', null, null, 1, null, '1', 9, 0, null, 1, 0, 0, 1, null, 'LKGLZ', '2024-06-19 15:54:17', null, null, 0, 0, '1', 0, 1), + ('1803308298231947266', '', '海外会议', '/projectManagement/OverseasMeeting', 'projectManagement/OverseasMeeting', null, null, 0, null, '1', 5.1, 0, 'solution', 1, 0, 0, 0, null, 'LKGLZ', '2024-06-19 14:06:17', 'LKGLZ', '2024-06-19 14:11:52', 0, 0, '1', 0, 1); + +INSERT INTO sys_dict_item (id, dict_id, item_text, item_value, description, sort_order, status, create_by, create_time, update_by, update_time) VALUES ('1803307382065930242', '1432280766382727169', '海外会议', '8', '', 8.00, 1, 'LKGLZ', '2024-06-19 14:02:38', 'LKGLZ', '2024-06-25 10:40:29'); diff --git a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java index 7af7b777..74b96cd1 100644 --- a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java +++ b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java @@ -129,6 +129,7 @@ public class ShiroConfig { //不需要权限的接口 filterChainDefinitionMap.put("/meeting/payMeetingSituation/signUp","anon");//报名 + filterChainDefinitionMap.put("/meeting/overseasSituation/signUp","anon");//海外会议报名 filterChainDefinitionMap.put("/meeting/payMeetingSituation/validInvitationCode","anon");//报名 filterChainDefinitionMap.put("/meeting/payMeeting/queryById","anon");//会议详情 filterChainDefinitionMap.put("/sys/common/upload","anon");//上传文件 diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/common/MeetingCommon.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/common/MeetingCommon.java index bf37341b..47f05919 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/common/MeetingCommon.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/common/MeetingCommon.java @@ -64,6 +64,14 @@ public class MeetingCommon { * 起草组会议 */ public final static Integer DRAFTING_GROUP_MEETING_INT = 7; + /** + * 海外会议 + */ + public final static String OVERSEAS_MEETING = "8"; + /** + * 起草组会议 + */ + public final static Integer OVERSEAS_MEETING_INT = 8; /** * 标准宣贯 */ diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/OverseasMeetingController.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/OverseasMeetingController.java new file mode 100644 index 00000000..4ed61fc0 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/OverseasMeetingController.java @@ -0,0 +1,224 @@ +package com.jero.meeting.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jero.common.api.vo.Result; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.enums.CompanyMessageEnums; +import com.jero.common.system.api.ISysBaseAPI; +import com.jero.common.system.base.controller.JeroController; +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.company.service.IPayContactsManagementService; +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.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 io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +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.Arrays; +import java.util.List; +import java.util.Objects; + + +/** + * @description: 会议管理 + * @author: jero-boot + * @date: 2021-09-02 + * @version: V1.0 + */ +@Api(tags = "会议管理-海外会议") +@RestController +@RequestMapping("/meeting/overseas") +@Slf4j +public class OverseasMeetingController extends JeroController { + @Resource + private IPayMeetingService payMeetingService; + @Resource + private ISysBaseAPI sysBaseAPI; + @Resource + private IPayMeetingHotelContactsService meetingHotelContactsService; + @Resource + private IPayWorkingGroupService payWorkingGroupService; + + public static final String MEETING_TYPE = MeetingCommon.OVERSEAS_MEETING; + public static final Integer MEETING_TYPE_INT = MeetingCommon.OVERSEAS_MEETING_INT; + /** + * 分页列表查询 + */ + @RequiresPermissions("overseasMeeting:search") + @ApiOperation(value = "会议管理-分页列表查询", notes = "会议管理-分页列表查询") + @GetMapping(value = "/page") + public Result queryPageList(PayMeeting payMeeting, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + payMeeting.setMeetingType(MEETING_TYPE_INT); + + IPage pageList = payMeetingService.queryPageList(payMeeting, pageNo, pageSize, req); + + return Result.OK(pageList); + } + + /** + * 添加 + */ + @RequiresPermissions("overseasMeeting:add") + @AutoLog(value = "会议管理-添加") + @ApiOperation(value = "会议管理-添加", notes = "会议管理-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody PayMeetingVO payMeetingVO) { + String meetingType = payMeetingVO.getMeetingType(); + if (!Objects.equals(meetingType, MEETING_TYPE)) { + throw new RuntimeException(); + } + ValidUtil.validate(payMeetingVO); + payMeetingService.add(payMeetingVO); + return Result.OK("添加成功!"); + } + + private void extracted(String id) { + PayMeeting payMeeting = payMeetingService.getById(id); + Integer meetingType = payMeeting.getMeetingType(); + if (!Objects.equals(meetingType, MEETING_TYPE_INT)) { + throw new RuntimeException(); + } + } + + /** + * 编辑 + */ + @RequiresPermissions("overseasMeeting:edit") + @AutoLog(value = "会议管理-编辑") + @ApiOperation(value = "会议管理-编辑", notes = "会议管理-编辑") + @PostMapping(value = "/edit") + public Result edit(@RequestBody PayMeetingVO payMeetingVO) { + String id = payMeetingVO.getId(); + extracted(id); + ValidUtil.validate(payMeetingVO, UpdateGroup.class); + payMeetingService.editById(payMeetingVO); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + */ + @RequiresPermissions("overseasMeeting:delete") + @AutoLog(value = "会议管理-通过id删除") + @ApiOperation(value = "会议管理-通过id删除", notes = "会议管理-通过id删除") + @GetMapping(value = "/delete") + public Result delete(@RequestParam(name = "id") String id) { + extracted(id); + payMeetingService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + */ + @RequiresPermissions("overseasMeeting:batchDel") + @AutoLog(value = "会议管理-批量删除") + @ApiOperation(value = "会议管理-批量删除", notes = "会议管理-批量删除") + @GetMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids") String ids) { + List idList = Arrays.asList(ids.split(",")); + for (String id : idList) { + extracted(id); + } + this.payMeetingService.deleteByIds(idList); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + */ + @ApiOperation(value = "会议管理-通过id查询", notes = "会议管理-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id") String id) { + PayMeeting meeting = payMeetingService.queryById(id); + if (meeting == null || !Objects.equals(meeting.getMeetingType(), MEETING_TYPE_INT)) { + return Result.error("未找到对应数据"); + } + //查询会议负责人 + LoginUser user = sysBaseAPI.getUserById(meeting.getDirectorId()); + + meeting.setDirectorName(user.getRealname()); + meeting.setDirectorPhone(PasswordUtil.decrypt(user.getPhone())); + PayMeetingVO payMeetingVO = new PayMeetingVO(); + BeanUtils.copyProperties(meeting, payMeetingVO); + String meetingType = meeting.getMeetingType().toString(); + //String meetingType1 = sysBaseAPI.translateDict("meeting_type", meetingType); + payMeetingVO.setMeetingType(meetingType); + return Result.OK(payMeetingVO); + } + + /** + * 导出excel + */ + @RequiresPermissions("overseasMeeting:export") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, PayMeeting payMeeting) { + payMeeting.setMeetingType(MEETING_TYPE_INT); + IPage queryPageList = payMeetingService.queryPageList(payMeeting, -1, -1, request); + + List exportList = payMeetingService.getExportList(request, queryPageList); + Class aClass = payMeetingService.getaClass(MEETING_TYPE_INT); + return super.exportListXls(exportList, aClass, "会议管理"); + } + + /** + * 上传资料 + */ + @AutoLog(value = "上传资料") + @RequiresPermissions("overseasMeeting:upload") + @ApiOperation(value = "上传资料", notes = "上传资料") + @PostMapping(value = "/uploadFile") + public Result uploadFile(@RequestBody UploadFileVO uploadFileVO) { + List strings = payMeetingService.uploadFileSendMsg(uploadFileVO, MEETING_TYPE_INT, false); + return Result.OK("上传资料成功!",strings); + } + + /** + * 上传会议纪要 + */ + @AutoLog(value = "上传会议纪要") + @RequiresPermissions("overseasMeeting:uploadCouncil") + @ApiOperation(value = "上传会议纪要", notes = "上传会议纪要") + @PostMapping(value = "/uploadCouncilFile") + public Result uploadCouncilFile(@RequestBody UploadFileVO uploadFileVO) { + payMeetingService.uploadFile(uploadFileVO, MEETING_TYPE_INT); + return Result.OK("上传资料成功!"); + } + + /** + * 发布提醒 + */ + @AutoLog("发布提醒") + @RequiresPermissions("overseasMeeting:publish") + @ApiOperation(value = "发布提醒", notes = "发布提醒") + @PostMapping(value = "/publishReminder") + public Result publishReminder(@RequestBody PublishReminderVO publishReminderVO) { + List strings = payMeetingService.publishReminder(publishReminderVO, CompanyMessageEnums.MSG1, "C_OPEN_TYPE1"); + return Result.OK("发布成功",strings); + } + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/OverseasMeetingSituationController.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/OverseasMeetingSituationController.java new file mode 100644 index 00000000..afad0504 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/OverseasMeetingSituationController.java @@ -0,0 +1,168 @@ +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.aspect.annotation.CompanyNameTranslate; +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.oConvertUtils; +import com.jero.meeting.common.MeetingCommon; +import com.jero.meeting.entity.MeetingOverseasSituation; +import com.jero.meeting.service.IPayMeetingSituationService; +import com.jero.meeting.service.MeetingOverseasSituationService; +import com.jero.member.entity.TbMemberProjectSubitem; +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.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +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/overseasSituation") +@Slf4j +public class OverseasMeetingSituationController extends JeroController { + @Resource + private MeetingOverseasSituationService overseasSituationService; + @Resource + private IPayMeetingSituationService payMeetingSituationService; + private final Integer MEETING_TYPE = MeetingCommon.OVERSEAS_MEETING_INT; + /** + * 分页列表查询 + */ + @RequiresPermissions("overseasMeetingSituation:search") + @ApiOperation(value = "参会人员信息-分页列表查询", notes = "参会人员信息-分页列表查询") + @GetMapping(value = "/page") + public Result queryPageList(MeetingOverseasSituation payMeetingSituation, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + String meetingId = payMeetingSituation.getMeetingId(); + if (StringUtils.isBlank(meetingId)) { + throw new JeroBootException("会议id不能为空"); + } + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, req.getParameterMap()); + Page page = new Page<>(pageNo, pageSize); + IPage pageList = overseasSituationService.page(page, queryWrapper); + + return Result.OK(pageList); + } + + /** + * 添加参会人 + */ + @RequiresPermissions("overseasMeetingSituation:add") + @AutoLog(value = "参会人员信息-添加参会人") + @ApiOperation(value = "参会人员信息-添加参会人", notes = "参会人员信息-添加参会人") + @PostMapping(value = "/add") + public Result add(@RequestBody MeetingOverseasSituation payMeetingSituation) { + overseasSituationService.add(payMeetingSituation, MEETING_TYPE); + return Result.OK("添加成功!"); + } + /** + * 报名 + */ + @ApiOperation(value = "参会人员信息-报名", notes = "参会人员信息-报名") + @PostMapping(value = "/signUp") + public Result signUp(@RequestBody MeetingOverseasSituation payMeetingSituation) { + overseasSituationService.add(payMeetingSituation, MEETING_TYPE); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + */ + @AutoLog(value = "参会人员信息-编辑") + @RequiresPermissions("overseasMeetingSituation:edit") + @ApiOperation(value = "参会人员信息-编辑", notes = "参会人员信息-编辑") + @PostMapping(value = "/edit") + public Result edit(@RequestBody MeetingOverseasSituation payMeetingSituation) { + overseasSituationService.editById(payMeetingSituation, MEETING_TYPE); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + */ + @RequiresPermissions("overseasMeetingSituation:delete") + @AutoLog(value = "参会人员信息-通过id删除") + @ApiOperation(value = "参会人员信息-通过id删除", notes = "参会人员信息-通过id删除") + @GetMapping(value = "/delete") + public Result delete(@RequestParam(name = "id") String id) { + overseasSituationService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + */ + @RequiresPermissions("overseasMeetingSituation:batchDel") + @AutoLog(value = "参会人员信息-批量删除") + @ApiOperation(value = "参会人员信息-批量删除", notes = "参会人员信息-批量删除") + @GetMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids") String ids) { + this.overseasSituationService.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) { + MeetingOverseasSituation payMeetingSituation = overseasSituationService.getById(id); + if (payMeetingSituation == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(payMeetingSituation); + } + + /** + * 导出excel + */ + @RequiresPermissions("overseasMeetingSituation:export") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, MeetingOverseasSituation payMeetingSituation) { + String meetingId = payMeetingSituation.getMeetingId(); + if (StringUtils.isBlank(meetingId)) { + throw new JeroBootException("会议id不能为空"); + } + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMeetingSituation, request.getParameterMap()); + List pageList = overseasSituationService.list(queryWrapper); + List exportList; + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + exportList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + } else { + exportList = pageList; + } + return super.exportListXls(exportList, MeetingOverseasSituation.class, "参会人员信息"); + } + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/entity/MeetingOverseasSituation.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/entity/MeetingOverseasSituation.java new file mode 100644 index 00000000..a5db50e1 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/entity/MeetingOverseasSituation.java @@ -0,0 +1,201 @@ +package com.jero.meeting.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.jero.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 海外会议报名表 + * + * @author liJiaRao + * @date 2024-06-24 11:20 + */ +@ApiModel(description = "海外会议报名表") +@Data +@TableName(value = "pay_meeting_overseas_situation") +public class MeetingOverseasSituation { + /** + * id + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private String id; + + /** + * 创建人 + */ + @TableField(value = "create_by") + @ApiModelProperty(value = "创建人") + private String createBy; + + /** + * 创建日期 + */ + @TableField(value = "create_time") + @ApiModelProperty(value = "创建日期") + private Date createTime; + + /** + * 更新人 + */ + @TableField(value = "update_by") + @ApiModelProperty(value = "更新人") + private String updateBy; + + /** + * 更新日期 + */ + @TableField(value = "update_time") + @ApiModelProperty(value = "更新日期") + private Date updateTime; + + /** + * 会议id + */ + @TableField(value = "meeting_id") + @ApiModelProperty(value = "会议id") + private String meetingId; + + /** + * 照片 + */ + @TableField(value = "photo") + @ApiModelProperty(value = "照片") + private String photo; + + /** + * 姓名 + */ + @TableField(value = "`name`") + @ApiModelProperty(value = "姓名") + @Excel(name = "姓名", width = 15) + private String name; + + /** + * 职务 + */ + @TableField(value = "post") + @ApiModelProperty(value = "职务") + @Excel(name = "职务", width = 15) + private String post; + + /** + * 单位 + */ + @TableField(value = "unit") + @ApiModelProperty(value = "单位") + @Excel(name = "单位", width = 15) + private String unit; + + /** + * 国籍 + */ + @TableField(value = "nationality") + @ApiModelProperty(value = "国籍") + @Excel(name = "国籍", width = 15) + private String nationality; + + /** + * 地址 + */ + @TableField(value = "address") + @ApiModelProperty(value = "地址") + @Excel(name = "地址", width = 15) + private String address; + + /** + * 邮箱 + */ + @TableField(value = "email") + @ApiModelProperty(value = "邮箱") + @Excel(name = "邮箱", width = 15) + private String email; + + /** + * 联系电话 + */ + @TableField(value = "phone") + @ApiModelProperty(value = "联系电话") + @Excel(name = "联系电话", width = 15) + private String phone; + + /** + * 是否需要签证 + */ + @Dict(dicCode = "yn") + @TableField(value = "need_visa") + @ApiModelProperty(value = "是否需要签证") + @Excel(name = "是否需要签证", width = 15, dicCode = "yn") + private Integer needVisa; + + /** + * 外文姓名 + */ + @TableField(value = "foreign_name") + @ApiModelProperty(value = "外文姓名") + private String foreignName; + + /** + * 性别 + */ + @TableField(value = "sex") + @ApiModelProperty(value = "性别") + @Excel(name = "性别", width = 15) + private String sex; + + /** + * 出生日期 + */ + @TableField(value = "birthday") + @ApiModelProperty(value = "出生日期") + @Excel(name = "出生日期", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date birthday; + + /** + * 护照号码 + */ + @TableField(value = "passport_no") + @ApiModelProperty(value = "护照号码") + @Excel(name = "护照号码", width = 15) + private String passportNo; + + /** + * 入境日期 + */ + @TableField(value = "entry_date") + @ApiModelProperty(value = "入境日期") + @Excel(name = "入境日期", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date entryDate; + + /** + * 出境日期 + */ + @TableField(value = "exit_date") + @ApiModelProperty(value = "出境日期") + @Excel(name = "出境日期", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date exitDate; + + /** + * 办理签证使领馆 + */ + @TableField(value = "embassies_and_consulates") + @ApiModelProperty(value = "办理签证使领馆") + @Excel(name = "办理签证使领馆", width = 15) + private String embassiesAndConsulates; +} \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/MeetingOverseasSituationMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/MeetingOverseasSituationMapper.java new file mode 100644 index 00000000..a5fa9573 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/MeetingOverseasSituationMapper.java @@ -0,0 +1,12 @@ +package com.jero.meeting.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.meeting.entity.MeetingOverseasSituation; + +/** + * + *@author liJiaRao + *@date 2024-06-24 11:20 + */ +public interface MeetingOverseasSituationMapper extends BaseMapper { +} \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/xml/MeetingOverseasSituationMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/xml/MeetingOverseasSituationMapper.xml new file mode 100644 index 00000000..c662af4d --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/xml/MeetingOverseasSituationMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, create_by, create_time, update_by, update_time, meeting_id, photo, `name`, unit, + nationality, address, email, phone, need_visa, foreign_name, sex, birthday, passport_no, + entry_date, exit_date, embassies_and_consulates + + \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/MeetingOverseasSituationService.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/MeetingOverseasSituationService.java new file mode 100644 index 00000000..d03ba0f4 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/MeetingOverseasSituationService.java @@ -0,0 +1,34 @@ +package com.jero.meeting.service; + +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; +import java.util.List; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.meeting.entity.MeetingOverseasSituation; +import com.jero.meeting.mapper.MeetingOverseasSituationMapper; +/** + * + *@author liJiaRao + *@date 2024-06-24 11:20 + */ +@Service +public class MeetingOverseasSituationService extends ServiceImpl { + + public void add(MeetingOverseasSituation payMeetingSituation, Integer meeting_type) { + save(payMeetingSituation); + } + + public void editById(MeetingOverseasSituation payMeetingSituation, Integer meeting_type) { + updateById(payMeetingSituation); + } + + public void deleteById(String id) { + removeById(id); + } + + public void deleteByIds(List idList) { + for (String id : idList) { + deleteById(id); + } + } +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingServiceImpl.java index 7dfa7189..10695eac 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingServiceImpl.java @@ -1043,6 +1043,8 @@ public class PayMeetingServiceImpl extends ServiceImpl hotelContactsList; + /** + * 会议联系人列表 + */ + @ExcelCollection(name = "会议联系人列表") + private List meetingContactsList; + + /**备注*/ + @Excel(name = "备注", width = 15) + private String remark; + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/statistics/controller/AllProjectStatisticsController.java b/jero-boot-incoming-payment/src/main/java/com/jero/statistics/controller/AllProjectStatisticsController.java index 94d4fdf3..15be2801 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/statistics/controller/AllProjectStatisticsController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/statistics/controller/AllProjectStatisticsController.java @@ -1,5 +1,6 @@ package com.jero.statistics.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; @@ -131,7 +132,7 @@ public class AllProjectStatisticsController { //获取本部门及其所有下部部门所有成员(不包含最开始的部门下级成员) List allDepartIds = sysBaseAPI.getAllUserIdsByDepart(sysUser.getDepartIds(), idList); //获取本部门成员 - idList.addAll((userMapper.selectList(new QueryWrapper().eq("status", 1).eq("del_flag", 0).eq("org_code", sysUser.getOrgCode()))).stream().map(SysUser::getId).collect(Collectors.toList())); + idList.addAll((userMapper.selectList(new LambdaQueryWrapper().eq(SysUser::getStatus, 1).eq(SysUser::getDelFlag, 0).eq(SysUser::getDepartIds, sysUser.getDepartIds()))).stream().map(SysUser::getId).collect(Collectors.toList())); idList.addAll(allDepartIds);//项目负责人 } else { @@ -231,7 +232,7 @@ public class AllProjectStatisticsController { //获取本部门及其所有下部部门所有成员(不包含最开始的部门下级成员) List allDepartIds = sysBaseAPI.getAllUserIdsByDepart(sysUser.getDepartIds(), idList); //获取本部门成员 - idList.addAll((userMapper.selectList(new QueryWrapper().eq("status", 1).eq("del_flag", 0).eq("org_code", sysUser.getOrgCode()))).stream().map(SysUser::getId).collect(Collectors.toList())); + idList.addAll((userMapper.selectList(new LambdaQueryWrapper().eq(SysUser::getStatus, 1).eq(SysUser::getDelFlag, 0).eq(SysUser::getDepartIds, sysUser.getDepartIds()))).stream().map(SysUser::getId).collect(Collectors.toList())); idList.addAll(allDepartIds); } else { diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/statistics/controller/PrincipalPeopleStatisticsController.java b/jero-boot-incoming-payment/src/main/java/com/jero/statistics/controller/PrincipalPeopleStatisticsController.java index de8b1af8..9f9d333a 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/statistics/controller/PrincipalPeopleStatisticsController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/statistics/controller/PrincipalPeopleStatisticsController.java @@ -1,5 +1,6 @@ package com.jero.statistics.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -80,7 +81,7 @@ public class PrincipalPeopleStatisticsController { //获取本部门及其所有下部部门所有成员(不包含最开始的部门下级成员) List allDepartIds = sysBaseAPI.getAllUserIdsByDepart(sysUser.getDepartIds(), idList); //获取本部门成员 - idList.addAll((userMapper.selectList(new QueryWrapper().eq("status", 1).eq("del_flag", 0).eq("org_code", sysUser.getOrgCode()))).stream().map(SysUser::getId).collect(Collectors.toList())); + idList.addAll((userMapper.selectList(new LambdaQueryWrapper().eq(SysUser::getStatus, 1).eq(SysUser::getDelFlag, 0).eq(SysUser::getDepartIds, sysUser.getDepartIds()))).stream().map(SysUser::getId).collect(Collectors.toList())); idList.addAll(allDepartIds); //项目负责人 @@ -185,7 +186,7 @@ public class PrincipalPeopleStatisticsController { //获取本部门及其所有下部部门所有成员(不包含最开始的部门下级成员) List allDepartIds = sysBaseAPI.getAllUserIdsByDepart(sysUser.getDepartIds(), idList); //获取本部门成员 - idList.addAll((userMapper.selectList(new QueryWrapper().eq("status", 1).eq("del_flag", 0).eq("org_code", sysUser.getOrgCode()))).stream().map(SysUser::getId).collect(Collectors.toList())); + idList.addAll((userMapper.selectList(new LambdaQueryWrapper().eq(SysUser::getStatus, 1).eq(SysUser::getDelFlag, 0).eq(SysUser::getDepartIds, sysUser.getDepartIds()))).stream().map(SysUser::getId).collect(Collectors.toList())); idList.addAll(allDepartIds); //项目负责人 diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysBaseApiImpl.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysBaseApiImpl.java index fadded05..699c700a 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysBaseApiImpl.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysBaseApiImpl.java @@ -1121,7 +1121,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { List sysDepartTreeModels =listSonDepartsByDepId(departId); if(!(sysDepartTreeModels.size()==0)) { for (SysDepartTreeModel s : sysDepartTreeModels) { - idList.addAll((userMapper.selectList(new QueryWrapper().eq("status", 1).eq("del_flag", 0).eq("org_code", s.getOrgCode()))).stream().map(SysUser::getId).collect(Collectors.toList())); + idList.addAll((userMapper.selectList(new LambdaQueryWrapper().eq(SysUser::getStatus, 1).eq(SysUser::getDelFlag, 0).eq(SysUser::getDepartIds, s.getId()))).stream().map(SysUser::getId).collect(Collectors.toList())); getAllUserIdsByDepart(s.getId(),idList); } return idList;