diff --git a/src/main/java/com/dc/dc_project/controller/sys/OrgController.java b/src/main/java/com/dc/dc_project/controller/sys/OrgController.java index dbf6942..191a4e8 100644 --- a/src/main/java/com/dc/dc_project/controller/sys/OrgController.java +++ b/src/main/java/com/dc/dc_project/controller/sys/OrgController.java @@ -3,12 +3,15 @@ package com.dc.dc_project.controller.sys; import cn.dev33.satoken.stp.StpUtil; import com.dc.dc_project.common.ResponseResult; +import com.dc.dc_project.common.aop.DcCheckPermission; import com.dc.dc_project.model.dto.OrgDto; import com.dc.dc_project.model.dto.OrgQueryDto; +import com.dc.dc_project.model.dto.OrgUpdateDto; import com.dc.dc_project.model.pojo.Org; import com.dc.dc_project.service.OrgService; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -21,14 +24,34 @@ public class OrgController { private final OrgService orgService; - @RequestMapping("/tree") + @PostMapping("/list") public ResponseResult list(OrgQueryDto queryDto) { Long userId = StpUtil.getLoginIdAsLong(); return orgService.getList(queryDto, userId); } + @PostMapping("/tree") + public ResponseResult tree(OrgQueryDto queryDto) { + Long userId = StpUtil.getLoginIdAsLong(); + return orgService.getTree(queryDto, userId); + } + @PostMapping("/add") public ResponseResult add(@RequestBody OrgDto orgDto) { return orgService.newOrg(orgDto); } + + @PostMapping("/update") + @DcCheckPermission("system:org:update") + public ResponseResult update(@RequestBody @Validated OrgUpdateDto org) { + Long userId = StpUtil.getLoginIdAsLong(); + return orgService.updateOrg(org, userId); + } + + @PostMapping("/delete") + @DcCheckPermission("system:org:delete") + public ResponseResult delete(@RequestBody Org org) { + Long userId = StpUtil.getLoginIdAsLong(); + return orgService.deleteOrg(org, userId); + } } diff --git a/src/main/java/com/dc/dc_project/mapper/OrgMapper.java b/src/main/java/com/dc/dc_project/mapper/OrgMapper.java index ed6acb3..2734b4a 100644 --- a/src/main/java/com/dc/dc_project/mapper/OrgMapper.java +++ b/src/main/java/com/dc/dc_project/mapper/OrgMapper.java @@ -4,6 +4,7 @@ import com.dc.dc_project.model.dto.OrgQueryDto; import com.dc.dc_project.model.pojo.Org; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dc.dc_project.model.vo.OrgVo; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,7 +20,7 @@ public interface OrgMapper extends BaseMapper { List getCListByOrgId(Long pOrgId); - List getList(OrgQueryDto queryDto); + List getList(@Param("queryDto") OrgQueryDto queryDto); } diff --git a/src/main/java/com/dc/dc_project/mapper/StandardCategoryMapper.java b/src/main/java/com/dc/dc_project/mapper/StandardCategoryMapper.java index 87772dc..b8e830a 100644 --- a/src/main/java/com/dc/dc_project/mapper/StandardCategoryMapper.java +++ b/src/main/java/com/dc/dc_project/mapper/StandardCategoryMapper.java @@ -3,6 +3,8 @@ package com.dc.dc_project.mapper; import com.dc.dc_project.model.pojo.StandardCategory; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import java.util.List; + /** * @author ADMIN * @description 针对表【sys_standard_category(标准分类表(行业/专业领域))】的数据库操作Mapper @@ -11,6 +13,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface StandardCategoryMapper extends BaseMapper { + /** + * 根据组织id获取标准分类列表 + * @param id + * @return + */ + List selectListByOrgId(Long id); } diff --git a/src/main/java/com/dc/dc_project/model/dto/OrgUpdateDto.java b/src/main/java/com/dc/dc_project/model/dto/OrgUpdateDto.java new file mode 100644 index 0000000..48b6b16 --- /dev/null +++ b/src/main/java/com/dc/dc_project/model/dto/OrgUpdateDto.java @@ -0,0 +1,58 @@ +package com.dc.dc_project.model.dto; + + +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class OrgUpdateDto { + + @NotNull + private Long id; + /** + * 上级组织ID + */ + private Long parentId; + + /** + * 组织名称 + */ + private String name; + + /** + * 组织类型(1=公司,2=项目部,3=试验室) + */ + private Integer type; + + /** + * 组织编码 + */ + private String code; + + /** + * 排序号 + */ + private Integer sortOrder; + + /** + * 备注 + */ + private String remark; + + /** + * 负责人id + */ + private Long leaderId; + + /** + * 试验室类型(1工地;2中心;3未知) + */ + private Integer lTtype; + + private String coordinateA; + private String coordinateB; +} diff --git a/src/main/java/com/dc/dc_project/model/vo/OrgVo.java b/src/main/java/com/dc/dc_project/model/vo/OrgVo.java index 0bb67ad..687b1fe 100644 --- a/src/main/java/com/dc/dc_project/model/vo/OrgVo.java +++ b/src/main/java/com/dc/dc_project/model/vo/OrgVo.java @@ -1,6 +1,7 @@ package com.dc.dc_project.model.vo; import com.dc.dc_project.model.TreeNode; +import com.dc.dc_project.model.pojo.StandardCategory; import lombok.Data; import java.util.List; @@ -26,6 +27,10 @@ public class OrgVo implements TreeNode { private Long parentId; + private String parentName; + + private List standardCategorys; + private List children; diff --git a/src/main/java/com/dc/dc_project/service/OrgService.java b/src/main/java/com/dc/dc_project/service/OrgService.java index 1bee7e1..d91c9d0 100644 --- a/src/main/java/com/dc/dc_project/service/OrgService.java +++ b/src/main/java/com/dc/dc_project/service/OrgService.java @@ -3,6 +3,7 @@ package com.dc.dc_project.service; import com.dc.dc_project.common.ResponseResult; import com.dc.dc_project.model.dto.OrgDto; import com.dc.dc_project.model.dto.OrgQueryDto; +import com.dc.dc_project.model.dto.OrgUpdateDto; import com.dc.dc_project.model.pojo.Org; import com.baomidou.mybatisplus.extension.service.IService; @@ -36,4 +37,25 @@ public interface OrgService extends IService { * @return */ ResponseResult getList(OrgQueryDto queryDto, Long userId); + + /** + * 修改组织 + * @param org + * @return + */ + ResponseResult updateOrg(OrgUpdateDto org, Long userId); + + /** + * 删除组织 + * @param org + * @return + */ + ResponseResult deleteOrg(Org org, Long userId); + + /** + * 获取组织树 + * @param queryDto + * @return + */ + ResponseResult getTree(OrgQueryDto queryDto, Long userId); } diff --git a/src/main/java/com/dc/dc_project/service/impl/OrgServiceImpl.java b/src/main/java/com/dc/dc_project/service/impl/OrgServiceImpl.java index f7fbb5d..73e2f72 100644 --- a/src/main/java/com/dc/dc_project/service/impl/OrgServiceImpl.java +++ b/src/main/java/com/dc/dc_project/service/impl/OrgServiceImpl.java @@ -4,14 +4,23 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dc.dc_project.common.ResponseResult; import com.dc.dc_project.common.ResultCode; +import com.dc.dc_project.enums.DataScopeType; import com.dc.dc_project.enums.OrgType; +import com.dc.dc_project.mapper.LaboratoryMapper; +import com.dc.dc_project.mapper.StandardCategoryMapper; import com.dc.dc_project.model.dto.OrgDto; import com.dc.dc_project.model.dto.OrgQueryDto; +import com.dc.dc_project.model.dto.OrgUpdateDto; import com.dc.dc_project.model.pojo.Laboratory; import com.dc.dc_project.model.pojo.Org; +import com.dc.dc_project.model.pojo.StandardCategory; import com.dc.dc_project.model.vo.OrgVo; import com.dc.dc_project.service.OrgService; import com.dc.dc_project.mapper.OrgMapper; +import com.dc.dc_project.utils.PermissionUtils; +import com.dc.dc_project.utils.TreeUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; @@ -25,9 +34,13 @@ import java.util.Objects; */ @Service @Slf4j +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) public class OrgServiceImpl extends ServiceImpl implements OrgService{ + private final LaboratoryMapper laboratoryMapper; + private final StandardCategoryMapper standardCategoryMapper; + @Override public ResponseResult newOrg(OrgDto orgDto) { // 检验参数 @@ -74,9 +87,72 @@ public class OrgServiceImpl extends ServiceImpl @Override public ResponseResult getList(OrgQueryDto queryDto, Long userId) { List list = baseMapper.getList(queryDto); - + for (OrgVo orgVo : list){ + List standardCategorys = standardCategoryMapper.selectListByOrgId(orgVo.getId()); + orgVo.setStandardCategorys(standardCategorys); + } return ResponseResult.success(list); } + + @Override + public ResponseResult updateOrg(OrgUpdateDto org, Long userId) { + // 权限范围检查 + DataScopeType dataScopeType = DataScopeType.getByLevel(PermissionUtils.getOrDefault(DataScopeType.SELF.getLevel())); + + Org oldOrg = this.getById(org.getId()); + + if(oldOrg == null){ + return ResponseResult.error("组织不存在"); + } + + oldOrg.setParentId(org.getParentId() == null ? oldOrg.getParentId() : org.getParentId()); + oldOrg.setName(org.getName() == null ? oldOrg.getName() : org.getName()); + oldOrg.setCode(org.getCode() == null ? oldOrg.getCode() : org.getCode()); + //oldOrg.setType(org.getType() == null ? oldOrg.getType() : org.getType()); + oldOrg.setSortOrder(org.getSortOrder() == null ? oldOrg.getSortOrder() : org.getSortOrder()); + oldOrg.setRemark(org.getRemark() == null ? oldOrg.getRemark() : org.getRemark()); + oldOrg.setLeaderId(org.getLeaderId() == null ? oldOrg.getLeaderId() : org.getLeaderId()); + + if (org.getType() != null && !Objects.equals(org.getType(), oldOrg.getType())){ + if ( !Objects.equals(oldOrg.getType(), OrgType.LABORATORY.getCode()) && (org.getType().equals(OrgType.LABORATORY.getCode()))){ + Laboratory laboratory = new Laboratory(); + laboratory.setName(org.getName()); + laboratory.setCoordinateA(org.getCoordinateA()); + laboratory.setCoordinateB(org.getCoordinateB()); + laboratory.setType(org.getLTtype()); + laboratory.setOrgId(org.getId()); + laboratoryMapper.insert(laboratory); + } + if (Objects.equals(oldOrg.getType(), OrgType.LABORATORY.getCode()) && !(org.getType().equals(OrgType.LABORATORY.getCode()))){ + Laboratory laboratory = laboratoryMapper.selectOne(new LambdaQueryWrapper().eq(Laboratory::getOrgId, org.getId())); + if (laboratory != null){ + laboratoryMapper.deleteById(laboratory); + } + } + oldOrg.setType(org.getType()); + } + return this.updateById(oldOrg)? ResponseResult.success("修改成功") : ResponseResult.error("修改失败"); + } + + @Override + public ResponseResult deleteOrg(Org org, Long userId) { + return null; + } + + @Override + public ResponseResult getTree(OrgQueryDto queryDto, Long userId) { + if( queryDto.getId() == null){ + return ResponseResult.error("参数缺失"); + } + OrgQueryDto queryDto1 = new OrgQueryDto(); + queryDto1.setId(queryDto.getId()); + List list = baseMapper.getList(queryDto1); + for (OrgVo orgVo : list){ + List standardCategorys = standardCategoryMapper.selectListByOrgId(orgVo.getId()); + orgVo.setStandardCategorys(standardCategorys); + } + return ResponseResult.success(TreeUtil.buildTree(list, queryDto.getId())); + } } diff --git a/src/main/java/com/dc/dc_project/service/impl/PersonnelServiceImpl.java b/src/main/java/com/dc/dc_project/service/impl/PersonnelServiceImpl.java index 35b92c2..aed6af3 100644 --- a/src/main/java/com/dc/dc_project/service/impl/PersonnelServiceImpl.java +++ b/src/main/java/com/dc/dc_project/service/impl/PersonnelServiceImpl.java @@ -7,6 +7,7 @@ import com.dc.dc_project.common.ResponseResult; import com.dc.dc_project.enums.DataScopeType; import com.dc.dc_project.enums.IsDeleted; import com.dc.dc_project.mapper.OrgMapper; +import com.dc.dc_project.mapper.UserMapper; import com.dc.dc_project.model.dto.DeleteDto; import com.dc.dc_project.model.dto.PersonnelDto; import com.dc.dc_project.model.dto.PersonnelNewDto; @@ -40,7 +41,7 @@ public class PersonnelServiceImpl extends ServiceImpl personnels = this.list(queryWrapper); for (Personnel personnel : personnels) { if (personnel.getUserId() != null) { - User user = userService.getById(personnel.getUserId()); + User user = userMapper.selectById(personnel.getUserId()); if (user != null) { user.setIsDeleted(1); - userService.updateById(user); + userMapper.updateById(user); } } personnelOrgService.remove(new LambdaQueryWrapper().eq(PersonnelOrg::getPersonnelId, personnel.getId())); diff --git a/src/main/resources/mapper/OrgMapper.xml b/src/main/resources/mapper/OrgMapper.xml index 2083435..ee9d211 100644 --- a/src/main/resources/mapper/OrgMapper.xml +++ b/src/main/resources/mapper/OrgMapper.xml @@ -21,5 +21,40 @@ diff --git a/src/main/resources/mapper/StandardCategoryMapper.xml b/src/main/resources/mapper/StandardCategoryMapper.xml index ab44361..5d0dded 100644 --- a/src/main/resources/mapper/StandardCategoryMapper.xml +++ b/src/main/resources/mapper/StandardCategoryMapper.xml @@ -4,20 +4,13 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - - - - - - - - id,parent_id,name,code,sort_order,remark, created_at,updated_at,is_deleted +