From 996c091a4913ac768324b7ea69a8494ba9d6ece0 Mon Sep 17 00:00:00 2001
From: heheng <heheng@123456>
Date: 星期三, 26 二月 2025 16:15:08 +0800
Subject: [PATCH] 相忌功能

---
 hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/HzTabooWarningVO.java                |   69 +++
 hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/SysCompanyMapper.java                   |    5 
 hazmat-system/src/main/resources/mapper/system/HzTabooWarningMapper.xml                           |   60 ++
 hazmat-common/src/main/java/com/gkhy/hazmat/common/constant/Constant.java                         |    2 
 hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzTabooWarning.java                     |   98 ++++
 hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/system/TabooComparisonController.java |   58 ++
 hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzEntryRecordServiceImpl.java     |   79 +++
 hazmat-admin/src/main/resources/db/migration/V20250212001_change_entry_record.sql                 |   62 ++
 hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/system/SysCompanyController.java      |   11 
 hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/TaBooComparison.java                    |   49 ++
 hazmat-system/src/main/java/com/gkhy/hazmat/system/service/SysCompanyService.java                 |    2 
 hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/HzEntryTransferVO.java               |   30 +
 hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/SysConfigMapper.java                    |    3 
 hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/web/HzTabooWarningController.java     |   64 ++
 hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzHazmat.java                           |    2 
 hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzHazmatMapper.java                     |   14 
 hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/TabooDisVo.java                      |    9 
 hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/TaBooComparisonServiceImpl.java   |  130 +++++
 hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/HzHazmatWarehouseVO.java             |    6 
 hazmat-system/src/main/resources/mapper/system/HzWarehouseMapper.xml                              |    8 
 hazmat-system/src/main/resources/mapper/system/HzHazmatMapper.xml                                 |   19 
 hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/SysCompanyServiceImpl.java        |   25 +
 hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzEntryRecord.java                      |    4 
 hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzWarehouseRecord.java                  |    5 
 hazmat-system/src/main/resources/mapper/system/TaBooComparisonMapper.xml                          |   27 +
 hazmat-common/src/main/java/com/gkhy/hazmat/common/enums/WarehouseRecordEnum.java                 |   35 +
 hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzTabooWarningMapper.java               |   29 +
 hazmat-system/src/main/java/com/gkhy/hazmat/system/service/TabooWarningService.java               |   34 +
 hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/TaBooComparisonMapper.java              |   25 +
 hazmat-system/src/main/resources/mapper/system/HzWarehouseRecordMapper.xml                        |    1 
 hazmat-admin/src/main/resources/db/migration/V20250226002_hz_taboo_warning.sql                    |   19 
 hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/TaBooWarningServiceImpl.java      |  198 ++++++++
 hazmat-system/src/main/java/com/gkhy/hazmat/system/service/TaBooComparisonService.java            |   50 ++
 hazmat-admin/src/main/resources/db/migration/V20250226001_taboo_comparison.sql                    |  108 ++++
 hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzHazmatServiceImpl.java          |   16 
 hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzWarehouseMapper.java                  |    2 
 36 files changed, 1,337 insertions(+), 21 deletions(-)

diff --git a/hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/system/SysCompanyController.java b/hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/system/SysCompanyController.java
index 2e5b4ab..d1cb383 100644
--- a/hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/system/SysCompanyController.java
+++ b/hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/system/SysCompanyController.java
@@ -1,6 +1,7 @@
 package com.gkhy.hazmat.admin.controller.system;
 
 
+import com.gkhy.hazmat.common.annotation.Anonymous;
 import com.gkhy.hazmat.common.annotation.Log;
 import com.gkhy.hazmat.common.annotation.RepeatSubmit;
 import com.gkhy.hazmat.common.api.CommonResult;
@@ -86,4 +87,14 @@
         return CommonResult.success(companyService.checkNameUnique(company));
     }
 
+
+    @ApiOperation(value = "生成表测试")
+    @GetMapping("/createProductTables")
+    @PreAuthorize("hasAnyAuthority('hazmat:manage:system')")
+    public CommonResult createProductTables(Long companyId)
+    {
+        companyService.createProductTables(companyId);
+        return CommonResult.success();
+    }
+
 }
