diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfSystemController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfSystemController.java index 035f2dd8..8fa0e6c7 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfSystemController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfSystemController.java @@ -29,10 +29,7 @@ import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; @@ -214,9 +211,8 @@ public class AppEnfSystemController extends BaseController { * @return */ @SaIgnore - @PostMapping("/queryUsersByPage") - @ResponseBody - public TableDataInfo queryUsersByPage(@RequestBody SysUserBo bo, PageQuery pageQuery) { + @GetMapping("/queryUsersByPage") + public TableDataInfo queryUsersByPage(SysUserBo bo, PageQuery pageQuery) { if (null != bo.getNotUserId()) { Map params = bo.getParams(); params.put("notUserIds", Convert.toStrArray(bo.getNotUserId())); diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnforcementRegistrationController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnforcementRegistrationController.java index 3cfdf6f7..de31d892 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnforcementRegistrationController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnforcementRegistrationController.java @@ -2,7 +2,11 @@ package com.zdxt.enforcementcode.controller.app.enforcement; import cn.dev33.satoken.annotation.SaIgnore; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zdxt.enforcementcode.common.util.CommonUtil; +import com.zdxt.enforcementcode.domain.EnforcementRegistration; import com.zdxt.enforcementcode.domain.bo.EnforcementRegistrationBo; import com.zdxt.enforcementcode.domain.bo.EnterpriseLawEnforcementBo; import com.zdxt.enforcementcode.domain.bo.enterprise.AppEnterpriseComplaintBo; @@ -458,22 +462,26 @@ public class AppEnforcementRegistrationController extends BaseController { * 查询执法端-执法登记列表 */ @SaIgnore - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(@RequestBody EnforcementRegistrationBo bo, PageQuery pageQuery) { + @GetMapping("/list") + public TableDataInfo list(EnforcementRegistrationBo bo, PageQuery pageQuery) { long startTime = System.currentTimeMillis(); - // 使用 DataPermissionHelper.ignore() 跳过数据权限检查,避免 token 冻结导致的认证错误 - List list = DataPermissionHelper.ignore(() -> - enforcementRegistrationService.selectEnforcementRegistrationList(bo, pageQuery) + // 校验分页参数,防止全量查询 + if (pageQuery.getPageSize() == null || pageQuery.getPageSize() <= 0) { + pageQuery.setPageSize(10); + } + if (pageQuery.getPageNum() == null || pageQuery.getPageNum() <= 0) { + pageQuery.setPageNum(1); + } + + // 使用标准的分页查询方法 + TableDataInfo pageResult = DataPermissionHelper.ignore(() -> + enforcementRegistrationService.queryPageList(bo, pageQuery) ); + List list = pageResult.getRows(); if (list == null || list.isEmpty()) { - TableDataInfo emptyResult = new TableDataInfo<>(); - emptyResult.setCode(0); - emptyResult.setRows(new ArrayList<>()); - emptyResult.setTotal(0L); - return emptyResult; + return pageResult; } // 1. 批量获取字典数据(只查询一次) @@ -496,15 +504,11 @@ public class AppEnforcementRegistrationController extends BaseController { fillOutTimeDayNum(vo); } - TableDataInfo rspData = new TableDataInfo<>(); - rspData.setCode(0); - rspData.setRows(list); - rspData.setTotal(list.size()); - long endTime = System.currentTimeMillis(); - log.info("执法登记列表查询耗时: {}ms, 数据量: {}", (endTime - startTime), list.size()); + log.info("执法登记列表查询耗时: {}ms, 数据量: {}, 总数: {}", + (endTime - startTime), list.size(), pageResult.getTotal()); - return rspData; + return pageResult; } /** 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 7180274a..cc97c6df 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 @@ -86,7 +86,8 @@ public class EnforcementRegistrationServiceImpl implements IEnforcementRegistrat */ @Override public TableDataInfo queryPageList(EnforcementRegistrationBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); + // 使用App端专用的查询条件构建器 + LambdaQueryWrapper lqw = buildAppListQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } @@ -728,9 +729,126 @@ public class EnforcementRegistrationServiceImpl implements IEnforcementRegistrat @DataScope(deptField = "bureau_dept_id", extraDeptField = "entrust_dept_id") public List selectEnforcementRegistrationList(EnforcementRegistrationBo bo, PageQuery pageQuery) { - Page page = pageQuery.build(); - List vo = baseMapper.selectEnforcementRegistrationList(bo, page); - return vo; + // 使用MyBatis-Plus标准分页查询,避免复杂SQL导致分页失效 + LambdaQueryWrapper lqw = buildAppListQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return result.getRecords(); + } + + /** + * 构建App端执法登记列表查询条件 + * 用于替代XML中的复杂SQL,使分页拦截器能正常工作 + */ + private LambdaQueryWrapper buildAppListQueryWrapper(EnforcementRegistrationBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + + // 已提交的数据 + lqw.eq(EnforcementRegistration::getIsSubmit, 1L); + + // 企业ID + lqw.eq(StringUtils.isNotBlank(bo.getEnterpriseId()), + EnforcementRegistration::getEnterpriseId, bo.getEnterpriseId()); + + // 企业名称模糊查询 + lqw.like(StringUtils.isNotBlank(bo.getEnterpriseName()), + EnforcementRegistration::getEnterpriseName, bo.getEnterpriseName()); + + // 企业税号 + lqw.eq(StringUtils.isNotBlank(bo.getEnterpriseNumber()), + EnforcementRegistration::getEnterpriseNumber, bo.getEnterpriseNumber()); + + // 删除标记 + lqw.eq(bo.getIsDelete() != null, EnforcementRegistration::getIsDelete, bo.getIsDelete()); + + // 状态 + lqw.eq(bo.getStatus() != null, EnforcementRegistration::getStatus, bo.getStatus()); + + // 联合执法编号 + lqw.eq(StringUtils.isNotBlank(bo.getUnionNo()), + EnforcementRegistration::getUnionNo, bo.getUnionNo()); + + // 是否联合执法 + lqw.eq(bo.getHasUnion() != null, EnforcementRegistration::getHasUnion, bo.getHasUnion()); + + // 是否真实联合执法 + lqw.eq(bo.getIsRealUnion() != null, EnforcementRegistration::getIsRealUnion, bo.getIsRealUnion()); + + // 是否自动 + lqw.eq(bo.getHasAuto() != null, EnforcementRegistration::getHasAuto, bo.getHasAuto()); + + // 搜索值(企业名称) + lqw.like(StringUtils.isNotBlank(bo.getSearchValue()), + EnforcementRegistration::getEnterpriseName, bo.getSearchValue()); + + // 日期搜索(年月) + if (StringUtils.isNotBlank(bo.getDateSearch())) { + lqw.apply("DATE_FORMAT(enforcement_time, '%Y-%m') = {0}", bo.getDateSearch()); + } + + // dateType: 1-本月, 2-本季度, 3-本年 + if (bo.getDateType() != null) { + if (bo.getDateType() == 1) { + lqw.apply("DATE_FORMAT(enforcement_time, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m')"); + } else if (bo.getDateType() == 2) { + int month = java.time.LocalDate.now().getMonthValue(); + int quarter = (month - 1) / 3 + 1; + int startMonth = (quarter - 1) * 3 + 1; + int endMonth = quarter * 3; + String year = String.valueOf(java.time.LocalDate.now().getYear()); + lqw.apply("DATE_FORMAT(enforcement_time, '%Y-%m') >= CONCAT({0}, '-', LPAD({1}, 2, '0'))", year, startMonth); + lqw.apply("DATE_FORMAT(enforcement_time, '%Y-%m') <= CONCAT({0}, '-', LPAD({1}, 2, '0'))", year, endMonth); + } else if (bo.getDateType() == 3) { + lqw.apply("DATE_FORMAT(enforcement_time, '%Y') = DATE_FORMAT(CURDATE(), '%Y')"); + } + } + + // 开始时间 + if (StringUtils.isNotBlank(bo.getBeginTime())) { + lqw.apply("DATE_FORMAT(enforcement_time, '%Y-%m-%d') >= {0}", bo.getBeginTime()); + } + + // 结束时间 + if (StringUtils.isNotBlank(bo.getEndTime())) { + lqw.apply("DATE_FORMAT(enforcement_time, '%Y-%m-%d') <= {0}", bo.getEndTime()); + } + + // params中的时间 - 修复类型转换问题 + if (bo.getParams() != null) { + Object beginTimeObj = bo.getParams().get("beginTime"); + if (beginTimeObj != null) { + String beginTime = String.valueOf(beginTimeObj); + if (StringUtils.isNotBlank(beginTime)) { + lqw.ge(EnforcementRegistration::getEnforcementTime, beginTime); + } + } + + Object endTimeObj = bo.getParams().get("endTime"); + if (endTimeObj != null) { + String endTime = String.valueOf(endTimeObj); + if (StringUtils.isNotBlank(endTime)) { + lqw.le(EnforcementRegistration::getEnforcementTime, endTime); + } + } + } + + // 用户权限过滤 + if (StringUtils.isNotBlank(bo.getUserId()) && + (StringUtils.isBlank(bo.getBureauDeptId()))) { + lqw.and(wrapper -> wrapper + .eq(EnforcementRegistration::getLawEnforcerId, bo.getUserId()) + .or().eq(EnforcementRegistration::getUserId, bo.getUserId()) + .or().apply("FIND_IN_SET({0}, law_enforcer_id_two)", bo.getUserId()) + ); + } + + // 局部门ID过滤 + lqw.eq(StringUtils.isNotBlank(bo.getBureauDeptId()), + EnforcementRegistration::getBureauDeptId, bo.getBureauDeptId()); + + // 按执法时间倒序 + lqw.orderByDesc(EnforcementRegistration::getEnforcementTime); + + return lqw; } /**