|
|
|
@ -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<EfcodeVirtualUnit> units = baseMapper.selectBatchIds(ids); |
|
|
|
boolean flag = baseMapper.deleteByIds(ids) > 0; |
|
|
|
if (flag) { |
|
|
|
// 同步清除 sys_dept 的 zone 值
|
|
|
|
List<String> 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<SysDept>() |
|
|
|
.set(SysDept::getZone, zoneValue) |
|
|
|
.eq(SysDept::getDeptId, deptId) |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
|