diff --git a/hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/system/TabooComparisonController.java b/hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/system/TabooComparisonController.java
new file mode 100644
index 0000000..c9515e4
--- /dev/null
+++ b/hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/system/TabooComparisonController.java
@@ -0,0 +1,58 @@
+package com.gkhy.hazmat.admin.controller.system;
+
+import com.gkhy.hazmat.common.api.CommonResult;
+import com.gkhy.hazmat.system.domain.SysConfig;
+import com.gkhy.hazmat.system.domain.TaBooComparison;
+import com.gkhy.hazmat.system.service.SysConfigService;
+import com.gkhy.hazmat.system.service.TaBooComparisonService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Api(tags = "系统配置前端控制器")
+@RestController
+@RequestMapping("/system/tabooComparison")
+public class TabooComparisonController {
+    @Autowired
+    private TaBooComparisonService taBooComparisonService;
+
+    @PreAuthorize("hasAnyAuthority('hazmat:manage:system')")
+    @ApiOperation(value = "禁忌属性列表")
+    @GetMapping("/list")
+    public CommonResult list(TaBooComparison taBooComparison){
+        return CommonResult.success(taBooComparisonService.selectTaBooComparisonList(taBooComparison));
+    }
+
+    @PreAuthorize("hasAnyAuthority('hazmat:manage:system')")
+    @ApiOperation(value = "新增禁忌属性")
+    @PostMapping
+    public CommonResult add(@Validated @RequestBody TaBooComparison taBooComparison){
+        return CommonResult.success(taBooComparisonService.insertTaBooComparison(taBooComparison));
+    }
+
+    @PreAuthorize("hasAnyAuthority('hazmat:manage:system')")
+    @ApiOperation(value = "更新禁忌属性")
+    @PutMapping
+    public CommonResult edit(@Validated @RequestBody TaBooComparison taBooComparison){
+        return CommonResult.success(taBooComparisonService.insertTaBooComparison(taBooComparison));
+    }
+
+    @PreAuthorize("hasAnyAuthority('hazmat:manage:system')")
+    @ApiOperation(value = "删除禁忌属性")
+    @DeleteMapping(value = "/{taBooComparisonId}")
+    public CommonResult remove(@PathVariable Long taBooComparisonId){
+        taBooComparisonService.deleteTaBooComparisonById(taBooComparisonId);
+        return CommonResult.success();
+    }
+
+    @PreAuthorize("hasAnyAuthority('hazmat:manage:company','hazmat:manage:common')")
+    @ApiOperation(value = "查询当前用户公司配置")
+    @GetMapping(value = "/loadingTaBooCache")
+    public CommonResult loadingTaBooCache(){
+        taBooComparisonService.loadingTaBooCache();
+        return CommonResult.success();
+    }
+}
diff --git a/hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/web/HzTabooWarningController.java b/hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/web/HzTabooWarningController.java
new file mode 100644
index 0000000..bcbea88
--- /dev/null
+++ b/hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/web/HzTabooWarningController.java
@@ -0,0 +1,64 @@
+package com.gkhy.hazmat.admin.controller.web;
+
+
+import com.gkhy.hazmat.common.annotation.RepeatSubmit;
+import com.gkhy.hazmat.common.api.CommonResult;
+import com.gkhy.hazmat.common.utils.PageUtils;
+import com.gkhy.hazmat.system.domain.HzEntryRecord;
+import com.gkhy.hazmat.system.domain.HzTabooWarning;
+import com.gkhy.hazmat.system.domain.HzWarning;
+import com.gkhy.hazmat.system.domain.vo.HzEntryTransferVO;
+import com.gkhy.hazmat.system.service.HzWarningService;
+import com.gkhy.hazmat.system.service.TabooWarningService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 预警表 前端控制器
+ * </p>
+ *
+ * @author hh
+ * @since 2025-02-13 14:41:40
+ */
+@Api(tags = "相忌预警前端控制器")
+@RestController
+@RequestMapping("/taBooWarning")
+public class HzTabooWarningController {
+
+    @Autowired
+    private TabooWarningService tabooWarningService;
+
+    @ApiOperation(value = "相忌预警列表(分页)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"),
+            @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10")
+    })
+    @GetMapping("/pageList")
+    public CommonResult pageList(HzTabooWarning warning){
+
+        return CommonResult.success(tabooWarningService.selectHzTabooWarningPageList(warning));
+    }
+
+
+    @ApiOperation(value = "相忌预警列表(不分页)")
+    @GetMapping("/list")
+    public CommonResult list(HzTabooWarning warning){
+        return CommonResult.success(tabooWarningService.selectHzTabooWarningList(warning));
+    }
+    @RepeatSubmit
+    @ApiOperation(value = "相忌危化品转存储柜")
+    @PreAuthorize("hasAnyAuthority('hazmat:manage:company','hazmat:manage:common')")
+    @PostMapping("/entryTransfer")
+    public CommonResult entryTransfer(@Validated @RequestBody HzEntryTransferVO entryTransferVO){
+        tabooWarningService.doTransfer(entryTransferVO);
+        return CommonResult.success();
+    }
+
+}
diff --git a/hazmat-admin/src/main/resources/db/migration/V20250212001_change_entry_record.sql b/hazmat-admin/src/main/resources/db/migration/V20250212001_change_entry_record.sql
new file mode 100644
index 0000000..1bbc50c
--- /dev/null
+++ b/hazmat-admin/src/main/resources/db/migration/V20250212001_change_entry_record.sql
@@ -0,0 +1,62 @@
+ALTER TABLE `hazmat_manage`.`hz_entry_record`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_0`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_1`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_2`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_3`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_4`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_5`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_6`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_7`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_8`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_9`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_10`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_11`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_12`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_13`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_14`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_15`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_16`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_17`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_18`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
+
+ALTER TABLE `hazmat_manage`.`hz_hazmat_19`
+ADD COLUMN `cupboard_id` bigint NOT NULL COMMENT '存储柜id' AFTER `warehouse_id`;
diff --git a/hazmat-admin/src/main/resources/db/migration/V20250226001_taboo_comparison.sql b/hazmat-admin/src/main/resources/db/migration/V20250226001_taboo_comparison.sql
new file mode 100644
index 0000000..9e73c09
--- /dev/null
+++ b/hazmat-admin/src/main/resources/db/migration/V20250226001_taboo_comparison.sql
@@ -0,0 +1,108 @@
+
+CREATE TABLE `taboo_comparison`  (
+                                     `id` int NOT NULL AUTO_INCREMENT,
+                                     `warning_type` tinyint NOT NULL DEFAULT 1 COMMENT '1:禁忌2:消3:分',
+                                     `unique_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '唯一编码',
+                                     `left_code` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '左侧编码',
+                                     `top_code` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '顶部编码',
+                                     `create_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+                                     `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+                                     `update_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+                                     `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+                                     `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
+                                     PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 93 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '禁忌数据对照表' ROW_FORMAT = Dynamic;
+
+
+INSERT INTO `taboo_comparison` VALUES (1, 3, '17_5', '17', '5', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (2, 2, '6_5', '6', '5', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (3, 2, '15_5', '15', '5', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (4, 2, '15_6', '15', '6', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (5, 2, '17_6', '17', '6', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (6, 1, '1_1', '1', '1', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (7, 1, '5_1', '5', '1', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (8, 1, '6_1', '6', '1', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (9, 1, '7_1', '7', '1', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (10, 1, '7_5', '7', '5', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (11, 1, '7_6', '7', '6', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (12, 1, '8_1', '8', '1', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (13, 1, '8_5', '8', '5', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (14, 1, '8_6', '8', '6', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (15, 1, '8_7', '8', '7', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (16, 1, '9_1', '9', '1', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (17, 1, '9_5', '9', '5', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (18, 1, '9_6', '9', '6', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (19, 1, '9_7', '9', '7', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (20, 1, '9_8', '9', '8', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (21, 1, '10_1', '10', '1', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (22, 1, '10_5', '10', '5', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (23, 1, '10_6', '10', '6', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (24, 1, '10_7', '10', '7', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (25, 1, '10_8', '10', '8', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (26, 1, '10_9', '10', '9', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (27, 1, '11_1', '11', '1', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (28, 1, '11_5', '11', '5', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (29, 1, '11_6', '11', '6', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (30, 1, '11_7', '11', '7', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (31, 1, '11_8', '11', '8', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (32, 1, '11_9', '11', '9', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (33, 1, '11_10', '11', '10', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (34, 1, '12_1', '12', '1', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (35, 1, '12_5', '12', '5', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (36, 1, '12_6', '12', '6', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (37, 1, '12_7', '12', '7', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (38, 1, '12_8', '12', '8', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (39, 1, '12_9', '12', '9', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (40, 1, '12_10', '12', '10', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (41, 1, '12_11', '12', '11', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (42, 1, '13_1', '13', '1', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (43, 1, '13_5', '13', '5', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (44, 1, '13_6', '13', '6', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (45, 1, '13_7', '13', '7', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (46, 1, '13_8', '13', '8', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (47, 1, '13_9', '13', '9', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (48, 1, '13_10', '13', '10', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (49, 1, '13_11', '13', '11', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (50, 1, '13_12', '13', '12', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (51, 1, '14_1', '14', '1', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (52, 1, '14_5', '14', '5', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (53, 1, '14_6', '14', '6', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (54, 1, '14_7', '14', '7', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (55, 1, '14_8', '14', '8', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (56, 1, '14_9', '14', '9', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (57, 1, '14_10', '14', '10', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (58, 1, '14_11', '14', '11', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (59, 1, '14_12', '14', '12', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (60, 1, '14_13', '14', '13', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (61, 1, '15_1', '15', '1', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (62, 1, '15_7', '15', '7', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (63, 1, '15_8', '15', '8', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (64, 1, '15_9', '15', '9', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (65, 1, '15_10', '15', '10', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (66, 1, '15_11', '15', '11', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (67, 1, '15_12', '15', '12', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (68, 1, '15_13', '15', '13', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (69, 1, '15_14', '15', '14', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (70, 1, '16_1', '16', '1', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (71, 1, '16_5', '16', '5', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (72, 1, '16_6', '16', '6', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (73, 1, '16_7', '16', '7', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (74, 1, '16_8', '16', '8', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (75, 1, '16_9', '16', '9', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (76, 1, '16_10', '16', '10', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (77, 1, '16_11', '16', '11', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (78, 1, '16_12', '16', '12', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (79, 1, '16_13', '16', '13', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (80, 1, '16_14', '16', '14', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (81, 1, '16_15', '16', '15', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (82, 1, '17_1', '17', '1', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (83, 1, '17_7', '17', '7', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:21', NULL);
+INSERT INTO `taboo_comparison` VALUES (84, 1, '17_8', '17', '8', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:46', NULL);
+INSERT INTO `taboo_comparison` VALUES (85, 1, '17_9', '17', '9', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:52', NULL);
+INSERT INTO `taboo_comparison` VALUES (86, 1, '17_10', '17', '10', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:52', NULL);
+INSERT INTO `taboo_comparison` VALUES (87, 1, '17_11', '17', '11', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:52', NULL);
+INSERT INTO `taboo_comparison` VALUES (88, 1, '17_12', '17', '12', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:52', NULL);
+INSERT INTO `taboo_comparison` VALUES (89, 1, '17_13', '17', '13', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:52', NULL);
+INSERT INTO `taboo_comparison` VALUES (90, 1, '17_14', '17', '14', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:52', NULL);
+INSERT INTO `taboo_comparison` VALUES (91, 1, '17_15', '17', '15', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:52', NULL);
+INSERT INTO `taboo_comparison` VALUES (92, 1, '17_16', '17', '16', NULL, '2025-02-11 16:34:21', NULL, '2025-02-11 16:34:56', NULL);
\ No newline at end of file
diff --git a/hazmat-admin/src/main/resources/db/migration/V20250226002_hz_taboo_warning.sql b/hazmat-admin/src/main/resources/db/migration/V20250226002_hz_taboo_warning.sql
new file mode 100644
index 0000000..83214a8
--- /dev/null
+++ b/hazmat-admin/src/main/resources/db/migration/V20250226002_hz_taboo_warning.sql
@@ -0,0 +1,19 @@
+
+CREATE TABLE `hz_taboo_warning`  (
+                                     `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
+                                     `entry_id` bigint NOT NULL COMMENT '入库记录id',
+                                     `warehouse_id` bigint NOT NULL COMMENT '仓库id',
+                                     `cupboard_id` bigint NOT NULL COMMENT '存储柜id',
+                                     `warning_type` tinyint NOT NULL DEFAULT 1 COMMENT '1:禁忌2:消3:分',
+                                     `state` tinyint NOT NULL DEFAULT 0 COMMENT '状态(0未处理,1已处理)',
+                                     `taboo_basic_id` bigint NOT NULL COMMENT '相忌危化品基础id',
+                                     `company_id` bigint NOT NULL COMMENT '企业id',
+                                     `create_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+                                     `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+                                     `update_by` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+                                     `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+                                     `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0代表存在,1代表删除,默认0)',
+                                     `remark` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
+                                     `version` int NOT NULL DEFAULT 0,
+                                     PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '相忌警告表' ROW_FORMAT = DYNAMIC;
diff --git a/hazmat-common/src/main/java/com/gkhy/hazmat/common/constant/Constant.java b/hazmat-common/src/main/java/com/gkhy/hazmat/common/constant/Constant.java
index 6ec4372..9e58de9 100644
--- a/hazmat-common/src/main/java/com/gkhy/hazmat/common/constant/Constant.java
+++ b/hazmat-common/src/main/java/com/gkhy/hazmat/common/constant/Constant.java
@@ -142,4 +142,6 @@
      */
     public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
             "org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config" };
+
+    public static final String TABOO_UNIQUE_KEY = "TABOO_UNIQUE_KEY";
 }
