瀏覽代碼

安全隐患模块代码修改

starrymoonlight 2 周之前
父節點
當前提交
7967e560dc

+ 9 - 3
ruoyi-modules/ruoyi-riskctrl/src/main/java/org/dromara/riskctrl/controller/SafetyHazardController.java

@@ -10,6 +10,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.web.core.BaseController;
 import org.dromara.riskctrl.domain.bo.SafetyHazardBo;
+import org.dromara.riskctrl.domain.vo.SafetyHazardStatsVo;
 import org.dromara.riskctrl.domain.vo.SafetyHazardVo;
 import org.dromara.riskctrl.service.ISafetyHazardService;
 import org.springframework.validation.annotation.Validated;
@@ -76,7 +77,12 @@ public class SafetyHazardController extends BaseController {
     @Log(title = "安全隐患", businessType = BusinessType.UPDATE)
     @PutMapping("/process")
     public R<Void> process(@RequestBody SafetyHazardBo bo) {
-        return toAjax(hazardService.processHazard(bo.getHazardId(), bo.getProcessStatus(), bo.getProcessResult()));
+        return toAjax(hazardService.processHazard(
+            bo.getHazardId(),
+            bo.getProcessStatus(),
+            bo.getProcessResult(),
+            bo.getProcessUser()
+        ));
     }
 
     /**
@@ -94,8 +100,8 @@ public class SafetyHazardController extends BaseController {
      */
     @SaCheckPermission("riskctrl:hazard:list")
     @GetMapping("/stats")
-    public R<Map<String, Object>> stats() {
-        return R.ok(hazardService.selectHazardStats());
+    public R<SafetyHazardStatsVo> stats(SafetyHazardBo bo) {
+        return R.ok(hazardService.selectHazardStats(bo));
     }
 
     /**

+ 8 - 0
ruoyi-modules/ruoyi-riskctrl/src/main/java/org/dromara/riskctrl/domain/bo/SafetyHazardBo.java

@@ -1,8 +1,11 @@
 package org.dromara.riskctrl.domain.bo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.riskctrl.domain.SafetyHazard;
 
 import java.util.Date;
 
@@ -12,6 +15,7 @@ import java.util.Date;
  * @author riskctrl
  */
 @Data
+@AutoMapper(target = SafetyHazard.class)
 @EqualsAndHashCode(callSuper = true)
 public class SafetyHazardBo extends BaseEntity {
 
@@ -25,6 +29,7 @@ public class SafetyHazardBo extends BaseEntity {
 
     private String riskLevel;
 
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date discoverTime;
 
     private String hazardLocation;
@@ -37,6 +42,7 @@ public class SafetyHazardBo extends BaseEntity {
 
     private String processResult;
 
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date processTime;
 
     private String processUser;
@@ -45,4 +51,6 @@ public class SafetyHazardBo extends BaseEntity {
 
     private String remark;
 
+    /** 关键词:模糊匹配隐患编号 / 隐患名称 */
+    private String keyword;
 }

+ 15 - 0
ruoyi-modules/ruoyi-riskctrl/src/main/java/org/dromara/riskctrl/domain/vo/SafetyHazardStatsVo.java

@@ -0,0 +1,15 @@
+package org.dromara.riskctrl.domain.vo;
+
+import lombok.Data;
+
+@Data
+public class SafetyHazardStatsVo {
+
+    private Long totalCount;
+
+    /** 待处理 + 处理中 */
+    private Long unprocessedCount;
+
+    /** 已处理 */
+    private Long processedCount;
+}

+ 2 - 1
ruoyi-modules/ruoyi-riskctrl/src/main/java/org/dromara/riskctrl/mapper/SafetyHazardMapper.java

@@ -2,7 +2,7 @@ package org.dromara.riskctrl.mapper;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
 import org.dromara.common.mybatis.annotation.DataColumn;
 import org.dromara.common.mybatis.annotation.DataPermission;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
@@ -16,6 +16,7 @@ import java.util.List;
  *
  * @author riskctrl
  */
+@Mapper
 public interface SafetyHazardMapper extends BaseMapperPlus<SafetyHazard, SafetyHazardVo> {
 
     @DataPermission({

+ 3 - 2
ruoyi-modules/ruoyi-riskctrl/src/main/java/org/dromara/riskctrl/service/ISafetyHazardService.java

@@ -3,6 +3,7 @@ package org.dromara.riskctrl.service;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.riskctrl.domain.bo.SafetyHazardBo;
+import org.dromara.riskctrl.domain.vo.SafetyHazardStatsVo;
 import org.dromara.riskctrl.domain.vo.SafetyHazardVo;
 
 import java.util.List;
@@ -43,7 +44,7 @@ public interface ISafetyHazardService {
     /**
      * 处理安全隐患
      */
-    int processHazard(Long hazardId, String processStatus, String processResult);
+    int processHazard(Long hazardId, String processStatus, String processResult, String processUser);
 
     /**
      * 批量删除安全隐患
@@ -53,7 +54,7 @@ public interface ISafetyHazardService {
     /**
      * 查询安全隐患统计
      */
-    Map<String, Object> selectHazardStats();
+    SafetyHazardStatsVo selectHazardStats(SafetyHazardBo bo);
 
     /**
      * 查询月度隐患处理趋势

+ 59 - 20
ruoyi-modules/ruoyi-riskctrl/src/main/java/org/dromara/riskctrl/service/impl/SafetyHazardServiceImpl.java

@@ -3,6 +3,7 @@ package org.dromara.riskctrl.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import jakarta.annotation.Resource;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.constant.SystemConstants;
@@ -12,6 +13,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.riskctrl.domain.SafetyHazard;
 import org.dromara.riskctrl.domain.bo.SafetyHazardBo;
+import org.dromara.riskctrl.domain.vo.SafetyHazardStatsVo;
 import org.dromara.riskctrl.domain.vo.SafetyHazardVo;
 import org.dromara.riskctrl.mapper.SafetyHazardMapper;
 import org.dromara.riskctrl.service.ISafetyHazardService;
@@ -31,6 +33,7 @@ import java.util.*;
 @Service
 public class SafetyHazardServiceImpl implements ISafetyHazardService {
 
+    @Resource
     private final SafetyHazardMapper baseMapper;
 
     @Override
@@ -47,15 +50,21 @@ public class SafetyHazardServiceImpl implements ISafetyHazardService {
     private LambdaQueryWrapper<SafetyHazard> buildQueryWrapper(SafetyHazardBo bo) {
         Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<SafetyHazard> wrapper = Wrappers.lambdaQuery();
+
         wrapper.eq(SafetyHazard::getDelFlag, SystemConstants.NORMAL)
             .eq(StringUtils.isNotBlank(bo.getHazardNo()), SafetyHazard::getHazardNo, bo.getHazardNo())
             .like(StringUtils.isNotBlank(bo.getHazardName()), SafetyHazard::getHazardName, bo.getHazardName())
             .eq(StringUtils.isNotBlank(bo.getHazardType()), SafetyHazard::getHazardType, bo.getHazardType())
             .eq(StringUtils.isNotBlank(bo.getRiskLevel()), SafetyHazard::getRiskLevel, bo.getRiskLevel())
             .eq(StringUtils.isNotBlank(bo.getProcessStatus()), SafetyHazard::getProcessStatus, bo.getProcessStatus())
+            .and(StringUtils.isNotBlank(bo.getKeyword()), w -> w
+                .like(SafetyHazard::getHazardNo, bo.getKeyword())
+                .or()
+                .like(SafetyHazard::getHazardName, bo.getKeyword()))
             .between(params.get("beginTime") != null && params.get("endTime") != null,
                 SafetyHazard::getCreateTime, params.get("beginTime"), params.get("endTime"))
             .orderByDesc(SafetyHazard::getCreateTime);
+
         return wrapper;
     }
 
@@ -68,7 +77,8 @@ public class SafetyHazardServiceImpl implements ISafetyHazardService {
     @Transactional(rollbackFor = Exception.class)
     public int insertHazard(SafetyHazardBo bo) {
         SafetyHazard hazard = MapstructUtils.convert(bo, SafetyHazard.class);
-        hazard.setHazardNo("HZ" + new SimpleDateFormat("yyyyMMdd").format(new Date()) + UUID.randomUUID().toString().replace("-", "").substring(0, 6));
+        hazard.setHazardNo("HZ" + new SimpleDateFormat("yyyyMMdd").format(new Date())
+            + UUID.randomUUID().toString().replace("-", "").substring(0, 6));
         if (hazard.getProcessStatus() == null) {
             hazard.setProcessStatus("待处理");
         }
@@ -84,11 +94,12 @@ public class SafetyHazardServiceImpl implements ISafetyHazardService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int processHazard(Long hazardId, String processStatus, String processResult) {
+    public int processHazard(Long hazardId, String processStatus, String processResult, String processUser) {
         SafetyHazard hazard = new SafetyHazard();
         hazard.setHazardId(hazardId);
         hazard.setProcessStatus(processStatus);
         hazard.setProcessResult(processResult);
+        hazard.setProcessUser(processUser);
         hazard.setProcessTime(new Date());
         return baseMapper.updateById(hazard);
     }
@@ -100,37 +111,64 @@ public class SafetyHazardServiceImpl implements ISafetyHazardService {
     }
 
     @Override
-    public Map<String, Object> selectHazardStats() {
-        LambdaQueryWrapper<SafetyHazard> wrapper = Wrappers.lambdaQuery();
-        wrapper.eq(SafetyHazard::getDelFlag, SystemConstants.NORMAL);
+    public SafetyHazardStatsVo selectHazardStats(SafetyHazardBo bo) {
+        LambdaQueryWrapper<SafetyHazard> baseWrapper = buildQueryWrapper(bo);
 
-        long total = baseMapper.selectCount(wrapper);
-        long unprocessed = baseMapper.selectCount(wrapper.clone()
+        long total = baseMapper.selectCount(baseWrapper);
+
+        long unprocessed = baseMapper.selectCount(baseWrapper.clone()
             .in(SafetyHazard::getProcessStatus, List.of("待处理", "处理中")));
-        long processed = baseMapper.selectCount(wrapper.clone()
+
+        long processed = baseMapper.selectCount(baseWrapper.clone()
             .eq(SafetyHazard::getProcessStatus, "已处理"));
 
-        Map<String, Object> stats = new LinkedHashMap<>();
-        stats.put("total", total);
-        stats.put("unprocessed", unprocessed);
-        stats.put("processed", processed);
-        return stats;
+        SafetyHazardStatsVo vo = new SafetyHazardStatsVo();
+        vo.setTotalCount(total);
+        vo.setUnprocessedCount(unprocessed);
+        vo.setProcessedCount(processed);
+        return vo;
     }
 
     @Override
     public List<Map<String, Object>> selectMonthlyTrend(int months) {
         List<Map<String, Object>> trend = new ArrayList<>();
+
         for (int i = months - 1; i >= 0; i--) {
             Calendar cal = Calendar.getInstance();
             cal.add(Calendar.MONTH, -i);
-            String month = new SimpleDateFormat("yyyy-MM").format(cal.getTime());
-            LambdaQueryWrapper<SafetyHazard> wrapper = Wrappers.lambdaQuery();
-            wrapper.eq(SafetyHazard::getDelFlag, SystemConstants.NORMAL)
-                .likeRight(SafetyHazard::getCreateTime, month);
 
-            long total = baseMapper.selectCount(wrapper);
-            long closed = baseMapper.selectCount(wrapper.clone()
-                .eq(SafetyHazard::getProcessStatus, "已处理"));
+            // 当前月开始时间
+            Calendar beginCal = (Calendar) cal.clone();
+            beginCal.set(Calendar.DAY_OF_MONTH, 1);
+            beginCal.set(Calendar.HOUR_OF_DAY, 0);
+            beginCal.set(Calendar.MINUTE, 0);
+            beginCal.set(Calendar.SECOND, 0);
+            beginCal.set(Calendar.MILLISECOND, 0);
+
+            // 当前月结束时间
+            Calendar endCal = (Calendar) cal.clone();
+            endCal.set(Calendar.DAY_OF_MONTH, endCal.getActualMaximum(Calendar.DAY_OF_MONTH));
+            endCal.set(Calendar.HOUR_OF_DAY, 23);
+            endCal.set(Calendar.MINUTE, 59);
+            endCal.set(Calendar.SECOND, 59);
+            endCal.set(Calendar.MILLISECOND, 999);
+
+            Date beginTime = beginCal.getTime();
+            Date endTime = endCal.getTime();
+
+            LambdaQueryWrapper<SafetyHazard> baseWrapper = Wrappers.lambdaQuery();
+            baseWrapper.eq(SafetyHazard::getDelFlag, SystemConstants.NORMAL)
+                .between(SafetyHazard::getCreateTime, beginTime, endTime);
+
+            long total = baseMapper.selectCount(baseWrapper);
+            long closed = baseMapper.selectCount(
+                Wrappers.<SafetyHazard>lambdaQuery()
+                    .eq(SafetyHazard::getDelFlag, SystemConstants.NORMAL)
+                    .between(SafetyHazard::getCreateTime, beginTime, endTime)
+                    .eq(SafetyHazard::getProcessStatus, "已处理")
+            );
+
+            String month = new SimpleDateFormat("yyyy-MM").format(cal.getTime());
 
             Map<String, Object> item = new LinkedHashMap<>();
             item.put("month", month);
@@ -138,6 +176,7 @@ public class SafetyHazardServiceImpl implements ISafetyHazardService {
             item.put("closed", closed);
             trend.add(item);
         }
+
         return trend;
     }