From be43a6e71f665ce97c9fbf973bf43d24fdb24a54 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期三, 28 一月 2026 10:51:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New

---
 src/main/java/com/ruoyi/safe/mapper/SafeHazardMapper.java                       |   22 +
 src/main/java/com/ruoyi/safe/service/SafeCertificationFileService.java          |   16 +
 src/main/java/com/ruoyi/safe/mapper/SafeCertificationMapper.java                |   22 +
 src/main/resources/mapper/safe/SafeHazardMapper.xml                             |   44 +++
 src/main/resources/mapper/safe/SafeCertificationMapper.xml                      |   35 ++
 src/main/resources/mapper/safe/SafeCertificationFileMapper.xml                  |   19 +
 src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java                  |   18 -
 src/main/java/com/ruoyi/safe/controller/SafeCertificationController.java        |   57 ++++
 src/main/java/com/ruoyi/safe/mapper/SafeCertificationFileMapper.java            |   18 +
 src/main/java/com/ruoyi/safe/service/impl/SafeCertificationFileServiceImpl.java |   20 +
 src/main/java/com/ruoyi/safe/service/impl/SafeCertificationServiceImpl.java     |   31 ++
 src/main/java/com/ruoyi/safe/pojo/SafeCertification.java                        |   76 ++++++
 src/main/java/com/ruoyi/safe/service/impl/SafeHazardServiceImpl.java            |   30 ++
 src/main/java/com/ruoyi/safe/pojo/SafeCertificationFile.java                    |   60 +++++
 src/main/java/com/ruoyi/safe/service/SafeCertificationService.java              |   19 +
 src/main/java/com/ruoyi/safe/controller/SafeHazardController.java               |   54 ++++
 src/main/java/com/ruoyi/safe/pojo/SafeHazard.java                               |   86 +++++++
 src/main/java/com/ruoyi/safe/service/SafeHazardService.java                     |   19 +
 src/main/java/com/ruoyi/safe/controller/SafeCertificationFileController.java    |   74 ++++++
 19 files changed, 702 insertions(+), 18 deletions(-)

diff --git a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
index bd8e0ad..93928ca 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -180,23 +180,6 @@
             homeBusinessDto.setMonthPurchaseHaveMoney(unReceiptPaymentAmount.setScale(2, RoundingMode.HALF_UP).toString());
         }
         // 缁熻搴撳瓨
-//        List<ProcurementRecordStorage> procurementRecordStorages = procurementRecordStorageMapper.selectList(null);
-//        BigDecimal stockAmount = procurementRecordStorages.stream()
-//                .map(ProcurementRecordStorage::getInboundNum)
-//                .filter(Objects::nonNull)
-//                .reduce(BigDecimal.ZERO, BigDecimal::add);
-//        // 鑷畾涔夊簱瀛�
-//        List<CustomStorage> customStorages = customStorageMapper.selectList(null);
-//        BigDecimal customStockAmount = customStorages.stream()
-//                .map(CustomStorage::getInboundNum)
-//                .filter(Objects::nonNull)
-//                .reduce(BigDecimal.ZERO, BigDecimal::add);
-//        List<ProcurementRecordOut> procurementRecordOuts = procurementRecordOutMapper.selectList(null);
-//        BigDecimal outboundAmount = procurementRecordOuts.stream()
-//                .map(ProcurementRecordOut::getInboundNum)
-//                .filter(Objects::nonNull)
-//                .reduce(BigDecimal.ZERO, BigDecimal::add);
-//        BigDecimal stock = stockAmount.add(customStockAmount).subtract(outboundAmount);
         BigDecimal stockQuantityTotal = stockInventoryMapper.selectTotal();
         homeBusinessDto.setInventoryNum(stockQuantityTotal.setScale(2, RoundingMode.HALF_UP).toString());
 
@@ -210,7 +193,6 @@
                 .map(ProcurementRecordStorage::getInboundNum)
                 .filter(Objects::nonNull)
                 .reduce(BigDecimal.ZERO, BigDecimal::add);