diff --git a/hazmat-common/src/main/java/com/gkhy/hazmat/common/enums/WarehouseRecordEnum.java b/hazmat-common/src/main/java/com/gkhy/hazmat/common/enums/WarehouseRecordEnum.java
new file mode 100644
index 0000000..ce645df
--- /dev/null
+++ b/hazmat-common/src/main/java/com/gkhy/hazmat/common/enums/WarehouseRecordEnum.java
@@ -0,0 +1,35 @@
+package com.gkhy.hazmat.common.enums;
+
+/**
+ * 危化品状态
+ *
+ */
+public enum WarehouseRecordEnum
+{
+    BATCHIMPORT(0, "批量导入"),
+    INUSE(1, "取用"),
+    BACK(2, "归还"),
+    DISCARD(3, "标签作废"),
+    SOLD(4,"销售"),
+    TRANSFERIN(5,"相忌转入"),
+    TRANSFEROUT(6,"相忌转出");
+
+    private final Integer code;
+    private final String info;
+
+    WarehouseRecordEnum(Integer code, String info)
+    {
+        this.code = code;
+        this.info = info;
+    }
+
+    public Integer getCode()
+    {
+        return code;
+    }
+
+    public String getInfo()
+    {
+        return info;
+    }
+}
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzEntryRecord.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzEntryRecord.java
index 1aea15a..28c8fc0 100644
--- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzEntryRecord.java
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzEntryRecord.java
@@ -40,8 +40,8 @@
     @TableField("warehouse_id")
     private Long warehouseId;
 
-    @NotNull(message = "存储柜id不能为空")
-    @ApiModelProperty(value = "存储柜id",required = true)
+    @NotNull(message = "存储柜Id不能为空")
+    @ApiModelProperty(value = "存储柜Id",required = true)
     @TableField("cupboard_id")
     private Long cupboardId;
 
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzHazmat.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzHazmat.java
index e3df63e..b02e0ff 100644
--- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzHazmat.java
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzHazmat.java
@@ -46,7 +46,7 @@
     @TableField("warehouse_id")
     private Long warehouseId;
 
-    @ApiModelProperty("存储柜id")
+    @ApiModelProperty(value = "存储柜Id",required = true)
     @TableField("cupboard_id")
     private Long cupboardId;
 
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzTabooWarning.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzTabooWarning.java
new file mode 100644
index 0000000..0f54bbe
--- /dev/null
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzTabooWarning.java
@@ -0,0 +1,98 @@
+package com.gkhy.hazmat.system.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.gkhy.hazmat.common.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+import java.time.LocalDateTime;
+
+import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
+
+/**
+ * <p>
+ * 入库记录表
+ * </p>
+ *
+ * @author kzy
+ * @since 2024-08-06 10:33:05
+ */
+@Getter
+@Setter
+@TableName("hz_taboo_warning")
+@ApiModel(value = "HzTabooWarning对象", description = "危化品相忌报警表")
+@JsonInclude(NON_NULL)
+@Accessors(chain = true)
+public class HzTabooWarning  {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "入库id",required = true)
+    @TableField("entry_id")
+    private Long entryId;
+
+    @ApiModelProperty("类型1:禁忌2:消3:分")
+    @TableField("warning_type")
+    private Long warningType;
+
+    @ApiModelProperty("相忌危化品基础数据id")
+    @TableField("taboo_basic_id")
+    private Long tabooBasicId;
+
+    @ApiModelProperty(value = "仓库id",required = true)
+    private Long warehouseId;
+
+    @ApiModelProperty(value = "存储柜Id",required = true)
+    private Long cupboardId;
+
+//    @ApiModelProperty("相忌危化品表数据id")
+//    @TableField("taboo_hazmat_id")
+//    private Long tabooHazmatId;
+
+    @ApiModelProperty("状态(0未处理,1已处理)")
+    @TableField("state")
+    private Integer state;
+
+    @ApiModelProperty("企业id")
+    @TableField("company_id")
+    private Long companyId;
+
+    @Version
+    @TableField("version")
+    private Integer version;
+
+    @ApiModelProperty("创建者")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("更新者")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("备注")
+    @TableField("remark")
+    private String remark;
+}
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzWarehouseRecord.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzWarehouseRecord.java
index 95c1e38..19633ab 100644
--- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzWarehouseRecord.java
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/HzWarehouseRecord.java
@@ -42,7 +42,7 @@
     @TableField("warehouse_id")
     private Long warehouseId;
 
-    @ApiModelProperty("存储柜id")
+    @ApiModelProperty(value = "存储柜Id")
     @TableField("cupboard_id")
     private Long cupboardId;
 
@@ -54,7 +54,7 @@
     @TableField("num")
     private Integer num;
 
-    @ApiModelProperty("操作类型(0批量导入,1取用,2归还,3标签作废)")
+    @ApiModelProperty("操作类型(0批量导入,1取用,2归还,3标签作废,5相忌转入,6相忌转出)")
     @TableField("state")
     private Integer state;
 
@@ -98,7 +98,6 @@
     @ApiModelProperty("仓库对象")
     @TableField(exist = false)
     private HzWarehouse warehouse;
-
     @ApiModelProperty("存储柜对象")
     @TableField(exist = false)
     private HzWarehouseCupboard cupboard;
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/TaBooComparison.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/TaBooComparison.java
new file mode 100644
index 0000000..635ec67
--- /dev/null
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/TaBooComparison.java
@@ -0,0 +1,49 @@
+package com.gkhy.hazmat.system.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.gkhy.hazmat.common.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+
+import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
+
+@Getter
+@Setter
+@TableName("taboo_comparison")
+@ApiModel(value = "TaBooComparison对象", description = "禁忌属性参照表")
+@JsonInclude(NON_NULL)
+public class TaBooComparison extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+    @NotNull(message = "类型不能为空")
+    @ApiModelProperty("类型1:禁忌2:消3:分")
+    @TableField("warning_type")
+    private Long warningType;
+
+//    @NotEmpty(message = "唯一编码不能为空")
+    @ApiModelProperty("唯一编码下划线拼接(左编码_上编码)")
+    @TableField("unique_code")
+    private String uniqueCode;
+
+    @NotEmpty(message = "左编码")
+    @ApiModelProperty("左编码")
+    @TableField("left_code")
+    private String leftCode;
+
+    @NotEmpty(message = "上编码")
+    @ApiModelProperty("上编码")
+    @TableField("top_code")
+    private String topCode;
+
+}
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/HzEntryTransferVO.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/HzEntryTransferVO.java
new file mode 100644
index 0000000..c2c65b0
--- /dev/null
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/HzEntryTransferVO.java
@@ -0,0 +1,30 @@
+package com.gkhy.hazmat.system.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
+
+@Getter
+@Setter
+@JsonInclude(NON_NULL)
+@ApiModel(value = "HzEntryTransferVO对象", description = "相忌危化品转储存柜")
+public class HzEntryTransferVO {
+
+    @ApiModelProperty(value = "数据id")
+    @NotNull
+    private Long id;
+
+    @ApiModelProperty(value = "仓库id")
+    @NotNull
+    private Long warehouseId;
+
+    @ApiModelProperty(value = "存储柜Id")
+    @NotNull
+    private Long cupboardId;
+}
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/HzHazmatWarehouseVO.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/HzHazmatWarehouseVO.java
index d131870..1c17740 100644
--- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/HzHazmatWarehouseVO.java
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/HzHazmatWarehouseVO.java
@@ -29,6 +29,9 @@
     @ApiModelProperty("仓库id")
     private Long warehouseId;
 
+    @ApiModelProperty("存储柜id")
+    private Integer cupboardId;
+
     @ApiModelProperty("库存数量")
     private Integer stock;
 
@@ -40,4 +43,7 @@
 
     @ApiModelProperty("仓库名称")
     private String warehouseName;
