Browse Source

虚拟单位重组功能开发

dev-V1.0.1
庄锐波 4 months ago
parent
commit
b926804c21
  1. 101
      doc/庄锐波-工作周报.md
  2. 41
      script/sql/zfjd-refactoring-v1/011-重建虚拟单位树.sql
  3. 22
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/EfcodeVirtualUnit.java
  4. 26
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EfcodeVirtualUnitBo.java
  5. 32
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EfcodeVirtualUnitVo.java
  6. 6
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeVirtualUnitServiceImpl.java
  7. 11
      zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/virtualUnit/unitBuilder.vue
  8. 11
      zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/service/test/InitVirtualUnitTest.java

101
doc/庄锐波-工作周报.md

@ -0,0 +1,101 @@
# 庄锐波-工作周报
## 时间:2026-04-01 至 2026-04-03
**本周工作:**
* 了解一期工程的架构,后端升级的框架,jdk升级到17,spring-boot升级为3.5.12,spring-cloud升级为:2025.0.0,若依升级为:RuoYi-Vue-Plus5.6.0前后端分离版本
* 了解一期工程的架构,前端升级的框架,监督端改为vue,typescript,vite,主要是为了配合RuoYi-Vue-Plus的前端工程
* 基于一期的数据库,整理sql的升级脚本,后续二期的数据库基于sql进行升级,整理了部分
* 建立开发的工程,并根据一期的情况进行部分调整。代码已经迁入git仓库
* 修改RuoYi-Vue-Plus的某些功能以符合一期的功能需要。二期继续沿用
## 时间:2026-04-04 至 2026-04-10
**本周工作:**
* 继续基于一期的数据库,整理sql的升级脚本,后续二期的数据库基于sql进行升级
* 尝试将1期的代码迁移到新搭建的二期工程中,考虑到迁移工作量较大,并且后边还是得重写一期的功能代码,放弃迁移一期代码的方案,直接开始重写一期的业务功能后台代码
* 理解一期相关的功能代码
* 送码入企的功能开发(下周进行测试)
## 时间:2026-04-11 至 2026-04-17
**本周工作:**
* 继续基于一期的数据库,整理sql的升级脚本,后续二期的数据库基于sql进行升级
* 制作编译打包脚本,分别将代码编译打包成zdxt-gateway-web-server.jar,zdxt-enf-ep.jar,zdxt-ent-ep.jar,zdxt-sup-ep.jar,zdxt-enf-app,zdxt-ent-app,zdxt-sup-app,zdxt-sup-web
* 重新梳理企业端的代码,从前端工程到后端的业务接口。完成部分
* 送码入期和富文本编辑的开发协助
## 时间:2026-04-18 至 2026-04-24
**本周工作:**
* 继续基于一期的数据库,整理sql的升级脚本,后续二期的数据库基于sql进行升级
* 基于二期的开发框架,完成企业端的部分功能(登陆,主页,亮码,历史执法信息),ui暂时没怎么处理,后续暂时移交给甘浩,需要注意与深i企重新整合的开发需要参考一期的实现方式
* 基于二期的开发框架,完成执法端的部分功能(登陆,主页,扫码),ui暂时没怎么处理,后续暂时移交给甘浩,需要注意与深政易重新整合的开发需要参考一期的实现方式。扫码时需要注意进行降级处理:1)与深政易整合的情况下;2)手机直接打开的情况下;3)pc上测试时直接打开的情况下。现在已经做了部分降级处理,但是还没有与深政易完成整合,后续可能还有修改
* 编辑二期初步的网络架构和部署图,后续讨论
* 了解数据权限的相关问题,初步构思处理方案
* 与其他技术人员交流了二期的开发框架
## 时间:2026-04-25 至 2026-04-30
**本周工作:**
* 协助处理送码入企的上线部署工作
* 沟通系统数据查看,统计权限的实现方式
* 把一期现有的数据统计和查看,基于监督码需要的单位,重新整合为一个树.权限逻辑统一为上级看下级和一个特殊看全部的权限.
例如:
- A单位----里边的人可以看和统计自己的和下级的,
- ->A1子单位(查询)
- ->A2子单位(统计)
- ->A3子单位(查询/统计)
- 表述的意思就是,
- A查询数据范围=自己单位的+A1单位的+A3单位的
- A统计数据范围=自己单位的+A2单位的+A3单位的,
- 统计类型的:只能出现一次.避免数据被多次统计
- 查询类型的:可以出现多次.
* 协助处理一期中导入EXCEL数据没有权限控制的问题
<div style="page-break-after: always;"></div>
## 时间:2026-05-06 至 2026-05-10
**本周工作:**
* 清理sys_dept和sys_user中的无效字段
* 基于若依整理二期系统的后台管理功能,并进行补充和开发,初步功能菜单确认为以下,后续逐步完成一下菜单中的功能,有部分功能属于若伊本身自带的,不过在还没有梳理完成前,暂时标记为❌
```text
后台管理
├── [❌] 系统设置
│ ├── [❌] 菜单管理
│ ├── [❌] 数据字典
│ ├── [❌] 参数设置
│ ├── [❌] 文件管理
│ └── [❌] 客户端管理
├── [✅] 机构与权限管理
│ ├── [✅] 市认证单位与人员
│ ├── [🟡] 执法码单位与人员
│ │ ├── [🟡] 执法单位设置
│ │ └── [❌] 执法人员设置
│ └── [❌] 角色设置
├── [❌] 日志管理
│ ├── [❌] 操作日志
│ └── [❌] 登陆日志
├── [❌] 系统工具
│ └── [❌] 代码生成
├── [❌] 系统监控
│ ├── [❌] 任务调度
│ ├── [❌] 缓存监控
│ ├── [❌] 在线认证用户
│ └── [❌] 在线企业用户
├── [❌] 系统对接
│ ├── [❌] 密钥管理
│ ├── [❌] 接口管理
│ ├── [❌] 前置库
│ └── [❌] DataX任务备注
└── [❌] 系统集成模拟
├── [❌] 深i企模拟集成
└── [❌] 深政易模拟集成
```

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

