From db4742e606ba6c1ffb4027aa7a11d8598ac9e95f Mon Sep 17 00:00:00 2001 From: lcj <2331845269@qq.com> Date: Thu, 13 Mar 2025 10:39:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A1=B9=E7=9B=AE=E3=80=81?= =?UTF-8?q?=E6=9D=90=E6=96=99=E3=80=81=E6=9C=BA=E6=A2=B0=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=EF=BC=9B=E6=B7=BB=E5=8A=A0=E8=81=94=E8=A1=A8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/BusMachineryDetailServiceImpl.java | 21 +++++++- .../service/impl/BusMachineryServiceImpl.java | 26 +++++++++- .../MaterialsInventoryQueryReq.java | 5 ++ .../service/impl/BusCompanyServiceImpl.java | 28 +++++++++- .../BusMaterialsInventoryServiceImpl.java | 29 +++++++++-- .../service/impl/BusMaterialsServiceImpl.java | 27 +++++++++- .../ProjectTeamMemberQueryReq.java | 5 ++ .../project/service/IBusProjectService.java | 8 +++ .../impl/BusConstructionUserServiceImpl.java | 27 +++++++++- .../impl/BusContractorServiceImpl.java | 29 ++++++++++- .../service/impl/BusProjectServiceImpl.java | 52 +++++++++++++++++-- .../impl/BusProjectTeamMemberServiceImpl.java | 24 +++++++-- .../impl/BusProjectTeamServiceImpl.java | 14 ++++- .../BusUserProjectRelevancyServiceImpl.java | 17 +++++- .../api/materials/materialsInventory/types.ts | 12 +++++ .../api/project/projectTeamMember/types.ts | 5 ++ .../materials/materialsInventory/index.vue | 24 +++------ .../src/views/project/contractor/index.vue | 2 +- plus-ui/src/views/project/project/index.vue | 8 +-- .../projectTeam/component/UserListDialog.vue | 4 +- 20 files changed, 314 insertions(+), 53 deletions(-) diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/service/impl/BusMachineryDetailServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/service/impl/BusMachineryDetailServiceImpl.java index 46c636e6..f2008348 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/service/impl/BusMachineryDetailServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/service/impl/BusMachineryDetailServiceImpl.java @@ -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 ids, Boolean isValid) { + Long userId = LoginHelper.getUserId(); + List machineryDetailList = this.listByIds(ids); + // 做一些业务上的校验,判断是否需要校验 if (isValid) { - // TODO 做一些业务上的校验,判断是否需要校验 + // 获取机械id列表 + List machineryIdList = machineryDetailList.stream().map(BusMachineryDetail::getMachineryId).toList(); + List machineryList = machineryService.listByIds(machineryIdList); + // 获取对应项目id列表 + List 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); } diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/service/impl/BusMachineryServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/service/impl/BusMachineryServiceImpl.java index babdf552..c460c85d 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/service/impl/BusMachineryServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/machinery/service/impl/BusMachineryServiceImpl.java @@ -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 ids, Boolean isValid) { + Long userId = LoginHelper.getUserId(); + List machineryList = this.listByIds(ids); if (isValid) { - // TODO 做一些业务上的校验,判断是否需要校验 + // 做一些业务上的校验,判断是否需要校验 + // 获取项目id列表 + List projectIdList = machineryList.stream().map(BusMachinery::getProjectId).toList(); + // 判断是否有权限操作对应项目下的内容 + projectService.validAuth(projectIdList, userId); + // 判断是否还存在机械详情信息 + QueryWrapper 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); } diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/req/materialsinventory/MaterialsInventoryQueryReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/req/materialsinventory/MaterialsInventoryQueryReq.java index b351e858..f2a7279d 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/req/materialsinventory/MaterialsInventoryQueryReq.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/req/materialsinventory/MaterialsInventoryQueryReq.java @@ -29,6 +29,11 @@ public class MaterialsInventoryQueryReq extends PageRequest implements Serializa */ private Long materialsId; + /** + * 材料名称 + */ + private String materialsName; + /** * 项目id */ diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/BusCompanyServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/BusCompanyServiceImpl.java index 856e6788..77e4aa9f 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/BusCompanyServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/BusCompanyServiceImpl.java @@ -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 ids, Boolean isValid) { + // 获取当前登录用户 + Long userId = LoginHelper.getUserId(); + List companyList = this.listByIds(ids); if (isValid) { - //TODO 做一些业务上的校验,判断是否需要校验 + // 做一些业务上的校验,判断是否需要校验 + // 获取项目id列表 + List projectIdList = companyList.stream().map(BusCompany::getProjectId).toList(); + // 判断是否有权限操作对应项目下的内容 + projectService.validAuth(projectIdList, userId); + // 判断公司中是否还存在材料信息 + QueryWrapper 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; } diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/BusMaterialsInventoryServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/BusMaterialsInventoryServiceImpl.java index 14efe44e..e34cd8b2 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/BusMaterialsInventoryServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/BusMaterialsInventoryServiceImpl.java @@ -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 ids, Boolean isValid) { + // 获取当前登录用户 + Long userId = LoginHelper.getUserId(); + List materialsInventoryList = this.listByIds(ids); if (isValid) { - //TODO 做一些业务上的校验,判断是否需要校验 + // 做一些业务上的校验,判断是否需要校验 + // 获取项目id列表 + List 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 materialsQueryWrapper = new QueryWrapper<>(); + materialsQueryWrapper.select("id"); + materialsQueryWrapper.like("materials_name", materialsName); + List 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); diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/BusMaterialsServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/BusMaterialsServiceImpl.java index dcec6726..b4fcd720 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/BusMaterialsServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/BusMaterialsServiceImpl.java @@ -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 ids, Boolean isValid) { + Long userId = LoginHelper.getUserId(); + List materialsList = this.listByIds(ids); if (isValid) { - //TODO 做一些业务上的校验,判断是否需要校验 + // 做一些业务上的校验,判断是否需要校验 + // 获取项目id列表 + List projectIdList = materialsList.stream().map(BusMaterials::getProjectId).toList(); + // 判断是否有权限操作对应项目下的内容 + projectService.validAuth(projectIdList, userId); + // 判断公司中是否还存在材料信息 + QueryWrapper 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; } diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectteammember/ProjectTeamMemberQueryReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectteammember/ProjectTeamMemberQueryReq.java index 54812f66..b622d55b 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectteammember/ProjectTeamMemberQueryReq.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectteammember/ProjectTeamMemberQueryReq.java @@ -38,6 +38,11 @@ public class ProjectTeamMemberQueryReq extends PageRequest implements Serializab */ private Long memberId; + /** + * 施工人员名称 + */ + private String memberName; + /** * 岗位(默认为0普通员工,1组长) */ diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusProjectService.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusProjectService.java index 9de60cc7..6eb029b0 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusProjectService.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusProjectService.java @@ -101,4 +101,12 @@ public interface IBusProjectService extends IService { */ void validAuth(Long projectId, Long userId); + /** + * 校验用户是否拥有操作项目的权限 + * + * @param projectIdList 项目id列表 + * @param userId 需要鉴权的用户id + */ + void validAuth(Collection projectIdList, Long userId); + } diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserServiceImpl.java index b5608f9b..f7748f12 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserServiceImpl.java @@ -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 ids, Boolean isValid) { + Long userId = LoginHelper.getUserId(); + List constructionUserList = this.listByIds(ids); if (isValid) { - // TODO 做一些业务上的校验,判断是否需要校验 + // 做一些业务上的校验,判断是否需要校验 + // 获取项目id列表 + List projectIdList = constructionUserList.stream().map(BusConstructionUser::getProjectId).toList(); + // 判断是否有权限操作对应项目下的内容 + projectService.validAuth(projectIdList, userId); + // 判断待删除的人员是否存在于班组 + QueryWrapper 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); } diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusContractorServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusContractorServiceImpl.java index 3503ca38..8bd2ad47 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusContractorServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusContractorServiceImpl.java @@ -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 implements IBusContractorService { + @Resource + private IBusConstructionUserService constructionUserService; + /** * 查询分包单位 * @@ -125,7 +132,7 @@ public class BusContractorServiceImpl extends ServiceImpl ids, Boolean isValid) { + Long userId = LoginHelper.getUserId(); + List contractorList = this.listByIds(ids); + // 做一些业务上的校验,判断是否需要校验 if (isValid) { - //TODO 做一些业务上的校验,判断是否需要校验 + // 仅创建用户可以删除 + contractorList.forEach(contractor -> { + if (!contractor.getCreateBy().equals(userId)) { + throw new ServiceException("您无权删除该分包单位", HttpStatus.FORBIDDEN); + } + }); + // 判断当前分包公司下是否还包含施工人员 + QueryWrapper 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); } diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectServiceImpl.java index 99316b18..20fd16cf 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectServiceImpl.java @@ -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 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 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 projectIdList, Long userId) { + // 查询关联表,返回和用户关联的项目ID列表 + Set collect = userProjectRelevancyService.listObjs( + new LambdaQueryWrapper() + .select(BusUserProjectRelevancy::getProjectId) + .in(BusUserProjectRelevancy::getProjectId, projectIdList) + .eq(BusUserProjectRelevancy::getUserId, userId) + .groupBy(BusUserProjectRelevancy::getProjectId) + ).stream().map(obj -> (Long) obj).collect(Collectors.toSet()); + // 找出没有关联数据的项目ID + List invalidIds = projectIdList.stream() + .filter(id -> !collect.contains(id)) + .toList(); + if (!invalidIds.isEmpty()) { + throw new ServiceException("删除失败,项目编号为:" + invalidIds + ",没有操作权限", HttpStatus.FORBIDDEN); } } diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java index 5910c108..8f69fd9e 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java @@ -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 ids, Boolean isValid) { - if (isValid) { - //TODO 做一些业务上的校验,判断是否需要校验 - } + Long userId = LoginHelper.getUserId(); List projectTeamMemberList = this.listByIds(ids); + if (isValid) { + // 做一些业务上的校验,判断是否需要校验 + // 获取项目id列表 + List 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 memberIds = projectTeamMemberList.stream().map(BusProjectTeamMember::getMemberId).toList(); LambdaUpdateWrapper queryWrapper = new LambdaUpdateWrapper<>(); @@ -252,11 +259,20 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl constructionUserQueryWrapper = new QueryWrapper<>(); + constructionUserQueryWrapper.select("id"); + constructionUserQueryWrapper.like("user_name", memberName); + List constructionUserIdList = constructionUserService.listObjs(constructionUserQueryWrapper, obj -> (Long) obj); + queryWrapper.in("member_id", constructionUserIdList); + } // 模糊查询 queryWrapper.like(StringUtils.isNotBlank(remark), "remark", remark); // 精确查询 diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamServiceImpl.java index f3047dda..0f4da36e 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamServiceImpl.java @@ -164,8 +164,20 @@ public class BusProjectTeamServiceImpl extends ServiceImpl ids, Boolean isValid) { + // 获取当前登录用户 + Long userId = LoginHelper.getUserId(); + // 获取待删除数据详情 + List projectTeamList = this.listByIds(ids); if (isValid) { - //TODO 做一些业务上的校验,判断是否需要校验 + // 做一些业务上的校验,判断是否需要校验 + // 获取项目id列表 + List 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); } diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusUserProjectRelevancyServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusUserProjectRelevancyServiceImpl.java index 590b555c..8fb00384 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusUserProjectRelevancyServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusUserProjectRelevancyServiceImpl.java @@ -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 queryWrapper = this.getQueryWrapper(req); // 查询数据库 - Page result = this.page(new Page<>(current, size), this.getQueryWrapper(req)); + Page result = this.page(new Page<>(current, size), queryWrapper); return this.getVoPage(result); } @@ -177,8 +178,20 @@ public class BusUserProjectRelevancyServiceImpl extends ServiceImpl ids, Boolean isValid) { + // 获取当前登录用户 + Long userId = LoginHelper.getUserId(); + // 获取待删除数据详情 + List busUserProjectRelevancyList = this.listByIds(ids); if (isValid) { - //TODO 做一些业务上的校验,判断是否需要校验 + // 做一些业务上的校验,判断是否需要校验 + // 获取项目id列表 + List 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; } diff --git a/plus-ui/src/api/materials/materialsInventory/types.ts b/plus-ui/src/api/materials/materialsInventory/types.ts index db3c5caf..0ce3ba10 100644 --- a/plus-ui/src/api/materials/materialsInventory/types.ts +++ b/plus-ui/src/api/materials/materialsInventory/types.ts @@ -1,3 +1,5 @@ +import { MaterialsVO } from '@/api/materials/materials/types'; + export interface MaterialsInventoryVO { /** * 主键id @@ -63,6 +65,11 @@ export interface MaterialsInventoryVO { * 备注 */ remark: string; + + /** + * 材料封装 + */ + materialsVo: MaterialsVO; } export interface MaterialsInventoryForm extends BaseEntity { @@ -138,6 +145,11 @@ export interface MaterialsInventoryQuery extends PageRequest { */ materialsId?: string | number; + /** + * 材料名称 + */ + materialsName?: string; + /** * 项目id */ diff --git a/plus-ui/src/api/project/projectTeamMember/types.ts b/plus-ui/src/api/project/projectTeamMember/types.ts index ef47fc38..67a754af 100644 --- a/plus-ui/src/api/project/projectTeamMember/types.ts +++ b/plus-ui/src/api/project/projectTeamMember/types.ts @@ -78,6 +78,11 @@ export interface ProjectTeamMemberQuery extends PageRequest { */ memberId?: string | number; + /** + * 施工人员姓名 + */ + memberName?: string; + /** * 岗位(默认为0普通员工,1组长) */ diff --git a/plus-ui/src/views/materials/materialsInventory/index.vue b/plus-ui/src/views/materials/materialsInventory/index.vue index 97d5fbec..56f1b126 100644 --- a/plus-ui/src/views/materials/materialsInventory/index.vue +++ b/plus-ui/src/views/materials/materialsInventory/index.vue @@ -4,10 +4,8 @@
- - - - + + 搜索 @@ -194,18 +192,15 @@ const initFormData: MaterialsInventoryForm = { disposition: undefined, recipient: undefined, shipper: undefined, - remark: undefined, - materialsVo: { - id: undefined, - materialsName: undefined, - materialsCode: undefined - } + remark: undefined }; const data = reactive>({ form: { ...initFormData }, queryParams: { current: 1, pageSize: 10, + sortField: 'createTime', + sortOrder: 'descend', materialsId: undefined, projectId: currentProject.value.id, outPut: undefined, @@ -217,12 +212,7 @@ const data = reactive> disposition: undefined, recipient: undefined, shipper: undefined, - params: {}, - materialsVo: { - id: undefined, - materialsName: undefined, - materialsCode: undefined - } + params: {} }, rules: { id: [{ required: true, message: '主键id不能为空', trigger: 'blur' }], @@ -240,7 +230,7 @@ const getList = async () => { materialsInventoryList.value = res.data.records; total.value = res.data.total; const materialsMap = new Map(); - res.data.records.forEach((record) => { + res.data.records.forEach((record: MaterialsInventoryVO) => { const { id, materialsName } = record.materialsVo; if (!materialsMap.has(id)) { materialsMap.set(id, { id, materialsName }); diff --git a/plus-ui/src/views/project/contractor/index.vue b/plus-ui/src/views/project/contractor/index.vue index 8d4ca56c..c42764b0 100644 --- a/plus-ui/src/views/project/contractor/index.vue +++ b/plus-ui/src/views/project/contractor/index.vue @@ -76,7 +76,7 @@ - + diff --git a/plus-ui/src/views/project/project/index.vue b/plus-ui/src/views/project/project/index.vue index 3d0866c4..ded4e599 100644 --- a/plus-ui/src/views/project/project/index.vue +++ b/plus-ui/src/views/project/project/index.vue @@ -86,19 +86,13 @@ - + - - - - diff --git a/plus-ui/src/views/project/projectTeam/component/UserListDialog.vue b/plus-ui/src/views/project/projectTeam/component/UserListDialog.vue index d9495a87..91d689b8 100644 --- a/plus-ui/src/views/project/projectTeam/component/UserListDialog.vue +++ b/plus-ui/src/views/project/projectTeam/component/UserListDialog.vue @@ -5,8 +5,8 @@ {{ props.projectTeamVo.teamName }} - - + +