+
+    @ApiModelProperty("存储柜名称")
+    private String cupboardName;
 }
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/HzTabooWarningVO.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/HzTabooWarningVO.java
new file mode 100644
index 0000000..e4e6486
--- /dev/null
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/HzTabooWarningVO.java
@@ -0,0 +1,69 @@
+package com.gkhy.hazmat.system.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.time.LocalDateTime;
+
+import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
+
+@Getter
+@Setter
+@JsonInclude(NON_NULL)
+public class HzTabooWarningVO {
+
+    private Long id;
+
+    @ApiModelProperty(value = "入库id")
+    private Long entryId;
+
+    @ApiModelProperty("类型1:禁忌2:消3:分")
+    private Long warningType;
+
+    @ApiModelProperty("相忌危化品基础数据id")
+    private Long tabooBasicId;
+
+    @ApiModelProperty("相忌危化品基础数据名称")
+    private String tabooBasicName;
+
+    @ApiModelProperty("状态(0未处理,1已处理)")
+    private Integer state;
+
+    @ApiModelProperty(value = "仓库id")
+    private Long warehouseId;
+
+    @ApiModelProperty(value = "仓库名称")
+    private String warehouseName;
+
+    @ApiModelProperty(value = "存储柜Id")
+    private Long cupboardId;
+
+    @ApiModelProperty(value = "存储柜")
+    private String cupboardName;
+
+    @ApiModelProperty("危化品基础数据id")
+    private Long basicId;
+
+    @ApiModelProperty("危化品基础数据名称")
+    private String basicName;
+
+    @ApiModelProperty("创建者")
+    private String createBy;
+
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("更新者")
+    private String updateBy;
+
+    @ApiModelProperty("更新时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("备注")
+    private String remark;
+}
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/TabooDisVo.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/TabooDisVo.java
new file mode 100644
index 0000000..d6e4745
--- /dev/null
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/vo/TabooDisVo.java
@@ -0,0 +1,9 @@
+package com.gkhy.hazmat.system.domain.vo;
+
+import lombok.Data;
+
+@Data
+public class TabooDisVo {
+    private String spNum;
+    private Long id;
+}
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzHazmatMapper.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzHazmatMapper.java
index edcd9f8..26d1f42 100644
--- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzHazmatMapper.java
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzHazmatMapper.java
@@ -5,10 +5,12 @@
 import com.gkhy.hazmat.system.domain.vo.HzEntryRecordVO;
 import com.gkhy.hazmat.system.domain.vo.HzHazmatUseVO;
 import com.gkhy.hazmat.system.domain.vo.HzHazmatWarehouseVO;
+import com.gkhy.hazmat.system.domain.vo.TabooDisVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -42,7 +44,17 @@
      * @param companyId
      * @return
      */
-    Integer selectHazmatCountOfWarehouse(@Param("warehouseId") Long warehouseId, @Param("basicId")Long basicId, @Param("companyId")Long companyId);
+    Integer selectHazmatCountOfWarehouse(@Param("warehouseId") Long warehouseId, @Param("basicId")Long basicId, @Param("companyId")Long companyId,
+                                         @Param("cupboardId") Long cupboardId);
+    /**
+     * 获取指定仓库库存
+     * @param warehouseId
+     * @param basicId
+     * @param companyId
+     * @return
+     */
+    List<TabooDisVo> selectHazmatWarehouseCheck(@Param("warehouseId") Long warehouseId,  @Param("companyId")Long companyId,
+                                                @Param("cupboardId") Long cupboardId);
 
     /**
      * 根据条码code查询危化品信息
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzTabooWarningMapper.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzTabooWarningMapper.java
new file mode 100644
index 0000000..c5a35f7
--- /dev/null
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzTabooWarningMapper.java
@@ -0,0 +1,29 @@
+package com.gkhy.hazmat.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.hazmat.system.domain.HzEntryRecord;
+import com.gkhy.hazmat.system.domain.HzTabooWarning;
+import com.gkhy.hazmat.system.domain.vo.HzEntryRecordVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 入库记录表 Mapper 接口
+ * </p>
+ *
+ * @author kzy
+ * @since 2024-08-06 10:33:05
+ */
+@Mapper
+public interface HzTabooWarningMapper extends BaseMapper<HzTabooWarning> {
+    /**
+     * 分页获取入库记录
+     * @param hzTabooWarning
+     * @return
+     */
+    List<HzTabooWarning> selectHzTabooWarningList(HzTabooWarning hzTabooWarning);
+
+}
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzWarehouseMapper.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzWarehouseMapper.java
index 0576307..ddfac15 100644
--- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzWarehouseMapper.java
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzWarehouseMapper.java
@@ -56,4 +56,6 @@
     int deleteByCupboardId(Long cupboardId);
 
     List<HzWarehouseCupboard> selectByWarehouseId(Long id);
+
+    List<HzWarehouseCupboard> selectByCupboardIds(List<Integer> ids);
 }
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/SysCompanyMapper.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/SysCompanyMapper.java
index af18e12..6909201 100644
--- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/SysCompanyMapper.java
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/SysCompanyMapper.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.gkhy.hazmat.system.domain.SysCompany;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Update;
 
 import java.util.List;
 
@@ -53,4 +54,8 @@
      * @return
      */
     SysCompany checkCodeUnique(String code);
+
+
+    @Update("${sql}")
+    void execute(String sql);
 }
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/SysConfigMapper.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/SysConfigMapper.java
index b82f791..e6bccba 100644
--- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/SysConfigMapper.java
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/SysConfigMapper.java
@@ -2,6 +2,7 @@
 
 import com.gkhy.hazmat.system.domain.SysConfig;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.hazmat.system.domain.TaBooComparison;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -37,4 +38,6 @@
      * @return
      */
     SysConfig getConfigByCompanyId(Long companyId);
+
+    List<TaBooComparison> selectTaBooComparison();
 }
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/TaBooComparisonMapper.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/TaBooComparisonMapper.java
new file mode 100644
index 0000000..b3be5f0
--- /dev/null
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/TaBooComparisonMapper.java
@@ -0,0 +1,25 @@
+package com.gkhy.hazmat.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.hazmat.system.domain.SysConfig;
+import com.gkhy.hazmat.system.domain.TaBooComparison;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 系统配置表 Mapper 接口
+ * </p>
+ *
+ * @author kzy
+ * @since 2023-11-13 08:39:55
+ */
+@Mapper
+public interface TaBooComparisonMapper extends BaseMapper<TaBooComparison> {
+
+
+    List<TaBooComparison> selectTaBooComparison();
+
+    List<TaBooComparison> selectTaBooComparisonList(TaBooComparison taBooComparison);
+}
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/SysCompanyService.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/SysCompanyService.java
index dbd9cdd..6ef9912 100644
--- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/SysCompanyService.java
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/SysCompanyService.java
@@ -65,4 +65,6 @@
      */
     public boolean checkNameUnique(SysCompany company);
 
+
+    public void createProductTables(Long companyId);
 }
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/TaBooComparisonService.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/TaBooComparisonService.java
new file mode 100644
index 0000000..ef5aa4f
--- /dev/null
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/TaBooComparisonService.java
@@ -0,0 +1,50 @@
+
+package com.gkhy.hazmat.system.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.hazmat.common.api.CommonPage;
+import com.gkhy.hazmat.system.domain.SysConfig;
+import com.gkhy.hazmat.system.domain.TaBooComparison;
+
+/**
+ * <p>
+ * 系统配置表 服务类
+ * </p>
+ *
+ * @author kzy
+ * @since 2023-11-13 08:39:55
+ */
+public interface TaBooComparisonService extends IService<TaBooComparison> {
+    /**
+     * 获取参数配置列表
+     * @param taBooComparison
+     * @return
+     */
+    public CommonPage selectTaBooComparisonList(TaBooComparison taBooComparison);
+
+    /**
+     * 新增参数配置
+     * @param taBooComparison
+     * @return
+     */
+    public int insertTaBooComparison(TaBooComparison taBooComparison);
+
+    /**
+     * 更新参数配置
+     * @param taBooComparison
+     * @return
+     */
+    public int updateTaBooComparison(TaBooComparison taBooComparison);
+
+    /**
+     * 删除参数配置信息
+     * @param taBooComparisonId
+     * @return
+     */
+    public void deleteTaBooComparisonById(Long taBooComparisonId);
+
+    public void loadingTaBooCache();
+
+
+}
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/TabooWarningService.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/TabooWarningService.java
new file mode 100644
index 0000000..951ed40
--- /dev/null
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/TabooWarningService.java
@@ -0,0 +1,34 @@
+
+package com.gkhy.hazmat.system.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.hazmat.common.api.CommonPage;
+import com.gkhy.hazmat.system.domain.HzTabooWarning;
+import com.gkhy.hazmat.system.domain.vo.HzEntryTransferVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 系统配置表 服务类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-02-13 08:39:55
+ */
+public interface TabooWarningService extends IService<HzTabooWarning> {
+    /**
+     * 获取相忌警告列表
+     * @param tabooWarning
+     * @return
+     */
+    public CommonPage selectHzTabooWarningPageList(HzTabooWarning tabooWarning);
+
+    List<HzTabooWarning> selectHzTabooWarningList(HzTabooWarning tabooWarning);
+
+    public void doTransfer(HzEntryTransferVO entryTransferVO);
+
+
+
+}
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzEntryRecordServiceImpl.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzEntryRecordServiceImpl.java
index e3218dc..2fb7c5c 100644
--- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzEntryRecordServiceImpl.java
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzEntryRecordServiceImpl.java
@@ -2,9 +2,11 @@
 
 import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gkhy.hazmat.common.api.CommonPage;
 import com.gkhy.hazmat.common.config.IdTableNameHandler;
+import com.gkhy.hazmat.common.constant.Constant;
 import com.gkhy.hazmat.common.domain.entity.SysUser;
 import com.gkhy.hazmat.common.enums.CodePrexEnum;
 import com.gkhy.hazmat.common.enums.EntryStateEnum;
@@ -12,23 +14,24 @@
 import com.gkhy.hazmat.common.enums.UserTypeEnum;
 import com.gkhy.hazmat.common.exception.ApiException;
 import com.gkhy.hazmat.common.listener.CustomEventPublisher;
+import com.gkhy.hazmat.common.service.RedisService;
 import com.gkhy.hazmat.common.utils.PageUtils;
 import com.gkhy.hazmat.common.utils.SecurityUtils;
 import com.gkhy.hazmat.common.utils.StringUtils;
 import com.gkhy.hazmat.system.domain.*;
+import com.gkhy.hazmat.system.domain.vo.TabooDisVo;
 import com.gkhy.hazmat.system.mapper.*;
 import com.gkhy.hazmat.system.service.HzEntryRecordService;
 import com.gkhy.hazmat.system.service.HzHazmatService;
+import com.gkhy.hazmat.system.service.TabooWarningService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.support.TransactionSynchronization;
 import org.springframework.transaction.support.TransactionSynchronizationManager;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.time.LocalDateTime;
