Browse Source

迁移一期报表

dev
zhuibobo 2 months ago
parent
commit
256202d2d5
  1. 13
      script/sql/zfjd-refactoring-v1/011-1-重建虚拟单位树.sql
  2. 246
      zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/common/util/DataFilterUtil.java
  3. 105
      zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/controller/EfcodeVirtualUnitUserController.java
  4. 46
      zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/domain/EfcodeVirtualUnitUser.java
  5. 45
      zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/domain/bo/EfcodeVirtualUnitUserBo.java
  6. 56
      zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/domain/vo/EfcodeVirtualUnitUserVo.java
  7. 38
      zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/domain/vo/VirtualUnitDeptTreeVo.java
  8. 15
      zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/mapper/EfcodeVirtualUnitUserMapper.java
  9. 68
      zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/service/IEfcodeVirtualUnitUserService.java
  10. 133
      zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeVirtualUnitUserServiceImpl.java
  11. 6
      zdxt-modules/zdxt-enforcement-code-common/src/main/resources/mapper/enforcementcode/EfcodeVirtualUnitUserMapper.xml
  12. 4
      zdxt-web-client/zdxt-admin-plus-ui/src/views/system/role/index-dept-separate.vue

13
script/sql/zfjd-refactoring-v1/011-1-重建虚拟单位树.sql

@ -23,3 +23,16 @@ create table efcode_virtual_unit
update_by bigint null comment '更新者',
update_time datetime null comment '更新时间'
) comment '虚拟单位树' row_format = DYNAMIC;
create table efcode_virtual_unit_user
(
vir_user_id varchar(100) not null comment '主键ID' primary key,
sys_user_id varchar(100) null comment '真实用户id,关联sys_user.user_id',
remark varchar(200) null comment '备注',
order_num int default 0 null comment '显示顺序',
create_dept varchar(100) null comment '创建部门',
create_by bigint null comment '创建者',
create_time datetime null comment '创建时间',
update_by bigint null comment '更新者',
update_time datetime null comment '更新时间'
) comment '虚拟单位用户' row_format = DYNAMIC;

246
zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/common/util/DataFilterUtil.java

