diff --git a/vetti-hotakes/src/main/java/com/vetti/hotake/domain/HotakeMeetingCalendarDetail.java b/vetti-hotakes/src/main/java/com/vetti/hotake/domain/HotakeMeetingCalendarDetail.java index 76931dc..3acc352 100644 --- a/vetti-hotakes/src/main/java/com/vetti/hotake/domain/HotakeMeetingCalendarDetail.java +++ b/vetti-hotakes/src/main/java/com/vetti/hotake/domain/HotakeMeetingCalendarDetail.java @@ -1,5 +1,6 @@ package com.vetti.hotake.domain; +import com.vetti.common.core.domain.entity.SysUser; import lombok.Data; import lombok.experimental.Accessors; import io.swagger.annotations.ApiModelProperty; @@ -32,5 +33,8 @@ public class HotakeMeetingCalendarDetail extends BaseEntity @Excel(name = "参会人员ID") private Long userId; + @ApiModelProperty("参会人员详细信息") + private SysUser user; + } diff --git a/vetti-hotakes/src/main/java/com/vetti/hotake/domain/HotakeMeetingCalendarInfo.java b/vetti-hotakes/src/main/java/com/vetti/hotake/domain/HotakeMeetingCalendarInfo.java index a4378a0..b2f4c59 100644 --- a/vetti-hotakes/src/main/java/com/vetti/hotake/domain/HotakeMeetingCalendarInfo.java +++ b/vetti-hotakes/src/main/java/com/vetti/hotake/domain/HotakeMeetingCalendarInfo.java @@ -1,11 +1,14 @@ package com.vetti.hotake.domain; +import com.vetti.common.core.domain.entity.SysUser; import lombok.Data; import lombok.experimental.Accessors; import io.swagger.annotations.ApiModelProperty; import com.vetti.common.annotation.Excel; import com.vetti.common.core.domain.BaseEntity; +import java.util.List; + /** * 会议日历记录主对象 hotake_meeting_calendar_info * @@ -38,7 +41,7 @@ public class HotakeMeetingCalendarInfo extends BaseEntity private String meetingName; /** 会议日期 */ - @ApiModelProperty("会议日期") + @ApiModelProperty("会议日期(年月日)") @Excel(name = "会议日期") private String meetingDate; @@ -52,5 +55,8 @@ public class HotakeMeetingCalendarInfo extends BaseEntity @Excel(name = "状态", readConverterExp = "0=,取=消,1,正=常") private String status; + @ApiModelProperty("参会人员") + private List calendarDetails; + } diff --git a/vetti-hotakes/src/main/java/com/vetti/hotake/mapper/HotakeMeetingCalendarDetailMapper.java b/vetti-hotakes/src/main/java/com/vetti/hotake/mapper/HotakeMeetingCalendarDetailMapper.java index 881cbf9..f5737b4 100644 --- a/vetti-hotakes/src/main/java/com/vetti/hotake/mapper/HotakeMeetingCalendarDetailMapper.java +++ b/vetti-hotakes/src/main/java/com/vetti/hotake/mapper/HotakeMeetingCalendarDetailMapper.java @@ -66,4 +66,10 @@ public interface HotakeMeetingCalendarDetailMapper */ public int batchInsertHotakeMeetingCalendarDetail(List hotakeMeetingCalendarDetailList); + /** + * 删除参会人员数据 + * @param infoId + * @return + */ + public int deleteHotakeMeetingCalendarDetailByInfoId(Long infoId); } diff --git a/vetti-hotakes/src/main/java/com/vetti/hotake/service/IHotakeMeetingCalendarDetailService.java b/vetti-hotakes/src/main/java/com/vetti/hotake/service/IHotakeMeetingCalendarDetailService.java index 6040bd4..a5bd777 100644 --- a/vetti-hotakes/src/main/java/com/vetti/hotake/service/IHotakeMeetingCalendarDetailService.java +++ b/vetti-hotakes/src/main/java/com/vetti/hotake/service/IHotakeMeetingCalendarDetailService.java @@ -67,4 +67,12 @@ public interface IHotakeMeetingCalendarDetailService */ public int batchInsertHotakeMeetingCalendarDetail(List hotakeMeetingCalendarDetailList); + /** + * 删除会议日历记录明细信息 + * + * @param infoId 会议日历记录主键 + * @return 结果 + */ + public int deleteHotakeMeetingCalendarDetailByInfoId(Long infoId); + } diff --git a/vetti-hotakes/src/main/java/com/vetti/hotake/service/impl/HotakeMeetingCalendarDetailServiceImpl.java b/vetti-hotakes/src/main/java/com/vetti/hotake/service/impl/HotakeMeetingCalendarDetailServiceImpl.java index 58e07f0..9406425 100644 --- a/vetti-hotakes/src/main/java/com/vetti/hotake/service/impl/HotakeMeetingCalendarDetailServiceImpl.java +++ b/vetti-hotakes/src/main/java/com/vetti/hotake/service/impl/HotakeMeetingCalendarDetailServiceImpl.java @@ -117,4 +117,14 @@ public class HotakeMeetingCalendarDetailServiceImpl extends BaseServiceImpl impl public int batchInsertHotakeMeetingCalendarDetail(List hotakeMeetingCalendarDetailList){ return hotakeMeetingCalendarDetailMapper.batchInsertHotakeMeetingCalendarDetail(hotakeMeetingCalendarDetailList); } + + /** + * 删除参会人员信息 + * @param infoId 会议日历记录主键 + * @return + */ + @Override + public int deleteHotakeMeetingCalendarDetailByInfoId(Long infoId) { + return hotakeMeetingCalendarDetailMapper.deleteHotakeMeetingCalendarDetailByInfoId(infoId); + } } diff --git a/vetti-hotakes/src/main/java/com/vetti/hotake/service/impl/HotakeMeetingCalendarInfoServiceImpl.java b/vetti-hotakes/src/main/java/com/vetti/hotake/service/impl/HotakeMeetingCalendarInfoServiceImpl.java index 4b12d50..c6b459d 100644 --- a/vetti-hotakes/src/main/java/com/vetti/hotake/service/impl/HotakeMeetingCalendarInfoServiceImpl.java +++ b/vetti-hotakes/src/main/java/com/vetti/hotake/service/impl/HotakeMeetingCalendarInfoServiceImpl.java @@ -1,9 +1,16 @@ package com.vetti.hotake.service.impl; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import cn.hutool.core.collection.CollectionUtil; +import com.vetti.common.core.domain.entity.SysUser; import com.vetti.common.core.service.BaseServiceImpl; import com.vetti.common.enums.FillTypeEnum; +import com.vetti.hotake.domain.HotakeMeetingCalendarDetail; +import com.vetti.hotake.service.IHotakeMeetingCalendarDetailService; +import com.vetti.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -14,107 +21,165 @@ import com.vetti.hotake.service.IHotakeMeetingCalendarInfoService; /** * 会议日历记录主Service业务层处理 - * + * * @author wangxiangshun * @date 2025-11-09 */ @SuppressWarnings("all") @Service -public class HotakeMeetingCalendarInfoServiceImpl extends BaseServiceImpl implements IHotakeMeetingCalendarInfoService -{ +public class HotakeMeetingCalendarInfoServiceImpl extends BaseServiceImpl implements IHotakeMeetingCalendarInfoService { @Autowired private HotakeMeetingCalendarInfoMapper hotakeMeetingCalendarInfoMapper; + @Autowired + private IHotakeMeetingCalendarDetailService calendarDetailService; + + @Autowired + private ISysUserService userService; + /** * 查询会议日历记录主 - * + * * @param id 会议日历记录主主键 * @return 会议日历记录主 */ @Transactional(readOnly = true) @Override - public HotakeMeetingCalendarInfo selectHotakeMeetingCalendarInfoById(Long id) - { - return hotakeMeetingCalendarInfoMapper.selectHotakeMeetingCalendarInfoById(id); + public HotakeMeetingCalendarInfo selectHotakeMeetingCalendarInfoById(Long id) { + HotakeMeetingCalendarInfo calendarInfo = hotakeMeetingCalendarInfoMapper.selectHotakeMeetingCalendarInfoById(id); + //获取对应的参会人员数据 + HotakeMeetingCalendarDetail queryDetail = new HotakeMeetingCalendarDetail(); + List detailList = calendarDetailService.selectHotakeMeetingCalendarDetailList(queryDetail); + if (CollectionUtil.isNotEmpty(detailList)) { + Map> mapDetailList = detailList.stream().collect(Collectors.groupingBy(HotakeMeetingCalendarDetail::getMeetingId)); + SysUser queryUser = new SysUser(); + List userList = userService.selectUserList(queryUser); + List calendarDetails = mapDetailList.get(calendarInfo.getId()); + for (HotakeMeetingCalendarDetail detail : calendarDetails) { + List users = userList.stream().filter(e -> e.getUserId() == detail.getUserId()).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(users)) { + detail.setUser(users.get(0)); + } + } + calendarInfo.setCalendarDetails(calendarDetails); + } + return calendarInfo; } /** * 查询会议日历记录主列表 - * + * * @param hotakeMeetingCalendarInfo 会议日历记录主 * @return 会议日历记录主 */ @Transactional(readOnly = true) @Override - public List selectHotakeMeetingCalendarInfoList(HotakeMeetingCalendarInfo hotakeMeetingCalendarInfo) - { - return hotakeMeetingCalendarInfoMapper.selectHotakeMeetingCalendarInfoList(hotakeMeetingCalendarInfo); + public List selectHotakeMeetingCalendarInfoList(HotakeMeetingCalendarInfo hotakeMeetingCalendarInfo) { + List calendarInfos = hotakeMeetingCalendarInfoMapper.selectHotakeMeetingCalendarInfoList(hotakeMeetingCalendarInfo); + if (CollectionUtil.isNotEmpty(calendarInfos)) { + //获取对应的参会人员数据 + HotakeMeetingCalendarDetail queryDetail = new HotakeMeetingCalendarDetail(); + List detailList = calendarDetailService.selectHotakeMeetingCalendarDetailList(queryDetail); + if (CollectionUtil.isNotEmpty(detailList)) { + Map> mapDetailList = detailList.stream().collect(Collectors.groupingBy(HotakeMeetingCalendarDetail::getMeetingId)); + SysUser queryUser = new SysUser(); + List userList = userService.selectUserList(queryUser); + for (HotakeMeetingCalendarInfo calendarInfo : calendarInfos) { + List calendarDetails = mapDetailList.get(calendarInfo.getId()); + for (HotakeMeetingCalendarDetail detail : calendarDetails) { + List users = userList.stream().filter(e -> e.getUserId() == detail.getUserId()).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(users)) { + detail.setUser(users.get(0)); + } + } + calendarInfo.setCalendarDetails(calendarDetails); + } + } + } + return calendarInfos; } /** * 新增会议日历记录主 - * + * * @param hotakeMeetingCalendarInfo 会议日历记录主 * @return 结果 */ - @Transactional(rollbackFor=Exception.class) + @Transactional(rollbackFor = Exception.class) @Override - public HotakeMeetingCalendarInfo insertHotakeMeetingCalendarInfo(HotakeMeetingCalendarInfo hotakeMeetingCalendarInfo) - { + public HotakeMeetingCalendarInfo insertHotakeMeetingCalendarInfo(HotakeMeetingCalendarInfo hotakeMeetingCalendarInfo) { fill(FillTypeEnum.INSERT.getCode(), hotakeMeetingCalendarInfo); hotakeMeetingCalendarInfoMapper.insertHotakeMeetingCalendarInfo(hotakeMeetingCalendarInfo); + + //保存参会人员 + //1.1 先删除对应的参会人员 + calendarDetailService.deleteHotakeMeetingCalendarDetailByInfoId(hotakeMeetingCalendarInfo.getId()); + //1.2 保存参会人员数据 + for (HotakeMeetingCalendarDetail detail : hotakeMeetingCalendarInfo.getCalendarDetails()) { + detail.setMeetingId(hotakeMeetingCalendarInfo.getId()); + fill(FillTypeEnum.INSERT.getCode(), detail); + } + calendarDetailService.batchInsertHotakeMeetingCalendarDetail(hotakeMeetingCalendarInfo.getCalendarDetails()); + return hotakeMeetingCalendarInfo; } /** * 修改会议日历记录主 - * + * * @param hotakeMeetingCalendarInfo 会议日历记录主 * @return 结果 */ - @Transactional(rollbackFor=Exception.class) + @Transactional(rollbackFor = Exception.class) @Override - public HotakeMeetingCalendarInfo updateHotakeMeetingCalendarInfo(HotakeMeetingCalendarInfo hotakeMeetingCalendarInfo) - { + public HotakeMeetingCalendarInfo updateHotakeMeetingCalendarInfo(HotakeMeetingCalendarInfo hotakeMeetingCalendarInfo) { fill(FillTypeEnum.UPDATE.getCode(), hotakeMeetingCalendarInfo); hotakeMeetingCalendarInfoMapper.updateHotakeMeetingCalendarInfo(hotakeMeetingCalendarInfo); + //保存参会人员 + //1.1 先删除对应的参会人员 + calendarDetailService.deleteHotakeMeetingCalendarDetailByInfoId(hotakeMeetingCalendarInfo.getId()); + //1.2 保存参会人员数据 + for (HotakeMeetingCalendarDetail detail : hotakeMeetingCalendarInfo.getCalendarDetails()) { + detail.setMeetingId(hotakeMeetingCalendarInfo.getId()); + fill(FillTypeEnum.INSERT.getCode(), detail); + } + calendarDetailService.batchInsertHotakeMeetingCalendarDetail(hotakeMeetingCalendarInfo.getCalendarDetails()); return hotakeMeetingCalendarInfo; } /** * 批量删除会议日历记录主 - * + * * @param ids 需要删除的会议日历记录主主键 * @return 结果 */ - @Transactional(rollbackFor=Exception.class) + @Transactional(rollbackFor = Exception.class) @Override - public int deleteHotakeMeetingCalendarInfoByIds(Long[] ids) - { + public int deleteHotakeMeetingCalendarInfoByIds(Long[] ids) { return hotakeMeetingCalendarInfoMapper.deleteHotakeMeetingCalendarInfoByIds(ids); } /** * 删除会议日历记录主信息 - * + * * @param id 会议日历记录主主键 * @return 结果 */ - @Transactional(rollbackFor=Exception.class) + @Transactional(rollbackFor = Exception.class) @Override - public int deleteHotakeMeetingCalendarInfoById(Long id) - { + public int deleteHotakeMeetingCalendarInfoById(Long id) { return hotakeMeetingCalendarInfoMapper.deleteHotakeMeetingCalendarInfoById(id); } + /** * 批量新增会议日历记录主 * * @param hotakeMeetingCalendarInfoList 会议日历记录主列表 * @return 结果 */ - @Transactional(rollbackFor=Exception.class) + @Transactional(rollbackFor = Exception.class) @Override - public int batchInsertHotakeMeetingCalendarInfo(List hotakeMeetingCalendarInfoList){ + public int batchInsertHotakeMeetingCalendarInfo(List hotakeMeetingCalendarInfoList) { return hotakeMeetingCalendarInfoMapper.batchInsertHotakeMeetingCalendarInfo(hotakeMeetingCalendarInfoList); } } diff --git a/vetti-hotakes/src/main/resources/mapper/hotake/HotakeInterviewDetailMapper.xml b/vetti-hotakes/src/main/resources/mapper/hotake/HotakeInterviewDetailMapper.xml new file mode 100644 index 0000000..8a47f7d --- /dev/null +++ b/vetti-hotakes/src/main/resources/mapper/hotake/HotakeInterviewDetailMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + select id, interview_id, interviewer_name, content, del_flag, create_by, create_time, update_by, update_time, remark from hotake_interview_detail + + + + + + + + insert into hotake_interview_detail + + interview_id, + interviewer_name, + content, + del_flag, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{interviewId}, + #{interviewerName}, + #{content}, + #{delFlag}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + + + + + update hotake_interview_detail + + interview_id = #{interviewId}, + interviewer_name = #{interviewerName}, + content = #{content}, + del_flag = #{delFlag}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where id = #{id} + + + + delete from hotake_interview_detail where id = #{id} + + + + delete from hotake_interview_detail where id in + + #{id} + + + + + insert into hotake_interview_detail( id, interview_id, interviewer_name, content, del_flag, create_by, create_time, update_by, update_time, remark) values + + ( #{item.id}, #{item.interviewId}, #{item.interviewerName}, #{item.content}, #{item.delFlag}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark}) + + + \ No newline at end of file diff --git a/vetti-hotakes/src/main/resources/mapper/hotake/HotakeInterviewInfoMapper.xml b/vetti-hotakes/src/main/resources/mapper/hotake/HotakeInterviewInfoMapper.xml new file mode 100644 index 0000000..e748df8 --- /dev/null +++ b/vetti-hotakes/src/main/resources/mapper/hotake/HotakeInterviewInfoMapper.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + select id, user_id, inter_name, del_flag, create_by, create_time, update_by, update_time, remark from hotake_interview_info + + + + + + + + insert into hotake_interview_info + + user_id, + inter_name, + del_flag, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{userId}, + #{interName}, + #{delFlag}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + + + + + update hotake_interview_info + + user_id = #{userId}, + inter_name = #{interName}, + del_flag = #{delFlag}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where id = #{id} + + + + delete from hotake_interview_info where id = #{id} + + + + delete from hotake_interview_info where id in + + #{id} + + + + + insert into hotake_interview_info( id, user_id, inter_name, del_flag, create_by, create_time, update_by, update_time, remark) values + + ( #{item.id}, #{item.userId}, #{item.interName}, #{item.delFlag}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark}) + + + \ No newline at end of file diff --git a/vetti-hotakes/src/main/resources/mapper/hotake/HotakeMeetingCalendarDetailMapper.xml b/vetti-hotakes/src/main/resources/mapper/hotake/HotakeMeetingCalendarDetailMapper.xml new file mode 100644 index 0000000..5bf4550 --- /dev/null +++ b/vetti-hotakes/src/main/resources/mapper/hotake/HotakeMeetingCalendarDetailMapper.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + select id, meeting_id, user_id, del_flag, create_by, create_time, update_by, update_time, remark from hotake_meeting_calendar_detail + + + + + + + + insert into hotake_meeting_calendar_detail + + meeting_id, + user_id, + del_flag, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{meetingId}, + #{userId}, + #{delFlag}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + + + + + update hotake_meeting_calendar_detail + + meeting_id = #{meetingId}, + user_id = #{userId}, + del_flag = #{delFlag}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where id = #{id} + + + + delete from hotake_meeting_calendar_detail where id = #{id} + + + + delete from hotake_meeting_calendar_detail where meeting_id = #{infoId} + + + + delete from hotake_meeting_calendar_detail where id in + + #{id} + + + + + insert into hotake_meeting_calendar_detail( id, meeting_id, user_id, del_flag, create_by, create_time, update_by, update_time, remark) values + + ( #{item.id}, #{item.meetingId}, #{item.userId}, #{item.delFlag}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark}) + + + \ No newline at end of file diff --git a/vetti-hotakes/src/main/resources/mapper/hotake/HotakeMeetingCalendarInfoMapper.xml b/vetti-hotakes/src/main/resources/mapper/hotake/HotakeMeetingCalendarInfoMapper.xml new file mode 100644 index 0000000..5c58b0f --- /dev/null +++ b/vetti-hotakes/src/main/resources/mapper/hotake/HotakeMeetingCalendarInfoMapper.xml @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + select id, user_id, comp_name, meeting_name, meeting_date, times, status, del_flag, create_by, create_time, update_by, update_time, remark from hotake_meeting_calendar_info + + + + + + + + insert into hotake_meeting_calendar_info + + user_id, + comp_name, + meeting_name, + meeting_date, + times, + status, + del_flag, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{userId}, + #{compName}, + #{meetingName}, + #{meetingDate}, + #{times}, + #{status}, + #{delFlag}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + + + + + update hotake_meeting_calendar_info + + user_id = #{userId}, + comp_name = #{compName}, + meeting_name = #{meetingName}, + meeting_date = #{meetingDate}, + times = #{times}, + status = #{status}, + del_flag = #{delFlag}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where id = #{id} + + + + delete from hotake_meeting_calendar_info where id = #{id} + + + + delete from hotake_meeting_calendar_info where id in + + #{id} + + + + + insert into hotake_meeting_calendar_info( id, user_id, comp_name, meeting_name, meeting_date, times, status, del_flag, create_by, create_time, update_by, update_time, remark) values + + ( #{item.id}, #{item.userId}, #{item.compName}, #{item.meetingName}, #{item.meetingDate}, #{item.times}, #{item.status}, #{item.delFlag}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark}) + + + \ No newline at end of file