+import java.util.*;
 
 /**
  * <p>
@@ -52,6 +55,13 @@
     private CustomEventPublisher customEventPublisher;
     @Autowired
     private SysCompanyMapper companyMapper;
+    @Autowired
+    private RedisService redisService;
+//    @Autowired
+//    private TabooWarningService tabooWarningService;
+
+    @Autowired
+    private HzTabooWarningMapper tabooWarningMapper;
 
     @Override
     public CommonPage selectEntryRecordList(HzEntryRecord entryRecord) {
@@ -154,11 +164,12 @@
             throw new ApiException("危化品基础数据不存在");
         }
 
+
       //  synchronized (this) {
             //获取当前仓库库存
             //设置分表id
             IdTableNameHandler.setCurrentId(currentUser.getCompanyId());
-            int count = hazmatMapper.selectHazmatCountOfWarehouse(entryRecord.getWarehouseId(), hazmatBasic.getId(), currentUser.getCompanyId());
+            int count = hazmatMapper.selectHazmatCountOfWarehouse(entryRecord.getWarehouseId(), hazmatBasic.getId(), currentUser.getCompanyId(), entryRecord.getCupboardId());
             //新增危化品变动记录
             HzWarehouseRecord warehouseRecord = new HzWarehouseRecord()
                     .setWarehouseId(entryRecord.getWarehouseId())
@@ -169,7 +180,61 @@
                     .setCreateId(currentUser.getId())
                     .setRemaining(entryRecord.getNum() + count);
             warehouseRecordMapper.insert(warehouseRecord);
-            int startCode=entryRecord.getStartCode();
+            // 校验生成相忌数据
+        Map<String, Long>  redata = (Map<String, Long>)redisService.get(Constant.TABOO_UNIQUE_KEY);
+        if (!redata.isEmpty()){
+            // 查询对应仓库和柜子的物品信息获取品类 获取相冲相弱相吸相异
+            List<TabooDisVo> collectData =
+                    hazmatMapper.selectHazmatWarehouseCheck(entryRecord.getWarehouseId(), currentUser.getCompanyId(), entryRecord.getCupboardId());
+            if (!collectData.isEmpty() && collectData.size() > 0) {
+                for (TabooDisVo collectDatum : collectData) {
+                    String key1 = collectDatum.getSpNum() + "_" + hazmatBasic.getPeculiarityNumber();
+                    String key2 = hazmatBasic.getPeculiarityNumber() + "_" + collectDatum.getSpNum();
+
+                    if (redata.containsKey(key1) || redata.containsKey(key2)) {
+                        // 记录数据
+                        Long l = redata.get(key1);
+                        Long l1 = l == null ? redata.get(key2) : l;
+                        HzTabooWarning tabooWarning = new HzTabooWarning()
+                                .setWarningType(l1)
+                                .setWarehouseId(entryRecord.getWarehouseId())
+                                .setCupboardId(entryRecord.getCupboardId())
+                                .setEntryId(entryRecord.getId())
+                                .setCompanyId(currentUser.getCompanyId())
+                                .setTabooBasicId(collectDatum.getId()).setCreateBy(currentUser.getUsername());
+                        tabooWarningMapper.insert(tabooWarning);
+                        break;
+                    }
+                }
+            }
+//            if (null != collectData) {
+//                Iterator<Map.Entry<String, Integer>> iterator = collectData.entrySet().iterator();
+//                while (iterator.hasNext()) {
+//                    Map.Entry<String, Integer> entry = iterator.next();
+//                    String key = entry.getKey();
+//                    Integer value = entry.getValue();
+//                    Integer i = collectData.get(value);
+//                    String key1 = value + "_" + hazmatBasic.getPeculiarityNumber();
+//                    String key2 = hazmatBasic.getPeculiarityNumber() + "_" + value;
+//
+//                    if (redata.containsKey(key1) || redata.containsKey(key2)) {
+//                        // 记录数据
+//                        Long l = redata.get(key1);
+//                        Long l1 = l == null ? redata.get(key2) : l;
+//                        HzTabooWarning tabooWarning = new HzTabooWarning()
+//                                .setWarningType(l1)
+//                                .setEntryId(entryRecord.getId())
+//                                .setCompanyId(currentUser.getCompanyId())
+//                                .setTabooBasicId(i.longValue()).setCreateBy(currentUser.getUsername());
+//                        tabooWarningMapper.insert(tabooWarning);
+//                        break;
+//                    }
+//                }
+//            }
+        }else {
+            throw new ApiException("危化品相忌信息不存在");
+        }
+        int startCode=entryRecord.getStartCode();
             int endCode=entryRecord.getEndCode();
             List<HzHazmat> hazmatList = new ArrayList<>();
             for (int i = startCode; i <=endCode; i++) {
@@ -178,6 +243,7 @@
                 hazmatList.add(new HzHazmat().setWarehouseId(entryRecord.getWarehouseId())
                                 .setCupboardId(entryRecord.getCupboardId())
                         .setBasicId(entryRecord.getBasicId())
+                        .setCupboardId(entryRecord.getCupboardId())
                         .setEntryId(entryRecord.getId())
                         .setRemaining(hazmatBasic.getMetering())
                         .setCompanyId(currentUser.getCompanyId())
@@ -213,6 +279,7 @@
         });
     }
 
+
     @Override
     public int updateEntryRecord(HzEntryRecord entryRecord) {
         SysUser currentUser = SecurityUtils.getLoginUser().getUser();
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzHazmatServiceImpl.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzHazmatServiceImpl.java
index ef38d6e..ebb6530 100644
--- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzHazmatServiceImpl.java
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzHazmatServiceImpl.java
@@ -46,6 +46,7 @@
     @Autowired
     private HzWarehouseMapper warehouseMapper;
 
+
     @Override
     public CommonPage selectHazmatList(HzHazmat hzHazmat) {
         if(hzHazmat.getWarehouseId()==null||hzHazmat.getBasicId()==null){
@@ -74,19 +75,28 @@
         if(!hazmatList.isEmpty()) {
             List<Long> warehouseIds = hazmatList.stream().map(HzHazmatWarehouseVO::getWarehouseId).collect(Collectors.toList());
             List<Long> basicIds = hazmatList.stream().map(HzHazmatWarehouseVO::getBasicId).collect(Collectors.toList());
+            List<Integer> cupboardIds = hazmatList.stream().map(HzHazmatWarehouseVO::getCupboardId).collect(Collectors.toList());
             List<HzHazmatBasic> hazmatBasicList = hazmatBasicMapper.selectHazmatBasicListByIds(basicIds);
             List<HzWarehouse> warehouseList = warehouseMapper.selectWarehouseListByIds(warehouseIds);
+            List<HzWarehouseCupboard> hzWarehouseCupboards = warehouseMapper.selectByCupboardIds(cupboardIds);
+
             Map<Long,HzHazmatBasic> hazmatBasicMap=hazmatBasicList.stream().collect(Collectors.toMap(HzHazmatBasic::getId, item->item));
             Map<Long,HzWarehouse> warehouseMap=warehouseList.stream().collect(Collectors.toMap(HzWarehouse::getId, item->item));
+            Map<Integer, HzWarehouseCupboard> cupboardMap = hzWarehouseCupboards.stream().collect(Collectors.toMap(HzWarehouseCupboard::getId, item -> item));
             for(HzHazmatWarehouseVO hazmatWarehouseVO:hazmatList){
                 HzHazmatBasic hazmatBasic=hazmatBasicMap.get(hazmatWarehouseVO.getBasicId());
                 HzWarehouse warehouse=warehouseMap.get(hazmatWarehouseVO.getWarehouseId());
+                HzWarehouseCupboard hzWarehouseCupboard = cupboardMap.get(hazmatWarehouseVO.getCupboardId());
                 if(hazmatBasic!=null){
                     hazmatWarehouseVO.setHazmatBasic(hazmatBasic);
                 }
                 if(warehouse!=null){
                     hazmatWarehouseVO.setWarehouseName(warehouse.getName());
                 }
+                if (hzWarehouseCupboard != null){
+                    hazmatWarehouseVO.setCupboardName(hzWarehouseCupboard.getCupboardName());
+                }
+
             }
         }
         IdTableNameHandler.removeCurrentId();
@@ -153,7 +163,7 @@
         }
         checkUserAllowed(hazmat,currentUser);
         //获取变动前仓库库存
-        int count = baseMapper.selectHazmatCountOfWarehouse(hazmat.getWarehouseId(), hazmat.getBasicId(), currentUser.getCompanyId());
+        int count = baseMapper.selectHazmatCountOfWarehouse(hazmat.getWarehouseId(), hazmat.getBasicId(), currentUser.getCompanyId(),hazmat.getCupboardId());
 
         //生成流向
         BigDecimal remaining=hazmat.getRemaining();
@@ -220,7 +230,7 @@
         }
         checkUserAllowed(dbhazmat,currentUser);
         //获取变动前仓库库存
-        int count = baseMapper.selectHazmatCountOfWarehouse(dbhazmat.getWarehouseId(), dbhazmat.getBasicId(), currentUser.getCompanyId());
+        int count = baseMapper.selectHazmatCountOfWarehouse(dbhazmat.getWarehouseId(), dbhazmat.getBasicId(), currentUser.getCompanyId(),dbhazmat.getCupboardId());
         hazmat.setState(HazmatStatusEnum.USEWAREHOUSEIN.getCode());
         hazmat.setUpdateBy(currentUser.getUsername());
         updateById(hazmat);
@@ -289,7 +299,7 @@
         }
         checkUserAllowed(hazmat,currentUser);
         //获取变动前仓库库存
-        int count = baseMapper.selectHazmatCountOfWarehouse(hazmat.getWarehouseId(), hazmat.getBasicId(), currentUser.getCompanyId());
+        int count = baseMapper.selectHazmatCountOfWarehouse(hazmat.getWarehouseId(), hazmat.getBasicId(), currentUser.getCompanyId(),hazmat.getCupboardId());
         hazmat.setState(HazmatStatusEnum.DISCARD.getCode());
         hazmat.setUpdateBy(currentUser.getUsername());
         updateById(hazmat);
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/SysCompanyServiceImpl.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/SysCompanyServiceImpl.java
index 9116355..b585b60 100644
--- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/SysCompanyServiceImpl.java
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/SysCompanyServiceImpl.java
@@ -12,6 +12,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.List;
 
 /**
@@ -25,6 +26,8 @@
 @Service
 public class SysCompanyServiceImpl extends ServiceImpl<SysCompanyMapper, SysCompany> implements SysCompanyService {
 
+    @Resource
+    private SysCompanyMapper companyMapper;
 
     @Override
     public CommonPage selectCompanyList(SysCompany company) {
@@ -75,6 +78,7 @@
     }
 
 
+    @Override
     public boolean checkNameUnique(SysCompany company){
         Long companyId=company.getId()==null?-1L:company.getId();
         SysCompany com= baseMapper.checkNameUnique(company.getName());
@@ -85,6 +89,27 @@
     }
 
 
+    @Override
+    public void createProductTables(Long companyId) {
+        // 这里可以使用 MyBatis-Plus 的动态 SQL 或者直接执行 SQL 语句来创建表
+        // 为了简化示例,我们直接执行 SQL 语句
+        String createProductCategoryTableSql = "CREATE TABLE IF NOT EXISTS product_category_demo"+"_"+companyId+" (" +
+                "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                "name VARCHAR(255) NOT NULL, " +
+                "company_id BIGINT NOT NULL)";
+        String createProductTableSql = "CREATE TABLE IF NOT EXISTS product_demo"+"_"+companyId+" (" +
+                "id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
+                "name VARCHAR(255) NOT NULL, " +
+                "description TEXT, " +
+                "price DECIMAL(10, 2) NOT NULL, " +
+                "category_id BIGINT NOT NULL)";
+
+        // 执行 SQL 语句
+        companyMapper.execute(createProductCategoryTableSql);
+        companyMapper.execute(createProductTableSql);
+    }
+
+
     public boolean checkCodeUnique(SysCompany company){
         Long companyId=company.getId()==null?-1L:company.getId();
         SysCompany com= baseMapper.checkCodeUnique(company.getCode());
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/TaBooComparisonServiceImpl.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/TaBooComparisonServiceImpl.java
new file mode 100644
index 0000000..be75604
--- /dev/null
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/TaBooComparisonServiceImpl.java
@@ -0,0 +1,130 @@
+package com.gkhy.hazmat.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gkhy.hazmat.common.api.CommonPage;
+import com.gkhy.hazmat.common.constant.Constant;
+import com.gkhy.hazmat.common.domain.entity.SysUser;
+import com.gkhy.hazmat.common.enums.UserTypeEnum;
+import com.gkhy.hazmat.common.exception.ApiException;
+import com.gkhy.hazmat.common.service.RedisService;
+import com.gkhy.hazmat.common.utils.PageUtils;
+import com.gkhy.hazmat.common.utils.SecurityUtils;
+import com.gkhy.hazmat.system.domain.HzProduct;
+import com.gkhy.hazmat.system.domain.SysConfig;
+import com.gkhy.hazmat.system.domain.TaBooComparison;
+import com.gkhy.hazmat.system.mapper.TaBooComparisonMapper;
+import com.gkhy.hazmat.system.service.TaBooComparisonService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 系统配置表 服务实现类
+ * </p>
+ *
+ * @author kzy
+ * @since 2023-11-13 08:39:55
+ */
+@Service
+public class TaBooComparisonServiceImpl extends ServiceImpl<TaBooComparisonMapper, TaBooComparison> implements TaBooComparisonService {
+
+    @Resource
+    private RedisService redisService;
+
+    @PostConstruct
+    public void init(){
+        loadingTaBooCache();
+    }
+
+
+    @Override
+    public CommonPage selectTaBooComparisonList(TaBooComparison taBooComparison) {
+        PageUtils.startPage();
+        List<TaBooComparison> taBooComparisonList=baseMapper.selectTaBooComparisonList(taBooComparison);
+        return CommonPage.restPage(taBooComparisonList);
+    }
+
+    @Override
+    public int insertTaBooComparison(TaBooComparison taBooComparison) {
+        checkUserAllowed();
+        checkData(taBooComparison);
+        taBooComparison.setCreateBy(SecurityUtils.getUsername());
+        taBooComparison.setUniqueCode(taBooComparison.getLeftCode()+"_"+taBooComparison.getTopCode());
+        int row=baseMapper.insert(taBooComparison);
+        if(row<1){
+            throw new ApiException("新增失败");
+        }
+        // 更新缓存
+        loadingTaBooCache();
+        return row;
+    }
+
+    @Override
+    public int updateTaBooComparison(TaBooComparison taBooComparison) {
+        checkUserAllowed();
+        checkData(taBooComparison);
+        taBooComparison.setUpdateBy(SecurityUtils.getUsername());
+        taBooComparison.setUniqueCode(taBooComparison.getLeftCode()+"_"+taBooComparison.getTopCode());
+        int row=baseMapper.updateById(taBooComparison);
+        if(row<1){
+            throw new ApiException("更新失败");
+        }
+        // 更新缓存
+        loadingTaBooCache();
+        return row;
+    }
+
+    public void checkUserAllowed() {
+        if (SecurityUtils.isAdmin(SecurityUtils.getUserId())) {
+            throw new ApiException("管理员不能操作");
+        }
+    }
+    @Override
+    public void loadingTaBooCache(){
+        List<TaBooComparison> taBooComparisons=baseMapper.selectTaBooComparison();
+        Map<String, Long> collect = taBooComparisons.stream()
+                .collect(Collectors.toMap(
+                        TaBooComparison::getUniqueCode,
+                        TaBooComparison::getWarningType
+                ));
+        redisService.set(Constant.TABOO_UNIQUE_KEY,collect);
+       // DictUtils.setTabooCache("TABOO_UNIQUE_KEY",collect);
+    }
+
+    @Override
+    public void deleteTaBooComparisonById(Long taBooComparisonId) {
+        checkUserAllowed();
+        baseMapper.deleteById(taBooComparisonId);
+        // 更新缓存
+        loadingTaBooCache();
+    }
+
+    private void checkData(TaBooComparison taBooComparison){
+        LambdaQueryWrapper<TaBooComparison> lambdaQueryWrapper = Wrappers.<TaBooComparison>lambdaQuery()
+                .and(wrapper -> wrapper.eq(TaBooComparison::getLeftCode, taBooComparison.getLeftCode())
+                        .or()
+                        .eq(TaBooComparison::getLeftCode, taBooComparison.getTopCode()))
+                .and(wrapper -> wrapper.eq(TaBooComparison::getTopCode, taBooComparison.getLeftCode())
+                        .or()
+                        .eq(TaBooComparison::getTopCode, taBooComparison.getTopCode()));
+        if (taBooComparison.getId() != null){
+            lambdaQueryWrapper.ne(TaBooComparison::getId, taBooComparison.getId());
+        }
+        Long l = baseMapper.selectCount(lambdaQueryWrapper);
+        if (l > 0){
+            throw new ApiException("该数据已存在");
+        }
+
+
+
+    }
+
+}
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/TaBooWarningServiceImpl.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/TaBooWarningServiceImpl.java
new file mode 100644
index 0000000..e318f52
--- /dev/null
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/TaBooWarningServiceImpl.java
@@ -0,0 +1,198 @@
+package com.gkhy.hazmat.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gkhy.hazmat.common.api.CommonPage;
+import com.gkhy.hazmat.common.config.IdTableNameHandler;
+import com.gkhy.hazmat.common.constant.Constant;
+import com.gkhy.hazmat.common.domain.entity.SysUser;
+import com.gkhy.hazmat.common.enums.EntryStateEnum;
+import com.gkhy.hazmat.common.enums.UserTypeEnum;
+import com.gkhy.hazmat.common.enums.WarehouseRecordEnum;
+import com.gkhy.hazmat.common.exception.ApiException;
+import com.gkhy.hazmat.common.service.RedisService;
+import com.gkhy.hazmat.common.utils.PageUtils;
+import com.gkhy.hazmat.common.utils.SecurityUtils;
+import com.gkhy.hazmat.system.domain.*;
+import com.gkhy.hazmat.system.domain.vo.HzEntryTransferVO;
+import com.gkhy.hazmat.system.domain.vo.TabooDisVo;
+import com.gkhy.hazmat.system.mapper.*;
+import com.gkhy.hazmat.system.service.HzEntryRecordService;
+import com.gkhy.hazmat.system.service.HzHazmatService;
+import com.gkhy.hazmat.system.service.TaBooComparisonService;
+import com.gkhy.hazmat.system.service.TabooWarningService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 系统配置表 服务实现类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-02-13 08:39:55
+ */
+@Service
+public class TaBooWarningServiceImpl extends ServiceImpl<HzTabooWarningMapper, HzTabooWarning> implements TabooWarningService {
+
+    @Autowired
+    private RedisService redisService;
+    @Autowired
+    private HzHazmatService hazmatService;
+    @Autowired
+    private HzHazmatBasicMapper hazmatBasicMapper;
+    @Autowired
+    private HzHazmatMapper hazmatMapper;
+    @Autowired
+    private HzWarehouseRecordMapper warehouseRecordMapper;
+    @Autowired
+    private HzEntryRecordService entryRecordService;
+
+
+    @Override
+    public CommonPage selectHzTabooWarningPageList(HzTabooWarning hzTabooWarning) {
+        PageUtils.startPage();
+        SysUser currentUser=SecurityUtils.getLoginUser().getUser();
+        hzTabooWarning.setCompanyId(currentUser.getCompanyId());
+        List<HzTabooWarning> hzTabooWarnings = baseMapper.selectHzTabooWarningList(hzTabooWarning);
+        return CommonPage.restPage(hzTabooWarnings);
+    }
+
+    @Override
+    public List<HzTabooWarning> selectHzTabooWarningList(HzTabooWarning tabooWarning) {
+        SysUser currentUser=SecurityUtils.getLoginUser().getUser();
+        tabooWarning.setCompanyId(currentUser.getCompanyId());
+        tabooWarning.setState(0);
+        return baseMapper.selectHzTabooWarningList(tabooWarning);
+    }
+
+
+    @Override
+    @Transactional(rollbackFor = RuntimeException.class)
+    public void doTransfer(HzEntryTransferVO entryTransferVO) {
+        HzTabooWarning hzTabooWarning = baseMapper.selectById(entryTransferVO.getId());
+        if (hzTabooWarning == null){
+            throw new ApiException("相忌报警信息不存在");
+        }
+        Long entryId = hzTabooWarning.getEntryId();
+
+        HzEntryRecord entryRecord=entryRecordService.getById(entryId);
+        if (entryRecord == null){
+            throw new ApiException("入库信息不存在");
+        }
+        if (!entryRecord.getState().toString().equals(EntryStateEnum.ENTER.getCode().toString())){
+            throw new ApiException("入库状态不正确");
+        }
+        if (entryRecord.getCupboardId().equals(entryTransferVO.getCupboardId())){
+            throw new ApiException("不能转入原存储柜");
+        }
+        SysUser currentUser=SecurityUtils.getLoginUser().getUser();
+        checkUserAllowed(entryRecord,currentUser);
+        HzHazmatBasic hazmatBasic=hazmatBasicMapper.selectById(entryRecord.getBasicId());
+        if(hazmatBasic==null){
+            throw new ApiException("危化品基础数据不存在");
+        }
+
+        //获取当前仓库库存
+        //设置分表id
+        IdTableNameHandler.setCurrentId(currentUser.getCompanyId());
+
+
+        int countOut = hazmatMapper.selectHazmatCountOfWarehouse(entryRecord.getWarehouseId(), hazmatBasic.getId(), currentUser.getCompanyId(), entryRecord.getCupboardId());
+
+        //新增危化品变动记录转出
+        HzWarehouseRecord warehouseRecordOut = new HzWarehouseRecord()
+                .setWarehouseId(entryRecord.getWarehouseId())
+                .setCupboardId(entryRecord.getCupboardId())
+                .setBasicId(hazmatBasic.getId())
+                .setNum(entryRecord.getNum())
+                .setCompanyId(currentUser.getCompanyId())
+                .setCreateId(currentUser.getId())
+                .setRemaining(countOut - entryRecord.getNum())
+                .setState(WarehouseRecordEnum.TRANSFEROUT.getCode());
+        warehouseRecordMapper.insert(warehouseRecordOut);
+
+
+        int count = hazmatMapper.selectHazmatCountOfWarehouse(entryTransferVO.getWarehouseId(), hazmatBasic.getId(), currentUser.getCompanyId(), entryTransferVO.getCupboardId());
+        //新增危化品变动记录转入
+        HzWarehouseRecord warehouseRecord = new HzWarehouseRecord()
+                .setWarehouseId(entryTransferVO.getWarehouseId())
+                .setCupboardId(entryTransferVO.getCupboardId())
+                .setBasicId(hazmatBasic.getId())
+                .setNum(entryRecord.getNum())
+                .setCompanyId(currentUser.getCompanyId())
+                .setCreateId(currentUser.getId())
+                .setRemaining(entryRecord.getNum() + count)
+                .setState(WarehouseRecordEnum.TRANSFERIN.getCode());
+        warehouseRecordMapper.insert(warehouseRecord);
+
+        // 校验生成相忌数据
+        Map<String, Long>  redata = (Map<String, Long>)redisService.get(Constant.TABOO_UNIQUE_KEY);
+        if (!redata.isEmpty()){
+            // 查询对应仓库和柜子的物品信息获取品类 获取相冲相弱相吸相异
+            List<TabooDisVo> collectData =
+                    hazmatMapper.selectHazmatWarehouseCheck(entryTransferVO.getWarehouseId(), currentUser.getCompanyId(), entryTransferVO.getCupboardId());
+            if (!collectData.isEmpty() && collectData.size() > 0) {
+                for (TabooDisVo collectDatum : collectData) {
+                    String key1 = collectDatum.getSpNum() + "_" + hazmatBasic.getPeculiarityNumber();
+                    String key2 = hazmatBasic.getPeculiarityNumber() + "_" + collectDatum.getSpNum();
+
+                    if (redata.containsKey(key1) || redata.containsKey(key2)) {
+                        // 记录数据
+                        Long l = redata.get(key1);
+                        Long l1 = l == null ? redata.get(key2) : l;
+                        HzTabooWarning tabooWarning = new HzTabooWarning()
+                                .setWarningType(l1)
+                                .setWarehouseId(entryTransferVO.getWarehouseId())
+                                .setCupboardId(entryTransferVO.getCupboardId())
+                                .setEntryId(entryRecord.getId())
+                                .setCompanyId(currentUser.getCompanyId())
+                                .setTabooBasicId(collectDatum.getId()).setCreateBy(currentUser.getUsername());
+                        baseMapper.insert(tabooWarning);
+                        break;
+                    }
+                }
+            }
+
+        }else {
+            throw new ApiException("危化品相忌信息不存在");
+        }
+        //更新危化品信息
+        hazmatService.update(new LambdaUpdateWrapper<HzHazmat>().eq(HzHazmat::getEntryId,entryRecord.getId())
+                .set(HzHazmat::getWarehouseId,entryTransferVO.getWarehouseId())
+                .set(HzHazmat::getCupboardId,entryTransferVO.getCupboardId())
+                .set(HzHazmat::getUpdateBy,currentUser.getUsername()));
+
+        // }
+        //更新入库记录状态
+        entryRecordService.update(new LambdaUpdateWrapper<HzEntryRecord>()
+                .eq(HzEntryRecord::getId,entryRecord.getId()).set(HzEntryRecord::getWarehouseId,entryTransferVO.getWarehouseId())
+                .set(HzEntryRecord::getCupboardId,entryTransferVO.getCupboardId())
+                .set(HzEntryRecord::getUpdateBy,currentUser.getUsername()));
+        IdTableNameHandler.removeCurrentId();
+
+        //处理数据本身
+
+         baseMapper.updateById(new HzTabooWarning().setState(1).setUpdateBy(currentUser.getUsername()).setId(entryTransferVO.getId()));
+
+    }
+    public void checkUserAllowed(HzEntryRecord entryRecord,SysUser user) {
+        if (user.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())) {
+            throw new ApiException("管理员不能操作");
+        }
+        if(entryRecord!=null){
+            if(!Objects.equals(user.getCompanyId(), entryRecord.getCompanyId())){
+                throw new ApiException("无权限操作其他企业数据");
+            }
+        }
+    }
+
+}
diff --git a/hazmat-system/src/main/resources/mapper/system/HzHazmatMapper.xml b/hazmat-system/src/main/resources/mapper/system/HzHazmatMapper.xml
index ab87626..34dfdd3 100644
--- a/hazmat-system/src/main/resources/mapper/system/HzHazmatMapper.xml
+++ b/hazmat-system/src/main/resources/mapper/system/HzHazmatMapper.xml
@@ -39,8 +39,8 @@
     <sql id="selectHazmatVo">
         select a.id, a.basic_id, a.warehouse_id, a.code,a.remaining, a.state,a.company_id,a.version, a.create_by, a.create_time, a.update_by, a.update_time, a.remark,
                b.id as basic_id,b.name as basic_name,b.cas as basic_cas,b.hazmat_type as basic_hazmat_type,b.hazmat_character as basic_hazmat_character,
