package com.gkhy.exam.system.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.api.CommonResult; import com.gkhy.exam.common.constant.UserConstant; import com.gkhy.exam.common.utils.PageUtils; import com.gkhy.exam.common.utils.SecurityUtils; import com.gkhy.exam.system.domain.AnnualMaintenanceRecord; import com.gkhy.exam.system.domain.AnnualMaintenanceRecordUser; import com.gkhy.exam.system.mapper.AnnualMaintenanceRecordMapper; import com.gkhy.exam.system.mapper.AnnualMaintenanceRecordUserMapper; import com.gkhy.exam.system.service.AnnualMaintenanceRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.List; import java.util.Set; import java.util.stream.Collectors; /** *

* 年度基础设施维护记录表 服务实现类 *

* * @author hh * @since 2025-07-31 16:12:02 */ @Service public class AnnualMaintenanceRecordServiceImpl extends ServiceImpl implements AnnualMaintenanceRecordService { @Autowired private AnnualMaintenanceRecordMapper annualMaintenanceRecordMapper; @Autowired private AnnualMaintenanceRecordUserMapper annualMaintenanceRecordUserMapper; @Override public CommonPage selectAnnualMaintenanceRecordList(AnnualMaintenanceRecord annualMaintenanceRecord) { PageUtils.startPage(); List annualMaintenanceRecords = annualMaintenanceRecordMapper.getAnnualMaintenanceRecord(annualMaintenanceRecord); return CommonPage.restPage(annualMaintenanceRecords); } @Override @Transactional public CommonResult saveAnnualMaintenanceRecord(AnnualMaintenanceRecord annualMaintenanceRecord) { List annualMaintenanceRecordUsers = annualMaintenanceRecord.getAnnualMaintenanceRecordUsers(); if (ObjectUtils.isEmpty(annualMaintenanceRecordUsers)){ return CommonResult.failed("年度基础设施维护记录人员不能为空"); } boolean isAdd = annualMaintenanceRecord.getId() == null; int i = 0; if (isAdd){ annualMaintenanceRecord.setCreateBy(SecurityUtils.getUsername()); annualMaintenanceRecord.setCreateTime(LocalDateTime.now()); i = annualMaintenanceRecordMapper.insert(annualMaintenanceRecord); }else { annualMaintenanceRecord.setUpdateBy(SecurityUtils.getUsername()); annualMaintenanceRecord.setUpdateTime(LocalDateTime.now()); i = annualMaintenanceRecordMapper.updateById(annualMaintenanceRecord); } if (i > 0){ return CommonResult.success(); } return CommonResult.failed(); } private void batchSaveRecordUser(boolean isAdd,Long annualMaintenanceRecordId, List annualMaintenanceRecordUsers,List delRecordUserIds) { List filteredUsers = annualMaintenanceRecordUsers.stream() .filter(user -> 1 == user.getUserType()) .collect(Collectors.toList()); Set userIdSet = filteredUsers.stream() .map(AnnualMaintenanceRecordUser::getUserId) .collect(Collectors.toSet()); if (userIdSet.size() != filteredUsers.size()){ throw new RuntimeException("年度基础设施维护记录操作管理人员重复"); } List fixUsers = annualMaintenanceRecordUsers.stream() .filter(user -> 2 == user.getUserType()) .collect(Collectors.toList()); Set fixUserIdSet = fixUsers.stream() .map(AnnualMaintenanceRecordUser::getUserId) .collect(Collectors.toSet()); if (fixUserIdSet.size() != fixUsers.size()){ throw new RuntimeException("年度基础设施维护记录人员重复"); } if (ObjectUtils.isEmpty(filteredUsers) || ObjectUtils.isEmpty(fixUsers)){ throw new RuntimeException("年度基础设施维护记录人员或操作管理人员不能为空"); } if (ObjectUtils.isNotEmpty(delRecordUserIds)){ int update = annualMaintenanceRecordUserMapper.update(new AnnualMaintenanceRecordUser(), new LambdaUpdateWrapper().set(AnnualMaintenanceRecordUser::getDelFlag, UserConstant.DEPT_DISABLE) .set(AnnualMaintenanceRecordUser::getUpdateTime, LocalDateTime.now()).set(AnnualMaintenanceRecordUser::getUpdateBy, SecurityUtils.getUsername()) .in(AnnualMaintenanceRecordUser::getId, delRecordUserIds) ); if (update <= 0){ throw new RuntimeException("删除年度基础设施维护记录人员失败"); } } if (isAdd){ annualMaintenanceRecordUsers.forEach(user -> { user.setAnnualMaintenanceRecordId(annualMaintenanceRecordId); user.setCreateTime(LocalDateTime.now()); user.setCreateBy(SecurityUtils.getUsername()); }); int insert = annualMaintenanceRecordUserMapper.batchInsert(annualMaintenanceRecordUsers); if (insert <= 0){ throw new RuntimeException("保存年度基础设施维护记录人员失败"); } }else { List addUser = annualMaintenanceRecordUsers.stream() .filter(user -> null == user.getId()) .collect(Collectors.toList()); if (ObjectUtils.isNotEmpty(addUser)){ addUser.forEach(user -> { user.setAnnualMaintenanceRecordId(annualMaintenanceRecordId); user.setCreateTime(LocalDateTime.now()); user.setCreateBy(SecurityUtils.getUsername()); }); int insert = annualMaintenanceRecordUserMapper.batchInsert(annualMaintenanceRecordUsers); if (insert <= 0){ throw new RuntimeException("保存年度基础设施维护记录人员失败"); } } List updateUser = annualMaintenanceRecordUsers.stream() .filter(user -> null == user.getId()) .collect(Collectors.toList()); if (ObjectUtils.isNotEmpty(updateUser)){ updateUser.forEach(user -> { user.setUpdateTime(LocalDateTime.now()); user.setUpdateBy(SecurityUtils.getUsername()); }); int update = annualMaintenanceRecordUserMapper.batchUpdate(updateUser); if (update <= 0){ throw new RuntimeException("保存年度基础设施维护记录人员失败"); } } } } @Override public CommonResult getAnnualMaintenanceRecord(Integer id) { AnnualMaintenanceRecord annualMaintenanceRecord = annualMaintenanceRecordMapper.selectById(id); if (ObjectUtils.isNotEmpty(annualMaintenanceRecord)){ List annualMaintenanceRecordUsers = annualMaintenanceRecordUserMapper.selectList( new LambdaQueryWrapper().eq(AnnualMaintenanceRecordUser::getAnnualMaintenanceRecordId, id) .eq(AnnualMaintenanceRecordUser::getDelFlag, UserConstant.ENABLE).orderByAsc(AnnualMaintenanceRecordUser::getUserType)); annualMaintenanceRecord.setAnnualMaintenanceRecordUsers(annualMaintenanceRecordUsers); } return CommonResult.success(annualMaintenanceRecord); } @Override @Transactional public CommonResult deletedAnnualMaintenanceRecord(Integer id) { AnnualMaintenanceRecord annualMaintenanceRecord = new AnnualMaintenanceRecord(); annualMaintenanceRecord.setId(Long.valueOf( id)); annualMaintenanceRecord.setDelFlag(1); annualMaintenanceRecord.setUpdateBy(SecurityUtils.getUsername()); annualMaintenanceRecord.setUpdateTime(LocalDateTime.now()); int update = annualMaintenanceRecordMapper.updateById(annualMaintenanceRecord); if (update > 0){ AnnualMaintenanceRecordUser annualMaintenanceRecordUser = new AnnualMaintenanceRecordUser(); annualMaintenanceRecordUser.setDelFlag(1); annualMaintenanceRecordUser.setUpdateBy(SecurityUtils.getUsername()); annualMaintenanceRecordUser.setUpdateTime(LocalDateTime.now()); LambdaQueryWrapper eq = new LambdaQueryWrapper().eq(AnnualMaintenanceRecordUser::getAnnualMaintenanceRecordId, id); int update1 = annualMaintenanceRecordUserMapper.update(annualMaintenanceRecordUser, eq); if (update1 <= 0){ throw new RuntimeException("删除年度基础设施维护计划人员失败"); } return CommonResult.success(); } return CommonResult.failed(); } }