diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EfcodeVirtualUnitMapper.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EfcodeVirtualUnitMapper.java index 09057fe6..3d9bd26b 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EfcodeVirtualUnitMapper.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EfcodeVirtualUnitMapper.java @@ -2,6 +2,7 @@ package com.zdxt.enforcementcode.mapper; import com.zdxt.enforcementcode.domain.EfcodeVirtualUnit; import com.zdxt.enforcementcode.domain.vo.EfcodeVirtualUnitVo; +import org.apache.ibatis.annotations.Mapper; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** @@ -10,6 +11,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; * @author Lion Li * @date 2026-05-07 */ +@Mapper public interface EfcodeVirtualUnitMapper extends BaseMapperPlus { } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/SrzDeptMapper.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/SrzDeptMapper.java index 750e43fa..e5b5019b 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/SrzDeptMapper.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/SrzDeptMapper.java @@ -2,6 +2,7 @@ package com.zdxt.enforcementcode.mapper; import com.zdxt.enforcementcode.domain.SrzDept; import com.zdxt.enforcementcode.domain.vo.SrzDeptVo; +import org.apache.ibatis.annotations.Mapper; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** @@ -10,6 +11,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; * @author Lion Li * @date 2026-05-06 */ +@Mapper public interface SrzDeptMapper extends BaseMapperPlus { } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeVirtualUnitServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeVirtualUnitServiceImpl.java index e1d80d03..3eb38391 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeVirtualUnitServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeVirtualUnitServiceImpl.java @@ -1,11 +1,14 @@ package com.zdxt.enforcementcode.service.impl; +import com.zdxt.enforcementcode.mapper.SrzDeptMapper; +import com.zdxt.enforcementcode.service.ISrzDeptService; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -15,11 +18,15 @@ import com.zdxt.enforcementcode.domain.vo.EfcodeVirtualUnitVo; import com.zdxt.enforcementcode.domain.EfcodeVirtualUnit; import com.zdxt.enforcementcode.mapper.EfcodeVirtualUnitMapper; import com.zdxt.enforcementcode.service.IEfcodeVirtualUnitService; +import org.dromara.system.domain.SysDept; +import org.dromara.system.mapper.SysDeptMapper; +import com.zdxt.enforcementcode.domain.vo.SrzDeptVo; import java.util.List; import java.util.Map; import java.util.Collection; import java.util.UUID; +import java.util.stream.Collectors; /** * 虚拟单位树Service业务层处理 @@ -33,6 +40,8 @@ import java.util.UUID; public class EfcodeVirtualUnitServiceImpl implements IEfcodeVirtualUnitService { private final EfcodeVirtualUnitMapper baseMapper; + private final SysDeptMapper sysDeptMapper; + private final SrzDeptMapper srzDeptMapper; /** * 查询虚拟单位树 @@ -106,6 +115,10 @@ public class EfcodeVirtualUnitServiceImpl implements IEfcodeVirtualUnitService { if (StringUtils.isBlank(add.getVirId())) { add.setVirId(UUID.randomUUID().toString().replace("-", "")); } + SrzDeptVo srzDept = srzDeptMapper.selectVoById(bo.getSrzOrganizationId()); + + add.setSysDeptId(bo.getSrzOrganizationId()); + add.setOrderNum(Long.valueOf(srzDept.getSequence())); // 构建ancestors: 父节点ancestors + 自身virId if (StringUtils.isNotBlank(add.getVirParentId())) { EfcodeVirtualUnitVo parent = baseMapper.selectVoById(add.getVirParentId()); @@ -121,6 +134,8 @@ public class EfcodeVirtualUnitServiceImpl implements IEfcodeVirtualUnitService { boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setVirId(add.getVirId()); + // 同步更新 sys_dept 的 zone 值 + syncDeptZone(add.getSysDeptId(), add.getVirZone()); } return flag; } @@ -157,7 +172,38 @@ public class EfcodeVirtualUnitServiceImpl implements IEfcodeVirtualUnitService { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } - return baseMapper.deleteByIds(ids) > 0; + // 删除前查询记录,获取 srzOrganizationId 用于清除 sys_dept.zone + List units = baseMapper.selectBatchIds(ids); + boolean flag = baseMapper.deleteByIds(ids) > 0; + if (flag) { + // 同步清除 sys_dept 的 zone 值 + List deptIds = units.stream() + .map(EfcodeVirtualUnit::getSysDeptId) + .filter(StringUtils::isNotBlank) + .distinct() + .collect(Collectors.toList()); + for (String deptId : deptIds) { + syncDeptZone(deptId, null); + } + } + return flag; + } + + /** + * 同步更新 sys_dept 的 zone 值 + * + * @param deptId 部门ID + * @param zone zone值,null表示清除 + */ + private void syncDeptZone(String deptId, Long zone) { + if (StringUtils.isBlank(deptId)) { + return; + } + Integer zoneValue = zone != null ? zone.intValue() : null; + sysDeptMapper.update(null, new LambdaUpdateWrapper() + .set(SysDept::getZone, zoneValue) + .eq(SysDept::getDeptId, deptId) + ); } /** diff --git a/zdxt-modules/zdxt-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java b/zdxt-modules/zdxt-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java index 616b784d..f58710e1 100644 --- a/zdxt-modules/zdxt-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java +++ b/zdxt-modules/zdxt-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java @@ -3,6 +3,7 @@ package org.dromara.system.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Mapper; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.mybatis.annotation.DataColumn; import org.dromara.common.mybatis.annotation.DataPermission; @@ -18,6 +19,7 @@ import java.util.List; * * @author Lion Li */ +@Mapper public interface SysDeptMapper extends BaseMapperPlus { /** diff --git a/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/virtualUnit/unitBuilder.vue b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/virtualUnit/unitBuilder.vue index 67aa92cd..ee9ab1cc 100644 --- a/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/virtualUnit/unitBuilder.vue +++ b/zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/virtualUnit/unitBuilder.vue @@ -252,6 +252,11 @@ const flattenTree = (nodes: TreeTableRow[]): TreeTableRow[] => { const handleConfirmAdd = async () => { if (!selectedVirNode.value || !selectedSrzNode.value) return; + if (settingForm.value.virZone === null) { + ElMessage.warning('请选择Zone'); + return; + } + const parentNode = selectedVirNode.value; const srzNode = selectedSrzNode.value; @@ -279,7 +284,7 @@ const handleConfirmAdd = async () => { virIsVirtual: '否', virParentId: parentNode.virId, virName: srzNode.label, - virZone: null, + virZone: settingForm.value.virZone, virAncestors: parentAncestors, // 后端可重新计算 virDisplayPath: newDisplayPath, virIncludeStatistics: settingForm.value.virIncludeStatistics, @@ -468,7 +473,7 @@ onMounted(() => { 否 - + {{ opt.label }} @@ -512,7 +517,7 @@ onMounted(() => { } .right-panel { - width: 560px; + width: 500px; flex-shrink: 0; overflow: hidden; } diff --git a/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application.yml b/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application.yml index 270b8269..20db6d55 100644 --- a/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application.yml +++ b/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application.yml @@ -225,6 +225,18 @@ springdoc: api-docs: # 是否开启接口文档 enabled: true + components: + securitySchemes: + Authorization: + type: apiKey + in: header + name: Authorization + description: "Bearer Token,格式: Bearer {token}" + clientid: + type: apiKey + in: header + name: clientid + description: "客户端ID" info: # 标题 title: '标题:zdxt-Vue-Plus多租户管理系统_接口文档'