-               b.supplier as basic_supplier,b.manufacturer as basic_manufacturer,b.metering as basic_metering,b.unit as basic_unit,b.product_sn,
-               b.min_package as basic_min_package,c.name as warehouse_name,d.cupboard_name
+               b.supplier as basic_supplier,b.manufacturer as basic_manufacturer,b.metering as basic_metering,b.unit as basic_unit,
+               b.product_sn,b.min_package as basic_min_package,c.name as warehouse_name,d.cupboard_name as cupboard_name
         from hz_hazmat a
         left join hz_hazmat_basic b on b.id=a.basic_id
         left join hz_warehouse c on c.id=a.warehouse_id
@@ -76,7 +76,7 @@
     </select>
 
     <select id="selectHazmatGroupWareHouse" resultType="com.gkhy.hazmat.system.domain.vo.HzHazmatWarehouseVO">
-        select a.basic_id,a.warehouse_id,
+        select a.basic_id,a.warehouse_id,a.cupboard_id,
         (select count(1) from hz_hazmat where state=0 and basic_id=a.basic_id and warehouse_id=a.warehouse_id) as stock,
         (select count(1) from hz_hazmat where state=1 and basic_id=a.basic_id and warehouse_id=a.warehouse_id) as miss_stock
         from hz_hazmat a
