From a57a1d58c9852709c78f3b34bc9d1edb29950519 Mon Sep 17 00:00:00 2001 From: guo Date: Thu, 11 Apr 2024 09:43:25 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/xz/mapper/XzProjectOrgMapper.java | 3 ++ .../xz/mapper/xml/XzProjectOrgMapper.xml | 6 ++++ .../service/impl/XzProjectOrgServiceImpl.java | 35 ++++++++++++++++--- 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/mapper/XzProjectOrgMapper.java b/src/main/java/com/zhgd/xmgl/modules/xz/mapper/XzProjectOrgMapper.java index 23c75475c..7952ba34f 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/mapper/XzProjectOrgMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/mapper/XzProjectOrgMapper.java @@ -3,6 +3,7 @@ package com.zhgd.xmgl.modules.xz.mapper; import org.apache.ibatis.annotations.Mapper; import com.zhgd.xmgl.modules.xz.entity.XzProjectOrg; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; /** * @Description: 星纵-项目组织机构 @@ -14,4 +15,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; public interface XzProjectOrgMapper extends BaseMapper { void deleteChildren(String id); + + void updateAncestors(@Param("oldAncestor") String oldAncestor, @Param("newAncestor") String newAncestor, @Param("projectSn") String projectSn); } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/mapper/xml/XzProjectOrgMapper.xml b/src/main/java/com/zhgd/xmgl/modules/xz/mapper/xml/XzProjectOrgMapper.xml index b3ca3fc8d..8178a77da 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/mapper/xml/XzProjectOrgMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/xz/mapper/xml/XzProjectOrgMapper.xml @@ -6,4 +6,10 @@ from xz_project_org where find_in_set(#{id}, ancestors) + + + UPDATE xz_project_org + SET ancestors=REPLACE(ancestors, #{oldAncestor}, #{newAncestor}) + WHERE ancestors LIKE N'${oldAncestor}%' and project_sn = #{projectSn} + diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzProjectOrgServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzProjectOrgServiceImpl.java index 5796922ea..a804f82a7 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzProjectOrgServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzProjectOrgServiceImpl.java @@ -9,7 +9,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.system.query.QueryGenerator; -import com.zhgd.xmgl.modules.stuff.entity.StuffType; import com.zhgd.xmgl.modules.xz.entity.XzProjectOrg; import com.zhgd.xmgl.modules.xz.mapper.XzProjectOrgMapper; import com.zhgd.xmgl.modules.xz.service.IXzProjectOrgService; @@ -20,7 +19,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.sql.Struct; import java.util.HashMap; import java.util.List; import java.util.Objects; @@ -86,15 +84,44 @@ public class XzProjectOrgServiceImpl extends ServiceImpl cOrgs = xzProjectOrgMapper.selectList(new LambdaQueryWrapper() .eq(XzProjectOrg::getParentId, xzProjectOrg.getId()) + .eq(XzProjectOrg::getProjectSn, xzProjectOrg.getProjectSn()) .eq(XzProjectOrg::getStatus, 0) ); if (CollUtil.isNotEmpty(cOrgs)) { throw new OpenAlertException("该部门有下级部门未停用,不能停用"); } - xzProjectOrg.setAncestors(null); - baseMapper.updateById(xzProjectOrg); + if (!Objects.equals(oldPo.getParentId(), xzProjectOrg.getParentId())) { + XzProjectOrg pOrg = xzProjectOrgMapper.selectById(xzProjectOrg.getParentId()); + if (Objects.equals(xzProjectOrg.getStatus(), 0)) { + if (pOrg != null) { + if (Objects.equals(pOrg.getStatus(), 1)) { + throw new OpenAlertException("该上级部门状态为停用,无法修改"); + } + } + } + + // 修改子部门 + boolean top = xzProjectOrg.getParentId() == null || xzProjectOrg.getParentId() == 0; + if (top) { + xzProjectOrg.setParentId(0L); + xzProjectOrg.setAncestors("0"); + } else { + if (pOrg != null) { + xzProjectOrg.setAncestors(pOrg.getAncestors() + "," + pOrg.getId()); + } else { + xzProjectOrg.setAncestors("0"); + } + } + baseMapper.updateById(xzProjectOrg); + baseMapper.updateAncestors(oldPo.getAncestors(), xzProjectOrg.getAncestors(), xzProjectOrg.getProjectSn()); + } + } @Override