gunshi-project-ss/src/main/java/com/gunshi/project/xyt/service/RescueTeamService.java

139 lines
4.7 KiB
Java

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.RescueTeamBMapper;
import com.gunshi.project.xyt.mapper.RescueTeamFileMapper;
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<RescueTeamB, com.gunshi.project.xyt.model.RescueTeamBAutoMapper, com.gunshi.project.xyt.model.RescueTeamBAutoDao, RescueTeamFile, com.gunshi.project.xyt.model.RescueTeamFileAutoMapper, RescueTeamFileAutoDao>{
@Autowired
private com.gunshi.project.xyt.model.RescueTeamBAutoDao autoDao;
@Autowired
private RescueTeamFileAutoDao attachFileAutoDao;
@Resource
private RescueTeamBMapper rescueTeamMapper;
@Resource
private RescueTeamFileMapper rescueTeamFileMapper;
@Resource
private com.gunshi.project.xyt.model.RescueTeamDetailAutoDao detailAutoDao;
public Page<RescueTeamVo> pageQuery(RescueTeamPageSo rescueTeamPageSo) {
return rescueTeamMapper.pageQuery(rescueTeamPageSo.getPageSo().toPage(),rescueTeamPageSo);
}
public RescueTeamB detail(Long teamId) {
RescueTeamB team = rescueTeamMapper.selectById(teamId);
LambdaQueryWrapper<RescueTeamDetail> 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<RescueTeamDetail> 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<RescueTeamDetail> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(RescueTeamDetail::getTeamId,teamId);
detailAutoDao.remove(queryWrapper);
}
public Boolean delete(Long teamId) {
deleteDetailAndObj(teamId);
rescueTeamFileMapper.delete(new LambdaUpdateWrapper<RescueTeamFile>()
.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<RescueTeamFile> createAttachList(RescueTeamB RescueTeamB) {
List<String> fileIds = RescueTeamB.getFileIds();
if (fileIds == null) return null;
List<RescueTeamFile> 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";
}
}