@@ -102,7 +102,7 @@
             </if>
             and a.del_flag=0
         </where>
-        group by a.basic_id,a.warehouse_id
+        group by a.basic_id,a.warehouse_id, a.cupboard_id
     </select>
 
 
@@ -110,7 +110,16 @@
     <select id="selectHazmatCountOfWarehouse" resultType="integer">
         select count(a.id) from hz_hazmat a
         inner join hz_hazmat_basic b on b.id=basic_id
-        where a.warehouse_id=#{warehouseId} and b.id=#{basicId} and a.company_id=#{companyId} and b.company_id=#{companyId} and a.del_flag=0 and (a.state=0 or a.state=1)
+        where a.warehouse_id=#{warehouseId} and b.id=#{basicId} and a.company_id=#{companyId} and b.company_id=#{companyId}
+          and a.del_flag=0 and (a.state=0 or a.state=1) and a.cupboard_id = #{cupboardId}
+    </select>
+
+
+    <select id="selectHazmatWarehouseCheck" resultType="com.gkhy.hazmat.system.domain.vo.TabooDisVo">
+        select DISTINCT b.peculiarity_number spNum ,b.id  from hz_hazmat a
+                                    inner join hz_hazmat_basic b on b.id=basic_id
+        where a.warehouse_id=#{warehouseId}  and a.company_id=#{companyId} and b.company_id=#{companyId}
+          and a.del_flag=0 and (a.state=0 or a.state=1) and a.cupboard_id = #{cupboardId}
     </select>
 
     <select id="selectHazmatByCode" resultMap="HzHazmatResult">
