package com.gkhy.exam.system.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.AnnualMaintenance; import com.gkhy.exam.system.domain.AnnualMaintenanceDevice; import com.gkhy.exam.system.domain.AnnualMaintenanceDeviceType; import com.gkhy.exam.system.domain.StandardizedQuality; import com.gkhy.exam.system.domain.vo.AnnualMaintenanceDeviceSaveDTOReq; import com.gkhy.exam.system.domain.vo.AnnualMaintenanceInfoRep; import com.gkhy.exam.system.domain.vo.AnnualMaintenanceSaveDTOReq; import com.gkhy.exam.system.mapper.AnnualMaintenanceDeviceMapper; import com.gkhy.exam.system.mapper.AnnualMaintenanceDeviceTypeMapper; import com.gkhy.exam.system.mapper.AnnualMaintenanceMapper; import com.gkhy.exam.system.service.AnnualMaintenanceService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.BeanUtils; 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.ArrayList; import java.util.List; import java.util.stream.Collectors; /** *

* 年度基础设施维护计划主表 服务实现类 *

* * @author hh * @since 2025-07-31 16:12:02 */ @Service public class AnnualMaintenanceServiceImpl extends ServiceImpl implements AnnualMaintenanceService { @Autowired private AnnualMaintenanceMapper annualMaintenanceMapper; @Autowired private AnnualMaintenanceDeviceMapper annualMaintenanceDeviceMapper; @Autowired private AnnualMaintenanceDeviceTypeMapper annualMaintenanceDeviceTypeMapper; @Override public CommonPage selectAnnualMaintenanceList(AnnualMaintenance annualMaintenance) { PageUtils.startPage(); List annualMaintenances = annualMaintenanceMapper.getAnnualMaintenances(annualMaintenance); return CommonPage.restPage(annualMaintenances); } @Override @Transactional public CommonResult saveAnnualMaintenance(AnnualMaintenanceSaveDTOReq annualMaintenanceSaveDTOReq) { List annualMaintenanceDeviceSaveDTOReqs = annualMaintenanceSaveDTOReq.getAnnualMaintenanceDeviceSaveDTOReqs(); if (ObjectUtils.isEmpty(annualMaintenanceDeviceSaveDTOReqs)){ return CommonResult.failed("年度基础设施维护计划设备保存参数不能为空"); } int i = 0; AnnualMaintenance annualMaintenance = new AnnualMaintenance(); BeanUtils.copyProperties(annualMaintenanceSaveDTOReq,annualMaintenance); boolean isAdd = annualMaintenance.getId() == null; if (isAdd){ annualMaintenance.setCreateBy(SecurityUtils.getUsername()); annualMaintenance.setCreateTime(LocalDateTime.now()); i = annualMaintenanceMapper.insert(annualMaintenance); }else { annualMaintenance.setUpdateBy(SecurityUtils.getUsername()); annualMaintenance.setUpdateTime(LocalDateTime.now()); i = annualMaintenanceMapper.updateById(annualMaintenance); } if (i > 0){ batchSaveDevice(annualMaintenance.getId(), annualMaintenanceDeviceSaveDTOReqs,annualMaintenanceSaveDTOReq.getDelDeviceIds()); return CommonResult.success(); } return CommonResult.failed(); } private void batchSaveDevice(Long annualMaintenanceId, List annualMaintenanceDeviceSaveDTOReqs,List delDeviceIds) { if (ObjectUtils.isNotEmpty(delDeviceIds)){ int update = annualMaintenanceDeviceMapper.update(new AnnualMaintenanceDevice(), new LambdaUpdateWrapper().set(AnnualMaintenanceDevice::getDelFlag, UserConstant.DEPT_DISABLE) .set(AnnualMaintenanceDevice::getUpdateTime, LocalDateTime.now()).set(AnnualMaintenanceDevice::getUpdateBy, SecurityUtils.getUsername()) .in(AnnualMaintenanceDevice::getId, delDeviceIds) ); if (update <= 0){ throw new RuntimeException("删除年度基础设施维护计划设备失败"); } } for (AnnualMaintenanceDeviceSaveDTOReq annualMaintenanceDeviceSaveDTOReq : annualMaintenanceDeviceSaveDTOReqs) { AnnualMaintenanceDevice annualMaintenanceDevice = new AnnualMaintenanceDevice(); BeanUtils.copyProperties(annualMaintenanceDeviceSaveDTOReq,annualMaintenanceDevice); annualMaintenanceDevice.setAnnualMaintenanceId(annualMaintenanceId); if (annualMaintenanceDevice.getId() == null){ annualMaintenanceDevice.setCreateBy(SecurityUtils.getUsername()); annualMaintenanceDevice.setCreateTime(LocalDateTime.now()); int insert = annualMaintenanceDeviceMapper.insert(annualMaintenanceDevice); if (insert <= 0){ throw new RuntimeException("保存年度基础设施维护计划设备失败"); } List annualMaintenanceDeviceTypes = annualMaintenanceDeviceSaveDTOReq.getAnnualMaintenanceDeviceTypes(); if (ObjectUtils.isNotEmpty(annualMaintenanceDeviceTypes)){ for (AnnualMaintenanceDeviceType annualMaintenanceDeviceType : annualMaintenanceDeviceTypes) { annualMaintenanceDeviceType.setAnnualMaintenanceDeviceId(annualMaintenanceDevice.getId()); annualMaintenanceDeviceType.setCreateBy(SecurityUtils.getUsername()); annualMaintenanceDeviceType.setCreateTime(LocalDateTime.now()); int insert1 = annualMaintenanceDeviceTypeMapper.insert(annualMaintenanceDeviceType); if (insert1 <= 0){ throw new RuntimeException("保存年度基础设施维护计划设备类型失败"); } } } }else { annualMaintenanceDevice.setUpdateBy(SecurityUtils.getUsername()); annualMaintenanceDevice.setUpdateTime(LocalDateTime.now()); int update = annualMaintenanceDeviceMapper.updateById(annualMaintenanceDevice); if (update <= 0){ throw new RuntimeException("更新年度基础设施维护计划设备失败"); } List annualMaintenanceDeviceTypes = annualMaintenanceDeviceSaveDTOReq.getAnnualMaintenanceDeviceTypes(); if (ObjectUtils.isNotEmpty(annualMaintenanceDeviceTypes)){ for (AnnualMaintenanceDeviceType annualMaintenanceDeviceType : annualMaintenanceDeviceTypes) { annualMaintenanceDeviceType.setAnnualMaintenanceDeviceId(annualMaintenanceDevice.getId()); if (annualMaintenanceDeviceType.getId() == null){ annualMaintenanceDeviceType.setCreateBy(SecurityUtils.getUsername()); annualMaintenanceDeviceType.setCreateTime(LocalDateTime.now()); int insert1 = annualMaintenanceDeviceTypeMapper.insert(annualMaintenanceDeviceType); if (insert1 <= 0){ throw new RuntimeException("保存年度基础设施维护计划设备类型失败"); } }else { annualMaintenanceDeviceType.setUpdateBy(SecurityUtils.getUsername()); annualMaintenanceDeviceType.setUpdateTime(LocalDateTime.now()); int update1 = annualMaintenanceDeviceTypeMapper.updateById(annualMaintenanceDeviceType); if (update1 <= 0){ throw new RuntimeException("更新年度基础设施维护计划设备类型失败"); } } } } } } } @Override public CommonResult getAnnualMaintenance(Integer id) { AnnualMaintenanceInfoRep annualMaintenanceInfoRep = new AnnualMaintenanceInfoRep(); AnnualMaintenance annualMaintenance = annualMaintenanceMapper.selectById(id); BeanUtils.copyProperties(annualMaintenance,annualMaintenanceInfoRep); LambdaQueryWrapper eq = new LambdaQueryWrapper().eq(AnnualMaintenanceDevice::getAnnualMaintenanceId, id) .eq(AnnualMaintenanceDevice::getDelFlag, UserConstant.ENABLE).orderByDesc(AnnualMaintenanceDevice::getCreateTime); List annualMaintenanceDevices = annualMaintenanceDeviceMapper.selectList(eq); if (ObjectUtils.isNotEmpty(annualMaintenanceDevices)){ for (AnnualMaintenanceDevice annualMaintenanceDevice : annualMaintenanceDevices) { List annualMaintenanceDeviceTypes = annualMaintenanceDeviceTypeMapper.selectList(new LambdaQueryWrapper() .eq(AnnualMaintenanceDeviceType::getAnnualMaintenanceDeviceId, annualMaintenanceDevice.getId()) .eq(AnnualMaintenanceDeviceType::getDelFlag, UserConstant.ENABLE) .orderByAsc(AnnualMaintenanceDeviceType::getProjectType)); annualMaintenanceDevice.setAnnualMaintenanceDeviceTypeList(annualMaintenanceDeviceTypes); } } annualMaintenanceInfoRep.setAnnualMaintenanceDeviceList(annualMaintenanceDevices); return CommonResult.success(annualMaintenanceInfoRep); } @Override @Transactional public CommonResult deletedAnnualMaintenance(Integer id) { AnnualMaintenance annualMaintenance = new AnnualMaintenance(); annualMaintenance.setId(Long.valueOf( id)); annualMaintenance.setDelFlag(1); annualMaintenance.setUpdateBy(SecurityUtils.getUsername()); annualMaintenance.setUpdateTime(LocalDateTime.now()); int update = annualMaintenanceMapper.updateById(annualMaintenance); if (update > 0){ LambdaQueryWrapper eq = new LambdaQueryWrapper().eq(AnnualMaintenanceDevice::getAnnualMaintenanceId, id).eq(AnnualMaintenanceDevice::getDelFlag, UserConstant.ENABLE); List deviceIds = annualMaintenanceDeviceMapper.selectList(eq).stream().map(AnnualMaintenanceDevice::getId).collect(Collectors.toList()); if (ObjectUtils.isNotEmpty(deviceIds)){ AnnualMaintenanceDevice annualMaintenanceDevice = new AnnualMaintenanceDevice(); annualMaintenanceDevice.setDelFlag(1); annualMaintenanceDevice.setUpdateBy(SecurityUtils.getUsername()); annualMaintenanceDevice.setUpdateTime(LocalDateTime.now()); int update1 = annualMaintenanceDeviceMapper.update(annualMaintenanceDevice, eq); if (update1 > 0){ AnnualMaintenanceDeviceType annualMaintenanceDeviceType = new AnnualMaintenanceDeviceType(); annualMaintenanceDeviceType.setDelFlag(1); annualMaintenanceDeviceType.setUpdateBy(SecurityUtils.getUsername()); annualMaintenanceDeviceType.setUpdateTime(LocalDateTime.now()); int update2 = annualMaintenanceDeviceTypeMapper.update(annualMaintenanceDeviceType, new LambdaQueryWrapper().in(AnnualMaintenanceDeviceType::getAnnualMaintenanceDeviceId, deviceIds)); if (update2 <= 0){ throw new RuntimeException("删除数据失败"); } } }else { throw new RuntimeException("删除数据失败"); } return CommonResult.success(); } return CommonResult.failed(); } }