package com.gkhy.exam.system.service.impl; import cn.hutool.core.util.ObjectUtil; 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.*; import com.gkhy.exam.system.mapper.AnnualMaintenanceServiceContentMapper; import com.gkhy.exam.system.mapper.AnnualMaintenanceServiceMapper; import com.gkhy.exam.system.mapper.AnnualMaintenanceServiceUserMapper; import com.gkhy.exam.system.service.AnnualMaintenanceServiceService; 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; import static net.sf.jsqlparser.parser.feature.Feature.update; /** *

* 年度基础设施维护保养表 服务实现类 *

* * @author hh * @since 2025-07-31 16:12:02 */ @Service public class AnnualMaintenanceServiceServiceImpl extends ServiceImpl implements AnnualMaintenanceServiceService { @Autowired private AnnualMaintenanceServiceMapper annualMaintenanceServiceMapper; @Autowired private AnnualMaintenanceServiceUserMapper annualMaintenanceServiceUserMapper; @Autowired private AnnualMaintenanceServiceContentMapper annualMaintenanceServiceContentMapper; @Override public CommonPage selectAnnualMaintenanceServiceList(AnnualMaintenanceService annualMaintenanceService) { PageUtils.startPage(); List annualMaintenanceServices = annualMaintenanceServiceMapper.selectAnnualMaintenanceServiceList(annualMaintenanceService); return CommonPage.restPage(annualMaintenanceServices); } @Override public CommonResult saveAnnualMaintenanceService(AnnualMaintenanceService annualMaintenanceService) { List annualMaintenanceServiceContentList = annualMaintenanceService.getAnnualMaintenanceServiceContentList(); List annualMaintenanceServiceUserList = annualMaintenanceService.getAnnualMaintenanceServiceUserList(); if (ObjectUtil.isEmpty(annualMaintenanceServiceContentList) || ObjectUtil.isEmpty(annualMaintenanceServiceUserList)) { return CommonResult.failed("请填写保养内容及保养人员数据"); } checkUser(annualMaintenanceServiceUserList); boolean isAdd = annualMaintenanceService.getId() == null; int i = 0; if (isAdd) { annualMaintenanceService.setCreateBy(SecurityUtils.getUsername()); annualMaintenanceService.setCreateTime(LocalDateTime.now()); i = annualMaintenanceServiceMapper.insert(annualMaintenanceService); } else { annualMaintenanceService.setUpdateBy(SecurityUtils.getUsername()); annualMaintenanceService.setUpdateTime(LocalDateTime.now()); i = annualMaintenanceServiceMapper.updateById(annualMaintenanceService); } if (i > 0) { batchSaveContent(isAdd, annualMaintenanceService.getId(), annualMaintenanceServiceContentList); batchSaveUser(annualMaintenanceService.getId(), annualMaintenanceServiceUserList, annualMaintenanceService.getDelServiceUserIds()); return CommonResult.success(); } return CommonResult.failed(); } private void batchSaveContent(boolean isAdd, Long serviceId, List annualMaintenanceServiceContentList) { if (isAdd) { annualMaintenanceServiceContentList.forEach(content -> { content.setAnnualMaintenanceServiceId(serviceId); content.setCreateBy(SecurityUtils.getUsername()); content.setCreateTime(LocalDateTime.now()); }); int insert = annualMaintenanceServiceContentMapper.batchInsert(annualMaintenanceServiceContentList); if (insert <= 0) { throw new RuntimeException("保存保养内容失败"); } } else { annualMaintenanceServiceContentList.forEach(content -> { content.setUpdateBy(SecurityUtils.getUsername()); content.setUpdateTime(LocalDateTime.now()); }); int update = annualMaintenanceServiceContentMapper.batchUpdate(annualMaintenanceServiceContentList); if (update <= 0) { throw new RuntimeException("保存保养内容失败"); } } } private void batchSaveUser(Long serviceId, List annualMaintenanceServiceUserList, List delServiceUserIds) { if (ObjectUtil.isNotEmpty(delServiceUserIds)) { int update1 = annualMaintenanceServiceUserMapper.update(new AnnualMaintenanceServiceUser(), new LambdaUpdateWrapper().set(AnnualMaintenanceServiceUser::getDelFlag, UserConstant.DEPT_DISABLE) .set(AnnualMaintenanceServiceUser::getUpdateTime, LocalDateTime.now()).set(AnnualMaintenanceServiceUser::getUpdateBy, SecurityUtils.getUsername()) .in(AnnualMaintenanceServiceUser::getId, delServiceUserIds) ); if (update1 <= 0) { throw new RuntimeException("保存失败"); } } List addUser = annualMaintenanceServiceUserList.stream() .filter(user -> null == user.getId()) .collect(Collectors.toList()); addUser.forEach(user -> { user.setCreateBy(SecurityUtils.getUsername()); user.setCreateTime(LocalDateTime.now()); user.setAnnualMaintenanceServiceId(serviceId); }); int i = annualMaintenanceServiceUserMapper.batchInsert(addUser); if (i <= 0) { throw new RuntimeException("保存失败"); } List updateUser = annualMaintenanceServiceUserList.stream() .filter(user -> null != user.getId()) .collect(Collectors.toList()); updateUser.forEach(user -> { user.setUpdateBy(SecurityUtils.getUsername()); user.setUpdateTime(LocalDateTime.now()); }); int update = annualMaintenanceServiceUserMapper.batchUpdate(updateUser); if (update <= 0) { throw new RuntimeException("保存失败"); } } private void checkUser(List annualMaintenanceServiceUserList) { List filteredUsers = annualMaintenanceServiceUserList.stream() .filter(user -> 1 == user.getUserType()) .collect(Collectors.toList()); if (ObjectUtil.isEmpty(filteredUsers)) { throw new RuntimeException("请填写一级保养操作人员"); } Set userIdSet = filteredUsers.stream() .map(AnnualMaintenanceServiceUser::getUserId) .collect(Collectors.toSet()); if (userIdSet.size() != filteredUsers.size()) { throw new RuntimeException("一级保养操作人员重复"); } List filteredUsers2 = annualMaintenanceServiceUserList.stream() .filter(user -> 2 == user.getUserType()) .collect(Collectors.toList()); if (ObjectUtil.isEmpty(filteredUsers2)) { throw new RuntimeException("请填写一级保养检查人员"); } Set userIdSet2 = filteredUsers2.stream() .map(AnnualMaintenanceServiceUser::getUserId) .collect(Collectors.toSet()); if (userIdSet2.size() != filteredUsers2.size()) { throw new RuntimeException("一级保养检查人员重复"); } List filteredUsers3 = annualMaintenanceServiceUserList.stream() .filter(user -> 3 == user.getUserType()) .collect(Collectors.toList()); if (ObjectUtil.isEmpty(filteredUsers3)) { throw new RuntimeException("请填写二级保养操作人员"); } Set userIdSet3 = filteredUsers.stream() .map(AnnualMaintenanceServiceUser::getUserId) .collect(Collectors.toSet()); if (userIdSet3.size() != filteredUsers3.size()) { throw new RuntimeException("二级保养操作人员重复"); } List filteredUsers4 = annualMaintenanceServiceUserList.stream() .filter(user -> 4 == user.getUserType()) .collect(Collectors.toList()); if (ObjectUtil.isEmpty(filteredUsers4)) { throw new RuntimeException("请填写二级保养检查人员"); } Set userIdSet4 = filteredUsers2.stream() .map(AnnualMaintenanceServiceUser::getUserId) .collect(Collectors.toSet()); if (userIdSet4.size() != filteredUsers4.size()) { throw new RuntimeException("二级保养检查人员重复"); } } @Override public CommonResult getAnnualMaintenanceService(Integer id) { AnnualMaintenanceService annualMaintenanceService = annualMaintenanceServiceMapper.selectById(id); if (ObjectUtils.isNotEmpty(annualMaintenanceService)) { List annualMaintenanceServiceContentList = annualMaintenanceServiceContentMapper.selectList( new LambdaQueryWrapper().eq(AnnualMaintenanceServiceContent::getAnnualMaintenanceServiceId, id) .eq(AnnualMaintenanceServiceContent::getDelFlag, UserConstant.ENABLE).orderByAsc(AnnualMaintenanceServiceContent::getServiceType)); annualMaintenanceService.setAnnualMaintenanceServiceContentList(annualMaintenanceServiceContentList); List annualMaintenanceServiceUserList = annualMaintenanceServiceUserMapper.selectList( new LambdaQueryWrapper().eq(AnnualMaintenanceServiceUser::getAnnualMaintenanceServiceId, id) .eq(AnnualMaintenanceServiceUser::getDelFlag, UserConstant.ENABLE).orderByAsc(AnnualMaintenanceServiceUser::getUserType)); annualMaintenanceService.setAnnualMaintenanceServiceUserList(annualMaintenanceServiceUserList); } return CommonResult.success(annualMaintenanceService); } @Override @Transactional public CommonResult deletedAnnualMaintenanceService(Integer id) { AnnualMaintenanceService annualMaintenanceService = new AnnualMaintenanceService(); annualMaintenanceService.setId(Long.valueOf(id)); annualMaintenanceService.setDelFlag(UserConstant.DEPT_DISABLE); int update = annualMaintenanceServiceMapper.updateById(annualMaintenanceService); if (update > 0) { int update1 = annualMaintenanceServiceUserMapper.update(new AnnualMaintenanceServiceUser(), new LambdaUpdateWrapper().eq(AnnualMaintenanceServiceUser::getAnnualMaintenanceServiceId, id) .set(AnnualMaintenanceServiceUser::getDelFlag, UserConstant.DEPT_DISABLE) .set(AnnualMaintenanceServiceUser::getUpdateTime, LocalDateTime.now()) .set(AnnualMaintenanceServiceUser::getUpdateBy, SecurityUtils.getUsername())); if (update1 <= 0) { throw new RuntimeException("删除失败"); } int update2 = annualMaintenanceServiceContentMapper.update(new AnnualMaintenanceServiceContent(), new LambdaUpdateWrapper().eq(AnnualMaintenanceServiceContent::getAnnualMaintenanceServiceId, id) .set(AnnualMaintenanceServiceContent::getDelFlag, UserConstant.DEPT_DISABLE) .set(AnnualMaintenanceServiceContent::getUpdateTime, LocalDateTime.now()) .set(AnnualMaintenanceServiceContent::getUpdateBy, SecurityUtils.getUsername()) ); if (update2 <= 0) { throw new RuntimeException("删除失败"); } return CommonResult.success(); } return CommonResult.failed(); } }