@ -267,58 +267,58 @@ public class DataFilterUtil {
* @param includeStatistics 是否包含统计节点
* @return SQL 片段null 表示全部放行 null 则为过滤条件
*/
public static String buildFilterSqlV1(String tableAlias, String column,
boolean includeSearch, boolean includeStatistics) {
// 超管或 ViewAllDataRole → 不过滤
if (isFullAccess()) {
return null;
}
// ViewFilterDataRole → 构建子查询条件
if (needFilter()) {
//String userDeptId = LoginHelper.getDeptId();
String userBureauDeptId = getUserBureauDeptId(LoginHelper.getUserId());
//String userBureauDeptId = "20210922211918204-7059-2B73EBA45";
if (StrUtil.isBlank(userBureauDeptId)) {
return "1 = 0";
}
String columnRef = buildColumnRef(tableAlias, column);
String escapedDeptId = escapeSql(userBureauDeptId);
// 使用子查询:通过 userDeptId 找到 virId,再通过 FIND_IN_SET 查子孙节点的 sys_dept_id
StringBuilder sb = new StringBuilder();
sb.append(columnRef).append(" IN (");
sb.append("SELECT eu.sys_dept_id FROM efcode_virtual_unit eu");
sb.append(" WHERE FIND_IN_SET(");
sb.append("(SELECT eu2.vir_id FROM efcode_virtual_unit eu2 WHERE eu2.sys_dept_id = '").append(escapedDeptId).append("' LIMIT 1)");
sb.append(", eu.vir_ancestors)");
sb.append(" AND eu.sys_dept_id IS NOT NULL AND eu.sys_dept_id != ''");
// includeSearch / includeStatistics 过滤条件
if (includeSearch || includeStatistics) {
sb.append(" AND (1=0");
if (includeSearch) {
sb.append(" OR eu.vir_include_search = '是'");
}
if (includeStatistics) {
sb.append(" OR eu.vir_include_statistics = '是'");
}
sb.append(")");
}
sb.append(")");
// 补充自身部门(子查询通过 FIND_IN_SET 只返回子孙,不含自身节点)
sb.append(" OR ").append(columnRef).append(" = '").append(escapedDeptId).append("'");
return sb.toString();
}
// 无权访问
return "1 = 0";
}
// public static String buildFilterSqlV1(String tableAlias, String column,
// boolean includeSearch, boolean includeStatistics) {
// // 超管或 ViewAllDataRole → 不过滤
// if (isFullAccess()) {
// return null;
// }
//
// // ViewFilterDataRole → 构建子查询条件
// if (needFilter()) {
// //String userDeptId = LoginHelper.getDeptId();
// String userBureauDeptId = getUserBureauDeptId(LoginHelper.getUserId());
// //String userBureauDeptId = "20210922211918204-7059-2B73EBA45";
//
//
// if (StrUtil.isBlank(userBureauDeptId)) {
// return "1 = 0";
// }
//
// String columnRef = buildColumnRef(tableAlias, column);
// String escapedDeptId = escapeSql(userBureauDeptId);
//
// // 使用子查询:通过 userDeptId 找到 virId,再通过 FIND_IN_SET 查子孙节点的 sys_dept_id
// StringBuilder sb = new StringBuilder();
// sb.append(columnRef).append(" IN (");
// sb.append("SELECT eu.sys_dept_id FROM efcode_virtual_unit eu");
// sb.append(" WHERE FIND_IN_SET(");
// sb.append("(SELECT eu2.vir_id FROM efcode_virtual_unit eu2 WHERE eu2.sys_dept_id = '").append(escapedDeptId).append("' LIMIT 1)");
// sb.append(", eu.vir_ancestors)");
// sb.append(" AND eu.sys_dept_id IS NOT NULL AND eu.sys_dept_id != ''");
//
// // includeSearch / includeStatistics 过滤条件
// if (includeSearch || includeStatistics) {
// sb.append(" AND (1=0");
// if (includeSearch) {
// sb.append(" OR eu.vir_include_search = '是'");
// }
// if (includeStatistics) {
// sb.append(" OR eu.vir_include_statistics = '是'");
// }
// sb.append(")");
// }
// sb.append(")");
//
// // 补充自身部门(子查询通过 FIND_IN_SET 只返回子孙,不含自身节点)
// sb.append(" OR ").append(columnRef).append(" = '").append(escapedDeptId).append("'");
//
// return sb.toString();
// }
//
// // 无权访问
// return "1 = 0";
// }
/**
* 根据当前用户权限构建数据过滤 SQL 片段V2 版本
@ -342,77 +342,77 @@ public class DataFilterUtil {
* @param includeStatistics 是否包含统计节点
* @return SQL 片段null 表示全部放行 null 则为过滤条件
*/
public static String buildFilterSqlVX(String tableAlias, String column,
boolean includeSearch, boolean includeStatistics) {
// 超管或 ViewAllDataRole → 不过滤
if (isFullAccess()) {
return null;
}
// ViewFilterDataRole → 构建子查询条件
if (needFilter()) {
// 获取用户拥有的 ViewEFDataRole_Area 角色对应的 vir_id 列表
List<String> areaVirIds = getAreaRoleVirIds();
List<String> bureauDeptIds;
if (CollUtil.isNotEmpty(areaVirIds)) {
// 通过 vir_id 获取对应的 sys_dept_id
bureauDeptIds = getAreaBureauDeptIds(areaVirIds);
} else {
// 未拥有 ViewEFDataRole_Area 角色,退回原逻辑
String userBureauDeptId = getUserBureauDeptId(LoginHelper.getUserId());
if (StrUtil.isBlank(userBureauDeptId)) {
return "1 = 0";
}
bureauDeptIds = Collections.singletonList(userBureauDeptId);
}
if (CollUtil.isEmpty(bureauDeptIds)) {
return "1 = 0";
}
String columnRef = buildColumnRef(tableAlias, column);
// 构建过滤 SQL:支持多个 bureauDeptId
StringBuilder sb = new StringBuilder();
sb.append("(");
for (int i = 0; i < bureauDeptIds.size(); i++) {
if (i > 0) {
sb.append(" OR ");
}
String escapedDeptId = escapeSql(bureauDeptIds.get(i));
// 子查询:通过 userBureauDeptId 找到 virId,再通过 FIND_IN_SET 查子孙节点的 sys_dept_id
sb.append(columnRef).append(" IN (");
sb.append("SELECT eu.sys_dept_id FROM efcode_virtual_unit eu");
sb.append(" WHERE FIND_IN_SET(");
sb.append("(SELECT eu2.vir_id FROM efcode_virtual_unit eu2 WHERE eu2.sys_dept_id = '").append(escapedDeptId).append("' LIMIT 1)");
sb.append(", eu.vir_ancestors)");
sb.append(" AND eu.sys_dept_id IS NOT NULL AND eu.sys_dept_id != ''");
// includeSearch / includeStatistics 过滤条件
if (includeSearch || includeStatistics) {
sb.append(" AND (1=0");
if (includeSearch) {
sb.append(" OR eu.vir_include_search = '是'");
}
if (includeStatistics) {
sb.append(" OR eu.vir_include_statistics = '是'");
}
sb.append(")");
}
sb.append(")");
// 补充自身部门
sb.append(" OR ").append(columnRef).append(" = '").append(escapedDeptId).append("'");
}
sb.append(")");
return sb.toString();
}
// 无权访问
return "1 = 0";
}
// public static String buildFilterSqlVX(String tableAlias, String column,
// boolean includeSearch, boolean includeStatistics) {
// // 超管或 ViewAllDataRole → 不过滤
// if (isFullAccess()) {
// return null;
// }
//
// // ViewFilterDataRole → 构建子查询条件
// if (needFilter()) {
// // 获取用户拥有的 ViewEFDataRole_Area 角色对应的 vir_id 列表
// List<String> areaVirIds = getAreaRoleVirIds();
//
// List<String> bureauDeptIds;
// if (CollUtil.isNotEmpty(areaVirIds)) {
// // 通过 vir_id 获取对应的 sys_dept_id
// bureauDeptIds = getAreaBureauDeptIds(areaVirIds);
// } else {
// // 未拥有 ViewEFDataRole_Area 角色,退回原逻辑
// String userBureauDeptId = getUserBureauDeptId(LoginHelper.getUserId());
// if (StrUtil.isBlank(userBureauDeptId)) {
// return "1 = 0";
// }
// bureauDeptIds = Collections.singletonList(userBureauDeptId);
// }
//
// if (CollUtil.isEmpty(bureauDeptIds)) {
// return "1 = 0";
// }
//
// String columnRef = buildColumnRef(tableAlias, column);
//
// // 构建过滤 SQL:支持多个 bureauDeptId
// StringBuilder sb = new StringBuilder();
// sb.append("(");
// for (int i = 0; i < bureauDeptIds.size(); i++) {
// if (i > 0) {
// sb.append(" OR ");
// }
// String escapedDeptId = escapeSql(bureauDeptIds.get(i));
// // 子查询:通过 userBureauDeptId 找到 virId,再通过 FIND_IN_SET 查子孙节点的 sys_dept_id
// sb.append(columnRef).append(" IN (");
// sb.append("SELECT eu.sys_dept_id FROM efcode_virtual_unit eu");
// sb.append(" WHERE FIND_IN_SET(");
// sb.append("(SELECT eu2.vir_id FROM efcode_virtual_unit eu2 WHERE eu2.sys_dept_id = '").append(escapedDeptId).append("' LIMIT 1)");
// sb.append(", eu.vir_ancestors)");
// sb.append(" AND eu.sys_dept_id IS NOT NULL AND eu.sys_dept_id != ''");
//
// // includeSearch / includeStatistics 过滤条件
// if (includeSearch || includeStatistics) {
// sb.append(" AND (1=0");
// if (includeSearch) {
// sb.append(" OR eu.vir_include_search = '是'");
// }
// if (includeStatistics) {
// sb.append(" OR eu.vir_include_statistics = '是'");
// }
// sb.append(")");
// }
// sb.append(")");
//
// // 补充自身部门
// sb.append(" OR ").append(columnRef).append(" = '").append(escapedDeptId).append("'");
// }
// sb.append(")");
//
// return sb.toString();
// }
//
// // 无权访问
// return "1 = 0";
// }
/**
* 根据当前用户权限构建数据过滤 SQL 片段V3 版本

105
zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/controller/EfcodeVirtualUnitUserController.java

@ -0,0 +1,105 @@
package com.zdxt.enforcementcode.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import com.zdxt.enforcementcode.domain.vo.EfcodeVirtualUnitUserVo;
import com.zdxt.enforcementcode.domain.bo.EfcodeVirtualUnitUserBo;
import com.zdxt.enforcementcode.service.IEfcodeVirtualUnitUserService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 虚拟单位用户
*
* @author Lion Li
* @date 2026-07-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/enforcementcode/virtualUnitUser")
public class EfcodeVirtualUnitUserController extends BaseController {
private final IEfcodeVirtualUnitUserService efcodeVirtualUnitUserService;
/**
* 查询虚拟单位用户列表
*/
@SaCheckPermission("enforcementcode:virtualUnitUser:list")
@GetMapping("/list")
public TableDataInfo<EfcodeVirtualUnitUserVo> list(EfcodeVirtualUnitUserBo bo, PageQuery pageQuery) {
return efcodeVirtualUnitUserService.queryPageList(bo, pageQuery);
}
/**
* 导出虚拟单位用户列表
*/
@SaCheckPermission("enforcementcode:virtualUnitUser:export")
@Log(title = "虚拟单位用户", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(EfcodeVirtualUnitUserBo bo, HttpServletResponse response) {
List<EfcodeVirtualUnitUserVo> list = efcodeVirtualUnitUserService.queryList(bo);
ExcelUtil.exportExcel(list, "虚拟单位用户", EfcodeVirtualUnitUserVo.class, response);
}
/**
* 获取虚拟单位用户详细信息
*
* @param virUserId 主键
*/
@SaCheckPermission("enforcementcode:virtualUnitUser:query")
@GetMapping("/{virUserId}")
public R<EfcodeVirtualUnitUserVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String virUserId) {
return R.ok(efcodeVirtualUnitUserService.queryById(virUserId));
}
/**
* 新增虚拟单位用户
*/
@SaCheckPermission("enforcementcode:virtualUnitUser:add")
@Log(title = "虚拟单位用户", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody EfcodeVirtualUnitUserBo bo) {
return toAjax(efcodeVirtualUnitUserService.insertByBo(bo));
}
/**
* 修改虚拟单位用户
*/
@SaCheckPermission("enforcementcode:virtualUnitUser:edit")
@Log(title = "虚拟单位用户", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody EfcodeVirtualUnitUserBo bo) {
return toAjax(efcodeVirtualUnitUserService.updateByBo(bo));
}
/**
* 删除虚拟单位用户
*
* @param virUserIds 主键串
*/
@SaCheckPermission("enforcementcode:virtualUnitUser:remove")
@Log(title = "虚拟单位用户", businessType = BusinessType.DELETE)
@DeleteMapping("/{virUserIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] virUserIds) {
return toAjax(efcodeVirtualUnitUserService.deleteWithValidByIds(List.of(virUserIds), true));
}
}

