fuyuchuan 1 день тому
батько
коміт
22ba5ee949

+ 1 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/MybatisGeneratorUtils.java

@@ -71,7 +71,7 @@ public class MybatisGeneratorUtils {
         // strategy.setTablePrefix("t_"); // 表名前缀
         strategy.setEntityLombokModel(true); //使用lombok
         //修改自己想要生成的表
-        strategy.setInclude(new String[]{"mh_dredge"});  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
+        strategy.setInclude(new String[]{"yhhj"});  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
         mpg.setStrategy(strategy);
 
         // 关闭默认 xml 生成,调整生成 至 根目录

+ 28 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/YhhjController.java

@@ -0,0 +1,28 @@
+package com.usky.fire.controller.web;
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.Yhhj;
+import com.usky.fire.service.YhhjService;
+import com.usky.fire.service.vo.YhhjRequestVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ *
+ * @author fyc
+ * @email yuchuan.fu@chinausky.com
+ * @date 2026/6/16
+ */
+@RestController
+@RequestMapping("yhhj")
+public class YhhjController {
+
+    @Autowired
+    private YhhjService yhhjService;
+
+    @PostMapping()
+    public ApiResult<CommonPage<Yhhj>> getYhhj(@RequestBody YhhjRequestVO vo) {
+        return ApiResult.success(yhhjService.getYhhj(vo));
+    }
+}

+ 103 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/Yhhj.java

@@ -0,0 +1,103 @@
+package com.usky.fire.domain;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 隐患汇总表
+ * </p>
+ *
+ * @author fu
+ * @since 2026-06-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class Yhhj implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private String zj;
+
+    /**
+     * 隐患类别
+     */
+    private String troubleName;
+
+    /**
+     * 隐患详情
+     */
+    private String troubleDesc;
+
+    /**
+     * 是否整改
+     */
+    private String compete;
+
+    /**
+     * 删除状态
+     */
+    private String yhxxbDelFlag;
+
+    /**
+     * 单位id
+     */
+    private Double unitId;
+
+    /**
+     * 单位名称
+     */
+    private String unitName;
+
+    /**
+     * 检查人姓名
+     */
+    private String createName;
+
+    /**
+     * 检查时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 建筑id
+     */
+    private Double buildingId;
+
+    /**
+     * 建筑名称
+     */
+    private String buildingName;
+
+    /**
+     * 街道名称
+     */
+    private String jzName;
+
+    /**
+     * 区域名称
+     */
+    private String qyName;
+
+    /**
+     * 地址
+     */
+    private String rhAddress;
+
+    /**
+     * 经度
+     */
+    private String x;
+
+    /**
+     * 纬度
+     */
+    private String y;
+
+
+}

+ 16 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/YhhjMapper.java

@@ -0,0 +1,16 @@
+package com.usky.fire.mapper;
+
+import com.usky.fire.domain.Yhhj;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 隐患汇总表 Mapper 接口
+ * </p>
+ *
+ * @author fu
+ * @since 2026-06-16
+ */
+public interface YhhjMapper extends CrudMapper<Yhhj> {
+
+}

+ 22 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/YhhjService.java

@@ -0,0 +1,22 @@
+package com.usky.fire.service;
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.Yhhj;
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.fire.service.vo.YhhjRequestVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 隐患汇总表 服务类
+ * </p>
+ *
+ * @author fu
+ * @since 2026-06-16
+ */
+public interface YhhjService extends CrudService<Yhhj> {
+
+    CommonPage<Yhhj> getYhhj(YhhjRequestVO vo);
+}

+ 128 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/YhhjServiceImpl.java

