From 51a551a7f8eae7654f973d45cd2fa2952774673d Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Fri, 07 Aug 2026 10:56:55 +0800
Subject: [PATCH] perf(task): 优化巡查任务审核性能并添加详细日志记录
---
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/impl/FwPoliceStationServiceImpl.java | 122 ++++++++++++++++++++++++++++++++++++++--
1 files changed, 115 insertions(+), 7 deletions(-)
diff --git a/drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/impl/FwPoliceStationServiceImpl.java b/drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/impl/FwPoliceStationServiceImpl.java
index 7f03484..513e044 100644
--- a/drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/impl/FwPoliceStationServiceImpl.java
+++ b/drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/impl/FwPoliceStationServiceImpl.java
@@ -16,39 +16,147 @@
*/
package org.sxkj.fw.area.service.impl;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.constant.BladeConstant;
+import org.springblade.core.tool.utils.StringUtil;
+import org.sxkj.common.utils.HeaderUtils;
import org.sxkj.fw.area.entity.FwPoliceStationEntity;
+import org.sxkj.fw.area.param.FwPoliceStationQueryParam;
import org.sxkj.fw.area.vo.FwPoliceStationVO;
import org.sxkj.fw.area.excel.FwPoliceStationExcel;
import org.sxkj.fw.area.mapper.FwPoliceStationMapper;
import org.sxkj.fw.area.service.IFwPoliceStationService;
import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.List;
+import java.util.Date;
/**
* 派出所信息表 服务实现类
*
* @author lw
- * @since 2026-01-07
+ * @since 2026-01-08
*/
@Service
-public class FwPoliceStationServiceImpl extends BaseServiceImpl<FwPoliceStationMapper, FwPoliceStationEntity> implements IFwPoliceStationService {
+public class FwPoliceStationServiceImpl extends BaseServiceImpl<FwPoliceStationMapper, FwPoliceStationEntity>
+ implements IFwPoliceStationService {
@Override
- public IPage<FwPoliceStationVO> selectFwPoliceStationPage(IPage<FwPoliceStationVO> page, FwPoliceStationVO fwPoliceStation) {
- return page.setRecords(baseMapper.selectFwPoliceStationPage(page, fwPoliceStation));
+ public IPage<FwPoliceStationVO> selectFwPoliceStationPage(IPage<FwPoliceStationVO> page,
+ FwPoliceStationQueryParam param) {
+ return page.setRecords(baseMapper.selectFwPoliceStationPage(page, param));
}
+ @Override
+ public List<FwPoliceStationVO> selectFwPoliceStationList(String stationName) {
+ return baseMapper.selectFwPoliceStationList(stationName);
+ }
@Override
public List<FwPoliceStationExcel> exportFwPoliceStation(Wrapper<FwPoliceStationEntity> queryWrapper) {
List<FwPoliceStationExcel> fwPoliceStationList = baseMapper.exportFwPoliceStation(queryWrapper);
- //fwPoliceStationList.forEach(fwPoliceStation -> {
- // fwPoliceStation.setTypeName(DictCache.getValue(DictEnum.YES_NO, FwPoliceStation.getType()));
- //});
+ // fwPoliceStationList.forEach(fwPoliceStation -> {
+ // fwPoliceStation.setTypeName(DictCache.getValue(DictEnum.YES_NO,
+ // FwPoliceStation.getType()));
+ // });
return fwPoliceStationList;
}
+ @Override
+ public List<FwPoliceStationVO> selectByPolygons(List<String> polygons) {
+ // 仅做空间过滤,具体坐标规则由 SQL 处理
+ return baseMapper.selectByPolygons(polygons);
+ }
+
+ @Override
+ public boolean save(FwPoliceStationEntity fwPoliceStation) {
+ // 校验派出所名称唯一性
+ checkStationNameUnique(fwPoliceStation.getStationName(), null);
+ fillCreateFields(fwPoliceStation);
+ return super.save(fwPoliceStation);
+ }
+
+ @Override
+ public boolean updateById(FwPoliceStationEntity fwPoliceStation) {
+ // 校验派出所名称唯一性(排除当前记录)
+ checkStationNameUnique(fwPoliceStation.getStationName(), fwPoliceStation.getId());
+ fillUpdateFields(fwPoliceStation);
+ return super.updateById(fwPoliceStation);
+ }
+
+ @Override
+ public boolean saveOrUpdate(FwPoliceStationEntity fwPoliceStation) {
+ // 校验派出所名称唯一性
+ checkStationNameUnique(fwPoliceStation.getStationName(), fwPoliceStation.getId());
+ if (fwPoliceStation.getId() == null) {
+ fillCreateFields(fwPoliceStation);
+ } else {
+ fillUpdateFields(fwPoliceStation);
+ }
+ return super.saveOrUpdate(fwPoliceStation);
+ }
+
+ /**
+ * 校验派出所名称唯一性
+ *
+ * @param stationName 派出所名称
+ * @param excludeId 排除的ID(更新时使用,排除当前记录)
+ * @throws RuntimeException 当名称已存在时抛出异常
+ */
+ private void checkStationNameUnique(String stationName, Long excludeId) {
+ if (StringUtil.isBlank(stationName)) {
+ return;
+ }
+ LambdaQueryWrapper<FwPoliceStationEntity> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(FwPoliceStationEntity::getStationName, stationName);
+ queryWrapper.eq(FwPoliceStationEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
+ if (excludeId != null) {
+ queryWrapper.ne(FwPoliceStationEntity::getId, excludeId);
+ }
+ long count = count(queryWrapper);
+ if (count > 0) {
+ throw new RuntimeException("派出所名称 '" + stationName + "' 已存在");
+ }
+ }
+
+ private void fillCreateFields(FwPoliceStationEntity fwPoliceStation) {
+ // 创建/更新基础审计字段统一设置
+ Long userId = AuthUtil.getUserId();
+ String deptIdStr = AuthUtil.getDeptId();
+ Long deptId = null;
+ if (StringUtil.isNotBlank(deptIdStr)) {
+ try {
+ deptId = Long.valueOf(deptIdStr);
+ } catch (NumberFormatException ignored) {
+ deptId = null;
+ }
+ }
+ // String areaCode = HeaderUtils.getAreaCode();
+ // if (StringUtil.isBlank(areaCode)) {
+ // areaCode = fwPoliceStation.getAreaCode();
+ // }
+ Date now = new Date();
+ fwPoliceStation.setCreateUser(userId);
+ fwPoliceStation.setUpdateUser(userId);
+ if (deptId != null) {
+ fwPoliceStation.setCreateDept(deptId);
+ }
+ // if (StringUtil.isNotBlank(areaCode)) {
+ // fwPoliceStation.setAreaCode(areaCode);
+ // }
+ fwPoliceStation.setCreateTime(now);
+ fwPoliceStation.setUpdateTime(now);
+ }
+
+ private void fillUpdateFields(FwPoliceStationEntity fwPoliceStation) {
+ Long userId = AuthUtil.getUserId();
+ if (userId != null) {
+ fwPoliceStation.setUpdateUser(userId);
+ }
+ fwPoliceStation.setUpdateTime(new Date());
+ }
+
}
--
Gitblit v1.9.3