46
zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/domain/EfcodeVirtualUnitUser.java

@ -0,0 +1,46 @@
package com.zdxt.enforcementcode.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 虚拟单位用户对象 efcode_virtual_unit_user
*
* @author Lion Li
* @date 2026-07-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("efcode_virtual_unit_user")
public class EfcodeVirtualUnitUser extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "vir_user_id")
private String virUserId;
/**
* 真实用户id,关联sys_user.user_id
*/
private String sysUserId;
/**
* 备注
*/
private String remark;
/**
* 显示顺序
*/
private Long orderNum;
}

45
zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/domain/bo/EfcodeVirtualUnitUserBo.java

@ -0,0 +1,45 @@
package com.zdxt.enforcementcode.domain.bo;
import com.zdxt.enforcementcode.domain.EfcodeVirtualUnitUser;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* 虚拟单位用户业务对象 efcode_virtual_unit_user
*
* @author Lion Li
* @date 2026-07-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = EfcodeVirtualUnitUser.class, reverseConvertGenerate = false)
public class EfcodeVirtualUnitUserBo extends BaseEntity {
/**
* 主键ID
*/
@NotBlank(message = "主键ID不能为空", groups = { EditGroup.class })
private String virUserId;
/**
* 真实用户id,关联sys_user.user_id
*/
private String sysUserId;
/**
* 备注
*/
private String remark;
/**
* 显示顺序
*/
private Long orderNum;
}