@@ -0,0 +1,128 @@
+package com.usky.fire.service.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.common.core.exception.BusinessException;
+import com.usky.fire.domain.Yhhj;
+import com.usky.fire.mapper.YhhjMapper;
+import com.usky.fire.service.YhhjService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.fire.service.vo.YhhjRequestVO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.time.Duration;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * <p>
+ * 隐患汇总表 服务实现类
+ * </p>
+ *
+ * @author fu
+ * @since 2026-06-16
+ */
+@Service
+@DS("hz")
+public class YhhjServiceImpl extends AbstractCrudService<YhhjMapper, Yhhj> implements YhhjService {
+
+    @Override
+    public CommonPage<Yhhj> getYhhj(YhhjRequestVO vo) {
+        // 1. 参数校验
+        if (vo == null) {
+            throw new BusinessException("查询参数不能为空");
+        }
+
+        int pageNum = Optional.ofNullable(vo.getPageNum()).orElse(1);
+        int pageSize = Optional.ofNullable(vo.getPageSize()).orElse(20);
+
+        if (pageNum < 1) {
+            throw new BusinessException("页码不能小于1");
+        }
+        if (pageSize < 1) {
+            throw new BusinessException("每页大小不能小于1");
+        }
+
+        final int MAX_PAGE_SIZE = 500;
+        if (pageSize > MAX_PAGE_SIZE) {
+            pageSize = MAX_PAGE_SIZE;
+            vo.setPageSize(pageSize);
+        }
+
+        // 2. 时间范围处理
+        LocalDateTime startTime = vo.getStartTime();
+        LocalDateTime endTime = vo.getEndTime();
+        LocalDateTime now = LocalDateTime.now();
+
+        if (startTime == null && endTime == null) {
+            startTime = LocalDate.now().withDayOfMonth(1).atStartOfDay();
+            endTime = now;
+        } else if (startTime == null) {
+            startTime = endTime.minusYears(3);
+        } else if (endTime == null) {
+            endTime = startTime.plusYears(3);
+            if (endTime.isAfter(now)) {
+                endTime = now;
+            }
+        }
+
+        // 3. 时间校验
+        if (startTime.isAfter(endTime)) {
+            throw new BusinessException("开始时间不能晚于结束时间");
+        }
+        if (startTime.plusYears(3).isBefore(endTime)) {
+            throw new BusinessException("查询时间跨度不能超过3年");
+        }
+
+        // 4. 构建查询条件
+        LambdaQueryWrapper<Yhhj> qw = new LambdaQueryWrapper<>();
+
+        // 精确匹配
+        qw.eq(StringUtils.isNotBlank(vo.getZj()), Yhhj::getZj, vo.getZj())
+                .eq(StringUtils.isNotBlank(vo.getCompete()), Yhhj::getCompete, vo.getCompete())
+                .eq(StringUtils.isNotBlank(vo.getYhxxbDelFlag()), Yhhj::getYhxxbDelFlag, vo.getYhxxbDelFlag())
+                .eq(vo.getUnitId() != null, Yhhj::getUnitId, vo.getUnitId())
+                .eq(vo.getBuildingId() != null, Yhhj::getBuildingId, vo.getBuildingId());
+
+        // 模糊匹配(trim处理)
+        likeTrim(qw, vo.getUnitName(), Yhhj::getUnitName);
+        likeTrim(qw, vo.getCreateName(), Yhhj::getCreateName);
+        likeTrim(qw, vo.getBuildingName(), Yhhj::getBuildingName);
+        likeTrim(qw, vo.getJzName(), Yhhj::getJzName);
+        likeTrim(qw, vo.getQyName(), Yhhj::getQyName);
+        likeTrim(qw, vo.getRhAddress(), Yhhj::getRhAddress);
+
+        // 坐标
+        eqTrim(qw, vo.getX(), Yhhj::getX);
+        eqTrim(qw, vo.getY(), Yhhj::getY);
+
+        qw.between(Yhhj::getCreateTime, startTime, endTime)
+                .orderByDesc(Yhhj::getCreateTime);
+
+        // 5. 分页查询
+        Page<Yhhj> page = this.page(new Page<>(pageNum, pageSize), qw);
+        return new CommonPage<>(page.getRecords(), page.getTotal(), pageSize, pageNum);
+    }
+
+    // 提取公共方法
+    private <T> void likeTrim(LambdaQueryWrapper<Yhhj> qw, String val, SFunction<Yhhj, T> column) {
+        Optional.ofNullable(val)
+                .filter(StringUtils::isNotBlank)
+                .map(String::trim)
+                .ifPresent(v -> qw.like(column, v));
+    }
+
+    private <T> void eqTrim(LambdaQueryWrapper<Yhhj> qw, String val, SFunction<Yhhj, T> column) {
+        Optional.ofNullable(val)
+                .filter(StringUtils::isNotBlank)
+                .map(String::trim)
+                .ifPresent(v -> qw.eq(column, v));
+    }
+}

+ 93 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/YhhjRequestVO.java

@@ -0,0 +1,93 @@
+package com.usky.fire.service.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author fyc
+ * @email yuchuan.fu@chinausky.com
+ * @date 2026/6/16
+ */
+@Data
+public class YhhjRequestVO {
+
+    // 分页参数
+    private Integer pageNum;
+
+    // 每页大小
+    private Integer pageSize;
+
+    // 主键
+    private String zj;
+
+    // 是否整改
+    private String compete;
+
+    // 删除状态
+    private String yhxxbDelFlag;
+
+    /**
+     * 单位id
+     */
+    private Double unitId;
+
+    /**
+     * 单位名称
+     */
+    private String unitName;
+
+    /**
+     * 检查人姓名
+     */
+    private String createName;
+
+    /**
+     * 检查开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime startTime;
+
+    /**
+     * 检查结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime endTime;
+
+    /**
+     * 建筑id
+     */
+    private Double buildingId;
+
+    /**
+     * 建筑名称
+     */
+    private String buildingName;
+
+    /**
+     * 街道名称
+     */
+    private String jzName;
+
+    /**
+     * 区域名称
+     */
+    private String qyName;
+
+    /**
+     * 地址
+     */
+    private String rhAddress;
+
+    /**
+     * 经度
+     */
+    private String x;
+
+    /**
+     * 纬度
+     */
+    private String y;
+}

+ 4 - 0
service-fire/service-fire-biz/src/main/resources/application.yml

@@ -54,6 +54,10 @@ spring:
       #          password: mysql570
       #          url: url=jdbc:mysql://32.1.7.42:3306/minhangsystem?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8&allowMultiQueries=true
       #          username: mhzd119
+        hz:
+          driver-class-name: dm.jdbc.driver.DmDriver
+          url: url=jdbc:dm://localhost:5237/user01?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8
+          password: user010101
       druid:
         initial-size: 25
         min-idle: 25

+ 25 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/YhhjMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.fire.mapper.YhhjMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.fire.domain.Yhhj">
+        <result column="zj" property="zj" />
+        <result column="trouble_name" property="troubleName" />
+        <result column="trouble_desc" property="troubleDesc" />
+        <result column="compete" property="compete" />
+        <result column="yhxxb_del_flag" property="yhxxbDelFlag" />
+        <result column="unit_id" property="unitId" />
+        <result column="unit_name" property="unitName" />
+        <result column="create_name" property="createName" />
+        <result column="create_time" property="createTime" />
+        <result column="building_id" property="buildingId" />
+        <result column="building_name" property="buildingName" />
+        <result column="jz_name" property="jzName" />
+        <result column="qy_name" property="qyName" />
+        <result column="rh_address" property="rhAddress" />
+        <result column="x" property="x" />
+        <result column="y" property="y" />
+    </resultMap>
+
+</mapper>