diff --git a/doc/庄锐波-工作周报.md b/doc/庄锐波-工作周报.md index 2daa9c29..4f001298 100644 --- a/doc/庄锐波-工作周报.md +++ b/doc/庄锐波-工作周报.md @@ -157,4 +157,30 @@ **下周工作:** * (执法端与企业端)计划,预约,任务,预告的功能开发及自测,预计完成时间6-5 -* 预计6-8号可以由测试人员进行功能测试. \ No newline at end of file +* 预计6-8号可以由测试人员进行功能测试. + +## 时间:2026-06-01 至 2026-06-07 + +**本周工作:** +* (执法端与企业端)计划,预约,任务,预告的功能开发及自测,已基本完成,下周可以安排测试 + +**下周工作:** +* 迁移一期中的以下功能,预计时间需要2周左右 +```text + 执法监督码 + ├── [❌]统计查询 + │ ├── [❌]行政执法 + │ │ ├── [❌]涉企执法情况 + │ │ ├── [❌]企业受检次数 + │ │ ├── [❌]企业信息情况 + │ │ ├── [❌]执法单位情况 + │ │ ├── [❌]执法投诉情况 + │ │ ├── [❌]检查计划情况 + │ ├── [❌]非行政执法 + │ │ ├── [❌]非行政执法 + ├── [❌]工作报表 + ├── [❌]综合管理 + │ ├── [❌]送码入企 + │ ├── [❌]送码入企查询 +``` +* 可能需要分部分时间处理计划,预约,任务,预告的bug和网络策略通后进行部署方面的工作,上边的迁移工作时间可能会延长. \ No newline at end of file diff --git a/script/sql/zfjd-refactoring-v1/013-计划任务表设计.sql b/script/sql/zfjd-refactoring-v1/013-计划任务表设计.sql index 2e08f2fc..3592e490 100644 --- a/script/sql/zfjd-refactoring-v1/013-计划任务表设计.sql +++ b/script/sql/zfjd-refactoring-v1/013-计划任务表设计.sql @@ -6,14 +6,16 @@ CREATE TABLE `efcode_cp_plan` `plan_date` datetime NOT NULL COMMENT '计划执行日期(如 2025-05-08)', `plan_time` tinyint NOT NULL COMMENT '执行时段:1=上午,2=下午,3=其他', - `plan_actual_date` datetime NOT NULL COMMENT '经过预约后最终的计划执行日期(如 2025-05-08)', - `plan_actual_time` tinyint NOT NULL COMMENT '经过预约后最终的执行时段:1=上午,2=下午,3=其他', + `plan_source_date` datetime NULL COMMENT '原始日期', + `plan_source_time` tinyint NULL COMMENT '原始执行时段:1=上午,2=下午,3=其他', `enforce_content` varchar(1000) NOT NULL COMMENT '执法事项(最多1000字)', `enterprise_name` varchar(200) NOT NULL COMMENT '被检查企业/机构名称', `enterprise_number` varchar(200) NOT NULL COMMENT '被检查企业/机构信用代码', `enterprise_id` varchar(200) NOT NULL COMMENT '被检查企业/机构Id', + `contact_person` varchar(100) NULL COMMENT '企业联系人', + `contact_phone` varchar(200) NULL COMMENT '企业联系电话', `enforce_user_names` varchar(512) NOT NULL COMMENT '执法人员姓名(多个逗号分隔)', `enforce_user_ids` varchar(512) NOT NULL COMMENT '执法人员姓名(多个逗号分隔)', @@ -76,35 +78,37 @@ 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', - `plan_group_id` varchar(50) NOT NULL COMMENT '计划分组ID:相同的表示预约同一个计划', - `reserve_time` datetime NOT NULL 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 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=其他', + `op_status` tinyint NOT NULL COMMENT '操作状态' DEFAULT 3 COMMENT '操作状态:1=同意,2=拒绝,3=待确认,4=超期取消', + `op_order` int NOT NULL COMMENT '联合时用户的操作顺序', + `op_time` datetime NULL COMMENT '联合时用户的操作时间', + `op_message` varchar(500) NULL COMMENT '联合时用户输入的操作消息', + `warring_message` varchar(500) NULL COMMENT '警告的消息', + `warring_is_pass` tinyint NULL COMMENT '警告的消息是否被确认:1=已确认,0=为确认', + `op_set_date` datetime NOT NULL COMMENT '联合时用户选择的操作时间', + `op_set_time` tinyint NOT NULL COMMENT '执行时段:1=上午,2=下午,3=其他', - `res_from` tinyint NOT NULL COMMENT '来自:系统匹配=1,手动匹配=0', - `sender_id` varchar(50) NULL DEFAULT '' COMMENT '发送者用户ID', - `receiver_id` varchar(50) NULL DEFAULT '' COMMENT '接收者用户ID', + `res_from` tinyint NOT NULL COMMENT '来自:系统匹配=1,手动匹配=0', + `sender_id` varchar(50) NULL DEFAULT '' COMMENT '发送者用户ID', + `receiver_id` varchar(50) NULL DEFAULT '' COMMENT '接收者用户ID', - `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 '更新时间' ) comment '行政执法检查计划-预约表' row_format = DYNAMIC; CREATE TABLE `efcode_cp_notice` ( - `id` varchar(50) NOT NULL COMMENT '主键ID', + `id` varchar(50) NOT NULL COMMENT '主键ID' primary key, `plan_id` bigint DEFAULT NULL COMMENT '导入的计划ID(关联执法计划表)', - `enforce_date` varchar(16) NOT NULL COMMENT '执法日期', + `enforce_date` datetime NOT NULL COMMENT '执法日期', `enforce_time` tinyint NOT NULL COMMENT '执法时段:1=上午,2=下午,3=其他', `bureau_dept_id` varchar(50) NOT NULL COMMENT '执法单位ID', @@ -115,14 +119,15 @@ CREATE TABLE `efcode_cp_notice` `dept_name` varchar(100) NOT NULL COMMENT '市认证部门名称', `enforce_user_names` varchar(512) NOT NULL COMMENT '执法人员姓名(多个逗号分隔)', - `enforce_user_ids` varchar(512) NOT NULL COMMENT '执法人员姓名(多个逗号分隔)', + `enforce_user_ids` varchar(512) NOT NULL COMMENT '执法人员ID(多个逗号分隔)', + `enforce_user_tels` varchar(512) NULL DEFAULT '' COMMENT '执法人员电话(多个逗号分隔)', `enforce_user_codes` varchar(512) NOT NULL COMMENT '执法人员证件编号(多个逗号分隔)', `enterprise_id` varchar(50) NOT NULL COMMENT '被检查企业ID', `enterprise_name` varchar(200) NOT NULL COMMENT '被检查企业名称', `enterprise_number` varchar(32) DEFAULT NULL COMMENT '企业统一社会信用代码', - `contact_person` varchar(100) NOT NULL COMMENT '企业联系人', + `contact_person` varchar(100) NULL COMMENT '企业联系人', `contact_phone` varchar(200) NULL COMMENT '企业联系电话', `enforce_content` varchar(1000) NOT NULL COMMENT '执法事项', @@ -135,11 +140,7 @@ CREATE TABLE `efcode_cp_notice` `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=是', - `remark` varchar(500) DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`id`), - KEY `idx_dept_id` (`dept_id`), - KEY `idx_enterprise_id` (`enterprise_id`), - KEY `idx_enterprise_number` (`enterprise_number`) + `remark` varchar(500) DEFAULT NULL COMMENT '备注' ) comment '行政执法检查计划-预告表' row_format = DYNAMIC; CREATE TABLE `efcode_cp_notice_users` @@ -158,18 +159,21 @@ CREATE TABLE `efcode_cp_notice_users` CREATE TABLE `efcode_cp_notice_message` ( - `id` varchar(50) NOT NULL COMMENT '主键ID' primary key, - `notice_id` varchar(50) NOT NULL COMMENT '预告ID', - `user_id` varchar(50) NOT NULL COMMENT '用户ID', - `user_name` varchar(100) NOT NULL COMMENT '用户名称', - `msg_from` tinyint NOT NULL 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 '更新时间', - `is_delete` tinyint NOT NULL DEFAULT 0 COMMENT '是否删除:0=否,1=是' + `id` varchar(50) NOT NULL COMMENT '主键ID' primary key, + `notice_id` varchar(50) NOT NULL COMMENT '预告ID', + `user_id` varchar(50) NOT NULL COMMENT '用户ID', + `user_name` varchar(100) NOT NULL COMMENT '用户名称', + `msg_from` tinyint NOT NULL COMMENT '来自:企业=1,执法单位=0', + `msg_type` tinyint NULL DEFAULT 1 COMMENT '消息类型:1=用户消息,2=系统提示', + `bureau_dept_viewed` tinyint NULL DEFAULT 0 COMMENT '执法部门是否已读:已读=1,未读=0', + `enterprise_viewed` tinyint NULL DEFAULT 0 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 '更新时间', + `is_delete` tinyint NOT NULL DEFAULT 0 COMMENT '是否删除:0=否,1=是' ) comment '行政执法检查计划-预告交流表' row_format = DYNAMIC; CREATE TABLE `efcode_cp_setting` @@ -205,26 +209,104 @@ CREATE TABLE `efcode_cp_log` /*初始化数据*/ --- INSERT INTO `efcode_cp_setting` (`id`, `setting_name`, `setting_value`, `remark`, `create_by`, `create_dept`) --- VALUES ('CP_SETTING_SUBMIT_DEADLINE', '下阶段计划提交最晚时间', '26', '每月几号前需提交下阶段计划<=', '0', '0'), --- ('CP_SETTING_AUTO_MATCH_START', '系统自动推荐匹配开始时间', '27', '系统自动推荐匹配的开始时间(号)=', '0', '0'), --- ('CP_SETTING_RESERVE_CANCEL_DURATION', '预约自动取消时长', '7', '发起预约后,如果多长时间没有处理,则自动取消', --- '0', '0'), --- ('CP_SETTING_MANUAL_MATCH_DAYS', '手工匹配距计划开始天数', '3', '手工匹配距离计划开始的天数>=', '0', '0'), --- ('CP_MAX_UNION_UNIT', '单次联合单位最大数量', '3', '单次联合单位最大数量<=3', '0', '0'), --- ('CP_MAX_INNER_UNIT_AC_PERSON_NUM', '单位内部单次计划最多参与人数', '3', '单位内部单次计划最多参与人数<=3', '0', --- '0'); --- --- /*创建计划任务*/ --- INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, --- create_time, remark) --- VALUES ('计划自动匹配预约', --- 'DEFAULT', --- 'cpPlanAutoMatchJob.execute()', --- '0 0 2 * * ?', --- '3', --- '1', --- '0', --- 'admin', --- NOW(), --- '每天凌晨2点扫描待预约计划并自动匹配生成预约记录'); +INSERT INTO `efcode_cp_setting` (`id`, `setting_name`, `setting_value`, `remark`, `create_by`, `create_dept`) +VALUES ('CP_SETTING_SUBMIT_DEADLINE', '下阶段计划提交最晚时间', '26', '每月几号前需提交下阶段计划<=26号', '0', '0'), + ('CP_SETTING_AUTO_MATCH_START', '系统自动推荐匹配开始时间', '27', '系统自动推荐匹配的开始时间(号)=27号', '0', '0'), + ('CP_SETTING_RESERVE_CANCEL_DURATION', '预约自动取消时长', '14', '发起预约后,如果多长时间没有处理,则自动取消,14天', + '0', '0'), + ('CP_SETTING_MANUAL_MATCH_DAYS', '手工匹配距计划开始天数', '3', '手工匹配距离计划开始的天数>=3天,同时,距离计划开始的第3天,系统自动去掉这些计划的预约,同时转化为任务', '0', '0'), + ('CP_MAX_UNION_UNIT', '单次联合单位最大数量', '3', '单次联合单位最大数量<=3个执法单位', '0', '0'), + ('CP_MAX_INNER_UNIT_AC_PERSON_NUM', '单位内部单次计划最多参与人数', '3', '单位内部单次计划最多参与人数<=3人', '0', + '0'), + ('CP_SETTING_SYSTEM_MATCH_WEEKS', '系统匹配预约周数范围', '1', '系统匹配时向后查找的周数范围1周:可选1,2,3,4周', + '0', '0'); + +/*创建计划任务*/ +DELETE +FROM sys_job +WHERE invoke_target = 'cpPlanAutoMatchJob.execute()'; +INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, + create_time, remark) +VALUES ('计划自动匹配预约', + 'DEFAULT', + 'cpPlanAutoMatchJob.execute()', + '0 0 2 * * ?', + '3', + '1', + '0', + 'admin', + NOW(), + '每天凌晨2点扫描待预约计划并自动匹配生成预约记录'); + +DELETE +FROM sys_job +WHERE invoke_target = 'cpReserveOverdueCancelJob.execute()'; +INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, + create_time, remark) +VALUES ('预约超期自动取消', + 'DEFAULT', + 'cpReserveOverdueCancelJob.execute()', + '0 0 1 * * ?', + '3', + '1', + '0', + 'admin', + NOW(), + '每天凌晨1点扫描超期未处理的预约记录并自动取消'); + +DELETE +FROM sys_job +WHERE invoke_target = 'cpPlanDeadlineGenTaskJob.execute()'; +INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, + create_time, remark) +VALUES ('计划到期自动生成任务', + 'DEFAULT', + 'cpPlanDeadlineGenTaskJob.execute()', + '0 0 2 * * ?', + '3', + '1', + '0', + 'admin', + NOW(), + '每天凌晨2点扫描即将到期的计划,取消剩余未处理预约并自动生成任务'); + +DELETE +FROM sys_job +WHERE invoke_target = 'cpNoticeAutoCompleteJob.execute()'; +INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, + create_time, remark) +VALUES ('预告到期自动标记已执行', + 'DEFAULT', + 'cpNoticeAutoCompleteJob.execute()', + '0 30 0 * * ?', + '3', + '1', + '0', + 'admin', + NOW(), + '每天凌晨0点30分扫描执法日期已过期的已发布预告,自动标记为已执行'); + +delete +from efcode_cp_log +where create_time > '2026-01-01'; +delete +from efcode_cp_notice +where create_time > '2026-01-01'; +delete +from efcode_cp_notice_message +where create_time > '2026-01-01'; +delete +from efcode_cp_notice_users +where create_time > '2026-01-01'; +delete +from efcode_cp_plan +where create_time > '2026-01-01'; +delete +from efcode_cp_plan_users +where create_time > '2026-01-01'; +delete +from efcode_cp_reserve +where create_time > '2026-01-01'; +delete +from efcode_cp_task +where create_time > '2026-01-01'; diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/report/RegistrationController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/report/RegistrationController.java index bd9d7565..681661f7 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/report/RegistrationController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/report/RegistrationController.java @@ -4,6 +4,7 @@ import com.zdxt.enforcementcode.domain.bo.EnforcementRegistrationBo; import com.zdxt.enforcementcode.domain.vo.EnforcementRegistrationVo; import com.zdxt.enforcementcode.domain.vo.report.ChartDataVo; import com.zdxt.enforcementcode.domain.vo.report.RegistrationAnalysisVo; +import com.zdxt.enforcementcode.domain.vo.report.RegistrationExportVo; import com.zdxt.enforcementcode.domain.vo.report.RegistrationStatisticsVo; import com.zdxt.enforcementcode.report.IEnforcementRegistrationReport; import jakarta.servlet.http.HttpServletResponse; @@ -52,12 +53,23 @@ public class RegistrationController { } /** - * 接口3:涉企执法统计列表导出 + * 接口3:涉企执法统计列表导出(旧系统格式,10列) */ @PostMapping("/exportList") public void exportList(EnforcementRegistrationBo bo, HttpServletResponse response) { - List list = registrationReport.listAll(bo); - ExcelUtil.exportExcel(list, "涉企执法统计", EnforcementRegistrationVo.class, response); + try { + List list = registrationReport.exportList(bo); + ExcelUtil.exportExcel(list, "涉企执法统计", RegistrationExportVo.class, response); + } catch (Exception e) { + log.error("导出涉企执法统计Excel异常", e); + // 重置response,避免content-type冲突 + response.reset(); + response.setContentType("application/json; charset=utf-8"); + try { + response.getWriter().write("{\"code\":500,\"msg\":\"导出失败: " + e.getMessage() + "\"}"); + } catch (Exception ignored) { + } + } } /** @@ -97,7 +109,17 @@ public class RegistrationController { */ @PostMapping("/exportAnalysis") public void exportAnalysis(EnforcementRegistrationBo bo, HttpServletResponse response) { - List list = registrationReport.analysisAll(bo); - ExcelUtil.exportExcel(list, "执法分析", RegistrationAnalysisVo.class, response); + try { + List list = registrationReport.analysisAll(bo); + ExcelUtil.exportExcel(list, "执法分析", RegistrationAnalysisVo.class, response); + } catch (Exception e) { + log.error("导出执法分析Excel异常", e); + response.reset(); + response.setContentType("application/json; charset=utf-8"); + try { + response.getWriter().write("{\"code\":500,\"msg\":\"导出失败: " + e.getMessage() + "\"}"); + } catch (Exception ignored) { + } + } } } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EnforcementRegistrationVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EnforcementRegistrationVo.java index 0f7c830e..300c15f1 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EnforcementRegistrationVo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/EnforcementRegistrationVo.java @@ -294,7 +294,7 @@ public class EnforcementRegistrationVo implements Serializable { * 执法类别(新) */ @ExcelProperty(value = "执法类别", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp = "新=") + @ExcelDictFormat(dictType = "law_enforce_category") private String lawEnforceCategory; /** diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/report/RegistrationExportVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/report/RegistrationExportVo.java new file mode 100644 index 00000000..b21dd314 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/report/RegistrationExportVo.java @@ -0,0 +1,81 @@ +package com.zdxt.enforcementcode.domain.vo.report; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 涉企执法统计-导出VO(与旧系统格式一致,共10列) + * + * @author zdxt + */ +@Data +@ExcelIgnoreUnannotated +public class RegistrationExportVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 单位名称 + */ + @ExcelProperty(value = "单位名称") + private String bureauDeptName; + + /** + * 企业名称 + */ + @ExcelProperty(value = "企业名称") + private String enterpriseName; + + /** + * 统一信用码 + */ + @ExcelProperty(value = "统一信用码") + private String enterpriseNumber; + + /** + * 企业注册地 + */ + @ExcelProperty(value = "企业注册地") + private String district; + + /** + * 企业所属街道 + */ + @ExcelProperty(value = "企业所属街道") + private String street; + + /** + * 入企人员 + */ + @ExcelProperty(value = "入企人员") + private String lawEnforcer; + + /** + * 入企时间 + */ + @ExcelProperty(value = "入企时间") + private String enforcementTime; + + /** + * 入企事由 + */ + @ExcelProperty(value = "入企事由") + private String lawEnforceCategory; + + /** + * 入企事项 + */ + @ExcelProperty(value = "入企事项") + private String lawEnforcementItemText; + + /** + * 活动依据 + */ + @ExcelProperty(value = "活动依据") + private String lawEnforcementBasisText; +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementRegistrationMapper.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementRegistrationMapper.java index a8617ed9..1c8d3eaf 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementRegistrationMapper.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementRegistrationMapper.java @@ -3,6 +3,7 @@ package com.zdxt.enforcementcode.mapper; import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zdxt.enforcementcode.common.annotation.EfcodeDataFilter; import com.zdxt.enforcementcode.domain.EnforcementRegistration; import com.zdxt.enforcementcode.domain.bo.EnforcementRegistrationBo; import com.zdxt.enforcementcode.domain.bo.EnforcementRegistrationQueryBo; @@ -85,6 +86,7 @@ public interface EnforcementRegistrationMapper extends BaseMapperPlus selectReportPage(@Param("page") Page page, @Param("bo") EnforcementRegistrationBo bo, @Param("dataFilter") String dataFilter); @@ -99,29 +102,34 @@ public interface EnforcementRegistrationMapper extends BaseMapperPlus selectReportAll(@Param("bo") EnforcementRegistrationBo bo, @Param("dataFilter") String dataFilter); /** * 报表-执法类别图表(GROUP BY law_enforce_category) */ + @EfcodeDataFilter List selectReportCategoryChart(@Param("bo") EnforcementRegistrationBo bo, @Param("dataFilter") String dataFilter); /** * 报表-部门排行图表(GROUP BY bureau_dept_id,前10) */ + @EfcodeDataFilter List selectReportDeptRankChart(@Param("bo") EnforcementRegistrationBo bo, @Param("dataFilter") String dataFilter); /** * 报表-被检查企业次数排行图表(GROUP BY enterprise_number,前10) */ + @EfcodeDataFilter List selectReportEnterpriseRankChart(@Param("bo") EnforcementRegistrationBo bo, @Param("dataFilter") String dataFilter); /** * 报表-执法分析排名(GROUP BY enterprise_number) + *