56
zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/domain/vo/EfcodeVirtualUnitUserVo.java

@ -0,0 +1,56 @@
package com.zdxt.enforcementcode.domain.vo;
import com.zdxt.enforcementcode.domain.EfcodeVirtualUnitUser;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 虚拟单位用户视图对象 efcode_virtual_unit_user
*
* @author Lion Li
* @date 2026-07-07
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = EfcodeVirtualUnitUser.class)
public class EfcodeVirtualUnitUserVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private String virUserId;
/**
* 真实用户id,关联sys_user.user_id
*/
@ExcelProperty(value = "真实用户id,关联sys_user.user_id")
private String sysUserId;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 显示顺序
*/
@ExcelProperty(value = "显示顺序")
private Long orderNum;
}

38
zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/domain/vo/VirtualUnitDeptTreeVo.java

@ -0,0 +1,38 @@
package com.zdxt.enforcementcode.domain.vo;
import cn.hutool.core.lang.tree.Tree;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
/**
* 角色-虚拟单位部门树选择视图对象
* <p>
* 树节点ID使用 vir_id 展示层级节点上携带 sysDeptId 供前端绑定角色部门关系时使用
* checkedKeys 为已勾选的 vir_id 列表由角色已保存的 sys_dept_id 反查得到
*
* @author Lion Li
*/
@Data
public class VirtualUnitDeptTreeVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 已勾选的虚拟单位节点ID列表vir_id
*/
private List<String> checkedKeys;
/**
* 虚拟单位部门树节点id=vir_idlabel=vir_name携带 sysDeptId
*/
private List<Tree<String>> depts;
public VirtualUnitDeptTreeVo(List<String> checkedKeys, List<Tree<String>> depts) {
this.checkedKeys = checkedKeys;
this.depts = depts;
}
}

