package com.gunshi.project.xyt.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.gunshi.project.xyt.entity.so.RescueTeamPageSo; import com.gunshi.project.xyt.entity.vo.RescueTeamVo; import com.gunshi.project.xyt.mapper.RescueTeamFileMapper; import com.gunshi.project.xyt.mapper.RescueTeamMapper; import com.gunshi.project.xyt.model.RescueTeamB; import com.gunshi.project.xyt.model.RescueTeamDetail; import com.gunshi.project.xyt.model.RescueTeamFile; import com.gunshi.project.xyt.model.RescueTeamFileAutoDao; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * Description: * Created by wanyan on 2024/3/18 * * @author wanyan * @version 1.0 */ @Service @Slf4j @Transactional(rollbackFor = Exception.class) public class RescueTeamService extends AbstractModelWithAttachService{ @Autowired private com.gunshi.project.xyt.model.RescueTeamBAutoDao autoDao; @Autowired private RescueTeamFileAutoDao attachFileAutoDao; @Resource private RescueTeamMapper rescueTeamMapper; @Resource private RescueTeamFileMapper rescueTeamFileMapper; @Resource private com.gunshi.project.xyt.model.RescueTeamDetailAutoDao detailAutoDao; public Page pageQuery(RescueTeamPageSo rescueTeamPageSo) { return rescueTeamMapper.pageQuery(rescueTeamPageSo.getPageSo().toPage(),rescueTeamPageSo); } public RescueTeamB detail(Long teamId) { RescueTeamB team = rescueTeamMapper.selectById(teamId); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(RescueTeamDetail::getTeamId, teamId); team.setDetails(detailAutoDao.list(queryWrapper)); team.setFiles(rescueTeamFileMapper.queryFiles(teamId)); return team; } public void saveDetailAndObj(RescueTeamB model, long teamId) { List details = model.getDetails(); if(CollectionUtils.isNotEmpty(details)){ detailAutoDao.saveBatch(details.stream().map(o->{ o.setDetailId(IdWorker.getId()); o.setTeamId(teamId); return o; }).collect(Collectors.toList())); } } public void updateDetailAndObj(RescueTeamB model) { //根据teamId删除队伍明细和服务对象 Long teamId = model.getTeamId(); deleteDetailAndObj(teamId); saveDetailAndObj(model,teamId); } private void deleteDetailAndObj(Long teamId){ LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(RescueTeamDetail::getTeamId,teamId); detailAutoDao.remove(queryWrapper); } public Boolean delete(Long teamId) { deleteDetailAndObj(teamId); rescueTeamFileMapper.delete(new LambdaUpdateWrapper() .eq(RescueTeamFile::getTeamId,teamId)); int i = rescueTeamMapper.deleteById(teamId); return i > 0 ; } @Override com.gunshi.project.xyt.model.RescueTeamBAutoDao getAutoDao() { return autoDao; } @Override RescueTeamFileAutoDao getAttachFileAutoDao() { return attachFileAutoDao; } @Override List createAttachList(RescueTeamB RescueTeamB) { List fileIds = RescueTeamB.getFileIds(); if (fileIds == null) return null; List attachList = new ArrayList<>(); for (String fileId : fileIds) { RescueTeamFile attach = new RescueTeamFile(); attach.setFileId(Long.valueOf(fileId)); attach.setTeamId(RescueTeamB.getTeamId()); attach.setTm(new Date()); attach.setId(IdWorker.getId()); attachList.add(attach); } return attachList; } @Override Object getModelId(RescueTeamB rescueTeamB) { return rescueTeamB.getTeamId(); } @Override public String getAttachBzIdName() { return "team_id"; } }