添加项目、材料、机械删除校验;添加联表查询
This commit is contained in:
@ -12,6 +12,8 @@ import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.ObjectUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.core.utils.sql.SqlUtil;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.machinery.domain.BusMachinery;
|
||||
import org.dromara.machinery.domain.BusMachineryDetail;
|
||||
import org.dromara.machinery.domain.req.machinerydetail.MachineryDetailCreateReq;
|
||||
import org.dromara.machinery.domain.req.machinerydetail.MachineryDetailQueryReq;
|
||||
@ -20,6 +22,7 @@ import org.dromara.machinery.domain.vo.BusMachineryDetailVo;
|
||||
import org.dromara.machinery.mapper.BusMachineryDetailMapper;
|
||||
import org.dromara.machinery.service.IBusMachineryDetailService;
|
||||
import org.dromara.machinery.service.IBusMachineryService;
|
||||
import org.dromara.project.service.IBusProjectService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -41,6 +44,9 @@ public class BusMachineryDetailServiceImpl extends ServiceImpl<BusMachineryDetai
|
||||
@Resource
|
||||
private IBusMachineryService machineryService;
|
||||
|
||||
@Resource
|
||||
private IBusProjectService projectService;
|
||||
|
||||
/**
|
||||
* 查询机械详情
|
||||
*
|
||||
@ -131,7 +137,7 @@ public class BusMachineryDetailServiceImpl extends ServiceImpl<BusMachineryDetai
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(BusMachineryDetail entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
// 做一些数据校验,如唯一约束
|
||||
Long machineryId = entity.getMachineryId();
|
||||
if (machineryId == null) {
|
||||
throw new ServiceException("机械 id 不能为空", HttpStatus.BAD_REQUEST);
|
||||
@ -155,8 +161,19 @@ public class BusMachineryDetailServiceImpl extends ServiceImpl<BusMachineryDetai
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
Long userId = LoginHelper.getUserId();
|
||||
List<BusMachineryDetail> machineryDetailList = this.listByIds(ids);
|
||||
// 做一些业务上的校验,判断是否需要校验
|
||||
if (isValid) {
|
||||
// TODO 做一些业务上的校验,判断是否需要校验
|
||||
// 获取机械id列表
|
||||
List<Long> machineryIdList = machineryDetailList.stream().map(BusMachineryDetail::getMachineryId).toList();
|
||||
List<BusMachinery> machineryList = machineryService.listByIds(machineryIdList);
|
||||
// 获取对应项目id列表
|
||||
List<Long> projectIdList = machineryList.stream().map(BusMachinery::getProjectId).toList();
|
||||
projectService.validAuth(projectIdList, userId);
|
||||
}
|
||||
if (machineryDetailList.size() != ids.size()) {
|
||||
throw new ServiceException("删除机械详情失败,数据缺失", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
return this.removeBatchByIds(ids);
|
||||
}
|
||||
|
||||
@ -14,14 +14,17 @@ import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.core.utils.sql.SqlUtil;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.machinery.domain.BusMachinery;
|
||||
import org.dromara.machinery.domain.BusMachineryDetail;
|
||||
import org.dromara.machinery.domain.req.machinery.MachineryCreateReq;
|
||||
import org.dromara.machinery.domain.req.machinery.MachineryQueryReq;
|
||||
import org.dromara.machinery.domain.req.machinery.MachineryUpdateReq;
|
||||
import org.dromara.machinery.domain.vo.BusMachineryVo;
|
||||
import org.dromara.machinery.mapper.BusMachineryMapper;
|
||||
import org.dromara.machinery.service.IBusMachineryDetailService;
|
||||
import org.dromara.machinery.service.IBusMachineryService;
|
||||
import org.dromara.project.service.IBusProjectService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@ -41,6 +44,10 @@ public class BusMachineryServiceImpl extends ServiceImpl<BusMachineryMapper, Bus
|
||||
@Resource
|
||||
private IBusProjectService projectService;
|
||||
|
||||
@Lazy
|
||||
@Resource
|
||||
private IBusMachineryDetailService machineryDetailService;
|
||||
|
||||
/**
|
||||
* 查询机械
|
||||
*
|
||||
@ -131,7 +138,7 @@ public class BusMachineryServiceImpl extends ServiceImpl<BusMachineryMapper, Bus
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(BusMachinery entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
// 做一些数据校验,如唯一约束
|
||||
Long projectId = entity.getProjectId();
|
||||
if (projectId == null) {
|
||||
throw new ServiceException("项目 id 不能为空", HttpStatus.BAD_REQUEST);
|
||||
@ -158,8 +165,23 @@ public class BusMachineryServiceImpl extends ServiceImpl<BusMachineryMapper, Bus
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
Long userId = LoginHelper.getUserId();
|
||||
List<BusMachinery> machineryList = this.listByIds(ids);
|
||||
if (isValid) {
|
||||
// TODO 做一些业务上的校验,判断是否需要校验
|
||||
// 做一些业务上的校验,判断是否需要校验
|
||||
// 获取项目id列表
|
||||
List<Long> projectIdList = machineryList.stream().map(BusMachinery::getProjectId).toList();
|
||||
// 判断是否有权限操作对应项目下的内容
|
||||
projectService.validAuth(projectIdList, userId);
|
||||
// 判断是否还存在机械详情信息
|
||||
QueryWrapper<BusMachineryDetail> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.in("machinery_id", ids);
|
||||
if (machineryDetailService.count(queryWrapper) > 0) {
|
||||
throw new ServiceException("删除机械失败,机械存在机械详情信息", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
if (machineryList.size() != ids.size()) {
|
||||
throw new ServiceException("删除机械失败,数据缺失", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
return this.removeBatchByIds(ids);
|
||||
}
|
||||
|
||||
@ -29,6 +29,11 @@ public class MaterialsInventoryQueryReq extends PageRequest implements Serializa
|
||||
*/
|
||||
private Long materialsId;
|
||||
|
||||
/**
|
||||
* 材料名称
|
||||
*/
|
||||
private String materialsName;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
|
||||
@ -13,7 +13,9 @@ import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.ObjectUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.core.utils.sql.SqlUtil;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.materials.domain.BusCompany;
|
||||
import org.dromara.materials.domain.BusMaterials;
|
||||
import org.dromara.materials.domain.req.company.CompanyCreateReq;
|
||||
import org.dromara.materials.domain.req.company.CompanyQueryReq;
|
||||
import org.dromara.materials.domain.req.company.CompanyUpdateReq;
|
||||
@ -22,6 +24,7 @@ import org.dromara.materials.mapper.BusCompanyMapper;
|
||||
import org.dromara.materials.service.IBusCompanyService;
|
||||
import org.dromara.project.service.IBusProjectService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collection;
|
||||
@ -43,6 +46,10 @@ public class BusCompanyServiceImpl extends ServiceImpl<BusCompanyMapper, BusComp
|
||||
@Resource
|
||||
private IBusProjectService projectService;
|
||||
|
||||
@Lazy
|
||||
@Resource
|
||||
private BusMaterialsServiceImpl materialService;
|
||||
|
||||
/**
|
||||
* 查询公司
|
||||
*
|
||||
@ -128,7 +135,7 @@ public class BusCompanyServiceImpl extends ServiceImpl<BusCompanyMapper, BusComp
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(BusCompany entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
// 做一些数据校验,如唯一约束
|
||||
String companyName = entity.getCompanyName();
|
||||
Long projectId = entity.getProjectId();
|
||||
if (StringUtils.isBlank(companyName)) {
|
||||
@ -159,8 +166,25 @@ public class BusCompanyServiceImpl extends ServiceImpl<BusCompanyMapper, BusComp
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
// 获取当前登录用户
|
||||
Long userId = LoginHelper.getUserId();
|
||||
List<BusCompany> companyList = this.listByIds(ids);
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
// 做一些业务上的校验,判断是否需要校验
|
||||
// 获取项目id列表
|
||||
List<Long> projectIdList = companyList.stream().map(BusCompany::getProjectId).toList();
|
||||
// 判断是否有权限操作对应项目下的内容
|
||||
projectService.validAuth(projectIdList, userId);
|
||||
// 判断公司中是否还存在材料信息
|
||||
QueryWrapper<BusMaterials> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.in("company_id", ids);
|
||||
if (materialService.count(queryWrapper) > 0) {
|
||||
throw new ServiceException("删除公司失败,公司中存在材料信息", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
// 判断对应数据是否都存在
|
||||
if (companyList.size() != ids.size()) {
|
||||
throw new ServiceException("删除公司失败,数据缺失", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
@ -12,6 +12,8 @@ import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.ObjectUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.core.utils.sql.SqlUtil;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.materials.domain.BusMaterials;
|
||||
import org.dromara.materials.domain.BusMaterialsInventory;
|
||||
import org.dromara.materials.domain.req.materialsinventory.MaterialsInventoryCreateReq;
|
||||
import org.dromara.materials.domain.req.materialsinventory.MaterialsInventoryQueryReq;
|
||||
@ -137,7 +139,6 @@ public class BusMaterialsInventoryServiceImpl extends ServiceImpl<BusMaterialsIn
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(BusMaterialsInventory entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
Long materialsId = entity.getMaterialsId();
|
||||
Long projectId = entity.getProjectId();
|
||||
String outPut = entity.getOutPut();
|
||||
@ -167,8 +168,19 @@ public class BusMaterialsInventoryServiceImpl extends ServiceImpl<BusMaterialsIn
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
// 获取当前登录用户
|
||||
Long userId = LoginHelper.getUserId();
|
||||
List<BusMaterialsInventory> materialsInventoryList = this.listByIds(ids);
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
// 做一些业务上的校验,判断是否需要校验
|
||||
// 获取项目id列表
|
||||
List<Long> projectIdList = materialsInventoryList.stream().map(BusMaterialsInventory::getProjectId).toList();
|
||||
// 判断是否有权限操作对应项目下的内容
|
||||
projectService.validAuth(projectIdList, userId);
|
||||
}
|
||||
// 判断对应数据是否都存在
|
||||
if (materialsInventoryList.size() != ids.size()) {
|
||||
throw new ServiceException("删除材料出/入库失败,数据缺失", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
@ -210,6 +222,7 @@ public class BusMaterialsInventoryServiceImpl extends ServiceImpl<BusMaterialsIn
|
||||
// 从对象中取值
|
||||
Long id = req.getId();
|
||||
Long materialsId = req.getMaterialsId();
|
||||
String materialsName = req.getMaterialsName();
|
||||
Long projectId = req.getProjectId();
|
||||
String outPut = req.getOutPut();
|
||||
Long number = req.getNumber();
|
||||
@ -223,12 +236,20 @@ public class BusMaterialsInventoryServiceImpl extends ServiceImpl<BusMaterialsIn
|
||||
String sortField = req.getSortField();
|
||||
String sortOrder = req.getSortOrder();
|
||||
String underlineSortField = StrUtil.toUnderlineCase(sortField);
|
||||
// 联表查询
|
||||
if (StringUtils.isNotBlank(materialsName)) {
|
||||
QueryWrapper<BusMaterials> materialsQueryWrapper = new QueryWrapper<>();
|
||||
materialsQueryWrapper.select("id");
|
||||
materialsQueryWrapper.like("materials_name", materialsName);
|
||||
List<Long> materialsIdList = materialsService.listObjs(materialsQueryWrapper, obj -> (Long) obj);
|
||||
queryWrapper.in("materials_id", materialsIdList);
|
||||
}
|
||||
// 模糊查询
|
||||
queryWrapper.like(StringUtils.isNotBlank(operator), "operator", operator);
|
||||
queryWrapper.like(StringUtils.isNotBlank(remark), "remark", remark);
|
||||
queryWrapper.like(StringUtils.isNotBlank(disposition), "disposition", disposition);
|
||||
queryWrapper.like(StringUtils.isNotBlank(recipient), recipient, recipient);
|
||||
queryWrapper.like(StringUtils.isNotBlank(shipper), shipper, shipper);
|
||||
queryWrapper.like(StringUtils.isNotBlank(recipient), "recipient", recipient);
|
||||
queryWrapper.like(StringUtils.isNotBlank(shipper), "shipper", shipper);
|
||||
// 精确查询
|
||||
queryWrapper.eq(ObjectUtils.isNotEmpty(id), "id", id);
|
||||
queryWrapper.eq(ObjectUtils.isNotEmpty(projectId), "project_id", projectId);
|
||||
|
||||
@ -13,16 +13,20 @@ import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.ObjectUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.core.utils.sql.SqlUtil;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.materials.domain.BusMaterials;
|
||||
import org.dromara.materials.domain.BusMaterialsInventory;
|
||||
import org.dromara.materials.domain.req.materials.MaterialsCreateReq;
|
||||
import org.dromara.materials.domain.req.materials.MaterialsQueryReq;
|
||||
import org.dromara.materials.domain.req.materials.MaterialsUpdateReq;
|
||||
import org.dromara.materials.domain.vo.BusMaterialsVo;
|
||||
import org.dromara.materials.mapper.BusMaterialsMapper;
|
||||
import org.dromara.materials.service.IBusCompanyService;
|
||||
import org.dromara.materials.service.IBusMaterialsInventoryService;
|
||||
import org.dromara.materials.service.IBusMaterialsService;
|
||||
import org.dromara.project.service.IBusProjectService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collection;
|
||||
@ -48,6 +52,10 @@ public class BusMaterialsServiceImpl extends ServiceImpl<BusMaterialsMapper, Bus
|
||||
@Resource
|
||||
private IBusProjectService projectService;
|
||||
|
||||
@Lazy
|
||||
@Resource
|
||||
private IBusMaterialsInventoryService materialsInventoryService;
|
||||
|
||||
/**
|
||||
* 查询材料名称
|
||||
*
|
||||
@ -134,7 +142,7 @@ public class BusMaterialsServiceImpl extends ServiceImpl<BusMaterialsMapper, Bus
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(BusMaterials entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
// 做一些数据校验,如唯一约束
|
||||
String materialsName = entity.getMaterialsName();
|
||||
Long companyId = entity.getCompanyId();
|
||||
Long projectId = entity.getProjectId();
|
||||
@ -164,8 +172,23 @@ public class BusMaterialsServiceImpl extends ServiceImpl<BusMaterialsMapper, Bus
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
Long userId = LoginHelper.getUserId();
|
||||
List<BusMaterials> materialsList = this.listByIds(ids);
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
// 做一些业务上的校验,判断是否需要校验
|
||||
// 获取项目id列表
|
||||
List<Long> projectIdList = materialsList.stream().map(BusMaterials::getProjectId).toList();
|
||||
// 判断是否有权限操作对应项目下的内容
|
||||
projectService.validAuth(projectIdList, userId);
|
||||
// 判断公司中是否还存在材料信息
|
||||
QueryWrapper<BusMaterialsInventory> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.in("materials", ids);
|
||||
if (materialsInventoryService.count(queryWrapper) > 0) {
|
||||
throw new ServiceException("删除材料失败,材料存在库存信息", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
if (materialsList.size() != ids.size()) {
|
||||
throw new ServiceException("删除材料信息失败,数据缺失", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
@ -38,6 +38,11 @@ public class ProjectTeamMemberQueryReq extends PageRequest implements Serializab
|
||||
*/
|
||||
private Long memberId;
|
||||
|
||||
/**
|
||||
* 施工人员名称
|
||||
*/
|
||||
private String memberName;
|
||||
|
||||
/**
|
||||
* 岗位(默认为0普通员工,1组长)
|
||||
*/
|
||||
|
||||
@ -101,4 +101,12 @@ public interface IBusProjectService extends IService<BusProject> {
|
||||
*/
|
||||
void validAuth(Long projectId, Long userId);
|
||||
|
||||
/**
|
||||
* 校验用户是否拥有操作项目的权限
|
||||
*
|
||||
* @param projectIdList 项目id列表
|
||||
* @param userId 需要鉴权的用户id
|
||||
*/
|
||||
void validAuth(Collection<Long> projectIdList, Long userId);
|
||||
|
||||
}
|
||||
|
||||
@ -12,8 +12,10 @@ import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.ObjectUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.core.utils.sql.SqlUtil;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.project.domain.BusConstructionUser;
|
||||
import org.dromara.project.domain.BusContractor;
|
||||
import org.dromara.project.domain.BusProjectTeamMember;
|
||||
import org.dromara.project.domain.req.constructionuser.ConstructionUserCreateReq;
|
||||
import org.dromara.project.domain.req.constructionuser.ConstructionUserQueryReq;
|
||||
import org.dromara.project.domain.req.constructionuser.ConstructionUserUpdateReq;
|
||||
@ -23,7 +25,9 @@ import org.dromara.project.mapper.BusConstructionUserMapper;
|
||||
import org.dromara.project.service.IBusConstructionUserService;
|
||||
import org.dromara.project.service.IBusContractorService;
|
||||
import org.dromara.project.service.IBusProjectService;
|
||||
import org.dromara.project.service.IBusProjectTeamMemberService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@ -46,9 +50,14 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU
|
||||
@Resource
|
||||
private IBusProjectService projectService;
|
||||
|
||||
@Lazy
|
||||
@Resource
|
||||
private IBusContractorService contractorService;
|
||||
|
||||
@Lazy
|
||||
@Resource
|
||||
private IBusProjectTeamMemberService projectTeamMemberService;
|
||||
|
||||
/**
|
||||
* 查询施工人员
|
||||
*
|
||||
@ -168,8 +177,24 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
Long userId = LoginHelper.getUserId();
|
||||
List<BusConstructionUser> constructionUserList = this.listByIds(ids);
|
||||
if (isValid) {
|
||||
// TODO 做一些业务上的校验,判断是否需要校验
|
||||
// 做一些业务上的校验,判断是否需要校验
|
||||
// 获取项目id列表
|
||||
List<Long> projectIdList = constructionUserList.stream().map(BusConstructionUser::getProjectId).toList();
|
||||
// 判断是否有权限操作对应项目下的内容
|
||||
projectService.validAuth(projectIdList, userId);
|
||||
// 判断待删除的人员是否存在于班组
|
||||
QueryWrapper<BusProjectTeamMember> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.in("member_id", ids);
|
||||
if (projectTeamMemberService.count(queryWrapper) > 0) {
|
||||
throw new ServiceException("删除施工人员失败,施工人员存在于班组中", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
// 判断对应数据是否都存在
|
||||
if (constructionUserList.size() != ids.size()) {
|
||||
throw new ServiceException("删除施工人员信息失败,数据缺失", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
return this.removeBatchByIds(ids);
|
||||
}
|
||||
|
||||
@ -5,18 +5,22 @@ import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.dromara.common.core.constant.CommonConstant;
|
||||
import org.dromara.common.core.constant.HttpStatus;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.ObjectUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.core.utils.sql.SqlUtil;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.project.domain.BusConstructionUser;
|
||||
import org.dromara.project.domain.BusContractor;
|
||||
import org.dromara.project.domain.req.contractor.ContractorCreateReq;
|
||||
import org.dromara.project.domain.req.contractor.ContractorQueryReq;
|
||||
import org.dromara.project.domain.req.contractor.ContractorUpdateReq;
|
||||
import org.dromara.project.domain.vo.BusContractorVo;
|
||||
import org.dromara.project.mapper.BusContractorMapper;
|
||||
import org.dromara.project.service.IBusConstructionUserService;
|
||||
import org.dromara.project.service.IBusContractorService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -35,6 +39,9 @@ import java.util.List;
|
||||
public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, BusContractor>
|
||||
implements IBusContractorService {
|
||||
|
||||
@Resource
|
||||
private IBusConstructionUserService constructionUserService;
|
||||
|
||||
/**
|
||||
* 查询分包单位
|
||||
*
|
||||
@ -125,7 +132,7 @@ public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, B
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(BusContractor entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
// 做一些数据校验,如唯一约束
|
||||
String name = entity.getName();
|
||||
if (StringUtils.isBlank(name)) {
|
||||
throw new ServiceException("分包单位名称不能为空", HttpStatus.BAD_REQUEST);
|
||||
@ -146,8 +153,26 @@ public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, B
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
Long userId = LoginHelper.getUserId();
|
||||
List<BusContractor> contractorList = this.listByIds(ids);
|
||||
// 做一些业务上的校验,判断是否需要校验
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
// 仅创建用户可以删除
|
||||
contractorList.forEach(contractor -> {
|
||||
if (!contractor.getCreateBy().equals(userId)) {
|
||||
throw new ServiceException("您无权删除该分包单位", HttpStatus.FORBIDDEN);
|
||||
}
|
||||
});
|
||||
// 判断当前分包公司下是否还包含施工人员
|
||||
QueryWrapper<BusConstructionUser> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.in("contractor_id", ids);
|
||||
if (constructionUserService.count(queryWrapper) > 0) {
|
||||
throw new ServiceException("删除分包单位失败,删除分包单位下存在施工人员", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
// 判断对应数据是否都存在
|
||||
if (contractorList.size() != ids.size()) {
|
||||
throw new ServiceException("删除分包单位失败,数据缺失", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
return this.removeBatchByIds(ids);
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package org.dromara.project.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@ -25,9 +26,12 @@ import org.dromara.project.service.IBusUserProjectRelevancyService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 项目Service业务层处理
|
||||
@ -175,12 +179,27 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
Long userId = LoginHelper.getUserId();
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
|
||||
// 做一些业务上的校验,判断是否需要校验
|
||||
this.validAuth(ids, userId);
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
// 删除项目
|
||||
boolean removeProjectList = this.removeBatchByIds(ids);
|
||||
if (!removeProjectList) {
|
||||
throw new ServiceException("删除项目失败,数据库异常", HttpStatus.ERROR);
|
||||
}
|
||||
// 删除用户与项目关联表
|
||||
QueryWrapper<BusUserProjectRelevancy> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("user_id", userId);
|
||||
queryWrapper.in("project_id", ids);
|
||||
boolean removeRelevancyList = userProjectRelevancyService.remove(queryWrapper);
|
||||
if (!removeRelevancyList) {
|
||||
throw new ServiceException("删除项目与用户关联失败,数据库异常", HttpStatus.ERROR);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -285,7 +304,32 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
|
||||
queryWrapper.eq("project_id", projectId);
|
||||
queryWrapper.eq("user_id", userId);
|
||||
if (userProjectRelevancyService.count(queryWrapper) <= 0) {
|
||||
throw new ServiceException("当前用户无权限操作", HttpStatus.UNAUTHORIZED);
|
||||
throw new ServiceException("当前用户无权限操作", HttpStatus.FORBIDDEN);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验用户是否拥有操作项目的权限
|
||||
*
|
||||
* @param projectIdList 项目id列表
|
||||
* @param userId 需要鉴权的用户id
|
||||
*/
|
||||
@Override
|
||||
public void validAuth(Collection<Long> projectIdList, Long userId) {
|
||||
// 查询关联表,返回和用户关联的项目ID列表
|
||||
Set<Long> collect = userProjectRelevancyService.listObjs(
|
||||
new LambdaQueryWrapper<BusUserProjectRelevancy>()
|
||||
.select(BusUserProjectRelevancy::getProjectId)
|
||||
.in(BusUserProjectRelevancy::getProjectId, projectIdList)
|
||||
.eq(BusUserProjectRelevancy::getUserId, userId)
|
||||
.groupBy(BusUserProjectRelevancy::getProjectId)
|
||||
).stream().map(obj -> (Long) obj).collect(Collectors.toSet());
|
||||
// 找出没有关联数据的项目ID
|
||||
List<Long> invalidIds = projectIdList.stream()
|
||||
.filter(id -> !collect.contains(id))
|
||||
.toList();
|
||||
if (!invalidIds.isEmpty()) {
|
||||
throw new ServiceException("删除失败,项目编号为:" + invalidIds + ",没有操作权限", HttpStatus.FORBIDDEN);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -14,6 +14,7 @@ import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.ObjectUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.core.utils.sql.SqlUtil;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.project.domain.BusConstructionUser;
|
||||
import org.dromara.project.domain.BusProjectTeamMember;
|
||||
import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberCreateReq;
|
||||
@ -199,12 +200,18 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl<BusProjectTeamM
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
Long userId = LoginHelper.getUserId();
|
||||
List<BusProjectTeamMember> projectTeamMemberList = this.listByIds(ids);
|
||||
if (isValid) {
|
||||
// 做一些业务上的校验,判断是否需要校验
|
||||
// 获取项目id列表
|
||||
List<Long> projectIdList = projectTeamMemberList.stream().map(BusProjectTeamMember::getProjectId).toList();
|
||||
// 判断是否有权限操作对应项目下的内容
|
||||
projectService.validAuth(projectIdList, userId);
|
||||
}
|
||||
// 判断对应数据是否都存在
|
||||
if (projectTeamMemberList.size() != ids.size()) {
|
||||
throw new ServiceException("删除项目班组下的成员失败,数据缺失", HttpStatus.NOT_FOUND);
|
||||
throw new ServiceException("删除项目班组下的成员失败,数据缺失", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
List<Long> memberIds = projectTeamMemberList.stream().map(BusProjectTeamMember::getMemberId).toList();
|
||||
LambdaUpdateWrapper<BusConstructionUser> queryWrapper = new LambdaUpdateWrapper<>();
|
||||
@ -252,11 +259,20 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl<BusProjectTeamM
|
||||
Long teamId = req.getTeamId();
|
||||
Long projectId = req.getProjectId();
|
||||
Long memberId = req.getMemberId();
|
||||
String memberName = req.getMemberName();
|
||||
String postId = req.getPostId();
|
||||
String remark = req.getRemark();
|
||||
String sortField = req.getSortField();
|
||||
String sortOrder = req.getSortOrder();
|
||||
String underlineSortField = StrUtil.toUnderlineCase(sortField);
|
||||
// 联表查询
|
||||
if (StringUtils.isNotBlank(memberName)) {
|
||||
QueryWrapper<BusConstructionUser> constructionUserQueryWrapper = new QueryWrapper<>();
|
||||
constructionUserQueryWrapper.select("id");
|
||||
constructionUserQueryWrapper.like("user_name", memberName);
|
||||
List<Long> constructionUserIdList = constructionUserService.listObjs(constructionUserQueryWrapper, obj -> (Long) obj);
|
||||
queryWrapper.in("member_id", constructionUserIdList);
|
||||
}
|
||||
// 模糊查询
|
||||
queryWrapper.like(StringUtils.isNotBlank(remark), "remark", remark);
|
||||
// 精确查询
|
||||
|
||||
@ -164,8 +164,20 @@ public class BusProjectTeamServiceImpl extends ServiceImpl<BusProjectTeamMapper,
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
// 获取当前登录用户
|
||||
Long userId = LoginHelper.getUserId();
|
||||
// 获取待删除数据详情
|
||||
List<BusProjectTeam> projectTeamList = this.listByIds(ids);
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
// 做一些业务上的校验,判断是否需要校验
|
||||
// 获取项目id列表
|
||||
List<Long> projectIdList = projectTeamList.stream().map(BusProjectTeam::getProjectId).toList();
|
||||
// 判断是否有权限操作对应项目下的内容
|
||||
projectService.validAuth(projectIdList, userId);
|
||||
}
|
||||
// 判断对应数据是否都存在
|
||||
if (projectTeamList.size() != ids.size()) {
|
||||
throw new ServiceException("删除项目班组失败,数据缺失", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
return this.removeBatchByIds(ids);
|
||||
}
|
||||
|
||||
@ -13,6 +13,7 @@ import org.dromara.common.core.constant.HttpStatus;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.ObjectUtils;
|
||||
import org.dromara.common.core.utils.sql.SqlUtil;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.project.domain.BusProject;
|
||||
import org.dromara.project.domain.BusUserProjectRelevancy;
|
||||
import org.dromara.project.domain.req.project.ProjectBatchByProjectListReq;
|
||||
@ -79,7 +80,7 @@ public class BusUserProjectRelevancyServiceImpl extends ServiceImpl<BusUserProje
|
||||
long size = req.getPageSize();
|
||||
QueryWrapper<BusUserProjectRelevancy> queryWrapper = this.getQueryWrapper(req);
|
||||
// 查询数据库
|
||||
Page<BusUserProjectRelevancy> result = this.page(new Page<>(current, size), this.getQueryWrapper(req));
|
||||
Page<BusUserProjectRelevancy> result = this.page(new Page<>(current, size), queryWrapper);
|
||||
return this.getVoPage(result);
|
||||
}
|
||||
|
||||
@ -177,8 +178,20 @@ public class BusUserProjectRelevancyServiceImpl extends ServiceImpl<BusUserProje
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
// 获取当前登录用户
|
||||
Long userId = LoginHelper.getUserId();
|
||||
// 获取待删除数据详情
|
||||
List<BusUserProjectRelevancy> busUserProjectRelevancyList = this.listByIds(ids);
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
// 做一些业务上的校验,判断是否需要校验
|
||||
// 获取项目id列表
|
||||
List<Long> projectIdList = busUserProjectRelevancyList.stream().map(BusUserProjectRelevancy::getProjectId).toList();
|
||||
// 判断是否有权限操作对应项目下的内容
|
||||
projectService.validAuth(projectIdList, userId);
|
||||
}
|
||||
// 判断对应数据是否都存在
|
||||
if (busUserProjectRelevancyList.size() != ids.size()) {
|
||||
throw new ServiceException("删除系统用户与项目关联失败,数据缺失", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user