-//        homeBusinessDto.setInventoryNum(stock.setScale(2, RoundingMode.HALF_UP).toString());
         homeBusinessDto.setTodayInventoryNum(stockAmount1.setScale(2, RoundingMode.HALF_UP).toString());
         return homeBusinessDto;
     }
diff --git a/src/main/java/com/ruoyi/safe/controller/SafeCertificationController.java b/src/main/java/com/ruoyi/safe/controller/SafeCertificationController.java
new file mode 100644
index 0000000..898b9d2
--- /dev/null
+++ b/src/main/java/com/ruoyi/safe/controller/SafeCertificationController.java
@@ -0,0 +1,57 @@
+package com.ruoyi.safe.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.production.dto.ProcessRouteDto;
+import com.ruoyi.production.pojo.ProcessRoute;
+import com.ruoyi.safe.pojo.SafeCertification;
+import com.ruoyi.safe.service.SafeCertificationService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * <p>
+ * 瀹夊叏鐢熶骇--瀹夊叏瑙勭▼涓庤祫璐ㄧ鐞� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-01-28 09:26:33
+ */
+@RestController
+@RequestMapping("/safeCertification")
+@Api(tags = "瀹夊叏鐢熶骇--瀹夊叏瑙勭▼涓庤祫璐ㄧ鐞�")
+public class SafeCertificationController {
+
+    @Autowired
+    private SafeCertificationService safeCertificationService;
+
+    @GetMapping("/page")
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    public R page(Page<SafeCertification> page, SafeCertification safeCertification) {
+        return R.ok(safeCertificationService.pageSafeCertification(page, safeCertification));
+    }
+
+    @ApiOperation("鏂板瀹夊叏瑙勭▼涓庤祫璐ㄧ鐞�")
+    @PostMapping()
+    public R add(@RequestBody SafeCertification safeCertification) {
+        return R.ok(safeCertificationService.save(safeCertification));
+    }
+    @ApiOperation("淇敼瀹夊叏瑙勭▼涓庤祫璐ㄧ鐞�")
+    @PutMapping ()
+    public R update(@RequestBody  SafeCertification safeCertification) {
+        return R.ok(safeCertificationService.updateById(safeCertification));
+    }
+    @ApiOperation("鍒犻櫎瀹夊叏瑙勭▼涓庤祫璐ㄧ鐞�")
+    @DeleteMapping("/{ids}")
+    public R delSafeCertification(@RequestBody List<Integer> ids) {
+        return R.ok(safeCertificationService.removeBatchByIds(ids));
+    }
+
+}
diff --git a/src/main/java/com/ruoyi/safe/controller/SafeCertificationFileController.java b/src/main/java/com/ruoyi/safe/controller/SafeCertificationFileController.java
new file mode 100644
index 0000000..9c4a1a3
--- /dev/null
+++ b/src/main/java/com/ruoyi/safe/controller/SafeCertificationFileController.java
@@ -0,0 +1,74 @@
+package com.ruoyi.safe.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.production.pojo.ProductWorkOrderFile;
+import com.ruoyi.production.service.ProductWorkOrderFileService;
+import com.ruoyi.safe.pojo.SafeCertificationFile;
+import com.ruoyi.safe.service.SafeCertificationFileService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ * 瀹夊叏鐢熶骇--瀹夊叏瑙勭▼涓庤祫璐ㄧ鐞�--闄勪欢 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-01-28 09:45:20
+ */
+@RestController
+@RequestMapping("/safeCertificationFile")
+@Api(tags = "瀹夊叏鐢熶骇--瀹夊叏瑙勭▼涓庤祫璐ㄧ鐞�--闄勪欢")
+public class SafeCertificationFileController {
+
+    @Resource
+    private SafeCertificationFileService safeCertificationFileService;
+
+
+    /**
+     * 鏂板
+     * @param safeCertificationFile
+     * @return
+     */
+    @PostMapping("/add")
+    @ApiOperation("鏂板")
+    public R add(@RequestBody SafeCertificationFile safeCertificationFile) {
+        return R.ok(safeCertificationFileService.save(safeCertificationFile));
+    }
+
+    /**
+     * 鍒犻櫎
+     * @param ids
+     * @return
+     */
+    @DeleteMapping("/del")
+    @ApiOperation("鍒犻櫎")
+    public R delQualityUnqualified(@RequestBody List<Integer> ids) {
+        if(CollectionUtils.isEmpty(ids)){
+            return R.fail("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+        }
+        //鍒犻櫎妫�楠岄檮浠�
+        return R.ok(safeCertificationFileService.removeBatchByIds(ids));
+    }
+
+    /**
+     *鍒嗛〉鏌ヨ
+     * @param page
+     * @param safeCertificationFile
+     * @return
+     */
+    @GetMapping("/listPage")
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    public R listPage(Page page, SafeCertificationFile safeCertificationFile) {
+        return R.ok(safeCertificationFileService.page(page, Wrappers.<SafeCertificationFile>lambdaQuery().eq(SafeCertificationFile::getSafeCertificationId,safeCertificationFile.getSafeCertificationId())));
+    }
+
+}
diff --git a/src/main/java/com/ruoyi/safe/controller/SafeHazardController.java b/src/main/java/com/ruoyi/safe/controller/SafeHazardController.java
new file mode 100644
index 0000000..6e999d1
--- /dev/null
+++ b/src/main/java/com/ruoyi/safe/controller/SafeHazardController.java
@@ -0,0 +1,54 @@
+package com.ruoyi.safe.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.safe.pojo.SafeCertification;
+import com.ruoyi.safe.pojo.SafeHazard;
+import com.ruoyi.safe.service.SafeCertificationService;
+import com.ruoyi.safe.service.SafeHazardService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 瀹夊叏鐢熶骇--鍗遍櫓婧愬彴璐� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-01-28 10:09:24
+ */
+@RestController
+@RequestMapping("/safeHazard")
+@Api(tags = "瀹夊叏鐢熶骇--鍗遍櫓婧愬彴璐�")
+public class SafeHazardController {
+
+    @Autowired
+    private SafeHazardService safeHazardService;
+
+    @GetMapping("/page")
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    public R page(Page page, SafeHazard safeHazard) {
+        return R.ok(safeHazardService.pageSafeHazard(page, safeHazard));
+    }
+
+    @ApiOperation("鏂板鍗遍櫓婧愬彴璐�")
+    @PostMapping()
+    public R add(@RequestBody SafeHazard safeHazard) {
+        return R.ok(safeHazardService.save(safeHazard));
+    }
+    @ApiOperation("淇敼鍗遍櫓婧愬彴璐�")
+    @PutMapping ()
+    public R update(@RequestBody  SafeHazard safeHazard) {
+        return R.ok(safeHazardService.updateById(safeHazard));
+    }
+    @ApiOperation("鍒犻櫎鍗遍櫓婧愬彴璐�")
+    @DeleteMapping("/{ids}")
+    public R delSafeHazard(@RequestBody List<Integer> ids) {
+        return R.ok(safeHazardService.removeBatchByIds(ids));
+    }
+
+}
diff --git a/src/main/java/com/ruoyi/safe/mapper/SafeCertificationFileMapper.java b/src/main/java/com/ruoyi/safe/mapper/SafeCertificationFileMapper.java
new file mode 100644
index 0000000..470ef8f
--- /dev/null
+++ b/src/main/java/com/ruoyi/safe/mapper/SafeCertificationFileMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.safe.mapper;
+
+import com.ruoyi.safe.pojo.SafeCertificationFile;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 瀹夊叏鐢熶骇--瀹夊叏瑙勭▼涓庤祫璐ㄧ鐞�--闄勪欢 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-01-28 09:45:20
+ */
+@Mapper
+public interface SafeCertificationFileMapper extends BaseMapper<SafeCertificationFile> {
+
+}
diff --git a/src/main/java/com/ruoyi/safe/mapper/SafeCertificationMapper.java b/src/main/java/com/ruoyi/safe/mapper/SafeCertificationMapper.java
new file mode 100644
index 0000000..84d5dae
--- /dev/null
+++ b/src/main/java/com/ruoyi/safe/mapper/SafeCertificationMapper.java
@@ -0,0 +1,22 @@
+package com.ruoyi.safe.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.safe.pojo.SafeCertification;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 瀹夊叏鐢熶骇--瀹夊叏瑙勭▼涓庤祫璐ㄧ鐞� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-01-28 09:26:33
+ */
+@Mapper
+public interface SafeCertificationMapper extends BaseMapper<SafeCertification> {
+
+    IPage<SafeCertification> pageSafeCertification(Page<SafeCertification> page, @Param("c") SafeCertification safeCertification);
+}
diff --git a/src/main/java/com/ruoyi/safe/mapper/SafeHazardMapper.java b/src/main/java/com/ruoyi/safe/mapper/SafeHazardMapper.java
new file mode 100644
index 0000000..072d53b
--- /dev/null
+++ b/src/main/java/com/ruoyi/safe/mapper/SafeHazardMapper.java
@@ -0,0 +1,22 @@
+package com.ruoyi.safe.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.safe.pojo.SafeHazard;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 瀹夊叏鐢熶骇--鍗遍櫓婧愬彴璐� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-01-28 10:09:24
+ */
+@Mapper
+public interface SafeHazardMapper extends BaseMapper<SafeHazard> {
+
+    IPage<SafeHazard> pageSafeHazard(Page page, @Param("c") SafeHazard safeHazard);
+}
diff --git a/src/main/java/com/ruoyi/safe/pojo/SafeCertification.java b/src/main/java/com/ruoyi/safe/pojo/SafeCertification.java
new file mode 100644
index 0000000..60a768a
--- /dev/null
+++ b/src/main/java/com/ruoyi/safe/pojo/SafeCertification.java
@@ -0,0 +1,76 @@
+package com.ruoyi.safe.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 瀹夊叏鐢熶骇--瀹夊叏瑙勭▼涓庤祫璐ㄧ鐞�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-01-28 09:26:33
+ */
+@Getter
+@Setter
+@TableName("safe_certification")
+@ApiModel(value = "SafeCertification瀵硅薄", description = "瀹夊叏鐢熶骇--瀹夊叏瑙勭▼涓庤祫璐ㄧ鐞�")
+public class SafeCertification implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("瑙勭▼璧勮川鍚嶇О")
+    private String name;
+
+    @ApiModelProperty("瑙勭▼璧勮川缂栧彿")
+    private String code;
+
+    @ApiModelProperty("瑙勭▼璧勮川绫诲瀷")
+    private String type;
+
+    @ApiModelProperty("鐗堟湰鍙�")
+    private String version;
+
+    @ApiModelProperty("澶囨敞")
+    private String remark;
+
+    @ApiModelProperty("鏈夋晥鏈�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate effectiveTime;
+
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @TableField(fill = FieldFill.INSERT)
+    private Integer tenantId;
+}
diff --git a/src/main/java/com/ruoyi/safe/pojo/SafeCertificationFile.java b/src/main/java/com/ruoyi/safe/pojo/SafeCertificationFile.java
new file mode 100644
index 0000000..e9efecc
--- /dev/null
+++ b/src/main/java/com/ruoyi/safe/pojo/SafeCertificationFile.java
@@ -0,0 +1,60 @@
+package com.ruoyi.safe.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * <p>
+ * 瀹夊叏鐢熶骇--瀹夊叏瑙勭▼涓庤祫璐ㄧ鐞�--闄勪欢
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-01-28 09:45:20
+ */
+@Getter
+@Setter
+@TableName("safe_certification_file")
+@ApiModel(value = "SafeCertificationFile瀵硅薄", description = "瀹夊叏鐢熶骇--瀹夊叏瑙勭▼涓庤祫璐ㄧ鐞�--闄勪欢")
+public class SafeCertificationFile implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("鍏宠仈瀹夊叏鐢熶骇璧勮川id")
+    @NotBlank(message = "鍏宠仈瀹夊叏鐢熶骇璧勮川id涓嶈兘涓虹┖")
+    private Integer safeCertificationId;
+
+    private String name;
+
+    private String url;
+
+    private Object fileSize;
+
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @TableField(fill = FieldFill.INSERT)
+    private Integer tenantId;
+}
diff --git a/src/main/java/com/ruoyi/safe/pojo/SafeHazard.java b/src/main/java/com/ruoyi/safe/pojo/SafeHazard.java
new file mode 100644
index 0000000..e900138
--- /dev/null
+++ b/src/main/java/com/ruoyi/safe/pojo/SafeHazard.java
@@ -0,0 +1,86 @@
+package com.ruoyi.safe.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 瀹夊叏鐢熶骇--鍗遍櫓婧愬彴璐�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-01-28 10:09:24
+ */
+@Getter
+@Setter
+@TableName("safe_hazard")
+@ApiModel(value = "SafeHazard瀵硅薄", description = "瀹夊叏鐢熶骇--鍗遍櫓婧愬彴璐�")
+public class SafeHazard implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("鍗遍櫓婧愬悕绉�")
+    private String name;
+
+    @ApiModelProperty("鍗遍櫓婧愮紪鐮�")
+    private String code;
+
+    @ApiModelProperty("鍗遍櫓婧愮被鍨�")
+    private String type;
+
+    @ApiModelProperty("椋庨櫓绛夌骇")
+    private String riskLevel;
+
+    @ApiModelProperty("鎵�鍦ㄤ綅缃�")
+    private String location;
+
+    @ApiModelProperty("瑙勬牸 / 椋庨櫓鎻忚堪")
+    private String specInfo;
+
+    @ApiModelProperty("绠℃帶鎺柦")
+    private String controlMeasures;
+
+    @ApiModelProperty("绠℃帶璐d换浜� ID")
+    private Integer principalUserId;
+
+    @ApiModelProperty("绠℃帶璐d换浜�")
+    @TableField(exist = false)
+    private String principalUser;
+
+    @ApiModelProperty("璐d换浜鸿仈绯荤數璇�")
+    private String principalMobile;
+
+    @ApiModelProperty("搴撳瓨鏁伴噺")
+    private BigDecimal stockQty;
+
+    @ApiModelProperty("澶囨敞")
+    private String remark;
+
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @TableField(fill = FieldFill.INSERT)
+    private Integer tenantId;
+}
diff --git a/src/main/java/com/ruoyi/safe/service/SafeCertificationFileService.java b/src/main/java/com/ruoyi/safe/service/SafeCertificationFileService.java
new file mode 100644
index 0000000..a8a8488
--- /dev/null
+++ b/src/main/java/com/ruoyi/safe/service/SafeCertificationFileService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.safe.service;
+
+import com.ruoyi.safe.pojo.SafeCertificationFile;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 瀹夊叏鐢熶骇--瀹夊叏瑙勭▼涓庤祫璐ㄧ鐞�--闄勪欢 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-01-28 09:45:20
+ */
+public interface SafeCertificationFileService extends IService<SafeCertificationFile> {
+
+}
diff --git a/src/main/java/com/ruoyi/safe/service/SafeCertificationService.java b/src/main/java/com/ruoyi/safe/service/SafeCertificationService.java
new file mode 100644
index 0000000..05d7520
--- /dev/null
+++ b/src/main/java/com/ruoyi/safe/service/SafeCertificationService.java
@@ -0,0 +1,19 @@
+package com.ruoyi.safe.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.safe.pojo.SafeCertification;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 瀹夊叏鐢熶骇--瀹夊叏瑙勭▼涓庤祫璐ㄧ鐞� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-01-28 09:26:33
+ */
+public interface SafeCertificationService extends IService<SafeCertification> {
+
+    IPage<SafeCertification> pageSafeCertification(Page<SafeCertification> page, SafeCertification safeCertification);
+}
diff --git a/src/main/java/com/ruoyi/safe/service/SafeHazardService.java b/src/main/java/com/ruoyi/safe/service/SafeHazardService.java
new file mode 100644
index 0000000..e407ef6
--- /dev/null
+++ b/src/main/java/com/ruoyi/safe/service/SafeHazardService.java
@@ -0,0 +1,19 @@
+package com.ruoyi.safe.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.safe.pojo.SafeHazard;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 瀹夊叏鐢熶骇--鍗遍櫓婧愬彴璐� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-01-28 10:09:24
+ */
+public interface SafeHazardService extends IService<SafeHazard> {
+
+    IPage<SafeHazard> pageSafeHazard(Page page, SafeHazard safeHazard);
+}
diff --git a/src/main/java/com/ruoyi/safe/service/impl/SafeCertificationFileServiceImpl.java b/src/main/java/com/ruoyi/safe/service/impl/SafeCertificationFileServiceImpl.java
new file mode 100644
index 0000000..bf9854d
--- /dev/null
+++ b/src/main/java/com/ruoyi/safe/service/impl/SafeCertificationFileServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.safe.service.impl;
+
+import com.ruoyi.safe.pojo.SafeCertificationFile;
+import com.ruoyi.safe.mapper.SafeCertificationFileMapper;
+import com.ruoyi.safe.service.SafeCertificationFileService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 瀹夊叏鐢熶骇--瀹夊叏瑙勭▼涓庤祫璐ㄧ鐞�--闄勪欢 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-01-28 09:45:20
+ */
+@Service
+public class SafeCertificationFileServiceImpl extends ServiceImpl<SafeCertificationFileMapper, SafeCertificationFile> implements SafeCertificationFileService {
+
+}
diff --git a/src/main/java/com/ruoyi/safe/service/impl/SafeCertificationServiceImpl.java b/src/main/java/com/ruoyi/safe/service/impl/SafeCertificationServiceImpl.java
new file mode 100644
index 0000000..51162bc
--- /dev/null
+++ b/src/main/java/com/ruoyi/safe/service/impl/SafeCertificationServiceImpl.java
@@ -0,0 +1,31 @@
+package com.ruoyi.safe.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.safe.pojo.SafeCertification;
+import com.ruoyi.safe.mapper.SafeCertificationMapper;
+import com.ruoyi.safe.service.SafeCertificationService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 瀹夊叏鐢熶骇--瀹夊叏瑙勭▼涓庤祫璐ㄧ鐞� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-01-28 09:26:33
+ */
+@Service
+public class SafeCertificationServiceImpl extends ServiceImpl<SafeCertificationMapper, SafeCertification> implements SafeCertificationService {
+
+    @Autowired
+    private SafeCertificationMapper safeCertificationMapper;
+
+
+    @Override
+    public IPage<SafeCertification> pageSafeCertification(Page<SafeCertification> page, SafeCertification safeCertification) {
+        return safeCertificationMapper.pageSafeCertification(page, safeCertification);
+    }
+}
diff --git a/src/main/java/com/ruoyi/safe/service/impl/SafeHazardServiceImpl.java b/src/main/java/com/ruoyi/safe/service/impl/SafeHazardServiceImpl.java
new file mode 100644
index 0000000..de7efc7
--- /dev/null
+++ b/src/main/java/com/ruoyi/safe/service/impl/SafeHazardServiceImpl.java
@@ -0,0 +1,30 @@
+package com.ruoyi.safe.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.safe.pojo.SafeHazard;
+import com.ruoyi.safe.mapper.SafeHazardMapper;
+import com.ruoyi.safe.service.SafeHazardService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 瀹夊叏鐢熶骇--鍗遍櫓婧愬彴璐� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-01-28 10:09:24
+ */
+@Service
+public class SafeHazardServiceImpl extends ServiceImpl<SafeHazardMapper, SafeHazard> implements SafeHazardService {
+
+    @Autowired
+    private SafeHazardMapper safeHazardMapper;
+
+    @Override
+    public IPage<SafeHazard> pageSafeHazard(Page page, SafeHazard safeHazard) {
+        return safeHazardMapper.pageSafeHazard(page, safeHazard);
+    }
+}
diff --git a/src/main/resources/mapper/safe/SafeCertificationFileMapper.xml b/src/main/resources/mapper/safe/SafeCertificationFileMapper.xml
new file mode 100644
index 0000000..b7ad5d2
--- /dev/null
+++ b/src/main/resources/mapper/safe/SafeCertificationFileMapper.xml
@@ -0,0 +1,19 @@
+<?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.ruoyi.safe.mapper.SafeCertificationFileMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.safe.pojo.SafeCertificationFile">
+        <id column="id" property="id" />
+        <result column="safe_certification_id" property="safeCertificationId" />
+        <result column="name" property="name" />
+        <result column="url" property="url" />
+        <result column="file_size" property="fileSize" />
+        <result column="create_time" property="createTime" />
+        <result column="create_user" property="createUser" />
+        <result column="update_time" property="updateTime" />
+        <result column="update_user" property="updateUser" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/safe/SafeCertificationMapper.xml b/src/main/resources/mapper/safe/SafeCertificationMapper.xml
new file mode 100644
index 0000000..880c82d
--- /dev/null
+++ b/src/main/resources/mapper/safe/SafeCertificationMapper.xml
@@ -0,0 +1,35 @@
+<?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.ruoyi.safe.mapper.SafeCertificationMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.safe.pojo.SafeCertification">
+        <id column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="code" property="code" />
+        <result column="type" property="type" />
+        <result column="version" property="version" />
+        <result column="remark" property="remark" />
+        <result column="effective_time" property="effectiveTime" />
+        <result column="create_time" property="createTime" />
+        <result column="create_user" property="createUser" />
+        <result column="update_time" property="updateTime" />
+        <result column="update_user" property="updateUser" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+    <select id="pageSafeCertification" resultType="com.ruoyi.safe.pojo.SafeCertification">
+        select sc.*
+        from safe_certification sc
+        where 1=1
+        <if test="c.name != null and c.name != ''">
+            and sc.name like concat('%', #{c.name}, '%')
+        </if>
+        <if test="c.code != null and c.code != ''">
+            and sc.code like concat('%', #{c.code}, '%')
+        </if>
+        <if test="c.type != null and c.type != ''">
+            and sc.type like concat('%', #{c.type}, '%')
+        </if>
+    </select>
+
+</mapper>
diff --git a/src/main/resources/mapper/safe/SafeHazardMapper.xml b/src/main/resources/mapper/safe/SafeHazardMapper.xml
new file mode 100644
index 0000000..328a5a5
--- /dev/null
+++ b/src/main/resources/mapper/safe/SafeHazardMapper.xml
@@ -0,0 +1,44 @@
+<?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.ruoyi.safe.mapper.SafeHazardMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.safe.pojo.SafeHazard">
+        <id column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="code" property="code" />
+        <result column="type" property="type" />
+        <result column="risk_level" property="riskLevel" />
+        <result column="location" property="location" />
+        <result column="spec_info" property="specInfo" />
+        <result column="control_measures" property="controlMeasures" />
+        <result column="principal_user_id" property="principalUserId" />
+        <result column="principal_mobile" property="principalMobile" />
+        <result column="stock_qty" property="stockQty" />
+        <result column="remark" property="remark" />
+        <result column="create_time" property="createTime" />
+        <result column="create_user" property="createUser" />
+        <result column="update_time" property="updateTime" />
+        <result column="update_user" property="updateUser" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+    <select id="pageSafeHazard" resultType="com.ruoyi.safe.pojo.SafeHazard">
+        select sh.*, su.nick_name principalUser
+        from safe_hazard sh
+        left join sys_user su on sh.principal_user_id = su.user_id
+        where 1=1
+        <if test="c.name != null and c.name != ''">
+            and sh.name like concat('%', #{c.name}, '%')
+        </if>
+        <if test="c.code != null and c.code != ''">
+            and sh.code like concat('%', #{c.code}, '%')
+        </if>
+        <if test="c.type != null and c.type != ''">
+            and sh.type like concat('%', #{c.type}, '%')
+        </if>
+        <if test="c.riskLevel != null and c.riskLevel != ''">
+            and sh.risk_level like concat('%', #{c.riskLevel}, '%')
+        </if>
+    </select>
+
+</mapper>

--
Gitblit v1.9.3