From be42151d18b03ba04b649b832b2f2e88d7ef923f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BA=84=E9=94=90=E6=B3=A2?= <10549902+zhuangruibo@user.noreply.gitee.com> Date: Sun, 24 May 2026 15:59:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=A7=E6=B3=95=E7=AB=AF-=E8=AE=A1=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../013-计划任务表设计.sql | 52 +++++++++---------- .../enforcementcode/domain/EfcodeCpPlan.java | 5 -- .../domain/EfcodeCpReserve.java | 5 ++ .../domain/bo/EfcodeCpPlanBo.java | 6 --- .../domain/bo/EfcodeCpReserveBo.java | 6 +++ .../domain/vo/EfcodeCpPlanVo.java | 4 +- .../domain/vo/EfcodeCpReserveVo.java | 6 +++ .../service/IEfcodeCpSettingService.java | 2 +- .../service/impl/EfcodeCpPlanServiceImpl.java | 25 ++++++++- .../src/api/enforcement/plan.js | 2 +- .../enforcement/my/plan/cp_plan_edit.vue | 2 - .../test/cp/AppEnfCpPlanControllerTest.java | 1 - 12 files changed, 70 insertions(+), 46 deletions(-) diff --git a/script/sql/zfjd-refactoring-v1/013-计划任务表设计.sql b/script/sql/zfjd-refactoring-v1/013-计划任务表设计.sql index d6300ec9..57bd28f6 100644 --- a/script/sql/zfjd-refactoring-v1/013-计划任务表设计.sql +++ b/script/sql/zfjd-refactoring-v1/013-计划任务表设计.sql @@ -26,8 +26,6 @@ CREATE TABLE `efcode_cp_plan` `reserve_status` tinyint NOT NULL DEFAULT 0 COMMENT '预约状态:0=草稿,1=待预约,2=预约中,3=预约完成', `system_reserved` tinyint NOT NULL DEFAULT 0 COMMENT '是否已经经过系统推荐预约:1=是,0=否', `manual_reserved` tinyint NOT NULL DEFAULT 0 COMMENT '是否已经经过手动预约:1=是,0=否', - `edit_enable` tinyint NOT NULL DEFAULT 1 COMMENT '是否可以修改:1=是,0=否', - `bureau_dept_id` varchar(50) NOT NULL COMMENT '执法单位ID', `bureau_dept_name` varchar(100) NOT NULL COMMENT '执法单位名称', `organ_id` varchar(50) NOT NULL COMMENT '市认证机构ID', @@ -74,23 +72,24 @@ CREATE TABLE `efcode_cp_plan_users` CREATE TABLE `efcode_cp_reserve` ( - `id` varchar(50) NOT NULL COMMENT '主键ID' primary key, - `plan_id` varchar(50) NOT NULL COMMENT '计划ID', - `reserve_time` datetime NOT NULL COMMENT '预约时间', - - `op_status` tinyint NOT NULL COMMENT '操作状态' DEFAULT 3 COMMENT '操作状态:1=同意,2=拒绝,3=待确认,4=超期取消', - `op_order` int NOT NULL COMMENT '联合时用户的操作顺序', - `op_time` datetime NOT NULL COMMENT '联合时用户的操作时间', - `op_message` varchar(500) NOT NULL COMMENT '联合时用户输入的操作消息', - `op_set_date` datetime NOT NULL COMMENT '联合时用户选择的操作时间', - `op_set_time` tinyint NOT NULL COMMENT '执行时段:1=上午,2=下午,3=其他', - - `from` tinyint NOT NULL COMMENT '来自' COMMENT '来自:系统匹配=1,手动匹配=0', - `create_by` varchar(64) DEFAULT '' COMMENT '创建者', - `create_dept` varchar(64) DEFAULT NULL COMMENT '创建人部门', - `update_by` varchar(64) DEFAULT '' COMMENT '更新者', - `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' + `id` varchar(50) NOT NULL COMMENT '主键ID' primary key, + `plan_id` varchar(50) NOT NULL COMMENT '计划ID', + `plan_group_id` varchar(50) NOT NULL COMMENT '计划分组ID:相同的表示预约同一个计划', + `reserve_time` datetime NOT NULL COMMENT '预约时间', + + `op_status` tinyint NOT NULL COMMENT '操作状态' DEFAULT 3 COMMENT '操作状态:1=同意,2=拒绝,3=待确认,4=超期取消', + `op_order` int NOT NULL COMMENT '联合时用户的操作顺序', + `op_time` datetime NOT NULL COMMENT '联合时用户的操作时间', + `op_message` varchar(500) NOT NULL COMMENT '联合时用户输入的操作消息', + `op_set_date` datetime NOT NULL COMMENT '联合时用户选择的操作时间', + `op_set_time` tinyint NOT NULL COMMENT '执行时段:1=上午,2=下午,3=其他', + + `from` tinyint NOT NULL COMMENT '来自' COMMENT '来自:系统匹配=1,手动匹配=0', + `create_by` varchar(64) DEFAULT '' COMMENT '创建者', + `create_dept` varchar(64) DEFAULT NULL COMMENT '创建人部门', + `update_by` varchar(64) DEFAULT '' COMMENT '更新者', + `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' ) comment '行政执法检查计划-预约表' row_format = DYNAMIC; CREATE TABLE `efcode_cp_notice` @@ -156,11 +155,11 @@ CREATE TABLE `efcode_cp_notice_message` `user_name` varchar(100) NOT NULL COMMENT '用户名称', `from` tinyint NOT NULL COMMENT '来自' COMMENT '来自:企业=1,执法单位=0', `message` varchar(1000) NOT NULL COMMENT '消息内容', - `create_by` varchar(64) DEFAULT '' COMMENT '创建者', - `create_dept` varchar(64) DEFAULT NULL COMMENT '创建人部门', - `update_by` varchar(64) DEFAULT '' COMMENT '更新者', - `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `create_by` varchar(64) DEFAULT '' COMMENT '创建者', + `create_dept` varchar(64) DEFAULT NULL COMMENT '创建人部门', + `update_by` varchar(64) DEFAULT '' COMMENT '更新者', + `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_delete` tinyint NOT NULL DEFAULT 0 COMMENT '是否删除:0=否,1=是' ) comment '行政执法检查计划-预告交流表' row_format = DYNAMIC; @@ -184,5 +183,6 @@ VALUES ('CP_SETTING_SUBMIT_DEADLINE', '下阶段计划提交最晚时间', '26', ('CP_SETTING_AUTO_MATCH_START', '系统自动推荐匹配开始时间', '26', '系统自动推荐匹配的开始时间(号)>=', '0', '0'), ('CP_SETTING_MANUAL_MATCH_DAYS', '手工匹配距计划开始天数', '3', '手工匹配距离计划开始的天数>=', '0', '0'), - ('CP_MAX_UNION_UNIT', '单次联合单位最大数量', '3', '单次联合单位最大数量>=2', '0', '0'), - ('CP_MAX_INNER_UNIT_AC_PERSON_NUM', '单位内部单次计划最多参与人数', '3', '单位内部单次计划最多参与人数<=3', '0', '0'); + ('CP_MAX_UNION_UNIT', '单次联合单位最大数量', '3', '单次联合单位最大数量<=3', '0', '0'), + ('CP_MAX_INNER_UNIT_AC_PERSON_NUM', '单位内部单次计划最多参与人数', '3', '单位内部单次计划最多参与人数<=3', '0', + '0'); diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/EfcodeCpPlan.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/EfcodeCpPlan.java index b9d5cabb..218fc660 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/EfcodeCpPlan.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/EfcodeCpPlan.java @@ -119,11 +119,6 @@ public class EfcodeCpPlan extends BaseEntity { */ private Long manualReserved; - /** - * 是否可以修改:1=是,0=否 - */ - private Long editEnable; - /** * 执法单位ID */ diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/EfcodeCpReserve.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/EfcodeCpReserve.java index df34c9db..524bed1d 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/EfcodeCpReserve.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/EfcodeCpReserve.java @@ -34,6 +34,11 @@ public class EfcodeCpReserve extends BaseEntity { */ private String planId; + /** + * 计划分组ID:相同的表示预约同一个计划 + */ + private String planGroupId; + /** * 预约时间 */ diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EfcodeCpPlanBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EfcodeCpPlanBo.java index 096676ee..498f86d0 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EfcodeCpPlanBo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EfcodeCpPlanBo.java @@ -135,12 +135,6 @@ public class EfcodeCpPlanBo extends BaseEntity { @NotNull(message = "是否已经经过手动预约:1=是,0=否不能为空", groups = { AddGroup.class, EditGroup.class }) private Long manualReserved; - /** - * 是否可以修改:1=是,0=否 - */ - @NotNull(message = "是否可以修改:1=是,0=否不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long editEnable; - /** * 执法单位ID */ diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EfcodeCpReserveBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EfcodeCpReserveBo.java index ad0360b3..156add52 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EfcodeCpReserveBo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/EfcodeCpReserveBo.java @@ -34,6 +34,12 @@ public class EfcodeCpReserveBo extends BaseEntity { @NotBlank(message = "计划ID不能为空", groups = { AddGroup.class, EditGroup.class }) private String planId; + /** + * 计划分组ID:相同的表示预约同一个计划 + */ + @NotBlank(message = "计划分组ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private String planGroupId; + /** * 预约时间 */ diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EfcodeCpPlanVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EfcodeCpPlanVo.java index 1b501c6d..cc12a864 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EfcodeCpPlanVo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EfcodeCpPlanVo.java @@ -152,9 +152,9 @@ public class EfcodeCpPlanVo implements Serializable { private Long manualReserved; /** - * 是否可以修改:1=是,0=否 + * 是否可以修改:1=是,0=否(非数据库字段,后置计算) */ - @ExcelProperty(value = "是否可以修改:1=是,0=否") + @com.baomidou.mybatisplus.annotation.TableField(exist = false) private Long editEnable; /** diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EfcodeCpReserveVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EfcodeCpReserveVo.java index f10f29ca..64db5534 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EfcodeCpReserveVo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EfcodeCpReserveVo.java @@ -42,6 +42,12 @@ public class EfcodeCpReserveVo implements Serializable { @ExcelProperty(value = "计划ID") private String planId; + /** + * 计划分组ID:相同的表示预约同一个计划 + */ + @ExcelProperty(value = "计划分组ID") + private String planGroupId; + /** * 预约时间 */ diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpSettingService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpSettingService.java index ab7f1471..10b798cf 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpSettingService.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpSettingService.java @@ -32,7 +32,7 @@ public interface IEfcodeCpSettingService { String SETTING_ID_MANUAL_MATCH_DAYS = "CP_SETTING_MANUAL_MATCH_DAYS"; /** - * 设置项主键:单次联合单位最大数量>=2 + * 设置项主键:单次联合单位最大数量<=3 */ String SETTING_ID_MAX_UNION_UNIT = "CP_MAX_UNION_UNIT"; diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpPlanServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpPlanServiceImpl.java index 092e8f62..96ee34e1 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpPlanServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpPlanServiceImpl.java @@ -64,6 +64,8 @@ public class EfcodeCpPlanServiceImpl implements IEfcodeCpPlanService { public TableDataInfo queryPageList(EfcodeCpPlanBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + // 后置计算 editEnable + computeEditEnable(result.getRecords()); return TableDataInfo.build(result); } @@ -76,7 +78,10 @@ public class EfcodeCpPlanServiceImpl implements IEfcodeCpPlanService { @Override public List queryList(EfcodeCpPlanBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + List list = baseMapper.selectVoList(lqw); + // 后置计算 editEnable + computeEditEnable(list); + return list; } /** @@ -139,6 +144,23 @@ public class EfcodeCpPlanServiceImpl implements IEfcodeCpPlanService { } } + /** + * 后置计算 editEnable:判断记录是否可编辑 + *

规则:预约状态为草稿(0)或待预约(1)时可编辑,其他状态不可编辑

+ * + * @param records 查询结果列表 + */ + private void computeEditEnable(List records) { + if (records == null || records.isEmpty()) { + return; + } + for (EfcodeCpPlanVo vo : records) { + Long status = vo.getReserveStatus(); + // 草稿(0)或待预约(1)可编辑,其他状态不可编辑 + vo.setEditEnable(status != null && status <= 1L ? 1L : 0L); + } + } + private LambdaQueryWrapper buildQueryWrapper(EfcodeCpPlanBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); @@ -161,7 +183,6 @@ public class EfcodeCpPlanServiceImpl implements IEfcodeCpPlanService { lqw.eq(bo.getReserveStatus() != null, EfcodeCpPlan::getReserveStatus, bo.getReserveStatus()); lqw.eq(bo.getSystemReserved() != null, EfcodeCpPlan::getSystemReserved, bo.getSystemReserved()); lqw.eq(bo.getManualReserved() != null, EfcodeCpPlan::getManualReserved, bo.getManualReserved()); - lqw.eq(bo.getEditEnable() != null, EfcodeCpPlan::getEditEnable, bo.getEditEnable()); lqw.eq(StringUtils.isNotBlank(bo.getBureauDeptId()), EfcodeCpPlan::getBureauDeptId, bo.getBureauDeptId()); lqw.like(StringUtils.isNotBlank(bo.getBureauDeptName()), EfcodeCpPlan::getBureauDeptName, bo.getBureauDeptName()); lqw.eq(StringUtils.isNotBlank(bo.getOrganId()), EfcodeCpPlan::getOrganId, bo.getOrganId()); diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/plan.js b/zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/plan.js index bc7aa634..20ab6681 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/plan.js +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/plan.js @@ -2,7 +2,7 @@ import { _get, _post, _put, _delete } from "@/http/index"; // region 计划管理接口 -const planBaseUrl = "/api/app-enf/cpPlan"; +const planBaseUrl = "/app-enf/cpPlan"; // 计划列表(分页) export const getPlanList = (params, success, error) => _get(planBaseUrl + "/list", params, success, error); diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue index 60b3ea3a..72e17ad5 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue @@ -296,7 +296,6 @@ const form = ref({ reserveStatus: 0, systemReserved: 0, manualReserved: 0, - editEnable: 1, organId: '', organName: '', deptId: '', @@ -634,7 +633,6 @@ const onSubmit = () => { if (form.value.isUnion == null) form.value.isUnion = 0; if (form.value.systemReserved == null) form.value.systemReserved = 0; if (form.value.manualReserved == null) form.value.manualReserved = 0; - if (form.value.editEnable == null) form.value.editEnable = 1; if (form.value.isDelete == null) form.value.isDelete = 0; const api = isEdit.value ? editPlan : addPlan; diff --git a/zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/rest/test/cp/AppEnfCpPlanControllerTest.java b/zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/rest/test/cp/AppEnfCpPlanControllerTest.java index 7dc745b0..ae679690 100644 --- a/zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/rest/test/cp/AppEnfCpPlanControllerTest.java +++ b/zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/rest/test/cp/AppEnfCpPlanControllerTest.java @@ -258,7 +258,6 @@ public class AppEnfCpPlanControllerTest { bo.put("reserveStatus", (long) random.nextInt(4)); // 0=草稿,1=待预约,2=预约中,3=预约完成 bo.put("systemReserved", 0L); bo.put("manualReserved", 0L); - bo.put("editEnable", random.nextInt(2) == 0 ? 0L : 1L); bo.put("bureauDeptId", loginInfo.get("bureauUnitId")); bo.put("bureauDeptName", loginInfo.get("bureauUnitName")); bo.put("organId", loginInfo.get("organId"));