组织开发

This commit is contained in:
lhx
2025-12-01 18:05:59 +08:00
parent bb3397c1a7
commit 30f7dc155a
10 changed files with 241 additions and 19 deletions

View File

@@ -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);
}
}

View File

@@ -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<Org> {
List<Long> getCListByOrgId(Long pOrgId);
List<OrgVo> getList(OrgQueryDto queryDto);
List<OrgVo> getList(@Param("queryDto") OrgQueryDto queryDto);
}

View File

@@ -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<StandardCategory> {
/**
* 根据组织id获取标准分类列表
* @param id
* @return
*/
List<StandardCategory> selectListByOrgId(Long id);
}

View File

@@ -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;
}

View File

@@ -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<OrgVo> {
private Long parentId;
private String parentName;
private List<StandardCategory> standardCategorys;
private List<OrgVo> children;

View File

@@ -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<Org> {
* @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);
}

View File

@@ -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<OrgMapper, Org>
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<OrgMapper, Org>
@Override
public ResponseResult getList(OrgQueryDto queryDto, Long userId) {
List<OrgVo> list = baseMapper.getList(queryDto);
for (OrgVo orgVo : list){
List<StandardCategory> 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<Laboratory>().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<OrgVo> list = baseMapper.getList(queryDto1);
for (OrgVo orgVo : list){
List<StandardCategory> standardCategorys = standardCategoryMapper.selectListByOrgId(orgVo.getId());
orgVo.setStandardCategorys(standardCategorys);
}
return ResponseResult.success(TreeUtil.buildTree(list, queryDto.getId()));
}
}

View File

@@ -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<PersonnelMapper, Personnel
private final OrgMapper orgMapper;
private final OrgService orgService;
private final PersonnelOrgService personnelOrgService;
private final UserService userService;
private final UserMapper userMapper;
private final PersonnelPositionService personnelPositionService;
@@ -102,7 +103,7 @@ public class PersonnelServiceImpl extends ServiceImpl<PersonnelMapper, Personnel
user.setPhone(personnel.getContactPhone());
user.setStatus(1);
user.setRemark(personnel.getRemark());
userService.save(user);
userMapper.insert( user);
personnel.setUserId(user.getId());
}
if (this.save(personnel)){
@@ -120,10 +121,10 @@ public class PersonnelServiceImpl extends ServiceImpl<PersonnelMapper, Personnel
List<Personnel> 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<PersonnelOrg>().eq(PersonnelOrg::getPersonnelId, personnel.getId()));

View File

@@ -21,5 +21,40 @@
</select>
<select id="getList" resultType="com.dc.dc_project.model.vo.OrgVo">
select
o.name as name,
o.code as code,
o.type as type,
o.sort_order as sortOrder,
o.remark as remark,
o.leader_id as leaderId,
p.name as leaderName,
o.parent_id as parentId,
o1.name as parentName,
o.id as id
from sys_org o
left join sys_personnel p on o.leader_id = p.id
left join sys_org o1 on o.parent_id = o1.id
left join sys_org_laboratory_standard ol on o.id = ol.org_id
<where>
and o.is_deleted = 0
<if test="queryDto.id != null">
and o.id = #{queryDto.id}
</if>
<if test="queryDto.name != null">
and o.name like concat('%',#{queryDto.name},'%')
</if>
<if test="queryDto.type != null">
and o.type = #{queryDto.type}
</if>
<if test="queryDto.code != null">
and o.code like concat('%',#{queryDto.code},'%')
</if>
<if test="queryDto.remark != null">
and o.remark like concat('%',#{queryDto.remark},'%')
</if>
<if test="queryDto.standardCategoryId != null">
and ol.standard_category_id = #{queryDto.standardCategoryId}
</if>
</where>
</select>
</mapper>

View File

@@ -4,20 +4,13 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dc.dc_project.mapper.StandardCategoryMapper">
<resultMap id="BaseResultMap" type="com.dc.dc_project.model.pojo.StandardCategory">
<id property="id" column="id" />
<result property="parent_id" column="parent_id" />
<result property="name" column="name" />
<result property="code" column="code" />
<result property="sort_order" column="sort_order" />
<result property="remark" column="remark" />
<result property="created_at" column="created_at" />
<result property="updated_at" column="updated_at" />
<result property="is_deleted" column="is_deleted" />
</resultMap>
<sql id="Base_Column_List">
id,parent_id,name,code,sort_order,remark,
created_at,updated_at,is_deleted
</sql>
<select id="selectListByOrgId" resultType="com.dc.dc_project.model.pojo.StandardCategory">
select ssc.*
from sys_standard_category ssc
where id in (select standard_category_id from sys_org_laboratory_standard where org_id=#{orgId})
</select>
</mapper>