gasWellWatch/src/main/java/com/isu/gaswellwatch/service/impl/BlockServiceImpl.java

167 lines
5.4 KiB
Java

package com.isu.gaswellwatch.service.impl;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.isu.gaswellwatch.config.SnowflakeConfig;
import com.isu.gaswellwatch.constants.UserConstant;
import com.isu.gaswellwatch.entity.*;
import com.isu.gaswellwatch.service.BlockDepartmentService;
import com.isu.gaswellwatch.service.UserService;
import com.isu.gaswellwatch.utils.ConverterUtil;
import com.isu.gaswellwatch.vo.UserLoginInfoVO;
import com.isu.gaswellwatch.vo.UserVO;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.isu.gaswellwatch.dto.BlockCreateRequest;
import com.isu.gaswellwatch.dto.BlockEditRequest;
import com.isu.gaswellwatch.vo.BlockPageQuery;
import com.isu.gaswellwatch.vo.BlockVO;
import com.isu.gaswellwatch.dao.BlockDao;
import com.isu.gaswellwatch.service.BlockService;
import com.isu.gaswellwatch.mapper.BlockMapper;
import org.mapstruct.factory.Mappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
/**
* 区块Service业务层处理
*
* @author scwsl
* @date 2024-11-17
*/
@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class BlockServiceImpl extends ServiceImpl<BlockDao, Block> implements BlockService {
private final BlockDao blockDao;
private final BlockMapper blockMapper = Mappers.getMapper(BlockMapper.class);
@Resource
private BlockDepartmentService blockDepartmentService;
@Resource
private UserService userService;
@Resource
private SnowflakeConfig snowflakeConfig;
/**
* 查询区块
*
* @param id 区块主键
* @return 区块
*/
@Override
public BlockVO selectBlockById(Long id) {
return ConverterUtil.convert(blockDao.selectBlockById(id),BlockVO.class);
}
/**
* 查询区块列表
*
* @return 区块
*/
@Override
public List<BlockVO> selectBlockList() {
//根据当前用户所属的部门筛选可以看到的区块
UserLoginInfoVO userLoginInfoVO = (UserLoginInfoVO) StpUtil.getTokenSession().get(UserConstant.TOKEN_SESSION);
UserVO userVO = userService.selectUserInfo(userLoginInfoVO.getUserVO().getUsername());
if("admin".equals(userVO.getUsername())){
//对admin用户不进行过滤筛选
return blockDao.selectBlockList(null);
}else{
if(userVO.getDepartment()!=null){
return blockDao.selectBlockList(userVO.getDepartment().getId());
}else{
return new ArrayList<>();
}
}
}
/**
* 分页查询区块列表
*
* @param name 区块名称
* @return 区块
*/
@Override
public Page<BlockVO> pageForQuery(Integer currentPage,Integer pageSize,String name){
return blockDao.pageForQuery(new Page<>(currentPage, pageSize), name);
}
/**
* 新增区块
*
* @param blockCreateRequest 区块
* @return 结果
*/
@Override
@Transactional(rollbackFor = Throwable.class)
public void insertBlock(BlockCreateRequest blockCreateRequest) {
blockCreateRequest.setId(snowflakeConfig.snowflakeId());
blockDao.insertBlock(blockMapper.create(blockCreateRequest));
//增加区块部门关联
if(blockCreateRequest.getDepartmentId()!=null){
blockDepartmentService.remove(new LambdaQueryWrapper<BlockDepartment>().eq(BlockDepartment::getBlockId, blockCreateRequest.getId()));
addDepartment(blockCreateRequest.getDepartmentId(), blockCreateRequest.getId());
}
}
private void addDepartment(Long departmentId, Long blockId) {
BlockDepartment.builder().id(snowflakeConfig.snowflakeId()).blockId(blockId).departmentId(departmentId).build().insert();
}
/**
* 修改区块
*
* @param blockEditRequest 区块
* @return 结果
*/
@Override
@Transactional(rollbackFor = Throwable.class)
public void updateBlock(BlockEditRequest blockEditRequest) {
updateById(Block.builder().id(blockEditRequest.getId()).name(blockEditRequest.getName()).details(blockEditRequest.getDetails()).build());
//增加区块部门关联
if(blockEditRequest.getDepartmentId()!=null){
blockDepartmentService.remove(new LambdaQueryWrapper<BlockDepartment>().eq(BlockDepartment::getBlockId, blockEditRequest.getId()));
addDepartment(blockEditRequest.getDepartmentId(), blockEditRequest.getId());
}
}
/**
* 删除区块信息
*
* @param id 区块主键
* @return 结果
*/
@Override
@Transactional(rollbackFor = Throwable.class)
public void deleteBlockById(Long id) {
//TODO 校验区块是否被气井关联
blockDao.deleteBlockById(id);
blockDepartmentService.remove(new LambdaQueryWrapper<BlockDepartment>().eq(BlockDepartment::getBlockId, id));
}
/**
* 批量删除删除区块信息
*
* @param ids 区块主键
* @return 数量
*/
@Override
@Transactional(rollbackFor = Throwable.class)
public int deleteBlockByIds(Collection<Long> ids) {
return blockDao.deleteBlockByIds(ids);
}
}