diff --git a/hazmat-system/src/main/resources/mapper/system/HzTabooWarningMapper.xml b/hazmat-system/src/main/resources/mapper/system/HzTabooWarningMapper.xml
new file mode 100644
index 0000000..3d734d0
--- /dev/null
+++ b/hazmat-system/src/main/resources/mapper/system/HzTabooWarningMapper.xml
@@ -0,0 +1,60 @@
+<?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.gkhy.hazmat.system.mapper.HzTabooWarningMapper">
+    <resultMap type="com.gkhy.hazmat.system.domain.vo.HzTabooWarningVO" id="HzTabooWarningResult">
+        <result property="id"       column="id"       />
+        <result property="state"    column="state"    />
+        <result property="tabooBasicId"    column="taboo_basic_id"    />
+        <result property="basicId"         column="basic_id"          />
+<!--        <result property="companyId"    column="company_id"    />-->
+        <result property="tabooBasicName"    column="taboo_basic_name"    />
+        <result property="cupboardName"         column="cupboard_name"          />
+        <result property="warehouseId"    column="warehouse_id"    />
+        <result property="cupboardId"    column="cupboard_id"    />
+<!--        <result property="version"         column="version"          />-->
+        <result property="createBy"       column="create_by"       />
+        <result property="createTime"     column="create_time"     />
+        <result property="updateBy"       column="update_by"       />
+        <result property="updateTime"     column="update_time"     />
+        <result property="remark"         column="remark"          />
+        <result property="basicName"    column="basic_name"    />
+        <result property="warehouseName"     column="warehouse_name"      />
+    </resultMap>
+
+
+    <sql id="selectHzTabooWarningVo">
+        select aa.id,aa.warning_type,aa.state,aa.taboo_basic_id,aa.create_by,aa.create_time,aa.update_time,
+               aa.update_by,aa.version,aa.warehouse_id,a.basic_id,a.company_id,
+               b.name as basic_name,
+               c.name as warehouse_name,aa.cupboard_id,d.cupboard_name as cupboard_name,bb.name as taboo_basic_name
+        from hz_taboo_warning aa
+                 left join hz_entry_record a on aa.entry_id=a.id
+                 left join hz_hazmat_basic b on b.id=a.basic_id
+                 left join hz_warehouse c on c.id=aa.warehouse_id
+                 left join hz_warehouse_cupboard d on d.id=aa.cupboard_id
+                 left join hz_hazmat_basic bb on bb.id=aa.taboo_basic_id
+    </sql>
+    <select id="selectHzTabooWarningList" resultMap="HzTabooWarningResult"
+            parameterType="com.gkhy.hazmat.system.domain.HzEntryRecord">
+        <include refid="selectHzTabooWarningVo"/>
+        <where>
+            and aa.del_flag = 0
+            <if test="companyId != null">
+                AND aa.company_id= #{companyId}
+            </if>
+            <if test="state != null">
+                AND aa.state= #{state}
+            </if>
+
+            <if test="warningType != null and warningType == 1">
+                AND aa.warning_type = 1
+            </if>
+            <if test="warningType != null and warningType == 2">
+                AND aa.warning_type != 1
+            </if>
+        </where>
+        order by aa.state asc,aa.warning_type asc,aa.create_time desc
+    </select>
+
+
+</mapper>
diff --git a/hazmat-system/src/main/resources/mapper/system/HzWarehouseMapper.xml b/hazmat-system/src/main/resources/mapper/system/HzWarehouseMapper.xml
index 5f213fe..3ce1a83 100644
--- a/hazmat-system/src/main/resources/mapper/system/HzWarehouseMapper.xml
+++ b/hazmat-system/src/main/resources/mapper/system/HzWarehouseMapper.xml
@@ -88,6 +88,14 @@
             #{warehouse}
         </foreach>
     </select>
+
+
+    <select id="selectByCupboardIds" resultType="com.gkhy.hazmat.system.domain.HzWarehouseCupboard">
+        select id,cupboard_name from hz_warehouse_cupboard where del_flag=0 and  id in
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </select>
     <select id="selectByWarehouseIdAndCupboardName" resultType="com.gkhy.hazmat.system.domain.HzWarehouseCupboard">
         SELECT
             id,
diff --git a/hazmat-system/src/main/resources/mapper/system/HzWarehouseRecordMapper.xml b/hazmat-system/src/main/resources/mapper/system/HzWarehouseRecordMapper.xml
index aa92cb7..03788da 100644
--- a/hazmat-system/src/main/resources/mapper/system/HzWarehouseRecordMapper.xml
+++ b/hazmat-system/src/main/resources/mapper/system/HzWarehouseRecordMapper.xml
@@ -5,6 +5,7 @@
         <result property="id"       column="id"       />
         <result property="basicId"    column="basic_id"    />
         <result property="warehouseId"     column="warehouse_id"     />
+        <result property="cupboardId"    column="cupboard_id"    />
         <result property="remaining"  column="remaining"  />
         <result property="num"  column="num"  />
         <result property="state"  column="state"  />
diff --git a/hazmat-system/src/main/resources/mapper/system/TaBooComparisonMapper.xml b/hazmat-system/src/main/resources/mapper/system/TaBooComparisonMapper.xml
new file mode 100644
index 0000000..486f088
--- /dev/null
+++ b/hazmat-system/src/main/resources/mapper/system/TaBooComparisonMapper.xml
@@ -0,0 +1,27 @@
+<?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.gkhy.hazmat.system.mapper.TaBooComparisonMapper">
+    <select id="selectTaBooComparison" resultType="com.gkhy.hazmat.system.domain.TaBooComparison">
+        select * from taboo_comparison
+    </select>
+
+
+    <select id="selectTaBooComparisonList" resultType="com.gkhy.hazmat.system.domain.TaBooComparison" parameterType="com.gkhy.hazmat.system.domain.TaBooComparison">
+        select * from taboo_comparison
+        <where>
+            <if test="warningType !=null">
+                and warning_type = #{warningType}
+            </if>
+            <if test="leftCode !=null and leftCode != ''">
+                and left_code = #{leftCode}
+            </if>
+            <if test="topCode !=null and topCode != ''">
+                and top_code = #{topCode}
+            </if>
+            <if test="uniqueCode !=null and uniqueCode != ''">
+                and unique_code = #{uniqueCode}
+            </if>
+        </where>
+        order by create_time desc
+    </select>
+</mapper>

--
Gitblit v1.9.2