@ -1,23 +1,24 @@
create table efcode_virtual_unit
(
vir_id varchar(100) not null comment '虚拟单位ID' primary key,
vir_is_virtual varchar(20) null comment '是否是虚拟节点',
vir_parent_id varchar(100) default '0' null comment '父部门id',
vir_name varchar(100) null comment '名称',
vir_zone tinyint null comment '类型',
vir_ancestors varchar(500) default '' null comment '虚拟单位祖级ID列表:包含自身',
vir_display_path varchar(1000) null comment '虚拟单位节点的单位路径:包含自身',
vir_include_type varchar(20) null comment '包含类型:查询/统计,查询,统计',
vir_domain varchar(40) null comment '',
vir_status varchar(40) null comment '状态',
vir_show_at_business varchar(40) null comment '是否在业务中显示',
vir_remark varchar(500) null comment '备注',
sys_dept_id varchar(100) null comment '部门id',
srz_organization_id varchar(100) null comment '市认证的组织ID',
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 '更新时间'
vir_id varchar(100) not null comment '虚拟单位ID' primary key,
vir_is_virtual varchar(20) null comment '是否是虚拟节点',
vir_parent_id varchar(100) default '0' null comment '父部门id',
vir_name varchar(100) null comment '名称',
vir_zone tinyint null comment '类型',
vir_ancestors varchar(500) default '' null comment '虚拟单位祖级ID列表:包含自身',
vir_display_path varchar(1000) null comment '虚拟单位节点的单位路径:包含自身',
vir_include_statistics varchar(20) null default '' comment '包含统计',
vir_include_search varchar(20) null default '' comment '包含查询',
vir_show_at_business varchar(40) null comment '是否在业务中显示',
vir_domain varchar(40) null comment '',
vir_status varchar(40) null comment '状态',
vir_remark varchar(500) null comment '备注',
sys_dept_id varchar(100) null comment '部门id',
srz_organization_id varchar(100) null comment '市认证的组织ID',
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;

22
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/EfcodeVirtualUnit.java

@ -11,7 +11,7 @@ import java.io.Serial;
* 虚拟单位树对象 efcode_virtual_unit
*
* @author Lion Li
* @date 2026-05-07
* @date 2026-05-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ -32,7 +32,6 @@ public class EfcodeVirtualUnit extends BaseEntity {
*/
private String virIsVirtual;
/**
* 父部门id
*/
@ -59,9 +58,19 @@ public class EfcodeVirtualUnit extends BaseEntity {
private String virDisplayPath;
/**
* 包含类型:查询/统计,查询,统计
* 包含统计
*/
private String virIncludeStatistics;
/**
* 包含查询
*/
private String virIncludeSearch;
/**
* 是否在业务中显示
*/
private String virIncludeType;
private String virShowAtBusiness;
/**
*
@ -73,11 +82,6 @@ public class EfcodeVirtualUnit extends BaseEntity {
*/
private String virStatus;
/**
* 是否在业务中显示
*/
private String virShowAtBusiness;
/**
* 备注
*/

26
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EfcodeVirtualUnitBo.java

@ -13,7 +13,7 @@ import jakarta.validation.constraints.*;
* 虚拟单位树业务对象 efcode_virtual_unit
*
* @author Lion Li
* @date 2026-05-07
* @date 2026-05-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ -31,11 +31,6 @@ public class EfcodeVirtualUnitBo extends BaseEntity {
*/
private String virIsVirtual;
/**
* 租户编号
*/
private String virTenantId;
/**
* 父部门id
*/
@ -62,9 +57,19 @@ public class EfcodeVirtualUnitBo extends BaseEntity {
private String virDisplayPath;
/**
* 包含类型:查询/统计,查询,统计
* 包含统计
*/
private String virIncludeStatistics;
/**
* 包含查询
*/
private String virIncludeSearch;
/**
* 是否在业务中显示
*/
private String virIncludeType;
private String virShowAtBusiness;
/**
*
@ -76,11 +81,6 @@ public class EfcodeVirtualUnitBo extends BaseEntity {
*/
private String virStatus;
/**
* 是否在业务中显示
*/
private String virShowAtBusiness;
/**
* 备注
*/

32
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EfcodeVirtualUnitVo.java

@ -18,7 +18,7 @@ import java.util.Date;
* 虚拟单位树视图对象 efcode_virtual_unit
*
* @author Lion Li
* @date 2026-05-07
* @date 2026-05-08
*/
@Data
@ExcelIgnoreUnannotated
@ -40,12 +40,6 @@ public class EfcodeVirtualUnitVo implements Serializable {
@ExcelProperty(value = "是否是虚拟节点")
private String virIsVirtual;
/**
* 租户编号
*/
@ExcelProperty(value = "租户编号")
private String virTenantId;
/**
* 父部门id
*/
@ -77,10 +71,22 @@ public class EfcodeVirtualUnitVo implements Serializable {
private String virDisplayPath;
/**
* 包含类型:查询/统计,查询,统计
* 包含统计
*/
@ExcelProperty(value = "包含统计")
private String virIncludeStatistics;
/**
* 包含查询
*/
@ExcelProperty(value = "包含查询")
private String virIncludeSearch;
/**
* 是否在业务中显示
*/
@ExcelProperty(value = "包含类型:查询/统计,查询,统计")
private String virIncludeType;
@ExcelProperty(value = "是否在业务中显示")
private String virShowAtBusiness;
/**
*
@ -94,12 +100,6 @@ public class EfcodeVirtualUnitVo implements Serializable {
@ExcelProperty(value = "状态")
private String virStatus;
/**
* 是否在业务中显示
*/
@ExcelProperty(value = "是否在业务中显示")
private String virShowAtBusiness;
/**
* 备注
*/

6
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeVirtualUnitServiceImpl.java

@ -76,13 +76,15 @@ public class EfcodeVirtualUnitServiceImpl implements IEfcodeVirtualUnitService {
lqw.orderByAsc(EfcodeVirtualUnit::getVirId);
lqw.eq(StringUtils.isNotBlank(bo.getVirIsVirtual()), EfcodeVirtualUnit::getVirIsVirtual, bo.getVirIsVirtual());
lqw.eq(StringUtils.isNotBlank(bo.getVirParentId()), EfcodeVirtualUnit::getVirParentId, bo.getVirParentId());
lqw.like(StringUtils.isNotBlank(bo.getVirName()), EfcodeVirtualUnit::getVirName, bo.getVirName());
lqw.eq(bo.getVirZone() != null, EfcodeVirtualUnit::getVirZone, bo.getVirZone());
lqw.eq(StringUtils.isNotBlank(bo.getVirAncestors()), EfcodeVirtualUnit::getVirAncestors, bo.getVirAncestors());
lqw.eq(StringUtils.isNotBlank(bo.getVirDisplayPath()), EfcodeVirtualUnit::getVirDisplayPath, bo.getVirDisplayPath());
lqw.eq(StringUtils.isNotBlank(bo.getVirIncludeType()), EfcodeVirtualUnit::getVirIncludeType, bo.getVirIncludeType());
lqw.eq(StringUtils.isNotBlank(bo.getVirIncludeStatistics()), EfcodeVirtualUnit::getVirIncludeStatistics, bo.getVirIncludeStatistics());
lqw.eq(StringUtils.isNotBlank(bo.getVirIncludeSearch()), EfcodeVirtualUnit::getVirIncludeSearch, bo.getVirIncludeSearch());
lqw.eq(StringUtils.isNotBlank(bo.getVirShowAtBusiness()), EfcodeVirtualUnit::getVirShowAtBusiness, bo.getVirShowAtBusiness());
lqw.eq(StringUtils.isNotBlank(bo.getVirDomain()), EfcodeVirtualUnit::getVirDomain, bo.getVirDomain());
lqw.eq(StringUtils.isNotBlank(bo.getVirStatus()), EfcodeVirtualUnit::getVirStatus, bo.getVirStatus());
lqw.eq(StringUtils.isNotBlank(bo.getVirShowAtBusiness()), EfcodeVirtualUnit::getVirShowAtBusiness, bo.getVirShowAtBusiness());
lqw.eq(StringUtils.isNotBlank(bo.getVirRemark()), EfcodeVirtualUnit::getVirRemark, bo.getVirRemark());
lqw.eq(StringUtils.isNotBlank(bo.getSysDeptId()), EfcodeVirtualUnit::getSysDeptId, bo.getSysDeptId());
lqw.eq(StringUtils.isNotBlank(bo.getSrzOrganizationId()), EfcodeVirtualUnit::getSrzOrganizationId, bo.getSrzOrganizationId());

11
zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/virtualUnit/unitBuilder.vue

@ -0,0 +1,11 @@
<script setup lang="ts">
</script>
<template>
</template>
<style scoped lang="scss">
</style>

11
zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/service/test/InitVirtualUnitTest.java

@ -180,10 +180,11 @@ public class InitVirtualUnitTest {
// 6. 为每个区创建 "区直" 虚拟节点,并将 zone=3/5/6 的部门挂到对应区直下
districtMap.forEach((pid, districtName) -> {
EfcodeVirtualUnit quzhiUnit = buildVirtualUnit(pid, "区直", null, 0L);
String quzhiName = districtName + "区直";
EfcodeVirtualUnit quzhiUnit = buildVirtualUnit(pid, quzhiName, null, 0L);
String quzhiId = quzhiUnit.getVirId();
allUnits.add(quzhiUnit);
idNameMap.put(quzhiId, "区直");
idNameMap.put(quzhiId, quzhiName);
for (SysDeptVo dept : depts) {
if (Objects.equals(dept.getZone(), 3) || Objects.equals(dept.getZone(), 6) || Objects.equals(dept.getZone(), 5)) {
@ -265,7 +266,8 @@ public class InitVirtualUnitTest {
unit.setVirName(dept.getDeptName());
unit.setVirZone(dept.getZone() != null ? Long.valueOf(dept.getZone()) : null);
unit.setVirStatus("启用");
unit.setVirIncludeType("全部");
unit.setVirIncludeStatistics("是");
unit.setVirIncludeSearch("是");
unit.setVirShowAtBusiness("是");
unit.setSysDeptId(dept.getDeptId());
unit.setSrzOrganizationId(deptOrgIdMap.getOrDefault(dept.getDeptId(), ""));
@ -334,7 +336,8 @@ public class InitVirtualUnitTest {
unit.setVirName(name);
unit.setVirZone(zone);
unit.setVirStatus("启用");
unit.setVirIncludeType("全部");
unit.setVirIncludeStatistics("是");
unit.setVirIncludeSearch("是");
unit.setVirShowAtBusiness("是");
unit.setSysDeptId(null);
unit.setSrzOrganizationId(null);

Loading…
Cancel
Save