From f5255fc06be167555d3b5fa450e5c15f74b6a6fc Mon Sep 17 00:00:00 2001 From: niujiyi <18272501226@163.com> Date: Wed, 10 Jun 2026 19:31:29 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E6=89=A7=E6=B3=95=E7=AB=AF-=E7=99=BB?= =?UTF-8?q?=E8=AE=B0=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/EnforcementRegistrationServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementRegistrationServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementRegistrationServiceImpl.java index f3e8774e..05a6ef86 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementRegistrationServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementRegistrationServiceImpl.java @@ -645,8 +645,8 @@ public class EnforcementRegistrationServiceImpl implements IEnforcementRegistrat district = extract(bo.getEnterpriseAddress(), "([^\\s市]+?区)"); street = extract(bo.getEnterpriseAddress(), "([^\\s区]+?街道)"); } - vo.setDistrict(district); - vo.setStreet(street); + bo.setDistrict(district); + bo.setStreet(street); resNum = baseMapper.insertEnforcementRegistration(bo); // unionNo 上来不等于null, 那么说明关联了联合检查, 则直接新增, 并且将之前的所有 uninoNo相同的 hasUnion更新为 1 From e6c16440252791e009c6ed0a886dd3290eb3fff0 Mon Sep 17 00:00:00 2001 From: niujiyi <18272501226@163.com> Date: Thu, 11 Jun 2026 10:26:55 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E7=9B=91=E7=9D=A3=E7=AB=AF-=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=AF=8C=E6=96=87=E6=9C=ACxss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-dev.yml | 9 +++++++++ .../src/main/resources/application-prod.yml | 9 +++++++++ .../src/main/resources/application.yml | 4 +++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-dev.yml b/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-dev.yml index 1c6cfc7e..06e58e91 100644 --- a/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-dev.yml +++ b/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-dev.yml @@ -342,3 +342,12 @@ srnwg: # integrationKey: ENC(8RZtrfL4t5tsEk7lfrw00+4hSxbjxcVM) # paasId: szsfj_zhifajianduma_001 # paasToken: ENC(0Cg8Vtpay+3hwRm+vJB0utikr4dXcEguwSaxlbTWkgQ4parB8pN2rL2xrhQ8eUd5) + +--- # XSS过滤配置 +xss: + # 开启XSS过滤 + enabled: true + # 排除链接(不进行XSS过滤的URL,这些接口需要接收富文本HTML内容) + excludeUrls: + - /web/enforcementcode/educationServices/add + - /web/enforcementcode/educationServices/edit diff --git a/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-prod.yml b/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-prod.yml index 59c1404f..082a2935 100644 --- a/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-prod.yml +++ b/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-prod.yml @@ -274,3 +274,12 @@ justauth: client-id: 10**********6 client-secret: 1f7d08**********5b7**********29e redirect-uri: ${justauth.address}/social-callback?source=gitea + +--- # XSS过滤配置 +xss: + # 开启XSS过滤 + enabled: true + # 排除链接(不进行XSS过滤的URL,这些接口需要接收富文本HTML内容) + excludeUrls: + - /web/enforcementcode/educationServices/add + - /web/enforcementcode/educationServices/edit diff --git a/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application.yml b/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application.yml index 13d41076..3d1c99fe 100644 --- a/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application.yml +++ b/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application.yml @@ -281,9 +281,11 @@ springdoc: xss: # 过滤开关 enabled: true - # 排除链接 + # 排除链接(不进行XSS过滤的URL,这些接口需要接收富文本HTML内容) excludeUrls: - /system/notice + - /web/enforcementcode/educationServices/add + - /web/enforcementcode/educationServices/edit --- # 分布式锁 lock4j 全局配置 lock4j: From 9cc13880391cab2df3b833452ac2041be01b0775 Mon Sep 17 00:00:00 2001 From: niujiyi <18272501226@163.com> Date: Thu, 11 Jun 2026 11:09:40 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E6=89=93=E5=8C=85=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/打包命令/命令 | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 doc/打包命令/命令 diff --git a/doc/打包命令/命令 b/doc/打包命令/命令 new file mode 100644 index 00000000..4e6fd96f --- /dev/null +++ b/doc/打包命令/命令 @@ -0,0 +1,14 @@ +后端 +1、进入目录:cd /usr/local/project/ +2、查看目录下文件:ls +3、查看系统运行java 进程:ps -ef | grep java +4、杀死进程:kill 9 31888 +5、清空终端屏幕:clear +6、后台启动 Java 项目 + 关闭终端不退出 + 日志全部写入 app.log 文件:nohup java -jar zdxt-admin-web-server.jar > app.log 2>&1 & +7、实时盯紧 Java 程序的运行日志:tail -f app.log + +前端 +文件命名:监督端:admin-plus-dev 执法端:enforcement-dev 企业端:enterprise-dev +1、前端地址: /usr/local/nginx/html +2、解压:unzip xxx.zip +3、删除文件 rm -f admin-plus-dev.zip From 35a0c337067b23d1dbf355caea84b1133dcf9c05 Mon Sep 17 00:00:00 2001 From: niujiyi <18272501226@163.com> Date: Thu, 11 Jun 2026 14:30:35 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E5=89=8D=E7=AB=AF-=E6=89=A7=E6=B3=95?= =?UTF-8?q?=E4=BA=8B=E9=A1=B9=E5=8F=82=E6=95=B0=E8=B5=8B=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/enterprise/enforcement/enforcementEvaluateDetail.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/enforcement/enforcementEvaluateDetail.vue b/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/enforcement/enforcementEvaluateDetail.vue index 82e6adb6..d4ea8251 100644 --- a/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/enforcement/enforcementEvaluateDetail.vue +++ b/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/enforcement/enforcementEvaluateDetail.vue @@ -46,7 +46,7 @@
执法事项 - {{ detail.lawEnforcementItem }} + {{ detail.lawEnforcementItemText }}
执法时间 From e7e31eff6da68b756fc78661c55276b591eb80f2 Mon Sep 17 00:00:00 2001 From: niujiyi <18272501226@163.com> Date: Thu, 11 Jun 2026 17:10:04 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=89=A7=E6=B3=95=E7=AB=AF-=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=9F=A5=E8=AF=A2=E8=AE=A1=E5=88=92=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EnforcementInspectionProgramMapper.xml | 34 ++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementInspectionProgramMapper.xml b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementInspectionProgramMapper.xml index fab64e3e..62039d55 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementInspectionProgramMapper.xml +++ b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementInspectionProgramMapper.xml @@ -161,15 +161,33 @@ order by create_time desc - + From 5e71035db390f27eee88c59e3a30fd15595ab178 Mon Sep 17 00:00:00 2001 From: niujiyi <18272501226@163.com> Date: Thu, 11 Jun 2026 17:37:24 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=89=A7=E6=B3=95=E7=AB=AF-=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=9F=A5=E8=AF=A2=E8=AE=A1=E5=88=92=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E9=A1=B5=E9=9D=A2=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BB=91=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EnforcementInspectionProgramMapper.java | 21 ++++++++ ...forcementInspectionProgramServiceImpl.java | 29 +++++++++-- .../EnforcementInspectionProgramMapper.xml | 30 ++++++++++++ .../src/api/enforcement/index.js | 3 ++ .../enforcement/message/planNoticeList.vue | 49 ++++++++++++++++--- 5 files changed, 122 insertions(+), 10 deletions(-) diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementInspectionProgramMapper.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementInspectionProgramMapper.java index 7b18578f..1bb6e71d 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementInspectionProgramMapper.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementInspectionProgramMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zdxt.enforcementcode.domain.EnforcementInspectionProgram; import com.zdxt.enforcementcode.domain.bo.EnforcementInspectionProgramBo; import com.zdxt.enforcementcode.domain.vo.EnforcementInspectionProgramVo; +import org.apache.ibatis.annotations.Param; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import java.util.List; @@ -50,4 +51,24 @@ public interface EnforcementInspectionProgramMapper extends BaseMapperPlus selectPlanPage(Page page, EnforcementInspectionProgramBo bo); + /** + * 分页查询计划列表(包含权限控制) - 优化版本 + * + * @param page 分页参数 + * @param bo 查询条件 + * @param accessibleDeptIds 可访问的部门ID列表 + * @return 计划分页列表 + */ + Page selectPlanPageOptimized(Page page, + EnforcementInspectionProgramBo bo, + @Param("accessibleDeptIds") List accessibleDeptIds); + + /** + * 查询可访问的部门ID列表 + * + * @param currentDeptId 当前部门ID + * @return 部门ID列表 + */ + List selectAccessibleDeptIds(@Param("currentDeptId") String currentDeptId); + } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementInspectionProgramServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementInspectionProgramServiceImpl.java index c15ae2ea..a0346362 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementInspectionProgramServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementInspectionProgramServiceImpl.java @@ -202,7 +202,7 @@ public class EnforcementInspectionProgramServiceImpl implements IEnforcementInsp } /** - * 分页查询计划列表(包含权限控制) + * 分页查询计划列表(包含权限控制) * * @param bo 查询条件 * @param pageQuery 分页参数 @@ -210,9 +210,13 @@ public class EnforcementInspectionProgramServiceImpl implements IEnforcementInsp */ @Override public TableDataInfo selectPlanPage(EnforcementInspectionProgramBo bo, PageQuery pageQuery) { - Page result = baseMapper.selectPlanPage(pageQuery.build(), bo); + // 1. 先查询当前部门及其所有下级部门的ID列表 + List accessibleDeptIds = getAccessibleDeptIds(bo.getDeptId()); - // 批量查询关联的文件列表(优化 N+1 查询问题) + // 2. 将部门ID列表传入查询 + Page result = baseMapper.selectPlanPageOptimized(pageQuery.build(), bo, accessibleDeptIds); + + // 批量查询关联的文件列表(优化 N+1 查询问题) if (result.getRecords() != null && !result.getRecords().isEmpty()) { // 1. 收集所有计划ID List planIds = result.getRecords().stream() @@ -227,7 +231,7 @@ public class EnforcementInspectionProgramServiceImpl implements IEnforcementInsp fileLqw.eq(ZdxtFile::getIsDelete2, 0); // 只查询未删除的文件 List allFiles = zdxtFileMapper.selectVoList(fileLqw); - // 3. 按 businessId 分组,构建 Map + // 3. 按 businessId 分组,构建 Map Map> filesByPlanId = allFiles.stream() .collect(Collectors.groupingBy(ZdxtFileVo::getBusinessId)); @@ -242,6 +246,23 @@ public class EnforcementInspectionProgramServiceImpl implements IEnforcementInsp return TableDataInfo.build(result); } + /** + * 获取可访问的部门ID列表(包括当前部门和所有下级部门) + * + * @param currentDeptId 当前部门ID + * @return 可访问的部门ID列表 + */ + private List getAccessibleDeptIds(String currentDeptId) { + if (StringUtils.isBlank(currentDeptId)) { + return Collections.emptyList(); + } + + // 查询当前部门及其所有下级部门的ID + // 这里需要注入 SysDeptMapper 或者调用现有的部门服务 + // 示例代码,需要根据实际项目调整 + return baseMapper.selectAccessibleDeptIds(currentDeptId); + } + private LambdaQueryWrapper buildQueryWrapper(EnforcementInspectionProgramBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementInspectionProgramMapper.xml b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementInspectionProgramMapper.xml index 62039d55..bb195737 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementInspectionProgramMapper.xml +++ b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementInspectionProgramMapper.xml @@ -190,4 +190,34 @@ ORDER BY create_time DESC + + + + + + diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/index.js b/zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/index.js index bb44fd8f..d8a033e9 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/index.js +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/index.js @@ -72,6 +72,9 @@ export const queryEnforcementNoticeList = (params, success, error) => _post(base // 执法预告列表 export const getLawNoticeList = (params, success, error) => _post(baseUrl + "/enforcement/queryList", params, success, error); +//计划通知列表 +export const queryListNoPermission = (params, success, error) => _get(baseUrl + "/inspectionProgram/queryListNoPermission", params, success, error); + // 执法评价列表 export const queryEvaluateList = (params, success, error) => _get("/app-ent/evaluate/queryEvaluateList", params, success, error); diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/planNoticeList.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/planNoticeList.vue index fdf2a67f..19c8e204 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/planNoticeList.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/planNoticeList.vue @@ -24,7 +24,7 @@
- {{ item.checkItemText || item.checkItem }} + {{ item.planName || item.planName }}
@@ -33,15 +33,27 @@
执法区域: - {{ item.unitCheck }} + {{ item.enforcementAreaName || item.enforcementArea }}
发布时间: - {{ item.checkTime }} + {{ item.enforcementTime }}
附件: - + + + 无 +
@@ -56,7 +68,7 @@ import { ref, onMounted } from 'vue'; import { useRouter } from 'vue-router'; import { showToast } from 'vant'; import 'vant/es/toast/style'; -import { getLawNoticeList } from '@/api/enforcement/index'; +import { queryListNoPermission } from '@/api/enforcement/index'; const router = useRouter(); @@ -76,7 +88,7 @@ const fetchList = () => { pageSize: pageSize.value, queryParam: searchText.value || undefined, }; - getLawNoticeList(params, (res) => { + queryListNoPermission(params, (res) => { if (res.code === 200) { const rows = res.rows || []; const total = res.total; @@ -143,6 +155,21 @@ const onClickLeft = () => { router.back(); }; +// ========== 下载附件 ========== +const downloadAttachment = (file) => { + if (!file || !file.guid) { + showToast('无法下载该附件'); + return; + } + const downloadUrl = `/api/enf-ep/app-enf/common/file/download?guid=${file.guid}`; + const link = document.createElement('a'); + link.href = downloadUrl; + link.download = file.fileName || file.fileSaveName; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); +}; + // ========== 组件挂载时加载数据 ========== onMounted(() => { // fetchList(); @@ -259,6 +286,16 @@ onMounted(() => { .value { flex: 1; color: #999; + display: flex; + flex-wrap: wrap; + gap: 8px; + } + + .attachment-link { + color: #2d94fa; + text-decoration: underline; + word-break: break-all; + cursor: pointer; } }