含子查询,不使用注解方式,手动传入 dataFilter */ List selectReportAnalysisList(@Param("bo") EnforcementRegistrationBo bo, @Param("dataFilter") String dataFilter); diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/IEnforcementRegistrationReport.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/IEnforcementRegistrationReport.java index b1182ad5..031b09c3 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/IEnforcementRegistrationReport.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/IEnforcementRegistrationReport.java @@ -4,6 +4,7 @@ import com.zdxt.enforcementcode.domain.bo.EnforcementRegistrationBo; import com.zdxt.enforcementcode.domain.vo.EnforcementRegistrationVo; import com.zdxt.enforcementcode.domain.vo.report.ChartDataVo; import com.zdxt.enforcementcode.domain.vo.report.RegistrationAnalysisVo; +import com.zdxt.enforcementcode.domain.vo.report.RegistrationExportVo; import com.zdxt.enforcementcode.domain.vo.report.RegistrationStatisticsVo; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -32,6 +33,11 @@ public interface IEnforcementRegistrationReport { */ List listAll(EnforcementRegistrationBo bo); + /** + * 导出列表(旧系统格式,10列精简) + */ + List exportList(EnforcementRegistrationBo bo); + /** * 执法类别分布(饼图数据) */ diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/impl/EnforcementRegistrationReportImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/impl/EnforcementRegistrationReportImpl.java index 6651ced6..4e4bc953 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/impl/EnforcementRegistrationReportImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/impl/EnforcementRegistrationReportImpl.java @@ -7,6 +7,7 @@ import com.zdxt.enforcementcode.domain.bo.EnforcementRegistrationBo; import com.zdxt.enforcementcode.domain.vo.EnforcementRegistrationVo; import com.zdxt.enforcementcode.domain.vo.report.ChartDataVo; import com.zdxt.enforcementcode.domain.vo.report.RegistrationAnalysisVo; +import com.zdxt.enforcementcode.domain.vo.report.RegistrationExportVo; import com.zdxt.enforcementcode.domain.vo.report.RegistrationStatisticsVo; import com.zdxt.enforcementcode.mapper.EnforcementRegistrationMapper; import com.zdxt.enforcementcode.report.IEnforcementRegistrationReport; @@ -40,11 +41,10 @@ public class EnforcementRegistrationReportImpl implements IEnforcementRegistrati @Override public RegistrationStatisticsVo statistics(EnforcementRegistrationBo bo) { - String dataFilter = DataFilterUtil.buildFilterSql(true, true); String checkCategoryCode = StringUtils.isNotBlank(bo.getCheckCategory()) ? bo.getCheckCategory() : "01"; - // 单条SQL聚合查询,不加载全量数据 - RegistrationStatisticsVo vo = registrationMapper.selectReportStatistics(bo, dataFilter, checkCategoryCode); + // 单条SQL聚合查询,数据权限由 @EfcodeDataFilter 拦截器自动处理 + RegistrationStatisticsVo vo = registrationMapper.selectReportStatistics(bo, null, checkCategoryCode); if (vo == null) { vo = new RegistrationStatisticsVo(); } @@ -66,25 +66,59 @@ public class EnforcementRegistrationReportImpl implements IEnforcementRegistrati @Override public TableDataInfo list(EnforcementRegistrationBo bo, PageQuery pageQuery) { - String dataFilter = DataFilterUtil.buildFilterSql(true, true); + // 数据权限由 @EfcodeDataFilter 拦截器自动处理 Page page = pageQuery.build(); - IPage result = registrationMapper.selectReportPage(page, bo, dataFilter); + IPage result = registrationMapper.selectReportPage(page, bo, null); return TableDataInfo.build(result); } @Override public List listAll(EnforcementRegistrationBo bo) { - String dataFilter = DataFilterUtil.buildFilterSql(true, true); - // 复用 selectReportPage 不分页方式(传一个大页) + // 数据权限由 @EfcodeDataFilter 拦截器自动处理 Page page = new Page<>(1, Integer.MAX_VALUE, false); - IPage result = registrationMapper.selectReportPage(page, bo, dataFilter); + IPage result = registrationMapper.selectReportPage(page, bo, null); return result.getRecords(); } + @Override + public List exportList(EnforcementRegistrationBo bo) { + List dataList = listAll(bo); + + // 字典翻译:执法类别 + Map categoryDictMap = dictTypeService.selectDictDataByType("law_enforce_category").stream() + .collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel, (a, b) -> a)); + + java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + return dataList.stream().map(vo -> { + RegistrationExportVo export = new RegistrationExportVo(); + export.setBureauDeptName(vo.getBureauDeptName()); + export.setEnterpriseName(vo.getEnterpriseName()); + export.setEnterpriseNumber(vo.getEnterpriseNumber()); + export.setDistrict(vo.getDistrict()); + export.setStreet(vo.getStreet()); + // 执法人员:主执法人 + 其他执法人 + String enforcer = vo.getLawEnforcer() != null ? vo.getLawEnforcer() : ""; + if (StringUtils.isNotBlank(vo.getLawEnforcerTwo())) { + enforcer = enforcer + "," + vo.getLawEnforcerTwo(); + } + export.setLawEnforcer(enforcer); + // 执法时间格式化 + export.setEnforcementTime(vo.getEnforcementTime() != null ? sdf.format(vo.getEnforcementTime()) : ""); + // 执法类别字典翻译 + String categoryText = categoryDictMap.getOrDefault( + vo.getLawEnforceCategory() != null ? vo.getLawEnforceCategory() : "", ""); + export.setLawEnforceCategory(categoryText); + export.setLawEnforcementItemText(vo.getLawEnforcementItemText()); + export.setLawEnforcementBasisText(vo.getLawEnforcementBasisText()); + return export; + }).collect(Collectors.toList()); + } + @Override public List categoryChart(EnforcementRegistrationBo bo) { - String dataFilter = DataFilterUtil.buildFilterSql(true, true); - List list = registrationMapper.selectReportCategoryChart(bo, dataFilter); + // 数据权限由 @EfcodeDataFilter 拦截器自动处理 + List list = registrationMapper.selectReportCategoryChart(bo, null); // 字典翻译 Map dictMap = dictTypeService.selectDictDataByType("law_enforce_category").stream() @@ -102,14 +136,14 @@ public class EnforcementRegistrationReportImpl implements IEnforcementRegistrati @Override public List deptRankChart(EnforcementRegistrationBo bo) { - String dataFilter = DataFilterUtil.buildFilterSql(true, true); - return registrationMapper.selectReportDeptRankChart(bo, dataFilter); + // 数据权限由 @EfcodeDataFilter 拦截器自动处理 + return registrationMapper.selectReportDeptRankChart(bo, null); } @Override public List enterpriseRankChart(EnforcementRegistrationBo bo) { - String dataFilter = DataFilterUtil.buildFilterSql(true, true); - return registrationMapper.selectReportEnterpriseRankChart(bo, dataFilter); + // 数据权限由 @EfcodeDataFilter 拦截器自动处理 + return registrationMapper.selectReportEnterpriseRankChart(bo, null); } @Override