update 会议项目 年度数据锁定

This commit is contained in:
lijiarao
2024-07-24 18:00:38 +08:00
parent 11b622ae5f
commit 2b1af1e44b
7 changed files with 193 additions and 4 deletions
@@ -35,7 +35,7 @@ public interface PayMeetingMapper extends BaseMapper<PayMeeting> {
IPage<PayMeeting> workGroupPage(Page<PayMeeting> page, @Param(Constants.WRAPPER) QueryWrapper<PayMeeting> queryWrapper);
IPage<PayMeeting> draftGroupPage(Page<PayMeeting> page,@Param(Constants.WRAPPER) QueryWrapper<PayMeeting> queryWrapper);
IPage<PayMeeting> draftGroupPage(Page<PayMeeting> page, @Param(Constants.WRAPPER) QueryWrapper<PayMeeting> queryWrapper);
IPage<PayMeeting> standardPage(Page<PayMeeting> page, @Param(Constants.WRAPPER) QueryWrapper<PayMeeting> queryWrapper);
@@ -38,4 +38,11 @@ public interface PayMeetingSituationMapper extends BaseMapper<PayMeetingSituatio
List<MeetingPackStatistics> getMeetingPackStatistics(@Param(Constants.WRAPPER) QueryWrapper<PayMeetingSituation> query);
MeetingPackStatistics getMeetingPackStatisticsCount(@Param(Constants.WRAPPER) QueryWrapper<PayMeetingSituation> query);
/**
* 根据年份获取参会人
* @param year 年份
*/
List<PayMeetingSituation> listByYear(@Param("year")String year);
}
@@ -1,6 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.meeting.mapper.PayMeetingSituationMapper">
<sql id="Base_Column_List">
id,
create_by,
create_time,
update_by,
update_time,
meeting_id,
company_id,
company_name,
company_contact_id,
company_contact_name,
post,
phone,
email,
`identity`,
guest_type,
speech_topic,
speech_ppt,
photo,
profile,
have_meals,
hui_people,
check_in_hotel,
in_hotel_time,
out_hotel_time,
room_layout,
arrival_time,
destination,
arrival_shift,
delivery_station,
departure_time,
departure_station,
departure_shift,
remark,
check_in,
pick_up,
post_contact_id,
post_contact_address,
pay_mode,
need_invoice,
payment_record,
`status`,
pack,
in_account,
make_invoice,
mail
</sql>
<resultMap id="PayMeetingSituationResultMap" type="com.jero.meeting.entity.PayMeetingSituation">
<id column="id" property="id"/>
<result column="create_by" property="createBy"/>
@@ -202,4 +249,14 @@
from v_meeting_pack_statistical
${ew.customSqlSegment}
</select>
<!--auto generated by MybatisCodeHelper on 2024-07-24-->
<select id="listByYear" resultType="com.jero.meeting.entity.PayMeetingSituation">
select
*
from pay_meeting_situation
<where>
meeting_id in (select id from pay_meeting where particular_year = #{year})
</where>
</select>
</mapper>
@@ -77,6 +77,7 @@ import com.jero.payment.entity.PayPaymentRecord;
import com.jero.payment.service.IPayPaymentRecordService;
import com.jero.project.common.PayProjectCommon;
import com.jero.project.entity.PayWorkingGroupSubItemContacts;
import com.jero.project.service.AnnualDataLockingService;
import com.jero.project.service.IPayWorkingGroupSubItemContactsService;
import com.jero.project.service.IPayWorkingGroupSubItemService;
import com.jero.standards.memberinfo.service.IMemberInfoService;
@@ -173,7 +174,8 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
private ITbMemberProjectSubitemService tbMemberProjectSubitemService;
@Resource
private SafetyCenterSubitemContactsService safetyCenterSubitemContactsService;
@Resource
private AnnualDataLockingService annualDataLockingService;
private static final String[] CAN_MODIFY_LIST =
new String[]{"arrivalTime", "departureTime", "checkInHotel"};
@@ -198,6 +200,9 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
if (!b && !Objects.equals(payMeeting1.getDirectorId(),loginUser.getId())) {
throw new JeroBootException("只有会议负责人,会议联系人可以新增参会人");
}
if (annualDataLockingService.checkYear(payMeeting1.getParticularYear())) {
throw new JeroBootException(payMeeting1.getParticularYear()+"年数据已经锁定,无法修改");
}
}
payMeetingSituation.setStatus(MeetingSubitemCommon.STATUS_3);
@@ -1,4 +1,5 @@
package com.jero.project.mapper;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.project.entity.AnnualDataLocking;
@@ -9,4 +10,7 @@ import com.jero.project.entity.AnnualDataLocking;
*@date 2024-07-24 13:51
*/
public interface AnnualDataLockingMapper extends BaseMapper<AnnualDataLocking> {
Integer countByYear(@Param("year")String year);
}
@@ -15,4 +15,15 @@
<!--@mbg.generated-->
id, `year`, create_by, create_time, update_by, update_time
</sql>
<!--auto generated by MybatisCodeHelper on 2024-07-24-->
<select id="countByYear" resultType="java.lang.Integer">
select count(1)
from pay_annual_data_locking
<where>
<if test="year != null and year != ''">
and `year`=#{year,jdbcType=VARCHAR}
</if>
</where>
</select>
</mapper>
@@ -1,11 +1,41 @@
package com.jero.project.service;
import com.jero.common.common.RoleCommon;
import com.jero.common.constant.CacheConstant;
import com.jero.common.service.ProjectDetailService;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.vo.LoginUser;
import com.jero.meeting.entity.PayMeetingSituation;
import com.jero.meeting.mapper.PayMeetingMapper;
import com.jero.meeting.mapper.PayMeetingSituationMapper;
import com.jero.meeting.service.IPayMeetingSituationService;
import com.jero.member.mapper.PayMemberProjectSubitemMapper;
import com.jero.member.mapper.TbCertificatePaymentMapper;
import com.jero.member.mapper.TbMemberProjectSubitemMapper;
import com.jero.member.service.IPayMemberProjectService;
import com.jero.member.service.ITbMemberProjectSubitemService;
import com.jero.modules.system.service.ISysUserService;
import com.jero.project.mapper.PayCommonProjectMapper;
import com.jero.project.mapper.PayWorkingGroupMapper;
import com.jero.project.mapper.PayWorkingGroupSubItemMapper;
import com.jero.temporary.entity.PayCompanyManagementTemporary;
import com.jero.temporary.entity.PayContactsManagementTemporary;
import com.jero.temporary.service.IPayCompanyManagementTemporaryService;
import com.jero.temporary.service.IPayContactsManagementTemporaryService;
import org.apache.shiro.SecurityUtils;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.project.mapper.AnnualDataLockingMapper;
import com.jero.project.entity.AnnualDataLocking;
import javax.annotation.Resource;
/**
*
*@author liJiaRao
@@ -13,16 +43,91 @@ import com.jero.project.entity.AnnualDataLocking;
*/
@Service
public class AnnualDataLockingService extends ServiceImpl<AnnualDataLockingMapper, AnnualDataLocking> {
@Resource
private ISysUserService sysUserService;
@Resource
private ProjectDetailService projectDetailService;
@Resource
private PayCommonProjectMapper payCommonProjectMapper;
@Resource
private PayWorkingGroupSubItemMapper payWorkingGroupSubItemMapper;
@Resource
private PayWorkingGroupMapper payWorkingGroupMapper;
@Resource
private PayMeetingSituationMapper meetingSituationMapper;
@Resource
private PayMemberProjectSubitemMapper payMemberProjectSubitemMapper;
@Resource
private TbMemberProjectSubitemMapper tbMemberProjectSubitemMapper;
@Resource
private TbCertificatePaymentMapper certificatePaymentMapper;
@Resource
private ISysBaseAPI sysBaseAPI;
@Resource
private IPayMemberProjectService payMemberProjectService;
@Resource
private ITbMemberProjectSubitemService tbMemberProjectSubitemService;
@Resource
private PayMeetingMapper meetingMapper;
@Resource
private IPayMeetingSituationService meetingSituationService;
@Resource
private IPayCompanyManagementTemporaryService companyTemporaryService;
@Resource
private IPayContactsManagementTemporaryService contactsTemporaryService;
public void add(AnnualDataLocking annualDataLocking) {
this.save(annualDataLocking);
String year = annualDataLocking.getYear();
//会议项目
List<PayMeetingSituation> meetingSituations = meetingSituationMapper.listByYear(year);
for (PayMeetingSituation meetingSituation : meetingSituations) {
String companyId = meetingSituation.getCompanyId();
String companyContactId = meetingSituation.getCompanyContactId();
String postContactId = meetingSituation.getPostContactId();
//获得临时表id
PayCompanyManagementTemporary companyTemporary = companyTemporaryService.insertCompanyManagementTemporary(companyId);
PayContactsManagementTemporary contactsTemporary = contactsTemporaryService.insertContactsManagementTemporary(companyContactId);
PayContactsManagementTemporary contactsTemporary1 = contactsTemporaryService.insertContactsManagementTemporary(postContactId);
//更新临时表id
PayMeetingSituation update = new PayMeetingSituation();
update.setCompanyTemporaryId(companyTemporary.getId());
update.setCompanyContactTemporaryId(contactsTemporary.getId());
update.setPostContactTemporaryId(contactsTemporary1.getId());
meetingSituationMapper.updateById(update);
}
}
/**
* 查询年份是否存在
*/
@Cacheable(cacheNames= "annualDataLocking", key="#year")
public boolean checkYear(String year){
return baseMapper.countByYear(year) > 0;
}
public void editById(AnnualDataLocking annualDataLocking) {
this.updateById(annualDataLocking);
}
@CacheEvict(value="annualDataLocking", allEntries=true)
public void deleteById(String id) {
AnnualDataLocking annualDataLocking = this.getById(id);
this.removeById(id);
String year = annualDataLocking.getYear();
//会议项目
List<PayMeetingSituation> meetingSituations = meetingSituationMapper.listByYear(year);
for (PayMeetingSituation meetingSituation : meetingSituations) {
String companyId = meetingSituation.getCompanyId();
String companyContactId = meetingSituation.getCompanyContactId();
String postContactId = meetingSituation.getPostContactId();
//更新临时表id
PayMeetingSituation update = new PayMeetingSituation();
update.setCompanyTemporaryId(companyId);
update.setCompanyContactTemporaryId(companyContactId);
update.setPostContactTemporaryId(postContactId);
meetingSituationMapper.updateById(update);
}
}
public void deleteByIds(List<String> idList) {