package com.ruoyi.customervisits.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.customervisits.dto.CustomerVisitsDto; import com.ruoyi.customervisits.mapper.CustomerVisitsMapper; import com.ruoyi.customervisits.pojo.CustomerVisits; import com.ruoyi.customervisits.service.CustomerVisitsService; import com.ruoyi.other.service.impl.TempFileServiceImpl; import com.ruoyi.sales.mapper.CommonFileMapper; import com.ruoyi.sales.pojo.CommonFile; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Collections; import java.util.List; import java.util.Set; import java.util.stream.Collectors; /** * @author :yys * @date : 2025/8/29 10:27 */ @Service @Slf4j public class CustomerVisitsServiceImpl extends ServiceImpl implements CustomerVisitsService { @Autowired private CustomerVisitsMapper customerVisitsMapper; @Autowired private CommonFileMapper commonFileMapper; @Autowired private TempFileServiceImpl tempFileService; @Override public IPage listPage(Page page, CustomerVisits customerVisits) { IPage selectPage = customerVisitsMapper.listPage(page, customerVisits); for (CustomerVisitsDto record : selectPage.getRecords()) { List allFiles = commonFileMapper.selectList(new LambdaQueryWrapper() .eq(CommonFile::getCommonId, record.getId()) .eq(CommonFile::getType, FileNameType.CUSTOMER_VISITS.getValue())); record.setCommonFileList(allFiles); } return selectPage; } @Override @Transactional(rollbackFor = Exception.class) public boolean updateCustomerVisit(CustomerVisits customerVisits) { if (customerVisits == null || customerVisits.getId() == null) { return false; } if (StringUtils.isEmpty(customerVisits.getCustomerName()) || StringUtils.isEmpty(customerVisits.getPurposeVisit()) || StringUtils.isEmpty(customerVisits.getVisitAddress()) || StringUtils.isEmpty(customerVisits.getPurposeDate())) { return false; } return updateById(customerVisits); } @Override @Transactional(rollbackFor = Exception.class) public boolean updateCustomerVisit(CustomerVisitsDto customerVisitsDto) throws Exception { CustomerVisits customerVisits = new CustomerVisits(); BeanUtils.copyProperties(customerVisitsDto, customerVisits); boolean updateResult = updateCustomerVisit(customerVisits); if (!updateResult) { return false; } Long businessId = customerVisits.getId().longValue(); List existingFiles = commonFileMapper.selectList(new LambdaQueryWrapper() .eq(CommonFile::getCommonId, businessId) .eq(CommonFile::getType, FileNameType.CUSTOMER_VISITS.getValue())); Set retainedFileIds = customerVisitsDto.getCommonFileList() == null ? Collections.emptySet() : customerVisitsDto.getCommonFileList().stream() .map(CommonFile::getId) .filter(java.util.Objects::nonNull) .collect(Collectors.toSet()); for (CommonFile commonFile : existingFiles) { if (commonFile.getId() == null || retainedFileIds.contains(commonFile.getId())) { continue; } if (commonFile.getUrl() != null && !commonFile.getUrl().isEmpty()) { Files.deleteIfExists(Paths.get(commonFile.getUrl())); } commonFileMapper.deleteById(commonFile.getId()); } tempFileService.migrateTempFilesToFormal(businessId, customerVisitsDto.getTempFileIds(), FileNameType.CUSTOMER_VISITS.getValue()); return true; } }