15
zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/mapper/EfcodeVirtualUnitUserMapper.java

@ -0,0 +1,15 @@
package com.zdxt.enforcementcode.mapper;
import com.zdxt.enforcementcode.domain.EfcodeVirtualUnitUser;
import com.zdxt.enforcementcode.domain.vo.EfcodeVirtualUnitUserVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 虚拟单位用户Mapper接口
*
* @author Lion Li
* @date 2026-07-07
*/
public interface EfcodeVirtualUnitUserMapper extends BaseMapperPlus<EfcodeVirtualUnitUser, EfcodeVirtualUnitUserVo> {
}

68
zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/service/IEfcodeVirtualUnitUserService.java

@ -0,0 +1,68 @@
package com.zdxt.enforcementcode.service;
import com.zdxt.enforcementcode.domain.vo.EfcodeVirtualUnitUserVo;
import com.zdxt.enforcementcode.domain.bo.EfcodeVirtualUnitUserBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 虚拟单位用户Service接口
*
* @author Lion Li
* @date 2026-07-07
*/
public interface IEfcodeVirtualUnitUserService {
/**
* 查询虚拟单位用户
*
* @param virUserId 主键
* @return 虚拟单位用户
*/
EfcodeVirtualUnitUserVo queryById(String virUserId);
/**
* 分页查询虚拟单位用户列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 虚拟单位用户分页列表
*/
TableDataInfo<EfcodeVirtualUnitUserVo> queryPageList(EfcodeVirtualUnitUserBo bo, PageQuery pageQuery);
/**
* 查询符合条件的虚拟单位用户列表
*
* @param bo 查询条件
* @return 虚拟单位用户列表
*/
List<EfcodeVirtualUnitUserVo> queryList(EfcodeVirtualUnitUserBo bo);
/**
* 新增虚拟单位用户
*
* @param bo 虚拟单位用户
* @return 是否新增成功
*/
Boolean insertByBo(EfcodeVirtualUnitUserBo bo);
/**
* 修改虚拟单位用户
*
* @param bo 虚拟单位用户
* @return 是否修改成功
*/
Boolean updateByBo(EfcodeVirtualUnitUserBo bo);
/**
* 校验并批量删除虚拟单位用户信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
}

133
zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeVirtualUnitUserServiceImpl.java

@ -0,0 +1,133 @@
package com.zdxt.enforcementcode.service.impl;
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.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.zdxt.enforcementcode.domain.bo.EfcodeVirtualUnitUserBo;
import com.zdxt.enforcementcode.domain.vo.EfcodeVirtualUnitUserVo;
import com.zdxt.enforcementcode.domain.EfcodeVirtualUnitUser;
import com.zdxt.enforcementcode.mapper.EfcodeVirtualUnitUserMapper;
import com.zdxt.enforcementcode.service.IEfcodeVirtualUnitUserService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 虚拟单位用户Service业务层处理
*
* @author Lion Li
* @date 2026-07-07
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class EfcodeVirtualUnitUserServiceImpl implements IEfcodeVirtualUnitUserService {
private final EfcodeVirtualUnitUserMapper baseMapper;
/**
* 查询虚拟单位用户
*
* @param virUserId 主键
* @return 虚拟单位用户
*/
@Override
public EfcodeVirtualUnitUserVo queryById(String virUserId){
return baseMapper.selectVoById(virUserId);
}
/**
* 分页查询虚拟单位用户列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 虚拟单位用户分页列表
*/
@Override
public TableDataInfo<EfcodeVirtualUnitUserVo> queryPageList(EfcodeVirtualUnitUserBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<EfcodeVirtualUnitUser> lqw = buildQueryWrapper(bo);
Page<EfcodeVirtualUnitUserVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的虚拟单位用户列表
*
* @param bo 查询条件
* @return 虚拟单位用户列表
*/
@Override
public List<EfcodeVirtualUnitUserVo> queryList(EfcodeVirtualUnitUserBo bo) {
LambdaQueryWrapper<EfcodeVirtualUnitUser> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<EfcodeVirtualUnitUser> buildQueryWrapper(EfcodeVirtualUnitUserBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<EfcodeVirtualUnitUser> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(EfcodeVirtualUnitUser::getVirUserId);
lqw.eq(StringUtils.isNotBlank(bo.getSysUserId()), EfcodeVirtualUnitUser::getSysUserId, bo.getSysUserId());
lqw.eq(bo.getOrderNum() != null, EfcodeVirtualUnitUser::getOrderNum, bo.getOrderNum());
return lqw;
}
/**
* 新增虚拟单位用户
*
* @param bo 虚拟单位用户
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(EfcodeVirtualUnitUserBo bo) {
EfcodeVirtualUnitUser add = MapstructUtils.convert(bo, EfcodeVirtualUnitUser.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setVirUserId(add.getVirUserId());
}
return flag;
}
/**
* 修改虚拟单位用户
*
* @param bo 虚拟单位用户
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(EfcodeVirtualUnitUserBo bo) {
EfcodeVirtualUnitUser update = MapstructUtils.convert(bo, EfcodeVirtualUnitUser.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(EfcodeVirtualUnitUser entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除虚拟单位用户信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

6
zdxt-modules/zdxt-enforcement-code-common/src/main/resources/mapper/enforcementcode/EfcodeVirtualUnitUserMapper.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zdxt.enforcementcode.mapper.EfcodeVirtualUnitUserMapper">
</mapper>

4
zdxt-web-client/zdxt-admin-plus-ui/src/views/system/role/index-dept-separate.vue

@ -41,7 +41,7 @@
</el-form-item>
<el-form-item label="创建时间" style="width: 308px">
<el-date-picker
v-model="dateRange"
v-model="dateRange as any"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
range-separator="-"
@ -487,7 +487,7 @@ const getRoleDeptTreeSelect = async (roleId: string | number) => {
};
/** 树权限(展开/折叠) */
const handleCheckedTreeExpand = (value: boolean, type: string) => {
const handleCheckedTreeExpand = (value: any, type: string) => {
if (type == 'menu') {
const treeList = menuOptions.value;
for (let i = 0; i < treeList.length; i++) {

Loading…
Cancel
Save